Didaxis
lecție · Informatică

Generarea șirurilor

Termeni produși după o regulă sau o recurență.

Se face în:
Clasa a VIII-a
Clasa a IX-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Generarea unui șir înseamnă calculul termenilor săi după o regulă, pornind de la date inițiale. Un exemplu: pornești de la 2 și adaugi de fiecare dată 3. Obții 2, apoi 5, apoi 8, apoi 11. Pentru a produce următorul termen trebuie să cunoști termenul curent și regula. Termenii se calculează în ordine, unul după altul: nu poți afla al cincilea termen fără să-l fi cunoscut pe al patrulea, dacă regula folosește termenul precedent.

Exemplu rezolvat — patru termeni. Primul termen este 2, iar regula este „adaug 3 la termenul precedent”. Vrei primii patru termeni.

  1. Scrii primul termen, 2, și îl păstrezi ca termen curent.
  2. Calculezi termenul următor: . Acum termenul curent este 5.
  3. Calculezi ; termenul curent este 8.
  4. Calculezi ; termenul curent este 11. Ai scris patru termeni și te oprești.

Șirul obținut este . Pentru patru termeni afișezi întâi valoarea inițială și faci doar trei actualizări, nu patru: o actualizare în plus ar calcula un al cincilea termen, 14, care nu mai este cerut.

Regula poate fi și altfel. Dacă pornești de la 1 și dublezi, obții 1, 2, 4, 8. Dacă pornești de la 1 și aplici regula „dublez și adaug 1”, obții 1, 3, 7, 15. În toate cazurile ai nevoie de trei lucruri: primul termen, regula și numărul de termeni care se afișează. Dacă lipsește unul dintre ele, șirul nu este stabilit. Când urmărești un astfel de algoritm, scrie pe rând termenul curent și numărul de termeni deja afișați; astfel vezi dacă te oprești la timp.

În unele șiruri regula folosește pozițiile, nu termenul precedent: dacă al -lea termen este , poți calcula direct al 7-lea termen, 21, fără să-i cunoști pe ceilalți. Alegerea între cele două feluri de reguli depinde de enunț, iar în ambele cazuri trebuie să știi câți termeni se cer.

Desen la lecția „Generarea șirurilor”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Un șir generat după o recurență are forma: se dă primul termen (sau primii câțiva) și o regulă care calculează fiecare termen din cei precedenți. Pentru o progresie aritmetică cu și rația , recurența este , iar formula directă este . Algoritmul păstrează într-o variabilă termenul curent, îl afișează și apoi îl actualizează; numărul de repetări este numărul de termeni.

Exemplul 1 — progresia aritmetică.

n = int(input())
termen = 3
for _ in range(n):
    print(termen, end=" ")
    termen += 4

La intrarea 4, ieșirea este 3 7 11 15 , inclusiv spațiul de la sfârșit. Înaintea iterațiilor, termen are pe rând valorile 3, 7, 11, 15. După ultima afișare, actualizarea îl schimbă în 19, dar acesta nu apare la ieșire. Pentru n = 0 nu se afișează niciun termen. Invariantul este: înaintea iterației cu indicele pornit de la zero, termen este . Formula directă confirmă ultimul termen: .

Exemplul 2 — o recurență neliniară. Șirul cu și are termenii . Se observă că : . Programul care îl generează este același, cu altă actualizare:

termen = 1
for _ in range(5):
    print(termen, end=" ")
    termen = 2 * termen + 1

El afișează 1 3 7 15 31 . Ordinea instrucțiunilor din corp contează: dacă actualizarea ar fi scrisă înainte de afișare, primul termen afișat ar fi 3, iar 1 nu ar mai apărea.

Exemplul 3 — recurența și formula directă. Pentru a afla al zecelea termen al progresiei din primul exemplu există două căi: se repetă actualizarea de nouă ori, sau se aplică formula . Cele două rezultate coincid. Formula este mai rapidă, pentru că cere un număr constant de operații, pe când generarea cere pași. În schimb, dacă sunt necesari toți termenii, generarea îi produce pe măsură ce îi calculează, în timp și cu memorie auxiliară constantă. Dacă enunțul cere un singur termen, formula este de preferat.

Exemplul 4 — regula cu doi termeni anteriori. Dacă fiecare termen este suma celor doi precedenți, sunt necesari doi termeni inițiali. Pentru , și se obține șirul . Se păstrează în două variabile ultimii doi termeni, iar la fiecare pas ei „alunecă” cu o poziție: a, b = b, a + b atribuie simultan noile valori, deci nu se pierde vechea valoare a lui a.

a, b = 1, 1
for _ in range(8):
    print(a, end=" ")
    a, b = b, a + b

Programul afișează 1 1 2 3 5 8 13 21 . Ciclul afișează primul termen din pereche și apoi avansează perechea. Numărul de termeni afișați este numărul de repetări, indiferent de valorile calculate.

Exemplul 5 — generare până la o condiție. Uneori nu se cunoaște numărul de termeni, ci o condiție de oprire. Se dublează de la 3 până când termenul depășește 100 și se numără pașii:

t = 3
pasi = 0
while t <= 100:
    t *= 2
    pasi += 1
print(t, pasi)

Valorile lui t sunt 3, 6, 12, 24, 48, 96 și 192. Condiția t <= 100 este adevărată pentru primele șase, deci corpul se execută de 6 ori, iar bucla se oprește la 192. Se afișează 192 6. Numărul de pași este proporțional cu din raportul dintre pragul 100 și valoarea de start, fiindcă termenul se dublează la fiecare pas; condiția de oprire trebuie să se schimbe în corpul buclei, altfel ciclul nu se termină.

Greșeli frecvente

  • Greșit: pentru patru termeni se fac patru actualizări înainte de prima afișare.
    Corect: se afișează primul termen, apoi se fac trei actualizări.
  • Greșit: regula se aplică poziției termenului, nu valorii precedente.
    Corect: depinde de definiție; într-o recurență regula folosește termenul precedent.
  • Greșit: ordinea dintre afișare și actualizare nu contează.
    Corect: dacă actualizezi înaintea afișării, primul termen nu mai apare.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633 și 1653–1654; OMEC 4370/2026, anexa 8, p. 155–156; rocnee.eu
  • OMEC 4370/2026, anexa 8, Informatică IX intensiv, p. 155–156
  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633; rocnee.eu
  • OMEC 6930/2025, anexa 66, Informatică IX CS militar, Monitorul Oficial nr. 4 bis/8.01.2026, pp. 2563–2578; cdn.edupedu.ro; centralizator oficial actualizat prin OMEC 3224/2026, legislatie.just.ro
  • OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1653–1654; rocnee.eu
  • OMEN 3393/2017, anexa 2, Informatică și TIC, pp. 13–14 (competențele 2.1–2.2 la p. 13); isj.tm.edu.ro

Documente consultate

  • OMEN 3393/2017, anexa 2, Informatică și TIC, clasa a VIII-a, p. 13, competențele 2.1–2.2; isj.tm.edu.ro
  • Programa școlară de informatică, clasa a IX-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
  • Programa școlară de informatică, clasa a IX-a, matematică-informatică (OMEC 6930/2025, anexa 42), p. 1632–1633 și 1653–1654; rocnee.eu
  • Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației; edu.ro
  • Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
  • OMEC 4370/2026, anexa 8, p. 155–156

Desene: Redactare proprie (desen original), conform OMEN 3393/2017, Informatică și TIC VIII; isj.tm.edu.ro

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.