You are on page 1of 6

PROIECT DE LECȚIE

DIVIDE ET IMPERA

Profesor: Amelia Stoian


Data: 23.10.2009
Clasa: a XI-a E
Profil: Matematică – Informatică intensiv Informatică
Disciplina: Informatică

Unitatea de învăţare: Tehnici de programare


Lecția: Metoda Divide et Impera. Recapitulare
Tipul lecţiei: Lecție de recapitulare și sistematizare
Locul de desfăşurare: Sala de clasă

Competențe generale: implementarea algoritmilor într-un limbaj de programare folosind


tehnicile avansate de programare

Competențe specifice:
 Utilizarea corectă a subprogramelor predefinite și a celor definite de utilizator
 Identificarea și rezolvarea algoritmică a problemelor care necesită folosirea metodei
Divide et Impera
 Analiza problemei în scopul identificării subproblemelor acesteia

Obiective operaționale:
O1: să interpreteze și să furnizeze rezultatul în cadrul unor itemi obiectivi și semiobiectivi
O2: să analizeze o problemă complexă pentru a-i identifica subproblemele
O2: să aplice cunoștințele referitoare la algoritmii de prelucrare vectorilor
O3: să realizeze programul asociat problemelor propuse prin asamblarea subprogramelor
O4: să-și formeze deprinderile de abstractizare

Strategia didactică:
Metode de învățare: conversație, exercițiul, problematizarea, învățarea prin descoperire
Mijloace de învățare: fișa de lucru
Forma de organizare: frontală, individuală și pe grupe
Principii didactice: principiul participării și învățării active, principiul asigurării
progresului gradat al performanței, principiul conexiunii inverse
Procedee de instruire: învățarea prin descoperire, prin rezolvarea problemelor din cadrul
fișei de lucru; problematizarea prin crearea situațiilor problemă;
conversația de consolidare; explicația
Evaluare: evaluare continuă prin observarea activității elevilor

1
Desfășurarea activității

Activitate desfăşurată de
Momentele Strategii
Evaluare
lecţiei Profesor Elev didactice
• raportează absenţii şi
1. Organizare şi verificarea frecvenţei elevilor; motivele absentării
pregătirea clasei verificarea stării reţelei de calculatoare • raportează eventualele Conversaţia
(1min) defecţiuni tehnice
anunţarea subiectului temei respective;
2. Captarea anunţarea obiectivelor urmărite; elevii ascultă profesorul Conversaţia
atenţiei elevilor anunţarea modului de desfăşurare a activităţii.
(1min)
• Profesorul scrie titlul lecţiei pe tablă: ”Divide et
Impera”.
• Profesorul le solicită elevilor să indice cu • Elevii notează pe o hârtie principalele Conversaţia
ajutorul unei diagrame, principalii termeni care cuvinte cheie care au legătură cu
sunt legați de tehnica “Divide et Impera”. metoda de programare “Divide et
• Cu ajutorul elevilor profesorul va identifica Impera”
termenii corecți, explicând pe scurt rostul • Observare
3. Recapitularea fiecăruia: sistematică
și sistematizarea - “Divide et Impera” vine din
cunoştinţelor latinescul “dezbină și stăpânește” care este și
(45min) principiul de rezolvare al problemelor
- Metoda presupune descompunerea Conversaţia
problemei în 2 sau mai multe subprobleme;
acestea pot fi probleme elementare sau ne-
elementare; problemele elementare se
rezolvă direct, iar cele ne-elementare • Practică
necesită descompunerea în alte subprobleme
- Descompunerea problemei se
realizează în funcție de un anumit criteriu, • Elevii sunt atenți la concluziile

2
Activitate desfăşurată de
Momentele Strategii
Evaluare
lecţiei Profesor Elev didactice
specific problemei profesorului și contribuie la schițarea cât
- Soluția unei probleme care implică mai corectă a diagramei
metoda Divide et Impera se obține prin
recombinarea soluțiilor subproblemelor în
sens invers, recombinare care implică
folosirea unor procese recursive
- O altă caracteristică a metodei este
rapiditatea
• Profesorul le propune elevilor trecerea în revistă • Elevii vor răspunde la întrebarea Conversația
a principalelor probleme făcute la clasă, probleme profesorului, enumerând pe rând
ce se pot realiza cu ajutorul metodei Divide et principalele exemple cerute
Impera: calcularea maximului/minimului
elementelor unui vector, suma elementelor pare
din vector, produsul elementelor prime din vector,
numărarea elementelor prime/palindroame din
vector, căutarea binară, turnurile din hanoi, n!,
sortarea rapidă, sortarea prin interclasare
• După evaluarea răspunsurilor elevilor,
profesorul le propune să își consolideze
cunoștințele dobândite, prin rezolvarea fișei de
lucru anexate
• Primele două exerciții reprezintă exerciții cu • Elevii vor rezolva atât individual Exerciţiul
alegere multiplă problemele, cât și la tablă prin
• Profesorul le atrage elevilor atenția asupra intermediul unui elev
problemelor elementare din cele două exerciții,
probleme ce presupun rezolvare imediată:
1) cazul elementar e: m=n (vectorul e alcătuit Observaţia
dintr-un singur element)
2) cazul elementar e: a=b
- În cazul primei probleme se returnează restul

3
Activitate desfăşurată de
Momentele Strategii
Evaluare
lecţiei Profesor Elev didactice
împărțirii valorii din vector la 2, valoare Explicaţia
aflată pe poziția m, iar în cazul celei de-a doua
probleme se returnează valoarea de pe poziția
a din vectorul în cauză
- Rezultatele obținute la cele două exerciții
sunt: 14, respectiv 33
• Profesorul le propune elevilor spre rezolvare
problema cu numărul 3 din fișa de probleme. • Participă la stabilirea etapelor de
Va insista asupra procesului de descompunere a rezolvare a problemei, găsind soluția
problemei inițiale în subprobleme, pe optimă pentru implementarea
identicarea problemei elementare care trebuie algoritmului Muncă
rezolvată și pe obținerea soluției problemei. individuală
• Ca o concluzie, profesorul le propune elevilor să
se gândească ce se întâmplă dacă vectorul este • Elevii notează în caiete algoritmul de
sortat crescător. rezolvare

4. Evaluarea • Se vor face aprecieri individuale şi colective • Elevii sunt atenţi la aprecieri şi la
(2min) asupra activităţii desfăşurate, elevii care au recomandările făcute de profesor Conversaţia
activat în timpul orei sunt notaţi.
5. Tema pentru • profesorul anunţă tema pentru acasă • Elevii îşi notează tema pe caiete. Conversaţia
acas
ă (1
min.
)

4
CN “Mihai Eminescu” Oradea Divide et Impera
Prof. Amelia Stoian

Fișa de lucru:
1. Alegeți varianta corectă de răspuns pentru următoarele exerciții:
a) #include<iostream.h>
int v[8]={2,4,1,3,11,5,1,3};
int imp(int m, int n)
{
if (m==n) return v[n]%2;
else
return imp(n,(n+m)/2)+imp((n+m)/2+1,m);
}
int main()
{
cout<<imp(0,6);
return 0;
}

1) 17 2) 43 3) 14 4) erori de sintaxă 5) programul intră într-un ciclu infinit


b) #include<iostream.h>
int v[50], i;
long m(int a, int b)
{
if (a>b) return 0;
else
if (a==b) return v[a];
else
return m(a,(a+b)/2)+m((a+b)/2+1,b);
}
int main()
{
for(i=1;i<=10;i++)
v[i]=i;
cout<<m(3,8);
return 0;
}

1) 3 2) 33 c) 0 d)8

2. Realizați un program care determină câte numere dintr-un vector cu n


(n<=100) elemente numere întregi sunt mai mari decât o valoare x
citită de la tastatură.
3. Se consideră un vector cu n elemente numere întregi. Asupra acestuia
se vor executa operații de „tăiere”, care constă în „înjumătățirea” lui și
eliminarea elementului din mijloc, dacă lungimea vectorului este impară.
Procesul de „tăiere” se repetă asupra fiecărei jumătăți până la obținerea
unui tablou cu un singur element.
Ex: 1 2 3 4 5 6 7 => 1 3 5 7
4. Considerăm o valoare naturală n (<=100) de forma 2k. Să se construiască
o matrice a pătratică de ordin n ale cărei elemente aparțin mulțimii
{0,1}. În matrice elementele egale cu 1 sunt situate în subtabloul
stânga sus, de latură n DIV 2; procesul se repetă pentru cele 3
subtablouri rămase, până la obținerea unor subtablouri de latură 1.

Ex: n=4 1110


1100
1010
0000

5
CN “Mihai Eminescu” Oradea Divide et Impera
Prof. Amelia Stoian

#include<iostream.h>
int v[100],n,x;

void dei(int p, int q, int &k)


{
int mij=(p+q)/2;
if (q<p) k=k ;
else if (x<v[mij]) {k++;
dei(mij+1,q,k);}
else dei(mij+1,q,k);

int main()
{
int k=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
cin>>x;
dei(1,n,k);
cout<<k;
return 0;
}

#include<iostream.h>
int v[100],n,x;

int dei(int p, int q)


{
int mij=(p+q)/2;
if (p==q)
if(x<v[p]) return 1;
else return 0;
else {
return dei(p,mij)+dei(mij+1,q);
}

int main()
{
int k=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
cin>>x;
cout<<dei(1,n);
return 0;
}

You might also like