- •Массивы. Основные операции над ними. Алгоритмы обработки массивов. Структурные типы данных. Способы представления в памяти.
- •Описание статических массивов в программе. Доступ к элементам.
- •Массивы констант.
- •Операции с элементами массива.
- •Ввод-вывод элементов одномерного массива.
- •Алгоритм нахождения суммы и произведения элементов массива.
- •Нахождения максимального элемента массива и его номера.
- •Упорядочивание массива по возрастанию
- •Поиск в массиве.
- •Ввод-вывод элементов двумерного массива.
- •Динамические массивы.
- •Задачи.
Массивы констант.
Если константа принадлежит составному типу или типу, введенному в разделе type, этот тип должен быть указан (такая константа называется типизированной):
const<имя константы> : <тип> = <значение константы> ;
Константа отличается от переменной тем, что значение ей присваивается при трансляции программы, а не в процессе выполнения, как для переменной. Обычно в раздел констант включают те данные, которые не меняются в процессе работы программы. Описание массива констант выглядит так
const
<имя константы массива> : array[<диапазон индексов>] of <тип элементов массива> = (<значение1>,<значение1>, ……,<значениеN>) ;
Число значений должно совпадать с числом элементов массива, а тип значений с типом элементов массива.
Пример:
{массив Days хранит количество дней в месяце, номер месяца соответствует номеру элемента в массиве}
const Days:array[1..12] of integer =(31,28,31,30,31,30,31,31,30,31,30,31);
Если набор однотипных данных не меняется во время выполнения программы, то вместо присваивания неизменных значений в переменную-массив в начале работы, предпочтительней ввести массив из констант.
Операции с элементами массива.
Практически все операции с массивом следует проводить поэлементно в цикле. Для обработки элементов массива удобно использовать цикл for ...do, а верхний индекс массивов определять как предварительно описанную константу. В этом случае все циклы по обработке массива будут заканчиваться значением этой константы. При изменении числа элементов массива, в программе достаточно изменить значение константы (т.к. все циклы зависят от константы).
Стандартные функции Low() иHigh() действуют для идентификаторов типа массива. Они возвращают нижние и верхние границы массива. Стандартная функцияLength() возвращает количество элементов первого измерения массива (для матрицы возвращается число строк)
Ввод-вывод элементов одномерного массива.
Паскаль не имеет средств ввода-вывода всего массива, поэтому ввод-вывод следует организовывать поэлементно (см. рис.1, 2). Блок-схема, изображённая на рис.1 и 2 может быть реализована циклами while,for.
|
Рис. 1 Ввод элементов массива. |
Рис.2 Ввод элементов массива |
Пример - ввод элементов массива X с помощью цикла while.
const n=10;
var x: array [1..n] of real;
i: integer;
begin
i:=1;
while (i<=N) do
begin
write(' x[ ', i , '] = '); readln(x[i]);
i:=i+1 // или inc(i);
end;
……………….
end.
Пример - ввод элементов массива X с помощью цикла for.
const n=10;
var x: array [1..n] of real;
i: integer;
begin
for i:=1 to N do
begin
write(' x[ ', i , '] = '); readln(x[i]);
end;
………..
end.
Пример – вывод элементов массива Х в одну строку.
for i: = 1 to n do write (x[i]:6:2,’ ‘);
или
for i: = 1 to n do write (‘X[‘,i,’] = ’,x[i]:6:2,’ ‘);
Алгоритм нахождения суммы и произведения элементов массива.
|
Рис.3 Нахождение суммы элементов массива Х. |
|
Пример – фрагмент программы нахождения суммы и произведения элементов массива Х из n целочисленных элементов.
const n=10;
var x: array [1..n] of integer;
i, s ,p : integer;
begin
{ввод элементов массива}
s:=0;
for i:=1 to N do // нахождение суммы элементов
s:=s+x[i];
writeln(‘сумма = ‘,s);
p:=1;
for i:=1 to N do // нахождение произведения элементов
p:=p*x[i];
writeln(‘произведение = ‘,p);
……..
end.




Рис.4 Нахождение произведения
элементов массива Х.