Массивы (PascalABC.NET): различия между версиями
(Новая страница: «{{TOCRight}} == Pascal ABC.NET выбор школьника Часть 2 == * [http://pascalabc.net/downloads/OsipovBook/StudentChoice2.pdf Pascal ABC.NET выб...») |
|||
Строка 31: | Строка 31: | ||
=== Статические массивы === | === Статические массивы === | ||
Статический массив обычно описывается в виде | Статический массив обычно описывается в виде | ||
+ | <blockquote> | ||
+ | var ИмяМассива: array[m..n] of ТипЭлементов; | ||
+ | </blockquote> | ||
− | |||
<syntaxhighlight lang="pascal" line> | <syntaxhighlight lang="pascal" line> | ||
var a: array[0..12] of byte; // 13 элементов byte | var a: array[0..12] of byte; // 13 элементов byte | ||
var b, c: array[-5..8] of real; // два массива по 14 элементов real | var b, c: array[-5..8] of real; // два массива по 14 элементов real | ||
+ | |||
+ | var a: array[3..6] of integer := (1, 2, 3, 4); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Динамические массивы === | ||
+ | Описание и инициализация динамического массива отличаются лишь тем, что границы индексов не оказываются. Вследствие этого компилятор не может отвести место под такой массив и необходимая память выделяется во время выполнения программы. | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | var a1: array of integer; // массив целых чисел | ||
+ | var p: array of real; // массив вещественных чисел | ||
+ | var q: array of boolean; // массив логических элементов | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Проще всего создать динамический массив при помощи функции Arr, | ||
+ | возвращающей такой массив. Ее аргументы – единого типа перечисленные через запятую члены будущего массива. Вместо Arr( ) удобно | ||
+ | использовать более короткую конструкцию | |. | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | var a := Arr(1, 9, -4, 12, 40, 39, 54); | ||
+ | var d := |1, 9, -4, 12, 40, 39, 54|; // альтернативный вариант | ||
+ | var b := |3.5, 2.0, 6.417, -12.0|; | ||
+ | var c := Arr(True, 3.5 > 1.63 ** 2.95, Sin(x) > 1, False, False); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Можно совместить описание динамического массива с его созданием, | ||
+ | для чего потребуется указать необходимую длину массива. | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | var a := new integer[10]; // массив из 10 целых элементов | ||
+ | var b := new real[7]; // массив из 7 вещественных элементов | ||
+ | var c := new boolean[4]; // массив из 4 логических элементов | ||
</syntaxhighlight> | </syntaxhighlight> |
Версия 07:37, 13 января 2023
Pascal ABC.NET выбор школьника Часть 2
Массив
Массив – хранимая нумерованная последовательность однотипных элементов с непосредственным доступом к любому элементу по его индексам, являющимся своеобразным аналогом номера.
Статические и динамические массивы
Статические массивы
Память под статический массив распределяется на этапе компиляции программы. Одновременно может быть выполнена инициализация элементов массива. Границы индексов статического массива неизменны и должны быть указаны в программе константами или выражениями, содержащими только константы.
Статические массивы – дань совместимости с более ранними версиями языка Паскаль.
Длину статического массива нельзя менять.
Динамические массивы
Динамический массив нужного размера может быть создан в том месте программы, где он впервые потребуется.
В динамических массивах индексы начинаются от нуля.
Количество элементов в динамическом массиве может меняться, но никогда не может стать отрицательным. Текущее количество элементов в массиве хранится в поле .Length.
Первый элемент массива всегда имеет индекс ноль.
Создание и инициализация массива
Статические массивы
Статический массив обычно описывается в виде
var ИмяМассива: array[m..n] of ТипЭлементов;
1 var a: array[0..12] of byte; // 13 элементов byte
2 var b, c: array[-5..8] of real; // два массива по 14 элементов real
3
4 var a: array[3..6] of integer := (1, 2, 3, 4);
Динамические массивы
Описание и инициализация динамического массива отличаются лишь тем, что границы индексов не оказываются. Вследствие этого компилятор не может отвести место под такой массив и необходимая память выделяется во время выполнения программы.
1 var a1: array of integer; // массив целых чисел
2 var p: array of real; // массив вещественных чисел
3 var q: array of boolean; // массив логических элементов
Проще всего создать динамический массив при помощи функции Arr, возвращающей такой массив. Ее аргументы – единого типа перечисленные через запятую члены будущего массива. Вместо Arr( ) удобно использовать более короткую конструкцию | |.
1 var a := Arr(1, 9, -4, 12, 40, 39, 54);
2 var d := |1, 9, -4, 12, 40, 39, 54|; // альтернативный вариант
3 var b := |3.5, 2.0, 6.417, -12.0|;
4 var c := Arr(True, 3.5 > 1.63 ** 2.95, Sin(x) > 1, False, False);
Можно совместить описание динамического массива с его созданием, для чего потребуется указать необходимую длину массива.
1 var a := new integer[10]; // массив из 10 целых элементов
2 var b := new real[7]; // массив из 7 вещественных элементов
3 var c := new boolean[4]; // массив из 4 логических элементов