Анализ методики использования многомерных массивов в среде Delphi. Общее понятие массивов, их реализация, достоинства, недостатки. Массивы в Object Pascal. Описание функциональной структуры приложения: модуль MatrixOperations, модуль fileIO, модуль form.
Аннотация к работе
В вычислительной технике данные обычно отличают от программ. Программа является набором инструкций, которые детализируют вычисление или задачу, производимую компьютером. Часто перед программистами встают задачи, связанные с обработкой стразу множества значений данных.Массив (или индексный массив), это именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу. Массивы с одним индексом называют одномерными, с двумя - двумерными и т. д. Массивы хорошо подходят для отображения таких объектов реального мира, как строки (массивы символов), наборы координат, таблицы данных, математические множества и вообще множества однотипных объектов. Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования и/или конкретным транслятором.Динамическим называется массив, размер которого может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования, поддерживающий такие массивы, должен предоставлять встроенную функцию или оператор. Массив, хранящий указатели на значения различных типов, не является гетерогенным, так как собственно хранящиеся в массиве данные относятся к единственному типу - типу «указатель».Стандартным способом реализации статических массивов с одним типом элементов является следующий: Под массив выделяется непрерывный блок памяти объемом S*m1*m2*m3…mn, где S - размер одного элемента, а m1…mn - размеры диапазонов индексов (то есть количество значений, которые может принимать соответствующий индекс). A[i1, i2, i3, … in] адрес соответствующего элемента вычисляется как B S*(i1p*m1 i2p*m2 … i(n-1)p*mn-1 inp), где B - база (адрес начала блока памяти массива), ikp-значение k-го индекса, приведенное к целому с нулевым начальным смещением.· Быстрый доступ к элементам, причем время доступа не зависит от длины массива· для статического массива - отсутствие динамики, невозможность удаления или добавления элемента без сдвига другихКлючевое слово Array используется для определения одномерных и многомерные массивов данных.Могут быть одномерными, или многомерными - во втором случае представляя из себя массив массивов (массивов массивов и так далее). Величина каждой размерности определяется двумя способами, которые могут свободно сочетаться при определении многомерного массива: · Тип Index, где Index - целый тип, обычно Byte или Word. Диапазон типа определяет диапазон размерности, например 0..255 для ByteУ для динамических массивов память заранее не выделяется, создается только указатель. У таких массивов необходимо задавать размер перед использованием. устанавливает длину первой размерности массива DYNARRAY в пять, при этом выделяется необходимая память.Copy (Source : array; STARTINDEX, Count : Integer ) : array - создает копию части массива. High (type or variable): Ordinal type - возвращает верхнюю границу диапазона значений массива. Length (const SOURCEARRAY: array): Integer - возвращает число элементов в массиве. Slice (SOURCEARRAY: array; Count: Integer): array - создает часть массива для передачи его как параметр в процедуру или функцию.Приложение предназначено для выполнения специфической обработки матриц. Исходные матрицы должны загружаться из файла, либо вводиться непосредственно в элементы интерфейса приложения. Если введено число, выходящее из этого диапазона, либо значение, не являющееся целым числом, то размер устанавливается равным единице. Если какой-то из элементов лежит вне этого диапазона, либо введено значение, не являющееся целым числом, то элемент устанавливается равным нулю.19 begin//если элемент больше макс значения, то 20 MAXVAL[ROWN]:= arr[ROWN, COLN];//максимальное значение приравняем элементу Далее идут функции, осуществляющие подсчет сумм элементов выше и ниже пересечения диагоналей, а так же смену местами этих элементов. Главной диагональю считается множество элементов матрицы, индексы которых совпадают, побочной диагональю считается та, которая идет по диагонали из нижнего левого угла матрицы. Функции GETSUMABOVE и GETSUMBELOW проходят соответствующие половины строк матрицы, для каждой строки высчитывая диапазон столбцов, из которых нужно суммировать элементы: 1 {возвращает сумму элементов выше пересечения диагоналей матрицы arr} Процедура SWAPABOVEBELOW таким же образом, как функция GETSUMABOVE, определяет, какие элементы лежат выше пересечения диагоналей, но не суммирует их, а каждый меняет местами с элементом того же столбца, симметричным текущему относительно верхней и нижней границ матрицы.Используются текстовые файлы, которые предварительно необходимо открыть и подготовить к чтению/записи. Формат файла, содержащего матрицу таков: матрица записана построчно, начиная с первой строки, элементы в каждой строке записаны слева направо и разделены произвольным количеством пробелов. Именно такой файл создает процедура Write2DARRAY: 1 { 2 записывает матрицу arr в текстовый файл OUTFILE.
План
Содержание
Введение
1. Теоретическая часть
1.1 Общее понятие о массивах
1.1.1 Определение и область применения
1.1.2 Специфические типы массивов
1.1.3 Реализация массивов
1.1.4 Достоинства массивов
1.1.5 Недостатки массивов
1.2 Массивы в Object Pascal
1.2.1 Статические массивы
1.2.2 Динамические массивы
1.2.3 Функции для работы с массивами
1.3 Использование массивов в рамках проекта
2. Практическая часть
2.1 Постановка задачи
2.2 Функциональная структура приложения
2.3 Описание модулей
2.3.1 Модуль MATRIXOPERATIONS
2.3.2 Модуль FILEIO
2.4 Модуль form
3. Эксплуатационная документация
3.1 Описание применения
3.2 Руководство оператора
Выводы
Приложения
Введение
В вычислительной технике данные обычно отличают от программ. Программа является набором инструкций, которые детализируют вычисление или задачу, производимую компьютером. Данными же традиционно называется все, что не выступает в роли программы. В языках высокого уровня данные воплощаются в виде переменных.
Часто перед программистами встают задачи, связанные с обработкой стразу множества значений данных. В таких случаях крайне неудобно для хранения каждого значения заводить отдельную именованную переменную. Для такой ситуации синтаксис многих языков предусматривает создание массивов - множеств переменных, доступ к которым осуществляется посредством одного имени (имени массива) и одного или нескольких индексов.
Данная курсовая работа рассматривает методики использования многомерных массивов в среде Delphi. Она демонстрирует использование встроенных возможностей языка, а так же применение широко известных операций над массивами, таких как последовательный обход значений, сортировка, циклический сдвиг.