Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Циклы в Turbo Pfscal V.7.0

Замечание 1

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

В среде программирования Turbo Pascal используют 3 вида циклических операторов:

Оператор цикла While

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

Синтаксис оператора:

while do ;

где представляет собой оператор, который может быть простым или составным, а предствлено выражением булевого типа.

Действия оператора цикла while заключаются в следующем:

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

Рассмотрим пример написания программы, с помощью которой вычислим и выведем на экран таблицу значений функции y = a x x при x = 1,2, 3,..., 30; a = 10.1, используя цикл while.

Пример 1

program prg;

uses CRT;

var y, a : real; x : integer;

Begin

ClrScr;

x := 1; a := 10.1;

while x

begin

y := a x x;

WriteLn(' x =', x,' y =', y:6:4);

Inc(x)

end;

ReadLn

End.

«Циклы в Turbo Pfscal V.7.0» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

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

Приведем пример:

Пример 2

while True do write('Бесконечный цикл');

while 6 = 6 do write('Бесконечный цикл');

{ Результат 6 = 6 всегда будет True }

Оператор цикла Repeat

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

По завершении цикла проверяется условие. При ложном условии операторы цикла выполняются снова. При истинности условия - цикл завершается.

Приведем синтаксис оператора:

Пример 3

repeat

;

;

...........

until ;

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

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

  • вначале происходит выполнение операторов цикла, проверка значения логического выражения: при его ложности снова будут выполняться операторы цикла; при истинном значении цикл заканчивается;
  • при изначальной истинности логического выражения операторы цикла выполняются только 1 раз. В случае, когда логическое выражение вовсе не принимает истинного значения, операторы цикла будут выполняться бесконечно долго, т.е. речь идет о так называемом зацикливании;
  • нижняя граница операторов цикла четко обозначается ключевым словом until, в связи с этим операторы не заключаются в операторные скобки begin - end. Но, если вы написали дополнительно операторные скобки, это не будет являться ошибкой.

Приведем пример написания фрагмента программы вычисления A 8, используя цикл repeat:

Пример 4

..............

$ i : = 1$; $ p : = 1 $;

repeat

$ p : = p * a $; Inc(i)

$ until i > 9 $;

..............

Для выхода из цикла раньше времени используется оператор goto:

.....................

repeat

$s := 90 / a$; $s1 := a / s$;

if $s

$a := a + 1$

$until (a 0) $;

Metka:

.....................

Оператор цикла For

Для цикла с параметром характерно определение количества исполняемых циклов в операторе for. Приведем синтаксис оператора:

for $ i := n1 to n2 do $ ;

где i - переменная (параметр) цикла; n1, n2 - начальное и конечное значения переменной цикла.

В качестве параметра i может использоваться только простая переменная, а в качестве n1, n2 используются выражения кроме выражений вещественного типа (real).

Параметры i, n1, n2 должны быть одинакового скалярного, но не вещественного типа, т.е. могут быть целыми, символьными, ограниченного типа или перечисляющего. Параметр цикла i примет последовательно значения указанного типа от n1 до n2. Если i, n1, n2 – переменные целого типа, то они всегда будут изменяться с шагом +1.

Приведем пример:

program Pr5;

const a = 10.5;

var x : integer;

Begin

for x := 6 to 36 do Writeln('y=', a x x)

End.

Убывающий цикл по значениям параметра i от n1 до n2 можно записать, используя следующий оператор:

for i := n2 downto n1 do ;

При этом параметр i последовательно будет принимать убывающие значения указанного типа от n2 до n1.

Приведем пример:

Пример 5

for i := 30 downto 1 do s := s + 1;

В данном случае i изменяется от 30 до 1 с шагом -1.

Для выхода из цикла до момента достижения параметром цикла конечного значения можно воспользоваться оператором goto:

.....

for i := 1 to 55 do

begin

f := f + 1;

if (f > 150) or (i = 50) then goto 150

end;

150:

......

Такой путь не будет являться правильным. Поэтому во всех случаях, использующих преждевременный выход из цикла, рекомендуется применять описанные выше операторы while и repeat. Тело оператора for может содержать другие операторы for. Это используется при организации циклов, содержащих внутренние циклы. Такие внутренние циклы называют вложенными, например:

Пример 6

for i := 1 to 15 do

for j := 1 to 6 do Array[i, j] := 0;

Приведем пример написания программного кода вычисления суммы шести первых элементов ряда $1 + 1/2 + 1/3 + ...$ (значение i-го элемента ряда связано с его номером формулой 1/i). После вычисления очередного элемента ряда выводится номер элемента и его значение.

Пример 7

program Summa;

uses CRT;

var i : integer; { номер элемента ряда }

elem : real; { значение элемента ряда }

sum : real; { сумма элементов ряда }

Begin

ClrScr;

sum := 0;

for i := 1 to 6 do

begin

elem := 1/i;

sum := sum + elem;

WriteLn(i:2, ' ', elem:4:2);

end;

WriteLn('Сумма элементов ряда: ', sum:4:2);

ReadLn

End.

Дата написания статьи: 07.05.2017
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot