Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-практическое пособие ПРОГ.doc
Скачиваний:
38
Добавлен:
20.11.2019
Размер:
5.63 Mб
Скачать

3.4.Управляющие конструкции

Управляющие конструкции позволяют организовывать циклы и ветвления в программах. В Си всего несколько конструкций, причем многие из них можно не использовать т.к. они реализуются через остальные.

3.4.1.Фигурные скобки

Фигурные скобки позволяют объединить несколько простых (элементарных) операторов в один составной оператор, или блок. Во всех синтаксических конструкциях составной оператор можно использовать вместо простого.

3.4.2.Оператор выбора if и операция условия

Оператор if ("если") позволяет организовать ветвление в программе. Он имеет две формы: оператор "если" и оператор "если...иначе". Оператор "если" имеет вид

if (условие)

действие;

оператор "если...иначе" имеет вид

if (условие)

действие1;

else

действие2;

В качестве условия можно использовать любое выражение логического или целого типа. При использовании целочисленного выражения значению "истина" соответствует любое ненулевое значение. При выполнении оператора "если" сначала вычисляется условное выражение после if. Если оно истинно, то выполняется действие, если ложно, то ничего не происходит. Например, в следующем фрагменте в переменную m записывается максимальное из значений переменных x и y:

double x, y, m;

. . .

m = x;

if (y > x)

m = y;

При выполнении оператора "если...иначе" в случае, когда условие истинно, выполняется действие1, в противном случае выполняется действие2. Например, предыдущий фрагмент переписывается следующим образом:

double x, y, m;

. . .

if (x > y)

m = x;

else

m = y;

Когда надо выполнить несколько действий в зависимости от истинности условия, следует использовать фигурные скобки, объединяя несколько операторов в блок, например,

double x, y, d;

. . .

if (d > 1.0) {

x /= d;

y /= d;

}

Здесь переменные x и y делятся на d только в том случае, когда значение d больше единицы.

Когда в программе имеется несколько конструкций if и else, то компилятор решает, какому оператору if соответствует какой оператор else по следующему правилу: else соответствует ближайшему if. Поясним это правило на примере.

if(n>6)

if (n<=12)

printf("1");

else

printf(2);

В каком случае будет напечатана 2? Когда значение переменной n меньше или равно 6 или когда оно больше 12? Исходя из сформулированного правила, else соответствует второму if и 2 будет напечатана в том случае, когда n больше 12.

Если требуется, чтобы в рассмотренном примере else соответствовал первому if , то требуется использовать фигурные скобки следующим образом:

if(n>6)

{

if (n<=12)

printf("1");

}

else

printf(2);

После таких изменений 2 будет напечатана в том случае, когда n меньше или равно 6.

В Си имеется короткий способ записи одного из видов оператора if. Это осуществляется с помощью условного выражения, которое использует оператор условия, обозначаемый символом "?". В общем виде условное выражение записывается следующим образом:

выражение1?выражение2:выражение3;

Если выражение1 истинно (больше 0), то значением условного выражения становится значение выражения2. Если выражение1 ложно (равно 0), то значением условного выражения становится значение выражения3. Пример нахождения абсолютной величины числа y с помощью условного выражения:

x=(y<0)?-y:y;