Модуль как часть программы

Содержание

Модуль – это последовательность логически связанных фрагментов, оформленных как отдельная часть программы.

К модулю предъявляются следующие требования:

  1. модуль должен реализовывать единственную функцию, т.е. при построении модуля используется концепция: «один модуль – одна функция». Таким образом, модуль – это элемент программы, выполняющий самостоятельную задачу. На его входе он может получать определенный набор исходных данных, обрабатывать их в соответствии с заданным алгоритмом и возвращать результат обработки, т.е. реализуется стандартный принцип IPO (Input – Process – Output) – вход-процесс-выход;
  2. на модуль нужно ссылаться с помощью его имени. Он должен иметь один вход и один выход, что гарантирует замкнутость модуля и упрощает сопровождение программ;
  3. модуль должен иметь функциональную завершенность, т.е. выполнять перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки;
  4. модуль должен возвращать управление в точку его вызова, в свою очередь, он должен иметь возможность сам вызывать другие модули;
  5. модуль не должен сохранять историю своих вызовов и использовать ее при своем функционировании;
  6. модуль должен иметь логическую независимость, т.е. результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;
  7. модуль должен иметь слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть по возможности минимизирован;
  8. модуль должен быть сравнительно невелик, т.е. быть обозримым по размеру и сложности. Опытные программисты рекомендуют его размер не более двух страниц распечатки на принтере.
  • большую программу могут писать одновременно несколько программистов, что позволяет раньше закончить задачу;
  • можно создавать библиотеки наиболее употребительных модулей;
  • упрощается процедура загрузки в оперативную память большой программы, требующей сегментации;
  • появляется много естественных контрольных точек для отладки проекта;
  • проще проектировать и в дальнейшем модифицировать программы.
  • возрастает размер требуемой оперативной памяти;
  • увеличивается время компиляции и загрузки;
  • увеличивается время выполнения программы;
  • довольно сложными становятся межмодульные интерфейсы.
Читайте также:
Требования для программы 3д макс на ноутбуке

Источник: studfile.net

Занятие №46. Модули 1С — часть 4 (Модуль менеджера)

Модули. Описание модулей. Работа с модулями

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

Модуль Паскаля – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.

Как решать уравнения с модулем или Математический торт с кремом (часть 1) | Математика

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

Использование модульного программирования позволяет упростить тестирование программы и обнаружение ошибок. Аппаратно-зависимые подзадачи могут быть строго отделены от других подзадач, что улучшает мобильность создаваемых программ.

Термин «модуль» в программировании начал использоваться в связи с внедрением модульных принципов при создании программ. В 70-х годах под модулем понимали какую-либо процедуру или функцию, написанную в соответствии с определенными правилами. Например: «Модуль должен быть простым, замкнутым (независимым), обозримым (от 50 до 100 строк), реализующим только одну функцию задачи, имеющим одну входную и одну выходную точку».

Первым основные свойства программного модуля более-менее четко сформулировал Парнас (Parnas): «Для написания одного модуля должно быть достаточно минимальных знаний о тексте другого». Таким образом, в соответствии с определением, модулем могла быть любая отдельная процедура (функция) как самого нижнего уровня иерархии (уровня реализации), так и самого верхнего уровня, на котором происходят только вызовы других процедур-модулей.

Таким образом, Парнас первым выдвинул концепцию скрытия информации (information hiding) в программировании. Однако существовавшие в языках 70-х годов только такие синтаксические конструкции, как процедура и функция, не могли обеспечить надежного скрытия информации, поскольку подвержены влиянию глобальных переменных, поведение которых в сложных программах бывает трудно предсказуемым.

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

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

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

Впервые специализированная синтаксическая конструкция модуля была предложена Н. Виртом в 1975 г. и включена в его новый язык Modula . Насколько сильно изменяются свойства языка, при введении механизма модулей, свидетельствует следующее замечание Н.Вирта, сделанное им по поводу более позднего языка Модула-2: «Модули – самая важная черта, отличающая язык Модула-2 от его предшественника Паскаля».

По своей организации и характеру использования в программе модули Паскаля близки к модулям-пакетам (PACKAGE) языка программирования Ада. В них так же, как и в пакетах Ады, явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант, переменных, а также приводятся заголовки процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.

Читайте также:
Что такое программа incopy

Значение модулей для технологии разработки программного проекта может быть продемонстрировано диаграммой на рис. 2.

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

Структура модулей Паскаля

Всякий модуль Паскаля имеет следующую структуру:

Unit ;
interface;
implementation< исполняемая часть >;
begin
;
end .

Здесь UNIT – зарезервированное слово (единица); начинает заголовок модуля;

· — имя модуля (правильный идентификатор);

· INTERFACE – зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;

· IMPLEMENTATION – зарезервированное слово (выполнение); начинает исполняемую часть модуля;

· BEGIN – зарезервированное слово; начинает инициирующую часть модуля; причем конструкция begin необязательна;

· END – зарезервированное слово – признак конца модуля.

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

то исходный текст этого модуля должен размещаться на диске в файле primer .pas .

Имя модуля Паскаля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением:

Здесь USES – зарезервированное слово (использует);

— список модулей, с которыми устанавливается связь; элементы списка – имена модулей через запятую.

Если в Паскале модули используются, то предложение uses должно стоять сразу после заголовка программы , т.е. должно открывать раздел описаний основной программы. В модулях Паскаля могут использоваться другие модули. В модулях предложение uses может стоять сразу после слова interface или сразу после слова implementation . Допускается и два предложения uses , т.е. оно может стоять и там, и там.

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

Источник: megaobuchalka.ru

Презентация на тему Модули

Зачем нужны модули?Стандартный паскаль: модулей нет.Место подпрограмм – перед разделом действий программы. Подпрограмма – часть программы. Единственная возможность использования в программе отдельно подготовленной подпрограммы – вставка в программу текста подпрограммы на

Слайды и текст этой презентации

Слайд 1Модули
лекция №12

Модули лекция №12

Слайд 2Зачем нужны модули?
Стандартный паскаль: модулей нет.
Место подпрограмм – перед разделом

действий программы. Подпрограмма – часть программы.
Единственная возможность использования в

программе отдельно подготовленной подпрограммы – вставка в программу текста подпрограммы на алгоритмическом языке =>
Невозможна раздельная компиляция подпрограммы и программы =>
Невозможно создание библиотеки откомпилированных алгоритмов (объектных модулей). Это основной недостаток стандартного паскаля и всех алгоритмических языков, использующих блочную программу.

Зачем нужны модули?Стандартный паскаль: модулей нет.Место подпрограмм – перед разделом действий программы. Подпрограмма – часть программы. Единственная

Слайд 3Зачем нужны модули?
Для обеспечения возможности компиляции программы по частям.

в Турбо Паскаль и поддерживаются в Объектном Паскале.

Зачем нужны модули?Для обеспечения возможности компиляции программы по частям.Модули введены в Турбо Паскаль и поддерживаются в Объектном

Слайд 4Что такое модуль?
Модуль — это автономно компилируемая программная

единица, включающая в себя различные разделы описаний (типов, констант, переменных,

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

Что такое модуль? Модуль - это автономно компилируемая программная единица, включающая в себя различные разделы описаний

Слайд 5Что такое модуль?
Модуль — это автономно компилируемая программная единица.
Модуль может

быть подключен к любой паскаль-программе или к другому модулю (программной

единице).
Модуль включает в себя различные разделы описаний (типов, констант, переменных, процедур и функций).
Модуль делится на две основные части: интерфейсную (interface) и исполняемую (implementation). В интерфейсной части даются описания, которые могут использоваться в программной единице, к которой подключен модуль. В исполняемой части приводятся описания, доступные только внутри модуля.
Кроме описаний, модуль может содержать некоторые операторы, подготавливающие условия для использования модуля (например, присваивание переменным начальных значений или установление связи между программными и физическими именами файлов). Такие операторы содержатся в части модуля, которая называется инициализирующей. Эта часть не является обязательной.
В Объектном Паскале модуль также может иметь завершительную часть (finalization), состоящую из операторов, обеспечивающих грамотное завершение программной единицы, использующей модуль.

Читайте также:
Название танцевальной программы для молодежи

Что такое модуль?Модуль - это автономно компилируемая программная единица.Модуль может быть подключен к любой паскаль-программе или к

Слайд 6При изучении модулей надо освоить:
Правила создания модулей (структуру модуля).
Правила использования

модулей.

При изучении модулей надо освоить:Правила создания модулей (структуру модуля).Правила использования модулей.

Слайд 7Структура модуля (ТП, ОП)
UNIT имя_модуля;
INTERFACE
интерфейсная_часть
IMPLEMENTATION
исполняемая_часть
[BEGIN
инициирующая_часть]
END.
от подпрограмм – только заголовки
заголовки подпрограмм

могут быть сокращенными

Структура модуля (ТП, ОП)UNIT имя_модуля;INTERFACEинтерфейсная_частьIMPLEMENTATIONисполняемая_часть[BEGINинициирующая_часть]END.от подпрограмм – только заголовкизаголовки подпрограмм могут быть сокращенными

Слайд 8Структура модуля (ОП)
UNIT имя_модуля;
INTERFACE
интерфейсная_часть
IMPLEMENTATION
исполняемая_часть
[INITIALIZATION
инициирующая_часть]
[FINALIZATION
завершающая_часть]
END.

Структура модуля (ОП)UNIT имя_модуля;INTERFACEинтерфейсная_частьIMPLEMENTATIONисполняемая_часть[INITIALIZATION инициирующая_часть][FINALIZATION завершающая_часть]END.

Слайд 9Имя файла, содержащего модуль
Имя_модуля.pas
При компиляции ТП: Имя_модуля.pas => Имя_модуля.tpu ОП: Имя_модуля.pas

=> Имя_модуля.dcu

Слайд 10Пример: Модуль VECTOR, позволяющий осуществлять некоторые операции над векторами
Unit

VECTOR;
INTERFACE
Type AR=Array[1..10] of real;
Function Scpr(Var a,b:Ar;N:Integer):Real;

Слайд 11Продолжение примера
IMPLEMENTATION
Function Scpr;
Var I:Integer; S:Real;
Begin
S:=0;
For i:=1 To N

Do
S:=S+a[i]*b[i];
Scpr:=S;
End;
Function Lngth;
Begin
Lngth:=Sqrt(Scpr(a,a,N));
End;
Function UngleRad;
Var x:Real;
Begin
x:=Scpr(a,b,N)/Lngth(a,N)/

Lngth(B,N);
If x=0 then UngleRad:=pi/2
Else
UngleRad:=ArcTan(Sqrt(1- x*x)/x);
End;
Function UngleGr;
Begin
UngleGr:=UngleRad(a,b,3)/pi*180;
End;

Продолжение примераIMPLEMENTATIONFunction Scpr;Var I:Integer; S:Real;Begin S:=0; For i:=1 To N Do S:=S+a[i]*b[i]; Scpr:=S;End;Function Lngth;Begin Lngth:=Sqrt(Scpr(a,a,N));End;Function UngleRad;Var x:Real;Begin

Слайд 12Продолжение примера
Procedure Sum;
Var i:Integer;
Begin
For i:=1 to

N Do
c[i]:=a[i]+b[i]
End;
Procedure Inp;
Var I:Integer;
Begin

For i:=1 To N Do
Read(a[i]);
Readln
End;
End.

Продолжение примера Procedure Sum; Var i:Integer; Begin For i:=1 to N Do c[i]:=a[i]+b[i] End; Procedure Inp;

Слайд 13Использование модулей
Если программа использует модули, то в ее начале,

перед всеми разделами описаний, должно стоять ключевое слово USES, после

которого через запятую перечисляются имена этих модулей. Например:
Program ppp;
Uses crt,graph;

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

Слайд 14Если модуль использует другие модули, то предложение USES может стоять

либо после слова INTERFACE, либо после слова IMPLEMENTATION. Модули, подключенные

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

Если модуль использует другие модули, то предложение USES может стоять либо после слова INTERFACE, либо после слова

Слайд 15Пример: программа, использующая модуль VECTOR
Program Primunit;

b в трехмерном пространстве;>

между вектором с и плоскостью XOY>
Uses VECTOR;
Var a,b,c,cpr:Ar;
Begin
Writeln(‘ Введите координаты исходных векторов’);
Inp(a,3);Inp(b,3);
Sum(a,b,c,3);
Writeln(‘ Длина вектора-суммы:’, Lngth(c,3):10:3);
cpr[1]:=c[1]; cpr[2]:=c[2]; cpr[3]:=0;

If Lngth(cpr,3)

Слайд 16Продолжение примера
Begin
Write(‘ Угол между вектором с и

плоскостью XOY:’,

UngleGr(c,cpr,3):6:1);
Writeln(‘ градусов’);
End;
Readln;
End.

Продолжение примера Begin Write(

Слайд 17Подключение модулей в Турбо Паскале
Чтобы файлы с расширением .TPU были

доступны среде Turbo (Borland) Pascal, их следует поместить в текущий

каталог или указать их содержащий каталог в диалоговом окне опции OPTIONS/DIRECTORIES/UNIT DIRECTORIES.

Подключение модулей в Турбо ПаскалеЧтобы файлы с расширением .TPU были доступны среде Turbo (Borland) Pascal, их следует

Слайд 18Uses имя_модуля in имя директории
Добавление модуля в проект в Испекторе

проектов.
Подключение модулей в Delphi

Uses имя_модуля in имя директорииДобавление модуля в проект в Испекторе проектов.Подключение модулей в Delphi

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

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

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

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

Слайд 20Пример: модуль, содержащий подпрограмму решения уравнения (root)
Что должен содержать модуль?

Какие описания?
функциональный тип – задающий вид уравнения;
функцию определения корня уравнения.

Пример: модуль, содержащий подпрограмму решения уравнения (root)Что должен содержать модуль? Какие описания?функциональный тип – задающий вид уравнения;функцию

Слайд 21Unit uravnenie;

вид уравнения>
function root(f:fn; a,b,e:real):real;

Implementation
function root(f:fn; a,b,e:real):real;
var x:real;
begin
repeat
x:=(a+b)/2;
if f(x)*f(b)

Слайд 22Подпрограмма решения двух уравнений, использующая модуль
program _2uravnenia;
uses uravnenie;

<

h3>уpавнений>
function fx1(x:real):real;
begin
fx1:=1.0/(1.2*sin(x)/cos(x)+sqrt(x+1))-x;
end;
function fx2(x:real):real;

второе уравнение>
begin
fx2:=(exp(-x)-sqrt(exp(x))+3.7)/3.0-x;
end;
begin
r1:=root(fx1,0,3,1.0e-4);
r2:=root(fx2,0,3,1.0e-4);
writeln(‘Коpень пеpвого уpавнения r1=’,r1:7:4);
writeln(‘Коpень втоpого уpавнения r2=’,r2:7:4);
end.

Источник: theslide.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru