Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I_semestr.doc
Скачиваний:
6
Добавлен:
23.09.2019
Размер:
356.35 Кб
Скачать

4.2. Операторы языка с

Оператор – это часть программы, которая может быть отдельно выполнена. В языке С выделяют несколько видов операторов:

  1. Пустой оператор (;) отдельно взятая точка с запятой.

  2. Простой оператор (выражение с точкой с запятой на конце)

a=5;

  1. Составной оператор (ноль, один или несколько операторов, взятых в фигурные скобки {…})

  2. Структурные операторы (служат для организации управляющих структур и начинаются с зарезервированных слов. Зарезервированные слова – это такие имена, которые определены для обозначения структурных операторов, типов данных и их запрещено переопределять пользователю. Имена стандартных функций не являются зарезервированными словами)

4.3. Оператор цикла while

Это цикл с предусловием, имеющим следующую структуру:

while (выражение) оператор

выражение – условие, которое пока истинно, то выполняется.

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

Везде, где может быть использован этот оператор, может быть использован любой из их видов.

Пример: программа выводит таблицу значений синус и косинус.

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

int main();

{

double x;

x=0.0;

while (x<3.0)

{

printf(“%9.3lf%9.3lf%9.3lf/n”,x,sin(x),cos(x));

x+=0.2;

}

system(“PAUSE”);

return 0;

}

В цикле обязательно должны быть предусмотрены действия по изменению цикловых переменных в сторону нарушения условия.

Все вложенные операторы составного оператора записываются с дополнительным отступом в 1 табуляцию.

4.4. Оператор цикла do – while (цикл с постусловием)

Иногда тело цикла удобнее выполнять до проверки условия. В таком случае оно гарантированно выполнится хотя бы одни раз.

Рассмотрим задачу вычисления квадратного корня введенного пользователем числа, в которой запрашиваться число будет до тех пор, пока пользователь не введен что –то допустимом

double x;

do

{

printf(“Enter x>=0/n”);

scanf(“%lf”,&x);

}

while(x<0);

prinf(“/n Sqrt(x)=%lf7.3”,sqrt(x))

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

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

усл_опер=”if(“выражение)

оператор_если_да “;”

else

оператор_нет;

Может быть использована альтернативная форма записи:

if(“выражение”)”

оператор_если_да “;”

Ключевое слово else всегда относится к ближайшему сверху if.

if(b>a)

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

else t=cos(x);

Несмотря на кажущееся отношение else к верхнему if, это не так. Он относится к вложенному ближайшему оператору. Поэтому следует выровнять это следующим образом

if(b>a)

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

else t=cos(x);

Чтобы избежать недопонимания(не со стороны компилятора, а других людей и себя) следует применять фигурные скобки.

if(b>a)

{

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

else t=cos(x);

}

Для того, чтобы else относился к верхнему оператору if, надо записать это так:

if(b>a)

{

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

}

else t=cos(x);

1) В случае множественного ветвления, обычно выравнивают следующим образом:

if (a==6) {. . .}

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

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

. . .

else {. . .}

2) В случае коротких операторов:

if(b>a) k=sin(x);else k=x*x;

Первый способ менее используется, чаще используется данный метод:

if(b>a) k=sin(x);

else k=x*x;

3) Группы коротких операторов:

if(a<0) {. . .} else {. . .}

4) Длинные группы операторов:

if(a<0)

{

. . .

. . .

}

else

{

. . .

. . .

}

В некоторых случаях вместо оператора if удобно использовать условную операцию: ?:

выр1?выр2:выр3

Операнды могут быть любые. Вначале вычисляется выр1. Если его выражение истинно, то результатом операции является выр2 . В противном случае значением всей операции является значение выр3. Какое бы из этих двух выражений не дало результат операции, другое выражение не будет вычисляться.

Вычисление модуля

if x<0 y=-x;

else y=x;

x<0?-x:x;

if (a<b) a++;

else b++;

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

a<b?a++:b++;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]