условие — логическое выражение, диктующее завершение повторов.
Оператор цикла с постусловием начинается с выполнения операторов внутри цикла. Затем проверяется истинность логического условия, стоящего после слова UNTIL. Если это условие справедливо (True), то осуществляется выход из цикла. Если же значение логического выражения ложно (False), то выполнение операторов тела цикла повторяется, после чего снова проверяется истинность логического условия.
Пример программы, использующей оператор цикла с постусловием:
Program Primer;
Var K:Integer;
K:=0;
K:=K+2; Write(‘K= ‘,K:3)
UNTIL K>10;
При использовании операторов цикла следует учитывать следующие особенности:
Цикл While. Проверяется условие, расположенное в заголовке цикла. Если оно является истинным, то выполняется тело цикла. По завершению его выполнения снова проверяется условие, находящееся в заголовке цикла и т.д. Так продолжается до тех пор, пока условие не станет ложным.
The boot menu is looped. We eliminate the problem using the example of a lenovo laptop
В этом случае будет осуществлен переход к конструкции, следующей за телом цикла.
При работе с этой конструкцией цикла важно следить за тем, чтобы на каком-то шаге выполнения тела цикла проверяемое условие обязательно стало ложным. Если этого не произойдет, то выход из цикла будет невозможен. В этом случае говорят, что программа » зациклилась «.
Цикл Repeat..Until. Встретив служебное слово Repeat компьютер «запоминает» его местоположение на случай необходимости повторного выполнения тела цикла. Таким образом, служебное слово Repeat отмечает начало тела цикла. После выполнения тела цикла проверяется условие, расположенное за служебным словом Until.
Если оно является ложным, то снова выполняется тело цикла и т.д. Когда условие станет истинным, будет осуществлен переход к следующей конструкции, идущей после цикла.
1. Операторы, входящие в цикл Repeat. Until, всегда выполняются хотя бы один раз, поскольку истинность логического выражения в цикле этого типа проверяется после операторов, входящих в тело цикла. При использовании цикла типа While. Do могут быть ситуации, когда операторы, входящие в цикл, не будут выполнены ни разу, если логическое выражение изначально имеет значение «FALSE».
2. Цикл Repeat. Until выполняется, пока логическое выражение имеет значение FALSE. Цикл While. Do выполняется, пока логическое выражение имеет значение TRUE. Этот нюанс следует учитывать при замене цикла одного типа другим.
Program Whl; Var i:integer; Begin i:=1; WHILE i | Program Rep; Var i:integer; Begin i:=1; REPEAT Writeln(‘Привет’); i:=i+1 UNTIL i>10; Readln End. |
3. Если тело цикла While. Do состоит из нескольких операторов, их следует обрамлять операторными скобками begin. end, образующими составной оператор. В цикле типа Repeat. Until операторные скобки не нужны.
4. Одной из опасностей, возникающих при использовании оператора цикла, является «зацикливание», т.е. возникновение ситуации, когда программа не выходит из цикла, бесконечно повторяя входящие в него операторы:
Зациклилось bios menu на ноутбуке asus. Быстрое решение проблемы.
5. Если в программе встретится такой фрагмент, то экран заполнится строками с фразой «Бесконечный цикл», выдача которой в режиме прокрутки (Scrolling) будет длиться до тех пор, пока программистом не будут приняты действия по принудительному завершению работы программы. Вывести программу из бесконечного цикла можно, дважды нажав сочетание клавиш Ctrl и Break, после чего надо нажать клавишу ESC.
6. Зацикливания не произойдет, если операторы, входящие в тело цикла, будут влиять на условие, определяющее завершение цикла:
k1:=1;
Источник: studopedia.su
Уроки 75 — 79
Цикл с условием. Цикл с переменной
§58. Циклические алгоритмы
Рассмотрим следующую задачу: определить количество цифр в десятичной записи целого положительного числа. Будем предполагать, что исходное число записано в целую переменную n.
Сначала составим алгоритм решения этой задачи. Чтобы считать что-то в программе, нужно использовать переменную, которую называют счётчиком. Для подсчёта количества цифр нужно как-то отсекать эти цифры по одной, с начала или с конца, каждый раз увеличивая счётчик. Начальное значение счётчика должно быть равно нулю, так как до выполнения алгоритма ещё не найдено ни одно цифры.
Для отсечения первой цифры необходимо заранее знать, сколько цифр в десятичной записи числа, т. е. нужно заранее решить ту задачу, которую мы решаем. Следовательно, этот метод не подходит.
Отсечь последнюю цифру проще — достаточно разделить число нацело на 10 (поскольку речь идёт о десятичной системе). Операции отсечения и увеличения счётчика нужно выполнять столько раз, сколько цифр в числе. Как же «поймать» момент, когда цифры кончатся?
Несложно понять, что в этом случае результат очередного деления на 10 будет равен нулю, это и говорит о том, что отброшена последняя оставшаяся цифра. Изменение переменной n и счётчика для начального значения 1234 можно записать в виде таблицы на рис. 8.1.
Рис. 8.1
Псевдокод выглядит так:
отсечь последнюю цифру n
увеличить счётчик на 1
Программа на школьном алгоритмическом языке очень похожа на псевдокод, а программа на Паскале почти совпадает с его переводом на английский язык:
Здесь целочисленная переменная-счётчик имеет имя count. Отметим, что в Паскале после ключевого слова do стоит составной оператор, ограниченный ключевыми словами begin . end. Если в теле цикла нужно выполнить только один оператор, эти операторные скобки можно не ставить.
Обратите внимание, что проверка условия выполняется в начале цикла. Такой цикл называется циклом с предусловием (т. е. с предварительной проверкой условия) или циклом «пока». Если в начальный момент значение переменной n будет нулевое или отрицательное, цикл не выполнится ни одного раза.
В данном случае количество шагов цикла «пока» неизвестно, оно равно количеству цифр введённого числа, т. е. зависит от исходных данных. Цикл этого вида может быть использован и в том случае, когда число шагов известно заранее или может быть вычислено:
Если условие в заголовке цикла никогда не нарушится, цикл будет работать бесконечно долго. В этом случае говорят, что программа зациклилась. Например, если забыть увеличить переменную k в рассмотренном выше примере, программа зациклится:
Во многих языках программирования существует цикл с постусловием, в котором условие проверяется в конце цикла. Это полезно в том случае, когда нужно обязательно выполнить цикл хотя бы один раз. Например, пусть пользователь должен ввести с клавиатуры положительное число. Для того чтобы защитить программу от неверных входных данных, можно использовать цикл с постусловием:
Этот цикл закончится тогда, когда станет истинным условие n>0 в последней строке, т. е. тогда, когда пользователь введёт допустимое значение. Обратите внимание на особенности этого вида цикла:
• при входе в цикл условие не проверяется, поэтому цикл всегда выполняется хотя бы один раз;
• в последней строке указывают условие окончания цикла (а не условие его продолжения).
Следующая страница Цикл с переменной
Cкачать материалы урока
Источник: xn—-7sbbfb7a7aej.xn--p1ai