Алгоритмы с ветвлением. Логические выражения
ПОНЯТЬ
При решении задач очень часто выбор, какое действие выполнить следующим, зависит от значений исходных данных или промежуточных результатов. Для реализации возможности выбора в Pascal существуют два основных оператора: условный оператор и оператор выбора.
Условный оператор может быть полным и неполным.
Основные правила:
Алгоритмическая конструкция | Вид условного оператора в Pascal |
 | if условие then оператор1; |
 | if условие then else оператор1; if not (условие) then оператор1; |
  | if условие then оператор1 else оператор2; |
 | if условие then begin оператор1; оператор2; оператор3; end else begin оператор4; оператор5; end; |
Условие - это переменная или выражение логического типа. Иногда его называют условным выражением или логическим выражением. Оно может включать в себя переменные, константы, арифметические выражения, связвнные между собой операциями отношений и логическими операциями. Если используются логические операции (not, and, or, xor), то входящие в него операции отношения заключаются в круглые скобки.
Примеры записи условий на языке Pascal.
Условие | Запись на Pascal |
X ≠Y | X Y |
5 | (X 5) and (X |
X Y и Х – чётное | (X Y) and (X mod 2 =0) |
X (-∞; 5) (20; ∞) иначе XX20 | (X 20) |
X (-5; 0) (10; 20) | (X -5) and (X 10) and (X |
Х кратно 3 и 5 | (X mod 3 =0) and (X mod 5 =0) |
Продемонстрируем особенности программирования алгоритмов с ветвлением на примере решения квадратного уравнения.
Постановка задачи: решить уравнение ax2+bx+c=0 для произвольных значений a, b, c.
Для алгоритмизации целесообразно выбрать метод решения с помощью дискриминанта (D). В этом случае алгоритм можно охарактеризовать следующим образом:
исходными данными являются коэффициенты а, b, c. Их возможные значения – множество действительных чисел, но коэффициент при х2 не должен равняться нулю;
совокупность возможных результатов: сообщение, что алгоритм неприменим (если а=0), один корень (если D=0), два корня (если D0) или сообщение, что решения нет (если D
промежуточным результатом является значение дискриминанта;
правило начала заключается во вводе значений коэффициентов уравнения и проверке, что a 0;
правила непосредственной обработки данных – соответствующие формулы математики;
правило окончания – получение одного из возможных результатов;
правило извлечения (сообщения) результата - вывод полученного результата на экран (возможно вывести его в файл или использовать для решения другой задачи).
Блок-схема алгоритма решения квадратного уравнения.

Программа на языке Pascal.
var a, b, c, d, x1, x2 : real;
begin
write ('Введите значения коэффициентов a, b, c:'); readln(a, b, c);
if a=0 then writeln('Для а=0 применение алгоритма невозможно.')
else begin
d:=b*b-4*a*c;
if dРешения нет');
if d=0 then begin x1:= -b/2/a; writeln('x=',x1:6:2); end;
if d0 then begin
x1:= (-b+sqrt(d))/2/a; x1:= (-b+sqrt(d))/2/a;
writeln ('x1=',x1:6:2, ' x2=',x2:6:2);
end;
end;
end.
Оператор выбора целесообразно использовать, когда в зависимости от разных значений одной и той же переменной (выражения) требуется выполнять разные действия. Важное ограничение: переменная или выражение, по значению которых осуществляется выбор (выражение-селектор) должны быть дискретного типа, то есть целого, символьного или логического.
| |
       | Case x of a : оператор1; b..c : оператор2; d, e : оператор3 else оператор 4; end; |
Продемонстрируем применение оператора выбора на примере перевода римских цифр в десятичные числа.
Постановка задачи: от пользователя вводится символ, если это римская цифра, то вывести на экран её десятичный эквивалент, иначе сообщить, что это не цифра.
Программа
var R : char; A : integer;
begin
write('Введите римскую цифру:'); readln(R); A := 0;
case R of
‘I' : A := 1;
'V' : A := 5;
'X' : A := 10;
'L' : A := 50;
'C' : A := 100;
'D' : A := 500;
'M' : A := 1000
else write (R ‘ - это не римская цифра’);
end;
if A 0 then write (R, ‘ - это римская цифра. Соответствует числу ’ , A);
end.
ЗНАТЬ
Формат неполного условного оператора:
if условие then оператор;
Формат полного условного оператора:
if условие then begin оператор1;
оператор2;
end
else begin оператор1;
оператор2;
end;
Условие – переменная или выражение логического типа.
Правила:
перед else точка с запятой не ставится;
если в условии есть логические операции (not, and, or, xor), то операции отношения заключаются в круглые скобки;
после then и else может стоять только один оператор (простой или составной).
Формат оператора выбора:
Case x of
значение1 : оператор1;
значение2 .. значение3 : оператор2;
значение4, значение5 : оператор3
else оператор 4;
end;
Правила:
выражение-селектор может быть только дискретного типа;
значения выражения-селектора могут задаваться одиночными константами, списком констант (через запятую) или интервалом (через две точки);
перед else точка с запятой не ставится.
УМЕТЬ
Найдите ошибки в программе
Считается, что вес, рост и возраст человека должны находиться в соотношении Вес ≈ Рост - 110 + 0,1 * Возраст.
Знак «≈» означает, что допустимы отклонения в 5-7 процентов от точного результата. Определите, Ваш вес меньше нормы, в норме или выше нормы.
ЗАДАЧА
От пользователя вводится какой-либо год ХХ века. Определите, мирным ли был этот год для России, а если нет, то какая война была в этом году.
ЗАДАЧА
От пользователя вводятся три имени. Расположить их в алфавитном порядке и вывести на экран.