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ă.
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:
Citește ingredientele
Citire dateAmestecă ingredientele
ProcesareServește preparatul
Afișare rezultatExemplu interactiv - Structura Liniară
Observație: Toate instrucțiunile se execută în ordine, de la prima la ultima, fără salturi sau repetiții.
Caracteristicile structurii liniare:
Instrucțiunile se execută în ordinea în care sunt scrise
Nu există instrucțiuni condiționale (dacă...atunci...)
Nu există bucle (cât timp..., pentru...)
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.
Problema 2: Calcul arie și perimetru pătrat
Enunț: Scrieți un algoritm care calculează aria și perimetrul unui pătrat.
Problema 3: Calcul putere mecanică
Enunț: Scrieți un algoritm care calculează puterea mecanică P = F × v.
Fluxul simplu și predictibil
Erorile sunt ușor de identificat
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, bcitește numecitește x, y, z
PROCESARE
Calcule și operații
suma ← a + bmedia ← (x+y+z)/3rezultat ← calcul
AFIȘARE REZULTATE
Afișează rezultatele
scrie "Suma: ", sumascrie rezultatscrie "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
Operații de Procesare
Operații de Ieșire
Exercițiu de completare:
Bancă de cuvinte:
Traducere Pseudocod → C++
Pseudocod (școală):
Elemente pseudocod:
citește- citire date←- atribuirescrie- 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
#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):
Limitări și Aplicații
Limitările structurii liniare:
Aplicații practice:
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
floatsaudouble
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
floatsaudoublepentru 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 realepi = 3.14159- constantă pentru valoarea lui πraza * raza- pătratul razei (puteai folosi șipow(raza, 2)dacă includeai#include <cmath>)
Exercițiu de transformare
Transformă pseudocodul în C++
Pseudocod dat:
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++:
citește→cin >>←→=scrie→cout <<- Toate instrucțiunile se termină cu
; - Variabilele se declară cu tipul lor (
int,double, etc.)
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.