felhasználói funkciókat
Funkció, mint egy tárgy nyelv Pascal egy másik változata a végrehajtása a technológia építeni a programok segítségével a csoportosulás szerkezetét. Azt is mondhatjuk, hogy a funkció egy speciális fajtája, egy bizonyos típusú eljárásokat, nevezetesen eljárások egy változó paraméter.
Funkció eltér az eljárás csak azért, mert mindig visszatér a hívó pont egy skalár értéket. A funkció, mint az eljárás magában foglalhatja a értékek vagy paraméterek nélkülük (lásd. Ábra. 33).
Az általános formája a függvényfejlécben rekord
Függvény neve (paraméter lista: típus): type;
Függvény neve. írja;
Az eredmény típusa az a típusú függvény értékét. A paraméter lista ugyanaz, mint az eljárás, de itt az összes paraméter az érveket. A változó nevét, amely tárolja a függvény értéke egybeesik a függvény neve.
Ábra. 33. A szintaxisdiagramban a függvényfejlécben
Tehát a függvényfejlécben eltér az eljárás fejléc nem csak megváltoztatni a szavakat a FUNCTION ELJÁRÁS, hanem a törlési eredmények, állítsa be a paramétereket hozzárendelésével típusát a függvény neve:
ELJÁRÁS <имя процедуры> (Argumentum;
VAR paraméter-lista: Type);
FUNKCIÓ <имя функции> (Argumentum): típus;
Másik jellemzője a leírást a funkció jelenléte legalább egy értékadó operátor bal oldalán van a függvény nevét meghatározásában, és a jobb oldalon - a kifejezés, az eredmény kiszámítása a funkciót. Nyilvánvaló, hogy az a fajta ez a kifejezés kell egyeznie a típusát a fejlécben megadott funkciót.
Hívás funkció is különbözik az eljárás hívás. Ha a hívás eljárást végzik egy speciális hívás operátor (kezelő eljárások), a funkció hivatkozva csak egy bizonyos kifejezést. Annak érdekében, hogy hajtsa végre a hívást, akkor kell használni, hogy a lista az aktuális paraméterek bármelyike kifejezése típusú egybeesik a típus a függvény értékét. Az ugyanazon kifejezés, amelyben a függvény neve, lehet jobb oldalán egy értékadás, része egy logikai kifejezés, és így tovább.
Köztudott, hogy a Pascal egy sor standard funkciók. Azonban ez a készlet korlátozott. A felhasználó bővíteni a listát a választható funkciók létrehozásával feladataikat - Felhasználói funkciók. Például, a Pascal van SQR (X) = X 2. de a funkció F (X) = X n. ahol n tartozik az egész számok Z, nem. Az előzőekben meghatározott fogalom egy függvény, akkor létrehozhat erre univerzális funkció, amely lehetővé tenné, hogy valódi mértékét bármely egész kitevő.
Mi határozza meg a valós függvény erő, amely meg van egy-két érv paraméter - a rekordot, és a létesítmény a mértéke:
funkció a POWER (faktor: valós; EXP: integer): valós;
var COUNT: integer; TFACTOR: real;
ha EXP = 0, akkor a POWER: = 1
COUNT: = 2 és ABS (EXP) do
ha EXP <0 then POWER := 1/TFACTOR
ha N <0 then writeln ('Нет факториала')
mást writeln ( 'Faktoriális', N, 'egyenlő', faktoriális (N))
Látjuk, hogy a jellegzetes tulajdonsága a beépített funkciók a testét egy értékadás:
Faktoriális: = érték * faktoriális (ÉRTÉK - 1)
ahol van egy hívás definiált függvény. Itt faktoriális azonosító bal oldalán az üzemeltető nevét egy változó tárolja a függvény értékét, és a jobb oldalon - a nevét a hívott függvény.
Egy fontos pont a készítmény bármely rekurzív függvény, hogy megszervezze a kilépés a rekurziót. Néhány egyszerű esetekben nem kell rekurzív megoldás. Rekurzív folyamatot kell lépésről lépésre, így egyszerűsíti a feladatot, a végén, nem volt olyan rekurzív megoldás rá. E funkciók ellenőrizni kell értékeit érv a döntés, hogy teljes. Ebben az esetben, egy feltétele a rekurzió befejezéséhez értéke = 0.
Leírásakor rekurzív függvények jól kell számítási folyamatot. Minden rekurzív két szakaszból áll: a mélyedés (merítés) a rekurzió és kilép. Az első szakaszban nem kerül sor olyan számításokat, és idáig csak a dolgozó formula speciális operandusok. A második lépés a számítási eljárást szabott képletek.
Tekintsük a példa a rekurzív folyamat faktoriális N = 3. kapjuk az alábbi lépéseket:
1. N = 3, ahol N <> 0. Ekkor faktoriális: = 3 * faktoriális (2);
2. N = 2, ahol n <> 0. Ekkor faktoriális: = 2 * faktoriális (1);
3. N = 1, ahol N <> 0. Ekkor faktoriális: = 1 * faktoriális (0);
4. N = 0, tehát, faktoriális: = 1,
azaz Kaptunk nem rekurzív értéket. Mélyül a rekurzió befejeződött, lépjen ki a folyamat további jön ki belőle a teljesítményét a szükséges számításokat.
Az expressziós faktoriális 1 * (0) helyett faktoriális (0) helyettesíti a értéke 1, számított termék 1 * 1, ami lesz faktoriális értéke (1). Az expressziós 2 * faktoriális (1) helyett faktoriális (1) helyettesíti a értéke 1, 2 * 1 számítjuk, és lesz egy értéket faktoriális (2). Az expressziós 3 * faktoriális (2) helyett faktoriális (2) helyettesíti a értéke 2, 3 * 2 számítjuk, és válik a változó értékét faktoriális, amely visszatér a fő rutin 3!.
Mindez kétlépéses rekurzív folyamat végrehajtása a számítógép memóriájában segítségével a szervezet az ő verem rekurziót. Az a tény, hogy a tároló a változó N (és ezáltal változó érték) allokált egyetlen sejt és verem N. Ebben verem elemzi szekvenciálisan vannak rögzítve értékek 3, 2, 1, 0, 0 érték annak a jele, a végén a köteg töltés . Ezután a ciklus kezdődik faktoriális test: = faktoriális * N, ahol N-értékeket a választjuk egymás után a köteget a sorrendben 1, 2, 3. A kezdeti értéke a változó faktoriális egység, amely a 0 értéket!.
Job verem bemutatott alábbi táblázat tartalmazza:
Kitöltése a verem (mélyülő)
Összefoglalva, azt mutatják, hogy gyakran rekurzív függvények épített sokkal könnyebb, mint a „normális”, bár nyilvánvaló, hogy nem minden funkció lehet alakítani egy rekurzív. Tesszük ezt a példát a már megépített korábbi teljesítmény függvényében.
Ez a funkció nyilvánvalóan rekurzív természete alapján annak meghatározása:
X n = 1, ha n = 0;
X n = X n-1 * X, ha n> 1.
Az alábbi rekurzív függvény értéket számító fokozat:
funkció a POWER (faktor: valós; EXPONENT: integer): REAL;
ha EXPONENT <0
majd a POWER: = 1 / POWER (FACTOR, abs (EXPONENT))
ha EXPONENT> 0
majd a POWER: = tényező * TELJESÍTMÉNY (faktor EXPONENT - 1)
Megjegyzés. Amellett, hogy a rekurzív függvények Pascalban ugyanazon az elven lehet meghatározni és rekurzív eljárások. Ezek részletei lesz szó a következő részekben, amíg megmutatjuk, hogyan rekurzív függvény lehet alakítani egy rekurzív eljárás példáján faktoriális:
eljárás faktoriális (értéke: integer; var F: integer);
Ha az érték = 0, akkor F: = 1
máshol kezdődik faktoriális (ÉRTÉK - 1, F);
Ott van, ellentétben faktoriális függvény kiszámítására N! meg kell hívni ezt az eljárást faktoriális eljárás nyilatkozatot (N, FN), ahol FN - változó a visszatérő értéket az eljárás N!.
1. Milyen típusú rutinok használják Pascal?
2. Mit kétféle eljárások osztható?
4. Mely szakaszban a program kerülnek felhasználó eljárásokat?
5. Mi a szerepe a paramétereket az eljárás?
6. Mi a különbség a változó paraméterek érték szerinti?
7. Hogyan az aktuális paramétereket a formális paraméterek?
8. Amennyiben a bejelentett helyi és globális változók?
9. Hogyan eljárásnak nevezik a programban?
10. Mi a különbség a címet a funkció eljárások fejléc?
11. Milyen szükségképpen változó kap értéket a függvény törzsében?
12. Mivel a program a funkciót nevezik?
13. Mi az a fémjelzi egy rekurzív függvényt?
14. Hogyan működik egy rekurzív függvény kilép a rekurzió?
15. A célkitűzések a típus legjobb megvalósítható rekurzív függvények?