4pp t4

background image

PODST AWY PROGRAM OWANIA

Pliki tekstowe

1

Typ plikowy

Programy, które pisaliśmy do tej pory komunikowały się z otoczeniem poprzez klawiaturę, z której pobierały
dane od użytkownika, oraz monitor, na którym wyświetlały wyniki. Urządzenia te mają wspólną cechę –
nietrwałość informacji. Program nie może ponownie pobrać danych z monitora i ich przetworzyć. Do
przechowywania danych i wyników służy pamięć zewnętrzna. Program może zapisać dane na dysk, a inny
program może je odczytać. Do ustalenia pozostaje forma w jakiej dane mają być zapisane. Jedną z nich jest
zewnętrzny plik tekstowy. Do pliku tekstowego można dokładać znaki, wiersze, łańcuchy znaków. Z tego pliku
można odczytać znaki w takiej kolejności w jakiej zostały zapisane. Z każdym plikiem związany jest wskaźnik
pliku
, który wskazuje znak od którego rozpocznie się odczytywanie.

Szczególnym przypadkiem pliku tekstowego jest konsola, która służy do komunikacji z użytkownikiem poprzez
monitor i klawiaturę. Procedury

write

i

writeln

dopisują tekst do pliku konsoli i wypisują na monitorze.

Procedury

read

i

readln

wczytują tekst z klawiatury do konsoli i odczytują z konsoli.

Obsługa plików wymaga:

opisu zmiennej plikowej w części deklaracyjnej programu,

skojarzenia zmiennej plikowej z plikiem fizycznym,

otwarcia pliku (do zapisu lub do odczytu),

wykonania niezbędnych operacji (czytanie, zapis i inne),

zamknięcia pliku.

Zmienna plikowa

Pośrednikiem pomiędzy programem a plikiem na dysku jest zmienna plikowa. Dla pliku tekstowego zmienna ta
jest typu

text

(typ standardowy). Zmienna ta musi być zadeklarowana w części opisowej programu np.

Var nazwa_zm_plikowej : text;

Deklaracja nie mówi z którym plikiem na dysku związana jest zmienna plikowa. Zmienna ta jest uniwersalnym
pośrednikiem pomiędzy programem a jakimś plikiem tekstowym na dysku.

Kojarzenie zmiennej plikowej z plikiem zewnętrznym

Kojarzenie zmiennej plikowej z plikiem zewnętrznym odbywa się poprzez procedurę

assign

ASSIGN (nazwa_zm_plikowej, nazwa_pliku zewnętrznego)

Nazwa pliku zewnętrznego może być stałą tekstową ( podana w apostrofach) lub zmienną. Jeżeli plik znajduje
się w innym katalogu niż bieżący to jego nazwa powinna być poprzedzona ścieżką dostępu. To jest jedyne
miejsce w programie, gdzie występuje nazwa pliku zewnętrznego. Od tego momentu program będzie się
odwoływał do pliku poprzez zmienną plikową.

Otwieranie pliku

Do otwierania pliku służą procedury:

REWRITE(nazwa_zm_plikowej)

Procedura zakłada na dysku nowy plik skojarzony ze zmienną plikową do zapisu. Jeżeli plik o takiej nazwie już
istnieje to zostanie skasowany a na jego miejsce powstanie plik pusty. Po otwarciu za pomocą tej procedury plik
jest zawsze pusty.

APPEND (nazwa_zm_plikowej)

Procedura otwiera istniejący już plik skojarzony ze zmienna plikową do dopisywania na końcu pliku, za
wszystkim co w tym pliku było zapisane. Jeżeli plik na dysku nie istnieje, to wystąpi błąd.

RESET (nazwa zm_plikowej)

Procedura otwiera i istniejący już plik do odczytu. Tekst czytany jest w takiej kolejności w jakiej był
zapisywany.

background image

PODST AWY PROGRAM OWANIA

Pliki tekstowe

2

Zapisywanie

Zapisywanie do pliku odbywa się przy pomocy procedur :

WRITE (nazwa_zm_plikowej,wyrażenie tekstowe)

Procedura zapisuje tekst z wyrażenia tekstowego na końcu ostatniego wiersza, nie powoduje rozpoczęcia
nowego wiersza.

WRITELN ( nazwa_zm_plikowej,wyrażenie tekstowe)

Procedura zapisuje tekst z wyrażenia tekstowego na końcu ostatniego wiersza i rozpoczyna nowy wiersz.
W pliku tekstowym wszystko, nawet elementy liczbowe, zapisywane jest jako tekst. Przy zapisie procedurą

writeln

automatycznie dopisywany jest znacznik końca wiersza. Na końcu pliku dopisywany jest znacznik

końca pliku.

Odczytywanie z pliku

Do odczytywania z pliku służą procedury :

READ (nazwa_zm_plikowej, zmienna)

Procedura

read

zachowuje się różnie w zależności od tego jakiego typu jest zmienna, do której wczytuje

wartość. Dla zmiennej typu

char

po wczytaniu wskaźnik pliku przesuwa się do następnego znaku, a wczytany

znak jest przypisany zmiennej. Nie ma podziału na wiersze, znak końca wiersza zostanie wczytany jak każdy
inny znak. Dla zmiennej typu

string

read

przeczyta wszystkie znaki od aktualnego położenia wskaźnika do

ostatniego znaku w wierszu. Wskaźnik pliku zatrzyma się na pierwszym napotkanym znaku końca wiersza.
Kolejna procedura

read

ze zmienną typu

string

zwróci łańcuch pusty, bo wskaźnik pliku jest już na końcu

wiersza, a procedura

read

czyta do końca wiersza. Dla zmiennej typu liczbowego procedura

read

przestawia

wskaźnik pliku do pierwszej cyfry (pomija odstępy i znaki końca wiersza) i kończy wczytywanie po napotkaniu
odstępu lub końca wiersza. Jeżeli wczytany ciąg znaków nie da się zamienić na liczbę wystąpi błąd.

READLN (nazwa_zm_plikowej, zmienna)

Procedura czyta wszystko do znaku końca wiersza i przenosi wskaźnik pliku do nowego wiersza. Można ta
procedurą czytać szereg łańcuchów.

Procedury i funkcje wykorzystywane do obsługi plików

EOF(nazwa_ zm_plikowej)

Funkcja logiczna, która przyjmuje wartość TRUE, gdy wskaźnik pliku pokazuje na znak końca pliku

EOLN (nazwa_zm_plikowej)

Funkcja logiczna, która przyjmuje wartość TRUE, gdy wskaźnik pliku pokazuje na koniec wiersza.

Zamykanie pliku

CLOSE (nazwa_zmiennej_plikowej)

Procedura zamyka plik skojarzony ze zmienną plikową. Każdy plik otwarty w programie powinien być
zamknięty.

Ćwiczenie 1

Napisz program, który założy na dysku w bieżącym katalogu plik tekstowy o nazwie

kotek.txt

i zapisze do niego tekst :

Wszedl kotek na plotek
i mruga.

program p1;
var f : text;
begin

background image

PODST AWY PROGRAM OWANIA

Pliki tekstowe

3

assign(f, ’kotek.txt’);
rewrite(f);
writeln(f, ’Wszedl kotek na plotek’);
write(f,’ i ‘);
writeln(f, ’mruga’);
close(f);

end.

Sprawdź czy plik powstał na dysku i jaka jest jego zawartość.

Zmień tekst zapisywany do pliku, uruchom program jeszcze raz, sprawdź jaka jest teraz zawartość pliku

Zmodyfikuj program tak, aby plik

kotek.txt

powstał na dysku, w katalogu C:\TP (lub C:\BP).

Uwagi:

Procedura

rewrite

ustawia znacznik pliku na początku i od początku pliku zapisuje tekst.

Procedura ta zastosowana do pliku, który już istnieje, nowy tekst zapisuje od początku pliku zacierając

dotychczasową zawartość pliku.


Ćwiczenie 2

Napisz program, który na końcu pliku

kotek.txt

dopisze dowolny tekst wprowadzony z klawiatury

i wyświetli na ekranie cały plik

kotek.txt

dwoma sposobami: znak po znaku i całymi wierszami.

program p2;
var

f : text;

Tekst : string;
C

:char;

begin
{ dopisywanie do pliku}
assign (f,’kotek.txt’);
append(f);
writeln(‘podaj tekst’);
readln(tekst);
writeln(f,tekst);
close

(f);{ czytanie pliku całymi wierszami}

reset(f);
while not eof(f) do

begin
readln
(f , tekst);
writeln(tekst);
end;

close(f);
{ czytanie pliku znak po znaku}
reset(f);
while not eof(f) do

begin

while

not eoln(f) do

begin

read (f,c);
write(c);
end;

readln(f); {1}

writeln;

end;

close(f);

end.

Uwagi:

Instrukcja oznaczona {1} ma przeczytać znacznik końca linii zapisany przez instrukcję

writeln

i przywrócić funkcji

eoln

wartość False

Zastosuj powyższy program do wyświetlenia pliku

piesek.txt

. Jak zakończył się program?.

background image

PODST AWY PROGRAM OWANIA

Pliki tekstowe

4

Ćwiczenie 3

Napisz funkcję logiczną, która przyjmie wartość True, gdy uda się skojarzyć zmienną plikową z plikiem
fizycznym i otworzyć go do odczytu (

reset

). W przeciwnym razie funkcja przyjmuje wartość False.

function jest_plik_1(s:string):boolean;
var f:text;
begin
assign
(f,s);

{

$

I-} reset (f); {

$

I+}

if IOResult = 0 then

begin

close(f);

jest_plik_1 := true;

end

else jest_plik_1 := false;
end; {funkcji jest_plik_1}

Uwagi:

Jeżeli pliku nie ma to próba otwarcia go do odczytu procedurą

reset

powoduje błąd. Trzeba więc

przechwycić kontrolę nad tym błędem i sprawdzić czy wystąpił. Dyrektywa kompilatora $I- powoduje
wyłączenie , a dyrektywa $I+ włączenie sprawdzania poprawności wykonania instrukcji wejścia-wyjścia.
Jeżeli zawarta pomiędzy nimi procedura

reset

spowoduje błąd (bo plik nie będzie istniał), program nie

zakończy swojego działania komunikatem o błędzie, a kod błędu określi wartość funkcji

IOResult

.

IOResult

jest funkcją standardową modułu System, która podaje, w postaci liczby całkowitej typu Word,

status ostatnio wykonanej operacji wejścia wyjścia, pod warunkiem, że nie jest aktywna systemowa kontrola
warunków wejścia–wyjścia (może być wyłączona dyrektywą kompilatora $I-). Jeżeli podczas wykonywania
operacji wejścia-wyjścia nie wystąpił żaden błąd to wartością funkcji jest 0, w przeciwnym wypadku kod
błędu.

Sprawdź działanie tej funkcji w programie.


Ćwiczenie 4

Napisz procedurę, która wyświetla na ekranie zawartość dowolnego pliku tekstowego wierszami w następujący
sposób:

Przed każdym wierszem wyświetli numer kolejny wiersz.

Przerywa wyświetlanie po 5 wierszach i kontynuuje po naciśnięciu dowolnego klawisza.

Na końcu wyświetla napis „koniec pliku”.


Wyszukiwarka

Podobne podstrony:
4pp t4
T4 SEGMENTACJA RYNKU pokaz[1]
Mazowieckie Studia Humanistyczne r1998 t4 n1 s79 101
PODSTAWY ZARZĄDZANIA WYK T4
BADANIA MARKETINGOWE WYK T4
RACHUNKOWOŚĆ FINANSOWA ĆW T4
Mazowieckie Studia Humanistyczne r1998 t4 n2 s167 170
2008 T4 skrot
T4.BADANIA TEORETYCZNE, LICENCJAT
T4
Cykl lityczny T4 cz 3
138 SC DS300 R VW T4 A 01 XX
JuskowiakJakub T4
ZARZĄDZANIE KAPITAŁEM I RYNKI FINANSOWE WYK T4
BEZPIECZEŃSTWO PUBLICZNE WYK T4
T4 ROZKŁAD GRANICZNY KOLMOGOROWA
T4, POLITECHNIKA WARSZAWSKA
T4 PŁACE I WYNAGRODZENIA W KOP

więcej podobnych podstron