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

2.5. Șiruri de numere

Sume, produse, minim, maxim și alte prelucrări secvențiale.

ȘIR
→
ACUMULARE
→
MIN / MAX
→
NUMĂRARE
→
O PARCURGERE
01
OBIECTIVE

La finalul lecției vei putea...

01

Acumulare

Calculezi sume și produse prin prelucrare secvențială.

02

Min/Max

Determini minimul și maximul prin actualizare.

03

Numărare

Numeri elementele care îndeplinesc o condiție.

04

Eficiență

Combini mai multe prelucrări într-o singură parcurgere.

✓
Checkpoint

Cu ce valori inițializăm, în mod obișnuit, suma și produsul?

02
EXPLICAȚIE

Prelucrarea secvențială a unui șir

2.1. Suma

Pentru S=x₁+x₂+...+xₙ folosim un acumulator. Pornim de la 0 și adăugăm fiecare element.

2.2. Produsul

Pentru P=x₁·x₂·...·xₙ pornim de la 1, elementul neutru al înmulțirii.

2.3. Minimul și maximul

O inițializare sigură este primul element al șirului. Apoi comparăm fiecare element următor cu valoarea curentă.

2.4. Numărarea

Folosim un contor inițializat cu 0 și îl creștem atunci când condiția este adevărată.

2.5. Media

Media aritmetică este suma împărțită la numărul de valori: M=(x₁+...+xₙ)/n.

03
EXEMPLU INTUITIV

Notele 8, 7, 10, 9, 6

Pentru sumă, totalul evoluează 0→8→15→25→34→40.

Pentru maxim, valoarea curentă evoluează 8→8→10→10→10.

Pentru numărul notelor cel puțin 9, contorul evoluează 0→0→1→2→2.

Activitate

Ce este 0→1→2 în exemplul de mai sus?

04
PYTHON

Acumulatori, contori și min/max

Suma

n = int(input())
suma = 0
for i in range(n):
    x = int(input())
    suma = suma + x
print(suma)

Minim și maxim

n = int(input())
x = int(input())
minim = x
maxim = x
for i in range(n - 1):
    x = int(input())
    if x < minim:
        minim = x
    if x > maxim:
        maxim = x
print(minim)
print(maxim)

O singură parcurgere

suma = 0
numar_pare = 0
for i in range(n):
    x = int(input())
    suma += x
    if x % 2 == 0:
        numar_pare += 1

Mai multe rezultate pot fi actualizate în aceeași buclă.

05
ALGORITM / PSEUDOCOD

Modele de prelucrare

Suma

citește n
suma ← 0
pentru i 1,n execută
    citește x
    suma ← suma + x
sfârșit pentru
scrie suma

Minim și maxim

citește n
citește x
minim ← x
maxim ← x
pentru i 2,n execută
    citește x
    dacă x < minim atunci minim ← x
    dacă x > maxim atunci maxim ← x
sfârșit pentru
scrie minim, maxim
06
ATENȚIE!

Inițializări și cazuri-limită

Suma = 0

0 este elementul neutru al adunării.

Produs = 1

1 este elementul neutru al înmulțirii.

Min/max

Primul element este o inițializare sigură atunci când n≥1.

Contor ≠ acumulator

Contorul numără apariții; acumulatorul adună sau înmulțește valori.

07
EXEMPLU REZOLVAT

Analizăm o serie de rezultate

Problemă

Se citește n și apoi n numere naturale. Determinați suma, produsul, cel mai mic număr, cel mai mare număr și câte numere sunt pare.

Ideea de rezolvare

Folosim primul element pentru inițializarea sumei, produsului, minimului și maximului. Verificăm și paritatea acestuia, apoi prelucrăm celelalte n−1 valori în aceeași parcurgere.

n = int(input())
x = int(input())
suma = x
produs = x
minim = x
maxim = x
numar_pare = 1 if x % 2 == 0 else 0

for i in range(n - 1):
    x = int(input())
    suma += x
    produs *= x
    if x < minim:
        minim = x
    if x > maxim:
        maxim = x
    if x % 2 == 0:
        numar_pare += 1

print(suma)
print(produs)
print(minim)
print(maxim)
print(numar_pare)

Urmărirea pentru 8,7,10,9,6

xsumaprodusminmaxpare
888881
71556781
10255607102
93450407102
640302406103

Testare

Include n=1, valori egale, 0 și valori negative dacă sunt permise de enunț.

Verificare

Rezultatele se pot verifica independent: suma 40, produsul 30240, minim 6, maxim 10, trei valori pare.

08
EXERCIȚII DE BAZĂ

Aplică direct

  1. Suma: se citește n, apoi n numere întregi. Determinați suma.
  2. Produsul: se citește n, apoi n numere naturale nenule. Determinați produsul.
  3. Numărul valorilor pozitive.
  4. Numărul valorilor negative.
  5. Suma valorilor pare; dacă nu există valori pare, suma este 0.
  6. Suma valorilor pozitive.
  7. Minim și maxim.
  8. Media aritmetică a unui șir de n numere reale.
  9. Media și numărul valorilor strict mai mari decât media.
  10. Câte elemente aparțin intervalului [a,b].
09
EXERCIȚII DE APROFUNDARE

Prelucrări multiple și eficiență

  1. Suma numerelor pare și suma numerelor impare într-o singură parcurgere.
  2. Cel mai mic număr pozitiv; tratează cazul în care nu există.
  3. Cel mai mare număr negativ.
  4. Numărul valorilor pare și impare.
  5. Câte valori sunt sub a, în [a,b] și peste b.
  6. Determină valoarea cu modulul cel mai mic.
  7. Determină suma, minimul, maximul, numărul valorilor pare și numărul valorilor pozitive într-o singură parcurgere.
  8. Analiza unei serii de temperaturi.
  9. Verifică dacă toate numerele naturale sunt pare.
  10. Explică de ce soluția cu o singură parcurgere este mai eficientă decât mai multe parcurgeri separate.
10
VERIFICARE

Întrebări și itemi algoritmici

11
MINI-PROIECT

Analizorul unei serii de rezultate

MISIUNE

Raport pentru rezultatele unui elev

Programul citește n rezultate, valori între 1 și 10, și afișează suma, media, minimul, maximul, numărul rezultatelor de 10, numărul rezultatelor mai mici decât 5, dacă există cel puțin un 10 și dacă toate rezultatele sunt cel puțin 5.

  1. Folosește o singură parcurgere pentru rezultatele care pot fi calculate simultan.
  2. Explică inițializările.
  3. Testează n=1, toate valorile egale, prezența unui 10 și absența lui.

Criterii

Corectitudine40%
Prelucrare eficientă25%
Testare20%
Claritate15%

Ai terminat lecția?

Recitește explicațiile și verifică rezultatele înainte de a marca lecția.