You are on page 1of 10

Unitatea de învățământ:

Profesor:Șandru Oana
Disciplina: Informatică
Clasa: a –X –a, profil matematică - informatică
Nr. ore /săptămână: 1 oră
An şcolar:
Unitatea de învăţare: Tipuri structurate de date
Tema: Interclasarea
Durata: 50 min
Tipul lecţiei: Dobândirea de noi cunoştinţe
Locul de desfăşurare: Laboratorul de informatică

Nivelul iniţial al clasei:


-elevii şi-au însuşit toate noţiunile teoretice legate de utilizarea tablourilor
unidimensionale;
-elevii utilizează şi operează corect cu tablouri unidimensionale, scriu programele
sursă, le rulează şi depanează;
- elevii şi-au însuşit noţiunea de sortare şi cunosc metodele de sortare studiate;

Obiectiv principal: Însuşirea şi înţelegerea noţiunii de interclasare. Rezolvarea


corectă a exerciţiilor şi realizarea corectă a programelor.

Competenţe generale:
1. Dezvoltarea deprinderilor moderne de utilizator.
2. Cunoaşterea modului de utilizare a instrumentelor informatice.
3. Dezvoltarea deprinderilor de a lucra individual şi în echipă.
4. Elaborarea şi aplicarea unor algoritmi pentru a rezolva probleme specifice.
5. Înţelegerea impactului tehnologiilor informatice în societate, precum şi a
conexiunilor dintre informatică şi alte obiecte de studiu.

Competenţe specifice:
1. Identificarea necesităţii structurării datelor în tablouri.
2. Prelucrarea datelor structurate în tablouri unidimensionale.
Obiective educaţionale:
Obiective cognitive:
-să declare corect tabloul, indicele de adresă;
-să recunoască în aplicaţii situaţiile când se folosesc tablouri;
-să ştie să prelucreze elementele tabloului, introducerea valorilor, afişarea
valorilor;
-să cunoască noţiunea de sortare şi metodele de sortare;

Obiective afective:
-să argumenteze corect alegerea unei variante;
-să aprecieze corect soluţiile oferite de ceilalţi membrii ai grupei;
-să se autoevalueze în raport cu obiectivele şi cu clasa;

Obiective psihomotorii:
-să utilizeze corect noţiunile teoretice însuşite;
-să implementeze algoritmii utilizând limbajul C++

Obiective operaţionale:
O1: Să-şi însuşească modul corect de declarare a tabloului unidimensional.
O2: Să-şi însuşească modul de adresare al elementelor.
O3: Să-şi însuşească mecanismul de prelucrare al elementelor unui tablou
unidimensional.
O4: Să cunoască metodele de sortare şi să le aplice corect.
O5: Să analizeze corect fiecare problemă şi să dezvolte gândirea algoritmică,
logică, flexibilă, creatoare.

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:
2
-metode de comunicare orală: expunerea, conversaţia, problematizarea;
-metode de acţiune: exerciţiul, învăţarea prin descoperire;

Procedee de instruire:
-explicaţia în etapa de comunicare;
-învăţarea prin descoperire, prin rezolvarea de probleme;
-problematizarea prin crearea situaţiilor problemă;
-conversaţia de consolidare în etapa de fixare a cunoştinţelor;

Forme de organizare: frontală şi individuală;

Forme de dirijarea a învăţării: dirijată de profesor sau independentă;

Resurse materiale:
-material bibliografic:
-Mioara Gheorghe, Constanţa Năstase, Monica Tătărâm – Manual pentru
clasa a- X-a, Editura Corint, Bucureşti, 2005;
-Tudor Sorin, Manual pentru clasa a –IX-a, Editura L&S Infomat,
Bucureşti, 2000;
-Carmen Petre, Daniela Popa, Ştefania Crăciunoiu, Camelia Iliescu,
Metodica predării informaticii şi tehnologiei informaţiei, Editura Arves,
Craiova, 2002;
-Carmen Mincă, Caiet de laborator, clasa a X-a, profilul real,
Editura L&S Infomat, Bucureşti, 2006;
-Tudor Sorin, Învaţă limbajul C++ Standard, Curs pentru clasele a –IX-a
si a X-a, Editura L&S Soft, Bucureşti, 2008;

Metode de evaluare:
-evaluare iniţială: întrebări orale;
-set de aplicaţii;

Desfăşurarea lecţiei

3
Moment organizatoric:
Pregătirea lecţiei:
-întocmirea proiectului didactic;
-pregătirea setului de întrebări;
-pregătirea setului de aplicaţii;
-pregătirea temei;

Organizarea şi pregătirea clasei:


-verificarea frecvenţei;

Captarea atenţiei clasei:


-anunţarea subiectului pentru tema respectivă;
-anunţarea obiectivelor urmărite;
-anunţarea modului de desfăşurare a activităţii;

Verificarea temei şi reactualizarea cunoştinţelor elevilor:


Se realizează un set de întrebări pentru reactualizarea cunoştinţelor teoretice.
1. Ce este un tablou?
2. Ce trebuie să cunoaştem la memorarea şi prelucrarea datelor?
3. Cum se realizează adresarea elementelor?
4. Care sunt cele mai frecvente prelucrări cu vectori?
5. Ce este sortarea?
6. Care sunt metodele de sortare studiate?

Răspunsurile au fost:
1. Un tablou este o structură formată dintr-un număr fixat de componente de
acelaşi tip, numit tip de bază. Numărul de componente este determinat de
numărul de valori ale indicelor.
2. Pentru memorarea şi prelucrarea datelor organizate ca tablouri
unidimensionale, înainte de scrierea unui program, trebuie să cunoaştem tipul
elementelor din tablou şi numărul maxim de elemente din tablou.
3. Adresarea elementelor se face, cel mai frecvent, prin structura repetitivă de tip
for, indicele de adresă fiind chiar contorul structurii, în general având valori
naturale sau de tip caracter.
4. Cele mai frecvente prelucrări cu vectorii sunt: introducerea valorilor direct de
la tastatură sau dintr-un fişier, afişarea valorilor pe ecran sau într-un fişier,
verificarea unor proprietăţi, determinarea unor valori medii, compararea
valorilor.
5. Sortarea este operaţia prin care se aranjează n numere în ordine crescătoare
sau descrescătoare.
4
6. Metodele de sortare studiate sunt: metoda minimului sau maximului şi metoda
interschimbării.

Se verifică tema de acasă:

1) Se da un vector cu n=6, V=(6, 14, 3, 29, 8, 10). Sa se sorteze descrescator folosind


metoda maximului.
2) Se da un vector cu n=4, V=(6, 14, 8, 9). Sa se sorteze folosind metoda
interschimbarii.
Rezolvare:
Problema 1.
V=(6, 14, 3, 29, 8, 10)
Max (V)=max (6, 14, 3, 29, 8, 10)=29
=(29, 14, 3, 6, 8, 10) Max ( )=max (14, 3, 6, 8, 10)=1
=(29, 14, 3, 6, 8, 10) Max ( )=max (3, 6, 8, 10)=10
=(29, 14, 10, 6, 8, 3) Max ( )=max (6, 8, 3)=8
=(29, 14, 10, 8, 6, 3) Max ( )=max (6, 3)=6
= (29, 14, 10, 8, 6, 3) vectorul sortat descrescător

Problema 2.
V=(6, 14, 8, 9)
Daca V[1]>V[2], 6>14 (F)
V[2]>V[3], 14>8 (A) →le interschimbam
V=(6, 8, 14, 9)
V[3]>V[4], 14>9 (A) →le interschimbam
V=(6, 8, 9, 14)
OBS! Dupa primul pas elementul cel mai mare a ajuns pe pozitia finala
V=(6, 8, 9, 14)

5
V[1]>V[2], 6>8 (F)
V[2]>V[3], 8>9 (F)
V[3]>V[4], 9>14 (F)
Deci vectorul sortat este V=(6, 8, 9, 14)

Interclasarea
Se citesc m numere întregi sortate crescător (descrescător). De asemenea, se citesc
alte n numere întregi sortate crescător (descrescător). Se cere să se afişeze cele m+n
valori în ordine crescătoare (descrescătoare).

Pentru rezolvarea problemei există un algoritm clasic, cel de interclasare, foarte


performant.
Presupunem că cele două şiruri de numere sortate se memorează în două variabile de tip
vector A şi B. Numerele sortate vor fi memorate într-o altă variabilă de tip vector, notată
cu C.
La fiecare pas se introduce în vectorul C câte un număr.

Exemplu

Dacă m=3 şi n=5 şi au fost citite valorile

A=(3, 5, 7)
B=(4, 6, 11, 14, 25)

Variabila i va reţine indicele vectorului A, j va reţine indicele vectorului B,


k va reţine indicele vectorului din C.

Iniţial i=0, j=0, k=0


Comparăm elementele şi pe cel mai mic îl introducem în vectorul C şi i sau j va creşte
cu o unitate

Pas 1
i=1, j=1 k=1
Dacă A[1]<B[1] , adică 3<4 Adevărat, introducem pe 3 în vectorul C

6
C=(3)

Pas 2
i=2, j=1 k=2
Dacă A[2]<B[1] , adică 5<4 Fals, introducem pe 4 în vectorul C

C=(3, 4)

Pas 3
i=2, j=2 k=3
Dacă A[2]<B[2] , adică 5<6 Adevărat, introducem pe 5 în vectorul C

C=(3, 4, 5)

Pas 4
i=3, j=2 k=4
Dacă A[3]<B[2] , adică 7<6 Fals, introducem pe 6 în vectorul C

C=(3, 4, 5, 6)

Pas 5
i=3, j=3 k=5
Dacă A[3]<B[3] , adică 7<11 Adevărat, introducem pe 7 în vectorul C

C=(3, 4, 5, 6, 7)

Am introdus toate elementele vectorului A şi automat introducem restul elementelor din


B pentru că vectorii sunt sortaţi crescator.

Deci
C=(3, 4, 5, 6, 7, 11, 14, 25)

Programul de inclasare C++ este următorul:

#include<iostream>
using namespace std;
7
int main()
{
int i,n,j,m,k,a[50],b[50],c[100];
cout<<"m= ";cin>>m;
for(i=1;i<=m;i++)
{
cout<<"a["<<i<<"]= ";
cin>>a[i];
}
cout<<"n= ";cin>>n;
for(j=1;j<=n;j++)
{
cout<<"b["<<j<<"]= ";
cin>>b[j];
}
i=1;j=1;k=0;
while( (i<=m) && (j<=n) )
if(a[i]<b[j]){k++;c[k]=a[i];i++;}
else {k++;c[k]=b[j];j++;}
if(i<=m) for(j=i;j<=m;j++) {k++;c[k]=a[j];}
else for(i=j;i<=n;i++) {k++;c[k]=b[i];}
cout<<endl<<"Vectorul c cu elementele interclasate este: ";
for(i=1;i<=k;i++) cout<<c[i]<<" ";
}

Se verifică datele folosite la vectorii de mai sus

Atunci când lucrăm cu mulţimi această metodă de sortare este folosită la


Intersecţia unei mulţimi, Reuniunea unei mulţimi, Diferenţa unei mulţimi.

În continuare propun spre rezolvare următoarea problemă pentru a face o


recapitulare a cunoştinţelor şi pentru consolidarea noţiunilor folosite in timpul orei.

Să se inteclaseze următorii vectori


Dacă m=5 şi n=3 şi au fost citite valorile

A=(4, 17, 38, 46, 52)


B=(8, 22, 41)

8
Variabila i va reţine indicele vectorului A, j va reţine indicele vectorului B,
k va reţine indicele vectorului din C.

Iniţial i=0, j=0, k=0


Comparăm elementele şi pe cel mai mic îl introducem în vectorul C şi i sau j va creşte
cu o unitate

Pas 1
i=1, j=1 k=1
Dacă A[1]<B[1] , adică 4<8 Adevărat, introducem pe 4 în vectorul C

C=(4)

Pas 2
i=2, j=1 k=2
Dacă A[2]<B[1] , adică 17<8 Fals, introducem pe 8 în vectorul C

C=(4, 8)

Pas 3
i=2, j=2 k=3
Dacă A[2]<B[2] , adică 17<22 Adevărat, introducem pe 17 în vectorul C

C=(4, 8, 17)

Pas 4
i=3, j=2 k=4
Dacă A[3]<B[2] , adică 38<22 Fals, introducem pe 22 în vectorul C

C=(4, 8, 17, 22)

Pas 5
i=3, j=3 k=5
Dacă A[3]<B[3] , adică 38<41 Adevărat, introducem pe 38 în vectorul C

C=(4, 8, 17, 22, 38)


Pas 6
i=4, j=3 k=6
Dacă A[4]<B[3] , adică 46<41 Fals, introducem pe 41 în vectorul C

C=(4, 8, 17, 22, 38, 41)


9
Am introdus toate elementele vectorului B şi automat introducem restul elementelor din
A pentru că vectorii sunt sortaţi crescator.

Deci
C=(4, 8, 17, 22, 38, 41, 46, 52)

Se face o recapitulare a cunoştinţelor pentru consolidarea noţiunilor folosite in


timpul orei.

Tema pentru acasă:

Problema 1
Se citeşte un vector cu n componente numere naturale. Să se aranjeze numerele în
vector astfel încât cele pare să ocupe primele locuri.

Problema 2
Se dau n numere întregi distincte, reţinute în doi vectori a şi b şi m numere
distincte reţinute în vectorii c şi d. Atât cele n numere reţinute în vectorii a şi b cât si
cele m numere reţinute în vectorii c şi d sunt sortate crescător. Se cere să se interclaseze
cele două şiruri de numere.

10

You might also like