Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 15
Тема: Разработка алгоритмов и программ решения различных задач
с использованием библиотечных модулей пользователя
Цели:
обучающая: закрепить знания о модуле программы; научить создавать и компилировать собственные модули
развивающая: развитие логического мышления, повышение познавательной активности
воспитательная: воспитание у учащихся постоянной потребности в самосовершенствовании и самообразовании, умения работать в коллективе
методическая: совершенствование приемов развивающего обучения путем применения различных видов опроса и закрепления
Ход работы:
Теоретическая часть
Программы, написанные Вами на Паскале и оформленные в виде готовых к употреблению процедур или функций, можно применять в других программах. Основная концепция такого подхода заключается в объединении своих процедур и функций в собственные библиотеки, которые затем могут подключаться к разрабатываемым программным продуктам.
Таким образом, мы подошли к понятию модуля UNIT. До сих пор мы имели дело с модулями, встроенными в Паскаль. Теперь помимо встроенных в Паскаль модулей Вы можете подключать к программе библиотеки, которые были созданы Вами.
Модуль (UNIT) программная единица, текст которой компилируется независимо.
Сам по себе модуль можно разделить на заголовок, интерфейсную часть, реализационную, инициализационную.
Заголовок
UNIT имя модуля
Интерфейсная часть
INTERFACE начало раздела объявлений
USES исп-емые при объявлении модули
LABEL подраздел объявления доступных глобальных меток
CONST подраздел объявления доступных глобальных констант
TYPE подраздел объявления доступных глобальных типов
VAR подраздел объявления доступных глобальных переменных
PROCEDURE заголовки доступных процедур
FUNCTION заголовки доступных функций
Реализационная часть
IMPLEMENTATION начало раздела реализации
USES исп-емые при реализации модули
LABEL подраздел объявления скрытых глобальных меток
CONST подраздел объявления доступных скрытых констант
TYPE подраздел объявления доступных скрытых типов
VAR подраздел объявления доступных скрытых переменных
PROCEDURE заголовки доступных и скрытых процедур
FUNCTION заголовки доступных и скрытых функций
Инициализационная часть
BEGIN осн. блок модуля
END
Заголовок модуля
Он мало отличается от заголовка программы.
Здесь же могут присутствовать директивы компилятору, дающие общие установки для всего модуля.
Добавляется требование совпадения имени модуля с именем файла, в котором он хранится. Поэтому имя модуля не может состоять более чем из 8 символов.
Интерфейсная часть
В ней описываются все константы, типы данных и переменных, процедуры и функции, доступные в этом модуле для использования внешними программами. Эта часть несет всю информацию, необходимую для исполнения процедур и функций, определенных в модуле.
В интерфейсной части можно сделать доступными уже существующие готовые модули, указав их имена в операторе USES.
Следом за USES описываются доступные извне и необходимые для описанных процедур и функций определения типов данных, констант и переменных.
Все процедуры и функции должны быть описаны в интерфейсной части своей строкой-заголовком с указанием типов параметров. Сам текст этих процедур и функций находится (с дубликатом их заголовка) в реализационной части.
Возможно, что интерфейсная часть ничего не содержит:
Пример:
UNIT d_u;
INTERFAСE
(*эта часть пуста*)
INPLEMENTATION
USES crt;
Begin
Clrscr;
End.
Реализационная часть
В ней определяются процедуры и функции. Точно так же, как и внутри программы, Вы можете определять здесь глобальные (для модуля) переменные, типы данных и константы наряду с определением процедур и функций. Определенные здесь типы данных и структуры данных недоступны извне и могут использоваться для своих нужд только программами, входящими в реализационную часть.
Она также может быть пустой. Такую возможность используют, если необходимо определить некоторые общие для многих программ типы данных, константы и переменные.
Инициализационная часть
Представляет собой основной блок модуля. Приведенные в ней операторы выполняются первыми, то есть они выполняются перед операторами основного блока главной программы, в которую включен данный модуль.
Модули транслируются отдельно. В отличии от основных программ, результатом трансляции которых будут файлы с расширением exe, модули получают расширение tpu. При трансляции основной программы все модули (tpu-файлы) присоединятся к ней автоматически. Если в каком-либо из модулей были внесены изменения, то при трансляции Вашей программы все модифицированные модули также будут предварительно перетранслированы (эту функцию реализует среда ТР).
Полностью отлаженный модуль (tpu-файл) можно подсоединить к файлу стандартных модулей TURBO.TRL с помощью утилиты TRUMOVER. В этом случае он будет загружаться в память автоматически при запуске компилятора.
Пример. Вычислить Sn=(n+1)(a0+an)/2
Unit Ar ;
Interface
Function Tg ( x : rеal ) : real ;
Procedure Sum ( a0 , an : real ; N : integer ; var Sn : real ) ;
Implementation
Function Tg ( x : real ) : real ;
Begin
Tg : = sin(x)/cos(x) ;
End;
Procedure Sum (a0 , an : real ; n : integer ; var Sn : real ) ;
Begin
Sn : = ( n + 1 ) * ( a0 + an ) / 2;
End;
End.
Сохраним этот модуль в виде файла с именем Ar.pas и оттранслируем его отдельно. Для этого необходимо предварительно установить режим компиляции Destination Disk ( в команде Compile главного меню ) .
В результате трансляции будет сформирован файл Ar.tpu. Затем введем программу, использующую этот модуль:
Program test;
Uses Ar;
Var s , x , a0 , an : real;
N : integer ;
Begin
Readln ( x ) ;
Writeln ( '…' , tg ( x ) ) ;
Readln ( a0 , an, n ) ;
Sum ( a0 , an , n , s ) ;
Writeln ( s ) ;
End .
З А Д А Н И Е
Оформить задачи с подпрограммами в виде отдельных модулей.
Контрольные вопросы:
Литература:
1. Программирование в среде ТР 7.0.- А.Н. Епанешников, Москва,1995
2. Практикум по основам программирования. Н.Д. Васюкова, Москва, "Высшая школа",1991
3. Информатика 10. А.И. Павловский, Минск, "Народная асвета",2000
4. Задачи по программированию. С.А. Абрамов, М:"Наука", 1988
5. Программирование на ПЭВМ. Офицеров, Минск, "Народная асвета",2000
6. Основы алгоритмизации и программирования.- М.:ФОРУМ:ИНФРА-М,2002