Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Transferul parametrilor la si de la module de program

fox pro



+ Font mai mare | - Font mai mic



Transferul parametrilor la si de la module de program

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 845
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved