Разветвляющиеся алгоритмы

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

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

В логических выражениях используется операция сравнения: < (меньше), > (больше), <= (меньше или равно), >= (больше или равно), = (равно), <> (не равно). Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений). Для связи используются AND и (или) OR.
Например:
(2+3) and (2+5) >= 6 – нет (ложно)

Алгоритм предполагает выполнение Действия 1, если записанное условие истинно (выполняется), и выполнение Действия 2, если условие ложно (не выполняется) – это полная развилка.

Полная развилка:

If условие then Действие 1 else Действие 2

Если в алгоритме отсутствует Действие 2, т.е. если записанное условие истинно, то выполняется Действие 1, а если условие ложно, то никаких действий не выполняется – это не полная развилка.

Неполная развилка:
If условие then Действие 1

 ПРИМЕР 1.

ПРИМЕР 2.

ПРИМЕР 3. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе – оставить без изменения.

Решение: Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.

1. Ввести число n
2. Если число n нечетное и меньше 16384, то n := n * 2 ((N mod 2) =1 and (n<16384))
3. Вывод n
4. Конец
Фрагмент программы на языке Pascal:
Write(‘Введите число N ’);
Readln(n);
If ((N mod 2) =1 and (n<16384)) then
n := n * 2
Writeln(‘Число N=’, n);
Рассмотренный пример иллюстрирует неполную развилку. Также следует отметить, здесь логическое выражение, являющееся условием, содержит 2 операнда.

ПРИМЕР 4. Ввести целое число. Вывести соответствующий ему символ ASCII-таблицы, либо сообщить, что такого символа нет (0-31 – управляющие коды, затем до 256 – печатаемые символы).

program ascii_symbol;
var i:word;
begin
write(‘Введите целое число: ‘);
readln(i);
if (i>31) and (i<256) then
writeln(‘Соответствующий символ — ‘, Chr(i))
else
writeln(‘Такого символа нет’);
readln
end.
Добавить комментарий