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

Очень часто возникает необходимость выполнить один и тот же оператор (или группу операторов) несколько раз. Для этого в языке Pascal предусмотрены операторы циклов.

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

Форма записи: while <условие> do <оператор>;

Здесь while (пока), do {делать) - зарезервированные слова.

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

Блок-схема алгоритма работы такого оператора приведена на рис. 1.

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

Пример

I способ

. Вычисление факториала числа п (т.е. произведения 1 2 ... п ):

Program Fact_1;

Const n=5;

Var i, fact:integer;

Begin

i:=1; Fact:=1;

while i <=n do {заголовок цикла}

begin {начало цикла}

fact:= fact*i;

i:= i + 1

end; {конец цикла}

WriteLn("факториал", n, " = ",Fact:10)

End .

2. Оператор цикла с постусловием. Блок-схема алгоритма работы Оператора приведена на рис.2.

Форма записи:

Repeat

<оператор1>; <оператор2>;

Until <условие>;

Здесь Repeat {повторять до тех пор), Until (пока не будет выполнено условие) - зарезервированные слова.

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

Пример:

II способ

. Вычисление факториала числа п (т.е. произведения 1 2 ... п ):

Program Fact_2;

Const n=5;

Var i, fact:integer;

Begin

i:=1; Fact:=1;

Repeat

begin { начало цикла }

fact:= fact*i;

i:= i + 1

end; { конец тела цикла }

Until i >n; { условие }

WriteLn(‘ Факториал ", n, " = ",Fact:10)

End .

Здесь I – это счетчик повторов, который необходимо изменять вручную в цикле.

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

Этот цикл позволяет повторять действия заведомо известное количество раз.

Счетчик – это переменная, которая считает количество повторов цикла. В таком цикле происходит автоматическое увеличение показателя счетчика ровно на 1.

Форма записи:

FOR счетчик= нач_значение TO конечное_значение DO

BEGIN

. . . .

END ;

Если необходимо, чтобы параметр уменьшался на 1, то исполь зуют слово Downto (начальное значение больше конечного значения).

Пример:

III способ

Вычисление факториала числа п (т.е. произведения 1 2 ... п ):

Program Fact_3;

Const n=5;

Var i, fact:integer;

Begin

Fact:=1;

for i:=1 to n do

begin { начало цикла }

fact:= fact*i;

end; { конец цикла }

WriteLn (" Факториал ", n, " = ",Fact:10)

End.

В качестве оператора можно использовать любой простой или со ставной оператор.

При использовании этого оператора цикла нужно помнить следующие правила:

1) в качестве параметра можно использовать простую переменную, описанную в этом же блоке;

2) параметр должен иметь дискретный тип;

3) начальное и конечное значения должны иметь тот же тип, что и параметр;

4)в теле цикла (операторе) явное изменение значения параметра (например, оператором присваивания) может привести к бесконечному циклу;

5) нельзя в теле цикла изменить начальное и конечное значения па раметра, если они заданы переменными;

6) после завершения работы цикла значение параметра становится равным конечному значению параметра, если цикл не был прерван оператором перехода.

САМОСТОЯТЕЛЬНО

1. Напишите программу, которая выводит на экран в зонном формате числа:

7 49

5 25

3 9

1 1

2. Решить задачу тремя способами (с помощью разных видов цикла):

Через сколько лет L величина вклада достигнет желаемой суммы S (руб.), при начальном вкладе V (руб.), если ежегодный процент, гарантированный банком, составляет 10% от величины вклада.

Исполнить алгоритм при S = 100000 руб., V = 10000 руб.

Наверное, каждому школьнику известен язык программирования, который называется "Паскаль". Что же он представляет собой? Уже давно данный язык стал мертвым, ведь используется лишь в школах для обучения учеников и считается базой. Он относится к упрощенному варианту языка 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. Их можно не использовать, если того не требует сама программа.

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

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

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

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

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

Составной оператор – это последовательность любых операторов Турбо Паскаля, заключенная в операторные скобки 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).

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

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

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

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

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

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)

Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл - это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В ЯП Pascal есть три вида циклов:

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

цикл с предусловием;

цикл с постусловием.

Их алгоритмы выполнения различны, но есть и общее: после выполнения тела цикла, проверяется условие, и в зависимости от него работа цикла заканчивается, либо снова выполняется тело.

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

Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи:

  1. For <счетчик>:=< начальное значение> To <конечное значение> Do <тело цикла>;
  2. For <счетчик>:=<начальное значение> Downto <конечное значение> Do <тело цикла>;

Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.

Формы записи, представленные выше, отличаются словами To и Downto . Если Вы используете цикл с To, то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto, то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором - верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.

1
2
3
4
5
6
7
8
9
10

program for_primer;
uses crt;
var i, x: integer ;
begin
write (‘X=’ ) ;
readln (x) ;
for i:= 1 to x do
write (#3 , #6 ) ;
readkey;
end .

Здесь тело цикла не заключено в Begin-End, так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.

While – цикл с предусловием

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

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

Если выражение истинно, то тело выполняется, иначе цикл завершается. Поэтому нужно составить такой код, чтобы на какой-то из итераций выражение стало ложным, и цикл не выполнялся бесконечно.

Пример программы написанный с использованием цикла While:

В данном коде использовался составной оператор Begin-End, так как операторов в теле цикла несколько.

Repeat – цикл с постусловием

Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:

<тело цикла>

Until <условие>

В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:

1
2
3
4
5
6
7
8
9
10
11
12