Лекция: Работа с динамическими массивами.
При работе с массивами практически всегда возникает задача настройки программы на фактическое количество элементов массива. В зависимости от применяемых средств решение этой задачи бывает различным.
Первый вариант -использование констант для задания размерностимассива.
Program First;
Const
N: integer = 10;
{ либо N = 10; }
Var
A: array [ 1..N ] of real;
I: integer;
Begin
For i := 1 to N do
Begin
Writeln ('Введите', i, '-ый элемент массива');
Readln ( A [ i ] )
End;
{ И далее все циклы работы с массивом используют N}
Такой способ требует перекомпиляции программы при каждом изменении числа обрабатываемых элементов.
Второй вариант — программист планирует некоторое условно максимальное (теоретическое) количество элементов, которое и используется при объявлении массива. При выполнении программа запрашивает у пользователя фактическое количество элементов массива, которое должно быть не более теоретического. На это значение и настраиваются все циклы работы с массивом.
Program Second;
Var
A: array [ 1..25 ] of real;
I, NF: integer;
Begin
Writeln ('Введите фактическое число элементов’,
‘ массива <= 25');
Readln ( NF );
For i := 1 to NF do
Begin
Writeln ('Введите ',i, ' -ый элемент массива');
Readln ( A [ i ] )
End;
{ И далее все циклы работы с массивом используют NF}
Этот вариант более гибок и технологичен по сравнению с предыдущим, так как не требуется постоянная перекомпиляция программы, но очень нерационально расходуется память, ведь ее объем для массива всегда выделяется по указанному максимуму. Используется же только часть ее
Вариант третий — в нужный момент времени надо выделить динамическую память в требуемом объеме, а после того, как она станет не нужна, освободить ее.