Pagina Principală
Ora 3

Structura Liniară

Algoritmi simpli care se execută secvențial, fără decizii sau repetiții

40min teorie + 10min probleme
Competența 3.2
Sigla liceului
TEORIE - 40 minute

Ce vei învăța astăzi?

După această lecție, vei putea să recunoști și să scrii algoritmi cu structură liniară, să înțelegi fluxul secvențial de execuție și să rezolvi probleme simple folosind doar operații de bază.

Caracteristicile structurii liniare
Fluxul secvențial de execuție
Operații de bază în algoritmi liniari
Rezolvarea problemelor practice

Ce este Structura Liniară?

Definiție: Structura liniară este cea mai simplă formă de organizare a algoritmilor, în care instrucțiunile se execută în ordine, una după alta, fără salturi, decizii sau repetiții.

Analogie: Rețeta de gătit simplă

Gândește-te la structura liniară ca la o rețetă de gătit unde pașii se execută în ordine:

PASUL 1

Citește ingredientele

Citire date
PASUL 2

Amestecă ingredientele

Procesare
PASUL 3

Servește preparatul

Afișare rezultat

Exemplu interactiv - Structura Liniară

citește a, b, c (numere reale) ┌ calculează │ medie ← (a + b + c) / 3 └■ scrie "Media aritmetică este: ", medie

Observație: Toate instrucțiunile se execută în ordine, de la prima la ultima, fără salturi sau repetiții.

Caracteristicile structurii liniare:
Execuție secvențială

Instrucțiunile se execută în ordinea în care sunt scrise

Fără decizii

Nu există instrucțiuni condiționale (dacă...atunci...)

Fără repetiții

Nu există bucle (cât timp..., pentru...)

Operații simple

Folosește doar citire, atribuire, calcule și afișare

Probleme rezolvate - Structură Liniară
Problema 1: Conversie grade Celsius → Fahrenheit

Enunț: Scrieți un algoritm care convertește temperatura din grade Celsius în Fahrenheit.

citește C (temperatura în Celsius) ┌ calculează │ F ← C * 9 / 5 + 32 └■ scrie "Temperatura în Fahrenheit: ", F
Problema 2: Calcul arie și perimetru pătrat

Enunț: Scrieți un algoritm care calculează aria și perimetrul unui pătrat.

citește l (latura pătratului) ┌ calculează │ A ← l * l │ P ← 4 * l └■ scrie "Aria pătratului: ", A scrie "Perimetrul pătratului: ", P
Problema 3: Calcul putere mecanică

Enunț: Scrieți un algoritm care calculează puterea mecanică P = F × v.

citește F, v (F - forța în N, v - viteza în m/s) ┌ calculează │ P ← F * v └■ scrie "Puterea mecanică: ", P, " W"
Ușor de înțeles

Fluxul simplu și predictibil

Ușor de depanat

Erorile sunt ușor de identificat

Bază pentru structuri complexe

Fundamentul pentru algoritmii mai complecși

Fluxul Secvențial de Execuție

START

Începutul algoritmului

CITIRE DATE

Citește datele de intrare

citește a, b
citește nume
citește x, y, z

PROCESARE

Calcule și operații

suma ← a + b
media ← (x+y+z)/3
rezultat ← calcul

AFIȘARE REZULTATE

Afișează rezultatele

scrie "Suma: ", suma
scrie rezultat
scrie "Final"

STOP

Sfârșitul algoritmului

Testează-ți cunoștințele:

Care dintre următoarele este un algoritm cu structură liniară?

Operații de Bază în Algoritmi Liniari

Operații de Intrare

citește
Citește date de la tastatură
➡️ citește nume, varsta
citește variabilă
Citește o singură variabilă
➡️ citește x

Operații de Procesare

Atribuire de valoare
➡️ suma ← a + b
+ - * /
Operații aritmetice
➡️ media ← (n1+n2+n3)/3
%
Restul împărțirii
➡️ rest ← n % 2

Operații de Ieșire

scrie
Afișează rezultate
➡️ scrie "Rezultat: ", r
scrie text
Afișează doar text
➡️ scrie "Program terminat"
Exercițiu de completare:
______ raza
pi ← ______
┌ calculează
│ aria ← ______ * raza * raza
│ perimetru ← 2 * ______ * raza
└■
______ "Aria cercului: ", aria
______ "Perimetrul cercului: ", perimetru
Bancă de cuvinte:
citește scrie pi 3.14

Traducere Pseudocod → C++

Pseudocod (școală):
citește a, b (numere întregi) ┌ calculează │ suma ← a + b └■ scrie "Suma este: ", suma

Elemente pseudocod:

  • citește - citire date
  • - atribuire
  • scrie - afișare rezultat
C++ echivalent:
Soluție corectă:
#include <iostream>

using namespace std;

int main() {
    int a, b;
    
    cout << "Introdu doua numere: ";
    cin >> a >> b;
    
    int suma = a + b;
    
    cout << "Suma este: " << suma;
    
    return 0;
}

Observații:
cin este echivalentul lui citește
cout este echivalentul lui scrie
= este echivalentul lui
• Toate instrucțiunile în C++ se termină cu ;

Instrucțiuni C++ pentru Structura Liniară

Instrucțiunea expresie în C++

O expresie devine instrucțiune dacă este urmată de ;.

Sintaxă:
Expresie;
Exemple:
x = 2;          // atribuire
x++;            // incrementare
cout << x;      // afișare
cin >> x;       // citire
Instrucțiunea declarativă

Declară variabile de un anumit tip.

Sintaxă:
Tip_de_date Lista_identificatori;
Exemple:
int x, y, z;    // 3 variabile întregi
double a;       // o variabilă reală
char ch;        // un caracter
bool flag;      // o variabilă booleană
Instrucțiunea compusă (bloc)

Grupare de instrucțiuni închise între acolade {}.

Sintaxă:
{
    // instrucțiuni
}
Exemplu:
{
    int x = 5;
    cout << x;
    x = x + 3;
    cout << x;
}

Important: După acolada închisă } nu se pune ;!

Instrucțiunea return

Termină execuția unei funcții și returnează o valoare.

Sintaxă:
return expresie;
Exemplu în main():
int main() {
    // ... codul programului
    return 0;  // program terminat cu succes
}

În funcția main(), return 0; înseamnă că programul s-a terminat cu succes.

Test C++: Ce afișează programul?
#include <iostream>

using namespace std;

int main() {
    int a = 5;
    int b = 3;
    int suma = a + b;
    cout << "Rezultat: " << suma;
    return 0;
}

Exemplu Complet: Calculator Comisioane

citește vanzari, procent (vanzari - suma vânzărilor, procent - comision) ┌ calculează │ comision ← vanzari * procent / 100 │ total ← vanzari + comision └■ scrie "Comision: ", comision scrie "Total cu comision: ", total
Program C++ echivalent
#include <iostream>

using namespace std;

int main() {
    double vanzari, procent;
    
    cout << "Introdu suma vanzarilor: ";
    cin >> vanzari;
    
    cout << "Introdu procentul de comision: ";
    cin >> procent;
    
    double comision = vanzari * procent / 100;
    double total = vanzari + comision;
    
    cout << "Comision: " << comision << " lei" << endl;
    cout << "Total cu comision: " << total << " lei" << endl;
    
    return 0;
}
Execuție pas cu pas (exemplu):
➡️ citește vanzari, procent vanzari = 1000, procent = 5
➡️ comision ← vanzari * procent / 100 comision = 1000 * 5 / 100 = 50
➡️ total ← vanzari + comision total = 1000 + 50 = 1050
➡️ scrie "Comision: ", comision Afișează: Comision: 50
➡️ scrie "Total cu comision: ", total Afișează: Total cu comision: 1050

Limitări și Aplicații

Limitările structurii liniare:

⛔ Nu poate lua decizii - Nu poate alege între acțiuni diferite în funcție de condiții
⛔ Nu poate repeta acțiuni - Nu poate executa aceeași secvență de mai multe ori
⛔ Rigid și inflexibil - Execută întotdeauna aceleași pași în aceeași ordine

Aplicații practice:

Calcule matematice simple - Arie, perimetru, conversii
Procesări de date liniare - Formule, transformări
Algoritmi de bază - Introducere în programare
Prototipare rapidă - Testarea ideilor simple
EXERCIȚII PBINFO - 15 minute

Problemă PBInfo #1000 - Suma a două numere

Problema clasică pentru începători

Enunț:

Cerință: Să se scrie un program care citește două numere întregi și afișează suma lor.

Date de intrare:

Programul citește de la tastatură două numere întregi.

Date de ieșire:

Programul va afișa pe ecran suma celor două numere.

Exemplu:

Intrare:

7 3

Ieșire:

10
Restricții și precizări:
  • Numerele sunt întregi
  • Rezultatul este întreg
  • Timp de execuție: 0.1 secunde
  • Memorie: 2 MB
Scrie soluția ta:
Soluție corectă:
#include <iostream>

using namespace std;

int main() {
    int a, b;
    
    cin >> a >> b;
    
    int suma = a + b;
    
    cout << suma;
    
    return 0;
}

Sugestii pentru îmbunătățire:

  • Poți adăuga un mesaj pentru utilizator: cout << "Suma este: " << suma;
  • Poți verifica dacă suma depășește limita tipului int
  • Poți permite citirea și a numerelor reale folosind float sau double

Problemă PBInfo #1002 - Aria cercului

Calcul geometric simplu

Enunț:

Cerință: Să se scrie un program care citește raza unui cerc și afișează aria acestuia.

Formula: Aria = π × r

Valoarea lui π: 3.14159

Date de intrare:

Programul citește de la tastatură un număr real reprezentând raza cercului.

Date de ieșire:

Programul va afișa pe ecran aria cercului, cu patru zecimale exacte.

Exemplu:

Intrare:

5

Ieșire:

78.5397

Explicație: 3.14159 × 5 × 5 = 78.53975

Restricții și precizări:
  • Raza este un număr real pozitiv
  • Aria se va afișa cu 4 zecimale exacte
  • Folosiți tipul float sau double pentru variabile
  • 1 ≤ r ≤ 1000
Scrie soluția ta:
Soluție corectă:
#include <iostream>

using namespace std;

int main() {
    float aria, pi, raza;
    
    pi = 3.14159;
    cin >> raza;
    
    aria = pi * raza * raza;
    
    cout << aria;
    
    return 0;
}

Puncte cheie de reținut:

  • float - tip de date pentru numere reale
  • pi = 3.14159 - constantă pentru valoarea lui π
  • raza * raza - pătratul razei (puteai folosi și pow(raza, 2) dacă includeai #include <cmath>)

Exercițiu de transformare

Transformă pseudocodul în C++

Pseudocod dat:

citește L, l (lungimea și lățimea unui dreptunghi) ┌ calculează │ aria ← L * l │ perimetru ← 2 * (L + l) └■ scrie "Aria: ", aria scrie "Perimetru: ", perimetru
Scrie programul C++ echivalent:
Soluție corectă:
#include <iostream>

using namespace std;

int main() {
    double L, l;
    
    cout << "Introdu lungimea si latimea: ";
    cin >> L >> l;
    
    double aria = L * l;
    double perimetru = 2 * (L + l);
    
    cout << "Aria: " << aria << endl;
    cout << "Perimetru: " << perimetru << endl;
    
    return 0;
}

Reguli de transformare Pseudocod → C++:

  1. citeștecin >>
  2. =
  3. scriecout <<
  4. Toate instrucțiunile se termină cu ;
  5. Variabilele se declară cu tipul lor (int, double, etc.)
PROBLEME - 10 minute

Exercițiul Practic: Scriere Algoritmi Liniari

Sarcini de lucru

Completează următoarele sarcini pentru a-ți consolida cunoștințele despre structura liniară

Sarcina 1: Analiză problemă

Enunț: "Scrieți un algoritm care calculează suma, diferența, produsul și câtul a două numere."

Soluție pentru Sarcina 1:

Analiza problemei:

  • Intrări: a, b (două numere)
  • Ieșiri: suma, diferența, produsul, câtul
  • Relații:
    suma = a + b
    diferența = a - b
    produsul = a × b
    câtul = a / b (dacă b ≠ 0)
  • Tipuri de date: toate variabilele sunt de tip real
Sarcina 2: Scriere pseudocod

Cerință: Scrie pseudocodul complet pentru problema de mai sus.

Soluție pentru Sarcina 2:
ALGORITMUL OperatiiAritmetice VARIABILE a, b, suma, diferenta, produs, cat: real ÎNCEPUT CITESTE a, b suma ← a + b diferenta ← a - b produs ← a * b cat ← a / b SCRIE "Suma: ", suma SCRIE "Diferența: ", diferenta SCRIE "Produsul: ", produs SCRIE "Câtul: ", cat SFÂRȘIT

Descarcă exercițiile