1. Понятие об условном операторе
Программы,
составленные исключительно из операторов
присваивания и ввода-вывода, могут иметь только
линейную структуру:
Рисунок 1. Блок-схема
линейного алгоритма
|
Между тем,
часто бывает нужно, чтобы какой-нибудь блок
программы выполнялся или не выполнялся в
зависимости от задаваемого условия. Для
подобного разветвления вычислительного
процесса служат условные операторы. В Паскале
имеется 2 формы условного оператора: полная и
сокращенная.
| Рисунок 2. Блок-схема разветвленного алгоритма. |
2. Полный условный оператор
Блок-схему полного
условного оператора можно представить так:
полной формы.
| Рисунок 3. Блок-схема условного оператора |
В общем виде полный условный оператор
выглядит следующим образом:
IF
|
Логическое
выражение
|
THEN
|
Оператор1
|
ELSE
|
Оператор2
|
;
|
Эта
запись читается следующим образом: "если
логическое выражение справедливо, то
выполняется первый оператор, если ложно - второй
оператор". Операторы 1 и 2 могут быть простые
или составные. Точка с запятой перед словом ELSE не
ставится.
Примеры
полных условных операторов:
IF x<0 THEN i:=i+1
ELSE j:=j+1;
IF (x<y) AND (x<>0)
THEN begin x:=y/x;
y:=y+k end ELSE begin x:=x+0.01; y:=y-k end;
3. Сокращенный условный оператор
Блок-схему
сокращенного условного оператора можно
представить так:
| Рисунок 4. Блок-схема условного оператора сокращенной формы. |
В общем виде
сокращенный условный оператор выглядит
следующим образом:
IF
|
Логическое
выражение
|
THEN
|
Оператор
|
;
|
Эта
запись читается следующим образом: "если
логическое выражение справедливо, то
выполняется указанный оператор, в противном
случае никаких дополнительных изменений в
вычисления не приносится".
Примеры использования условного оператора в
сокращенной форме:
IF x>y THEN Max:=x;
IF x<>0 THEN begin a:=y/x; Writeln('A= ', a:6:2) end;
4. Создание сложных разветвлений алгоритма
Операторы, включаемые в условный оператор, в свою
очередь также могут быть условными:
IF
|
Логическое
выражение
|
THEN
|
Оператор 1
|
ELSE
|
Оператор 2
|
;
|
Использование таких условных операторов,
"вложенных" один в другой, требует
осторожности, чтобы не запутаться в их структуре.
Например, условный оператор
IF условие 1 THEN
IF условие 2 THEN оператор 1 ELSE оператор 2;
можно
истолковать двояко:
1) IF условие 1
THEN
begin IF условие 2
THEN оператор 1 end
ELSE оператор 2;
2) IF условие 1
THEN
begin IF условие 2 THEN оператор 1 ELSE оператор 2 end;
По
правилам языка Паскаль имеет место 2-я трактовка,
т.е. считается, что каждое слово ELSE соответствует
первому предшествующему ему слову THEN. Во
избежание ошибок рекомендуется четко выделять
желаемую форму условного оператора с помощью
операторных скобок begin ... end :
- IF j<>0 THEN
- begin IF x<0 THEN x:=x-1 end
- ELSE
- begin IF x<y THEN x:=x+0.5 ELSE y:=y+0.5 end;
Приведем пример программы, использующей
условный оператор.
|
Комментариев нет:
Отправить комментарий