![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Обработка массивов данных в среде Turbo Pascal |
Министерство образования Российской Федерации УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра автоматизированных систем управления ОБРАБОТКА МАССИВОВ ДАННЫХ В СРЕДЕ URBO PASCAL МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторному практикуму по курсу “Информатика и программирование” Составители: Ю.Б. Головкин, Р.А. Ярцев УФА 2007 УДК 681.3 Обработка массивов данных в среде urbo Pascal: Методические указания к лабораторному практикуму по курсу “Информатика и программирование”/ Уфимск. гос. авиац. техн. ун-т; Сост.: Ю.Б.Головкин, Р.А.Ярцев. -Уфа, 2007. - 14 с. Представленный лабораторный практикум посвящен вопросам разработки программ на языке urbo Pascal на основе использования массивов данных. Рассматриваются особенности хранения данных в массивах, способы объявления переменных, действия над элементами массивов, ввод и вывод массивов. Практическое применение одномерных и многомерных массивов иллюстрируется на примере написания двух программ на языке urbo Pascal. В приложении приводятся варианты заданий на лабораторную работу. Библиогр.: 5 назв. Рецензенты: канд. техн. наук, доц. А.М.Сулейманова; канд. техн. наук, доц. Р.В.Насыров © Уфимский государственный авиационный технический университет, 2007 СОДЕРЖАНИЕ 1. Цель работы 2. Теоретическая часть 2.1 Понятие массива данных 2.2 Одномерные массивы 2.3 Многомерные массивы 2.4. Действия над элементами массивов 2.5 Ввод и вывод элементов массива 2.6 Контроль ошибок при работе с массивами 3. Решение задач - примеров 4. Порядок выполнения работы 5. Требования к отчету 6. Контрольные вопросы Библиографический список Приложение. Варианты заданий на лабораторную работу 1. ЦЕЛЬ РАБОТЫ Целью настоящей работы является приобретение студентами умений и навыков работы с массивами данных в среде urbo Pascal. 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 2.1 Понятие массива данных На практике, при функционировании автоматизированных систем управления, информационных систем, измерительных комплексов и др., возникает необходимость обрабатывать большое количество различной информации. Например, показания температуры воздуха окружающей среды, стоимость товаров, значения координат движущихся объектов, характеристики приборов и других технических устройств и т.д. Программное обеспечение таких систем должно обеспечивать обработку, хранение, ввод-вывод больших объемов всевозможных данных. Интегрированная среда urbo Pascal позволяет эффективно разрабатывать, тестировать и отлаживать программы, связанные с обработкой массивов данных самой различной структуры. В языке Pascal под массивом понимается упорядоченный набор фиксированного количества однотипных данных. Массивы, наряду с записями, строками, множествами, относятся к структурированному типу данных языка. Массивы могут быть одномерные и многомерные. При этом размер массива не ограничивается. Размерность массивов на практике ограничивается лишь объемом рабочей памяти конкретного компьютера. В памяти компьютера элементы массива располагаются в последовательных соседних ячейках памяти. 2.2 Одномерные массивы Переменные массивов можно задавать двумя способами: а) через объявление типа в формате YPE &l ; имя типа &g ; = ARRAY OF &l ; тип элементов &g ;; VAR &l ; идентификатор &g ;: &l ; имя типа &g ;; б) через объявление переменных в формате VAR &l ; идентификатор &g ;: ARRAY OF &l ; тип элементов &g ;; Элементы массива могут быть любого, в том числе и структурированного, типа.
Следует отметить, что вещественный тип не относится к упорядоченным типам данных. В качестве типа индекса может использоваться любой порядковый тип, кроме типа Lo gi . Обычно в качестве индексного типа используется целочисленный тип-диапазон, в котором задаются границы изменения индексов. Примеры объявления массивов: CO S = 25; { размерность массива } YPE X = ARRAY OF REAL; Z = RECORD R, I: REAL E D; VAR M: X; { целочисленный массив } V1, V2: Y; { вещественные массивы } L1, L2: ARRAY OF Z; { массивы записей } K: ARRAY OF CHAR; { массив символов } R: ARRAY ; { массив строк } : ARRAY OF BY E; { массив целых чисел } S: ARRAY OF REAL; { вещественный массив } F: ARRAY OF I EGER; { целый массив с перечислимым типом-индексом} G: ARRAY OF (MO, U, WE, H, FR, SA, SU ); { массив перечислимого типа } Типизированная константа-массив объявляется в программе следующим образом: CO S A: ARRAY OF I EGER = ( 1, 2, 3, 4, 5 ); B: ARRAY OF REAL = ( 1.1, 2.2, 3.3, 4.4 ); 2.3 Многомерные массивы Элементами массивов могут быть также массивы. В этом случае мы имеем двухмерный массив ( матрицу ). Двухмерные массивы задаются в программе следующим образом: а) через объявление типа в формате YPE &l ; имя типа &g ; = ARRAY OF &l ; тип элементов &g ;; или &l ; имя типа &g ; = ARRAY OF &l ;тип элементов&g ;; Обе формы описания равносильны, но вторая употребляется чаще. VAR &l ; идентификатор &g ;: &l ; имя типа &g ;; б) через объявление переменных в формате VAR &l ; идентификатор &g ;: ARRAY OF &l ; тип элементов &g ;; Необходимо отметить, что индексы не обязательно должны иметь один и тот же тип. В общем случае индексы по каждому измерению могут быть разных типов как, например, в следующем фрагменте раздела описаний. Примеры объявления двухмерных массивов: CO S = 5; M = 10; YPE A = ARRAY OF WORD; B = ARRAY OF REAL; VAR C: ARRAY OF -20. 20; D1, D2: A; F1, F2: B; Типизированная константа-матрица объявляется в программе следующим образом: CO S M: ARRAY OF I EGER = ((1, 2), (3, 4), (5, 6)); Массивы могут быть не только одномерными или двухмерными, но и 3-х, 4-х и -мерными. В этом случае они описываются в программе следующим образом: VAR M: ARRAY OF BY E; : ARRAY OF SHOR I ; В памяти компьютера элементы размещаются друг за другом так, что при переходе от младших адресов к старшим наиболее быстро изменяется самый правый индекс массива. Например, для матрицы 2х2: A. 2.4 Действия над элементами массивов Для обеспечения эффективной работы с отдельными элементами необходимо прежде всего обеспечить правильный доступ к элементам массива. Доступ (обращение) к отдельным элементам массива осуществляется путем указания имени переменной массива, за которым в квадратных скобках помещается значение индекса (порядкового номера) элемента. Примеры задания индекса: M - косвенно через переменную x; M - косвенно через значение функции. Всем элементам одного массива можно присвоить значения элементов другого массива с помощью одного оператора присваивания, в том случае, когда массивы имеют идентичный тип. Так, если заданы следующие массивы: VAR X, Y: ARRAY OF I EGER; то допустим следующий оператор присваивания: X: = Y; но недопустим оператор Z: = X; так как массивы X и Z не идентичных типов.
В Паскале над массивами не определены операции отношения. Сравнивать массивы можно только поэлементно. К отдельным элементам массива можно применять стандартные процедуры и функции, предусмотренные в языке. Перечень допустимых стандартных подпрограмм зависит от типа элементов массива. 2.5 Ввод и вывод элементов массива Ввод и вывод элементов массивов происходит поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания или путем считывания из файла, но на практике они чаще всего вводятся с клавиатуры или с помощью генератора случайных чисел. Последний способ целесообразно использовать тогда, когда количество элементов массива достаточно велико. Примеры ввода одномерных массивов: а) ввод с клавиатуры FOR I: = 1 O DO READ ( M ); б) ввод с помощью генератора случайных чисел RA DOMIZE; { инициализация генератора случайных чисел } FOR I: = 1 O DO M : = - 25 RA DOM (D); Стандартная функция Ra dom формирует случайное целое число из диапазона от 0 до D-1. При этом i-му элементу массива будет присвоена сумма выбранного случайного числа и -25. Таким образом, массив будет заполняться целыми случайными числами от -25 до -25 (D-1). Например, если выбрать D равным 51, то массив будет заполняться случайными числами от -25 до 25. Вывод одномерных массивов происходит аналогичным образом, например: FOR I: = 1 O DO WRI EL ( M ); Ввод двумерных массивов (матриц) производится с помощью вложенного оператора FOR: FOR I: = 1 O DO FOR J: = 1 O K DO READ ( M ); Вывод значений элементов двухмерных массивов производится аналогичным образом с использованием операторов вывода WRI E или WRI EL : FOR I: = 1 O DO FOR J: = 1 O K DO WRI EL ( M ) Таким же образом, поэлементно, происходит ввод и вывод многомерных массивов. 2.6 Контроль ошибок при работе с массивами Самой распространенной ошибкой при работе с массивами является выход индексов за допустимые диапазоны. Для исключения таких ошибок в среде urbo Pascal предусмотрена директива компилятора {R}. При указании в программе директивы {$R } все массивы проверяются на предмет нахождения их внутри указанных границ. Если обнаруживается нарушение диапазона, программа завершает свою работу, выводя сообщение об ошибке выполнения. Если директива не используется (этот режим принят по умолчанию), выход индекса за пределы допустимого диапазона не приведет к прекращению работы программы. Но при обращении к ’’несуществующему’’ элементу массива даст неопределенный результат, что может сделать ход дальнейшего выполнения программы непредсказуемым. Следует заметить, что применение директивы {R } несколько замедляет выполнение программы и увеличивает ее размер. Поэтому рекомендуется использовать эту директиву при отладке, а затем ее удалить из текста программы. 3. РЕШЕНИЕ ЗАДАЧ - ПРИМЕРОВ В качестве примера рассмотрим решение двух задач с одномерным и двухмерным массивами. Пример 1. Создать одномерный вещественный массив из 25 элементов. Определить максимальный и минимальный элементы массива и поменять их местами. Полученный результат вывести на экран. Текст программы на языке urbo Pascal: PROGRAM MAS; VAR M: ARRAY OF REAL; { Вещественный массив } MAX, MI , M : REAL; I, K, : I EGER; { Вспомогательные переменные } BEGI { Ввод вещественного массива из 25 элементов } FOR I: = 1 O 25 DO READ ( M ); { Переменным MAX и MI присваиваем значение первого элемента массива } MAX: = M ; : = 1; { Определяем максимальный и минимальный элементы массива и их индексы} FOR I:= 2 O 25 DO BEGI IF M ; K: = I; E D; IF M; : = I; E D; E D; { Меняем местами максимальный и минимальный элементы } M : = M : = M ; { Вывод полученного массива на экран } FOR I: = 1 O 25 DO WRI EL ( M ); E D.
Вы должны также включить IsAddop в базовую копию программы Cradle. Она потребуется нам позже. Сейчас попробуйте снова ввести -1. Вау! Эффективность полученного кода довольно плохая шесть строк кода только для того, чтобы загрузить простую константу но, по крайней мере, правильно работает. Запомните, мы не пытаемся сделать замену Turbo Pascal. На данном этапе мы почти завершили создание структуры нашего синтаксического анализатора выражений. Эта версия программы должна правильно распознавать и компилировать почти любое выражение, которое вы ей подсунете. Она все еще ограничена тем, что поддерживает показатели состоящие только из одной цифры. Но я надеюсь что теперь вы начинаете понимать, что мы можем расширять возможности синтаксического анализатора делая незначительные изменения. Вы возможно даже не будете удивлены, когда услышите, что переменная или даже вызов функции это просто один из видов показателя. В следующей главе я покажу, как можно легко расширить наш синтаксический анализатор для поддержки всех этих возможностей, и я также покажу как легко мы можем добавить многосимвольные числа и имена переменных
2. Система хищник-жертва: экологические и математические аспекты
3. Программа на языке Паскаль, реализующая операции над множествами
5. Программа обработки данных в библиотеке
9. Программы для обработки звуковой информации
10. Художественная обработка металлов
12. Методы компьютерной обработки статистических данных. Проверка однородности двух выборок
13. Старая пластинка: Что такое цифровой звук и реставрация звука с помощью цифровой обработки
14. Создание автоматизированной системы обработки экономической информации
15. Организация автоматизированной обработки информации в коммерческих сетях
16. Автоматизированная обработка информации (Шпаргалка)
17. Скорость обработки запросов на SQL серверах
18. Анализ пакетов обработки экспериментальных данных SABR и BOOTSTRAP
19. Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов
20. Системы обработки информации - язык баз данных SQL со средствами поддержания целостности
25. Обработка результатов эксперимента
27. Электроэрозионная обработка
28. Термическая обработка стали
29. Обработка и добыча каменных изделий
30. Электроискровая и электроимпульсная обработка металла
31. Конспект лекций и ответы на экзаменационные вопросы по предмету Термическая Обработка
32. Программная обработка на ЧПУ
33. Обработка воды на тепловых и атомных электростанциях
34. Гидромеханизированная технология обработки угольного пласта в условиях проектируемой шахты
42. Спектральный анализ и его приложения к обработке сигналов в реальном времени
43. Цифровая обработка сигнала (Digital Signal processing)
44. Комплекс наземного слежения 1К119. Модернизация блока обработки сейсмосигнала
46. Радиофизические методы обработки информации в народном хозяйстве
47. Автоматизированная обработка информации долгосрочных кредитов банка
48. Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)
49. Художественная обработка металла в Туле
50. Методы получения и обработки маркетинговой информации
51. Первичная статистическая обработка информации
53. Термическая обработка и термомеханическая обработка обсадных труб из стали 36Г2С
57. Механическая обработка вала
58. Обработка материалов давлением, определение потерь напора
59. Поиск, накопление и обработка научной информации
60. Санитарные требования к первичной обработке продуктов
63. Автоматизированные Системы Обработки Информации
64. Цифровая обработка сигналов
65. Выставка: последующая обработка данных
66. Классификация машин и инструментов для обработки древесины
68. Обработка материалов электрическим током и лазером
69. Подробный план лекций по первичной обработке шерсти
73. Санитарная обработка людей
74. Проект реконструкции пункта послеуборочной обработки зерна
75. Описание устройства сбора и первичной обработки информации о состоянии процесса бурения
76. Автоматизированная обработка землеустроительной информации
77. Методика определения норм времени на процесс цифровой обработки иллюстраций
78. Высокоуровневые методы обработки информации и программирования
79. Автоматизированная система обработки экономической информации (АСОЭИ)
80. Технические средства обработки данных
81. Cистема обработки информации
82. Игровая программа TETRIS на языке Паскаль
83. Обработка данных таблицы в Excel
84. Организация обработки информации на ЭВМ по формированию плана поставок готовой продукции
85. Программная система обработки и анализа изображений
89. Изучение методов адресации информации и обработки адресов
90. Обработка и анализ информационных потоков: системы поддержки принятия решений
91. Реализация алгоритма обработки данных
92. Обработка данных в средах MathCAD и LabVIEW
93. Автоматизированная обработка статистической информации
94. Обработка результатов эксперимента
95. Групповой полет летательных аппаратов – алгоритм обработки информации относительного движения.
96. Технология механической обработки деталей машин
97. Электрические методы обработки
98. Повышение эффективности механической обработки за счет выбора рациональных условий
99. Автоматизированные системы обработки экономической информации