русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Модули программиста


Дата добавления: 2014-11-27; просмотров: 799; Нарушение авторских прав


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

FUNCTION st(a:Real; n:Word) :Real;

VAR step :Real;

i :Word;

BEGIN

step:=1;

for i:=1 to n do step:=step*a;

st:=step

end;

BEGIN

WriteLn(st(2,3)) {Это 2 в кубе, то есть 8}

END.

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

· Описать st и другие часто встречающиеся процедуры и функции в другом файле и использовать директиву $I.

· Описать st и другие часто встречающиеся процедуры и функции в другом файле и оформить этот файл, как новый модуль.

Второй способ немного сложнее, но намного лучше первого. Вот как будет выглядеть ваш модуль:

UNIT Mathemat; {Заголовок модуля с придуманным вами именем}

INTERFACE {Раздел ИНТЕРФЕЙСА}

FUNCTION st(a:Real; n:Word) :Real;

IMPLEMENTATION {Раздел РЕАЛИЗАЦИИ}

FUNCTION st;

VAR step :Real;

i :Word;

BEGIN

step:=1;

for i:=1 to n do step:=step*a;

st:=step

end;

BEGIN {Раздел ИНИЦИАЛИЗАЦИИ, у нас он пуст}

END.

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

USES Mathemat;

Begin

WriteLn(st(10,6) :20:4); {Это 10 в шестой степени}

WriteLn(st(5, 3) :20:4); {Это 5 в кубе}



End.

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

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

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

Когда вы в первый раз запустите на выполнение программу, вызывающую ваш новый модуль, этот модуль откомпилируется и сохранится на диске под именем Mathemat.tpu. В следующий раз будет использоваться именно он, а не Mathemat.pas (до тех пор, пока вы не измените текст модуля).

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

UNIT Mygraph;

INTERFACE {Раздел ИНТЕРФЕЙСА}

PROCEDURE krest(x_tsentr, y_tsentr, razmer:Word);

{Задаются координаты центра и размер креста}

PROCEDURE treug(x1, y1, x2, y2, x3, y3 :Word);

{Задаются координаты трех вершин треугольника}

IMPLEMENTATION {Раздел РЕАЛИЗАЦИИ}

USES Graph; {Без этого не будет работать процедура Line}

PROCEDURE krest; BEGIN

Line(x_tsentr-razmer, y_tsentr, x_tsentr+razmer, y_tsentr);

Line(x_tsentr, y_tsentr-razmer, x_tsentr, y_tsentr+razmer);

END;

PROCEDURE treug; BEGIN

Line(x1,y1,x2,y2);

Line(x2,y2,x3,y3);

Line(x3,y3,x1,y1);

END;

{Раздел ИНИЦИАЛИЗАЦИИ}

VAR d,m :Integer; {Переменные для инициализации графики}

BEGIN

d:=0;

InitGraph(d,m,'<путь к гр.др>');{Инициализация графики}

SetColor(Yellow); {Рисуем рамочку}

SetLineStyle(0,0,ThickWidth);

Rectangle(10,10,630,470);

SetColor(White); {Возвращаем нормальный цвет}

SetLineStyle(0,0,NormWidth) {Возвращаем нормальную толщину линии}

END.

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

Вот программа, чертящая крест, треугольник и кружок:

USES Mygraph,Graph;

BEGIN

treug(500,50,600,300,450,450);

krest(200,150,80);

Circle(100,350,40);

ReadLn;

END.

Обращение здесь к модулю Graph понадобилось только из-за желания нарисовать кружок.

Использование модулей лучше использования директивы $I хотя бы по двум причинам:

· Модуль уже откомпилирован и не требует каждый раз компиляции.

· Объем программы без модулей не может превышать 64К. Каждый модуль может вмещать в себя дополнительные 64К.

Задание 129: Если хотите, создайте себе модули Music, Graphica или какие-нибудь другие.

 



<== предыдущая лекция | следующая лекция ==>
Вставка в программу фрагментов из других программных файлов | Дополнительные процедуры и функции модуля Graph


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.239 сек.