Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория.pdf
Скачиваний:
465
Добавлен:
11.05.2015
Размер:
1.15 Mб
Скачать

3)Begin

A := Sin(X);

Begin I := 0; J :=0 End

End

Здесь составной оператор содержит два оператора: основной и составной

всоставе составного.

7.2.Программирование линейных и разветвляющихся структур алгоритмов

Линейная программа – это программа, в которой операторы выполняются в том порядке, в котором они записаны.

Разветвляющаяся программа – это программа, состоящая из линейных участков и точек ветвления, в которых производится выбор того или иного линейного участка. В разветвляющихся программах порядок выполнения операторов может не совпадать с порядком их записи в программе. Для управления порядком выполнения операторов служат операторы перехода и выбирающие операторы.

7.2.1. Оператор перехода Goto

Его еще называют оператором безусловного перехода.

Данный оператор служит для безусловной передачи управления помеченному оператору.

Формат оператора Goto иллюстрирует рисунок 7.2.

<Оператор_Goto> ::=

Goto <Метка>

Рисунок 7.2 – Синтаксическая диаграмма оператора Goto

142

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

Goto:

1)с помощью Goto нельзя переходить внутрь производных операторов, не содержащих данный оператор Goto (составного оператора, операторов For, Repeat, While, If, Case, With);

2)с помощью оператора Goto запрещен переход из одной альтернативы в другую в выбирающих операторах (If, Case);

3)с помощью оператора Goto нельзя входить в подпрограмму или выходить из нее.

Пример 7.2.

Пример некоторой абстрактной программы, использующей оператор

Goto.

--------------------------------

Label

L1, L2, L3, L4;

--------------------------------

Begin

 

Goto L3;

{неправильно, переход внутрь составного

Begin

оператора}

 

L3: Goto L4;

{правильно}

Goto L3

{правильно}

End;

 

L4: If A > B Then

 

L1: Goto L2

{неправильно, переход между альтернативами If}

Else

 

L2: Goto L1

{неправильно, переход между альтернативами If}

End;

--------------------------------

Наличие оператора Goto делает программу ненаглядной, трудночитаемой, трудноотлаживаемой. Программа с Goto не является структурированной. Желательно использовать операторы Goto минимально, а лучше вообще не использовать.

143

7.2.2. Условный оператор If

Оператор If является производным оператором. Относится к группе выбирающих операторов. Используется в разветвляющихся программах для выбора того или иного участка вычислений в зависимости от выполнения некоторого условия. Поэтому его еще называют оператором условного перехода.

Формат оператора If представляет рисунок 7.3.

<Оператор_If> ::=

If <Логическое_выражение> Then

<Оператор_1>

Else <Оператор_2>

Рисунок 7.3 – Синтаксическая диаграмма оператора If

Здесь в переводе с английского: If – если, Then – то, Else – иначе. Смысл оператора: если логическое выражение истинно (принимает значение True), то выполняется <Оператор_1>. В противном случае выполняется <Оператор_2>.

После выполнения любого из <Операторов_1 или_2> следующим выполняется оператор, записанный за оператором If.

В операторе If после слов Then и Else можно записать только один оператор. Если необходимо записать группу операторов, используют операторные скобки Begin End, т.е. составной оператор.

Пример 7.3.

Вычислить

sin(x), если 0 ≤ x ≤ 1;

Z =

5x + 3, иначе.

Решение:

If (X >= 0) And (X <= 1)

Then

144

Z := sin(X)

Else

Z := 5 * X + 3;

Writeln (Z);

Независимо от того, выполняется ветвь Then или Else, следующим в примере 7.3 будет выполняться оператор Writeln.

Следующий выполняемый оператор может быть указан и в самом операторе If с помощью оператора Goto.

Пример 7.4.

Указание в операторе If следующего выполняемого оператора.

If X * 2 + Y * 2 > sin(Z)

Then Goto M1

Else Goto M2;

Однако следует напомнить, что использование оператора Goto нежелательно.

Конструкция Else <Оператор_2> в операторе If необязательна (см. рисунок 7.3). Это соответствует алгоритму: если выражение истинно, выполняется<Оператор_1>, в противном случае следующий оператор.

Конструкция оператора If без Else называется сокращенной формой оператора If, конструкция с Else – полной формой.

Возможно использование вложенного оператора If, т.е. оператор, записанный после Then или Else, также может быть условным.

Пример 7.5.

Вычислить:

0, если x = 0; Z = 5x, если x > 0;

x2, если x < 0.

Решение:

If X = 0 Then Z := 0

Else

145

If X > 0 Then Z := 5 * X

Else Z := X * X;

В прмере 7.5 используется две полных формы оператора If.

Если при записи вложенного оператора If используется его сокращенная форма, то считается, что служебное слово Else относится к последнему оператору If.

Пример 7.6.

Использование сокращенной формы оператора If во вложенном операторе.

If A <> B Then If C <> D Then E := False

Else E := True;

В данном примере служебное слово Else относится к последнему оператору If. Таким образом, эта конструкция эквивалентна следующей записи:

If A <> B Then Begin

If C <> D Then E := False

Else E := True

End;

Для того чтобы избежать ошибок использования сокращенной формы во вложенном операторе If, рекомендуется выделять нужную форму оператора If с помощью операторных скобок Begin End.

Пример 7.7.

Как противоположность примеру 7.6.

If A <> B Then

Begin

If C <> D

Then E := False

End

Else

E := True;

146

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