Оглавление
Массивы. Одномерные массивы. Понятие о массиве. 1
Описание массивов. 2
Действия над элементами массива. 3
Использование значений массивов, ввод и вывод значений массивов. 4
Двумерные массивы.. 4
Полная переменная. 5
Примеры использования массивов. 5
Контрольные вопросы.. 7
Комбинированный урок №8
Тема:Массивы: определение, описание, размещение в памяти, использование.
Цель: дать определение массиву, сформировать знания о массивах, приемы составления блок-схем алгоритмов, изучить приемы составления программ с использованием массивов.
Type
Klass = (К1, К2, КЗ, К4) ;
Znak = array [1..255] of char;
Var
Ml: Znak; {Тип Znak предварительно описан в разделе типов}
М2: array[1..60] of integer; {Прямое описание массива М2}
МЗ: array[1..4] of Klass;
Mas: array[1..4] of integer;
Если в качестве базового типа взят другой массив, образуется структура, которую принято называть многомерным массивом.
Двумерные массивы:
Type
Vector = array[1..4] of integer;
Massiv = array[1..4] of Vector;
Var
Matrix : Massiv;
Ту же структуру можно получить, используя другую форму записи:
Var
Matrix : array[1..4,1..4] of integer ;
Для описания массива можно использовать предварительно определенные константы:
Const
G1 = 4; G2 = 6;
Var
MasY: array[1..Gl, l..G2] of real;
Элементы массива располагаются в памяти последовательно.
Например, если имеется массив: A:array[1..5,1..5] of integer;
то в памяти элементы массива будут размещены по возрастанию адресов:
А[1,1] А[1,2] … А[1,5] А[2,1] А[2,2] … А[5,5]
Контроль правильности значений индексов массива может проводиться с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии {$R-}. Перевод в активное состояние вызывает проверку всех индексных выражений на соответствие их значений диапазону типа индекса. Действия над массивами
Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения "равно", "не равно" и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т. е. иметь одинаковые типы индексов и одинаковые типы компонентов.
Например, если массивы А и В описаны как
Var
А, В : array[1..20] of real;
то применение к ним допустимых операций даст следующий результат:
Выражение Результат
А=В True, если значение каждого элемента массива А равно соответствующему значению элемента массива В
А<>В True, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В
А:=В Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны.
Действия над элементами массива
После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[2], Vector[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива Vector. При работе с двумерным массивом указываются два индекса, с n-мерным массивом - n индексов. Например, запись Matr[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива Matr.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы Read, Readin, Write, Writeln; им можно присваивать любые значения, соответствующие их типу.
Рассмотрим типичные ситуации, возникающие при работе с данными типа array. Для этого опишем три массива и четыре вспомогательные переменные:
Var
A,D : array[l..4] of real;
В : array[1..10,1..15] of integer;
I, J, К : integer;
S : real;
Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива одного и того же значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора for, например:
Инициализация элементов одномерного массива А:
for I := 1 to 4 do A[I] := 0;
Для инициализации двумерного массива обычно используется вложенный оператор for, например:
Инициализация двумерного массива В:
for I := I to 10 do
for J := 1 to 15 do B[I,J]:= 0;
Использование значений массивов, ввод и вывод значений массивов
Для ссылки на отдельные элементы массива используется переменная с индексом: Имя массива[индекс].Чтобы получить доступ к конкретному элементу массива, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение, значение которого равно упомянутому целому числу.
Например, при обращении к элементам некоторого массива "A: Array[1..100] of Real", в качестве индекса можно использовать любое арифметическое выражение, значением которого будет целое число из диапазона 1..100:
Var
mas : array [1..10] of integer; {Описание одномерного массива с именем mas, состоящего из 10
элементов типа integer}
n,i : integer; {n-количество элементов массива, i-счетчик в цикле for}
BEGIN
clrscr;
writeln('Введите количество элементов массива не больше 10: ');
readln(n);
for i:=1 to n do {ввод элементов массива}
Begin
writeln('Введите ',i,' элемент массива');
readln(mas[i]);
end; {конец ввода}
writeln('Введенный массив: ');
for i:=1 to n do {вывод элементов массива}
write(' ',mas[i],' ');
readkey; {конец вывода}
END.
4. Пример программы ввода-вывода двумерного массива
program primer2;
uses crt;
Var
i,j,n,m:integer;
massiv:array[1..10,1..10] of integer; {описан двумерный массив с именем massiv}
BEGiN
clrscr;
write('Введите количество строк массива (не больше 10): ');
read(n); {n-количество строк}
write('Введите количество столбцов массива (не больше 10):');
read(m); {m-количество столбцов}
for i:=1 to n do {ввод элементов двумерного массива}
Begin
For j:=1 to m do
read(massiv[i,j]);
end; {конец ввода}
writeln('Введенный массив: ');
for i:=1 to n do {вывод элементов двумерного массива}
Begin
For j:=1 to m do
write(massiv[i,j]:5);
end; {конец вывода}
readkey;
END.
5.В квадратной матрице n-го порядка найти и вывести на экран строку, сумма элементов которой максимальна.
Program matrica;
Сonst Nmax = 20;
Var A : Array [1..nmax, 1..nmax ] Of Real;
i,j,N,Nstr : Byte;
S,Smax : Real;
Begin
Writeln ('Ввести порядок матрицы <= ',nmax,' )');
Readln (n);
For i:=1 To N Do
Begin
Writeln ('Введите элементы ',i,'-й строки ');
For j:=1 To N Do Read (A[i,j]);
S:=0;
For j:=1 To N Do S:=S + A[i,j]; {накопление суммы элементов матрицы}
If i=1 Then
Begin
Nstr:=1; {если это первый элементстолбца, то запомнить в S максимальное значение суммы}
{элементов строки}
Smax:=S;
End
Else if S > Smax Then
Begin {сумма элементов текущей строки >, то заменить на бóльшую для дальнейшего сравнения}
Nstr:=i;
Smax:=s;
End;
End;
Writeln ( 'Номер строки = ',nstr );
For j:=1 To N Do Write (A[nstr,j]:10:3);{вывод элементов указанной строки}
Writeln;
End.
Контрольные вопросы
1. Массивы. Основные понятия. Приведите определение массива.
2. Формат записи массивов. Описание одномерного и двумерного массивов.
3. Действия над массивами. Действия над элементами массивов.
4. Как описать типизированную константу типа «многомерный массив»?
5. Какой тип данных можно использовать в качестве индексов элементов массивов?
6. Примеры описания и ввода-вывода линейного и двумерного массивов.