Structurile Fundamentale ale Algoritmului


1. Obiectivele lecției:

  • Să înțeleagă ce reprezintă structurile fundamentale ale unui algoritm.
  • Să identifice și să utilizeze secvența, decizia și iterația în scrierea algoritmilor.
  • Să implementeze algoritmi simpli utilizând fiecare structură în limbajul C++.

2. Conținutul lecției:

Ce sunt structurile fundamentale ale algoritmului?

  • Definiție: Structurile fundamentale reprezintă construcțiile de bază care stau la baza oricărui algoritm și permit implementarea logicii necesare pentru a rezolva o problemă.
  • Cele trei structuri fundamentale:
    1. Secvența – executarea instrucțiunilor una după alta.
    2. Decizia (Selecția) – alegerea între mai multe opțiuni în funcție de o condiție.
    3. Repetiția (Iterația) – executarea repetată a unei serii de instrucțiuni.

3. Structurile fundamentale explicate:


1. Secvența

  • Descriere: O serie de pași care se execută unul după altul, în ordinea în care sunt scriși.
  • Exemplu în viața reală: Prepararea unui sandwich.
  • Exemplu în C++:

#include <iostream>

using namespace std;

int main() {

    int a = 5, b = 10, suma;

    // Secvența

    suma = a + b;

    cout << „Suma este: ” << suma << endl;

    return 0;

}


2. Decizia (Selecția)

  • Descriere: Permite programului să aleagă între două sau mai multe căi, pe baza unei condiții.
  • Exemplu în viața reală: Dacă plouă, ia umbrelă; altfel, ieși fără umbrelă.
  • Exemplu în C++:

#include <iostream>

using namespace std;

int main() {

    int numar;

    cout << „Introdu un numar: „;

    cin >> numar;

    if (numar % 2 == 0) {

        cout << „Numarul este par.” << endl;

    } else {

        cout << „Numarul este impar.” << endl;

    }

    return 0;

}


3. Repetiția (Iterația)

  • Descriere: Permite executarea repetată a unui set de instrucțiuni cât timp o anumită condiție este adevărată.
  • Tipuri de repetare:
    • While: Execută un bloc de cod cât timp condiția este adevărată.
    • Do-While: Execută cel puțin o dată și verifică condiția la sfârșit.
    • For: Este folosită pentru iterații cunoscute.
  • Exemplu în viața reală: Numărătoare inversă la un semafor.
  • Exemplu în C++ (folosind for):

#include <iostream>

using namespace std;

int main() {

    for (int i = 1; i <= 5; i++) {

        cout << „Numarul este: ” << i << endl;

    }

    return 0;

}


4. Exemple practice pentru elevi:


Exemplu 1: Combinația structurilor fundamentale

Problema: Afișează primele 10 numere naturale și spune dacă fiecare este par sau impar.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    for (int i = 1; i <= 10; i++) {

        cout << „Numarul ” << i;

        if (i % 2 == 0) {

            cout << ” este par.” << endl;

        } else {

            cout << ” este impar.” << endl;

        }

    }

    return 0;

}


Exemplu 2: Utilizarea while

Problema: Afișează suma numerelor de la 1 la 100.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int suma = 0, i = 1;

    while (i <= 100) {

        suma += i;

        i++;

    }

    cout << „Suma numerelor de la 1 la 100 este: ” << suma << endl;

    return 0;

}


5. Activități pentru elevi:

  1. Scrieți un algoritm care calculează factorialul unui număr dat, folosind o buclă for.
  2. Scrieți un algoritm care verifică dacă un număr introdus de utilizator este pozitiv, negativ sau zero, folosind structura decizională if-else.
  3. Realizați un algoritm care afișează toate numerele pare de la 1 la 50, folosind o buclă while.

6. Scheme logice pentru fiecare structură:

  1. Secvența: Un flux continuu de pași (Start -> Pas 1 -> Pas 2 -> Stop).
  2. Decizia: Un romb cu două ieșiri (DA și NU) pentru fiecare condiție.
  3. Repetiția: Un romb (Condiție) care determină reîntoarcerea la instrucțiuni sau terminarea ciclului.

7. Concluzie:

  • Structurile fundamentale sunt esențiale pentru a scrie algoritmi eficienți.
  • Toate problemele pot fi rezolvate utilizând aceste trei structuri.
  • Înțelegerea și utilizarea acestor concepte vor ajuta elevii să devină programatori mai buni.

Structura Liniară


1. Obiectivele lecției:

  • Să înțeleagă ce reprezintă structura liniară a unui algoritm.
  • Să recunoască și să aplice structura liniară în probleme simple.
  • Să implementeze algoritmi liniari în C++.

2. Conținutul lecției:

Ce este structura liniară?

  • Definiție: Structura liniară reprezintă o succesiune de pași care se execută unul după altul, în ordinea în care sunt scriși, fără ramificații sau bucle.
  • Caracteristică principală: Fiecare instrucțiune este executată o singură dată, în mod secvențial.
  • Exemplu în viața reală: Pregătirea unui sandwich: iei pâinea, pui untul, adaugi brânza, apoi pui pâinea deasupra.

Importanța structurii liniare:

  • Este baza algoritmilor complecși.
  • Asigură o execuție predictibilă și clară a pașilor algoritmului.
  • Se folosește în rezolvarea problemelor care nu necesită decizii sau repetări.

3. Exemple practice:


Exemplu 1: Calcularea perimetrului unui dreptunghi

Problema: Calculează perimetrul unui dreptunghi având lungimea și lățimea date.

Algoritm:

  1. Citește lungimea și lățimea dreptunghiului.
  2. Calculează perimetrul: P = 2 * (lungime + latime).
  3. Afișează rezultatul.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    double lungime, latime, perimetru;

    cout << „Introdu lungimea dreptunghiului: „;

    cin >> lungime;

    cout << „Introdu latimea dreptunghiului: „;

    cin >> latime;

    // Calculul perimetrului

    perimetru = 2 * (lungime + latime);

    // Afișarea rezultatului

    cout << „Perimetrul dreptunghiului este: ” << perimetru << endl;

    return 0;

}


Exemplu 2: Conversia temperaturii din Celsius în Fahrenheit

Problema: Transformă o temperatură dată în grade Celsius în Fahrenheit folosind formula:

F = (C * 9/5) + 32.

Algoritm:

  1. Citește temperatura în Celsius.
  2. Aplică formula de conversie.
  3. Afișează temperatura în Fahrenheit.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    double celsius, fahrenheit;

    cout << „Introdu temperatura în grade Celsius: „;

    cin >> celsius;

    // Conversia în Fahrenheit

    fahrenheit = (celsius * 9 / 5) + 32;

    // Afișarea rezultatului

    cout << „Temperatura în Fahrenheit este: ” << fahrenheit << endl;

    return 0;

}


Exemplu 3: Calcularea ariei unui cerc

Problema: Calculează aria unui cerc având raza dată.

Algoritm:

  1. Citește raza cercului.
  2. Calculează aria folosind formula: A = π * r^2.
  3. Afișează aria cercului.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    const double PI = 3.14159;

    double raza, aria;

    cout << „Introdu raza cercului: „;

    cin >> raza;

    // Calculul ariei

    aria = PI * raza * raza;

    // Afișarea rezultatului

    cout << „Aria cercului este: ” << aria << endl;

    return 0;

}


4. Activități practice pentru elevi:

  1. Scrieți un program care să calculeze suma și produsul a două numere introduse de utilizator.
  2. Realizați un program care să convertească kilometri în mile (1 km = 0.621371 mile).
  3. Scrieți un program care să calculeze media aritmetică a trei numere introduse de utilizator.

5. Scheme logice:

  1. Schema pentru calculul perimetrului unui dreptunghi:
    • Start -> Citește lungimea -> Citește lățimea -> Calculează perimetrul -> Afișează perimetrul -> Stop.
  2. Schema pentru conversia temperaturii:
    • Start -> Citește temperatura în Celsius -> Aplică formula -> Afișează rezultatul -> Stop.

6. Concluzie:

  • Structura liniară este cea mai simplă formă de algoritm și se aplică atunci când nu sunt necesare condiții sau repetări.
  • Este importantă pentru înțelegerea și implementarea algoritmilor mai complecși.
  • Prin practică, elevii vor învăța să creeze programe clare și eficiente.

Structura Alternativă


1. Obiectivele lecției:

  • Să înțeleagă conceptul de structură alternativă într-un algoritm.
  • Să recunoască diferitele tipuri de structuri alternative.
  • Să implementeze structuri alternative în C++ utilizând if, if-else și switch.
  • Să rezolve probleme care implică rea deciziilor.

2. Conținutul lecției:

Ce este structura alternativă?

  • Definiție: Structura alternativă permite executarea diferitelor ramuri ale unui algoritm, în funcție de o condiție logică. Este folosită pentru a  decizii în funcție de datele de intrare sau de o situație.
  • Exemple din viața reală:
    • Dacă plouă, ia umbrelă; altfel, mergi fără umbrelă.
    • Dacă ai 18 ani sau mai mult, poți conduce; altfel, nu poți.

Tipuri de structuri alternative:

  1. Structura simplă (if):
    • Execută o singură ramură dacă o condiție este adevărată.
    • Exemplu:

if (condiție) {

    // Cod de executat dacă condiția este adevărată

}

  1. Structura dublă (if-else):
    • Execută o ramură dacă condiția este adevărată și alta dacă este falsă.
    • Exemplu:

if (condiție) {

    // Cod de executat dacă condiția este adevărată

} else {

    // Cod de executat dacă condiția este falsă

}

  1. Structura multiplă (switch):
    • Folosită pentru a alege între mai multe opțiuni.
    • Exemplu:

switch (variabilă) {

    case valoare1:

        // Cod pentru valoare1

        break;

    case valoare2:

        // Cod pentru valoare2

        break;

    default:

        // Cod pentru alte cazuri

}


3. Exemple practice:


Exemplu 1: Verificarea unui număr par sau impar

Problema: Determină dacă un număr introdus de utilizator este par sau impar.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int numar;

    cout << „Introdu un numar: „;

    cin >> numar;

    if (numar % 2 == 0) {

        cout << „Numarul este par.” << endl;

    } else {

        cout << „Numarul este impar.” << endl;

    }

    return 0;

}


Exemplu 2: Determinarea maximului dintre două numere

Problema: Compară două numere și afișează pe cel mai mare.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int numar1, numar2;

    cout << „Introdu primul numar: „;

    cin >> numar1;

    cout << „Introdu al doilea numar: „;

    cin >> numar2;

    if (numar1 > numar2) {

        cout << „Numarul mai mare este: ” << numar1 << endl;

    } else if (numar1 < numar2) {

        cout << „Numarul mai mare este: ” << numar2 << endl;

    } else {

        cout << „Numerele sunt egale.” << endl;

    }

    return 0;

}


Exemplu 3: Afișarea unei zile a săptămânii

Problema: Citește un număr între 1 și 7 și afișează ziua corespunzătoare.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int zi;

    cout << „Introdu un numar de la 1 la 7: „;

    cin >> zi;

    switch (zi) {

        case 1:

            cout << „Luni” << endl;

            break;

        case 2:

            cout << „Marți” << endl;

            break;

        case 3:

            cout << „Miercuri” << endl;

            break;

        case 4:

            cout << „Joi” << endl;

            break;

        case 5:

            cout << „Vineri” << endl;

            break;

        case 6:

            cout << „Sâmbătă” << endl;

            break;

        case 7:

            cout << „Duminică” << endl;

            break;

        default:

            cout << „Număr invalid.” << endl;

    }

    return 0;

}


4. Activități practice pentru elevi:

  1. Scrieți un program care determină dacă un elev a trecut sau nu un examen. Nota minimă de trecere este 5.
  2. Realizați un program care citește un număr între 1 și 12 și afișează luna corespunzătoare.
  3. Scrieți un program care compară trei numere și afișează cel mai mare dintre ele.

5. Scheme logice:

  1. Structura simplă (if):
    • Start -> Condiție? -> (DA -> Execută cod) -> Stop.
  2. Structura dublă (if-else):
    • Start -> Condiție? -> (DA -> Execută cod 1) / (NU -> Execută cod 2) -> Stop.
  3. Structura multiplă (switch):
    • Start -> Valoare corespunzătoare? -> Execută ramura corespunzătoare -> Stop.

6. Concluzie:

  • Structura alternativă este esențială pentru a permite programelor să ia decizii.
  • Tipurile de structură alternativă (if, if-else, switch) sunt utile în funcție de complexitatea condițiilor.
  • Prin aplicarea acestor structuri, elevii pot crea programe care se adaptează la diferite situații.

Structura Repetitivă


1. Obiectivele lecției:

  • Să înțeleagă conceptul de structură repetitivă.
  • Să identifice și să utilizeze tipurile de bucle: while, do-while și for.
  • Să implementeze algoritmi care folosesc structuri repetitive în C++.
  • Să rezolve probleme care implică repetarea unor instrucțiuni.

2. Conținutul lecției:

Ce este structura repetitivă?

  • Definiție: Structura repetitivă permite executarea unui bloc de cod de mai multe ori, cât timp o anumită condiție este adevărată.
  • Scop: Automatează repetarea unor operații, economisind timp și resurse.

Tipuri de structuri repetitive:

  1. Buclele cu testare înainte (while):
    • Condiția este verificată înainte de a executa blocul de cod.
    • Exemplu:

while (condiție) {

    // Cod executat cât timp condiția este adevărată

}

  1. Buclele cu testare după (do-while):
    • Codul este executat cel puțin o dată, apoi condiția este verificată.
    • Exemplu:

do {

    // Cod executat cel puțin o dată

} while (condiție);

  1. Buclele determinate (for):
    • Se folosește când numărul de repetări este cunoscut.
    • Exemplu:

for (inițializare; condiție; actualizare) {

    // Cod executat

}


3. Exemple practice:


Exemplu 1: Afișarea primelor 10 numere naturale (buclele for, while, do-while)

Cu for:

#include <iostream>

using namespace std;

int main() {

    for (int i = 1; i <= 10; i++) {

        cout << i << ” „;

    }

    cout << endl;

    return 0;

}

Cu while:

#include <iostream>

using namespace std;

int main() {

    int i = 1;

    while (i <= 10) {

        cout << i << ” „;

        i++;

    }

    cout << endl;

    return 0;

}

Cu do-while:

#include <iostream>

using namespace std;

int main() {

    int i = 1;

    do {

        cout << i << ” „;

        i++;

    } while (i <= 10);

    cout << endl;

    return 0;

}


Exemplu 2: Calcularea sumei primelor n numere naturale

Problema: Citește un număr n de la utilizator și calculează suma numerelor de la 1 la n.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int n, suma = 0;

    cout << „Introdu un numar: „;

    cin >> n;

    for (int i = 1; i <= n; i++) {

        suma += i;

    }

    cout << „Suma primelor ” << n << ” numere naturale este: ” << suma << endl;

    return 0;

}


Exemplu 3: Determinarea produsului numerelor impare de la 1 la n

Problema: Citește un număr n și calculează produsul numerelor impare de la 1 la n.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int n, produs = 1;

    cout << „Introdu un numar: „;

    cin >> n;

    for (int i = 1; i <= n; i += 2) {

        produs *= i;

    }

    cout << „Produsul numerelor impare de la 1 la ” << n << ” este: ” << produs << endl;

    return 0;

}


Exemplu 4: Generarea unei serii Fibonacci

Problema: Afișează primele n numere Fibonacci.

Cod în C++:

#include <iostream>

using namespace std;

int main() {

    int n, t1 = 0, t2 = 1, urmator;

    cout << „Introdu numarul de termeni Fibonacci: „;

    cin >> n;

    cout << „Seria Fibonacci: ” << t1 << ” ” << t2 << ” „;

    for (int i = 3; i <= n; i++) {

        urmator = t1 + t2;

        cout << urmator << ” „;

        t1 = t2;

        t2 = urmator;

    }

    cout << endl;

    return 0;

}


4. Activități practice pentru elevi:

  1. Scrieți un program care calculează factorialul unui număr.
  2. Realizați un program care citește un număr și verifică dacă este prim.
  3. Scrieți un program care afișează toate numerele divizibile cu 3 de la 1 la 100.

5. Scheme logice:

  1. Buclele while:
    • Start -> Condiție? -> (DA -> Execută cod -> Reia) / (NU -> Stop).
  2. Buclele do-while:
    • Start -> Execută cod -> Condiție? -> (DA -> Reia) / (NU -> Stop).
  3. Buclele for:
    • Start -> Inițializare -> Condiție? -> (DA -> Execută cod -> Actualizare -> Reia) / (NU -> Stop).

6. Concluzie:

  • Structurile repetitive permit automatizarea și eficientizarea proceselor care necesită repetarea unor operații.
  • Alegerea tipului de buclă depinde de situație:
    • while pentru bucle cu condiție pre-verificată.
    • do-while pentru bucle cu cel puțin o iterație garantată.
    • for pentru bucle determinate.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *