Слайд 2 Дані у типованих файлах, описаних раніше, певним чином закодовані і
тому не можуть бути відредаговані, або переглянуті за допомогою звичайного
текстового редактора. Тому окрім типованих у мові Паскаль використовують також текстові файли , які не мають такого недоліку.
Текстовий файл являє собою сукупність символів, розділених на стрічки, причому в кінці кожної стрічки стоїть покажчик кінця стрічки
Слайд 3Процедури
Крім процедур Read і Write з якими ми вже познайомились
є ще такі процедури:
Readln(F) – читання стрічки з файлу, теж
саме що і процедура Read, але непрочитана частина стрічки, включаючи ознаку кінця стрічки, пропускається.
Writeln(F) – запис стрічки в файл, теж саме що і процедура Write, але інформація що виводиться завершується ознакою кінця стрічки.
Append(F) – відкриття файлу для того, щоб добавити в кінець інформацію. Відкривається існуючий файл з яким пов’язана файлова змінна F і вказівник компоненти файлу переміщується на кінець файлу.
Слайд 4Функції
Eoln(F) – кінець стрічки файлу. Приймає значення True, якщо вказівник
компоненти файлу стоїть на ознаці кінця стрічки або якщо функція
Eof(F) приймає значення True. В інших випадках функція приймає значення False.
SeekEof(F) – кінець файлу. Відрізняється від Eof(F) тим, що символи пробілу і табуляції які стоять в кінці файлу пропускаються.
SeekEoln(F) – кінець стрічки файлу. Відрізняється від Eoln(F) тим, що символи пробілу і табуляції які стоять в кінці стрічки пропускаються.
Слайд 5 Наведемо приклад програми для роботи з текстовими файлами. Візьмемо теж
саме завдання що і для типізованих файлів. Так наочніше буде
видно різницю в роботі з цими двома типами файлів.
Нехай потрібно створити масив даних студентів першого курсу: прізвище, ім’я, група, домашня адреса. Цей масив записати в текстовий файл, виконати читання із файлу в новий масив і вивести дані студентів на задану літеру.
Програма що вирішує дане завдання наведена нижче.
Слайд 6Program Text_File;
Uses crt;
Type Student=record
Prizw:string[20];
Imja:string[20];
Grupa:string[8];
Adresa:record
Misto:string[20];
Vulycja:string[20];
Budynok:String[8];
Kvartura:word;
end;
end;
Слайд 7Const n=150;
Var A,A2:array [1..n] of Student;
f:Text;
i,j,m:byte;
S:string[1];
Begin
Assign(f,'Studentu.txt');
rewrite(f);
Слайд 8For i:=1 to n do
with a[i] do
begin
Writeln('Wwedit Prizwusche',i:3,' Studenta');
readln(Prizw);
Writeln('Wwedit Imja');
readln(Imja);
Writeln('Wwedit Grupu');
readln(Grupa);
write(f,Prizw:20,Imja:20,Grupa:8);
Слайд 9With Adresa do
begin
Writeln('Wwedit Misto');
readln(Misto);
Writeln('Wwedit Vulycju'); readln(Vulycja);
Writeln('Wwedit
Budynok');
readln(Budynok);
Writeln('Wwedit Kvarturu');
readln(Kvartura);
Writeln(f,Misto:20,Vulycja:20,Budynok:8,
Kvartura:4);
end;
end;
Слайд 10close(f);
reset(f); i:=0;
While not Eof(f) do
begin
i:=i+1;
with a2[i] do
Begin
read(f,Prizw,Imja,Grupa);
With Adresa do readln(f,Misto,Vulycja,Budynok,Kvartura);
end;
end;
Слайд 11m:=i;
close(f);
repeat
clrscr;
Writeln('Wwedit na jaku literu wykonuem poshuk');
readln(S);
Writeln('----Studentu na literu ',S:1,'----');
Слайд 12For i:=1 to m do
with a2[i] do begin
j:=1;
while Prizw[j]=' ' do
j:=j+1;
If Prizw[j]=S then
begin
Writeln(Prizw,', ',Imja,', Grupa: ',Grupa);
With Adresa do
Writeln('Adresa: ',Misto,', ',Vulycja,', ', Budynok,'/',Kvartura);
Writeln('----------------------------------------------');
end;
end;
Слайд 13Writeln('Dlja nowogo poshuku natusnit Y, dla wuhodu N');
readln(s);
until (s='N')
or (s='n');
end.