Un apel de funcţie este un şir de caractere, constituit din numele funcţiei apelate (o literă mare a alfabetului englez), urmat de lista parametrilor actuali ai funcţiei, încadrată între paranteze rotunde. În lista de parametri actuali pot fi , , maximum parametri, separaţi prin virgulă. Un parametru actual poate fi o constantă (o cifră arabă), o variabilă (o literă mică a alfabetului englez) sau un apel de funcţie.
De exemplu:
Funcţia apelată este cu parametri. Primul parametru actual este constanta , al doilea este variabila , al treilea este apelul funcţiei (funcţie cu un singur parametru – variabila ), al patrulea este apelul funcţiei (care are ca parametru apelul funcţiei ).
Numărul de parametri ai unei funcţii se numeşte aritate. O funcţie poate fi apelată de ori câte ori, dar de fiecare dată numărul de parametri specificaţi la apel trebuie să fie egal cu aritatea funcţiei.
Fiecare dintre funcţiile care intervin în apel se poate explicita cu ajutorul unei expresii aritmetice sub forma:
expresie_aritmetică
Parametrii specificaţi la explicitarea funcţiei îi vom denumi parametri formali. Dacă funcţia are aritatea , atunci când explicităm funcţia, parametrii formali sunt denumiţi utilizând în ordine primele litere mici ale aflabetului englez. În expresia aritmetică care explicitează funcţia apar ca variabile doar parametrii formali ai funcţiei (denumiţi aşa cum am precizat cu primele litere mici ale alfabetului englez).
Expresia aritmetică ce explicitează o funcţie este constituită din unul sau mai mulţi termeni separaţi prin operatorii +
(semnificând adunare) sau -
(semnificând scădere). Un termen este constituit din unul sau mai mulţi factori separaţi prin operatorul *
(semnificând înmulţire). Un factor poate fi o constantă (cifră arabă), o variabilă (un parametru formal al funcţiei) sau o expresie aritmetică încadrată între paranteze rotunde.
Valoarea obţinută în urma unui apel de funcţie se obţine înlocuind în ordine parametrii formali cu parametrii actuali, apoi efectuând operaţiile specificate în expresia aritmetică ce explicitează funcţia.
Cerinţă
Dat fiind un apel de funcţie, valorile variabilelor care intervin în acest apel, precum şi explicitările funcţiilor utilizate în acest apel, să se determine valoarea obţinută în urma acestui apel.
Date de intrare
Fişierul de intrare apel.in
conţine pe prima linie şirul de caractere care reprezintă apelul funcţiei. Pe următoarele linii sunt descrise valorile variabilelor, câte o variabilă pe o linie sub forma: . Pe următoarele linii sunt explicitate funcţiile ce intervin în apelul de pe prima linie, sub forma descrisă în enunţ.
Date de ieşire
Fişierul de ieşire apel.out
va conţine o singură linie pe care va fi scris un număr întreg reprezentând valoarea obţinută în urma apelului din fişierul de intrare.
Restricții și precizări
- Aritatea unei funcții este mai mică sau egală cu .
- Orice linie din fişierul de intrare are maximum de caractere.
- Valorile variabilelor sunt numere naturale de maximum cifre.
- Valoarea obţinută în urma apelului funcţiei este în intervalul .
Exemplul 1
apel.in
F(2,a,G(c),G(H(x)))
x=3
a=0
c=1
H(a)=2*a-3
G(a)=2*a*a-5*a+6
F(a,b,c,d)=a*b*c-2*d*c+4*a*c
apel.out
-30
Explicație
Funcţia are parametri. Primul parametru formal este înlocuit de primul paramatru actual deci are valoarea .
Al doilea parametru formal este înlocuit de al doilea parametru actual deci are valoarea variabilei adică .
Al treilea parametru formal este înlocuit de al treilea parametru actual apelul deci are valoarea
Al patrulea parametru formal primeşte valoarea celui de al patrulea parametru actual apelul adică .
Deci, valoarea apelului funcţiei este: .