Организация библиотек. Стандартные библиотечные модули и модули пользователя. Лекция 11

Содержание

Слайд 2

Понятие модуля

Библиотечный модуль это отдельно компилируемая программная единица, содержащая различные элементы раздела

Понятие модуля Библиотечный модуль это отдельно компилируемая программная единица, содержащая различные элементы
описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые операторы.
Хранится модуль как в исходном, так и в откомпилированном виде (файлы с расширениями pas и tpu соответственно).
В модуле явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант и переменных, а также приводятся заголовки глобальных процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Слайд 3

По ходу работы любой программист обычно накапливает для себя целую коллекцию таких

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

Слайд 4

На практике реализация принципа модульности предполагает выполнение двух условий:
при разработке программы необходимо

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

Слайд 5

Преимущества модульного программирования

Благодаря использованию модулей можно многократно использовать свои старые разработки.
Модули, в

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

Слайд 6

Структура модуля

UNIT ИмяМодуля;
INTERFACE
{интерфейсная часть}
IMPLEMENTATION
{исполняемая часть}
BEGIN
{инициирующая часть}
END.
Заголовок и интерфейсная часть задают название модуля

Структура модуля UNIT ИмяМодуля; INTERFACE {интерфейсная часть} IMPLEMENTATION {исполняемая часть} BEGIN {инициирующая
и перечисление всех программных элементов, которые предоставляет данный модуль. Программный код располагается в исполняемой части, иногда в инициирующей части.

Слайд 8

Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части содержатся объявления всех

Интерфейсная часть открывается зарезервированным словом INTERFACE. В этой части содержатся объявления всех
глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.
interface
function sign(x:real):integer;
function minusvst(n:integer):integer;

Слайд 9

Исполняемая часть начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в

Исполняемая часть начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в
интерфейсной части. В ней могут объявляться локальные для модуля объекты - вспомогательные типы, константы, переменные и т.д.
Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных параметров (и тип результата для функции), так как они уже описаны в интерфейсной части. Но если заголовок подпрограммы приводится в полном виде, т.е. со списком формальных параметров и результата, он должен совпадать с заголовком, объявленным в интерфейсной части, например:

Слайд 10

implementation
function sign;
begin
if x>0 then sign:=1
else if x<0 then

implementation function sign; begin if x>0 then sign:=1 else if x else
sign:=-1
else sign:=0;
end;
function minusvst(n:integer):integer;
begin
if n mod 2=0 then minusvst:=1
else minusvst:=-1;
end;

Слайд 11

Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом

Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом
BEGIN или быть пустой (лучше так не делать!).
End.
В инициирующей части размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Это операторы передачи управления основной программе и обычно используются для подготовки ее работы. Например, в них могут инициироваться переменные, открываться нужные файлы и т.п.
Для того, чтобы подключить модуль к программе необходимо в разделе описания модулей записать его имя, если необходимо подключить несколько модулей, то их имена указываются через запятую.
uses raznoe;

Слайд 12

Запишем модуль целиком и программу, его использующую.
 unit raznoe;
interface
function sign(x:real):integer;
function

Запишем модуль целиком и программу, его использующую. unit raznoe; interface function sign(x:real):integer;
minusvst(n:integer):integer;
implementation
function sign(x:real):integer;
begin
if x>0 then sign:=1
else if x<0 then sign:=-1
else sign:=0;
end;
function minusvst(n:integer):integer;
begin

Слайд 13

if n mod 2=0 then minusvst:=1
else minusvst:=-1;
end;
end.
Program uuu;
uses raznoe;
var

if n mod 2=0 then minusvst:=1 else minusvst:=-1; end; end. Program uuu;
x:real; k,s:integer;
begin
writeln ('Vvedite x,n');
readln (x,n);
S:=sign(x);
K:=minusvst(n);
writeln(s:5,k:5);
readln; end.

Слайд 14

Стандартные модули

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое

Стандартные модули В Турбо Паскале имеется восемь стандартных модулей, в которых содержится
число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBО3 и GRAPH3.
Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.
Модуль Паскаля PRINTER делает доступным вывод текстов на принтер.
Модуль Паскаля CRT. В нем сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С его помощью можно перемещать курсор в любую точку экрана, менять цвет выводимых символов и фона, создавать окна. Кроме того, в данный модуль включены также процедуры «слепого» чтения клавиатуры и управления звуком.

Слайд 15

Модуль Паскаля GRAPH . Содержит набор типов, констант, процедур и функций для

Модуль Паскаля GRAPH . Содержит набор типов, констант, процедур и функций для
управления графическим режимом работы экрана. Этот модуль позволяет создавать различные графические изображения.
Модуль Паскаля DOS . В модуле собраны процедуры и функции, открывающие доступ к средствам операционной системы MS - DOS .
Модуль Паскаля OVERLAY . Данный модуль необходим при разработке громоздких программ с перекрытиями. Турбо Паскаль обеспечивает создание программ, длина которых ограничивается лишь основной оперативной памятью. Операционная система MS - DOS оставляет программе около 580 Кбайт основной памяти, использование программ с перекрытиями снимает это ограничение.
Модули Паскаля TURBO 3 и GRAPH 3 введены для обеспечения совместимости с ранней версией системы Турбо Паскаль.

Слайд 16

Область видимости

Глобальные переменные, описанные в исполняемой части модуля, являются на самом деле

Область видимости Глобальные переменные, описанные в исполняемой части модуля, являются на самом
не глобальными, а статическими переменными. Они видимы только во всех подпрограммах данного модуля, но недоступны основной программе.
Переменные, объявленными в интерфейсной части модуля — полноценные глобальные переменные, имеющие глобальную видимость и время жизни. Они располагаются в той же области памяти, где и глобальные переменные программы, и используются без всякого предварительного описания.

Слайд 17

Если и в модуле, и в программе, к которой подключен модуль, объявить

Если и в модуле, и в программе, к которой подключен модуль, объявить
переменные или другие объекты с одинаковыми именами, то соответствующий объект из модуля станет невидим программе. Для обращения к объекту из модуля можно воспользоваться составным именем ИмяМодуля.ИмяОбъекта.
Глобальные переменные основной программы нельзя использовать в модулях, которые к ней подключены.
Имя файла: Организация-библиотек.-Стандартные-библиотечные-модули-и-модули-пользователя.-Лекция-11.pptx
Количество просмотров: 120
Количество скачиваний: 0