Компонентный Паскаль/Знакомство с массивами: различия между версиями
Fantom78 (обсуждение | вклад) |
|||
Строка 1: | Строка 1: | ||
__TOC__ |
__TOC__ |
||
==Общие сведения о массивах== |
==Общие сведения о массивах== |
||
Массивом называется выделенный блок однотипных переменных, например 1`000 переменных типа INTEGER или 1`000`000 типа CHAR. Или даже |
Массивом называется выделенный блок однотипных переменных, например 1`000 переменных типа INTEGER или 1`000`000 типа CHAR. Или даже еще больше. Поскольку разные типы переменных занимают разное число байтов в памяти, массивы из одного количества элементов (например 1000) могут занимать разное количество байт (например SHORTCHAR займет 1000 байт, а LONGINT — 8000). Необходимость в массивах возникает довольно часто, особенно при обработке больших ''массивов данных''. Например, Большой адронный коллайдер (БАК) в Швейцарии (родине Никлауса Вирта) создает такие огромные массивы данных, что после каждого запуска БАК все ведущие университеты мира и исследовательские организации по полгода обрабатывают накопленные данные. |
||
===Объявление массива=== |
===Объявление массива=== |
||
Строка 9: | Строка 9: | ||
d: ARRAY 1000 OF INTEGER; |
d: ARRAY 1000 OF INTEGER; |
||
</source> |
</source> |
||
Как видно из |
Как видно из приведенного текста массив объявляется ключевым словом ARRAY, после чего через пробел указывается его размерность. После определения размерности следует ключевое слово OF с указанием типа элементов INTEGER. Точно также, как и в случае с обыкновенными переменными окончание объявление массива ограничивается точкой с запятой (если это не последний элемент секции VAR). |
||
Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа: |
Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа: |
||
Строка 16: | Строка 16: | ||
d1, d2, d3, d4: ARRAY 1000 OF INTEGER; |
d1, d2, d3, d4: ARRAY 1000 OF INTEGER; |
||
</source> |
</source> |
||
Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому |
Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому счету — это переменная). |
||
===Объявление многомерного массива=== |
===Объявление многомерного массива=== |
||
Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 |
Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 — 1 млрд. элементов (1000^3). А это уже даже для современных компьютеров довольно много. Такой массив называется объемным или кубическим по аналогией со стереометрией. Можно создать массив с ещё более высокими размерностями и адекватно представить даже в воображении такой массив трудно, если не невозможно. Но тем не менее, аналогии можно провести с реальностью. Например структура "Города-улицы-дома-квартиры". Ниже пример объявления многомерных массивов: |
||
<source lang="oberon2"> |
<source lang="oberon2"> |
||
VAR |
VAR |
Версия от 11:45, 16 апреля 2015
Общие сведения о массивах
Массивом называется выделенный блок однотипных переменных, например 1`000 переменных типа INTEGER или 1`000`000 типа CHAR. Или даже еще больше. Поскольку разные типы переменных занимают разное число байтов в памяти, массивы из одного количества элементов (например 1000) могут занимать разное количество байт (например SHORTCHAR займет 1000 байт, а LONGINT — 8000). Необходимость в массивах возникает довольно часто, особенно при обработке больших массивов данных. Например, Большой адронный коллайдер (БАК) в Швейцарии (родине Никлауса Вирта) создает такие огромные массивы данных, что после каждого запуска БАК все ведущие университеты мира и исследовательские организации по полгода обрабатывают накопленные данные.
Объявление массива
Массив, по сути это такая же переменная, как и например, BOOLEAN. Поэтому объявление массивов не выбивается из общих правил:
VAR
d: ARRAY 1000 OF INTEGER;
Как видно из приведенного текста массив объявляется ключевым словом ARRAY, после чего через пробел указывается его размерность. После определения размерности следует ключевое слово OF с указанием типа элементов INTEGER. Точно также, как и в случае с обыкновенными переменными окончание объявление массива ограничивается точкой с запятой (если это не последний элемент секции VAR).
Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа:
VAR
d1, d2, d3, d4: ARRAY 1000 OF INTEGER;
Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому счету — это переменная).
Объявление многомерного массива
Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 — 1 млрд. элементов (1000^3). А это уже даже для современных компьютеров довольно много. Такой массив называется объемным или кубическим по аналогией со стереометрией. Можно создать массив с ещё более высокими размерностями и адекватно представить даже в воображении такой массив трудно, если не невозможно. Но тем не менее, аналогии можно провести с реальностью. Например структура "Города-улицы-дома-квартиры". Ниже пример объявления многомерных массивов:
VAR
d1, d2: ARRAY 1000, 1000 OF INTEGER;
d3, d4: ARRAY 1000, 1000, 1000 OF REAL;
В первом случае объявлены два массива типа INTEGER с двумя измерениями. Во-втором случае объявлены два массива с тремя измерениями типа REAL.
Количество измерений массивов и их размер не может быть бесконечным по нескольким причинам:
- Размер памяти компьютера ограничен
- Если массив даже будет с небольшими несколькими размерностями -- их может оказаться достаточно, что бы памяти компьютера не хватило
- Если компьютер с 32-х битной архитектурой, то обратиться к ячейке памяти с адресом свыше 2^32 (примерно 4,2 млрд.) компьютер не сможет, хотя размерностей может быть будет всего 4-5-6.
Заключение
Как работать с массивами рассмотрим в следующих главах. Но уже сейчас полезно знать, что программист не оставлен 1 на 1 с огромными данными, не нужно руками описывать сотни тысяч переменных, чтобы хранить большие объёмы данных. Кроме того, массивы, по сути -- те же переменные, и всё что справедливо для переменных -- справедливо и для массивов с дополнением буквально нескольких особенностей.