write('Введите число '); readln(n);
ifn>0
then
writeln ('Число положительное')
else
ifn=0
then
writeln('Число ноль')
else
writeln ('Число отрицательное')
end.
Обратите внимание, что после вложенный оператор ifможно не заключать в операторные скобки begin... end, поскольку оператор ifсинтаксически рассматривается как один оператор.
Если имеются вложенные операторы if, один из которых неполный, например:
ifn>0
then
ifn=0
then
writeln('У вас ноль')
else
writeln ('Число положительное')
возникает неоднозначность: к какому ifотносится else. Принято, что elseотносится к ближайшему if, т.е. таки образом, как отражает запись данного примера. Если следовать правилу, помещая, по возможности, вложенные операторы в ветвь else, то таких ситуаций не будет.
- 18 -
Логические выражения. В операторе ifиспользуются логические выражения, имеющие тип boolean [9] Назван в честь Дж. Буля – основателя математической логики.
. Про такие выражения можно сказать только являются ли они истинными (true) или ложными (false). Простейший случай логического выражения – логическая переменная .
Пример: var b : boolean; . . . . . .
b :=true; . . . . . .
ifb thenwriteln ('Все в порядке');
Такие логические переменные называют флагами, иногда их использование оказывается очень эффективным решением.
Операции сравнения. Существует шесть бинарных [10] Бинарные операции – имеющие два операнда, на которые действует эта операция.
операций сравнения, у которых операнды могут быть самых разных типов (целые, вещественные, символьные строковые).
< меньше <= меньше или равно > больше >= больше или равно = равно <> не равно
Эти операции весьма часто используются для построения различных логических условий.
Например: ifa>0 thena:=1 elsea:=-1. С точки зрения языка Pascal a>0 представляет собой логическое выражение (можно написать даже так: b :=a>0, если b – переменная булевского типа).
Логические операции. Для составления сложных логических выражений могут использоваться две бинарные логические операции AND, OR и одна унарная [11] Унарная операция – имеющая только один операнд.
NOT .
and – результат операции истинен тогда и только тогда, когда истины оба операнда.
or – результат операции истинен тогда, когда истинен хотя бы один операнд.
not – имеет результат противоположный операнду.
Примеры операторов ifсо сложными условиями:
if(x>=0) and (x<=1) thenwriteln ('X находится в диапазоне от 0 до 1');
ifnot ((x>=0) and (x<=1)) thenwriteln('X вне диапазона 0-1');
if(x<0) or (x>1) thenwriteln('X вне диапазона 0-1');
Обратите внимание на скобки. Операции сравнения имеют самый низший приоритет, поэтому заключены в скобки. Приоритет операции and соответствует операции умножения, or – сложению, not – унарному минусу (т.е. самый высокий).
- 19 -
Задание №5
1. Вычислите логические выражения: not true and not false not true or not false not (true or false) Y not (true and false) a 2. Напишите условие нахождения точки a в первом квадранте системы координат, считая ее координаты заданными X переменными x, y .
3. Напишите программу, выводящую слова «зачет», если введено число 3, 4 или 5 и «незачет», если введено число 1 или 2.
4. Напишите программу, выводящую текст «плохо», «удовлетворительно», «хорошо» или «отлично», если введено число 2, 3, 4 или 5 соответственно.
5. Используя операцию определения остатка от деления (mod, стр. 5), модернизируйте программу Concentric (стр. 16), таким образом чтобы каждая 3-я окружность выводилась красным цветом, а остальные были синими.
Вложенные циклы
Довольно часто возникает ситуация, при которой в теле одного цикла встречается другой оператор цикла. Такие циклы называют вложенными циклами. Приведем простой пример.
Выведем на экран таблицу умножения целых чисел от 1 до 10.
Здесь внутри тела внешнего цикла по переменной i, находится вложенный цикл по переменной j, который выводит в операторе write (не writeln!) произведение i*j, выделяя 4 позиции для результата. Далее идет оператор writeln, который переводит курсор на новую строку. Внешний цикл повторяет 10 раз эту операцию, формируя, таким образом, 10 строк таблицы, которая приведена справа.
Читать дальше