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

9.1. Generarea secvențelor

Valori cu proprietăți date și termeni ai unor expresii matematice

REGULĂ
→
TERMEN
→
APPEND
→
LISTĂ
01
OBIECTIVE

La finalul lecției vei putea...

01

Explici generarea

Explici ce înseamnă generarea sistematică a elementelor unei liste și identifici regula unei secvențe.

02

Generezi secvențe

Construiești secvențe consecutive, pare, impare sau cu un pas dat.

03

Aplici formule

Generezi termenii unei expresii matematice folosind formula termenului general.

04

Memorezi și testezi

Folosești append(), pseudocodul, urmărirea variabilelor și teste relevante.

✓
Checkpoint

Care este ideea centrală a generării sistematice?

02
EXPLICAȚIE

De la o listă dată la o listă construită

În capitolele anterioare am folosit liste existente și am învățat să le parcurgem și să le prelucrăm. Uneori lista nu este dată de utilizator: trebuie să o construim. Dacă elementele pot fi obținute după o regulă clară, spunem că generăm sistematic elementele listei.

Ce înseamnă „sistematic”?

A genera sistematic înseamnă să stabilim o regulă și să o aplicăm în mod repetat, în aceeași manieră, pentru a obține toți termenii necesari. De exemplu, secvența 2, 4, 6, 8, 10 poate fi generată pornind de la 2 și adăugând 2 sau folosind formula 2 · i.

Secvențe cu pas constant

Dacă valorile sunt obținute prin deplasări egale, range(start, stop, pas) este foarte potrivit. Limita stop nu este inclusă.

Generare cu formulă

Dacă termenul general este aᵢ = f(i), alegem valorile lui i și calculăm fiecare termen. De exemplu, pentru aᵢ = i², la i = 1, 2, 3, 4 obținem 1, 4, 9, 16.

Generare și memorare

Lista începe goală, iar fiecare valoare nouă este adăugată cu append(). Astfel, lista poate fi prelucrată ulterior.

✓
Checkpoint

De ce folosim n + 1 în range(1, n + 1)?

03
EXEMPLU INTUITIV

Construim o secvență pas cu pas

Imaginează-ți că un aparat produce etichete numerotate. Dacă trebuie să producă etichetele 2, 4, 6, 8, 10, regula este „pornește de la 2 și adaugă 2”. Programul face același lucru: produce fiecare valoare și o adaugă în listă.

Generator interactiv

Alege o secvență și apasă „Generează”.

Observație

Fiecare element este obținut după o regulă stabilită înaintea parcurgerii.

04
PYTHON

range(), formule și append()

Secvență cu pas

valori = []
for x in range(2, 11, 2):
    valori.append(x)
print(valori)

Rezultatul este [2, 4, 6, 8, 10]. Variabila x primește succesiv valorile generate de range(), iar append() adaugă fiecare valoare la sfârșitul listei.

Termenii unei expresii

n = int(input())
valori = []
for i in range(1, n + 1):
    valori.append(i * i)
print(valori)

Pentru n = 4, lista este [1, 4, 9, 16].

05
ALGORITM / PSEUDOCOD

Generarea primelor n valori ale unei expresii

citește n
valori []
pentru i 1,n execută
    x f(i)
    adaugă x la valori
sfârșit pentru
scrie valori

Înlocuim f(i) cu regula problemei. Pentru aᵢ = i², calculăm x = i · i. Pentru o secvență cu pas constant putem folosi direct valorile produse de range().

06
ATENȚIE!

Capcane frecvente

range() nu include limita finală

Pentru 1, 2, ..., n folosim range(1, n + 1).

Nu confunda regula cu prelucrarea

Generarea stabilește cum obținem valorile; prelucrarea analizează valorile deja obținute.

append() adaugă un singur element

Într-o parcurgere, fiecare termen calculat poate fi adăugat separat.

Indicele trebuie ales consecvent

Dacă formula folosește i = 1, ..., n, bucla trebuie să respecte aceeași convenție.

07
EXEMPLU REZOLVAT

Generarea primelor n pătrate

Problemă

Pentru n citit, generați lista [1², 2², ..., n²].

Analiză

Intrare: n. Ieșire: lista pătratelor. Idee: parcurgem indicii 1 până la n, calculăm i² și îl adăugăm în listă.

Algoritm

citește n
valori []
pentru i 1,n execută
    valori.append(i * i)
sfârșit pentru
scrie valori

Python

n = int(input())
valori = []
for i in range(1, n + 1):
    valori.append(i * i)
print(valori)

Urmărirea variabilelor pentru n = 4

ii²valori
11[1]
24[1, 4]
39[1, 4, 9]
416[1, 4, 9, 16]

Testare

TestDateRezultat așteptat
Caz-limităn = 1[1]
Caz normaln = 4[1, 4, 9, 16]
Valoare relevantăn = 6[1, 4, 9, 16, 25, 36]
Justificarea soluției: pentru fiecare i din 1,...,n se adaugă exact i². Prin urmare, lista conține în ordine toți termenii ceruți.
08
EXERCIȚII DE BAZĂ

Aplică direct

  1. Pentru n citit, generați lista [1², 2², ..., n²].
  2. Pentru n citit, generați lista [1³, 2³, ..., n³].
  3. Se citesc n și pasul p. Generați n valori începând cu 0 și crescând cu p.
  4. Generați primele n valori ale expresiei aᵢ = 3i + 2.
  5. Se citește n. Generați valorile 5, 10, 15, ..., 5n.
09
EXERCIȚII DE APROFUNDARE

Generalizează regula

  1. Generați primele n valori ale expresiei aᵢ = i² + i.
  2. Se citesc n, a și b. Generați n valori de forma a + (i - 1)b.
  3. Generați lista termenilor 1, 4, 7, 10, ... care nu depășesc n.
  4. Generați primele n puteri ale lui 2: 1, 2, 4, 8, ... .
  5. Generați lista tuturor numerelor naturale din [a,b] care sunt divizibile cu 3.
  6. Generați primele n valori ale expresiei aᵢ = i² - 3i + 2 și determinați câte sunt negative.
  7. Generați într-o singură parcurgere lista primelor n numere pare și suma lor.
  8. Generalizare: primiți coeficienții a, b, c și n și generați aᵢ = ai² + bi + c, pentru i=1,...,n.
10
VERIFICARE

Quiz final

1. Ce înseamnă generarea sistematică a unei liste?

2. Ce produce range(2,11,2)?

3. Ce rol are append() în exemplul de generare?

4. Pentru a_i=i², ce calculăm la i=4?

5. De ce folosim range(1,n+1) pentru n termeni indexați de la 1?

6. Ce trebuie stabilit înaintea generării?

11
MINI-PROIECT

Generator de secvențe matematice

MISIUNE

Generator de secvențe matematice

Realizați un program care citește n și permite generarea uneia dintre secvențele: numere pare, numere impare, pătrate sau cuburi. Lista generată trebuie afișată, iar pentru ea să se calculeze suma și maximul. Folosiți o singură parcurgere pentru generare și prelucrare.

Cerințe

alegerea secvenței01
generare cu listă02
sumă03
maxim04
o singură parcurgere05
teste relevante06

Ai terminat lecția?

Verifică regula de generare, numărul de termeni și faptul că prelucrarea se realizează corect.