Delphi - Циклы while

 

var

index:integer;

begin index:=0;

while index<10 do index:=index+l;

end;

 

В этом примере мы объявляем переменную index. В первой строке кода при­сваиваем ей 0. После этого запускается цикл. В условии записан код— index<io. Это значит, что будет выполняться следующее действие (index: =index+i), пока переменная index меньше 10.

В данном случае в качестве счетчика используется переменная index и цикл вы­полняется, пока верно условие. В отличие от цикла for, этот цикл не увеличивает автоматически счетчик, поэтому мы должны это сделать самостоятельно.

ВНИМАНИЕ. Если забыть про увеличение счетчика в цикле, он может стать бесконеч­ным и "подвесить" программу, т. к. условие окажется вечно истинным. В этом случае программа не сможет прервать цикл.

В цикле while также выполняется только одно действие. Если вы захотите вы­полнить в цикле сразу два действия, то должны заключить их в операторные скоб­ки begin И end.

Давайте перепишем предыдущий пример, но с использованием цикла while. Измените код по нажатии кнопки (событие onclick) на код, показанный в листинге:

 

procedure TFormi.CalculateButtonclick(Sender: TObj ect); var

index:Integer; sum: Integer; EndCount:Integer; begin Sum: =0; index:=0;

EndCount:=StrToInt(EndEdit.Text);

while index<EndCount do begin

Sum: = Sum+index;

index:=index+l; end;

ResuitEdit.Text:=IntToStr(Sum); end;

В данном примере надо обнулять не только переменную sum, но и index, чтобы начальное значение было равно нулю, и цикл шел от нуля до введенного значения. Обратите также внимание на то, что здесь нужно самостоятельно увеличивать пе­ременную index (index: =index+i). Для этого данная строка добавлена в цикл. Она объединена с расчетом суммы при помощи операторных скобок begin и end.

 

Попробуйте запустить программу и ввести число 5. Результатом расчета будет 10. Если вы помните предыдущий пример, там результат был 15. .В чем проблема? Почему разные результаты? В прошлом примере мы выполняли цикл от 0 до 5 включительно. Здесь будет выполняться цикл от 0 и до того момента, пока выпол­няется условие index<5. Когда index=5, условие не выполнится, и расчет с цифрой 5 не будет производиться.

 

Для решения этой проблемы можно поменять условие цикла на index<=5 (пере­менная index меньше или равна EndCount). В этом случае расчет с цифрой 5 также будет произведен. Или можно вводить цифру 6.

 

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: