CALL nume subrutină ([lista reale ale parametrului])
Funcția este un operand într-o expresie. Acesta poate fi prezent în partea dreaptă a operatorului de atribuire. De exemplu:
a = numele funcției ([lista actuală de parametri])
Parametrii reale pot fi expresii, constante literale și denumite, simple variabile, tablouri, și secțiunile lor transversale, elementele de matrice, elemente de înregistrare înregistrări, siruri de caractere, subșir, proceduri și funcții încorporate. Dacă parametrul real este procedura extern, Dol-soțiile aici au atribut extern. Dacă parametrul real este o procedură built-Xia, acesta trebuie declarat cu atributul INTRINSECI.
Între parametrii formali ai procedurii în descrierea și cele reale parametrii când se referă la acesta trebuie să respecte normele relevante:
- respectarea de către numărul (ca parametri formali, aceleași probe);
- potrivire secvența: primul parametru real corespunde primului formale, al doilea - al doilea, etc.
- respectarea în funcție de tipul: tipurile de parametrii corespunzători trebuie să fie aceleași.
Exemplul 1. Program Calculele lungimile laturilor triunghiului, coordonatele nodurilor specificate, utilizând funcția internă.
programul Treug1
r = S (x1, y1, x2, y2); imprimare *, r! 1.414214
r = S (x1, y1, x3, y3); imprimare *, r! 1.000000
r = S (x2, y2, x3, y3); imprimare *, r! 1.000000
funcția reală S (w1, z1, w2, z2)
Programul final flocal
Exemplul 2. Programul Calculele lungimile laturilor triunghiului, coordonatele nodurilor specificate prin utilizarea de rutină externă.
programul Treug2
CALL S (x1, y1, x2, y2, r); imprimare *, r! 1.414214
CALL S (x1, y1, x3, y3, r); imprimare *, r! 1.000000
CALL S (x2, y2, x3, y3, r); imprimare *, r! 1.000000
Programul final Treug2
subrutina S (w1, z1, w2, z2, L)
w1 reale, z1, w2, z2, L
În matematică, numită o definiție recursivă a oricărui concept în sine. Un exemplu clasic este determinarea întreg factorial mai mare sau egal cu zero.
Aici, factorialul funcția este definită în termeni de factorialul. Este ușor de înțeles validitatea unei astfel de determinare. Unde n> 0
Opțiunea 0! = 1 este banală. Dar opornoe valoare de la care să înceapă „relaxare“ a tuturor valorilor ulterioare ale factorial:
1! = 1 * 0! = 1 * 1 = 1; 2! = 2 * 1 = 2; 3! = 3 * 2! = 6, etc.
Luați în considerare funcția procedură este utilizată în descrierea formulei recursive date mai sus.
Funcția recursivă ifact (n) rezultat (fav)
Tipul rezultat al unei funcții recursive poate fi setată și următoarele două moduri:
recursive funcție integer ifact (n) rezultat (fav)
integer funcție recursivă ifact (n) rezultat (fav)
Definirea recursivă funcțiilor necesare pentru variabila care trebuie utilizată pentru rezultat. În acest exemplu, o fav variabilă.
Programul principal care utilizează o funcție ifact externă pentru calcularea valorii K. are următoarea formă:
Integer K, ifact
Print *, 'tip R'
Scrie (*, '(2X, I2, A, I6)') K '! =', Ifact (K)
Să presupunem că, în programul principal într-o variabilă la un număr de intrare 3. La calcularea argumentul funcției ifact 3 va apela din nou la funcția ifact (2). Acest tratament necesită calcularea ifact (1). În final, ifact calcul (0) rezultat numeric este obținut prin 1. Apoi, calcul lanț nerăsucite în ordine inversă:
ifact (1) = 1 * ifact (0) = 1,
ifact (2) = 2 * ifact (1) = 2,
ifact (3) = 3 * ifact (2) = 6.
Secvența de apeluri de funcții recursive ar trebui să meargă neapărat la o anumită valoare. O acoperi ruta consecutive stochează aparițiile de mașini într-o zonă specială de memorie numit-o stivă. Astfel, punerea în aplicare a unei funcții recursive se desfășoară în două etape: înainte cursa - umplerea stivei; revers - un lanț de calcule pe ruta inversă stocate pe stivă.
Utilizarea funcțiilor recursive - o primire bună din punct de vedere al esteticii programator. Cu toate acestea, această cale nu este întotdeauna cel mai rațional. Având în vedere problema cu n. Acesta poate fi rezolvată după cum urmează:
Evident, această versiune a programului va rula mai repede decât recursive. Și când este important să se reducerea timpului de program, ar trebui să se acorde preferință pentru a doua opțiune.