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

В общих чертах, сегодня узнаем о каждом из циклов в паскале поподробней и увидим как они задаются. Будем разбирать цикл while с предусловием , цикл for с параметром и цикл repeat - until с постусловием .

1. Цикл с параметром в Паскале - FOR

Цикл FOR задаёт определённое условие по которому программа будет работать до его выполнения, допустим нужно нам 5 (или n) раз зациклить программу, то это легко сделать с помощью данного цикла. У цикла FOR есть характерная черта - счетчик который обычно обозначается буквой i или j.

Внешний вид цикла с параметром в паскале:

for i:= 1 to n do // присваиваем i сначала одному, потом двум, трем, ..., n

После 1-го прохода переменной i присваиваем 1, после второго присваиваем 2 и так до тех пор, пока не дойдем до n. to - это до.. в порядке возрастания, также есть downto - до.. в порядке убывания.

Блок - схема цикла с параметром:

2. Цикл с предусловием в Паскале - WHILE

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

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

WHILE DO begin end;

Логическое выражение, истинность которого проверяется вначале выполнения циклического оператора;

Любые выполняемые операторы языка.

Порядок выполнения цикла:

Пока условие истинно выполняется тело цикла. Как только условие становится ложно выполнение цикла прекращается.

Блок - схема цикла с предусловием:


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

Пример:

Задача: вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30

program example-while;

Var sum:real; n:real; BEGIN sum:=0; n:=1; while n

3. Цикл с постусловием - Repeat - until.

Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после выполнения тела (действий) цикла. Это обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.

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

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

Блок - схема цикла с постусловием:

Формат записи, структура цикла:
REPEAT UNTIL ;

Пример:

Program test2; Var b:Real; Begin b:=100; Repeat b:=b/2; Until b

Выводы:

1.Цикл с параметром используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).

2. Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным, и продолжается, если условие истинно.

3. Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.

Очень часто возникает необходимость выполнить один и тот же оператор (или группу операторов) несколько раз. Для этого в языке 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 руб.

В большинстве программ встречается необходимость многократного выполнения некоторого оператора (или блока операторов). Для организации подобного рода конструкций могут использоваться операторы цикла. В языке программирования Паскаль используются следующие виды операторов цикла: for, while, repeat (в PascalABC.NET используется также оператор цикла foreach ).

Блок операторов, который необходимо выполнить многократно называется телом цикла.

Оператор for в Паскаль

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

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

В зависимости от направления изменения параметра цикла (возрастание - to или убывание - downto ) в языке Паскаль оператор цикла for может быть записан в одной из двух форм:

  • for параметр := нач_знач to кон_знач do
  • оператор;
  • for параметр := нач_знач downto кон_знач do
  • оператор;

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

Рассмотрим работу цикла for .

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

  1. Сравнивается текущее значение параметра с конечным значением.
  2. Если условие параметр кон_знач истинно, то выполняется тело цикла, в противном случае оператор for завершает работу и управление передается оператору, следующему за циклом.

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

Задача. Вывести на экран список квадратов целых чисел от 10 до 1.

Решение. В поставленной задаче параметр цикла убывает.

{Фрагмент кода программы}

  • for i:= 10 downto 1 do
  • writeln(i:2, " ", i * i);

Внимание: если в теле цикла необходимо использовать более одного оператора, то применяется составной оператор (операторные скобки begin и end ).

Пример 2. Известны оценки абитуриента на четырех экзаменах. Определить сумму набранных им баллов.

Задача. Известны оценки абитуриента на четырех экзаменах. Определить сумму набранных им баллов.

Решение. Будем использовать в программе оператор цикла с параметрами, так как известно количество повторений выполняемых действий (абитуриент получил ровно четыре отметки)

{Фрагмент кода программы}

  • s:= 0;
  • for i:= 1 to 4 do
  • begin
  • readln(mark);
  • s:= s + mark;
  • writeln(s);

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

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

В продолжение темы:
Office

Восстановление телефона планшета/смартфона Megafon модель V9 на операционной системе Android 2.3 с экраном сенсорный емкостный 16,7 млн цв - 600x1024 dpi из кирпича....