Оператор (инструкцию) if можно записать двумя способами:
• Вариант 1.
if Условие
then
begin
{ Эти инструкции выполняются, если Условие истинно }
end
else
begin
{ Эти инструкции выполняются, если Условие ложно }
end;
• Вариант 2.
if Условие
then
begin
{ Эти инструкции выполняются, если Условие истинно}
end;
В последнем случае говорят о сокращенной форме условного оператора.
Ключевые слова if, then, else обозначают "если", "то", "иначе" соответственно. Выполнение условного оператора начинается с вычисления условия. Если оно истинно (true, "да", 1), то выполняется оператор, стоящий после служебного слова then. Если условие ложно (false, "нет", 0), то выполняется оператор, стоящий после служебного слова е1sе. Часть оператора, стоящая после служебного слова е1sе, может отсутствовать. В этом случае при ложности проверяемого условия просто выполняется следующая по порядку за оператором условия инструкция.
Действие условного оператора можно пояснить с помощью блок-схем (рис. 3.1, а, б).
Рис. 3.1. Условные обозначения на схемах алгоритмов: а - ветвления и б - обхода
Например:
If а>b then writeln (' а больше b')
else writeln ('а меньше или равно b');
Или:
If (а>=0) аnd (а<10) then writeln ('однозначное число');
Один оператор if может входить в состав другого оператора if. В этом случае говорят о вложенности операторов.
• Вариант 1.
IF условие 1 THEN
IF условие 2 THEN оператор 1
ELSE оператор 2
ELSE оператор 3;
• Вариант 2.
IF условие 1 THEN оператор 1
ELSE IF условие 2 THEN оператор 2
ELSE оператор 3;
• Вариант 3.
IF условие 1 THEN
IF условие 2 THEN оператор 1
ELSE оператор 2;
Если проверяемые Условие1, Условие2... не влияют друг на друга, т. е. последовательность их вычисления безразлична, в тексте программы их рекомендуется располагать в определенном порядке. Условие, с наибольшей вероятностью принимающее значение true, должно стоять на первом месте, с меньшей вероятностью — на втором и т. д. Это ускорит выполнение программы.
Следует знать:
• при вложенности операторов каждое е1sе соответствует тому then, которое непосредственно ему предшествует (обратите внимание на пример в варианте 3);
• конструкций со степенью вложенности более 2—3 необходимо избегать из-за сложности их анализа при отладке программы;
• в условных операторах часто используют составной оператор begin … end. Если между begin и end находится только одна инструкция, слова begin и end лучше не писать;
• в условных операторах точка с запятой не ставится после then и перед else;
• самое простое логическое выражение — одна переменная логического типа, которая играет роль целого выражения;
• сложные логические выражения могут содержать несколько отношений и/или логических переменных, связанных операциями and, оr, nod (не забывайте заключать каждое отношение в скобки);
• с целью предупреждения ошибок (см. разд. 1.4) выполнения инструкцию if удобно использовать для соответствующей проверки (см. листинги 3.5, 3.10).
Листинг 3.4 содержит программу, которая проводит тест по таблице умножения. Формируются два случайных сомножителя, затем подсчитывается их произведение и сравнивается с тем значением, который ввел ученик.
Листинг 3.4. Тест по таблице умножения (вариант 1)
varЛистинг 3.5 содержит программу, которая вычисляет частное двух целых чисел. В связи с тем, что делить на ноль нельзя, организуем контроль ввода данных. Для контроля вводимых значений делителя используем оператор условного перехода if.
Листинг 3.5. Вычисление частного двух целых чисел
varЛистинг 3.6 содержит программу, которая проверяет на четность введенное число.
Листинг 3.6. Проверка числа на четность
var n: integer;Листинг 3.7 содержит программу, которая сравнивает возраст брата и сестры и выводит соответствующее сообщение.
Листинг 3.7. Сравнение возрастов (вариант 1)
var age1,age2: integer;Запись вложенных условных операторов — непростая задача и часто вызывает затруднения у начинающих программистов. В этом случае лучше составлять программу таким образом, чтобы она не содержала вложенных условных операторов. Например, изменим текст предыдущей программы так, чтобы он содержал сокращенные условные операторы, не вложенные один в другой (листинг 3.8).
Листинг 3.8. Сравнение возрастов (вариант № 2)
var age1,age2: integer;Тем не менее, во многих случаях применение вложенных условных операторов позволяет избежать сложных условий с использованием логических функций.
Листинг 3.9 содержит программу, которая проверяет, может ли существовать треугольник с заданными сторонами. Из геометрии известно, что сумма двух любых сторон должна быть больше третьей. Эта программа иллюстрирует использование сложного условия.
Листинг 3.9. Проверка существования треугольника с заданными сторонами
var a,b,c: real;Листинг 3.10 содержит программу решения квадратного уравнения с использованием сложных условий. Это пример, который иллюстрирует применение инструкции goto.
Листинг 3.10. Решение квадратного уравнения (вариант 1)
label lab1O1; предыдущая         меню        вверх         следующая