Министерство образования Российской Федерации
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра автоматизированных систем управления
ОБРАБОТКА МАССИВОВ ДАННЫХ В СРЕДЕ TURBO PASCAL
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторному практикуму по курсу
“Информатика и программирование”
Составители: Ю.Б. Головкин, Р.А. Ярцев
УФА 2007
УДК 681.3
Обработка массивов данных в среде Turbo Pascal: Методические указания к лабораторному практикуму по курсу “Информатика и программирование”/ Уфимск. гос. авиац. техн. ун-т; Сост.: Ю.Б.Головкин, Р.А.Ярцев. -Уфа, 2007. - 14 с.
Представленный лабораторный практикум посвящен вопросам разработки программ на языке Turbo Pascal на основе использования массивов данных. Рассматриваются особенности хранения данных в массивах, способы объявления переменных, действия над элементами массивов, ввод и вывод массивов. Практическое применение одномерных и многомерных массивов иллюстрируется на примере написания двух программ на языке Turbo Pascal. В приложении приводятся варианты заданий на лабораторную работу.
Библиогр.: 5 назв.
Рецензенты: канд. техн. наук, доц. А.М.Сулейманова;
канд. техн. наук, доц. Р.В.Насыров
© Уфимский государственный
авиационный технический
университет, 2007
СОДЕРЖАНИЕ
1. Цель работы
2. Теоретическая часть
2.1 Понятие массива данных
2.2 Одномерные массивы
2.3 Многомерные массивы
2.4. Действия над элементами массивов
2.5 Ввод и вывод элементов массива
2.6 Контроль ошибок при работе с массивами
3. Решение задач - примеров
4. Порядок выполнения работы
5. Требования к отчету
6. Контрольные вопросы
Библиографический список
Приложение. Варианты заданий на лабораторную работу
1. ЦЕЛЬ РАБОТЫ
Целью настоящей работы является приобретение студентами умений и навыков работы с массивами данных в среде Turbo Pascal.
2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
2.1 Понятие массива данных
На практике, при функционировании автоматизированных систем управления, информационных систем, измерительных комплексов и др., возникает необходимость обрабатывать большое количество различной информации. Например, показания температуры воздуха окружающей среды, стоимость товаров, значения координат движущихся объектов, характеристики приборов и других технических устройств и т.д. Программное обеспечение таких систем должно обеспечивать обработку, хранение, ввод-вывод больших объемов всевозможных данных. Интегрированная среда Turbo Pascal позволяет эффективно разрабатывать, тестировать и отлаживать программы, связанные с обработкой массивов данных самой различной структуры.
В языке Pascal под массивом понимается упорядоченный набор фиксированного количества однотипных данных.
Массивы, наряду с записями, строками, множествами, относятся к структурированному типу данных языка. Массивы могут быть одномерные и многомерные. При этом размер массива не ограничивается. Размерность массивов на практике ограничивается лишь объемом рабочей памяти конкретного компьютера. В памяти компьютера элементы массива располагаются в последовательных соседних ячейках памяти.
2.2 Одномерные массивы
Переменные массивов можно задавать двумя способами:
а) через объявление типа в формате
TYPE
< имя типа > = ARRAY [тип индекса] OF < тип элементов >;
VAR
< идентификатор >: < имя типа >;
б) через объявление переменных в формате
VAR
< идентификатор >: ARRAY [тип индекса] OF < тип элементов >;
Элементы массива могут быть любого, в том числе и структурированного, типа. Следует отметить, что вещественный тип не относится к упорядоченным типам данных. В качестве типа индекса может использоваться любой порядковый тип, кроме типа Longint. Обычно в качестве индексного типа используется целочисленный тип-диапазон, в котором задаются границы изменения индексов.
Примеры объявления массивов:
CONST
N = 25; { размерность массива }
TYPE
X = ARRAY [1.. 100] OF INTEGER;
Y = ARRAY [1.. N] OF REAL;
Z = RECORD
R, I: REAL
END;
VAR
M: X; { целочисленный массив }
V1, V2: Y; { вещественные массивы }
L1, L2: ARRAY [1.. 20 ] OF Z; { массивы записей }
K: ARRAY [ BYTE ] OF CHAR; { массив символов }
R: ARRAY [ 1.. 5 ] OF STRING [25]; { массив строк }
T: ARRAY [-10.. 9] OF BYTE; { массив целых чисел }
S: ARRAY [ BOOLEAN ] OF REAL; { вещественный массив }
F: ARRAY [ GREEN, RED, BLUE ] OF INTEGER; { целый массив с перечислимым типом-индексом}
G: ARRAY [ 1.. N ] OF (MO, TU, WE, TH, FR, SA, SU );
{ массив перечислимого типа }
Типизированная константа-массив объявляется в программе следующим образом:
CONST
A: ARRAY [1.. 5] OF INTEGER = ( 1, 2, 3, 4, 5 );
B: ARRAY [1.. 4] OF REAL = ( 1.1, 2.2, 3.3, 4.4 );
2.3 Многомерные массивы
Элементами массивов могут быть также массивы. В этом случае мы имеем двухмерный массив ( матрицу ).
Двухмерные массивы задаются в программе следующим образом:
а) через объявление типа в формате
TYPE
< имя типа > = ARRAY [тип индекса 1] OF ARRAY [тип индекса 2] OF < тип элементов >;
или
< имя типа > = ARRAY [ тип индекса 1, тип индекса 2 ] OF <тип элементов>;
Обе формы описания равносильны, но вторая употребляется чаще.
VAR
< идентификатор >: < имя типа >;
б) через объявление переменных в формате
VAR
< идентификатор >: ARRAY [тип индекса 1, тип индекса 2] OF < тип элементов >;
Необходимо отметить, что индексы не обязательно должны иметь один и тот же тип. В общем случае индексы по каждому измерению могут быть разных типов как, например, в следующем фрагменте раздела описаний.
Примеры объявления двухмерных массивов:
CONST
N = 5;
M = 10;
TYPE
A = ARRAY [ 1.. N, 1.. M ] OF WORD;
B = ARRAY [ 1.. 10, 1.. 20 ] OF REAL;
VAR
C: ARRAY [ 1.. N, BOOLEAN ] OF -20.. 20;
D1, D2: A;
F1, F2: B;
Типизированная константа-матрица объявляется в программе следующим образом:
CONST
M: ARRAY [1.. 3, 1.. 2] OF INTEGER = ((1, 2), (3, 4), (5, 6));
Массивы могут быть не только одномерными или двухмерными, но и 3-х, 4-х и n-мерными. В этом случае они описываются в программе следующим образом:
VAR
M: ARRAY [ 1.. 10, -10.. 9, CHAR ] OF BYTE;
N: ARRAY [ 1.. 5, 1.. 10, 1.. 15, 1.. 20 ] OF SHORTINT;
В памяти компьютера элементы размещаются друг за другом так, что при переходе от младших адресов к старшим наиболее быстро изменяется самый правый индекс массива. Например, для матрицы 2х2: A[1,1], A[1,2], A[2,1], A[2,2].
2.4 Действия над элементами массивов
Для обеспечения эффективной работы с отдельными элементами необходимо прежде всего обеспечить правильный доступ к элементам массива. Доступ (обращение) к отдельным элементам массива осуществляется путем указания имени переменной массива, за которым в квадратных скобках помещается значение индекса (порядкового номера) элемента.
Примеры задания индекса:
M [5] - непосредственно числом;
M [x] - косвенно через переменную x;
M [y+5] - косвенно через выражение;
M [Succ(i)] - косвенно через значение функции.
Всем элементам одного массива можно присвоить значения элементов другого массива с помощью одного оператора присваивания, в том случае, когда массивы имеют идентичный тип. Так, если заданы следующие массивы:
VAR
X, Y: ARRAY [1.. 10] OF INTEGER;
Z: ARRAY[1.. 10] OF INTEGER;
то допустим следующий оператор присваивания:
X: = Y;
но недопустим оператор
Z: = X;
так как массивы X и Z не идентичных типов.
В Паскале над массивами не определены операции отношения. Сравнивать массивы можно только поэлементно. К отдельным элементам массива можно применять стандартные процедуры и функции, предусмотренные в языке. Перечень допустимых стандартных подпрограмм зависит от типа элементов массива.
2.5 Ввод и вывод элементов массива
Ввод и вывод элементов массивов происходит поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания или путем считывания из файла, но на практике они чаще всего вводятся с клавиатуры или с помощью генератора случайных чисел. Последний способ целесообразно использовать тогда, когда количество элементов массива достаточно велико.
Примеры ввода одномерных массивов:
а) ввод с клавиатуры
FOR I: = 1 TO N DO READ ( M [I] );
б) вво