Главная страница

Лекции Булатицкий Дмитрий Иванович (во многом по материалам Прасолова А. Н.)


Скачать 319.62 Kb.
НазваниеЛекции Булатицкий Дмитрий Иванович (во многом по материалам Прасолова А. Н.)
Дата11.01.2022
Размер319.62 Kb.
Формат файлаdocx
Имя файлаLecture_Programming_2021_09_01.docx
ТипЛекции
#328427
страница12 из 36
1   ...   8   9   10   11   12   13   14   15   ...   36

Условный оператор и условная операция


Условный оператор предназначен для выбора одного из двух альтернативных действий и имеет следующую форму записи:
БНФ:

условный_оператор =

"if" "("выражение")" оператор_1 ["else" оператор_2]
Пример:

if ( a ) c = b+1; else c = b - 1;

if ( a > b ) k = sin( x ); else k = x + x;
При выполнении условного оператора вначале вычисляется <выражение>. Если его значение не равно нулю, то выполняется <оператор_1>, а <оператор_2> пропускается. Если значение выражения равно нулю, то выполняется <оператор_2>, а <оператор_1> пропускается.

При наличии вложенных операторов if следует иметь в виду, что ключевое слово else всегда относится к ближайшему if, как показано в следующем примере:
if( b > a )

if( c < d ) k= sin(x);

else t = cos(x);

else c = tan( x );
Для того чтобы избежать ошибок рекомендуется использовать операторные скобки
if( b < a )

{

if( c < d ) k = sin( x );

else t = cos( x );

}

else c = tan( x );

Особенно это важно если у вложенного оператора if отсутствует else, т.е
if( b > a )

if( c < d ) k = sin( x );

else c = tan( x ); /* else относится к

вложенному if */
if( b > a )

{

if( c < d ) k = sin( x );

}

else

c = tan( x ); /* else относится к первому if */
Если в качестве <оператора_1> или <оператора_2> используется группа операторов, то ее записывают как составной оператор, заключая ее в операторные скобки "{" и "}".

Для того, чтобы сделать программу более понятной, рекомендуется операторы записывать в следующих формах:
1) короткие операторы:
if( a > b ) k = sin( x ); else k = x*x;
if( a > b ) k = sin( x );

else k = x*x;
2) группы коротких операторов:
if( a > b ) { ... } else {... }
if( a > b ) { ... }

else { ... }
или
if( ... )

{ ..... }

else

{ ..... }
3) длинные группы операторов:
if(... )

{

.

.

.

}

else

{

.

.

.

}
4) множественный выбор:
if ( a == 6 ) { ... }

else if ( a == 8 ) { ... }

else if ( a == 15 ) { ... }

else if ( a > 20 && a < 28 ) { ... }

else { ... }
В некоторых случаях вместо оператора if удобно использовать условную операцию ?:, которая позволяет сократить запись программ и число используемых переменных.
БНФ:

условное_операция = выр_0 "?" выр_1 ":" выр_2
Значение условной операции равно <выр_1>, если <выр_0> не равно 0 и <выр_2> в противном случае. Например, следующий оператор
if ( x>a ) f = sin( x-a ); else f = sin(x);
можно заменить условной операцией, и сразу вычислить f:
f = sin( x>a ? x-a : x );
Очевидно, в последнем случае получился более короткий код, поскольку обращений к переменной f и функции sin вдвое меньше.
    1. Оператор цикла while


Оператор цикла while предназначен для реализации циклических алгоритмов и имеет следующую форму записи
БНФ:

"while" "(" выражение ")" оператор
Пример :

while( a < 18 ) a = a+2;
При выполнении оператора цикла while вначале вычисляется выражение. Если оно не равно 0, то выполняется оператор. Далее снова вычисляется выражение и если оно не равно 0, то снова выполняется оператор. Такие циклические действия продолжаются до тех пор, пока выражение отлично от 0. Отсюда и название цикла while ( пока ). Как только выражение станет равным 0 цикл прекращает выполнятся и управление передается на следующий за циклом оператор.

Циклически выполняемый оператор обычно называют телом цикла. Если в теле цикла необходимо разместить не один, а несколько операторов, то в этом случае используют составной оператор.

Все операторы тела цикла должны быть записаны с отступом, обычно в три пробела.

Рассмотрим пример программы, которая выводит на экран таблицу функций sin(x) и cos(x):
#include

#include
void main( void )

{

double x = 0;

while( x < 3.0 )

{

printf( "%6.3lf %9.6lf %9.6lf\n",x, sin(x), cos(x) );

x += 0.2;

}

}
Если после while( x < 3.0 ) ошибочно поставить точку с запятой, то никаких сообщений об ошибках выдано не будет, но цикл станет бесконечным. Действительно, в этом случае тело цикла будет пустым оператором ";", переменная x не будет меняться, следовательно, результат выражения x < 3.0 всегда будет отличен от нуля.

В теле правильно организованного цикла обязательно должны содержатся операции, влияющие на выражение в заголовке цикла так, чтобы цикл рано или поздно завершился.
    1. 1   ...   8   9   10   11   12   13   14   15   ...   36


написать администратору сайта