Array az eljárás paramétereként
A program teljesen behelyezhető egy blokkba. De általában a valódi programok jelentős mennyiségekkel rendelkeznek, és az egyik blokkba való elhelyezés megnehezíti azok írását és hibaelhárítását. Ezenkívül bármelyik feladat viszonylag független részfeladatokra osztható. Az egyes részfeladatok különálló blokk formájában történő megtervezése megkönnyíti a program munkamegosztását önálló szakaszokra és a változások gyors bevezetését.
A részfeladatokhoz rendelt blokkokat programegységeknek nevezzük. Fortranban háromféle független programegység létezik:
A független szoftveregységek független címkézési rendszerekkel rendelkeznek, és külön-külön összeállíthatók. A független program egység összes eleme helyi. azaz az egységen belül állnak rendelkezésre, és kívülről nem érhetők el.
A független program egy részei lehetnek belső eljárások - eljárások, amelyek leírása a szállító programban van.
A fő program minden program kötelező eleme. A program indításakor az operációs rendszer átirányítja a vezérlést a főprogram üzemeltetőire. A főprogramnak egyedinek kell lennie, különben lehetetlen meghatározni a belépési pontot - a kezelőt, ahonnan a program indul.
A fő program felépítése a következő:
Szögletes zárójelben a program szövegének opcionális részei zárva vannak, ami hiányozhat. Amint látja, a főprogram egyetlen kötelező eleme az üzemeltető. A főprogram megkülönböztető jellemzője a speciális operátorok hiánya (szubrutin, funkció vagy modul) a fejlécében: ez az, ami ezt a komponenst jellemzi fő programnak.
A főprogram vége nem csak a program komponensének végét jelzi, hanem egy jel is, amely megállítja a teljes programot. Jó szervezés a program biztosítja a vezérlés visszatér a fő program végső szakaszában a munka, de ha azt szeretnénk, hogy állítsa le a programot egy másik helyre, ne használja az üzemeltető.
Ha a végső utasítás tartalmazza a program nevét, meg kell egyeznie a fejléc program utasításában megadott névvel.
Blokk leírása. Ha létezik, akkor a végrehajtható operátoroknak meg kell előzniük a blokkot. Hiányzó blokk A végrehajtható operátorok lehetségesek, de értelmetlen.
Az operátor tartalmazza a végrehajtható állításokat a belső eljárások leírásától.
A külső eljárások olyan programegységek, amelyek különálló részfeladatokat hajtanak végre a teljes programcélkitűzésen belül.
Gyakran előfordul, hogy a program egyes pontjaiban meg kell ismételni az egyes műveleteket végrehajtó parancsok sorrendjét. Az ilyen műveletek elvégzésére szolgáló operátorok sorrendje egy eljárás formájában írható.
A külső eljárás általános áttekintése:
Annak érdekében, hogy az eljárás elinduljon, meg kell hívni. A program egység, amelyről az eljárást hívják, a hívó programegységnek nevezzük. Az eljárásokat a főprogramból vagy más eljárásokból hívják meg, és a befejezés után a hívó programegység vezérlése visszakerül.
Az eljárás visszahúzását a hívó programegységhez, az eljárási pont hívásához a visszatérő üzemeltető végzi el. A működtető nemcsak az eljárás végét jelzi, hanem visszatérési nyilatkozatként is szolgál. A visszatérési nyilatkozat bármikor megszüntetheti az eljárást, és visszaadhatja a hívás helyét. Csakúgy, mint a stop-üzemeltető. ez egy feltételes nyilatkozat része lehet.
Minden eljárásnak képesnek kell lennie az adatok cseréjére a hívó program egységeivel - bejutni a hívó programból és továbbítani munkájuk eredményeit. Az eljárások és eljárások közötti információcsere az eljárások paramétereinek (érveinek) és / vagy globális adatokon keresztül történhet. A globális adatok megszervezését a "Modulok" részben tárgyaljuk.
Az adatok paramétereken keresztüli átvitele során az eljárás fejléce meghatározza a formális paraméterek listáját - az eljárás során használt változók és / vagy tömbök listáját.
Az eljárás hívja az operátorokat a tényleges paraméterek listájának megadására. Amikor az eljárást hívják, a tényleges paraméterek helyettesítik a formális paramétereket.
Az eljárás minden paramétere a következő fő jellemzőkkel rendelkezik:
- rang - dimenzió vagy mérések száma; a változó rangja 0;
- a paraméter hozzárendelése bemeneti, kimeneti vagy univerzális (változó).
A formális paraméter hozzárendelés meghatározza a szándékot:
szándék (in) - bemeneti paraméter;
szándék (ki) - kimeneti paraméter;
A szándék (inout) egy univerzális paraméter.
Ha a paraméter hozzárendelés attribútuma nincs megadva, akkor alapértelmezés szerint a paraméter univerzális (inout).
Az eljárások két fő típusa van: az eljárás-funkció függvények és a szubrutin alprogramok szubrutin eljárásai.
Az eljárás-függvény szerkezetének formája:
[Típus] függvény funkció neve (formális paraméterek listája)
Az eljárásfunkció kiszámítja a megadott típus értékét, és ezzel az értékkel együtt visszaküldi a hívó programegységet. Az így kapott értéket visszatérési értéknek nevezzük. A hívó programban a visszatérési érték hozzárendelhető egy változóhoz, vagy kifejezéssel helyettesíthető.
A függvénykezelőt funkcionális fejlécnek nevezik. A fejlécben megadott funkciótípus a visszatérési érték típusa. Ezenkívül a fejléc megadja a Fortran-szabályok szerint összeállított egyedi függvénynevet, valamint a zárójelben lévő formális paraméterek listáját.
A leírással kapcsolatos kijelentések között meg kell adni a függvény és a belső (helyi) változók és tömbök formális paramétereit.
A végrehajtható operátorok között meg kell határozni egy olyan függvény visszatérési értékét, amelynek neve megegyezik a függvénynevekkel.
Ha a függvény neve a végső utasításban van megadva, meg kell egyeznie a függvényfejléc nevével.
A funkció hívása nem igényel speciális operátort. A funkció hívása a függvény neve és a tényleges paraméterek listája a zárójelben, például:
A = funkció neve (tényleges paraméterek listája)
Példák a funkció hívására:
a = sqrt (x) + sqrt (s)
Függvény formájában keresse meg az elemet az igazi mátrixban a maximális abszolút értékkel. A fő programban normalizálni kell a mátrixot, vagyis minden elemét a kapott elembe kell osztanunk.
valós funkció Max_Abs (Array, cRows, cCols)
funkció fejléc; tényleges visszatérési érték
implicit nincs. az üzemeltetőnek minden programegységben kell lennie
a függvény-tömb formális paraméterei, sorai és oszlopai száma
egész szám, szándék (in). cRows, cCols
egész szám. i, j. ciklusváltozók
egész szám. NumI, Num. mátrixelem-koordinátákat
NumI = 1; NumJ = 1. A maximális modulo-tömböt (1,1)