Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции КПиЯП.docx
Скачиваний:
50
Добавлен:
20.09.2019
Размер:
3.8 Mб
Скачать

Оператор ветвления.

Оператор ветвления (или, как его еще называют, оператор условия) на языке «С» имеет следующий синтаксис:

if(условие) оператор №1; else оператор №2;

ИЛИ

if(условие) {блок операторов №1;} else {блок операторов №2;}

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

Как видно из синтаксиса, если оператор один, то его можно не заключать в фигурные скобки, а если операторов несколько, то они должны быть объединены в блок при помощи фигурных скобок. В качестве условия здесь выступает любое выражение, которое можно интерпретировать как логическое в рамках языка «С».

Блок else может отсутствовать, тогда оператор ветвления принимает вид:

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

ИЛИ

if(условие) {блок операторов;}

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

Пример №1

Пример №2

if(x>5) y = x;

if(y>z) z = y;

else z = 0;

if(x>5){

z = x;

if(z>y) z = y;

}

else z = 0;

В данном примере блок else принадлежит второму оператору if.

В данном примере блок else принадлежит первому оператору if.

Оператор ветвления используется для организации разветвляющихся алгоритмов. В довольно большом количестве случаев вместо этого оператора можно использовать условную операцию.

Также условную операцию можно использовать в случаях похожих на следующий пример:

If(flag) printf(“TRUE”); else printf(“FALSE”);

ИЛИ

(flag)?printf(“TRUE”):printf(“FALSE”);

Оператор выбора.

Оператор ветвления предназначен для выполнения одного из двух операторов в зависимости от условия, на практике же часто встречаются случаи, когда необходимо выполнить один из нескольких операторов. Для реализации таких сильно разветвляющихся алгоритмов можно использовать вложенный оператор ветвления в виде:

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

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

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

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

else операторN+1;

Такой подход затрудняет читаемость программы, делая ее сильно разветвленной. Это приобретает особую актуальность, когда вместо одиночных операторов используются блоки операторов со своими вложенными операторами условия. Для избежания этого используют оператор выбора, который действует согласно выше приведенной схеме и имеет следующий синтаксис (на языке «С»):

switch(выражение){

case случай1: {блок операторов №1;break;}

case случай2: {блок операторов №2;break;}

case случай3: {блок операторов №3;break;}

case случайN: {блок операторов №N;break;}

default: {блок операторов по умолчанию;}

}

Здесь выражение – любое выражение, значение которого имеет либо целочисленный, либо символьный тип, т.е. результат должен иметь либо тип int, либо тип char, либо другой, но производный от них.

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

Блоки операторов могут состоять из одного или нескольких операторов.

Оператор выбора работает согласно схеме вложенных операторов ветвления: сначала выражение сравнивается со случаем1, если верно, то выполняется блок операторов №1, если не верно – переходит к следующему случаю и т.д. Если все случаи были пересмотрены, и ни один не был верным, то выполняется блок операторов по умолчанию. Этот блок может отсутствовать, тогда никаких действий не выполняется. Наличие оператора break обязательно, так как при попадании в один блок операторов, все следующие за ним также выполняются.