ÿþ<HTML> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"> <META HTTP-EQUIV="Content-Language" CONTENT="pl"> <TITLE>P A S C A L</TITLE> <link rel="Stylesheet" type="text/css" href="../../pliki/body.css"> <body bgcolor=#ffffff> <h3> Procedury</h3> <p align=justify><font size=3> Procedury i funkcje s± to maBe programy, kt&oacute;re mo|na wielokrotnie stosowa w programie. Praktyczno¶ ich najlepiej uwidacznia si w dBugich programach gdzie okre¶lone bloki programu zapisane wBa¶nie w procedurach mo|na po om&oacute;wieniu rozdzieli pomidzy poszczeg&oacute;lne grupy os&oacute;b pisz±cych program. Ka|da grupa samodzielnie pisze kod a nastpnie jest on przenoszony do gB&oacute;wnego programu, co znacznie przyspiesza powstawanie oprogramowania. <br> Procedury i funkcje deklaruje si na pocz±tku programu po deklaracji staBych i zmiennych w bloku <b>var</b> a przed kodem programu zaczynaj±cego si od sBowa kluczowego <b>begin</b> (kompilator musi zna procedur przed jej zastosowaniem). <br> <br><b> Deklaracja procedury:<br></b> <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td> <i><b>procedure</b> nazwa_procedury(lista_parametr&oacute;w_formalnych);<br> {deklaracje <a href="lokalne.html"><b>lokalnych</b></a> zmiennych, staBych i typ&oacute;w} <br> &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{tre¶ procedury}<br> &nbsp;&nbsp;&nbsp;<b>End</b>; </td></tr></table> </div> Mamy trzy sposoby deklaracji procedur - zwi±zane jest to z przekazywanymi parametrami: <table width=100% bgcolor=#ABCDEF><tr><td> <b><li>Bez parametr&oacute;w:</b> <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td> <i><b>procedure</b> nazwa_procedury;<br> {deklaracje <a href="lokalne.html"><b>lokalnych</b></a> zmiennych, staBych i typ&oacute;w} <br> &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{tre¶ procedury}<br> &nbsp;&nbsp;&nbsp;<b>End</b>; </td></tr></table> </div> &nbsp;&nbsp;&nbsp;&nbsp;wywoBanie procedury: <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td><i><b>nazwa_procedury;</b> </td></tr></table></i></div> </td></tr></table><br> <table width=100% bgcolor=#BBCDEF><tr><td> <b><li>Z parametrem przekazywanym przez warto¶</b>:<br></b> <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td> <i><b>procedure</b> nazwa_procedury(lista_nazw:typ, ... ,lista_nazw:typ);<br> {deklaracje <a href="lokalne.html"><b>lokalnych</b></a> zmiennych, staBych i typ&oacute;w} <br> &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{tre¶ procedury}<br> &nbsp;&nbsp;&nbsp;<b>End</b>; </td></tr></table> </div> &nbsp;&nbsp;&nbsp;&nbsp;wywoBanie procedury: <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td><b><i>nazwa_procedury(zmienna1, ... ,zmiennaN);</b></td></tr></table> </i></div><br><br> <div align=center> <table width=60%><tr><td> <i><p align=justify>Przekazywanie przez warto¶ odbywa si na zasadzie otrzymywania kopi warto¶ci z programu gB&oacute;wnego i wykonywaniu dziaBaD na niej. DziaBania te zapisywane sa na stosie i po zakoDczeniu dziaBania procedury kasowane. <b>Warto¶ oryginalna przekazanego parametru nie ulega zmianie. </b></i></td></tr></table> </div> </td></tr></table><br> <table width=100% bgcolor=#CBCDEF><tr><td> <b><li>Z parametrem przekazywanym przez nazw:</b> <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td> <i><b>procedure</b> nazwa_procedury(<b>var </b>lista_nazw:typ, ... ,lista_nazw:typ);<br> {deklaracje <a href="lokalne.html"><b>lokalnych</b></a> zmiennych, staBych i typ&oacute;w} <br> &nbsp;&nbsp;&nbsp;<b>Begin</b><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{tre¶ procedury}<br> &nbsp;&nbsp;&nbsp;<b>End</b>; </td></tr></table> </div> &nbsp;&nbsp;&nbsp;&nbsp;wywoBanie procedury: <div align=center> <table width=60% bgcolor=#FFFFFF><tr><td><b><i>nazwa_procedury(zmienna1, ... ,zmiennaN);</b></td></tr></table> </i></div><br><br> <div align=center> <table width=60%><tr><td> <i><p align=justify>Przekazywanie przez warto¶ odbywa si na zasadzie wska=nika pokazuj±cego na adres pamici zajtej przez zmienn± i daje mozliwo¶ <b>modyfikowania tej zmiennej</b>. Sam wska|nik tworzy stos obliczeniowy, kt&oacute;ry jest kasowany po zakoDczeniu dziaBania procedury. <b>Wska=nik miaB dostp do oryginaBu, kt&oacute;ry ulegB zmianie.<br> Procedury nie zwracaj± warto¶ci obliczane!!! </b></i></td></tr></table> </td></tr></table><br>