🚀 Tutorial Java - Inițiere

Învață bazele programării Java pas cu pas

1. Operatori Aritmetici

Operatorii aritmetici sunt folosiți pentru a efectua operații matematice de bază între variabile și valori.

Operator Nume Exemplu Rezultat
+ Adunare 5 + 3 8
- Scădere 10 - 4 6
* Înmulțire 6 * 7 42
/ Împărțire 20 / 4 5
% Modulo (rest) 10 % 3 1
++ Incrementare x++ sau ++x x + 1
-- Decrementare x-- sau --x x - 1

Exemplu Practic:

Calculator.java
public class Calculator { public static void main(String[] args) { // Declararea variabilelor int a = 15; int b = 4; // Operații aritmetice System.out.println("Adunare: " + (a + b)); // 19 System.out.println("Scădere: " + (a - b)); // 11 System.out.println("Înmulțire: " + (a * b)); // 60 System.out.println("Împărțire: " + (a / b)); // 3 System.out.println("Modulo: " + (a % b)); // 3 // Incrementare și decrementare int x = 5; System.out.println("x initial: " + x); // 5 System.out.println("x++: " + x++); // 5 (afișează apoi incrementează) System.out.println("x după: " + x); // 6 System.out.println("++x: " + ++x); // 7 (incrementează apoi afișează) } }
Sfat: Atenție la diferența dintre x++ (post-incrementare) și ++x (pre-incrementare)! Post-incrementarea returnează valoarea veche apoi incrementează, iar pre-incrementarea incrementează mai întâi apoi returnează noua valoare.

2. Operatori Logici

Operatorii logici sunt folosiți pentru a combina sau inversa expresii booleene (true/false).

Operator Nume Descriere Exemplu
&& AND logic Returnează true dacă ambele condiții sunt true (5 > 3) && (8 > 5) → true
|| OR logic Returnează true dacă cel puțin o condiție este true (5 > 3) || (8 < 5) → true
! NOT logic Inversează valoarea booleană !(5 > 3) → false

Operatori de Comparație (folosiți cu operatori logici):

Operator Semnificație Exemplu
== Egal cu 5 == 5 → true
!= Diferit de 5 != 3 → true
> Mai mare 5 > 3 → true
< Mai mic 3 < 5 → true
>= Mai mare sau egal 5 >= 5 → true
<= Mai mic sau egal 3 <= 5 → true

Exemplu Practic:

OperatoriLogici.java
public class OperatoriLogici { public static void main(String[] args) { int varsta = 20; boolean arePermis = true; int nota = 8; // Operator AND (&&) if (varsta >= 18 && arePermis) { System.out.println("Poate conduce mașina!"); } // Operator OR (||) if (nota >= 9 || nota == 8) { System.out.println("Notă foarte bună!"); } // Operator NOT (!) boolean estePloios = false; if (!estePloios) { System.out.println("Vremea este frumoasă!"); } // Combinații complexe int temperatura = 25; boolean esteSoare = true; if ((temperatura >= 20 && temperatura <= 30) && esteSoare && !estePloios) { System.out.println("Condiții perfecte pentru plimbare!"); } } }
📝 Exercițiu:

Creează un program care verifică dacă un student poate trece anul:

  • Media generală trebuie să fie >= 5
  • NU trebuie să aibă mai mult de 2 restanțe
  • Prezența trebuie să fie >= 70%

3. Instrucțiuni de Afișare Condiționale

Instrucțiunile condiționale permit programului să execute diferite blocuri de cod în funcție de anumite condiții.

3.1 Instrucțiunea IF

Sintaxă de bază
if (condiție) { // cod executat dacă condiția este true }

3.2 Instrucțiunea IF-ELSE

Exemplu IF-ELSE
int ora = 14; if (ora < 12) { System.out.println("Bună dimineața!"); } else { System.out.println("Bună ziua!"); }

3.3 Instrucțiunea IF-ELSE IF-ELSE

Exemplu complet
public class SistemNotare { public static void main(String[] args) { int punctaj = 75; String calificativ; if (punctaj >= 90) { calificativ = "Excelent"; System.out.println("Felicitări! Nota: A"); } else if (punctaj >= 80) { calificativ = "Foarte bine"; System.out.println("Foarte bine! Nota: B"); } else if (punctaj >= 70) { calificativ = "Bine"; System.out.println("Bine! Nota: C"); } else if (punctaj >= 60) { calificativ = "Satisfăcător"; System.out.println("Satisfăcător! Nota: D"); } else { calificativ = "Insuficient"; System.out.println("Mai încearcă! Nota: F"); } System.out.println("Calificativ: " + calificativ); } }

3.4 Instrucțiunea SWITCH

Exemplu SWITCH
public class MeniuRestaurant { public static void main(String[] args) { int optiune = 2; String felPrincipal; switch (optiune) { case 1: felPrincipal = "Pizza Margherita"; System.out.println("Ați ales: " + felPrincipal); System.out.println("Preț: 25 RON"); break; case 2: felPrincipal = "Paste Carbonara"; System.out.println("Ați ales: " + felPrincipal); System.out.println("Preț: 30 RON"); break; case 3: felPrincipal = "Burger cu cartofi"; System.out.println("Ați ales: " + felPrincipal); System.out.println("Preț: 35 RON"); break; default: System.out.println("Opțiune invalidă! Vă rugăm alegeți 1, 2 sau 3."); } } }

3.5 Operator Ternar (Condiție Scurtă)

Operator ternar
// Sintaxă: condiție ? valoare_dacă_true : valoare_dacă_false int varsta = 20; String status = (varsta >= 18) ? "Adult" : "Minor"; System.out.println("Status: " + status); // Exemplu cu afișare directă int temperatura = 30; System.out.println(temperatura > 25 ? "Este cald" : "Este răcoare");
Sfat: Folosește operatorul ternar pentru condiții simple. Pentru logică mai complexă, folosește if-else pentru claritate!

Exemplu Complex - Sistem de Autentificare

SistemAutentificare.java
public class SistemAutentificare { public static void main(String[] args) { // Date utilizator String username = "admin"; String password = "1234"; boolean contActiv = true; int incercariEsuate = 2; // Verificare condiții multiple if (!contActiv) { System.out.println("❌ Contul este dezactivat!"); } else if (incercariEsuate >= 3) { System.out.println("🔒 Cont blocat! Prea multe încercări eșuate."); } else if (username.equals("admin") && password.equals("1234")) { System.out.println("✅ Autentificare reușită!"); System.out.println("Bine ai venit, " + username + "!"); // Verificare rol utilizator String rol = username.equals("admin") ? "Administrator" : "Utilizator"; System.out.println("Rol: " + rol); // Afișare meniu bazat pe rol if (rol.equals("Administrator")) { System.out.println("\n--- Meniu Administrator ---"); System.out.println("1. Gestionare utilizatori"); System.out.println("2. Configurări sistem"); System.out.println("3. Rapoarte"); } else { System.out.println("\n--- Meniu Utilizator ---"); System.out.println("1. Profil"); System.out.println("2. Mesaje"); } } else { System.out.println("❌ Username sau parolă incorectă!"); incercariEsuate++; System.out.println("Încercări rămase: " + (3 - incercariEsuate)); } } }

4. Exerciții Practice 🎯

📗 Nivel Începător

Exercițiul 1: Calculator de Reduceri

Creează un program care calculează prețul final după aplicarea unei reduceri:

  • Dacă suma > 500 RON → reducere 20%
  • Dacă suma > 200 RON → reducere 10%
  • Dacă suma > 100 RON → reducere 5%
  • Altfel → fără reducere
Exercițiul 2: Verificare Par/Impar

Scrie un program care:

  • Verifică dacă un număr este par sau impar
  • Dacă este par, verifică dacă este divizibil cu 4
  • Dacă este impar, verifică dacă este divizibil cu 3
  • Afișează toate informațiile găsite
Exercițiul 3: Calculator Vârstă

Creează un program care primește anul nașterii și:

  • Calculează vârsta exactă
  • Determină categoria: copil (0-12), adolescent (13-17), adult (18-64), senior (65+)
  • Verifică dacă persoana poate vota (≥18)
  • Verifică dacă poate obține permis de conducere (≥18)
Exercițiul 4: Convertor Temperatură

Implementează un convertor care:

  • Convertește Celsius în Fahrenheit și invers
  • Afișează un mesaj despre starea vremii: Îngheț (<0°C), Rece (0-15°C), Plăcut (15-25°C), Cald (>25°C)
  • Folosește operatorul ternar pentru conversie rapidă

📘 Nivel Intermediar

Exercițiul 5: Verificare Triunghi Avansat

Scrie un program care verifică pentru 3 laturi:

  • Dacă pot forma un triunghi (suma oricăror 2 laturi > a treia)
  • Tipul: Echilateral, Isoscel sau Scalene
  • Dacă este triunghi dreptunghic (teorema lui Pitagora)
  • Calculează perimetrul și estimează aria
Exercițiul 6: Sistem de Notare Complex

Implementează un sistem care:

  • Primește 3 note (teorie, practică, proiect)
  • Calculează media ponderată: teorie 30%, practică 40%, proiect 30%
  • Determină calificativul (A, B, C, D, F)
  • Verifică dacă studentul primește bursă (media ≥ 8.5)
  • Folosește atât if-else cât și switch
Exercițiul 7: Calculator Taxe și Salarii

Creează un calculator care:

  • Primește salariul brut
  • Calculează impozit: 10% pentru <2000 RON, 16% pentru 2000-5000 RON, 20% pentru >5000 RON
  • Calculează contribuții sociale (25% din brut)
  • Afișează salariul net și toate deducerile
  • Determină categoria de venit (mic, mediu, mare)
Exercițiul 8: Validare Dată Calendaristică

Scrie un program care verifică dacă o dată (zi, lună, an) este validă:

  • Verifică limitele pentru luni (1-12)
  • Verifică zilele în funcție de lună (28/29/30/31)
  • Determină dacă anul este bisect
  • Calculează ce zi a săptămânii este
  • Afișează anotimpul corespunzător

📕 Nivel Avansat

Exercițiul 9: Sistem Bancar

Implementează un mini-sistem bancar care:

  • Verifică PIN-ul (3 încercări maxim)
  • Oferă meniu: 1-Sold, 2-Retragere, 3-Depunere, 4-Transfer
  • Verifică dacă suma retrasă nu depășește soldul
  • Aplică comision pentru transfer (2% pentru sume >1000)
  • Limitează retragerile zilnice la 5000 RON
  • Folosește toate tipurile de instrucțiuni condiționale
Exercițiul 10: Calculator IMC și Sănătate

Creează un program complex pentru sănătate:

  • Calculează IMC (Indicele de Masă Corporală)
  • Determină categoria: Subponderal, Normal, Supraponderal, Obezitate (3 grade)
  • Calculează metabolismul bazal (folosind formulele Harris-Benedict)
  • Recomandă calorii zilnice în funcție de nivel activitate
  • Oferă sfaturi personalizate de sănătate
  • Verifică riscuri de sănătate bazate pe vârstă și IMC
Exercițiul 11: Joc Piatră-Hârtie-Foarfecă

Implementează jocul clasic cu următoarele funcționalități:

  • Generează alegere aleatorie pentru computer (simulează cu număr 1-3)
  • Primește alegerea utilizatorului
  • Determină câștigătorul folosind logică complexă
  • Ține scorul (best of 5)
  • Afișează statistici: rate de câștig, cea mai folosită mutare
  • Implementează și variantele: Lizard, Spock (opțional)
Exercițiul 12: Sistem de Rezervări Cinema

Creează un sistem care:

  • Verifică vârsta pentru rating film (AG, AP12, N15, IM18)
  • Calculează prețul: Adult 25 RON, Copil 15 RON, Student/Pensionar 20 RON
  • Aplică reduceri: Marți -50%, Weekend +20%, Matineu -30%
  • Verifică disponibilitate sală (simulat cu nr. locuri)
  • Oferă combo-uri: Popcorn+Suc (15 RON reducere)
  • Calculează total și aplică taxe

🏆 Provocări Bonus

🌟 Mega Provocare: Calculator Științific

Construiește un calculator care suportă:

  • Operații de bază (+, -, *, /, %)
  • Operații avansate (putere, radical, factorial)
  • Conversii între baze numerice (binar, octal, hexazecimal)
  • Funcții trigonometrice simulate (sin, cos pentru 0°, 30°, 45°, 60°, 90°)
  • Mod științific vs standard (switch între moduri)
  • Istoric ultimele 5 operații
  • Validare completă a input-ului (evitare împărțire la 0, etc.)
🎮 Super Provocare: RPG Combat System

Implementează un sistem de luptă pentru joc:

  • Clase de personaje: Războinic (HP mare), Mag (DMG mare), Hoț (Viteză mare)
  • Calculează damage bazat pe ATK - DEF adversar
  • Șansă critică (10% pentru x2 damage)
  • Sistem de energie pentru abilități speciale
  • Verifică condiții de victorie/înfrângere
  • Aplică efecte de status (otrăvit, înghețat, ars)
  • Sistem de nivel și experiență

5. Sfaturi pentru Rezolvare 💡

Pentru Începători:
  • Începe cu exercițiile simple și crește gradual dificultatea
  • Testează codul pas cu pas, folosind System.out.println() pentru debugging
  • Nu uita de break în switch - altfel codul continuă să execute următoarele cazuri!
  • Folosește nume descriptive pentru variabile (nu x, y, z)
Strategii de Rezolvare:
  • Descompune problema în pași mai mici
  • Scrie pseudocod înainte de implementare
  • Testează cu valori limită (0, numere negative, valori foarte mari)
  • Verifică toate cazurile posibile, inclusiv cele excepționale
  • Refactorizează codul după ce funcționează pentru a-l face mai curat
Erori Comune de Evitat:
  • Folosirea = în loc de == pentru comparație
  • Uitarea parantezelor la condiții complexe
  • Ordinea greșită a condițiilor în if-else if (verifică întâi cazurile specifice)
  • Împărțirea la zero - verifică întotdeauna înainte!
  • Infinite loops din condiții greșite

6. Exemple de Soluții 📝

Soluție: Calculator de Reduceri

CalculatorReduceri.java
public class CalculatorReduceri { public static void main(String[] args) { double sumaCumparaturi = 350.50; double reducere = 0; double sumaFinala; // Determinare procentaj reducere if (sumaCumparaturi > 500) { reducere = 20; } else if (sumaCumparaturi > 200) { reducere = 10; } else if (sumaCumparaturi > 100) { reducere = 5; } // Calcul sumă finală double valoareReducere = sumaCumparaturi * (reducere / 100); sumaFinala = sumaCumparaturi - valoareReducere; // Afișare rezultate System.out.println("====== CHITANȚĂ ======"); System.out.println("Sumă inițială: " + sumaCumparaturi + " RON"); if (reducere > 0) { System.out.println("Reducere aplicată: " + reducere + "%"); System.out.println("Valoare reducere: -" + valoareReducere + " RON"); } else { System.out.println("Nu se aplică reducere"); } System.out.println("===================="); System.out.println("TOTAL DE PLATĂ: " + sumaFinala + " RON"); // Mesaj personalizat folosind operator ternar String mesaj = (reducere >= 20) ? "Felicitări! Ai economisit mult azi!" : (reducere > 0) ? "Mulțumim pentru cumpărături!" : "Cumpără mai mult data viitoare pentru reduceri!"; System.out.println("\n" + mesaj); } }

Soluție: Verificare Par/Impar Avansat

VerificareNumar.java
public class VerificareNumar { public static void main(String[] args) { int numar = 24; System.out.println("Analiză pentru numărul: " + numar); System.out.println("========================"); // Verificare par/impar boolean estePar = (numar % 2 == 0); if (estePar) { System.out.println("✓ Numărul este PAR"); // Verificări adiționale pentru numere pare if (numar % 4 == 0) { System.out.println(" → Este divizibil cu 4"); if (numar % 8 == 0) { System.out.println(" → Este și divizibil cu 8!"); } } if (numar % 10 == 0) { System.out.println(" → Se termină în 0 (divizibil cu 10)"); } } else { System.out.println("✓ Numărul este IMPAR"); // Verificări adiționale pentru numere impare if (numar % 3 == 0) { System.out.println(" → Este divizibil cu 3"); if (numar % 9 == 0) { System.out.println(" → Este și divizibil cu 9!"); } } if (numar % 5 == 0) { System.out.println(" → Este divizibil cu 5"); } } // Verificări generale boolean estePrim = true; if (numar <= 1) { estePrim = false; } else { for (int i = 2; i <= numar/2; i++) { if (numar % i == 0) { estePrim = false; break; } } } System.out.println("\nInformații adiționale:"); System.out.println(estePrim ? "★ Este număr PRIM!" : "☆ Nu este număr prim"); System.out.println(numar > 0 ? "+ Număr pozitiv" : numar < 0 ? "- Număr negativ" : "◯ Este zero"); } }

Soluție: Sistem de Notare Complex

SistemNotareAvansat.java
public class SistemNotareAvansat { public static void main(String[] args) { // Date student String numeStudent = "Ion Popescu"; double notaTeorie = 8.5; double notaPractica = 9.0; double notaProiect = 8.0; // Calculare medie ponderată double mediaPonderata = (notaTeorie * 0.3) + (notaPractica * 0.4) + (notaProiect * 0.3); // Determinare calificativ folosind if-else String calificativ; String mesajPersonalizat; if (mediaPonderata >= 9.0) { calificativ = "A"; mesajPersonalizat = "Excelent! Performanță remarcabilă!"; } else if (mediaPonderata >= 8.0) { calificativ = "B"; mesajPersonalizat = "Foarte bine! Continuă tot așa!"; } else if (mediaPonderata >= 7.0) { calificativ = "C"; mesajPersonalizat = "Bine! Există loc de îmbunătățire."; } else if (mediaPonderata >= 6.0) { calificativ = "D"; mesajPersonalizat = "Satisfăcător. Mai multă atenție necesară."; } else { calificativ = "F"; mesajPersonalizat = "Insuficient. Este nevoie de efort suplimentar."; } // Afișare raport System.out.println("╔══════════════════════════════════════╗"); System.out.println("║ RAPORT EVALUARE STUDENT ║"); System.out.println("╠══════════════════════════════════════╣"); System.out.println("║ Student: " + numeStudent); System.out.println("╠══════════════════════════════════════╣"); System.out.println("║ Note componente: ║"); System.out.println("║ • Teorie (30%): " + notaTeorie); System.out.println("║ • Practică (40%): " + notaPractica); System.out.println("║ • Proiect (30%): " + notaProiect); System.out.println("╠══════════════════════════════════════╣"); System.out.println("║ MEDIE FINALĂ: " + String.format("%.2f", mediaPonderata)); System.out.println("║ CALIFICATIV: " + calificativ); System.out.println("╠══════════════════════════════════════╣"); // Verificare bursă și alte beneficii if (mediaPonderata >= 8.5) { System.out.println("║ ✓ Eligibil pentru BURSĂ DE MERIT ║"); if (mediaPonderata >= 9.5) { System.out.println("║ ★ Eligibil pentru BURSĂ DE EXCELENȚĂ║"); } } else { System.out.println("║ ✗ Nu este eligibil pentru bursă ║"); } // Recomandări folosind switch System.out.println("╠══════════════════════════════════════╣"); System.out.println("║ " + mesajPersonalizat); switch (calificativ) { case "A": case "B": System.out.println("║ → Recomandare: Cursuri avansate ║"); break; case "C": System.out.println("║ → Recomandare: Practică suplimentară║"); break; case "D": case "F": System.out.println("║ → Recomandare: Tutoriat individual ║"); break; } System.out.println("╚══════════════════════════════════════╝"); } }
Observă în soluții:
  • Folosirea comentariilor pentru claritate
  • Validarea datelor de intrare
  • Formatarea frumoasă a output-ului
  • Combinarea mai multor tipuri de instrucțiuni condiționale
  • Tratarea tuturor cazurilor posibile