МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИИ Томский политехнический университет ____________________________________________________...
7 downloads
298 Views
146KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИИ Томский политехнический университет ______________________________________________________________
УТВЕРЖДАЮ Декан АВТФ Мельников Ю.С. “__” ______2002 г.
ОТКРЫТЫЕ МАССИВЫ В OBJECT PASCAL Методические указания к лабораторной работе № 136 по курсу “Программирование и основы алгоритмизации” для студентов направления 550200 “Автоматизация и управление”
Томск - 2002
УДК 681.3 Открытые массивы в Object Pascal. Методические указания к лабораторной работе № 136 по курсу “Программирование и основы алгоритмизации” для студентов направления 550200 “Автоматизация и управление”. Томск: Изд. ТПУ, 2002. - 6 с.
Составитель Н.М. Семёнов Рецензент к.т.н., доцент Е.И. Громаков
Методические указания рассмотрены и рекомендованы методическим семинаром кафедры интегрированных компьютерных систем управления “___” ___________ 2002 г. Зав. кафедрой
А.М. Малышенко
2
ОТКРЫТЫЕ МАССИВЫ В OBJECT PASCAL Цель работы: познакомить студентов с некоторыми особенностями массивов в Object Pascal и развить навыки работы со средой Delphi. Массивы являются примером структурированного типа данных. Массив структура сохраняемых в памяти данных, состоящих из последовательности значений, относящихся к одному типу. В качестве базового может использоваться любой объявленный тип. При разработке подпрограмм общего назначения желательна возможность обрабатывать массивы различной длины. Но Паскаль позволяет указывать параметры, тип которых - массивы с определенным количеством элементов. Такие параметры требуют, чтобы у аргументов был такой же тип данных. Это требование ограничивает полезность подобных подпрограмм. 1. Открытые параметры В Object Pascal имеется возможность использования открытых массивов, которые позволяют указывать базовый тип массива, не фиксируя при этом его размер. У аргумента для параметра - открытого массива должен быть такой же тип элемента. Общий синтаксис открытого массива выглядит так: openArray: array of типЭлемента; Базовый тип параметра openArray - типЭлемента. У этого параметра нет фиксированного размера. Параметр openArray отображается на диапазоне индексов 0 .. (N-1), где N - количество элементов в фактическом аргументе параметра openArray. Пример: function sumArray (var arr: array of real) : real; procedure linearRegression (var X,Y: array of real; var slope, intercept,R2: real); Параметр arr функции sumArray - открытый массив элементов типа real. У процедуры linearRegression два параметра - открытых массивов, а именно X и Y. Открытые массивы следует использовать при разработке обобщенных подпрограмм, работающих с массивами данных. Не следует забывать, что нижний индекс открытого массива всегда равен 0, а не 1.
2. Функции Low и High 3
Предопределенные функции Low и High возвращают наименьший и наибольший индексы для массива, включая и параметры - открытые массивы. Используя эти функции (или, по крайней мере, функцию High), можно эффективно обрабатывать весь массив. Пример реализации функции sumArray, написанной с использованием функции High. function sumArray (var arr: array of real): real; var i:word; begin Result:=0; for i:=0 to High(arr) do Result := Result + arr[i]; end; Задание1: реализуйте эту функцию в приложении Delphi. 3. Строки как открытые массивы Паскалевский тип String ограничен 255 символами. Можно использовать тип array of char при разработке подпрограмм для работы со строками, максимальная длина которых может превышать этот лимит. При этом надо учитывать, что такие строки заканчиваются нулевым символом (то есть ASCII 0, или #0). Такие строки называются ASCIIZ - строками. Пример процедуры, которая преобразует символ в ASCIIZ - строке в верхний регистр: procedure toUpcaseStr(var aStr: array of char); var i:Integer: begin i:=0; while(aStr[i] #0) and (i