78178

Разработка программ с использованием Unit

Лабораторная работа

Информатика, кибернетика и программирование

Модуль – программная единица, текст которой компилируется независимо (автономно). Структура модуля позволяет использовать его как своеобразную библиотеку описаний. Модули являются достаточно гибким и удобным инструментальным средством при разработке больших программах комплексов рамках совместной технологии разработки программного обеспечения

Русский

2015-02-07

61 KB

1 чел.

Тема: Разработка программ с использованием Unit

Цель работы: сформировать навыки и умения создания и применения собственных модулей при решении сложных задач.

Время выполнения: 2 часа

Лабораторная работа №9

Порядок выполнения работы:

  1.  Изучить теоретические  сведения.
  2.  Создать модуль Мatrix и программу, которая будет подключать созданный модуль.
  3.  Получить индивидуальное задание  у преподавателя и разработать программу в соответствии с поставленной задачей.
  4.  Отлаженную, работающую программу сдать преподавателю. Работу программы показать с помощью самостоятельно разработанных тестов.

Теоретические сведения

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

Модуль – программная единица, текст которой компилируется независимо (автономно). Структура модуля позволяет использовать его как своеобразную библиотеку описаний. Модули являются достаточно гибким и удобным инструментальным средством при разработке больших программах комплексов рамках совместной технологии разработки программного обеспечения (структурное программирование и др.).

Кроме того, использование модулей позволяет практически обойти известное для 16-разрядной ПЭВМ ограничение на размер кодового сегмента (как известно, размер кодового сегмента отдельной программы не должен превышать 64 Кбайт). Это достигается благодаря тому, что каждому модулю при выполнении при выполнении программы отводится свой отдельный сегмент оперативной памяти.

Паскаль располагает 8-мью стандартными (встроенными) модулями: System, Dos, Overlay, Graph, CRT, Printer, Turbo3, Graph3. Два последних модуля предназначены для поддержки совместимости программ, написанных на Турбо-Паскале версии 3.0.

Все перечисленные стандартные модули (кроме Graph, Graph3, Turbo3) объединены и сохранены в файле TURBO.TPL.

Модуль 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 - файлы) присоединяться к ней автоматически. Если в каком-либо из используемых модулей были внесены изменения, то при трансляции программы, все модифицируемые модули также будут предварительно перетранслированы (эту функцию реализует интегрированная среда).

Пример1 разработки собственного модуля (библиотеки)

Задание: разработать личную библиотеку, включив в нее процедуры:

  •  ввода элементов числовой матрицы размером N*N;
  •  транспонирования матрицы;
  •  вывода результирующей матрицы.

В основной программе ввести размер матрицы N.

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. Здесь могут содержаться типы данных, константы, процедуры  и функции, необходимые для работы, но которые не будут видны программе при  подключении библиотеки.}

procedure Swap (Var m : TMatrix; x1,y1,x2,y2 : Integer);

{Процедура обмена местами двух элементов матрицы (x1,y1) и (x2,y2).  Эта процедура используется при транспонировании матрицы, но ее  нельзя вызвать при подключении библиотеки, т.к. она не объявлена  в секции Interface.}

var

  temp : Integer;

begin

  temp := m[x1,y1];

  m[x1,y1] := m[x2,y2];

  m[x2,y2] := temp;

 end;

procedure MatrInput;

{Ввод матрицы с клавиатуры. Параметры процедуры не указаны, т.к. они описаны в секции Interface }

 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); {вызов процедуры транспонирования матрицы}

 { Вывод результата на экран }

 WriteLn;

 WriteLn('Транспонированная матрица :');

 MatrOutput (m,n); {вызов процедуры вывода матрицы, определенной в модуле Matrix}

End.

Пример2 разработки собственной библиотеки (модуля)

Создать файл с названием my_modul. В интерфейсной части записать названия процедур и функций, реализация которых будет представлена в части implementation. Затем создать функцию max, вычисляющую максимальное значение между двумя целыми числами. Для этого в разделе interface  выполнить следующее объявление:

function max(a1,b1:integer):integer;

В разделе implementation должна быть представлена реализация функции max.

unit my_modul;

interface

function max(a1,b1:integer):integer;

implementation

function max(a1,b1:integer):integer;

 begin

    max:=a1;

    if a1>b1 then max:=a1

    else max:=b1;

 end;

begin

end.

Данный модуль сохраняется на диске, как и файл, с тем же названием (my_modul), но при компиляции он автоматически получит расширение tpu.

В основной программе в разделе подключения модулей Uses записать

uses crt,my_modul;

После этого можно воспользоваться функцией max, определенной и реализованной в модуле my_modul.

Текст основной программы:

program kk;

uses crt,my_modul;

var

a1,b1,y:integer;

begin

writeln('Введите 2 числа');

readln(a1,b1);

y:=max(a1,b1);

writeln('max=',y);

end.

Индивидуальные задания:

Разработать библиотечный модуль из ранее созданных программ в лабораторных работах №№1-8. Составить программу, вызывающую процедуры и функции созданного модуля. Пользоваться информацией из файла «Стандартные функции и процедуры.doc».

PAGE   \* MERGEFORMAT5


 

А также другие работы, которые могут Вас заинтересовать

31470. Специфика философской мысли в эпоху средневековья (общая характеристика). Периодизация средневековой философии 34 KB
  Периодизация средневековой философии. Специфика средневековой философии: 1 Теоцентричность. В основе этого признака лежт две главные идеи: 1 идея творения в онтологии как попытка ответить на первую часть основного вопроса философии – креационизм истин. В средневековой философии полностью отсутствовало и понятие плагиата.
31471. Средневековая философия этапа патристики. Философия Августина Аврелия 38 KB
  Языческие боги вечные и всемогущественные. Христианский Бог обретает еще одно качество – всеблагой олицетворяющий добро и совершенство. В христианстве тогда сложилось особое направленная теодицея – оправдание бога за существующее в мире зло. Согласно ей Бог создавал мир из некоторого хаоса.
31472. Дослідження логічної організації перетворення даних – арифметичні операцій у різних системах числення з використанням алгоритмічних мов високого рівня 140.5 KB
  3 Дослідження логічної організації перетворення даних – арифметичні операцій у різних системах числення з використанням алгоритмічних мов високого рівня. Мета лабораторної роботи – ознайомитись з методами арифметичних операцій у різних системах числення отримати і закріпити практичні навички з побудови алгоритмів і програм. Короткі теоретичні відомості Для виконання арифметичних операцій у системі числення з основою P необхідно мати відповідні таблиці додавання та множення. 100111...
31473. Дослідження методів кодування чисел в комп’ютері з використанням алгоритмічних мов високого рівня 92.5 KB
  Для виконання операцій з двійковими числами в ЕОМ використовуються прямий зворотній додатковий модифікований зворотній і додаткові коди. Додатковий код від’ємного числа отримується додаванням одиниці молодшому розряду зворотнього коду цього числа. Для цього виконаємо кодування: отримаємо зворотній та додатковий коди для чисел А1 та А2. Таблиця 1 Варіанти завдання Перевести від’ємне дійсне число: № код прямий додатковий зворотній додатковий додатковий прямий додатковий зворотній прямий додатковий зворотній...
31474. Дослідження форм представлення десяткових чисел у комп’ютері 83.5 KB
  Це можуть бути тексти зображення числа звуки і т. В обчислювальних машинах застосовуються дві форми представлення чисел: природна форма або форма з фіксованою комою точкою; нормалізована форма або форма з плаваючою комою точкою; З фіксованою комою числа зображуються у вигляді послідовності цифр з постійним для всіх чисел положенням точки яка відділяє цілу частину від дробової. З плаваючою точкою числа зображуються у вигляді X = M×Pr де M мантиса числа правильна дріб в межах 01 ≤ M 1 r порядок числа ціле P ...
31475. Дослідження позиційних та непозиційних систем числення 81.5 KB
  1 Дослідження позиційних та непозиційних систем числення. Мета лабораторної роботи – ознайомитись з позиційними та непозиційними системами числення отримати і закріпити практичні навички з побудови алгоритмів і програм для роботи з системами числення. Короткі теоретичні відомості В позиційних системах числення один і той самий числовой знак цифра у запису числа має різні значення в залежності від того месця розряду де він розсташований. В позиційних системах числення величина позначена цифрою залежить від місця позиції...
31476. Дослідження логічної організації подання та зберігання даних – методи переводу чисел з однієї позиційної системи числення в іншу 75.5 KB
  2 Дослідження логічної організації подання та зберігання даних – методи переводу чисел з однієї позиційної системи числення в іншу. Мета лабораторної роботи – ознайомитись з методами переводу цілих дробових та змішаних чисел отримати і закріпити практичні навички з переводу чисел у різні системи числення. Короткі теоретичні відомості Перевід цілих чисел Для переводу цілих чисел з однієї системи числення з основою S в іншу з основою S1 потрібно це число послідовно ділити на основу S1 нової системи числення до тих пір поки не отримаємо...
31477. Аналіз майна підприємства та оцінка основного капіталу підприємства 128 KB
  Аналіз майна підприємства Лекція 5 2 год. Мета заняття: ознайомити студентів із значенням аналізу майна підприємства та поглибити їхні знання з питань оцінки основного капіталу підприємства; привчати творчо оперувати набутими знаннями розвивати логічне мислення студентів. ПЛАН Економічна сутність майна підприємства його структура і класифікація. Аналіз основного капіталу необоротних активів підприємства.
31478. Аналіз майна підприємства та оцінка матеріальних активів та фінансових інвестицій підприємства 141 KB
  Оцінка матеріальних активів основних засобів та фінансових інвестицій. Рекомендована література: Дидактична мета заняття: сформувати у студентів сучасне економічне мислення щодо оцінки матеріальних активів основних засобів та фінансових інвестицій дати теоретичні уявлення щодо класифікації та порядку розрахунку й методів оцінки показників що характеризують стан і ефективність використання майна підприємства. Оцінка матеріальних активів основних засобів...