- •Модуль и его структура
- •Структура модуля
- •Список uses
- •Интерфейс
- •Реализациия
- •Инициализация и завершение
- •Ключевые слова
- •Слово const
- •Слово type
- •Слово var
- •Комментарии
- •Переменные
- •Типы данных и переменные
- •Преобразование типов
- •Знаки операций
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Функции Low и High
- •Динамические массивы
- •Короткая строка
- •Длинная строка
- •Расширенная строка
- •Строка с терминальным нулем
- •Операции со строками Слияние
- •Извлечение символа
- •Управляющие символы в строках
- •Разбиение литерала по строкам программы
- •Сравнение строк
- •Строковые функции
- •Форматирование строк
- •Множества
- •Объявление записи
- •Оператор with
- •Массивы записей
- •Совместимость типов данных
- •Указатели
- •Статические и динамические переменные
- •Размещение динамических переменных
- •Разыменование указателя
- •Управление вычислениями Операторы if, then, else
- •Выполнение нескольких инструкций.
- •Вложенные условия.
- •Циклы Элементы структуры цикла
- •Цикл for…
- •Функции Pred и Succ
- •Цикл while
- •Цикл repeat
- •Управление циклами
- •Оператор goto
- •Оператор case
- •Область видимости идентификаторов
- •Подпрограммы
- •Процедуры и функции
- •Объявление и определение подпрограммы
- •Параметры подпрограмм
- •Локальные процедуры и функции
- •Перегрузка подпрограмм
- •Параметры по умолчанию
- •Включение внешнего файла в модуль
Массивы
Массивы относятся к структурированным типам данных.
Новый термин. Массив – структура, содержащая последовательность элементов (значений данных) одного и того же типа. Элементы массива упорядочены в непрерывной области памяти. Массивы могут быть одномерными, двумерными, трехмерными, а в общем случае, – многомерными.
Одномерные массивы
В одномерном массиве каждый элемент однозначно идентифицируется его порядковым номером в структуре. Такое понятие как «вектор» в программе представляют одномерным массивом.
Следующий пример показывает как объявить в программе одномерный массив с пятью элементами целого типа:
var
MyArray : array[0..4] of integer;
Для придания значений элементам массива надо использовать операцию «индекс» ([]):
MyArray[0] := -200;
MyArray[1] := -100;
MyArray[2] := 0;
MyArray[3] := 100;
MyArray[4] := 200;
Далее в программе можно обращаться к элементу одномерного массива по его индексу:
X := MyArray[3] + MyArray[4]; { результат Х = 300 }
Многомерные массивы
Массивы могут быть многомерными.
Рассмотрим пример объявления двумерного массива значений целого типа:
var
M2Array : array[0..2, 0..4] of Integer;
В данном случае компилятор выделяет в памяти место для 15 целых чисел (всего 60 байт). Для доступа к элементам двумерного массива надо записать два индексных выражения. Существуют два способа записи индексов, которые иллюстрируют следующие строки (они идентичны):
X := M2Array[1][1] + M2Array[2][1];
X := M2Array[1, 1] + M2Array[2, 1];
Порядок размещения элементов двумерного массива показан на рис 1.5. Здесь индекс по вертикали – первый, а по горизонтали – второй.
|
[0] |
[1] |
[2] |
[3] |
[4] |
[0] |
1 |
2 |
3 |
4 |
5 |
[1] |
6 |
7 |
8 |
9 |
10 |
[2] |
11 |
12 |
13 |
14 |
15 |
Рис.1.5. Размещение элементов двумерного массива в памяти
При включенной опции компилятора «Range checking» осуществляется автоматический контроль принадлежности индексов диапазонам, указанным при объявлении массива. Например, при компиляции следующего фрагмента кода
var
MyArray : array[0..4] of Integer;
X : Integer;
begin
X := MyArray[3] + MyArray[5]; { Ошибка! 5 вне диапазона. }
end;
будет выдано сообщение об ошибке :
Constant expression violates subrange bounds.
Диапазон индексов элементов массива, который указывается при его объявлении, может быть любым по усмотрению программиста. Так, нижняя граница не обязательно должна быть нулевой. Например, такое объявление одномерного массива допустимо:
var
MyArray : array[10..20] of Integer;
Теперь для доступа к элементам массива мы должны использовать индексы с 10 (первый элемент) по 20 (последний элемент).
Можно объявить массив констант и одновременной инициализировать его:
const
myArray:array[0..4] of Integer = (-200,-100, 0, 100, 200 );
При объявлении массива можно использовать имена ограниченных типов данных (отрезки, перечисления) при условии что эти типы уже где–то объявлены. Например:
type
WorkDays = (Monday,Tuesday,Wednesday,Thurthday,Friday);
WorkHours = 9..18;
WorkTime = array[WorkDays,WorkHours] of integer;
Здесь объявление типа массива WorkTime равносильно следующему
WorkTime = array[0..4,9..18] of integer;
Для доступа к элементам массива можно использовать значения перечисляемых типов, например
var
Days : WorkTime;
// Далее. . .
Days[Monday,10] := 56;
Days[Friday,17] := 100;