You are on page 1of 4

110

Turbo Pascal programowanie

DFXFK\
'DQH WHNVWRZH PDM obok grafiki  QDMZL
NV]\ XG]LD Z REM
WRFL LQIRUPDFML
SU]HWZDU]DQHMLSU]HFKRZ\ZDQHMZHZVSyF]HVQ\FKV\VWHPDFKNRPSXWHURZ\FK=WHJR
WH*Z]JO
GXND*G\V]DQXMF\VL
M
]\NZ\VRNLHJRSR]LRPXMHVWZ\SRVD*RQ\ZPHFKDnizP\ SR]ZDODMFH QD UHSUH]HQWRZDQLH SU]Hchowywanie i przetwarzanie tekstw.
W 7XUER3DVFDOXVX*\GRWHJRW\SDFXFKRZ\ string NWyU\P]DMPLHP\VL
ZW\P
UR]G]LDOH 'RZROQ\ WHNVW DFXFK DQJ string) przechowywany jest w programie
w SRVWDFLFLJX]QDNyZNWyU\PR*HE\LQWHUSUHWRZDQ\MDNRVSHF\ILF]QDWDEOLFD
array[0..255] of char

3U]\NDGRZDGHNODUDFMD]PLHQQHMDFXFKRZHMPDSRVWD
var
Napis : string;

6WDHDFXFKRZH]DSLVXMHVL
QDWRPLDVWZSRVWDFLFLJyZ]QDNyZXM
W\FKZDSRVWURI\
SRGREQLHMDNVWDH]QDNRZH 
const
STALY_NAPIS = 'Turbo Pascal';

=HURZ\ HOHPHQW DFXFKD SU]HFKRZXMH MHJR DNWXDOQ GXJR W]Z GXJR G\QDPLF]Q  E
GF W\SX ]QDNRZHJR PR*H RQ SU]\MPRZD ZDUWRFL RG  GR  6WG
ZDQLH Z\QLND RJUDQLF]HQLH GXJRFL DFXFKD GR  ]QDNyZ FR ]UHV]W Z
ZL
NV]RFLSU]\SDGNyZZ\VWDUF]DD*QDGWR$E\VNUyFLDFXFK GDQDW\SX string
]DMPXMH ]DZV]H  EDMWyZ QLH]DOH*QLH RG U]HF]\ZLVWHM GXJRFL WHNVWX  PR*QD
Z\NRU]\VWDGHNODUDFM

nazwa-zmiennej : string>GXJR@

0R*OLZR WD MHVW V]F]HJyOQLH FHQQD MHOL Z SURJUDPLH Z\NRU]\VWXMHV] QS WDEOLF

DFXFKyZ GHNODUXMF HOHPHQW VNDGRZ\ WDEOLF\ MDNR string[20] RV]F]
G]DV] 
EDMWyZ FR SU]\ VWX HOHPHQWDFK GDMH ]\VN SRQDG  N% :DUWR ]DXZD*\ *H SUyED
]DSLVDQLD GR VNUyFRQHJR DFXFKD WHNVWX GX*V]HJR QL* SR]ZDOD GHNODUDFMD QLH
VSRZRGXMHE
GXDMHG\QLHREFL
FLHQDGPLDURZ\FK]QDNyZ

DFXFK\

111

2SHUDFMH QD DFXFKDFK Z ]DVDG]LH QLH Uy*QL VL


 ]DSLVHP RG RSHUDFML QD ]PLHQQ\FK
W\SX SURVWHJR L QLH Z\PDJDM VWRVRZDQLD *DGQ\FK VSHFMDOQ\FK V]WXF]HN 'R ZSURZDdzania, wyprowadzania i przypLV\ZDQLD DFXFKyZ Z\NRU]\VWXMH VL
 podobnie jak
dla zmiennych typw prostych procedury read(ln), write(ln) oraz operator
SU]\SLVDQLD5yZQLH*SRUyZQDQLHGZyFKDFXFKyZ]DSLV\ZDQHMHVWLGHQW\F]QLHSU]\
F]\PZHZQ
WU]QLHRGE\ZDVL
RQRSU]H]SRUyZQDQLHNRGyZRGSRZLDGDMF\FKVRELH
]QDNyZ7DNZL
F
'C' < 'Pascal'

(kod ASCII znaku 'C' jest mniejszy od kodu 'P')

'c' > 'Pascal'

NRG$6&,,]QDNX
F
MHVWZL
NV]\RGNRGX
3

'C' > ''

GRZROQ\DFXFKMHVWZL
NV]\RGDFXFKDSXVWHJR

Z rzeczy prostych pozRVWDRMHV]F]HGRGDZDQLHDFXFKyZSROHJDMFHQDLFK]Z\N\P


VNOHMDQLX QLHVWHW\ DFXFKyZ QLH GD VL
 RGHMPRZD PQR*\ DQL G]LHOL  -H*HOL
zmienna lancuch1 zawiera tekst 'Turbo' ]D lancuch2 tekst 'Pascal', to
wynikiem sklejenia obu zmiennych:
wynik := lancuch1 + lancuch2;

E
G]LHRF]\ZLFLHWHNVW'TurboPascal'.
5yZQLH* RGZRDQLD GR SRV]F]HJyOQ\FK ]QDNyZ DFXFKD UHDOL]XMH VL
 Z VSRVyE HOHPHQWDUQ\3RQLHZD*PR*HRQE\WUDNWRZDQ\MDNRWDEOLFD]QDNyZLQVWUXNFMD
s[5] := 'x'

wstawi znak xQDSLWSR]\FM


ZDFXFKXs.
%DUG]LHM Z\P\OQH RSHUDFMH QD DFXFKDFK Z\PDJDM X*\FLD VSHFMDOQLH GR WHJR FHOX
SU]H]QDF]RQ\FKIXQNFML]NWyU\FKQDMZD*QLHMV]HRSLVDQRSRQL*HM
Length(s)

zZUDFDELH*FGXJRDFXFKDs;

Concat(s1, s2)

sNOHMDDFXFK\s1 i s2 (podobnie, jak operator +)

Copy(s, m, n)

zZUDFDSRGDFXFKRGXJRFL m]QDNyZZ\FL
W\]Dcucha sSRF]\QDMFRGSR]\FMLn;

Pos(ch, s)

zZUDFDQXPHUSR]\FMLQDNWyUHMZDFXFKX s znajduje
VL
]QDNch;

Delete(s, m, n) usuwa n]QDNyZ]DFXFKDs poc]\QDMFRGSR]\FMLm.

-DN SRZLHG]LDQR Z\*HM DNWXDOQ GXJR DFXFKD PR*QD RGF]\WD IXQNFM Length
OXE SU]H] EH]SRUHGQLH RGZRDQLH GR ]HURZHM NRPyUNL DFXFKD  $E\ ]PLHQL
GXJRG\QDPLF]QDFXFKDPXVLV]X*\NRQVWUXNFML
s[0] := chr[n]

gdzie n MHVW *GDQ GXJRFL SRQLHZD* DFXFK VNDGD VL


 ]H ]QDNyZ PXVLP\
SU]HNV]WDFL OLF]E
 n QD RGSRZLDGDMF\ MHM ]QDN IXQNFM chr  3RQLHZD* RSHUDFMD WD
F]DVHPSU]\QRVLQLH]E\WSR*GDQHHIHNW\OHSLHMMHMXQLND

112

Turbo Pascal programowanie


3U]\WRF]RQ\ SRQL*HM SURJUDP Lancuchy demonstruMH QLHNWyUH PR*OLZRFL REUyENL
DFXFKyZ L Z ]DVDG]LH QLH Z\PDJD GRGDWNRZHJR NRPHQWDU]D 3R]D Z\ZRDQLDPL
RSLVDQ\FK Z\*HM SURFHGXU ]QDOD]D VL
 Z QLP UyZQLH* IXQNFMD UpCase,
SU]HNV]WDFDMFD PD OLWHU
 DOIDEHWX QD GX* 2SHUXMH RQD FR SUDZGD QD W\SLH
]QDNRZ\P MHGQDN W\SRZH MHM ]DVWRVRZDQLH VSURZDG]D VL
 GR NRQZHUVML FD\FK
DFXFKyZMDNSRND]DQRQL*HM
program Lancuchy;
^'HPRQVWUDFMDRSHUDFMLQDDFXFKDFK`
const
TP = 'Turbo Pascal to bomba';
var
s1, s2 : string;
i : integer;
begin
s1 := TP; { przypisanie }
V 

^MZDFXFKSXVW\`
for i := 1 to Length(s1) do
V V

^GRGDZDQLHDFXFKyZ]QDNyZ`
writeln(s1);
i := Pos('a', s1); { wyszukanie znaku }
s2[i] := '^'; { wstawienie znaku }
ZULWHOQ V ^LFR]WHJRZ\QLNR"`
'HOHWH V ^XVXQL
FLHF]
FLDFXFKD`
writeln(s1);
for i := Length(s1) downto 1 do^Z\SLVDQLHDFXFKD`
^RGW\X`
write(s1[i]);
writeln;
for i := 1 to Length(s1) do { zamiana naGX*H]QDNL`
write(UpCase(s1[i]));
writeln;
V &RS\ 73 ^Z\FL
FLHSRGDFXFKD`
for i := Length(s1) downto 1 do
begin
writeln(s1);
'HF V>@ ^VNUDFDQLHDFXFKD`
end;
end.

1D]DNRF]HQLHWHJRUR]G]LDXZVSRPQLP\RDOWHUQDW\ZQHMPHWRG]LHUHSUH]HQWRZDQLD
danych tekstowych tak zwanych DFXFKDFK ]DNRF]RQ\FK ]HUHP (ang. nullterminated string ]ZDQ\FKWH*$6&,,=DFXFK$6&,,= SRGREQLHMDN string) jest
]Z\NWDEOLF]QDNyZMHGQDNQLHSRVLDGDSRODSU]HFKRZXMFHJRGXJRZ]DPLDQ]D

DFXFK\

113

WR MHJR NRQLHF V\JQDOL]RZDQ\ MHVW ]QDNLHP R NRG]LH  QLH P\OL ]H ]QDNLHP  
(IHNW\ZQDSRMHPQRDFXFKD$6&,,=RJUDQLF]RQDMHVWZLHONRFLGRVW
SQHMSDPL
FL
ZSUDNW\FHGRN% DZL
FMHVW]QDF]QLHZL
NV]DQL*GODW\SXstring.
DFXFK\ $6&,,= GRVW
SQH SRF]ZV]\ RG ZHUVML  7XUER 3DVFDOD  GHNODURZDQH V
MDNR]Z\NHWDEOLFH]QDNyZLQGHNVRZDQHRG]HUDQS
var
BardzoDlugiLancuch : array[0..10000] of char;

(OHPHQWDUQD REVXJD DFXFKyZ $6&,,= ZF]\W\ZDQLH Z\SURZDG]DQLe, przypisywaQLH UHDOL]RZDQDMHVWWDNVDPRMDNGOD]Z\N\FKDFXFKyZSRGZDUXQNLHPZF]HQLD


W]ZUR]V]HU]RQHMVNDGQLG\UHNW\ZNRPSLODWRUD {$X+} (Options-Compiler-Extended
Syntax  %DUG]LHM ]R*RQH RSHUDFMH QD DFXFKDFK $6&,,= NRSLRZDQLH
porwnywanie, przeszukiwanie, konwersja do typu stringLYLFHYHUVD UHDOL]RZDQHV
przez procedury zawarte w module bibliotecznym Strings RPRGXDFKZNUyWFH LQLH
E
G WX RPDZLDQH :DUWR ZUHV]FLH ZVSRPQLH R W\SLH ZVND(QLNRZ\P PChar,
XPR*OLZLDMF\P PDQLSXORZDQLH QD G\QDPLF]QLH WZRU]RQ\FK L XVXZDQ\FK DFXFKDFK
ASCIIZ.
3RQLHZD* Z ZL
NV]RFL SU]\SDGNyZ W\S string ]QDNRPLFLH VSHQLD VZRMH ]DGDQLH
SRSU]HVWDQLHP\QDSRZ\*V]\FKZ]PLDQNDFKRGV\DMF]DLQWHUHVRZDQ\FK&]\WHOQLNyZ
GRV\VWHPXSRPRF\LOLWHUDWXU\>@:QDVW
SQ\PUR]G]LDOH]DMPLHP\VL
SUREOHPHP
EUDNX SDPL
FL F]\OL ZVSRPQLDQ\P SU]HG FKZLO G\QDPLF]Q\P WZRU]HQLHP L XVXwaniem zmiennych.

=DSDPL
WDM
'R SU]HFKRZ\ZDQLD GDQ\FK WHNVWRZ\FK QDSLVyZ  VX*\ Z 7XUER 3DVFDOX W\S
string.
DFXFK W\SX string jesW VSHF\ILF]Q WDEOLF R SRMHPQRFL GR  ]QDNyZ
SU]\ F]\P ELH*FD GXJR DFXFKD SU]HFKRZ\ZDQD MHVW Z ]HURZHM NRPyUFH
tablicy.
=DNUHV SRGVWDZRZ\FK RSHUDFML QD DFXFKDFK REHMPXMH ZSURZDG]DQLH Z\SURwaG]DQLH SU]\SLV\ZDQLH L SRUyZQ\ZDQLH UHDOL]RZDQH ]D SRPRF VWDQdardowych procedur i operatorw).
%DUG]LHM]DDZDQVRZDQHRSHUDFMHQDDFXFKDFKWRNRSLRZDQLHSU]HV]XNLZDQLH
Z\FLQDQLHLVNUDFDQLH2SHUDFMHWHUHDOL]RZDQHV]DSRPRFVSHFMDOQ\FKIXQNFML
i procedur.
7XUER 3DVFDO  XPR*OLZLD UyZQLH* NRU]\VWDQLH ] DFXFKyZ ]DNRF]RQ\FK
zerem (ASCIIZ).

You might also like