Цикл Repeat..Until.
Как уже было сказано, циклы с условием делятся на циклы с предусловием и на циклы с постусловием. В этой статье рассказывается об использовании цикла с постусловием Repeat. Until для написания программ на языке Pascal.
Предположим, нужно написать программу, в которой мы будем вводить с клавиатуры числа, и подсчитывать их сумму.
Цикл с постусловием Repeat..Until.
program ciklih4; uses crt; var sum, A:real; begin clrscr; SUM:=0; A:=0; repeat sum:=sum+A; write (‘Ведите число:’); readln (A); until A
В строке №3 запишем 2 переменные: «SUM» – для хранения суммы и «A» для хранения значения введенного нами числа.
В строке №6 обнуляем сумму. Каждый раз, когда в той или иной программе следует подсчитать сумму чего-нибудь, нужно сначала обнулить эту сумму.
В строке №7 указываем первоначальное значение для переменной «A».
В строке №8 записываем оператор цикла Repeat (от англ. «повторять»). Все действия, которые записаны после оператора Repeat (строка №9 — №11) будут выполняться до тех пор, пока не выполнится условие в строке №12 (Until в пер с англ. «до»), т.е. пока переменная «A» не станет отрицательным числом.
Предлоги till until | Грамматика английского языка
Таким образом, получается, что в цикле выполняется 3 действия (строка №9 — №11). Сначала подсчитывается сумма (строка №9). Она, первоначальна, равна 0, т.к. sum=0 и A=0. Затем выводится сообщение на экран (строка №10), затем мы вводим с клавиатуры какое-нибудь число, и оно записывается в переменную «A».
Если мы вводим положительное число, то опять подсчитывается сумма (строка №9), только теперь значение переменной «A» равно не 0, а тому числу, которое мы введем с клавиатуры. Соответственно, и сумма (sum) увеличится на это число.
При вводе положительных чисел, программа будет продолжать работать. Как только мы введем отрицательное число, цикл перестанет работать, и на экран выведится сумма всех введенных с клавиатуры чисел.
Дополнение к материалу.
Конструкция Repeat. Until подобна операторным скобкам Begin. End. Поэтому перед Until не обязательно ставить точку с запятой. Т. е. в конце строки №11 можно пропустить точку с зяпятой без каких-либо последствий для программы.
Следует сказать, что для решения одних и тех же задач программирования можно использовать как циклы с предусловием, так и циклы с постусловием. Выбор того или иного варианта во многом будет зависеть от ваших личных предпочтений.
Источник: mojainformatika.ru
#12.1 Цикл Repeat/Until «с постусловием» в Паскаль
Что выбрать? Before, by, until или till
Цикл Repeat/until характеризуется следующими моментами:
- Работает пока условие ложно.
- Сначала выполняется виток цикла и лишь потом проверяется требуется ли завершать цикла или же нужен следующий повтор.
- Такой цикл всегда выполнится хотя бы один раз (это связано с тем, что условие проверяется после выполнения тела цикла).
- Операторные скобки вокруг тела цикла repeat-until не нужны не нужны — так как их заменяют сами два слова repeat и until («повторяй» и «пока не»)
Пример: выведем на экран все целые числа от $1$ до $n$ (числа введённого пользователем):
var i, n: integer; begin writeln(‘vvedite celoe chislo >1 :’); readln(n); i := 1; repeat // начало тела цикла write(i, ‘ ‘); i := i + 1; // увеличиваем счетчик на 1 until (i>n); // выход из цикла только если счетчик станет больше n readln(); end.
— по сути это пример замены for на repeat-util, для ситуации перебора ряда чисел.
Еще примеры (необходимо доофромить):
var a, b: integer; f: boolean; begin //writeln(‘Введите число:’); //readln(a); //while (a < 15) do //begin // writeln(5); // writeln(‘Введите число:’); // readln(a); //end; repeat writeln(‘Введите число:’); readln(a); f := a < 15; if (f) then writeln(5); until (not f); readln(); end. //var a, b: integer; //begin // a := 1; // repeat // write(a, ‘ ‘); // a := a + 1; // until (a >10); // // writeln(); // // a := 1; // while (a
Repeat/until и другие циклы в Паскаль — связь между ними
Ранее мы уже изучили циклы:
- for — «с известным числом повторений», который не проверяет логических условий.
- и while (т.н. цикл «с предусловием») — цикл похожий на Repeat/until — также проверяющий логическое выражение, но while от repeat отличается по следующим пунктам:
- По условию выхода из цикла:
- while работает пока его логическое условие истинно,
- repeat-until наоборот пока ложно.
- По порядку проверки условия:
- while сначала проверяет условие (если истинно — то продолжает работу), а потом делает очередной (в том числе первый) свой виток.
- repeat-until сначала делает виток, а потом проверяет условие (если ложно — то продолжает работу).
Видео-пояснения
Для этого урока есть следующию видео-пояснения:
Теоретические вопросы
- Что такое виток цикла?
- Чем отличается цикл repeat/until от циклов for и while? Похож ли он в чем-то на них?
Задачи для самостоятельного решения
Примечание: в задачах данного урока, в качестве конструкции для организации цикла (если требуется) используйте repeat-until, если в задаче явно не сказано использовать какую-то другую конструкцию.
-
Сдавать решение не обязательно:
Исправьте форматирование кода:
var a,b: char; begin repeat writeln (‘введи символ и нажми Enter’); readln (a); if a=’#’ then break else writeln (‘ until (a=’#’); writeln(‘Конец’); end.
var f: integer; begin writeln(‘Введите целое число’); readln(f); if f < 25 then begin repeat if f mod 23 = 0 then begin f := f — 1; writeln(f); end else f := f — 2; until (f < 1); end else writeln(‘ошибка’); writeln(‘Конец!’); readln(); end.
-
Если мы введем число 55, то программа должна вывести в ответ:
46 23
Подсказка: если не получается решить или для лучшего понимания см. этот видео-разбор данной задачи
Key Words for FKN + antitotal forum (CS VSU):
- Паскаль цикл repeat until примеры
- Паскаль отличия цикла while от repeat-until
Источник: fkn.ktu10.com
Цикл until в Bash
Циклы — одна из фундаментальных концепций языков программирования. Циклы удобны, когда вы хотите запускать серию команд снова и снова, пока не будет выполнено определенное условие.
В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач. Там нет 3 основных конструкций петли в Bash сценариев, for цикла , в while цикла , и until цикла.
В этом руководстве объясняются основы цикла until в Bash.
Bash until Loop
Цикл « until используется для выполнения заданного набора команд до тех пор, пока данное условие оценивается как ложное.
Цикл Bash until принимает следующую форму:
until [CONDITION] do [COMMANDS] done
Условие оценивается перед выполнением команд. Если условие оценивается как ложное, команды выполняются. В противном случае, если условие оценивается как истинное, цикл будет завершен, и управление программой будет передано следующей команде.
В приведенном ниже примере на каждой итерации цикл печатает текущее значение counter переменных и увеличивает значение переменной на единицу.
#!/bin/bash counter=0 until [ $counter -gt 5 ] do echo Counter: $counter ((counter++)) done
Цикл повторяется до тех пор, пока переменная counter имеет значение больше четырех. Сценарий выдаст следующий результат:
Counter: 0 Counter: 1 Counter: 2 Counter: 3 Counter: 4 Counter: 5
Используйте операторы break и continue для управления выполнением цикла.
Bash until Loop Пример
Следующий скрипт может быть полезен, когда у вашего хоста git простои, и вместо того, чтобы вручную вводить git pull несколько раз, пока хост не будет в сети, вы можете запустить скрипт один раз. Он будет пытаться вытащить репозиторий, пока не добьется успеха.
#!/bin/bash until git pull /dev/null do echo «Waiting for the git host . » sleep 1 done echo -e «nThe git repository is pulled.»
Сценарий напечатает «Ожидание хоста git…» и sleep одну секунду, пока хост git не перейдет в онлайн. Как только репозиторий извлечен, он напечатает «Репозиторий git извлечен».
Waiting for the git host . Waiting for the git host . Waiting for the git host . The git repository is pulled.
Выводы
Циклы while и until похожи друг на друга. Основное отличие состоит в том , что в while цикл перебирает тех пор , пока условие принимает значение true и until итерации цикла, пока условие принимает значение false .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник: routerus.com
Урок 12. Циклы в Pascal: repeat, while, for
Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны?
Именно на эти вопросы я сегодня и отвечу.
Если вы читали этот урок, то знаете, что существует три вида алгоритмов: линейный, разветвляющийся и циклический. Мы с вами уже знаем, как реализовывать линейные и разветвляющиеся алгоритмы на Паскале. Приступим к изучению последнего типа алгоритмов.
В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.
Любой цикл состоит из тела и заголовка. Тело цикла — это набор повторяющихся операторов, а условие — это логическое выражение, в зависимости от результата которого и происходит повторное выполнение цикла.
Возьмем одну задачу, которую будем решать, используя различные виды циклов.
Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.
While, или цикл с предусловием
Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.
While имеет формат:
while do ;
Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end;.
program example_while; var i, N: integer; < объявляем переменные >begin i := 1; < Присваиваем i значение 1 >readln(N); < Считываем последнее число >while i begin write(i, ‘ ‘); Inc(i); end; < закрываем скобки >end.
Repeat, или цикл с постусловием
Repeat — полная противоположность while. Repeat — это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false; как только логическое выражение становится true, выполнение цикла прекращается.
Repeat имеет формат:
Begin и end не требуются.
program example_repeat; var i, N: integer; < объявляем переменные >begin i := 1; < Присваиваем i значение 1 >readln(N); < Считываем последнее число >repeat write(i, ‘ ‘); Inc(i); until i = N + 1; end.
For, или цикл с параметром
For — это цикл, в котором тело выполняется заданное количество раз.
Существует две формы записи этого цикла:
Первая форма
for := to do ;
После каждой итерации значение будет увеличиваться на 1.
— это начальное значение счетчика. Это может быть переменная или число.
: как только значение станет больше , выполнение цикла прекратится.
Если требуется написать несколько операторов в теле цикла, используем begin и end.
И , и , и — переменные целого типа.
Чаще всего в качестве счетчика используется переменная i.
Вторая форма
for := downto do ;
После каждой итерации значение будет уменьшатся на 1.
— это начальное значение счетчика.
: как только значение станет меньше , выполнение цикла прекратится.
Два важных примечания:
- Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
- Изменять значение счетчика внутри тела нельзя! Вот что выводит компилятор:
program example_for; var i, N: integer; begin read(N); for i := 1 to N do write(i, ‘ ‘); end.
Согласитесь, данный код проще и лаконичнее, чем все предыдущие. И цикл for — не совсем обычный цикл, в нем нет логического условия. Поэтому цикл с параметром в программировании называют синтаксическим сахаром. Синтаксический сахар — это дополнения синтаксиса языка программирования, которые не добавляют новых возможностей, а делают использование языка более удобным для человека.
Давайте решим пару задач.
For1. Даны целые числа K и N (N > 0). Вывести N раз число K.
Организовываем простой цикл от 1 до требуемого числа.
program for1; var K, N, i: integer; begin read(K, N); for i := 1 to N do write(K, ‘ ‘); end.
program for2; var A, B, i, count: integer; begin read(A, B); for i := A to B do write(i, ‘ ‘); count := B — A + 1; writeln; write( ‘Количество чисел — ‘, count); end.
Организовываем такой же цикл, как и в предыдущей задаче, но одновременно суммируем квадраты всех чисел. Чтобы высчитать квадрат, используем функцию Sqr.
program for9; var A, B, i, S: integer; begin read(A, B); S := 0; for i := A to B do S := S + Sqr(i); writeln; write( ‘Сумма квадратов — ‘, S); end.
For13°. Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.
Для того, чтобы поменять знак, каждую итерацию цикла меняем значение специальной переменной на противоположное.
program for13; var N, A, i: integer; S: real; begin Write(‘N = ‘); readln(N); S := 1.1; A := 1; for i := 2 to N do begin A := -A; S := S + A * (1 + i / 10); end; Writeln(S:5:1); end.
While1°. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
Каждый раз вычитаем B из А, пока А — В >= 0.
program while1; var A, B: integer; begin readln(A, B); while (A — B) >= 0 do A := A — B; => write(A); end.
While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False.
Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и mod, и как работают логические выражения.
program while4; var N: integer; begin readln(N); while N mod 3 = 0 do N := N div 3; writeln(N = 1); end.
На сегодня все! Не забывайте почаще заходить на наш сайт и кликать по кнопочкам, которые расположены перед комментариями.
Источник: learnpascal.ru