Базы данных
Рассмотрим программу сохранения табличных данных (базы данных) в типизированном файле, элементами которого являются записи.
Задача: составить программу ввода списка курсантов группы с указанием фамилии курсанта и года рождения в файл и вывода содержимого файла на экран дисплея.
Исходные данные:
№ |
Фамилия и инициалы |
Год рожд. |
1 |
Иванов С.А. |
1996 |
2 |
Андреев П.И. |
1996 |
Программа решения задачи имеет вид:
Program Spis_gr;
uses crt;
type zap=record
fio:string[10];
gr:integer;
end;
var
f_zap: file of zap;
b: zap;
i,n: integer;
begin
clrscr;
assign (f_zap, ‘c:\temp\sp.dat’);
rewrite (f_zap);
write (‘введите количество курсантов’);
readln (n);
write (‘введите фамилию и год рождения курсанта’);
for i:=1 to n do
begin
write(‘=>’);
read (b.fio);
readln (b.gr);
write (f_zap, b);
end;
close (f_zap);
i:=1;
writeln;
writeln (‘ СПИСОК КУРСАНТОВ’);
writeln (‘---------------------------------------’);
writeln (‘№ | Фамилия | Год Рождения’);
writeln (‘---------------------------------------’);
reset (f_zap);
while not Eof(f_zap) do
begin
read (f_zap, b);
writeln (i:2, ’|’, b.fio:10,‘|’, b.gr);
i:=i+1;
end;
writeln (‘---------------------------------------’);
writeln (‘конец’);
readln;
end.
Внешние подпрограммы
В TP программист может создать отдельно собственные библиотеки, которые компилируются отдельно, и в дальнейшем могут быть использованы в различных программах.
Можно отдельно создать внешние подпрограммы , либо модули. Рассмотрим внешние подпрограммы. В это случае исходный текст каждой процедуры или функции хранится в отдельном файле с расширением .inc и при необходимости включается в текст основной программы с помощью специальной директивы компилятора {$I <имя файла>}.
Внешние файлы с расширением .inc могут накапливаться на диске, формируя личную библиотеку подпрограмм.
Например: Создадим внешнюю процедуру на сортировку одномерного массива – файл sort.inc, сохраним его в с:\temp
Procedure sort; {Сортировка A[n]}
begin
………
……….
……….
end;
Основная программа:
program
var
a[1..50]:array of integer;
i:integer;
{$I C:\temp\sort.inc}
begin {основная программа}
read (n); randomize;
for i:=1 to n do
begin
a[i]:=20-random(41);
write(a[i], ‘ ‘);
end;
writeln;
sort;
for i:=1 to n do
write(a[i], ‘ ‘);
readln;
end.
Модули
Подключается модуль с помощью оператора uses. Модуль начинается заголовком unit <имя модуля>. Файл модуля должен иметь то же имя, что и модуль. После трансляции модуль получает расширение .tpu (при трансляции в меню должна быть строка Compile-Destination Disk, иначе .tpu не сохранится).
В отличие от внешних подпрограмм модули могут содержать большой набор различных процедур и функций и других ресурсов.
Модуль имеет следующую структуру:
unit <имя модуля>; {заголовок модуля}
interface
{интерфейсная часть} – раздел внешних описаний
implementation
{раздел реализации} – раздел внутренних описаний
begin
{раздел инициализации модуля}
end.
В разделе interface объявляются все ресурсы, которые будут доступны в дальнейшем программисту при подключении модуля. Для подпрограмм здесь указывается лишь полный заголовок.
В разделе implementation описываются все подпрограммы, которые были ранее объявлены. Кроме того, здесь можно описать свои переменные, константы, типы, подпрограммы, которые были локальными и недоступными в других программах (в отличие от тех переменных, которые описаны в интерфейсной части и доступны всюду).
Раздел инициализации содержит операторы, которые должны быть выполнены сразу же после запуска программы, использующей модуль. Этот раздел может вообще отсутствовать.
