Лекция
АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ.
Операторы выбора.
Мы познакомились с командой присваивания, командами ввода и вывода информации. Это так называемые простые операторы. Для того, чтобы было удобно записывать алгоритмы, используются алгоритмические конструкции. К таким алгоритмическим конструкциям относятся:
- составной оператор;
- условные операторы;
- циклы.
1. Составной оператор
Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в так называемые операторные скобки BEGIN и END.
BEGIN
<оператор 1>;
<оператор 2>;
...
<оператор n>
END;
Составной оператор используется в тех случаях, когда в соответствии с правилами построения конструкций языка можно использовать один оператор, а выполнить требуется несколько действий.
Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Однако, перед ключевым словом
END точку с запятой можно не ставить.
Использование сотавного оператора будет продемонстрировано ниже.
2. Оператор выбора IF.
Очень часто возникают ситуации, при которых необходимо сначала проверить некоторое условие, а затем, в зависимости от результатов проверки, выполнить какие-то действия.
Такой алгоритм в общем виде можно записать так:
Если <условие> то <действие>; (пример 1)
или
Если <условие> то <действие 1>
иначе <действие 2>; (пример 2)
Такая алгоритмическая конструкция называется развилкой и в языке Pascal записывается следующим образом:
IF <условие>
ТHEN
<оператор 1>
ELSE
<оператор 2>
На месте команд могут быть записаны простые операторы или составные.Условия записываются, как правило, в виде логических выражений, построенных с помощью следующих отношений:
> больше
>= не меньше
< меньше
<= не больше
<> не равно
= равно
В качестве примера рассмотрим программу, которая определяет максимальное из двух чисел:
PROGRAM MAXIMUM;
VAR X,Y: INTEGER;
BEGIN
WRITE('Введите два целых числа: ');
READLN(X,Y);
WRITE('Максимальное из двух чисел равно ');
IF X>Y
THEN
WRITE(X)
ELSE
WRITE(Y)
END.
Обратите внимание, что ключевые слова THEN и ELSE отделяются от следующих за ними операторов пробелами ( если вы поставите точку с запятой, то это будет ошибкой!).
Если в команде ветвления после слов THEN или ELSE требуется выполнить не одну, а несколько команд, то они заключаются в операторные скобки BEGIN - END.
Например:
IF D<>0
THEN
BEGIN
X1:=((-B+sqrt(D))/(2*A);
X1:=((-B-sqrt(D))/(2*A);
END
ELSE
writeln('действительных корней нет');
Допустима и сокращенная форма команды ветвления:
IF <условие> THEN <оператор>;
Например: IF D<0 THEN WRITE('Делить на 0 нельзя');
3. Сложные условия
3.1. Что такое True и False
Все приведенные выше примеры содержат ПРОСТЫЕ условия. Под
УСЛОВИЕМ мы будем понимать какое-либо выражение, о котором (после определения всех значений входящих в него переменных) можно сказать, что оно либо ИСТИННО либо . Например:
If a>b then ... - здесь условие a>b является True только тогда, когда значение переменной a больше значения переменной b.
ЭТО ЖЕ условие можно записать по другому: a-b>0 или b<a или
b-a<0. И во всех приведенных случаях выражение является истинным
(True) тогда и только тогда, когда значение переменной a больше значения переменной b.
Выражения, значения которых могут равняться True или False, принято называть ЛОГИЧЕСКИМИ. Как правило, в логических выражениях всегда присутствует знаки сравнения:
> - больше = - равно
>= - больше или равно <> - не равно
< - меньше
<= - меньше или равно
Попробуйте сами определить, когда приведенные ниже значения выражений являются True, а когда - False:
a=b a>=b a+1=b-1 s*s<=121 abs(x-x0)<e
3.2. Логический тип данных
Учитывая, что в языке Pascal имеются выражение, принимающие конкретные значения (True и False), был введен специальный тип данных. Этот тип данных принято называть ЛОГИЧЕСКИМ типом данных. Переменные данного типа описываются в блоке описания VAR с помощью ключевого слова BOOLEAN. Например:
var X: integer;
f: boolean;
...
Значением переменной f может быть либо True, либо False. True и
False известны компилятору языка и Вы можете использовать их явно в программе. Например:
...
f:=True;
if f then WriteLn('А значение-то ИСТИННО!!!');
...
Как еще можно использовать переменные логического типа? Учитывая, что они принимают точно такие же значения, как и ЛОГИЧЕСКИЕ
выражения, их можно использовать ВМЕСТО этих выражений (как предложено в вышеприведенном примере). Возможные варианты:
...
Write('Сколько Вам лет'); ReadLn(Year);
Write('А сколько лет Вашему другу'); ReadLn(Year_Friend);
f:=(Year+5<Year_Friend);
if f then WriteLn('Ничего себе, Ваш друг старше Вас более чем на 5 лет ?!');
...
Достаточно часто встречаются ситуации, когда одно и тоже условие используется в программе более одного раза. В этом случае приведенный способ использования ЛОГИЧЕСКОЙ переменной позволит Вам, во-первых, сократить текст программы, а, во-вторых, облегчит ее модификацию. Представляете, если одно и то же условие (логическое выражение) встречается в Вашей программе 10 раз, а потом вдруг выяснилось, что там ошибка...
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.