01R18.pdf
(
792 KB
)
Pobierz
Microsoft Word - PROWTP44.DOC
3OLNLF]\OLMDNXFKURQLüGDQHSU]HG]JXE
101
3OLNLF]\OLMDNXFKURQLü
GDQHSU]HG]JXE
3DPLüRSHUDF\MQDZ\NRU]\VW\ZDQDGRSU]HFKRZ\ZDQLDGDQ\FKSU]HWZDU]DQ\FKSU]H]
SURJUDPPDGZLH]DVDGQLF]HZDG\RJUDQLF]RQSRMHPQRüLXORWQRüWRSRHW\FNLH
VáRZRR]QDF]DSRSURVWX*H]DZDUWRüSDPLFLMHVWWUDFRQDZFKZLOLZ\áF]HQLD]DVL
-
ODQLD.RPSXWHUXPR*OLZLDMF\SU]HFKRZ\ZDQLHGDQ\FKZ\áF]QLHSRGF]DVZáF]HQLD
GRVLHFLE\áE\UDF]HMPDáRX*\WHF]Q\GODWHJRWH*SURMHNWDQFLVSU]WXRSUDFRZDOLV]HUHJ
XU]G]H
— tzw.
SDPLFL PDVRZ\FK
—
SR]ZDODMF\FK QD WUZDáH SU]HFKRZ\ZDQLH
GDQ\FK5ROSDPLFLPDVRZHMZNRPSXWHU]HRVRELVW\PSHáQLG\VNLHWNLRUD]G\VNL
WZDUGHREDUR]ZL]DQLDZ\NRU]\VWXMLGHQW\F]QPHWRG]DSLVXLUy*QLVLUR]ZL
za-
niami technologicznymi). Z logicznego punktu widzenia, dane zapisywane na dyskach
RUJDQL]RZDQH VZ
pliki
D WH ] NROHL SU]HFKRZ\ZDQH VZ
katalogach
&DáRFL
]DU]G]DV\VWHPRSHUDF\MQ\]NWyUHJRXVáXJNRU]\VWDMSURJUDP\X*\WNRZH
UyZQLH* L 7XUER 3DVFDO G\VSRQXMH PR*OLZRFL NRU]\VWDQLD ] SOLNyZ
Z
WU]HFK GRVWSQ\FK Z 3DVFDOX URG]DMyZ SOLNyZ
— elementowych (jednorodnych),
tekstowych i amorficznych —
RPyZLP\ GZD SLHUZV]H PDMFH QDMZLNV]H ]DVWRVR
-
wanie w praktyce.
st do wprowadzania informacji z klawiatury i wyprowa-
G]DQLDMHMQDHNUDQPRQLWRUDOXEGUXNDUN5HSUH]HQWDFMRPW\PRGSRZLDGDMZ3DV
-
calu pliki elementowe oraz tekstowe.
·
3OLNLHOHPHQWRZHSU]HFKRZXMGDQHZSRVWDFLELQDUQHM]DSOLNLWHNVWRZH
—
w
SRVWDFL ZLHUV]\ WHNVWX ]DNRF]RQ\FK ]QDNDPL NRFD ZLHUV]D =DZDUWRü
SOLNyZHOHPHQWRZ\FKMHVWQDRJyáQLHF]\WHOQDGODX*\WNRZQLNDQDWRPLDVWWUHü
SOLNX WHNVWRZHJR GDMH VL áDWZR RGF]\WDü L ]LQWHUSUHWRZDü = GUXJLHM VWURQ\
binarna reprezentacja danych jest bardzi
HM]ZDUWDLRV]F]GQD
Rzecz jasna,
1D SRF]WHN QLHFR WHRULL 6DP SOLN MHVW SHZQ VWUXNWXU GDQ\FK ]DSLVDQ QD G\VNX
i
LGHQW\ILNRZDQ]DSRPRFQD]Z\FLOHM
—
FLH*NLGRVWSX'DQHSU]HFKRZ\ZDQH
ZSOLNXPRJPLHüUHSUH]HQWDFMELQDUQWDNVDPMDNZSDPLFLNRPSXWHUDOXE
WHNVWRZWDNMDNDX*\ZDQDMH
102
Turbo Pascal
—
programowanie
·
:V]\VWNLHGDQHSU]HFKRZ\ZDQHZSOLNDFKHOHPHQWRZ\FKPXV]E\üWHJRVDPH
-
JRW\SXSURVWHJROXEVWUXNWXUDOQHJR3OLNLWHNVWRZHZ\NRU]\VWXMFH]QDNRZH
VIRUPDWRZDQH UHSUH]HQWDFMH GDQ\FK PRJ E\ü X*\WH GR SU]HFKRZ\ZDQLD
PLHV]DQ\FKW\SyZGDQ\FKQSWHNVWyZLOLF]EJG\*ZV]HONDLQIRUPDFMDSU]H
-
FKRZ\ZDQDMHVWZQLFKZSRVWDFLWHNVWRZHM3OLNLWHNVWRZHXPR*OLZLDMUyZQLH*
formatowanie zapisu i korzystanie z procedur
readln
i
writeln
NWyUH V
QLHGRVWSQHGODSOLNyZHOHPHQWRZ\FK
·
Pliki
HOHPHQWRZHXPR*OLZLDMW]ZGRVWSVZRERGQ\
— w dowolnym momencie
PR*QD RGZRáDü VL GR GRZROQHJR HOHPHQWX SOLNX 3OLNL WHNVWRZH V SOLNDPL
o
GRVWSLHVHNZHQF\MQ\PFRR]QDF]D*HDE\GRVWDüVLGRZ\EUDQHJRHOHPHQWX
SOLNXQDOH*\SU]HF]\WDüZV]\VWNLHHOHPHQW\]QDMGXMFHVLSU]HGQLP
2GZRáDQLDGRSOLNX]DSLV\RGF]\W\LLQQHRSHUDFMHUHDOL]RZDQHVSU]H]Z\ZRáDQLH
RGSRZLHGQLFKIXQNFMLV\VWHPXRSHUDF\MQHJRNWyU\]NROHLSRVáXJXMHVLOLF]ERZ\PL
LGHQW\ILNDWRUDPLSOLNyZNRU]\VWDQLH]QD]ZE\áRE\QLHZ\JRGQH5yZQLH*SURJUDP
SDVFDORZ\QLHRGZRáXMHVLGRSOLNyZÄEH]SRUHGQLR´OHF]SRSU]H]WDN]ZDQH
zmienne
plikowe
·
RWZDUFLHSOLNXSU]\JRWRZXMFHJRGR]DSLV\ZDQLDOXERGF]\W\ZDQLDLQIRUPDFML
·
MHGQDOXEZLFHMRSHUDFML]DSLVXOXERGF]\WXGDQ\FK
·
]DPNQLFLHSOLNXLSU]HUZDQLHVNRMDU]HQLDSRPLG]\]PLHQQSOLNRZLSOLNLHP
6DP]PLHQQSOLNRZGHNODUXMHVLZVSRVyEQDVWSXMF\
nazwa :
file
of
typ { dla pliku elementowego }
nazwa : text { dla pliku tekstowego }
gdzie
typ
RNUHODW\SHOHPHQWXVNáDGRZHJRSOLNXLPR*HE\üGRZROQ\PLGHQW\
fika-
WRUHPW\SXSURVWHJROXEVWUXNWXUDOQHJR]Z\MWNLHPW\SXSOLNRZHJRLRELHNWRZHJR
=DXZD* *H SRMHG\QF]\P HOHPHQWHP SOLNX HOHPHQWRZHJR MHVW QLH EDMW OHF] ZáDQLH
RELHNW]DGDQHJRW\SXFRMHVWGRüORJLF]QH'ODWHJRWH*GRSOLNXUHNR
rdów (drugi
SU]\NáDGSRQL*HMPR*HV]ZSLV\ZDüZ\áF]QLHFDáHUHNRUG\]DSLV\ZDQLHOXERGF]\W\
-
ZDQLH SRMHG\QF]\FK SyO MHVW QLHZ\NRQDOQH D MHJR GáXJRü EG]LH ]DZV]H UyZQD
wielo
NURWQRFL UR]PLDUX SRMHG\QF]HJR UHNRUGX 3RGREQLH GHNODUDFMD SOLNX NWyUHJR
elemen
WDPL VNáDGRZ\PL V WDEOLFH OLF]E FDáNRZLW\FK ]PXVL &L GR ]DSLV\ZDQLD L
odczyty
ZDQLD FDá\FK WDEOLF JG\* RGZRáDQLH VL GR SRMHG\QF]HJR HOHPHQWX WDEOLF\
EG]LH QLHPR*OLZH 7HQ VDP SOLN PR*QD RF]\ZLFLH RWZRU]\ü MDNR SOLN OLF]E
FDáNRZLW\FKFRSR]ZROLQDPQDRGF]\W\ZDQLHSRMHG\QF]\FKZDUWRFL:SU]\SDGNX
gdy plik przechowuje jednorodne dane, deklaracja zmiennej plikowej wykorzystuje na
RJyáHOHPHQW\VNáDGRZHRGSRZLHGQLHJRW\SXSURVWHJR'ODED]GDQ\FK]áR*RQ\FK]
rekordów (przechowu
MF\FKGDQHUy*Q\FKW\SyZMHG\Q\PZ\MFLHPMHVWGHNODUDFMD
pliku rekordów.
F]\OL ]áR*RQH VWUXNWXU\ GDQ\FK UHSUH]HQWXMFH IL]\F]QH SOLNL ]DSLVDQH QD
dysku. Ogólny schemat operacji plikowej w Pascalu obejmuje cztery etapy:
·
VNRMDU]HQLH ]PLHQQHM SOLNRZHM ] RGSRZLHGQLP SOLNLHP ]QDMGXMF\P VLQD
dysku lub nowo tworzonym);
3OLNLF]\OLMDNXFKURQLüGDQHSU]HG]JXE
103
2WRNLONDSU]\NáDGRZ\FKGHNODUDFML
var
Probki :
file
of
real; { plik liczb rzeczywistych }
KatalogNaDysku :
file
of
Ksiazka; { plik rekordów }
KatalogTekstowy : text; { plik tekstowy }
'ODSRWU]HEQDV]HJRSURJUDPXELEOLRWHF]QHJRPR*HP\Z\NRU]\VWDüGUXJLOXEWU]HFL
z
SRZ\*V]\FKSU]\NáDGyZ1DMSRSXODUQLHMV]\PUR]ZL]DQLHPGODED]GDQ\FKDQDV]
SURJUDPMHVWZáDQLHSURVWED]GDQ\FKV
—
MDNMX*SRZLHG]LDQR
— pliki rekordów,
XPR*OLZLDMFH VZRERGQ\ GRVWS GR GDQ\FK L OHSV]H ]DJRVSRGDURZDQLH G\VNX -HOL
MHGQDN ]DOH*\ &L QD F]\WHOQRFL SOLNX ] GDQ\PL PR*HV] Z\NRU]\VWDü UHSUH]HQWDFM
w postaci pliku tekstowego.
-
VLP\VNRMDU]\ü]PLHQQSOLNRZ]IL]\F]Q\PSOLNLHP]QDMGXMF\PVLQDG\VNX6áX*\
do tego procedura
assign
:
assign(zmienna-plikowa, nazwa-pliku)
RNUHODWXSOLNGRNWyUHJRFKFHP\VLRGZRá\ZDüáF]QLH]HZHQWXDOQ
FLH*NGRVWSXF]\OLQD]ZG\VNXNDWDORJXLHZHQWXDOQ\FKSRGNDWDORJyZ]DZLHUDM
-
cych plik). Po wykonaniu procedury
assign
ZV]HONLHRGZRáDQLDGR]PLHQQHMSOLNRZHM
EGGRW\F]\á\VNRMDU]RQHJR]QLSOLNXRQD]ZLHNWyUHJRPR*HP\]DSRPQLHü-HVWWR
GRü LVWRWQH JG\* MHGQ\P ] EáGyZ F]VWR SRSHáQLDQ\FK SU]H] SRF]WNXMF\FK
SURJUDPLVWyZMHVWSUyEDRGZRá\ZDQLDVLGRSOLNXSU]H]SRGDQLHMHJRQD]Z\FRMHVW
rzecz jasna nielegalne.
3U]\NáDGRZHVNRMDU]HQLH]PLHQQHMSOLNRZHM]SOLNLHPPR*HPLHüSRVWDü
assign(KatalogNaDysku, 'c:\biblio\dane\katalog.dat')
lub (lepiej)
assign(KatalogNaDysku, NazwaPliku)
:GUXJLPSU]\SDGNXQD]ZDSOLNXSU]HND]\ZDQDMHVWMDNR]PLHQQDFRXPR*OLZLDQS
ZSURZDG]HQLHMHM]]HZQWU]Ä]DV]\FLH´QD]Z\ZHZQWU]SURJUDPX]PQLHMV]DMHJR
XQLZHUVDOQRü
1DVWSQ\PNURNLHPMHVWRWZDUFLHSOLNXF]\OLSU]\JRWRZDQLHJRGRRGF]\WXOXE]DSLVX
.RQLHF]QRü RWZDUFLD L Sy(QLHMV]HJR ]DPNQLFLD SOLNX Z\QLND ] PHWRG REVáXJL
SOLNyZ SU]\MW\FK Z V\VWHPLH RSHUDF\MQ\P NWyUHJR IXQNFMH V ]UHV]W Z W\P FHOX
wykorzysty
3R]DGHNODURZDQLXRGSRZLHGQLHM]PLHQQHMSOLNRZHMPR*QDSU]\VWSLüGRZáDFLZ\FK
RSHUDFML]ZL]DQ\FK]]DSLV\ZDQLHPLRGF]\W\ZDQLHPGDQ\FK3U]HGHZV]\VWNLPPX
Nazwa-pliku
ZDQH:\PLDQDLQIRUPDFMLSRPLG]\SOLNLHPDSURJUDPHPPR*OLZDMHVW
dopiero po otwarciu tego ostatniego.
104
Turbo Pascal
—
programowanie
'ZLHPDSRGVWDZRZ\PLSURFHGXUDPLX*\ZDQ\PLZ3DVFDOXGRRWZLHUDQLDSOLNyZV
reset
i
rewrite
:
reset(zmienna-plikowa)
rewrite(zmienna-plikowa)
est
utracenie wszystkich danych
zawartych w pliku
:DUWRSDPLWDü*HZSU]\SDGNXSOLNyZWHNVWRZ\FKSURFHGXUD
reset
otwie
UDSOLNZ\áF]QLHGRRGF]\WX]D
rewrite
—
Z\áF]QLHGR]DSLVXQLH
PD]DWHPPR*OLZRFLPLHV]DQLDRGF]\WyZL]DSLVyZZMHGQ\PF\NOXRWZDUFLD=DVDGD
WDQLHRERZL]XMHGODSOLNyZHOHPHQWRZ\FKNWyUHPR*QDRGF]\W\ZDüL]DSLV\ZDüEH]
ogra
QLF]HQLH]DOH*QLHRGWHJRF]\]RVWDá\RWZDUWH]DSRPRFSURFHGXU\
reset
, czy
rewrite
ZW\PRVWDWQLPSU]\SDGNXWU]HEDQDMSLHUZ]DSLVDüGRSOLNXMDNLHGDQH
6DPZVND(QLNSOLNRZ\MHVWSRSURVWXNROHMQ\PQXPHUHPHOHPHQWXQLHEDMWXZSOLNX
SU]\ F]\P QXPHUDFMD UR]SRF]\QD VL RG ]HUD .D*GD RSHUDFMD RGF]\WX OXE ]DSLVX
SRZRGXMHSU]HVXQLFLHZVND(QLNDRZDUWRüUyZQOLF]ELHRGF]\WDQ\FKOXE]DSLVDQ\FK
HOHPHQWyZSU]\F]\PGODSOLNyZRGRVWSLHVZRERGQ\PHOHPHQWRZ\FKPR*OLZHMHVW
UyZQLH*MHJRGRZROQHSU]HVWDZLDQLHQDZHWSR]DNRQLHFSOLNXFKRüPDWRPDá\VHQV
i
3URFHGXUDWDRWZLHUDSOLNGRGRSLV\ZDQLDWMRWZLHUDJRGR]DSLVXQLHQLV]F]F
poprzed
QLHM ]DZDUWRFL L XVWDZLD ZVND(QLN SOLNRZ\ QD MHJR NRFX 8PR*OLZLD WR
dodawanie danych do plików tekstowych, które —
MDNRSOLNLRGRVWSLHVHNZHQF\MQ\P
—
QLHXPR*OLZLDMSURJUDPRZHJRSU]HVWDZLDQLDZVND(QLNDSOLNRZHJR
'RZ\PLDQ\GDQ\FKSRPLG]\SURJUDPHPDSOLNLHPVáX*]QDQHQDPMX*SURFHGXU\
read
(odczyt) i
write
]DSLV3RQLHZD*ZÄVWDQGDUGRZHM´ZHUVMLREVáXJXMRQHHNUDQ
monitora i
NODZLDWXUQLH]EGQHMHVWSRGDQLHGRGDWNRZHJRDUJXPHQWXRNUHODMFHJR
SOLN]GRNWyUHJRLQIRUPDFMDPDE\üRGF]\WDQDOXE]DSLVDQD$UJXPHQWHPW\PMHVW
ZáDQLHQD]ZDRGSRZLHGQLHM]PLHQQHMSOLNRZHM
read(zmienna-plikowa, lista-elementów)
write(zmienna-plikowa, lista-elementów)
3RZ\*V]HRSHUDFMHRGQRV]VL]DUyZQRGRSOLNyZHOHPHQWRZ\FKMDNLWHNVWRZ\FK
'ODW\FKRVWDWQLFKPR*OLZHMHVWSRQDGWRX*\FLHSURFHGXU
readln
i
writeln
, odczytu-
MF\FKOXE]DSLVXMF\FKGDQHZUD]]H]QDNDPLNRFDZLHUV]D3RQLHZD*SOLN
i elemen-
WRZHSU]HFKRZXMZ\áF]QLHGDQHRNUHORQHJRW\SXLQLHPRJ]DZLHUDü]QDNyZNRFD
ZLHUV]DX*\FLHSURFHGXU
readln
i
writeln
MHVWZLFKSU]\SDGNXQLHOHJDOQH'UXJ
LVWRWQUy*QLF MHVW ]DZDUWRü
listy-elementów
. W przypadku plików tekstowych
OLVWDWDPR*H]DZLHUDüGRZROQH]PLHQQHVWDáHLZ\UD*HQLDJG\*ZV]\VWNLH]DSLV\ZDQH
VZ
SOLNXZSRVWDFLWHNVWXQDWRPLDVWGODSOLNyZHOHPHQWRZ\FKMHMVNáDGQLNDPLPRJ
Procedura
reset
XPR*OLZLDRWZDUFLHMX*LVWQLHMFHJRSOLNXXVWDZLDMFW]ZZVND(QLN
plikowy
QDMHJRSRF]WNX:SU]\SDGNXJG\RWZLHUDQ\SOLNQLHLVWQLHMHZ\ZRáDQLH
SURFHGXU\UHVHWNRF]\VLEáGHPZ\NRQDQLD=NROHL
rewrite
XPR*OLZLDRWZDUFLH
SOLNXQLH]DOH*QLHRGWHJRF]\LVWQLDáRQSRSU]HGQLRMHOLQLH
— tworzy ona nowy plik
o
GDQHMQD]ZLH]DMHOLWDN
—
]HUXMHGáXJRüLVWQLHMFHJRSOLNXLXVWDZLDZVND(QLN
SOLNRZ\ QD MHJR SRF]WNX F]HJR HIHNWHP M
QDMF]FLHMSRZRGXMHEáG\Z\NRQDQLD
7U]HFL SURFHGXU RWZLHUDMF GRVWSQ Z\áF]QLH GOD
plików tekstowych, jest
Append
3OLNLF]\OLMDNXFKURQLüGDQHSU]HG]JXE
105
E\üZ\áF]QLH]PLHQQHRGSRZLHGQLHJRW\SX']LHMHVLWDNGODWHJR*HSOLNHOHPHQWRZ\
PR*H]DZLHUDüZ\áF]QLHGDQHMHGQHJRW\SX]DSRV]F]HJyOQHHOHPHQW\OLVW\SU]HND]\
-
ZDQHVSU]H]QD]Z
3RZ\NRQDQLX*GDQ\FKRSHUDFML]DSLVXLRGF]\WXGDQ\FKSOLNQDOH*\]DPNQü
. Ta bar-
G]RZD*QDRSHUDFMDMHVWLJQRURZDQDSU]H]ZLHOXSURJUDPLVWyZFRZHIHNFLHSURZDG]L
GRSU]\NU\FKQLHVSRG]LDQHNZSRVWDFL]JXELRQ\FKGDQ\FK8SRGáR*DFDáHJRSUREOHPX
OH*\WDN]ZDQH
buforowanie operacji dyskowych
F]\OLWHFKQLNDSROHJDMFDQDRGF]\W\
-
ZDQLXL]DSLV\ZDQLXGDQ\FKQLHSRMHG\QF]ROHF]FDá\PLSDF]NDPL]DSRUHGQLFWZHP
VSHFMDOQHJRREV]DUXSDPLFL
— tzw.
bufora dyskowego
. Wykorzystanie bufora pozwala
na zredukowanie liczby fizycznych odczytów i zapisów na dysku, a przez to zmniej-
V]HQLH MHJR PHFKDQLF]QHJR REFL*HQLD L SRSUDZ Z\GDMQRFL RSHUDFML G\VNRZ\FK
3RQLHZD*MHGQDNSRGF]DV]DSLVX]DZDUWRüEXIRUDZ\V\áDQDMHVWQDG\VNGRSLHURSR
MHJR]DSHáQLHQLXOXEZFKZLOL]DPNQLFLDSOLNXSU]HUZDQLHZ\NRQ\ZDQLDSURJUDPX
PR*HVSRZRGRZDüXWUDWGDQ\FK5yZQLH*SRSUDZQH]DNRF]HQLHSURJUDPXSRZRGXMH
co prawda automatyczne zamkni
FLHRWZDUW\FKSOLNyZQLHRSUy*QLDMHGQDNEXIRUyZ
SU]HFKRZXMF\FKQLH]DSLVDQHMHV]F]HGDQHFRPR*HVSRZRGRZDüLFKXWUDW:SU]\
-
SDGNXJG\SOLNZ\NRU]\VW\ZDQ\MHVWZ\áF]QLHGRRGF]\WXGDQ\FKQLH]DPNQLFLHQLH
SRZRGXMH XWUDW\ LQIRUPDFML FR QLH ]QDF]\ *H PR*QD MH VRELH RGSXFLü ERZLHP
OHQLVWZRWDNLH]Z\NOHPFLVLZQDMPQLHMVWRVRZQ\FKRNROLF]QRFLDFK
3DPLWDM]DPNQLFLHSOLNXMHVWSUDNW\F]QLH
jedynym sposobem
na bezpieczne
zapisanie w nim wszystkich danych.
1DV]F]FLH]DPNQLFLHSOLNXMHVWE
ardzo proste. Realizuje je procedura
close
:
close(zmienna-plikowa)
-HMZ\ZRáDQLHPDWVDPIRUPGODZV]\VWNLFKURG]DMyZSOLNyZ
7\OHWHRULL$E\ZSURZDG]LüMZ*\FLHVSUyEXMP\QDSLVDü]HVWDZSURFHGXUSR]ZDOD
-
MF\FK QD ]DSLVDQLH QDV]HJR NDWDORJX Z SOLNX G\VNRZ\P L RGF]\WDQLH JR ] SOLNX
=JRGQLH]W\PFRSRZLHG]LHOLP\ZF]HQLHMGRSU]HFKRZ\ZDQLD]DZDUWRFLNDWDORJX
wykorzystamy plik elementowy typu
file
of
record
.
procedure
ZapiszNaDysku(NazwaPliku :
string
);
var
f :
file
of
Ksiazka;
i : integer;
begin
DVVLJQI1D]ZD3OLNX^VNRMDU]SOLN]H]PLHQQSOLNRZ`
rewrite(f); { otwórz (utwórz) plik }
for
i := 1
to
LbPoz
do
{ zapisz kolejne rekordy }
write(f, Katalog[i]);
close(f); { zamknij plik }
end
;
Plik z chomika:
lukaszwalda
Inne pliki z tego folderu:
01R02.pdf
(1811 KB)
01R03.pdf
(1822 KB)
01R04.pdf
(1757 KB)
01R05.pdf
(1620 KB)
01R06.pdf
(1525 KB)
Inne foldery tego chomika:
3 Hacker eBooks [ DE ]
3D Studio Max 4. [ PL ]
3D Studio Max. [ PL ]
3D Studio MAX. Matrix - jak to zrobić [ PL ]
ABC Nagrywania Płyt CD. [ PL ]
Zgłoś jeśli
naruszono regulamin