Sunteți pe pagina 1din 4

Proiect de tehnologie didactică

Data: 18 februarie 2009


Disciplina: Informatică
Clasa: a XI-a A
Profil: matematică-informatică
Profesor: Brînzoi Elena
Unitatea de învăţare: Elaborarea algoritmilor de rezolvare a problemelor
Activitatea de învăţare: Metoda Divide et Impera. Maximul dintr-un şir.
Tipul lecţiei: mixtă;
Competenţe specifice: - Analiza problemei în scopul identificării metodei de programare adecvate pentru
rezolvarea problemei;
- Aplicarea creativă a metodelor de programare pentru rezolvarea unor probleme
intradisciplinare sau interdisciplinare, sau a unor probleme cu aplicabilitate
practică
Obiectiv general: Aplicarea metodei de programare Divide et Impera pentru rezolvarea unor tipuri
de probleme
Strategii didactice:
Principii didactice:
- principiul participării active;
- principiul asigurării progresului gradat al performanţei;
- principiul conexiunii inverse.
Metode de învăţământ:
- metode de comunicare orală: expunerea, conversaţia, problematizarea;
- metode de acţiune: exerciţiul;
Procedee de instruire;
- explicaţia în etapa de comunicare;
- conversaţia euristică ȋn etapa de comunicare;
- învăţarea prin descoperire prin rezolvare de probleme ;
- conversaţia de consolidare în etapa de fixare a cunoştinţelor.
Forme de organizare :frontală, individual.
Forme de dirijare a învăţării : dirijată de profesor şi independentă
Reurse materiale : Mateescu George Daniel, Moraru Florin Pavel, Informatică pentru liceu şi
bacalaureat, clasa a XI-a, Editura Donaris, Sibiu, 2008
Metode de evaluare:
- evaluare iniţială: întrebări orale;
- set de aplicaţii ;
Desfăşurarea lecţiei :
a. – moment organizatoric : - pregătirea lecţiei ;
- pregătirea setului de întrebări ;
- pregătirea setului de aplicaţii ;
- pregătirea temei ;
b. – organizarea şi pregătirea clasei :- verificarea frecvenţei;
- verificarea temei de casă;
c. – captarea atenţiei: - anunţarea subiectului lecţiei;
- anunţarea obiectivelor urmărite;
- anunţarea modului de desfăşurare a activităţii
Reactualizarea cunoştinţelor se va face prin următorul set de întrebări şi aplicaţii:
Care este principiul metodei de programare Divide et Impera ?
Ce avantaje prezintă metoda de programare Divide et Impera ?
Cum se modelează metoda de programare Divide et Impera ?
Folosind metoda Divide et Impera realizaţi o funcţie care returnează suma 2+21+22+...+2n.

1
Comunicarea noilor cunoştinţe:
Să se determine elementul maxim dintr-un şir de n numere ȋntregi, folosind metoda Divide et
Impera.
Se urmăreşte modelul general şi valorile din şir se memorează ȋntr-un vector
(x[0], x[1],...,x[n-1]).
Se descompune problema ȋn două probleme de acelaşi tip, se ȋmparte vectorul ȋn doi vectori
aproximativ egali ca număr de elemente; primul vector va conţine elementele aflate până la poziţia
de mijloc inclusiv, iar al doilea vector va fi alcătuit din elementele de după poziţia de mijloc.
Se determină elementul maxim al fiecăruia dintre cei doi subvectori, apoi maximul ȋntregului
vector va fi cea mai mare dintre cele două valori maxime.
Dacă primul subvector nu s-a redus la un singur element, el trebuie descompus la rândul lui ȋn
două jumătăţi; la fel şi la al doilea vector. Procedeul continuă până se obţin numai subvectori cu un
singur element. Maximul unui subvector cu un singur element este chiar elementul respectiv. Un
vector cu un singur element va fi considerat problemă elementară.
Se consideră că la un anumit pas se prelucrează subvectorul: (x[p],...,x[q]), ce conţine
elementele cuprinse ȋntre poziţiile p şi q. Se porneşte de la vectorul dat (x[0], x[1],...,x[n-1]), deci
iniţial capetele intervalului sunt p=0 şi q=1. Poziţia de mijloc care determină vectorii descompunerii
este mij=[(p+q)/2], iar subvectorii vor fi x1= (x[p],...,x[mij]) şi x2=(x[mij+1],...,x[q]).
Se face exemplificare pe vectorul x=(-1,2,8,-3,1,9,6), având n=7 elemente.
Procesul de descompunere ȋncepe cu vectorul iniţial:
x: p=0 1 2 3 4 5 6=q
-1 2 8 -3 1 9 6

- se calculează mij=[(p+q)/2]=[(0+6)/2]=3
- vectorul x1 este cuprins ȋntre poziţiile p şi mij, mij devine noul q
p=0 1 2 3=q
-1 2 8 -3

- vectorul x2 este cuprins ȋntre poziţiile mij +1 şi q, iar mij+1 devine noul p

p= 4 5 6=q
1 9 6

Fiecare vector se descompune la rândul său ȋn mod similar.


Pentru x1, mij=[(0+3)/2]=1, şi se obţin subvectorii:
x11 x12
p=0 1 =q p=2 3 =q

-1 2 8 -3
Pentru x2, mij=6 şi se obţin subvectorii:

x21 x22
p=4 5 =q p=6 =q

1 9 6
Următoarele descompuneri ale vectorilor conduc la probleme elementare:
x11→ x111: -1 şi x112: 2
x12→ x121: 8 şi x122: -3
x21→ x211: 1 şi x212: 9
x22 este 6, problemă elementară.
Determinarea maximului se face combinând problemele astfel:
- valoarea maximă a lui x11 este maximul dintre x111 şi x112, adică 2;
- valoarea maximă a lui x12 este maximul dintre x121 şi x122, adică 8;
- valoarea maximă a lui x21 este maximul dintre x211 şi x212, adică 9;
- valoarea maximă a lui x22 este 6;
ȋn continuare:
2
- maximul dintre x11 şi x12 este 8, adică maximul lui x1 este 8;
- maximul dintre x21 şi x22 este 9, adică maximul lui x2 este 9;
- maximul dintre maximul lui x1 şi maximul lui x2 este 9.
Se defineşte o funcţie recursivă care returnează valoarea maximă a subvectorului
(x[p],...x[q]) :
- dacă subvectorul conţine un singur element, adică p=q, atunci acel element va fi maximul
şi va fi returnat de către funcţie;
- ȋn caz contrar:
 se determină poziţia de mijloc;
 se determină valoarea maximă a subvectorului (x[p],…,x[mij]), max1;
 se determină valoarea maximă a subvectorului (x[mij+1],…,x[q]), max2;
 se recombină cele două probleme, maximul din tot vectorul, max, va fi
cea mai mare dintre cele două valori maxime:max1 şi max2.
int div_imp(int p, intq)
{int mij, max1, max2;
if(p==q)
return x[p];
else
{mij=(p+q)/2;
max1=div_imp(p,mij);
max2=div_imp(mij+1,q);
if(max1>max2)
return max1;
else
return max2;
}
}
Fişa de lucru
Să se editeze în limbajul C++ algoritmul studiat (inclusiv declaratiile necesare rezolvarii
acestuia)
Să se completeze tabelul de variaţie următor pentru un vector ales,cu maxim 8 elemente, apoi
să se verifice cu rezultatele obţinute prin rularea programului pentru aceleaşi valori.
Să se ruleze programul şi în varianta pas cu pas (step over).

vector Valorile din vector p q mij max


x
x1
x11
x111
x112
x12
x121
x122
x2
x21
x211
x212
x22
x221
x222

Temă pentru acasă:


Problemele 1,2/pag310
Aplicaţie- pag.311, - Mateescu George Daniel, Moraru Florin Pavel, Informatică pentru liceu şi
bacalaureat, clasa a XI-a, Editura Donaris, Sibiu, 2008

3
Fişa de lucru
Să se editeze în limbajul C++ algoritmul studiat (inclusiv declaratiile necesare rezolvarii
acestuia)
Să se completeze tabelul de variaţie următor pentru un vector ales,cu maxim 8 elemente, apoi
să se verifice cu rezultatele obţinute prin rularea programului pentru aceleaşi valori.
Să se ruleze programul şi în varianta pas cu pas (step over).

vector Valorile din vector p q mij max


x
x1
x11
x111
x112
x12
x121
x122
x2
x21
x211
x212
x22
x221
x222

Fişa de lucru
Să se editeze în limbajul C++ algoritmul studiat (inclusiv declaratiile necesare rezolvarii
acestuia)
Să se completeze tabelul de variaţie următor pentru un vector ales,cu maxim 8 elemente, apoi
să se verifice cu rezultatele obţinute prin rularea programului pentru aceleaşi valori.
Să se ruleze programul şi în varianta pas cu pas (step over).

vector Valorile din vector p q mij max


x
x1
x11
x111
x112
x12
x121
x122
x2
x21
x211
x212
x22
x221
x222

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