Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решение математических задач.pdf
Скачиваний:
28
Добавлен:
13.02.2015
Размер:
858.1 Кб
Скачать

1.2. Создание программного модуля, объединяющего математические функции

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

других дополнительных модулей в языке Turbo Pascal используется специальная команда Uses. Помимо модуля System, в состав системы

программирования входит еще ряд стандартных модулей.

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

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

Еще одним часто используемым модулем из числа стандартных является модуль Graph. Он применяется для создания рисунков, графиков и

диаграмм в графическом режиме Turbo Pascal. Графический режим в сравнении с текстовым обеспечивает более высокое качество изображения. Подробно об особенностях работы с модулем Graph рассказывается в главе 4 данного пособия. Модуль Overlay используется для разработки программ,

имеющих большой объем и сложную внутреннюю структуру. Существуют в Паскале и другие стандартные модули.

Для обеспечения более быстрой и эффективной работы со

стандартными модулями они объединены в специальный библиотечный файл, который называется turbo.tpl. Расширение этого файла tpl

является сокращением от английского словосочетания Turbo Pascal library – библиотека Turbo Pascal.

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

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

12

сохраняется в файле с расширением pas. В общем виде модуль имеет такую

внутреннюю структуру: unit имя_модуля;

interface

var имя_перем1:тип1; имя_перем2:тип2;…; function имя_функции1(параметр1:тип1;

параметр2:тип2;…): значение;

function имя_функции2(параметр1:тип1; параметр2:тип2;…): значение;

………………………………………………………………………………

procedure имя_ процедуры1(параметр1:тип1; параметр2:тип2;…);

procedure имя_ процедуры2(параметр1:тип1; параметр2:тип2;…);

………………………………………………………………………………

implementation

var имя_перем1:тип1; имя_перем2:тип2;…; function имя_функции1;

список локальных переменных функции1;

тело функции1; function имя_функции2;

список локальных переменных функции2;

тело функции2;

………………………………………………………………………………

procedure имя_процедуры1;

список локальных переменных процедуры1;

тело процедуры1; procedure имя_процедуры2;

список локальных переменных процедуры2;

тело процедуры2; begin

оператор1;

оператор2;

…………………………………………………

end.

Рассмотрим составные части приведенной выше структуры. Текст модуля начинается с заголовка. Заголовок состоит из служебного слова unit

13

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

Вслед за заголовком модуля находятся его разделы, которые часто

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

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

другими программами.

После служебного слова interface в секции интерфейса находится

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

которых указывается ее тип.

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

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

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

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

интерфейсной секции. Секция реализации начинается со служебного слова implementation (это слово в переводе с английского означает «выполнение», «осуществление»). После слова implementation в разделе

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

В секции реализации находятся описания функций данного модуля. Описание функции начинается с ее заголовка. В отличие от интерфейсной

секции, в данном случае в заголовке можно указывать только служебное слово function и собственное имя функции. Список параметров и тип

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

14

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

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

запятой. После текстов функций в секции реализации расположены описания процедур. Описание процедуры по своей внутренней структуре аналогично описанию функции.

Последней по порядку в модуле является секция инициализации, которая начинается со служебного слова begin, может содержать ряд

операторов и заканчивается служебным словом end, после которого ставится

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

обязательно.

Рис. 1.1. Окно с сообщением об успешной компиляции модуля, созданного в системе Turbo Pascal

После того как исходный текст модуля набран, его следует сохранить в файле с расширением pas. Сохранять файл с исходным текстом модуля

можно в том же каталоге, что и остальные файлы программ. Затем

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

Открыв этот раздел, нужно выполнить в нем одноименную команду. Если в модуле не имеется ошибок, то на экране компьютера на переднем плане Вы

увидите окно с сообщением об итогах компиляции. В нижней строке этого окна будет видна следующая надпись: «Compile successful: Press

any key». Это означает, что компиляция прошла успешно и для закрытия

окна с сообщением нужно нажать любую клавишу (см. рис. 1.1). Запускать модуль сразу на компиляцию и на выполнение с помощью команды RunRun, как мы это делали с обычными программами, нельзя.

15

После успешной компиляции система программирования создает

исполняемый файл, который имеет то же имя, что и исходный, и расширение tpu. Например, если исходный файл назывался modul1.pas, то исполняемый файл будет называться modul1.tpu. Для того чтобы этот модуль могли

использовать другие программы, нужно соответствующим образом настроить систему Turbo Pascal.

Рис. 1.2. Диалоговое окно настройки системы Turbo Pascal, необходимой для правильного использования программных модулей

Для этого нужно в окне системы Turbo Pascal открыть меню Options, а в нем использовать команду DirectoriesПосле выполнения этой команды откроется диалоговое окно Directories (каталоги). В диалоговом окне в поле, называемом EXE & TPU directory, следует

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

файлы модулей с расширением tpu. В поле под названием Unit directories нужно указать этот же каталог для того, чтобы все

программы, использующие модули, могли найти их по указанному адресу (см. рис. 1.2).

Если, например, на компьютере папка TP7 находится в корневом

каталоге диска D, а файлы программ Вы сохраняете в файле prog, то в обоих полях нужно указать адрес d:\TP7\prog. Для подтверждения

внесенных изменений нужно щелкнуть «мышью» экранную кнопку Ok, что

приведет к закрытию диалогового окна. Теперь созданный модуль смогут использовать другие программы.

Рассмотрим создание и использование программного модуля на следующем примере. Создадим модуль под названием math3, который будет

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

16

из трех предыдущих программ и вставить их в текст модуля. Ниже приведен текст программного модуля math3.

unit math3; interface

function faktor(n:longint):longint; function log10(x:real):real; procedure step(x,k:real; var s:real);

implementation function faktor;

var i,f:longint; begin

f:=1;

for i:= 1 to n do f:=f*i; faktor:=f;

end; function log10;

var log:real; begin log:=ln(x)/ln(10); log10:=log;

end; procedure step;

var i,n:longint; begin

if int(k)<>k then s:=exp(k*ln(x))

else begin

n:=trunc(k);

s:=1;

if n>0 then

for i:=1 to n do s:=s*x

else

if n=0 then s:=1

else

for i:=-1 downto n do end;s:=s/x;

end;

end.

17

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

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

десятичный логарифм числа. Процедура step по заданному числу и

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

После компиляции модуля образуется исполняемый файл, который в данном случае называется math3.tpu. Этот файл могут использовать

другие программы, написанные в Turbo Pascal. В качестве примера использования возможностей созданного модуля приведем небольшую программу. Эта программа вычисляет значение следующего выражения:

x =(a!+b!)c

(1.2)

где a,b и с вводятся пользователем с клавиатуры, причем a и b

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

program abc; uses crt,math3; var a,b:longint; c,s,r:real; begin

clrscr;

writeln('Введите первое число'); readln(a);

writeln('Введите второе число'); readln(b);

writeln('Введите показатель степени'); readln(c);

s:=faktor(a)+faktor(b);

step(s,c,r);

writeln('Значение выражения равно ',r:10:3); readln

end.

В данной программе после ее заголовка указываются подключаемые к программе модули. После стандартного модуля Crt через запятую

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

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

18