Цель работы: научиться применять циклическую структуру в программировании.
6.1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Инструкция цикла с параметром имеет два возможных формата:
for <Параметр> := <Выражение1> to <Выражение2> do <Инструкция>;
for <Параметр>:= <Выражение1> downto <Выражение2> do <Инструкция>;
Параметр цикла (параметр) представляет собой переменную порядкового типа, которая должна быть определена в том же блоке, где находится инструкция цикла. Выражение1 и Выражение2 являются, соответственно, начальным и конечным значениями параметра цикла и должны иметь тип, совместимый с типом параметра цикла.
Инструкция цикла (инструкция) обеспечивает выполнение тела цикла, которым является инструкция после слова do, до полного перебора с соответствующим шагом всех значений параметра цикла от начального до конечного. Шаг параметра всегда равен 1 для первого формата цикла и −1 - для второго, т. е. значение параметра последовательно увеличивается (for...to) или уменьшается (for...downto) на единицу при каждом повторении цикла.
Примеры циклов с параметром:
Var
n, k: integer;
s := 0;
for n := 1 to 10 do s := s + m[n] ;
for к := 0 to 2 do for n := 5 to 10 do
Begin
arr1[k, n] := 0; arr2[k, n] := 1;
end;
В первом цикле выполняется расчет суммы десяти значений массива m. Во втором случае два цикла вложены один в другой, и в них пересчитываются значения элементов двумерных массивов arr1 и аrr2.
В качестве примера применения оператора for рассмотрим программу, осуществляющую вычисление суммы всех целых чисел от 1 до N.
Var
i, N, Sum : Integer;
Begin
Sum := 0;
for i := 1 to N do Sum := Sum + i;
end;
Инструкцию цикла с постусловием целесообразно использовать в случаях, когда тело цикла необходимо выполнить не менее одного раза и заранее неизвестно общее количество повторений цикла.
Инструкция цикла с постусловием имеет следующий формат:
Repeat
<Инструкция1>;
<ИнструкцияN>;
until <Условие>;
Условие представляет собой выражение логического типа. Инструкции, заключенные между словами repeat и until, составляют тело цикла и выполняются до тех пор, пока логическое выражение Условие не примет значение True, т. е. тело цикла повторяется при значении Условия, равном False. Так как Условие проверяется только в конце цикла, инструкции тела цикла выполняются минимум один раз.
В теле цикла может находиться произвольное число инструкций без операторных скобок begin и end. По крайней мере одна из инструкций тела цикла должна влиять на значение Условие, в противном случае произойдет зацикливание.
Приведем для иллюстрации цикла с постусловием расчет суммы десяти значений массива m:
Var
х: integer; sum: real; m: array[1..10] of real;
Begin
x := 1; sum := 0;
Repeat
sum := sum + m[x];
x := x + 1;
until(x < 10);
end;
Инструкцию цикла с предусловием целесообразно использовать в случаях, когда число повторений тела цикла заранее неизвестно и тело цикла может ни разу не выполняться. Формат инструкции цикла с предусловием:
while <Условие> do <Инструкция>;
Инструкция тела цикла выполняется до тех пор, пока логическое выражение Условие не примет значение False, т. е. в отличие от цикла с постусловием, данный цикл выполняется при значении логического выражения True.
В качестве примера рассмотрим расчет суммы десяти значений массива:
Var
х: integer; sum: real; m: array[1..10] of real;
Begin
x: = 1; sum: = 0 ;
while x <= 10 do
Begin
sum := sum + m[x];
x : + x + 1;
end;
end;
Если перед первым выполнением цикла условие не удовлетворяется (значение логического выражения Условие равно False), то тело цикла не выполнится ни разу, и происходит переход на инструкцию, следующую за инструкцией цикла.
6.2. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Алгоритмы циклической структуры в Delphi.
2. Инструкция цикла с параметром.
3. Инструкцию цикла с постусловием.
4. Инструкцию цикла с предусловием.
5. Понятие цикла в программировании.
6. Как задать ограничения циклу?
6.3. ЗАДАНИЯ
1. Напишите таблицу умножения с циклом for.
2. Решить уравнение 0,25 x3 + x – 1,25 = 0; x € [0,2] методом итераций с использованием цикла for.
3. Вывести на экран все простые числа, не превосходящие заданное число М, кроме единицы и самого себя.
4. Заданы величины a, b, c. Упорядочить их по возрастанию (a<b<c).
5. Вычислить сумму первых Кнатуральных чисел. S = 1+2+…+K
6. Заданы числа a,b,c. Определить сколько из них равных.
7. Найти множители целых чисел в диапазоне от 2 до 10.
8. Написать программу, определяющую високосный год. Год вводится с клавиатуры. (Високосный год делится на 4 без остатка. Если год делится на 100, то он будет високосным только если он делится на 400 без остатка).
9. Написать программу, используя оператор switch. Программа должна осуществлять преобразование дюймов в сантиметры и сантиметров в дюймы. Пользователь указывает единицы измерения (i для дюймов и c для сантиметров).
10. Заданы величины a, b, c. Упорядочить их по убыванию (a>b>c).
ЛИТЕРАТУРА
1. Джулиан Бакнелл. Фундаментальные алгоритмы и структуры данных в Delphi. Издательство:ДиаСофтЮП. 2003 год. 550 стр.
2. Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. СПб, «БХВ-Петербург», 2003 г. 289 стр.
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Ю.А. Шпак. Delphi 7 на примерах. Издательство: Юниор. 2003 год. 384 стр.
2. Архангельский А.Я. Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET. Москва «БИНОМ». 2006 г. 1144 стр.