До сих пор во всех наших программах объем информации, хранимой в памяти ЭВМ в процессе выполнения алгоритма, был невелик. А как быть, если нужно работать с сотней, тысячей или сотней тысяч чисел? Для записи алгоритмов, работающих с большими объемами информации в языках программирования существуют специальные табличные величины или массивы.
Допустим, что надо составить программу для присваивания 100 разным величинам одного и того же значения (например, 5). Если не прибегать к новому типу данных, придется:
a, b, c, и еще 97 имен ... : real; |
a
:= 5; b := 5; c := 5; и еще 97 команд... |
Простая, казалось бы, задача приводит к громоздкой и труднообозримой программе. А что, если бы эти величины пришлось изменять, выводить на экран, суммировать и т. п.?
Можно ли сократить программу? Насчет первого пункта что-то кардинальное пока предложить трудно. А вот для второго пункта, разумеется, напрашивается цикл:
for i := 1 to 100 do ... := 5;
Однако, так ( ... ) писать нельзя, а написать что-то осмысленное вместо троеточия не удается (хотя, почему бы не попробовать, например: a := 5 ?)
Проблема, как видим, в том, что величины имеют совершенно разные имена. Поэтому и не удается записать явно повторяющуюся команду присваивания в "общем виде" (или все-таки x := 5 , где x обозначает соответствующие имена переменных, подходит?)
Выход есть. В курсе алгебры, изучая тему "Прогрессии", Вы обозначали члены прогрессии так: a1, a2, a3 и т.д. Именно такие обозначения давали возможность записывать формулы типа: an = a1 + d(n-1).
Заметим, что при иных (наших привычных: a, b, c, ...) обозначениях членов записать, например, формулу для n-го члена прогрессии было бы невозможно.
Другой пример из геометрии: вектор a=(a1, a2), как единыйй объект имеет индивидуальное имя a, и состоит из двух компонент - его координат. Координаты же - числа, обозначаемые a1 и a2.
Если, возвращаясь к нашей программе, прибегнуть к аналогичному приему, обозначив интересующие нас величины a1, a2, a3, ..., a100, то злополучный цикл приобретет вполне законченные очертания:
for i := 1 to 100 do ai := 5; |
for i := 1 to 100 do a[i] := 5; |
Не столь важно, где записывать индекс: справа и снизу от основного символа или в той же строке в квадратных скобках (как принято в Паскале). |
Важнее на сколько упростилась и сократилась наша программа после того, как мы дали всей сотне величин общее имя: a.Вот почему языки программирования, включая Паскаль, предоставляют возможность введения большого числа переменных, имеющих одно общее имя.
В следующих разделах мы ближе познакомимся с массивами и попутно выясним, каким образом они могут помочь существенно сократить не только тело программы, но и описание сотни наших величин.