Читайте также:
|
|
IF условие THEN оператор
В этом случае, если результат выражения true, то выполняется < оператор >. В противном случае выполняется оператор программы, следующий за оператором if.
Полезное замечание: Вычисляя выражения, стоящие в условии оператора if, Паскаль не записывает их значения в память. Например, после выполнения фрагмента - b:=6; if b+1>0 then s:=20 - в ячейке b будет храниться 6, а не 7. То же относится и к выражениям из оператора WriteLn. Например: b:=6; WriteLn (b+1). И здесь тоже в ячейке b останется храниться 6, а не 7. И вообще, информация в ячейках памяти не меняется при вычислении выражений.
a:=10; if a>2 then WriteLn ('!!!') else WriteLn ('!') | !!! |
a:=4; if a>5 then a:=a+10 else a:=a-1; WriteLn (a) | |
s:=6; if s-8<0 then s:=s+10; WriteLn (s) |
В Паскале разрешвется использование вложенных условных операторов.
Например, такого оператора как: if условие1 then if условие2 then <оператор1> else <оператор2>
При этом возникает вопрос: к какому из двух операторов if: к первому или ко второму относить служебное слово else? Эта неясность (или двусмысленность) в понимании снимается, если принять, что служебное слово else всегда относится (или вернее связывается) с ближайшим по тексту еще не связанным с else служебным словом if.
8. Оператор цикла с известным числом повторений FOR: формат, порядок выполнения.
VAR i: Integer;
BEGIN
for i:=1 to 200 do
WriteLn('ФУТБОЛ')
END.
Для i, изменяющегося от 1 до 200, делай оператор, стоящий после слова do. Смысл повторения здесь такой же, как и в операторе while. Оператор, стоящий после do, тоже, конечно, может быть составным.
FOR имя := выражение1 TO DOWNTO выражение2 DO оператор
Прежде всего вычисляется выражение1, и переменной цикла (пусть это будет i) присваивается его значение. Затем вычисляется выражение2 и сравнивается с i. Если i > выражения2, то оператор for завершает свою работу, так ничего и не сделав. В противном случае выполняется оператор, стоящий после do. После выполнения этого оператора значение i увеличивается на 1 и снова сравнивается с выражением2. Если i > выражения2, то оператор for завершает свою работу, иначе снова выполняется оператор, стоящий после do, снова i увеличивается на 1 и т.д.
оператор for позволяет не только увеличивать, но и уменьшать переменную цикла. (downto) и тогда должно быть истинным не условие i > выражения2, а условие i < выражения2.
Тело цикла может являться простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного. Заголовок оператора повтора FOR определяет:
– диапазон изменения значений управляющей переменной (параметра цикла) и одновременно число повторений оператора, содержащегося в теле цикла;
– направление изменения значения параметра цикла (возрастание – to или убывание – downto).
Пример:
for I:= 1 to 100 do Read(M[I]); {Чтение элементов массива}
for I: = 100 downto 1 do Write(M[I]); {Вывод элементов массива}
При первом обращении к оператору FOR вначале вычисляются выражения S1, S2 и осуществляется присваивание «параметр цикла>:=51. После этого циклически повторяются следующие действия.
1. Проверяется условие <параметр цикла>:<=S2.
2. Если условие выполнено, то оператор FOR продолжает работу (выполняется оператор в теле цикла), если условие <параметр цикла>:<=52 не выполнено, то оператор FOR завершает работу, и управление в программе передается на оператор, следующий за циклом.
3. Значение управляющей переменной изменяется на +1 (TO) или -1 (DOWNTO) и далее с п. 1. Обратите внимание, что шаг изменения управляющей переменной – единица.
На использование управляющей переменной (параметра цикла) в цикле FOR накладываются следующие ограничения.
1. В качестве параметра должна использоваться простая переменная, описанная в текущем блоке.
2. Управляющая переменная должна иметь дискретный тип.
3. Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной. При этом допустим любой скалярный тип, кроме вещественного.
4. В теле цикла запрещается явное изменение значения управляющей переменной (например, при помощи оператора присваивания).
5. После завершения оператора значение управляющей переменной становится неопределенным, если только выполнение оператора не было прервано оператором перехода.
9. Оператор цикла с неизвестным числом повторений While: формат, порядок выполнения.
Оператор while (пока) часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.
Формат записи:
while <условие продолжения повторений> do
<тело цикла>;
Условие – булевское выражение, тело цикла – простой или составной оператор.
Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, то тело цикла выполняется, и снова вычисляется выражение условия. Если результат равен False, происходят выход из цикла и переход к первому после while оператору.
WHILE условие DO оператор
Пока условие истинно, делай оператор. Например, while a>b do b:=b+1.
Сначала компьютер проверяет истинность условия, стоящего после слова while. Если условие истинно, то выполняется оператор, стоящий после do. Затем снова проверяется истинность условия и в случае истинности снова выполняется этот оператор. И т.д. Если условие ложно, то оператор while прекращает свою работу и компьютер переходит к выполнению следующего оператора.
Оператор, стоящий после while, вполне может быть составным, поэтому тело цикла у оператора while, так же как и у оператора repeat, может состоять из многих операторов.
Решим при помощи while ту же задачу о печати чисел 3 5 7 9, что в предыдущем параграфе решили с помощью repeat. Для того, чтобы точно определить работу оператора while, приведем программу ее решения параллельно с третьим вариантом программы из Ошибка: источник перёкрестной ссылки не найден:
3 ВАРИАНТ | ВАРИАНТ С WHILE |
LABELm1,m2,m3; VAR f: Integer; BEGIN Write('Начало счета '); f:=3; m1: if f<=9 then goto m3 else goto m2; m3: Write(f,' '); f:=f+2; goto m1; m2: Write(' Конец счета') END. | VAR f: Integer; BEGIN Write('Начало счета '); f:=3; while f<=9 do begin Write(f,' '); f:=f+2; end; Write(' Конец счета') END. |
10. Оператор цикла с неизвестным числом повторений Repeat...until: формат, порядок выполнения.
оператор goto, неудобен хотя бы тем, что у программистов, пишущих большие программы, много времени и внимания уходит на поиск взглядом меток в тексте программы.
В Паскале - три оператора цикла: repeat, while и for.
Конструкция repeat..... until a+2>3*b переводится "повторяй......до тех пор, пока a+2 не станет больше 3*b".
Составим с использованием оператора repeat программу решения задачи о печати чисел 3 5 7 9 из предыдущего параграфа. Для того, чтобы точно определить работу оператора repeat, приведем ее параллельно со вторым вариантом программы решения этой задачи из того же параграфа:
2 ВАРИАНТ | ВАРИАНТ С REPEAT |
LABEL m1,m2; VAR f: Integer; BEGIN Write('Начало счета '); f:=3; m1: Write(f,' '); f:=f+2; if f>9 then goto m2 else goto m1; m2: Write(' Конец счета') END. | VAR f: Integer; BEGIN Write('Начало счета '); f:=3; repeat Write(f,' '); f:=f+2; until f>9; Write(' Конец счета') END. |
Порядок работы обеих программ совершенно одинаков, так что можно считать слово repeat заменой метки m1, а конструкцию until f>9 считать заменой оператора if f>9 then goto m2 else goto m1.
Repeat оператор; оператор;...; оператор until условие
Сначала компьютер по очереди выполняет операторы, стоящие после слова repeat, пока не дойдет до слова until, после чего проверяет истинность условия, стоящего после until. Если условие ложно, то компьютер снова по очереди выполняет эти операторы и снова проверяет истинность условия и т.д. Если условие оказывается истинным, то работа оператора repeat прекращается и компьютер переходит к выполнению следующего по порядку оператора.
Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Именно поэтому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат булевского выражения равен False, то тело цикла активизируется еще раз; если результат равен True, то происходит выход из цикла.
Сравнительный анализ возможностей оператора цикла с неизвестным числом повторений While и оператора цикла с известным числом повторений For.
Выполняя программу печати чисел 3 5 7 9, оператор repeat выполнил цикл 4 раза. То же самое сделал и оператор while. Однако, обычно, когда мы пишем операторы repeat и while, нам совсем неважно знать, сколько раз они выполнят цикл. Тем не менее, существует много задач, для решения которых цикл нужно выполнить именно определенное количество раз. В этом случае удобно использовать оператор цикла for.
Дата добавления: 2014-12-19; просмотров: 246 | Поможем написать вашу работу | Нарушение авторских прав |