Чтобы понять, как работает цикл for Delphi, рассмотрим одну задачу. Предположим, что необходимо разработать программу, вычисляющую значение функции y=5*x*x-7 в следующих точках: x=-1, x=-0.5, x=0, x=0.5, x=1 (таблицу выведем в поле метки Label1 формы приложения). Напишем процедуру, которая решит поставленную задачу (представим один из ее вариантов):
Как Вы можете заметить, в тексте данной процедуры группа инструкций
которая вычисляет значение функции, формирует строки таблицы и осуществляет увеличение аргумента, повторяется 5 раз. Используя инструкцию for, можно представить представленную процедуру следующим образом:
А теперь сравним два варианта процедуры:
- Для создания второго варианта потребовалось меньше усилий в процессе набора;
- Процедура в втором варианте более гибкая: для увеличения количества строк в отображаемой таблице, к примеру, до 15, остается лишь в строке провести замену числа 5 на число 15.
Применение цикла for Delphi эффективно тогда, когда некоторая последовательность действий выполняется несколько раз (если заранее известно количество повторений). Цикл for Delphi имеет общий вид:
откуда
- счетчик (тип integer) означает переменную-счетчик количества повторений некоторых инструкций цикла;
- нач_знач (тип integer) подразумевает выражение, которое является начальным значением счетчика циклов;
- кон_знач (тип integer) обозначает выражение, являющееся конечным значением счетчика циклов.
Определить, сколько раз (обозначим это число за m) повторяются инструкции цикла, можно, воспользовавшись следующей формулой:
Примеры цикла for Delphi:
А теперь приведем примеры использования инструкции for Delphi:
Пример 1.
Пример 2.
Заметка. В случае, когда между служебными словами begin и end располагается только одна инструкция, то зарезервированные слова begin и end опускаются. Как устроен алгоритм инструкции for, покажет следующая иллюстрация:
Если внимательно приглядеться к приведенному алгоритму, то можно заметить, что если конечное значение счетчика не превышает его начального значения, то инструкции между служебными словами begin и endвыполняться не будут. Нельзя не отметить, что после того, как завершилось очередное выполнение инструкции тела цикла, увеличение счетчика циклов происходит автоматически. Переменная счетчик может быть использована внутри тела цикла, но менять переменную-счетчик нельзя.
Пример 3. После того, как выполнены следующие инструкции
в переменной tab1 будут содержаться изображения таблицы, состоящей из квадратов чисел.
Пример 4. В качестве примера приведем программу, производящую вычисление суммы первых десяти элементов ряда 1+1/2+1/3+1/4+ … +1/n (свяжем значение i-того элемента данного ряда с его номером при помощи формулы 1/i).
Таким образом, в диалоговом коне программы необходимо присутствие как минимум двух компонент: поля меткиLabel1 и командной кнопки Button1. Чтобы вычислить сумму первых десяти членов ряда и вывести полученный результат, воспользуемся процедурой обработки событий Onclick (ее код представление ниже).
Как только вычислен очередной элемент ряда, при помощи данной процедуры осуществляется вывод в полеLabel1 номера элемента и его значения в поле метки формы, которое и предназначено собственно для вывода полученного результата.
Заметка. Если необходимо, чтобы значения счетчика не увеличивалось, а уменьшалось, то необходимо в инструкции for слово to заменить на слово downto.