Построение модульной программы в среде Turbo Pascal 7.0
методическая разработка по информатике и икт по теме
Использование модулей позволяет организовать коллективную разработку программ.
Скачать:
Вложение | Размер |
---|---|
metodicheskoe_posobie31.doc | 100 КБ |
Предварительный просмотр:
Государственное бюджетное образовательное учреждение
дополнительного образования детей
СПб Центр детского (юношеского) технического творчества
Методическое пособие
“Построение модульной программы в среде
Turbo Pascal 7.0”
Автор: Беляева Г.И.
педагог дополнительного образования
2010 год
Создание модульных программ в среде
Turbo Pascal 7.0
Введение
В системе Turbo Pascal 7.0 программа состоит из главной программы и возможно
нескольких модулей. Все они могут быть размещены в различных файлах. Выполнение
программы всегда начинается с файла с расширением EXE, который содержит код глав-
ной программы..
МОДУЛЬ – минимальная единица, допускающая индивидуальную компиляцию.
Выполнение модуля инициируется либо главной программой, либо каким-нибудь другим
модулем. с помощью процедур или функций, входящих в состав модуля. Использование
модулей позволяет организовать коллективную разработку программ.
Тема 1. Структура модуля
Исполняемый код модуля размещается в отдельном сегменте памяти, а не в сегменте
кода главной программы. Модульная структура программы позволяет максимально исполь-
зовать полезные средства, входящие в состав библиотек поддержки разработок.
Структура модуля напоминает структуру программы, хотя и имеет ряд различий
СЕКЦИЯ СВЯЗИ UNIT < имя >
INTERFACE
USES < Список 1 – имен модулей >
< Внешние обьявления >
СЕКЦИЯ РЕАЛИЗАЦИИ IMPLEMENTATION
USES < Список 2 – имен модулей >
< Внутренние обьявления >
СЕКЦИЯ ИНИЦИАЛИЗАЦИИ BEGIN
< Последовательность операторов >
END.
Вопросы по теме 1:
1. Какие преимущества дает модульная структура программы ?
- Дать определение программного модуля.
Задание по теме 1:
Определить структуру программного модуля
Тема 2. Секция связи
Модуль начинается с ключевого слова UNIT, за которым следует – имя модуля, соот-
ветствующее имени файла с расширением PAS, в котором находится исходный текст модуля.
Например :
UNIT Mod1; { Mod1.pas - файл с исходным текстом описываемого модуля }
Имя модуля служит для организации связи модуля с главной программой и другими
модулями с помощью слова USES, вслед за которым указываются имена модулей, в кото-
рых будут использоваться так называемые внешние обьявления, т.е. элементы модуля, извес-
тные в этих модулях и в главной программе.
Например :
UNIT Mod1;
INTERFACE
USES MOD2;
CONST M = 100;
TYPE Intl = 1 . . M;
VAR W : real;
F : boolean;
PROCEDURE Sq ( A : Intl; Var B : integer);
FUNCTION Str1( S : string) : boolean;
Следует отметить, что все константы, типы, переменные, процедуры и функции, обьявленные
после слова INTERFACE, будут известны как главной программе, так и в модуле с именем
MOD2 и будут размещаться в том же сегменте памяти, что и глобальные переменные главной
программы.
Все процедуры и функции обьявляются в секции связи только своими заголовками, их
полные тексты приводятся с следующей секции – секции реализации.
Вопросы по теме 2:
- Назначение секции связи.
- Как будут распределятся в оперативной памяти данные, описанные в секции при выполнении программы ?
- Особенности при обьявлении процедур и функций в секции связи.
Тема 3. Секция реализации
Секция начинается с ключевого слова IMPLEMENTATION. За ним после слова USES
обьявляется набор модулей, внешние обьявления которых доступны в секции реализации.
При этом эти обьявления могут :
- участвовать в формировании внутренних обьявлений модуля;
- использоваться при описании процедур и функций.
Далее следуют внутренние обьявления - это константы, переменные, процедуры и функции,
известные во всех подпрограммах секции реализации, а также могут быть использованы гло-
бальными процедурами и функциями, если их заголовки обьявлены в секции связи и сов-
падают по именам.
Например :
IMPLEMENTATION
CONST Five = 5;
PROCEDURE Sq ;
CONST B1 = Five + 6;
BEGIN
B := B1 * A;
END;
FUNCTION STR1;
VAR C : Intl;
BEGIN
READLN(C);
IF Length(S) < C Then Str1 := TRUE
Else Str1 := FALSE;
END;
Вопросы по теме 3 :
- Каково назначение секции реализации ?
2. Чем отличаются внешние и внутренние обьявления в секции реализации ?
Тема 4. Секция инициализации
Эта секция чаще всего отсутствует, она начинается словом BEGIN, за которым
следует последовательность исполняемых операторов.Эти секции для каждого модуля,
входящего в программу, выполняются один раз перед началом работы главной програм-
мы для подготовки всей программы к началу ее работы. Обычно эта последовательность
операторов включает такие действия как :
- присваивание начальных значений переменным;
- открытие файлов;
- проверка паролей и т.д.
В секции инициализации доступными считаются :
- внешние обьявления секции связи ;
- внутренние обьявления секции реализации;
- внешние обьявления всех модулей, имена которых присутствуют в разделе
USES этого модуля.
Например :
UNIT ReadFile;
{ Секция связи }
INTERFACE
VAR TextFile : text;
PROCEDURE DisPlay;
{ Секция реализации }
IMPLEMENTATION
VAR FileName : string;
PROCEDURE DisPlay;
VAR A : string;
BEGIN
Readln(TextFile,A);
Writeln(A);
END;
{ Секция инициазации }
BEGIN
Writeln( ‘ Введите имя файла : ’);
Readln( FileName);
Assing (TextFile, FileName );
Reset (TextFile);
END.
В этом примере рассматривается модуль, в секции инициализации которого производится
подготовка файла для считывания из него информации. Для запуска этого модуля необходимо
в главной программе создать текстовый файл.
Например :
PROGRAM Exampl;
USES ReadFile;
BEGIN
Writeln( ‘ Процедура DisPlay еще не вызвана ’);
DisPlay;
END.
Перед началом работы этой программы управление будет передано секциии инициа-
лизации модуля ReadFile, вызывающего у пользователя запрос имени файла, на что можно
ввести имя файла с исходным текстом программы Exampl, которая выдаст сообщение :
“ Процедура DisPlay еще не вызвана “.
Вопросы по теме 4 :
1. Назначение секции инициализации.
2. Что считается доступным в этой секции ?
3. Структура этой секции ?
Тема 5. Организация связей между программными
модулями
Программа на языке Pascal имеет четко выраженную иерархическую структуру.Пример
программы из пяти модулей иерархической структуры представлен на рисунке 1.
USES A,B,D
USES C,D,E USES E
Рисунок 1
При такой структуре программные модули представляют из себя сеть без циклов, при которой вершины сети упорядочены и распределены по уровням. Это означает, что обращения
модулей самим к себе, как прямые, так и косвенные - недопустимы. Вызов модулей возможен
из главной программы или из других модулей.
Некоторые замечания при организации межмодульных связей :
1. Если в секции связи модуля С обьявлена в разделе CONST некая константа J. Эта конс-
танта будет размещена до начала работы программы в сегменте данных программы и
будет там находится до окончания её работы, однако из главной программы обращение
к ней не будет обработано, так как в разделе USES главной программы не указан
модуль C.
2. Например : В секции связи модуля D обьявлена в разделе VAR некая переменная Y.( Рис.2 )
Рисунок 2
Переменные с такими же именами могут быть обьявлены и в главной программе, и в мо-
дуле А. Обращения к переменным из своего модуля возможны по имени Y. Однако
обращение к переменной с таким же именем Y из других модулей должно иметь уточ-
нённое имя A.Y ( для переменной из модуля A ) или D.Y( для переменной из модуля D ).
3. При описанной выше структуре модульной программы недопустимы прямые и косвен-
ные обращения модулей самим к себе, т.е. рекурсивные ссылки, организованные с помощью
оператора USES в секции связей. Однако на уровне реализации в предложении USES можно
осуществить эти ссылки. Ниже приведён пример программы, которая осуществляет вывод в за-
данную точку экрана, с координатами X,Y, - сообщения MSG. При обращении к процедуре
возможен выход координат за пределы экраны, что должно повлечь за собой вывод сообщения
об ошибке. Такая программа должна содержать два модуля с взаимными ссылками.
Например :
UNIT Term;
INTERFACE
PROCEDURE WriteXY (X,Y : intrger; MSG : string);
IMPLEMENTATION
USES Err { Ссылка на модуль Err },
Crt { В модуле Crt находится процедура WriteXY };
PROCEDURE WriteXY;
BEGIN
{ Условие попадание координат точки на экран }
If ( X in [ 1 .. 80 ] ) and ( Y in [1 .. 25 ] ) then
BEGIN
{ Позиционирование курсора }
GotoXY (X,Y);
Write(MSG);
END else
{ Вызов процедуры обработки ошибок}
ShowErr( ‘ Координаты при обращении к процедуре
WriteXY заданы неверно ’ );
END;
END;
{ Модуль Err }
UNIT Err;
INTERFACE
PROCEDURE ShowErr ( ErrMsg : string);
IMPLEMENTATION
USES Term { Ссылка на модуль Term },
PROCEDURE ShowErr ;
BEGIN
{ Вывод сообщения об ошибке в нижнюю строку экрана }
WriteXY(24,25, ErrMsg);
END;
END.
{ Главная программа инициализирует выполнение модулей Term и Err }
PROGRAM Glav;
USES Term;
BEGIN
WriteXY ( 1,1, ‘ Верхний левый угол ’);
{ Процедура WriteXY ( 5,105, ‘ ‘) организует пустую строку, так как точка с
координатой 5,105 лежит за пределами экрана }
WriteXY ( 5,105, ‘ ‘);
END;
END.
4. Если необходимо в двух модулях A и B пользоваться одними и теми же данными,
то обьявлять их в каждом из них - неверно, в этом случае обьявления будут отно-
сится к разным обьектам. В этом случае следует обьявить эти данные в секции связи
одного из модулей ( например A), а в другом (например в B) предусмотреть ссылку на A.
Причём эту ссылку можно разместить в предложении USES секции связи модуля B.
Такой приём использовать невсегда можно. Ведь если модули ссылаются один на
другой, то предложения USES можно размещать только в секции реализации модуля A.
Тогда внешние обьявления одного модуля будут недоступны для другого. Если
же оператор USES поместить в секцию реализации, то нельзя будет использовать общие
обьявления для описания параметров процедур и функций. Поэтому предлагается сле-
дующий приём.
Можно сформировать ещё один модуль C, в котором разместить только обьявления
разделяемых модулями A и B данных, а в секциях связи каждого из этих модулей
предусмотреть ссылки на этот третий модуль С. В тексте этого модуля С секция реали-
зации будет отсутствовать, но ключевой слово IMPLEMENTATION останется.
Например :
UNIT B;
INTERFACE
TYPE ShareRec = Record
X,Y : integer;
Z : Byte;
END;
IMPLEMENTATION
END.
Такой вариант является наиболее предпочтительным в тех случаях, когда одни и те же
данные используются несколькими модулями, между которыми существуют какие – то связи
и вводить новые не всегда возможно и целесообразно, логичнее создать новый модуль и
разместить в его секциии связи типы, константы и переменные, разделяемые каждым из
этих модулей. Вообще все глобальные обьявления типов, констант и переменных всегда
рациональнее размещать в отдельном модуле, на который при необходимости ссылаться
как из главной программы, так из каждого отдельного модуля.
Вопросы по теме 5:
- Что представляет из себя cтруктура программы, состоящая из модулей ?
- Как организовать обращения к переменным и константам из различных
модулей, используя уточнённые имена ?
3. Как организовать рекурсивные вызовы модулей ?
4. Как организовать глобальные обьявления для данных, используемых в
нескольких модулях ?
Задание по теме 5:
Представить схематически структуру программы, состоящей из нескольких
модулей с изображением ссылок к ним из различных модулей. Показать на
отдельной схеме обращение к переменным, имеющим одинаковые имена, из
различных модулей, составляющих данную программу.
Список использованной литературы
- Сергиевский М.В.,Шалашов А.В. ТУРБО ПАСКАЛЬ 7.0 Язык. Среда программирования.
Москва. Машиностроение. 1994 г.
2 . Немнюгин С.А. TURBO PASCAL. Практикум. ПИТЕР. Москва – Санкт-Петербург – и т.д.
2003 г.
Главная программа
Модуль В
Модуль А
Модуль С
Модуль D
Модуль E
Главная программа Y
USES A,D A.Y
D.Y
Модуль A
USES D Y
D.Y
Модуль D Y
Y
Y
Y
По теме: методические разработки, презентации и конспекты
Turbo Pascal. Разработка программ, содержащих оператор ветвления
Изучение программирования и языков программирования, таких как Basic, Pascal, C++, Delphi и др. является неотъемлемой частью информатики. С помощью языков программирования можно создавать свои п...
Реализация циклического алгоритма в среде Turbo Pascal. Оператор цикла с параметром
Урок по предметной области “Информатика” для 9-10 класса Данный материал представляет разработку урокапо теме “Реализация циклического алгоритма в среде TurboPascal. Оператор цикла с парам...
Работа с файлами в среде Turbo Pascal 7.0
В системе Turbo Pascal 7.0 связь с внешними источниками , приемниками и носителями информации осуществляется только с помощью файлов....
Первые уроки программирования по теме «Целые числа» в основной школе (Среда Turbo Pascal)
Перед каждым учителем информатики стоит задача: «чему учить в информатике и как учить». В настоящее время появилось большое кол...
Тест по программированию в среде Turbo Pascal. 9 класс
Тестироваиние по теме "Тест по программированию в среде Turbo Pascal" 9 класс...
Turbo Pascal (ту́рбо паска́ль) — среда разработки для языка программирования Паскаль.
Турбо Паскаль - это язык высокого уровня (сокращенно ЯВУ) программирования общего назначения. Язык получил своё имя в честь великого французского математика и философаБлеза Паскаль, автора первых...
Практическая работа программирование в среде TURBO PASCAL. Управление экраном.
Практическая работа апрграммирование в среде TURBO PASCAL. Управление экраном. 9 класс.Работе состоит из двух частей - теоретической и практичекой. В теоретической части представлены некот...
Комментарии
Работа в среде Turbo Pascal 7.0
Организация коллективного творчества