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?

Kapcsolódó cikkek