Оператор ветвления языка Си If
Оператор ветвления if (англ. «если») необходим в тех случаях, когда надо решить, должна ли быть выполнена конкретная инструкция программы .
Рассмотрим синтаксис условного оператора:
Самый простой вариант оператора:
If (условие) оператор1;
Если условие истинно, то будет выполняться следующий за ним оператор. Если условие не выполняется (ложно), то компилятор пропускает инструкцию, записанную после if, и переходит к следующим командам программы.
Операторы отношения, используемые в условии:
Оператор | Значение | Пример |
---|---|---|
== | равно | if (x == 0.06) |
> | больше | if (s > 40) |
< | меньше | if (s < 40) |
>= | больше или равно | if (y >= 10000) |
<= | меньше или равно | if (t <= l) |
!= | не равно | if (count != 1) |
Например, при компиляции следующего кода сообщения об ошибке не возникнет, но и нужный результат получен не будет :
gets(name); if (name == "Петя") puts("Приходи в гости"); |
Строковые переменные подробно обсуждаются в одном из последующих уроках.
Если возникает необходимость, чтобы при выполнении одного условия выполнялось несколько команд, следует использовать составной оператор:
Составной оператор:
If (условие) { оператор1; оператор2; }
В ситуации, когда при истинности условия должен быть выполнен один набор инструкций, а в противном случае — другой, используется конструкция if...else
:
If (условие) оператор1; else оператор2; |
Запрашивать в программе время. Если уже более 11 часов выводить сообщение «Пора домой», в противном случае — «еще рано!»
1 2 3 4 5 6 7 8 9 | main() { int time; scanf("%d", &time); if (time>11) puts ("Пора домой"); else puts ("еще рано!"); } |
||
),&&
) !
). Оператор ИЛИ означает, что для выполнения оператора if достаточно истинности одного из двух или одновременно обоих условий.
Оператор И означает, что должны быть истинными оба условия одновременно.
Оператор отрицания означает, что оператор if выполняется, если некое условие оказалось ложным.
Задача сложна тем, что в ней присутствует строковая переменная. Для правильной работы необходимо «разложить» строковую переменную на символы:
color="blue"; color[0]='b'; color[1]='l'; color[2]='u'; color[3]='e'; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> main() { char color[9]; int rost; puts("what color?"); scanf("%s",&color); puts("what rost?"); scanf("%d",&rost); if(color[0]=='b' && color[1]=='l' && color[2]=='u' && color[3]=='e' && rost<180) puts("podhodite!!!"); else puts("good bye!"); } |
1 2 3 4 5 6 7 8 9 10 11 12 | var color:string; rost:integer; begin writeln ('kakov zvet glaz?'); readln(color); writeln('kakov rost?'); readln(rost); if (color='blue') and (rost<180) then writeln('podhodite') else writeln('good bye!') end. |
Оператор выбора языка Си switch
Если в программе необходимо учесть больше трех возможных вариантов, конструкция if...else
может оказаться очень запутанной, даже если использовать вложенные операторы.
В таких случаях используется оператор выбора (или переключатель) языка Си switch. Переключатель switch работает по принципу меню и содержит все возможные варианты условий и инструкции, которые следует выполнить в каждом конкретном случае.
Рассмотрим синтаксис:
1 2 3 4 5 6 7 8 9 10 11 12 switch (идентификатор переменной) { case значение1: оператор1; break; case значение2: оператор2; break; … default: оператор n; }
В круглых скобках после оператора выбора языка Си switch находится переменная типа int или char (не строковая), следом расположен блок, заключенный в фигурные скобки; в блоке содержатся ветви условий case. Каждая ветвь case выполняет конкретные инструкции, если значение переменной совпадает с указанным. Если это значение является символом, то символ заключается в одинарные кавычки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<stdio.h> main() { int otmetka; puts("what otmetka?"); scanf("%d",&otmetka); switch (otmetka) { case 1,2: puts("koshmar!"); break; case 3: puts("ploho"); break; case 4: puts("neploho"); break; case 5: puts("otlichno!"); break; default: puts("takih otmetok ne bivaet"); } } |
1 2 3 4 5 6 7 8 9 10 11 12 | var otmetka:integer; begin writeln('otmetka?'); readln(otmetka); case otmetka of 1,2 : writeln ('koshmar!'); 3: writeln('ploho'); 4: writeln('neploho'); 5: writeln('otlichno!'); else writeln('takih otmetok ne bivaet'); end end. |
=
и ==
?else
в конструкции Си if? if
, находится ли число в границах допустимых значений?switch
от оператора Си if
?