Niciun programator bun nu începe cu tastatura. Începe cu o foaie de hârtie, câteva întrebări și un desen. Astăzi înveți drumul complet: de la problemă → la algoritm → la program care rulează.
Le urmărim pe o problemă reală: „Calculați media semestrială a unui elev din 3 note." Apasă pe fiecare etapă.
Introdu trei note, alege împărțirea și apasă „Rulează". Vei vedea chiar bug-ul de la etapa de testare — și cum îl repari la depanare. Comută între C++ și Python: ambele limbaje au capcana împărțirii, doar că o poartă pe operatori diferiți.
Același algoritm poate fi exprimat în mai multe feluri — de la desen la cod-mașină. Fiecare are rostul lui.
Schema logică: desenul algoritmului. Perfectă la început, pentru că vezi fluxul. Devine greoaie la algoritmi mari.
Românește + structură: „citește", „dacă…atunci", „scrie". Limbajul subiectelor de BAC — îl exersăm constant.
C++ / Python — înțeles de oameni, tradus pentru mașină. Aici se scrie software-ul lumii reale.
Procesorul înțelege doar cod-mașină (biții din Modulul 00!). Diferența dintre C++ și Python e când se face traducerea:
Un limbaj de programare e un set de reguli sintactice și semantice prin care îi spunem calculatorului, exact și fără ambiguitate, ce să facă.
Creat de Bjarne Stroustrup ca extensie a limbajului C (Dennis Ritchie & Brian Kernighan). Unul dintre cele mai folosite limbaje din industrie și limbajul în care s-a dat proba de BAC la informatică până acum.
Ai nevoie de un IDE (mediu integrat de dezvoltare) care compilează și rulează codul — cel mai folosit la școală: Code::Blocks.
Gândit pentru lizibilitate: mai puțină sintaxă „de decor", aceeași putere de calcul. Îl folosim în paralel pentru că exprimă rapid ideea unui algoritm, înainte s-o traducem riguros în C++.
E suficient un editor cu interpretor integrat: Thonny, IDLE sau VS Code.
O variabilă e o cutie cu etichetă din memoria calculatorului: eticheta e numele, în cutie stă valoarea, iar tipul decide cât de mare e cutia.
Apasă pe o declarație și privește cum se rezervă octeții în memorie. Fiecare pătrățel = 1 octet (8 biți — îi știi din Modulul 00!).
Șase tipuri acoperă tot ce vei scrie în clasa a IX-a. Citește-le pe rând; badge-ul din dreapta e mărimea cutiei.
În C++ îl pui tu. Scrii int x = 5; și cutia rămâne int până la finalul programului.
În Python nu scrii niciun tip. Scrii doar x = 5, iar Python se uită la valoare și decide singur că e întreg.
Mai mult: dacă apoi scrii x = "salut", aceeași variabilă devine text. În C++ așa ceva nu se poate.
La BAC dai în C++ — deci tipul greșit nu e o scăpare de stil, e punctaj pierdut.
Pasul 1 — cutia are un număr fix de biți. Un int are 4 octeți, adică 32 de biți. Unul singur se duce pe semn (+ sau −); ceilalți 31 țin cifrele.
Maximul e 231−1, nu 231, pentru că una dintre combinații e ocupată de zero.
Pe partea negativă nu se pierde nimic, deci intervalul e ușor asimetric: se coboară cu unu mai mult decât se urcă.
Pasul 2 — ce se întâmplă când depășești. Nu primești nicio eroare. Biții care nu încap se pierd pur și simplu, iar numărul „dă pagina" ca un odometru de mașină:
Pasul 3 — soluția e o cutie mai mare. Aceleași reguli, doar că de două ori mai mulți biți:
Programul citește două numere și le adună. Comută pe 🐍 Python — acolo citirea e explicată bucată cu bucată, direct în cod.
Cu variabilele „substantive" și operatorii „verbe" poți forma primele propoziții. Apasă pe orice rând ca să vezi un exemplu calculat.
| Operație | Pseudocod | 🐍 Python | ⚙ C++ |
|---|
Același semn /, două comportamente. Citește tabelul pe orizontală: aceeași expresie, două rezultate.
| expresia | ⚙ C++ | 🐍 Python |
|---|---|---|
| 7 / 2 | 3 | 3.5 |
| 7.0 / 2 | 3.5 | 3.5 |
| 7 // 2 | nu există în C++ | 3 |
| 7 % 2 | 1 | 1 |
| −7 / 2 | −3 | −3.5 |
E o alegere de proiectare. C++ păstrează tipul operanzilor: doi întregi intră, un întreg iese.
Python păstrează valoarea matematică: 7 împărțit la 2 chiar e 3,5, deci asta îți dă.
Aici pierzi puncte la BAC fără să-ți dai seama: media a trei note cu / 3 în loc de / 3.0 îți taie zecimalele în tăcere.
Nu sunt obligatorii, dar le vei vedea peste tot — inclusiv în subiectele de BAC. Fiecare rând: scurtătura, ce înseamnă de fapt, și unde merge.
Python are un operator dedicat. C++ nu are niciunul — și asta surprinde pe toată lumea prima dată.
| vreau | 🐍 Python | ⚙ C++ |
|---|---|---|
| 210 | 2 ** 10 → 1024 | pow(2, 10) → 1024.0 |
| 20,5 (radical) | 2 ** 0.5 | sqrt(2) |
| operator dedicat | ** — există | nu există |
| de unde vine | e în limbaj | din <cmath> |
pow lucrează cu numere reale și întoarce double, nu întreg — chiar dacă îi dai doi întregi.
Iar numerele reale se stochează aproximativ. Așa că pow(10, 2) poate ieși 99.9999999, iar int p = pow(10, 2); taie zecimalele și îți lasă în cutie 99.
De-asta, la un BAC pe puteri întregi, nu folosi pow: fă înmulțirea într-o buclă, sau x * x pentru pătrat. Rezultatul e întreg și sigur.
Nu sunt de memorat, sunt de gândit: tipuri, prioritatea operațiilor, atribuiri compuse, ridicarea la putere. Aceleași situații, în ambele limbaje — și vei vedea că uneori răspunsul diferă. Ai o singură încercare la fiecare: după ce apeși, răspunsul rămâne înghețat.
Schimbând limbajul, grila se reia de la capăt — sunt alte întrebări, cu alte răspunsuri.
Aici întrebările vin la nesfârșit, una după alta. Bun de făcut două minute înainte de test.
Algoritmul: maximul dintre două numere. Alege valorile, apoi execută Pas cu pas — schema, codul și variabilele se mișcă împreună.
| a | — |
| b | — |
| max | — |
Același „Salut, clasa a IX-a!", scris în ambele limbaje. Comută între ele și apasă pe fiecare linie ca să afli ce face.
Un program netestat e un program greșit care încă n-a fost prins. Înveți să gândești ca un „vânător de erori".
| Tip de test | Exemplu de date | Ce verifică |
|---|---|---|
| Valori obișnuite | 7 și 9 → media 8 | Funcționează cazul normal? |
| Valori de limită | 1 și 1 · 10 și 10 | Merge la marginile intervalului? |
| Rezultat neîntreg | 7 și 8 → media 7.5 | Se pierde partea zecimală? |
| Date invalide | nota 11 sau -3 | Programul validează intrarea? |
Programul ar trebui să afișeze media lui 7 și 8 (adică 7.5), dar afișează 7. Click pe linia vinovată. Încearcă la ambele limbaje — bug-ul e același ca idee, dar se ascunde în alt loc.
Trei căi prin care un program primește și trimite date — le folosim pe toate în acest an.
Text simplu: cin/cout, input/print. Aici lucrăm cel mai des — și tot aici se dă BAC-ul.
Ferestre, butoane, casete text — le construim în Modulul 11 cu Tkinter.
Programul citește și scrie date pe disc, fără om la tastatură — Modulul 09.
Opt idei de păstrat. Restul se construiește pe ele.