Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek Często chcemy przechowywać dane i mieć do nich dostęp po ponownym uruchomieniu programu.

Download Report

Transcript Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek Często chcemy przechowywać dane i mieć do nich dostęp po ponownym uruchomieniu programu.

Pliki tekstowe. Operacje na plikach.
mgr inż. Agata Pacek
Często chcemy przechowywać dane i mieć do
nich dostęp po ponownym uruchomieniu
programu. W tym celu stosujemy pamięci
masowe. Dane zapisujemy w plikach.
Język Pascal pozwala na korzystanie z plików
tekstowych i plików binarnych, wśród których
występują pliki zdefiniowane i
niezdefiniowane (amorficzne).

Skojarzenie zmiennej z plikiem
var nazwa_zmiennej:text;
assign(nazwa_zmiennej,’d:\plik.txt’);
Plik, w chwili kojarzenia ze zmienną, nie jest
otwierany ani nie są wykonywane na nim
żadne operacje; może nawet nie istnieć.

Otwarcie pliku
Wykonując operację zapisu do pliku możemy usunąć
jego zawartość albo stworzyć plik, jeśli nie istnieje.
rewrite(nazwa_zmiennej);
Aby wykonać operacje dopisania tekstu do
istniejącego pliku używamy instrukcji:
append(nazwa_zmiennej);

Odczyt, zapis, zmiana danych w pliku
Podczas operacji odczytu i zapisu w plikach
tekstowych posługujemy się liniami tekstu.
writeln(nazwa_zmiennej, ‘linijka tekstu’);

Zamknięcie pliku
close(nazwa_zmiennej);

Program zapisujący tekst do pliku.
program operacjaplik;
var Plik : Text;
begin
assign(Plik,'d:\tp\test.txt');
rewrite(Plik);
writeln(Plik,'Test zapisu do pliku') ;
close(Plik);
end.

Sprawdzanie czy plik już istnieje na dysku.
fsearch – należy do modułu dos, konieczne jest
poinformowanie o tym kompilator w sekcji
poświęconej deklarowaniu modułów uses.
fsearch(‘d:\test.txt’,’’);
program operacjaplik;
uses dos;
var
wers : string;
Plik : Text;
begin
if fsearch('d:\tp\test.txt','')='' then
begin
writeln('NIE MA TAKIEGO PLIKU');
readln;
end
else
begin
assign(Plik,'d:\tp\test.txt');
reset(Plik);
readln(Plik,wers);
{ODCZYTUJE DANE Z PLIKU I ZAPISUJE POD ZMIENNĄ WERS TYPU STRING}
close(Plik);
writeln(wers);
end;
readln;
end.

Odczytywanie zawartości pliku do momentu
napotkania wskaźnika końca pliku. Służy do
tego instrukcja eof zwracająca wartość true,
jeśli napotka na wskaźnik końca pliku.
UWAGA!!
Upewnij się, że plik test.txt zawiera kilka linijek
tekstu. Jeśli nie dopisz je.

program odczyt;
var
Plik : Text;
wers: String;
begin
assign(Plik,'d:\tp\test.txt');
reset(Plik);
repeat
readln(plik,wers);
writeln(wers);
until eof(Plik);
close(Plik);
readln;
end.

Pliki elementarne – pliki binarne
◦ Pliki elementarne zdefiniowane
type
nazwa_typu_pliku=file of nazwa_typu_zawartości_pliku;

Program zapisujący w pliku binarnym zdefiniowanym cyfry od 1 do 100.
program plik_zdef;
type zdefiniowany = file of integer;
var
plik :zdefiniowany;
x:integer;
begin
assign(plik,'d:\tp\test.dat');
rewrite(plik);
for x:=1 to 100 do
begin
write(plik,x);
end;
close(plik);
readln;
end.

Program odczytujący zawartość pliku binarnego zdefiniowanego
program plik_zdef;
type zdefiniowany = file of integer;
var
plik :zdefiniowany;
x,a:integer;
begin
assign(plik,'d:\tp\test.dat');
reset(plik);
for x:=1 to 100 do
begin
read(plik,a);
write(' ',a);
end;
close(plik);
readln;
end.


Napisz program zapisujący w pliku binarnym
zdefiniowanym 30 liczb wylosowanych z
przedziału od 0 do 100.
Napisz program, który odczyta liczby z pliku i
zapisze je w tablicy jednowymiarowej.
program plik_zdef;
type zdefiniowany = file of integer;
var
plik :zdefiniowany;
x,losowo:integer;
begin
randomize;
assign(plik,'d:\tp\test.dat');
rewrite(plik);
for x:=1 to 100 do
begin
losowo:=random(100);
write(plik,losowo);
end;
close(plik);
readln;
end.
program plik_zdef;
type zdefiniowany = file of integer;
var
plik :zdefiniowany;
x,a:integer;
wektor:array[1..100]of integer;
begin
assign(plik,'d:\tp\test.dat');
reset(plik);
for x:=1 to 100 do
begin
read(plik,wektor[x]);
write(' ',wektor[x]);
end;
 close(plik);
readln;
end.

Powtórzyć następujące zagadnienia:
◦ Podprogramy
 Funkcje
 Procedury
 Moduły
◦ Tablice
 Jednowymiarowe
 Dwuwymiarowej