Te salut si bine ai venit din nou! Este momentul sa continuam seria de programare in Java. In primul articol ti-am vorbit mai multe despre Java ca limbaj de Programare si cum sa-l folosesti, iar astazi vom vorbi despre functii.
Ce sunt functiile? Cum le putem folosi? Acesta va fi primul video dintr-o serie de doua despre functii. Vreau sa le intelegi clar si sa faci distinctia intre ele. Hai sa incepem!
Avem diferite functii:
- functii care intorc un anumit rezultat
- functii care nu intorc un rezultat
In acest articol le vom aborda pe ambele, iar mai intai vom incepe cu functiile care nu intorc un rezultat (functii void).
Continutul articolului
Ce este o Functie in Programare?
O functie este o grupare de cod ce poate fi folosita de mai multe ori. Practic, este o forma de a grupa, de a structura codul nostru, astfel incat noi sa putem sa venim sa scriem cod mai eficient, mai rapid si cu mult mai multa usurinta.
Dar hai sa trecem la Eclipse si sa vedem despre ce cod este vorba. Acolo vom avea acest:
System.out.println(“Salut!”);
care va afisa in consola mesajul: Salut!
Ce propun este sa cream o functie. Ceea ce vreau sa retii este ca acest termen de “functie” este bun, este valabil, dar nu este atat de corect utilizat, mai ales cand vine vorba de programare orientata pe obiecte. Termenul pe care il vom folosi in acest caz este acela de “metoda”. Practic, o functie in Programarea Orientata pe Obiecte (POO) devine o metoda si, dupa cum stii din celelalte tutoriale, avem diferite clase, diferite campuri in aceste clase – care sunt variabile, doar ca apartin clasei –, dupa care avem aceste metode.
Functii void – care nu intorc un rezultat
Noi, in momentul de fata, ne aflam in MainClass, care in acelasi timp contine si functia main. Daca esti familiar cu C sau C++, acolo avem int Main sau void Main, o functie centrala unde apelam fiecare functie, unde desfasuram si executam programul nostru.
Noi aici vom crea o cu totul alta functie:
public static void
Asa se va numi functia noastra. Este o functie publica, ceea ce inseamna ca poate fi accesata, apelata din mai multe alte functii, din mai multe clase. O sa vorbim despre asta mai incolo. Functia este statica, adica isi pastreaza valoarea, si este void, adica aceasta functie nu intoarce nimic, nu intoarce un anumit rezultat.
Un exemplu practic ar fi punerea unui fruct intr-o cana. Se pot intampla doua lucruri: fructul ramane in acea cana (adica nu intoarce un rezultat) sau fructul scoate ceva din acea cana (vine cu un rezultat, un output – acel fruct sau suc pe care l-am creat va curge).
Urmareste acest tutorial pentru a afla mai multe despre metode si functii in Java:
Dar hai sa revenim la a scrie cod. Vom face functia Hello si vom scrie:
public static void Hello() { } |
dupa care vom scrie:
System.out.printIn(“Salutare!”) |
Astfel, functia noastra va arata:
public static void Hello() { System.out.printIn(“Salutare!”) } |
Dupa care venim in void si o apelam, scriind Hello(); in linia de cod din main.
In consola va fi afisat mesajul Salutare!, dupa cel de Salut!
Hai sa facem lucrurile putin mai complexe si sa personalizam acest mesaj. Vom adauga intre parantezele de dupa Hello ceea ce se numeste un parametru. Vom pune String nume pentru ca vrem sa fie un nume, un text. Astfel ca functia noastra va arata:
public static void Hello(String nume) { System.out.printIn(“Salutare” + nume + “!”); } |
Vom apela in main, scriind numele in parantezele de dupa Hello:
Hello(“Ramon”);
Rezultatul afisat va fi:
Salutare Ramon!
Salutare era mesajul intial, nume este un parametru adaugat (scris Ramon in main), si am introdus si semnul exclamarii. Practic, cu + facem concatenarea, adica legam de un string un alt string, apoi un al string, si venim cu un string total, un rezultat.
Asta este, in mare, modul in care functioneaza si opereaza o astfel de functie. Un lucru pe care il mai putem face este sa apelam din nou functia Hello. Dupa:
Hello (“Ramon”);
vom scrie:
String name = new String (“TestNume”); Hello (name); |
Am scris name ca sa nu confundam numele de sus cu cel de jos. String este un obiect specific Java, si new String este modul in care am creat un nou obiect String si il voi initializa cu TestNume. Practic, valoarea TestNume ia locul lui name. Vom da Run, si pe ecran va aparea:
Salutare TestNume!
In acest tutorial, ai putut sa vezi cum creezi o metoda, cum creezi un String si cum adaugi acest String intr-o metoda, pe post de parametru.
Mai putem sa adaugam si int a si int b:
public static void Hello(String nume, int a, int b) { int sum = a + b; System.out.printIn (“Salutare” + nume + “!”+ “\n ” + String.valueOf(sum) ); } |
Vreau sa transform sum intr-un integer.
In main, vom sterge Hello(“Ramon”); :
//Hello(“Ramon”);
Vom modifica:
Hello(name);
si vom pune:
Hello(name, 2, 3);
Dupa ce vom da Run, pe ecran va aparea 5.
Ce am facut aici?
- Am adaugat alti doi parametri de tipul integer:
public static void Hello(String nume, int a, int b)
- am convertit int sum = a + b; intr-un String:
String.valueOf(sum)
Am printat acest String pe ecran.
Functii care intorc un rezultat
Functiile, dupa cum am vorbit si mai devreme, reprezinta o grupare a codului, un mod de a face acest cod mai structurat, mai usor de inteles si de a ne eficientiza munca. Nu putem scrie acelasi cod de nenumarate ori, ci putem pur si simplu sa folosim o metoda sau o functie pentru a ne face treaba mult mai eficient. Dar sa trecem la treaba…
In sectiunea trecuta am vorbit despre functiile (metodele) void care nu intorc un rezultat, ci pur si simplu genereaza anumite calcule pe care le facem si afisam. Ca exemplu practic hai sa ne gandim ca punem mai multe fructe intr-un blender. Ele toate vor ramane acolo. Nu vor putea fi turnate intr-un pahar. Acum vrem sa le si turnam intr-un pahar, astfel incat sa ne si putem folosi de rezultatul pe care aceasta metoda sau functie il genereaza.
Vom lasa in Eclipse ceea ce am lucrat data trecuta. De data aceasta vom intoarce sum, mai precis:
int sum = a + b;
Ni se va spune ca aceasta variabila sum nu este folosita, dar eu voinoi vom intoarce, ii vom da return, scriind int in:
public static void Hello(String nume, int a, int b) {
ce acum va aparea:
public static int Hello(String nume, int a, int b) {
Ni se va spune ca este o problema, ca aceasta functie trebuie sa intoarca ceva. Si ce trebuie sa facem este sa scriem:
return sum;
Este de acelasi tip, este int, dar daca vom da Run, vom vedea ca nu se intampla nimic. Raman pe ecran:
Salut!
Salutare TestNume !
din tutorialul trecut. In schimb, functia:
Hello(name, 2, 3);
nu face nimic. Noi nu trebuie neaparat sa “prindem” ceea ce intoarce, in schimb putem sa adaugam:
int valoare =
in fata, si astfel functia va arata:
int valoare = Hello(name, 2, 3);
Vom scrie sub:
System.out.println(valoare);
Rulam acest program si vedem ca se intoarce aceasta valoare, care este 5. De acum putem sa mergem mai departe si sa facem absolut orice dorim cu aceasta valoare 5. O functie poate fi o functie matematica sau un algoritm care face ceva anume.
Tot ceea ce noi trebuie sa facem este sa introducem anumite date, acea functie sau metoda ne va procesa datele in modul in care i-am spus, dupa care ne va da alte date. Iar acele date, output-ul sau datele finale, sunt ceea ce de fapt pe noi ne intereseaza si cu care vom putea merge mai departe sa generam alte date sau sa facem ceea ce dorim. Si cam asta am facut pana acum in acest tutorial.
Cum in:
public static int Hello(String nume, int a, int b) {
avem acest int, asta inseamna ca putem face orice altceva. Putem sa creem o alta functie:
public static String numeUser (String nume) {
Si sa spunem ca avem aceasta functie care intoarce un String, va intoarce un sir de caractere – nume, user.
ATENTIE: Vom scrie nume cu “n” mic pentru ca acesta este stilul de cod pe care cei care scriu Java il recomanda. Functia sau metoda trebuie sa inceapa cu litera mica, dupa care, pentru a diferentia, poti sa scrii cu litera mare.
Pentru a afla mai multe despre cum functioneaza metodele in Java, te invit sa urmaresti acest tutorial:
Dar sa revenim. Sub ceea ce am scris, vom scrie:
String ret = “Numele tau este “ + nume;
return ret;
Aceasta functie atat va face. Va spune:
Numele tau este
Dar nu este gata. Sus, in main, trebuie sa adaugam:
System.out.println(numeUser(“Ramon”));
Salvam, dam Run si pe ecran va aparea:
Numele tau este Ramon
De ce? Pentru ca ni se va intoarce un String. Acest String poate fi foarte usor de printat pe ecran, dupa cum am si vazut. Ne putem folosi de el sau il putem printa, pur si simplu. De exemplu, daca ar fi sa stergem:
System.out.println(numeUser(“Ramon”));
si sa scriem:
String temp = numeUser(“Ramon”);
temp va lua valoarea pe care am trecut-o mai devreme. Si de aici putem sa facem ce dorim, cum ar fi sa adaugam in main:
System.out.println(temp.length() + “ – Nr total de caractere din sir”);
Rulam, si pe ecran va aparea:
21 – Nr total de caractere din sir
Si aceasta este o functie pe care o putem folosi in acest fel. De asemenea, putem sa adaugam si
“\n Sirul este “ + temp
astfel:
System.out.println(temp.length() + “ – Nr total de caractere din sir” + “\n Sirul este “ + temp);
Cand vom rula, pe ecran va aparea, sub celelalte raspunsuri:
Sirul este Numele tau este Ramon
Daca ai mai folosit Java pana acum, probabil aceste lucruri ti se par simple. Daca nu, iti recomand sa folosesti aceste functii. Metodele, atat cele void cat si non void, sunt foarte importante.
Cam atat cu elementele de baza de programare in Java. Bineinteles, sunt mult mai multe. Dar incepand cu urmatoarele tutoriale, vom vorbi mai mult despre programarea orientata pe obiecte. Vom intra in clase, vom vedea ce inseamna un camp, ce inseamna metodele dintr-o clasa, un constructor, un destructor, un getter, un setter, toate elementele de baza cand vine vorba de acest gen de programare.
Cum sa inveti mai multa Programare cu Java?
Cam atat cu prima parte a articolului despre functii si metode in Java. Sper ca ti-a placut acest tutorial. In urmatorul o sa vedem cum putem face diferite metode care si intorc o variabila. Citeste-l AICI.
Daca esti interesat sa inveti mai multe despre Programarea cu Java, atunci iti recomand cartea mea “Introducere in Programare cu Java“. Notiunile explicate in aceasta carte te vor ajuta extrem de mult sa intelegi atat elementele teoretice cat si cele practice care au de a face cu notiunile de baza ale programarii, programare orientata pe obiecte (POO), structuri de date si multe altele.
Click AICI pentru a afla mai multe.