Разделы презентаций


Модули

Содержание

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

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

Слайд 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

Имя файла, содержащего модуль Имя_модуля.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;
{вычисление скалярного

произведения двух векторов}
Function Lngth(Var a:Ar; N:Integer):Real;
{вычисление длины вектора}
Function UngleRad(Var a,b:Ar; N:Integer):Real;
{вычисление угла между двумя векторами в радианах}
Function UngleGr(Var a,b:Ar;N:Integer):Real;
{вычисление угла между двумя векторами в градусах}
Procedure Sum(Var a,b,c:Ar;N:Integer);
{вычисление суммы двух векторов}
Procedure Inp(Var a:Ar; N:Integer);
{ввод координат вектора}
Пример: Модуль VECTOR, позволяющий осуществлять некоторые операции над векторами Unit VECTOR; {операции над векторами}INTERFACEType AR=Array[1..10] of real;Function

Слайд 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; {программа ppp использует модули crt и graph}
Использование модулей Если программа использует модули, то в ее начале, перед всеми разделами описаний, должно стоять ключевое

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

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

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

Использование модулей

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

Слайд 15Пример: программа, использующая модуль VECTOR
Program Primunit;
{Даны два вектора а и

b в трехмерном пространстве;}
{вычисляется длина вектора с (с=а+b) и угол

между вектором с и плоскостью XOY}
Uses VECTOR; {используется модуль VECTOR}
Var a,b,c,cpr:Ar;{тип ar объявлен в модуле}
Begin
Writeln(' Введите координаты исходных векторов');
Inp(a,3);Inp(b,3); {ввод а и в}
Sum(a,b,c,3); {c=a+b}
Writeln(' Длина вектора-суммы:', Lngth(c,3):10:3);
cpr[1]:=c[1]; cpr[2]:=c[2]; cpr[3]:=0;
{cpr - проекция с на плоскость XOY}
If Lngth(cpr,3)< 1.0e-6 then
Writeln('вектор c ортогонален плоскости XOY')
Else
Пример: программа, использующая модуль VECTORProgram Primunit;{Даны два вектора а и b в трехмерном пространстве;}{вычисляется длина вектора с

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

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

UngleGr(c,cpr,3):6:1);
Writeln(' градусов');
End;
Readln;
End.
Продолжение примера Begin  Write(' Угол между вектором с и плоскостью XOY:',

Слайд 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;

Interface
Type fn=function(x:real):real;{функциональный тип, задающий

вид уравнения}
function root(f:fn; a,b,e:real):real; {подпрограмма вычисления корня уравнения f(x)=0 на [a,b] c погрешностью е методом деления отрезка пополам}

Implementation
function root(f:fn; a,b,e:real):real;
var x:real;
begin
repeat
x:=(a+b)/2;
if f(x)*f(b)<=0 then
a:=x
else
b:=x
until b-a root:=(a+b)/2;
end;

End.
Unit uravnenie;InterfaceType fn=function(x:real):real;{функциональный тип, задающий

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

Var r1,r2:real; {коpни

уpавнений}
function fx1(x:real):real; {fx1 задает первое уравнение}
begin
fx1:=1.0/(1.2*sin(x)/cos(x)+sqrt(x+1))-x;
end;
function fx2(x:real):real; {fx2 задает

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

Подпрограмма решения двух уравнений, использующая модульprogram _2uravnenia;uses uravnenie;Var r1,r2:real; {коpни уpавнений}function fx1(x:real):real; {fx1 задает первое уравнение}begin fx1:=1.0/(1.2*sin(x)/cos(x)+sqrt(x+1))-x;end;function

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика