Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Цикл с предусловием
Наиболее общим в Delphi является цикл с предусловием, реализуемый оператором WHILE…DO. Вот его общий вид:
WHILE условие DO оператор;
Цикл с предусловием имеет интересную особенность: если в начале его работы условие оказалось ложным, то цикл вообще не будет выполняться ни разу. В качестве условия может выступать любое логическое выражение или переменная типа BOOLEAN. Работает такой цикл следующим образом. Сначала проверятся условие (отсюда и название – цикл с предусловием). Если условие истинно, то выполняется оператор (он называется "тело цикла"), а затем программа "пятится назад", снова оказывается на операторе WHILE..DO, снова проверяет условие… и так далее до тех пор, пока условие не станет ложным. Как только это случится, цикл прекращается, и начинает выполняться оператор, следующий за телом цикла. Таким образом, инструкции, находящиеся между begin и end, выполняются до тех пор, пока условие истинно (значение выражения условие равно true) Обратите внимание: Для того чтобы инструкции цикла, находящиеся между begin и end, были выполнены хотя бы один раз, необходимо, чтобы перед выполнением инструкции while выражение условие было истинно. Для того чтобы цикл завершился, необходимо, чтобы последовательность инструкций между begin и end изменяла значения переменных, входящих в выражение условие. Рассмотрим пример использования цикла WHILE. Пусть мы суммируем ряд натуральных чисел 1+2+3+… и хотим узнать, на каком числе этого ряда сумма превысит 100. Программа будет выглядеть следующим образом:
VAR s:WORD; { сумма } i: WORD; { текущее число ряда } BEGIN s:=0; { сумму обязательно обнуляем!!! } i:=1; { начинаем суммировать с единицы } WHILE s<100 DO BEGIN s:=s+i; i:=i+1 END; Label1.Caption:='Сумма превысит 100 при i='+IntToStr(i) end; Кстати, сумма превысит 100 при i=15, так как . Обратите внимание на операторные скобки BEGIN..END. Они позволяют поместить в тело цикла более одного оператора (разумеется, если в теле цикла только один оператор, BEGIN…END не нужны).
Рис. 1. Обозначение цикла с предусловием на блок-схемах. На блок-схемах все циклы изображаются в виде крышки гроба, самого гроба и лежащего в нем тела цикла. Обозначения же зависят от вида цикла. Для цикла с предусловием блок-схема выглядит, как показано на рис. 1. Следующая программа вычисляет значение числа p с задаваемой пользователем точностью. В основе алгоритма вычисления лежит тот факт, что сумма ряда 1-1/3+1/5-1/7+1/9+, если взять достаточно много его членов, приближается к значению p/4. В программе очередной член ряда, с номером n, вычисляется по формуле: 1/(2*n-1) и умножается на минус один, если его номер четный (определить, является ли n четным можно, например, проверкой остатка от деления n на 2). Вычисление заканчивается тогда, когда значение очередного члена ряда становится меньше, чем заданная точность вычисления. Вид диалогового окна программы приведен на рис. Пользователь вводит точность вычисления в поле ввода (Edit1). После щелчка на командной кнопке Вычислить (Buttoni) программа вычисляет значение числа p и выводит результат в поле метки (Label2). Как и в предыдущих примерах, основную работу выполняет процедура обработки события onClick, текст которой приведен ниже. {Вычисление числа p с заданной точностью} procedure TFonnl.ButtonlClick(Sender: TObject); pi: real; {вычисляемое значение p} t: real; {точность вычисления} n: integer; {номер члена ряда} elem:real; { значение члена ряда} begin pi:=0; n:=l; t:=StrToFloat(Edit1.Text); elem:=t+l; {чтобы начать цикл} While elem >= t do begin elem:=l/(2*n-l); if (n MOD 2) = 0 then pi:=pi-elem else pi:=pi+elem; n:=n+l; end; pi:=pi*4; Label2.Caption:= 'ПИ равно '+ FloatToStr(pi) + #13 + 'Просуммировано '+IntToStr(n)+' членов ряда.'; end;
Date: 2015-06-06; view: 562; Нарушение авторских прав |