Условный оператор if в PHP. Оператор выбора if в языке C
В повседневной жизни часто необходимо принять какое не-будь решение, в зависимости от какого то условия. Например, если на выходные погода будет теплой, то мы поедим на море, иначе, если будет пасмурно, то посидим дома.
В программировании это тоже встречается очень часто. Для этого существуют два условных операторов, это if-else и switch-case . В этой статье я Вам расскажу об операторе if-else, а в следующей статье об switch-case.
Синтаксис условного оператора if-else следующий:
Если условие истина (true), то выполняется код из блока if, иначе, если условие ложь, то выполняется код из блока else.
Для лучшего понимания возьмем такой простой пример, у нас есть некая сумма денег и мы хотим купить автомобиль, и здесь сразу возникает такое условие, если у нас есть достаточно денег то мы можем купить данный автомобиль, иначе не можем.
Var money = 35000; // Допустим у нас есть 35 000 евро //Машину которую мы хотим купить стоит 50 000 евро. И возникает такое условие if(money > 50000){ document.write("Мы можем купить автомобиль"); }else{ document.write("Недостаточно денег для покупки машины"); }
Сохраняем документ, открываем его в браузере и видим, что на странице вывелось такое сообщение "Недостаточно денег для покупки машины". Если же у нас было бы больше 50 000 евро, то выполнился бы код из блока if. Если бы у нас было бы ровно 50 000 евро, то мы также не смогли бы купить автомобиль, потому что 50 000 не больше 50 000. Для того чтобы условие в данном случае было истина, то нужно написать знак больше либо равно (>=).
Замечание! Логическая операция равно пишется двумя знаками равенства (==) . Также присутствует и логическая операция меньше или равно (
использование фигурных скобок
Если присутствует только один оператор то фигурные скобки ставить необязательно, если в блоке больше чем один оператор, то фигурные скобки нужны обязательно.
Пример приведенный выше, будет прекрасно работать и без фигурных скобок, так как в обоих блоках находятся только по одному оператору.
Внутри if можно написать любые логические операции , будь то они простые или сложные. Можно использовать и операторы AND (&&) и OR (||).
Замечание! Присутствие блока else, не является обязательным .
Например, если a равен b, и c равен d, то выводим соответствующее сообщение, иначе если отсутствует блок else, то просто идем дальше, к следующей строчке.
Var a = 4, b = 4, c = 8, d = 8; if((a == b) && (c == d)) document.write("a равен b И c равен d"); document.write("Следующая строчка кода");
Оператор if - else if - else
После блока if, может последовать один и больше блоков else if, и в конце уже блок else. Это удобно в случае, когда нужно использовать больше чем одно условие.
Для лучшего понимания возьмем какой-то пример из повседневной жизни. Например, у нас есть определенное кол-во розеток. Если у нас в комнате только одна розетка, то мы можем подключить только одно устройство, если две розетки то мы можем подключить две устройства и если больше, то мы можем подключить к электрической сети, все устройства из дома.
Теперь перейдем к программированию.
Var socket = 2; // Кол-во розеток в доме if(socket == 1) document.write("
Мы можем подключить только одно устройство
"); else if(socket == 2){ document.write("Мы можем подключить только две устройства
"); document.write("Например телевизор и ноутбук
"); }else{ document.write("Мы можем подключить к электрической сети все устройства из дома
"); }В зависимости от значения переменной socket, сработает тот или иной блок кода. Как Вы уже наверняка поняли, что если socket равен 1, то сработает первый блок кода. Если socket равен 2, то сработает второй блок кода и если socket имеет любое другое значение (даже отрицательное число) то сработает третий блок кода.
Сокращенная запись if else
Сокращенную запись можно использовать в случае, когда в зависимости от некого условия, переменная может получить то или иное значение.
Например, если значение переменной a больше значения переменной b, то в переменную x запишем такое сообщение, "Переменная a больше переменной b" , иначе запишем что "Переменная a меньше переменной b".
Var a = 50, b = 100, x; x = (a > b) ? "
Переменная a больше переменной b
" : "Переменная a меньше переменной b
"; //Выводим полученный результат document.write(x);Вот и все о чем я хотел Вам сказать в этой статье. Условный оператор if-else используется, нежели в каждом скрипте, поэтому очень важно его знать и понимать. В следующей статье я Вам расскажу об еще одном условном операторе switch-case.
Пожалуйста, приостановите работу AdBlock на этом сайте.
Теперь, когда с условными выражениями разобрались, можно переходить к основной теме урока – условному оператору .
Шаблон оператора if -- else
Тут возможны два основных варианта:
Листинг 1.
// первый вариант if (условное_выражение) оператор_1; // второй вариант if (условное_выражение) оператор_1; else оператор_2;
Ну и картинки, конечно. Куда же без картинок?
Рис.1 Блок-схемы оператора if-else.
Работает этот оператор так. Вычисляется значение условного выражения. Если получается истина, то выполняется оператор_1 из основной ветки, а если ложь, то либо ничего не происходит (в первом варианте), либо выполняется оператор_2 из побочной ветки (во втором варианте).
Предлагаю сразу на примерах разбираться. Например, как вы думаете, что выведет на экран следующий код? Проверьте свою догадку.
Листинг 2.
#include
Ну да, правильно, он выведет TRUE! . Условие же истинно. Вы же ещё не забыли, что единица – это истина? Я сейчас страшное скажу. Любое ненулевое число воспринимается как истина. Проверьте это самостоятельно.
Ну ладно, а теперь вот такой пример. Что по-вашему выведет данная программа?
Листинг 3.
#include
Надеюсь, вы дали правильный ответ и вас не смутила строчка с выводом FALSE! , которое я специально добавил, чтобы запутать вас. Да, эта программа ничего не выведет. Условие в скобах ложно, а значит, оператор не будет выполнен. Всё по правилам.
Давайте ещё один примерчик, для закрепления. Будьте предельно внимательны, я там подготовил для вас всякого. Итак, что выведет данный код?
Листинг 4.
#include
Верю, что у вас всё получилось! Если не получилось, не расстраивайтесь – ещё будет время потренироваться.
Ну а сейчас давайте о нюансах – они, как обычно, имеются.
В каждой ветке условного оператора может быть записан лишь ОДИН оператор.
Вот, посмотрите на пример.
Листинг 5.
#include
Кажется, что программа должна работать следующим образом. Пользователь вводит целое число. Если число меньше нуля, то меняем его знак на противоположный. В противном случае ничего не делаем. После этого выводим число на экран консоли.
А теперь внимание на экран.
Рис.2 Результат работы программы Листинг 11
Но решение есть! И это решение – составной оператор {} . Если мы заключим несколько операторов в фигурные скобки, то они будут восприниматься как один единый оператор. Поэтому, чтобы программа заработала правильно, добавим в неё составной оператор:
Листинг 6.
#include
Ну вот, теперь всё как надо. Проверьте самостоятельно. Кстати, из опыта. Я вам настоятельно советую всегда использовать фигурные скобки, даже если внутри них будет один оператор. Очень часто это позволяет избежать глупых ошибок.
Внутри управляющей конструкций if-else можно использовать любые конструкции языка, в том числе ещё одну конструкцию if-else .
Вот так например:
Листинг 7.
#include
Думаю, понятно, что используя вложенные условные операторы, вы можете сделать конструкцию аналогичную оператору выбора switch .
Использование вложенных условных операторов порождает ещё одну особенность.
else всегда относится к ближайшему if , у которого нет своего else
Для примера:
Листинг 8.
If (n > 0) if (а > b) z = a; else z = b;
Согласно нашему правилу, else относится к внутреннему (второму) if . Если хотим, чтобы else относился к внешнему (первому) if , то можно воспользоваться составным оператором.
Листинг 9.
If (n > 0) { if (а > b) z = a; } else z = b;
Как я уже упоминал, лучше всегда использовать фигурные скобки, дабы избежать случаев неправильного толкования записи. Искать подобные ошибки в программах очень тяжело. Обратите внимание также на расстановку отступов. Я использую их, чтобы по коду сразу стало ясно, какая ветвь к какому if относится.
Последнее обновление: 30.07.2016
Условные конструкции - один из базовых компонентов многих языков программирования, которые направляют работу программы по одному из путей в зависимости от определенных условий.
В языке C# используются следующие условные конструкции: if..else и switch..case
Конструкция if/else
Конструкция if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код:
Int num1 = 8; int num2 = 6; if(num1 > num2) { Console.WriteLine($"Число {num1} больше числа {num2}"); }
После ключевого слова if ставится условие. И если это условие выполняется, то срабатывает код, который помещен далее в блоке if после фигурных скобок. В качестве условий выступают ранее рассмотренные операции сравнения.
В данном случае у нас первое число больше второго, поэтому выражение num1 > num2 истинно и возвращает true , следовательно, управление переходит к строке Console.WriteLine("Число {num1} больше числа {num2}");
Но что, если мы захотим, чтобы при несоблюдении условия также выполнялись какие-либо действия? В этом случае мы можем добавить блок else:
Int num1 = 8; int num2 = 6; if(num1 > num2) { Console.WriteLine($"Число {num1} больше числа {num2}"); } else { Console.WriteLine($"Число {num1} меньше числа {num2}"); }
Int num1 = 8; int num2 = 6; if(num1 > num2) { Console.WriteLine($"Число {num1} больше числа {num2}"); } else if (num1 < num2) { Console.WriteLine($"Число {num1} меньше числа {num2}"); } else { Console.WriteLine("Число num1 равно числу num2"); }
Также мы можем соединить сразу несколько условий, используя логические операторы:
Int num1 = 8; int num2 = 6; if(num1 > num2 && num1==8) { Console.WriteLine($"Число {num1} больше числа {num2}"); }
В данном случае блок if будет выполняться, если num1 > num2 равно true и num1==8 равно true .
Конструкция switch
Конструкция switch/case аналогична конструкции if/else , так как позволяет обработать сразу несколько условий:
Console.WriteLine("Нажмите Y или N"); string selection = Console.ReadLine(); switch (selection) { case "Y": Console.WriteLine("Вы нажали букву Y"); break; case "N": Console.WriteLine("Вы нажали букву N"); break; default: Console.WriteLine("Вы нажали неизвестную букву"); break; }
После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase . И если совпадение будет найдено, то будет выполняться определенный блок сase .
В конце каждого блока сase должен ставиться один из операторов перехода: break , goto case , return или throw . Как правило, используется оператор break . При его применении другие блоки case выполняться не будут.
Однако если мы хотим, чтобы, наоборот, после выполнения текущего блока case выполнялся другой блок case, то мы можем использовать вместо break оператор goto case:
Int number = 1; switch (number) { case 1: Console.WriteLine("case 1"); goto case 5; // переход к case 5 case 3: Console.WriteLine("case 3"); break; case 5: Console.WriteLine("case 5"); break; default: Console.WriteLine("default"); break; }
Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default , как в примере выше.
Применение оператора return позволит выйти не только из блока case, но и из вызывающего метода. То есть, если в методе Main после конструкции switch..case, в которой используется оператор return , идут какие-либо операторы и выражения, то они выполняться не будут, а метод Main завершит работу.
Оператор throw применяется для выброса ошибок и будет рассмотрен в одной из следующим тем.
Тернарная операция
Тернарную операция имеет следующий синтаксис: [первый операнд - условие] ? [второй операнд] : [третий операнд] . Здесь сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true , то возвращается второй операнд; если условие равно false , то третий. Например:
Int x=3; int y=2; Console.WriteLine("Нажмите + или -"); string selection = Console.ReadLine(); int z = selection=="+"? (x+y) : (x-y); Console.WriteLine(z);
Здесь результатом тернарной операции является переменная z. Если мы выше вводим "+", то z будет равно второму операнду - (x+y). Иначе z будет равно третьему операнду.
Лабораторная Работа
На тему: "Оператор условия if - else "
1. Назначение и синтаксис
Оператор условия if-else служит для выбора направления работы программы в зависимости от условий, сложившихся в данной точке программы на момент ее выполнения.
Общая форма записи условного оператора
if ( <условие>)
<блок операторов 1>;
<блок операторов 2>;
Если на момент выполнения <условие> истинно, программа передает управление <блоку операторов 1> и, далее, первому оператору за пределами конструкции if-else. При этом <блок операторов 2> не выполняется. Иначе, если <условие> ложно, выполняется <блок операторов 2>, а <блок операторов 1> пропускается. Соответствующая блок-схема
Фигурные скобки в синтаксисе оператора if-else используются для выделения в тексте блоков 1 и 2. Старайтесь располагать закрывающую скобку под открывающей для улучшения читаемости программного кода. Для этой же цели текст внутри фигурных скобок необходимо смещать вправо на несколько позиций.
В качестве условия в операторах if-else могут использоваться любые логические выражения, принимающие значения «истинно» или «ложно» (true – false). Ниже приведена таблица с указанием простейших операций сравнения целых и вещественных чисел
Пример 1. Требуется написать программу, переводящую температуру по шкале Цельсия T C (°С) в температуру по Кельвину T K (К). Значение T C вводится пользователем с клавиатуры.
Решение. Используем известную формулу преобразования – T K = T C – T 0 , где T 0 = –273 °С – температура абсолютного нуля. Будем считать введенное T C некорректным, если оно меньше T 0 .
// – KelvinvsCelsius–
#include
#include
#pragma argsused
floatT0 = -273; // объявляем и инициализируем T0
floatTc, Tk; // объявляем вещественные Tc и Tk
cout<<» VvediteTc=»; // выводим приглашение
cin>>Tc; // запрашиваем Tc
if
(
Tc
<
T
0)
// проверяем условие Tc cout<<» Tc < T0!»; // условие истинно, выводим на }
// экран сообщение об ошибке Tk = Tc-T0; // условие ложно, рассчитываем cout << «Tk =» << Tk; // Tk и выводим на экран getch(); // задержка до нажатия на клавишу return 0; // завершение программы Наберите приведенный выше код, откомпилируйте его и запустите программу на выполнение. Исследуйте результаты работы при различных значениях T C
. 2. Сокращенные варианты записи
При программировании обыденной является ситуация, когда требуются некоторое действие в ответ на сложившиеся условия (например, если получены неверные исходные данные от пользователя, то выдать сообщение об ошибке и выйти из программы). В таких случаях в программах на C++ может использоваться сокращенная запись оператора условия с отсутствующим блоком else. Общая форма такой записи if
(
<условие>)
<блок операторов>; Здесь в случае истинности условия управление передается блоку операторов в фигурных скобках. В случае ложности условия этот блок пропускается. Соответствующая блок-схема отличается от предыдущей отсутствием одного «плеча» Другой вариант сокращения применяется в случае, когда какой-либо из блоков if или else состоит только из одного оператора. В этом случае допускается отсутствие фигурных скобок, ограничивающих этот блок. if
(
<условие>)
оператор 1; оператор 2; Здесь в качестве операторов 1 и 2 могут быть не только простые однострочные арифметические действия или операторы ввода-вывода, но и сложные многострочные конструкции, например другие (вложенные) операторы условия или операторы цикла, которые будут рассмотрены ниже. 3. Вложенные операторы
Операторы условия могут быть вложенными друг в друга, в соответствии с тем программным алгоритмом, который они реализуют. Допускается произвольная степень их «вложенности». Если один оператор if-else вложен в другой, то первый оператор входит во второй полностью
, а не только какой-либо одной своей частью if или else. Недопустимым является частичное перекрывание между собой их отдельных блоков. В приведенном примере один из операторов (выделен полужирным шрифтом) вложен в другой. Запись Б) является ошибочной в силу того, что блок else внутреннего оператора условия частично пересекается с обоими блоками if и else внешнего оператора. Пример 2.
Пользователь вводит с клавиатуры три целых числа a, b, c. Необходимо вывести на экран наибольшее из этих чисел. Решение. Один из возможных алгоритмов решения этой задачи показан на следующей блок-схеме. Схема может быть реализована программно с помощью вложенных операторов if-else // – Выбор наибольшего из 3 чисел – #include #include #pragma argsused int main (int argc, char* argv) float a, b, c; // объявляем три переменные cout<< «Vvedite a –»; // вводимзначения a, b, c cout<< «Vvedite b –»; cout<< «Vvedite c –»; if (a>b) // если a > b if (a>c) // иесли a > c