Цикл While в Delphi – это цикл, с предусловием. То есть вначале задается некоторое условие, например условие А, и если оно соответствует истине (true) то начинает выполняться тело цикла Б. И выполняется оно будет до тех пор, пока заданное нами условие А, не примет значение — false.
Для реализации цикла While существуют два специально зарезервированных слова — While и do.
В переводе с английского:
- While — означает — в то время как, пока;
- do — означает — делать, выполнять;
Рассмотрим построение цикла While на примере. Допустим нам необходимо заполнить одномерный массив числами. Для этого:
1) Разместим на форме один компонент Button, и один компонент Memo. Свойство Lines компонента Memo — очищаем;
2) Создадим обработчик событий OnClick на кнопке и запишем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
const max=15; var a: array[0..max] of integer; b: Integer; begin b:=0; while b<max+1 do //Пока b<16 выполнять тело цикла: begin a[b]:=b; //в переменную массива a[0] присваиваем 0; Memo1.Lines.Add(IntToStr(a[b])); //показываем в Memo содержание элемента [0] массива а; b:=b+1; //Увеличиваем переменную b на единицу, получается один; end; end; |
Далее снова выполняется проверка (while b<max+1 do ), после чего результат отображается в Memo и переменной b присваивается плюс еще одна единица (уже два). И так до тех пор, пока переменная b не перестанет соответствовать условию — b<max+1, после чего цикл останавливается.
3) Для того чтобы в этом убедиться, запускаем проект, нажимаем на нашу кнопку и наблюдаем, что происходит в Memo.
Еще один пример, более простой, поможет нам внести дополнительную ясность в изучение работы с циклом While. Создадим программу в которой мы будем задавать максимальное значение условия вводя его в Edit, а по нажатию Button, — Memo покажет нам весь прогресс изменения значений переменной a от нуля, до введенной нами цифры в Edit:
- Разместим на форме один компонент Button, один компонент Memo и один компонент Edit;
- В cвойство Text компонента Memo, прописываем — 0, а свойство Lines компонента Memo — просто очищаем;
- Создадим обработчик событий OnClick на кнопке и запишем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var a: Integer; c: Integer; begin a:=0; //Присваиваем переменной a отправное значение (в нашем случае все нумеруется с нуля); c:=1+StrToInt(Edit1.Text); //Переменной c присваиваем значение введенное в Edit+1; while a<c do // Проверяем, если a меньше введенного значения в Edit, выполняем тело цикла: begin a:=a; //Присваиваем a нулевое значение; Memo1.Lines.Add(IntToStr(a)); //Показываем его в Memo; a:=a+1; //Увеличиваем a на единицу (получится один); end; end; |
Снова проверяем условие (while a<c do) и если оно истинно, a присваиваем уже увеличенную а, то есть один, показываем его в Memo, добавляем a еще одну единицу (уже получается два), снова сравниваемся с условием, и так до тех пор пока переменная а, не примет значение введенное нами в Edit.
Запускаем программу, вводим в Edit любое целое положительное число, нажимаем на кнопку и любуемся результатом.