JavaRush/Курсы/Harvard CS50/Основные структуры Си. Условные операторы, оператор выбор...

Основные структуры Си. Условные операторы, оператор выбора, циклы

Открыта

Внимание! Практически весь материал этой лекции был в видеолекции. Если вы всё хорошо усвоили, просто пробегитесь глазами и переходите дальше.

Условные операторы

Эти ребята проверяют, выполняется ли некоторое условие (логическое выражение, то есть вопрос, на который можно ответить только «да» или «нет») и исполняют некоторые действия, привязанные к этому условию. Пример из жизни: если пошел дождь (при условии, что пошел дождь) и я на улице (я во время дождя нахожусь на улице), я открываю зонтик. 

if (условие) {
//исполнить, если значение истинно
}

Усложненный вариант: если условие выполняется, сделать действие, если нет — сделать другое действие. 

if (условие) {
//выполнить действие
}
else
{
//выполнить другое действие, если условие ложно
}

Пример: если тебе больше 18, одобрить доступ. Если меньше, не одобрить. 

if (age > 18) {
  printf("Доступ разрешён\n");
}
else
{
   printf("Доступ запрещён\n");
}

Оператор выбора

switch (n)
{
  case const1: инструкции
  // если n равен const1, выполнить инструкции
    break; // условие совершилось — выйти из выбора
  case const2: инструкции
  // если n равен const2, выполнить
    break;
   ...
  default:
  // если n не равен ни одной из констант, выполнить
    break;
}

Команда Switch (переключатель) используется тогда, когда нужно выбрать один из многих вариантов. При этом все константы должны быть разными. Команда break вызывает немедленный выход из всей конструкции switch. Если ни одна из констант не подошла, тогда выполняется ветвь, помеченная словом default (по умолчанию).

Пример: если n = 50, напечатать «CS50 is Introduction to Computer Science I», если n = 51, напечатать «CS51 is Introduction to Computer Science II», иначе — напечатать «Sorry, I’m not familiar with that class!»

switch (n)
{
  case 50:    printf("CS50 is Introduction to Computer Science I\n");
 break;
  case 51:    printf("CS51 is Introduction to Computer Science II\n");
 break;
  default:    printf("Sorry, I'm not familiar with that class!\n");
 break;
}

Циклы


while
: проверяет условие, затем исполняет действие, пока условие истинно

while (условие){
  // выполнять, пока истина
}

do/while отличается тем, что первый раз он исполняет действие не проверяя условия, и только после этого осуществляет проверку. Если условие выполняется, цикл повторяет действие, пока условие не станет ложью. 

do
{
 // выполнять, пока истина
}
while (условие);

Цикл for повторяет действие заданное количество раз. 

for (int dwarves = 0; dwarves < 7; dwarves++)
{
     printf("I’m here to help you, Snow White!\n");
}

Циклы можно вкладывать один в другой. В таком случае на каждом шаге внешнего цикла будет полностью выполняться внутренний цикл. 

for (int row = 0; row < 3; row++)
{
     for (int column = 0; column < 4; column++)
     {
        printf("x");
     }
        printf("\n");
}
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
zhundik
Уровень 1
26 января 2022, 11:46
Отлично
hidden #2969529
Уровень 1
21 января 2022, 21:17
Подскажите, умные люди! Я хочу написать простенькую программку, оценивающую положительность/отрицательность числа, как представлено в лекции, чтобы при этом она работала циклично. НО: 1 вариант: чтобы она выдавала сообщение "Вы ввели 0!" и прерывалась. Я подозреваю, что для этого можно использовать цикл do/while, но как мне прописать условие? 2 вариант: чтобы цикл прерывался по "ключевой фразе", например при вводе сообщения "Stop!" в терминале. 3 вариант: чтобы программа реагировала функцией printf с заданным текстом на введение нецелых чисел, строк. Есть подозрение что с 2 и 3 вариантом я немного забегаю вперёд, но 1 вариант, как мне кажется, реализуем на уровне первых лекций, просто мне не хватает мозгов правильно задать условие оператору while...
Nurbek
Уровень 0
1 июля 2020, 05:41
Спасибо за Ваш труд!
Victor
Уровень 3
4 января 2019, 10:21
04.01.2018г. проехали 1.4
Eugene Kim
Уровень 7
17 июля 2018, 15:21
Спасибо большое за лекцию :)
qavorbwc
Уровень 4
13 ноября 2017, 15:58
И ещё кавычки неправильные, не ASCII. С такими не компилируется.
7 ноября 2017, 19:52
не в ту сторону слеш в последней функции
printf(“/n”);
Ренат
Уровень 20
21 июня 2017, 15:09
парни вы молодцы"!