Инструменты пользователя

Инструменты сайта


bb:redbook:108

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:redbook:108 [2016/03/31 18:44]
иван_денисов
— (текущий)
Строка 1: Строка 1:
-===== 1.8 Знакомство с массивами ===== 
- 
-==== 1. Общие сведения о массивах ==== 
-Массивом называется выделенный блок однотипных переменных, например 1000 переменных типа INTEGER или 1000000 типа CHAR. Или даже ещё больше. Поскольку разные типы переменных занимают разное число байтов в памяти, массивы из одного количества элементов (например 1000) могут занимать разное количество байт (например SHORTCHAR займёт 1000 байт, а LONGINT --- 8000). Необходимость в массивах возникает довольно часто, особенно при обработке больших массивов данных. Например, Большой адронный коллайдер (БАК) в Швейцарии (родине Никлауса Вирта) создаёт такие огромные массивы данных, что после каждого запуска БАК все ведущие университеты мира и исследовательские организации по полгода обрабатывают накопленные данные. 
- 
-  
-==== 2. Объявление массива ==== 
-Массив, по сути это такая же переменная, как и например, BOOLEAN. Поэтому объявление массивов не выбивается из общих правил: 
-<code oberon2> 
-VAR 
-    d: ARRAY 1000 OF INTEGER; 
-</code> 
-  
-Как видно из приведённого текста массив объявляется ключевым словом ARRAY, после чего через пробел указывается его размерность. После определения размерности следует ключевое слово OF с указанием типа элементов INTEGER. Точно также, как и в случае с обыкновенными переменными окончание объявление массива ограничивается точкой с запятой. 
- 
-Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа: 
-<code oberon2> 
-VAR 
-    d1, d2, d3, d4: ARRAY 1000 OF INTEGER; 
-</code> 
-  
-Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому счёту — это переменная). 
- 
-  
-==== 3. Объявление многомерного массива ==== 
-Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 — 1 млрд. элементов (1000^3). А это уже даже для современных компьютеров довольно много. Такой массив называется объёмным или кубическим по аналогией со стереометрией. Можно создать массив с ещё более высокими размерностями и адекватно представить даже в воображении такой массив трудно, если не невозможно. Но тем не менее, аналогии можно провести с реальностью. Например структура "Города-улицы-дома-квартиры". Ниже пример объявления многомерных массивов: 
-<code oberon2> 
-VAR 
-    d1, d2: ARRAY 1000, 1000 OF INTEGER; 
-    d3, d4: ARRAY 1000, 1000, 1000 OF REAL; 
-</code> 
- 
-В первом случае объявлены два массива типа INTEGER с двумя измерениями. Во-втором случае объявлены два массива с тремя измерениями типа REAL. 
- 
-Количество измерений массивов и их размер не может быть бесконечным по нескольким причинам: 
- 
-  - Размер памяти компьютера ограничен 
-  - Если массив даже будет с небольшими несколькими размерностями — их может оказаться достаточно, что бы памяти компьютера не хватило 
-  - Если компьютер с 32-х битной архитектурой, то обратиться к ячейке памяти с адресом свыше 2^32 (примерно 4,2 млрд.) компьютер не сможет, хотя размерностей может быть будет всего 4-5-6. 
- 
-Частично, подобные проблемы можно решить через внешнюю память (например, жесткий диск или сетевое хранилище), но это требует дополнительных усилий, и скорость обработки таких массивов будет в сотни-тысячи раз меньше. 
- 
- 
-==== 4. Заключение ==== 
-Как работать с массивами рассмотрим в следующих главах. Но уже сейчас полезно знать, что программист не оставлен "1 на 1" с огромными данными, не нужно руками описывать сотни тысяч переменных, чтобы хранить большие объемы данных. Кроме того, массивы, по сути --- те же переменные, и всё что справедливо для переменных --- справедливо и для массивов с дополнением буквально нескольких особенностей. 
  
bb/redbook/108.1459439056.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)