01R11.pdf
(
1243 KB
)
Pobierz
Microsoft Word - PROWTP44.DOC
Funkcje i procedury
59
Funkcje i procedury
-DN Z *\FLX WDN L Z SURJUDPRZDQLX RERZL]XMH ]DVDGD *H QLH QDOH*\ URELü WHJR
VDPHJR ZLFHM QL*UD]-HOL QS PXVLV] NLONDNURWQLH REOLF]\ü Z SURJUDPLH ZDUWRü
MDNLHJRVNRPSOLNRZDQHJRZ\UD*HQLDWRRF]\ZLFLHPR*HV]WR]URELüSU]HSLVXMFOXE
SRZLHODMF]DSRPRFRSHUDFMLEORNRZ\FKRGSRZLHGQLHIUDJPHQW\SURJUDPXDOHWUXG
-
QRSRZLHG]LHüE\E\áRWRQDMOHSV]HUR]ZL]DQLH3RSLHUZV]HZ\PDJDWRWURFKSUDF\
3RGUXJLHSURJUDPURELVLGáX*V]\PQLHMHODVW\F]Q\LPQLHMF]\WHOQ\RHOHJDQFMLQLH
PyZLF3RWU]HFLHMDNDNROZLHNSRSUDZNDZWUHFLZ\UD*HQLDPXVL]RVWDüZSURZD
-
G]RQD GR ZV]\VWNLFK SRZLHORQ\FK IUDJPHQWyZ MHOL ]DSRPQLV] FKRüE\ R MHGQ\
m,
Z\QLNLPRJE\üRSáDNDQH
3RZ\*V]H DUJXPHQW\ Z Z\VWDUF]DMF\PVWRSQLXX]DVDGQLDMSRWU]HEZSURZDG]HQLD
UR]ZL]DQLDXPR*OLZLDMFHJRÄXNU\FLH´Z\EUDQHMRSHUDFMLOXEJUXS\RSHUDFMLZSR
-
MHPQLNX GR NWyUHJR GRVWDUF]DOLE\P\ GDQH L RGELHUDOL Z\QLN EH] SU]HMPRZDQLD VL
VSRVREHPSU]HWZDU]DQLDLQIRUPDFMLZHZQWU]5R]ZL]DQLHPWDNLPV
funkcje
i
proce-
dury
2E\GZD SRMFLD V &L MX* ]QDQH
—
ZLHORNURWQLH Z\NRU]\VW\ZDáH SURFHGXU\
i funkcje biblioteczne Pascala (np.
writeln
czy
exp
-
WRZDOLP\ZSRSU]HGQLPUR]G]LDOH
&]\PMHVWIXQNFMD"=SXQNWXZLG]HQLDSURJUDPXNWyU\MZ\NRU]\VWXMHMHVWWRURG]DM
ÄF]DUQHM VNU]\QNL´ SU]HWZDU]DMFHM ZáR*RQH GR QLHM LQIRUPDFMH L ]ZUDFDMFHM RGSR
-
wiedni wynik. Z punktu widzenia programisty natomiast funkcja jest swoistym „mini-
programem” —
]HVWDZHP]DPNQLW\FKZORJLF]QFDáRüLQVWUXNFML,QVWUXNFMHWHPRJ
]DMPRZDü VL Z\NRQ\ZDQLHP GRZROQ\FK RSHUDFML FKRFLD* QD RJyá LFK FHOHP MHVW
SU]HNV]WDáFHQLHZSURZDG]RQ\FKGRIXQNFMLLQIRUPDFMLW]Z
parametrów
GR *GDQHM
SRVWDFL ]ZUDFDQHM QDVWSQLH SRSU]H] QD]Z IXQNFML 3URFHGXUD Uy*QL VL RG IXQNFML
MHG\QLHVSRVREHP]ZUDFDQLDZ\QLNXRF]\PSRZLHP\]DFKZLO
&RQDOH*\]URELü*HE\Z\NRU]\VWDüZSURJUDPLHIXQNFMOXESURFHGXU"3RSLHUZV]H
WU]HEDM]GHILQLRZDüDQDVWSQLHZ\ZRáDü=DMPLMP\VLQDSRF]WHNGHILQLFMNWyUD
polega na:
·
RNUHOHQLX VSRVREX NRQWDNWRZDQLD VL MHM ] RWRF]HQLHP XVWDOHQLX QD]Z\
zestawu parametrów i typu zwracanego wyniku), oraz
EH]]DVWDQDZLDQLDVLQDG]DVDG
LFK G]LDáDQLD 2ND]XMH VL MHGQDN *H Z QLHVNRPSOLNRZDQ\ VSRVyE PR*HV] UyZQLH*
WZRU]\üZáDVQHSURFHGXU\LIXQNFMHFRSR]ZROL&LXQLNQüSURZL]RUNLMDN]DSUH]HQ
60
Turbo Pascal
—
programowanie
·
RNUHOHQLXMHM]DZDUWRFLF]\OL]HVWDZXWZRU]F\FKMLQVWUXNFMLLSRPRFQLF]\FK
RELHNWyZORNDOQ\FKRNWyU\FKSy(QLHM
3
:
function
nazwa-funkcji(lista-parametrów):typ-wyniku;
deklaracje-i-definicje-obiektów lokalnych
begin
instrukcje-UHDOL]XMFH-WUHüIXQNFML
end
;
procedure
nazwa-procedury(lista-parametrów);
deklaracje-i-definicje-obiektów-lokalnych
begin
instrukcje-UHDOL]XMFH-WUHü-procedury
end
;
-
wym
function
lub
procedure
SR NWyU\P QDVWSXMH XPLHV]F]RQD Z QDZLDVDFK
RNUJá\FK OLVWD
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
REUELH]HVWDZXQD]Z\SDUDPHWUyZUR]G]LHORQHVSU]HFLQNDPL:DUWR]DXZD*\ü
*HOLVWDSDUDPHWUyZQLHMHVWRERZL]NRZ\PHOHPHQWHPGHILQLFMLWDNZLFLVWQLHMHPR*
-
OLZRü]GHILQLRZDQLDIXQNFMLEH]SDUDPHWURZHMQLHSRELHUDMFHMLQIRUPDFML]RWRF]HQLD
2VWDWQLP HOHPHQWHP QDJáyZND MHVW RNUHOHQLH W\SX ]ZUDFDQHJR Z\QLNX Z\PDJDQH
Z\áF]QLHGODIXQNFML
begin
i
end
i
PR*HE\üSRSU]HG]RQDGHNODUDFMDPLLGHILQLFMDPLWDN]ZDQ\FKRELHNWyZORNDOQ\FK
Z\NRU]\VW\ZDQ\FKSU]H]IXQNFMGRX*\WNXZHZQWU]QHJR2ELHNWDPLORNDOQ\PL]DM
-
PLHP\ VL V]HU]HM Z GDOV]HM F]FL NVL*NL 6DPH LQVWUXNFMH VNáDGDMFH VL QD WUHü
GHILQLFMLIXQNFMLQLHUy*QLVLQLF]\PRGX*\ZDQ\FKZÄ]Z\Ná\P´SURJUDPLH]Z\MW
-
NLHPWHJR*HZSU]\SDGNXIXQNFMLQDOH*\XPLHFLüZGHILQLFMLLQVWUXNFMSU]\SLVDQLD
nazwa-IXQNFML ZDUWRü-wyniku
XPR*OLZLDMFSU]HND]DQLHREOLF]RQHJRZ\QLNXÄQD]HZQWU]´&RFLHNDZHREHFQRü
WHMLQVWUXNFMLZWUHFLIXQNFMLQLHMHVWVSUDZG]DQDSU]H]NRPSLODWRUMDNPDWRPLHMVFH
np. dla kompilat
RUyZM]\ND&WRWH*]DSRPLQDOVNLPSURJUDPLVWRPPR*HVLSU]\WUDILü
]GHILQLRZDQLHIXQNFMLNRPSOHWQLHQLHSRWUDILFHMVNRPXQLNRZDüVL]RWRF]HQLHPQLH
SRELHUDMFHM*DGQ\FKSDUDPHWUyZLQLH]ZUDFDMFHMZ\QLNXDZLFSUDNW\F]QLHEH]
-
X*\WHF]QHM:DUWR]GDZDüVRELHVSUDZ*HZ\ZRáDQLHIXQNFMLSR]EDZLRQHMLQVWUXNFML
]ZUyFHQLDZ\QLNXGDZUH]XOWDFLHZDUWRüQLHRNUHORQSU]\SDGNRZFRUDF]HMQLH
PR*HE\üX]QDQH]DHIHNWSR]\W\ZQ\
3
'ODXSURV]F]HQLDZGDOV]\PFLJXQDV]\FKUR]ZD*DEG]LHP\X*\ZDOLVáRZDÄIXQNFMD´
]DUyZQR QD RNUHOHQLH IXQNFML MDN L SURFHGXU\ (ZHQWXDOQH Uy*QLFH EGZ\UD(
nie
zaznaczane.
$RWRVNáDGQLDGHILQLFMLIXQNFML
'HILQLFMDUR]SRF]\QDVLWDN]ZDQ\PQDJáyZNLHPV\JQDOL]RZDQ\PVáRZHPNOXF]R
parametrów (argumentów) formalnych
6DPD WUHü IXQNFML ]GHILQLRZDQD MHVW SRPLG]\ VáRZDPL NOXF]RZ\PL
Funkcje i procedury
61
-DNZLGDü]SRZ\*V]\FK]DSLVyZGHILQLFMDIXQNFMLOXESURFHGXU\SU]\SRPLQDPDá\
program. Definicje wszystkich funkcji i procedur wykorzystywanych w programie
PXV] E\ü XPLHV]F]RQH SU]HG PLHMVFHP LFK Z\ZRáDQLD 7R RVWDWQLH PR*H QDVWSLü
w
F]FLRSHUDF\MQHMSURJUDPXD]DWHPGHILQLFMHPXV]SRSU]HG]DüUR]SRF]\QDMFH
ZáDFLZ\SURJUDPVáRZR
begin
OXEZWUHFLLQQHMIXQNFMLOXESURFHGXU\FRZ\PXV]D
RGSRZLHGQLHXáR*HQLHGHILQLFMLZ]JOGHPVLHELH
4
). Struktura programu wykorzys
WXM
-
FHJRIXQNFMHLSURFHGXU\SRZLQQDZLFZ\JOGDüQDVWSXMFR
QDJáyZHN-programu
deklaracje-i-definicje-obiektów-globalnych
definicje-funkcji-i-procedur
begin
F]ü-operacyjna-programu
end.
8PLHV]F]DQLHGHNODUDFMLLGHILQLFMLRELHNWyZJOREDOQ\FKRNWyU\FKUyZQLH*SRZLHP\
Sy(QLHMSU]HGGHILQLFMDPLIXQNFMLQLHMHVWFRSUDZGDRERZL]NRZHFK\ED*HRELHNW\
WHVZ\NRU]\VW\ZDQHZIXQNFMDFKVWDQRZLMHGQDNHOHPHQWGREUHMSUDNW\NLSURJ
ramis-
W\F]QHM1DWRPLDVWMHGQ\P]SRVSROLW\FKEáGyZSRSHáQLDQ\FKSU]H]SRF]WNXMF\FK
SURJUDPLVWyZMHVWSUyEDXPLHV]F]DQLDGHILQLFMLIXQNFMLLSURFHGXUZF]FLRSHUDF\MQHM
progra
PXFRMHVWRF]\ZLFLHQLHOHJDOQH
6DPR ]GHILQLRZDQLH IXQNFML QLF QDP MHV]F]H QLH GDMH MHJR HIHNWHP MHVW Z\áF]QLH
utworzenie odpowiedniego fragmentu kodu wynikowego). Dopiero
Z\ZRáDQLH
funkcji
SRZRGXMHZ\NRQDQLHVNáDGDMF\FKVLQDMHMWUHüLQVWUXNFMLLU]HF]\ZLVWHSU]HNV]WDá
-
FHQLHLQIRUPDFMLSRGDQHMZSRVWDFLSDUDPHWUyZ$E\Z\ZRáDüSURFHGXUOXEIXQNFM
Z\VWDUF]\XPLHFLüZSURJUDPLHMHMQD]ZZUD]]OLVW
parametrów aktualnych
, czyli
Z\UD*H]DZLHUDMF\FKLQIRUPDFMNWyUDPDE\üSU]HWZRU]RQD=DZDUWRüOLVW\SDUD
-
PHWUyZDNWXDOQ\FKPXVLRGSRZLDGDüOLFLHSRGDQHMZGHILQLFMLIXQNFML:V]F]HJyO
-
QRFLMHOLZGHILQLFMLSRPLQLWROLVWSDUDPHWUyZQLHSRGDMHVLLFKSRGF]DVZ\ZR
-
áDQLDPDP\ZyZF]DVGRF]\QLHQLD]IXQNFMOXESURFHGXUEH]SDUDPHWURZ
:\ZRáDQLHSURFHGXU\PDSRVWDü
nazwa-procedury(lista-parametrów-aktualnych);
]DZSU]\SDGNXIXQNFMLNWyUD]ZUDFDREOLF]RQZDUWRüSRSU]H]VZRMQD]ZPXVLV]
GRGDWNRZR]DGEDüRXPLHV]F]HQLHJG]LH]ZUyFRQHJRZ\QLNXQSWDN
zmienna := nazwa-funkcji(lista-parametrów-aktualnych);
RJyOQLH PR*HV] M ]DVWRVRZDü ZV]G]LH WDP JG]LH PR*OLZH MHVW X*\FLH
Z\UD*HQLD
.
4
5
2JUDQLF]HQLHWRPR*QDREHMüZ\NRU]\VWXMFW]ZGHNODUDFMH]DSRZLDGDMFHUR]SRF]\
-
QDQHVáRZHPNOXF]RZ\P
forward
.
5
3DPLWDM *H LGHQW\ILNDWRU IXQNFML X*\W\ Z SURJUDPLH QLH MHVW
l
-
ZDUWRFL D ZLF QLH
PR*HV] X*\ZDü IXQNFML WDN VDPR MDN ]PLHQQHM
QLHPR*HV] QS SU]\SLV\ZDü MHM
ZDUWRFLPR*OLZHWRMHVWZ\áF]QLHZREUELHGHILQLFMLIXQNFMLLPDZyZF]DVQLHFRLQQH
znaczenie).
—
)XQNFMPR*HV] UyZQLH* Z\NRU]\VWDü MDNR HOHPHQW Z\UD*HQLD OXE LQVWUXNFML QS
writeln
62
Turbo Pascal
—
programowanie
3RF]ZV]\RGZHUVML7XUER3DVFDOXPR*OLZLD&L]LJQRURZDQLHZ\QLNX
]ZUDFDQHJRSU]H]IXQNFMF]\OLZ\NRU]\VWDQLHMHMWDNVDPRMDNSURFHGXU\
Jest
Extended Syntax
OXEX*\FLX
RGSRZLDGDMFHMMHMG\UHNW\Z\
{$X+}
.
-
EXMP\]DUDG]LüSUREOHPRZLSU]HGVWDZLRQHPXSRGNRQLHFSRSU]HGQLHJRUR]G]LDáX2WR
poprawiona wersja programu
Bisekcja
Z\NRU]\VWXMFDIXQNFM
program
Bisekcja;
^3URJUDPUR]ZL]XMHUyZQDQLDQLHOLQLRZHPHWRGELVHNFML`
var
DEFUHDO^JUDQLFHSU]HG]LDáXLSXQNWSRG]LDáX`
HSVUHDO^GRNáDGQRü`
function
f(x:real):real; { badana funkcja }
begin
f := 1 -H[SVLQ[FRV[^WUHüIXQNFML`
end
;
begin
writeln('Program znajduje miejsce zerowe funkcji')
writeln('w przedziale [a; b]');
ZULWH3RGDMZDUWRVFD^ZSURZDG(JUDQLFHSU]HG]LDOX`
readln(a);
write('Podaj wartosc b: ');
readln(b);
write('Podaj dokladnosc: ');
readln(eps);
repeat
F DE^SRG]LHOSU]HG]LDáQDSyá`
if
(f(a)*f(c)) < 0
then
^Z\JOGDáDGQLHMSUDZGD"`
b := c { funkcja ma przeciwne znaki w a i c }
else
a := c; { funkcja ma przeciwne znaki w b i c }
writeln(c);
until
DEVIFHSV^EDGDP\ZDUWRüEH]Z]JOGQ`
writeln('Miejsce zerowe: c = ',c:12:8);
readln;
end.
&]\PUy*QLVLQDV]SURJUDPRGZHUVMLSRSU]HGQLHM"3RSLHUZV]HGHILQLFMDEDGDQHM
IXQNFML]RVWDáDZ\RGUEQLRQDMDNRRGG]LHOQ\IUDJPHQWNWyU\áDWZR]QDOH(ü]LQWHUSUH
-
WRZDü L SRSUDZLü 3R GUXJLH WUHü VDPHJR SURJUDPX MHVW F]\WHOQLHMV]D SURJUDP
]DMPXMH VL WHUD] Z\áF]QLH UHDOL]DFMZáDFLZHJR DOJRU\WPX F]\OL V]XNDQLHP SLHU
-
wiastka
pewnej funkcji f(x)
3RWU]HFLH]PQLHMV]\áDVLSRGDWQRüSURJUDPXQDEáG\
(zmiana definicji funkcji wymaga poprawie
QLDW\ONRMHGQHMOLQLMNL]DVWDQyZVLMDN
Z\JOGDáDE\ SRSU]HGQLD ZHUVMD SURJUDPX JG\E\ REOLF]HQLD Z\PDJDá\ X*\FLD NLONX
RGG]LHOQ\FKLQVWUXNFML:UHV]FLHSRF]ZDUWHSURJUDPZ\JOGDáDGQLHMMHVWEDUG]LHM
elegancki i wymaga mniej pisania.
WRPR*OLZHSRZáF]HQLXRSFMLNRPSLODWRUD
8II3RWHMVROLGQHMLQX*FHMGDZFHWHRULLF]DVQDQLHFRSUDNW\NL1DSRF]WHNVSUy
Funkcje i procedury
63
.RU]\VWDQLH]SURFHGXUZ\JOGDEDUG]RSRGREQLH]Z\MWNLHPWHJR*HQLHPXVLV]VL
WURV]F]\üR]DJRVSRGDURZDQLH]ZUDFDQHMZDUWRFLSRQLHZD*MHMQLHPD2JyOQLHU]HF]
ELRUFIXQNFMHZ\NRU]\VW\ZDQHVJáyZQLHWDPJG]LH]DFKRG]LSRWU]HEDREOLF]HQLD
MDNLHM SRMHG\QF]HM ZDUWRFL L SU]HND]DQLD MHM GR NROHMQ\FK LQVWUXNFML SURJUDPX
QDWRPLDVWSURFHGXU\SR]ZDODMQDHIHNW\ZQHZ\NRQ\ZDQLHSRZWDU]DMF\FKVLUXW\
-
QRZ\FK F]\QQRFL $E\ QD SU]\NáDG XDWUDNF\MQLü V]DW JUDILF]Q SURJUDPX PR*HV]
Z\NRU]\VWDüZQLPQDVWSXMFSURFHGXU
procedure
Szlaczek;
begin
for
i := 1
to
60
do
{ wypisz szlaczek }
ZULWH^]áR*RQ\]JZLD]GHN`
ZULWHOQ^SU]HMG(GRQRZHJRZLHUV]D`
end
;
*G]LHXPLHFLüGHILQLFMSURFHGXU\
—
MX*ZLHV]3R]RVWDMHMZ\ZRáDüFRURELVL
bardzo prosto:
Szlaczek;
.D*GHWDNLHZ\ZRáDQLHXPLHFLQDHNUDQLHÄV]ODF]HN´VNáDGDMF\VL]JZLD]GHN
2F]\ZLFLHSRZ\*V]DSURFHGXUDQLHMHVWLGHDOQDERMHOLQS]DFKFH&LVLZ\SLVDü
V]ODF]HN]áR*RQ\]NUHVHNEG]LHV]PXVLDá]PLHQLüMHMWUHü=QDF]QLHOHSV]\PUR]ZL
-
]DQLHPMHVWFRWDNLHJR
procedure
Szlaczek(Znak:char; Ile:byte);
begin
for
i := 1
to
Ile
do
{ wypisz szlaczek }
ZULWH=QDN^]áR*RQ\]LOX]QDNyZ`
writeln;
end
;
6SUyEXMP\ZUDPDFK]DEDZ\Z\NRU]\VWDüQDV]SURFHGXUGRZ\ZLHW
lenia na ekranie
WUyMNWD]áR*RQHJR]JZLD]GHNF]\OLF]HJRWDNLHJR
*
**
***
****
LWG2GSRZLHGQLSURJUDPEG]LHZ\JOGDáWDN
program
Szlaczki;
var
i : integer; { licznik wierszy }
procedure
Szlaczek(Znak : char; Ile : integer);
begin
for
i := 1
to
Ile
do
{ wypisz szlaczek }
ZULWH=QDN^]áR*RQ\]LOX]QDNyZ`
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