Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ЭУМКД КИТ-ч1-Бутов.docx
Скачиваний:
9
Добавлен:
05.05.2019
Размер:
262.85 Кб
Скачать

Тема 5. Базовые конструкции структурного программирования

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

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

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

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

1. Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления (см. рис. выше). Предусмотрен также сокращенный вариант этого оператора:

Формат оператора:

if (логическое выражение)

оператор1

else

оператор2

Формат для сокращенного варианта:

if (логическое выражение)

оператор

При этом операторы могут быть как простыми , так и составными. Пример 1: определить максимальное из двух чисел.

int a = 5, b = 10, max;

/ /вариант 1:

max = a;

if (b > a)

max = b;

//вариант 2:

i f (a >= b)

max = a;

else

max = b;

П ример 2: определить максимальное из трех чисел.

int a = 5, b = 10, с = 7, max;

//вариант 1:

if (a >= b && a >= c)

max = a;

if (b >= a && b >= c)

max = b;

if (c >= a && c >= b)

max = c;

//вариант 2:

i f (a >= b && a >= c)

max = a;

else

if (b >= c)

max = b;

else

max = c;

//вариант 3:

if (a >= b)

{

if (a >= c)

max = a;

else

max = c;

}

else

{

if (b >= c)

max = b;

else

max = c;

}

Так как конструкция «else max = c;» повторяется 2 раза, то сделаем упрощение:

//вариант 4:

m ax = c;

if (a >= b)

{

if (a >= c)

max = a;

}

else

if (b >= c)

max = b;

П ри использовании вложенных операторов if необходимо помнить, что ветвь else всегда относится к ближайшему выше условию if, не имеющему своей ветви else. Если же ветвь else должна относиться к другому условию if, то необходимо использовать фигурные скобки. Например, если убрать фигурные скобки в предыдущем примере, то программа будет работать неверно, т.к. случай, когда a < b, не анализируется и тогда max будет равен c независимо от значения переменной b:

max = c;

if (a >= b)

if (a >= c)

max = a;

else

if (b >= c)

max = b;

/ /вариант 5 (наиболее компактный):

max = a;

if (b > max)

max = b;

if (c > max)

max = c;

На практике довольно часто используется конструкция из вложенных друг в друга операторов if, называемая конструкцией else-if, которая имеет следующий формат:

if (логическое выражение1)

оператор1

else if (логическое выражение2)

оператор2

else if (логическое выражение3)

оператор3

. . .

else if (логическое выражениеN)

операторN

else

операторN+1

Эта последовательность операторов if – самый общий способ описания многоступенчатого принятия решения. Логические выражения вычисляются по порядку. Как только встречается выражение со значением ИСТИНА, выполняется соответствующий ему оператор и на этом последовательность проверок завершается.

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

i f (a >= b && a >= c)

max = a;

else if (b >= a && b >= c)

max = b;

else

max = c;

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