Массивы. Описание массива.
Мы подобрались к одной из самых сложных, на мой взгляд, тем в программировании для начинающих. Именно из-за массивов я остался на второй год в институте (потому что тогда в школах еще этим не занимались). Теперь, когда я объясняю эту тему своим ученикам, то стараюсь сделать это как можно более доходчиво, пусть не совсем научными терминами, но понятно, поскольку без представления, что такое массив, дорога в программирование будет закрыта.
Но и без умных определений не обойтись.
Итак, массив – это набор однородных данных (чисел, символов, слов), имеющий имя и последовательную нумерацию его элементов. Например, список фамилий учеников вашего класса – массив, численные данные о среднесуточной температуре за месяц – массив, буквы русского алфавита – массив.
Как физически массив представляется в компьютере, я рассказывать не буду, а как формально – это надо себе представлять.
Описание массива
Если мы знаем, что в программе предстоит работать с большим объемом каких-то данных, то мы должны этот массив в программе объявить с помощью специального оператора dim (от англ. "dimension"), после которого указывается имя массива, а потом в скобках следует так называемый размер массива, т. е. количество его элементов. Например, пусть в группе четыре человека. Массив – это фамилии учеников. Мы тогда должны записать так:
DIM FAM$ (4)
Знак $ добавляется, т. к. в массиве будут храниться строковые переменные. В этом случае компьютер в памяти отводит некую область из четырех ячеек, которую всю и называет fam$. Кроме того, эти ячейки нумеруются натуральными числами, начиная с 1. Я всегда подобную процедуру, да и сам массив, сравниваю с улицей одноэтажных домов в деревне или маленьком городке. Построили на улице четыре дома, назвали улицу fam$ (имя массива дается по тем же правилам, что и имя переменной), пронумеровали дома и заселили туда жильцов (рис. 1.66).
Рис. 1.66. Массив FAM$ из четырех элементов
Из этого следует, что:
- массива есть имя, которое дает ему программист;
- у массива есть тип, который определяется именем – числовой (имя без $) и текстовый (или символьный, или строковый – имя с символом $);
- у массива есть размер, т. е. количество составляющих его элементов;
- у массива есть сквозная последовательная индексация составляющих его элементов;
- у каждого элемента массива есть значение (в нашем случае это фамилия).
Предупреждение
Оператор dim для каждого конкретного массива должен задаваться только один раз в программе до первого к нему обращения.
Продолжая аналогию с улицей одноэтажных домов, что надо сделать, чтобы обратиться к какому-либо конкретному жильцу? Знать его адрес!
Предположим, мы хотим потревожить господина Муна – указываем его адрес – fam$(2), т. е. название улицы и дом. Зачастую начинающие программисты путают индекс элемента массива (его номер) и значение элемента массива, т. е. "кто-кто в тереме живет". Итак, еще раз: индекс или номер элемента массива – величина постоянная, а значение (как и жильцы в доме) с легкостью может меняться.
В начале мы рассмотрим одномерные массивы – такие, в которых адрес элемента массива определяется только одним индексом (номером "дома").
Предупреждение
На самом деле, нумерация ячеек-"домиков" в Бейсике начинается с нуля, но с единицы нам привычнее и удобнее, поэтому нулевой "домик" мы пропускаем. Возможен более законный вариант – обязать Бейсик нумеровать "домики" с единицы оператором OPTION BASE 1.