- •Лабораторная работа 7 массивы Цель работы
- •Методические указания
- •Вывод элементов I-й строки матрицы
- •Лабораторная работа 8 строки и множества
- •Лабораторная работа 9 комбинированный тип данных (записи)
- •Лабораторная работа 10 подпрограммы с типизированными параметрами -значениями и параметрами-переменными Цель работы
- •Лабораторная работа 11 подпрограммы с параметрами процедурного типа
- •Лабораторная работа 12 параметры-константы, нетипизированные параметры подпрограмм, массивы и строки открытого типа
- •Библиографический список
- •Содержание
- •Редактор м.Е. Цветкова Корректор н.А. Орлова
- •390005, Рязань, Гагарина, 59/1.
Лабораторная работа 7 массивы Цель работы
Изучение правил описания массивов, реализации ввода/вывода данных для массивов различной размерности и других действий с ними.
Методические указания
Данная лабораторная работа - первая из работ со структурированными типами данных. До сих пор программировались действия с простыми типами данных. Результатом их выполнения становился скаляр - число, символ, имя. Turbo Pascal позволяет обрабатывать также сложные данные, которые характеризуются не только типом их компонент, но и способом их организации, т.е. структурой. Максимальный размер любой структуры не должен превышать 65520 байтов. Язык предоставляет возможность работать со следующими сложными типами данных: массив, множество, запись, файл. Рассмотрим правила описания массивов и действий с ними.
Массив - это упорядоченная совокупность данных одного типа. Такая совокупность характеризуется общим числом элементов (компонент), размером и размерностью, которая определяет способ организации данных внутри массива. Различают одномерные массивы (векторы), двумерные массивы (матрицы) и n-мерные массивы. Величина n ограничивается максимальным размером структуры. Следовательно, вектор характеризуется одним типом индексов, который задает нумерацию его элементов; матрица - двумя типами индексов, один из которых определяет номер строки в массиве, а другой задает номер столбца; n-мерный массив использует n типов индексов.
Одномерный тип-массив описывается следующим образом:
type <имя_типа> = array [<тип_индексов>] of <тип_компонент>;
Тип индексов может быть любым порядковым, кроме Longint, Integer, Word. Компоненты могут быть любого типа, в том числе и структурированного, т.е. можно описать тип-массив, элементами которого будут, например, записи.
Обычно тип индексов определяют через тип-диапазон с использованием константы, например так:
const n = 10;
type vector = array [1..n] of real;
var v : vector;
Объявленная переменная v является вектором с вещественными компонентами, пронумерованными от 1 до 10. Значения компонент пока не заданы. Размер массива можно объявлять с запасом и использовать требуемое число его элементов. Выбор компоненты массива производят по ее номеру, например v[7]:= 2.3 - седьмой элемент вектора v получил значение 2,3. Присваивать значения одного массива другому можно лишь в том случае, если они описаны как идентичные. Покажем это на примере.
type vec = array [1..5] of byte;
var v1,v2 : vec;
v3 : array [1..5] of byte;
После задания значений элементам, например массива v1, можно присвоить эти же значения элементам вектора v2 - v2 := v1, но недопустимо присваивание v3 := v2, т.к. типы переменных v2 и v3 не являются идентичными.
Двумерный тип-массив может быть описан одним из двух способов:
type <имя_типа> = array [<тип_индексов_строк>] of
array [<тип_индексов_столбцов>] of <тип_компонент>;
Такой тип представляет собой массив строк, каждая из которых - массив элементов определенного типа. Обычно приведенную конструкцию разбивают для упрощения восприятия описания на две, например так:
type stroka = array [1..5] of byte; {строка матрицы}
matrix = array [1..3] of stroka; {матрица - массив строк}
2) type matrix = array [1..3, 1..5] of byte;
Второй способ описания типа предполагает перечисление через запятую в квадратных скобках типов индексов строк и столбцов матрицы. Оба способа
равнозначны. Элемент матрицы m типа matrix, находящийся на пересечении i-ой строки и j-го столбца, в программе записывается следующим образом:
m[i, j] или m[i][j].
Аналогичным образом могут быть описаны массивы любой размерности.
Инициализация генератора псевдослучайных чисел
i := 1 (1) 10
случайное целое число не более 100
i := 1 (1) 4
Вывод (‘Введите i-ю строку’)
j := 1 (1) 4
Ввод ()
Вывод (‘Исходный вектор:’)
i := 1 (1) 10
Вывод в строку элементов вектора
Перевод курсора в начало новой строки
Вывод (‘Исходная матрица:’)
i := 1 (1) 4
j := 1 (1) 4