CATEGORII DOCUMENTE |
Functii
In C o functie este echivalenta cu o subrutina sau cu o functie din FORTRAN sau cu o procedura din PL/1 sau PASCAL, etc. O functie reprezinta un mod convenabil de a incapsula anumite calcule intr-o cutie neagra care poate fi apoi folosita fara sa ne mai pese de ce se afla inauntru. Functiile sint singura modalitate de a face fata la complexitatea potentiala a programelor mari. Cu functii scrise asa cum trebuie, este posibil sa ignoram 'cum' este facuta o anumita treaba; ne este suficient sa stim 'ce' anumita treaba este facuta. Limbajul C este proiectat pentru a face folosirea lor usoara, convenabila si eficienta; veti observa adesea o functie lunga numai de citeva rinduri,
apelata o singura data, numai fiindca ea clarifica anumite portiuni de cod.
Pina acum am folosit numai functii ca printf, getchar si putchar, care au fost scrise de altii pentru noi; este momentul sa ne scriem si noi propriile noastre functii. Deoarece limbajul C nu poseda un operator de exponentiere ca ** din FORTRAN sau PL/1, vom ilustra mecanismul de definire de functii scriind o functie putere 'power(m,n)' care va ridica un intreg la o putere intreaga pozitiva in n. Adica, valoarea lui power(2,5) este 32. Desigur ca aceasta functie nu realizeaza toata treaba lui **
deoarece minuieste numai puteri pozitive ale intregilor mici, dar cel mai bine,este bine sa aprofundam un lucru la un moment dat.
Iata acum functia 'power' si un program principal care o foloseste, asa ca puteti vedea deodata intreaga structura.
main() /* testeaza functia power */
power(x,n) /* ridica pe x la puterea a n-a ; n > 0 */
int x, n;
Orice functie are o aceeasi forma:
nume (lista de argumente, daca exista)
declaratii de argumente, daca exista
Functiile pot apare in orice ordine si intr-un fisier sursa sau in doua. Bineinteles, daca sursa apare in doua fisiere, veti avea mai multe de spus la compilare si incarcare decit daca e un singur fisier dar asta este o problema a sistemului de operare si nu un atribut al limbajului. Pentru moment vom presupune ca ambele functii se gasesc intr-un acelasi fisier, asa ca ceea ce ati invatat despre executia programelor C nu se modifica.
Functia 'power' este apelata de doua ori in linia
printf('%d %d %dn', i, power(2,i), power(-3,i));
Fiecare apel trimite doua argumente lui power, care de fiecare data returneaza un intreg care trebuie formatat si tiparit. Intr-o expresie power(2,i) este un intreg, la fel ca si 2 si i. (Nu toate functiile produc o valoare intreaga; vom vedea aceasta in Capitolul 4). In 'power' argumentele trebuie sa fie declarate corespunzator cu tipul lor cunoscut. Aceasta este facuta de linia
int x,n;
care urmeaza liniei cu numele functiei. Declaratiile de argumente urmeaza sa se situeze intre lista de argumente si acolada stinga deschisa {; fiecare declaratie se termina cu punct si virgula. Numele folosite de power pentru argumentele sale sint pur locale lui power si nu sint accesibile nici unei alte functii: alte rutine pot folosi aceleasi nume fara nici un conflict. Aceasta este adevarat si pentru variabilele i si p: i din power (nu este legat prin nimic) nu are nici o legatura cu i din main.
Valoarea pe care power o calculeaza este returnata in main prin instructiunea 'return', care este la fel ca in PL/1 . Orice expresie poate apare intre paranteze. O functie nu trebuie sa returneze o valoare; o instructiune 'return' fara nici o expresie cauzeaza transferul controlului, dar nu o valoare utila, spre apelant, asa cum face 'iesirea dupa sfirsit' a unei functii prin atingerea parantezei drepte terminatoare.
Exercitiul 1.13. Scrieti un program care sa converteasca intrarea in litere mici, folosind o functie lower(c) care returneaza pe c, daca c nu este o litera, si valoarea 'litera mica a lui c', daca c este o litera.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1116
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved