Python clasa a 9-a · Manual Python
Laborator Python
LECȚIE · CAPITOLUL 7

7.3. Stiva și coada

LIFO, FIFO, operații și aplicații

ADAUGĂ
→
ELIMINĂ
→
RESPECTĂ REGULA
→
SIMULEAZĂ
01
OBIECTIVE

La finalul lecției vei putea...

01

Explică stiva și coada

Definești stiva și coada ca modele de organizare liniară.

02

Distingi LIFO și FIFO

Explici diferența dintre Last In, First Out și First In, First Out.

03

Simulezi operații

Identifici adăugarea, eliminarea și starea structurii după o succesiune de operații.

04

Tratezi structura goală

Construiești modele simple și verifici existența elementelor înainte de eliminare.

✓
Checkpoint

Care este ideea centrală a lecției?

02
EXPLICAȚIE

Stiva și coada

Stiva este o structură liniară în care ultimul element introdus este primul eliminat: LIFO (Last In, First Out). Eliminarea se face din vârf.

Coada este o structură liniară în care primul element introdus este primul eliminat: FIFO (First In, First Out). Adăugarea se face la sfârșit, iar eliminarea la început.

Modelele sunt utile deoarece regula de acces este diferită. Operația Undo este naturală pentru o stivă, iar o coadă de așteptare este naturală pentru o coadă.

Operațiile conceptuale

Într-o stivă avem adăugare în vârf și eliminare din vârf. Într-o coadă avem adăugare la sfârșit și eliminare de la început.

✓
Checkpoint

Ce idee trebuie reținută înainte de a aplica algoritmul?

03
EXEMPLU INTUITIV

Înțelegem modelul printr-o situație familiară

Un teanc de farfurii ilustrează LIFO: ultima farfurie pusă este prima luată. O coadă la ghișeu ilustrează FIFO: primul sosit este primul servit.

Simulează o stivă

Stivă: [ ]

Simulează o coadă

Coadă: [ ]

04
PYTHON

Implementarea modelului

Stivă

stiva = []

stiva.append(10)
stiva.append(20)
stiva.append(30)

print(stiva.pop())
print(stiva)

Valoarea 30 este eliminată prima. În această lecție, append() și pop() sunt folosite pentru a ilustra modelul; operațiile clasei list vor fi studiate sistematic în Capitolul 8.

Coadă — simulare simplă

coada = [10, 20, 30]

primul = coada[0]
coada = coada[1:]

print(primul)
print(coada)

Valoarea 10 este eliminată prima, respectând regula FIFO.

05
ALGORITM / PSEUDOCOD

Descriem pașii înainte de cod

ALGORITM Stiva
    stiva ← goală
    pentru fiecare operație execută
        dacă este adăugare atunci
            adaugă în vârf
        dacă este eliminare și stiva nu este goală atunci
            elimină vârful
    sfârșit pentru
SFÂRȘIT ALGORITM

ALGORITM Coada
    coada ← goală
    pentru fiecare operație execută
        dacă este adăugare atunci
            adaugă la sfârșit
        dacă este eliminare și coada nu este goală atunci
            elimină primul
    sfârșit pentru
SFÂRȘIT ALGORITM
06
ATENȚIE!

Erori frecvente și cazuri-limită

Stiva nu este FIFO

Stiva elimină ultimul introdus, nu primul.

Coada nu este LIFO

Coada elimină primul introdus, nu ultimul.

Verifică structura goală

Înaintea eliminării trebuie verificat dacă există un element.

LIFO și FIFO nu sunt instrucțiuni

Sunt reguli de organizare a datelor; Python oferă operațiile prin care putem simula aceste modele.

07
EXEMPLU REZOLVAT

Problemă completă

Problemă

Stiva este goală. Operațiile sunt: adaugă 5, adaugă 8, adaugă 2, elimină, adaugă 9, elimină. Determinați elementele eliminate și starea finală.

Analiză

Aplicăm regula LIFO: la fiecare eliminare luăm elementul din vârf.

Algoritm

stiva ← goală
adaugă 5
adaugă 8
adaugă 2
elimină vârful
adaugă 9
elimină vârful
scrie elementele eliminate și starea finală

Python

stiva = []
eliminate = []

stiva.append(5)
stiva.append(8)
stiva.append(2)

if len(stiva) > 0:
    eliminate.append(stiva.pop())

stiva.append(9)

if len(stiva) > 0:
    eliminate.append(stiva.pop())

print("Eliminate:", eliminate)
print("Stiva finală:", stiva)

Urmărirea variabilelor

OperațieStivăEliminate
adaugă 5[5][]
adaugă 8[5,8][]
adaugă 2[5,8,2][]
elimină[5,8][2]
adaugă 9[5,8,9][2]
elimină[5,8][2,9]

Testare

Caz normal: operațiile date → se elimină 2 și 9.

Caz-limită: încercare de eliminare din structură goală.

Caz particular: un singur element urmat de eliminare → structura devine goală.

Justificarea soluției

La prima eliminare, 2 este ultimul introdus, deci este scos primul. După adăugarea lui 9, acesta devine noul vârf și este eliminat la a doua operație. Starea finală este [5, 8].

08
EXERCIȚII DE BAZĂ

Aplicare progresivă

  1. Simulați 3,7,pop,4,pop.
  2. Simulați coada Ana,Bogdan,Carla,pleacă,intră Dan,pleacă.
  3. Undo: stivă sau coadă?
  4. Ghișeu: stivă sau coadă?
  5. Ce se întâmplă la eliminarea dintr-o stivă goală?
09
EXERCIȚII DE APROFUNDARE

Generalizare și analiză

  1. Simulați o coadă și discutați eficiența eliminării repetate de la începutul unei liste.
  2. După 1,2,3,4 în stivă, este posibilă eliminarea 4,2 fără eliminarea lui 3?
  3. Proiectați un istoric Undo folosind modelul stivei.
  4. Comparați LIFO și FIFO într-un tabel: regulă, adăugare, eliminare, exemplu.
10
VERIFICARE

Verifică înțelegerea lecției

1. Ce înseamnă LIFO?

2. Ce înseamnă FIFO?

3. Care structură respectă regula LIFO?

4. Care structură respectă regula FIFO?

5. Într-o stivă în care s-au adăugat 4, 7, 9, ce element se elimină primul?

6. Într-o coadă în care au intrat A, B, C, cine pleacă primul?

7. Ce trebuie verificat înainte de eliminarea unui element dintr-o structură?

8. Care situație este un exemplu potrivit pentru o coadă?

11
MINI-PROIECT

Sistem de procesare

MISIUNE

Sistem de procesare

Sistem de procesare. Simulați o stivă și o coadă pe baza unei succesiuni de operații. Afișați elementele eliminate și starea finală. Testați operații normale, structură goală și un singur element.

Cerințe

Analiză și pseudocod01
Implementare Python02
Testare03
Cazuri-limită04
Explicația soluției05

Ai terminat lecția?

Revizuiește activitățile, verifică testele și apoi marchează lecția ca finalizată.