Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Оператор цикла с постусловием начинается со служебного слова repeat, заканчивается после выполнения условия, следующего за служебным словом until.

Формат оператора:

Repeat

< последовательность операторов>;

until < выражение>;

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

При использовании оператора repeat возможно зацикливание программы. Это может произойти, если проверяемое выражение постоянно сохраняет значение False.

Пример 1

Repeat

K: = I mod J; {остаток от деления I на J}

I: = J;

J: = K;

until J = 0;

Цикл выполняется ДО тех пор, пока J (остаток) не станет равно нулю.

Пример 2

Repeat

Write('Введите значение (0..9): ');

Readln(I);

until (I > = 0) and (I < = 9);

Цикл выполняется ДО тех пор, пока 0< =I< =9.

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

Оператор цикла с предусловием начинается с ключевого слова while и содержит в себе выражение, которое управляет повторным выполнением оператора тела цикла. Оператор тела цикла может быть составным оператором.

Формат оператора:

while < выражение> do

< оператор>;

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

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

Пример 3 Нахождение факториала числа Х.

Fact: =1;

while X< =N do

Begin

Fact: =Fact*X;

X: =X+1;

end;

Пример 4 Генерация случайного числа, не равного 10.

while I < > 10 do

I: =Random(10) {функция Random(10) генерирует случайное число 0< =I< 10}

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

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

Оператор for имеет два варианта записи:

- инкрементный (с возрастанием переменной цикла):

for < переменная цикла>: =< начало> to < конец> do

< оператор>;

- декрементный (с убыванием переменной цикла):

for < переменная цикла>: =< начало> downto < конец> do

< оператор>;

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

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

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

В случае декрементного варианта цикла значение переменной цикла

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

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

 

Пример 5 Инкрементный вариант

Вычислить сумму первых N членов разложения в ряд экспоненты ex, где N и X – заданные числа соответственно целого и вещественного типа.

Экспонента раскладывается в ряд по формуле

Напишем следующий фрагмент программы:

Sum: =1;

Prod: =1;

Fact: =1; {Начальные значения}

for I: =1 to N-1 do

Begin

Fact: =Fact*I; {Факториал I}

Prod: =Prod*X; {X в степени I}

{Сумма (I+1) члена разложения}

Sum: = Sum + Prod/Fact;

end;

Пример 6 Декрементный вариант

Обратный отсчет времени при запуске ракет:

WriteLn(‘Начинается обратный отсчет времени’);

for Seconds: =10 downto 1 do

WriteLn(‘Осталось’, Seconds, ’ сек.’);

WriteLn(‘Пуск! ’);

Программа выведет числа 10, 9, …, 1 и слово " Пуск".

4 Контрольные вопросы

1 Какие операторы цикла применяются в языке Pascal?

2 Что такое переменная цикла, тело цикла, оператор цикла?

3 Формат и действие оператора цикла с пост условием repeat.

4 Формат и действие оператора цикла с предусловием while.

5 Формат и действие оператора цикла с параметром for. Декрементный и инкрементный структуры оператора.

 

Задание

Вычислить сумму и произведение полученных значений функции. Составить три варианта программы – с операторами repeat, while, for.

.

№ вар. Выражение Данные
t=|sin(ax2+bx-c)| 1< =x< =5; ∆ x=0, 2 a=2, 1; b=3; c=-14, 2

 

t=2х3sin(e3x – 450+a)-lnс 10< =x< =25; ∆ x=0, 2; a=2, 22 c=-14, 2
11< =x< =15; ∆ x=0, 5; a=0, 2712; c=-14, 2
D = lg|x-a| 4< =x< =5; ∆ x=0, 2; a=2, 22;
1< =x< =15; ∆ x=2; a=2, 22; b=3; c=-14, 2
W = cos(-ax2+600) 1< =x< =3; ∆ x=0, 2; a=2, 22;
V = ln(sin x5)ab 3< =x< =5; ∆ x=0, 2; a=2, 22; b=3;
1< =x< =5; ∆ x=0, 2; a=2, 22; b=3; c=-14, 2
Z = + |(ax2-c8+50)| 1< =x< =5; ∆ x=0, 2; a=2, 22; b=3; c=-14, 2  
P = ln(4ax5+c-140) 1< =x< =5; ∆ x=0, 2; a=2, 22; c=-1  
1< =x< =2 ∆ x=0, 5; a=2, 22; b=3; c=-14, 2  
∙ 3|tg xa+b+c| 1< =x< =5; ∆ x=0, 2; a=2, 22; b=3; c=-14, 2  
F = 24|arctg xa+b| 1< =x< =5; ∆ x=0, 2; a=2, 22; b=3; c=-14, 2  
5< =x< =15; ∆ x=0, 2; a=2, 22; b=3; c=-14, 2  
5< =x< =50; ∆ x=10; a=2, 22; c=-14, 2  
  F = tg4(x5+c-190) 1< =x< =5; ∆ x=0, 2; c=-14, 2  
  L = ln3(4ax5c-140) 1< =x< =5; ∆ x=0, 2; a=2, 22; c=-14, 2  
8< =x< =5; ∆ x=1; a=2, 22; b=3; c=-14, 2  
M = |ln(3bx5-270)| 22< =x< =33; ∆ x=1.5; b=3  
           

 

10< =x< =20 ∆ x=2; a=2, 22; b=3; c=-14, 2  
           

 

Содержание отчета

1 Название работы.

2 Цель работы.

3 Содержание работы.

4 Постановка задачи для своего варианта.

5 Три программы с разными операторами цикла.

7 Результаты расчёта суммы и произведения - один раз.

8 Письменные ответы на контрольные вопросы.

9 Выводы по работе.

 

Лабораторная работа № 4

Итерационные циклы

Цель работы: изучение алгоритмов и программ, реализующих

итерационные циклы.

Содержание работы:

1 Итерационные циклы

2 Программа итерационного цикла

 

Итерационные циклы

Циклическая структура программы позволяет производить многократные вычисления группы операторов при изменении одного или нескольких параметров одновременно. В языке Паскаль имеются для этого операторы цикла for, repeat, while. В лабораторной работе №3 были рассмотрены эти операторы для решения задач с арифметическими циклами, в которых известны начальное, конечное значения аргумента и его шаг (приращение). Кроме того, число повторений цикла также было известно или его можно было определить.

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

Для вычислений с заранее неизвестным количеством повторений (итераций) оператор for не пригоден, поскольку в нём нужно задавать начальное и конечное значения аргумента, поэтому используются только операторы repeat и while.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-03; Просмотров: 1918; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.026 с.)
Главная | Случайная страница | Обратная связь