Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПАСКАЛЬ_лекции.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
399.87 Кб
Скачать
  1. Оператор варианта.

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

CASE <селектор> OF

<список меток 1>: <оператор 1 >;

<список меток 2>: <оператор 2 >;

…………………………………………….

<список меток N>: <оператор N >;

END;

Где CASE (выбор), OF(из), END(конец) – служебные слова;

Селектор – выражение любого скалярного типа, кроме вещественного;

Оператор – любой оператор языка, в том числе и составной;

Список меток – список разделенных запятыми значений выражения селектор или одно его значение. Эти константы, следовательно, должны иметь тот же тип, что и селектор, и называются они метками варианта. Метка варианта – не обычная метка: это не обязательно целое число, она не описывается в разделе LABEL, на нее нельзя ссылаться в операторе GOTO.

Оператор варианта выбирает для исполнения тот оператор, одна из меток которого равна текущему значению выражения селектор. По окончании выполнения выбранного оператора управление передается в конец оператора CASE.

Метки полей не должны пересекаться. Если ни одна метка не найдена, то управление передается за оператор END.

Можно использовать следующую конструкцию:

CASE I OF

1 : <оператор 1>;

2 : <оператор 2>;

ELSE <оператор 3>; END;

Рассмотрим оператор на примере:

CASE NOMER OF

0 : y: =G;

1..3 : y: =G*X;

6,7,8 : y: =G*sqrt (abs (x));

9..11 : y: =G*exp (x)+H;

12 : y: =G*sqr (sin (x)+H);

END;

В зависимости от значения селектора NOMER значение функции У вычисляется по одной из перечисленных формул. Схематическое представление оператора CASE – структура отбора, представлена для данного примера на рис.4.

Рис. 4

Метка может быть константой, диапазоном констант и списком:

0 и 12 – константа;

1..3 и 9..11 – диапазон констант;

6,7,8 – список констант.

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

Пример: Найдем остаток от деления значения целого выражения С=К*(А+В) на 4 и выведем сообщение о величине остатка. Если остаток равен 0, то значение переменной С оставим без изменения, если 1 или 3 – уменьшим на величину остатка, если 2 – увеличим на величину остатка. Новое значение С так же выведем на печать (оно делится на 4 нацело).

Программа решения имеет вид

{ОПРЕДЕЛЕНИЕ ОСТАТКА}

PROGRAM OSTATOK;

CONST

DEL=4;

VAR A, B, C, K: INTEGER;

OST: 0..3;

BEGIN {OSTATOK}

READ (A, B, K);

WRITELN (‘A=’, A,’B=‘, B,’K=’, K);

C: =K*(A+B);

OST: =C MOD DEL;

CASE OST OF

0: WRITELN (‘ОСТАТОК 0’);

2: BEGIN

WRITELN (‘ОСТАТОК 2’);

C: =C+OST

END;

1,3: BEGIN

WRITELN (‘ОСТАТОК 1,3’);

C: =C-OST

END;

END {CASE}

END.

Введены дополнительные обозначения: константа DEL – делитель, равный 4, OST – величина остатка, описанная как переменная ограниченного целого типа с диапазоном от 0 до 3.

Далее составной оператор или операторные скобки с комментарием {остаток}, вводятся переменные А,В,К и выводятся. Вычисляется переменная С и OST от деления С на DEL. По оператору варианта происходит выбор остатка, если OST =0, то выводится результат – остаток 0, если OST=2, то новые операторные скобки, выводится остаток 2 и величина С увеличивается на величину OST, OST=1 или 3 – новые операторные скобки, вKЀводится остаток 1, 3 и величина С уменьшается на величину OST.

Оператор безусловного перехода

Общий вид оператора:

GOTO <метка>

где GOTO (идти к) – служебное слово; <метка> - целое число без знака, определяемое в разделе LABEL как метка оператора. Оператор GOTO производит передачу управления к оператору, помеченному указанной меткой.

Применение оператора безусловного перехода в языке Паскаль является необязательным и нежелательным, так как присутствие этого оператора в программе нарушает ее структурную целостность и наглядность, такую программу становится трудно читать, отлаживать и модифицировать. Используют оператор GOTO лишь в исключительных случаях, например для выхода из структурного (составного) оператора при возникновении особой ситуации в программе.