logo search
Методичка_Delphi_Ч1

Применение инструкции цикла for

Инструкция for…to…do позволяет последовательно перебирать значения некоторой переменной порядкового типа в заданном диапазоне, либо от начального значения до конечного значения, либо наоборот. С помощью этой инструкции легко организовать цикл. Особенность таких циклов в том, что число повторений заранее известно.

В общем виде инструкция for…to…do записывается так.

Рисунок 6.1– Синтаксис инструкции for…todo

На этом рисунке <параметр цикла> - переменная порядкового типа; <начальное значение> - выражение, определяющее начальное значение <параметра цикла>; <конечное значение> - выражение, определяющее конечное значение <параметра цикла>.

Следует отметить, что если между словами begin и end находится только одна инструкция, то операторные скобки: begin и end можно не писать.

Инструкция цикла for…to…do выполняется следующим образом:

  1. Вычисляются <начальное значение> и <конечное значение >.

  2. Переменной <параметр цикла> присваивается <начальное значение>.

  3. Если значение <параметра цикла> превышает <конечное значение>, то цикл заканчивается.

  4. Выполняется тело цикла.

  5. Переменной <параметр цикла> присваивается следующее значение.

  6. Выполнение продолжается с пункта 3.

Количество повторений тела цикла можно вычислить по формуле:

Ord(<конечное значение>) – ord(<начальное значение>)+1;

Если <начальное значение> больше чем <конечное значение>, то тело цикла не будет выполнено ни разу.

Если <начальное значение> и <конечное значение> одинаковы, то тело цикла выполняется один раз.

Переменную <параметр цикла> можно использовать внутри цикла (но не изменять).

Если в инструкции for…to…do вместо слова to записать downto, то после очередного выполнения инструкций тела цикла, значение <параметра цикла> будет не увеличиваться, а уменьшаться. Начальное значение в этом случае должно быть больше чем <конечное значение>.

В рассмотренном ниже примере цикл for…to..do используется для того, чтобы добавить 10 символов ‘*’ к тексту в компоненте Label1.

for i:=1 to 10 do

begin

label1.caption:=label1.caption + ‘*’;

end;

В следующем примере все прописные буквы текстового компонента Edit1 заменяются соответствующими строчными буквами. Для определения длины строки здесь используется функция length().

const rus=['А'..'Я']; lat=['A'..'Z'] ;

var ch: char; i:integer; s:string;

begin

s:= Edit1.Text; // Запоминаем текст компонента в переменной типа String

for i:=1 to length(s) do // Цикл по символам строки

begin

ch:= s[i]; // Очередной символ

if (ch in rus) or (ch in lat) then s[i]:= chr(ord(ch) +32);

Edit1.Text := s; // Вывод результата

end;

end;