Array - регулярна структура на данните, обявени от специална езикова конструкция
Array [INDEX диапазони] на TipKomponentov
Най-често се използва за съхраняване на множество стойности на вектори, например:
V. Array [1..3] на Real;
по този начин обявяване структура на три стойности реално тип индексира предварително определен диапазон от числа (V [1], V [2] и V [3]). Ако индексиране компоненти (елементи) на масива е даден числен диапазон, като в този пример, е необходимо да се спазва само две изисквания: първо, границите не трябва да принадлежат към вида LongInt, т.е. тя трябва да "подходящи" тип максимум в Word, втори, произведението от броя на елементите на масива определя от редица индекси, размерът на компонента в байтове, не може да надхвърля 65520 байта (около 64К). Последното изискване е често срещано не само за всички масиви, но и за други структури от данни. По този начин, могат да бъдат описани масиви
Това е много удобно, тъй като ви позволява да не се тревожи за привеждане на индекса на 1..N гама, като, например, трябва да направите, когато се работи с Fortran или някои версии на BASIC.
В общи линии, нищо задължава да декларира индекс диапазона от номера на масив. Като индекс, можете да използвате всякакви изброените видове, както вградени и влезе. Индекси могат да бъдат определени в предишния обхват и ако групата е подходяща за всички тип, трябва вместо това може просто да запишете името на този тип ENUM:
ComplectType = Array [MonthType] на Word;
Алфа. Array [ "А" .. "Z"] овъгляване;
Switch. Array [булева] на байт; <два элемента>
Смятан масиви - едномерна, т.е. тези, в които съставките - скаларна. Право да декларират масиви от масиви:
VectorType = Array [1..3] на Real; <вектор>
MatrixType = Array [1..10] на VectorType; <матрица10x3>
Описание на вида на двумерен масив MatrixType може да се пише по различен начин:
MatrixType = Array [1..10] от Array [1..3] на Real;
MatrixType = Array [1..10, 1..3] на Real;
Последният вариант е най-визуално описание матрица. Броят на измерванията не е формално ограничено, но сумата от размерите на всички компоненти на масива не трябва да надвишава 64 КБ. Всяко измерване е напълно независима от останалите, а вие може да обяви масиви с различни индекси:
М. Array [-10..0, "А" .. "С", булева] на байт;
Array [булева] на байт;
Интересното е, че вида на елемент на масива M зависи от броя на споменатия отпечатък върху тях. Например,
М [0] - тип матрица матрица Array [ "А" .. "С", булева] на байт,
М [0, 'B'] - вектор тип Array [булева] на байт,
М [0, "В", False] - Байт тип стойност.
ArrayBType = Array [булева] на байт;
ArrayCType = Array [ "А" .. "С"] на ArrayBType;
ArrayMType = Array [-10..0] на ArrayCType;
и едва след това ще бъде разрешено от вида на задание
Turbo Pascal ви позволява да пишете индекси не са разделени със запетаи, тъй като това са изолирани:
М [-3, "В", True] еквивалентно М [-3] [Б] [Вярно]
Компонент масив може да бъде не само един масив, но което също е рекорд, както и показалеца, и всякакъв друг вид. Ако R - спектър на записи (запис), достъпът до областта на всеки запис се произвежда след определяне на индекса:
Turbo Pascal има специален режим на компилация избран от ключово $ R. Ако цялата програма или фрагмент от него е бил съставен в режим, при достъп до елементите на масива ще бъдат проверени принадлежност на индекс обяви диапазон, а в случая на редица престъпление програма е прекъсната с грешка 201 (Range проверка за грешка) на. Напротив, не се произвежда във всяка инспекция режим, както и неправилна стойност на индекса ще извлече ", сякаш нищо не се е случило" някаква стойност - но, уви, не принадлежи на този масив. Като цяло, режими на програма за отстраняване на грешки $ R +, и се управлява от $ режим R-. Това леко намалява размера на изпълнимия файл и издръжливостта й.
В две съвместими масиви А и Б само приложим оператор задача:
които копия на елемент стрелка масив Б към масив А.
Всички видове математически операции върху масиви (матрици), трябва да бъдат изпълнени от, или да използват специални библиотеки (например Turbo Цифров Toolbox).
За съвместимост с други версии на Pascal Turbo Pascal позволява използването на композитни знака (и ..) вместо квадратни скоби:
М [0] е еквивалентно на М (. 0).
В допълнение, описания на ключовите думи Array в масиви може да се предшества от запазена дума опаковани (опаковани, компресиран):
X. опаковани Array [1..100] на Real;
В заключение ние отбелязваме една функция Turbo Pascal компилатор. В продължение на много езици за програмиране справедливо правило: работа с елемент на масива отнема повече време, отколкото с скаларна променлива (това е необходимо да се изчисли местоположението на обекта в паметта). Ако индексите при достъп до елементите на определена променлива или израз, това важи и за Turbo Pascal. Но ако индекса се определя от постоянна, а след това се отнасят към него скорост е максимумът, защото компилаторът в този случай, изчисли местоположението на елемента на етапа на съставянето на програмата.
Свързани статии