Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
202106_C4466_otvety_k_gosekzamenu_po_programmir....doc
Скачиваний:
2
Добавлен:
15.04.2019
Размер:
146.94 Кб
Скачать
  1. Условный оператор, оператор выбора и безусловного перехода в turbo- pascal 7.0

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор - это средство ветвления вычислительного процесса.

Структура условного оператора имеет следующий вид:

IF <условие> THEN <оператор1> ELSE <оператор2>;

где IF, THEN, ELSE - зарезервированные слова (если, то, иначе); <условие> - произвольное выражение логического типа; <оператор1>, <оператор2> - любые операторы языка Турбо Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>.

Например:

var

х, у, max: Integer;

begin

.......

if x > max then

у := max else

y := x;

При выполнении этого фрагмента переменная Y получит значение переменной X, если только это значение не превышает МАХ, в противном случае Y станет равно МАХ.

Часть ELSE <оператор2> условного оператора может быть опущена. Тогда при значении TRUE условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается:

var

х, у, max: Integer; 

begin

.......

if x > max then

max := x; 

Y := x;

В этом примере переменная Y всегда будет иметь значение переменной X, а в МАХ запоминается максимальное значение X.

Поскольку любой из операторов <оператор1> и <оператор2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <оператор2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора.

Оператор выбора

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

В общем случае оператор имеет вид:

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

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

.

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

END;

где CASE – выбор OF – из END – конец

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

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

Список меток – список разделенных запятыми значений выражения селектора

или одного его значения.

Эти константы должны иметь тот же тип, что и селектор, и называются метками варианта.

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

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

В наше время широко используют структурное программирование, при котором операторы программы выполняются последовательно друг за другом сверху вниз. Однако, бывает случаи, когда есть смысл изменить порядок, например, выход из программы при делении на 0 с выводом сообщения об этом. Для этого существует оператор безусловного перехода GO TO.

GO to_метка;

Действие: обеспечивается переход на оператора с указанной меткой. В качестве метки используют цифры от 1 до 9999, а также буквы.

Правила использования:

1)все метки д.б. описаны в разделе меток:

label метка;

label метка1 метка2, …;

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

3)Рекомендуют применять операторы перехода только вниз (вперед) по тексту

4)Рекомендуемое расстояние между меткой и оператором перехода на нее делать не более 1 страницы текста или высоты экрана дисплея

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

Пример: выйти из пр-мы, если аргумент принял 0-ое значение (может быть деление на 0), и выдать сообщение об этом.

Label 1,2;

………

If (z=0) then GO TO 1;

Else begin y:=a/z; GO TO 2;

End;

……….

1: writeln(‘деление на 0’);

2: end.