Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Написание программы на языке Паскаль с использованием разработанного собственного модуляСодержание книги
Поиск на нашем сайте
Цель работы: формирование знаний и умений по работе с модулями. Приобретение навыков создания собственных модулей. Краткие теоретические сведения Богатство алгоритмических возможностей Паскаля в значительной степени достигается благодаря использованию модулей. Модуль представляет собой набор констант, типов данных, переменных, процедур и функций. Каждый модуль по своей структуре аналогичен отдельной программе. Модуль - программная единица, текст которой компилируется независимо (автономно). Вместе с тем, структура модуля позволяет использовать его как своеобразную библиотеку описаний. Модули являются достаточно гибким и удобным инструментальным средством при разработке больших программах комплексов рамках совместной технологии разработки программного обеспечения (структурное программирование и др.). Кроме того, использование модулей позволяет практически обойти известное для 16-разрядной ПЭВМ ограничение на размер кодового сегмента (как известно, размер кодового сегмента отдельной программы не должен превышать 64 Кбайт). Это достигается благодаря тому, что каждому модулю при выполнении при выполнении программы отводится свой отдельный сегмент оперативной памяти. Паскаль располагает 8-мью стандартными (встроенными) модулями. Это System, Dos, Overlay, Graph, CRT, Printer, Turbo3, Graph3. Два последних модуля предназначены для поддержки совместимости программ, написанных на Турбо-Паскале версии 3.0. Все перечисленные стандартные модули (кроме Graph, Graph3, Turbo3) объединены и сохранены в файле TURBO.TPL. Модуль SYSTEM поддерживает все стандартные процедуры и функции, обеспечивает ввод-вывод данных, обработку строк, динамическое распределение оперативной памяти и ряд других возможностей Турбо-Паскаля. Модуль SYSTEM подключается к любой программе автоматически. Модель DOS содержит многочисленные процедуры и функции, многие из которых по своему действию эквивалентны командам MS-DOS (GetTime, DiskSize и др.). Модуль OVERLAY обеспечивает поддержку систем оверлеев. Модуль CRT поддерживает ряд стандартных процедур и функций, которые обеспечивают работу с экраном дисплея в текстовом режиме, управление звуком и работу с клавиатурой. Модуль PRINTER определяет драйвер печатающего устройства и позволяет организовывать вывод информации на принтер. Модуль GRAPH обеспечивает работу с экраном дисплея в графическом режиме. Наряду с использованием стандартных модулей каждый программист имеет возможность организации собственных модулей. Структура любого следующего модуля имеет вид: ЗАГОЛОВОК МОДУЛЯ Unit < имя модуля >; ИНТЕРФЕЙСНАЯ ЧАСТЬ Interfaсe Uses < список используемых модулей > { открытые объявления} Type Var Procedure Function РЕАЛИЗАЦИОННАЯ ЧАСТЬ Implementation Uses < список используемых модулей > { собственные объявления } Type Var { процедуры и функции } Procedure Function ИНИЦИАЛИЗАЦИОННАЯ ЧАСТЬ Begin … {Основной блок модуля} End.
Имя модуля записывается за ключевым словом UNIT. При выборе имени модуля необходимо учитывать одну особенность: имя модуля должно совпадать с именем файла, в котором он хранится. Далее записывается раздел интерфейсной части (за ключевым словом Interfaсe). Эта часть модуля является доступной (“видимой”) для любой программы, использующей этот модуль. То есть объявленные в этом разделе константы, типы данных, переменные, процедуры и функции, могут использоваться в любой другой программе. В свою очередь, в разделе интерфейса могут указываться другие используемые модули (их список следует за ключевым словом Uses). При этом все объекты, объявленные в интерфейсах этих модулей могут быть использованы в любом объявлении в интерфейсе данного модуля. Примечание. Для “видимых” процедур и функций в интерфейсном разделе приводится только их заголовки. Полностью эти процедуры и функции записываются в разделе реализации. Следующим структуре модуля описывается раздел реализации (за ключевым словом Implementation). В этом разделе могут использоваться все объекты, описанные в разделе интерфейса. Вместе с тем, здесь могут объявляться свои константы, типы данных, переменные процедуры и функции. Они могут быть использованы только в данном разделе реализации и в этом смысле являются “не видимыми”. Это же ограничение относится и к интерфейсам других модулей, список которых следует за ключевым словом Uses (в отличие от аналогичного списка в разделе интерфейса данного модуля). Таким образом, различие всех описаний содержащихся в разделе интерфейса и реализации заключается в сфере их использования (первые -доступны извне, вторые -только внутренние). Раздел реализации модуля начинается ключевым словом Implementation и заканчивается end. Но если между ними появляется ключевое слово begin, то получившийся составной оператор begin…end становится разделом инициализации модуля. Раздел инициализации обычно используется для открытия файлов и для формирования значений структур данных и переменных. При выполнении программы, использующей модули, их разделы инициализации вызываются раньше загрузки самой программы. Для того чтобы использовать модули в программах их имена следует указать в разделе подключения модулей Uses. Например, вы разработали программу, которая наряду со стандартным модулей Crt использует ваш разработанный собственный модуль с именем Modul. Тогда, в программе следует указать список используемых модулей в следующем виде: Program Pr; Uses Crt, Modul; ... Модули транслируются отдельно. В отличие от основных программ результатом трансляции которых будут файлы с расширением EXE модули получают расширение TPU. Полученные в результате трансляции TPU - файлы можно подсоединить к стандартному файлу TURBO.TPL с помощью утилиты TPUMOVER.EXE. Если этого не делать, то при трансляции самой программы все используемые модули (TPU - файлы) присоединяться к ней автоматически. Если в каком-либо из используемых модулей были внесены изменения, то при трансляции программы, все модифицируемые модули также будут предварительно перетранслированы (эту функцию реализует интегрированная среда). Пример разработки собственного модуля Разработку собственного модуля рассмотрим на следующем примере: Пусть дано задание: разработать личную библиотеку, включив в нее процедуры: · ввода элементов числовой матрицы размером N*N; · транспонирования матрицы; · вывода результирующей матрицы. В основной программе ввести размер матрицы N. Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так: Unit Matrix; {Зарезервированное слово Unit служит для указания имени библиотеки. Это имя должно совпадать с именем PAS-файла библиотеки (т.е библиотека Matrix должна находиться с файле Matrix.Pas), а иначе компилятор даст ошибку при попытке использования такой библиотеки} Interface {Секция Interface содержит описания общедоступных типов данных, констант, процедур и функций. Т.е. все, что будет здесь находиться можно будет использовать при подключении данной библиотеки.} Type TMatrix = array [1..10,1..10] of Integer; { Квадратная матрица } procedure MatrInput (Var m: TMatrix; n: Integer); { ввод матрицы } procedure MatrOutput (Var m: TMatrix; n: Integer); { вывод матрицы } procedure MatrTransp (Var m: TMatrix; n: Integer); { транспонирование } Implementation {Секция Implementation содержит реализацию тел процедур и функций, описанных в Interface. Также здесь могут содержаться типы данных, константы, процедуры и функции, необходимые для работы, но которые не будут видны программе при подключении библиотеки.} {Процедура обмена местами двух элементов матрицы (x1,y1) и (x2,y2). Эта процедура используется при транспонировании матрицы, но ее нельзя вызвать при подключении библиотеки, т.к. она не объявлена в секции Interface. } procedure Swap (Var m: TMatrix; x1,y1,x2,y2: Integer); var temp: Integer; begin temp:= m[x1,y1]; m[x1,y1]:= m[x2,y2]; m[x2,y2]:= temp; end; {Ввод матрицы с клавиатуры. Параметры процедуры здесь не указаны, т.к. они есть в секции Interface } procedure MatrInput; var i,j: Integer; begin for i:=1 to n do begin Write(i:3,'-я строка: '); for j:=1 to n do Read(m[i,j]); ReadLn; end; end; {Транспонирование матрицы.} procedure MatrTransp; var i,j: Integer; begin for i:=1 to n-1 do for j:=i+1 to n do Swap (m,i,j,j,i); end; {Вывод матрицы на экран.} procedure MatrOutput; var i,j: Integer; begin for i:=1 to n do begin Write(i:3,'-я строка: '); for j:=1 to n do Write (m[i,j]:4); WriteLn; end; end; {Эта секция может использоваться для инициализации работы библиотеки.} Begin End. Создание модуля закончено. Теперь необходимо создать файл, который будет содержать текст основной программы, в которой будет подключаться разработанный выше модуль. {Это отдельный файл, содержащий основную программу} Uses Crt, { Библиотека стандартных процедур управления экраном и клавиатурой } Matrix; {Наш разработанный модуль-библиотека работы с квадратными матрицами (личная)} Var m: TMatrix; { Объявляем матрицу - максимальный размер 10*10 } n: Integer; { Размер матрицы } Begin { Повторяем ввод размера, пока не будет введено корректное значение} repeat ClrScr; Write('Введите размер матрицы (1..10): '); ReadLn(n); until (n >= 1) and (n <= 10); WriteLn; WriteLn('Введите матрицу размера',n,'*',n,'по строкам:'); MatrInput (m,n); {вызов процедуры ввода матрицы, определенной в модуле Matrix} {Транспонируем ее } MatrTransp (m,n); {вызов процедуры транспонирования матрицы, определенной в модуле Matrix} { Выведем результат на экран } WriteLn; WriteLn('Транспонированная матрица:'); MatrOutput (m,n); {вызов процедуры вывода матрицы, определенной в модуле Matrix} End. Порядок выполнения работы 1. Изучить теоретические сведения по теме “ Модули в Паскале”. 2. Получить у преподавателя индивидуальное задание. Разработать личную библиотеку, включив в нее процедуры, определенные в задании. 3. Показать работающую программу преподавателю. 4. Ответить на контрольные вопросы. Контрольные вопросы 1. Стандартные модули в Паскале. 2. Структура модуля. 3. Ключевые слова Unit, Interface, Implementation. Описание каждого раздела. 4. Концепция разработки собственного модуля. Пример программы.
Лабораторная работа № 22 Изучение наиболее часто употребляемых универсальных процедур и оформление их в виде личной библиотеки программиста Цель работы: формирование знаний и умений по работе с модулями. Приобретение навыков создания личных библиотек.
|
||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 446; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.132.107 (0.007 с.) |