PP1 wyklad 10

background image

Podstawy Programowania

Wyk ad dziesi ty:

ł

ą

Pliki

background image

1. Pliki – podstawowe wiadomo ci

ś


Je li dane, które przetwarza lub produkuje program komputerowy maj by

ś

ą

ć

dost pne po zako czeniu jego pracy, to musz one zosta przechowane

ę

ń

ą

ć

w pami ci masowej komputera. Pami

tego typu jest urz dzeniem

ę

ęć

ą

pozwalaj cym zachowa zapisane w niej informacje w sposób trwa y. Takimi

ą

ć

ł

urz dzeniami s np.: dyski twarde, p yty CD, DVD i pami ci typu Flash. Ka de

ą

ą

ł

ę

ż

z tych urz dze przechowuje dane w inny sposób. Aby ujednolici sposób

ą

ń

ć

korzystania ze zgromadzonych na nich informacji wprowadzono specjalną
struktur danych nazywan plikiem. Pliki gwarantuj ten sam sposób

ę

ą

ą

korzystania z informacji niezale nie od tego, czy znajduj si one na dysku

ż

ą

ę

twardym, w pami ci operacyjnej, czy innym no niku. W przypadku wi kszo ci

ę

ś

ę

ś

wspó czesnych systemów komputerowych urz dzenia zewn trzne, takie jak

ł

ą

ę

klawiatura, ekran, dysk twardy, nap d CD, drukarki s „widziane” przez

ę

ą

programy komputerowe w a nie jako pliki. J zyk Pascal pozwala korzysta

ł ś

ę

ć

z trzech rodzajów plików: plików tekstowych, plików binarnych zdefiniowanych

1

i plików binarnych niezdefiniowanych (amorficznych). Pliki, niezale nie do

ż

którego rodzaju nale

, sk adaj si zawsze z pewnych elementów.

żą

ł

ą

ę

W przypadku plików tekstowych tymi elementami s wiersze, czyli ci gi znaków

ą

ą

zako czone znakami ko ca wiersza (w przypadku Turbo Pascala s to znaki

ń

ń

ą

#13#10). Wynika st d, e wiersze te mog mie ró ny rozmiar. Elementami

ą

ż

ą

ć

ż

plików binarnych zdefiniowanych s warto ci okre lonego przez nas typu. Mog

ą

ś

ś

ą

to by warto ci typu

ć

ś

byte, integer, real

, a nawet typu rekordowego. W plikach

amorficznych (binarnych niezdefiniowanych) warto ci, które s przechowywane

ś

ą

nie maj okre lonego typu. Ca y plik jest podzielony na porcje o ustalonej

ą

ś

ł

wielko ci, zwane blokami. Dla wszystkich typów plików mo emy stosowa

ś

ż

ć

dost p sekwencyjny, tzn. taki, w którym aby przeczyta lub zapisa element

ę

ć

ć

znajduj cy si w dowolnym miejscu pliku musimy przeczyta wszystkie

ą

ę

ć

elementy znajduj ce si przed nim. W przypadku plików binarnych mo emy

ą

ę

ż

mie równie swobodny dost p do elementów plików

ć

ż

ę

2

. Pliki binarne mo emy

ż

zatem potraktowa jako tablice, których rozmiar jest zmienny.

ć

2. Typy plików

W Turbo Pascalu jedynym typem plików, który powinni my zdefiniowa jest typ

ś

ć

pliku binarnego zdefiniowanego. Typ pliku binarnego zdefiniowanego okre lamy

ś

w sekcji type programu lub podprogramu wed ug wzorca:

ł

nazwa_typu_pliku = file of nazwa_typu_elementu_pliku;

1 Nazywanych krótko plikami binarnymi.
2 Tzn. mo emy wskaza dowolny element, który chcemy przeczyta / zmodyfikowa , bez

ż

ć

ć

ć

konieczno ci przegl dania elementów je poprzedzaj cych.

ś

ą

ą

2

background image

Przyk adowo, plik binarny, którego elementy by yby typu

ł

ł

integer

mia by na

ł

-

st puj c definicj typu:

ę

ą ą

ę

Pliki amorficzne, jak równie tekstowe maj ju zdefiniowane typy, które s

ż

ą

ż

ą

cz

ci j zyka i nie musimy im nadawa nowej nazwy (cho istnieje taka mo li

ęś ą ę

ć

ć

ż -

wo

). Typem pliku binarnego niezdefiniowanego jest po prostu

ść

file

, a typem

pliku tekstowego jest text.

3. Zmienne plikowe

Podobnie jak zmienne innych typów zmienne plikowe mo emy deklarowa

ż

ć

w sekcji var programu lub podprogramu. W przypadku plików binarnych
zdefiniowanych nale y wcze niej zdefiniowa typ takiej zmiennej wed ug za

ż

ś

ć

ł

-

mieszczonego wy ej wzorca, gdy zmiennych plikowych tego rodzaju o ano

ż

ż

-

nimowych typach nie b dziemy mogli przekaza przez parametr. Nie wymagaj

ę

ć

ą

tego zmienne plikowe zwi zane z plikami tekstowymi lub amorficznymi. Nie

ą

mo emy deklarowa zmiennych plikowych zainicjalizowanych. Jedynym spo

ż

ć

-

sobem, w jaki mo emy przekaza zmienn plikow do procedury lub funkcji za

ż

ć

ą

ą

pomoc parametru jest przekazanie przez zmienn (adres).

ą

ą

4. Operacje na plikach


Zanim b dziemy mogli zapisa lub odczyta informacje z pliku musimy wy

ę

ć

ć

-

kona dodatkowe czynno ci. Schemat korzystania z pliku mo e by przedsta

ć

ś

ż

ć

-

wiony nast puj co:

ę

ą

1. skojarzenie zmiennej z plikiem,

2. otwarcie pliku,

3. przetwarzanie informacji zawartych w pliku,

4. zamkni cie pliku.

ę

Nale y zaznaczy , e przy wykonywaniu prawie ka dej z tych operacji mog

ż

ć ż

ż

ą

pojawi si wyj tki

ć

ę

ą

3

, które nale y obs u y . Powy sze operacje s realizowane

ż

ł ż ć

ż

ą

za pomoc ró nych funkcji i procedur. Nazwy tych podprogramów mog si

ą

ż

ą

ę

3 Inaczej nazywane b dami, cho nie jest to nazwa w pe ni adekwatna.

łę

ć

ł

3

type

plik = file of integer;

background image

ró ni w zale no ci od typu pliku, na którym zostan u yte. Zosta y one

ż ć

ż

ś

ą

ż

ł

zebrane w tabelk :

ę

Nazwa operacji

Typ pliku

Skojarzenie

Otwarcie

Odczyt

Zapis

Zamkni cie

ę

Plik tekstowy

assign

rewrite

reset

append

read

readln

write

writeln

close

Plik binarny

assign

rewrite

reset

read

write

close

Plik amorficzny

assign

rewrite

reset

blockread

blockwrite

close


Procedura assign dzia a w ten sam sposób dla wszystkich typów plików. Wi

e

ł

ąż

ona zmienn plikow z nazw pliku. Pierwszym parametrem jej wywo ania jest

ą

ą

ą

ł

nazwa zmiennej plikowej, a drugim ci g znaków b d cy nazw pliku. W Turbo

ą

ę ą

ą

Pascalu

4

nazwa pliku sk ada si maksymalnie z jedenastu liter lub cyfr.

ł

ę

Pierwszych osiem liter jest nazw w a ciw , a trzy ostatnie stanowi tak zwane

ą

ł ś

ą

ą

rozszerzenie, które okre la zawarto

pliku. Obie te cz

ci nazwy pliku s

ś

ść

ęś

ą

rozdzielone kropk . Istniej te pliki o specjalnych nazwach, które zwi zane s

ą

ą

ż

ą

ą

z urz dzeniami. Takimi plikami s

ą

ą LPR1 lub PTR zwi zane z drukark ,

ą

ą CON

zwi zany z konsol (klawiatura + ekran monitora),

ą

ą

COM1

zwi zany z portem

ą

szeregowym. Po skojarzeniu zmiennej plikowej z plikiem mo emy go otworzy .

ż

ć

W tym wypadku zachowanie poszczególnych procedur otwieraj cych ró ni si

ą

ż

ę

w zale no ci od typu otwieranego pliku. Dla plików tekstowych procedura

ż

ś

rewrite

tworzy nowy plik, który mo na wy cznie zapisywa . Procedura

ż

łą

ć

reset

otwiera istniej cy plik w trybie tylko do odczytu, natomiast procedura

ą

append

otwiera istniej cy plik w trybie do dopisywania, co oznacza, e nowe informacje

ą

ż

b d w tym pliku zapisywane za ju istniej cymi. Wszystkie te procedury, jako

ę ą

ż

ą

parametr wywo ania przyjmuj zmienn plikow skojarzon z plikiem, który

ł

ą

ą

ą

ą

ma zosta otwarty. W przypadku plików binarnych zdefiniowanych procedura

ć

rewrite

5

tworzy nowy plik, natomiast procedura reset otwiera plik, który już

istnieje. W obu przypadkach mo liwe jest odczytywanie i zapisywanie do pliku.

ż

Podobnie, jak poprzednio jedynym parametrem wywo ania tych procedur s

ł

ą

zmienne plikowe, na których operacja ma zosta wykonana. W przypadku

ć

plików amorficznych, procedury rewrite i reset maj takie samo dzia anie, jak

ą

ł

dla plików binarnych zdefiniowanych, ale mog przyjmowa dodatkowy

ą

ć

parametr wywo ania, b d cy liczb okre laj c wielko

(w bajtach) bloku, jaki

ł

ę ą

ą

ś

ą ą

ść

4 Dok adniej w systemie DOS, dla którego kompilator Turbo Pascala jest przeznaczony.

ł

5 Je li procedura

ś

rewrite

zostanie u yta dla istniej cego pliku, to skasuje jego zawarto

,

ż

ą

ść

niezale nie od jego typu.

ż

4

background image

mo na jednorazowo zapisa lub odczyta z takiego pliku. Je li sami nie

ż

ć

ć

ś

okre limy rozmiaru bloku, to zostanie przyj ty rozmiar domy lny równy 128

ś

ę

ś

bajtów. Do odczytu plików tekstowych mo emy zastosowa znane ju nam

ż

ć

ż

procedury read i readln. Domy lnie te procedury zwi zane s z plikiem

ś

ą

ą

o nazwie Input, czyli po prostu z klawiaturą

6

. Je li jednak jako pierwszy

ś

parametr ich wywo ania podamy nazw zmiennej plikowej, to odczyt zamiast

ł

ę

z klawiatury b dzie odbywa si z pliku. Po nazwie zmiennej plikowej wyst puje

ę

ł

ę

ę

lista sk adaj ca si co najmniej z jednej zmiennej do której b d wczytane

ł

ą

ę

ę ą

informacje z pliku. Ró nica mi dzy

ż

ę

readln

i read polega na tym, e pierwsza

ż

odczytuje ca y wiersz znaków, zako czony znakami ko ca wiersza, natomiast

ł

ń

ń

druga czyta tyle informacji, ile wynika z liczby i typu zmiennych do których one
b d zapisywane. W przypadku plików binarnych zdefiniowanych odczyt

ę ą

mo liwy jest wy cznie za pomoc procedury

ż

łą

ą

read

. Pierwszym parametrem

wywo ania tej procedury jest zmienna plikowa, natomiast nast pnymi zmienne

ł

ę

(w liczbie co najmniej jeden), do których informacje b d zapisane. Typy tych

ę ą

zmiennych musz by takie same lub zgodne z typem elementów pliku.

ą

ć

W przypadku plików amorficznych odczyt jest mo liwy tylko za po rednictwem

ż

ś

procedury blockread. Ta procedura mo e przyjmowa trzy lub cztery parametry

ż

ć

wywo ania. Pierwszym jest zmienna plikowa, drugim zmienna do której ma

ł

zosta zapisana informacja, a trzecim zmienna, warto

lub wyra anie typu

ć

ść

ż

word

, okre laj ce ile bloków chcemy z pliku odczyta . Czwarty parametr

ś

ą

ć

wywo ania jest opcjonalny i jest nim zmienna typu

ł

word

, w której jest

zapisywana liczba faktycznie przeczytanych bloków. Je li nie umie cimy tego

ś

ś

argumentu na li cie parametrów wywo ania procedury

ś

ł

blockread

, to

w przypadku, kiedy zostanie odczytana mniejsza ni chcieli my liczba bloków

ż

ś

z pliku program zako czy si natychmiast sygnalizuj c b d wykonania. Je li

ń

ę

ą

łą

ś

przeka emy czwarty parametr, to mo emy obs u y ten wyj tek. Zapis do pliku

ż

ż

ł ż ć

ą

równie odbywa si w ró ny sposób, w zale no ci od rodzaju pliku. Do plików

ż

ę

ż

ż

ś

tekstowych mo emy zapisywa informacje za pomoc

ż

ć

ą write i writeln. Podobnie

jak w przypadku procedury read i readln domy lnie s one skojarzone

ś

ą

z plikiem Output, czyli ekranem monitora

7

. Je li jako pierwszy parametr

ś

wywo ania tej procedury umie cimy zmienn plikow , to zapis informacji

ł

ś

ą

ą

nast pi do pliku z ni zwi zanego. Za tym parametrem, mog wyst powa inne

ą

ą

ą

ą

ę

ć

b d ce zmiennymi, wyra eniami lub wprost - warto ciami, które maj zosta

ę ą

ż

ś

ą

ć

zapisane do pliku. Procedura writeln zapisuje do pliku wiersze zako czone

ń

znakami ko ca wiersza. Natomiast procedura

ń

write

nie umieszcza w pliku tych

znaków samodzielnie. Do zapisu plików binarnych zdefiniowanych u ywana

ż

jest wy cznie procedura

łą

write

. Sposób wywo ania tej procedury jest taki sam,

ł

jak w przypadku plików tekstowych. Pliki amorficzne mog by zapisywane

ą

ć

6 Plik skojarzony z klawiatur nazywany jest równie standardowym wej ciem.

ą

ż

ś

7 Plik ten nazywany jest równie standardowym wyj ciem.

ż

ś

5

background image

przy pomocy procedury blockwrite. Jej parametry wywo ania s takie same, jak

ł

ą

w przypadku procedury blockread, z tym e odnosz si one do zapisu, a nie

ż

ą

ę

odczytu. Operacja zamykania pliku jest przeprowadzana w ten sam sposób dla
wszystkich rodzajów plików – przy pomocy procedury close. Jedynym
parametrem wywo ania tej procedury jest zmienna plikowa.

ł

5. Inne operacje zwi zane z plikami

ą

W j zyku Pascal zdefiniowano szereg procedur i funkcji, które wykonuj inne

ę

ą

pomocne operacje na plikach, ni te, które opisano wy ej. Oto niektóre

ż

ż

z nich wraz, z krótkim opisem:



funkcja eof zwraca warto

ść true, je li zosta osi gni ty koniec pliku.

ś

ł

ą

ę

Dzia a dla wszystkich typów plików. Jej parametrem wywo ania jest

ł

ł

nazwa zmiennej plikowej, je li zostanie ona pomini ta, to wywo anie to

ś

ę

ł

b dzie si odnosi o do standardowego wej cia,

ę

ę

ł

ś



funkcja seekeof dzia a podobnie, ale tylko dla plików tekstowych

ł

i ignoruje znaki bia e (spacja, powrót karetki, itp.),

ł



funkcja eoln dzia a jedynie dla plików tekstowych i zwraca

ł

true

, je li

ś

zosta osi gni ty koniec wiersza,

ł

ą

ę



funkcja seekeoln dzia a podobnie, ale ignoruje znaki spacji i tabulacji,

ł

jest przeznaczona wy cznie dla plików tekstowych,

łą



funkcja filesize zwraca liczb elementów pliku binarnego lub liczb

ę

ę

bloków pliku amorficznego,



funkcja filepos dzia a dla plików binarnych i amorficznych, zwraca

ł

warto

typu

ść

longint

, która oznacza pozycj wska nika pliku,

ę

ź



procedura seek ustawia pozycj wska nika pliku

ę

ź

8

. Pierwszym

argumentem jej wywo ania jest nazwa zmiennej plikowej, drugim warto

ł

ść

nowej pozycji wska nika pliku. Warto

ta jest typu

ź

ść

longint

. Procedura

seek

jest przeznaczona dla plików binarnych i amorficznych,



procedura truncate „ucina” plik pocz wszy od bie

cej pozycji wska nika

ą

żą

ź

pliku, dzia a dla plików binarnych i amorficznych,

ł

8 O wska niku pliku mo emy my le jak o indeksie tablicy. Jest on przesuwany automatycznie

ź

ż

ś ć

po wykonaniu ka dego odczytu lub zapisu zawarto ci pliku.

ż

ś

6

background image



funkcja ioresult zwraca kod wykonania operacji na pliku, je li operacja

ś

przebieg a prawid owo, to kod ten jest równy zero, w przeciwnym

ł

ł

przypadku jest to warto

ró na od zera, aby ta funkcja dzia a a

ść

ż

ł ł

prawid owo nale y wy czy dyrektyw

ł

ż

łą

ć

ę $I kompilatora.

Opisana wcze niej funkcja

ś

eof

jest dosy cz sto stosowana, kiedy

ć

ę

konstruujemy p tl , w której umieszczamy instrukcje odczytuj ce z pliku. Je li

ę ę

ą

ś

jest to p tla

ę

while

, to warunek w tej p tli ma posta :

ę

ć not eof(zp), natomiast je li

ś

jest to p tla

ę

repeat ... until

, to warunkiem zako czenia jest

ń

eof(zp)

.

W przypadku plików binarnych i amorficznych mo liwe jest u ycie do odczytu

ż

ż

p tli

ę

for

. Poni ej znajduj si przyk ady programów operuj cych na

ż

ą

ę

ł

ą

odpowiednio: plikach tekstowych, binarnych i amorficznych.

7

program pliki_tekstowe;

uses crt;

var T:text;

procedure zapisz(var F:text);

{Zapisuje do pliku tekstowego 10 wierszy pobranych od u ytkownika.}

ż

var

a:string[80];

i:byte;

begin

rewrite(F);

for i:=1 to 10 do

begin

readln(a);

writeln(F,a);

end;

close(f);

end;

procedure odczytaj(var F:text);

{Odczytuje z pliku tekstowego 10 wierszy.}

var

background image

Zmienna plikowa, typu text jest kojarzona z plikiem o nazwie dane.txt w bloku
g ównym programu. Plik ten tworzony jest w procedurze

ł

zapisz

, w wyniku

wywo ania procedury

ł

rewrite

. W tej te procedurze do pliku zapisywanych jest

ż

dziesi

wierszy (p tla

ęć

ę

for

) zawieraj cych ci gi znaków podane przez

ą

ą

u ytkownika (o wielko ci maksymalnie 80 znaków). Procedura

ż

ś

odczyt

odczytuje

te dane z tego samego pliku. Odczytanie i wy wietlenie na ekran odbywa si

ś

ę

wewn trz p tli

ą

ę

repeat

. W obydwu procedurach ostatni wykonywan instrukcj

ą

ą

ą

jest zamkni cie pliku.

ę

8

a:string[80];

begin

reset(F);

repeat

readln(f,a);

writeln(a);

until eof(f);

close(f);

end;

begin

clrscr;

assign(T,'dane.txt');

zapisz(T);

clrscr;

odczytaj(T);

readln;

end.

program plik_binarny;

uses

crt;

type

rec = record

x,y:integer;

end;

pl_rec = file of rec;

background image

9

var

plik:pl_rec;

procedure zapisz(var f:pl_rec);

var

r:rec;

i:byte;

begin

{$I-}rewrite(f);{$I+}

if ioresult <> 0 then exit;

for i:=1 to 5 do

begin

with r do

begin

writeln('Podaj x');

readln(x);

writeln('Podaj y');

readln(y);

end;

write(f,r);

end;

close(f);

end;

procedure append_bin(var f:pl_rec);

begin

{$I-}reset(f);{$I+}

if ioresult <> 0 then halt(1);

seek(f,filesize(f));

end;

background image

10

procedure dopisz(var f:pl_rec);

var

r:rec;

begin

writeln('Podaj x');

readln(r.x);

writeln('Podaj y');

readln(r.y);

append_bin(f);

write(f,r);

close(f);

end;

procedure wypisz(var f:pl_rec);

var

r:rec;

begin

{$I-}reset(f);{$I+}

if IOResult <> 0 then exit;

while not eof(f) do

begin

read(f,r);

write(r.x,' ');

write(r.y);

writeln;

end;

close(f);

end;

begin

clrscr;

assign(plik,'dane.dat');

zapisz(plik);

writeln('Naci nij Enter.');

ś

readln;

background image

Powy szy program przetwarza informacje zawarte w pliku binarnym

ż

zdefiniowanym, którego elementami s rekordy. Taki rodzaj pliku nazywa si

ą

ę

krótko plikiem rekordowym. Ka dy rekord zawiera dwa pola

ż

x

i y, które

przechowuj liczby ca kowite. Zadaniem programu jest utworzenie pliku

ą

ł

o nazwie dane.dat, zapisanie do niego pi ciu rekordów zawieraj cych dane

ę

ą

pobrane od u ytkownika, zamkni cie go, nast pnie ponowne otwarcie,

ż

ę

ę

dopisanie jednego rekordu na ko cu tego pliku i wypisanie zawarto ci

ń

ś

wszystkich rekordów z pliku na ekran. Warto zwróci uwag na definicj pliku

ć

ę

ę

rekordowego, jak równie na procedur

ż

ę append_bin. Poniewa procedura

ż

append

dzia a tylko dla plików tekstowych, w programie zosta a zdefiniowana

ł

ł

osobna procedura dla plików binarnych zdefiniowanych. Otwiera ona taki plik
przy pomocy reset i ustawia jego wska nik za pomoc procedury

ź

ą

seek

za

ostatnim elementem pliku. Jego po o enie jest ustalane za pomoc funkcji

ł ż

ą

filesize

– elementy pliku s numerowane od zera, wi c pozycja ostatniego

ą

ę

elementu ma warto

równ liczbie elementów w pliku minus jeden. Warto

ść

ą

równie zauwa y , e wyj tki jakie mog spowodowa procedury otwierania

ż

ż ć ż

ą

ą

ć

plików s obs ugiwane za pomoc funkcji

ą

ł

ą

ioresult

. Aby nie by y one

ł

obs ugiwane domy lnie przez kompilator nale y wy czy przed wykonaniem

ł

ś

ż

łą

ć

danej operacji na pliku dyrektyw

ę $I kompilatora ({$I-}), a nast pnie w czy j

ę

łą

ć ą

po wykonaniu tej operacji ({$I+}). Podobnie mo na obs ugiwa wyj tki

ż

ł

ć

ą

pochodz ce od innych operacji na pliku, ale w ich przypadku w programie

ą

zosta a zostawiona obs uga domy lna. Funkcja

ł

ł

ś

ioresult

mo e odczyta kod

ż

ć

b du tych operacji tylko przy wy czonej dyrektywie

łę

łą

$I

.

11

clrscr;

wypisz(plik);

writeln('Naci nij Enter.');

ś

readln;

clrscr;

dopisz(plik);

wirteln('Naci nij Enter.');

ś

readln;

wypisz(plik);

writeln('Naci nij Enter.');

ś

readln;

end.

background image

12

program plik_amorficzny_i_tablica;

uses

crt;

type

tablica_losowa = array [1..1000] of word;

var

tl:tablica_losowa;

pl:file;

procedure wypelnij_i_zapisz(var F:file; var x:tablica_losowa);

{Wype nia i zapisuje do pliku amorficznego tablic 1000 elementów typu word.}

ł

ę

var

l,i:word;

begin

randomize;

for i:=1 to 1000 do x[i] := random(100);

for i:=1 to 1000 do write(x[i]:4);

{$I-}rewrite(F,sizeof(x));{$I+}

if IOResult <> 0 then exit;

blockwrite(F,x,1,l);

if l<>1 then exit;

close(F);

end;

procedure odczytaj_i_pokaz(var F:file; var x:tablica_losowa);

{Wype nia tablic 1000 elementów typu word danymi z pliku.}

ł

ę

var

l,i:word;

begin

{$I-}reset(F,sizeof(x));{$I+}

if IOResult <> 0 then exit;

blockread(F,x,1,l);

if l<>1 then exit;

for i:=1 to 1000 do write(x[i]:4);

background image

Ten program wype nia tablice o 1000 elementach typu

ł

word

i zapisuje j ,

ą

a nast pnie odczytuje z pliku amorficznego. Warto zwróci uwag na sposób

ę

ć

ę

u ycia procedur

ż

blockread

i blockwirte.

13

close(F);

end;

begin

assign(pl,'tablica.dat');

clrscr;

wypelnij_i_zapisz(pl,tl);

writeln('Naci nij Enter.' );

ś

readln;

clrscr;

odczytaj_i_pokaz(pl,tl);

writeln('Naci nij Enter.' );

ś

readln;

end.


Wyszukiwarka

Podobne podstrony:
wyklad 10 MNE
wyklad 10
Wyklady 10 12c PRCz
wyklad 10
Wyklad 10 Wypalenie zawodowe i jego konsekwencje
Wykład 10 dodatek
Wykład 8 10
Wykład 10 12
Wykład 10 Klimatologia, klimaty świata, Europy i Polski
WYKLAD 10
Wyklad 10
fin pub wykład,10

więcej podobnych podstron