русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Модули в Паскале

Модуль (UNIT -модуль, единица) – автономно (отдельно) компилируемая программная единица, которая  содержит компоненты раздела описаний (меток, констант, типов, переменных, процедур, функций), а также может содержать операторы инициализирующей части.
Сам модуль не является выполняемой программой, а предназначен для использования другими программами и  модулями.   

 

Структура модуля

Модуль имеет следующую структуру:
UNIT  <имя модуля>
INTERFACE
        <раздел интерфейсный>
IMPLEMENTATION
         <раздел реализации>
BEGIN
           <раздел инициализации>
END.

 

Заголовок модуля состоит из зарезервированного слова  Unit(модуль) и имени модуля.

Имя модуля выбирается по общим правилам и должно совпадать с именем дискового файла содержащего исходный текст модуля.
Расширение в имени модуля (.pas ) не указывается  оно задается по умолчанию.

Имя модуля используется для его связи с основной программой с помощью предложения  Uses.
Предложение  Usesм.б. помещено после заголовка модуля или за словами

Interfaceи Implementation.

 

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

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

     Раздел инициализации – заключается в словесные скобки   BEGIN   END.
и содержит операторы, которые будут выполнены до передачи управления основной программе. Это м.б. операторы инициализации данных (переменных) Например операторы присваивания, ввода а также процедуры связывания и открытия файлов. Раздел операторов м.б. пустымBEGIN   END или отсутствовать простоEND.
    В конце модуля ставится точка.

 

Компиляция и использование модулей

     Оперативная память система имеет сегментную структуру (один сегмент равен 64К =65535 байт). Код программы м.б. не более одного сегмента, объем данных не может превышать один сегмент (если не использовать динамическую память) и для стека один сегмент. Размер стека задается директивой {$M<>}. Минимальный размер стека 1К максимальный один сегмент по умолчанию 16К. Значения локальных переменных при обращении к подпрограмме  помещаются в стек, а при выходе извлекаются из стека.
Код модуля  помещается в отдельный сегмент, т.к. он транслируется автономно от основной программы, а количество модулей используемых программой зависит только от доступной ОП.   Это позволяет создавать большие программы.
Компилятор создает код модуля с тем же именем, но с расширением tpu(turbo pascal unit).
Для использования модуля основной программой или другими модулями его имя (без расширения) помещается в списке предложенияUses 
Если модуль является компактным и часто м.б. использован прикладными программами, то его можно поместить в библиотеку стандартных   модулейTURBO.TPL (Turbo-Pasacal-library) с помощью утилитыTPUMOVER.
Но это необходимо делать только в случае крайней необходимости т.к. библиотека загружается в ОП и уменьшает место для программы.
При компиляции файла с исходным текстом модуля появляется одноименный файл с расширением tpu и помещается в каталоге указанном опцией

 

OPTIONS/DIRECTORIES/UNIT  DIRECTORIES

или в текущем каталоге при отсутствии этой опции.
При компиляции основной программы  используемые модули д.б. в каталоге указанном опцией
OPTIONS/DIRECTORIES/EXE & TPU DIRECTORIES

либо в текущем каталоге при отсутствии этой опции
Для получения EXE файла задачи в опции 

COMPILE/DESTINATION/DISK(MEMORI)
установить DISK.
Существует три режима компиляции модулей:
- COMPILE
- BUILD
-  MAKE

Режимы устанавливаются  меню COMPILE

1. Режим   COMPILE (вызывается  Alt-F9) .  При этом компилируется программа а используемые модули д.б. предварительно откомпилированы и храниться в соответствующих каталогах.
2. Режим BUILD (вызывается -F9) .  При этом игнорируются ранее откомпилированные модули, а ищутся модули с расширением pas и перекомпилируются.
3. Режим MAKE (вызываетсяF9) .  При этом перекомпилируется только модули, которые имели изменения в тексте.

 

Пример 16.1.

В файле inp.txt расположены три массива вещественных чисел

-2.1    3.1  -2.4   5.6  5.4  -6.7  3.5  -3.6
2.3  -4.3   2.1   2.5 -3.7  -5.6  4.6    3.5   -7.5
-2.1   4.3  -2.3   7.6  4.5  -8.9  5.7   -4.5    6.8  -5.8

Вычислить функцию

где  Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc -  максимальный элемент, сумма и количество положительных элементов  соответствующих массивов a, b, и c.
Результат вывести в файл out.txt и на экран.

Текст модуля

Unit UNMAS;
Interface
Const n=10;
Type vec=array[1..n] of real;
Var  z          :vec;
i           :integer;
f1,f2    :text;
Procedure Vv(s:char; num:byte;Var z:vec);
Procedure SK1(z:vec; num:byte; Var s:real; Var k:byte);
Function MAX(z:vec; num:byte):real;

  Implementation
Procedure Vv(s:char; num:byte;Var z:vec);
Begin
Writeln('Mассив ',s);
For i:=1 to num do
Begin
Read(f1,z[i]); Write(z[i]:4:1,' ':3);
End;
Readln(f1); Writeln;
End;

   Procedure SK1(z:vec;num:byte; Var s:real; Var k:byte);
Begin
s:=0; k:=0;
for i:=1 to num do if z[i]>0 then
Begin
s:=s+z[i];
k:=k+1
End;
End;
Function MAX(z:vec;num:byte):real;
Var m    :real;
Begin
m:=z[1];
for i:=1 to num do if z[i]>m then m:=z[i];
MAX:=m
End;

  Begin
Assign(f1,'inp.txt');     Reset(f1);
Assign(f2,'out.txt');     Rewrite(f2)
End.

 

Текст программы

Program lr7_16;
Uses CRT,UNMAS;
Var
a,b,c            :vec;
y,sa,sb,sc       :real;
ka,kb,kc         :byte;
Begin
clrscr;
Vv('a',8,a);
Vv('b',9,b);
Vv('c',n,c);
SK1(a,8,sa,ka);
SK1(b,9,sb,kb);
SK1(c,n,sc,kc);
y:=(MAX(a,8)+MAX(b,9)+MAX(c,n))+(sa+sb+sc+ka+kb+kc);
Writeln('Результат:':20);
Write ('Массив а  :  ');
Writeln('sa=',sa:5:1,'  ka=',ka);
Write ('Массив b:  ');
Writeln('sb=',sb:5:1,'  kb=',kb);
Write ('Массив c:  ');
Writeln('sc=',sc:5:1,'  kc=',kc);
Writeln(' ':10,'y=',y:10);
Readln;
Writeln(f2,'ђҐ§г«мв в:');
Writeln(f2,' ':10,'y=',y:10);
Close(f1);
Close(f2)
End.

 

Результаты работы программы

Mассив a                                                                     
-2.1    3.1   -2.4    5.6    5.4   -6.7    3.5   -3.6                        
Mассив b                                                                     
2.3   -4.3    2.1    2.5   -3.7   -5.6    4.6    3.5   -7.5                 
Mассив c                                                                      
-2.1    4.3   -2.3    7.6    4.5   -8.9    5.7   -4.5    6.8   -5.8          
Результат:                                                         
Массив а  :  sa= 17.6  ka=4                                                    
Массив b:  sb= 15.0  kb=5                                                    
Массив c:  sc= 28.9  kc=5                                                    
y= 9.330E+01

Просмотров: 17585

Вернуться в оглавление:Алгоритмические языки




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.