среда, 13 февраля 2013 г.

9А. Циклы

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

Ниже изложен теоретический материал (для повторения).



Циклы в языке ПаскальАВС.

Часто при написании алгоритмов необходимо какое-то действие выполнять несколько раз подряд. Например, вам необходимо написать программу для вывода на экран монитора
таблицы значений функции 2x2-x+16 при x, изменяющихся в интервале от -10 до 10 с шагом 0,5.
Алгоритм решения этой задачи может выглядеть следующим образом:
1. Переменной x присвоить значение -10
2. Пока x меньше или равно 10 повторять:
- присвоить переменной y значение функции 2x2-x+16
- вывести на экран значения переменных x и y
- увеличить значение переменной x на 0,5

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

В Паскале различают три типа циклов: цикл с предусловием (“пока”), цикл с последующей проверкой условия и цикл с параметром (“для”).

Цикл с предусловием используют, как правило тогда, когда количество повторений тела цикла заранее неизвестно, но известно, до каких пор нужно его повторять.
Структура цикла “пока” выглядит следующим образом:

WHILE условие DO
begin
 оператор 1;
 оператор 2;
      ...
 оператор N;
end;

Последовательность операторов образует тело цикла, которое будет выполняться до тех пор, пока условие, стоящее после служебного слова WHILE, истинно. Если условие неверно, то тело цикла не выполняется и программа переходит к выполнению операторов, стоящих после слова end.

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

Programm tablica;
var
     x,y:real;
begin
  writeln (‘таблица значений функции 2*x*x-x+16 при x,   меняющихся от -10 до 10 с шагом 0.5’);
  x:=-10;
  while x<=10 do               {пока x<=10, повторять}
  begin
     y:=2*x*x-x+16;       {вычисление значения функции}
     writeln (x:6:2,y:6:4);  {вывод на экран значений переменных}
     x:=x+0.5;            {увеличение переменной x на 0.5}
  end;
end.

Обратите внимание на то, что после служебного слова DO точка с запятой не ставится.


Цикл с последующей проверкой условия применяется в тех же случаях, что и цикл “пока”, но при необходимости выполнить тело цикла хотя бы один раз.
Например, в задании предлагается вычислить все значения функции у= kх / x3, которые больше заданного числа Е, причем значения х - натуральные. В данном случае мы должны вычислить первое значение функции, убедиться, что оно не превосходит Е и только потом считать второе. Вычислив второе значение функции (х=2), убедимся, что оно не превосходит Е и вычисли третье значение и т.д. до тех пор, пока значение функции не станет больше Е.
В данном случае мы выполняем тело цикла (вычисляем значение функции), проверяем условие (значение функции меньше Е ), если условие не выполняется, повторяем команды тела цикла, в противном случае переходим к выполнению операторов, записанных после цикла.
Реализуется такая структура на Паскале следующим образом:
REPEAT
оператор1;
оператор2;
...
операторN;
UNTIL условие;

Тело цикла повторяется до тех пор, пока условие после служебного слова UNTIL ложно.

Программа, решающая рассмотренную выше задачу выглядит так:

PROGRAM primer;
var
 k,x: integer;
 E,y: real;
Begin 
 writeln(‘задай значение k’);
 readln(k);
 write(‘задай значение Е’);
 readln(E);
 x:=1;
 repeat
      y:=k*x/(x*x*x);
      writeln (‘при х=’,x:3,’значение функции:’,y:6:3);
      x:=x+1;
 until y>E;
end.


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

FOR i:=a to b do
begin
 оператор1;
...
 операторN;
end;

Здесь i - параметр цикла, переменная целочисленного типа, а - начальное значение переменной i, b - конечное значение переменной i.
Работает цикл так:
1.    переменой i  присваивается значение а
2.    если i<=b, то повторяются пункты 3 и 4, иначе цикл завершает свою работу
3.    выполняется тело цикла
4.    значение переменной i увеличивается на 1
5.    переход к пункту 2.

Например, часть программы, предназначенная для вывода на экран квадратов целых чисел из диапазона -10...10 запишется так:

for i:=-10 to 10 do
begin
      y:=i*i;
      writeln (i,‘в квадрате равно ’,y);
end;

Комментариев нет:

Отправить комментарий