- •Глава 4. Компоненты 30
- •Глава 5. Основы программирования 37
- •Часть I. Delphi и работа в Интегрированной Среде
- •Глава 1. Объектно-ориентированное программирование
- •1.1. Основные понятия и определения
- •1.2. Визуальное программирование интерфейса
- •1.3. Общие вопросы построения программ
- •Глава 2. Проекты Delphi
- •2.1.Файлы проекта
- •2.2.Структура файла головной программы
- •2.3. Окно Интегрированной Среды Разработки Delphi
- •2.4. Панель главного меню и всплывающие меню
- •2.5. Форма и компоненты
- •2.5.1.Окно формы
- •2.5.2. Окно Редактора Кода
- •2.5.3. Инспектор Объектов
- •2.6. Структура модуля приложения
- •Глава 3. Элементы языка Delphi
- •3.1.Типы данных
- •3.1.1. Целый тип
- •3.1.2.Вещественный тип
- •3.1.3. Символьный тип
- •3.1.4. Строковый тип
- •3.1.5. Логический тип
- •3.2. Переменная
- •3.3. Константы
- •3.3.1.Числовые константы
- •3.3.2. Строковые и символьные константы
- •3.3.3. Логические и именованные константы
- •3.4. Инструкция присваивания
- •3.5. Стандартные функции
- •3.5.1.Математические функции
- •Глава 4. Компоненты
- •4.1. Форма и компоненты на форме
- •4.2. Событие и процедура обработки событий
- •Глава 5. Основы программирования
- •5.1. Сохранение проекта, его повторное открывание
- •5.2. Стиль программирования
- •5.3. Порядок разработки проекта
- •5.4. Управляющие структуры языка Delphi
- •5.4.1. Инструкция if
- •5.4.2. Инструкция case
- •5.5. Циклы
- •5.5.1. Инструкция for
- •5.5.2. Инструкция while
- •5.5.3. Инструкция repeat
- •5.5.4. Инструкция goto
- •5.6. Процедуры и функции
- •5.6.1. Структура функции
- •5.6.2. Структура процедуры
- •5.6.3. Ввод и вывод данных в диалоговых окнах
- •5.6.4. Запись инструкций программы
- •5.6.5. Отладка программы
- •5.7. Операции со строками
- •5.7.1. Стандартные функции и процедуры работы со строками
- •5.7.2. Использование операций со строками
- •5.8. Массивы
- •5.8.1. Объявление массива
- •5.8.2. Операции с массивами
- •5.8.3. Стандартные функции обработки массивов
- •5.8.4. Многомерные массивы
5.5. Циклы
Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность операций (группа инструкций) должна быть выполнена несколько раз. Такая последовательность операций называется циклом. В программе цикл может быть реализован при помощи инструкций for, while и repeat.
5.5.1. Инструкция for
Пусть нужно написать программу, которая вычисляет значение функции
у = 5х2 - 7 в точках -1, -0.5, 0, 0.5 и 1.
Таблица должна быть выведена в поле метки формы приложения.
Вычисление значения функции, формирование строки таблицы и увеличение аргумента, выполняется 5 раз. Воспользовавшись инструкцией for, процедура вычисления может быть представлена процедурой обработки события Button1Click. Таблица формируется с помощью переменной st.
procedure TForm1.Button1Click(Sender: TObject);
var
y: real; // значение функции
x: real; // аргумент функции
dx:real; // приращение аргумента
st:string; // изображение таблицы
i : integer; // счетчик циклов
begin
st:= ' ';
x := -1;
dx := 0.5;
Label1.Caption := 'X = ' + 'Y = '+ chr(13)+#13;
for i:=1 to 5 do
begin
y:= 5*x*x-7;
st := st+ FloatToStr(x)+' '+FloatToStr(y)+chr(13);
x :=x + dx;
end;
Label1.Caption := Label1.Caption+st;
end;
Результат вычисления показан на рис. 5.10.
Рис. 5.10. Результат вычисления функции y
Если потребуется увеличить количество строк в выводимой таблице, например до десяти, достаточно в строке
for i:=1 to 5 do
число 5 заменить на 10.
Инструкция for используется в том случае, если некоторую последовательность действий (инструкций программы) надо выполнить несколько раз, причем число повторений заранее известно.
В общем виде инструкция for записывается следующим образом:
for счетчик := нач_знач to кон_знач do
begin
// здесь инструкции, которые надо выполнить несколько раз
end
где:
• счетчик – переменная-счетчик числа повторений инструкций цикла;
• нач_знач – выражение, определяющее начальное значение счетчика цикла;
• кон__знач – выражение, определяющее конечное значение счетчика цикла.
Переменная счетчик, выражения нач_знач и кон_знач должны быть целого типа. Количество повторений инструкций цикла можно вычислить по формуле
(кон_знач - нач_знач + l).
Если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Алгоритм, соответствующий инструкции for, представлен на рис. 5.11.
Рис. 5.11. Алгоритм инструкции for
Если начальное значение счетчика больше конечного значения, то последовательность операторов между begin и end не будет выполнена ни разу.
После каждого выполнения инструкций тела цикла счетчик циклов увеличивается автоматически.
Переменную-счетчик можно использовать внутри цикла (но ни в коем случае не изменять). Например, в результате выполнения следующих инструкций:
tabl: =' ' ;
for i:=l to 5 do
begin
tabl:=tabl+IntToStr(i)+' '+IntToStr(i*i)+chr(13);
end;
переменная tabl будет содержать изображения таблицы квадратов чисел.
Рассмотрим программу, которая вычисляет сумму первых 10 элементов ряда: 1 + 1/2 + 1/3 + ... (значение i-го элемента ряда связано с его номером формулой 1/i). Диалоговое окно программы должно содержать, по крайней мере, два компонента: поле метки (Label1) и командную кнопку (Button1).
Вычисление суммы ряда и вывод результата выполняет процедура обработки события Onclick, текст которой имеет вид:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer; // номер элемента ряда
elem:real; // значение элемента ряда
summ:real; // сумма элементов ряда
begin
summ:=0;
label1.caption:=''; // очистка содержимого строки вывода
// по метке
for i:=1 to 10 do
begin
elem:=1/i;
label1.caption:=label1.caption+
IntToStr(i)+' '+FloatToStr(elem)+#13;
summ:=summ+elem;
end;
label1.caption:=label1.caption+'Сумма ряда:'
+ FloatToStr(summ);
end;
Если в инструкции for вместо слова to записать downto, то после очередного выполнения инструкций тела цикла значение счетчика будет не увеличиваться, а уменьшаться.