Invatare Atomica

Structura liniara

Progres lectie:
0%
🎯

Obiectivul lectiei

Dupa aceasta lectie, vei sti sa scrii programe care executa instructiuni pas cu pas, in ordine.

Dupa aceasta lectie vei putea:

  • Sa analizezi structura liniara (secventiala)
  • Sa scrii un algoritm in pseudocod
  • Sa citesti o schema logica (diagrama flux)
  • Sa utilizezi sablonul clasic: citire - prelucrare - afisare
  • Sa utilizezi exemplu complet: conversia temperaturii
  • Sa analizezi probleme tipice cu structura liniara

Incearca singur!

🎯 INCEARCA

Calculeaza aria unui dreptunghi!

Scrie acest program si ruleaza-l:
#include <iostream> using namespace std; int main() { float lungime, latime, aria; cout << "Lungimea: "; cin >> lungime; cout << "Latimea: "; cin >> latime; aria = lungime * latime; cout << "Aria dreptunghiului este: " << aria << endl; return 0; }
🚀 Ruleaza pe OnlineGDB

Observa: Instructiunile se executa exact in ordinea in care sunt scrise!

1

Structura liniara (secventiala)

Structura liniara (secventiala)
Un program cu structura liniara executa instructiunile una dupa alta, in ordinea in care sunt scrise.
Analogie: reteta de gatit. Cand faci o prajitura, pasii trebuie urmati exact in ordine:
  1. Amesteca faina cu zaharul.
  2. Adauga ouale si untul.
  3. Toarna in tava si baga la cuptor.
  4. Scoate prajitura dupa 30 de minute.
Daca sari pasul 2 (ouale) sau inversezi pasii 1 si 3, prajitura nu iese. La fel, in structura liniara, fiecare instructiune depinde de ce s-a calculat inainte: nu poti afisa rezultatul inainte sa-l calculezi, si nu poti calcula inainte sa citesti datele. Ordinea conteaza intotdeauna.
Instructiune 1
Instructiune 2
Instructiune 3
...
2

Cele doua reprezentari: pseudocod si schema logica

Inainte de a scrie cod C++, un algoritm poate fi reprezentat in doua moduri standard cerute de programa (competenta VII-2.2):

📝
Pseudocodul

O descriere structurata a algoritmului folosind cuvinte din limbajul natural (romana sau engleza) combinate cu cuvinte-cheie conventionale (CITESTE, SCRIE, DACA, CAT TIMP etc.). Nu are sintaxa stricta — scopul lui este claritatea, nu executia pe calculator.

🔷
Schema logica (diagrama flux)

O reprezentare grafica a algoritmului cu simboluri standardizate: oval = Start/Stop, paralelogram = Citire/Afisare, dreptunghi = Prelucrare (calcul), romb = Conditie (da/nu). Sagetile indica ordinea de executie.

Exemplu — conversia temperaturii in trei forme:

📝 Pseudocod
INCEPUT CITESTE celsius fahrenheit ← celsius * 9.0 / 5.0 + 32 SCRIE fahrenheit SFARSIT
C++ — implementare
cin >> celsius; fahrenheit = celsius * 9.0 / 5.0 + 32; cout << fahrenheit;
🔷 Schema logica — structura liniara
START
CITESTE celsius
fahrenheit ← celsius × 9/5 + 32
SCRIE fahrenheit
STOP

In schema logica pentru structura liniara, toate blocurile sunt dreptunghiuri (prelucrare) sau paralelograme (citire/afisare), conectate in ordine de sus in jos. Nu exista ramificatii — fiecare pas se executa exact o data.

💡 De ce invatam ambele?
Pseudocodul si schema logica sunt independente de limbaj — poti descrie acelasi algoritm in pseudocod si apoi implementa in C++, Python sau orice alt limbaj. La evaluare, se cere adesea pseudocodul inainte de cod.
3

Sablonul clasic: Citire - Prelucrare - Afisare

Sablonul clasic: Citire - Prelucrare - Afisare
// 1. CITIRE - luam datele de intrare cin >> a; cin >> b; // 2. PRELUCRARE - facem calculele suma = a + b; produs = a * b; // 3. AFISARE - aratam rezultatele cout << "Suma: " << suma << endl; cout << "Produs: " << produs << endl;
4

Exemplu complet: Conversia temperaturii

Exemplu complet: Conversia temperaturii
#include <iostream> using namespace std; int main() { float celsius, fahrenheit; // Citire cout << "Temperatura in Celsius: "; cin >> celsius; // Prelucrare (formula: F = C * 9.0/5.0 + 32) fahrenheit = celsius * 9.0 / 5.0 + 32; // Afisare cout << celsius << "C = " << fahrenheit << "F" << endl; return 0; }
5

Probleme tipice cu structura liniara

💡 Probleme tipice cu structura liniara
  • Calcul arie/perimetru figuri geometrice
  • Conversii unitati (km-m, C-F, ore-minute)
  • Calcule matematice simple
  • Interschimbarea valorilor a doua variabile

Exercitii practice

Exercitiul 1 (Nivel minim) - Programare

Cerinta: Citeste doua numere intregi a si b de la tastatura si afiseaza suma lor.

Vezi rezolvarea

Cod complet, folosind sablonul citire-prelucrare-afisare:

#include <iostream> using namespace std; int main() { int a, b; cin >> a; cin >> b; cout << "Suma este: " << a + b; return 0; }

Pasii: 1) CITIRE - cin >> a; cin >> b;; 2) PRELUCRARE - calculul a + b; 3) AFISARE - cout. Testeaza cu a=4, b=6: rezultatul trebuie sa fie 10.

Exercitiul 2 (Nivel standard) - Programare

Cerinta: Se dau lungimea L si latimea l unui dreptunghi. Calculeaza si afiseaza perimetrul.

Vezi rezolvarea

Cod complet:

#include <iostream> using namespace std; int main() { float L, l, perimetru; cin >> L; cin >> l; perimetru = 2 * (L + l); cout << "Perimetrul este: " << perimetru; return 0; }

Formula perimetrului dreptunghiului: P = 2 * (L + l). Respecta sablonul citire (L si l) - prelucrare (calcul perimetru) - afisare. Testeaza cu L=5, l=3: perimetrul trebuie sa fie 16.

Exercitiul 3 (Nivel performanta) - Programare

Cerinta: Citeste doua numere a si b. Interschimba valorile lor si afiseaza-le (prima valoarea lui b, apoi valoarea lui a).

Vezi rezolvarea

Structura solutiei (schita):

  1. Citeste a si b.
  2. Interschimba valorile cu o variabila temp: temp = a; a = b; b = temp; (tehnica din lectia anterioara).
  3. Dupa interschimbare, afiseaza intai noua valoare a lui b, apoi noua valoare a lui a - enuntul cere aceasta ordine, nu ordinea obisnuita a-apoi-b.

Capcana: dupa interschimbare, "noul a" e vechiul b si invers - verifica pe hartie cu doua numere concrete (ex: a=2, b=7) inainte sa rulezi codul. Criteriu de evaluare: ordinea de afisare respecta enuntul si valorile sunt cu adevarat schimbate.

Exercitiul 4 (Nivel performanta) - Programare

Cerinta: Citeste 3 numere intregi si calculeaza media lor aritmetica (cu zecimale).

Vezi rezolvarea

Structura solutiei (schita):

  1. Citeste trei variabile int a, b, c.
  2. Declara float media si calculeaza media = (a + b + c) / 3.0;.

Capcana esentiala: daca imparti la 3 (numar intreg) in loc de 3.0, C++ face impartire intreaga si pierzi zecimalele, chiar daca media e declarata float. Criteriu de evaluare: rezultatul are zecimale corecte (ex: 7+8+9 -> media 8.0; 5+6+8 -> media 6.33).

Exercitiul 5 (Nivel performanta) - Programare

Cerinta: Creeaza un program care converteste intre diferite unitati de masura. Urmeaza pasii:

  1. Declara variabile float pentru: distanta in kilometri, distanta in metri, greutate in kilograme, greutate in grame.
  2. Citeste de la tastatura distanta in kilometri si greutatea in kilograme.
  3. Calculeaza: metri = kilometri * 1000 si grame = kilograme * 1000.
  4. Afiseaza rezultatele, de exemplu: "5 km = 5000 m" si "2.5 kg = 2500 g".
  5. (Optional) Adauga conversia orelor in minute: citeste ore, calculeaza minute = ore * 60, afiseaza.
Vezi rezolvarea

Structura solutiei (schita):

  1. Declara 4 variabile float: km, m, kg, g (optional si ore, minute).
  2. Citeste km si kg de la tastatura.
  3. Calculeaza m = km * 1000; g = kg * 1000; (optional minute = ore * 60;).
  4. Afiseaza rezultatele in formatul cerut, ex: cout << km << " km = " << m << " m";.

Criteriu de evaluare: formulele de conversie corecte (inmultire cu 1000 pentru km->m si kg->g, cu 60 pentru ore->minute), afisare clara cu unitatile de masura precizate.

Ce ai invatat astazi

  • Ai invatat structura liniara (secventiala) — instructiunile se executa in ordine, una dupa alta
  • Ai invatat pseudocodul: descrierea unui algoritm in cuvinte, independent de orice limbaj de programare
  • Ai invatat schema logica: reprezentarea grafica a algoritmului cu simboluri standardizate (oval, dreptunghi, paralelogram)
  • Acum stii sablonul clasic: citire - prelucrare - afisare
  • Ai descoperit exemplu complet: conversia temperaturii (in pseudocod, schema logica si C++)
  • Ai explorat probleme tipice cu structura liniara

Vrei mai mult?

Ai facut conversia Celsius-Fahrenheit. Fa-o completa.

  • Provocare: Adauga in ACELASI program o a doua conversie, Fahrenheit spre Celsius (formula: C = (F - 32) * 5.0 / 9.0), afisata dupa prima. Testeaza cu valori stiute: 0C trebuie sa dea 32F, iar 212F introdus in a doua formula trebuie sa dea 100C. Daca nu iese exact, cauta eroarea in ordinea operatorilor.
  • De ce? De ce ordinea citire-prelucrare-afisare nu poate fi schimbata (de exemplu afisarea inaintea prelucrarii), desi din punct de vedere al sintaxei codul tot ar compila fara erori?
  • Mai departe: Orice convertor online (km in mile, lei in euro, ore in minute) foloseste exact acest sablon: citeste o valoare, aplica o formula, afiseaza rezultatul.

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →