180 likes | 363 Views
Programowanie strukturalne i obiektowe. Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek. Pliki tekstowe. Operacje na plikach. 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.
E N D
Programowanie strukturalne i obiektowe Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek
Pliki tekstowe. Operacje na plikach. 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).
Pliki tekstowe • 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ć.
Pliki tekstowe • 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);
Pliki tekstowe • 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);
Pliki tekstowe • 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.
Pliki tekstowe • 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’,’’);
Pliki tekstowe programoperacjaplik; usesdos; varwers : string;Plik : Text; beginif fsearch('d:\tp\test.txt','')='' thenbeginwriteln('NIE MA TAKIEGO PLIKU');readln;endelsebegin 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.
Pliki tekstowe • 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.
Pliki tekstowe program odczyt; var Plik : Text; wers: String; beginassign(Plik,'d:\tp\test.txt');reset(Plik);repeatreadln(plik,wers);writeln(wers);until eof(Plik);close(Plik);readln; end.
Pliki elementarne • Pliki elementarne – pliki binarne • Pliki elementarne zdefiniowane type nazwa_typu_pliku=file of nazwa_typu_zawartości_pliku;
Pliki elementarne • Program zapisujący w pliku binarnym zdefiniowanym cyfry od 1 do 100. programplik_zdef; typezdefiniowany = file of integer; varplik :zdefiniowany;x:integer; beginassign(plik,'d:\tp\test.dat');rewrite(plik);for x:=1 to 100 do begin write(plik,x);end; close(plik);readln; end.
Pliki elementarne • Program odczytujący zawartość pliku binarnego zdefiniowanego programplik_zdef;typezdefiniowany = file of integer;varplik :zdefiniowany;x,a:integer; beginassign(plik,'d:\tp\test.dat');reset(plik);for x:=1 to 100 do beginread(plik,a);write(' ',a);end; close(plik);readln; end.
Pliki elementarne • 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.
Pliki elementarne programplik_zdef;typezdefiniowany = file of integer;varplik :zdefiniowany;x,losowo:integer; beginrandomize;assign(plik,'d:\tp\test.dat');rewrite(plik);for x:=1 to 100 dobeginlosowo:=random(100); write(plik,losowo); end;close(plik);readln; end.
Pliki elementarne programplik_zdef;typezdefiniowany = file of integer;varplik :zdefiniowany;x,a:integer;wektor:array[1..100]of integer; beginassign(plik,'d:\tp\test.dat');reset(plik);for x:=1 to 100 dobegin read(plik,wektor[x]); write(' ',wektor[x]);end; • close(plik);readln; end.
Praca domowa • Powtórzyć następujące zagadnienia: • Podprogramy • Funkcje • Procedury • Moduły • Tablice • Jednowymiarowe • Dwuwymiarowej