- •Типы данных pascal
- •Структура программы написанной в среде Pascal
- •Условный оператор в pascal
- •Использование сложных условий
- •Оператор while
- •Цикл с постусловием repeat
- •Строковый тип данных
- •Процедуры и функции для работы со строками
- •Массивы в Pascal Общая информация
- •Одномерные массивы Общая информация
- •Вывод массива
- •Подпрограммы
Вывод массива
Чтобы отобразить(сообщить) массив на экране нужно выполнить следующее:
... const n = 20; var A : array[1..n] of Real; ... Writeln('Вывод эементов массива:'); for i:=1 to n do Write(A[i]:8:2); Writeln;
Поиск
Поиск в массиве осуществляется перебором его элементов при помощи цикла, для проверки результата используется алгоритм ветвления.
Поиск в массиве можно показать на примере задачи нахождения наибольшего элемента и его индекса.
Алгоритм:
Выделить память для массива A(10)
Присвоить элементам значения любым способом
Присвоить MAX значение A(1)
Присвоить INDMAX значение 1
Для каждого I от 1 до 10 повторять:
Если A(I)>MAX то
Присвоить MAX значение A(I)
Присвоить INDMAX значение I
КонецЕсли
КонецЦикла
Двумерные массивы
Но часто данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс - это номер строки, а второй - номер столбца, где расположен элемент массива.
Размер двумерного массива задается парой чисел: M*N, где M - число строк, а N - число столбцов в таблице.
Пусть задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:
Var Matr : array [1..10,1..20] of integer; |
тогда
Matr[5,7] - элемент, расположенный в 5-ой строке и в 7-ом столбце.
Отличительной особенностью массивов является то обстоятельство, что все их компоненты суть данные одного типа (возможно, структурированного); эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например:
Type Digit = array [0..9] of integer; Matrix = array [1..100, 0..9] of real; Var m : Matrix; d : Digit; i : integer; |
Описание типа массива задается следующим образом:
<имя типа> = array [<сп. инд. типов>] of <тип>;
где:
<имя типа> - правильный идентификатор, <сп. инд. типов> - список из одного или нескольких индексных типов, разделенных запятыми, <тип> - любой тип Турбо Паскаля.
Формирование значений элементов массива случайным образом и с клавиатуры и вывод их на экран
Приведем пример заполнения массива случайными числами. Эта процедура должна принять в качестве входных параметров массив, количество строк и столбцов, заданные пользователем с клавиатуры в основном разделе операторов. Так как наша процедура будет воздействовать на пустой исходный массив, то его мы должны передать по ссылке. Количество строк и столбцов достаточно передать копиями по значению.
Program first; Const n=10; Var i, j : integer; N:array[1..n,1..n] of integer; Begin Randomize; for i := 1 to n do {пробегая последовательно строки массива} for j := 1 to n do {просмотрим каждую ее ячейку текущего столбца} X[i, j]:= Random(50); {и запишем туда случайное число, которое сформирует компьютер в диапазоне [0..49]} End; |
Рассмотрим процедуру вывода элементов массива на экран. Для того, чтобы вывести наш массив на экран в виде таблицы, поставим при переходе к новой строке оператор writeln и применим формат вывода элементов (:5).
Program first; Const n=10; Var i, j : integer; N:array[1..n,1..n] of integer; Begin for i := 1 to n do {пробегая последовательно строки и столбцы массива} begin for j := 1 to n do write(X[i, j]:5); {выведем элемент массива на экран, выделив ему 5 знакомест} writeln; {переход на новую строку} end; End; |
