Двумерный массив представляется собой прямоугольную матрицу. Имя массива является единым для всех его элементов. Местоположение каждого элемента определяется двумя координатами: номером строки и номером столбца.
Например: А[I,J], Mas[r+2,c-1], D[3,4].
Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива одного и того же значения, соответствующего базовому типу.
Направление изменения второго индекса
(номера столбца)
j= 1 2 3... n
f | ||||
Направление изменения i = 1
первого индекса …
(номера строки) к
А[2,3] или А[i,j] (если i=2 и j=3)
Матрица в которой количество строк и столбцов равны называется правильной.
У правильной (квадратной) матрицы есть главная и побочная диагональ. Элемент главной диагонали имеет одинаковые индексы и обозначается F[x,x], а побочной- F[x,n-x+1] (где n- количество строк и столбцов)
главная |
F[1,1] | ||
F[2,2] | ||
F[3,3] |
побочная |
|
|
Транспонированной матрицей называется матрица, у которой столбцы соответствуют строкам исходной квадратной матрицы. Операция транспонирования сводится к обмену элементов матрицы, расположенных симметрично главной диагонали.
Способы описания двумерного массива
1). Type имя типа = array [1..K, 1..N] of тип элементов;
Var имя массива: имя типа;
2). Var имя массива: array [диапазон 1 индекса, диапазон 2 индекса] of тип элементов;
где array, of – «массив из» - служебные слова;
тип элементов – любой простой или структурированный;
K – максимальное количество строк;
N - максимальное количество столбцов.
Например: Соnst K= 4; N= 6;
Type massiv=array[1..20, 1..5] of real;
Var A:massiv;
B: array [1..K, 1..N] of char;
Ввод элементов массива
Ввод N,K |
j=1,N,1 |
Ввод A[i,j] |
i=1,K,1 |
Type mas=array[1..10,1..10] of real;
Var a:mas;
N,K, i,j: integer;
Begin
Write(‘Введите количество строк -’);
Readln(K);
Writeln(‘Введите количество столбцов- ’);
Readln(N);
Writeln(‘Введите элементы массива ’);
For i:=1 to K do
For j:=1 to N do
Begin
Write(‘a[‘,i,’,’,j,’]=’);
Readln(a[i,j])
End;
Обработка введенного массива
...
End.
Вывод элементов массива
For i:=1 to k do
Begin
For j:=1 to n do
Write (a[i,j], ‘ ‘);
Writeln
End;
programpr; type masiv = array[1..15,1..15] ofinteger; vari,max,j,n1,n2,p1,p2:integer; mas:masiv; begin writeln('Введите количество строк и столбцов '); readln(n2,n1); fori:=1 ton2 do forj:=1 ton1 do begin writeln('Введите Mas[',i,',',j,']'); readln(mas[i,j]); end; max:=mas[1,1]; p1:=1;{p1,p2-координаты макс.элемента} p2:=1; fori:=1 ton2 do forj:=1 ton1 do ifmas[i,j]>max then begin max:=mas[i,j]; p1:=i; p2:=j; end; writeln('Mas[',p1,',',p2,'] = ',max); end. Введите количество строк и столбцов 3 3 Введите Mas[1,1] Введите Mas[1,2] Введите Mas[1,3] Введите Mas[2,1] Введите Mas[2,2] Введите Mas[2,3] Введите Mas[3,1] Введите Mas[3,2] Введите Mas[3,3] Mas[2,1] = 6 |
Пример 4:
|
|
Найти в двумерном массиве первый максимальный элемент и вывести его координаты.
Тема 2.6 Подпрограммы: процедуры и функции
При создании сложной программ возникает необходимость декомпозиции (разделении) ее на подзадачи. Тurbo Pascal имеет различные средства для деления программы на части. На верхнем уровне (больших задач) – это модули, на нижнем уровне (элементарных подзадач) – это процедуры и функции.
Процедура – независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Процедура не может выступать как операнд в выражении. Упоминание имени процедуры в тексте головной программы приводит к активизации процедуры и называется ее вызовом.
Например: Readln(x), Delete(St, 5, 2)
Функция предназначена для вычисления какой-либо скалярной (простой) величины. Имя функции может входить в выражение как операнд. В теле функции имени функции хотя бы раз должно быть присвоено значение.
Например: Ord(‘F’), Sqrt(a+b)
Все процедуры и функции языка Тurbo Pascal делятся на две группы:
- встроенные (стандартные) - хранятся в стандартных библиотечных модулях;
- пользовательские - описываются в разделе описаний головной программы.