» »

Программирование. Циклы Pascal-Паскаль. Операторы "Паскаль". Язык программирования Pascal Оператор цикла с параметром в языке паскаль

25.03.2024

Операторы цикла заставляют выполнять входящие в их состав операторы несколько раз.

В Паскале существует три вида операторов цикла: оператор цикла с параметром, оператор цикла с предусловием, оператор цикла с постусловием.

Оператор цикла с параметром

Формат оператора цикла с параметром:

for V:=E1 to E2 do S

где V - переменная порядкового типа, Е1, Е2 - выражения того же типа, S - оператор, называемый телом цикла. Выражения Е1 и Е2 вычисляются один раз при входе в цикл. Параметр V принимает сначала значение Е1 затем непосредственно следующее за ним (SUCC (V)) и т.д. до достижения Е2. При каждом значении V выполняется оператор S. Если в теле цикла необходимо выполнить несколько операторов, то их объединяют в один с помощью составного оператора. Если конечное значение Е2 меньше начального Е1, то оператор S не выполняется ни разу.

Оператор цикла с параметром применяется также в следующем виде:

for V:=Е1 downto E2 do S

В отличии от первого случая, V изменяется от Е1 до Е2, переходя от V к pred (V).

Отметим, что если V, Е1, Е2 типа INTEGER, то в первом случае это цикл с шагом +1, а во втором с шагом -1.

Оператор цикла с предусловием

Формат оператора цикла с предусловием:

где B - логическое выражение, S - оператор. Оператор S будет выполняться пока условие B будет истинно. Выполнение оператора цикла завершится когда выражение B впервые примет значение false.

Оператор цикла с постусловием

Формат оператора цикла с постусловием:

repeat S until B

где B - логическое выражение, S - оператор. Оператор S выполняется до тех пор, пока B не станет истинным. Оператор REPEAT выполняется по крайней мере один раз, так как проверка истинности условия B осуществляется после выполнения оператора S.

Служебные слова REPEAT и UNTIL уже играют роль скобок, поэтому операторные скобки BEGIN и END являются необязательными.

Примеры программ

В качестве примера использования операторов цикла рассмотрим программу вычисления факториала.

Программа 2.1.1. Цикл с параметром (шаг +1)

PROGRAM FACTORIAL1;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1;

FOR I:=1 TO N DO F:=F*I;

Программа 2.1.2. Цикл с параметром (шаг -1)

PROGRAM FACTORIAL2;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1;

FOR I:=N DOWNTO 1 DO F:=F*I;

WRITELN ("ФАКТОРИАЛ ОТ ",N," РАВЕН ",F)

Программа 2.2. Цикл с предусловием

PROGRAM FACTORIAL3;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1; I:=1;

WHILE I<=N DO

WRITELN ("ФАКТОРИАЛ ОТ ",N," РАВЕН ",F)

Наверное, каждому школьнику известен язык программирования, который называется "Паскаль". Что же он представляет собой? Уже давно данный язык стал мертвым, ведь используется лишь в школах для обучения учеников и считается базой. Он относится к упрощенному варианту языка Algol. Но, в отличие от последнего, "Паскаль" может использоваться для написания реальных программ и даже игр. Ранее он имел достаточную популярность, но сейчас сохранился лишь, по сути, для учебных целей. Первое, что привлекает потенциальных программистов в "Паскале", - это возможности писать, сохраняя свойства английского языка, а не ломать головы над использованием специальных схем, которые приняты в языках, подобных С.

Создал "Паскаль" Никлаус Вирт в 1970 году. Назван язык в честь ученого Блеза Паскаля, который стал отцом первой в мире машины. Она могла складывать два разных числа. Прямым потомком языка "Паскаль" является "Модула-2". Последний представляет собой усовершенствованную версию.

Система программирования

Pascal ABC - язык программирования, представленный уже существующей системой. Однако описываемый является вариантом нового поколения.

Почему же создали "Паскаль АБС"? Для этого было две существенные причины:

  • устаревшие системы первоначального языка;
  • желание сформировать более современную и интегрированной среду программирования.

Язык включает в себя систему классического "Паскаля", элементы "Делфи" и собственные расширения. Появился он в 2002 году.

Существует также одноименный компилятор, который является мощной и современной Он способен работать как на Linux, macOS, так и на Windows.

Платформа.NET позволяет использовать некоторые дополнительные функции, а также программировать в структурном, объектно-ориентированном и функциональном стилях. Автором данного языка стал Михалкович. Влияние на него оказал не только "Паскаль" и "Делфи", но еще С# и "Питон".

Общая характеристика операторов

Операторы в языке программирования необходимы для того, чтобы написать программу. Они дают возможность выполнять те или иные функции и алгоритмы. Чем команды в "Паскале" отличаются от других элементов? Тем, что они подразумевают выполнение какого-либо действия. "Паскаль" устроен таким образом, что все операторы состоят из специальных служебных слов. Отделяются команды между собой и другими элементами при помощи символа точка с запятой (;). Все операторы условно делятся на группы:

  • Простые. Такие команды не содержат в себе других элементов. Таковыми являются: (двоеточие и равно), процедуры безусловного перехода (используются для меток).
  • Структурированные. Эти операторы состоят из других элементов: составной условия, циклов, присоединения.

Обе группы будут подробно рассмотрены ниже в статье.

Оператор процедуры

Данный оператор необходим для вызова процедуры. Для того чтобы создать строчку в среде программирования, необходимо указать идентификатор, за которым должны располагаться параметры вызова. Однако в языке имеются процедуры, не имеющие последнего элемента. Они в "Паскале" делятся на два типа:

  • стандартные (прописаны в самом языке);
  • пользовательские (созданные программистом).

При прописании определенного набора элементов в строке задействуется та или иная процедура.

Операторы ("Паскаль"), которые отвечают за стандартные действия, запомнить достаточно легко. Необходимо написать в разделе описаний слово uses и ввести описание процедуры. Есть такие стандартные элементы, которых нет необходимости вводить в первый блок. Таковыми являются задачи read, write и другие.

Пользовательские процедуры необходимо перед работой программы создать и поместить в раздел описаний или в модуль. При использовании последнего варианта его следует записать в раздел USES или PROCEDURE.

Оператор безусловного перехода

Простые операторы использовать достаточно легко, в том числе и GOTO. В "Паскале" имеется раздел меток, который позволяет поместить определенный, необходимый разработчику оператор, а позже за счет безусловного перехода сослаться на него. В качестве метки должен использоваться набор цифр и букв без знаков и пробелов. От строки она отделяется двоеточием (:). Перед тем как создать метку, в разделе описаний LABEL необходимо указать имена данного элемента.

Перед тем как создавать отдел, необходимо знать о некоторых нюансах:

  • все описанные метки должны быть использованы;
  • если элементы имеют названия из чисел, то можно их не объявлять.

К сожалению или к счастью, оператор GOTO в современных языках программирования не используется. Это связано с тем, что подобные системы, работая, создают принцип конвейера. А такие операторы ("Паскаль"), как GOTO, нарушают вычислительный процесс.

Операторы условия

Условный оператор, представленный конструкций IF-THEN-ELSE, используется для отображения ветвлений, в которых один из вариантов обязательно является ложью. Вычислительный процесс будет продолжаться по одному из представленных вариантов. Условно процесс делится на два вида:

  • структура вилки (когда существует два варианта действий, и каждый приводит к своему результату);
  • структура обхода (когда второй вариант неверен, и в таком случае программа обходит результат, предназначающийся для правды).

Конструкция IF-THEN-ELSE представляет структурированные операторы. Данные слова являются служебными. При этом последнее не подлежит обязательному использованию.

Как же работает конструкция? С английского она переводится как «если-тогда-иначе». Если условие, заданное программой, верно, то выполняется то, что написано после слова then. А если же оно неверное, то действительным считается то, что записано после else или после строчки с then.

Составной оператор

Для того чтобы понимать данное словосочетание, нужно знать определение. Составные операторы ("Паскаль") - это набор операций в написанной программе, которые заключены в скобки BEGIN-END. За счет этого группа команд представляется как единственная целостная.

Оператор выбора

Из-за того, что оператор IF способен работать лишь с двумя ветвлениями, была создана команда выбора CASE. В данной системе есть служебные слова - case, of, end, else. При этом последнее также может отсутствовать. До того как оператор сработает, должен быть объявлен параметр и его значение. Если ключ выбора совпадает с константами выбора, то выполняется тот оператор, который идет после последнего. Если правильности нет, то и все команды игнорируются. Выполняется тот вариант, который идет после слова ELSE или после оператора CASE.

Данный оператор выбора в "Паскале" не использует такую систему работы, как IF. Здесь нет явной проверки условия. Если рассматривать его работу более подробно, то можно заметить, что CASE вводит небольшой диссонанс в программу, так как оператор заканчивается словом END, к которому нет парного BEGIN. Его использовать намного удобнее, особенно если есть 5 и более вариантов выбора. Прописывать постоянно IF-THEN будет долго, да и это не есть удобным процессом.

Операторы ("Паскаль"): циклы

Что такое циклы? Они подразумевают собой повторение некоторых систем команд несколько раз до полного удовлетворения условия. В "Паскале" известно два :

  • цикл с параметром;
  • итерационный.

Что же представляет каждый? Первый всегда имеет известные параметры. Иногда его еще называют регулярным. Его основным отличием является то, что количество повторений цикла известно до его начала.

В итерационном же подобный нюанс неизвестен. Выполнение цикла происходит до тех пор, пока не произойдет выполнение условия.

Отличить виды и типы циклов можно при помощи некоторых структур:

  • REPEAT: повторение с постусловием.
  • WHILE: повторение с предусловием.
  • FOR - оператор счета. Он используется в цикле с параметром.

Первые два варианта используются для итерационного повторения. Основное отличие их от последнего оператора - их можно использовать в цикле с параметром, а FOR - для повторений без параметра нельзя.

Операторы ввода-вывода

За взаимодействие среды программирования с окружающей средой отвечают операторы ввода-вывода. Именно они позволяют вводить информацию и выводить результат на экран или на печать. Команда read позволит пользователю в запущенной программе указать свои данные. Как это происходит? Программа на время останавливается, на экране появляется мигающий курсор, который ожидает ввода данных от человека. Разница в работе двух операторов read и readln небольшая. Последний просто переносит курсор на следующую строку.

Оператор вывода ("Паскаль") - write(ln). Частичка LN позволяет продолжить вывод данных на следующей строке. Если в программе указать просто оператор, то будет выведена на экран пустая срока. Использовать в таком смысле данную команду не обязательно.

Имеются также операторы var, close. Их можно не использовать, если того не требует сама программа.

Основные операторы ("Паскаль") описаны в статье. Они помогут лучше написать программу, сами же работают достаточно быстро и без сбоев. Без них не сложится ничего у будущего программиста при работе с языком "Паскаль". Программы без операторов, увы, представить нельзя. А значит, ими необходимо уметь оперировать. Сложными могут показаться операторы цикла, однако следует потренироваться и проблемы все исчезнут. Удачи в работе!

Основа программирования - циклы, например, for. Pascal. Как и любой компьютерный язык, он также содержит такие конструкции в своём синтаксисе.

Назначение циклических операторов

Типичная задача - заставить компьютер выполнять одно и то же действие несколько раз. Вот здесь и спасают конструкции, позволяющие организовать повторение кода. Итак, цикл в программировании - это многократно исполняемое действие, организуемое с помощью средств языка.

Язык программирования Pascal включает несколько таких конструкций:

  • for - повтор с параметром;
  • while - повтор с предусловием;
  • repeat ... until - повтор с постусловием.

Несмотря на кажущуюся простоту и очевидность циклических конструкций, начинающие программисты сталкиваются с рядом проблем при их реализации. Наибольшие сложности вызывает постановка условий выхода из цикла. В этом отношении счётный оператор for является самым незамысловатым.

Структура

Чтобы записать конструкцию повтора с параметром, нужно набрать следующий код:

FOR {a} := {b} TO {c} DO {d}.

В примере зарезервированные слова языка для удобства написаны заглавными буквами, на практике можно использовать строчное начертание. Используемые переменные и операторы приведены в фигурных скобках. Они означают:

  • { a} - переменная любого счётного типа, чаще всего INTEGER;
  • { b}, { c} - выражения счётного типа, такого же, как и { a} ;
  • { d} - произвольный оператор/операторы языка, называемые также телом цикла.

Отрабатывая конструкцию for , Pascal рассчитывает значение { b} , присваивает { a} := { c} , после чего запускается повтор действий:

  • проверка условия { b} <= { c} , при выполнении которого цикл останавливает свою работу;
  • запуск оператора {d} ;
  • увеличение значения {a} на единицу, то есть { a} := { a} + 1 .

Поскольку количество повторений внутри тела for известно, данную конструкцию относят к детерминированным циклам.

Пример

Чтобы понять, как будет выполняться for , далее, приведён пример, кода на языке паскаль для «чайников».

  • s:= 0;
  • for a:= 1 to 5 do
  • begin
  • s:= s + a;
  • end;
  • writeln(s);

Разбираясь в написанных инструкциях, можно записать значения в каждой итерации:

  • 1-я итерация: a = 1; s = 1 ;
  • 2-я итерация: a = 2; s = 3 ;
  • 3-я итерация: a = 3; s = 6 ;
  • 4-я итерация: a = 4; s = 10 ;
  • 5-я итерация: a = 5; s = 15 .

В итоге пользователь увидит на экране число «15» - сумму чисел от 1 до 5.

Чтобы сделать первую программу более универсальной, следует заменить числа 1 и 5 переменными.

Частые ошибки

При использовании цикла for , Pascal требует внимательного отношения к значениям { a}, { b}, { c} . Если не выполнять правила написания программ, компилятор сообщит об ошибке. Таких правил пять.

  1. Счётчик (параметр цикла) { a} задаётся целым числом.
  2. Значения { b} и { c} также должны иметь целочисленный тип. Например, нужно просчитать значения угла, заданного в радианах от 0 до p. Но следующая запись кода будет неверной for a:= 0 to pi do. Решение - использовать функции округления trunc () или round (). Первая отбрасывает дробную часть вещественного числа, вторая - округляет его до ближайшего целого.
  3. Если пользователь ошибся и указал {b} < {c} , оператор {d} ни разу не отработает.
  4. После выполнения цикла счётчик { a} может иметь любое значение. Хотя это противоречит логике, но на практике { a} <> { c} . Вывод: не рекомендуется обращаться к { a} после выполнения конструкции for .
  5. В теле цикла (то есть после слова do ) не рекомендуется использовать какие-либо операторы, изменяющие значения параметра { a} . Следование данному правилу ошибки не вызовет, но будет нарушена логика программы.

Следующее правило является общепринятым и соответствует «хорошему тону» в программировании: чтобы было удобно работать с кодом, необходимо записывать операторы тела цикла не с первой колонки. Например, делая 2-3 пробела слева или используя клавишу Tab.

Данное предписание применимо не только к языку паскаль. Для «чайников» оно позволяет быстро найти и исправить ошибку в инструкциях.

Типичные задачи

Допустим, необходимо выполнить вида f(x) = 3* x + 15 , то есть получить таблицу из M значений функций в диапазоне [x 1 ; x 2 ], где x 1 и x 2 - минимальное и максимальные значения аргумента. Решать эту и подобные задачи помогает конструкция for . Pascal рекомендует записать программный код следующим способом:

  • for a:= 1 to M do
  • begin
  • x:= x1+(x2-x1)*(a-1)/(M-1);
  • f:= 3*x + 15;
  • writeln (x, ‘ ’, f);
  • end.

Поскольку шаг изменения x не задан, значение аргумента рассчитывается в ходе программы при каждой итерации с помощью формулы: x:= x1+(x2- x1)*(a-1)/(M-1).

Цикл в цикле

Ввиду того, что внутри конструкции разрешается использовать любые операторы, допускается поместить в её тело ещё один цикл for . Pascal имеет стандартное описание для данной задачи, сходное с другими языками программирования:

  • FOR {a} := {b} TO {c} DO
  • FOR {a1} := {b1} TO {c1} DO

Чтобы конструкция работала верно, необходимо соблюдать условие: счётчики в каждом цикле должны быть разные. Иначе внутренний цикл будет менять значение параметра внешнего цикла, что приведёт к логическим ошибкам.

Оператор цикла с параметром (цикл FOR)

Общий вид:

for <пар .>:=<n1 > to <n2 > do <оп .> ;

<пар .> – параметр цикла, переменная дискретно-упорядоченного типа , как правило типа integer,

<n1 > – выражение того же типа, начальное значение параметра, присваиваемое ему на входе в цикл,

<n2 > – выражение того же типа, конечное значение параметра,

<оп. > – оператор, выполнение которого повторяется до тех пор, пока параметр цикла, увеличиваясь после каждого шага на единицу, не превысит <n2 >.

Иными словами, цикл for действует следующим образом: вначале вычисляется параметр <n1 > и осуществляется присваивание <пар .>:=<n1 >. После этого циклически повторяется (для параметра целого типа):

1) проверка условия <пар .>¹+1, если условие не выполняется (т.е. <пар .>=+1) , то цикл завершается;

2) выполнение оператора <оп .>;

3) увеличение переменной <пар .> на единицу.

Замечание 1: Переменная <пар .>, а также выражения <n1 > и <n2 > не могут быть типа real , так как он не является дискретно-упорядоченным.

Замечание 2: В качестве <оп .> может присутствовать только один оператор . В случае, если повторяться должны сразу несколько операторов, то их надо сформировать в блок с помощью операторных скобок begin и end.

Блок-схема: цикла FOR :


Другая форма оператора FOR:

for <пар .>:=<n2 > downto <n1 > do <оп .> ;

В этом случае оператор <оп .> повторяется при уменьшении параметра цикла на единицу. Цикл завершается при достижении условия <пар .>=<n1 >–1.


Блок-схема:



Оператор цикла с предусловием (цикл WHILE)

Общий вид:

while <условие > do <оп.> end;

<условие > – выражение логического типа,

<оп .> – оператор.

Действие . Циклически повторяется:

1) проверка выражения <условие >. Если результат есть false (т.е. <условие > ложно), то цикл завершается;

2) в случае, если <условие > истинно, выполняется оператор <оп .>.





Замечание: Как и в цикле FOR, в качестве <оп .> может присутствовать только один оператора. Если операторов, которые должны повторяться, больше одного, то они должны быть сформированы в блок с помощью операторных скобок begin и end.

Оператор цикла с постусловием (цикл REPEAT)

Общий вид :

<оп.1 >;

<оп.2 >;

…………

<оп.N >;

until <условие >;

<оп.1 >, <оп.2 > ,…, <оп.N > – операторы,

<условие > - выражение логического типа.

Действие. Последовательность операторов <оп.1 >, <оп.2 > ,…, <оп.N > выполняется хотя бы один раз, после чего проверяется <условие >. Если результат есть true, то цикл завершается. В противном случае опять выполняется последовательность операторов, <оп.2 > ,…, <оп.N > , затем снова проверяется условие и так далее.

Блок-схема:


Замечание 1. Конструкция repeat … until позволяет повторять сразу несколько операторов, поэтому здесь не требуется (как в случае FOR и WHILE) формировать операторы в блок.

Замечание 2 . <условие > в цикле WHILE и <условие > в цикле REPEAT имеют противоположный смысл: в цикле WHILE <условие > есть условие продолжения цикла, а в цикле REPEAT <условие > есть условие окончания цикла.

Пример 1. Дано целое n . Вычислить сумму

Решение. Для обозначения суммы вводится переменная s , которой изначально присваивается значение 0. Затем организуется цикл, на каждом шаге которого к s прибавляется очередное слагаемое. Поскольку известны границы изменения k (от 0 до n ), то в качестве оператора цикла удобнее всего взять цикл FOR с параметром k и границами 1 и n.

Программа:

var k,n:integer; s:real;

writeln(¢введите n¢);

for k:=1 to n do

s:=s+k/(1+k*k*k);

writeln(¢s=¢,s)

Пример 2 . Сумма тех же слагаемых, что и в примере 1, только вместо n даётся вещественное число (степень точности). Требуется суммировать до тех пор, пока очередное слагаемое не станет меньше .

Решение. В этом случае число слагаемых заранее не известно, зато известно условие, при котором следует закончить суммирование. Поэтому удобнее использовать цикл с выходом по условию, например REPEAT. Для обозначения очередного слагаемого удобно ввести переменную а .

Программа:

var k,eps,s,a:real;

writeln(¢введите eps¢);

until abs(a)

writeln(¢s=¢,s)

Пример3. Даны n, m. Вычислить сумму

Решение. Считается сумма по двум параметрам, следовательно используется конструкция «цикл в цикле». Внутренний цикл считает сумму по j при фиксированном i, внешний – сумму по i.

Программа:

var i,j,m,n:integer;

writeln(¢введите m,n¢);

for i:=2 to m do

for j:=1 to n do s:=s+1/(i*i+j*j*j);

writeln(¢s=¢,s)

Пример 4 . Даны х,n. Вычислить сумму

Решение: Здесь слагаемое имеет более сложную структуру – оно содержит факториал k !=1*2*3*…*k , вычисление которого есть само по себе цикл, степень , операции для вычисления которой в данной версии паскаля нет, и «мигалку»

С помощью этого оператора переменные в Турбо Паскале могут получать свои значения программным путем (то есть не с клавиатуры). Формат:

<идентификатор (имя) переменной>:= <выражение>

Система сначала вычисляет значение выражения, затем присваивает его переменной.

    Составной оператор.

Составной оператор – это последовательность любых операторов Турбо Паскаля, заключенная в операторные скобки begin и end. Например:

begin a:=5; write (‘a=’,a); end;

Среди операторов составного оператора могут быть другие составные операторы, то есть допускается любая глубина их вложения. Например:

    Операторы условного перехода.

Они существуют для организации ветвлений в зависимости от истинности или ложности некоторого условия. Таких операторов два: полный условный оператор и неполный условный оператор.

    Полный условный оператор

Реализует алгоритмическую конструкцию «полная развилка»:

Его формат:

if <логическое выражение> then <оператор 1> else <оператор 2>

If, then, else – служебные слова «если», «тогда», «иначе». Перед словом else точка с запятой не ставится. Оператор 1 и оператор 2 могут быть как простыми операторами, так и составными. Составной оператор следует заключать в операторные скобки begin и end.

Действия условного оператора: если логическое выражение имеет значение true, то выполняется оператор 1, если логическое выражение имеет значение false, то выполняется оператор 2.

    Неполный условный оператор

Реализует алгоритмическую конструкцию «неполная развилка»

Его формат:

if <логическое выражение> then <оператор >

If, then – служебные слова «если», «тогда». Оператор может быть как простыми оператором, так и составным.

Действия условного оператора: если логическое выражение имеет значение true, то выполняется оператор, если логическое выражение имеет значение false, то условный оператор пропускается и выполняется оператор, следующий за ним.

Условные операторы (полный и неполный) могут иметь вложенную конструкцию, то есть после слов THEN или ELSE опять используется условный оператор. Служебное слово ELSE всегда относится к ближайшему слева слову THEN.

В состав условного оператора может входить один простой оператор. Если по смыслу задачи требуется вставить несколько операторов, то они объединяются в составной.

Замечание: после слова THEN не может сразу записываться новый условный оператор, а после ELSE – может. Например:

В тех случаях, когда требуется проверить несколько условий, применяются сложные условные операторы. В них используются логические операции and, not, or. Например:

if ((x>3) and (y>3) and (z>3)) then ...

    Операторы организации цикла.

Цикл – это многократно повторяемый участок программы. Для организации цикла в Паскале используются три оператора: оператор с предусловием, оператор с постусловием и оператор с параметром.

    Оператор цикла с предусловием

Этот оператор реализует блок-схему цикла с предусловием:

Его формат:

While <логическое выражение> Do <тело цикла>

While («пока»), Do («делать») - служебные слова.

Действия оператора: пока логическое выражение имеет значение true, выполняется тело цикла; как только логическое выражение принимает значение false, действие оператора заканчивается и выполняется оператор, следующий за ним. Значение логического выражения проверяется перед телом цикла. Если логическое выражение ложно с самого начала, то тело цикла сразу опускается.

Если тело цикла содержит последовательность операторов, то говорят, что оно образует составной оператор, в начале и в конце которого надо писать операторные скобки Begin и End.

Если же тело цикла - один оператор (не составной), то операторных скобок не требуется. Тогда транслятор считает, что тело цикла заканчивается на ближайшем знаке «;». В Паскале нет специальных слов для обозначения начала цикла и конца цикла. На все случаи есть универсальные слова Begin и End.

    Оператор цикла с постусловием

Этот оператор реализует блок-схему цикла с постусловием:

Его формат:

Repeat <тело цикла> Until <логическое выражение>

Repeat («повторять»), Until («до тех пор») - служебные слова.

Тело цикла может быть как одиночным, так и составным оператором, однако употребления Begin и End не требуется, поскольку сами слова Repeat и Until выполняют роль операторных скобок.

Действия оператора: выполняется тело цикла, затем проверяется значение логического выражения. Если логическое выражение имеет значение false, то опять выполняется тело цикла. Так продолжается до тех пор, пока логическое выражение не примет значение true. То есть тело цикла повторяет свое выполнение, если условие ложно. Повторение кончается, когда условие станет истинным. Действие оператора заканчивается и выполняется оператор, следующий за ним. Значение логического выражения проверяется после тела цикла.

Замечания:

    Перед каждым выполнением тела цикла логическое выражение должно иметь конкретное значение.

    Тело цикла должно иметь хотя бы один оператор, влияющий на значение логического выражения, иначе цикл будет выполняться бесконечно.

    В конце концов логическое выражение должно принять значение, заканчивающее цикл.

    Оператор цикла с параметром

Этот оператор реализует блок-схему цикла со счетчиком. Его формат:

for <параметр цикла>:= <арифметическое выражение 1> to <арифметическое выражение 2> do <тело цикла>

for < параметр цикла >:= < арифметическое выражение 1> downto < арифметическое выражение 2> do <тело цикла>

Параметр цикла – это переменная любого типа, кроме real.

Арифметические выражения 1 и 2 должны иметь тот же тип, что и параметр цикла. Тело цикла – любой оператор Паскаля (простой, сложный, составной).

Действия оператора: параметру цикла присваивается значение арифметического выражения 1. Если оно меньше (для for - to - do ) или больше (для for - downto - do ) значения арифметического выражения 2, то выполняется тело цикла. Затем параметр цикла увеличивается (уменьшается) на величину, указанную в теле цикла. Потом он снова сравнивается с арифметическим выражением 2. И так до тех пор, пока параметр цикла не станет больше (меньше) значения арифметического выражения 2. Далее оператор цикла заканчивает работу и выполняется следующий за ним оператор.

Если параметр цикла имеет тип integer, то при слове to шаг изменения параметра равен единице (при downto шаг равен -1).

Этот оператор имеет ограниченное применение, то есть его можно использовать только в тех случаях, когда известно число повторений тела цикла