Материал: Лабораторная работа №8 Модули

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

function ShowMenu:Integer;

//добавление записи в конец массива procedure AddRecord;

//печать таблицы procedure ShowAllRecord;

Если включить этот модуль в состав предложения uses в другом модуле или программе, то в них будут доступны тип TStudent и перечисленные подпрограммы.

Раздел реализации

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

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

unit Tables;

interface

type TStudent=record

name

:string[12];

//имя

familia:string[16];

//фамилия

gruppa

:Integer;

//группа

end;

//выводит меню, возвращает результат выбора function ShowMenu:Integer;

//добавление записи в конец массива procedure AddRecord;

//печать таблицы procedure ShowAllRecord;

implementation

const n=10; //емкость массива

var Table:array [1..n] of TStudent; //таблица

Count:integer; //число строк в таблице

function ShowMenu:Integer; begin

writeln;

writeln('Viberite deistvie'); writeln('0 - Exit program'); writeln('1 - Add record'); writeln('2 - Show all record'); write('>>');

readln(Result);

end;

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

//ввод записи

procedure InRecord(var P:TStudent); begin

writeln('Insert record >>');

with P do

 

begin

 

write('name

:'); readln(name);

write('familia

:'); readln(familia);

write('gruppa

:'); readln(gruppa);

end;{with}

 

end;{InRecord}

 

//вывод записи

procedure ShowRecord(const P:TStudent); begin

with P do writeln(name, ' ', familia, ' ', gruppa); end;{ShowRecord}

//добавление записи в конец массива procedure AddRecord;

begin

//если число элементов превышает емкость массива if Count=n then

writeln('Error: array overflow')

else //если в массиве есть место, то добавляем запись begin

inc(Count);

InRecord(Table[Count]); end;{else}

end;{AddRecord}

//печать таблицы procedure ShowAllRecord; var i:integer;

begin

//рисуем таблицу writeln('|--------------------------------------------|'); for i:=1 to Count do

begin

write(i, ') '); ShowRecord(Table[i]);

end; writeln('|--------------------------------------------|')

end;

initialization Count:=0;

end.

Объявления сделанные в разделе реализации модуля будут недоступны из других модулей. Так, например, из другого модуля нельзя будет обратиться к переменной Table.

Раздел инициализации

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

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

разделе инициализации инициализируется переменная Count.

Раздел деинициализации

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

Файл проекта

Файл в котором находится основная программа называется файлом проекта и имеет расширение dpr. Кроме того что файл проекта содержит основную программу он играет очень важную роль в работе интегрированной среды Delphi. Этот файл содержит список всех файлов используемых проектом.

Список файлов находится в разделе uses в виде строк следующего вида

<имя модуля> in <имя файла>

Например модуль Tables включенный в проект будет выглядеть следующим образом

program TableRec;

{$APPTYPE CONSOLE} uses

Tables in 'Tables.pas';

Непосредственно изменять файл проекта не рекомендуется. Удобнее делать это используя команды меню Project «Add to Project» и «Remove from Project» (рисунок )

которые соответственно добавляют файл в проект и удаляют файл из проекта.

Рисунок 6 – Команды меню для работы с файлом проекта

Просмотреть все файлы входящие в проект можно нажав кнопку View Unit на панели инструментов.

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Рисунок 7 – Окно списка модулей включенных в проект

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

Стандартные модули

В поставку Delphi входит большое количество готовых модулей (несколько сотен). Рассмотрим назначение некоторых из них.

Модуль System

Модуль System подключается автоматически даже если список модулей пуст. Модуль System содержит основные подпрограммы переменные и константы необходимые для работы программы. Например такие подпрограммы как writeln, readln, exp, sin, cos и многие другие. Модуль System также осуществляет связь программы с операционной системой.

Таблица 1 – Математические функции модуля System

Функция

function Abs(X);

function ArcTan(const X: Extended): Extended; function Cos(const X: Extended): Extended; function Sin(const X: Extended): Extended; function Exp(const X: Extended): Extended;

function Frac(const X: Extended): Extended; function Int(const X: Extended): Extended;

Описание

Возвращает модуль аргумента Возвращает арктангенс аргумента Возвращает косинус аргумента Возвращает синус аргумента

Возвращает результат возведения числа e в степень аргумента

Возвращает дробную часть аргумента Возвращает целую часть аргумента

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

function Ln(const X: Extended): Extended;

Возвращает натуральный логарифм

 

аргумента

function Pi;

Возвращает значение числа Пи

function Sqr(const X: Extended): Extended;

Возвращает квадрат аргумента

function Sqrt(const X: Extended): Extended;

Возвращает квадратный корень

 

аргумента

Таблица 2 – Подпрограммы для работы со строками

 

Функция

function Copy (Source: string; Index, Count: Integer):string;

procedure Delete (var Source: string; Index, Count: Integer);

procedure Insert (SubSt: string; var St: string; Indext: Integer);

function Length (S:string):integer; function Pos (SubSt, St:string):integer;

function Concat(s1 [, s2,..., sn]: string): string;

procedure Str(X [:Width [:Decimals ]];var S);

procedure Val(S; var V; var Code: Integer);

Описание

Копирует из строки Source Count символов, начиная с символа с номером Index.

Удаляет Count символов из строки Source, начиная с символа с номером индекс.

Вставляет подстроку SubSt в строку St, начиная с символа с номером Index.

Возвращает текущую длину строки.

Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции с которой она начинается. Если подстрока не найдена возвращается ноль.

Выполняет объединение нескольких строк в одну

Преобразует численное значение аргумента в его строковое представление

Преобразует строковый аргумент S в его численное представление V

Таблица 3 – Подпрограммы для работы с переменными порядковых типов

Функция

Описание

procedure Dec(var X[ ; N: Longint]);

Уменьшает значение X на N или единицу

 

если не указан второй аргумент.

procedure Inc(var X [ ; N: Longint ] );

Увеличивает значение X на N или единицу

 

если не указан второй аргумент

function Odd(X: Longint): Boolean;

Проверяет является ли аргумент нечетным

 

числом

function Pred(X);

Возвращает предыдущий элемент из списка

 

значений порядкового типа

function Succ(X);

Возвращает последующий элемент из

 

списка значений порядкового типа