Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
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 содержит основные подпрограммы переменные и константы необходимые для работы программы. Например такие подпрограммы как 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); |
Возвращает последующий элемент из |
|
списка значений порядкового типа |