I:size;
begin
for i:=1 to n do
read(f,x[i]);
end;
procedure read_matrix(var f:text;var a:matrix;n:size);
var
I,j:size;
begin
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
end;
Для запису інформації в текстовий файл можна скористатися такими процедурами:
procedure write_vector(var f:text;x:vector;n:size;q:byte);
var
I:size;
begin
if q>4 then q:=4;
case q of
0:for i:=1 to n do
write(f,x[i]:8:0,' ');
1:for i:=1 to n do
write(f,x[i]:9:1,' ');
2:for i:=1 to n do
write(f,x[i]:10:2,' ');
3:for i:=1 to n do
write(f,x[i]:11:3,' ');
4:for i:=1 to n do
write(f,x[i]:12:4,' ');
end;
writeln(f);
end;
procedure write_matrix(var f:text;a:matrix;n:size;q:byte);
var
I,j:size;
begin
if q>4 then q:=4;
case q of
0:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:8:0,' ')
else writeln(f,a[i,j]:8:0,' ');
1:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:9:1,' ')
else writeln(f,a[i,j]:9:1,' ');
2:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:10:2,' ')
else writeln(f,a[i,j]:10:2,' ');
3:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:11:3,' ')
else writeln(f,a[i,j]:11:3,' ');
4:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:12:4,' ')
else writeln(f,a[i,j]:12:4,' ');
end;
writeln(f);
end;
Для роботи з текстовими файлами корисними є стандартні функції eoln(f:text) та eof(f:text), які можуть набувати логічних значень. Функції eoln(f:text) та eof(f:text), набувають значення true, якщо вказівник файла f вказує на символ #13 та #26, відповідно, і false в протилежному випадку.
7.3. Модулі користувача
Для того, щоб константи , типи, змінні, процедури та функції користувача були б доступні в різних програмах необхідно об’єднати в модуль:
init ім’я модуля;
{Заголовок модуля. Ім’я модуля повинно співпадати з іменем файлу з текстом модуля, і тому не повинно мати більше восьми символів}
interface
uses список модулів;
const список пар ім’я константи[тип константи, якщо вона типізована]=значення константи;
label список міток;
список заголовків процедур та функцій із формальними параметрами
var
список1 імен змінних:тип1;
список2 імен змінних:тип2;
. . . . . . . . . . . . . . .
{Інтерфейсна частина модуля. Константи , типи даних, змінні функції та процедури, які є описаними в інтерфейсні частині, а також модулі доступні зовнішнім програмам }
implementation
uses
список модулів;
const
список пар ім’я константи[тип константи, якщо вона
типізована]=значення константи;
label
список міток;
тіла процедур та функцій із інтерфейсної частини
внутрішні процедури та функції модуля
var
список1 імен змінних:тип1;
список2 імен змінних:тип2;
. . . . . . . . . . . . . . .
{реалізаційна частина модуля. Все, що тут описано є доступним всередині модуля і не доступно зовнішнім програмам}
begin
оператори
end.
{Ініціалізаційна частина модуля. <Оператори> ініціалізаційної частини в програмі виконуються першими, до операторів основної програми}
З процедур та функцій матричної алгебри та процедур введення/виведення матриць та векторів можна створити модуль matr_alg, текст якого записаний у файлі matr_alg.pas:
unit matr_alg;
interface
const
nmax=10;
type
size=1..nmax;
vector=array[size] of real;
matrix=array[size,size] of real;
procedure add_vector(x,y:vector;n:size;var z:vector);
procedure sub_vector(x,y:vector;n:size;var z:vector);
procedure mult_number_vector(p:real;x:vector;n:size;
