Иллюстрированный самоучитель по Delphi 7 для начинающих

Циклы. Инструкция for.

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

Например, программа контроля знаний выводит вопрос, принимает ответ, добавляет оценку за ответ к сумме баллов, затем повторяет это действие еще и еще раз, и так до тех пор, пока испытуемый не ответит на все вопросы.

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

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

В программе цикл может быть реализован при помощи инструкций for, while и repeat.

Инструкция for

Рассмотрим следующую задачу. Пусть нужно написать программу, которая вычисляет значение функции у = 5х2 -7 в точках -1, -0.5, 0, 0.5 и 1 (таблица должна быть выведена в поле метки формы приложения). Процедура, обеспечивающая решение поставленной задачи, может выглядеть так:

procedure TForm1.ButtonlClick(Sender: TObject); var
у: real; // значение функции
x: real; // аргумент функции
dx: real; // приращение аргумента
st: string; // изображение таблицы
begin
st: = '';
x: = -1; dx: = 0.5;
у: = 5*х*х -7;
st: = st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13);
x: = x + dx;
у: = 5*х*х -7;
st: = st+ FloatToStr(x)+* '+ FloatToStr(y)+chr(13);
x: = x + dx;
у: = 5*х*х -7;
st: = st+ FloatToStr(x)+* '+ FloatToStr(y)+chr(13);
x: = x + dx;
у: = 5*х*х -7;
st: = st+ FloatToStr(x)+' ' + FloatToStr(y)+chr(13);
x: = x + dx;
у: = 5*х*х -7;
st: = st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13);
x: = x + dx;
Label1.Caption: = st;
end;

Из текста процедуры видно, что группа инструкций:

у: = 5*х*х -7;
st: = st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13);
x: = x + dx;

Обеспечивающая вычисление значения функции, формирование строки таблицы и увеличение аргумента, выполняется 5 раз.

Воспользовавшись инструкцией for, приведенную процедуру можно переписать следующим образом:

procedure TForm1.ButtonlClick(Sender: TObject);
var
у: real; // значение функции
x: real; // аргумент функции
dx: real; // приращение аргумента
st: string; // изображение таблицы
i: integer; // счетчик циклов
begin
st: = ''; x: = -1; dx: = 0.5;
for i: = 1 to 5 do begin
у: = 5*x*x -7;
st: = st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x: = x + dx; end;
Label1.Caption: = st;
end;

Второй вариант процедуры, во-первых, требует меньше усилий при наборе, во-вторых, процедура более гибкая: для того чтобы увеличить количество строк в выводимой таблице, например до десяти, достаточно в строке for i: = 1 to 5 do число 5 заменить на 10.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.