- •Составление и отладка программ с разветвляющейся структурой
- •Организация ветвлений в программах
- •Пример выполнения задания
- •Основы работы в интегрированной среде системы программирования Turbo Pascal 7.0
- •Меню File
- •Меню Edit
- •3. Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Window
- •Методика отладки программ
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Варианты заданий
- •Организация программ с циклами
- •Методика отладки программ с циклами
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Варианты заданий
- •Организация программ с функциями и процедурами
- •Методика отладки программ с подпрограммами
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Структура модулей
- •Компиляция модулей
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Приложение
- •Основные операции тр 7.0
- •Типы целых и вещественных чисел
- •Основные стандартные математические функции tp 7.0:
- •Ввод-вывод данных
Структура модулей
Модуль состоит из заголовка и трех частей (разделов): интерфейсной, исполняемой и инициирующей.
Unit <имя модуля>; {unit – зарезервированное слово, начинает заголовок модуля}
{Имя модуля используется при задании связи с основной программой и другими модулями. Эта связь устанавливается путем включения идентификатора модуля в списки uses-предложений.
Имя модуля должно совпадать с именем дискового файла, в который помещается исходный текст модуля.
Например, Unit Global; размещается в Global.pas.}
Interface {начало интерфейсного раздела}
{В этом разделе описывается взаимодействие данного модуля с другими пользовательскими и стандартными модулями, а также с главной программой}
Uses {начинает список импорта интерфейсного раздела}
{В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле. Однако, здесь целесообразно описывать идентификаторы только тех модулей, информация из которых используется в описаниях раздела interface данного модуля. При этом модули, описанные в interface будут доступны также и в implementation}
{Список
экспорта
интерфейсного раздела. Содержит
объявления всех глобальных объектов
модуля (констант, типов, переменных и
заголовки подпрограмм с формальными
параметрами), которые можно использовать
во всех других модулях и программах,
если включить в строку uses
последних имя данного модуля}
const
type
var
procedure
function
Implementation {начало раздела реализации (исполняемой части)}
{В этом разделе указывается реализационная часть описаний данного модуля, которая недоступна для других модулей и программ.}
Uses {список импорта раздела реализации}
{В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле. Здесь целесообразно описывать идентификаторы всех необходимых модулей, информация из которых не используется в описаниях раздела interface данного модуля и об использовании которых не должен знать ни один другой модуль.
Следует учитывать, что несмотря на то, что информация из модуля, описанного в interface данного модуля, используется в implementation, указывать его в этом списке недопустимо, т.к. модуль может быть указан только один раз – в interface или implementation.}
{Подразделы
внутренних для модуля описаний (секции).
В них описываются
локальные в implementation
константы,
типы, переменные, которые недоступны
ни одному другому модулю. Здесь
описываются также процедуры и функции,
заголовки которых указаны с формальными
параметрами в экспортном подразделе
interface.
При этом их заголовки в implementation
допускается указывать без
списка параметров; если списки приводятся,
то они должны быть идентичны спискам
в interface.
В
этом же подразделе описываются внутренние
процедуры и функции; они недоступны
для других модулей. Эти подпрограммы
всегда описываются полностью с
формальными параметрами.}
const
type
var
procedure
function
procedure
function
Begin {начинает раздел инициализации (инициирующая часть)}
{В этом разделе указываются операторы начальных установок, необходимых для запуска корректной работы модуля, т.е. подготовительные операции. Эти операторы выполняются при начальном запуске программы в порядке их описания в uses-предложениях основной программы.
Если операторы инициализации не требуются, то ключевое слово Begin может быть опущено}
End.
Пример. Составить программу расчета . При этом вычисление функции tg х (х – аргумент в градусах) и факториала n! объединить в отдельный модуль.
unit matem; {заголовок модуля}
interface
{список uses отсутствует, т.к. нет необходимости в использовании других модулей}
{список экспорта, включающий заголовки используемых подпрограмм}
function tg(x:real):real;
procedure fact(n:byte;var f:real);
implementation
{список uses отсутствует, т.к. нет необходимости в использовании других модулей}
function tg; {реализация функции tg x}
begin
x:=x*pi/180;
tg:=sin(x)/cos(x)
end;
procedure fact; {реализация процедуры вычисления
var i:byte; факториала}
begin f:=1;
for i:=1 to n do
f:=f*i;
end;
{инициирующая часть отсутствует, т.к. в данном модуле инициализация не требуется}
end.
Program Proba; {основная программа}
uses Matem, Printer; {список используемых модулей}
var al,y:real; k,m:byte; f1,f2:real;
begin
write('al=');readln(al);
write('k=');readln(k);
write('m=');readln(m);
{обращения к процедуре модуля matem}
fact(k,f1); fact(m,f2);
{обращения к функции модуля matem}
y:=((1+tg(al)*tg(al))/f1)*(1-1/f2);
writeln(Lst,'y=',y:12);
end.