CATEGORII DOCUMENTE |
In mod uzual, comunicarea intre unitatile functionale ale unui program se face prin intermediul parametrilor. Parametrii permit ca la fiecare activare a unui modul, acesta sa opteze cu entitati care se cunosc doar in momentul apelului. Deoarece valorile acestea difera de la un apel la altul, iar operatiile care li se aplica sunt aceleasi, rezulta ca instructiunile subprogramului vor trebui sa se refere la entitati exprimate simbolic, asa numitii parametri formali. La activarea modulului se specifica parametrii actuali, sau efectivi.
Declararea parametrilor formali se face prin comanda PARAMETERS:
PARAMETERS <lista-var> |
Aceasta comanda , care trebuie sa fie prima comanda a unui modul, defineste lista de variabile locale care vor prelua parametrii transmisi de la programul apelant. Lista variabilelor locale trebuie sa aiba intotdeauna mai multe elemente ( sau cel mult egal ) decat lista parametrilor transmisi, pentru ca fiecare parametru sa aiba un corespondent in subprogram.
Exemplu:
SET TALK OFF
CLEAR
a = 14
b = 37
? a , " + " , b , " = " , suma ( a , b )
c = 12
d = 17
prod = 0
DO produs WHIT c , d , prod
? c , " + " , d , " = " , prod
FUNCTION suma
PARAMETERS a 1, a 2
RETURN a 1 + a 2
PROCEDURE produs
PARAMETERS a 1, b 1, c 1
c1 = a 1 + b 1
RETURN
Parametrii formali sunt variabile locale unitatii functionale.
Transmiterea parametrilor actuali se face prin comenzi de apel. Apelul unei proceduri se face prin comanda DO care va avea clauza WITH.
DO <identif> WITH <lista-exp> |
Apelul unei functii se face intr-o expresie, parametrii fiind pusi intre parantezele specifice functiei:
<nume-functie>(<lista-exp>) |
Corespondenta intre parametri se face prin pozitia in lista de parametrii din programul apelat si din comanda de apel.
Exemplu:
SET TALK OFF
CLEAR
DO cadru
@ 12, 32 SAY mesaj ( )
READ
CLEAR
FUNCTION mesaj
RETURN " Invatam FoxPro "
PROCEDURE cadru
@ 10 , 10, 14, 70 BOX
in acest exemplu DO cadru determina executia procedurii cadru, definita dupa PROCEDURE cadru, iar mesaj ( ) este constructia de apelare a functiei mesaj, definita prin linia care urmeaza comenzii FUNCTION mesaj.
Sa luam urmatorul exemplu: calculul combinarilor, care se realizeaza pe baza formulei:
n !
Cnk = ----- ----- -------------
k ! * ( n - k ) !
Calculul factorialului n ! = 1 * 2 *.....*n se face cu urmatoarea secventa de instructiuni:
n=6
FACT = 1
FOR i = 1 TO n
FACT = FACT * 1
ENDFOR
Pentru calculul combinarilor, aceasta secventa se va repeta de trei ori, unde pe pozitia lui n, vom avea pe rand n, k, n - k.
Programul pentru calculul combinarilor va fi:
n = 6
k = 3
FACT1 = 1
FOR i = 1 TO 6
FACT = FACT * 1
ENDFOR
FACT2 = 1
FOR i = 1 TO k
FACT = FACT * 1
ENDFOR
FACT3 = 1
FOR i = 1 TO n - k
FACT = FACT * 1
ENDFOR
COMBIN = FACT1 / FACT 2 / FACT 3
Acest mod de scriere a unui program este ineficient pentru ca acelasi grup de instructiuni este scris de trei ori. In situatii ca acestea, pentru scrierea programului se folosesc functiile si procedurile definite de utilizator. Folosind pentru calculul factorialului o functie, programul de calcul al combinarilor va capata urmatoarea forma:
n = 6
k = 3
COMBIN = FACT( n ) / FACT ( k ) / FACT ( n - k )
FUNCTION FACT
PARAMETERS n
FACT = 1
FOR i = 1 TO n
FACT = FACT * 1
ENDFOR
RETURN FACT
Primele trei linii reprezinta programul propriu-zis de calcul al combinarilor. In acesta se face de trei ori apel la functia FACT ( ), care este definita in urmatoarele sapte linii de program.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 845
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved