Tuesday, October 27, 2020 10:30

Cuprins >> Funcții > Parametrii metodelor și funcțiilor

Parametrii metodelor și funcțiilor

Metodele și funcțiile noastre pot efectua diferite acțiuni, dar uneori avem nevoie să le oferim anumite date relevante de procesat. Facem acest lucru utilizând parametrii metodelor și funcțiilor.

Unul dintre obiectivele principale ale metodelor și funcțiilor este ceea ce numim re-utilizarea codului, iar acest lucru înseamnă că nu trebuie să copiați și să inserați aceeași bucată de cod iar și iar, ori de câte ori aveți nevoie ca anumite acțiuni să fie efectuate.

Să considerăm de exemplu că dorim să calculăm aria câtorva dreptunghiuri. Știți deja că aria unui dreptunghi este lățimea dreptunghiului înmulțită cu înălțimea sa. Putem face acest lucru astfel:

Codul de mai sus funcționează perfect, și produce următoarea ieșire:

iesire arie triunghi

Totuși… ca regulă generală, iată un sfat de programare util: ori de câte ori trebuie să re-scrieți ceva care arată extrem de asemănător cu o bucată anterioară de cod, FACEȚI CEVA GREȘIT! Copierea-lipirea codului este un lucru foarte de evitat în programare!

Deci, care este soluția corectă? Ei bine, nu ar fi foarte, foarte fain dacă am avea o singură bucată de cod care ne-ar calcula aria oricărui dreptunghi dorim? Putem realiza acest lucru prin utilizarea unei metode. Și pentru că vrem ca metoda noastră să proceseze aria oricărui dreptunghi, trebuie să îi „spunem“ valorile lățimilor și înălțimilor diferitelor noastre dreptunghiuri. Cum facem acest lucru? Prin parametri, astfel:

Observați două lucruri: ieșirea codului de mai sus este identică primului exemplu. În al doilea rând, codul de mai sus este mult mai scurt și mai curat decât cel din primul nostru exemplu.

Acum, să disecăm ceea ce am făcut în al doilea exemplu. În primul rând, în interiorul clasei noastre, am creat o metodă numită CalculeazaAriaDreptunghi() (știm că este o metodă, nu o funcție, deoarece are cuvântul cheie void în fața numelui său de declarație; nu luați în seamă cuvântul cheie static pentru moment, vi-l voi explica mai târziu). Am făcut acest lucru și înainte, nimic nou până în prezent. Cu toate acestea, uitându-ne la exemplul nostru, observăm o mică diferență: metoda noastră are un text în interiorul parantezelor declarației sale, spre deosebire de exemplele din lecțiile noastre anterioare. Ce inseamnă float latimeDreptunghi, float inaltimeDreptunghi? După cum ați ghicit, aceștia sunt parametrii metodei noastre. Când apelăm această metodă, deoarece avem doi parametri de tip float, trebuie să ne asigurăm că o apelăm cu două valori float. Dacă nu o vom face, vom primi o eroare:

Deoarece în metoda noastră principală am apelat CalculeazaAriaDreptunghi() fără a specifica două valori float între paranteze, și pentru că am declarat metoda noastră CalculeazaAriaDreptunghi() ca având doi parametri float obligatorii, Visual Studio va afișa următoarea eroare:

no parameters error

Deci, practic, atunci când vom declara o metodă sau o funcție, putem specifica parametrii acestora prin declararea acestor parametri în interiorul parantezelor declarației metodei sau funcției. Modul în care vom specifica un parametru este ca orice declarație de variabilă obișnuită: trebuie să specificăm tipul parametrului (float, în exemplul nostru) și numele său (latimeDreptunghi, inaltimeDreptunghi). Putem specifica oricât de mulți parametri dorim, iar aceștia trebuie separați prin virgulă. Pentru a rezuma, modul de specificare a parametrilor metodelor și funcțiilor este aceasta:

unde lista_parametri este o listă de zero sau mai mulți parametrii, separați prin virgulă:

Parametrii metodelor și funcțiilor pot fi de orice tip: tipuri primitive (int, string, double, float, etc), sau tipuri de obiecte (array, liste, clase, etc).

Odată ce declarați unul sau mai mulți parametri la o metodă sau o funcție, variabila/variabilele parametru/i este/sunt disponibilă/e în interiorul corpului acelei metode sau funcții. În cazul nostru, latimeDreptunghi și inaltimeDreptunghi pot fi utilizate în interiorul blocului metodei noastre. Ori de câte ori apelăm CalculeazaAriaDreptunghi() și vom specifica două valori float, cele două valori sunt atribuite parametrilor noștri float, care, la rândul lor, pot fi utilizați în cadrul metodei. Rețineți că parametrii metodelor și funcțiilor sunt vizibili doar în interiorul corpului metodei sau funcției lor de declarare! Nu-i putem utiliza pe ei sau valorile lor oriunde altundeva în programul nostru, în mod direct!

În cele din urmă, parametrii de funcții sunt identici cu parametrii metodelor:

Desigur, diferența este aceea că funcțiile trebuie să returneze o valoare (de tip float, așa cum specifică declarația funcției noastre), pe care am putea la fel de bine să o folosim direct atunci când apelăm funcția.

Dacă unii dintre voi v-ați dat deja seama că și Console.WriteLine() este tot o metodă căreia îi furnizăm un parametru de tip string, bravo! 😉

Ori de câte ori folosim

de fapt apelăm o metoda numita WriteLine(), in interiorul clasei Console, căreia îi furnizăm o valoare de tip șir de caractere („Buna lume!“), deoarece declarația sa specifică faptul că ea așteaptă un parametru de tip string.

Un alt sfat util este acela că, dacă facem clic dreapta pe numele oricărei funcții sau metode, avem câteva opțiuni utile:

functions and methods context menu visual studio

  • Peek Definition va deschide o mică fereastră în care putem vedea declarația respectivei metode sau funcții. Util pentru a vedea rapid modelul de declarare a respectivei metode sau funcții.
  • Go To Definition va face Visual Studio să sară imediat la declarația respectivei metode sau funcții. Util dacă vrem să studiem în detaliu declarația și conținutul corpului unei metode sau funcții.
  • Go To Implementation nu vă este de nici un folos momentan, ne vom ocupa de ea atunci când vom învăța interfețe.
  • Find all references va afișa în rubrica Output o listă cu toate locurile în care metoda sau funcția respectivă este apelată. Foarte util dacă avem un proiect mare, unde o metodă sau funcție este apelată în multe locuri ale codului. Dublu clic pe una dintre aceste intrări din această listă va face Visual Studio să sară la acea linie specifică.

Comments

comments

Tags: , , ,

Leave a Reply



Do NOT follow this link or you will be banned from the site!