You are on page 1of 7

Funkcje i procedury

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]HSLVXMF OXE
SRZLHODMF]DSRPRFRSHUDFMLEORNRZ\FK RGSRZLHGQLHIUDJPHQW\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 exp EH]]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

Turbo Pascal programowanie


RNUHOHQLXMHM]DZDUWRFL F]\OL]HVWDZXWZRU]F\FKMLQVWUXNFMLLSRPRFQLF]\FK
RELHNWyZORNDOQ\FKRNWyU\FKSy(QLHM 
$RWRVNDGQLDGHILQLFMLIXQNFML3:
function nazwa-funkcji(lista-parametrw):typ-wyniku;
deklaracje-i-definicje-obiektw lokalnych
begin
instrukcje-UHDOL]XMFH-WUHIXQNFML
end;
procedure nazwa-procedury(lista-parametrw);
deklaracje-i-definicje-obiektw-lokalnych
begin
instrukcje-UHDOL]XMFH-WUH-procedury
end;

'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

XPR*OLZLDMF SU]HND]DQLH REOLF]RQHJR Z\QLNX QD ]HZQWU]&RFLHNDZHREHFQR


WHMLQVWUXNFMLZWUHFLIXQNFMLQLHMHVWVSUDZG]DQDSU]H]NRPSLODWRU MDNPDWRPLHMVFH
np. dla kompilatRUyZM
]\ND& WRWH*]DSRPLQDOVNLPSURJUDPLVWRPPR*HVL
SU]\WUDIL
]GHILQLRZDQLHIXQNFMLNRPSOHWQLHQLHSRWUDILFHMVNRPXQLNRZDVL
]RWRF]HQLHP QLH
SRELHUDMFHM *DGQ\FK SDUDPHWUyZ L QLH ]ZUDFDMFHM Z\QLNX  D ZL
F SUDNW\F]QLH EH]X*\WHF]QHM :DUWR ]GDZD VRELH VSUDZ
 *H Z\ZRDQLH IXQNFML SR]EDZLRQHM LQVWUXNFML
]ZUyFHQLD Z\QLNX GD Z UH]XOWDFLH ZDUWR QLHRNUHORQ SU]\SDGNRZ  FR UDF]HM QLH
PR*HE\X]QDQH]DHIHNWSR]\W\ZQ\
3

'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\SURJUDPVRZRbegin OXEZWUHFLLQQHMIXQNFMLOXESURFHGXU\ 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.

8PLHV]F]DQLH GHNODUDFML L GHILQLFML RELHNWyZ JOREDOQ\FK R NWyU\FK UyZQLH* SRZLHP\


Sy(QLHM SU]HGGHILQLFMDPLIXQNFMLQLHMHVWFRSUDZGDRERZL]NRZH FK\ED*HRELHNW\
WHVZ\NRU]\VW\ZDQHZIXQNFMDFK VWDQRZLMHGQDNHOHPHQWGREUHMSUDNW\NLSURJramisW\F]QHM 1DWRPLDVW MHGQ\P ] SRVSROLW\FK E
GyZ SRSHQLDQ\FK SU]H] SRF]WNXMF\FK
SURJUDPLVWyZMHVWSUyEDXPLHV]F]DQLDGHILQLFMLIXQNFMLLSURFHGXUZF]
FLRSHUDF\MQHM
prograPXFRMHVWRF]\ZLFLHQLHOHJDOQH
6DPR ]GHILQLRZDQLH IXQNFML QLF QDP MHV]F]H QLH GDMH MHJR HIHNWHP MHVW Z\F]QLH
utworzenie odpowiedniego fragmentu kodu wynikowego). Dopiero Z\ZRDQLH funkcji
SRZRGXMH Z\NRQDQLH VNDGDMF\FK VL
 QD MHM WUH LQVWUXNFML L U]HF]\ZLVWH SU]HNV]WDFHQLH LQIRUPDFML SRGDQHM Z SRVWDFL SDUDPHWUyZ $E\ Z\ZRDSURFHGXU
OXEIXQNFM

Z\VWDUF]\ XPLHFL Z SURJUDPLH MHM QD]Z
 ZUD] ] OLVW parametrw aktualnych, czyli
Z\UD*H ]DZLHUDMF\FK LQIRUPDFM
 NWyUD PD E\ SU]HWZRU]RQD =DZDUWR OLVW\ SDUDPHWUyZ DNWXDOQ\FK PXVL RGSRZLDGD OLFLH SRGDQHM Z GHILQLFML IXQNFML : V]F]HJyOQRFL MHOL Z GHILQLFML SRPLQL
WR OLVW
 SDUDPHWUyZ QLH SRGDMH VL
 LFK SRGF]DV Z\ZRDQLD PDP\ZyZF]DVGRF]\QLHQLD]IXQNFMOXESURFHGXUEH]SDUDPHWURZ 
:\ZRDQLHSURFHGXU\PDSRVWD
nazwa-procedury(lista-parametrw-aktualnych);

]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

2JUDQLF]HQLH WR PR*QD REHM Z\NRU]\VWXMF W]Z GHNODUDFMH ]DSRZLDGDMFH UR]SRF]\QDQHVRZHPNOXF]RZ\Pforward.

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
ZDUWRFL PR*OLZHWRMHVWZ\F]QLHZREU
ELHGHILQLFMLIXQNFMLLPDZyZF]DVQLHFRLQQH
znaczenie).

62

Turbo Pascal programowanie


3RF]ZV]\RGZHUVML7XUER3DVFDOXPR*OLZLD&L]LJQRURZDQLHZ\QLNX
]ZUDFDQHJRSU]H]IXQNFM
F]\OLZ\NRU]\VWDQLHMHMWDNVDPRMDNSURFHGXU\
Jest WRPR*OLZHSRZF]HQLXRSFMLNRPSLODWRUDExtended SyntaxOXEX*\FLX
RGSRZLDGDMFHMMHMG\UHNW\Z\{$X+}.
8II3RWHMVROLGQHM LQX*FHM GDZFHWHRULLF]DVQDQLHFRSUDNW\NL1DSRF]WHNVSUyEXMP\]DUDG]LSUREOHPRZLSU]HGVWDZLRQHPXSRGNRQLHFSRSU]HGQLHJRUR]G]LDX2WR
poprawiona wersja programu BisekcjaZ\NRU]\VWXMFDIXQNFM

program Bisekcja;
^3URJUDPUR]ZL]XMHUyZQDQLDQLHOLQLRZHPHWRGELVHNFML`
var
DEFUHDO^JUDQLFHSU]HG]LDXLSXQNWSRG]LDX`
HSVUHDO^GRNDGQR`
function f(x:real):real;

{ badana funkcja }

begin
f := 1 -H[S VLQ [ 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);
untilDEV I F HSV^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]ZUDFDQHMZDUWRFL SRQLHZD*MHMQLHPD 2JyOQLHU]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;

*G]LH XPLHFL GHILQLFM


 SURFHGXU\  MX* ZLHV] 3R]RVWDMH M Z\ZRD FR UREL VL

bardzo prosto:
Szlaczek;

.D*GH WDNLH Z\ZRDQLH XPLHFL QD HNUDQLH V]ODF]HN VNDGDMF\ VL


 ]  JZLD]GHN
2F]\ZLFLH SRZ\*V]D SURFHGXUD QLH MHVW LGHDOQD ER MHOL QS ]DFKFH &L VL
 Z\SLVD
V]ODF]HN]R*RQ\]NUHVHNE
G]LHV]PXVLD]PLHQLMHMWUH=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]\VWDQDV]SURFHGXU
GRZ\ZLHWlenia na ekranie
WUyMNWD]R*RQHJR]JZLD]GHNF]\OLF]HJRWDNLHJR
*
**
***
****

LWG2GSRZLHGQLSURJUDPE
G]LHZ\JOGDWDN
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`

64

Turbo Pascal programowanie


writeln
end;
begin
for i := 1 to 20 do
Szlaczek('*', i);
end.

{ 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]\VWDQLHP Z\ZRDQLHP IXQNFMLOXESURFHGXU\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.
'HILQLFMHIXQNFML SURFHGXU PXV]E\XPLHV]F]RQHZSURJUDPLHSU]HGF]
FL
RSHUDF\MQLPXV]Z\VW
SRZDZRGSRZLHGQLHMNROHMQRFL
6DPRZ\ZRDQLHIXQNFML SURFHGXU\ 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

You might also like