Циклический вычислительный процесс (ЦВП) характеризуется повторением одних и тех же вычислений над некоторым набором данных. Числом повторений цикла управляет специальная переменная, называемая его счетчиком или управляющей переменной цикла. На счетчик накладывается условие, определяющее, до каких пор следует выполнять цикл.
Повторяемый блок вычислений называют телом цикла. В теле цикла должно быть обеспечено изменение значения счетчика, чтобы он мог завершиться. Если тело цикла состоит более чем из одного оператора, оно заключается в операторные скобки begin . end; . Однократное выполнение тела цикла называют его шагом.
Таким образом, для программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. С этой точки зрения, теоретически возможны всего два вида циклов — проверка условия либо предшествует выполнению тела цикла, либо происходит после него. Изобразим эти циклы в виде блок-схем (рис. 9.1).
Цикл с предусловием | Информатика Паскаль #15 | Инфоурок
В цикле с предусловием сначала проверяется условие, затем, в зависимости от того, истинно оно или ложно, либо выполняется тело цикла, либо следует переход к оператору, следующему за телом цикла. После завершения тела цикла управление вновь передается на проверку условия. Естественно, предполагается, что в теле цикла было обеспечено некоторое изменение входящих в условие переменных — в противном случае произойдет зацикливание и программа «зависнет».
Рис. 9.1. Блок-схемы циклов с предусловием и постусловием
Для цикла с постусловием сначала выполняется тело цикла, затем управление передается на проверку условия. В зависимости от истинности или ложности условия, тело цикла выполняется повторно или же происходит переход к оператору, следующему за телом цикла. Всё, сказанное о возможном зацикливании для цикла с предусловием, справедливо и для цикла с постусловием.
Исходя из приведенных блок-схем, очевидно основное различие двух циклов: цикл с постусловием гарантированно выполняется хотя бы раз, а цикл с предусловием может не выполняться ни разу, если условие сразу же окажется ложным.
В языке Паскаль реализованы оба вида циклов. Цикл с предусловием имеет следующий общий вид:
while логическое_выражение do begin
Работу цикла можно описать словами: «пока логическое выражение истинно, повторяется тело цикла».
Логическое выражение строится по правилам, изученным в гл. 7. Тело цикла могут образовывать любые операторы Паскаля. Если в цикле находится всего один оператор, операторные скобки, показывающие начало и конец тела цикла, можно не писать.
Общая запись цикла с постусловием следующая:
Работает цикл с постусловием следующим образом: «тело цикла повторяется до тех пор, пока логическое выражение не станет истинным». Обратите внимание, что, в отличие от while , цикл repeat в Паскале работает, пока условие ложно. Это отличие подчеркивается использованием ключевого слова until («до тех пор, пока не») вместо while («до тех пор, пока»). Кроме того, в виде исключения, тело цикла repeat , даже если оно состоит из нескольких операторов, можно не заключать в операторные скобки.
ИНФОРМАТИКА 8 класс: Цикл с предусловием на языке Паскаль | Видеоурок
Довольно часто циклы взаимозаменяемы. Представим, например, что для каждого из значений переменной x = 1 , 2 , . , 20 , нужно выполнить некоторый расчет (математически этот закон изменения x можно записать как или ). Это можно сделать как в цикле while :
так и с помощью repeat :
Как видно из листинга, управляющей переменной x в обоих случаях присвоено начальное значение 1 , оба цикла изменяют значение x и, соответственно, условие цикла, оператором x:=x+1; , но для цикла repeat условие «перевернуто» («пока x не станет больше 20 «), а тело не заключено в операторные скобки.
Зачастую использование одного из циклов выглядит предпочтительней. Например, обработка ввода пользователя с клавиатуры удобней с помощью repeat (сначала пользователь должен нажать клавишу, затем следуют проверки и обработка).
Источник: nickolay.info
Оператор цикла с предусловием while
Оператор while (пока) называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора, до операторов тела цикла. Если условие изначально не выполнится, то операторы тела цикла не выполнятся ни разу.
— операторы, которые будут повторяться.
На русском языке это звучит примерно так:
пока выполняется условие делай начало
Алгоритм выполнения оператора:
- Проверяется условие выполнения цикла (вычисляется булевское выражение).
- Если условие выполняется (значение выражения равно true), то выполняются операторы, составляющие тело цикла.
- Если условие не выполняется (значение выражения равно false), то происходит выход из цикла и переход к первому после while оператора.
При использовании цикла с предусловием надо помнить следующее:
- Начальное значение переменной цикла нужно присвоить до начала выполнения цикла.
- Условие продолжения цикла должно зависеть от значения переменной цикла.
- Переменная цикла должна изменяться при каждом новом выполнении цикла, иначе цикл будет повторяться бесконечное число раз.
Пример. Составить программу для нахождения суммы 10 произвольных чисел, введенных с клавиатуры.
write(‘Введите ‘,k , ‘-е число: ‘);
writeln(‘Сумма введенных чисел равна ‘, sum);
В данном примере перед циклом обнуляются значение счетчика введенных чисел k и их суммы sum.
В начале оператора while проверяется условие k < 10.
Если условие верно, то выполняется составной оператор в теле цикла. В этом операторе вводится значение очередного числа, и на это значение увеличивается значение суммы. После этого управление в программе вновь передается оператору цикла while, опять проверяется условие k < 10.
Как только значение станет равно 10, выполнение цикла завершиться, а управление будет передано на оператор, находящийся за словом end, т. е. первый оператор за границей while.
Оператор цикла с постусловием repeat
Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения тела цикла (за это и называется циклом с постусловием) и таким образом гарантируется хотя бы однократное выполнение цикла, а во-вторых, тем, что выполнение условия (равенство булевского выражения константе true) является критерием не повторения, а прекращения цикла.
где Repeat (повторять), until (до тех пор).
Обратите внимание на то, что данный оператор цикла предполагает несколько операторов в теле цикла, поэтому операторные скобки begin и end не нужны.
- Выполняется тело цикла (операторы, заключенные между словами repeat / until).
- Проверяется условие выхода из цикла.
- Если условие выполняется, то происходит выход из цикла к первому после repeat оператору.
- Если условие не выполняется, то алгоритм повторяется с пункта 1.
Пример. Составить программу, которая будет вводить и суммировать любое количество чисел. Если будет введено число 999, на экран вывести результат суммирования.
Для решения этой задачи сначало нужно ввести число, а потом проверить его значение (проверить условие выхода из цикла). Для этого нужен цикл с постусловием.
write(‘Введите очередное число: ‘);
writeln(‘Сумма введенных чисел равна ‘, sum);
Мы познакомились с циклами с условием.
До встречи на следующем уроке.
Урок из цикла: «Язык программирования Паскаль»
Целочисленная арифметика языка Паскаль основана на использовании пяти стандартных целых типов: Byte, Word, ShortInt, Integer, LongInt.
Cо всеми целыми типами связан набор из пяти основных арифметических операций: +, -, *, div, mod.
На этом уроке вы узнаете стандартные приемы, которые используются при решении задач целочисленной арифметики, рассмотрите решение нескольких учебных задач с применением циклов.
Первые три, из перечисленных операций, имеют обычный смысл сложения, вычитания и умножения, соответственно, а последние две определяются так: A div B — частное от деления нацело, A mod B — остаток от деления нацело двух целых чисел A и B.
При этом, для неотрицательных А и В (В‡0), частное A div B показывает, сколько раз делитель — число B, содержится в делимом — числе A; в то же время, остаток A mod B показывает, сколько останется, если из делимого — числа А, вычесть все вхождения в него делителя — числа В.
15 div 6 = 2 (здесь 2 — частное. Оно показывает, сколько раз делитель — число 6, содержится в делимом — числе 15).
15 mod 6 = 3 (здесь 3 — остаток. Он показывает, сколько останется, если из числа 15, вычесть все вхождения в него числа 6).
Для целых, неотрицательных A и B, операции div и mod связаны простым соотношением: A mod B = A — (A div B)*B.
Большая часть учебных задач целочисленной арифметики построена на свойствах делимости и решается именно с применением операций div и mod.
При этом, обычно используется несколько стандартных приёмов, которые для успешного решения таких задач, необходимо твёрдо усвоить.
А mod B = 0
— условие делимости целого A на целое B.
— условие чётности целого A.
— значение последней цифры в десятичной записи целого А (например, 1234 mod 10 = 4).
число, десятичная запись которого получится отбрасыванием последней цифры в десятичной записи целого числа А (например, 1234 div 10 =123).
— значение последней цифры в p-ичной записи целого А (например, при p=2, A mod 2 — последняя цифра записи А в двоичной системе счисления);
— число, p-ичная запись которого получится отбрасыванием последней цифры в p-ичной записи целого числа А (например, 510=1012; 510 div 2 =210=102; т.е. из 1012 получили 102);
Рассмотрим примеры решения типовых задач целочисленной арифметики с использованием циклов.
Пример1. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n(0
Вопросы для обсуждения
- Каким действием можно выделить последнюю цифру числа?
- Каким действием можно выделить первую цифру числа?
k- это просматриваемое число;
p1 — это первая цифра числа k;
p2 — это вторая цифра числа k;
s — это сумма цифр данного числа k.
Число k будем выводить на экран только в том случае, когда сумма p1 и p2 будет равна s.
Var k,n,p1,p2,s : Integer;
Writeln(‘Введите целое число n (0