Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_lectures_small.doc
Скачиваний:
13
Добавлен:
23.03.2015
Размер:
339.46 Кб
Скачать
    1. Условные операторы

      1. Оператор If

Формат оператора:

<оператор If>::="If" <условие> "then" <оператор> ["else" <оператор>].

Здесь условие – это выражение, результат которого имеет тип Boolean. При выполнении оператора сначала вычисляется выражение условия. Если его значение True, выполняется оператор после слова then. Если False, выполняется оператор после слова else, либо ничего не выполняется, если часть условного оператора со словом else отсутствует.

Если в операторе If после слова then или после слова else нужно поместить более одного оператора, следует использовать составной оператор. Перед словом else нельзя ставить точку с запятой, т.к. слово else – продолжение оператора If, а не новый оператор.

При наличии вложенных операторов If действует правило: слово else относится к ближайшему слева оператору If, для которого нет слова, находящегося левее, чем рассматриваемое слово else.

Пример:

If A then

If B then

If C than D:=1

else D:=2

else D:=3;

Это выражение эквивалентно следующему:

If A then

begin

If B then

begin

If C than D:=1

else D:=2

end;

else D:=3;

end;

То есть, D получает значения в соответствии со следующей таблицей:

Значение A

Значение B

Значение C

Значение D

True

True

True

1

True

True

False

2

True

False

любое

3

False

любое

любое

не меняется

Порядок выполнения вложенных операторов If можно изменить, используя составные операторы. Например:

If A then

begin

If B then

begin

If C than

D:=1

else D:=2

end;

end

else D:=3;

Здесь D получает значения в соответствии со следующей таблицей:

Значение A

Значение B

Значение C

Значение D

True

True

True

1

True

True

False

2

True

False

любое

не меняется

False

любое

любое

3

Оператор If реализует в Паскале базовую алгоритмическую структуру ветвления.

      1. Оператор Case

Формат оператора:

<оператор Case>::= "Case" <выражение> of <вариант> {";" <вариант>} "end".

<вариант>::= (<константа>|<диапазон>) {"," (<константа>|<диапазон>)} ":" <оператор>.

Выражение должно быть ординального типа, константы должны быть того же типа, что и выражение. Константы не должны повторяться и диапазоны констант не должны перекрываться ни в одном из вариантов в пределах одного оператора Case. Определение диапазона дано в соответствующем пункте ранее.

При выполнении оператора вначале вычисляется выражение, затем в вариантах отыскивается константа, равная значению выражения, или диапазон, в который входит значение выражения. Если такая константа или диапазон найдены, выполняется оператор после двоеточия в соответствующем варианте, затем происходит выход из оператора Case, т.е., операторы в вариантах, следующих за найденным вариантом, не выполняются.

Если ни в одной из альтернатив не найдено значение, соответствующее значению выражения, в стандартном Паскале фиксируется ошибка. В большинстве реализаций такая ситуация ошибкой не считается – в этом случае происходит выход из оператора Case без выполнения каких-либо действий.

Оператор в варианте может быть любым, в том числе, это может быть еще один оператор Case. Если в варианте нужно выполнить несколько операторов, их нужно поместить в составном операторе.

Во многих реализациях, в том числе, в Turbo Pascal, синтаксис оператора расширен следующим образом:

<оператор Case>::= "Case" <выражение> of <вариант> {";" <вариант>} ["else" <оператор>] "end".

То есть, после слова else можно добавить оператор, который будет выполнен, если ни в одном из вариантов не найдено значение, соответствующее значению выражения.

Пример:

............

Var d:0..20; c:'A'..'D';

i,j,k:integer;

............

Begin

............

d:=4; c:=b;

............

Case d div 2 of

0: i:=0;

1..4: begin i:=1; j:=k end;

2: Case c of

'A': i:=2;

'B': i:=3;

'C','D': i:=5

end

end;

............

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]