| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Delphi :: Delphi 7 начинающему :: Глава 2. Управляющие структуры языка Delphi :: Инструкция for
Инструкция for
Инструкция
for Рассмотрим следующую
задачу. Пусть нужно написать программу, которая вычисляет значение функции у
= 5х2 - 7 в точках —1, -0.5, 0, 0.5 и 1 (таблица должна быть
выведена в поле метки формы приложения). Процедура, обеспечивающая решение поставленной
задачи, может выглядеть так: procedure
TForm1.ButtonlClick(Sender:
TObject); var у:
real; // значение функции x:
real; // аргумент функции dx:
real; // приращение аргумента st: string; // изображение таблицы begin st:=''; x
:= -1; dx := 0.5; у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x
:=x + dx; у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+* '+ FloatToStr(y)+chr(13); x
:=x + dx; у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+* '+ FloatToStr(y)+chr(13); x
:=x + dx; у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+' ' + FloatToStr(y)+chr(13); x
:=x + dx; у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x
:=x + dx; Label1.Caption := st; end; Из
текста процедуры видно, что группа инструкций у
:= 5*х*х -7; st
:= st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x
:=x + dx; обеспечивающая вычисление
значения функции, формирование строки таблицы и увеличение аргумента, выполняется
5 раз. Воспользовавшись инструкцией
for, приведенную процедуру можно переписать следующим образом: procedure TForm1.ButtonlClick(Sender: TObject); var у:
real; // значение функции x:
real; // аргумент функции dx:
real; // приращение аргумента st:
string; // изображение таблицы i
: integer; // счетчик циклов begin st:=''; x := -1; dx := 0.5;
for i:=l to 5 do begin у
:= 5*x*x -7; st
:= st+ FloatToStr(x)+' '+ FloatToStr(y)+chr(13); x :=x + dx; end; Label1.Caption := st; end; Второй вариант процедуры,
во-первых, требует меньше усилий при наборе, во-вторых, процедура более гибкая:
для того чтобы увеличить количество строк в выводимой таблице, например до десяти,
достаточно в строке for i:=1 to 5 do число 5 заменить на 10. Инструкция for используется
в том случае, если некоторую последовательность действий (инструкций программы)
надо выполнить несколько раз, причем число повторений заранее известно. В общем виде инструкция
for записывается следующим образом: for счетчик := нач_знач to кон_знач do begin //
здесь инструкции, которые надо выполнить несколько раз end где:
Переменная счетчик,
выражения нач_знач и кон_знач должны быть целого типа. Количество повторений
инструкций цикла можно вычислить по формуле (кон_знач — нач_знач
+ l). Примеры: for
i:=l to 10 do begin label1.caption:=label1.caption
+ '*'; end; for
i: =1 to n do s := s+i; Примечание
Рис. 2.13. Алгоритм
инструкции for Алгоритм, соответствующий
инструкции for, представлен на рис. 2.13. Обратите внимание, что если начальное
значение счетчика больше конечного значения, то последовательность операторов
между begin и end не будет выполнена ни разу. Кроме того, после каждого
выполнения инструкций тела цикла счетчик циклов увеличивается автоматически. Переменную-счетчик
можно использовать внутри цикла (но ни в коем случае не изменять). Например,
в результате выполнения следующих инструкций: tab1: = '' ; for i:=l to 5 do begin tab1:=tabl+IntToStr(i)+' '+IntToStr(i*i)+chr(13); end; переменная tabl будет
содержать изображения таблицы квадратов чисел. Рассмотрим программу,
которая вычисляет сумму первых 10 элементов ряда: 1 + + 1/3 + ... (значение
i-го элемента ряда связано с его номером формулой 1//). Диалоговое окно программы
должно содержать, по крайней мере, два компонента: поле метки (Label1) и командную
кнопку (Buttonl). Вычисление суммы ряда
и вывод результата выполняет процедура обработки события Onclick, текст которой
приведен ниже. После вычисления очередного элемента ряда процедура выводит в
поле Labell номер элемента и его значение в поле метки формы, предназначенное
для вывода результата. procedure TForm1.ButtonlClick(Sender: TObject); var i:integer; { номер элемента ряда } elem:real; { значение элемента ряда } summ:real; {
сумма элементов ряда ) begin summ:=0; label Leapt ion: = ' ' ; for
i:=l to 10 do begin elem:=l/i; label1.caption:=labell.caption+ IntToStr(i)+' '+FloatToStr(elem)+#13; sunrn: =summ+elem; end; label1.caption:=label1.caption+ 'Сумма ряда:'+FloatToStr(summ); end; Если в инструкции for вместо слова to записать downto, то после очередного выполнения инструкций тела цикла значение счетчика будет не увеличиваться, а уменьшаться. {BLOCK|article|lastarticle||non.tpl} |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|