Краткая характеристика вспомогательных модулей 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Краткая характеристика вспомогательных модулей



При решении задач на обработку массива потребуется неоднократно вводить, выводить массивы, а также выполнять над ними различные операции. Очевидно, что в этом случае удобно использовать заранее написанные процедуры и функции, которые целесообразно хранить во вспомогательном модуле. Такие модули созданы и называются UnitArrayDop. и UnitMatixDop. Ниже, для справки, приводятся интерфейсы этих модулей.

Однако созданные процедуры и функции, которые записаны в этих модулях, могут стать универсальными только в том случае, если будут оперировать с одним и тем же типом массива. Поэтому в модуле описаны эти типы массивов. Для одномерных массивов - это массив целых чисел, максимальная длина которого будет составлять 100 элементов, и индексы будут нумероваться с 1. Для двумерных массивов - это массив целых чисел, максимальное количество строк и столбцов которого будет составлять 10 элементов, и индексы будут нумероваться с 1.

В том случае, если в РГР нужен другой тип массива, процедуры модуля придется несколько изменить.

Интерфейс модуля для работы с одномерными массивами

interface

Type

TArray100= array[1..100] of integer;

 

procedure createRandomArray(var a:TArray100; count, modul:integer);

procedure getArrayFromStr(var a:TArray100; var count:integer; s:String);

procedure getArrayFromMemo(var a:TArray100; var count:integer; mem:TMemo);

procedure getArrayFromInputBox(var a:TArray100; var count:integer);

function ArrayToStr(const a:TArray100; count:integer):string;

function ArrayToStrFromTo(const a:TArray100; left,right:integer):string;

procedure showArrayInMemo(const a:TArray100; count:integer; mem:TMemo);

function sumArray(const a:TArray100; count:integer):integer;

procedure minMax(const a:TArray100; count:integer;

var min,max,iMax,iMin:integer);

function posInArray(element:integer; const a:TArray100; count:integer):integer;

function PosInSortArray(x:integer; const a:TArray100; count:integer):integer;

procedure accum(const a:TArray100; var b:TArray100;count:integer);

procedure shiftLeft(var a:TArray100; count, i1,i2:integer);

procedure trans(var a:TArray100; count:integer);

procedure delElem(element:integer; var a:TArray100; var count:integer);

procedure SortArray(var a:TArray100;count:integer);

procedure SortArrayBubl(var a:TArray100;count:integer);

procedure SortArrayInsert(var a:TArray100;count:integer);

procedure JoinArray(const a1,a2:TArray100;size1,size2:integer;

var a3:TArray100; var size3:integer);

procedure InsertToSortArray(element:integer; var a:TArray100; var count:integer);

Интерфейс модуля для работы с двумерными массивами

unit UnitMatrixDop;

interface

uses StdCtrls, SysUtils, Grids, unitArrayDop;

type

TMatrInt10x10= array[1..10,1..10]of Integer;

 

//Тип для процедур, які визначають результат сортування

TcalcPos=procedure(rowCount,colCount,num:Integer;var row,col:Integer);

procedure createRndMatr(var m:TMatrInt10x10;nRow,nCol,modul:integer);

procedure showMatrInMemo(const m:TMatrInt10x10;nRow,nCol:integer;memo:TMemo);

procedure showMatrInGrid(const m:TMatrInt10x10;nRow,nCol:integer;grid:TStringGrid);

procedure getMatrFromMemo(var m:TMatrInt10x10; var nRow,nCol:integer;memo:TMemo);

procedure getMatrFromGrid(var m:TMatrInt10x10; var nRow,nCol:integer;grid:TStringGrid);

procedure TransMatr(var m:TMatrInt10x10; nRow,nCol:integer);

procedure DelColFromMatr(var m:TMatrInt10x10; nRow:integer; var nCol:integer; delCol:integer);

procedure SortMatrix(var mtr:TMatrInt10x10; nRow,nCol:integer; getPos:TcalcPos);

Рекомендации по перестановкам элементов матрицы

Есть задачи, в которых требуется менять местами элементы матрицы. Ниже перечислены некоторые из таких задач.

– Транспонирование матрицы (поворот вокруг главной диагонали).

– Поворот вокруг вспомогательной диагонали.

– Поворот вокруг горизонтальной оси.

– Поворот вокруг вертикальной оси.

Для решения всех этих задач требуется двойной цикл. Внешний цикл обычно организуется по всем номерам строк или столбцов, иногда, за исключением первого или последнего номера. Внутренний же цикл обеспечивает перебор только половины элементов, которые расположены с одной стороны от оси поворота. Тело цикла содержит операторы, которые обеспечивают обмен значениями между текущим элементом матрицы и симметричным ему. Для организации обмена удобнее всего использовать промежуточную переменную.

Основная трудность, возникающая при решении этих задач, это определение индексов элемента, симметричного текущему элементу.

В таблице 3.6 приведены параметры циклов, обеспечивающих перевороты элементов матрицы вокруг различных осей симметрии. Индексные выражения, приведенные в таблице, составлены в предположении, что нижние индексы строк и столбцов раны единице, верхние индексы столбцов и строк соответственно равны nCol и nRow,
а m – имя матрицы.

Таблица 3.6 – Параметры циклов при перестановках элементов матрицы
Линия симметрии при повороте   Внешний цикл   Внутренний цикл Индексы элемента
текщ. симметр.
Главная диагональ от i=2 до nRow По элементам строки (индексы столбца) от j = 1 до i-1 [ i, j ] [ j, i ]
Вспомога-тельная диагональ По строкам, от i=1 до nRow -1 от j = 1 до nCol - i [ i, j ] [nRow–j +1, nCol – i+1]
Горизонталь-ная ось По строкам, от i=1 до nRow div 2 По элементам строки (индексы столбца) от j = 1 до nCol [ i, j ] [nRow –i+1, j ]
Вертикальная ось По строкам, от i=1 до nRow По элементам строки (индексы столбца) от j = 1 до nCol div 2 [ i, j ] [ i, nCol – j+1 ]

 

3.5 Содержание отчета

– Наименование работы.

– Цель работы.

– Схемы алгоритмов для процедуры и функций, обеспечивающих работу с массивами.

– Тексты модулей проекта с пояснениями в виде комментариев.

– Результаты тестирования проектов в виде копий формы с результатами.

– Выводы.

Рекомендованая литература

1. Культин Н. Delphi 6. Программирование на Object Pascal. – СПб.:БХВ-Петербург,2002.

2. Ставровский А.Б. Турбо Pascal 7.0/ Учебник. – К.: BHV, 2000.

 

4 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 4.
РАБОТА С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ

Цели работы:

– получить навыки работы с записями в Object Pascal;

– получить навыки работы с типизированными файлами в Object Pascal;

– освоить алгоритмы обработки типизированных файлов.

4.1 Задания для работы

В работе следует создать проект по обработке файла, который содержит записи, соответствующие варианту задания из таблицы 4.1. Номер варианта выбирается по последней цифре номера зачетной книжки.

 

Таблица 4.1 – Задания для расчетно-графической работы
Содержание записей проекта и требования к обработке
   
  Номер комнаты в общежитии, количество компьютеров, наличие холодильника, количество жильцов. Сортировка обменом по номеру комнаты. Комплексная сортировка по количеству жильцов ↓ + по наличию холодильника ↓ + по количеству компьютеров ↓. Выборка комнат, где на каждого жильца не менее 1-го компьютера. Подсчет общего числа компьютеров и холодильников.
  Фамилия работника, оклад, надбавка в целых %, премия. Сортировка выбором по фамилии. Комплексная сортировка по суммарной выплате ↑ + по фамилиям ↓. Выборка лиц, у которых суммарная выплата выше заданного значения. Подсчет общей суммы выплат.
  Фамилия студента, дата (в виде строки символов гг-мм-дд), расходы на завтрак, обед, ужин в студенческой столовой. Комплексная сортировка вставкой по дате ↓ + по фамилии ↓. Комплексная сортировка по фамилии ↓ + по сумме расходов за день ↑. Выборка данных о ежедневных суммарных расходах, для студента. Подсчет суммарных расходов студента за месяц.
  Фамилия студента, группа, контракт или бюджет, средний балл. Комплексная сортировка обменом по группе ↓ + по фамилии ↓. Комплексная сортировка по полю контракт или бюджет + по среднему баллу.Выборка студентов, у которых средний балл ниже заданного. Вычисление среднего балла для заданной группы.
Продолжение таблицы 4.1
   
  Номер комнаты в общежитии, жилая площадь, число жильцов, наличие балкона. Сортировка выбором по номеру комнаты. Комплексная сортировка по наличию балкона + по площади, приходящейся на одного жильца. Выборка комнат, где площадь на одного жильца меньше санитарной нормы. Подсчет количества жильцов в общежитии.
  Номер корпуса, номер аудитории, количества мест, наличие экрана. Комплексная сортировка вставкой по номеру корпуса + номер аудитории. Комплексная сортировка по наличию экрана + количество мест. Выборка аудиторий с ТСО с числом мест не менее заданного. Подсчет общего количества мест в заданном корпусе.
  Фамилия спортсмена, результат на 100-метровке, результат по прыжкам в длину, результат по прыжкам в высоту. Сортировка обменом по каждому виду и определение места спортсмена в данном виде. Сортировка по сумме мест во всех видах.
  Дата (в виде строки символов гг-мм-дд), температура воздуха днем, атмосферное давление, влажность. Сортировка выбором по дате. Комплексная сортировка по температуре + по давлению + по влажности. Определение среднего арифметического для температуры заданного месяца. Вывод дней месяца, когда температура превышала среднее значение.
  Фамилия больного, номер палаты, температура, давление, пульс. Сортировка вставкой по фамилии. Комплексная сортировка по палате + по температуре + по давлению + по частоте пульса. Подсчет числа больных с температурой выше заданной. Вывод списка больных с давлением выше допустимого.
  Группа, фамилия старосты, количество контрактников, количество бюджетников. Сортировка обменом по группам. Комплексная сортировка по общему количеству студентов в группе + по количеству бюджетников. Вывод перечня групп с общим количеством студентов. Подсчет общего количества контрактников и бюджетников.

 

Создаваемый проект должен обеспечить:

– Отображение записей файла в StringGrid.

– Добавление группы записей из StringGrid к файлу.

– Сохранение файла под другим именем

– Поиск записи по значению одного из полей.

– Удаление из файла записи, соответствующей заданному значению одного из полей.

– Получение какой-нибудь интегральной оценки для всех записей или группы записей.

– Сортировку файла по какому-нибудь признаку.

– Поиск записи в упорядоченном файле.

– Вставку записи в упорядоченный файл.

– Удаление записи из упорядоченного файла.

Обработку записей следует проводить только в файле. Компоненты TStringGrid использовать только для считывания записей из файла и вывода результатов.

4.2 Перечень основных процедур и функций для работы с типизированными файлами

В таблице 4.2 приведены для справки основные процедуры и функции, используемые при работе с типизированными файлами.

Таблица 4.2 – Основные процедуры, обеспечивающие работу с файлами
Назначение операции Синтаксис операции
Определение имени AssignFile (<файловая переменная>,<имя файла>)
Создание (очистка) Rewrite (<файловая переменная >)
Установка в начало Reset(<файловая переменная >)
Закрыть файл CloseFile (<файловая переменная >)
Удалить файл Erase(<файловая переменная >)
Размер файла FileSize(<файловая переменная >)
Номер текущей записи FilePos(<файловая переменная >)
Перейти к записи Seek(<файловая переменная >, <номер записи>)
Записать в текущую файловую позицию Write(<файловая переменная >, <переменная соотв. типа>)
Читать из текущей файловой позиции Read(<файловая переменная >, <переменная соотв. типа>
Обрезать «хвост» Truncate(<файловая переменная >)
Конец файла Eof(<файловая переменная >)

4.3 ПРИМЕР Создание проекта «Результаты аттестации»

Данный проект можно рассматривать как пример выполнения задания к расчетно-графической работе. Точного следования этому образцу от студента не требуется.

В этом проекте мы будем работать с файлом, содержащим информацию о результатах аттестации студентов. Каждая запись файла будет хранить информацию о группе студента, фамилии, количестве неудовлетворительных оценок и среднем балле.

Реализация проекта находится в папке kid\pub\lectures\1_kurs\ projectToLection\.To_lection_18_19.

Требования к проекту

Проект должен обеспечить:

– Просмотр записей файла в StringGrid.

– Добавление группы записей из StringGrid к файлу.

– Поиск записи по заданной фамилии.

– Удаление записи.

– Подсчет количества отличников в файле.

– Сохранение файла под другим именем.

– Сортировку файла по фамилиям и по результатам успеваемости.

– Вставку записи в упорядоченный файл.

– Удаление записи из упорядоченного файла.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.153.38 (0.024 с.)