Язык программирования «Python». Вложенный оператор if
- Теория
- Практика
- Stepik.org
Вложенные условия
Вы можете создавать внутри условного оператора новое условие
В этом примере вводится число и проверяется на четность. Если число четное, то затем оно проверяется на кратность 5 и в зависимости от этой проверки выводится сообщение «делится на 2 и на 5» либо «делится на 2, но не на 5».
Но вложенный условный оператор можно также и записывать внутри блока else. Посмотрите на пример ниже.
И количество вложенных условных операторов в вашей программе может быть сколько угодно.
Давайте разберем пример, где при помощи этого вложенных условий найдем минимальное значение из трех введенных чисел.
Еще один пример, где мы найдем по введенным координатам x и y к какой координатной четверти принадлежит точка.
И в последнем примере мы используем тройную вложенность для определения остатка числа при делении на 4.
Задачи
1. Больше-меньше
2.
Максимум из трех3. Баскетбол
5. A. Арбуз
6. Зарплата
7. A. Петя и строки
9. A. Чет и нечет
Попрактиковаться на stepik Перейти
Записывайтесь на курсы по Python
условия и описание, как работает на примерах
В этом руководстве мы узнаем об операторе if … else в C++ для создания программ принятия решений с помощью примеров.
В компьютерном программировании мы используем оператор if для запуска блочного кода только при выполнении определенного условия.
Например, выставление оценок (A, B, C) на основе оценок, полученных студентом;
- если процент выше 90, присвойте оценку A;
- если процент выше 75, присвойте оценку B;
- если процент выше 65, присвойте оценку C.
В С++ есть три формы операторов if … else:
- if;
- if…else;
- if … else if … else.
Синтаксис оператора:
if (condition) { // body of if statement }
Оператор if оценивает условие в круглых скобках ():
- Если условие truth, выполняется код внутри тела if.
- Если условие оценивается как truth, код внутри тела if пропускается.
Примечание. Код внутри {} является телом оператора if.
Пример 1
// Program to print positive number entered by the user // If the user enters a negative number, it is skipped #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; // checks if the number is positive if (number > 0) { cout << "You entered a positive integer: " << number << endl; } cout << "This statement is always executed."; return 0; }
Выход 1:
Enter an integer: 5 You entered a positive number: 5 This statement is always executed.
Когда пользователь вводит 5, число условия > 0 оценивается, как truth, и выполняется инструкция внутри тела if.
Выход 2:
Enter a number: -5 This statement is always executed.
Когда пользователь вводит -5, число условия > 0 оценивается как false, и оператор внутри тела if не выполняется.
Оператор if..else
Оператор if может иметь необязательное предложение else. Его синтаксис:
if (condition) { // block of code if condition is true } else { // block of code if condition is false }
Оператор if..else оценивает условие внутри круглых скобок.
Если условие true:
- код внутри тела if – выполняется;
- код внутри тела else – пропускается из выполнения.
Если условие оценивается, как false:
- код внутри тела else – выполняется;
- код внутри тела if – пропускается из выполнения.
Пример 2: оператор if … else
// Program to check whether an integer is positive or negative // This program considers 0 as a positive number #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; if (number >= 0) { cout << "You entered a positive integer: " << number << endl; } else { cout << "You entered a negative integer: " << number << endl; } cout << "This line is always printed."; return 0; }
Выход 1:
Enter an integer: 4 You entered a positive integer: 4. This line is always printed.
В приведенной выше программе у нас есть номер условия > = 0. Если мы вводим число, большее или равное , то условие оценивается, как true.
Здесь мы вводим 4. Итак, условие верно, следовательно, выполняется инструкция внутри тела if.
Выход 2:
Enter an integer: -4 You entered a negative integer: -4. This line is always printed.
Здесь мы вводим -4. Итак, условие false, следовательно, выполняется инструкция внутри тела else.
if … else … else if
Оператор if … else используется для выполнения блока кода из двух альтернатив. Однако, если нам нужно сделать выбор между более чем двумя альтернативами, мы используем оператор if … else if … else.
Синтаксис оператора:
if (condition1) { // code block 1 } else if (condition2){ // code block 2 } else { // code block 3 }
Где:
- Если условие1 true, кодовый блок 1 выполняется.
- Если условие1 оценивается как false, то оценивается условие 2.
- Если условие 2 true, выполняется блок кода 2.
- Если условие 2 false, кодовый блок 3 выполняется.
Примечание: может быть больше одного оператора if, но только один оператор if и else.
Пример 3
// Program to check whether an integer is positive, negative or zero #include <iostream> using namespace std; int main() { int number; cout << "Enter an integer: "; cin >> number; if (number > 0) { cout << "You entered a positive integer: " << number << endl; } else if (number < 0) { cout << "You entered a negative integer: " << number << endl; } else { cout << "You entered 0." << endl; } cout << "This line is always printed."; return 0; }
Выход 1:
Enter an integer: 1 You entered a positive integer: 1. This line is always printed.
Выход 2:
Enter an integer: -2 You entered a negative integer: -2. This line is always printed.
Выход 3:
Enter an integer: 0 You entered 0. This line is always printed.
В этой программе мы берем номер у пользователя. Затем мы используем if … else if … else, чтобы проверить, является ли число положительным, отрицательным или нулевым.
Если число больше 0, код выполняется внутри блока if. Если число меньше 0, код выполняется внутри блока else if. В противном случае код выполняется внутри блока else.
if … else
Иногда нам нужно использовать в C++ оператор if внутри другого оператора if. Это называется вложенным оператором.
Синтаксис:
// outer if statement if (condition1) { // statements // inner if statement if (condition2) { // statements } }
Заметки:
- При необходимости мы можем добавить операторы else и else if к внутреннему оператору if.
- Внутренний оператор if также может быть вставлен во внешний оператор else или else if (если они существуют).
- Мы можем вложить несколько уровней операторов if.
Пример 4
// C++ program to find if an integer is even or odd or neither (0) // using nested if statements #include <iostream> using namespace std; int main() { int num; cout << "Enter an integer: "; cin >> num; // outer if condition if (num != 0) { // inner if condition if ((num % 2) == 0) { cout << "The number is even." << endl; } // inner else condition else { cout << "The number is odd." << endl; } } // outer else condition else { cout << "The number is 0 and it is neither even nor odd. " << endl; } cout << "This line is always printed." << endl; }
Выход 1:
Enter an integer: 34 The number is even. This line is always printed.
Выход 2:
Enter an integer: 35 The number is odd. This line is always printed.
Выход 3:
Enter an integer: 0 The number is 0 and it is neither even nor odd. This line is always printed.
В приведенном выше примере:
- Мы берем целое число в качестве ввода от пользователя и сохраняем его в переменной num.
- Затем мы используем оператор if … else, чтобы проверить, не равно ли num 0.
- Если true, то выполняется внутренний оператор if … else.
- Если false, выполняется код внутри внешнего условия else, который печатает «Число равно 0, и не является ни четным, ни нечетным».
- Внутренний оператор if … else проверяет, делится ли введенное число на 2.
- Если это true, то мы печатаем утверждение, что число четное.
- Если false, печатаем, что число нечетное.
Обратите внимание, что 0 также делится на 2, но на самом деле это не четное число. Вот почему мы сначала убеждаемся, что входное число не равно 0 во внешнем условии if.
Примечание. Как видите, вложенные if … else усложняют вашу логику. Поэтому вы всегда должны стараться избегать вложенных if … else.
if … else с одним утверждением
Если в if … else есть только один оператор, вы можете опустить {} в программе. Например, вы можете заменить:
int number = 5; if (number > 0) { cout << "The number is positive." << endl; } else { cout << "The number is negative." << endl; }
С участием:
int number = 5; if (number > 0) cout << "The number is positive. " << endl; else cout << "The number is negative." << endl;
Вывод обеих программ будет одинаковым.
Примечание. Хотя нет необходимости использовать {}, если тело if … else содержит только один оператор, использование {} делает ваш код более читабельным в С++.
Заключение
В определенных ситуациях тернарный оператор может заменить оператор if … else. Если нам нужно сделать выбор между более чем одной альтернативой на основе заданного условия теста, можно использовать оператор switch в C++.
IF конструкция
IF конструкцияЕСЛИ конструкция позволяет выполнить оператор или серию операторов, если вычисленное выражение истинно, или отдельного набора утверждений, если оно является ложным.
Формат
ЕСЛИ выражение ТОГДА выписки КОНЕЦ [ИНАЧЕ операторов КОНЕЦ] |
Параметр(ы)
экспр | Любой Выражение mvBASIC, которое будет вычислено для его логического значения. |
выписки | Выписка или набор операторов, которые должны выполняться условно. |
МФ конструкция вычисляет данное выражение для его логических значений. выражение является ложным, если оно оценивается как 0 или нулевая строка; это правда если он оценивает что-либо еще. Если выражение верно, то оно позволяет утверждения, следующие за THEN, должны быть казнен; если выражение ложно, оно допускает утверждения, следующие за ДРУГОЕ для выполнения, или если нет ELSE часть, это позволяет продолжить выполнение программы со следующего исполняемого файла утверждение.
Оба ТОГДА пункт и ELSE пункт является необязательным; однако одно или другое должно быть включено.
ЕСЛИ конструкции могут быть вложенными. Однако вместо этого рекомендуется использовать конструкцию CASE, если это возможно.
Синтаксис инструкции
Хотя логистика IF конструкция относительно проста, синтаксис очень точен. Эти ограничения подать заявку:
Ни ТОГДА, ни ЕЩЕ может начинать строку программы. То есть этот конструкт:
Когда операторы, следующие за THEN или ИНАЧЕ находятся на одной строке, они должны быть разделены точкой с запятой (;). То есть такая конструкция верна:
Когда операторы, следующие за THEN или ИНАЧЕ написаны более чем в одну строку, THEN или ИНАЧЕ должно быть последним словом в строке и END Оператор должен заканчивать набор операторов. Например, приведенный выше пример можно написать:
ЕСЛИ ОТВЕТ=»Y» ТОГДА… |
приводит к сообщению об ошибке во время компиляции.
ЕСЛИ ПРИБЫЛЬ ЗАТЕМ GOSUB 100; ПЕЧАТЬ ПРИБЫЛИ ДРУГОЕ ГОСУБ 200; ПОТЕРЯ ПЕЧАТИ |
ЕСЛИ ПРИБЫЛЬ ТОГДА ГОСУБ 100 ПЕЧАТЬ ПРИБЫЛЬ КОНЕЦ ИНАЧЕ ГОСУБ 200 ПЕЧАТЬ ПОТЕРЯ КОНЕЦ |
ПРИМЕЧАНИЕ | Второй вариант намного проще читать, чем первый. |
Пример
В этом приложении конструкции IF вложены для вычисления победителя в игре в блэкджек. Иногда это трудно определить, какой оператор END принадлежит с которым ТОГДА или ИНАЧЕ. СЛУЧАЙ оператор, возможно, больше подходит для этой функции. См. ДЕЛО Построить для получения дополнительной информации.
ЕСЛИ ДИЛЕРСКИЙ БАЛЛ > 21, ТО ПЕЧАТЬ «Я ПРИШЕЛ. ВЫ ПОБЕДИЛИ.» ВАШИ ВЫИГРЫШИ = ВАШИ ВЫИГРЫШИ + 1 КОНЕЦ ИНАЧЕ ЕСЛИ НЕТ(DEALERSCORE < ВАШ СЧЕТ) ТОГДА ПЕЧАТЬ «МОЙ СЧЕТ» : DEALERSCORE : «. Я ПОБЕДА.» ЕСЛИ ДИЛЕРСКИЙ БАЛЛ = ВАШ СЧЕТ, ТОГДА ПЕЧАТЬ «» ,»ДОМА ПРАВИЛА-ДИЛЕР ВСЕГДА ВЫИГРЫВАЕТ В НИЧЬЕ.» MYWINS + = 1 КОНЕЦ КОНЕЦ ИНАЧЕ ЕСЛИ НЕ(HIT = 11), ТО ПЕЧАТЬ «МОЙ СЧЕТ» : DEALERSCORE : «. Я ПРИХОДИТСЯ ДЕРЖАТЬ. ПЕЧАТЬ «ТЫ ПОБЕДИЛ.» ВАШИ ВЫИГРЫШИ + = 1 КОНЕЦ ИНАЧЕ НАПЕЧАТАЙТЕ «5 КАРТ. Я ВЫИГРЫВАЮ.»; МАЙВИНС + = 1 КОНЕЦ КОНЕЦ |
См. также
Заявление и функция Ссылка
IF Конструкция
Оператор: Условно выполняет один блок конструкций или операторов в зависимости от оценки логического выражения. (Эта конструкция называлась блочным оператором IF в FORTRAN 77). [ELSE [имя]
блок]
END IF [имя]
имя | (Необязательно) Имя конструкции IF. |
выражение | Скалярное логическое выражение, заключенное в круглые скобки. |
блок | Последовательность из нуля или более операторов или конструкций. |
Описание
Если имя конструкции указано в начале оператора IF THEN, то же имя должно появиться в соответствующем операторе END IF. Одно и то же имя конструкции не должно использоваться для конструкций с разными именами в одной и той же единице области видимости.
В зависимости от оценки логического выражения выполняется один блок или не выполняется ни одного блока. Логические выражения оцениваются в том порядке, в котором они появляются, пока не будет найдено истинное значение или не встретится оператор ELSE или END IF.
Как только найдено истинное значение или встречается оператор ELSE, выполняется блок, непосредственно следующий за ним, и выполнение конструкции прекращается.
Если ни одно из логических выражений не оценивается как истинное и в конструкции нет инструкции ELSE, блок в конструкции не выполняется, и выполнение конструкции прекращается.
Примечание
После оператора IF THEN в блочной конструкции IF нельзя помещать дополнительные операторы. Например, следующий оператор недопустим в блоке IF:
IF (e) THEN I = J
Этот оператор транслируется как следующий логический оператор IF:
IF (e) THENI = J
Вы не можете используйте операторы ветвления для передачи управления оператору ELSE IF или оператору ELSE. Однако вы можете перейти к оператору END IF из конструкции IF.
На следующем рисунке показан поток управления в конструкциях IF:
Поток управления в конструкциях IF
Вы можете включить конструкцию IF в блок операторов другой конструкции IF, если вложенная конструкция IF полностью содержится в блоке операторов. Он не может перекрывать блоки операторов.
Пример
В следующем примере показана простейшая форма конструкции IF:
Форма Пример
IF (expr) THEN IF (ABS(ADJU).GE.1.0E-6) THEN
блок TOTERR = TOTERR + ABS(ADJU)
QUEST = ADJU/FNDVALmicrosoft.com/MSHelp/"> END IF END IF
Эта конструкция условно выполняет блок операторов между операторами IF THEN и END IF.
Ниже показан другой пример:
! Простой блок ЕСЛИ:
ЕСЛИ (i .LT. 10) ТО
! следующие два оператора выполняются, только если i < 10
j = i
срез = TAN (угол)
END IF
В следующем примере показана именованная конструкция IF:
BLOCK_A: IF (D > 0.0) THEN ! Исходный оператор для именованной конструкцииmicrosoft.com/MSHelp/"> RADIANS = ACOS(D) ! Эти два утверждения
ГРАДУСОВ = ACOSD(D) ! сформировать блок
END IF BLOCK_A ! Оператор терминала для именованной конструкции
В следующем примере показана конструкция IF, содержащая оператор ELSE:
Форма Пример
IF (expr) THEN IF (NAME .LT. 'N') THEN
block1 IFRONT = IFRONT + 1
FRLET(IFRONT) = 9 NAME(270) ELSE
блок 2 IBACK = IBACK + 1
END IF END IFmicrosoft.com/MSHelp/"> Блок 1 состоит из всех операторов между операторами IF THEN и ELSE. Блок 2 состоит из всех операторов между операторами ELSE и END IF.
Если значение символьной переменной NAME меньше ' N ' , выполняется блок 1. Если значение NAME больше или равно ' N ' , выполняется блок 2.
В следующем примере показана конструкция IF, содержащая оператор ELSE IF THEN:
Форма Пример IF (expr) THEN IF (A .GT. B) THEN
block1 D = B
F = A - B
ELSE IF (expr) THEN ELSE IF (A .GT. B/2.) THEN
block2 D = B/2.
F = А - В/2.
END IF END IF
Если A больше B, выполняется блок 1. Если A не больше B, но A больше B/2, выполняется блок 2. Если A не больше B и A не больше B/2, ни блок 1, ни блок 2 не выполняются. Управление переходит непосредственно к следующему исполняемому оператору после оператора END IF.
Ниже показан другой пример:
! Блок IF с операторами ELSE IF:
IF (j .GT. 1000) THEN
! Операторы здесь выполняются, только если J > 1000
ELSE IF (j .GT. 100) THEN
! Операторы здесь выполняются, только если J > 100 и j <= 1000microsoft.com/MSHelp/"> ELSE IF (j .GT. 10) THEN
! Операторы здесь выполняются, только если J > 10 и j <= 100
ELSE
! Операторы здесь выполняются, только если j <= 10
END IF
В следующем примере показана конструкция IF, содержащая несколько операторов ELSE IF THEN и оператор ELSE. блок1 D = B
F = A - B
ELSE IF (expr) THEN ELSE IF (A.GT.C) THEN
блок2 D = C
F = A - C
ELSE IF (expr) THEN ELSE IF (A. GT. Z) THEN
блок3 D = Z
F = A - Z
ELSE ELSE
блок4 D = 0.09 блок4 A
END IF END IF
Если A больше B, выполняется блок 1. Если A не больше B, но больше C, выполняется блок 2. Если A не больше, чем B или C, но больше, чем Z, выполняется блок 3. Если A не больше, чем B, C или Z, выполняется блок 4.
В следующем примере показана вложенная конструкция IF:
Форма Пример
IF (expr) THEN IF (A .LT. 100) THENmicrosoft.com/MSHelp/"> block1 INRAN = INRAN + 1 90670 902 IF (ABS(A-AVG).LE.5.) THEN
блок 1a INAVG = INAVG + 1
ELSE ELSE
блок 1b OUTAVG = OUTAVG + 1
END IF END IF
ELSE ELSE
block2 OUTRAN = OUTRAN + 1
END IF END IF
Если A меньше 100, выполняется код, следующий за IF. Этот код содержит вложенную конструкцию IF. Если абсолютное значение A минус AVG меньше или равно 5, выполняется блок 1a. Если абсолютное значение A минус AVG больше 5, выполняется блок 1b.
: Если A больше или равно 100, выполняется блок 2, а вложенная конструкция IF (в блоке 1) не выполняется.