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