Блок-схема алгоритма

«Безусловный» циклический процесс реализован оператором
for параметр:=нач_зн to кон_зн do
оператор;
for парам:=кон_зн downto нач_зн do
оператор;
где оператор – любой оператор языка, параметр_цикла, а также диапазон его изменения (начальное_значение и конечное_значение) – переменные или выражения целочисленного или перечислимого типа.
Шаг цикла for всегда постоянный и равен интервалу между двумя ближайшими значениями типа параметра цикла.
В случае если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор:
for параметр:=нач_зн to кон_зн do
begin
оператор_1;
оператор_2;
.............
оператор_N;
end;
Алгоритм работы цикла for … do:
1. Параметру_цикла присваивается начальное_значение.
2. Если значение параметра_цикла превосходит конечное_значение, то цикл завершает свою работу. В противном случае выполняется п. 3.
3. Выполняется оператор.
4. Значение параметра_цикла изменяется на соответствующий шаг и осуществляется переход к п.2, и т.д.
Понятно, что этот алгоритм представляет собой цикл с предусловием.

Задача. Вывести значения функции
на отрезке [0;p] с шагом 0.1.
Здесь количество повторений цикла явно не задано. Вычислим его:

В общем случае, если параметр цикла х принимает значения в диапазоне от xn до xk, изменяясь с шагом dх, тогда количество повторений тела цикла можно определить по формуле:

округлив результат деления до целого числа.
procedure TForm1.btn1Click(Sender: TObject);
var x,y:Real;
n,i: Byte;
Begin
n:=round((pi-0)/0.1)+1;
x:=0;
for i:=1 to n do
Begin
y:=Exp(Sin(x))*cos(x);
mmo1.Lines.Add(IntToStr(i)+
' x='+FloatToStr(x)+
'y='+floattostr(y));
x:=x+0.1;
end;
end;
