ПРОГРАММИРОВАНИЕ МАССИВОВ Язык программирования Паскаль ЕАДК, преподаватель Неверова И.Ю.
План занятия: 1. Понятие массива 2. Понятие индекса массива 3. Виды массива 4. Описание массива в программе 5. Структура программы с массивом 6. Составление программ на массивы Литература: И. Г. Семакин. Основы программирования, с. 104 – 112.
Массивы Массив – это набор однотипных данных располагающихся в памяти компьютера под одним именем. Массивы объединяют однотипные (логически однородные) элементы, упорядоченные по индексам, определяющим положение каждого элемента в массиве. Массивы используют для многократной обработки какой-то последовательности данных (например, оформление данных в табличной форме). Элементами массива могут быть данные любого типа, включая структурированные. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому элементу осуществляется путем индексирования элементов массива.
Элементы массива В качестве типа элемента массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д. Базовый тип элементов массива может быть любым, за исключением файлового. Действия Все действия с элементами массива производятся в циклах (ввод, вывод, поиск максимального и минимального элемента и т. д.).
Размерность массива Размерность массива Размерность массива – определяется количеством индексов (номеров) необходимых для обозначения любого элемента массива. Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, или одномерным А: 1574 Размерность массива А=4
Размер массива Размер массива Размер массива – количество его элементов. Поэтому чтоб вычислить размер матрицы необходимо умножить количество строк на количество столбцов. B: Размер массива В=6
Массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Массив представляет заранее известное количество однотипных элементов снабженных индексами.
Индексы массива В памяти компьютера массив можно представить в виде последовательности блоков памяти, имеющих одно имя и отличающихся каким-то признаком: индексом или порядковым номером. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Тип индекса определяет границы изменения значений индекса. Тип в программировании – это множество, для которого оговорен некоторый набор операций над элементами. Тип элементов массива называется его базовым типом. Индекс записывается после имени массива в квадратные скобки: T[1], T[5], T[i], T[i, j].
Виды массива Массивы бывают: одномерными, двумерными и многомерными. Если при описании массива задан один индекс, массив называется одномерным, если два индекса – двумерным, если N индексов – N-мерным (многомерным). Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный – понятию прямоугольной таблицы (матрицы, набора векторов).
Одномерный массив Номер ячейки Содержимое ячеек А: Имя массива
Ввод элементов одномерного массива в алгоритме НАЧАЛО n i=1 A(i) i=i+1 i>n нет да
Описание одномерного массива Для работы с массивом его надо описать, т.е. включить в блок VAR. Для описания массива задается его тип, для этого необходимо использовать зарезервированное слово ARRAY OF (массив из), где указывается тип индексов массива и тип его компонентов. Описание массива определяет Описание массива определяет: 1. размещение массива в памяти компьютера; 2. правила его дальнейшего использования в программе. : array of ; : array of ; Пример: Пример: Var T: Array [1..12] of Real; Var N: Array [Char] of String; Var A: Array [1..5] of Integer;
Программа Нахождение суммы элементов массива
Дан массив чисел. Найти значение максимального элемента. Если таких элементов несколько, то определить сколько их. Эта задача может быть решена за один просмотр элемента. Вначале установим текущий максимум по первому элементу массива: Max := Mas (1) и запоминаем количество максимумов: k := 1. Затем выбираем очередной элемент массива и сравниваем его с максимальным значением Max. В случае равенства увеличиваем значение k на единицу. Если текущий Max меньше элемента Mas (1), то переписываем его: Max := Mas (1) и устанавливаем значение k в единицу. После просмотра выводим результаты на экран. В данном случае считывание элементов массива разумно совместить с процессом обработки, но считывание можно осуществить и двумя последовательными циклами. Задача
Двумерные массивы Двумерным Двумерным называется массив, элемент которого зависит от его местоположения в строке и в столбце. В общем виде элемент матрицы обозначается как A(I,J), где А - имя массива, I - индекс (номер) строки, J - индекс (номер) столбца. Матрицу можно задать двумя способами: : array of array of ; : array of array of ; Пример: Var L: Array [1..10] of [1..10] of REAL; : array (, ) of ; : array (, ) of ; Пример: Var N: Array [1..10,1..10] of REAL;
Ввод элементов матрицы в алгоритме НАЧАЛО n i=1 A(i) i=i+1 i>m нет да j=1 j=j+1 j>n да нет
Описание двумерного массива Описываются также как одномерные, но указывается диапазон для двух индексов прямоугольной таблицы массива: VAR : ARRAY [, ] OF ; VAR : ARRAY [, ] OF ; Положение каждого элемента массива A[i, j] (имя массива и его элементы) определяется значением строки и столбца таблицы, где i – строки, а j – столбцы (указывают на элемент стоящий, на пересечении данной строки и данного столбца). Запись A[3, 5] – указывает на 5-й элемент в 3-й строке. Алгоритмы двумерных массивов могут быть структурированы как: 1. алгоритмы поиска; 2. алгоритмы выработки; 3. алгоритмы сортировки; 4. алгоритмы преобразования в виде поворота или зеркального отражения.
Задача. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Program Obmen; Var N, I, J, Max,Ind, Vsp : Integer; A : Array [1..15, 1..15] Of Integer; Begin WRITE('Введите количество элементов в массиве: '); READLN(N); FOR I := 1 TO N DO FOR J := 1 TO N DO Begin WRITE('A[', I, ',', J, '] '); READLN(A[I, J]) End; Ввод массива FOR I := 1 TO N DO Begin Max := A[I, 1]; Ind := 1; FOR J := 2 TO N DO IF A[I, J] > Max THEN Begin Max := A[I, J]; Ind := J ; End; Vsp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp; End; FOR I := 1 TO N DO Begin WriteLn; FOR J := 1 TO N Do Write(A[I, J] : 3); End; WriteLn ; End;
Вывод преобразованной матрицы Задача Требуется создать массив из N случайных целых чисел.
Значения массива сдвинуть циклически вправо на одну позицию так, чтобы последний элемент стал первым. Решение const n = 10; var x: array [1..n] of integer; t, i: integer; begin t := x[n]; for i := n downto 2 do x[i] := x[i - 1]; x[1] := t end.
Домашнее задание Выполнить задания в Рабочей тетради по Теме 4.9. «Программирование массивов данных» (по вариантам)