Error: Incorrect password!
Error: Incorrect password!
Integer Языке Паскаль :: Введение в Pascal

Integer Языке Паскаль


Динамический или статический?
Июнь 29, 2022 – 12:35
Var a, b: integer;

Традиционно в языке Паскаль используются статические массивы вида

var a: array [1..10] of integer;

Границы массива обязательно задаются константами, и изменить размер массива в ходе работы программы нельзя. Зато можно сделать индекс не только целого, но и, скажем, символьного или перечислимого типа. Например, для подсчета встречаемости каждой буквы можно использовать массив

var LettersCount: array ['a'..'z'] of integer;

и работать с ним в свое удовольствие:

LettersCount['z'] := 1; LettersCount['d'] := LettersCount['d'] + 1;

Недостатки таких массивов известны: если заранее неизвестно, сколько элементов потребуется использовать, то под массив отводится память максимального размера. В итоге в большинстве случаев мы "запасаемся впрок", а иногда и этого "запаса" оказывается недостаточно. Именно поэтому такие массивы называются статическими: их размер статичен и должен быть задан на этапе компиляции программы.

В Delphi Object Pascal появились динамические массивы, размер которых можно не только задавать, но и менять по ходу работы программы. Именно об этих массивах и о преимуществах их использования пойдет речь далее.

Описываются они предельно просто:

Чтобы задать размер такого массива, следует вызвать процедуру SetLength:

var n: integer; read(n); SetLength(a, n);

Как мы видим, размер такого массива может быть задан переменной, которая вычисляется по ходу работы програмы (в данном случае ее значение вводится).

Чтобы определить размер динамического массива, следует вызвать функцию Length: Length(a) возвращает размер динамического массива.

Индексы динамического массива - только целочисленные. Кроме того, нижняя граница индекса всегда равна нулю. То есть после вызова SetLength(a, n) элементами массива a являются a[0]..a[n-1]. Вот как вывести элементы динамического массива:

for i:=0 to Length(a)-1 do write(a[i], ' ');

Source: pascalabc.net
Похожие публикации