Простой и составной операторы



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Простой и составной операторы



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

Два последовательных оператора обязательно должны разделяться точкой с запятой “;”.

Примеры простых операторов:

a := 10; b := a*5; Write( a, b );

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

Составной оператор – это последовательность операторов, перед которой стоит слово BEGIN, а после – END. Слова BEGIN и END часто именую операторными скобками.

Пример составного оператора:

BEGIN
a := 10;
b :+ a*5;
Write( a, b )
END;

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

ВАЖНО: Составной оператор применяется в тех случаях, когда синтаксис языка Паскаль допускает использование только одного оператора, в то время как алгоритм требует задания некоторой последовательности действий. В Паскале все управляющие структуры (операторы) не различают простой и составной оператор: там где стоит простой оператор, можно поставить и составной.

Условный оператор IF

Условный оператор IF служит для организации процесса вычислений (изменения последовательности выполнения операторов) в зависимости от какого-либо логического условия.

Синтаксис оператора IF:

IFУсловиеTHENОператор1ELSEОператор2;

или

IFУсловиеTHENОператор;

Условие может быть представлено логической константой (FALSE – ложь, TRUE - истина), переменной логического типа (Boolean) или логическим выражением.

Если условие истинно, то выполняется оператор (простой или составной), следующий за словом THEN, в противном случае, когда условие ложно, будет выполняться оператор, следующий за словом ELSE. Альтернативная ветвь ELSE может отсутствовать, если в ней нет необходимости. В таком “усеченном” варианте, в случае, если условие оказывается ложным, ничего не происходит и выполняется оператор следующий за условным оператором IF.

Пример 1.

Пусть необходимо составить программу, вычисляющую значение функции:

VAR
x, y : real;
BEGIN
Write(‘Введите значение аргумента: ’); ReadLn(x);
IF x>0 THEN y := x
ELSE y := 0;
Write(‘Значение функции y = ’, y)
END.

Условные операторы могут быть вложенными друг в друга:

IF Условие THEN if ПодУсловие then ... else ...
ELSE ...;

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

При вложениях условных операторов самое главное – не запутаться в вариантах сочетаний условий (отчасти этому может помочь ступенчатая форма записи операторов). Всегда действует правило: альтернатива ELSE считается принадлежащей ближайшему условному оператору IF, не имеющему ветви ELSE. Например:

IF Условие1 THEN if Условие2 then Оператор_А
ELSE Оператор_Б;

По записи может сложиться впечатление, что Оператор_Б будет выполняться только при “невыполнении” Условия1. Но на самом деле он будет отнесен к Условию2 и выполнится только при выполнении Условия1 и невыполнении Условия2! Если необходимо, чтобы Оператор_Б выполнялся именно при невыполнении Условия1, то единственный выход таков: заключить вложенный (усеченный) оператор IF в операторные скобки begin…end:

IF Условие1 THEN begin
if Условие2 then Оператор_А
end
ELSE Оператор_Б;

В условии оператора IF может стоять достаточно сложное логическое выражение. О правилах построения логических выражений см. раздел “Логические выражения”.

Оператор варианта CASE

Оператор варианта необходим в тех случаях, когда в зависимости от значения какой-либо переменной нужно выполнить те или иные операторы (простые или составные). Если вариантов всего два, то можно обойтись и оператором IF. Но если их, например, десять? В этом случае оптимален оператор варианта CASE.

Синтаксис оператора CASE:

CASE УправляющаяПеременнаяИлиВыражение OF
НаборЗначений1 : Оператор1;
НаборЗначений2 : Оператор2;
НаборЗначений3 : Оператор3;
. . .
НаборЗначенийN : ОператорN
ELSE АльтернативныйОператор
END;

Между служебными словами CASE и OF должна стоять переменная или выражение (оно вычисляется при исполнении оператора CASE) целочисленного или любого порядкового типа. Набор значений – это конкретные значения управляющей переменной или выражения, при которых необходимо выполнить соответствующий оператор, игнорируя остальные варианты. Если в наборе несколько значений, то они разделяются между собой запятой.. Можно указывать диапазоны значений, например, 0..9 – все значения от нуля до девяти. Наборы значений и диапазоны можно комбинировать. Между набором значений и соответствующим ему оператором обязательно ставится символ “:”. Значения в каждом наборе должны быть уникальными, т.е. они могут появиться только в одном варианте. Пересечение наборов значений для разных вариантов является ошибкой, и она будет замечена компилятором.

Оператор (Оператор1, Оператор2, …) в конкретном варианте может быть как простым, так и составным.

Пример 1.

PROGRAM Example_CASE_1;
VAR A : integer;
BEGIN
Write(‘Введите оценку: ‘); Read(A);
CASE A OF
2 : Write(‘неудовлетворительно’);
3 : Write(‘удовлетворительно’);
4 : Write(‘хорошо’);
5 : Write(‘отлично’)
ELSE Write(‘Ошибка!’)
END;
END.

Здесь в зависимости от значения переменной А на экран выводится наименование оценки. Наличие варианта ELSE обеспечивает вывод сообщения об ошибке в случае, когда введено число вне интервала 2..5.

Пример 2.

PROGRAM Example_CASE_2;
VAR Hour : integer;
BEGIN
Read( Hour );
CASE Hour OF
0, 24 : Write(‘Полночь’);
1..4 : Write(‘Ночь’);
5..7 : Write(‘Раннее утро’);
8..11 : Write(‘Утро’);
12 : Write(‘Полдень’);
13..17 : Write(‘День’);
18..23 : Write(‘Вечер’)
ELSE Write(‘Введено число вне диапазона 0..24!’)
END;
END.



Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.170.171 (0.008 с.)