Alprogramok (eljárások és funkciók)

Új problémák megoldásakor megpróbálhat korábban írott programokat használni. Az algoritmus, amelyet korábban kifejlesztettek és teljesen más algoritmusok részeként használták, egy kiegészítő algoritmusnak nevezik. A segéd algoritmusok használata lehetővé teszi számunkra, hogy a problémát részekre bontsuk és felépítsük.

Az egész program feltételesen két részre osztható: a fő részből és a segédből. A fő részben a legegyszerűbb információfeldolgozás valósul meg, és a különböző segédmodulokhoz (szubrutinok) való hozzáférés megszervezése történik.

A segédalgoritmus más segédeszközöket is hívhat, az ilyen híváslánc hossza elméletileg korlátlan. A továbbiakban szinonimákként a következő szópárokat használjuk: algoritmus és program, segéd algoritmus és szubrutin, parancs és operátor, program és modul. A segéd- és alapalgoritmusok önmagukban, de egymáshoz viszonyítva nem önmagukban.

Segédalgoritmusok használatakor figyelembe kell venni az eredeti adatok értékének átvitelének módját és az eredmények számát. A segédalgoritmus érvei # 151 olyan változók, amelyekben az eredeti adatokat el kell helyezni a megfelelő részfeladat megoldásához. A segéd algoritmus eredményei # 151 is olyan változók, amelyek tartalmazzák ezeket a részfeladatok megoldását, és az eredmény egy speciális művelet, amelyet a számítógép a szubrutin hatása alatt végez.

A szubrutinok kétféle lehetnek: egy paraméter nélküli alprogram és egy paraméterrel rendelkező alprogram. A szubrutin elérése a főprogram bármely pontjáról vagy egy másik szubrutinból tetszőleges számú alkalommal szervezhető.

Alprogramokkal való együttműködés során a formális és tényleges paraméterek fogalma fontos. Formai paraméterek # 151; ezek a szubrutin bemeneti adatazonosítók. Ha a formális paraméterek konkrét értékeket kapnak, ezeket tényleges értékeknek nevezik. A formális paraméterek csak abban a programban kaphatnak konkrét értékeket, amelyek hozzáférnek ehhez a modul-szubrutinhoz. A tényleges paraméterek rögzítésének típusát és sorrendjét meg kell egyeznie a formális paraméterekkel. Ellenkező esetben a program eredménye kiszámíthatatlan. Ebből következik, hogy a tényleges paraméterek akkor használatosak, amikor a szubrutint a főből érik el, és a formális paramétereket # 151; csak a modulban.

Paraméterekkel rendelkező alprogramokat használnak az ismétlődő műveletek rögzítéséhez különböző kezdeti adatokkal. A paraméterekkel ellátott szubrutinok kétféleképpen oszthatók meg: szubroutines-függvények és egyszerűen paraméterekkel rendelkező alprogramok (ezeket eljárásoknak nevezik).

A szubrutinok paraméterekkel történő összeállításakor a következő szabályokat kell betartani:

1) minden szubrutinnak saját neve és formális paramétereinek listája;

2) a főprogramból származó eljárást egy hívásparanccsal hívják, amely formában nem tér el a végrehajtó csapat hívásától. Az eredmény egy vagy több változóhoz van hozzárendelve, amelyek a formális paraméterlistában szerepelnek. De az eredmény természetesen nemcsak a változók értékei, hanem a számítógép által végzett műveletek is lehetnek.

1. példa. Használjuk az algoritmust, hogy megtaláljuk a két természetes szám legnagyobb közös osztóját a probléma megoldásának segédjeként: a frakciók kivonásának programját (a.db. # 151; természetes számok). Az eredmény egy közönséges irreducibilis frakció formájában jelenik meg.

Az eljárás a következőképpen szól:

A tényleges értékek szubrutinba történő átvitelével a Turbo Pascal 7.0-ban a változók-változók kerülnek kiválasztásra. Értékek paramétereket. paraméterek-állandók és nyitott típusú tömbök. nyitott típusú vonalak. eljárásparamétereket. paraméter-funkciók (részletek # 151; a szakirodalomban).

A függvény (az eljárással ellentétben) mindig egyetlen értéket ad vissza.

Megmutatjuk, hogyan változik a példa alprogramja, ha függvényként íródik.

Tehát a paraméterek listája után a funkció értékének típusát jelöljük, és a funkció testében legalább egyszer van olyan változó hozzárendelése, amelynek neve megegyezik az értéknek megfelelő funkció nevével.

A függvényhívás a következő:

Általánosságban egy függvényhívás jelenhet meg egy olyan kifejezésben, amely: a hozzárendelési utasítás jobb oldalán, a kimeneti eljárásban, mint egy másik szubrutin hívásának tényleges paramétere, és így tovább.

A problémák megoldásakor tanácsos elemezni a feltételt, írni a megoldást nagy blokkokba (amelyek nem Pascal-operátorok), minden blokk részletezésére (blokkként írva, esetleg nem Pascal-operátorok) stb. Folytassa mindaddig, amíg mindegyik blokkot nyelvi operátorok segítségével végrehajtja.

2. példa. Természetes szám n. A szám első és utolsó számjegyeinek átrendezése.

Láthatja, hogy szükség van a Logic Function Impossible-ra, amely felderíti, hogy lehetséges-e egy permutáció, és a Change eljárás, amely ezt a permutációt (ha lehetséges) végzi el.

Itt meg kell adni a számfunkciót, amely a természetes számbeviteli számjegyek számát adja vissza (mivel az Impossible funkció a hívását tartalmazza, a számfüggvénynek meg kell előznie a leírásban).

Végül az utolsó eljárás.

Az önmagukat nevező alprogramok szintén lehetségesek. Ezeket rekurzívnak nevezik. Az ilyen szubrutinok létrehozása gyönyörű programozási technika, de nem mindig célszerű a számítógép túlzott memóriafelhasználása miatt.

3. példa: Keresse meg a maximális számot egy adott természetes szám rekordjában.

Ez a webhely az uCoz-val készült

Kapcsolódó cikkek