Задача: Вычислить значения функции y = x2 в точках 1.1,1.3,1.5,...,3.5
В решении задачи используется повторяющийся блок операторов:
x:=1.1;y:=x*x;
writeln('при x=',x,'y=',y);
x:=1.3;y:=x*x;
writeln('при x=',x,'y=',y);
и т.д.
Заметьте, что меняется только значение "х". Но в изменении значения "х" есть закономерность: арифметическая прогрессия с разностью 0.2 (шаг)). Можно задать это оператором x:=x+0.2; Для повторения некоторого блока операторов существует оператор цикла (три разновидности).
СТРУКТУРА ЦИКЛА REPEAT
repeat
повторяющийся
блок операторов
until условие;
условие указывает,когда закончить цикл (выйти из цикла).Цикл REPEAT всегда выполняется хотя бы один раз.
Решение задачи:
program prim;
var x,y:real;
begin
x:=1.1; {начальное значение "х"}
repeat
y:=x*x;
writeln('при x=',x,'y=',y);
x:=x+0.2;{вычисление следующего "х"}
until x>3.5 {когда выйти из цикла}
end.
Блок-схема задачи:
Циклический алгоритм - алгоритм,описывающий вычислительный процесс, содержащий многократно повторяющийся этап.
Примеры цикла REPEAT:
1. x:=1;
repeat { цикл выпоняется }
y:=x*x; { один раз }
write(y);
x:=x+1;
until x>=1;
2. x:=1;
repeat { цикл выполняется }
y:=x*x; { бесконечное }
write(y); { количество раз }
x:=x-2;
until x>3;
Ситуация в программе,когда цикл выполняется бесконечное количество раз,называется зацикливанием. Чтобы прервать выполнение зацикленной программы, нужно нажать CTRL+BREAK.
Задача: Составить программу для вычисления значения функции:
в точках х=2;...;5 с шагом 0.3
Решение: program prim;
var x,y:real;
begin
x:=2;
repeat
y:=(5*sqr(x)*x+3)/(2*x);
writeln(‘при х=‘,x,’y=‘,y);
x:=x+0.3;
until x>5;
end.