Sunteți pe pagina 1din 12

PROIECT DIDACTIC

Instituția de învățământ Colegiul Național “Vladimir Streinu” Găești


Cadru didactic Șerbănescu Mihai Cristian
Specializarea Matematică-Informatică
Disciplina Informatică
Data 21.02.2023
Specificul activității Proiectare didactică
Recapitulare și sistematizare
Durata 50 minute
Clasa a XI-a D
Locul de desfășurare Laboratorul de informatică
Tema activității Recapitulare - Metoda de programare Divide et
Impera
Unitatea tematică Tehnici de programare
Unitatea de competențe Elaborarea algoritmilor de rezolvare a problemelor.
Scopul activității Recapitularea cunoștințelor și deprinderilor dobândite
anterior.
Competenţele cheie 1. CE1-Competenţe în matematică şi competenţe
europene vizate de bază în ştiinţe şi tehnologie .
Competențe generale 1. CG1-Elaborarea algoritmilor de rezolvare a
vizate problemelor.
2. CG2-. Implementarea algoritmilor într-un limbaj
de programare.
Competențe specifice 1. CS1-Construirea unor soluţii pentru probleme
simple care se rezolvă cu ajutorul metodelor
de programare
Cognitive

1. Să utilizeze corect noţiunile teoretice însuşite;


2. Să implemeteze corect tehnica de programare
Divide et Impera în dezvoltarea algoritmilor.
Afectiv – atitudinale

1. Să aprecieze corect răspunsurile oferite de


ceilalţi elevi ai clasei;
2. Să se autoevalueze în raport cu obiectivele şi
cu clasa;
Obiective educaționale
3. Să fie atenţi şi să participe activ la lecţie;
4. Să aprecieze rezultatele activităţii desfăşurate;
5. Să-şi dezvolte interesul pentru studiul
informaticii prin aplicarea cunoştinţelor în
probleme variate.
Psihomotorii

1. Să-şi dezvolte gândirea logică, capacitatea de


generalizare şi problematizare;
2. Să dovedească trăinicia noţiunilor dobândite la
informatică;
3. Să dovedeasca abilitate în rezolvarea
problemelor cu ajutorul calculatorului.

Obiective operaționale La șfârșitul lecției elevii vor fi capabili:


Ob1-să identifice corect algoritmii care necesită
utilizarea tehnicii de programare Divide et Impera;
Ob2-să implementeze corect metoda de programare
Divide et Impera în cadrul algoritmilor;
Ob3-să eficientizeze algoritmii elaborați anterior.

Metode de învăţământ

Metode de comunicare orale

Explicaţia,
Exerciţiul,
Conversaţia,
Expunerea,
Problematizarea,
Demonstrarea,
Munca Independentă,
Brainstorming.

Metode de acţiune

Studiul de caz;
Învăţarea prin descoperire;
Informarea din surse ale producătorului.

Mijloace de învăţământ
Strategii didactice
fişe individuale de lucru,
prezentări electronice,
liste de verificare a abilităţilor,
rețeaua Internet,
tabla,
videoproiector,
stații de lucru.

Forma de organizare

mixtă (deductivă-inductivă), semidirijată


frontală,
individuală,
în echipă.

Suport Informațional

1. Metode și tehnici de programare-C++-Adrian


Runceanu
Forme de evaluare
1. Evaluare iniţială: Nivelul iniţial al clasei:
1.1-elevii şi-au însuşit noţiunile teoretice legate
de tablourile unidimensionale și bidimensionale
1.2-elevii rezolvă corect probleme simple cu
vectori și matrici;
2. Evaluare formativă: aprecieri
verbale,întrebări, analiza răspunsurilor,
observarea sistematică a atenţiei, posibile
mențiuni în catalogul școlar.

Propulsarea spre performanță

Lansarea de activități care au un grad de dificultate


peste medie în scopul diferențierii lucrului cu elevii și
propulsarea spre perfonță a grupului identificat.

Asigurarea feed-back-ului

Asigurarea procesului de colectare a gradului în care


informațiile transmise au fost înțelese și sunt utilizate
corect va implica tot colectivul de elevi prin intermediul
fișelor de lucru individuale și a platformelor
educaționale inovative.

Asigurarea transdisciplinarității

Utilizarea prezentărilor realizate în diverse domenii de


activitate.

Transferul de inovație

Inovarea și transferul de cunoștințe asociat acesteia


sunt instrumente de dezvoltare vitale pentru unitățile
de învățământ din spațiul european. Inovarea este un
factor de progres social, economic și ecologic.
Transferul de cunoștințe susține procesul de inovare
prin faptul că menține organizațiile și indivizii informați
și favorizează schimbul de idei pe tema noilor practici,
care pot avea o influență hotărâtoare.
Nr. Etapele lecţiei / Ob. Eșalonarea conţinutului Strategia didactică Evaluare
crt. Timp Op.
Activitatea Activitatea
profesorului elevilor Metode, Mijloace Forme de
procedee și de înv. organizare
tehnici did.
1. Moment Organizarea şi Elevii vor pregăti caietele -
organizatoric pregătirea și se vor așeza la stațiile Conversația Catalogul Frontală
2 min clasei: de lucru. școlar

Verificarea
frecvenţei
elevilor;
Verificarea
existenţei
resurselor
materiale.

2. Anunţarea temei şi Ob1 Captarea Elevii vor nota pe caiete. Problematizarea Prezentare Frontal -
a obiectivelor atenţiei Exercițiul în Power
3 min Brainstorming Point.
Anunțarea Exemplificarea
temei Conversația Video-
euristică proiector
Recapitulare -
Invățarea prin
Metoda de
descoperire Tabla
programare
Divide et
Impera
Obiective
operaționale

3. Dirijarea învățării Ob1 Rezolvarea tipurilor de itemi: Problematizarea Prezentare


și propulsarea Ob2 Exercițiul în Power Diferențiat Aprecieri
spre performanță Ob3 -probleme bacalaureat; Brainstorming Point. Pe grupe verbale.
35 min -probleme OJI/ONI. Exemplificarea Video-
proiector
Conversația Tabla
euristică Platforma
Invățarea prin pbinfo
descoperire
GRUPA 1 - Problema turnurilor din Hanoi.
Pe prima tijă sunt așezate n discuri de raze distincte, în ordine descrescătoare a razelor privind de jos în sus. Se cere să se efectueze
mutări încăt să ducem toate discurile pe a doua tijă. Avem voie să folosim tija a treia de lucru iar la o mutare putem lua un singur disc
din vârful unei stive și să îl așezăm în vârful altei stive, fără însă a plasa vreodată un disc mai mare peste unul mai mic.
GRUPA 2 - Marian a fost foarte interesat de metoda divide et impera și a primit de la profesorul său o problemă : se dă o matrice de
dimensiune 2n și ea trebuie parcursă după o anumită regulă bazată pe divide et impera . Pe baza a trei exemple , el trebuie să
descopere regula și s-o aplice . Din păcate , acesta nu reusește și vă cere ajutorul . Vrea o rezolvare foarte eficienta atât din punct de
vedere al timpului de execuție cât și a limitei de memorie .

ACTIVITATEA SE VA DESFĂȘURA DIFERENȚIAT


ACTIVITATEA ELEVILOR PE PLATFORMA PBINFO ACTIVITATEA LA VIDEOPROIECTOR
GRUPUL PROGRAMATORILOR INCEPĂTORI GRUPUL PROGRAMATORILOR EXPERIMENTAȚI
Problema turnurilor din Hanoi. Marian a fost foarte interesat de metoda divide et impera și a primit
Pe prima tijă sunt așezate n discuri de raze distincte, în ordine de la profesorul său o problemă : se dă o matrice de dimensiune 2n
descrescătoare a razelor privind de jos în sus. Se cere să se și ea trebuie parcursă după o anumită regulă bazată pe divide et
efectueze mutări încăt să ducem toate discurile pe a doua tijă. impera . Pe baza a trei exemple , el trebuie să descopere regula și
Avem voie să folosim tija a treia de lucru iar la o mutare putem lua s-o aplice . Din păcate , acesta nu reusește și vă cere ajutorul . Vrea
un singur disc din vârful unei stive și să îl așezăm în vârful altei o rezolvare foarte eficienta atât din punct de vedere al timpului de
stive, fără însă a plasa vreodată un disc mai mare peste unul mai execuție cât și a limitei de memorie .
mic.
Soluție Date de intrare
Dacă notăm tijele cu 1, 2, 3 vom folosi următoarea strategie: Fișierul de intrare matrice_div_et_imp.in conține pe prima linie
Notăm hanoi(n, a, b, c) ca fiind secvența de mutări necesată să numărul n, iar pe celelalte 2n linii câte 2n numere naturale nenule
luăm n discuri plasate corect pe tija a, să le ducem corect pe tija b, separate prin spații .
folosind tija c intermediară. Evident că primul disc pe care îl vom
așeza în poziție finală este cel cu raza cea mai mare. În momentul Date de ieșire
realizării operației trebuie deci ca tija a să conțină doar acest disc, Fișierul de ieșire matrice_div_et_imp.out va conține o linie cu cele
tija b să fie goală deci automat pe tija c să se se afle toate celelalte 2n*2n numere ale matricei , parcurse după respectiva regulă .
discuri (obligatoriu descrescător de jos în sus). Observăm că în
această stare se ajunge mutând mai întâi cele n-1 discuri din vârful Restricții și precizări
tijei a pe tija c, cu tija b intermediară. Așadar acesta este un 0≤n≤9
autoapel de forma hanoi(n-1, a, c,b). Evident că după mutarea numerele de pe a doua linie a fișierului de intrare vor fi mai mici
discului mare de pe tija a pe tija b, trebuie să ducem cele n-1 decât 1.000.000.000
discuri așezate corect pe tija c pe tija b folosind tija a ca Exemplu 1 :
intermediară. Discul pus deja pe tija b poate fi neglijat pentru că se matrice_div_et_imp.in
află în poziție finală și în plus este mai mare decât toate cele care
mai sunt de mutat. 1
Așadar: 12
hanoi(n, a, b, c) se realizează din: hanoi(n-1, a, c, b), urmat de o 34
mutare efectivă de pe a pe b și apoi de un hanoi(n-1, c, b, a). matrice_div_et_imp.out
Putem considera cazul direct cel cu n=0 (când nu facem nicio
operație) sau n=1 când facem doar mutarea directă de pe tija a pe 1423
tija b. Exemplu 2 :
Iată o primă variantă de a scrie un program C/C++. matrice_div_et_imp.in
#include <iostream>
#include <fstream> 2
#include <deque> 15 12 13 14
using namespace std; 36 56 34 58
int n; 98 80 79 11
void hanoi(int n, int a, int b, int c) { 10 43 47 50
if (n == 1) { matrice_div_et_imp.out
cout<<a<<"->"<<b<<"\n";
} else { 15 56 12 36 79 50 11 47 13 58 14 34 98 43 80 10
hanoi(n-1, a, c, b); Exemplu 3 :
cout<<a<<"->"<<b<<"\n"; matrice_div_et_imp.in
hanoi(n-1, c, b, a);
} 3
} 12345678
int main () { 9 10 11 12 13 14 15 16
cin>>n; 17 18 19 20 21 22 23 24
hanoi(n, 1, 2, 3); 25 26 27 28 29 30 31 32
return 0; 33 34 35 36 37 38 39 40
} 41 42 43 44 45 46 47 48
Rulând pentru n=3 obținem pe ecran: 49 50 51 52 53 54 55 56
Iată și o versiune îmbogățită cu o formă de afișare a stivelor după 57 58 59 60 61 62 63 64
fiecare operație, precum și rezultatul obținut la o rulare pentru n=3. matrice_div_et_imp.out
#include <iostream>
#include <fstream> 1 10 2 9 19 28 20 27 3 12 4 11 17 26 18 25 37 46 38 45 55 64 56
#include <deque> 63 39 48 40 47 53 62 54 61 5 14 6 13 23 32 24 31 7 16 8 15 21 30
using namespace std; 22 29 33 42 34 41 51 60 52 59 35 44 36 43 49 58 50 57
deque<int> S[4];
ofstream fout("date.out"); #include <bits/stdc++.h>
int n; using namespace std;
void afiseazaStiva(deque<int> s, char *msg) { ifstream cin("matrice_div_et_imp.in");
fout<<msg; ofstream cout("matrice_div_et_imp.out");
for (deque<int>::iterator it = s.begin();it!=s.end();it++) int m[2001][2001];
fout<<*it<<" "; void afisare(int sus , int jos , int st , int dr)
fout<<"\n"; {
} if(jos - sus >= 1)
void muta(int a, int b) { {
int x = S[a].back(); int mij1=(sus + jos) / 2;
S[a].pop_back(); int mij2=(st + dr) / 2;
S[b].push_back(x); afisare(sus , mij1 , st , mij2);
afiseazaStiva(S[1], "Stiva 1: "); afisare(mij1+1 , jos , mij2+1 , dr);
afiseazaStiva(S[2], "Stiva 2: "); afisare(sus , mij1 , mij2+1 , dr);
afiseazaStiva(S[3], "Stiva 3: "); afisare(mij1+1 , jos , st , mij2);
fout<<"\n"; }
} else
void hanoi(int n, int a, int b, int c) { cout << m[sus][st] << ' ';
if (n == 1) { }
muta(a, b); int main()
} else { {
hanoi(n-1, a, c, b); int n;
muta(a, b); cin >> n;
hanoi(n-1, c, b, a); n = pow(2 , n);
} for(int i = 1 ; i <= n ; ++i)
} for(int j = 1 ; j <= n ; ++j)
int main () { cin >> m[i][j];
cin>>n; afisare(1 , n , 1 , n);
for (int i=n;i>=1;i--) return 0;
S[1].push_back(i); }
hanoi(n, 1, 2, 3);
return 0;
}
Conținutul fișierului de ieșire este:
Stiva 1: 3 2
Stiva 2: 1
Stiva 3:
Stiva 1: 3
Stiva 2: 1
Stiva 3: 2
Stiva 1: 3
Stiva 2:
Stiva 3: 2 1
Stiva 1:
Stiva 2: 3
Stiva 3: 2 1
Stiva 1: 1
Stiva 2: 3
Stiva 3: 2
Stiva 1: 1
Stiva 2: 3 2
Stiva 3:
Stiva 1:
Stiva 2: 3 2 1
Stiva 3:
Numărul de operații necesare pentru rezolvarea problemei în cazul
general cu n discuri este 2
n-1.
O modaliate simplă de a deduce asta este de a da altă
semnificație antetului hanoi(n, a, b, c) și
anume: numărul de mutări necesare pentru a muta cele n discuri
de pe tija a pe tija b cu c tijă intermediară.
Observăm că valoarea ar fi aceeași indiferent de modul de
permutare a codurilor tijelor. Din codul C++ de mai
sus, avem:
hanoi(1) = 1 (mutarea directa)
hanoi(n) = hanoi(n-1) + 1 + hanoi(n-1), adică hanoi(n) = 2*hanoi(n-
1) + 1.
Ajungem deci la termenul general pentru hanoi(n) ca fiind 2
n-1.
Ridicare la putere în timp logaritmic. Se dau a și b numere naturale, se care calcularea valorii a b
Cele două valori sunt cel mult egale cu 109 Întrucât rezultatul poate fi foarte mare, se cere doar restul
împărțirii acestuia la numărul 9901.
Soluție
Varianta imediată de rezolvare este o repetiție cu b pași în care se calculează a∙a∙a∙...∙a, de b ori.
Evident că soluția nu este practică, timpul de executare nefiind instant.
Soluția mai bună se bazează pe observația:
- Dacă b este par, am putea calcula valoarea ab/2
, pe care apoi o înmulțim cu ea însăși.
- Din fericire, putem folosi acest truc și dacă b este impar. Dacă vom considera b/2 ca fiind câtul
împărțirii la 2 al lui b, calculăm, ca și mai sus ab/2
, înmulțim cu ea însăși și cu încă un a.
Astfel, pentru a calcula ab este necesar să calculăm puterea la b înjumătățit. Dar înjumătățirea repetată a lui b
duce la un algoritm cu timp de calcul de ordin log2b.
Mai concis, avem recurența:
𝑎
𝑏=
1, 𝑑𝑎𝑐ă 𝑏 = 0
𝑎
𝑏
2
•𝑎
𝑏
2
, 𝑑𝑎𝑐ă 𝑏 𝑒𝑠𝑡𝑒 𝑛𝑒𝑛𝑢𝑙 ș𝑖 𝑝𝑎𝑟
𝑎
𝑏
2
•𝑎
𝑏
2
∙𝑎, 𝑑𝑎𝑐ă 𝑏 𝑒𝑠𝑡𝑒 𝑛𝑒𝑛𝑢𝑙 ș𝑖 𝑖𝑚𝑝𝑎𝑟
Acum traducem direct în funcție relația de recurență (având grijă de lucrul esențial, acela de a nu autoapela de
două ori cu b/2 ci de a memora valoarea primului autoapel și de a o folosi apoi).
#include<iostream>
#define MOD 9901
using namespace std;
int calcul(int a, int b) {
if (b == 0)
return 1;
else {
int rant = calcul(a, b/2);
if (b%2 == 0)
return rant * rant % MOD;
else
return rant * rant % MOD * a % MOD;
}
}
int a, b;
int main () {
cin>>a>>b;
cout<<calcul(a, b);
return 0;
4. Asigurarea Ob2 Tema: Conversația Caietele Individual -
retenției și . Se dă un număr natural n. Să se genereze Exemplificarea elevilor.
transferului o matrice pătratică de dimensiune 2n
5 min , după următoarele reguli:
- împărțim matricea în 4 submatrice
- cea din stânga-sus are toate elementele 1
- celelalte trei se generează similar, dar au
dimensiunea 2n-1
.
Valoarea lui n este maxim egală cu 10.
De exemplu, pentru n = 3 se afișează:
11111110
11111100
11111010
11110000
11101110
11001100
10101010
00000000
O reprezentare mai sugestivă a rezultatului
este:
Soluț
5. Aprecieri şi Aprecieri aduse de profesor față de Frontal Posibile
recomandări activitatea/implicarea/atenția acordată în Conversația Materialele înscrisuri
5 min cadrul orei de curs. Exemplificarea utilizate în în
Posibile recomandări privind recapitularea cadrul orei catalogul
anumitor elemente predate anterior, de curs. școlar.
dezvoltarea de algoritmi mai eficienți.
FIȘĂ ASIGURARE FEED-BACK

1. Noțiunile prezentate în lecție sunt importante pentru activitatea mea viitoare.


☐ puternic dezacord ☐ dezacord ☐ neutru ☐ acord ☐ puternic acord

2. Sunt interesat să aprofundez noțiunile prezentate la lecție și să rezolv tema pentru acasă.
☐ puternic dezacord ☐ dezacord ☐ neutru ☐ acord ☐ puternic acord

3. Am participat cu plăcere la lecție


☐ puternic dezacord ☐ dezacord ☐ neutru ☐ acord ☐ puternic acord

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