Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lb_5_k1.pdf
Скачиваний:
5
Добавлен:
27.03.2015
Размер:
463.02 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 5

Работа с массивами

1. Цель работы

Освоить работу с регулярными типами данных.

2. Краткие теоретические сведения

2.1Массивы

Массив – структура, состоящая из фиксированного числа упорядоченных компонент (элементов) одного типа, называемого типом компонент (элементов). Элементы массива обозначаются индексами, значения которых принадлежат типу индекса. Каждому набору значений индексов соответствует один и только один элемент массива. Таким образом, каждый элемент массива можно выбрать с помощью индексного выражения.

Массив может быть одномерным и многомерным. В общем виде структура описания типа массив имеет вид:

array [ <тип индекса> ] of <имя типа элемента>.

Причем массивы могут быть многомерными:

array [<тип индекса1>, <тип индекса2> , ... ] of <имя типа элемента >.

2.2 Пример объявления типа массив: const

MaxIndex

= 10; { Максимальный индекс массива }

MinLine

= -5; { Минимальный индекс строки }

type

index = 1..MaxIndex; { Индекс массива } ind_line = MinLine..MaxIndex; { Индекс строки }

matrix

= array [ind_line, index ] of real; { Массив данных }

vector

= array [ index ] of real; { Вектор результатов }

vector_set

= array [ind_line] of vector; { Массив векторов результатов }

color

= ( red, green, blue ); { Множество цветов };

color_levels

= array[ color ] of integer; { Значения уровней основных цветов };

В разделах объявления типа (type) и объявления переменных (var) можно тип ин-

декса указывать диапазоном. Например: type

vector = array [ -5..32 ] of real; { Вектор результатов }

Matrix = array[ 1..10, 1..10 ] of real; { Массив данных }

var

table : Matrix; i : integer;

begin

i := 1;

table[1, i] := 4.32;

end.

2.3Применение массивов

Массив можно рассматривать как вектор, матрицу, а так же таблицу или список значений. Их используют в тех случаях, когда над совокупностью значений выполняются некоторые стандартные (единообразные) действия.

Например:

-Хранение списков точек для построения графика.

-Хранение списков чисел для усреднения.

-Хранение коэффициентов матрицы.

-Хранение кодовой таблицы.

-Хранение состояний клеток шахматной доски.

Еще одно важное использование массивов – это обработка текстов. Слова и предложения составляются из отдельных литер (символов). Текст хранят в специальном типе массива, называемом строковой переменной. Таким массивом в TurboPascal является тип String.

Вязыке ПАСКАЛЬ имеются только две операции, работающие с массивом целиком:

-Присваивание одному массиву другого того же типа.

-Передача массивов процедуре в качестве параметров.

Не допускается:

-Сравнение массивов.

-Возврат массива как значения функции.

-Сложение массива друг с другом.

Естественно, массивы нельзя ввести или вывести стандартными процедурами Read, Redln и Write, Writeln.

Однако элементы массива можно использовать в любом месте программы, где допустимо использование переменных этого типа (имеется ввиду тип элемента).

Элемент массива указывается с помощью списка индексов в следующей форме: <имя массива> [<индекса1>, < индекса2> , ... ]

Количество индексов должно быть точно таким же, как и при объявлении массива. Т.е. для элемента одномерного массива обращение имеет вид:

<имя массива> [<индекс>]

Индексами элемента могут быть любые константы, переменные или выражения, имеющие тип совместимый с соответствующим типом индекса, при этом перед выполнением операции с элементом массива вначале вычисляются индексы, а лишь затем, по полученным

значениям индексов, из массива выбирается элемент и с ним или его значением производится операция.

Например следующая программа запрашивает у пользователя значения всех элементов массива и находит в нем и выводит на экран значение минимального элемента и его индексы:

program min; const

max_row = 2; {максимальный номер строки} max_col = 3; {максимальный номер столбца}

type

idx_row = 1..max_row; {индекс строки} idx_col = 1..max_col; {индекс столбца}

matr = array[ idx_row, idx_col ] of real; {тип массива} var

raw: idx_row; {номер строки} col: idx_col; {номер столбца} data : matr; {массив данных}

m_raw : integer; {индекс строки минимального элемента} m_col : integer; {индекс столбца минимального элемента}

begin

Writeln;

Write('Программа находит минимальное число в массиве размером ' );

Writeln( max_row,'x', max_col, '.' ); Writeln;

{Ввод элементов массива} Writeln( 'Введите данные' ); for raw := 1 to max_row do

for col := 1 to max_col do

begin {Запрос и чтение очередного элемента} Write( 'Введите элемент [ ', raw, ', ', col, ' ]=? ' );

Readln( data[ raw, col ] ); end;

{Поиск минимального элемента} {Предполагаем, что минимальный элемент - первый [1, 1]}

m_raw := 1; m_col := 1; {начальные значения индексов} for raw := 1 to max_row do

for col := 1 to max_col do

if data[ raw, col ] < data[ m_raw, m_col ] then

begin {Запоминаем индексы найденного элемента} m_raw := raw;

m_col := col; end;

{Вывод результата} Writeln;

Writeln( 'Минимальный элемент [ ', m_raw, ', ', m_col, ' ]= ', data[ m_raw, m_col ] ); Writeln;

Write('Для завершения работы с программой нажмите ENTER' );

Readln end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]