Documente Academic
Documente Profesional
Documente Cultură
Disciplina: Informatică
Clasa: a X-a I
Profesor: Adina Elena Piţigoi
Tema: Recursivitate
Tipul lecţiei: - dobândire de noi cunoştinţe
Locul de desfăşurare: Laboratorul de informatică
Competenţa generală:
⇒ realizarea de aplicaţii utilizând algoritmi specifici;
Competenţe specifice:
1. aplicarea algoritmilor recursivi;
2. transpunerea unei probleme în termeni recursivi;
3. aplicarea cunoştinţelor în cadrul unor subprograme recursive;
Competenţe derivate:
C1. Să definească corect funcţiile recursive;
C2. Să compare varianta iterativă cu cea recursivă pentru aceeaşi problemă;
C3. Să analizeze modul diferit de funcţionare a celor două implementări;
C4. Să argumenteze corect alegerea unei variante;
Strategii didactice:
Principii didactice:
- principiul participării şi învăţării active;
- principiul asigurării progresului gradat al învăţării;
- principiul conexiunii inverse;
1
Metode de învăţământ:
- metode de comunicare orală: expunere, conversaţie, problematizare;
- metode de acţiune: exerciţiul, învăţare prin descoperire;
Procedee de instruire:
- explicaţia în etapa de comunicare;
- învăţarea prin descoperire, prin rezolvarea de probleme;
- problematizarea prin crearea situaţiilor problemă;
- conversaţia de consolidare a cunoştinţelor în etapa de fixare a cunoştinţelor;
Forme de organizare: frontală şi individuală;
Forme de dirijare a învăţării: dirijată de profesor sau independentă;
Resurse materiale:
- Dorian Stoilescu – „Manual de C/C++ pentru licee”;
- Vlad Huţanu, Tudor Sorin – „Informatică – manual pentru clasa a XI-a”
- Dana Lica, Mircea Paşoi – „Informatică – Fundamentele Programării. Culegere
de probleme pentru clasa a X-a”
- fişe de lucru;
Metode de evaluare:
- evaluare iniţială: întrebări orale;
- set de aplicaţii;
Desfăşurarea lecţiei:
• Moment organizatoric:
♦ pregătirea lecţiei:
- întocmirea proiectului didactic;
- pregătirea setului de întrebări;
- pregătirea setului de aplicaţii;
- pregătirea temei;
♦ organizarea şi pregătirea clasei:
- verificarea frecvenţei;
♦ captarea atenţiei clasei:
- anunţarea subiectului pentru tema respectivă;
- anunţarea obiectivelor urmărite;
- anunţarea modului de desfăşurare a activităţii;
2
• Reactualizarea cunoştinţelor
1. Se realizează un set de întrebări pentru reactualizarea cunoştinţelor teoretice ca mai jos:
3
0 0
1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3 3 3
Programul afişează:
3
2
1
În cazul acestui program
#include<iostream.h>
int suma(int n)
{ if (n!=0)
return n+suma(n-1);
}
void main()
{
cout<<suma(3);
}
Deşi în stivă sunt introduse şi apoi extrase aceleaşi elemente, funcţia fiind de tip int poate fi
utilizată în expresia ce va fi returnată şi astfel putem calcula 1+2+3. Programul afişează 6.
Diferenţa dintre cele două subprograme este următoarea:
• În cazul funcţiilor de tip void, autoapelul se realizează prin apelul funcţiei respective, din
interiorul ei. Apelul se face la fel ca în cazul în care funcţia este apelată din exterior.
• În cazul funcţiilor care nu sunt de tip void, autoapelul se realizează prin instrucţiunea return.
Ea este de forma
return expresie
dar în expresia respectivă trebuie să intre şi funcţia care se autoapelează.
MECANISMUL RECURSIVITĂŢII
4
Pentru înţelegerea noţiunii de factorial aleg doi şi apoi trei copii şi căutăm toate
posibilităţile de aşezare pe 2 sau 3 scaune. De aici, deducem că
2!=2*1!=2*1*0!= 2*1*1=2
3!=3*2!=3*2*1!=3*2*1*0!=3*2*1*1=6
Prin generalizare, obţinem
n!=n*(n-1)!=n*(n-1)*(n-2)!=…=n*(n-1)*(n-2)*…*3*2*1
Definiţia recursivă a lui n! este:
1, n=0
n!= fact ( n) = cu n ∈ N
n ⋅ fact(n - 1), altfel
Subprogramul fact transcrie definiţia recursivă.
#include<iostream.h>
int fact (int n)
{ if (n==0) return 1;
else return n*fact(n-1);
}
void main()
{
int n;
cout<<“n=“;
cin>>n;
cout<<n<<“!=”<<fact(n);
}
5
Asigurarea feedback-ului şi evaluarea performanţei
Temă:
1. Fie A o mulţime cu n elemente. Submulţimile ordonate ale lui A având fiecare câte k
elemente, unde 0≤k≤n, se numesc aranjamente de n luate câte k. Două aranjamente de n
elemente luate câte k se deosebesc prin natura elementelor lor şi prin ordinea lor. Numărul
k
total de aranjamente de n elemente luate câte k se notează cu An şi se calculează după
n!
formula: An = . Să se scrie un program ce calculează aranjamentele unei mulţimi de n
k
k!
elemente luate câte k.
2. Se consideră un şir de n valori naturale de cel mult 9 cifre. Determinaţi numărul de valori
care pot fi scrise sub forma k!. În cadrul subprogramului, se vor defini două subprograme
recursive:
a. Funcţia Ok, care verifică dacă o valoare primită printr-un parametru reprezintă
factorialul unei valori. Funcţia returnează valoarea 1 sau 0.
b. Funcţia Nr, care permite citirea celor n numere şi returnează numărul de valori
factoriale. În cadrul ei se va apela funcţia Ok.
Exemplu: Pentru n=5 şi valorile 7, 16, 6, 13, 24, se va afişa 2, deoarece 6=1*2*3,
24=1*2*3*4.