Структурные операторы
Структурные операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. Все структурные операторы подразделяются на 3 группы: составной, условные и повтора.
Составной оператор
Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой и ограниченную операторными скобками Begin и End. Составной оператор воспринимается как единое целое и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора.
Формат оператора:
Begin
Оператор 1 ;
…
Оператор N ;
End ;
Условные операторы
Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий. В Паскале используются два условных оператора: If и Case.
Оператор условия If может принимать одну из форм:
1. If условие Then оператор1 {полная условная конструкция}
Else оператор 2 ;
2. If условие Then оператор; {неполная условная конструкция}
В первом случае говорят о полном операторе If, а во втором — о неполном операторе If. Условие — это выражение булевского типа. Оно может быть простым или сложным. Сложные условия образуются с помощью логических операций. При записи условия могут использоваться все возможные операции отношения.
В первом случае если условие истинно, то выполняется оператор1, если условие ложно — оператор 2. Во втором случае если условие истинно, выполняется оператор, если ложно — оператор, следующий за оператором If.
Оператор If может входить в состав другого оператора If. В этом случае говорят о вложенности операторов:
If условие Then
If условие Then оператор1
Else оператор2;
При вложенности операторов каждое Else соответствует тому Then, которое непосредственно ему предшествует.
Пример:
If ( ( A>B ) And ( C<D ) )
Then
If ( Z >= X ) Then Writeln ( ‘Норма’)
Else Writeln ( ‘Превышение нормы’ )
Else
WriteLn ( ‘Недобор’ );
Оператор выбора Case является обобщением оператора If и позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором, и списка параметров, каждому их которых предшествует список констант выбора (список может состоять и из одной константы). Как и в операторе If, здесь может присутствовать слово Else, имеющее тот же смысл. Формат оператора:
Сase выражение-селектор of
Список 1 : оператор1 ;
Список 2 : оператор2 ;
...
Список N : операторN
Else оператор
End ;
Оператор Сase передает управление тому оператору, с одним из значений списка которого совпало значение выражения-селектора. Если ни одно из значений списков не совпадает со значением селектора, то либо такой оператор Сase эквивалентен пустому оператору и затем выполняется оператор, следующий за словом Еnd, либо выполняется оператор, следующий за словом Else.
Выражение-селектор может иметь любой скалярный тип. Список констант выбора состоит из произвольного числа значений или диапазонов, отделенных друг от друга запятыми.
Примеры:
Case X of {выражение-селектор целого типа}
1,2,3 : A := B + C ;
4 : A := B - C ;
5..9 : A := B*C
Else A := B/C
End ;
Case CH of {выражение-селектор литерного типа}
‘A’..’Z’ : WriteLn ( ‘Введена латинская буква’ ) ;
‘0’..’9’ : WriteLn ( ‘Введена цифра’ )
End ;
Операторы циклов
Цикл — это последовательность операторов, которая может выполняться более одного раза. Если количество повторов известно заранее, используется оператор for, если количество повторов неизвестно, применяются операторы repeat и while.
Оператор повтора for состоит из заголовка и тела цикла. Он может быть представлен в двух форматах:
1. for параметр_цикла := начальное_значение to конечное_значение do
оператор ;
2. for параметр_цикла := начальное_значение downto конечное_значение do
оператор ;
Тело цикла может быть простым или составным оператором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.
Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. При этом допустим любой скалярный тип, кроме вещественного. В цикле for … to значение параметра цикла увеличивается «на единицу», а в цикле for … downto значение параметра цикла уменьшается «на единицу». В операторе for не допускается изменение параметра цикла на величину, отличную «от единицы».
Пример: Найти сумму чисел в диапазоне от 0 до 100.
Program DemoFor ;
Var
I, Sum : integer ;
Begin
Sum := 0 ;
For i:=0 to 100 do
Sum := Sum + I ;
WriteLn ( ‘Сумма чисел равна ’, Sum ) ;
End .
Оператор повтора repeat состоит из заголовка (Repeat), тела и условия окончания (Until).
Формат оператора:
Repeat
оператор 1 ;
...
оператор n
Until условие ;
Условие — выражение логического типа. Операторы, заключенные между словами Repeat и Until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат равен False, тело цикла активизируется еще раз, если результат True — происходит выход из цикла.
Оператор repeat имеет три характерные особенности:
§ выполняется, по крайней мере, один раз;
§ тело цикла выполняется пока условие равно False;
§ в теле может находиться произвольно число операторов без операторных скобок Begin...End.
Пример: Найти сумму четных чисел в диапазоне от 0 до 100.
Program DemoRepeat ;
Var
I, Sum : integer ;
Begin
I := 2 ;
Sum := 0 ;
Repeat
Sum := Sum + I ;
I := I + 2
Until ( I>100 ) ;
WriteLn ( ‘Сумма четных чисел равна ’, Sum ) ;
End .
Оператор While аналогичен оператору Repeat, но проверка условия выполнения тела цикла производится в самом начале цикла.
Формат оператора:
While условие do оператор ;
Условие — выражение логического типа, тело цикла — простой или составной оператор. Перед каждым выполнением оператора вычисляется значение выражения условия. Если результат условия равен True, оператор выполняется и снова вычисляется выражение условия. Если результат равен False, происходит выход из цикла и переход к первому после while оператору. Если перед первым выполнением цикла значение выражения было False, оператор вообще не выполняется и происходит переход на следующий оператор.
Операторы For, While, Repeat могут быть вложенными, т.е. в теле цикла может быть другой оператор цикла.
При работе с операторами цикла можно использовать следующие процедуры:
Break — обеспечивает выход из операторов повторения до завершения работы цикла;
Continue — завершает очередной итерационный цикл операторов повторения.
Пример: Найти сумму четных чисел в диапазоне от 0 до 100.
Program DemoWhile ;
Var
I, Sum : integer ;
Begin
I := 2 ;
Sum := 0 ;
While I <= 100 do
Begin
Sum := Sum + I ;
I := I + 2
End;
WriteLn ( ‘Сумма четных чисел равна ’, Sum ) ;
End .