Студопедия — УСЛОВНЫЙ ОПЕРАТОР
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

УСЛОВНЫЙ ОПЕРАТОР






 

 

if(условие) оператор;

 

...продолжение...

 

Работает так:

 

Вычисляется условие.

 

Если оно истинно, то выполняется оператор,

затем выполняется продолжение.

 

Если оно ложно, то сразу выполняется продолжение,

а оператор не выполняется.

 

Если нам надо выполнить при истинности условия несколько операторов,

мы должны заключить их в скобки {... } - это так называемый

"составной оператор".

 

if(условие) {

оператор1;

оператор2;

...

}

продолжение

 

После } точка с запятой НЕ СТАВИТСЯ (можно и поставить, но не нужно).

 

Условный оператор изображают на схемах так:

 

|

|

|

----------------

---| ЕСЛИ условие |----

| ---------------- |

| |

V V

истинно ложно

| |

V |

------------ |

| оператор | |

------------ |

| |

------->-------<-------

|

|

V

продолжение

|

 

Имеется вторая форма, с частью "иначе":

 

if(условие) оператор_если_истинно;

else оператор_если_ложно;

 

"или то, или другое" (но не оба сразу)

 

 

|

|

|

----------------

---| ЕСЛИ условие |-----------

| ---------------- |

| |

V V

истинно ложно

| |

V |

------------------------- -----------------------

| оператор_если_истинно | | оператор_если_ложно |

------------------------- -----------------------

| |

------->-------<--------------

|

|

V

продолжение

|

 

Пример1:

 

if(x > 10)

printf("Икс больше десяти\n");

 

Пример2:

 

int x, y, z;

 

if(x < y) z = 1;

else z = 2;

 

Условия:

 

В качестве условий могут использоваться операторы СРАВНЕНИЯ

(сравнивать можно переменные, выражения, константы)

 

x < y меньше

x > y больше

x <= y меньше или равно

x >= y больше или равно

x == y равно

x!= y не равно

 

Все эти операторы в качестве результата операции сравнения выдают

1, если сравнение истинно

0, если оно ложно.

 

Таким образом, на самом деле условный оператор работает так:

 

if(условие)....

 

Если условие есть НОЛЬ - то условие считается ложным.

Если условие есть НЕ НОЛЬ а... -2, -1, 1, 2, 3,... - то условие истинно.

 

Это определение.

 

Из него в частности вытекает, что сравнение с целым нулем можно опускать:

 

if(x!= 0)...; сокращается до if(x)...;

if(x == 0)...; сокращается до if(!x)...;

 

Пример:

 

int x, y, z;

 

if(x == 1){ y = 2; z = x + y; }

else { y = 1; z = x - y; }

 

 

Пример со вложенными условными операторами:

 

if(x == 1){

printf("Икс равен 1\n");

if(y == 2){

printf("Игрек равен 2\n");

}

} else {

printf("Икс не равен 1\n");

}

 

Часто применяется последовательность условных операторов,

перебирающая различные варианты:

 

if(x == 1)

printf("Икс равен 1\n");

else if(x == 2)

printf("Икс равен 2\n");

else if(x == 3){

printf("Икс равен 3\n");

y = 1;

} else

printf("Непредусмотренное значение икс\n");

 

Самое сложное - привыкнуть к тому, что сравнение обозначается знаком ==,

а не =

Знак = означает "присвоить значение", а не "сравнить на равенство".

 

ЦИКЛ while ("до тех пор, пока истинно")

 

 

while(условие)

оператор;

...продолжение...

 

или

 

while(условие){

операторы;

...

}

...продолжение...

 

|

V

|

+------>--+

| |

| V

П | ---------------------

о | | проверить УСЛОВИЕ |-------> если ложно (нуль)

в A --------------------- |

т | | |

о | V |

р | если истинно (не нуль) |

и | | |

т | V |

ь | оператор V

| | |

| | |

+-----<---+ |

|

+-------<---------------------+

|

V

продолжение

 

Пример:

int x;

 

x = 10;

while(x > 0){

printf("x=%d\n", x);

x = x - 1;

}

printf("Конец.\n");

printf("x стало равно %d.\n", x); /* печатает 0 */

 

"Цикл" он потому, что его тело повторяется несколько раз.

 

Чтобы цикл окончился, оператор-тело цикла должен менять

какую-то переменную, от которой зависит истинность условия повторений.

 

ОПЕРАТОРЫ "И, ИЛИ, НЕ";

 

 

Условия могут быть сложными.

 

ЕСЛИ красный И вес < 10 ТО...;

ЕСЛИ красный ИЛИ синий ТО...;

ЕСЛИ НЕ красный ТО...;

 

На языке Си такие условия записываются так:

 

if(условие1 && условие2)...; /* "И" */

if(условие1 || условие2)...; /* "ИЛИ" */

if(! условие1)...; /* "НЕ" */

 

Например:

 

if(4 < x && x <= 12)...;

 

Было бы неправильно записать

 

if(4 < x <= 12)...;

 

ибо язык программирования Си НЕ ПОНИМАЕТ двойное сравнение!

 

Еще примеры:

 

if(x < 3 || y > 4)...;

 

if(! (x < 3 || y > 4))...;

 

ЦИКЛ for ("для каждого")

 

 

Этот цикл является просто иной записью одного из вариантов цикла while.

Он служит обычно для выполнения опеределенного действия несколько раз,

не "пока истинно условие", а "выполнить N-раз".

 

У такого цикла есть "переменная цикла" или "счетчик повторений".

 

int i;

 

i = a; /* начальная инициализация */

 

while(i < b){

 

тело_цикла;

 

i += c; /* увеличение счетчика */

}

...продолжение...

 

переписывается в виде

 

int i;

 

for(i=a; i < b; i += c)

тело_цикла;

 

 

тело_цикла будет выполнено для значений i

a

a+c

a+c+c

...

 

пока i < b

 

В простейшем случае

 

for(i=1; i <= N; i++)

printf("i=%d\n", i);

 

i означает "номер повторения".

 

Такой цикл служит для повторения СХОЖИХ действий НЕСКОЛЬКО раз

с разным значением параметра.

 

ОПЕРАТОР break ("вывалиться из цикла")

 

 

Оператор break заставляет прервать выполнение тела цикла

и сразу перейти к продолжению программы.

 

while(условие1){

операторы1;

 

if(условие2)

break; ------->----+

|

операторы2; |

} |

...продолжение...<--------<---------+

 

и

 

for(i=0; условие1; i++){

операторы1;

 

if(условие2)

break; ------->----+

|

операторы2; |

} |

...продолжение...<--------<---------+

 

 

Этот оператор позволяет организовывать дополнительные

точки выхода из цикла (при дополнительных условиях).

 

Пример:

 

for(i=0; i < 20; i++){

printf("i=%d\n", i);

if(i == 7){

printf("break loop!\n");

break; /* вывалиться из цикла */

}

printf("more\n");

}

printf("finished, i=%d\n", i); /* печатает 7 */

 

В частности, с его помощью можно организовывать бесконечный цикл:

 

for(;;){ /* заголовок бесконечного цикла */

операторы1;

 

if(условие2)

break; ------->----+

|

операторы2; |

} |

...продолжение...<--------<---------+

 

Здесь в самом заголовке цикла НЕ ПРОВЕРЯЕТСЯ НИКАКИХ УСЛОВИЙ,

такой цикл продолжается бесконечно.

Условие продолжения считается всегда истинным.

 

Единственный способ выйти из него -

это сделать break (при каком-то условии) в теле цикла, что и написано.

 

Бесконечный цикл можно также организовать при помощи

while(1){

...

}

 







Дата добавления: 2015-03-11; просмотров: 473. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия