Sunteți pe pagina 1din 7

Proiect de lecție

Profesor: Thira Iulia-Denisa


Data:
Clasa: a X-a
Profil/Specializare: Matematică-Informatică intensiv
Disciplina: Informatică
Unitate de învățare: Implementarea algoritmilor într-un limbaj de programare
Subiectul lecției: Subprograme recursive. Mecanismul de realizare a recursivității
Tipul lecției: Lecție de transmitere și asimilare de noi cunoștințe

Competențe generale:
Reprezentarea algoritmilor într-un limbaj specific.
Competențe specifice:
-Analiza enunțului unei probleme: identificarea funcției recursive ce urmează a fi implementată,
identificarea datelor de intrare și de ieșire specifice.

Obiective operaționale: Pe parcursul lecției elevul va fi capabil

● O1: să determine dacă antetele și apelurile de subprograme sunt scrise corect


● O2: să explice modul de execuție al unui program recursiv
● O3: să determine rezultatul unui apel recursiv pentru anumite date de intrare
● O4: să scrie funcția recursivă corespunzătoare subprogramului
● O5: să identifice ce face un subprogram recursiv pe baza codului
● O6: să stabilească pentru ce date de intrare subprogramul va afișa un anumit rezultat
● O7: să convertească un program iterativ într-unul recursiv
Strategia didactică:

➢ Metode și procedee:

-explicația
-conversația
-exercițiul
-exemplul
-analiza

➢ Mijloace didactice:

-calculator
-tablă
-proiector
-mediu de programare:C/C++

➢ Forme de organizare a activității elevilor:

-frontal
-individual
Evenimentele lecției Activitatea din lecție Strategia
didactică și
evaluarea
Activitatea profesorului Activitatea elevului
Captarea Face prezența și verifică tema de casă. Conversație
atenției
(2 minute)
Prezentarea sarcinilor de Profesorul scrie pe tablă 2 subprograme. Problematizare
învățare
(8 minute) Int suma(int nr){
int suma = 0;
for(int i = 1; i <= nr; i++){
suma += nr;
}
return suma;
}

int sumaR(int nr){


if(nr == 0)
return 0;
return nr + sumaR(nr--);
} Funcțiile returnează sumă toturor Conversație
Ce fac funcțiile de mai sus? numerelor mai mici sau egale cu Analiză
Care vor fi rezultatele apelurilor funcțiilor de parametrul de intrare nr.Ambele Explicație
mai sus pentru nr = 5? funcții vor returna același Exemplu
rezultat, adică 10.

Prezentare de material Recursivitatea este un mecanism general de Notează în caiet Expunere


nou elaborare a algoritmilor. Un subprogram se explicativă
(15 minute) numește recursiv dacă el se autoapelează,
fie direct(în definiția lui, se face apel la el
însuși), fie indirect(subprogramul X
apelează subprogramul Y, care apelează
subprogramul X).
Recursivitatea a apărut din necesități
practice date de transcrierea directă a
formulelor matematice recursive. Apoi,
acest mecanism a fost extins, fiind utilizat în
elaborarea multor algoritmi.
Pornim de la un exemplu: Să se calculeze n!
Se observă că n!=(n-1)!*n și se știe că 0!=1.
Așadar:
5!=4!*5
4!=3!*4
3!=2!*1
1!=0!*1
0!=1 (prin convenție matematică)
Definiția recursivă a lui n! este:

Dirijarea învățării Acum că știm ce sunt funcțiile recursive și care


(10 minute) este diferența între acestea și cele iterative, să
rezolvăm câteva exerciții.
Se consideră următoarea funcție:
n, dacă n<10 Exercițiu
f(n) = n%10, dacă n%10> f(n/10)
n>0
f(n/10), altfel Funcția de mai sus determină
Ce face funcția de mai sus? cifra maximă a unui numar.
Conversație

Scrie rezolvarea pe tablă.


Corect. Cine iese la tablă să Int f(int n){ Elev la tablă
implementeze subprogramul recursiv? if(n < 10)
return n;
if(n%10 > f(n/10))
return n%10;
return f(n/10);
}

Obținere de Acum să trecem la următoarea problemă. Exercițiu


performanță(20 de Se consideră următorul subprogram iterativ,
minute) care calculează suma elementelor unui vector.
void subpr(int v, int n)
{
for(i=0;i<=n;i++)
s=s+v[i];
return s;

}
int subpr(int v[],int n){
Se cere: int i, s=0; Muncă
a).Corectați subprogramul (dacă este for(i = 0;i<n;i++) individuală
cazul). s+= v[i];
b).Implementați varianta recursivă. return s;
Aveți la dispoziție 10 minute; }
Varianta recursiva:
int subprR(int v[], int n){
if(n == 0)
return 0;
return v[n-1] + subprR(v, n--);
}
Verifică ce au lucrat elevii, Dialog
corectează eventualele greșeli și
ajută elevii care au nelămuriri.
Asigurarea reținerii Pentru acasă aveți urmatoarele cerințe: Notează tema în caiet. Muncă
(5 minute) Se dă următorul subprogram recursiv: individuală

int F(int n)
{
if(n==0)
return 0;
else
return n%10+F(n/10);
}
Se cere:
a).Descrieți ce face funcția.
b).Scrieți funcția recursivă
corespunzătoare subprogramului.
c).Rezultatul pentru n=29037 este :
a) 73091 b) 21
c) 11 d) 22
d).Dați 2 seturi de date de intrare pentru
care rezultatul este 9.

S-ar putea să vă placă și