Сделай Сам Свою Работу на 5

Рекомендации по использованию циклов





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

Операторы. Операторы цикла

Цель работы: изучить операторы цикла: с предусловием WHILE, с постусловием REPEAT, со счетчиком FOR и оператор для записей WITH. Научиться составлять программы с использованием операторов ветвления и записи, процедур передачи управления break, continue, exit, halt.

Теоретическая часть.

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

Простые операторы. Простыми операторами могут быть:

— операторы присваивания;

— операторы обращения к процедуре;

— операторы безусловного перехода goto.

С помощью оператора присваивания какой-либо переменной присваивается значение, например: f:=false; str:='qwerty'; i:=(a+b+c)/c;

Для обращения к процедуре необходимо указать ее имя со списком фактических параметров, например tab_in(n,m);

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



Современный стиль программирования не рекомендует использование этого оператора, так как он затрудняет чтение и отладку.

Структурные операторы

К структурным операторам в Pascal 7.0 относятся операторы:

1) составные операторы begin, end;

2) условные операторы:

-условный оператор if;

-оператор выбора case;

3) операторы цикла:

-с предусловием while;

-с постусловием repeat;

-со счетчиком for;

4) оператор для записей with.

 

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

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

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



Рис. 1.

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

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

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

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, goto.

 

Оператор цикла WHILE...DO. Этот цикл называется с предусловием, т.к. проверка проводится до начала очередной итерации:

WHILE <выражение> DО <оператор>.

Выражение должно быть логического типа. Например, это может быть операция отношения или просто логическая переменная. Если результат вычисления выражения равен true, выполняется расположенный после служебного слова do простой или составной оператор. Эти действия повторяются до того момента, пока результатом выражения не станет значение false. После окончания цикла управление передается на следующий за ним оператор.



Если в теле цикла необходимо выполнить более одного оператора, необходимо заключить их в блок с помощью begin и end.

Пример №1.Программа печати таблицы значений функции

для аргумента, изменяющегося в заданных пределах с заданным шагом.

Опишем алгоритм в словесной форме.

1. Ввести исходные данные.

2. Взять первое значение аргумента.

3. Определить, какому из интервалов оно принадлежит.

4. Вычислить значение функции по соответствующей формуле.

5. Вывести строку таблицы.

6. Перейти к следующему значению аргумента.

7. Если оно не превышает конечное значение, повторить шаги 3 - 6, иначе закончить.

Шаги 3 - 6 повторяются многократно, поэтому для их выполнения надо организовать цикл. Назовем в программе начальное значение аргумента Xn, конечное значение аргумента Xk, шаг изменения аргумента dX, параметр - t. Все величины вещественные. Программа выводит таблицу, состоящую из двух столбцов - значений аргумента и соответствующих им значений функции.

program tabl_fun;var Xn, Xk, dX, t, x, y : real;begin writeln('Введите Xn, Xk, dX, t'); readln(Xn, Xk, dX, t); writeln(' --------------------------- '); writeln('| X | Y |'); writeln(' --------------------------- '); x := Xn; { Начальные установки } while x <= Xk do begin { Заголовок цикла } if x < 0 then y := t; if (x >= 0) and (x < 10) then y := t * x; if x >= 10 then y := 2 * t; writeln('|', x:9:2,' |', y:9:2,' |'); x := x + dX; { Модификация параметра цикла } end; writeln(' --------------------------- ');end.

Обратите внимание, что до первого входа в цикл переменной x уже должно быть присвоено какое-либо значение!

 

Оператор цикла REPEAT...UNTIL. Этот оператор называется циклом с постусловием, т.к. проверка условия осуществляется после каждого выполнения тела цикла:

Тело цикла с постусловием заключено между служебными словами repeat и until, поэтому заключать его в блок не требуется:

REPEAT <тело цикла> UNTIL <выражение>

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

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

Пример №2.Программа, вычисляющая квадратный корень вещественного аргумента X с заданной точностью eps по итерационной формуле:

yn = 1/2(yn-1 + x/yn-1),

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

program square_root;var X, eps, { аргумент и точность } Yp, Y : real; { предыдущее и последующее приближение }begin repeat writeln('Введите аргумент и точность (больше нуля): '); readln(X, eps); until (X > 0) and (eps > 0); Y := 1; repeat Yp := Y; Y := (Yp + X / Yp) / 2; until abs(Y - Yp) < eps; writeln('Корень из ', X:6:3, ' с точноcтью ', eps:7:5, 'равен ', Y:9:5);end.

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

 

Оператор цикла FOR...DO.

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

 

FOR параметр := выражение_1 TO выражение_2 DO операторFOR параметр := выражение_2 DOWNTO выражение_1 DO оператор

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

 

Пример №3.

Программа выводит на экран в столбик числа от 10 до 1 и подсчитывает их сумму:

var i, sum : integer;begin sum := 0; for i := 10 downto 1 do begin writeln(i); inc(sum, i) end; writeln('Сумма чисел: ', sum);end.

Если в теле цикла необходимо выполнить более одного оператора, необходимо заключить их в блок с помощью begin и end.

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

Рекомендации по использованию циклов

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

Чтобы избежать ошибок, рекомендуется:

· не забывать о том, что если в теле циклов while и for требуется выполнить более одного оператора, нужно заключать их в блок;

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

· проверить, изменяется ли в теле цикла хотя бы одна переменная, входящая в условие продолжения цикла;

· предусматривать аварийный выход из итеративного цикла по достижению некоторого предельно допустимого количества итераций.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.