Способность управлять программным потоком позволяет делать выборочное выполнение отдельных участков кода, а это весьма ценная особенность программирования. Оператор выбора if позволяет нам выполнять или не выполнять определенные участки кода,в зависимости от того является ли истинным или ложным условие этого оператора. Одно из самых важных назначений оператора выбора if так это то, что он позволяет программе совершить действие на выбор, в зависимости от того, какие данные ввел пользователь. Банальный пример использования if - это проверка введенного пользователем пароля, если пароль правильный, программа разрешает пользователю совершить какое-то действие, если пароль введен неправильный, то программа не позволит пользователю получить доступ к ограниченным ресурсам.
Без условного оператора программа бы срабатывала раз за разом одинаково, независимо от того, какие входные данные поступали от пользователя. Если же использовать операторы выбора, то результат работы программы может быть намного интереснее, так как он будет зависеть напрямую от входных данных пользователя.
Перед тем как начать разбираться в структуре оператора if , стоит обратить внимание на такие значения как ИСТИНА
и ЛОЖЬ
в контексте программирования и компьютерной терминологии.
Истинное значение (ИСТИНА
) имеет значение отличное от нуля, ЛОЖЬ
эквивалентна нулю. При использовании операторов сравнения, оператор будет возвращать единицу, если выражение сравнения - истинно, или - 0, если условное выражение ложно. Например, выражение 3 == 2 вернет значение 0, так как три не равно двум. Выражение 5 == 5 оценивается как истинное и вернет значение 1. Если вам сложно это понять, попробуйте сделать вывод на экран этих выражений, например: printf ("%d", 7 == 0);
В процессе программирования, часто приходится сравнивать одни переменные с другими и на основе этих сравнений управлять программным потоком. Есть цэлый список операторов, который позволяет выполнять сравнения, вот он:
Скорее всего вы знакомы с этими операторами сравнения, но на всякий случай, я показал их в таблице выше. Они не должны быть сложными для вашего понимания, большинство из этих операторов вы изучили в школе на уроках математики. Теперь вы понимаете, что такое ИСТИНА
и ЛОЖЬ
, пора испытать оператор выбора if в бою. Структура if:
If (условное выражение)
// тут располагается один оператор, который выполнится, если условное выражение - истинно
Вот вам простой пример использования оператора if:
If (7 > 6)
printf("Семь больше шести");
В этом примере программа оценивает условное выражение — «семь больше шести?» Чтобы увидеть результат работы этого фрагмента кода просто вставьте его в функцию main() и не забудьте включить заголовок stdio.h , запускаем программу и видим результат - true . Конструкция оператора выбора if c фигурными скобочками:
If (TRUE) {
/* весь код который помещен внутрь скобок - выполнится */
}
Если не использовать фигурные скобочки, то к телу оператора if будет относиться только один, первый оператор. Если же необходимо управлять несколькими операторами, то необходимо поместить их в фигурные скобочки. Я рекомендую всегда ставить скобки, после объявления if - это хороший тон программирования и вы никогда не запутаетесь в своем коде, так как такое объявление наиболее понятное.
Оператор else
Иногда, когда условное выражение - ложное, было бы удобно, чтобы выполнялся некоторый код, отличный от того кода,который выполняется при ИСТИННОМ
условии. Как же это делается?
Вот пример использования оператора if else:
If (TRUE) {
/* выполняется этот код,если условие истинно */
}
else {
/* выполняется этот код,если условие ложно */
}
Конструкция else if
Обычно операторы else if используют, когда необходим множественный выбор, то есть например определены несколько условий, которые одновременно могут быть истинными, но нам необходимо только одно истинное условное выражение. Вы можете использовать оператор if else сразу после оператора выбора if , после его тела. В таком случае, если условие первого оператора выбора - ИСТИННО
, тогда конструкция else if будет игнорироваться, тогда как в противном случае, если условие первого оператора выбора - ЛОЖНО
, начнет выполнятся проверка в конструкции else if . То есть если условие одного оператора if будет истинно, то другие проверяться не будут. Теперь чтобы все это хорошо закрепить в голове и понять, давайте рассмотрим простой пример с использование конструкций операторов выбора.
#include
#include
int main()
{
int age; // без переменной никак...
printf("Сколько вам лет? "); // спрашиваем пользователя о его возрасте
scanf("%d", &age); // ввод пользователем количества лет
if (age < 100) { // если введенный возраст меньше 100
printf ("Вы очень молоды!\n"); // просто показываем что программа сработала верно...
}
else if (age == 100) { // используем else для примера
printf("Молодость уже позади\n"); // \n - символ перевода на новую строку.
}
else {
printf("Столько не живут\n"); // если ни одно из выше-перечисленных условий не подошло, то программа покажет этот вариант ответа
}
return 0;
}
Рассмотрим интересные условные выражения с использование логических операторов.
Логические операторы позволяют создавать более сложные условные выражения. Например, если вы хотите проверить, является ли ваша переменная больше 0 но меньше 10, в таком случае вам достаточно воспользоваться логическим оператором - И. Вот так это делается - var > 0 and var < 10 . В языке СИ есть точно такой же же оператор, только обозначается он иначе — && .
При использовании операторов if часто необходимо проверить несколько различных условий, поэтому очень важно понимать логические операторы OR, NOT и AND. Логические операторы работают точно так же как и операторы сравнения: они возвращают 0, если имеют ложное значение или 1, если логическое выражение - истинное.
Подробнее о логических операциях вы можете прочитать в .
В некоторых источниках говорится, что оператор выбора if else — самостоятельный оператор. Но это не так, if else — это всего лишь форма записи оператора выбора if . Оператор if else позволяет определить программисту действие, когда условие истинно и альтернативное действие, когда условие ложно. Тогда как if позволял определить действие при истинном условии.
Синтаксис записи оператора выбора if else:
If (/*проверяемое условие*/)
{
/*тело оператора выбора 1*/;
} else
{
/*тело оператора выбора 2*/;
}
Читается так: «Если проверяемое условие истинно, то выполняется тело оператора выбора 1
, иначе (то есть проверяемое условие ложно) выполняется тело оператора выбора 2
«. Обратите внимание на то, как записан оператор if else . Слово else специально сдвинуто вправо для того чтобы программный код был понятен и его было удобно читать.
Рассмотрим задачу с предыдущей темы, с использованием if else . Напомню условие задачи: «Даны два числа, необходимо их сравнить».
// if_else.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include
using namespace std;
int main(int argc, char* argv)
{
int a, b;
cout << "Vvedite pervoe chislo: ";
cin >> a;
cout << "Vvedite vtoroe chislo: ";
cin >> b;
if (a >= b) // если a больше либо равно b, то
{
cout << a << " >= " << b << endl;
} else // иначе
{
cout << a << " <= " << b << endl;
}
system("pause");
return 0;
}
В данном коде нас интересуют
строки 14-20
. Эти строки читаются так: если
a (первое число) больше либо равно
b (второе число), то выполнить оператор вывода в
строке 16
Cout << a << " >= " << b << endl;
иначе выполнить оператор вывода в строке 19
Cout << a << " <= " << b << endl;
В данном ифе мы используем операции соотношений >= и <= . Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, строку 19
нужно записать так
cout << a << " < " << b << endl; // в кавычках записать не меньше или равно, а просто меньше.
А вот так сработала программа (см. Рисунок 1).
Vvedite pervoe chislo: 15
Vvedite vtoroe chislo: -4
15 >= -4
Для продолжения нажмите любую клавишу. . .
Рисунок 1 — Оператор выбора if else
Покажу еще один пример использования операторов выбора if else (так называемые вложенные операторы if else для множественного выбора).
Условие задачи:
Составить алгоритм находящий значение y, если у=х, при х<0; у=0, при 0<=х<30; у=х 2 , при х>=30;
// inif_else.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include
using namespace std;
int main(int argc, char* argv)
{
int x, y;
cout << "Vvedite x: ";
cin >> x;
if (x < 0)
{
y = x; // выполняется, если х меньше нуля
} else
{
if ((x >= 0) && (x < 30))
{
y = 0; // выполняется, если х больше либо равно нуля и меньше 30
} else
{
if (x >= 30)
{
y = x * x; // выполняется, если х больше либо равен 30
}
}
}
cout << "y=" << y << endl;
system("pause");
return 0;
}
В данной задаче возможны три случая:
1-й случай: х < 0 ;
2-й случай: х лежит в пределах от 0 (включая 0) до 30;
3-й случай: х больше или равен 30.
Заметьте новшество!! В 17 строке
такую запись: if ((x >= 0) && (x< 30)) ,
я использовал символы && — это . Операция логического И
&& необходима для объединения нескольких простых условий в одно составное. В нашем случае необходимо проверить истинность двух условий: первое – x >= 0 , второе – х < 30 . Все проверяемое условие будет истинно, если истинны два простых условия. В математике правильной записью считается такая запись: 0 <= x < 30 , а в С++ правильной записью считается вот такая запись: (x >= 0) && (x < 30) или такая 0 <= x && x < 30 . Кстати круглые скобочки () && () не обязательны, так как условия простые, но для уверенности, я прописываю, всегда, данные скобочки и вам советую.
Разбор частного случая:
Допустим, пользователь ввел число 31. Начиная со строки 12
, выполняется проверка условий. Читается так: «Если х (31 в нашем случае) < 0, то выполнить оператор в строке 14
». Но так как 31 > 0 условие ложно мы переходим к слову else (иначе) строка 15
. Дальше проверяем, входит ли число 31 в заданный интервал. Читается так: если х>=0 и х<30 то выполнить оператор в строке 19
. Но так как число 31 не входит в заданный интервал, то условие ложно. Подробно строка 17
: программа сначала проверит первое простое условие х >= 0 – оно истинно, а если первое истинно, то программа перейдет к проверке второго простого условия х < 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция && , а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе), здесь у нас последний if , (строка 22
). Выполняется проверка х >= 30 . Читается так: Если х >= 30 то выполнить оператор, находящийся в строке 24
. Наконец-то условие истинно, итак выполнился оператор в строке 24
. И строка 28
печатает получившееся значение. Ну, все, рассмотрели программу по мельчайшим деталям. Результат работы программы, в случае, если пользователь ввел число 31 (см. Рисунок 2)
Всем привет. И сегодня я хочу рассказать вам про условия if и else. Я просто уверен что практически каждый кто сейчас это читает прекрасно знает о чём идёт речь. Ну а для всех остальных я поясню по лучше.
И так if - переводится с английского языка как "Если", в то время как else - иначе. Давайте я сразу покажу вам пример и я думаю очень многим всё сразу станет ясно.
$a = 1;
if ($a == 1) {
echo "a = 1";
} else {
echo "a не равно 1";
} ?>
Думаю многие уже догадались, что результатом данного примера будет появление на экране "a = 1". А всё потому что переменной a в самом начале мы присваиваем значение 1. Т.е. В случае если в скобках после if у нас верное значение, то выполняется скрипт расположенный в первых фигурных скобках {}. Иначе (else) Выполняем из других скобок, вот другой пример.
$a = 2;
if ($a == 1) {
echo "a = 1";
} else {
echo "a не равно 1";
} ?>
В данном примере будет выведено, что a не равняется одному. Но на самом дело это хоть и основные, но простые конструкции. В php так же есть и более компактный вариант записи условий.
Результат данного примера будет совершенно такой же как и в примерах выше. Так же не стоит забывать ещё одну контрукцию
if ($a == 1):?>
Наша a снова имеет значение 1
А теперь более сложная конструкция
Я даже начну сразу с примеров.
if ($a >= 0) {
if ($a == 0) {
?>
Наша А равна нулю
} else { ?>
Наша А больше нуля
}
} else {
echo "Наша переменная меньше нуля=(";
}
?>
Как видите в условия также можно вкладывать и другие условия, вы можете их создавать сколько угодно.
И вот вам ещё один пример.
if ($a == 0){
echo "Переменная равна нулю";
} elseif ($a > 0 && $a <5) {
?>
А больше нуля, но обязательно меньше 5
}elseif($a >= 5 || $a == -5){
echo "Этот тест вы увидите только если А будет больше или равно 5. ИЛИ!! Если А будет равно -5";
}else{?>
А это вы увидите если а будет меньше нуля, и при этом НЕ равно -5.
}?>
На самом деле в последнем примере в последнем else - нет такого условия что $a не должна равняться -5. Просто если а будет -5, то выполнится условие которое было выше и до нижнего не успеет дойти.
А так же если вы всё ещё не поняли, то условия которые прописываются в круглых скобках, используют специальные операторы, о них идёт речь в другой статье. Но к счастью их не так много и я могу повторить прямо здесь.
Логические операторы которые используются в условиях
Равенство, не путать с присвоением (=), на пример $a = 1; - В этом случае в ячейку "a" мы положили единицу, и запись вида $a == 1, то же самое что и 1 == 1.
Не равенство. if(1 != 2){echo "Это условие обязательно сработает потому что 1 не равно 2"; }
|| - ИЛИ. Кстати, если кто эти 2 символа проставляются если в англ раскладке нажать на шифт + косой шлеш (под бакспейсом).
0 || $a < 0){echo "Это условие сработает если А будет равняться например -15 ИЛИ например 23 "; }?>
Кстати данный пример можно написать и вот таким вот образом
= $a != 0 ? "А не равно нулю" : ""?>
&& - И. При таком логическом операторе скрипт будет выполнен только если оба условия были выполнены.
0){ echo "Для этого А не должны быть нулём И обязательно должно быть больше нуля"; }?>
Вот тот же пример
= $a > 0 ? "А больше нуля" : ""?>
Только что я рассказал как использовать логические операторы, но есть ещё одно! О чем на самом деле забывают некоторые программисты.
$a = 1;
if($a){
echo "Будет выполнено потому что у нас существует $a и она не пустая. Но если в условие написать $b, то уже выполнится else, потому что $b у нас нет=(";
}else{
echo "У нас всегда будет выполняться первое условие, потому что у нас всегда есть А";
}?>
Суть в том, что при проверке условий возвращается true или false. Если смотреть на верхний пример. В условии if у нас ни как НЕ может быть пустоты. Любая пустота или при не прохождении логического оператора возвращается false, в противном случае вернётся true.
if($a = 1){
echo "Всегда будет верно! потому что присвоение переменной "a" значение, происходит прямо в условии, т.е. у нас присвоется единица, и только потом проверится, если что-то в переменно $a. И разумеется если сейчас вывести $a, то мы увидим ".$a;
}else{
echo "Мы никогда не дойдём до сюда=(";
}?>
На этом пожалуй я и закончу. Всем удачи, помните самое главное, это был php и по этому данный участок кода у вас должен располагаться в ?>. Разумеется читайте мой блог, в котором я вам расскажу как же всё таки писать отличные сайты и веб-приложения. И даже как их не только писать, а как делать это правильно!
В повседневной жизни часто необходимо принять какое не-будь решение, в зависимости от какого то условия. Например, если на выходные погода будет теплой, то мы поедим на море, иначе, если будет пасмурно, то посидим дома.
В программировании это тоже встречается очень часто. Для этого существуют два условных операторов, это 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("Мы можем подключить к электрической сети все устройства из дома
");
}