alexgroup-studio.ru – Программы, безопасность, обзоры, новости

Программы, безопасность, обзоры, новости

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

Оператор цикла с параметром (цикл 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 , вычисление которого есть само по себе цикл, степень , операции для вычисления которой в данной версии паскаля нет, и «мигалку»

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

несколько раз.

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

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

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

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)

Основа программирования - циклы, например, 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

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

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

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

14. Операторы циклов в Паскале: с предусловием, постусловием и с параметром.

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

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

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

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

Арифметические циклы (циклы с параметром)

Синтаксис:

for <пар_цикла> := <нач_значение> to <кон_значение> do <оператор>

for <пар_цикла> := <нач_значение> downto <кон_значение> do <оператор>

Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.

Переменная цикла, начальное и конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.

Как и в случае использования оператора условного перехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin ... end).

Пример 2. Латинский алфавит .

for ch:="A" to "Z" do Writeln(ch);

Пример 3. Использование цикла с downto.

for i:=10 downto 1 do WriteLn(i);

Пример 4. Использование составного оператора.

for x:=1 to 10 do begin

WriteLn("f(",x,")=",y);

Итерационные циклы с предусловием

Синтаксис:

while <условие> do <оператор>

Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

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

Пример .

while x > eps do x:=x/2;

Итерационные циклы с постусловием

Синтаксис:

<оператор>;

<оператор>;

ператор>

until <условие>

Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.

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

WriteLn("Введите положительное число");


Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и правилами сайта, изложенными в пользовательском соглашении