Professional Documents
Culture Documents
59
Funkcje i procedury
-DN Z *\FLX WDN L Z SURJUDPRZDQLX RERZL]XMH ]DVDGD *H QLH QDOH*\ UREL WHJR
VDPHJR ZL
FHM QL* UD] -HOL QS PXVLV] NLONDNURWQLH REOLF]\ Z SURJUDPLH ZDUWR
MDNLHJRVNRPSOLNRZDQHJRZ\UD*HQLDWRRF]\ZLFLHPR*HV]WR]URELSU]HSLVXMFOXE
SRZLHODMF]DSRPRFRSHUDFMLEORNRZ\FKRGSRZLHGQLHIUDJPHQW\SURJUDPXDOHWUXGQRSRZLHG]LHE\E\RWRQDMOHSV]HUR]ZL]DQLH3RSLHUZV]HZ\PDJDWRWURFK
SUDF\
3RGUXJLHSURJUDPURELVL
GX*V]\PQLHMHODVW\F]Q\LPQLHMF]\WHOQ\RHOHJDQFMLQLH
PyZLF 3R WU]HFLH MDNDNROZLHN SRSUDZND Z WUHFL Z\UD*HQLD PXVL ]RVWD ZSURZDG]RQD GR ZV]\VWNLFK SRZLHORQ\FK IUDJPHQWyZ MHOL ]DSRPQLV] FKRE\ R MHGQ\m,
Z\QLNLPRJE\RSDNDQH
3RZ\*V]H DUJXPHQW\ Z Z\VWDUF]DMF\P VWRSQLX X]DVDGQLDM SRWU]HE
ZSURZDG]HQLD
UR]ZL]DQLD XPR*OLZLDMFHJR XNU\FLH Z\EUDQHM RSHUDFML OXE JUXS\ RSHUDFML Z SRMHPQLNX GR NWyUHJR GRVWDUF]DOLE\P\ GDQH L RGELHUDOL Z\QLN EH] SU]HMPRZDQLD VL
VSRVREHPSU]HWZDU]DQLDLQIRUPDFMLZHZQWU]5R]ZL]DQLHPWDNLPVfunkcje i procedury 2E\GZD SRM
FLD V &L MX* ]QDQH ZLHORNURWQLH Z\NRU]\VW\ZDH SURFHGXU\
i funkcje biblioteczne Pascala (np. writeln czy expEH]]DVWDQDZLDQLDVL
QDG]DVDG
LFK G]LDDQLD 2ND]XMH VL
MHGQDN *H Z QLHVNRPSOLNRZDQ\ VSRVyE PR*HV] UyZQLH*
WZRU]\ZDVQHSURFHGXU\LIXQNFMHFRSR]ZROL&LXQLNQSURZL]RUNLMDN]DSUH]HQWRZDOLP\ZSRSU]HGQLPUR]G]LDOH
&]\PMHVWIXQNFMD"=SXQNWXZLG]HQLDSURJUDPXNWyU\MZ\NRU]\VWXMHMHVWWRURG]DM
F]DUQHM VNU]\QNL SU]HWZDU]DMFHM ZR*RQH GR QLHM LQIRUPDFMH L ]ZUDFDMFHM RGSRwiedni wynik. Z punktu widzenia programisty natomiast funkcja jest swoistym miniprogramem ]HVWDZHP]DPNQL
W\FKZORJLF]QFDRLQVWUXNFML,QVWUXNFMHWHPRJ
]DMPRZD VL
Z\NRQ\ZDQLHP GRZROQ\FK RSHUDFML FKRFLD* QD RJy LFK FHOHP MHVW
SU]HNV]WDFHQLH ZSURZDG]RQ\FK GR IXQNFML LQIRUPDFML W]Z parametrw GR *GDQHM
SRVWDFL ]ZUDFDQHM QDVW
SQLH SRSU]H] QD]Z
IXQNFML 3URFHGXUD Uy*QL VL
RG IXQNFML
MHG\QLHVSRVREHP]ZUDFDQLDZ\QLNXRF]\PSRZLHP\]DFKZLO
&RQDOH*\]UREL*HE\Z\NRU]\VWDZSURJUDPLHIXQNFM
OXESURFHGXU
"3RSLHUZV]H
WU]HED M ]GHILQLRZD D QDVW
SQLH Z\ZRD =DMPLMP\ VL
QD SRF]WHN GHILQLFM NWyUD
polega na:
RNUHOHQLX VSRVREX NRQWDNWRZDQLD VL
MHM ] RWRF]HQLHP XVWDOHQLX QD]Z\
zestawu parametrw i typu zwracanego wyniku), oraz
60
'HILQLFMD UR]SRF]\QD VL
WDN ]ZDQ\P QDJyZNLHP V\JQDOL]RZDQ\P VRZHP NOXF]Rwym function lub procedure SR NWyU\P QDVW
SXMH XPLHV]F]RQD Z QDZLDVDFK
RNUJ\FK OLVWD parametrw (argumentw) formalnych 3DUDPHWU\ WH V\PEROL]XM
ZDUWRFLNWyUH]RVWDQSU]HND]DQHGRIXQNFMLLSU]HWZRU]RQH]DVDPDOLVWDPDSRVWD
lista-nazw : typ; lista-nazw : typ; ...
F]\OL ]DZLHUD ]HVWDZ\ QD]Z SDUDPHWUyZ WHJR VDPHJR W\SX UR]G]LHORQH UHGQLNDPL
(w REU
ELH]HVWDZXQD]Z\SDUDPHWUyZUR]G]LHORQHVSU]HFLQNDPL:DUWR]DXZD*\
*HOLVWDSDUDPHWUyZQLHMHVWRERZL]NRZ\PHOHPHQWHPGHILQLFMLWDNZL
FLVWQLHMHPR*OLZR]GHILQLRZDQLDIXQNFMLEH]SDUDPHWURZHMQLHSRELHUDMFHMLQIRUPDFML]RWRF]HQLD
2VWDWQLP HOHPHQWHP QDJyZND MHVW RNUHOHQLH W\SX ]ZUDFDQHJR Z\QLNX Z\PDJDQH
Z\F]QLHGODIXQNFML
6DPD WUH IXQNFML ]GHILQLRZDQD MHVW SRPL
G]\ VRZDPL NOXF]RZ\PL begin i end
i PR*H E\ SRSU]HG]RQD GHNODUDFMDPL L GHILQLFMDPL WDN ]ZDQ\FK RELHNWyZ ORNDOQ\FK
Z\NRU]\VW\ZDQ\FK SU]H] IXQNFM
GR X*\WNX ZHZQ
WU]QHJR 2ELHNWDPL ORNDOQ\PL ]DMPLHP\ VL
V]HU]HM Z GDOV]HM F]
FL NVL*NL 6DPH LQVWUXNFMH VNDGDMFH VL
QD WUH
GHILQLFMLIXQNFMLQLHUy*QLVL
QLF]\PRGX*\ZDQ\FKZ]Z\N\PSURJUDPLH]Z\MWNLHPWHJR*HZSU]\SDGNXIXQNFMLQDOH*\XPLHFLZGHILQLFMLLQVWUXNFM
SU]\SLVDQLD
nazwa-IXQNFML ZDUWR-wyniku
'ODXSURV]F]HQLDZGDOV]\PFLJXQDV]\FKUR]ZD*DE
G]LHP\X*\ZDOLVRZDIXQNFMD
]DUyZQR QD RNUHOHQLH IXQNFML MDN L SURFHGXU\ (ZHQWXDOQH Uy*QLFH E
G Z\UD(nie
zaznaczane.
Funkcje i procedury
61
-DN ZLGD ] SRZ\*V]\FK ]DSLVyZ GHILQLFMD IXQNFML OXE SURFHGXU\ SU]\SRPLQD PD\
program. Definicje wszystkich funkcji i procedur wykorzystywanych w programie
PXV] E\ XPLHV]F]RQH SU]HG PLHMVFHP LFK Z\ZRDQLD 7R RVWDWQLH PR*H QDVWSL
w F]
FL RSHUDF\MQHM SURJUDPX D ]DWHP GHILQLFMH PXV] SRSU]HG]D UR]SRF]\QDMFH
ZDFLZ\SURJUDPVRZRbeginOXEZWUHFLLQQHMIXQNFMLOXESURFHGXU\FRZ\PXV]D
RGSRZLHGQLH XR*HQLH GHILQLFML Z]JO
GHP VLHELH4). Struktura programu wykorzysWXMFHJRIXQNFMHLSURFHGXU\SRZLQQDZL
FZ\JOGDQDVW
SXMFR
QDJyZHN-programu
deklaracje-i-definicje-obiektw-globalnych
definicje-funkcji-i-procedur
begin
F]
-operacyjna-programu
end.
]DZSU]\SDGNXIXQNFMLNWyUD]ZUDFDREOLF]RQZDUWRSRSU]H]VZRMQD]Z
PXVLV]
GRGDWNRZR]DGEDRXPLHV]F]HQLHJG]LH]ZUyFRQHJRZ\QLNXQSWDN
zmienna := nazwa-funkcji(lista-parametrw-aktualnych);
)XQNFM
PR*HV] UyZQLH* Z\NRU]\VWD MDNR HOHPHQW Z\UD*HQLD OXE LQVWUXNFML QS
writeln RJyOQLH PR*HV] M ]DVWRVRZD ZV]
G]LH WDP JG]LH PR*OLZH MHVW X*\FLH
Z\UD*HQLD5.
4
3DPL
WDM *H LGHQW\ILNDWRU IXQNFML X*\W\ Z SURJUDPLH QLH MHVW l-ZDUWRFL D ZL
F QLH
PR*HV] X*\ZD IXQNFML WDN VDPR MDN ]PLHQQHM QLH PR*HV] QS SU]\SLV\ZD MHM
ZDUWRFLPR*OLZHWRMHVWZ\F]QLHZREU
ELHGHILQLFMLIXQNFMLLPDZyZF]DVQLHFRLQQH
znaczenie).
62
{ badana funkcja }
begin
f := 1 -H[SVLQ[
FRV[^WUHIXQNFML`
end;
begin
writeln('Program znajduje miejsce zerowe funkcji')
writeln('w przedziale [a; b]');
ZULWH
3RGDMZDUWRVFD
^ZSURZDG(JUDQLFHSU]HG]LDOX`
readln(a);
write('Podaj wartosc b: ');
readln(b);
write('Podaj dokladnosc: ');
readln(eps);
repeat
F DE^SRG]LHOSU]HG]LDQDSy`
if (f(a)*f(c)) < 0 then^Z\JOGDDGQLHMSUDZGD"`
b := c
{ funkcja ma przeciwne znaki w a i c }
else
a := c; { funkcja ma przeciwne znaki w b i c }
writeln(c);
untilDEVIFHSV^EDGDP\ZDUWREH]Z]JO
GQ`
writeln('Miejsce zerowe: c = ',c:12:8);
readln;
end.
&]\P Uy*QL VL
QDV] SURJUDP RG ZHUVML SRSU]HGQLHM" 3R SLHUZV]H GHILQLFMD EDGDQHM
IXQNFML]RVWDDZ\RGU
EQLRQDMDNRRGG]LHOQ\IUDJPHQWNWyU\DWZR]QDOH(]LQWHUSUHWRZD L SRSUDZL 3R GUXJLH WUH VDPHJR SURJUDPX MHVW F]\WHOQLHMV]D SURJUDP
]DMPXMH VL
WHUD] Z\F]QLH UHDOL]DFM ZDFLZHJR DOJRU\WPX F]\OL V]XNDQLHP SLHUwiastka pewnej funkcji f(x) 3R WU]HFLH ]PQLHMV]\D VL
SRGDWQR SURJUDPX QD E
G\
(zmiana definicji funkcji wymaga poprawieQLD W\ONR MHGQHM OLQLMNL ]DVWDQyZ VL
MDN
Z\JOGDDE\ SRSU]HGQLD ZHUVMD SURJUDPX JG\E\ REOLF]HQLD Z\PDJD\ X*\FLD NLONX
RGG]LHOQ\FK LQVWUXNFML :UHV]FLH SR F]ZDUWH SURJUDP Z\JOGD DGQLHM MHVW EDUG]LHM
elegancki i wymaga mniej pisania.
Funkcje i procedury
63
.RU]\VWDQLH]SURFHGXUZ\JOGDEDUG]RSRGREQLH]Z\MWNLHPWHJR*HQLHPXVLV]VL
WURV]F]\R]DJRVSRGDURZDQLH]ZUDFDQHMZDUWRFLSRQLHZD*MHMQLHPD2JyOQLHU]HF]
ELRUF IXQNFMH Z\NRU]\VW\ZDQH V JyZQLH WDP JG]LH ]DFKRG]L SRWU]HED REOLF]HQLD
MDNLHM SRMHG\QF]HM ZDUWRFL L SU]HND]DQLD MHM GR NROHMQ\FK LQVWUXNFML SURJUDPX
QDWRPLDVW SURFHGXU\ SR]ZDODM QD HIHNW\ZQH Z\NRQ\ZDQLH SRZWDU]DMF\FK VL
UXW\QRZ\FK F]\QQRFL $E\ QD SU]\NDG XDWUDNF\MQL V]DW
JUDILF]Q SURJUDPX PR*HV]
Z\NRU]\VWDZQLPQDVW
SXMFSURFHGXU
procedure Szlaczek;
begin
for i := 1 to 60 do { wypisz szlaczek }
ZULWH
^]R*RQ\]JZLD]GHN`
ZULWHOQ^SU]HMG(GRQRZHJRZLHUV]D`
end;
6SUyEXMP\ZUDPDFK]DEDZ\Z\NRU]\VWDQDV]SURFHGXU
GRZ\ZLHWlenia na ekranie
WUyMNWD]R*RQHJR]JZLD]GHNF]\OLF]HJRWDNLHJR
*
**
***
****
LWG2GSRZLHGQLSURJUDPE
G]LHZ\JOGDWDN
program Szlaczki;
var
i : integer;
{ licznik wierszy }
64
{ wypisz 20 szlaczkw }
-HOL XZD*DV] *H ZV]\VWNR MHVW 2. VSUyEXM WHUD] ]PLHQL SURJUDP WDN E\ ND*G\
V]ODF]HN PLD GXJR UyZQ NROHMQHM OLF]ELH QLHSDU]\VWHM WM SLHUZV]\ GUXJL LWG
2JyOQLH GXJR V]ODF]ND Z\UD]L VL
Z]RUHP Ile = 2 numer 1 , gdzie numer jest
QXPHUHPZLHUV]DWDNZL
FZ\VWDUF]\]PLHQLJyZQS
WO
SURJUDPXQD
for i := 1 to 20 do { wypisz 20 szlaczkw }
Szlaczek('*', 2*i - 1);
+PQRFK\EDQLHFDNLHPWRFKFLDHX]\VNDSUDZGD"(IHNWNWyUHJRGRZLDGF]\H
XUXFKDPLDMF SURJUDP Z\QLND ] X*\FLD Z SURFHGXU]H L Z\ZRXMFHM M S
WOL WHM VDPHM
zmiennej iDZ\JOGDQDVW
SXMFR
:DUWR
PDE\
MHVWSU]HGSURFHGXU
jest po procedurze
jest po inkrementacji licznika
3U]HELHJS
WOL
1
2
3
2
2
3
4
1
1
1
2
3
3
7
8
.D*GHZ\ZRDQLHSURFHGXU\SRZRGXMHPRG\ILNDFM
]PLHQQHMiNWyUDMHVWMHGQRF]HQLH
OLF]QLNLHP S
WOL Z SURJUDPLH JyZQ\P $E\ WHJR XQLNQ QDOH*DRE\ Z SURFHGXU]H
X*\ MDNR OLF]QLND S
WOL LQQHM ]PLHQQHM 7R ] NROHL QDNDGD QDSURJUDPLVW
RERZL]HN
przejrzenia wszystkich procedXU]QDMGXMF\FKVL
ZSURJUDPLHLZF]HQLHMV]HJR]DGHNODURZDQLD RGSRZLHGQLFK ]PLHQQ\FK WDN E\ VL
QLH QDNDGD\ : HIHNFLH RWU]\PXMHP\NROHMQ\]HVWDZDWZ\FKGRSU]HRF]HQLDSXDSHN5R]ZL]DQLHPWHJRSUREOHPXV
zmienne lokalne, ktrymi jednak zajmiem\VL
MX*ZQDVW
SQ\PUR]G]LDOH7DPUyZQLH*
GRNRF]\P\ RPDZLDQLH SU]HND]\ZDQLD SDUDPHWUyZ L ZDUWRFL ] L GR SURFHGXU L
funkcji.
Zapamietaj
3URFHGXU\ L IXQNFMH SDVFDORZH SR]ZDODM ]DPNQ GDQ\ ]HVWDZ RSHUDFML Z ORJLF]Q FDR SRELHUDMF ] RWRF]HQLD RGSRZLHGQLH LQIRUPDFMH L ]ZUDFDMF
*GDQ\Z\QLN
3U]HGZ\NRU]\VWDQLHPZ\ZRDQLHPIXQNFMLOXESURFHGXU\QDOH*\M]GHILnioZDF]\OLRNUHOLMHMWUHLVSRVyENRPXQLNRZDQLDVL
]RWRF]HQLHP
Funkcje i procedury
'R SU]HND]\ZDQLD LQIRUPDFML GR IXQNFML SURFHGXU\ VX* SDUDPHWU\ DUJXmenty). W trakcie definiowania informacja przekazywana do funkcji
(procedury) symbolizowana jest parametrami formalnymi.
'HILQLFMHIXQNFMLSURFHGXUPXV]E\XPLHV]F]RQHZSURJUDPLHSU]HGF]
FL
RSHUDF\MQLPXV]Z\VW
SRZDZRGSRZLHGQLHMNROHMQRFL
6DPRZ\ZRDQLHIXQNFMLSURFHGXU\RGE\ZDVL
SU]H]SRGDQLHZSURJUDPLHMHM
nazZ\X]XSHQLRQHMRGSRZLHGQLOLVWSDUDPHWUyZDNWXDOQ\FK
6WRVRZDQLHIXQNFMLLSURFHGXUMHVWNRU]\VWQH]HZ]JO
GXQDSRSUDZ
F]\WHOQRFL
L HIHNW\ZQRFL SURJUDPX ]PQLHMV]HQLH SRGDWQRFL QD E
G\ L VNUyFHQLH F]DVX
potrzebnego na jego pisanie.
65