43-45 Алгоритмические структуры: линейная, выбор, ветвление

Дата публикации: 15.03.2018 17:59:12

Линейный алгоритм

Операторы, переменные, некоторые функции

Выбор стр. 24 (+презентация в файлах)

Алгоритмическая структура Ветвление (презентация 2, с заданиями)

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

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

then оператор1

else оператор2

Если значение логического выражения — истина, выполняется «оператор1», иначе (т.е. при ложности логического выражения) — «оператор2».

Пример:

if x > 0

then y := sqrt(x)

else y := 0;

При положительном x переменная y получит значение квадратного корня из x, в другом случае — значение 0.

Если нужно выбирать более чем из 2 вариантов, используют вложенные условные операторы, например:

if x > 0

then y := sqrt(x)

else if x > -10

then y := 0

else y := -sqrt(-x-10);

При выполнении этого фрагмента программы x сначала сравнивается с нулем, если условие в первом условном операторе не выполнено, то затем сравнивается с -10. В зависимости от результата проверки выбирается одно из трех возможных действий. В общем случае, количество условных операторов оказывается на 1 меньше числа возможных вариантов.

Второй вариант реализации ветвления — оператор множественного выбора:

case дискретное выражение of

значение1: оператор1;

значение2: оператор2;

...

значениеN: операторN;

end;

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

Пример:

write('Введите операцию');

readln(c);

case c of

'+': write(x + y);

'-': write(x - y);

'*': write(x * y);

'/': write(x / y);

else write('Недопустимая операция')

end;