47781 (Обработка массивов данных в среде Turbo Pascal)

2016-07-30СтудИзба

Описание файла

Документ из архива "Обработка массивов данных в среде Turbo Pascal", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47781"

Текст из документа "47781"

28



Министерство образования Российской Федерации

УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра автоматизированных систем управления

ОБРАБОТКА МАССИВОВ ДАННЫХ В СРЕДЕ 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] );

б) ввод с помощью генератора случайных чисел

RANDOMIZE; { инициализация генератора случайных чисел }

FOR I: = 1 TO N DO M [I]: = - 25 + RANDOM (D);

Стандартная функция Random формирует случайное целое число из диапазона от 0 до D-1. При этом i-му элементу массива будет присвоена сумма выбранного случайного числа и -25. Таким образом, массив будет заполняться целыми случайными числами от -25 до -25 + (D-1). Например, если выбрать D равным 51, то массив будет заполняться случайными числами от -25 до +25.

Вывод одномерных массивов происходит аналогичным образом, например:

FOR I: = 1 TO N DO WRITELN ( M [I] );

Ввод двумерных массивов (матриц) производится с помощью вложенного оператора FOR:

FOR I: = 1 TO N DO

FOR J: = 1 TO K DO

READ ( M [I, J] );

Вывод значений элементов двухмерных массивов производится аналогичным образом с использованием операторов вывода WRITE или WRITELN:

FOR I: = 1 TO N DO

FOR J: = 1 TO K DO

WRITELN ( M [I, J] )

Таким же образом, поэлементно, происходит ввод и вывод многомерных массивов.

2.6 Контроль ошибок при работе с массивами

Самой распространенной ошибкой при работе с массивами является выход индексов за допустимые диапазоны. Для исключения таких ошибок в среде Turbo Pascal предусмотрена директива компилятора {R}. При указании в программе директивы {$R+} все массивы проверяются на предмет нахождения их внутри указанных границ. Если обнаруживается нарушение диапазона, программа завершает свою работу, выводя сообщение об ошибке выполнения. Если директива не используется (этот режим принят по умолчанию), выход индекса за пределы допустимого диапазона не приведет к прекращению работы программы. Но при обращении к ’’несуществующему’’ элементу массива даст неопределенный результат, что может сделать ход дальнейшего выполнения программы непредсказуемым.

Следует заметить, что применение директивы {R+} несколько замедляет выполнение программы и увеличивает ее размер. Поэтому рекомендуется использовать эту директиву при отладке, а затем ее удалить из текста программы.

3. РЕШЕНИЕ ЗАДАЧ - ПРИМЕРОВ

В качестве примера рассмотрим решение двух задач с одномерным и двухмерным массивами.

Пример 1. Создать одномерный вещественный массив из 25 элементов. Определить максимальный и минимальный элементы массива и поменять их местами. Полученный результат вывести на экран.

Текст программы на языке Turbo Pascal:

PROGRAM MAS;

VAR

M: ARRAY [1.. 25] OF REAL; { Вещественный массив }

MAX, MIN, MN: REAL;

I, K, N: INTEGER; { Вспомогательные переменные }

BEGIN

{ Ввод вещественного массива из 25 элементов }

FOR I: = 1 TO 25 DO READ ( M [I] );

{ Переменным MAX и MIN присваиваем значение первого элемента массива }

MAX: = M [1]; K: = 1;

MIN: = M [1]; N: = 1;

{ Определяем максимальный и минимальный элементы массива и их индексы}

FOR I:= 2 TO 25 DO

BEGIN

IF M [I] > MAX THEN

BEGIN

MAX: = M [I];

K: = I;

END;

IF M[I] < MIN THEN

BEGIN

MIN: = M [I];

N: = I;

END;

END;

{ Меняем местами максимальный и минимальный элементы }

MN: = M [K];

M [K]: = M [N];

M [N]: = MN;

{ Вывод полученного массива на экран }

FOR I: = 1 TO 25 DO WRITELN ( M[I] );

END.

Пример 2. Создать целочисленную матрицу А 10х8. Сформировать одномерный массив В, который содержит суммы положительных элементов каждой строки матрицы А и вывести его на экран.

Текст программы на языке Turbo Pascal:

PROGRAM PRIM;

VAR

A: ARRAY [1.. 10, 1.. 8] OF INTEGER;

B: ARRAY [1.. 10] OF INTEGER;

I, J, S: INTEGER;

BEGIN

{ Ввод целочисленной матрицы А 10х8 }

FOR I:= 1 TO 10 DO

FOR J: = 1 TO 8 DO

READ ( A[ I, J] );

{ Вычисление суммы положительных элементов каждой строки матрицы А и формирование массива В }

FOR I: = 1 TO 10 DO

BEGIN

S: = 0;

FOR J: = 1 TO 8 DO

IF A [ I, J ] > 0 THEN S: = S + A [ I, J ];

B [ I ]: = S;

END;

{ Вывод сформированного массива В на экран }

FOR I: = 1 TO 10 DO WRITELN ( B [ I ] );

END.

4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Для выполнения работы необходимо:

а) повторить правила техники безопасности при работе с вы-числительной техникой;

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее