Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Многомерные массивы




Одномерные массивы

Массивы

Константы

 

Как было сказано выше, константа есть идентификатор, который обозначает постоянную величину. В процессе выполнения программы значение константы изменить невозможно. Термины «переменная» и «константа» выбраны неслучайно. Так, значения переменных могут изменяться в процессе работы программы, а значения констант – нет. Для объявления константы используется ключевое слово const. Чтобы объявить константы просто перечислите их имена и значения, например

 

const

DefaultWidth = 400;

DefaultHeight = 200;

Description = ¢Динамическая модель атмосферы¢;

 

Обратите внимание на то, что объявление константы содержит знак «равно» (=), а не «присвоить» (:=). Кроме того, нет спецификации типа константы. Компилятор сам определяет тип константы по виду числового значения справа от знака (=). Имена констант в программе следует использовать вместо явного написания чисел или литералов.

Осмысленное применение констант обеспечивает надежность программы и является необходимым условием простоты ее модификации в будущем. Так, чтобы изменить поведение программы (размеры окон, элементов управления, реакции и т.п.), достаточно будет изменить объявления констант только в одном фрагменте исходного кода.

 

 

Массивы относятся к структурированным типам данных.

 

Новый термин. Массив – структура, содержащая последовательность элементов (значений данных) одного и того же типа. Элементы массива упорядочены в непрерывной области памяти. Массивы могут быть одномерными, двумерными, трехмерными, а в общем случае, – многомерными.

 

 

В одномерном массиве каждый элемент однозначно идентифицируется его порядковым номером в структуре. Такое понятие как «вектор» в программе представляют одномерным массивом.

Следующий пример показывает как объявить в программе одномерный массив с пятью элементами целого типа:

 

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]          

 

Рис.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;




Поделиться с друзьями:


Дата добавления: 2015-04-29; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.