Цикл for Delphi
Чтобы понять, как работает цикл for Delphi, рассмотрим одну задачу. Предположим, что необходимо разработать программу, вычисляющую значение функции y=5*x*x-7 в следующих точках: x=-1, x=-0.5, x=0, x=0.5, x=1 (таблицу выведем в поле метки Label1 формы приложения). Напишем процедуру, которая решит поставленную задачу (представим один из ее вариантов):
Как Вы можете заметить, в тексте данной процедуры группа инструкций
которая вычисляет значение функции, формирует строки таблицы и осуществляет увеличение аргумента, повторяется 5 раз. Используя инструкцию for, можно представить представленную процедуру следующим образом:
А теперь сравним два варианта процедуры:
- Для создания второго варианта потребовалось меньше усилий в процессе набора;
- Процедура в втором варианте более гибкая: для увеличения количества строк в отображаемой таблице, к примеру, до 15, остается лишь в строке провести замену числа 5 на число 15.
Применение цикла for Delphi эффективно тогда, когда некоторая последовательность действий выполняется несколько раз (если заранее известно количество повторений). Цикл for Delphi имеет общий вид:
откуда
- счетчик (тип integer) означает переменную-счетчик количества повторений некоторых инструкций цикла;
- нач_знач (тип integer) подразумевает выражение, которое является начальным значением счетчика циклов;
- кон_знач (тип integer) обозначает выражение, являющееся конечным значением счетчика циклов.
Определить, сколько раз (обозначим это число за m) повторяются инструкции цикла, можно, воспользовавшись следующей формулой:
Примеры цикла for Delphi:
А теперь приведем примеры использования инструкции for Delphi:
Пример 1.
Пример 2.
Заметка. В случае, когда между служебными словами begin и end располагается только одна инструкция, то зарезервированные слова begin и end опускаются. Как устроен алгоритм инструкции for, покажет следующая иллюстрация:
Если внимательно приглядеться к приведенному алгоритму, то можно заметить, что если конечное значение счетчика не превышает его начального значения, то инструкции между служебными словами begin и endвыполняться не будут. Нельзя не отметить, что после того, как завершилось очередное выполнение инструкции тела цикла, увеличение счетчика циклов происходит автоматически. Переменная счетчик может быть использована внутри тела цикла, но менять переменную-счетчик нельзя.
Пример 3. После того, как выполнены следующие инструкции
в переменной tab1 будут содержаться изображения таблицы, состоящей из квадратов чисел.
Пример 4. В качестве примера приведем программу, производящую вычисление суммы первых десяти элементов ряда 1+1/2+1/3+1/4+ … +1/n (свяжем значение i-того элемента данного ряда с его номером при помощи формулы 1/i).
Таким образом, в диалоговом коне программы необходимо присутствие как минимум двух компонент: поля меткиLabel1 и командной кнопки Button1. Чтобы вычислить сумму первых десяти членов ряда и вывести полученный результат, воспользуемся процедурой обработки событий Onclick (ее код представление ниже).
Как только вычислен очередной элемент ряда, при помощи данной процедуры осуществляется вывод в полеLabel1 номера элемента и его значения в поле метки формы, которое и предназначено собственно для вывода полученного результата.
Заметка. Если необходимо, чтобы значения счетчика не увеличивалось, а уменьшалось, то необходимо в инструкции for слово to заменить на слово downto.
Похожие записи:
kvodo.ru
Цикл For в Delphi — Okolokompa
Цикл For в Delphi — осуществляет выполнение операций, строго заданное количество раз.
Зарезервированные слова для реализации цикла: For, to, downto, do.
Чтобы понять как работает цикл, рассмотрим простенький пример заполнения массива состоящего из пяти элементов, числами от 1 до 5.
Для этого:
1) Помещаем на форму, компоненты: 1- Button, и 1-Memo;
2) Создаем обработчик событий на кнопке и записываем следующий код:
var a: array[1..5] of Integer; c: Integer; begin For c:=1 to 5 do begin a[c]:=c; Memo1.Lines.Add(IntToStr(a[c])); end; end; |
Теперь давайте разбираться, что к чему. Предлагаю перевести рассматриваемую конструкцию «For c:=1 to 5 do» на русский язык:
- For — означает — от, для, в направлении;
- to — означает — к, на, до;
- do — означает — выполнять, делать,
Запись c:=1 — переменная счетчик с присвоенным начальным значением 1. А цифра 5 после слова to — конечное значение.
В случае с нашим примером, получаем буквально следующее:
//От 1 до 5 выполнять — действия ниже — прописанные между begin и end; begin //Номер элемента массива а определяет переменная с //и она же присваивается этому элементу (в данном случае это 1) a[c]:=c; //В нулевую строку (строки компонента Memo, нумеруются с нуля) компонента Memo заносится единица Memo1.Lines.Add(IntToStr(a[c])); end; |
Далее, переменная с увеличивается еще на единицу, определяет номер второго элемента массива и присваивается ему в качестве значения (уже 2).
Затем записывается в первую строку Memo. Потом, переменная с увеличивается еще на единицу, определяет уже номер третьего элемента массива, присваивается ему в качестве значения (теперь 3). Затем записывается во вторую строку компонента Memo.
Снова, переменная с увеличивается на единицу, определяет номер четвертого элемента массива и присваивается ему, в качестве значения (уже 4). Затем записывается в третью строку компонента Memo.
И наконец, переменная с снова увеличивается на единицу, определяет номер пятого элемента массива, присваивается ему в качестве значения (уже 5), записывается в четвертую строку компонента
Теперь подробнее.
- В начале вычисляются и запоминаются начальное и конечное значения c:=1 и 5 .
- Циклу присваивается начальное значение c:=1, после чего это значение сравнивается с конечным — 5.
- Если начальное значение меньше или равно 5, выполняются итерации цикла, где происходит увеличение начального параметра цикла (переменной с) на единицу. Затем выполняются команды прописанные после слова do, а именно:
begin a[c]:=c; Memo1.Lines.Add(IntToStr(a[c])); end; |
Изменение параметра цикла происходит автоматом, после каждой итерации.
4) Как только параметр цикла с превышает конечное значение 5, цикл прекращает свою работу.
Цикл For может оперировать данными не только в порядке возрастания, но и в порядке убывания. Для этого мы вместо слова to, должны воспользоваться словом downto.
И если в нашем первом примере начальное значение, не должно было превышать конечное, то в случае с обратным порядком, должно быть все наоборот. Попробуем модернизировать наш код из первого примера, и сделаем теперь так, чтобы массив заполнялся с 5 до 1.
Для этого:
1) Помещаем на форму, компоненты: 1- Button, и 1-Memo;
2) Создаем обработчик событий на кнопке и записываем следующий код:
var a: array[1..5] of Integer; c: Integer; begin For c:=5 downto 1 do begin a[c]:=c; Memo1.Lines.Add(IntToStr(a[c])); end; end; |
3) Запускаем проект и видим, что наш массив, заполнился в обратном порядке;
Иногда случается, что цикл необходимо завершить досрочно, или наоборот продлить его работу. Для этого в Delphi присутствуют две стандартные процедуры:
- break — позволяет прервать работу цикла на любом его этапе.
- continue — позволяет возобновить остановившийся цикл.
Например, для того чтобы досрочно прервать наш цикл из первого примера, в момент когда значение переменной c будет равно 3, достаточно добавить в него следующий код.
var a: array[1..5] of Integer; c: Integer; begin For c:=1 to 5 do begin a[c]:=c; Memo1.Lines.Add(IntToStr(a[c])); if c=3 then break; end; end; |
Вконтакте
Google+
Одноклассники
Мой мир
okolokompa.ru
Цикл while Delphi
Поговорим еще об одной инструкции — инструкции while Delphi, обеспечивающей реализацию цикла. Инструкция while Delphi применяется тогда, когда некоторая последовательность действий выполняется несколько раз, при этом необходимое количество повторений в процессе разработки программы заранее не известно (его можно определить лишь в момент работы программы).
В качестве примеров на применение цикла while можно считать вычисление с заданной точностью (например, eps=0.000001), осуществление поиска в массиве, поиск в файле. Общий вид инструкции while Delphi представляется следующим образом:
откуда условие означает выражение типа Boolean, устанавливающее условие, при котором будут выполнены инструкции цикла.
Последовательность выполнения инструкции while в Delphi такова:
- Вначале происходит вычисление значения выражения условие;
- Если условие принимает значение False (значение Ложь — условие не выполнено), то инструкция while завершает свое выполнение;
- В случае значения True (значение Истина — условие выполнено) осуществляется выполнение инструкций тела цикла, находящихся между служебными словами begin и end. Далее вновь проводится проверка выражения условия. Если и это условие выполнено, то вновь повторяются инструкции цикла, расположенные между зарезервированными словами begin и end. Так будет продолжаться до тех пор, пока значение выражения условие не примет значение False.
Алгоритм, реализующий инструкцию while, проиллюстрирован на рисунке ниже:
Заметка. Чтобы инструкции цикла while, находящиеся между служебными словами begin и end, выполнялись хоть один раз, нужно, чтобы вначале выполнения инструкции while значению выражения условие было присвоено значение Истина. Для завершения цикла while, необходимо, последовательность инструкций, расположенная между зарезервированными словами begin и end, оказывала влияние на значение выражения условие (другими словами, осуществляла изменение значения переменных, которые входят в выражение условие).
Пример программы на цикл while Delphi:
В качестве примера приведем программу, вычисляющая значение числа ПИ с некоторой точностью, задающейся пользователем в процессе работы программы.
Основу алгоритма составляет тот факт, что сумма числового ряда: 1 — 1/3 + 1/5 — 1/7 + 1/9 + … стремится к числу ПИ/4 с большим числом элементов. Нетрудно определить n-й член рассматриваемого числового ряда: An = 1/(2*n — 1).
Знак «-» ставится перед очередным элементом ряда, если n представляет собой четное число — это можно установить делением числа n на 2: если остаток от деления равен нулю — n четно, в противном случае число n является нечетным. Вычисление значения числа ПИ заканчивается в том случае, если значение некоторого члена ряда меньше заданной точности вычисления. Диалоговое окно программы в процессе ее работы представлено иллюстрацией ниже:
Как Вы можете заметить, пользователь сначала осуществляет ввод в поле Edit1 точности вычисления. При нажатии пользователем на командную кнопку Вычислить (Button1) программа производит вычисление значения числа ПИ и впоследствии выводит полученный результат в поле метки Label1. Листинг данной программы Вы можете скачать по этой ссылке.
Похожие записи:
kvodo.ru
Циклы Delphi. Подробное описание / Delphi / ADODO.ru
Циклы Delphi предназначены для многократного выполнения оператора (нескольких операторов), находящегося внутри так называемой циклической конструкции.Delphi предлагает три типа циклов. Рассмотрим каждый из них…
1) For..do
Цикл с параметром {for..do} можно применить в тех случаях, когда точно известно количество повторений, необходимых для выполнения желаемых действий. Пример использования этого цикла:
Вам нужно написать программу, которая должна при определенном условии выполнить определенное действие определенное количество раз. Код:
MyArray : array[0..99] of integer;
for X:=0 to 99 do MyArray[X]:=0;
2) Цикл Delphi {While..do}
Отличительной особенностью этого типа цикла является выполнение действие неопределенное количество раз(пока будет соблюдаться условие, действие будет происходить). Код:
X :=0;
while X<=99 do
begin
MyArray[X]:=0;
X:=X+1;
end;
3) Repeat..until
Цикл Delphi {repeat..until} называют циклом с постусловием. Этот цикл нужно применять в написании программ очень грамотно, подумав дважды.
Ведь действие будет выполняться, когда условие соблюдаться НЕ БУДЕТ. Отличительная особенность: Вне зависимости от условия, цикл выполнится хотя бы один раз! Код:
X :=0;
repeat
MyArray[X]:=0;
X:=X+1;
until X>=100;
Еще существуют вложенные циклы Delphi (один цикл происходит в теле другого). В примере производится обнуление всех элементов массива A. Обращение к ячейкам происходит с помощью цикла {For..do}. Код:
var A : Array[0..9, 0..9] of Integer;
x, y : byte;
begin
for x:=0 to 9 do
for y:=0 to 9 do A[x, y]:=0;
end;
Хочется сказать, что циклы нужно применять аккуратно, независимо от сложности проекта. Неграмотное задание условия выполнения цикла может не выполнить цикл, или наоборот выполнить его очень много раз одновременно, после чего программа зациклится и будет вынуждена экстренно закрыться.
www.adodo.ru
Цикл repeat Delphi
Как и в случае инструкции while, инструкция repeat Delphi применяется тогда, когда нужно провести повторные вычисление (осуществить организацию цикла), однако количество повторений в процессе создания программы заранее неизвестно, и поэтому это число можно определить лишь в момент выполнения программы, то есть количество зависит от хода вычислений.
Общий вид цикла repeat Delphi:
Общий вид инструкции repeat Delphi представлен ниже:
откуда условие есть выражение типа Boolean, которое определяет условия завершения цикла.
Последовательность цикла repeat Delphi:
Последовательность выполнения инструкции repeat в языке Delphi такова:
- На первом этапе осуществляется выполнение находящихся между служебными словами repeat и untilинструкций тела цикла.
- Далее определяется, какое значение примет выражение условие. Если это условие оказалось ложным (то есть условие приняло значение False), то происходит повторное выполнение инструкций тела цикла.
- Если же условие оказалось истинным (то есть оказалось равным True), то цикл repeat завершает свое выполнение.
В итоге получаем, что инструкции цикла, которые находятся между зарезервированными словами repeat и until, повторяются, пока условие является ложным (то есть пока условие принимает значение False).
Представим алгоритм (рис. ниже), который реализует инструкцию repeat:
Заметка. Инструкции цикла, располагающиеся между служебными словами repeat и until, должны выполняться минимум один раз. Чтобы цикл завершил свое выполнение, нужно следить за тем, чтобы инструкции цикла repeat, размещающиеся между зарезервированными словами repeat и until, в конце концов, изменяли значения переменных, которые входят в состав выражения условие.
Пример программы с циклом repeat Delphi:
Создадим программу, использующую инструкцию repeat, которая бы проводила проверку числа (введенного пользователем с клавиатуры), является ли данное число простым. Из математики известно, что число именуется простым в случае, когда оно делится только на само себя и на единицу, например, число 42 является обычным, поскольку делится на 42, на 1, на 2, на 3, на 6, на 7, на 21, а число 11 как раз и является простым (делится только на 13 и на 1.
В программе, чтобы проверить число n, является ли оно простым, можно при помощи деления числа n на 2, на 3 и т.д. до n и последующей проверкой остатка, появляющегося после каждого деления. Когда очередное деление завершилось появлением нулевого остатка, то это значит, что определено число, на которое число n делится нацело без остатка.
Проведя сравнение двух чисел: числа n и числа, на которое число n поделилось без остатка — можно установить, является ли введенное пользователем число n простым. На рисунке ниже представлена форма приложения под названием «Простое число«:
Похожие записи:
kvodo.ru