Практическая работа №11
Тема: Разработка собственного модуля
Цель: закрепление знаний и навыков по созданию пользовательских модулей, изучение с практической стороны преимуществ модульного программирования.
Вид работы: фронтальная.
Время выполнения: 2 часа.
Теоретический материал:
Модуль (UNIT) – программная единица, текст которой компилируется независимо (автономно). Внутренняя структура модуля (тексты программ и т.д.) скрыта от пользователя.
Заголовок модуля
UNIT имя модуля;
Интерфейсная часть
INTERFACE начало раздела объявлений;
USES используемые при объявлении модули;
LABEL подраздел объявления доступных глобальных меток;
CONST подраздел объявления доступных глобальных констант;
TYPE подраздел объявления доступных глобальных типов;
VAR подраздел объявления доступных глобальных переменных;
PROCEDURE заголовки доступных процедур;
FUNCTION заголовки доступных функций;
Реализационная часть
IMPLEMENTATION начало раздела реализации;
USES используемые при реализации модули;
LABEL подраздел объявления скрытых глобальных меток;
CONST подраздел объявления скрытых глобальных констант;
TYPE подраздел объявления скрытых глобальных типов;
VAR подраздел объявления скрытых глобальных переменных;
PROCEDURE тела доступных и скрытых процедур;
FUNCTION тела доступных и скрытых функций;
Инициализационная часть
BEGIN
Операторы, которые выполняются при подключении модуля;
END.
Задания:
1) Создайте модуль для вычисления факториала некоторого числа. В основной программе, не объявляя никаких переменных, осуществите вывод на экран факториалов чисел a и b.
2) Напишите программу для ввода некоторого числа X и вывода факториала этого числа. В программе должны использоваться два модуля: модуль для проверки, является ли число X целым и положительным, модуль для вычисления факториала (можно применить модуль, созданный для решения предыдущей задаче).
Ход работы:
В тетрадь оформите листинги программ и модулей с комментариями
1. Основная программа, согласно условию, будет содержать подключение модуля, ввод чисел a и b, вызов функции для каждого числа и вывод результата на экран. Текст программы можно представить так:
usees unitF; {подключение модуля}
begin
writeln(‘введите два числа’);
readln(a,b); {ввод переменных, описанных в модуле}
f1:=factor(a);{вызов функции, описанной в модуле; вычисление факториала от a}
f2:=factor(b); {вызов функции, описанной в модуле; вычисление факториала от b}
writeln(‘факториал числа а = ’, f1);
writeln(‘факториал числа b = ’, f2);
readln;
end.
Модуль создаётся отдельно от основной программы. Его название должно совпадать с именем файла, в котором он записан (unitF). Для удобства использования модули сохраняют с расширениями pas и tpu, т.к. откомпилированный модуль нельзя исправить. В интерфейсной части модуля описываются переменные a, b типа integer и переменные f1, f2 типа longint (для записи результата используется тип с наибольшим диапазоном из целых типов), описывается функция factor. В реализационной части находится не только описание функции, но и сама функция. Инициализационная часть будет пустой. Текст модуля unitF (файлы unitF.tpu и unitF.pas):
unit unitF; {заголовок модуля}
interface {интерфейсная часть}
var a, b: integer; {описание переменных доступных из вызывающий модуль программ}
f1, f2: longint;
function factor(x: integer): longint; {описание доступной программам функции}
implementation {реализационная часть}
function factor(x: integer): longint; {тело функции}
var i: inttger; {локальные переменные}
f: longint;
begin
f;=1;
for i:= 1 to x do {цикл для вычисления факториала}
f:=f*i;
factor:=f; {имени функции всегда присваивается результат}
end; {завершение функции}
end. {закрытие модуля, пустая инициализационная часть}
2. Решение этой задачи упрощается тем, что в предыдущей уже разработан модуль для вычисления факториала. Следовательно, необходимо создать ещё один модуль и исправить вызывающую программу. В модуле proverka находится функция: является ли число, от которого вычисляется факториал, положительным и целым, это проверяется так:
ost:=x-round(x); {определение дробной части числа x}
if (x>=0) and (ost=0) then writeln(‘факториал числа = ’,factor(round(x)))
else writeln(‘от данного числа не возможно найти факториал’);
Если x неотрицательное и целое число, то вызывается функция для вычисления факториала из модуля unitf - factor.
Контрольные вопросы и задания:
1) Дайте определение понятию модуль.
2) Обозначьте основные принципы модульного программирования.
3) Охарактеризуйте структуру пользовательского модуля.
4) Для чего предназначен раздел implementation?
5) Можно ли в модуле использовать подпрограммы из других модулей?
6) В каком разделе модуля описываются переменные, доступные извне?
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.