- •Windows -приложение
- •Среда программирования
- •Встроенный отладчик
- •Использование графики
- •Графические данные и палитра
- •Сохранение проекта
- •Структура приложения
- •Структура модуля
- •Простые типы
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Составной оператор
- •Оператор if
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла repeat
- •Пример приложения 6
- •Пример приложения 7
- •Статические массивы
- •Динамические массивы
- •Оператор with
- •Идентичность типов
- •Совместимость типов
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Рекурсия
- •Процедура exit
- •Директивы подпрограммы
- •Класс как объектный тип
- •Наследование
- •Операции is и as
- •Типы ссылки на класс
- •Типизированные файлы
- •Файлы без типа
- •Пример приложения 17
- •Компонент tmainmenii
- •Двунаправленные списки
- •Потоки данных
- •Пример приложения 22
- •Интерфейс drag and drop
- •Пример приложения 24
- •С файлами
- •Пример приложения 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Проблемы синхронизации потоков
Статические массивы
Тип статического массива объявляют следующим образом:
Туре
<Имя> = Array[<тип индекса>] of <тип элеметов>; (например, Туре Vekt = Array [1..10] of byte;).
В данном случае задан одномерный массив (вектор) состоящий из 10 элементов целого типа byte. Отдельные элементы этого массива в программе определяются с помощью индексов, например, если объявлено var X: vekt;,TOB выражениях можно использовать х[1],х[2],... ,х[Ю].В квадратных скобках указывается значение индекса, т.е. номер компонента в массиве. Отсчет номеров ведется так, как указано в индексе при объявлении. Пусть объявлено: Var Z: array [-2. .2] of integer,-. Это значит заданы элементы z [ -2], Z[-l], z[0], z[l], z [2] целого типа integer.
В общем случае тип индекса может быть любым порядковым типом. Так, в примере Var У: array [ ‘А' . .' Z' ] of integer; объявлено 26 элементов (по количеству букв в английском алфавите): Y[ ‘а' ], Y[ ‘В' ], .., Y[ 'z' ], выделено 26 ячеек памяти, в которые можно записывать данные типа integer, например У [ X 3 : =5;. Информацию можно также считывать из этих ячеек памяти: A:=cos(Pl + YpC']);.
Индекс можно определять и таким способом: Var Y:array[Char] of single;, т.е. определено 256 ячеек памяти, в которые можно записывать вещественные числа. Однако имеется ограничение при объявлении массивов: размер памяти, занимаемый одним массивом не должен превышать 2 оайта. Так, объявление var X:array[Longlnt] of integer; синтаксически верно, но превышен размер памяти, который должен быть выделен для этого массива (более 2 Гбайт).
Аналогичные правила действуют и для двумерных массивов, например ьявление var a: array[1..2, 1..3] of double; определяет двумер-
67
ный массив (матрицу), который содержит 2 строки и 3 столбца (всего 6 элементов). Эти элементы записываются в памяти следующим образом-А[1,1], А[1,2], А[1,3], А[2,1], А[2,2], А[2,3], т.е. сначала пер. вая строка матрицы, а затем вторая. Этот массив можно определить и так: д. array[1..2] of array[1..3] of real; или Type Vekt = аг-ray[1..3] of real; Var A: array[1..2] of vekt;.
Разрешается объявлять и использовать многомерные массивы (до семимерных включительно).
Для массивов можно задавать типизированные константы, т.е. задавать начальные значения элементам массива. Например, требуется задать в памяти значения элементов вектора q = (5.2, 6.0, -3.1, 0.8). Это можно осуществить следующим образом: Const q:array[l..4] of real=(5.2,6.0,-3.1,0.8);.
Начальные значения для двумерного массива, например матрицы
можно задать следующим способом:
Type Matr= array[1..2, 1..3] of byte; Var R:Matr=<(3, 7, 5), (8, 11, 6));.
При задании значения индекса для элемента какого-либо массива можно использовать выражение соответствующего типа, указанного при объявлении. При этом необходимо следить, чтобы значение этого выражения не выходило за объявленные границы. Например, для элемента объявленной выше матрицы R можно записать R[Succ(i) ,Pred(j) ] (см. табл. 2), необходимо лишь, чтобы выполнялись для заданной матрицы R условия: 1 < Succ(i) > 2и1 < Pred(j) > 3.
Если задан массив символов, то типизированную константу можно определять следующим образом: const С:array[1..5] of Char='abcde';.
Если два или более массивов имеют один тип, т.е. объявлены с помощью одного описания, то эти массивы можно присваивать друг другу. Например, если объявлено Type V= array [1.. 5] of real; Var А, В :V;, то МОЖНО записывать А: =в;. Однако при следующем описании тех же переменных А и ВVar A:= array[1..5] of real; B:= array[1..5] of real; записывать А: = В; нельзя.