Repeat
This reserved words repeat in conjunction with until are used to create tail-controlled loops.
syntax
A tail-controlled loops start with repeat , followed by a possibly empty list of statements, and concluded by until and a Boolean expression.
The following (infinite) loops demonstrate the syntax:
Note, repeat and until already form a frame in their own right. You do not need to surround your statements by an extra begin … end -frame. In fact, you can put as many sequences (also called compound statements) between repeat and until as you want:
Note, it is not necessary, but allowed to put a semicolon prior until :
semantics
Since the loop “head” appears at the tail, the loop body is executed at least once and the loop condition evaluated at the end of every iteration. If the condition evaluates to false , another iteration occurs.
Therefore, repeat … until loops are particularly useful to ensure a certain sequence of statements is run at least once.
The user will be prompted again and again, but at least once, until he finally enters a positive number.
Another standard usage example is the reverse Horner scheme as demonstrated in Base converting.
Урок 12. Циклы в Pascal: repeat, while, for

Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны? Именно на эти вопросы я сегодня и отвечу.
Если вы читали этот урок, то знаете, что существует три вида алгоритмов: линейный, разветвляющийся и циклический. Мы с вами уже знаем, как реализовывать линейные и разветвляющиеся алгоритмы на Паскале. Приступим к изучению последнего типа алгоритмов.
В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.

Любой цикл состоит из тела и заголовка. Тело цикла — это набор повторяющихся операторов, а условие — это логическое выражение, в зависимости от результата которого и происходит повторное выполнение цикла.
Возьмем одну задачу, которую будем решать, используя различные виды циклов.
Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.
While, или цикл с предусловием
Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.
While имеет формат:
while < условие> do <оператор 1>;
Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end;.
Repeat, или цикл с постусловием
Repeat — полная противоположность while. Repeat — это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false; как только логическое выражение становится true, выполнение цикла прекращается.
Repeat имеет формат:
Begin и end не требуются.
For, или цикл с параметром
For — это цикл, в котором тело выполняется заданное количество раз.
Существует две формы записи этого цикла:
Первая форма
После каждой итерации значение <счетчик1> будет увеличиваться на 1.
<значение1> — это начальное значение счетчика. Это может быть переменная или число.
<конечное_значение> : как только значение <счетчик1> станет больше <конечное_значение>, выполнение цикла прекратится.
Если требуется написать несколько операторов в теле цикла, используем begin и end.
И <счетчик1>, и <конечное_значение>, и <значение1> — переменные целого типа.
Чаще всего в качестве счетчика используется переменная i.
Вторая форма
После каждой итерации значение <счетчик2> будет уменьшатся на 1.
<значение2> — это начальное значение счетчика.
<конечное_значение> : как только значение <счетчик2> станет меньше <конечное_значение>, выполнение цикла прекратится.
Два важных примечания:
- Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
- Изменять значение счетчика внутри тела нельзя! Вот что выводит компилятор:

Согласитесь, данный код проще и лаконичнее, чем все предыдущие. И цикл for — не совсем обычный цикл, в нем нет логического условия. Поэтому цикл с параметром в программировании называют синтаксическим сахаром. Синтаксический сахар — это дополнения синтаксиса языка программирования, которые не добавляют новых возможностей, а делают использование языка более удобным для человека.
Давайте решим пару задач.
For1. Даны целые числа K и N (N > 0). Вывести N раз число K.
Организовываем простой цикл от 1 до требуемого числа.
For2. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.
Так как A < B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.
For9. Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.
Организовываем такой же цикл, как и в предыдущей задаче, но одновременно суммируем квадраты всех чисел. Чтобы высчитать квадрат, используем функцию Sqr.
For13°. Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.
Для того, чтобы поменять знак, каждую итерацию цикла меняем значение специальной переменной на противоположное.
While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
Каждый раз вычитаем B из А, пока А — В >= 0.
While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False.
Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и mod, и как работают логические выражения.
На сегодня все! Не забывайте почаще заходить на наш сайт и кликать по кнопочкам, которые расположены перед комментариями.
Цикл Repeat..Until.
Как уже было сказано, циклы с условием делятся на циклы с предусловием и на циклы с постусловием. В этой статье рассказывается об использовании цикла с постусловием Repeat. Until для написания программ на языке Pascal.
Предположим, нужно написать программу, в которой мы будем вводить с клавиатуры числа, и подсчитывать их сумму.
Цикл с постусловием Repeat..Until.
В строке №3 запишем 2 переменные: «SUM» – для хранения суммы и «A» для хранения значения введенного нами числа.
В строке №6 обнуляем сумму. Каждый раз, когда в той или иной программе следует подсчитать сумму чего-нибудь, нужно сначала обнулить эту сумму.
В строке №7 указываем первоначальное значение для переменной «A».
В строке №8 записываем оператор цикла Repeat (от англ. «повторять»). Все действия, которые записаны после оператора Repeat (строка №9 — №11) будут выполняться до тех пор, пока не выполнится условие в строке №12 (Until в пер с англ. «до»), т.е. пока переменная «A» не станет отрицательным числом.
Таким образом, получается, что в цикле выполняется 3 действия (строка №9 — №11). Сначала подсчитывается сумма (строка №9). Она, первоначальна, равна 0, т.к. sum=0 и A=0. Затем выводится сообщение на экран (строка №10), затем мы вводим с клавиатуры какое-нибудь число, и оно записывается в переменную «A». Если мы вводим положительное число, то опять подсчитывается сумма (строка №9), только теперь значение переменной «A» равно не 0, а тому числу, которое мы введем с клавиатуры. Соответственно, и сумма (sum) увеличится на это число.

При вводе положительных чисел, программа будет продолжать работать. Как только мы введем отрицательное число, цикл перестанет работать, и на экран выведится сумма всех введенных с клавиатуры чисел.

Дополнение к материалу.
Конструкция Repeat. Until подобна операторным скобкам Begin. End. Поэтому перед Until не обязательно ставить точку с запятой. Т. е. в конце строки №11 можно пропустить точку с зяпятой без каких-либо последствий для программы.
Следует сказать, что для решения одних и тех же задач программирования можно использовать как циклы с предусловием, так и циклы с постусловием. Выбор того или иного варианта во многом будет зависеть от ваших личных предпочтений.
Циклы. Операторы цикла for , while-do , repeat-until . Операторы завершения цикла break , continue
Иногда алгоритм решения задачи может быть реализован таким образом, что нужно выполнять одни и те же операции несколько раз. Алгоритм, в котором определенная последовательность команд повторяется несколько раз называется циклическим.
Операторы цикла используются для удобной организации циклического процесса в программе.
2. Какие есть виды операторов цикла в языке Паскаль?
В языке Паскаль предусмотрено три разновидности операторов цикла:
- цикл с параметром ( for-to-do );
- цикл с предусловием ( while-do );
- цикл с послеусловием ( repeat-until ).
3. Какой общий вид оператора цикла с параметром for ?
Цикл с параметром имеет два варианта реализации.
Вариант 1. Общий вид цикла с параметром:
где Счетчик – переменная перечислительного типа, которая в цикле имеет шаг прироста равный 1 ; НачальноеЗначение – начальное значение параметра Счетчик ; КонечноеЗначение – конечное значение параметра Счетчик .
Если НачальноеЗначение больше за КонечноеЗначение , то инструкции между begin и end не выполняются. Если между begin и end есть лишь одна инструкция (оператор), то ключевые слова begin и end можно опустить.
Вариант 2. Общий вид цикла с параметром:
В этом случае значение параметра Счетчик не возрастает на 1 , а уменьшается на 1 (шаг изменения равен -1 ).
Пример применения оператора цикла с параметром.
Составить программу для вычисления факториала. Факториал вычисляется по следующей формуле:
n! = 1 * 2 * 3 * … * n.
4. Какой вид имеет оператор цикла с предусловием while-do ?
Общий вид оператора цикла с предусловием:
Пример применения оператора цикла с предусловием. Фрагмент кода, в котором осуществляется вычисление суммы:
S = 2 + 4 + 6 + … + 200
5. Какой вид имеет оператор цикла с постусловием repeat-until ?
Общий вид оператора цикла с постусловием:
Операторы, размещенные между ключевыми словами repeat и until будут выполняться до тех пор, пока логическое выражение, указанное после until , не примет значение true .
6. Пример вычисления суммы с помощью различных операторов цикла.
Задача.
С помощью оператора цикла вычислить сумму:
S = 1 + 2 + … + 100
Решение 1. Использование оператора цикла с параметром for .
Решение 2. Использование оператора цикла с предусловием while .
Решение 3. С помощью оператора цикла с постусловием repeat .
7. Какие есть операторы завершения цикла?
Для всех операторов цикла выход из цикла осуществляется как вследствие естественного завершения оператора цикла, так и с помощью операторов перехода и выхода.
В стандартном Паскале определены стандартные операторы Break и Continue .
Оператор Break выполняет безусловный выход из цикла. Оператор Continue обеспечивает переход к началу новой итерации цикла.
8. Пример использования оператора break .
Иногда бывает удобно выйти из цикла не по результату проверки, которая осуществляется в начале или в конце цикла, а каким-то другим способом. Такую возможность представляет инструкция break .
Фрагмент программного кода, который определяет наличие заданного элемента в массиве m1 . Значение элемента описывается в переменной x . Если элемент есть, то нецелесообразно осуществлять поиск в массиве дальше. В этом случае используется есть операция break .
9. Пример использования оператора continue .
Инструкция continue используется, если нужно остановить текущую итерацию и перейти к следующей итерации.
Пример фрагмента кода, который множит на 2 все положительные элементы массива m1 из 100 целых чисел. Если встречается отрицательный элемент, то он пропускается.