- •Глава 1
- •Структура модуля
- •Интерфейс
- •Реализация
- •Инициализация и завершение
- •Ключевые слова
- •Ключевое слово const
- •Ключевое слово type
- •Комментарии
- •Переменные
- •Типы данных и переменные
- •Преобразование типов
- •Знаки операций
- •Константы
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Функции Low и High
- •Динамические массивы
- •Короткая строка
- •Длинная строка
- •Операции со строками
- •Разбиение литерала по строкам программы
- •Строковые функции
- •Множества
- •Совместимость типов данных
- •Примечание.
- •Указатели
- •Статические и динамические переменные
- •Размещение динамических переменных
- •Разыменование указателя
- •Глава 2.
- •Вложенные условия. Операторы if могут быть вложены друг в друга произвольное число раз:
- •Элементы структуры цикла
- •Цикл for…
- •Цикл for с увеличением счетчика синтаксически определен как
- •Цикл for с уменьшением счетчика в общем случае имеет следующий вид
- •Функции Pred и Succ
- •Цикл while
- •Синтаксис цикла while имеет вид
- •Цикл repeat
- •Управление циклами
- •Оператор goto
- •Оператор case
- •Область видимости идентификаторов
- •Пример записи
- •Оператор with
- •Массивы записей
- •Подпрограммы
- •Процедуры и функции
- •Объявление и определение подпрограммы
- •Параметры подпрограмм
- •Локальные процедуры и функции
- •Перегрузка подпрограмм
- •Параметры по умолчанию
- •Глава 3
- •Анатомия класса
- •Наследование
- •Ключевые слова is и as
- •Что такое класс?
- •Анатомия класса
- •Указатель Self
- •Пример класса
- •Анализ объявления и реализации
- •Наследование
- •Перекрытие методов
- •Ключевые слова is и as
Цикл for…
Цикл for... следует использовать когда число повторений известно заранее. Для организации такого цикла достаточно знать, сколько итераций должно быть сделано. Для этого задают начальное и конечное значения счетчика цикла.
Если при переходе от одной итерации к другой счетчик должен увеличиваться, в составе цикла используется ключевое слово to. В противном случае используется ключевое слово downto.
Цикл for с увеличением счетчика синтаксически определен как
for initial_value to end_value do begin statements; end;
Начальное значение счетчика цикла устанавливает выражение initial_value. Повтор выполнений блока statements (т.е. тела цикла) заканчивается сразу как только счетчик цикла превысит end_value. По окончании каждой итерации переменная целого типа в выражении initial_value увеличивается на единицу.
Ключевые слова begin и end в цикле с единственным оператором не обязательны.
Цикл for с уменьшением счетчика в общем случае имеет следующий вид
for initial_value downto end_value do begin statements; end;
Начальное состояние счетчика цикла устанавливает выражение initial_value. Повтор выполнений блока statements (т.е. тела цикла) заканчивается когда счетчик цикла станет меньше чем end_value. По окончании каждой итерации переменная целого типа в выражении initial_value уменьшается на единицу.
Ключевые слова begin и end в цикле с единственным оператором не обязательны.
Для пояснения синтаксических формул обратимся к примерам. Сначала рассмотрим цикл с увеличением счетчика цикла:
var
I : Integer;
begin
for I := 0 to 4 do
begin
Memo1.Lines.Add(’Это итерация ’ + IntToStr(I));
end;
end;
В этом фрагменте оператор
Memo1.Lines.Add(’Это итерация ’ + IntToStr(I));
выполняется 5 раз. Назначение оператора – добавить строку к тексту, отображаемому компонентном TMemo на форме приложения. В результате выполнения данного фрагмента программы в компонент Memo1 будут добавлены строки (Lines)
Это итерация 0
Это итерация 1
Это итерация 2
Это итерация 3
Это итерация 4
Выражение initial_value (в данном случае это I:=0) задает начальное значение счетчика цикла. Счетчиком цикла является переменная целого типа I. Выраженим end_value является константа 4. Таким образом, цикл закончится когда счетчик цикла, т.е. переменная I, будет равна 4.
Теперь рассмотрим цикл с уменьшением счетчика:
var
I : Integer;
begin
for I := 4 downto 0 do
begin
Memo1.Lines.Add(’Это итерация ’ + IntToStr(I));
end;
end;
В результате выполнения этого фрагмента компонент Memo1 будет содержать строки
Это итерация 4
Это итерация 3
Это итерация 2
Это итерация 1
Это итерация 0
Упражнение.
1. Создайте новую программу (File | New Application).
2. Поместите на форму командную кнопку.
3. На странице Standard найдите компонент Memo и перенесите его на форму.
4. Придайте компоненту Memo1 необходимые размеры. В инспекторе объектов придайте свойству ScrollBars компонента Memo1 значение ssVertical.
5. Дважды щелкните на кнопке Button1 для создания обработчика события OnClick. Придайте обработчику события следующий вид:
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
begin
Memo1.Lines.Clear;
for I := 0 to 5 do
Memo1.Lines.Add(’Это итерация ’ + IntToStr(I));
Memo1.Lines.Add(’ ’);
for I := 5 downto 0 do
Memo1.Lines.Add(’Это итерация ’ + IntToStr(I));
Memo1.Lines.Add(’––-Выполнено––-’);
end;
Откомпилируйте программу (F9).
Нажмите кнопку Button1.
Ожидаемый результат показан на рисунке.
В отличие от других языков программирования, Pascal допускает изменение счетчика цикла только на 1. Чтобы организовать цикл, например от 0 до 100 с шагом 10, можно поступить следующим образом:
var
I : Integer;
X : Integer;
begin
X := 0;
Memo1.Lines.Clear;
for I := 0 to 9 do
begin
Memo1.Lines.Add(’Счетчик = ’+ IntToStr(X));
Inc(X, 10);
end;
end;
Этот код выводит в Memo1:
Счетчик = 0
Счетчик = 10
Счетчик = 20
Счетчик = 30
Счетчик = 40
Счетчик = 50
Счетчик = 60
Счетчик = 70
Счетчик = 80
Счетчик = 90
ПРИМЕЧАНИЕ. Обратите внимание на то, что для увеличения значения переменной X используется процедура Inc. Эта функция увеличивает значение переменной (X в этом фрагменте) на заданную величину (10). Если приращение не указано, значение переменной увеличивается на 1. Например:
Inc(X); { X увеличивается на 1. То же, что и X := X + 1 }
У функции Inc есть «двойник» с именем Dec. Ниже дан пример с функцией Dec:
Dec(X); { X уменьшается на 1 }
Dec(X, 10); { X уменьшается на 10 }
Используйте функции Inc и Dec вместо операторов вроде X := X + 1;
