Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Паскаль 2014 студентам.doc
Скачиваний:
151
Добавлен:
31.05.2015
Размер:
805.38 Кб
Скачать
  1. Циклические программы

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

Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же операторов. Число повторений этих операторов может быть задано в явной (цикл с известным числом повторений) или неявной (цикл с неизвестным заранее числом повторений) форме.

Впрактике программирования часто встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один или несколькопараметров изменяются. Операторов цикла (повтора)в Паскале три: for, repeat, while.

    1. Оператор For

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

Оператор For состоит из заголовка, в котором определяется порядок изменения переменной параметра цикла и тела цикла, являющегося многократно повторяющимся алгоритмом.

Общий вид оператора:

  • For – <параметр цикла>: = <начальное значение> to <конечное значение> do оператор; {тело цикла}.

Этот оператор применяется, если начальное значение < конечного значения;

  • For – параметр цикла:= <начальное значение> downto <конечное значение> do оператор;

применяется, если начальное значение > конечного значения.

Пример: найти сумму квадратов целых чисел от 8 до 12.

i

sqr(i)

s:=s+sqr(i);

s

0

8

64

0+64=64

64

9

81

64+81=145

145

10

100

145+100=245

245

11

121

245+121=366

366

12

144

366+144=510

510


Program Prim7_1;

Var i,s: integer;

BEGIN s:=0;

for i:= 8 to 12 do

s:=s+sqr(i); // тело цикла

writeln('Суммаs= ',s);

END.

Работа программы. В разделе Var выделяется ячейка памяти с именем i и s для хранения величин. Поскольку в S мы должны накапливать сумму, то вначале занесем в S ноль. Затем присваиваетсяi=8.Далее выполняется тело цикла: извлекается содержимое ячейки S (а там у нас 0) и к этому содержимому прибавляется sgr(i), т.е. i2=64. Результат присваивается ячейке S, т.е. в S теперь64.

Проверяется, не стал ли параметр цикла больше конечного значения параметра 12. Это не произошло, поэтому переменнойi присваивается следующее значение,равное 9,и вновь выполняется тело цикла, т.е. S:=64+81. Можно сказать так: S присвоить тому S, которое было раньше, + следующее i2. Так как цикл еще не закончился, то i станет равным 10, а S присвоится тому S, которое было раньше, т.е.145, и к нему прибавится еще текущее i2, т.е. 100. Этот процесс повторяется до тех пор, пока параметр цикла не станет равным12. Тогда в последний раз122прибавляется к накапливаемой сумме.

При i=13происходит выход из цикла и переход к оператору writeln (' Сумма S=' ,S);

Правила применения оператора цикла For

  1. Тело цикла – всегда один оператор. Если нужно, чтобы тело цикла состояло из нескольких операторов, то их объединяют в один составной операторс помощью операторных скобок begin, end.

For i:=l to n do

Begin

S:=S+sin(x)/cos(x);

x=x+0.01;

writeln('S=' ,S)

end.

Операторы, взятые в операторные скобки begin – end, считаются одним составным оператором.

  1. Начальное и конечное значения параметра цикла в общем случае являются выражениями. Тип этих выражений и тип параметра цикла должны совпадать. Здесь допускается применение любых типов, которые упорядочены с каким-либо фиксированным шагом (порядковые типы), это может быть любой скалярный тип, кроме вещественного, т.е. байтовый, целый, символьный, перечисляемый, интервальный, булевский. На практике чаще всего применяют целочисленный тип.

  2. В теле цикла параметр цикла не должен изменяться.

  3. Нельзя с помощью оператора перехода goto войти в тело цикла, минуя заголовок.

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