You are on page 1of 4

7\S\LVWDH

87

7\S\LVWDH
=DMPLHP\VL
REHFQLHGZRPDVSRNUHZQLRQ\PL]HVRE]DJDGQLHQLDPLGHILQLRZDQLHP
ZDVQ\FKW\SyZRUD]VWD\PLV\PEROLF]Q\PL*yZQ\REV]DU]DVWRVRZDVWD\FKLW\SyZ ]ZL]DQ\ MHVW ] Z\NRU]\VWDQLHP W\SyZ VWUXNWXUDOQ\FK GODWHJR PyZLP\ R QLFK
ZDQLH WHUD]  Z\NRU]\VWDQLH GHILQLFML W\SyZ SR]ZDOD QD RPLQL
FLH SHZQ\FK RJUDQLF]H Z SU]HND]\ZDQLX SDUDPHWUyZ ]REDF] NRQLHF SRSU]HGQLHJR UR]G]LDX  3R]D
W\P X*\ZDQLH ZDFLZLH GREUDQ\FK GHILQLFML W\SyZ L VWD\FK SROHSV]D F]\WHOQR L
HVWHW\N
SURJUDPXRUD]]PQLHMV]DU\]\NRE
GyZ
3RND]DQ\ QD NRFX SRSU]HGQLHJR UR]G]LDX SU]\NDG LOXVWUXMH QLH]U
F]Q SUyE

przekazania do procedury parametru typu strukturalnego. Niestety, nasz zapis stanowi
SUyE
 SU]HP\FHQLD RSLVX GHILQLFML  W\SX Z PLHMVFX GR WHJR QLH SU]H]QDF]RQ\P QD
OLFLH SDUDPHWUyZ IRUPDOQ\FK SURFHGXU\ OXE IXQNFML PRJ ]QDMGRZD VL
 Z\F]QLH
LGHQW\ILNDWRU\ SDUDPHWUyZ L RGSRZLDGDMFH LP identyfikatory (nie definicje!) typw.
'RSyNL SRVXJLZDOLP\ VL
 SDUDPHWUDPL W\SX SURVWHJR SUREOHP QLH LVWQLD JG\* QD
OLFLH SDUDPHWUyZ XPLHV]F]DH SR SURVWX QD]Z
 RGSRZLHGQLHJR W\SX : SU]\SDGNX
W\SyZ VWUXNWXUDOQ\FK VSUDZD VL
 NRPSOLNXMH 1LH GR *H QD OLFLH SDUDPHWUyZ QLH
ZROQRXPLHFLGHILQLFMLW\SX MDNZL
F]GHILQLRZDSDUDPHWUVWUXNWXUDOQ\" WRMHV]F]H
LGHQW\F]QLHZ\JOGDMFHGHNODUDFMHWDEOLF
var
t1 : array[1..100] of real;
t2 : array[1..100] of real;

ZFDOHQLHWZRU]RELHNWyZLGHQW\F]QHJRW\SXND*GD]QLFKLQWHUSUHWRZDQDMHVWMDNR
definicja nowego typu, co utrudnia niektre operacje (nie PR*QD QS GRNRQD SU]\SLVDQLD FDHM WDEOLF\ t2 do t1  1D GRELWN
 RND]XMH VL
 *H ]JRGQR W\SyZ Z\PDJDQD
MHVWUyZQLH*ZSU]\SDGNXSU]HND]\ZDQLDSDUDPHWUyZ FRE\R]UHV]WDWZHGRSU]HZLdzenia).
:\MFLHP ] WHJR LPSDVX MHVW ]GHILQLRZDQLH identyfikatora typu F]\OL QD]Z\ E
GFHM
V\QRQLPHPGDQHJRW\SXVWUXNWXUDOQHJR,GHQW\ILNDWRUWDNLZ\NRU]\VWDP\QDVW
SQLHGR
GHNODURZDQLD]PLHQQ\FKLSDUDPHWUyZGRNDGQLHWDNVDPRMDNF]\QLOLE\P\WR]LGHQW\ILNDWRUHP W\SX SURVWHJR $E\ ]GHILQLRZD LGHQW\ILNDWRU W\SX PXVLV] X*\ VRZD
kluczowego type W\S ZQDVW
SXMFHMNRQVWUXNFML
type
nazwa-typu = opis-typu

88

Turbo Pascal programowanie


]ZUyXZDJ
*HZGHILQLFMLW\SXZ\NRU]\VWXMHVL
]QDNUyZQRFLDQLHGZXNURSHN 
Nazwa-typu RNUHOD GHILQLRZDQ\ LGHQW\ILNDWRU L SRGOHJD ZV]\VWNLP UHJXRP GRW\F]F\P LGHQW\ILNDWRUyZ  ]D opis-typu jest takim samym opisem, jaki stosowany
MHVWZGHNODUDFMDFK]PLHQQ\FK5y*QLFDSROHJDW\ONRQDW\P*HZSU]\SDGNXGHNODUDFML
]PLHQQHMNRPSLODWRUWZRU]\RGSRZLHGQLVWUXNWXU
GDQ\FKLUH]HUZXMHGODQLHMPLHMVFH
w SDPL
FL QDWRPLDVW ]GHILQLRZDQLH W\SX SRZRGXMH MHG\QLH XWZRU]HQLH V]DEORQX QLH
MHVW WZRU]RQ\ *DGHQ IL]\F]Q\ RELHNW  NWyU\ E
G]LH Z\NRU]\VW\ZDQ\ Z GHNODUDFMDFK
GRSLHURZWHG\NRPSLODWRUE
G]LHUH]HUZRZDPLHMVFHQDGDQH 
3U]\NDGRZD GHILQLFMD W\SX UHNRUGRZHJR RSLVXMFHJR NVL*N
 L GHNODUDFMD RGSRwiedQLHMWDEOLF\UHNRUGyZ E
G]LHZL
FPLDDSRVWD
type
Ksiazka = record { tak samo, jak w deklaracji zmiennej }
Tytul : string[30];
Autor : string[25];
Wypozyczajacy : string[25];
Licznik : word);
end;
var
Katalog : array[1..750] of Ksiazka;

-X*QDSLHUZV]\U]XWRNDZ\JOGDWRDGQLHM Katalog zawiera KsiazkiDQLHMDNLH


UHNRUG\NWyU\FKSU]H]QDF]HQLDQDOH*\VL
GRSLHURGRP\OD QRDSR]DW\PPR*OLZH
jest wreszcie zadeklarowanie odpowiednich parametrw:
procedure Wprowadz(var r : Ksiazka);

'HILQLRZDQLHQRZ\FKLGHQW\ILNDWRUyZW\SyZPD]DVWRVRZDQLHJyZQLHZSURJUDPDFK
SRVXJXMF\FK VL
 VWUXNWXUDOQ\PL UHSUH]HQWDFMDPL GDQ\FK FKRFLD* PR*OLZH MHVW
UyZQLH* GHILQLRZDQLH QRZ\FK W\SyZ SURVW\ch (a nawet przedefiniowywanie typw
standarGRZ\FK 2WRSU]\NDG
type
IORDW H[WHQGHG^UHDOMHOLQLHPDV]NRSURFHVRUD`

3RZ\*V]D GHILQLFMD WZRU]\ QRZ\ W\S ]PLHQQRSU]HFLQNRZ\ float WR*VDP\ ] W\SHP


extended GDMF\P QDMZL
NV] PR*OLZ SUHF\]M
 L ]DNUHV ZDUWRFL  -HOL SURJUDP
SU]H]QDF]RQ\MHVWGODNRPSXWHUDSR]EDZLRQHJRNRSURFHVRUD LQLHPDHPXORZDWHJR
ostatniego), wystarczy w miejsce typu extended ZSLVD real 'HNODUXMF ZV]\VWNLH
liczby rzeczywiste w programie jako float uzyskasz w ten sposb PR*OLZR DWZHM
DGDSWDFMLSURJUDPXGRZDUXQNyZVSU]
WRZ\FK
=DXZD**HZGHNODUDFML]PLHQQHMKatalogZ\PLDUWDEOLF\RNUHORQ\MHVWMDZQLHOLF]E
 Z\QLND RQD ] SRG]LHOHQLD ZLHONRFL GRVW
SQHM SDPL
FL SU]H] ZLHONR UHNRUGX 
-HVW GR SUDZGRSRGREQH *H GR ZDUWRFL WHM E
G]LHV] VL
 Z SURJUDPLH RGZR\ZD
MHV]F]H NLONDNURWQLH FKRE\ SRGF]DV SU]HV]XNLZDQLD NDWDORJX OXE XVXZDQLD MHJR
HOHPHQWyZ :\REUD(VRELHWHUD]*HSRVWDQRZLHGRGDGRUHNRUGXNUyWNLRSLVNVL*NL
Z SRVWDFL DFXFKD  ]QDNyZ :S\QLH WR U]HF] MDVQD QD ZLHONR UHNRUGX D ]DWHP
i QD GRSXV]F]DOQ ZLHONR WDEOLF\ NWyUD ]PDOHMH WHUD] GR RNRR  SR]\FML 3R

Typy i stale

89

GRNRQDQLX ]PLDQ\ E
G]LHV] PXVLD Z\V]XND Z SURJUDPLH ZV]\VWNLH PLHMVFD Z NWyU\FK Z\VW
SRZDD OLF]ED  L ]DVWSL M OLF]E   MHOL R NWyU\P ]DSRPQLV]
NRQVHNZHQFMH PRJ E\ QLH]E\W SU]\MHPQH GR ]DZLHV]HQLD NRPSXWHUD ZF]QLH 
'UXJLSUREOHP]ZL]DQ\]X*\FLHPOLF]E\ OXE SRMDZLDVL
ZNLONDPLHVL
F\
SRQDSLVDQLXSURJUDPXLVSURZDG]DVL
GRIDNWX*H]Z\NOHWUXGQRVRELHSU]\SRPQLH
co to za 750 i dlaczego akurat tyle.
(OHJDQFNLP VSRVREHP QD SRUDG]HQLH VRELH ] RSLVDQ\P SUREOHPHP V VWDH V\PERliczne 3RGREQLH MDN GHILQLFMD W\SX SR]ZDOD QD XWZRU]HQLH LGHQW\ILNDWRUD E
GFHJR
synonimem definicji typu, tak definicjD VWDHM V\PEROLF]QHM XPR*OLZLD XWZRU]HQLH
LGHQW\ILNDWRUD E
GFHJR V\QRQLPHP RNUHORQHM ZDUWRFL VWDHM QLHNRQLHF]QLH OLF]ERZHM  'R GHILQLRZDQLD VWD\FK X*\ZDQH MHVW VRZR NOXF]RZH const (ang. constant
VWDD ]DVNDGQLDGHILQLFMLZ\JOGDQDVW
SXMFo:
const
nawa-VWDHM ZDUWR

.D*GHZ\VWSLHQLH nazwy-VWDHMZSURJUDPLH]RVWDQLHSRGF]DVNRPSLODFML]DVWpione ZDUWRFL 3RGREQLH MDN Z SU]\SDGNX W\SyZ ]GHILQLRZDQLH VWDHM QLH SRZRGXMH
]DUH]HUZRZDQLDPLHMVFDZSDPL
FLZ]ZL]NX]W\PPXVLV]SDPL
WD*HVWDDV\PERliczna nie jest l-ZDUWRFLLQLHPR*HVL
ZSURJUDPLH]QDOH(SROHZHMVWURQLHRSHUDWRUD
SU]\SLVDQLD DQL Z PLHMVFX SDUDPHWUX SU]HND]\ZDQHJR SU]H] QD]Z
 SRPLMDMF RF]\ZLVWKHUH]M
MDNMHVWSUyED]PLDQ\ZDUWRFLVWDHM 
Definicja sWDHM RNUHODMFHM PDNV\PDOQ SRMHPQR WDEOLF\ L VWRVRZQLH ]PRG\fikoZDQDGHNODUDFMDWDEOLF\UHNRUGyZ E
G]LHZL
FZ\JOGDDQDVW
SXMFR
const
POJEMNOSC_KATALOGU = 750;
var
Katalog : array[1..POJEMNOSC_KATALOGU] of Ksiazka;

=DXZD* *H LGHQW\ILNDWRU VWDHM ]DSLVDQ\ MHVW GX*\PL OLWHUDPL MHVW WR LVWRWQH W\ONR GOD
programisty  7XUER 3DVFDO QLH RGUy*QLD GX*\FK OLWHU RG PD\FK  .RQZHQFMD WD
SR]ZDODMFD DWZR RGUy*QL 67$( od zmiennych MHVW GR SRZV]HFKQLH VWRVRZDQD
SU]H]SURJUDPLVWyZLZDUWRMVRELHSU]\VZRL
-HOL QLH FKFH &L VL
 SU]HOLF]D ZDUWRFL QDV]HM VWDHM SR ND*GHM ]PLDQLH VWUXNWXU\
UHNRUGX F]HJR]GUXJLHMVWURQ\QLHSRZLQLHQHUREL]E\WF]
VWRERGRZRG]LWR]HJR
]DSURMHNWRZDQLDSURJUDPX PR*HV]X*\QDVW
SXMFHMGHILQLFML
const
MAX_PAMIEC = 63000; { maksymalna wielkosc katalogu }
{ w bajtach }
POJEMNOSC_KATALOGU = MAX_PAMIEC div SizeOf(Ksiazka);

-DN QLHWUXGQR VL
 GRP\OL UD] ]GHILQLRZDQHM VWDHM PR*QD X*\ Z NROHMQ\FK GHILnicjach. Co jednak znacznie ciHNDZV]HVWDDPR*H]RVWD]GHILQLRZDQD]DSRPRFZ\UD*HQLD ]DZLHUDMFHJR LQQH VWDH L QLHNWyUH RSHUDWRU\ Z\UD*HQLH PXVL GD VL
 REOLF]\
w WUDNFLH NRPSLODFML QLH PR*H ZL
F ]DZLHUD LGHQW\ILNDWRUyZ ]PLHQQ\FK L IXQNFML

90

Turbo Pascal programowanie


ELEOLRWHF]Q\FKGRNDGQLHMV]HLQIRUPDFMHQDWHQWHPDW]QDMG]LHV]ZV\VWHPLHSRPRF\ 
:QDV]\PSU]\SDGNXZDUWRVWDHM]GHILQLRZDQDMHVWMDNRZ\QLN FDNRZLW\ SRG]LHOHQLD ZLHONRFL GRVW
SQHM SDPL
FL ]GHILQLRZDQHM LQQ VWD  SU]H] UR]PLDU UHNRUGX
RSLVXMFHJRNVL*N
:W\PPRPHQFLHPR*HV]SU]HVWDSU]HMPRZDVL
MDNLPLNROZLHN
liczbami.
6WRVRZDQLHVWD\FKV\PEROLF]Q\FKLGHILQLFMLW\SyZVWDQRZLMHGQ]SRGVWDZ
GREUHMSUDNW\NLSURJUDPRZDQLD2GSRZLHGQLRX*\WHPHFKDQL]P\WH]QDF]QLH
SRSUDZLDMF]\WHOQRSURJUDPXL]PQLHMV]DMMHJRSRGDWQRQDE
G\
w trakcie pisania i poprawiania.
&R SUDZGD SU]HG FKZLO SRZLHG]LDQR *H VWDD ]GHILQLRZDQD VRZHP NOXF]RZ\P

const nie jest l-ZDUWRFL RND]XMHVL


MHGQDN*HVRZDWHJRPR*QDX*\UyZQLH*GR

definiowania... zmiennych. Chodzi tu o tzw. zmienne z ZDUWRFLSRF]WNRZ (zmienne


predefiniowane, ang. typed constant =PLHQQDWDNDMHVWQRUPDOQ]PLHQQW\OH*H
X]\VNXMH ZDUWR MX* Z PRPHQFLH GHNODUDFML GHILQLFML  6NDGQLD GHILQLFML ]PLHQQHM
z ZDUWRFLSRF]WNRZMHVWQDVW
SXMFD
const
nazwa-]PLHQQHMW\S ZDUWR-SRF]WNRZD

=PLHQQHSUHGHILQLRZDQHSR]ZDODMQDDWZHLQLFMDOL]RZDQLHGDQ\FKZSURJUDPLH2WR
SU]\NDG\
const
/LF]EDBNVLD]HNZRUG ^QDSRF]WNX`
{ katalog jest pusty }
Liczniki : array[1..4] of word = (0, 0, 0, 0);
{ inicjalizacja tablicy }

:LDGRPRFLSU]HGVWDZLRQHZW\PUR]G]LDOHSRZLQQ\SR]ZROLQDPQDQDSLVDQLHSRGVWDZRZHM ZHUVML QDV]HJR SURJUDPX 7\P MHGQDN ]DMPLHP\ VL


 MX* Z QDVW
SQ\P
rozdziale.

=DSDPL
WDM
'HNODURZDQLH SDUDPHWUyZ W\SX VWUXNWXUDOQHJR PR*OLZH MHVW Z\F]QLH SU]\
X*\FLXLGHQW\ILNDWRUyZW\SyZ
'R]GHILQLRZDQLDLGHQW\ILNDWRUDW\SXX*\ZDQHMHVWVRZRNOXF]RZHtype.
'HILQLRZDQLH VWD\FK V\PEROLF]Q\FK F]\OL LGHQW\ILNDWRUyZ SU]HFKRZXMF\FK
ZDUWRFLVWDHXPR*OLZLDVRZRNOXF]RZHconst.
6RZR const SR]ZDOD UyZQLH* QD GHNODURZDQLH ]PLHQQ\FK SRF]RQH ] QDGDZDQLHPLPZDUWRFLSRF]WNRZ\FK
8*\ZDQLH GHILQLFML W\SyZ L VWD\FK V\PEROLF]Q\FK SRSUDZLD F]\WHOQR
SURJUDPXMHJRXQLZHUVDOQRLRGSRUQRQDE
G\

You might also like