Ниже изложен теоретический материал (для повторения).
Циклы в языке ПаскальАВС.
Часто при написании алгоритмов необходимо какое-то действие
выполнять несколько раз подряд. Например, вам необходимо написать программу для
вывода на экран монитора
таблицы значений функции 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;
Комментариев нет:
Отправить комментарий