
Acum vei intelege cum in Java ti se pune totul la dispozitie pentru ca tu sa te folosesti de functiile lui pentru a scrie cod mut mai rapid si mai eficient.
Pe scurt, cum creezi un Main Class in Eclipse?
Dute la SRC si da click-dreapta. Vei vedea ca trebuie sa creezi o noua clasa si sa ii dai nume. Alege, de exemplu numele MainClass si apasa Finish. Ti se va crea o clasa in care vei putea scrie cod. Aceasta clasa o vei folosi pe post de Main.
In Java avem public static void main(), aici noi vom crea si vom executa anumite functii, metode si clase pe care le-am creat. Vezi cum aici se uneste toata ierarhia cu toate clasele. Aici vei pune tot, si aici (in main() ) vei rula toate functiile.
Exista un fisier principal, de obicei numit Main Class, iar in rest vei avea diferite clase care vor da o anumita functionalitate programului. Toate aceste clase trebuie undeva executate si rulate rand pe rand, iar Main este tocmai pentru acest scop.
? ATENTIE: iti recomand sa descarci si cartea de Programare in Java scrisa de mine, ca resursa de studiu ?
Clasele sunt acele tipuri de date definite de utilizator sau deja existente (asa cum iti arat in acest clip).
O clasă poate conține:
membri: sunt variabile membru = campuri, și proprietati, care definesc starea obiectului)
metode: sunt functii membru, cu care facem operații asupra starii.
In Java, precum si in marea majoritate a limbajelor de programare, avem la dispozitie sa comentam diverse aspecte ale codului pe care noi il scriem.
Avem 2 moduri prin care putem lasa un comentariu: primul fiind cel cu //, iar cel al 2-lea fiind cel cu /* */.
Aceste comentarii pot fi extrem de benefice din mai multe puncte de vedere:
Unul dintre ele ar fi faptul ca poti lasa comentarii despre ce face o secventa de cod - o functie, o clasa etc- (aka. documentezi codul astfel incat tu sau alte persoane sa inteleaga ceea ce face acesta)
Un alt motiv ar fi sa invalidezi o secventa de cod deja existenta (adica vei face ca acea secventa sa nu fie compilata si executata).
Citirea datelor de la tastatura (aka. Citirea datelor prin consola - din IntelliJ, in acest caz) inseamna sa rulezi un program, iar aceasta sa-ti ceara introducerea datelor direct de la tastatura.
Este o metoda foarte buna de antrenament si de verificare a faptului ca programul tau functioneaza corect. In aplicatii reale nu vei interactiona foarte mult cu acest mod, decat atunci cand ii ceri utilizatorului sa o faca (in rest vei opera cu fisere sau date transferate prin retea).
In acest capitol vom discuta despre elementele de baza din programare (instructiunile) care fac logica programarii posibila.
Aceste instructiuni ne contureaza programele si le ofera o logica (o structura) pe care sa o urmeze cu scopul de a ne ajuta sa rezolvam probleme mult mai complicate.
Cand vorbim despre instructiunile conditionale ale limbajelor de programare, avem la dispozitie urmatoarele:
Instructiunea if - daca se respecta conditia X, atunci se intampla Y
Instructiunea switch - daca se respecta conditia X, atunci se intampla A, daca nu, se intampla B, daca nu, se intampla C, daca nu, se intampla D...
Instructiunea while - cat timp se respecta conditia X, se intampla Y
Instructiunea for - pentru o anumita conditie X, (cat timp aceasta este respectata) se intampla Y
Daca ai mai avut de-a face cu programarea, atunci cel mai probabil te-ai intalnit cu aceasta instructiune IF. Ea este una dintre cele mai folosite si cunoscute instructiuni si este intalnita in marea majoritate a limbajelor de programare (C/C++, Java, Python, PHP, Ruby, Bash etc.). Functia ei este clara si simpla: sa verifice valoarea de adevar a unei expresii (ex: “5 > 3?”, aceasta expresie este adevarata). In cazul in care expresia este adevarata se va merge mai departe cu executarea instructiunilor din blocul IF. Asadar, sintaxa de cod pentru instructiunea IF arata in felul urmator:
if ( conditie ) {
instructiune 1; instructiune 2; ...}if ( conditie ) { instructiune 1; instructiune 2; ...
}
La nivel fundamental, cam asa arata instructiunea IF. Va exista o conditie care va rezulta o valoare de adevar (fie ea Adevarata sau Falsa). In cazul in care aceasta valoare este Adevarata (ex: 5 > 3), se vor executa instructiunea 1, instructiunea 2, instructiunea 3. Altfel, in cazul in care nu este adevarata conditia (de exemplu pentru 5 > 8), programul va trece de blocul de date if si nu se vor executa cele 3 instructiuni.
Poate te intrebi ce reprezinta aceste conditii. Ei bine, conditiile din instructiunea IF pot fi operatii (comparatii) matematice, precum cele de mai jos:
A > B - se verifica daca A este mai mare ca B
A < B - se verifica daca A este mai mic ca B
A >= B - se verifica daca A este mai mare SAU egal ca B
A <= B - se verifica daca A este mai mic SAU egal ca B
A == B - se verifica daca A este egal cu B
A != B - se verifica daca A este diferit de B
Toate acestea sunt operatii matematice care vor rezulta o valoarea de adevar: fie ea falsa sau adevarata. Daca instructiunea if are o conditie ADEVARATA, atunci va continua cu executarea instructiunilor din acoladele { }, in caz contrar (daca acea conditie este FALSA), se va trece peste acele instructiuni ( din { } ).
Instructiunea initiala despre care am vorbit a fost IF (daca X este adevarat, atunci executa Y), dar ce se intampla in momentul in care avem mai multe blocuri de verificare a unor expresii. Un raspuns care ne poate veni in minte ar putea fi: daca expresia A nu este adevarata, atunci ar putea fi adevarata expresia B, iar daca nici ea nu este, atunci expresia C. Lucrurile ar arata in felul acesta:
if ( A ) {
....
}
else if (B) {
....
}
else if (C) {
....
}
...
else {
....
}
Aceasta este o varianta de solutionare a problemei noastre, dar nu este cea mai buna. O varianta si mai buna ar fi folosirea instructiunii SWITCH, instructiune care ne ajuta sa formam astfel de blocuri conditionale care arata in felul urmator:
int nota = 5;
switch(nota) {
case 10:
System.out.println("Excelent!");
break;
case 8:
System.out.println("Bravo");
case 7:
System.out.println("Te-ai descurcat bine");
break;
case 5:
System.out.println("Ai trecut");
case 2:
System.out.println("Ai picat. Mai incearca");
break;
default:
System.out.println("Nota nu a fost introdusa corect");
}
In acest scenariu poti sa vezi ca, codul este mult mai bine structurat, iar SWITCH va trece prin fiecare case (caz) pana cand va gasi matching-ul potrivit intre variabila nota si rezultatul asteptat. In cazul in care nu se gaseste nici o potrivire intre variabila si rezultatele specificate, atunci se va ajunge la default, care ne va da rezultatul standard (in cazul acesta un mesaj de eroare) in caz de nepotrivire cu unul dintre cazurile specificate mai devreme prin case.
De asemenea, in structura switch-ului (mai exact in cea a case-ului), poti sa vezi ca apare instructiunea break, care va opri parcurgerea intregului SWITCH si va iesi din functie, continuand cu rularea restului de program. Odata gasit, rezultatul asteptat (in aceasta situatie find vorba de al patrulea), programul va executa acea instructiune si va iesi din blocul switch(), continuandu-si executia instructiunilor pana la finalizarea sa.
Mergand mai departe cu subiectul legat de instructiunile conditionale din programare, am ajuns la instructiunea FOR. O instructiune care ne permite sa-i spunem programului nostru sa execute un cod in mod repetat (atat timp cat se respecta o conditie).
Gandeste-te in felul urmator: cum ar fi daca am avea 10 operatiuni de verificat, iar in urma fiecareia sa efectuam un anumit calcul sau sa afisam un rezultat. Cu cele invatate pana acum, am vazut ca se poate face asta, doar ca mica problema ar consta in faptul ca ar trebui sa facem totul manual. Practic, pentru fiecare operatiune de verificare (folosind IF), ar trebui sa scriem manual fiecare secventa de cod. Problema cu metoda asta e ca necesita mult timp, nu e scalabila, iar in timp va consuma multa memorie.
Hai sa-ti dau un exemplu concret (diferit fata de cel din video). Iata mai jos o secventa de cod scrisa cu instructiunea IF, fara a folosi IF ELSE ori ELSE:
int i = 0;
int suma = 0;
int a = 5;
if ( i == 0 ) {
suma = suma + a;
i++;
}
if ( i == 1) { suma = suma + a + i; i++;
}
if ( i == 2) { suma += a + i; i++;
}
if ( i == 3 ) { suma += a + i; i++;
}
System.out.println("Suma este: " + suma);
In aceasta secventa de cod poti sa vezi ca am calculat o anumita suma in functie de variabila a si i. Rezultatul acestei sume este: 26. In aceasta situatie, a este pur si simplu o variabila int careia i-am asignat o valoare, iar i este un iterator (o variabila care contorizeaza numarul de procesari). Dupa fiecare calculare a sumei, acest iterator i va fi incrementat (prin i++), iar valoarea acestuia va creste cu 1. In programarea in Java, C++, expresia i++ este echivalenta cu i = i + 1;.
Acum hai sa-ti arat aceeasi secventa de cod, dar de data asta scrisa cu FOR:
int suma = 0;
int a = 5;
for (int i = 0; i <= 3; i++) {
suma += a + i;
}
System.out.println("Suma este: " + suma);
Dupa cum poti sa vezi in aceasta secventa de cod, lucrurile au fost mult simplificate prin instructiunea FOR:
In care am declarat o variabila iterator i - int i = 0.
Urmata de o conditie - i <= 3 - care spune: “ruleaza aceasta bucla atat timp cat i are valoarea mai mica sau egala cu 3”.
Iar valoarea lui i este incrementata (i++ - creste cu 1) dupa fiecare iteratie, atat timp cat conditia este adevarata.
Dupa cum poti sa vezi, in aceasta situatie, FOR face diferenta dpvd. al codului, al executiei acestuia si al memorie consumate. Toate sunt in favoarea celei de a doua secvente de cod. Ideea aici consta in task-uri repetitive, practic, bucle. Prin FOR putem crea bucle (loops) care sa verifice/opereze diferite secvente de cod, in mod repetat.
Instructiunea WHILE are o functionalitate similara cu cea a FOR-ului, doar ca se foloseste putin diferit. Cand folosim WHILE putem gandi problema in felul urmator: cat timp se intampla X, executa Y. Pe de alta parte, cand folosim FOR, gandim problema in urmatorul mod: pentru o anumita conditie X, se intampla Y. Cele 2 abordari seamana, dar sunt usor diferite (sunt folosite in contexte diferite).
Buclele FOR sunt folosite mai des in momentul in care se cunoaste numarul fix de iteratii care trebuie sa aiba loc pe parcursul rularii programului, iar WHILE folosim cand nu cunoastem acest numar. O bucla WHILE se poate folosi cand dorim sa rulam un program la infinit (prin while (1) { } ). Deci formatul standard pentru aceasta bucla este:
int contor = 0;
while ( contor < 100 ) {
instructiune 1;
...
contor++;
}
VREI SA INVETI PROGRAMARE?
Atunci ai ajuns in locul potrivit pentru ca acum poti sa inveti programare rapid si usor folosind Java.
Java este un limbaj de programare extrem de utilizat de catre foarte multe companii (Google, Facebook, Dropbox etc.) pentru ca este usor de invatat si poti creea programe foarte repede in el.
Din acest curs vei invata:
Ce este Java si de ce e recomandat sa-l inveti
Cum poti sa-ti instalezi Java la tine pe laptop sau PC
Cum sa creezi primele programe in Java
Variabile in Java
Structuri logice - if, for, while
Structuri de date (Liste, Vectori, Stack, Queue, Dictionare) in Java
Functii (Metode) in Java
Exceptii in Java
POO (Programarea Orientata pe Obiecte)
Aplicatii practice in Java
Dupa finalizarea cursului de Programare in Java iti recomand sa practici mult programarea si sa urmezi instructiunile din curs care te vor ajuta sa dobandesti cunostiintele necesare obtinerii unui job in domeniu.
Dupa aceea poti aplica pentru urmatoarele joburi:
QA Engineer (Tester)
Software Developer (Java)
Web Developer (Java - Backend)
Cursul este realizat de Ramon Nastase, IT-ist cu o experienta de 15 ani, Autor a 5 carti si Instructor acreditat de Ministerul Muncii care a lucrat in ultimii 10 ani cu peste 3.000 de cursanti online.