You are on page 1of 6

Proiect didactic

Titlul lecţiei: Bubble Sort


Obiectul: Informatica Data: 19.10.2020
Timpul acordat : 50 min. Clasa: a-X-a , profil real
Tipul lecţiei: Mixtă(transmiterea de noi cunoştinţe şi consolidare) Specializarea: matematică-informatică(1 ora/sapt.)
Profesor: Toncea Cristian

Competenţe generale 1. Identificarea datelor care intervin într-o problemă şi aplicarea algoritmilor fundamentali de prelucrare a acestora
2. Elaborarea algoritmilor de rezolvare a problemelor cu ajutorul vectorilor
3. Aplicarea algoritmilor fundamentali în prelucrarea vectorilor şi anume algoritmii de sortare.

Competenţe specifice: 3.1 Analizarea enunţului unei probleme: identificarea datele de intrare şi a datele de ieşire (cu specificarea tipul datelor
şi a relaţiilor existente între date) şi stabilirea paşilor de rezolvare a problemei.
3.2 Reprezentarea algoritmilor de sortare
3.3 Respectarea principiilor programării structurate în procesul de elaborare a algoritmilor.
Obiective operaţionale :
 Informative  Formative  Afective
Elevii vor fi capabili: Elevii vor şti: Elevii vor putea:
- să facă diferenţa dintre metodele de sortare - să aplice sortarea prin interschimbare - să decidă asupra folosirii uneia dintre
cunoscute - sa testeze algoritmii de sortare; metodele de sortare cunoscute.
- să analizeze enunţul unei probleme şi să
identifice paşii de rezolvare;
- să respecte principiile programării structurate ;
Metode şi procedee didactice: Conversaţia euristică; Mijloace de învăţare: Fişe de lucru; Caietul de notițe,
Algoritmizarea; Probleme model, pachetul GSuite.
Explicaţia;
Demonstraţia;
Rezolvarea de probleme.
Material bibliografic: - Informatica.Profilul Real,Varianta C++ Manual pentru clasa aIX-a, autor Tudor Sorin,editura L&S Infomat,2004
- Caiet de laborator pentru clasa a X-a Profilul Real, autor: Carmen Minca, Editura L&S Infomat 2009
- www.pbinfo.ro
-Informatică.Profilul Real, Manual pentru clasa a X-a, autori Mioara Gheorghe, Constanţa Năstase, Monica
Tătărâm, Editura Corint, 2005

1
DESFĂŞURAREA LECŢIEI:

Activitatea desfăşurată de:


Etapele lecţiei Timp Metoda de activitate
Profesor Elevi
0 1 2 3 4
Pregătirea clasei 2’ Verifică prezenţa elevilor, pregătirea clasei pentru lecţie
pentru lecție
5’ Profesorul recapitulează noţiunile despre tablouri Răspund la Frontală
unidimensionale(vectori) şi despre ce înseamnă sortarea întrebările Conversaţie
(crescătoare/descrescătoare) a unui vector. profesorului
“Care este natura valorilor care se pot sorta?” Notează în caiete
R: orice valoare care aparţine unui tip asupra căruia
Pregătirea lecției pot acţiona operatorii relaţionali (<,>,<=,>=).
noi Se reaminteşte că timpul teoretic în care un
algoritm rezolvă o problemă depinde de numărul
de operaţii de bază executate (atribuiri, comparaţii)
şi se exprimă în forma O(n), O(n2), O(n3),
O(2n),O(log2n), numită şi complexitatea
algoritmului.
Transmiterea noilor 23’ Scrie pe tablă titlul lecţiei : Metoda bulelor sau Bubble Sort Notează în caiete
cunoştinţe Comunică obiectivele lecţiei titlul lecţiei
Se propune următoarea problemă:
Se citesc n numere întregi folosind un vector v (n<50). Se
cere să se ordoneze crescător numerele din vector şi să se
afişeze rezultatul. Răspund întrebărilor
Principiul de funcționare a algoritmului ce urmeaza a fi profesorului
Frontală
prezentat este unul inspirat de realitatea inconjuratoare. Un elev partajează Individual
Ați urmărit vre-o dată comportamentul bulelor de acid într- Code Blocks pentru
un pahar de apă minerală? Ce se întâmplă acolo? testarea algoritmului.
Răspuns așteptat:
Da, și am constatat că bulele de dimensiune mai mare au
tendința de a se ridica către suprafață.
Se evidențiază faptul că dacă pe parcursul ridicării o bulă
mai mare se întâlnește cu una mai mică au tendința de a își
2
schimba poziția, cea mare continuându-și drumul către
suprafață.
Algoritmul este următorul:
 Se parcurge vectorul inversând conţinuturile
componentelor alăturate care nu sunt în ordinea
dorită.
 Procedeul se repetă până când are loc o parcurgere
în care nu se face nici o inversare.
Observaţii:
 Ordonarea crescătoare a datelor prin interschimbare
face ca valorile mici să „migreze” spre stânga iar
valorile mari spre dreapta.
 Complexitatea algoritmului Bubble Sort este O(n)
pentru situaţia cea mai favorabilă şi O(n2) în rest.
Se prezintă pe Jamboard următorul exemplu :
Fie n=7 şi v de forma :
12 3 8 41 1 10 5
La prima parcurgere a vectorului schimbările sunt
următoarele:
3 12 8 41 1 10 5

3 8 12 41 1 10 5

3 8 12 1 41 10 5

3 8 12 1 10 41 5

3 8 12 1 10 5 41
După a doua parcurgere :
3 8 1 12 10 5 41

3 8 1 10 12 5 41

3 8 1 10 5 12 41

După a treia parcurgere :


3
3 1 8 10 5 12 41

3 1 8 5 10 12 41
După a patra parcurgere :
1 3 8 5 10 12 41

1 3 5 8 10 12 41
După a cincea parcurgere nu se mai fac inversări:
1 3 5 8 10 12 41
şi acesta este vectorul sortat crescător.
Algoritmul pseudocod este următorul
Se citeste dimensiunea vectorului precum si vectorul v
gasit=1 // presupunem că vectorul nu este sortat
cât timp (gasit=1) execută //cât timp vectorul nu este sortat
gasit=0 // presupunem că vectorul este sortat
pentru i=1,n-1 execută
dacă (v[i]>v[i+1]) atunci
// dacă există perechi de elemente pe poziții
consecutive care nu sunt în ordinea dorită se interschimbă
aux=v[i]
v[i]=v[i+1]
v[i+1]=aux
gasit=1 //ținem minte că s-a realizat o
interschimbare în vector
sfârșit dacă
sfârșit pentru
sfârșit cât timp
Algoritmul se redactează pe Jamboard și se puncteză pașii
importanți ai acestuia prin comentarii atât verbale cât și pe
tablă.
Pe Jamboard-ul partajat se realizează următorul
program:
#include<iostream.h>
void main()
{
int v[100],n,i,gasit,aux;
cout<<"n=";cin>>n;
4
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
do
{gasit=0;
for(i=1;i<n;i++)
if(v[i]>v[i+1])
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
gasit=1;
}
}while(gasit!=0);
for(i=1;i<=n;i++)cout<<v[i]<<" ";
}
Consolidarea noilor 15’ Prezintă spre rezolvare următoarele probleme: Sunt atenţi la Frontală
cunoştinţe 1. Considerăm un vector v cu n=2p (n<40, n număr par) precizările
numere naturale strict pozitive. Creaţi un şir de p fracţii profesorului şi îşi Individual
astfel încât suma lor să fie maximă şi le afişaţi. notează în caiete.
Exemplu: Rezolvă în caiete și
pe propriile
2 30 5 12 7 1 100 8 calculatoare
Se va afişa: sarcinile.
100/1 30/2 12/5 8/7
Elevii vor descoperi cu ajutorul profesorului că fracţia Pentru fiecare
maximă din vector este max/min. aplicaţie un elev
Pentru a rezolva se va ordona descrescător vectorul : partajează Code
100 30 12 8 7 5 2 1 Blocks-ul, realizează
apoi se va scrie programul: implementarea si se
#include<iostream.h> discută soluţia cu
void main() ceilalti elevi din
{int v[40],p,n,i,aux,gasit; clasa.
cout<<"dati numarul de fractii";cin>>p; n=2*p;
cout<<"Dati numai numere naturale strict pozitive";
5
for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
do{gasit=0;
for(i=1;i<n;i++)
if(v[i]<v[i+1])
{aux=v[i];v[i]=v[i+1];v[i+1]=aux; gasit=1;}
}while(gasit!=0);
for(i=1;i<=p;i++)cout<<v[i]<<"/"<<v[n+1-i]<<endl;}
2’ Întreabă elevii despre noţiunile învăţate în ora respectivă: Răspund la Frontală
Feed-back diferenţa şi asemănarea dintre cele două metode de sortare întrebările Conversaţie
învăţate. profesorului

Evaluare şi notare 1’ Notează elevii care au dat răspunsuri corecte.

2’ Scrieti un program care citeşte un vector v cu n numere Notează tema şi Frontal


naturale. Să se ordoneze crescător numai numerele pare, cele indicaţiile de
impare rămân pe aceeaşi poziţie. rezolvare date de
Tema pentru acasă Exemplu:Iniţial profesor.
14 5 8 6 10 1 2 11
După sortare:
2 5 6 8 10 1 14 11

You might also like