Сейчас уместно поговорить о стиле записи текста программы. Дело в том что в Паскале допустимы вложения одна в другую сложных конструкций, таких, как условные операторы или операторы цикла. В результате структура таких конструкций трудно читаема. Для того, чтобы облегчить читаемость текста, каждый программист может следовать определенным правилам записи, называемым стилем записи. Например, условный оператор можно записать в одном из следующих стилей:
if <�условие> then <�оператор1> else <�оператор2> ; {Стиль 1}
if <�условие> then <�оператор1> {Стиль 2}
else <�оператор2> ;
if <�условие> then {Стиль 3}
<�оператор1>
else <�оператор2> ;
if <�условие> {Стиль 4}
then <�оператор1>
else <�оператор2> ;
Первый стиль не пригоден, если THEN- и ELSE-конструкции длинные. Приведем пример условного оператора, содержащего составные операторы, записанного одним стилем:
if <�условие> then
begin
<�оператор1> ;
<�оператор2>
end
else
begin
<�оператор3> ;
<�оператор4>
end;
и другим стилем:
if <�условие>
then
begin
<�оператор1> ;
<�оператор2>
end
else
begin
<�оператор3> ;
<�оператор4>
end;
Каждый из стилей имеет свои достоинства и недостатки.
4.9.6. Оператор выбора.
Иногда в процессе выполнения алгоритма может потребоваться выбор не из двух, а из трех и более альтернатив. Например, одно действие нужно сделать, если некоторая величина x равна 1 или 2, другое, если она равна 3,4 или 5, и третье, если она равна 6. Во всех остальных случаях нужно выполнить четвертое действие. Это можно записать с помощью нескольких вложенных условных операторов (обратите внимание на стиль записи):
if (x=1) or (x=2)
then <�оператор1>
else
if (x=3) or (x=4)) or (x=5)
then <�оператор2>
else
if (x=6)
then <�оператор3>
else <�оператор4> ;
Для такой хотя и сложной, но стандартной конструкции более удобно использовать следующий стиль записи:
if (x=1) or (x=2) then <�оператор1>
else if (x=3) or (x=4) or (x=5) then <�оператор2>
else if (x=6) then <�оператор3>
else <�оператор4> ;
Но кроме того, в Паскале для описания таких ситуаций существует специальный оператор, называемый оператором выбора. С помощью этого оператора тот же кусок программы можно переписать следующим образом:
case x of
1,2: <�оператор1> ;
3,4,5: <�оператор2> ;
6: <�оператор3> ;
else <�оператор4>
end
Вместо списка 3,4,5 можно указать диапазон 3..5. В общем случае формат оператора выбора следующий:
case <�выражение> of
<�список значений выражения (через запятую)> : <�оператор_1> ;
<�список значений выражения (через запятую)> : <�оператор_2> ;
. . .
<�список значений выражения (через запятую)> : <�оператор_n> ;
[ else <�оператор_0> ]
end
Обязательно требуется, чтобы элементы каждого списка значений выражения были различными. Выражение после case не может быть вещественного типа. При выполнении оператора выбора выраже¬ние вычисляется, и выполняется тот оператор, в список которого вычислен¬ное значение попадает. Если такой список отсутствует, выполня¬ется оператор_0 из ELSE-конструкции (или ничего не делается, если ELSE-конст¬рукция отсутствует).
4.9.7. Оператор цикла с предусловием.
Оператор цикла с предусловием применяется в тех случаях, когда надо выполнить сходное действие несколько раз, пока выполняется некоторое условие. Формат оператора цикла с предусловием следующий:
while <�условие выполнения цикла> do <�оператор>
Этот оператор сначала проверяет условие выполнения цикла и, если оно истинно, выполняет внутренний оператор цикла. После этого снова проверя¬ется условие и, если оно опять истинно, снова выполняется внутренний опе¬ра¬тор и т.д. Процесс заканчивается тогда, когда при проверке условия окажется, что оно ложно. Очевидно, что компоненты выражения, входящие в условие, должны изменяться внутри цикла, иначе все время будет проверять¬ся одно и то же (истинное) условие и цикл никогда не закончиться. Про такой случай говорят, что программа зациклилась.
Следует принимать во внимание, что если условие цикла будет ложно с само¬го начала, то внутренний оператор цикла не выполнится ни разу. Далее, как и в условном операторе, если внутри цикла необходимо выполнить нес¬¬¬ко¬лько операторов, их нужно заключить в операторные скобки begin . . . end.
8th Май 2011
|
Теги:
|