Компонентный Паскаль/Знакомство с массивами: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
м Откат правок Ivan Denisov (обс.) к версии Fantom78
м <source> -> <syntaxhighlight> (phab:T237267)
 
Строка 5: Строка 5:
===Объявление массива===
===Объявление массива===
Массив, по сути это такая же переменная, как и например, BOOLEAN. Поэтому объявление массивов не выбивается из общих правил:
Массив, по сути это такая же переменная, как и например, BOOLEAN. Поэтому объявление массивов не выбивается из общих правил:
<source lang="oberon2">
<syntaxhighlight lang="oberon2">
VAR
VAR
d: ARRAY 1000 OF INTEGER;
d: ARRAY 1000 OF INTEGER;
</syntaxhighlight>
</source>
Как видно из приведённого текста массив объявляется ключевым словом ARRAY, после чего через пробел указывается его размерность. После определения размерности следует ключевое слово OF с указанием типа элементов INTEGER. Точно также, как и в случае с обыкновенными переменными окончание объявление массива ограничивается точкой с запятой (если это не последний элемент секции VAR).
Как видно из приведённого текста массив объявляется ключевым словом ARRAY, после чего через пробел указывается его размерность. После определения размерности следует ключевое слово OF с указанием типа элементов INTEGER. Точно также, как и в случае с обыкновенными переменными окончание объявление массива ограничивается точкой с запятой (если это не последний элемент секции VAR).


Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа:
Ничто не мешает объявить два или больше массивов сразу, через одно объявление типа:
<source lang="oberon2">
<syntaxhighlight lang="oberon2">
VAR
VAR
d1, d2, d3, d4: ARRAY 1000 OF INTEGER;
d1, d2, d3, d4: ARRAY 1000 OF INTEGER;
</syntaxhighlight>
</source>
Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому счёту -- это переменная).
Всё это допустимые формы объявления переменных (массив особый случай переменной, но по большому счёту -- это переменная).


===Объявление многомерного массива===
===Объявление многомерного массива===
Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 -- 1 млрд. элементов (1000^3). А это уже даже для современных компьютеров довольно много. Такой массив называется объёмным или кубическим по аналогией со стереометрией. Можно создать массив с ещё более высокими размерностями и адекватно представить даже в воображении такой массив трудно, если не невозможно. Но тем не менее, аналогии можно провести с реальностью. Например структура "Города-улицы-дома-квартиры". Ниже пример объявления многомерных массивов:
Многомерным массивом называется такой массив, в котором расположение элементов не только по одной линии (друг за другом), но и в более высоких размерностях. Например, массив с двумя измерениями можно уподобить фигуре на плоскости. При этом при размерности 1000х1000 он будет в общей сложности иметь 1 млн. элементов (1000^2). Такой массив называется прямоугольным или квадратным по аналогии с планиметрией. Массив с тремя измерениями будет иметь размер 1000х1000х1000 -- 1 млрд. элементов (1000^3). А это уже даже для современных компьютеров довольно много. Такой массив называется объёмным или кубическим по аналогией со стереометрией. Можно создать массив с ещё более высокими размерностями и адекватно представить даже в воображении такой массив трудно, если не невозможно. Но тем не менее, аналогии можно провести с реальностью. Например структура "Города-улицы-дома-квартиры". Ниже пример объявления многомерных массивов:
<source lang="oberon2">
<syntaxhighlight lang="oberon2">
VAR
VAR
d1, d2: ARRAY 1000, 1000 OF INTEGER;
d1, d2: ARRAY 1000, 1000 OF INTEGER;
d3, d4: ARRAY 1000, 1000, 1000 OF REAL;
d3, d4: ARRAY 1000, 1000, 1000 OF REAL;
</syntaxhighlight>
</source>
В первом случае объявлены два массива типа INTEGER с двумя измерениями. Во-втором случае объявлены два массива с тремя измерениями типа REAL.
В первом случае объявлены два массива типа INTEGER с двумя измерениями. Во-втором случае объявлены два массива с тремя измерениями типа REAL.



Текущая версия от 16:12, 16 апреля 2020

Общие сведения о массивах[править]

Массивом называется выделенный блок однотипных переменных, например 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 с огромными данными, не нужно руками описывать сотни тысяч переменных, чтобы хранить большие объёмы данных. Кроме того, массивы, по сути -- те же переменные, и всё что справедливо для переменных -- справедливо и для массивов с дополнением буквально нескольких особенностей.