русс | укр

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

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

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

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


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

Разработка модулей


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


 

Известно, что откомпилированная программа размещается в отдельном сегменте памяти, т. е. не может превышать 64 Кбайта. Для создания больших программ в Турбо-Паскале предусмотрено подключение к основной программе откомпилированных модулей. Модуль включает в себя, как правило, большое число процедур, выполняющих однотипные операции, например, работа с графикой, операции с комплексными числами, матричные операции и т. д. Модуль определяется как программа, начинающаяся со служебного слова "Unit" и включающая в себя интерфейсную, исполняемую и инициирующую части.

 



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

 



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

 



Инициирующая часть модуля начинается со служебного слова "Begin" и содержит блок операторов, выполняемых при подключении модуля к основной программе. Инициирующая часть вместе со словом "Begin" может отсутствовать или быть пустой. Заканчивается модуль служебным словом "End. " с точкой.

 



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

 



Структура модуля имеет вид:

 



Unit Name_M; { Name_M - имя модуля }

 



{-----------------------------------------------------------------}

 



Interface { Интерфейсная часть модуля}

 



{------------------------------------ раздел описания глобальных имен}

 



Type MM= array[1..10, 1..10] of real; { описание типа}

 



Var Max_F, Min_F: real; {описание глобальных переменных}

 



{-----------------------------------------------------------------}

 



Procedure Name_P(p1: real; p2: MM); { описание заголовков процедуры}

 



Function Name_f(p3, p4: real): real; { и функции}

 



{-----------------------------------------------------------------}

 



Implementation {Исполняемая часть модуля}

 



{-------------------------------------- раздел описания локальных имен}

 



Const C = 'Подключен модуль Name_M'; { задание локальной константы}

 



Procedure Name_P; {Полное описание процедуры}

 



{ Раздел описания процедуры}

 



Begin { Раздел выполнения процедуры} End;

 



Function Name_f: real; {Полное описание функции}

 



{ Раздел описания функции}

 



Begin { Раздел выполнения функции} End;

 



{---------------------------------------------------------------- }

 



BEGIN { Инициирующая часть модуля}

 



Writeln(C); {операторы модуля}

 



END.

 



Отметим, что в интерфейсной части модуля запрещается делать опережающее описание процедур. Запрещается также рекурсия модулей.

 



Модуль записывается в файл с именем модуля, например, Name_M. pas. Затем файл компилируется, при этом получается файл с расширением ". tpu", например, Name_M. tpu, который автоматически записывается в каталог, указанный в опции Options, Directories, EXE & TPU, иначе - в текущий каталог. При запуске программы, использующей модуль, файл с расширением ". tpu" ищется в каталоге, указанном в опции Options, Directories, EXE & TPU или Unit Directories, либо в текущем каталоге.

 



Подключение модулей осуществляется в начале основной программы с помощью служебного слова "Uses" с указанием имен модулей, например:

 



Program Pr_1;

 



Uses Name_M1, Name_M2;

 



Если в основной программе имя идентификатора совпадает с именем, объявленным в интерфейсной части подключенного модуля, то используются значения, присвоенные идентификатору в программе. Если одинаковые имена встречаются в интерфейсной части подключенных модулей (например в Name_M1 и Name_M2), то используются значения, присвоенные идентификатору в последнем описанном модуле, т. е. в Name_M2.

 



Приведем пример разработки и подключения модуля. В модуле опишем процедуры работы с матрицами.

 



Unit MATR_1;

 



{-----------------------------------------------------------------}

 



Interface

 



{-----------------------------------------------------------------}

 



Type M = array[1..10, 1..10] of real;

 



M1 = array[1..10] of real;

 



Procedure MAT_1(a:M; var b:M; n: word);

 



Procedure MAT_2(a:M; var b:M1; n: word);

 



{-----------------------------------------------------------------}

 



Implementation

 



{-----------------------------------------------------------------}

 



Procedure MAT_1; {создание матрицы "B", транспонированной к "A"}

 



var i, j: word;

 



begin for i:=1 to N do for j:=1 to N do b[i,j]:=a[j,i]

 



end;

 



{-----------------------------------------------------------------}

 



Procedure MAT_2; {расчет квадратов диагональных элементов}

 



var i, j: word;

 



begin for i:=1 to N do b[i]:=a[i,i]*a[i,i]

 



end;

 



{-----------------------------------------------------------------}

 



END.

 



В основной программе PR_1 подключается модуль MATR_1 и используются процедуры MAT_1 и MAT_2.

 



Program PR_1;

 



Uses MATR_1;

 



Type MM = M; MM1 = M1;

 



Var a1,a2,a3: MM; b1,b2: MM1; i,j,n: word;

 



Begin Writeln('введите размерность матрицы N='); Readln(n);

 



Randomize;

 



for i:=1 to n do for j:=1 to n do a1[i,j]:=random(20)+1;

 



MAT_1(a1, a2, n); MAT_1(a2, a3, n);

 



MAT_2(a1, b1, n); MAT_2(a2, b2, n) end.

 



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

 



Матрицы "b1" и "b2" содержат квадраты диагональных элементов матриц "a1" и "a2". Типы массивов фактических параметров должны соответствовать типам массивов формальных параметров, описанных в модуле MATR_1. Можно использовать имена типов, заданные в интерфейсной части модуля или задавать новые имена типов.

 



1. 14. 1. Управление экраном в текстовом режиме

 



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

 



Наименование Параметры процедуры Результат выполнения

 



процедуры процедуры

 



TextMode(N); N - тип Word Задание текстового режима

 



N=0 (40x25)-CGA- ч. б. работы монитора.

 



1 Xm x N=1 (40x25) -CGA, Экран очищается, курсор

 



1 N=2 (80x25) -EGA, VGA, устанавливается в позицию 1, 1.

 



N=3 (80x25) цветной Цвета - исходные: белые

 



N=N+256 (80x43)-EGA цветной символы на черном экране

 



 



Ym (80x50)-VGA цветной Наибольшие значения координат

 



N=7 (80x25)-монохромный; Хm:= Lo(WindMax)+1;

 



y ( 80 колонок х 25 строк ); Ym:= Hi(WindMax)+1;

 



Window(x1, y1, x2, y2); Задание окна на экране.

 



x1 x2 x1, y1, x2, y2 - тип Byte. Курсор устанавливается в пози-

 



y1 цию (1, 1) в системе координат

 



1 <= x1 < x2 <= Xm окна.

 



y2 1 <= y1 < y2 <= Ym Превышение координат экрана

 



в системе координат экрана. игнорируется.

 



TextBackGround(N); N - тип Byte Назначение цвета фона.

 



0 <=N<= 7 При N>7 N:= N mod 8

 



Clrscr; Использование процедуры Очистка активного окна, экрана

 



после TextBackGround(N); курсор устанавливается в пози-

 



закрашивает активное окно. цию (1, 1). Закрашивание окна.

 



 



TextColor(N); N - тип Byte Назначение цвета символов.

 



0 <=N<= 15 При N>15, N:= N mod 16,

 



а также при N:= N + 128 -

 



вывод мерцающих символов

 



GotoXY(x, y); x, y - тип Byte Установка курсора в позицию

 



( x, y ) в системе координат

 



активного окна, экрана.

 



InsLine; Вставка пустой строки.

 



DelLine; Удаление строки в позиции курсора.

 



ClrEol; Стирание символов от позиции курсора до конца строки.

 



Кроме перечисленных, отметим процедуры управления яркостью символов: повышенная ( HighVideo; ), пониженная ( LowVideo; ) и нормальная ( NormVideo; ) яркость, а также функции, возвращающие номер текущего столбца ( WhereX; ) и номер текущей строки ( WhereY; ), типа - Byte.

 



В процедурах TextBackGround(N); и TextColor(N); параметр N назначает цвета:

 



N цвета символов и экрана N цвета символов

 



0 Black, черный. 8 DarkGray, темно-серый.

 



1 Blue, синий. 9 LightBlue, ярко-синий.

 



2 Green, зеленый. 10 LightGreen, ярко-зеленый.

 



3 Cyan, голубой. 11 LightCyan, ярко-голубой.

 



4 Red, красный. 12 LightRed, ярко-красный.

 



5 Magenta, фиолетовый. 13 LightMagenta, ярко-фиолетовый.

 



6 Brown, коричневый. 14 Yellow, желтый.

 



7 LightGray, ярко-серый. 15 White, белый.

 



При превышении допустимых пределов параметра N происходит преобразование N, при этом символы выводятся с мерцанием. Мерцание символов можно получить, также задавая: N:= N + 128;

 



В процедурах TextBackGround(N); и TextColor(N); можно применять параметр N, либо наименование цвета, например:

 



N:=1; TextColor(N); { либо } TextColor(Blue);



<== предыдущая лекция | следующая лекция ==>
Рекурсивные функции и процедуры | Управление клавиатурой


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


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

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

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


 


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

 
 

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

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