137 lines
6.1 KiB
HTML
137 lines
6.1 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
|
<param name="Keyword" value="procedure">
|
|
<param name="Keyword" value="function">
|
|
<param name="Keyword" value="Result">
|
|
<param name="Keyword" value="Ïðîöåäóðà">
|
|
<param name="Keyword" value="Ôóíêöèÿ">
|
|
<param name="Keyword" value="Ïîäïðîãðàììà">
|
|
</object>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
|
<title></title>
|
|
<link rel="StyleSheet" href="../../default.css">
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<H1>Ïðîöåäóðû è ôóíêöèè: îáçîð</H1>
|
|
<h2>×òî òàêîå ïðîöåäóðû è ôóíêöèè</h2>
|
|
<p>Ïðîöåäóðà èëè ôóíêöèÿ ïðåäñòàâëÿåò ñîáîé ïîñëåäîâàòåëüíîñòü
|
|
îïåðàòîðîâ, êîòîðàÿ èìååò èìÿ, ñïèñîê ïàðàìåòðîâ è ìîæåò áûòü âûçâàíà èç
|
|
ðàçëè÷íûõ ÷àñòåé ïðîãðàììû. Ôóíêöèè, â îòëè÷èå îò ïðîöåäóð, â ðåçóëüòàòå ñâîåãî
|
|
âûïîëíåíèÿ âîçâðàùàþò çíà÷åíèå, êîòîðîå ìîæåò áûòü èñïîëüçîâàíî
|
|
â âûðàæåíèè. Äëÿ åäèíîîáðàçèÿ ôóíêöèè è ïðîöåäóðû íàçûâàþòñÿ
|
|
<i>ïîäïðîãðàììàìè</i>.</p>
|
|
<h2>Îïèñàíèå ïðîöåäóð è ôóíêöèé</h2>
|
|
<p>Ëþáàÿ èñïîëüçóåìàÿ â ïðîãðàììå ïðîöåäóðà èëè ôóíêöèÿ äîëæíà áûòü
|
|
ïðåäâàðèòåëüíî îïèñàíà â ðàçäåëå îïèñàíèé.</p>
|
|
<p>Îïèñàíèå ïðîöåäóðû èìååò âèä:</p>
|
|
<blockquote>
|
|
<p><code><b>procedure</b> </code><code class="codeit">èìÿ</code><code>(</code><code class="codeit">ñïèñîê
|
|
ôîðìàëüíûõ ïàðàìåòðîâ</code><code>);<br>
|
|
</code><code class="codeit">ðàçäåë îïèñàíèé </code><code><br>
|
|
<b>begin</b><br>
|
|
</code><code class="codeit">îïåðàòîðû </code><code><br>
|
|
<b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p>Îïèñàíèå ôóíêöèè èìååò âèä:</p>
|
|
<blockquote>
|
|
<p><code><b>function</b> </code><code class="codeit">èìÿ</code><code>(</code><code class="codeit">ñïèñîê
|
|
ôîðìàëüíûõ ïàðàìåòðîâ</code><code>):
|
|
</code><code class="codeit">òèï âîçâðàùàåìîãî çíà÷åíèÿ</code><code>;<br>
|
|
</code><code class="codeit">ðàçäåë îïèñàíèé </code><code><br>
|
|
<b>begin</b><br>
|
|
</code><code class="codeit">îïåðàòîðû </code><code><br>
|
|
<b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p> Îïåðàòîðû ïîäïðîãðàììû, îêàéìëåííûå
|
|
îïåðàòîðíûìè ñêîáêàìè <code><b>begin</b></code>/<code><b>end</b></code>,
|
|
íàçûâàþòñÿ <i>òåëîì</i> ýòîé ïîäïðîãðàììû.</p>
|
|
<p class="ptprogramup">Ñïèñîê ôîðìàëüíûõ ïàðàìåòðîâ âìåñòå ñ
|
|
îêðóæàþùèìè ñêîáêàìè ìîæåò îòñóòñòâîâàòü. Îí ñîñòîèò èç îäíîé èëè íåñêîëüêèõ
|
|
ñåêöèé, ðàçäåëåííûõ ñèìâîëîì "<code>;</code>".
|
|
Êàæäàÿ ñåêöèÿ ñîñòîèò èç ñïèñêà ïåðåìåííûõ, ïåðå÷èñëÿåìûõ ÷åðåç çàïÿòóþ, ïîñëå
|
|
êîòîðîãî ñëåäóþò äâîåòî÷èå è òèï. Êàæäàÿ ñåêöèÿ ìîæåò ïðåäâàðÿòüñÿ êëþ÷åâûì
|
|
ñëîâîì <code><b>var</b></code> èëè <code><b>const</b></code>, ÷òî óêàçûâàåò íà òî, ÷òî ïàðàìåòðû
|
|
ïåðåäàþòñÿ ïî ññûëêå (ñì.ï. <a href="params.html">Ïàðàìåòðû ïðîöåäóð è ôóíêöèé</a>).
|
|
Òèï ôîðìàëüíîãî ïàðàìåòðà äîëæåí áûòü ëèáî èìåíåì, ëèáî äèíàìè÷åñêèì ìàññèâîì,
|
|
ëèáî ìíîæåñòâîì, ëèáî ïðîöåäóðíîé ïåðåìåííîé (äëÿ ïîñëåäíèõ òðåõ òèïîâ èìååò
|
|
ìåñòî <a href="../Types/typecompatibility.html">ñòðóêòóðíàÿ ýêâèâàëåíòíîñòü òèïîâ</a>).</p>
|
|
<p>Ðàçäåë îïèñàíèé ïðîöåäóðû
|
|
èëè ôóíêöèè óñòðîåí òàê æå, êàê è <a href="../_ProgrStruct_Defs/index_progrstruct.html">ðàçäåë îïèñàíèé</a> îñíîâíîé
|
|
ïðîãðàììû. Çäåñü îïèñûâàþòñÿ òàê íàçûâàåìûå
|
|
<b><font color="#FF0000">
|
|
<i>ëîêàëüíûå</i></font></b> ïåðåìåííûå è êîíñòàíòû, òèïû (çà èñêëþ÷åíèåì êëàññîâ - êëàññû
|
|
ìîæíî îïèñûâàòü òîëüêî ãëîáàëüíî)
|
|
à òàêæå
|
|
âëîæåííûå ïðîöåäóðû è ôóíêöèè. Âñå òàêèå ëîêàëüíûå îáúåêòû äîñòóïíû ëèøü âíóòðè
|
|
äàííîé ïîäïðîãðàììû è íå âèäíû èçâíå.</p>
|
|
<p >Â ðàçäåëå îïèñàíèé ïîäïðîãðàììû ìîæíî îïèñûâàòü äðóãèå
|
|
ïîäïðîãðàììû. Èñêëþ÷åíèå ñîñòàâëÿþò ìåòîäû êëàññà, îïèñûâàåìûå íåïîñðåäñòâåííî â
|
|
òåëå êëàññà: â íèõ íåëüçÿ îïèñûâàòü âëîæåííûå ïîäïðîãðàììû ââèäó ñèíòàêñè÷åñêîé
|
|
íåîäíîçíà÷íîñòè.</p>
|
|
<p>Íàïðèìåð:</p>
|
|
<blockquote>
|
|
<p><code><b>procedure</b> DoAdd(a,b: real; <b>var</b> res: real);<br>
|
|
<b>begin<br>
|
|
</b> res := a + b;<br>
|
|
<b>end</b>;</code></p>
|
|
</blockquote>
|
|
<h2>Âûçîâ ïîäïðîãðàììû</h2>
|
|
<p>Ïîäïðîãðàììà îäèí ðàç îïèñûâàåòñÿ è ìîæåò áûòü ìíîãîêðàòíî âûçâàíà. Äëÿ
|
|
âûçîâà ïðîöåäóðû èñïîëüçóåòñÿ <a href="../Operators/proccall.html">îïåðàòîð
|
|
âûçîâà ïðîöåäóðû</a>:</p>
|
|
<blockquote>
|
|
<p><code>
|
|
<b>begin<br>
|
|
</b> <strong>var</strong> x := ReadInteger;<br> <strong>var</strong>
|
|
y := ReadInteger;<br> var res: integer;<br> DoAdd(x,y,res);<br>
|
|
Print(res); <br> DoAdd(2*x,y,res);<br> Print(res);
|
|
<br><b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p> Äëÿ âûçîâà ôóíêöèè èñïîëüçóåòñÿ
|
|
<a href="../Operations_Expressions/funccall.html">âûðàæåíèå âûçîâà ôóíêöèè</a>.</p>
|
|
<h2>Ïåðåìåííàÿ Result</h2>
|
|
<p>Âíóòðè òåëà ëþáîé ôóíêöèè îïðåäåëåíà ñïåöèàëüíàÿ ïåðåìåííàÿ ñ èìåíåì <code>Result</code>,
|
|
êîòîðàÿ õðàíèò ðåçóëüòàò âû÷èñëåíèÿ ôóíêöèè. Åå òèï ñîâïàäàåò ñ òèïîì
|
|
âîçâðàùàåìîãî çíà÷åíèÿ ôóíêöèè. Íàïðèìåð:</p>
|
|
<blockquote>
|
|
<p ><code><b>function </b>Sum(a,b: real): real;<br>
|
|
<b>begin<br>
|
|
</b>Result := a + b;<br>
|
|
<b>end;</b></code></p>
|
|
<p ><code><b>function</b> MinElement(a: <b>
|
|
array of</b> real): real;<br>
|
|
<b>begin</b><br>
|
|
Result := real.MaxValue;<br>
|
|
<b>foreach</b> <strong>var </strong>x <b>in</b>
|
|
a <b>do</b><br>
|
|
<b>if</b> x < Result <b>then</b>
|
|
<br>
|
|
Result := x;<br>
|
|
<b>end</b>;</code></p>
|
|
<p ><code><strong>begin</strong><br> var a := Seq(1,5,3);<br>
|
|
writeln(MinElement(a) + Sum(2,3));<br><strong>end</strong>.</code></p>
|
|
</blockquote>
|
|
<p >Åñëè âíóòðè ôóíêöèè íå ïðèñâîèòü ïåðåìåííîé <code>Result</code> íåêîòîðîå
|
|
çíà÷åíèå, òî ôóíêöèÿ âåðíåò â ðåçóëüòàòå ñâîåãî âûçîâà íåïðåäñêàçóåìîå çíà÷åíèå.</p>
|
|
<h2 >Óïðîùåííûé ñèíòàêñèñ îïèñàíèÿ ïîäïðîãðàìì</h2>
|
|
<p >Â <span lang="en-us">PascalABC.NET </span>èìååòñÿ óïðîùåííûé ñèíòàêñèñ
|
|
îïèñàíèÿ îäíîîïåðàòîðíûõ ïðîöåäóð: </p>
|
|
<blockquote>
|
|
<p><code><b>procedure</b> <span lang="en-us">WriteStar := write('*');</span></code></p>
|
|
</blockquote>
|
|
<p >Àíàëîãè÷íûé ñèíòàêñèñ èìååòñÿ äëÿ ôóíêöèé, âû÷èñëÿþùèõ îäíî âûðàæåíèå:</p>
|
|
<blockquote>
|
|
<p ><code><b>function</b> Add(a,b: real): real<span lang="en-us"> := </span>a + b;</code></p>
|
|
</blockquote>
|
|
<p >Ïðè ýòîì â ðÿäå ñëó÷àåâ äëÿ âîçâðàùàåìîãî çíà÷åíèÿ ôóíêöèè âîçìîæåí àâòîâûâîä òèïîâ:</p>
|
|
<blockquote>
|
|
<p ><code><b>function</b> Add(a,b: real)<span lang="en-us"> := </span>a + b;</code></p>
|
|
</blockquote>
|
|
</body>
|
|
|
|
</html>
|