Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
1.01 Mб
Скачать

Вложенное ветвление

Любая ветвь может не быть линейным участком программы, а сама содержать ветвление. Такое ветвление называется вложенным (или множественным) ветвлением. Чаще вторично разветвляется ветка «нет». В качестве примера разберём простую задачу:

В первом магазине хозяйка приобрела a кг. огурцов. Их оказалось b штук. Во втором магазине на c кг. получилось d штук. В каком магазине огурцы крупнее?

Находим массу одного огурца в каждом магазине и сравниваем их.

program ogur;

var

a,b,c,d,m1,m2:real;

begin

write(’Введите массу и к-во огурцов из 1 магазина ’);

readln(a,b); m1:=a/b;

write(’Введите массу и к-во огурцов из 2 магазина ’);

readln(c,d); m2:=c/d;

if m1>m2 then

writeln(’В первом магазине – крупнее.’)

else

if m1<m2 then

writeln(’Во втором магазине – крупнее.’)

else

writeln(’Одинаковые’);

end.

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

Н

if a > b then

if x > 0 then

writeln(’***’)

else

writeln(’ooo’);

е забывайте также, что любой else относится к последнему незакрытому if. Напри­мер, в показанном справа фрагменте else стоит под первым if, но относится ко второму. Это может привести к ошибкам. Исправит положение только правильное использование пары команд begin и end (так называемых «операторных скобок»), как показано во втором фрагменте.

Р

if a > b then

begin

if x > 0 then

writeln(’***’);

end

else

writeln(’ooo’);

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

Вторая задача: Определить, является ли одно из двух введённых чисел делителем другого.

program deliteli;

var

a,b:integer;

begin

write(’Введите два целых числа: ’); readln(a,b);

if a=b then

writeln(’Числа равны’)

else

if (a mod b=0) then

writeln(a,’ делится на ’,b)

else

if (b mod a=0) then

writeln(b,’ делится на ’,a)

else

writeln(’Эти числа не делятся друг на друга’);

end.

Эта программа работает с ошибкой, если одно из введённых чисел равно 0 (деление на 0 запрещено). Измените программу, сделав в начале дополнительную проверку этого случая.