русс | укр

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

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

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

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


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

Урок 12 — Модули Паскаля(Pascal). Модуль Graph в Паскале

Модуль не представляет собой исполняемой программы, а только содержит набор средств для использования в исполняемой программе: типы данных, переменные, процедуры и функции. Исходный текст модуля имеет расширение .pas. Модуль компилируется отдельно от основной программы, откомпилированный модуль имеет расширение  .tpu (Turbo Pascal Unit). Готовый откомпилированный модуль может быть использован в основной программе с помощью предложения uses, которое записывается сразуже после имени программы.

В Турбо Паскале имеются стандартные модули : DOS, CRT (Cathode Ray Tube, электронно-лучевая трубка), Printer, Graph, System и другие. Их не надо описывать, а можно сразу включать в программу предложением uses. Модуль System используется во всех программах, поэтому для него сделано исключение, его можно не включать в предложение uses, он будет подключен автоматически. Остальные модули требуют включения в предложение uses,  если в программе используются ресурсы модуля, например, процедуры и функции.

Назначение стандартных модулей следующее. Модуль DOS использует системные ресурсы операционной системы MS-DOS . Возможно использование регистров, обслуживание прерываний, вызов других программ из программы на Паскале. Модуль CRT используется для обслуживания видеомонитора, клавиатуры, встроенного динамика. Процедуры очистки экрана clrscr и ожидание нажатия клавиши readkey содержатся именно в модуле CRT.

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

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

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

Рассмотрим пример модуля для работы с комплексными числами. Комплексное число состоит из двух вещественных чисел, действительной и мнимой частей соответственно. Пусть имеются два комплексных числа  x и y: x=a+bi; y=c+di. Здесь i квадратный корень из минус единицы (мнимая единица), причем i2= - 1. Если комплексное число z=e+fi, и z есть результат операции над  x и y, то

z=x+y; e=a+c: f=b+d;  (сложение)
z=x-y; e=a-c: f=b-d;  (вычитание)
z=x*y; e=a*c-b*d: f=a*d+b*c;  (умножение)
z=x/y; e=(a*c+b*d)/(c2+d2): f=(c*b-a*d)/(c2+d2):  (деление)

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

Для организации операций над комплексными числами представим каждое комплексное число в виде записи из двух полей вещественного типа: Re –действительная часть, Im – мнимая часть. Создадим модуль complex, в котором опишем комплексный тип com с двумя полями. В этом же модуле в разделе интерфейса опишем процедуры ad (сложение), su (вычитание), mu (умножение), di (деление) комплексных чисел (только заголовки). Тела процедур поместим в раздел реализации модуля. Раздел инициализации имеет вид:

begin
  операторы
end.

Если раздел инициализации не содержит операторов, как в нашем примере, достаточно написать только end. Пример модуля complex.pas.

unit complex;{модуль арифметики комплексных чисел}
{$N+}
interface
uses dos,crt;
type com=record
  re,im:real;
end;
var a,b,c:com;
procedure ad(var a,b,c:com);{сложение,  c=a+b}
procedure su(var a,b,c:com);{вычитание, c=a-b}
procedure mu(var a,b,c:com);{умножение, c=a*b}
procedure di(var a,b,c:com);{деление,   c=a/b, случай  b =0 не предусмотрен }                  
procedure wr_com(var p:com); {печать комплексного числа}
implementation
procedure ad(var a,b,c:com);
 begin c.re:=a.re+b.re;
 c.im:=a.im+b.im;
end;{ad}
procedure su(var a,b,c:com);
begin c.re:=a.re-b.re;
c.im:=a.im-b.im;
end;{su}
procedure mu(var a,b,c:com);
begin c.re:=a.re*b.re-a.im*b.im;
c.im:=a.re*b.im+a.im*b.re;
end;{mu}
procedure di(var a,b,c:com);
var d:real;
begin  d:=b.re*b.re+b.im*b.im;
c.re:=(a.re*b.re+a.im*b.im)/d;
c.im:=(b.re*a.im-a.re*b.im)/d;
end;{di}
procedure wr_com(var p:com);
  begin
    if p.im<0 then writeln(p.re:9:5,'-',-p.im:9:5,'i') else
    writeln(p.re:9:5,'+',p.im:9:5,'i');
  end;{wr_com}
begin
end.{unit}

Как уже было указано, модуль не может непосредственно выполняться. Нужно разработать основную программу, которая использует ресурсы модуля. В данном случае это программа com_arif.pas (комплексная арифметика). В программе вводятся 2 комплексных числа, затем с ними выполняются действия сложения, вычитания, умножения и деления, результаты выводятся на экран.

program com_arif;
uses complex;
var x,y,z:com; {тип com определен в модуле complex}
begin
writeln('Введите дейст. и мн. части первого числа');
read(x.re,x.im);
writeln('Введите дейст. и мн. части второго числа');
read(y.re,y.im);
write('x='); wr_com(x);
write('y='); wr_com(y);
ad(x,y,z); {z=x+y}
write('x+y=');wr_com(z);
su(x,y,z); {z=x-y}
write('x-y=');wr_com(z);
mu(x,y,z); {z=x*y}
write('x*y=');wr_com(z);
di(x,y,z); {z=x/y}
write('x/y=');wr_com(z);
end.

Просмотров: 19613

Вы можете --> Заказать программу или Задать вопрос на форуме

Вернуться воглавление


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


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

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

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


 


Полезен материал? Поделись:

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

 
 

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