Урок из серии: «Язык программирования Паскаль»
На предыдущем уроке было показано, как использовать оператор цикла с параметром For.
В этом уроке Вы познакомитесь с операторами цикла с условием.
Операторы цикла с условием используются тогда, когда число повторений тела цикла заранее неизвестно, а задано лишь условие повторения (или окончания) цикла.
Оператор цикла с условием содержит две части: условие и тело цикла. В зависимости от их взаимного расположения, различают две разновидности циклов с условием: циклы с предусловием и циклы с постусловием.
В языке программирования Паскаль для организации циклов с условием используются операторы While и Repeat.
Оператор цикла с предусловием While
Оператор while (пока) называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора, до операторов тела цикла. Если условие изначально не выполнится, то операторы тела цикла не выполнятся ни разу.
Формат оператора:
While <условие выполнения цикла> do begin <тело цикла>; end; Здесь: <условие выполнения цикла> - булевское выражение; <тело цикла> - операторы, которые будут повторяться.
На русском языке это звучит примерно так:
пока выполняется условие делай
начало
<тело цикла>
конец
Алгоритм выполнения оператора:
- Проверяется условие выполнения цикла (вычисляется булевское выражение).
- Если условие выполняется (значение выражения равно true), то выполняются операторы, составляющие тело цикла.
- Если условие не выполняется (значение выражения равно false), то происходит выход из цикла и переход к первому после while оператора.
При использовании цикла с предусловием надо помнить следующее:
- Начальное значение переменной цикла нужно присвоить до начала выполнения цикла.
- Условие продолжения цикла должно зависеть от значения переменной цикла.
- Переменная цикла должна изменяться при каждом новом выполнении цикла, иначе цикл будет повторяться бесконечное число раз.
Пример. Составить программу для нахождения суммы 10 произвольных чисел, введенных с клавиатуры.
program demowhile; var k: byte; x, sum:real; begin k:=0; {Счетчик чисел} sum := 0; {Сумма чисел} while (k < 10) do {Условие выполнения цикла} begin k:= k+1; write('Введите ',k , '-е число: '); readln(x); {Ввод очередного числа с клавиатуры} sum := sum + x; end; writeln('Сумма введенных чисел равна ', sum); end.
В данном примере перед циклом обнуляются значение счетчика введенных чисел k и их суммы sum.
В начале оператора while проверяется условие k < 10.
Если условие верно, то выполняется составной оператор в теле цикла. В этом операторе вводится значение очередного числа, и на это значение увеличивается значение суммы. После этого управление в программе вновь передается оператору цикла while, опять проверяется условие k < 10.
Как только значение станет равно 10, выполнение цикла завершиться, а управление будет передано на оператор, находящийся за словом end, т. е. первый оператор за границей while.
Оператор цикла с постусловием repeat
Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения тела цикла (за это и называется циклом с постусловием) и таким образом гарантируется хотя бы однократное выполнение цикла, а во-вторых, тем, что выполнение условия (равенство булевского выражения константе true) является критерием не повторения, а прекращения цикла.
Формат оператора:
Repeat <оператор 1> ; <оператор 2> ; . . . <оператор n>; Until <условие окончания цикла>;
где Repeat (повторять), until (до тех пор).
Обратите внимание на то, что данный оператор цикла предполагает несколько операторов в теле цикла, поэтому операторные скобки begin и end не нужны.
Алгоритм выполнения:
- Выполняется тело цикла (операторы, заключенные между словами repeat / until).
- Проверяется условие выхода из цикла.
- Если условие выполняется, то происходит выход из цикла к первому после repeat оператору.
- Если условие не выполняется, то алгоритм повторяется с пункта 1.
Пример. Составить программу, которая будет вводить и суммировать любое количество чисел. Если будет введено число 999, на экран вывести результат суммирования.
Для решения этой задачи сначало нужно ввести число, а потом проверить его значение (проверить условие выхода из цикла). Для этого нужен цикл с постусловием.
Формат оператора:
program demorepeat; var x, sum:real; begin sum := 0; {Сумма чисел} x:=0; {Очередное число} repeat {Повторять} sum := sum + x; write('Введите очередное число: '); readln(x); until x=999; {Условие окончания цикла} writeln('Сумма введенных чисел равна ', sum); end.
Коротко о главном
1. Операторы While Repeat используют в тех случаях, когда заранее неизвестно число повторений тела цикла или шаг отличен от 1.
2. При организации циклов с проверкой условия обязательно нужно указать:
- начальное значение параметра цикла;
- условие, при котором действия должны выполняться;
- приращение параметра цикла.
На следующем уроке рассмотрим применение циклов в задачах на целочисленную арифметику.
Проверь себя!
Следующий урок: Циклы и целочисленная арифметика.
Вера Альбертовна! Здравствуйте
Очень приятно было встретить на просторах грамотно методически и алгоритмически составленные задания. Прямо бальзам на мое педагогическое сердце! Спасибо
Есть замечание , малюсенькое. ЭТО , конечно опечатка
по ссылке https://gospodaretsva.com/inf9/urok21.html «Проверь себя» задание 8
написано x:= x*2-1; тогда все значения величины х будут отрицательные от -1 до -9, чего нет в ответах
надо x:= x*2+ 1;
Ох и спасибо за Ваш труд. Я тут, конечно, останусь и ссылку в избранное запишу!