Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Delphi (повторение).doc
Скачиваний:
7
Добавлен:
04.05.2019
Размер:
2.74 Mб
Скачать

5.5.2. Инструкция while

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

Типичными примерами использования цикла while являются вычисления с заданной точностью, поиск в массиве или в файле.

В общем виде инструкция while записывается следующим образом:

while условие do

begin

// здесь инструкции, которые надо выполнить несколько раз

end

где условие — выражение логического типа, определяющее условие выпол­нения инструкций цикла.

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

1. Сначала вычисляется значение выражения условие.

2. Если значение выражения условие равно False (условие не выполня­ется), то на этом выполнение инструкции while завершается.

3. Если значение выражения условие равно True (условие выполняется), то выполняются расположенные между begin и end инструкции тела цикла. После этого снова проверяется выполнение условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным (False).

Алгоритм, соответствующий инструкции while, представлен на рис. 5.12.

Для того чтобы инструкции цикла while, которые находятся между begin и end, были выполнены хотя бы один раз, необходимо, чтобы перед выполнени­ем инструкции while значение выражения условие было истинно.

Рис. 5.12. Алгоритм инструкции while

Для того чтобы цикл завершился, нужно, чтобы последовательность инст­рукций между begin и end влияла на значение выражения условие (изменя­ла значения переменных, входящих в выражение условие).

Рассмотрим программу, которая вычисляет значение числа π с точно­стью, задаваемой пользователем во время работы программы. В основе алгоритма вычисления лежит тот факт, что сумма ряда 1 - 1/3 + 1/5 -1/7 + 1/9 + ... приближается к значению π/4 при достаточно большом количестве членов ряда.

Каждый член ряда с номером n вычисляется по формуле: 1/(2 * n - 1) и ум­ножается на минус один, если n чётное (определить, является ли n четным, можно проверкой остатка от деления n на 2). Вычисление заканчивается тогда, когда значение очередного члена ряда становится меньше, чем задан­ная точность вычисления. Вид диалогового окна программы во время ее работы приведен на рис. 5.13. Пользователь вводит требуемую точность вычисления в поле ввода (Edit1). После щелчка на командной кнопке Вычислить (Button1) программа вычисляет значение числа π и выводит результат в поле метки (Label1).

Рис.5.13. Диалоговое окно программы Вычисление π

Как и в предыдущих примерах, основную работу выполняет процедура обработки события onclick:

procedure TForm1.Button1Click(Sender: TObject);

var

pi:real; // вычисляемое значение ПИ

t:real; // точность вычисления

n:integer; // номер члена ряда

elem:real; // значение члена ряда

begin

pi:=0;

n:=1;

t:=StrToFloat(edit1.text);

elem:=1; // чтобы начать цикл

while elem >= t do

begin

elem:=1/(2*n-1);

if n MOD 2 = 0

then pi:=pi-elem

else pi:=pi+elem;

n:=n+1;

end;

pi:=pi*4;

label1.caption:= 'ПИ равно '+ FloatToStr(pi) + #13

+ 'Просуммировано '+IntTostr(n)+' членов

ряда.';

end;