Sunteți pe pagina 1din 13

PROIECT DE ACTIVITATE DIDACTICĂ

Disciplina: INFORMATICĂ
Clasa: a XI-a – Filiera teoretică. Profil real. Specializarea-Matematică-informatică, intensiv Informatică
Unitatea de învăţare: Elemente de programare orientată pe obiecte
Tema: Destructori
Durata: 50 min
 Tipul lecţiei: Lecția pentru dobândire de noi cunoștințe
 Locul de desfăşurare: Sala de clasă

Nivelul inițial al clasei:


 Elevii și-au însușit toate noțiunile teoretice legate de respectarea principiilor programării structurate în procesul de
elaborare a algoritmilor;
 Elevii utilizează corect noțiunile învățate în reprezentarea algoritmilor în pseudocod;
 Elevii si-au format şi dezvoltat deprinderi de utilizare a algoritmilor elementari în prelucrarea numerelor, în probleme
de divizibilitate (determinarea divizorilor unui număr, determinare c.m.m.d.c. folosind Algoritmul lui Euclid, etc.);
 Elevii au un nivel de cunștințe corespunzător programei și de utilizare a calculatorului.

Obiectiv cadru:
 aplicarea algoritmilor fundamentali în prelucrarea datelor
Obiectiv referință:
 să recunoască situațiile care impun folosirea algoritmului lui Euclid;
 să urmărească etapele de rezolvare a unei aplicații.

1
Obiective educaționale:
 Obiective cognitive:
 să utilizeze corect definițiile teoretice însușite referitoare la algoritmii elementari studiați;
 să identifice corect situațiile în care alegerea unui algoritm elementar prezintă avantaje ăn raport cu altul;
 să utilizeze Algoritmul lui Euclid pentru rezolvarea unor probleme cunoscuscute din domeniul
matematicii;
 să argumenteze anumite situaţii create în etapele de rezolvare a unei aplicaţii;
 Obiective afective:
 să aleagă corect situațiile în care se folosește Algoritmul lui Euclid;
 să argumenteze avantajele ulitlizării Algoritmuluim lui Euclid în rezolvarea problemelor
propuse(simplificarea fracțiilor, fracții ireductibile);
 să aprecieze corect soluțiile oferite de colegi;
 să se implice cu plăcere și interes la toate etapele lecției;
 să se bucure de rezultatele muncii depuse;
 Obiective psihomotorii:
 să-și formeze deprinderi de lucru specifice temei de studiu;
 să-și dezvolte gândirea logică, capacitatea de generalizare și problematizare.
 Obiective operaționale:
 să definească corect noțiunile de cel mai mare divizor comun, numere prime între ele, fracție ireductibilă;
 să prezinte etapele Algoritmului lui Euclid;
 să elaboreze algoritmi pentru rezolvarea unor problemele propuse din aria curriculară a specializării;
 să aleagă celui mai eficient algoritm de rezolvare a unei probleme;

2
Strategii didactice:
 Principii didactice:
 principiul participării și învățării active;
 principiul asigurării progresului gradat al performanței;
 principiul conexiunii inverse;
 Metode de învăţământ:
 conversația, explicația, exercițiul, problematizarea, algoritmizarea;
 Procedee de instruire:
 conversatia de recapitulare și consolidare a cunoştinţelor;
 învățarea prin descoperire, prin rezolvare de probleme;
 problematizarea prin crearea situaţiilor problemă;
 exerciții de consolidare;
 Forme de organizare:
 frontală, individuală, pe grupe;
 Forme de dirijare a învăţării:
 dirijată de profesor sau prin materiale didactice;
 independentă;
 Resurse materiale:
 manual, fișe de lucru, culegeri și reviste de specialitate;
 calculator conectat la Internet, videoproiector, imprimantă;

3
 Material bibliografic:
 CERCHEZ E., ȘERBAN M., Informatică:profilul real, Manual pentru clasa a-IX-a, Specializarea
matematică-informatică, științe ale naturii, Editura Didactică și pedagogică, București, 2011.
 LICA D., PAȘOI M., informatică.Fundamentele programării.Culegere pentru clasa a IX-a, editura L&S
Soft, București, 2005;
 CUCOȘ C. (coord.) Psihopedagogie pentru examenele de definitivare și grade didactice, Editura
Polirom, Iași, 1998.
 Resurse Internet, materiale digitale specifice disciplinelor din aria curriculară a specializării:
http://www.math.sc.edu/
http://www.cut-the-knot.org/
http://mathforum.org/dr.math/
http://en.wikipedia.org/wiki/Irreducible_fraction

 Metode de evaluare:
 evaluare inițială (întrebări orale);
 evaluare formativă pe parcursul lecției (seturi de aplicaţii cu urmărirea atingerii performanţei,
autoevaluare);
 evaluare sumativă;

4
DESFĂȘURAREA ACTIVITĂȚII DIDACTICE

Metode și
Etapele lecției Obiective Conţinutul lecţiei Evaluare
procedee
Activitatea profesorului Activitatea elevului
I. Moment Organizarea și pregătirea clasei
organizatoric -să fie pregătiți pentru -verificarea frecvenței, verificarea -pregătirea pentru
începerea activității didactice exitenței și operaționalității resurselor începerea activității Conversația
materiale; didactice
Captarea atenţiei prin formule
motivaționale
- anunțarea subiectului pentru tema
respectivă, anunțarea obiectivelor
urmărite, anunțarea modului de
desfășurare a activității.

II. Reactualizarea -să definească corect Reactualizarea unor cunoștințe -elevii răspund la -evaluare
cunoștințelor noțiunile de cel mai mare necesare activității didactice- întrebările Tabelului Conversația de inițială
- se realizează prin întrebări nr.1, reactualizându-se fixare (întrebări
divizor comun, numere referitoare la cmmdc, numere prime astfel cunoștințele orale)
prime între ele, fracție între ele, fracție ireductibilă, necesare temei
ireductibilă simplificarea unei fracții pentru propuse
consolidarea cunoștințelor teoretice,
-să prezinte etapele conform Tabelului nr.1
Algoritmului lui Euclid

5
Metode și
Etapele lecției Obiective Conţinutul lecţiei Evaluare
procedee
Activitatea profesorului Activitatea elevului
-elevii primesc o fișă
Intensificarea reținerii și asigurării de lucru cu aplicații
III.Intensificarea -să identifice tipurile de date transferului de informații: necesare fixării
reținerii și necesare pentru rezolvarea -se face cu Fișa de aplicații nr.1 cunoștințelor și
asigurării unei probleme (de intrare, de Profesorul va apela la o prezentare asigurării transferului Exercițiul
transferului de ieşire, de manevră). cu ajutorul calculatorului şi a unui de informații aplicativ
informații videoproiector sau va accesa prin -evaluare
-să descrie coerent o - utilizând resurse Lucrări practice
intermediul Internetului materiale formativă
anumită succesiune de online şi offline, de laborator
digitale specifice disciplinelor din aria (fișă de lucru)
operaţii prin care se obţin din elevii vor căuta şi
curriculară pentru a actualiza noţiunile
datele de intrare, datele de vor colecta Conversația de
necesare realizării aplicaţiei
ieşire; informaţiile necesare consolidare
interdisciplinare propuse;
- scrierii algoritmului
corespunzător
aplicaţiei ce urmează
a fi realizată.
-să elaboreze algoritmi Obținerea performanței se realizează - pe parcursul lecţiei, -evaluare
IV.Obținerea pentru rezolvarea unor cu setul de 2 aplicații complexe, prin elevii vor rezolva Problematizarea formativă
performanței problemele propuse din aria care se urmărește utilizarea corectă a sarcinile cuprinse în (fișă de lucru)
curriculară a specializării; Algoritmului lui Euclid în simplificarea Fișa de aplicație nr.2 Exercițiul de
fracțiilor; aducerea fracțiilor la o formă consolidare
- să aleagă celui mai eficient ireductibilă
algoritm de rezolvare a unei –conform cu Fișa de aplicații nr.2
probleme;

V. Asigurarea -să elaboreze algoritmi Pentru realizarea conexiunii inverse - elevii capabili de Fișă de lucru
feedback-ului pentru rezolvarea unor și evaluarea performanței se propun performanță care pot Problematizarea
problemele propuse din aria spre rezolvare problemele conținute în realiza fișa de aplicații
curriculară a specializării; Fișa de aplicații nr.3 , propusă pentru propusă în clasă, care Brainstormingul
elevii capabili de performanță care o va contitui tema pentru
pot realiza în clasă și constituind tema acasă pentru ceilalți
pentru acasă pentru ceilalți elevi. elevi

- .

6
Tabel nr.1
Întrebare Răspuns așteptat
Prin tip abstract de date înțelegem o mulțime de date care au o aceeași
1.Prin ce se caracterizează un tip abstract de date? reprezentare și pentru care este definit un set de operații care se pot executa
asupra elementelor mulțimii respective.
2.Din definiția tipului abstract de date rezultă că acesta Partea care definește reprezentarea datelor este formată din componente care
este alcătuit din două părți. sunt date de diferite tipuri. Aceste componente se numesc date membru.
Prin ce se caracterizează cele două parți? Partea care definește operațiile asupra datelor tipului respectiv conține funcții,
numite funcții membru sau metode.
3. Pasul următor în implementarea tipurilor abstracte
de date este acela de a introduce protejarea datelor și
Clasa este un tip abstract de date definit de utilizator. Ea încapsulează datele
a funcțiilor membru.
membru(atributele, caracteristicile clasei) precum și funcțiile membru(sau
Acest lucru a condus la noțiunea de clasa(class) în
metodele) care efectueaza operații asupra datelor clasei.
C++.
Ce este o clasă?
-public, private, protected
4. În mod implicit, în cazul claselor, toate elementele De obicei:
sunt protejate. Care sunt specificatorii de acces și ce -Partea privată a unei clase definește modul de implementare al datelor tipului
puteți spune despre partea privată și partea publică a abstract definit de clasa respectivă
unei clase? -Partea publică definește interfața acestor date cu restul programului.
Această interfață conține de obicei funcții membru(metode).
C++ face distincție între o clasă(care este tipul abstract) și obiectul propriu-zis
5. Ce este un obiect? care este instanțierea clasei respective. Spunem că o clasă reprezintă un grup de
obiecte cu aceleași caracteristici și cu un comportament comun.
Un constructor este o funcție membru specială a unei clase care se apelează în
6 Starea unui obiect trebuie inițializată în momentul mod automat de compilator în momemtul construirii unui obiect(la fiecare
construirii acestuia. instanțiere) și permite inițializarea datelor membru ale acestuia.
Ce este un constructor? Constructorul are acelașii nume cu cel al clasei, nu returnează valori(nici chair
void).
Operatorii new și delete pot fi utilizați pentru alocarea dinamică a datelor în
memoria HEAP.Operatorul new alocă la execuție o dată în memoria HEAP.
Operatorul delete dezalocă(distruge) o dată care a fost alocată în prealabil prin
7. Obiectele pot fi create dinamic(obiecte dinamice).
operatorul new.
Ce puteți spune despre operatorii new și delete.
Acești operatori pot fi utilizați și pentru obiecte(tip abstract de date).
Datele alocate în acest fel pot fi inițializate; atunci clasa trebuie să aibă un
constructor care să realizeze inițializarea respectivă.

7
 Comunicarea noilor cunoștințe:
Destructorii sunt funcții membru care pot fi considerate că acționează în sens invers față de constructori. Ei au
multe caracteristici în comun cu constructorii, dar între ei există și diferențe.
Numele unui destructor este numele clasei precedat de caracterul ”~” . Un destructor nu are parametrii formali și el
este unic pentru o clasă.
Antetul destructorilor nu conține cuvântul void, deci ei nu returnează valori.
De accea, destructorii au antetul:
~nume_clasa( )
în interiorul definiției clasei nume_clasă.

Exemplu: class X
{public:
X(); //constructorul clasei X
~X(); //destructorul clasei X
}
În afara definiției clasei, antetul destructorului va fi:
nume_clasa:: ~nume_clasa( ).
Ordinea în care sunt apelați constructorii corespunde ordinii declarării obiectelor.Destructorii se vor aplela în ordine
inversă.

1. Dacă programatorul nu a definit un destructor, atunci compilatorul generează implicit un destructor pentru clasa
respectivă. Datele membru alocate pe stivă se șterg automat la apelul implicit al destructorului.
Astfel,
- Pentru un obiect global, destructorul se apelează în mod automat la sfârșitul execuției programului.
8
- Pentru un obiect local, destructorul se apelează când controlul programului iese din domeniul lui(se iese din blocul în
care este declarat).

Alocarea în memoria HEAP-reprezintă un caz special.


2. Pentru obiectele dinamice-alocate în HEAP cu ajutorul operatorului new, destructorul va fi apelat implicit la
întâlnirea operatorului delete!(care trebuie să existe)
Exemplu- delete p; //se apeleleaza implicit destructorul-se distruge obiectul referit de pointerul p

3.1. Pentru date membru alocate in HEAP-caz special, datele trebuie șterse explicit(dacă vrem ca memoria alocată
cu operatorul new să fie eliberată cand este apelat destructorul. Astfel, trebuie să ștergem memoria explicit-tot cu
operatorul delete scris în cadrul destructorului)-altfel, datele membru nu se șterg chiar dacă este apelat
destructorul.

3.2. Tot în acest ultim caz, programatorul poate apela destructorul explicit atunci când dorește:
nume_obiect.nume_clasa::~nume_clasa();

Tabelul nr.2

9
Întrebare Răspuns așteptat

1.Ce afișează următorul program? Explicați.

#include <iostream.h>
#include <string.h>
using namespace std;

class simplu
{ private:
int nr;
public:
simplu(int tr_nr);
~simplu();
int info(){return nr;} Construim simplu 1
}; 1
Construim simplu 2
simplu::simplu(int tr_nr) 2
{cout<<"Construim Simplu "<<tr_nr<<'\n'; Distrugem simplu 2
nr = tr_nr; } Distrugem simplu 1

simplu::~simplu()
{cout<<"Distrugem Simplu "<<nr<<'\n'; }

int main()
{ simplu ob(1);
cout<<ob.info() <<'\n';
simplu *p = new simplu(2);
cout<<p->info()<<'\n';
delete p;
return 0;
}

2. Completați tabelul cu asemănările/deosebirile Asemănări:


dintre constructori/destructori. Și constructorii și destructorii au acelasi nume cu cel al clase din care fac

10
parte.
Ambii nu au tip(nici măcar tipul void) și nu pot returna valori
Constructorii și destructorii se supun acelorași reguli de acces ca celelalte
funcții membru. De obicei sunt de tip public.

Deosebiri
Constructorii se apelează în ordinea instanțierii obiectelor, destructorii în
ordinea inversă creării obiectelor(dacă programatorul nu apelează explicit
un destructor).
Există un singur destructor pentru o clasă(deoarece nu are parametrii)=>nu
există noțiunea de supraîncărcare a destructorilor.
Constructorii construiesc/destructorii distrug.

Tabelul nr.3

11
Întrebare Răspuns așteptat
#include <iostream.h>
#include <string.h>
using namespace std;
class automobil
{ private:
char* inmat;
int lung;
public:
automobil(char* tr_inmat);
~automobil( ); //declararea constructorului în clasa automobil
void info();
};

automobil::automobil(char* tr_inmat)
1. Considerăm o clasă automobil care reprezintă { lung=strlen(tr_inmat)+1;
mulțimea automobilelor dintr-un program pentru
simularea traficului rutier. Construiți două obiecte ale
inmat=new char[lung];
clasei automobil, astfel încât în momentul instanțierii
strcpy(inmat,tr_inmat);}
lor se va aloca memorie în HEAP pentru a stoca
numărul de înmatriculare(memorat ca șir de
automobil::~automobil() //definiția destructorului
caractere).
{cout<<"Destructor: "<<inmat<<'\n';
Exemplu: “B-24-CPP”, “CT-15-OBJ”.
delete inmat;
Afișați informațiile referitoare la automobile.
}

void automobil::info()
{cout<<"Nr_inmatriculare:"<<inmat<<'\n';}

{automobil ob1("B-24-CPP");
ob1.info( );
{
automobil ob2("CT-15-OBJ");
//ob2.automobil::~automobil(); -apel destructorului explicit
ob2.info( );
}
return 0; }
2. Definiți clasa Avion ce poate face parte dintr-o
aplicație care gestionează flota aeriană a unui
transportator. Folosind ca model aplicația

12
realizată în clasă, realizați un program C++ care
inițializează obiectele la momentul creării prin
apelarea unui constructor. Pentru datele membre
alocate în HEAP, ștergeți explicit memoria
folosind operatorul delete în cadrul destructorului.

13

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