Sunteți pe pagina 1din 190

1

Capitolul 1. Noiuni de baz


Capitolul este destinat n principal prezentrii unor elemente introductive, absolut necesare pentru pstrarea caracterului de sine stttor al lucrrii, n Liceu anumite noiuni deosebit de importante fiind predate destul de diferit.

1. Noiuni de baz n Informatic


ncepem cu o scurt trecere n revist a ctorva concepte care vor fi utilizate intensiv n carte n special ca suport teoretic pentru exemplele alese. Pentru detalii se mai pot consulta <2>, <3>, <10>, <19>, <20>, <31>, <36>, <38>. 1.1. Predarea unor noiuni fundamentale Temele i domeniile abordate n tratarea disciplinelor de Informatic sunt desigur stabilite prin obiectivele cadru i de referin specifice. Dar, aa cum nu putem aborda nici un domeniu al matematicii (de exemplu), fr cunoaterea unor noiuni fundamentale (cum ar fi cele privind teoria mulimilor, teoria numerelor etc.), nici n Informatic nu ne putem dispensa de conceptul de algoritm. Prin algoritm (imperativ) se nelege ansamblul de transformri (metode) ce se aplic asupra unui set de date de intrare i care determin obinerea ntr-un timp finit i dup o succesiune precis de pai, a unui set de date de ieire (<14>, <23>, <24>). Aceasta nu este o definiie, ci o descriere a unui concept de baz. Spre deosebire de matematica clasic (n care noiunile de baz, nedefinite ci doar descrise, sunt relativ simple: mulime, punct, plan etc.), noiunile informatice similare sunt mult mai complicate (n afar de algoritm, mai amintim: baz de date, program concurent, site, cip, etc.). Un accent deosebit trebuie pus pe caracteristicile algoritmilor: generalitatea (universalitatea), determinismul i finitudinea, eficacitatea (<23>, <32>). S precizm totui c introducerea oricrei noiuni (chiar nefundamentale), ar trebui s urmeze urmtoarele etape: Etapa de elaborare i motivaie (iniial). Fundamentat i eficient integrat ntr-un sistem, o noiune cere noi domenii de aplicare. Prin urmare atrage dup sine

(motiveaz) introducerea unor noi noiuni sau furnizarea unor noi rezultate, pn cnd aria de extindere se ngusteaz. Etapa de formare a noiunii. Ilustrat prin exemple, argumentat teoretic i, de dorit, demonstrat matematic, o noiune se constituie ca un util i puternic mijloc de producie pentru domeniul pentru care a fost elaborat. Rmne doar s-l exploatm adecvat. Didactic, acest aspect cuprinde argumentarea tiinific a noiunii introduse i reliefarea unor noi, posibile domenii de aplicabilitate. Etapa de consolidare, prin operare cu noiunea. O noiune poate fi considerat asimilat dac ea devine i instrument de dobndire a unor cunotine i dac elevii pot opera cu aceast noiune n situaii noi. De exemplu, n privina reprezentrii algoritmilor, optm pentru folosirea pseudocodului sau a altor tipuri de diagrame. Nici un efort metodic nu este prea mare pentru a avea o reuit deplin n nelegerea i abordarea noiunilor de algoritm i de reprezentare a acesteia. Noiunile ulterior introduse vor apare n mod firesc, cptnd caracteristicile unor nlnuiri cauzale. De aceea este necesar ca n mintea elevilor s existe o ordonare a noiunilor, o corelare fireasc a lor, o motivaie, pentru c numai peste cunotine bine asimilate se pot aterne n mod eficient cunotine noi. Pentru a-l cita pe Domnul profesor I. Maxim, elevul trebuie s neleag c ordinea n care se predau noiunile nu este ntmpltoare i c el trebuie s fac un efort de asimilare, care va fi rspltit prin reuite viitoare. Unele teme de predare pot fi organizate n spiral (ceea ce presupune o rentoarcere la acelai coninut, dar pe un nivel superior). Acest mod de planificare corespunde sistemului concentric propriu-zis (concentric calitativ) i sistemului concentric cantitativ (concentric liniar). Sistemul concentric calitativ desemneaz modul de organizare a cunotinelor n programele de nvmnt, manuale i lecii, n aa fel nct noiunile (cunotinele) se nsuesc prin reluri, restructurri, reinterpretri, pn la formarea lor complet. Sistemul concentric cantitativ este modul de organizare a cunotinelor n programele colare, manuale i lecii (inclusiv pe INTERNET), constnd n reluarea adugit i detaliat a materiei parcurse anterior, reluare reclamat nu att de dificultatea nelegerii noiunilor, ct mai ales de nevoia lrgirii cunotinelor n succesiunea claselor i treptelor colare. Trebuie astfel fcut diferena dintre noiunea de variabil, aa cum este ea cunoscut din matematica clasic i cea de variabil n sensul limbajelor de programare imperative (D. Barron, <7>), noiune care poate fi reprezentat ca (de unde poate rezulta i interpretarea corect a asignrii) (?????de reparat):

valoar e

Nume

Atribute

Referin

Intuitiv vorbind, pentru a parcurge drumul de la realitatea de modelat la implementarea pe calculator, trebuie nelese, cel puin la nivelul descriptiv, i alte noiuni, cum ar fi cele de problem, complexitate, corectitudine/verificare, etc. O problem este un concept caracterizat prin enun, mulime de informaii de intrare (instane ale problemei), mulime de informaii de ieire (rspunsuri ale problemei). Ca urmare, rezolvarea unei probleme nseamn c pentru fiecare instan trebuie s se furnizeze (ntr-un timp finit) un anumit rspuns. Dac acest rspuns este doar de tipul DA sau NU, atunci avem de-a face cu o problem de decizie. Soluia adoptat pentru aceast a treia cale de descriere a unei mulimi are avantajul de a avea i o caracteristic de natur (semi)algoritmic. Acceptm astfel paradigma imperativ propus de D. Knuth (<23>), Algoritm = Date + Operaii. Mai exact, un algoritm (imperativ) reprezint o secven finit de pai (instruciuni), care descriu operaii precise asupra unor informaii (date) iniiale (de intrare) sau intermediare (de lucru, temporare), n vederea obinerii unor informaii (rezultate) finale (de ieire). Paii se execut (operaiile se efectueaz n mod concret) n ordinea scrierii lor n secven. Un algoritm calculeaz o funcie sau rezolv o problem. Intuitiv, datele de intrare reprezint elemente din domeniul de definiie al funciei de calculat (sau informaiile iniiale din realitatea n care i are originea problema pe care vrem s o rezolvm), iar datele de ieire sunt elemente din codomeniul funciei (respectiv, soluiile problemei). Un algoritm se termin pentru toate intrrile admise, prin urmare exist ntotdeauna un ultim pas, a crui execuie marcheaz de obicei i obinerea rezultatelor de ieire. Din motive tehnice, vom lua uneori n considerare i algoritmi care nu se termin pentru toate intrrile, pe care-i vom numi semialgoritmi (proceduri). Un (semi)algoritm poate fi descris sub mai multe forme, printre care se numr i pseudocodul (limbaj intermediar ntre limbajul natural i un limbaj de programare comercial). Prin urmare, algoritmul Alg rezolv problema P, dac avnd la intrare orice instan a problemei, acesta se termin avnd ca rezultat un element din mulimea de rspuns. Exist i probleme semirezolvabile. Diferena fa de problemele rezolvabile este aceea c algoritmul care le rezolv poate s nu se termine pentru fiecare instan. Exist de asemenea i probleme nerezolvabile (nedecidabile), cu alte cuvinte probleme pentru care nu exist algoritmi care s le rezolve. n limbajul curent a intrat i termenul de problem netratabil, pentru a desemna

o problem rezolvabil, dar ntr-un timp practic inaccesibil (exponenial sau mai mare). Astfel, dou dintre msurile (teoretice, globale) de complexitate des ntrebuinate sunt complexitatea timp i complexitatea spaiu. Ideea este aceea c un (orice) pas elementar (instruciune) al (a) unui algoritm se execut ntr-o unitate de timp (pentru spaiu, fiecare dat elementar se memoreaz ntr-un registru sau locaie de memorie, acesta/aceasta ocupnd o unitate de spaiu), criteriul numindu-se al costurilor uniforme. Exist i criteriul costurilor logaritmice, n care orice informaie de lungime i, se prelucreaz (respectiv, se memoreaz) n numrul de uniti de timp (uniti de spaiu) egal cu log(i) + 1 (dac i = 0, se convine s lum log(i) = 0; n noteaz partea ntreag inferioar a numrului n). Intuitiv, timpul

luat de execuia unui algoritm Alg este dat de numrul de instruciuni (pai/operaii elementare) efectuate (s-l notm cu tAlg), iar spaiul (notat cu sAlg) este dat de numrul de locaii (elementare) de memorie (intern, a calculatorului) ocupate n cursul execuiei. Sigur c totul se raporteaz la lungimea nF a fiecrei intrri F IN i ne intereseaz de fapt sup{tAlg(F) | F IN i nF = n N}, margine superioar pe care o vom nota cu tAlg(n) (respectiv sAlg(n)). Aceast abordare (n care se caut cazul cel mai nefavorabil), ne permite s fim siguri c pentru fiecare intrare de lungime n, timpul de execuie al lui Alg nu va depi tAlg(n). Cum determinarea acelui supremum este de multe ori destul de dificil, ne vom mulumi s studiem aa-numita comportare asimptotic (sau ordinul de cretere) a (al) lui tAlg(n), adic ne vor interesa doar anumite margini ale sale, cum ar fi marginea sa superioar. Formal, pentru fiecare f : N N, notm

O(f) = {g | g : N N, exist c R, c > 0 i exist k N, astfel nct pentru fiecare


n k avem g(n) cf(n)} i vom spune c fiecare g O(f), este de ordinul lui f, ceea ce se mai noteaz i cu g = O(f). Astfel, exist probleme care au complexitatea (timp, asimptotic)

O(2n), sau, pe scurt, complexitate exponenial, deoarece exist (mcar) un algoritm Alg care
rezolv problema i pentru care tAlg(n) = O(2n). Similar, vom vorbi de algoritmi polinomiali (tAlg(n) = O(p(n)), unde p(n) desemneaz un polinom n n, de orice grad), sau de algoritmi liniari (p(n) de mai sus este un polinom de gradul I). Pentru detalii pot fi consultate <1>, <8>, <14>, <16>, <26>, <37> (vom reveni i noi prin cteva exemple n ultima seciune a acestui capitol). Dup cum am mai precizat, pentru c noiunea de algoritm este dat printr-o descriere i nu prin utilizarea genului proxim i a diferenei specifice (n sensul logicii aristotelice clasice, ca subdisciplin a Filozofiei), avem mai nti nevoie de metode de reprezentare a algoritmilor. O prim form de reprezentare este desigur limbajul natural. O

alt form de reprezentare a algoritmilor este limbajul pseudocod. Limbajul pseudocod, fa de limbajul natural, este o form de reprezentare mai exact, permindu-se n plus orice nivel de detaliere. Nu exist un limbaj pseudocod standard care s permit reprezentarea convenabil a tuturor algoritmilor, forma unui asemenea limbaj putnd fi influenat chiar de limbajul de programare n care urmeaz a fi implementat algoritmul. Anumite instruciuni i structuri de informaie (<4>, <7>), nu lipsesc de obicei din nici un limbaj: O mulime de operaii elementare: atribuirea unei valori pentru o variabil intern; citirea unei valori pentru o variabil (aceasta fiind tot o atribuire, de un tip mai special); scrierea valorii curente a unei variabile n exterior. O mulime de structuri de control: structura secvenial; structura alternativ; structurile de tip repetitiv. Clase de structuri de date: numere, iruri de caractere, tablouri, arbori, liste etc. Un posibil limbaj pseudocod poate fi generat atunci pornind cu instruciunile elementare: var := expresie (operaia de atribuire a valorii expresiei din dreapta semnului :=, variabilei din stnga semnului :=; evaluarea unei expresii, indiferent de tipul acesteia este o operaie de un nivel inferior celui elementar i nu va fi luat n discuie); citete var (operaia de introducere din exterior a unei valori i atribuirea acesteia variabilei var); scrie var (operaia de afiare n exterior a valorii curente a variabilei). Un bloc (Bloc, Bloc1, Bloc2 de mai jos) de operaii va fi format dintr-o operaie elementar de tipul celor enumerate mai sus, sau dintr-o secven (succesiune) de blocuri (intuitiv, acestea se vor executa n ordinea textual n care apar). Acum putem spune c o structur de control alternativ poate avea una dintre formele: a) forma incomplet; Dac (condiie) atunci Bloc Sfdac sau b) forma complet Dac (condiie) atunci Bloc1 altfel Bloc2 Sfdac

O structur de control repetitiv va fi: a) cu test la intrarea n ciclu Cttimp (condiie) execut Bloc Sfcttimp sau b) cu test la ieirea din ciclu Repet Bloc Pncnd (condiie) Grafic: pentru reprezentarea unei operaii de atribuire se va folosi

Figura 1 pentru reprezentarea unei operaii de citire se va folosi

Figura 2 pentru reprezentarea unei operaii de scriere se va folosi

Figura 3

pentru reprezentarea unei structuri secveniale se va folosi

Figura 4 - pentru reprezentarea unei structuri de control alternative incomplete se va folosi

Figura 5 - unei structuri de control alternative complete se va folosi

Figura 6 pentru reprezentarea unei structuri de control repetitive cu test la intrarea n ciclu se va folosi

Figura 7 pentru reprezentarea unei structuri repetitive cu test la ieirea din ciclu avem

Figura 8 . Se observ c orice operaie sau structur reprezentat mai sus poate fi asimilat cu un bloc care are o singur intrare i o singur ieire. Prin urmare, chiar un algoritm, la nivelul cel mai redus de detaliu poate fi privit ca un bloc unic (schem logic):

Figura 9

n 1966 (<9>) s-a demonstrat c orice algoritm (imperativ) poate fi reprezentat folosind numai structurile de control: secvenial, alternativ i repetitiv. Rezultatul obinut a condus n acel moment la apariia unor noi viziuni de proiectare a algoritmilor, cum ar fi proiectarea modular i structurat. Din acelai motiv vom folosi pe parcursul lucrrii, n caz c anumite confuzii pot fi evitate, i alte instruciuni cunoscute sau limbaje pseudocod apropiate pn la identificare de limbajele de programare comerciale. Fr a intra n detalii, urmtoarea schem calculeaz cel mai mare divizor comun a dou numere nenule (presupuse a fi naturale n mod implicit):

Figura 10. Se observ c n orice algoritm rezultatul final este condiionat de datele iniiale i, mai mult, c succesiunea n care se execut operaiile elementare depinde de datele de intrare i de rezultatele intermediare obinute n urma execuiilor anterioare. Datele iniiale, rezultatele intermediare i deciziile luate n structurile de control alternative i repetitive determin astfel o traiectorie (<31>, <32>) a execuiei operaiilor (prelucrrilor), aceasta putnd fi reprezentat printr-un graf orientat (digraf).

10

Pentru algoritmul anterior vom avea:

Figura 10.a. Prin urmare, orice traiectorie de prelucrri induce n digraful asociat algoritmului, un drum de la nodul iniial (etichetat cu 1) asociat primei operaii din algoritm (Start-nceput), la nodul final (etichetat cu 8) asociat ultimei operaii din algoritm (Stop-Sfrit). 1.2. Metode de elaborare (proiectare) a algoritmilor Elaborarea unui (nou) algoritm pentru rezolvarea unei (clase de) probleme a constituit mult timp o form de manifestare a inteligenei, o exprimare a capacitii de sintez i analiz, a bagajului de cunotine i experien ale celui care l elabora punndu-se n eviden caracterul de creativitate, de art chiar a acestei activiti. Reuitei standardizrii reprezentrii algoritmilor i s-a alturat dorina de standardizare a elaborrii algoritmilor. Cu toate succesele obinute n acest sens, activitatea de elaborare a algoritmilor beneficiaz nc de o doz substanial de libertate de exprimare a experienei i creativitii. Primele metode de elaborare a algoritmilor au avut perioade mai lungi sau mai scurte de priz la mase, dar o analiz atent a eficienei (complexitii) algoritmilor elaborai au etalat avantaje i neajunsuri, care au condus la o ierarhizare a acestor metode. n cele ce urmeaz, vom prezenta succint cele mai utilizate metode de elaborare a algoritmilor. Pentru alte detalii se pot consulta <17, 19, 20, 23, 24, 25>. 1.2.1. Metoda divide et impera Metoda mparte i stpnete, a fost sugerat de ideea fireasc de rezolvare a unei probleme complexe prin divizarea acesteia n dou sau mai multe subprobleme de acelai tip cu cea iniial, mai simple, prin rezolvarea crora (folosind soluiile deja obinute), se permite obinerea soluiei problemei iniiale. Aceast divizare poate fi aplicat succesiv noilor

11

subprobleme, pn la nivelul de detaliu la care obinerea soluiilor subproblemelor este facil. n mod natural totul se finalizeaz cu reconstituirea de jos n sus a soluiilor pariale. O reprezentare grafic sugestiv a metodei este prezentat mai jos:

Figura 11 Problem. S considerm n 1 elemente a1, a2, ... an i un subir al acestuia ap, ap+1, ... aq, cu 1 p < q n asupra cruia avem de efectuat o prelucrare oarecare (procedura Prelucrare). Soluie. Metoda divide et impera de rezolvare a acestei probleme presupune mprirea irului determinat de capetele acestuia (procedura Divide), (p,q), n dou subiruri (p,m) i (m+1,q), p m < q sau (p,m-1) i (m,q), p < m q, asupra crora s se poat efectua mai uor prelucrarea. Prin prelucrarea celor dou subiruri se vor obine rezultatele i care combinate (procedura ObinSoluieFinal) vor conduce la soluia a problemei iniiale. mprirea n subiruri poate continua pn la gradul de detaliu care permite obinerea imediat a soluiei prelucrrii unui subir. Metoda este ilustrat de procedura de mai jos. Parametrii procedurii DivideEtImpera au urmatoarea semnificaie: p - primul parametru, care reprezint indexul primului element al irului; q - al doilea parametru, care reprezint indexul ultimului element al irului; d - numrul de elemente din ir pentru problema cea mai simpl (elementar, pn la care se face divizarea). Procedura DivideEtImpera (p,q,) Dac (q-p<d) atunci Prelucrare (p,q,) altfel Divide (p,q,m) DivideEtImpera (p,m,)

12

DivideEtImpera (m + 1,q,) ObinSoluieFinal (,,) Sfdac Sfrit DivideEtImpera n cele mai frecvente cazuri, procedurile Divide, ObinSolieFinal i Prelucrare sunt compuse dintr-un numr redus de instruciuni, nemotivndu-se descrierea i apelul lor separat ca proceduri n corpul procedurii DivideEtImpera. Exemplu. S se testeze apartenena unui element la un ir ordonat cresctor. Rezolvare. Aplicnd metoda divide et impera vom mpri irul n dou subiruri. n funcie de elementul k (cutat), mai mic sau mai mare dect elementul de diviziune, vom renuna la prelucrarea (cutarea) unuia dintre subiruri, rezultatul prelucrrii fiind deja cunoscut. Vom repeta prelucrarea numai pentru subirul rmas pn cnd se va ajunge la un ir despre care se poate afirma c este gata prelucrat. In continuare prezentm algoritmul sub form de pseudocod (tip Pascal), dei sub o form nu foarte elegant. Intrare. Considerm c irul a fost declarat ca un tablou unidimensional, notat cu nSir (dac irul conine elemente numere reale i nu mai mult de 100, atunci o posibil declaraie n C poate fi int nSir[100]; ). Avem de asemenea nevoie de indexul primului i ultimului element din ir; notai cu p respectiv q. Valoarea cutat va fi memorat n variabila k. Ieire. Vom returna valoarea indexului elementului din ir n cazul n care exist soluie i o valoare negativ n caz contrar. Valoarea returnat este memorat n nIndex. Observaie. Comentariile din cadrul descrierii algoritmului vor fi prefixate cu //, adoptnd notaia din C/C++. irul nSir se consider c este vizibil n cadrul procedurii care urmeaz. Procedura DivideEtImpera // Date de intrare: p, q i k // Date de ieire nIndex Iniializri. nIndex := -1 // Presupun c nu exist soluie nceput. Dac (q-p = 0) atunci // S-a ajuns la o problem elementar, care se poate rezolva. // Subirul conine un singur element. // Aici este codul ce ar trebui pus n procedura Prelucrare

13

Dac (nSir[p] = k) atunci nIndex = p altfel nIndex = -1 // Nu exista soluie Sfdac //Ieire din procedura DivideEtImpera altfel // Se mparte problema curent n subprobleme // Calculm jumtatea intervalului m := (p + q) / 2 // se calculeaza partea ntreag // Stabilim noul subir pentru a relua procedura Dac (nSir[m] > = k) atunci q := m altfel p := m+1 Sfdac Reluare procedura DivideEtImpera pentru noul subir Sfdac Sfrit Observaie. Merit a fi evideniate procedurile care reliefeaz metoda divide et impera n acest caz: procedura Prelucrare este reprezentat de urmtorul cod: Dac (nSir[p] = k) atunci nIndex = p altfel nIndex = -1 // Nu exista soluie Sfdac procedura Divide, prin: m := (p + q) / 2 procedura ObinSoluieFinal, prin: Valoarea lui nIndex. // Am obinut soluia problemei elementare. // Am obinut soluia problemei elementare.

14

1.2.2. Metoda backtracking Backtracking-ul constituie una dintre metodele cele mai des folosite pentru cutarea soluiei optime pentru o problem atunci cnd mulimea soluiilor posibile este cunoscut sau poate fi generat. O verificare necontrolat printr-o parcurgere dup o metod oarecare a mulimii soluiilor posibile este costisitoare ca timp de execuie. Ordinul de complexitate al unui astfel de algoritm este exponenial. Se impune astfel a se evita generarea i verificarea tuturor soluiilor posibile. Problem. Se consider n 2 mulimi nevide i finite A1, A2, ... An i m1, m2, ... mn cardinalele acestor mulimi. Considerm o funcie f: A1 x A2 x ...x An R. O soluie a problemei este un n-uplu de forma x = (x1, x2, ... xn) A1 x A2 x ...x An care optimizeaz (conform unor criterii specificate) funcia f. Soluie. Mulimea finit A = A1 x A2 x ...x An se numete spaiul soluiilor posibile ale problemei. Condiia de optim pe care trebuie s o ndeplineasc o soluie este exprimat printr-un set de relaii ntre componentele vectorului x, relaii exprimate prin forma funciei f. O soluie posibil, care optimizeaz funcia f, adic satisface condiiile interne ale problemei se numete soluie rezultat, sau mai simplu, soluie a problemei. Construirea unei soluii const n determinarea componentelor vectorului x. Construirea primei soluii ncepe ntotdeauna cu construirea primului element al vectorului x (normal!). La un moment dat se va alege un element dintr-o mulime, pe care convenim s o numim mulimea curent i, presupunnd c elementele fiecrei mulimi Ai (1 i n) sunt ordonate, elementul care se adaug la vectorul x l vom numi elementul curent. Urmtorul algoritm (prezentat n limbaj natural) descrie metoda backtracking la nivel conceptual: Pas1. Considerm prima mulime, A1, ca fiind mulime curent. Pas2. Trecem la urmtorul element din mulimea curent (cnd o mulime devine mulime curent pentru prima dat sau prin trecerea de la o mulime anterioar ei, acesta va fi primul element din acea mulime). Pas3. Verificm dac un asemenea element exist (adic nu s-au epuizat elementele mulimii curente). a. Dac nu exist un asemenea element, atunci mulime curent devine mulimea anterioar celei curente; cnd o asemenea mulime nu exist, algoritmul se oprete (nu se mai pot obine soluii); b. Dac exist, atunci verificm dac elementul curent din mulimea curent, mpreun cu componentele vectorului x determinate anterior,

15

pot conduce la o soluie (aceast verificare stabilete dac sunt ndeplinite condiiile de continuare a construirii soluiei optime): i. Dac Pas2; ii. altfel se continu cu Pas3. Etapele n detaliu ale acestui algoritm pot fi urmtoarele: B1. Definesc mulimile Ai , i=1,2,...,n. Fiecare mulime are mi elemente, i=1,2,...,n, iar modul de memorare al acestor mulimi l alegem ca fiind coloanele matricii A[m.n] (coloana i din aceast matrice reprezint mulimea Ai, iar m este cel mai mare numr dintre m1, m2, ... , mn). B2. Completez cu informaiile necesare lips matricea A. B3. Memorez numrul maxim de elemente pentru fiecare mulime Ai, i=1,2,...,n n vectorul nr_elemente (de exemplu nr_elemente[2] va conine valoarea lui m2). B4. Definesc vectorul soluie x[n] (n reprezint aici numrul maxim de elemente pentru x). B5. Completez elementele lui x cu o valoare care nu este n Ai (am notat n cazul de fa cu nimic aceast valoare - vezi i semnificaia lui null, nil din limbajele de programare). B6. Definesc vectorul indecilor, notat index (de exemplu index[1] va pstra indexul elementului selectat din mulimea A1 i care se gsete n vectorul soluie), pentru fiecare mulime i l iniializez cu 1 (o valoare care nu poate reprezenta un index corect, deci nimic n acest caz nu poate reprezenta elementul -1). B7. ncepem procesul de construcie al soluiei (variabila i pstreaz indexul mulimii curente i ia valori de la 1 la n) (?????-mai de verificat aici): B7.1. i = 1; // lum prima mulime, A1, adic A[.,1] index[i] = 1; // puncteaz la primul element din A[index[i],i] x[i] = A[index[i],i]; //punem primul element n soluie B7.2. Cttimp (mai am mulimi de selectat) execut { // atta timp ct mai exist elemente n A[.,i] Cttimp (index[i] <= nr_elemente[i]) execut { Dac (valid(...)) atunci // dac elementul este corect Da (condiiile de continuare sunt ndeplinite), urmtoarea mulime devine mulime curent, i se continu cu

16

// putem trece la urmtoarea // mulime Dac (i==n) atunci // suntem la ultima mulime! afisare_soluie(); altfel { i++; // trecem la urmtoarea mulime // i index[i]++ } x[i] = A[index[i],i]; // punem elementul n // soluie } // Bucla while s-a terminat; deci mulimea A[.,i] // nu mai are elemente care s participe la formarea // soluiei. Trebuie s ne ntoarcem. // nainte de a schimba valoarea lui i vom iniializa // indexul de cutare n aceast mulime cu 1. // Aceasta nseamn c o nou cutare n // mulime se va face din nou de la primul element, // i vom pune nimic n soluie index[i] = -1; x[i] = nimic; i--; // ntoarcerea la mulimea anterioar // mresc indexul de cutare n mulimea // curent Dac (index[i] <= nr_elemente[i]) // verific din nou dac // indexul este valid x[i] = A[index[i],i]; } cttimp (i != 0); Observaie. O modificare minor (iniializarea lui x[i]) a acestui cod conduce la eliminarea secvenei: if (index[i] <= nr_elemente[i]) // verific din nou dac index[i]++; index[i] = 1; // n anumite cazuri se poate

17

// indexul este valid x[i] = A[index[i],i]; Cazuri particulare. Toate mulimile Ai, i=1,2,...,n au acelai numr de elemente care sunt n ordine cresctoare i sunt numere naturale: {1,2,3,...,n}. Se pleac iniial cu vectorul soluie x[]={0,0,...,0}. Pentru componenta x[i], trecerea la urmtorul element nseamn x[i]++, iar la elementul anterior x[i]--. Testul de existen al elementelor pentru x[i] este 1 <= x[i] <= n (similar se poate proceda i n cazul codului pentru problemele permutrilor, aranjamentelor etc.). n codul anterior, funcia valid() trebuie detaliat i este dependent de enunul problemei. Este evident c ntre condiiile interne (de optim) i condiiile de continuare exist o strns legtur, sincronizarea acestora avnd ca efect o important reducere a numrului de operaii. O sintez a metodei backtracking scoate n eviden patru etape principale: - etapa n care unei componente a vectorului soluie i se atribuie o valoare din mulimea corespunztoare acesteia, urmat de trecerea la mulimea (componenta) urmtoare; - etapa n care atribuirea unei valori pentru o component a vectorului soluie se soldeaz cu un eec, situaie care se ncerc a fi depit prin trecerea la urmtorul element din mulimea (curent) corespunztoare componentei; - etapa n care elementele mulimii curente au fost epuizate, situaie generat de o alegere anterioar nepotrivit, caz n care se impune o revenire la mulimea anterioar, revenire care poate ncheia nefericit (fr gsirea unei soluii) ntreg procesul de cutare a soluiilor; - etapa revenirii n procesul de cutare a unei noi soluii dup obinerea unei soluii, etap care se realizeaz prin trecerea la elementul urmtor din ultima mulime. Algoritmul prezentat mai sus conduce la obinerea unei soluii (dac mcar o soluie exist). De fiecare dat, pornind de la ultima soluie obinut pot fi determinate urmtoarele eventuale soluii optime. Procedura pseudocod de mai jos realizeaz acest lucru, pornind de la premiza c cele n mulimi sunt cunoscute. Vom nota cu aik al k-lea element din mulimea Ai i vom conveni c valoarea variabilei k este proprie fiecrei valori a variabilei i, adic exist cte o variabil k pentru fiecare valoare a variabilei i, notat tot cu k, n loc de ki .

18

Procedura backtracking i := 1 k := 0 Repet Repet k := k + 1 Dac ( k > mk ) atunci k=0 i=i1 altfel xi = aik Dac (x1, x2, ... xi conduce la optim) atunci i = i + 1 se verific condiia de continuare Sfdac Sfdac Pncnd (i > n sau i = 0) Dac ( i > n ) atunci afiare soluie i = n Sfdac Pncnd ( i = 0 ) Sfrit Exemplu (Generarea tuturor permutrilor unei mulimi avnd n elemente). S considerm mulimea A = {1,2, ... ,n }, n>0. S se determine toate n-uplele de elemente distincte din A. Soluie. Aceast problem reprezint un caz particular a problemei generale prezentate anterior, caz n care toate cele n mulimi sunt egale cu mulimea A. Se aplica metoda backtracking considernd funcia de optim exprimat prin condiia: elementele vectorului soluie s fie distincte. Pentru cititorul interesat codul poate fi gsit n [MPI ...]. 1.2.3. Metoda greedy Spre deosebire de metoda backtracking, metoda greedy este o metod ce permite determinarea unei singure soluii care corespunde unui anumit criteriu de optim, n cazul problemelor n care soluia se construiete ca o submulime a unei mulimi date. Ordinul de {k = 0 are semnificaia ki = 0} {se realizeaz ntoarcerea} {k = 0 are semnificaia k1 = 0}

19

complexitate al unui astfel de algoritm este redus considerabil prin faptul c se ncearc obinerea soluiei printr-o singur parcurgere a mulimii din care se construiete soluia optim, cu toate c n practic, nainte de aplicarea metodei, se fac prelucrri asupra acestei mulimi care mresc ordinul de complexitate. Problem. Se d o mulime A de cardinal n (n 0) i o funcie f: P(A) R. S se determine o submulime B P(A) de cardinal k, B = {b1, b2, ... bk }, (1 k n), astfel nct k-uplul (b1,b2,...,bk) s optimizeze funcia f. Soluie. Familia prilor mulimii finite A, notat P(A) se numete spaiul soluiilor problemei. Condiia de optim pe care trebuie s o ndeplineasc o soluie este exprimat printr-un set de relaii ntre anumite elemente ale mulimii A, relaii exprimate prin funcia f. O soluie care poate conduce la obinerea unei soluii optime se numete soluie posibil. Pot exista mai multe soluii care satisfac condiiile de optim, dar se dorete obinerea mcar a uneia dintre acestea. Construirea unei soluii optime const din determinarea unei succesiuni de soluii posibile care mbuntesc progresiv valoarea funciei f, conducnd ctre optim. Soluiile posibile au proprietatea c orice submulime a unei soluii posibile este o soluie posibil. Prin urmare i mulimea vid poate fi considerat ca o soluie posibil. Descriere metod: - considerm submulimea B, mulimea vid; Pas 1. - se alege un element aA, neales la un pas anterior; - verificm dac submulimea B {a} conduce la o soluie posibil - dac da, atunci adugm elementul ales la mulimea B (B := B {a} ). - se continu cu Pas 1 pn cnd nici un element al mulimii A nu mai poate fi adugat la B sau adugarea lui nu mai poate mbunti valoarea funciei f. Algoritmul prezentat mai sus conduce la obinerea unei soluii (mcar o soluie exist ntotdeauna), pornind de la mulimea vid i cutnd n fiecare pas s mbuntim soluia deja obinut. Aceast tehnic de obinere a soluiei, care a dat i denumirea, oarecum ironic, a metodei (greedy = lacom), n cele mai frecvente cazuri conduce la ndeprtarea involuntar

20

de optim, cunoscut fiind faptul (plastic exprimat prin lcomia pierde optimalitatea), c optimul local nu atrage optimul global. Acest aspect al tehnicii greedy a condus la disocierea algoritmilor elaborai prin metoda greedy n: algoritmi cu atingerea optimului global; algoritmi ale cror soluii converg ctre optimul global (evident, fr atingerea acestuia n toate situaiile). Aceast din urm categorie de algoritmi genereaz soluii mulumitoare n majoritatea cazurilor, dar i soluii catastrofale n alte cazuri. Disocierea n cele dou categorii se realizeaz prin modalitatea de alegere a elementelor din mulimea A. De aceea, este frecvent folosit o prelucrare (reordonare) prealabil a elementelor mulimii A care s modifice ordinea alegerii elementelor submulimii B. procedura greedy k := 0 B := repet alege a A dac (B {a} este soluie posibil) atunci k::= k + 1 B := B {a} sfdac pn cnd (nu se mai pot alege elemente din A) sfrit Exemplul care urmeaz scoate n eviden cele dou aspecte ale metodei: atingerea optimului sau numai apropierea de acesta. Exemplu (funcia maxim). Se d o submulime A a lui R, cu n elemente i o funcie f de forma f(x1,x2,...,xk) = c1x1 + c2x2 +... + ckxk, (ciR, 0 k n). S se gseasc o submulime B A de cardinal k pentru care funcia f ia valoare maxim. k este numrul de elemente din B

21

n programul Pascal: fiierul de intrare multime.txt va avea forma: - mulimea A - coeficienii funciei f

a1, a2, ..., an c1, c2, ..., cn ieirea va fi:

Soluia : x = ( b1, b2, ..., bk) Valoarea maxim a funciei este v. Soluie. Aceast problem constituie un exemplu ilustrativ complet, pentru cazul n care prin aplicarea metodei greedy se obine valoarea optim a funciei f. Algoritmul necesit o pregtire prealabil a mulimii A n vederea aplicrii procedurii de alegere succesiv a elementelor submulimii B: se va ordona cresctor mulimea A; pornind de la B := vom selecta elementele din A astfel: ct timp printre coeficienii ci ai funciei f exist numere negative (crora nu li s-a asociat un element din A, ca valoare pentru xi - ul corespunztor), executm: celui mai mic coeficient neasociat unui element din A, i atam cel mai mic numr din A nc neselectat; pentru ceilali coeficieni (pozitivi) ai funciei f crora nu li s-a asociat un element din A (ca valoare pentru xi), se alege, pentru cel mai mare coeficient neasociat unui element din A, cel mai mare numr din A nc neselectat. Vom ilustra algoritmul cu un exemplu numeric. Exemplu. Fie mulimea de numere A = { -8,-7,-5,-1,2,3,3, 5,7,8} (deja ordonat) i funcia f de forma f(x1,x2,x3,x4,x5,x6,x7) = 3x1 + 6x2 - x3 - 9x4 - 9x5 + 3x6 + 8x7. Soluia problemei va fi un vector x = (b1,b2,b3,b4,b5,b6,b7) ale crui componente sunt elemente din A. Succesiunea alegerii valorilor componentelor vectorului x pune n eviden tehnica greedy: - corespunztor celui mai mic element negativ dintre coeficienii funciei f alegem primul element din A, deci b4 = -8;

22

- corespunztor celui mai mic element negativ dintre coeficienii funciei f pentru care nu s-a ales nc o valoare pentru elementul vectorului x, alegem urmtorul element din A, deci b5 = -7; - continum alegerea elementelor lui x pn cnd tuturor coeficienilor negativi ai funciei f li s-a asociat componenta corespunztoare n vectorul x. Obinem x = (b1,b2,-5,-8,7,b6,b7); - corespunztor celui mai mare element pozitiv dintre coeficienii funciei f alegem ultimul element din A, deci b7 = 8; - corespunztor celui mai mare element pozitiv dintre coeficienii funciei f pentru care nu s-a ales nc o valoare pentru elementul vectorului x, alegem elementul anterior celui ales la pasul precedent, deci b2 = 7; continum alegerea elementelor lui x pn cnd tuturor coeficienilor funciei f li s-a asociat componenta corespunztoare n vectorul x. Obinem n final x = (5,7,-5,-8,-7,3,8). Valoarea maxim a funciei este f(5,7,-5,-8,-7,3,8) = 270. 1.2.4. Metoda programrii dinamice Metoda programrii dinamice, aa cum i arat i numele, permite determinarea unei soluii pentru o problem dat, n urma unui ir de decizii i prelucrri ce se condiioneaz reciproc, realiznd o dinamic continu a procesului de cutare a soluiei. Ordinul de complexitate al unui astfel de algoritm este condiionat de modul de organizare a datelor iniiale, a rezultatelor intermediare i de modalitatea de regsire a rezultatelor intermediare, obinute anterior momentului unei noi prelucrri a acestora. Problem. Noiunea de algoritm, aa cum a fost prezentat n lucrare, presupune ca entiti distincte, existena unui set de date de intrare i a unei metode de transformare succesiv a acestora, n vederea obinerii unui set coerent de date de ieire ca rezultat al tuturor prelucrrilor. Abordarea celor trei elemente ca un sistem presupune existena unor intercondiionri ntre acestea. Ca metod de elaborare a algoritmilor de rezolvare a unor clase de probleme, programarea dinamic presupune identificarea acestor corelaii, privind problema iniial ca un sistem de miniprobleme care se condiioneaz reciproc. Soluie. Pentru o problem dat, fie S0 starea sistemului format din datele de intrare i de lucru (intermediare), precum i din corelaiile care exist ntre acestea. O decizie d1 de transformare a datelor orientat n direcia obinerii unei soluii optime pentru problem

23

produce o prelucrare a strii S0 determinnd transformarea acesteia ntr-o nou stare S1. Suntem n acest moment pui n faa uneia sau mai multor probleme similare cu cea iniial i care - printr-o nou decizie (comun) de prelucrare - conduc la o nou stare. Schimbarea strii sistemului va continua pn la obinerea unei stri finale din care se deduce o soluie optim a problemei iniiale. n general, fiecare nou decizie de transformare a strii sistemului depinde de deciziile luate anterior (acestea au generat starea curent a sistemului) i nu este unic determinat ca n cazul metodei greedy, de exemplu. Fie d1, d2, ..., dn-1, dn o secven de decizii optime care determin trecerea succesiv a sistemului din starea iniial S0 n starea final Sn, prin intermediul strilor S1, S2, ..., Sn-1. O modalitate natural de abordare a problemei const din luarea succesiv de decizii optime de prelucrare n ordinea d1, d2, ..., di-1, pornind de la starea iniial S0. Decizia urmtoare di, depinde de irul de decizii optime deja luate d1, d2, ..., di-1. Spunem n acest caz c se aplic metoda spre napoi (sfritul irului de decizii). Dac se poate stabili starea sistemului Sn din care s-ar deduce soluia optim a problemei, este de dorit s se determine o decizie dn precum i o stare Sn-1 din care s se ajung n starea Sn n urma aplicrii deciziei dn. Intuitiv spus, se determin inversa unei decizii i starea sistemului anterioara lurii acestei decizii. Fie secvena de decizii optime di+1, di+2, ..., dn care duc sistemul din starea Si n starea final Sn .O nou decizie di care s duc sistemul din starea Si-1 n starea Si va depinde de irul de decizii di+1, di+2, ..., dn. Spunem n acest caz c se aplic metoda spre nainte (nceputul irului de decizii). A treia modalitate de abordare sugereaz determinarea unei stri intermediare, Si , i a dou decizii optime di i di+1, avnd dou subiruri optime de decizii: - di+2, di+3, ..., dn care duc sistemul din starea Si+1 n starea final Sn prin intermediul strilor Si+1, Si+2, ..., Sn-1; - d1, d2, ..., di-1, ir de decizii optime care determin trecerea sistemului din starea iniial S0 n starea Si-1, prin intermediul strilor S1, S2, ..., Sn-2. Spunem n acest caz c se aplic metoda mixt (exploziv). Cele trei modaliti de abordare au la baz principiul optimalitii. Dac d1, d2, ..., dn este un ir optim de decizii care determin trecerea sistemului din starea iniial S0 n starea final Sn, atunci sunt adevrate urmtoarele afirmaii: - di+1, di+2, ..., dn este un ir optim de decizii care determin trecerea sistemului din starea Si n starea final Sn, i, 0 i n-1;

24

- d1, d2, ..., di este un ir optim de decizii care determin trecerea sistemului din starea iniial S0 n starea Si, i, 1 i n; - di+1, di+2, ..., dn i d1, d2, ..., di sunt iruri optime de decizii care determin trecerea sistemului din starea Si n starea final Sn i respectiv din starea iniial S0 n starea Si, i, 1 i n. Principiul optimalitii sugereaz stabilirea unor relaii de recuren. n concluzie, rezolvarea unei probleme prin metoda programrii dinamice presupune identificarea unor caracteristici ale problemei care o fac rezolvabil prin aceast metod: - problema se poate descompune n subprobleme de acelai tip cu aceasta; - subproblemele nu sunt distincte, se intercondiioneaz reciproc (altfel s-ar putea aplica tehnica divide et impera, mult mai eficient din punct de vedere al consumului de memorie); - necesitatea satisfacerii principiului optimalitii, care implic stabilirea relaiei de recuren prin care se exprim intercondiionarea subproblemelor. n cele ce urmeaz, vom prezenta un exemplu de abordare a unor probleme prin metoda programrii dinamice. Sunt punctate caracteristicele importante ale metodei, chiar dac problema aleas poate s fie considerat drept necaracteristic. Problem. S se determine termenul de rang k din irul lui Fibonacci, pentru un numr natural k dat. Intrare: k, de la tastatur. Ieire: pe ecran, de forma Termenul de rang k din irul lui Fibonacci este v. Soluie (metod). n irul lui Fibonacci, primii doi termeni sunt a0 = 1 i a1 = 1. Relaia de recuren ak = ak-1 + ak-2 , k>2, arat c un termen se obine ca suma ultimilor doi termeni anteriori lui. Vom folosi metoda napoi plecnd de la starea iniial u = 1, v = 1 (primii doi termeni), care reprezint i starea din care se deduce soluia problemei pentru k = 1. Decizia de trecere la o nou stare determin urmtoarele prelucrri: - aplicarea relaiei de recuren (calculul sumei s = u + v), care respect principiul optimalitii; - obinerea noii stri prin atribuirea valorilor u = v i v = s. Se obine starea u = 1, v = 2.

25

Aceasta este starea nou obinut (succesoare). Sunt respectate caracteristicile problemelor care sunt rezolvabile prin metoda programrii dinamice: - soluia unei probleme este obinut din soluia problemei rezolvate anterior (se determin termenul de rang k din termenii de rang k-1 i k-2); - este satisfcut principiul optimalitii (o soluie optim pentru problema anterioar conduce la soluia optim a problemei curente).

1.3. Analiza complexitii i corectitudinii algoritmilor


Este evident c pentru rezolvarea unei probleme, dac aceeai metod de proiectare este folosit de ctre mai multe persoane, algoritmii realizai pot s difere. Cu att mai mult acest lucru este posibil atunci cnd metodele sunt diferite. Aa cum am mai precizat, vom trata analiza complexitii timp/spaiu prin cteva exemple concrete. S punctm i faptul c spaiul de memorie real utilizat de un program care implementeaz un algoritm este format i dintr-o parte constant, independent de datele de intrare (n care se afl memorat de exemplu codul executabil), a crui dimensiune este de obicei ignorat. De asemenea, timpul necesar introducerii valorilor de intrare i extragerii rezultatului este ignorat. Vom ncepe cu un exemplu didactic. Deoarece pseudocodul folosit va fi foarte apropiat de Pascal, consideraiile de complexitate pot fi destul de la obiect. Problem. S se calculeze suma primelor n numere naturale. Rezolvare. Primul algoritm propus se bazeaz pe ideea de a construi o funcie care s calculeze succesiv sumele 0, 0 + 1, 0 + 1 + 2, ... funcie care va ntoarce n final valoarea sumei 1 + 2 + 3 + ...+ n: function suma(n : byte):word; var i : byte; s : word; begin s := 0; i := 1;

26

while (i <= n) do begin s := s + i; i := i + 1; end; suma := s; end; Funcia va ocupa un spaiu de memorie fix pentru parametru, variabilele locale, pentru adresa de revenire i evident cu codul. Nu exist spaiu variabil suplimentar, deci sAlg(n) = O(1). Al doilea algoritm presupune construirea unei funcii recursive care calculeaz suma dup relaia de recuren s(n) = s(n -1) + n, cu s(0) = 0: function suma(p : byte):word; begin if ( p = 0 ) then suma := 0 ; else suma := suma(p-1) + p; end; Pentru fiecare apel al funciei vor fi ocupai 5 octei; unul pentru memorarea parametrului p, unul pentru valoarea funciei i 2 octei pentru adresa de revenire. Se fac n apeluri recursive, deci spaiul de memorie variabil este de 5n octei. Algoritmul care folosete funcia recursiv folosete mai mult spaiu efectiv (real) de memorie dect n cazul primului algoritm, sAlg(n) =

O(n).
Putem admite chiar c notaia asimptotic determin o clasificare a algoritmilor impus de valoarea ordinului de complexitate, clasificare pe care am putea-o scrie sub forma:

O(1) O(log n) O(n) O(n log n) O(n2) O(nk) O(2n), k > 2,


ideea fiind aceea c un algoritm din O(1) este mai bun dect unui din O(log n) etc. Reprezentarea grafic a funciilor care determin ordinul de complexitate prezentat n figura de mai jos este edificatoare. ntr-o evaluare care poate fi de exemplu gsit n <21> sau <30>, dac tAlg(f(n)) = O(2n), pentru n = 40, unui calculator care face 1 bilion (109) de operaii pe secund, i sunt necesare aproximativ 18 minute. Pentru n = 50, acelai program va rula 13

27

zile pe acest calculator, pentru n = 60, vor fi necesari peste 310 ani, iar pentru n = 100 aproximativ 4.1013 ani.

Figura 12. Algoritmii polinomiali de grad mare nu pot fi utilizai n practic, chiar dac viteza de execuie a calculatoarelor moderne poate ntrece adesea cele mai optimiste previziuni. Astfel, pentru O(n10), pe un calculator care execut 1 bilion de operaii pe secund sunt necesare 10 secunde pentru n = 10, aproximativ 3 ani pentru n = 100 i circa 3.1013 ani pentru n = 1000. i urmtorul tabel poate fi util (<31>):

O(n)
(liniar) 1 2 4 8 16 32

O(log(n))
(logaritmic) 0 1 2 3 4 5

O(n.log(n))
(log-liniar) 0 2 8 24 64 160

O(n2)
(ptratic) 1 4 16 64 256 1024

O(2n)
(exponenial) 2 4 16 256 65536 4294967296

O(n!)
(factorial) 1 2 24 40326 20922789888000 26313.1033

Evaluarea complexitii unui algoritm ca o funcie de dimensiunea datelor de intrare este o problem dificil, ea necesitnd anumite cunotine de matematic superioar chiar dac se rezum de cele mai multe ori doar la analiza cazurilor extreme. Dei n cazul cel mai defavorabil numeroi algoritmi nu ar putea fi practic utilizai, acetia au totui o comportare acceptabil n suficiente cazuri reale. O alt posibilitate este analizarea complexitii medii a

28

algoritmilor, ceea ce presupune cunoaterea repartiiei probabilistice (<12>) a datelor de intrare. n cazurile simple n care putem caracteriza datele de intrare cu precizie, dac notm cu D spaiul datelor de intrare, cu p(d) probabilitatea apariiei datei d D la intrarea algoritmului i cu t(d) numrul de operaii elementare efectuate de algoritm pentru o intrare d din D, atunci complexitatea medie este dat de suma p(d)t(d). Vom apela la dou exemple simple, tratate de I. Maxim n <30>. Un prim exemplu va prezenta un algoritm (implementat n limbajul Pascal), a crui complexitate nu depinde dect de volumul datelor de intrare i nu de alte caracteristici atipice (se pot consulta i Capitolul 6 sau Anexa 1). Sortarea prin selecie (cu alegerea minimului). S se ordoneze cresctor elementele vectorului a cu n componente, folosind metoda alegerii elementului minim nc neselectat din irul iniial. for i := 1 to n-1 do begin min := a[i] ; poz := i; for j := i + 1 to n do if a[j] < min then begin min := a[j] ; poz := j; end; a[poz] := a[i] ; a[i] := min; end; La o iteraie a ciclului for dup variabila i se determin minimul din subirul ai+1, ..., an i elementul minim este plasat pe poziia i, elementele de la 1 la i-1 fiind deja plasate pe poziiile lor definitive. Pentru a calcula minimul dintr-un ir de k elemente sunt necesare k-1 operaii elementare (se presupune primul element din ir ca fiind cel minim, apoi se fac k-1 comparaii i eventual atribuiri pn la epuizarea elementelor irului). n total se fac (n-1) + (n-2) + ... + 2 + 1 = n (n-1)/2 comparaii, deci ordinul de complexitate timp este O(n2). S subliniem

29

faptul c timpul de execuie, n sensul situaiei cele mai defavorabile, nu depinde de ordinea iniial a elementelor vectorului. n urmtorul exemplu vom analiza complexitatea att n cazul cel mai defavorabil ct i n medie. Sortarea prin inserie direct. S se ordoneze cresctor elementele unui vector considernd n fiecare moment c se ordoneaz un subir obinut din cel anterior (deja ordonat), prin adugarea unui nou element. Algoritmul pornete de la subirul cu un singur element (care este deja ordonat) i, odat cu adugarea unui nou element pe urmtoarea poziie din ir, acesta este promovat pn cnd noul subir devine din nou ordonat. for i := 2 to n do begin j := i; while (a[j-1] > a[j] ) and ( j > 1 ) do begin k := a[j-1] ; a[j-1] := a[j]; a[j] := k; j := j-1; end; end; Analizm complexitatea asimptotic a algoritmului n funcie de n, dimensiunea vectorului a ce urmeaz a fi sortat. La fiecare iteraie a ciclului for elementele a1,a2,...,ai-1 sunt deja ordonate i trebuie s interschimbm elementele de forma a[j] cu cele de forma a[j-1] (iniial j = i) pn cnd noul ir va deveni ordonat. n cazul cel mai defavorabil, cnd fiecare element adugat la ir este mai mic dect cele adugate anterior, elementul a[i] adugat va fi deplasat pn pe prima poziie, deci ciclul while se execut de i-1 ori n cadrul fiecrei execuii a lui for. Considernd astfel drept operaie elementar compararea elementului a[j-1] cu a[j] i interschimbarea acestor elemente ct timp a[j-1] >a[j], vom avea n cazul cel mai defavorabil executate 1 + 2 + ...+ ( n-1) = algoritmului este O(n2). n (n-1)/2 operaii elementare, deci complexitatea

30

S analizm comportarea algoritmului n medie. Pentru aceasta, vom considera c orice permutare a elementelor irului are aceeai probabilitate de apariie (orice ordine iniial este egal probabil). Atunci: - probabilitatea ca valoarea ai, nou adugat la irul a1, a2, ..., ai-1 s fie plasat n final pe o poziie oarecare k, din a1, a2, ..., ai (1 k i), este aceeai adic 1/i; - numrul mediu de operaii elementare (interschimbri de elemente), pentru ca 1 elementul ai s ajung pe poziia k va fi ( i k) , adic numrul de schimbri ce se i efectueaz, nmulit cu probabilitatea ca aceste schimbri s aib loc; - numrul mediu total de operaii elementare pentru un i fixat, va fi ik 1 i 1 i (i + 1 ) i 1 i = i (i k) = i (i 2 2 ) = 2 k=1 k=1
i

- pentru a sorta cele n elemente sunt necesare

i 1 1 n(n + 1 ) n(n 1 ) = ( n) = 2 2 4 i =1 2
n

operaii elementare. Deci complexitatea algoritmului n medie este tot de O(n2). ncheiem acest capitol cu cteva scurte consideraii asupra altor termeni (formulri, concepte) care sunt eseniale i care ar merita poate s fie tratate independent n (sub)seciuni separate. Nu insistm deoarece cunotinele de logic matematic presupuse a le avea un licean sunt insuficiente pentru un asemenea cadru. Foarte important n practic este studiul coerent al terminrii i corectitudinii programelor (i nu numai verificarea a posteriori a acestora prin utilizarea diverselor date de test). Ideea este c trebuie s ne asigurm, dac se poate printr-o demonstraie formal, c programele concepute se termin pentru orice instan admisibil a datelor i c ele execut ceea ce vrem, nainte ca ele s fie executate (<33>). Presupunnd astfel c informaiile de intrare admisibile sunt cele care satisfac o anumit condiie, exprimat printr-un predicat P (precondiie), rmne s artm c programul se termin pentru orice asemenea instan i c, n acest caz, informaiile de ieire satisfac un alt predicat Q (postcondiie). Nu este foarte dificil de a trata n acest mod programele care nu conin bucle, aceste construcii sintactice fiind singurele posibile generatoare de informaii necontrolabile sau de execuii infinite. Pentru a stpni ciclurile, se folosesc predicatele invariante. Un predicat invariant R asociat unei bucle, este adevrat nainte de prima execuie a acesteia i satisface n plus condiia c,

31

dac este adevrat nainte de o anumit execuie a corpului buclei, atunci va fi adevrat i dup terminarea acestei execuii. Un invariant pentru bucla exterioar din algoritmul de mai sus al sortrii prin selecie poate fi exprimat prin afirmaia: irul a1,...,ai este ordonat cresctor. Se poate consulta i <37> sau <42> pentru alte detalii. Exemplu (aflarea elementului minimal al unui ir de numere naturale). Aceast problem mai este ntlnit pe parcursul lucrrii, fiind rezolvat deja n alt context (de exemplu n algoritmul de sortare prin selecie amintit). Soluia de mai jos este adaptat scopului de moment, algoritmul fiind descris acum prin pseudocodul: Intrare: (a1, a2, ..., ak), k N, k > 1. Ieire : min. Metod : Pas1. min := a1 Pas2. Pentru i de la 2 la k execut Pas3. Pas4. Dac (min > ai) atunci min := ai Sfdac Sfpentru Precondiia P : vectorul de intrare (s spunem, a), are cel puin 2 componente i acestea sunt numere naturale. Postcondiia Q : numrul min conine cel mai micnumr dintre elementele vectorului de intrare. Invariantul R, al unicei bucle prezente n program : min reprezint cel mai mic element al subsecvenei a1, a2, ..., ai.

32

Terminare. n acest caz, lucrurile sunt simple datorit faptului c programul conine o unic operaie de ciclare i aceasta are un numr finit de pai, cunoscut aprioric (k 1). Corectitudine. Presupunem deci c pornim cu o secven oarecare de numere naturale, avnd cel puin dou elemente (P este satisfcut). Aplicm algoritmul. Trebuie s artm c la finalul execuiei (n acest moment bucla Pentru s-a executat pn la, inclusiv, valoarea i = k), valoarea gsit pentru varabila min satiface Q, adic min este mai mic sau egal dect orice valoare ai din vectorul iniial. Vom arta nti c R este invariant al buclei. ntr-adevr, dup execuia Pas1 (i nainte de execuia Pas2, adic nainte de prima execuie a corpului buclei Pentru), trebuie ca min s fie cel mai mic element (n sensul ordinii standard pe N) al (sub)secvenei format doar din a1, ceea ce este evident. S presupunem acum c R este satisfcut nainte de cea de-a j-a execuie a corpului buclei i s artm ca el este adevrat i dup aceast execuie. Prin urmare, tim c min conine cea mai mic valoare a secvenei a1, a2, ... , aj-1 i executm corpul buclei (Pas3 i Pas4) pentru i=j. Trebuie artat c n urma acestei execuii variabila min va conine cea mai mic valoare a secvenei a1, a2, ... , aj. Din nou, afirmaia este evident. n concluzie, dup terminarea execuiei buclei, min va conine cea mai mic valoare a secvenei a1, a2, ... , ak. Observaie. Pentru algoritmi mai complicai i care conin cicluri cu un numr necunoscut (aprioric) de pai (de tipul while), s-ar putea s fie nevoie s se utilizeze anumite trucuri tehnice, cum ar fi salvarea variabilelor de intrare n anumite variabile de lucru i considerarea unor predicate invariante mai puternice (adic, afirmaii care s implice Q , nu s coincid cu acesta). Chiar i aa, folosind cunotine elementare de logic clasic, tot trebuie s se tie ce nseamn termeni ca valoare de adevr, teorem direct, contrar, reciproc, raionament, sfer, diferen specific, modus ponens, tertium non datur, model, sistem deductiv, teorie logic etc. Din lips de spaiu indicm doar cteva referiri bibliografice: <2>, <11>, <26>, <36>. Cunoaterea unei teorii generale a structurilor de date ar fi benefic, la fel ca i lucruri despre compilatoare, programare neimperativ, sisteme de operare i medii distribuite, sisteme multimedia etc. Din nou vom apela doar la anumite referine bibliografice: <5>, <6>, <18>, <19>, <20>, <22>, <33>, <40>. Studiul exemplelor din Capitolul 6 i Anexa 1 poate fi de asemenea util.

33

Capitolul 2

n acest capitol vom trata cteva probleme globale ale nvmntului noului mileniu, cu accentul pe actualitatea din Romnia. Strategiile acceptate astzi la nivel naional pot influena ierarhiile i importana utilizrii principiilor, metodelor i obiectivelor didactice. Autorii rmn ndatorai domnului profesor I. Maxim pentru ideile de baz sugerate n construcia acestui capitol, idei expuse n cartea anterioar, comun, menionat. Titlurile seciunilor care urmeaz nu reprezint o chintesen a cursurilor cu acest nume inute sub egida Facultii de Psihologie i tiine ale Educaiei a Universitii (sau a DPPD), ci doar o reflectare a acestora n domeniul Informaticii, cu tenta personal a autorilor.

1. Teoria curriculum-ului

Credem c este necesar o participare activ a fiecrui cadru didactic n ndeplinirea obiectivelor generale ale nvmntului conform ideii c sistemul educaional romnesc trebuie s rspund prompt att la cerinele pedagogice ct i la cele implicnd transformarea societii. Una dintre cele mai importante pri ale acestui sistem este curriculum-ul colar privind coninuturile nvrii. n sensul politicii educaionale, curriculum-ul definete sistemul de procese decizionale, manageriale i de monitorizare care preced, acompaniaz i urmeaz proiectarea, elaborarea, implementarea, evaluarea i revizuirea permanent i dinamic a setului de experiene de nvare oferite de coal (<45>, <46>).

1.1. Curriculum-ul naional n Informatic Curriculum-ul naional (numit i nucleu) cuprinde sistemul documentelor de tip regulator i normativ, n cadrul crora se consemneaz experienele de nvare recomandate elevilor prin coal. Conform acestei accepiuni, curriculum-ul desemneaz ansamblul experienelor de nvare pe care coala l ofer tinerilor, cu scopul de a-i asista n descoperirea i valorificarea maxim a propriilor disponibiliti i interese i, n acelai timp nseamn ceea ce ntreprind elevii n coal sub ndrumarea profesorilor n materie de nvare i dezvoltare personal. Curriculum-ul Naional reprezint ansamblul experienelor de

34

nvare prin care orice instituie colar asigur realizarea idealului educaional i a finalitilor nvmntului. Acesta impune n primul rnd fixarea cadrului de referin ca document regulator nglobnd anumii indicatori care vor asigura coerena (n termeni de procese i produse), a ntregului sistem curricular. Planul-cadru de nvmnt este un document regulator care delimiteaz ariile curriculare, obiectele de studiu i alocarea de timp minim i maxim aferente acestora, pe nivele de nvmnt. Programele colare stabilesc programele analitice, insistndu-se asupra coninutului particular (acestea fiind realizate pe clasele i disciplinele prevzute n planul-cadru). n consecin, exist Metodologii de aplicare ale acestora, reprezintnd ghiduri de implementare, reglementri suplimentare etc. O discuie mai vast asupra Manualelor alternative i asupra curriculum-umui la alegerea colii ar fi benefic dar necesit un spaiu tipografic mult prea mare. Introducerea unui Curriculum Naional a fost nsoit de o serie de concepte noi, att la nivelul documentelor regulatoare ct i la nivelul programelor, acestea fiind prezentate succint (neexhaustiv i, din motive obiective, poate nu n ultima form) n cele ce urmeaz. Trebuie s vorbim mai nti de profilul de formare al unui absolvent. Acesta ar trebui s sintetizeze principalele cunotine, capaciti i atitudini dezirabile obinute la captul parcursului colar obligatoriu, n concordan cu ateptrile societii fa de tnrul absolvent. n termeni operaionali, de la un absolvent de nvmnt obligatoriu se ateapt (<15>, <45>): diverse. zilele. social imediat. profesionale. S contribuie la structurarea i ocrotirea unei viei sociale de calitate. S aplice i s-i valorifice propriile experiene de nvare, n scopul S neleag fenomenele eseniale ale naturii nconjurtoare i ale mediului S rezolve probleme, s ia decizii i s-i exprime opiniile, folosind gndirea S foloseasc n mod eficient tehnologiile relevante pentru viaa de toate critic i creativ. S comunice eficient n situaii reale. S neleag sensul apartenenei la diverse tipuri de comuniti (local, S demonstreze flexibilitate, capacitate de adaptare i de integrare n medii

naional, european, etc.).

dezvoltrii unui ansamblu personal de atitudini i al identificrii viitoarei orientri

35

S-i formeze capacitile i motivaiile proprii nvrii permanente.

Prin ciclu curricular, se exprim un concept bazat pe stadiul de dezvoltare psiho-pedagogic al elevilor i care ofer un set coerent i clar de obiective de nvare, reflectate la nivelul programelor colare. Specificitatea dominantelor curriculare ale fiecrui ciclu n parte este important att pentru proiectarea curriculum-ului, ct i pentru profesori, elevi, prini etc. Curriculum-ul nucleu i Curriculum-ul la decizia colii sunt cele dou segmente principale care concur la formarea Curriculum-ului Naional. Curriculum-ul nucleu este (general) obligatoriu pentru toate colile i toi elevii, reprezentnd segmentul prin care nvmntul public sper s asigure egalitatea anselor. Acesta reprezint unicul sistem de referin pentru examinarea extern admis n sistem i constituie baza standardelor naionale de performan i de evaluare. Curriculum-ul la decizia colii vizeaz zona opional a Curriculum-ului Naional i se concretizeaz prin: Segmentul opional al disciplinelor obligatorii. Disciplinele propriu-zis opionale. descongestionarea materiei; creterea posibilitilor de opiune pentru elevi i profesori; asigurarea parcursurilor individuale de nvare; creterea posibilitilor unitii colare n a-i determina propriul curriculum; posibilitatea utilizrii flexibile a segmentului neobligatoriu din programe n funcie de nevoile locale de educaie i formare; obligativitatea stabilirii unor standarde coerente de performan; obligativitatea formrii resurselor umane (profesori i manageri).

Avantajele acestui mod de abordare a organizrii curriculare sunt:

n continuare, putem spune c ariile curriculare reprezint grupaje de discipline, precum i de domenii i obiecte opionale, fiind neschimbate pe ntreaga durat a colii (segmentului colar). Ponderea lor pe cicluri i clase variaz n timp. n acest sens, obiectele de studiu sunt pri ale ariilor curriculare i pot fi obligatorii sau opionale. Programele colare stabilesc obiectivele i coninuturile propriu-zise ale nvrii la nivelul obiectelor de nvmnt. Acestea regleaz att procesul de predare-nvare ct i realizarea manualelor i altor materiale suport destinate procesului de predare-nvare. Programa colar ar trebui s cuprind, printre altele: modelul curricular al disciplinei; obiectivele cadru ale disciplinei; obiectivele de referin; activitile de nvare recomandate; coninuturile sugerate pentru autorii de manuale; standardele de performan pe ciclu curricular (ciclul achiziiilor

36

fundamentale, ciclul de dezvoltare, ciclul de observare/orientare). Pe baza planului-cadru gndit la nivel naional, este evident c fiecare coal i poate decide propria schem orar, n funcie de proiectul curricular pe care-l realizeaz. Se poate astfel contura personalitatea colii, ntr-o societate care-i propune s respecte i s valorizeze diversitatea, n contextul respectrii standardelor internaionale, ale unei educaii de calitate i acordrii unor anse realmente egale tuturor tinerilor. 1.2. Elaborarea ofertei curriculare

Oferta curricular general este o component a culturii curriculare naionale, o parte integrant a curriculum-ului naional. Proiectarea i elaborarea curriculum-ului nu este apanajul unei elite, un sistem educaional puternic trebuind s fie preocupat de formarea iniial i continu a unui contingent numeros i bine pregtit de cadre didactice capabile de a proiecta i elabora un curriculum. O asemenea ofert trebuie s urmreasc compatibilitatea sistemului de nvmnt (romnesc) cu alte sisteme de nvmnt performante din lume, n acelai timp cu mrirea impactului sistemului de nvmnt asupra reformei societii romneti. Oferta curricular a fiecrei uniti colare este un atu important pentru rezonana colii n microclimatul socio-economic n care s-a integrat. Pornind de la finalitile fiecrui ciclu de pregtire, oferta curricular a unei uniti colare trebuie s in cont de urmtoarele elemente: nivelul de studiu; profilurile i specializrile existente; baza didactico-material; resursele umane; preferinele prinilor i elevilor; specificul local; standardele ocupaionale; contextul socio-cultural etc. Decizia privind modul n care va fi abordat acest segment de curriculum aparine deopotriv ofertanilor (colii, adic profesori, manageri) ct i beneficiarilor (elevi, prini, reprezentani autorizai ai comunitii locale). Curriculum-ul la decizia colii poate fi astfel orientat spre: Curriculum-ul nucleu aprofundat, util n cazul claselor mai slabe. Acesta poate cuprinde numrul maxim permis de ore din plaja orar pentru o atingere integral i efectiv a obiectivelor i coninuturilor din trunchiul comun. Curriculum-ul extins, util n cazul claselor foarte bune. Acesta cuprinde de asemenea numrul maxim de ore din plaja orar, dar n scopul extinderii obiectivelor i coninuturilor din trunchiul comun;

37

Curriculum-ul elaborat n coal, util pentru a exploata resursele i tradiiile locale, sau pentru a ntmpina cerinele i exigenele de instruire ale elevilor (prinilor, comunitii, etc.).

Putem spune c aspectele formative i informative cuprinse n curriculum-ul la dispoziia colii vor constitui obiectul evalurii interne. Didactica pentru nvmntul gimnazial i liceal se refer, n principal, la obiectivele formative (generale) ale studiului informaticii i legturii acesteia cu alte discipline, metodele i mijloacele didactice specifice disciplinei, principiile didactice clasice aplicate n predarea informaticii, planurile de nvmnt, programele colare, manualele colare .a.m.d. Ultimele trei puncte le vom analiza chiar n capitolul de fa. 1.3. Planurile de nvmnt

Planurile cadru precizeaz disciplinele de nvmnt n succesiunea lor pe ani de studiu i tipuri de coli sau nivele. Sunt stabilite, pentru fiecare disciplin n parte, numrul de ore pe sptmn i ani de studiu, precum i numrul de ore de aplicaii practice de laborator, acolo unde este cazul. Acestea au un caracter unic i obligatoriu pentru fiecare stadiu de pregtire sau tip de coal, cuprinznd obiectele de studiu din fiecare clas (perioad de studiu). ntr-un moment de reorganizare a mecanismului de achiziii de cunoatine, conceperea unui curriculum este o ntreprindere greu de realizat innd cont de faptul c se impune renunarea la lucruri depite dar i pstrarea unor soluii viabile. La baza elaborrii planurilor cadru stau urmtoarele principii (atenie, nu este vorba despre principiile didactice, care vor fi discutate n Capitolul 3): a) Principiul seleciei culturale (alegerea domeniilor cunoaterii i gruparea lor n arii curriculare), care vizeaz armonizarea dintre particularitile personalitii elevului, aptitudinile i interesele sale personale (exprimate prin opiunea pentru o anumit filier i specializare), diversitatea domeniilor cunoaterii, sau perenitatea componentelor de baz ale personalitii i a valorilor asociate acestora, proprii unei societi democratice. b) Principiul coerenei. Acesta vizeaz caracterul omogen i echilibrat al parcursului colar, avnd n vedere integrarea vertical i orizontal a ariilor curriculare n cadrul fiecrei filiere, profil i specializare, exprimat n raporturile procentuale ntre ariile curriculare i disciplinele de studiu.

38

c) Principiul funcionalitii presupune organizarea parcursului colar pe cicluri curriculare, care s respecte caracteristicile de vrst, interesele i motivaiile elevilor. Acest principiu, coroborat cu strategiile de organizare intern a curriculum-ului, a determinat structurarea procesului de nvare pe cicluri curriculare (periodizri ale colaritii), care se suprapun peste structura sistemului de nvmnt, cu scopul de a focaliza obiectivele majore ale fiecrei etape colare i de a regla prin modificri curriculare procesul de nvmnt. Ciclurile curriculare asigur continuitatea n momentul trecerii de la o treapt de colarizare la alta prin conexiuni explicite la nivelul curriculum-ului, corelarea structurii curriculare cu vrsta psihologic, transferul de metode i procedee didactice. d) Principiul egalizrii anselor, care vizeaz oferta de oportuniti echivalente de continuare a colarizrii n condiiile unor parcursuri colare difereniate. Acest principiu solicit un raport adecvat ntre trunchiul comun i disciplinele la decizia colii. e) Principiul flexibilitii parcursurilor individuale, este concretizat prin oferta de pachete opionale, la nivel central sau local pentru fiecare arie curricular. Noul curriculum face loc opiunilor elevilor, permite o real instruire multidisciplinar, o interdisciplinaritate efectiv n abordarea coninuturilor, orientnd formarea elevilor n direcia celor patru capaciti de baz ale viitorului specialist n informatic, dintre care pot fi amintite: formarea gndirii algoritmice (capacitatea de abordare sistemic a problemelor); capacitatea de abstractizare; capacitatea de comunicare imediat i eficient; capacitatea de exploatare a facilitilor oferite de tehnologiile informaionale moderne. Descentralizarea curricular ncurajeaz parcursurile individuale de nvare i spulber mitul obligativitii i uniformitii parcurgerii coninuturilor, oferind cadrelor didactice o flexibilitate de decizie i aciune. n acest sens, organizarea planului de nvmnt pentru gimnaziu ca un plan cadru, cu arii curriculare coninnd un trunchi comun (discipline i ore comune pentru toi elevii) i un curriculum la dispoziia colii (cu parcursuri difereniate n funcie de resursele unitii colare), au plasat cumva disciplinele de informatic ntr-o postur mai marginalizat. 1.4. Programele colare (analitice, curriculare)

39

Programele colare au trecut printr-un proces complex de elaborare i revizuire n viziune curricular, presupunnd o reproiectare interactiv a obiectivelor, coninuturilor, activitilor de nvare i a principiilor i metodelor de evaluare. Programele colare (analitice) stabilesc coninutul disciplinelor (de informatic), pentru fiecare an de studiu i materie, pe nivele, filiere, profiluri i specializri, precum i pe forme de nvmnt. Acestea precizeaz ce cunotine, priceperi, deprinderi trebuie s-i nsueasc elevii n anul de studiu respectiv i care este succesiunea n care trebuiesc dobndite acestea. Programele sunt elaborate de ctre Comisia de specialitate a MECT, sub coordonarea Consiliului Naional pentru Curriculum (CNC), din care fac parte cadre didactice cu experien din nvmntul universitar, profesori de liceu cu rezultate deosebite n activitatea de la catedr, inspectori colari din inspectoratele judeene i ai MECT, psihopedagogi i cercettori din Institutul de tiine ale Educaiei (ISE). Realizate n concordan cu noile planuri cadru, urmrind o descongestionare raional a coninuturilor, actualele programe colare reprezint o adevrat revoluie didactic n ceea ce privete conceptele de formare a competenelor de nivel superior, de nvare n clas, de studiu n grup, de nvare asistat de calculator, de autodocumentare etc. O program colar adecvat este rezultatul unui exerciiu colectiv, desfurat sub semnul unui profesionalism specific, dar nu exclude inovaia curricular local, la nivelul individului sau colectivului didactic. Este imperios necesar parcurgerea urmtoarelor etape: elaborarea individual (propuneri de program), care se face de ctre colectivele de catedr ale unitilor de nvmnt sau de ctre cadrele didactice, individual; analiza propunerilor i elaborarea colectiv; aceasta presupune stabilirea formei finale a unei propuneri de program de ctre echipe de lucru, stabilite, de regul, de ctre Comisia de specialitate a MECT; prezentarea i argumentarea n faa Comisiei de specialitate a MECT a formei stabilite de ctre echipele de lucru. Dup o perioad de cteva sptmni, rgaz n care fiecare membru analizeaz programa rezervat subcomisiei din care face parte, aceasta este rediscutat i i se aplic modificrile necesare. Programele astfel finalizate sunt supuse aprobrii CNC. Elaborarea programelor colare trebuie s ndeplineasc anumite cerine de ordin tiinific, psihologic, didactic i metodic. Programa colar pentru un obiect de studiu trebuie s conin mcar: O not informativ cu privire la scopurile i obiectivele predrii, indicaii relative la ordonarea materiei i repartizarea orelor pe capitole, subcapitole, teme .a.m.d.

40

ndrumri cu privire la folosirea manualelor, materialului bibliografic etc. Materia de predat, detaliat i prezentat n succesiunea abordrii ei, numrul Modaliti de folosire a manualelor i a materialului documentar

de ore afectat lucrrilor scrise, recapitulrilor, evalurii, ore la dispoziia profesorului .a.m.d. complementar (culegeri de probleme, documentaii de firm, manuale de utilizare .a.m.d.). Programa actual nu prevede un numr fix de ore pentru fiecare tem n parte aceasta fiind lsat la aprecierea profesorului, n funcie de particularitile claselor i de condiiile specifice de predare. Preocuprile privind elaborarea programelor colare pentru disciplinele de Informatic sunt ndreptate spre mbuntirea programelor n sensul punerii de acord a coninuturilor cu cerinele sociale. Astfel, se dorete s se realizeze o pregtire a elevilor n direcia satisfacerii cerinelor necesare integrrii rapide a absolvenilor n activitatea economic. Dinamica coninuturilor este o cerin esenial pentru programa colar a disciplinelor de informatic, necesar meninerii pasului cu progresele realizate n domeniu. Trebuie s remarcm i faptul c exist o tendin (cu efecte nu tocmai benefice dup opinia noastr) de realizare a unei programe la un nivel tiinific foarte ridicat. Nu trebuie scpat din vedere nici un moment faptul c o program colar, conceput i aprobat, este obligatorie pentru toi elevii, iar acetia nu sunt toi foarte dotai i motivai. Elaborarea curriculum-ului este ns un proces continuu, care marcheaz perioade de schimbri profunde, dar care intete ndelungi perioade de stabilitate. Noul curriculum i propune s realizeze stabilitatea printrun echilibru ntre componenta naional (care vizeaz trunchiul comun) i componenta local (care vizeaz oferta curricular a colii). Elaborarea curriculum-ului local devine astfel o component esenial a activitii didactice, o rezultant a eforturilor reunite a conducerii colii, cadrelor didactice, elevilor, prinilor precum i a altor parteneri sociali viabili.

2. Teoria instruirii
Vom ncepe aceast seciune cu o luare de atitudine asupra unei probleme suficient de controversate. 2.1. Manualele colare

Crearea pieei libere a manualelor colare i trecerea de la manualul unic la cel alternativ a nsemnat un pas nainte prin nlturarea unei politici de monopol. Dezideratul

41

realizrii a (cel puin) trei manuale alternative la fiecare disciplin este o intenie de a atinge un standard minim de diversitate i calitate. Manualul colar reprezint mijlocul didactic de baz folosit n procesul de nvmnt, este profesorul la purttor al elevului i principalul material bibliografic al acestuia (dei n Informatic lucrurile nu stau ntotdeauna tocmai aa). Manualul exemplific (printre altele) detaliat coninutul programelor colare, funcia lui principal fiind desigur aceea de informare a elevului, mijlocul su principal de documentare. Autorii de manuale trebuie s in seama c acesta ar trebui nu numai s-l ajute pe elev s nvee (Informatic), ci i s-l obinuiasc cu munca/studiul individual. Manualul trebuie s ndrume elevul spre o gndire independent i s-l determine la continuarea efortului creator. Trebuie n acelai timp s nu-l inhibe, sau s-l orienteze (voit sau nu) n anumite direcii. Desigur c o mare parte dintre funciile manualului pot fi preluate n nvmntul de Informatic de ctre calculator. Acesta poate fi privit i ca manual i ca profesor, exercitndui att funcia de comunicare de cunotine ct i cea de verificare, dar nu nc n mod exhaustiv i pe aceea de evaluare permanent a gradului (relativ) de acumulare a cunotinelor. Dac discutm despre documentaiile de firm, opinm c acestea nu se ridic (i nici nu trebuie) la nivelul didactic al manualelor colare, rolul lor fiind pur informativ i destinat nu neaprat specialitilor sau viitorilor cunosctori. Tehnicile de nvare i evaluare a nivelului atins, corectarea deprinderilor i completarea cunotinelor (simultan cu descoperirea lipsurilor), nu le poate realiza dect profesorul. Manualul are nc un rol deosebit i anume acela de msur a gradului de profunzime n abordarea noiunilor, precum i a domeniului ca atare. El ne poate indica pn la ce grad de complexitate i de detaliu trebuie ntreprins demersul didactic. Apariia manualelor alternative scoate n eviden, odat n plus, diversitatea punctelor de vedere n aceast privin. Rolul manualului ca mijloc de comunicare de cunotine se diminueaz continuu n nvmntul modern, locul lui fiind luat de alte mijloace didactice, mai eficiente, mai atractive: mijloacele audiovizuale specifice Informaticii, calculatoarele cu echipamente periferice speciale, sisteme multi-media, utilizarea unor suporturi de mare capacitate i cu posibiliti rapide de acces i de (re)gsire a informaiei (casete audio-video, CD-uri, DVD-uri, teletextul, INTERNET-ul, telefonia mobil etc.). Credem c profesorul i manualul, ca surse didactice consacrate, nu pot fi dect parial nlocuite. Toate mijloacele anterior enumerate sunt doar auxiliari mai mult sau mai puin eficieni, n funcie de domeniul i disciplina abordat. Transformrile societii romneti din ultimii ani, dezvoltarea i rspndirea Informaticii, impun o pregtire diversificat a tinerilor n acest domeniu. Disciplina Informatic, din cadrul profilului Matematic-Informatic trebuie astfel s asigure dobndirea unor cunotine de informatic la nivel de cultur

42

general, necesare continurii studiului i a unor cunotine cu caracter aplicativ utile n societatea n care vor tri. n cadrul acestui profil sunt n general prevzute (la disciplina Tehnologia Informaiei, din cadrul trunchiului comun), 2, 3, 4, respectiv 4 ore (n clasele a IX-a, a X-a, a XI-a, respectiv a XII-a). Pornind de la faptul c nu exist domeniu de activitate unde s nu se prelucreze i s nu se transmit informaii att n cadrul domeniului respectiv ct i spre exteriorul lui, informaia este foarte preioas, ea trebuie stocat, prelucrat i transmis n condiii care s asigure corectitudine i exactitate, adic la un nivel profesional. Indiferent de profesia pe care o va alege un tnr, cu siguran va avea nevoie de cunoaterea modului de utilizare a unui instrumentar informatic. Volumul cunotinelor i deprinderilor necesare va depinde desigur de domeniu, de exigenele i cerinele concrete. Este ns o nevoie stringent de iniierea tinerilor din toate colile n utilizarea calculatoarelor la un nivel profesional, pe care l numim azi, doar, nivel de cultur general. Dezvoltarea gndirii algoritmice este un prim obiectiv la realizarea cruia Informatica contribuie esenial i eficient. Asemenea Matematicii, Informatica dezvolt gndirea (raionamentul) care n coal, dar i n viaa de zi cu zi, are un rol esenial n procesul de nvare, n formarea caracterului i a personalitii. Aceasta nu se leag doar de cunotinele de programare, ci i (aa cum am menionat deja) de cunotinele referitoare la gestionarea bazelor de date, la utilizarea editoarelor de texte etc. Informatica, prin specificul ei, este esenial legat de lucrul individual cu un calculator i contribuie la dezvoltarea deprinderii de a lucra individual. Pe de alt parte, prin intermediul reelelor de calculatoare este posibil un schimb de informaii mult mai eficient dect prin orice alt metod clasic. Educarea elevilor n spiritul unei activiti desfurate n grup, n colaborare, se finalizeaz prin predarea Informaticii orientat pe proiecte. Realizarea unor aplicaii complexe impune lucrul n grup, modularizarea programului i pstrarea contactelor cu ceilali membri ai grupului. n coal se pot crea condiii similare lucrului din viaa real unde activitile nu se desfoar izolat. Aplicaiile, proiectele, dar i producia propriu-zis sunt ntreptrunse cu o serie de faze de lucru n care calculatorul este un instrument de nenlocuit. Obinuirea elevilor cu responsabiliti privind finalizarea propriei munci i asigurarea nlnuirii unor elemente realizate n paralel, i va pregti pentru o activitate pe care cu siguran o vor ntlni n viitor. Educarea elevilor pentru realizarea unor produse utilizabile, dezvoltarea spiritului inventiv i creator, apare ca un obiectiv impus de sistemul economic n care trim. Indiferent de coninutul aplicaiei, ceea ce realizeaz elevul, trebuie s funcioneze, trebuie s fie utilizabil. Altfel spus, trebuie s aib toate calitile unui produs comercial. Datorit implicaiei pe care Informatica o are azi n toate profesiunile, rezult caracterul ei

43

interdisciplinar. Informatica nu poate fi privit numai ca o disciplin independent i nu poate fi inut ntre bariere create artificial. n diverse domenii de activitate, rezolvarea problemelor concrete impune foarte des o faz de modelare. Informatica este printre puinele discipline care ofer instrumentar adecvat pentru nvarea modelrii. De asemenea, Informatica pune la dispoziie cele mai spectaculoase posibiliti de simulare virtual care este o parte a modelrii (neclasic i necostisitoare). Elevii trebuie s neleag conexiunile dintre Informatic i societate i s fie capabili s se adapteze dinamicii schimbrilor determinate de aceste conexiuni. Prezentm n continuare o comparaie ntre caracteristicile curriculum-ului anterior i cele ale curriculum-ului actual. Curriculum-ul anterior: A fost centrat pe coninuturi. Formularea obiectivelor viza n mod direct atestarea profesional a absolventului. Coninuturile nvrii erau aceleai pentru toi elevii. Absena cooperrii ntre elevi n realizarea unei aplicaii era o regul. Existau coninuturi didactice fixe, neadaptabile la resursele locale. Centrarea pe raionalizarea activitilor de nvare, n funcie de obiectivele cadru i de obiectivele de referin. Formularea obiectivelor este realizat n termeni de competene i de capaciti individuale. Curriculum-ul la decizia colii ofer o palet larg de activiti prin care elevul i poate acoperi sfera proprie de interese. Se permite ncurajarea cooperrii ntre elevi prin activiti de grup cu asumarea de roluri individuale pentru realizarea unei aplicaii. Coninuturile sunt adaptabile la resursele locale.

Curriculum-ul actual permite:

n cele de mai jos prezentm doar o parte (nu neaprat actualizat) a ceea ce exist i a ceea ce se dorete a se ntmpla n anii urmtori. Pentru informaii suplimentare i puneri la zi se pot consulta adresele: http://cnc.ise.ro, http://www.edu.ro/pinf.html, http://www.coe.int/, http://www.edu.ro/ptehinf.html, http://www.edu.ro/download/strategiepreuniv.pdf,

44

Organizarea pe ani de studiu a disciplinei Informatic: An de studiu Trunchiul comun 1 or curs Algoritmi elemente limbaje programare Curriculum la decizia colii

Clasa a IX-a

(Propuneri) 1 or laborator 2 ore laborator i Sisteme de operare Programare avansat de i aplicaii de Limbaj de programare concret Limbaj de asamblare concret Tehnoredactare (Word, Latex) Foi de calcul HTML Grafic pe calculator Sisteme de operare Aplicaii multimedia Programare avansat Limbaj de programare concret Limbaj de asamblare concret Tehnoredactare (Word, Latex) Foi de calcul HTML Grafic pe calculator Sisteme de operare Aplicaii multimedia Programare orientat pe obiecte Programare avansat Limbaj de asamblare Tehnoredactare Foi de calcul HTML Grafic pe calculator Sisteme de operare Aplicaii multimedia Programare orientat pe obiecte Teoria grafurilor de programare

Clasa a X-a

Metode i tehnici Programare de programare modular Recursivitate Metoda Backtracking

Clasa a XI-a

Teoria grafurilor

Alocare dinamic Aplicaii cu grafuri i arbori

elementare Limbaj de programare

45

Reele de calculatoare Programare pe INTERNET Clasa a XII-a Baze de date Proiectarea ntreinerea de date Aplicaii de proiectare i Programare avansat bazelor Limbaj de programare Limbaj de asamblare Tehnoredactare Foi de calcul HTML Grafic pe calculator Sisteme de operare Aplicaii multimedia Programare pe obiecte Teoria grafurilor Reele de calculatoare Programare pe Internet Aplicaii de proiectare Baze de date Criptografie Analiz numeric Metodologia de aplicare a programei pentru disciplina Informatic trebuie s in cont de faptul c studiul Informaticii la profilul Matematic-Informatic are att un caracter teoretic ct i practic fiind organizat dup cum urmeaz: n trunchiul comun, din totalul de (dou) ore aprobate, o or cu caracter teoretic se poate desfura n clas sau laborator cu ntreg colectivul clasei, iar cea de a doua or cu caracter practic se va desfura n laboratoarele de informatic, pe grupe de 10-15 elevi, fiecare grup fiind asistat de un profesor; n curriculum-ul la decizia colii cele dou ore se vor organiza n laborator pe grupe de 10-15 elevi fiecare grup fiind asistat de unul sau doi profesori n funcie de specificul modulului ales (de exemplu, modulul de Grafic pe calculator poate fi predat de o echip format dintr-un profesor de desen i unul de specialitate).

46

Profilul Matematic-Informatic poate funciona n licee care dispun de minim un laborator de Informatic dotat corespunztor. Numrul de laboratoare trebuie s asigure acoperirea orelor de laborator solicitate att de trunchiul comun ct i de curriculum-ul la decizia colii. Programa pentru disciplina Informatic, profilul Matematic-Informatic, este orientat pe obiective, profesorul avnd posibilitatea de a alege activitile specifice atingerii acestora. Coninutul nvrii pentru curriculum-ul obligatoriu este conceput astfel nct s asigure un bagaj minim de cunotine i deprinderi din domeniul informaticii n timp ce curriculum-ul la decizia colii poate oferi module derivate din materia studiat, teme care nu sunt incluse n programa de trunchi comun sau teme integratoare pentru arii curriculare cu aplicabilitate n Informatic. Extensiile de program marcate cu * pot fi abordate n orele din trunchiul comun sau n curriculum-ul la decizia colii n funcie de nivelul elevilor i de dotarea existent. Ceea ce urmeaz sunt doar exemplificri (deduse din indicaiile MECT). OBIECTIVE CADRU (pentru modulul Informatic) 1. Dezvoltarea deprinderilor de utilizare a unui sistem de calcul i a unor produse soft de larg rspndire. 2. Dezvoltarea gndirii algoritmice, a spiritului inventiv i creator. 3. Dezvoltarea deprinderilor necesare activitilor individuale i n echip. 4. Contientizarea conexiunilor dintre Informatic i societate.

INFORMATIC Clasa a IX-a A. Obiective de referin i exemple de activiti de nvare Dezvoltarea deprinderilor de utilizare ale unui sistem de calcul i ale unor produse soft de larg rspndire Obiective de referin 1. S cunoasc componentele unui calculator i rolul lor.

47

2. S cunoasc modul de utilizare a unui calculator. 3. S defineasc noiunea de sistem de operare i funciile lui. 4. S cunoasc elementele de interfa dintre sistemul de operare i utilizator. 5. S utilizeze un program de asisten a sistemului de operare studiat (ex. Norton Commander, File Manager, Explorer, etc.) 6. S cunoasc i s foloseasc accesoriile sistemului de operare. 7. S creeze documente simple cu ajutorul unui editor de text. 8. S creeze imagini simple cu ajutorul unui editor de imagini. Exemple de activiti de nvare 1. Prezentarea structurii unui sistem de calcul. 2. Explicarea funciilor unui sistem de calcul. 3. Explorarea resurselor fizice i logice ale unui sistem de calcul. 4. Clasificarea componentelor fizice i logice n funcie de rolul lor. 5. Explicarea funcionrii diferitelor componente hard i soft. 6. Exerciii de utilizare a tastaturii i mouse-lui. 7. Utilizarea unui calculator (ca sistem independent sau n reea). 8. nvarea unor comenzi necesare deschiderii/nchiderii sesiunii de lucru. 9. Prezentarea noiunii de sistem de operare, a funciilor lui i a rolului acestuia n funcionarea calculatoarelor. 10. Prezentarea modului de organizare a datelor pe suport magnetic i a principalelor operaii asupra fiierelor i directoarelor. 11. Prezentarea elementelor de interfa dintre sistemul de operare i utilizator i folosirea Help-ului pentru autoinstruire. 12. Prezentarea facilitilor oferite de programele de asisten a sistemului de operare; 13. Exemplificarea i exersarea modului de utilizare a unui program de asisten a sistemului de operare. 14. Prezentarea accesoriilor sistemului de operare. 15. Prezentarea editorului de text ales. 16. Redactarea documentelor tip scrisoare, cerere, adeverin, curriculum vitae etc. 17. Prezentarea editorului de imagini ales. 18. Combinarea elementelor de text i a imaginilor n acelai document.

48

Dezvoltarea gndirii algoritmice, a spiritului inventiv i creator Obiective de referin 1. S descrie n termeni algoritmici anumite activiti. 2. S analizeze enunul unei probleme (s identifice datele de intrare i datele de ieire. S aleag tipul datelor, s descopere relaiile existente ntre date). 3. S reprezinte un algoritm cu ajutorul schemelor logice i/sau pseudocodului. 4. S respecte principiile programrii structurate n procesul de elaborare a algoritmilor. 5. S utilizeze un mediu de programare (Pascal sau C). 6. S implementeze algoritmii reprezentai prin scheme logice i/sau pseudocod n limbaj de programare. 7. S prelucreze date structurate la nivel de componente i la nivel de structur. 8. S lucreze cu fiiere text. Exemple de activiti de nvare 1. Discuii despre activiti cotidiene i modelarea acestora sub forma unei secvene bine definite de pai. 2. Combinarea unor activiti elementare (pai) pentru obinerea anumitor activiti complexe n funcie de scopul propus. 3. Explicarea conceptului de algoritm i a caracteristicilor algoritmilor. 4. Explicarea diferenei existente ntre informaii care se materializeaz n date concrete i cele care determin calea de rezolvare a unei probleme. 5. Descrierea unui algoritm n limbaj natural. 6. Prezentarea obiectelor cu care opereaz algoritmii (date, variabile, operaii, expresii). 7. Descompunerea datelor n date de intrare i de ieire (eventual, de lucru). 8. Descrierea etapelor rezolvrii unei probleme din punct de vedere algoritmic. 9. Prezentarea elementelor constitutive ale unei scheme logice i a funciilor asociate lor. 10. Prezentarea vocabularului legat de pseudocod i scheme logice. 11. Exersarea descrierii acestora cu ajutorul schemelor logice i n pseudocod. 12. Prezentarea structurilor de baz: structura liniar (secvena), alternativ i repetitiv. 13. Exersarea scrierii unor algoritmi simpli, folosind structuri lineare, alternative i repetitive. 14. Prezentarea mediului de programare (faciliti de editare, de compilare i de rulare).

49

15. Familiarizarea elevului cu noiunea de limbaj de programare i cu modalitatea de descriere a acestuia (diagram de sintax sau metalimbaj). 16. Prezentarea i exemplificarea elementelor de baz ale limbajului de programare. 17. Activiti de dezvoltare a deprinderilor de abstractizare i organizare a informaiilor n diverse structuri de date. 18. Utilizarea intrrii i ieirii standard. 19. Exersarea scrierii unor programe simple. 20. Codificarea structurilor de control nvate (structura liniar; instruciunile de atribuire i instruciunile compuse; structura alternativ; structura repetitiv). 21. Exerciii de transpunere a pailor unui algoritm n structuri de control specifice. 22. Proiectarea/modelarea unui algoritm i implementarea acestuia. 23. Folosirea facilitilor mediului n depanarea programelor. 24. Prezentarea structurilor de date standard. 25. Exerciii ce dezvolt deprinderile de abstractizare, necesare definirii, crerii i descrierii unor structuri statice de date. 26. Implementarea structurilor de tip tablou, nregistrare etc. 27. Exerciii de prelucrare a datelor pe suport extern, n fiiere text. 28. Exerciii de manipulare a fiierelor text. 29. Evidenierea analogiilor i diferenelor ntre citirea/scrierea utiliznd dispozitivele standard de intrare/ieire i fiiere text. Dezvoltarea deprinderilor necesare activitilor individuale i de echip Obiective de referin 1. S participe la munca n echip i s execute n cadrul grupei sarcinile ce i revin n funcie de aptitudinile individuale. 2. S participe activ la dezbateri, s respecte prerea celorlali, s asculte cu rbdare i s exprime propriile preri argumentate. 3. S finalizeze individual sau n echip o aplicaie. Exemple de activiti de nvare 1. Identificarea coninuturilor activitii ce urmeaz s se desfoare.

50

2. Dezbateri pe tema fixrii rolurilor n echip n funcie de interesele i aptitudinile individuale. 3. Formularea unor probleme care s poat fi realizate n grupuri de elevi pe baza unor discuii preliminare i analizarea problemei. 4. Discuii de abordare a problemelor care apar pe parcursul desfurrii activitilor. 5. Verificarea nelegerii rezolvrii unei probleme n ansamblul ei de ctre toi membrii grupului. 6. Prezentarea i dezbaterea aplicaiilor realizate. 7. ncurajarea discuiilor purtate ntre elevi, exprimarea i ascultarea prerilor fiecruia. 8. Educarea elevilor n ideea c activitatea unui informatician se finalizeaz cu un produs care trebuie s funcioneze conform condiiilor impuse de beneficiar, s fie nsoit de o documentaie, s fie verificat, testat i evaluat dup nite criterii standardizate. 9. Discuii cu elevii asupra necesitii validrii datelor. 10. Evidenierea importanei realizrii unor produse program fiabile, cu interfa prietenoas. Contientizarea conexiunilor dintre Informatic i societate Obiective de referin 1. S cunoasc impactul social, economic, etic i moral al Informaticii. 2. S identifice probleme din cadrul altor discipline n care intervin cunotine de programare sau de utilizare a calculatorului. 3. S cunoasc legislaia n vigoare cu privire la dreptul de autor al produselor soft i la msurile de protecie a datelor. 4. S perceap interdependena ntre dezvoltarea instrumentelor de calcul, respectiv a conceptelor informaticii i nevoile societii, prin perspectiva istoriei. Exemple de activiti de nvare 1. Discutarea impactului social, economic, etic i moral al Informaticii. 2. Enumerarea unor domenii n care sunt folosite instrumente informatice. 3. Lansarea n execuie a unor aplicaii specifice altor discipline. 4. Implementarea unor algoritmi simpli cu aplicaii n matematic, fizic etc.

51

5. *Discutarea articolelor incluse n legea copyright-ului i a semnificaiilor acestora. 6. *Cunoaterea prevederilor legale cu privire la accesarea neautorizat sau distrugerea intenionat (virusarea) datelor. 7. *Lecii despre evoluia instrumentelor de calcul, despre inventatori i informaticieni celebri.

B. Coninuturile nvrii Vom exemplifica acest lucru tot la nivel general, conform indicaiilor M.E.C.T. acceptate n acest moment. Toate acestea pot fi comparate cu cerinele discutate n Prefa i Introducere, fiind oricum foarte perisabile n timp. 1. Rolul i funciile sistemelor de calcul 1.1. Structura unui sistem de calcul. 1.2. Funciile unui sistem de calcul. 1.3. Msuri de protecie a muncii n timpul lucrului cu calculatorul. 2. Principalele funcii ale unui sistem de operare (Ms-Dos, Windows, Unix) 2.1. 2.2. SO). 2.3. 2.4. 2.5. 2.6. etc.). 2.7. 3. Algoritmi 3.1. 3.2. 3.3. Enunul unei probleme, date de intrare i de ieire, etapele rezolvrii unei probleme. Noiunea de algoritm, caracteristici. Obiectele cu care lucreaz algoritmii (date, variabile, expresii, operaii). Utilizare sistem (scandisk, arhivatoare, programe antivirus). Programe de asisten (Norton Comander, File Manager/Windows Explorer, WinSCP, etc.). Editoare de texte ( Edit, Notepad, Wordpad etc.). Editoare de imagini (Art Studio, Paint, AdobePhotoShop), formate de imagini. Accesorii de sistem (agend, calculator, set de caractere, elemente multimedia Concepte de baz i caracteristici generale ale unui sistem de operare (SO) Elemente de interfa (elemente specifice de comunicare dintre utilizator i

4. Principiile programrii structurate

52

4.1.

Structuri de baz; descrierea acestora cu ajutorul schemelor logice i n pseudocod.

4.2. Aplicaii. 4.2.1. Probleme care prelucreaz date numerice. 4.2.2. Probleme care prelucreaz date nenumerice. 5. Elementele de baz ale limbajului de programare 5.1. Noiuni introductive. 5.1.1. Structura programelor. 5.1.2. Descrierea sintaxei cu ajutorul diagramelor de sintax. 5.2. Vocabularul limbajului. 5.2.1. Setul de caractere. 5.2.2. Identificatori. 5.2.2. Separatori i comentarii. 5.3. Tipuri simple de date (standard). 5.4. Constante. 5.5. Variabile. 5.6. Expresii. 5.7. Citirea/scrierea tabelelor. 6. Structuri de control 6.1. Structura liniar (secvenial); instruciunile de atribuire i instruciunea compus. 6.2. Structura alternativ; instruciuni de decizie i selecie. 6.3. Structuri repetitive; instruciuni repetitive. 7. Mediul limbajului de programare studiat 7.1. Prezentare general. 7.2. Editarea programelor surs. 7.3. Compilare, rulare, *depanare. 8. Tipuri structurate de date 8.1. Tablouri. 8.2. iruri de caractere. 8.3. Tipul nregistrare. 8.4. *Alte tipuri specifice limbajului. 9. Fiiere 9.1. Tipul fiier (definire, operaii). 9.2. Fiiere text.

53

10. Aplicaii practice 10.1. Etape n realizarea unei aplicaii. 10.2. Cerine n realizarea programelor. 10.2.1. Interfa prietenoas. 10.2.2. Protecie la date incorecte. 10.2.3. Criterii de optimalitate. 10.3.Exemple de aplicaii. 10.3.1. Determinare minim/maxim. 10.3.2. Probleme de divizibilitate. 10.3.3. Sortare. 10.3.4. Cutare. 10.3.5. Probleme de prelucrare a datelor din fiiere text. 10.3.6. Prelucrri de iruri de caractere. Putem trece la prezentarea pe scurt a celuilalt modul important, evident tot pe un exemplu concret. OBIECTIVE CADRU (pentru modulul Tehnologia Informaiei) 1. Utilizarea surselor informaionale i a mijloacelor de procesare n scopul prelurii, prelucrrii i prezentrii informaiei 2. nelegerea dezvoltrii tehnicii i a implicaiilor tehnologiei informaiei asupra mediului i societii 3. Valorificarea termenilor de specialitate n comunicare 4. Dezvoltarea capacitii de cooperare n scopul realizrii unei aplicaii

Clasa a VIII-a A. Obiectivele de referin i exemple de activiti de nvare Utilizarea surselor informaionale i a mijloacelor de procesare n scopul prelurii, prelucrrii i prezentrii informaiei

54

Obiective de referin 1. S comunice ideile n forme ct mai variate. 2. S neleag nevoia de a ntreba i s contientizeze rolul factorului uman n obinerea unor informaii corecte. 3. S identifice mijloacele tehnice de preluare, prelucrare i transmitere a informaiei * i s descrie modul de utilizare a acestora. 4. S clasifice i s pregteasc informaia n vederea prelucrrii ei i s disting diferitele caliti ale datelor n procesul de prelucrare. 5. S aleag cele mai potrivite ci i aplicaii pentru obinerea i/sau transmiterea datelor. 6. S pun n eviden operaii specifice procesului prelucrrii manuale de date. modern. 8. S dea dovad de sim practic, etic i estetic n abordarea unor aplicaii. 7. 7. S identifice oportunitatea recurgerii la prelucrri automate realizate cu tehnologie

Exemple de activiti de nvare 1. Prezentarea informaiei prin diversele moduri de reprezentare (text, imagine, grafic, sunet, coduri numerice etc.). 2. Antrenarea elevilor n discuii care s se finalizeze cu identificarea ct mai multor forme de reprezentare a informaiilor. 3. Selectarea elementelor necesare realizrii unui anumit obiectiv avnd n vedere urmrile posibilelor erori. 4. Prezentarea mijloacelor tehnice de preluare, prelucrare i transmitere a informaiei (telefon, copiator, aparate de fotografiat, televizor etc.). 5. Familiarizarea cu modul de utilizare a aparatelor de tehnologie modern, identificarea modului n care acestea influeneaz viaa. 6. Diverse exemplificri de prelucrare a datelor n care s se evidenieze diferena dintre datele de intrare i cele de ieire - date care urmeaz s fie prelucrate, date rezultate din procesul de prelucrare (sondaje de opinie, chestionare, tabele, grafice, sinteze etc.). 7. Interpretarea, analiza i afiarea informaiei verificnd totodat corectitudinea i plauzibilitatea ei. 8. Realizarea unor prelucrri manuale de date urmrind finalitile, formele i etapele fiecrei aplicaii.

55

9. Exemplificarea unor aplicaii care, n lipsa echipamentelor tehnologice, nu s-ar putea realiza la nivelul cerinelor actuale. 10. Compararea diferitelor produse (texte, desene) realizate de elevi n funcie de forma i coninutul acestora. nelegerea dezvoltrii tehnicii i a implicaiilor tehnologiei informaiei asupra mediului i societii Obiective de referin 1. S prezinte i s explice semnificaia informaiei n societate. 2. S cunoasc impactul social, economic, etic i moral al utilizrii tehnologiei informaiei. 3. S interpreteze efectele inovaiilor i ale descoperirilor din domeniul tehnologiei informaiei (ca avantaje i dezavantaje). 4. S enumere domeniile de cunotine din cadrul altor discipline n care se pot utiliza instrumente de tehnologia informaiei. 5. S utilizeze instrumentele tehnologiei informaiei i comunicrii (editare de text, comunicare prin pota electronic, etc.). 6. S foloseasc instrumentele ajuttoare pe parcursul elaborrii temelor de lucru individuale. 7. S cunoasc legislaia n vigoare cu privire la dreptul de autor al produselor soft i la msurile de protecie a datelor. 8. S cunoasc istoricul instrumentelor informatice i a Informaticii ca tiin. Exemple de activiti de nvare 1. Discuii purtate pe teme care contientizeaz noiunea de informaie pe baz de exemple din viaa elevilor. 2. Exemplificarea contextelor sociale n care informaia contribuie la ameliorarea standardelor, luarea deciziilor etc. 3. Punerea n eviden a unor situaii practice n care informaiile trebuie stocate n vederea prelucrrii, modalitile de pstrare necesitnd reprezentarea acestora sub o form concret.

56

4. Selectarea elementelor necesare realizrii unui anumit obiectiv avnd n vedere urmrile posibilelor erori. 5. Discutarea impactului social, economic, etic i moral al utilizrii tehnologiei informaiei; 6. enumerarea unor domenii n care sunt folosite instrumente de tehnologia informaiei; 7. studiu de caz, investigaie pentru sesizarea aspectului calitativ al muncii de prelucrare automat a datelor. 8. Discuii privind avantajele i dezavantajele care apar ca urmare a utilizrii tehnologiei informaiei. 9. Exerciii de identificare a oportunitii utilizrii tehnologiei informaiei pentru mbogirea cunotinelor i mrirea eficienei activitilor ntlnite n cadrul altor discipline. 10. Redactarea unei scrisori, expedierea ei prin pota electronic. 11. Utilizarea editorului de text, a foilor de calcul, a aplicaiilor tip baze de date, INTERNET-ului pentru activiti ntlnite n cadrul altor discipline. 12. Exemplificarea folosirii facilitilor de autodocumentare specifice (Help) puse la dispoziie de mediul de lucru. 13. Discutarea articolelor incluse n legea copyright-ului i a semnificaiilor acestora. 14. Istorisiri despre evoluia instrumentelor tehnologiei informaiei, despre personaliti celebre din domeniu. Valorificarea termenilor de specialitate n comunicare Obiective de referin 1. S utilizeze corect simbolurile, prescurtrile i terminologia specific domeniului informatic. 2. S recunoasc semnificaia i sfera de utilizare a unor termeni din domeniul tehnologiei informaiei. Exemple de activiti de nvare 1. Gsirea unor sinonime pentru termenii de specialitate asimilai care s probeze nelegerea acestora. 2. Analiza etimologiei cuvintelor noi.

57

3. Crearea unui vocabular de termeni de specialitate. 4. Realizarea unor clase de noiuni asociate domeniilor de utilizare a tehnologiei informaiei. Dezvoltarea capacitii de cooperare n scopul realizrii unei aplicaii Obiective de referin 1. S participe la munca n echip i s execute n cadrul grupei sarcinile ce i revin n funcie de aptitudinile individuale. 2. S participe activ la dezbateri, s respecte prerea celorlali, s asculte cu rbdare i s exprime propriile preri argumentate. Exemple de activiti de nvare 1. Identificarea coninuturilor activitii ce urmeaz s se desfoare. 2. Dezbateri pe tema fixrii rolurilor n echip n funcie de interesele i aptitudinile individuale. 3. Formularea unor probleme simple care s poat fi realizate n grupuri de elevi pe baza unor discuii preliminare i analiza problemei. 4. Discuii de abordare a problemelor care apar pe parcursul desfurrii activitilor. 5. Verificarea nelegerii rezolvrii unei probleme n ansamblul ei de ctre toi membrii grupului. 6. Prezentarea i dezbaterea aplicaiilor realizate. 7. Se vor ncuraja discuiile purtate ntre elevi, exprimarea i ascultarea prerilor fiecruia. Desigur c putem continua cu Coninuturile nvrii, dar credem c este suficient. 2.2. Structura leciei Forma fundamental de organizare individualizat a procesului de instruire este lecia, indiferent de durata sa temporal. La coninutul propriu-zis al unei lecii se adaug aplicarea metodelor de predare pe care profesorul le va alege ct i obiectivele pe care acesta i le

58

propune. Nu poate fi considerat lecie ceva care nu leag ceea ce s-a studiat nainte, cunotinele anterior dobndite, de cunotinele care trebuiesc transmise n continuare. Lecia are un caracter unitar prin coninutul ei, prin procedeele ce se aplic, prin gradul de participare a elevilor la procesul instructiv-educativ. Aa cum preambulul trebuie s conin o prezentare clar a ceea ce urmeaz, orice lecie trebuie ncheiat printr-un rezumat, o recapitulare a ntregului volum de cunotine abordate pe ntreg cuprinsul leciei i o fixare, prin care s se finalizeze activitatea ntreprins. Ar trebui anticipate necesitatea introducerii unor noi noiuni i planul de abordare a leciilor urmtoare. Considerm c o asemenea unitate de nvare ar trebui s dureze 90-100 minute, fr ntreruperi. Lecia nu este numai o form de organizare a activitii de predare/nvare i o succesiune de etape bine stabilite i (de dorit) realizate. Evenimentele imprevizibile, apariia unor particulariti specifice care trebuie stpnite sunt inevitabile. O cerin metodic este clasificarea leciilor: de comunicare/transmitere de cunotine, de studiu individual, de descoperire, de verificare, de recapitulare etc. Delimitrile nu sunt ns stricte, fiecare lecie fiind o mpletire (care se dorete armonioas) de metode i tehnici care concur la realizarea obiectivelor propuse, raportul n favoarea uneia sau altei dintre metode fiind greu de stabilit n final i cu att mai mult iniial. Vom puncta totui cteva dintre momentele eseniale ale desfurarii unei lecii, subliniind relativitatea acestora (ca dimensiuni de timp; ca importan; ca ordine): Momentul organizatoric impune, n primul rnd, verificarea prezenei i a condiiilor de desfurare (existena materialului didactic necesar, incluznd aici calculatoare, soft etc.). Ideal ar fi ca aceasta s fie fcut n pauza dintre ore i de ctre un personal specializat. Din acest motiv, pauzele ar trebui s fie de minimum 20 minute. Ideal ar fi verificarea temei de acas i identificarea dificultilor ntmpinate n efectuarea ei. Elevii sunt apoi ascultai din materia predat n lecia anterioar, cutndu-se s se nlture anomaliile de nelelegere aprute n procesul de asimilare. Se pred lecia nou (sau, echivalent, dac este vorba de fixarea a ceva anterior). Se fixeaz cunotinele (noi) prin (alte) exerciii. Se stabilete tema pentru acas.

O lecie poate fi apreciat ca necorespunztoare dac, de exemplu, se pierde timpul cu momentul organizatoric, inclusiv cu verificarea temei de acas i cu msurile luate de profesor privitoare la nerealizarea acesteia. Cel mai mult timp trebuie afectat comunicrii

59

cunotinelor noi i fixrii acestora prin exerciii. Tema pentru acas nu trebuie dat n grab (n pauz sau cnd se sun). Observaie. Volumul de munc necesar efecturii temelor pentru acas trebuie s se nscrie n limite rezonabile (exist suficiente recomandri legale pentru sarcinile suplimentare). Un numr mai mare de exerciii duce la lucru de mntuial, copieri, abandonarea ntregii teme, refuz fa de abordarea temei. Tema trebuie s fie n coresponden cu posibilitile elevilor i legat de nsuirea i aplicarea cunotinelor predate. Ea trebuie dat difereniat, atunci cnd ntre elevii aceleai clase sunt diferene mari n ceea ce privete capacitatea sau pregtirea lor. Tema trebuie s fie nsoit de explicaii ajuttoare, de indicaii potrivite. Cnd tema presupune artificii de calcul sau cere o pricepere deosebit, trebuie ca elevilor s li se atrag atenia asupra acestui aspect (de exemplu, prin exerciii cu *, adic dificile). Muli elevi nva pe de rost metodele de rezolvare a unor probleme i i formeaz abloane pe care le aplic automat. Cu siguran i algoritmii importani, rezultat al analizei i cercetrii ndelungate, trebuie reinui, dar uznd-se de logica intern a acestora. Profesorul are (i) obligaia s nvee pe elevi cum s-i fac tema, nu s creeze un climat care determin ca necesitate apariia meditatorului (mediator pgubos ntre elev i profesor i nu o prelungire a acestuia din urm, n cazuri extreme). Temele de acas i ating scopul doar dac pot fi controlate n permanen de ctre profesor. 2.3. Calitatea cunotinelor asimilate Procesul de comunicare al cunotinelor trebuie s aib drept efect formarea de reprezentri corecte despre lucruri i fenomene reale, nsuirea de noiuni care ajut la nelegerea legilor care reglementeaz raporturile dintre fenomenele realitii i care permit exprimarea acestor raporturi ntr-un mod clar. Formalismul excesiv este unul dintre pericolele care pndesc procesul instructiv/educativ i el se manifest prin: Lipsa legturii evident exprimate dintre form i coninut. Memorarea mecanic a cunotinelor i predominarea formei exterioare asupra esenei coninutului (schimbarea notaiei poate provoca uneori adevrate tragedii). Predominarea memorrii asupra nelegerii. Supremaia ablonului asupra inventivitii. Ruperea teoriei de practic.

60

Evitarea formalismului excesiv se realizeaz mai ales printr-o nelegere deplin a fenomenului abstractizrii, o urmrire i o contientizare a scopului, a nsemntii abordrii temei i o subliniere a consecinelor realizrii ei. Trebuie s limitm folosirea abloanelor, chiar dac exist situaii identice care se repet. Raionamentul logic trebuie s ne nsoeasc paii n permanen. Exemplu. Dac ne referim la prezentarea sintaxei unui limbaj de programare, utilizarea diagramelor de sintax (<41>) poate fi un impediment n nelegerea limbajului (dei experiena proprie ne-a furnizat i cteva aplicri cu succes). Iat cum este prezentat sintaxa structurii alternative multiple de tip CASE printr-o astfel de diagram:

Ca alternativ profesorul poate opta pentru varianta: case (<expresie>) of val1: <instruciune1>; val2: <instruciune2>; ............................... valn: <instruciunen> else <instruciune> end; unde <expresie> este o expresie de tip ordinal, val1, val2, ...,valn sunt valori sau intervale de valori de acelai tip cu <expresie>, iar <instruciune1>, <instruciune2>,..., <instruciunen>, <instruciune> sunt instruciuni simple sau compuse. <instruciune> poate fi i vid, caz n care lipsete i cuvntul rezervat else.

61

Un alt impediment n calea nelegerii (generat de abstractizare) se constat la elevii slabi care la construirea primelor programe ntr-un limbaj de programare, din dorina lor justificat de a menine pasul cu ceilali elevi din clas, depun un efort suplimentar nvnd pur i simplu programele fcute n clas pe de rost. Dac acest viciu de tehnic de nvare nu este depistat la timp i nlturat, n special prin scrierea de ctre elev sub supravegherea profesorului de programe simple (dar altele de fiecare dat), cu greu va mai putea fi corectat. 2.4. Formarea limbajului de specialitate

Limbajul este desigur un instrument prin care oamenii comunic, fac schimb de informaii, idei, se neleg ntre ei. Acesta este nemijlocit legat de gndire, nregistrnd i fixnd n cuvinte rezultatele unor activiti. Este implicit necesar o vorbire corect, o exprimare lipsit de ambiguiti, n orice domeniu i cu att mai mult n Informatic, unde limbajul natural este un intermediar important n cadrul interfeei cu mijloacele de calcul. Formarea limbajului de specialitate este (i) o consecin a unui proces de instruire de lung durat. Profesorul trebuie s nlture n permanen orice greeal de exprimare i s clarifice orice nenelegere a unor noiuni, s reformuleze corect orice afirmaie legat de noiuni i fenomene incorect exprimate. Supravegherea nc din clasele mici duce la formarea unui reflex critic, marcat de o atenie sporit atunci cnd cineva se exprim incorect i remarcarea celor mai subtile i ascunse erori de exprimare i interpretare. Formarea unei exprimri corecte scrise i orale se realizeaz prin: Exprimarea corect a profesorului nsui, care constituie (ab initio) un model pentru elevi. De aceea profesorul trebuie s-i formuleze cu grij afirmaiile. Supravegherea permanent a exprimrii elevilor i corectarea continu a greelilor lor. ncurajarea libertii de exprimare, cu argumentarea raionamentelor. Deseori elevii rspund telegrafic sau numai ncep s se exprime. Cum acetia o fac mai greoi, ei sunt uneori ntrerupi i profesorul continu ideea formulnd-o prin prisma nelegerii i raionamentului su. Acest mod de abordare a dialogului elev-profesor are efecte negative n legtur cu formarea limbajului de specialitate i utilizarea lui de ctre elev. n plus, prin intervenia prematur a profesorului, elevului i se ntrerupe firul raionamentelor sale, el fcnd cu greu fa efortului de a urmri i nelege raionamentul profesorului. Este astfel absolut necesar asigurarea unei anumite liberti individuale, chiar n detrimentul unor riscuri de confuzii momentane. Putem vorbi astfel mai n amnunt despre

62

exprimarea fluent n limbajul de specialitate i exerciiul oral. Prezentarea oral a soluiilor unor probleme nainte de abordarea lor strict tiinific are menirea de a lmuri n totalitate aspectele neclare ale problemelor. Limbajul natural este o form de reprezentare a algoritmilor des uzitat, prin urmare o prezentare n limbaj natural a oricrei activiti ce urmeaz a fi desfurat, clarific i uureaz multe situaii limit. exerciiul oral are o nsemntate deosebit din punct de vedere educativ, el educnd atenia, capacitatea de concentrare, prezena de spirit, iniiativa creatoare. Exerciiile orale mbuntesc randamentul multor activitii i contribuie esenial la formarea limbajului de specialitate. Sunt necesare totui anumite cerine i precauii n folosirea exerciiilor orale. Astfel, ele trebuie: S fie alese cu grij i s nu presupun un nivel ridicat de abstractizare sau acumularea unui volum mare de informaii noi. S fie prezentate gradat, s nu presupun calcule mentale lungi i complicate. S poat fi folosit un bogat material intuitiv/ilustrativ.

n final, profesorul trebuie s pun accentul pe aspectele care au ansa de a deveni ambigue. 2.5. Caietele elevilor

De regul, elevii i profesorii accept c exist un caiet care conine partea teoretic i aplicaiile ilustrative, iar un alt caiet este destinat exerciiilor individuale. Dar, ce noteaz elevii n caiete? Dac exist manual, la predare elevii trebuie s noteze doar exemplele ilustrative i nu partea teoretic. Ei noteaz doar concluzii i o schem simplificat a leciei. Cnd profesorul expune materia altfel dect n manual, elevii trebuie s o noteze complet. Pe de alt parte, notarea n caiete trebuie s cuprind doar ceea ce profesorul scrie pe tabl (calculator personal, teletext, telefon mobil etc.). Explicaiile orale lungi i complicate, chiar dac trebuie evitat a fi scrise n caiete, i au rolul lor. Astfel de notri sunt grele pentru elevii din clasele inferioare i efortul lor se canalizeaz n direcia notrii i nu a nelegerii noiunilor predate. Trebuie exclus ideea copierii textelor din manuale pe caiete, exceptnd situaia n care se realizeaz o sintez i o sistematizare a leciei din manual. O atenie special trebuie acordat Caietului de aplicaii practice de laborator. Datorit caracterului aplicativ al anumitor ore, exist tendina de a se nota puin i de cele mai multe ori secvene izolate i necorelate ntre ele. Un caiet de aplicaii practice de laborator ar trebui s conin la fiecare lecie: Un rezumat al cunotinelor teoretice necesare realizrii aplicaiei practice concrete.

63

Enunul problemei a crei rezolvare constituie obiectul activitii, cu observaii asupra mediului concret. Algoritmul de rezolvare, descris n limbaj natural/pseudocod /schem logic. Rezolvarea implementat, sau acea parte din soluie care constituie esena rezolvrii (programul sau secvenele cele mai importante, cu precizarea n clar a ceea ce s-a realizat n acea etap);

Un rezumat al cunotinelor noi dobndite n urma rezolvrii problemelor.

Chiar dac ideea copierii pe caiete a programelor ntocmite la orele de aplicaii practice de laborator poate fi supus unor critici severe, aceste texte surs constituie totui biblioteca la purttor a elevului, cea mai rapid accesibil, cu condiia ca programele s fie nsoite de explicaii corespunztoare. Sursele programelor fr enunul problemelor i specificaiile de programare sunt texte moarte. Marele dezavantaj al metodei const n timpul pierdut cu copierea pe caiete (nu excludem mijloacele electronice moderne), dar acesta este compensat de obinerea unui text surs testat, corect i reprezentnd o implementare verificat.

3. Teoria evalurii
Credem c este benefic s ne oprim puin asupra recapitulrilor, nainte de a vorbi mai n detaliu despre evaluare.

3.1. Repetare, recapitulare, evaluare

Repetarea materiei parcurse servete la mprosptarea cunotinelor dobndite, ajut la formarea de noi corelaii, reluarea materiei predate ntr-un cadru mai general, uneori cu completarea unor cunotine. Repetarea (leciei sau chiar leciilor anterioare) se poate face nainte de predarea unei lecii noi, la sfritul unui capitol, al unui semestru sau al anului colar, sau chiar cu ocazia necesitii de a se susine un examen suplimentar. Recapitularea ar trebui s se realizeze dup un plan dinainte stabilit. A evalua rezultatele colare nseamn a determina, a cuantifica msura n care obiectivele programului de instruire au fost atinse, precum i eficiena metodelor de predare-nvare folosite. Procesul de nvmnt cuprinde,

64

oricum, urmtoarele etape: predare, nvare, evaluare. Dei aceste etape se desfoar separat, proiectarea leciilor nu poate fi fcut fr a avea n vedere toate aspectele legate de acestea, ele ntreptrunzndu-se. Dup cum tim (sau, n acest moment, bnuim), proiectarea unei lecii ncepe prin a se stabili obiectivele acesteia, i are la baz programa colar a disciplinei. Profesorul va trebui s se ncadreze n numrul de ore stabilit prin program. Procesul de nvmnt se desfaoar ntr-un cadru organizat i bine definit. Evaluarea este o component foarte important a procesului de nvmnt. A evalua rezultatele colare nseamn a determina, a cuantifica msura n care obiectivele programului de instruire au fost atinse, precum i eficiena metodelor de predare-nvare folosite, pe scurt nseamn a evalua randamentul colar. Aciunile efectuate n procesul de evaluare se refer la msurare, cuantificare, interpretare rezultate i evident la adoptarea unor decizii corespunztoare. Activitatea de msurare sau cuantificare se realizeaz cu ajutorul unor procedee specifice cunoscute sub numele de metode i instrumente de evaluare. Interpretarea i aprecierea rezultatelor evalurii este strns legat de metodele i instrumentele de evaluare folosite, precum i de factori externi ce in de vrsta elevilor, mediul de dezvoltare al acestora etc. n mod normal, aprecierea rezultatelor evalurii va conine dou elemente importante: elevii evaluai pe de o parte, disciplina i profesorul titular pe de alta parte. De fapt, evaluarea, component esenial a procesului de nvmnt, ndeplinete funcii bine definite: Funcia de constatare i diagnosticare a performanelor obinute de elevi, explicate prin factorii i condiiile care au condus la succesul sau insuccesul colar i care sunt de o mare diversitate (psihologic, pedagogic, social etc.). Se permite depistarea lacunelor i greelilor elevilor precum i nlturarea acestora, la timp. Funcia de reglare i perfecionare a metodologiei instruirii pe baza informaiilor obinute din explicarea factorilor i condiiilor care au determinat rezultatele la nvtur. Funcia de predicie i decizie care vizeaz desfurarea n viitor a activitii didactice i performanele viitoare ale elevilor. Funcia de selecie i clasificare a elevilor n raport cu rezultatele colare obinute, aceasta permind clasificarea i/sau ierarhizarea elevilor. Funcia formativ-educativ, de ameliorare a metodelor de nvare folosite de elevi, de stimulare i optimizare a nvrii. Funcia de perfecionare a ntregului sistem de invmant.

65

Ca orice alt activitate didactic, evaluarea cunotinelor elevilor trebuie s respecte normele impuse de M.E.C.T. n general, aceste norme (directive, prevederi) stipuleaz o evaluare ritmic pe parcursul semestrelor. Funcie de vrsta i particularitile psihointelectuale ale elevilor i de specificul fiecrei discipline, instrumentele de evaluare pot fi: a) b) c) d) e) f) probe (lucrri) scrise; probe (verificri) orale; activiti practice; referate i proiecte; interviuri; alte instrumente stabilite de catedrele/comisiile metodice si aprobate de

director sau elaborate de Minister sau de Inspectorate. Aplicarea uneia sau alteia dintre formele de evaluare depinde n mare msur de forma raspunsului i de caracteristicile disciplinei respective. Cele mai rspndite forme de evaluare sunt cele orale i cele scrise, privite la modul clasic. Aceste forme de evaluare pot fi aplicate individual sau frontal. ncercnd s comparm cele dou metode, vom constata avantaje i dezavantaje de fiecare parte. n cadrul acestei comparaii intervine i personalitatea cadrului didactic precum i specificul disciplinei. O disciplin tehnic impune n general un mod de gndire i exprimare direct, ineles uneori ca un mod algoritmic de prezentare a cunotinelor, n timp ce o disciplin netehnic cere abiliti suplimentare de exprimare a cunotinelor. La nivel de discuii aceste comparri (evaluare oral, evaluare scris) par s fie normale i corecte, dar practica demonstreaz c nu putem renuna la nici una dintre ele n favoarea alteia. Verificarea oral, cea mai frecvent folosit, are anumite avantaje care o impun. n primul rnd favorizeaz dialogul, elevul putnd s-i argumenteze rspunsurile i s participe la o confruntare de idei cu ntreaga clas, iar profesorul poate detecta cu uurin erorile i poate interveni i corecta pe loc. Verificarea oral are ns i numeroase limite: ntrebrile nu au toate acelai grad de dificultate; unii elevi sunt emotivi i se blocheaz (mai ales atunci cnd sunt ironizai de ctre profesor); rspunsurile lor strnesc ilaritate n clas; timpul nu permite o verificare complet a coninutului predat. Mai mult, comportamentul i starea psihic a profesorului poate influena notarea. Majoritatea specialitilor din doemniu consider verificarea oral ca fiind ncrcat de un grad nalt de subiectivism. Subiectiv sau nu, aceast metod este printre puinele care dau posibilitatea cadrului didactic de a corecta deficienele de limbaj i de abordare a cunotinelor, dnd posibilitatea elevului de a exersa i a expune direct noiunile invate. Elevul nu are mult timp la dispoziie pentru a-i alege cuvintele

66

potrivite i este oarecum obligat s redea cunotinele in mod direct. De asemenea aceast metod d posibilitatea cadrului didactic de a face o incursiune printre cunotinele elevului i a sesiza din timp noiunile care creeaz dificulti n nelegerea lor corect. Considerm ca un mare avantaj al acestei metode crearea deprinderii de comunicare a elevului cu lumea exterioar. Un mare dezavantaj al acestei metode este ca profesorul nu are posibilitatea de a testa dect un numar restrns de elevi, iar in cadrul unei programe aglomerate (materie mult, ore alocate puine) profesorul se vede in situaia de a o folosi foarte puin, iar elevii pot percepe disciplina respectiv ca fiind rupt de realitate. n fond, fiecare poate citi o carte i fr a i se povesti dinainte aciunea dar nu fiecare este autodidact, nu poate puncta esenialul. Verificarea scris se utilizeaz sub forma unor lucrri de scurt durat, lucrri tip obiectiv, lucrri de una sau dou ore, semestriale (care sunt dinainte anunate i pregtite i n clas), lucrri scrise tip examen. Cercetrile au dovedit c evaluarea formativ n form scris, dup fiecare capitol, combinat cu verificrile orale este deosebit de eficient i stimulativ. Probele scrise sunt preferate de ctre elevi i profesori pentru c asigur un grad mai mare de obiectivitate la notare, ofer elevilor mai emotivi sau celor care gndesc mai lent posibilitatea de a se exprima fr a fi influenai de factori perturbatori, asigur evaluarea unui numr mare de elevi, ntrebrile au acelai grad de dificultate i favorizeaz realizarea comparrii rezultatelor. Dezavantajele metodei sunt marcate de faptul c profesorul nu poate interveni i corecta pe loc erorile descoperite, el urmnd s o fac n clas la discutarea lucrrilor. Elevii nu pot fi corectai dac fac anumite confuzii sau cnd rspunsul nu este complet. Rspunsurile incomplete pot genera i diferene de apreciere i notare. Metoda de evaluare prin verificare scris presupune in general un grad mai mare de obiectivitate din partea cadrului didactic n momentul aprecierii lucrarii, dar are marele dezavantaj ca rupe comunicarea dintre elev si profesor. Aceast metod i dovedete eficacitatea n momentul cnd este utilizat mpreun cu verificarea oral sau cu metoda interviului. Verificrile scrise pot fi date din lecia curent sau din cadrul unui capitol. Cand verificarea scris este din cadrul mai multor lecii (un capitol etc.), cadrul didactic trebuie s anune elevii n timp util (lucrri anunate), eventual s puncteze ceea ce se urmrete n mod special n cadrul testului respectiv. La urma urmei, profesorul se bucur cnd elevii rspund bine cerinelor sale si i poate aprecia cu note bune, iar elevii capt ncredere n forele lor i, de asemenea, n profesor. Profesorul nu va fi perceput astfel ca un vntor de elevi ce nu-i pregtesc leciile. Verificrile scrise pot viza expunerea unei anumite tematici (n general o lecie sau dou) sau pot fi alctuite sub form de teste gril. Un rol important n reuita acestei metode i

67

revine cadrului didactic, responsabil cu alegerea subiectelor i formularea corect a ntrebrilor. ntre cele dou forme de verificri scrise exist o diferen foarte mare. Expunerea n scris a unei anumite tematici cere din partea elevului un efort suplimentar, trebuie s prezinte tematica n timpul alocat, deci activitatea de sintetizare aparine elevului. Verificarea scris cu ajutorul testului gril presupune alegerea judicioas a ntrebrilor i rspunsurilor posibile din partea profesorului, astfel nct s acopere materia anunat pentru test, s dea posibilitatea elevilor s se ncadreze n timpul alocat testului. Este recomandat ca ntrebrile cu rspunsuri multiple s fie separate de cele cu un singur raspuns i de asemenea anunate n cadrul testului. Strategia de notare pentru un test gril trebuie anunat de ctre profesor (de exemplu, dac se accept rspunsuri pariale i n ce condiii nu se accept aceste rspunsuri). Este tiut c elevii i redacteaz rspunsurile i n funcie de strategia profesorului. Dac elevii tiu c sunt acceptate rspunsuri pariale la un test gril (test gril cu mai multe rspunsuri posibile), atunci acetia ar putea ncerca completarea tuturor rspunsurilor n sperana obinerii unui punctaj ct mai mare. S analizm n continuare urmtoarele scenarii pentru teste gril cu mai multe rspunsuri posibile. Fiecare ntrebare din testul gril este notat cu 15 puncte i profesorul anun c accept i rspunsuri pariale, fr a mai specifica i altceva. n aceste condiii o ntrebare ce conine patru rspunsuri, poate fi abordat de ctre elevi prin selectarea tuturor celor patru rspunsuri. Calculul din partea elevului este simplu. Nu am fost anunai c erorile se penalizeaz, deci ar trebui s obin punctajul maxim. Bineneles c este ipotetic acest lucru i c n realitate nu se poate admite s se ntmple. Pe aceeai problema, profesorul anun urmtoarea strategie de notare: pentru fiecare rspuns incorect selectat se scade ponderea unui rspuns corect din valoarea testului. Calculul din partea elevului poate fi: la o ntrebare de 15 puncte cu patru rspunsuri posibile, dac trei sunt corecte atunci prin selectarea tuturor rspunsurilor obtin 10 puncte, dac sunt dou corecte obin 0 (zero) puncte i atunci voi selecta doar trei ntrebri la toate testele ce conin patru rspunsuri posibile, asigurndu-mi astfel un minim de 5 puncte pe ntrebare. i astfel de scenarii pot continua. Dei par simple, testele gril se dovedesc a fi destul de dificile n cazul n care nu se accept la notare (n fapt acesta este mecanismul de funcionare al testelor gril) dect testele care au fost rezolvate corect. Primul test gril aplicat la o clas va crea surprize mari att pentru elevi ct i pentru profesor, de aceea profesorul trebuie s fie contient c este nevoie s-i pregteasc elevii pentru un asemenea eveniment. Testele gril prezint deci urmtoarele avantaje imediate: 1. Obiectivitate i uurin n notare. 2. Rspunsul se poate da n timp scurt.

68

3. Se poate acoperi o mare parte din materia predat Dezavantajele ar fi: 1. 2. Nu se poate pune n eviden raionamentul fcut de elev. Exist posibilitatea ghicirii rspunsului (valori prea mari, neconforme cu

tipul de rezultat asteptat, etc.). Realizarea testelor gril cer, de asemenea, profesorului s respecte anumite condiii: itemi clar formulai, ntr-un item s nu existe o indicaie a rspunsului, lungimea opiunilor s nu constituie un criteriu de selectare etc. Examinarea prin probe practice este caracteristic disciplinelor cu pronunat caracter aplicativ, iar Informaticii cu att mai mult. Ea se poate desfura n forme variate, de la realizarea de programe simple sau editri de texte sau grafic pe durata unei ore, lucrndu-se individual sau n grup, pn la aplicaii complexe, realizate ntr-un interval mai lung de timp. Sunt verificate i evaluate cunotinele teoretice necesare realizrii lucrrii, ct i deprinderile i dexteritile necesare executrii ei. Este necesar i formarea la elevi a capacitii de autoevaluare, prezentndu-le criteriile de apreciere, ceea ce va mri ncrederea elevului n propriile sale fore i va nltura orice urm de suspiciune. Dei imperfect, sistemul actual de evaluare permite o ierarhizare a elevilor n clase dup criterii reale de competen, ofer informaii edificatoare asupra nivelului de cunotine al fiecrui elev, stimuleaz elevul s nvee. Putem face o i clasificare a formelor de evaluare n funcie de timpul cnd se aplic acestea. Lund n considerare acest ultim criteriu de clasificare putem vorbi despre: a) Evaluarea iniial, care conduce la formarea unei imagini despre bagajul de cunotine cu care elevul pornete la drum. Trebuie s ne asigurm asupra a ceea ce cunoate elevul nainte de a-l nva alte lucruri. Aceast form de verificare creeaz i o imagine asupra posibilitilor de progres ale elevului, asupra capacitii lui de nvare, n funcie de care se va stabili programul de instruire. n general, evaluarea iniial este aplicat ntregii clase, profesorul avnd astfel posibilitatea s-i adapteze programul de instruire. b) Evaluarea formativ (continu) este forma de evaluare pe care profesorul o aplic pe ntreaga durat a programului de instruire n cadrul leciilor i la ncheierea unui capitol. Aceast form de verificare ofer permanent informaii cu privire la eficiena programului de instruire i permite profesorului s ia cele mai potrivite msuri de prevenire a insuccesului colar, ajutnd totodat la ameliorarea metodelor de predare-nvare. Verificarea ritmic ofer, pe baza mecanismului de feed-back continuu, semnalele necesare att elevului ct i profesorului, fiind un veritabil metronom al activitii didactice.

69

c) Evaluarea sumativ (cumulativ) este forma tradiional de evaluare realizat la sfritul unui semestru sau an colar i cuprinde ntreaga materie conform programei colare, pe intervalul de timp la care se aplic verificarea. Rezultatele acestei forme de verificare nu reflect ntotdeauna adevratul nivel de performan al elevilor, dar prin faptul c determin o recapitulare i o abordare global a materiei parcurse, are efecte pozitive n direcia dezvoltrii capacitii de cuprindere i de sintez a elevului. Superioar prin caracterul ei predictiv, evaluarea formativ trebuie totui completat i cu celelalte forme. Rezultatele colare sunt obiectivate n cunotinele acumulate, n priceperi i deprinderi, capaciti intelectuale, trsturi de personalitate i de conduit ale elevilor. Aprecierea ct mai obiectiv a rezultatelor la nvtur presupune i urmrirea unor anumite criterii, cum ar fi: a) Criteriul raportrii rezultatelor la obiectivele generale i operaionale, prevzute n programa colar. Prin aceasta se scoate n eviden calitatea i eficiena programului de instruire. Obiectivele pedagogice permit, pe lng orientarea metodologic i o verificare i apreciere exact a rezultatelor elevilor (astfel nct doi profesori care apreciaz aceeai performan s nu realizeze diferene de notare dect foarte mici). n acest sens, obiectivele ndeplinesc funcia de criteriu de referin atunci cnd se formuleaz o judecat de valoare asupra rezultatelor colare, dar ele sunt influenate i de factori perturbatori, uneori obiectivi, alteori subiectivi, cum ar fi dotarea material, nivelul clasei, preteniile profesorului, etc. b) Criteriul raportrii rezultatelor la nivelul general atins de populaia colar evaluat, care se manifest cteodat, din pcate, printr-o tendin de apreciere indulgent a rezultatelor elevilor din clasele mai slabe i de exigen sporit pentru elevii din clasele considerate mai bune. c) Criteriul raportrii rezultatelor la capacitile fiecrui elev i la nivelul lui de cunotine de dinaintea ncheierii programului de instruire. Aceast form de evaluare d msura progresului colar realizat de elevi. 3.2. Practica evalurii activitii didactice Controlul cunotinelor dobndite de ctre elevi d posibilitatea profesorului s dezvolte la acetia simul rspunderii, s sesizeze la timp lipsurile, s aprecieze ct mai just munca lor. Controlul trebuie fcut sistematic (dac se poate, zilnic) i n mod echilibrat. La fiecare lecie se verific modul n care a fost neleas i asimilat lecia nou, iar dac lecia are un caracter instructiv, trebuie verificat i gradul n care cele expuse au fost reinute. Verificarea gradului de asimilare se poate face:

70

prin repetarea raionamentelor fcute pe parcursul leciei, cu sprijinul elevului; prin ntrebri de control; prin rezolvarea de probleme noi.

Toate acestea ajut la verificarea rezultatelor muncii reale efectuate n clas. Verificarea lucrrilor scrise, date ca teme pentru acas se poate face: printr-o trecere printre bnci i o examinare superficial, cantitativ; prin prezentarea rezolvrii (ideea principal) de ctre un elev i confirmarea nelegerii de ctre ceilali. Este important ca verificarea temelor s se coreleze cu rspunsurile la un set de ntrebri, dinainte stabilite, vizndu-se lecia predat anterior. Aceasta va permite elevilor s combine repetarea notielor cu formarea i dezvoltarea deprinderilor de a corela noiunile teoretice ntre ele i de a le aplica n practic. O alt form de verificare, este cea oral cu toat clasa, cnd se pun ntrebri pentru toi. Elevii sunt lsai s gndeasc, apoi este numit unul dintre ei care s rspund. Ceilali sunt ndemnai s completeze rspunsul sau s corecteze greelile. Aceast examinare sumar (de regul) nu se noteaz, dar n situaia n care un elev nu a nvat deloc sau a rspuns constant bine la mai multe ntrebri, ar trebui notat. La examinarea oral se pun ntrebri care nu necesit desene, notri n caiete sau la tabl, calcule. Examinarea cu scoaterea la tabl (sau cea cu calculatorul personal) se face cu unul sau mai muli elevi. n timp ce elevii pregtesc rspunsurile, se poate lucra cu clasa sau verifica tema de acas. Cnd elevii rspund, este bine ca profesorul s se asigure c toat clasa este atent i pregtit s intervin. Profesorul poate s pun ntrebri suplimentare sau ajuttoare att elevilor ascultai ct i celor din bnci. Prin ntrebri se caut s se pun n eviden aspectele eseniale ale leciei. Profesorul trebuie s-i pregteasc dinainte ntrebrile i nu trebuie s transforme verificarea ntr-o scoatere cu sila la tabl i punerea unui noian de ntrebri care duc chiar pn la sugerarea rspunsului. Cnd elevul tace, profesorul nu trebuie s-i sugereze el fraza sau ideea ci s desemneze un alt elev. Intervenia inoportun a profesorului poate conduce la apariia unei ambiguiti cu privire la rspunsul i la cunotinele elevului. Lucrrile de control scrise pot varia ca dimensiune: cele scurte (10 - 15 minute) se dau, de obicei, n a doua parte a leciei i urmresc modul de asimilare a leciei noi sau a cunotinelor predate anterior, dar n corelaie cu lecia nou;

71

cele de 1 - 2 ore se dau numai dup ce au fost anunate din timp i pregtite eventual printr-o lecie de recapitulare; orice procedeu de verificare trebuie ns s ndeplineasc anumite condiii, discutate n prealabil cu elevii.

Verificrile, n general, trebuie: S aib un scop precis, care chiar dac nu este transparent pentru elev, trebuie s fie foarte clar pentru profesor. S dezvolte deprinderea elevului de a raiona rapid i de a da rspunsuri corecte, precise i scurte, dar complete. S dezvolte la elevi grija pentru formulri exacte i exprimri corecte tiinific i gramatical. S permit elevilor s aprecieze rspunsurile; S fie operative.

3.3. Aprecierea cunotinelor elevilor. Msuri de prevenire a rmnerilor n urm

Aprecierea se face, n principal, prin not (calificativ). Ea trebuie s reflecte ct de bine i ct de contient i-a nsuit elevul materia parcurs i n ce msur ar fi capabil s utilizeze n continuare cunotinele dobndite. Exist anumite criterii dup care se face aprecierea i notarea. Greelile pe care le comit elevii la verificare sunt difereniate (grave, mici, de neatenie, de nelegere etc.). Sunt calificate drept greeli grave cele legate de necunoaterea sau nenelegerea unei noiuni elementare, nepriceperea n abordarea problemelor. Greelile de genul celor legate de interpretarea eronat a unor enunuri sau cele legate de neatenia de moment nu trebuie calificate ca fiind grave. Acestea se manifest printro form nengrijit de prezentare, greeli de exprimare, prescurtri ambigui n lucrrile scrise. Profesorul se lovete deseori de dificultatea aprecierii rspunsurilor. De cele mai multe ori se cade n extreme. De aceea este indicat a se stabili un barem de notare pentru fiecare subiect n parte i o notare a fiecrui rspuns cu un anumit procent din punctajul maxim acordat. n apreciere se manifest personalitatea profesorului, preteniile sale, atenia fa de lucrurile eseniale sau mrunte, tactul lui pedagogic. Rmnerea n urm a unui elev reprezint un pericol pentru orice disciplin. n Informatic, acest lucru se poate manifesta sub forme cumva deosebite. Este evident c un curs de Informatic poate fi privit ca unul accesibil (dac nu este primul de acest gen). Prin urmare aici conteaz foarte mult experiena cursantului.

72

Prevenirea eecului colar depinde n mare msur de metodica predrii, de buna organizare a muncii elevilor la clas i n special la orele de aplicaii practice de laborator. Interesul trezit de anumite aplicaii este esenial. De aceea trebuie alese probleme atractive, interesante, al cror rezultat (pozitiv) s fie uor de constatat. Pentru prevenirea eecului este, de asemenea, important s se sesizeze la timp lipsurile i s se intervin prompt, nlturndu-se greelile. Nu gratuit un profesor invoc (uneori n glum) greeli antologice ale unor elevi. Astfel este posibil evitarea repetrii lor. Se creeaz n acest mod un cont de greeli personale care este referit la nevoie. n cazul rmnerilor n urm, se recomand reluarea unor noiuni prin lecii suplimentare i ore de consultaie la care elevii ntreab i profesorii rspund. Se poate recurge i la teme suplimentare individuale sau colective. Promovarea succesului colar nu poate fi realizat dect printr-un ansamblu de msuri i strategii la nivelul macrosistemului de nvmnt, al unitilor colare, cu contribuia activ a profesorilor, prinilor i elevilor. La nivelul macrosistemului, reforma nvmntului trebuie s promoveze ideea perfecionrii structurii sistemului de nvmnt n raport cu cerinele sociale i cu dinamica mutaiilor economice i sociale, prin modernizarea obiectivelor pedagogice, a coninuturilor (planuri, programe, manuale), a metodologiei i mai cu seam a bazei didactico-materiale a procesului de nvmnt. Efortul devine singular dac bunele intenii i iniiative promovate la nivel macro nu sunt aplicate n unitile colare. Este necesar s se creeze un climat favorabil de munc, s se stimuleze iniiativa i responsabilitatea corpului profesoral, s se accentueze perfecionarea profesional n raport cu noile cerine. Aceasta va avea efecte benefice asupra strategiilor de proiectare, organizare i realizare a activitii didactice i se va reflecta pozitiv n promovarea reuitei colare. Ca un corolar, s punctm i urmtoarele: n nvatamntul preuniversitar, evaluarile se concretizeaz, de regul, prin note de la 10 la 1. n clasele din nvatamntul primar, aprecierea rezultatelor elevilor se face i prin calificative sau alte forme de apreciere, conform reglementrilor M.E.C.T. Numrul de note acordate fiecrui elev, la fiecare disciplin de studiu, exclusiv nota de la tez, trebuie s fie cel putin egal cu numrul de ore sptmnal prevzut n planul de nvmnt, cu excepia disciplinelor cu o or pe saptamn, la care numrul minim de note/calificative este de dou. Primul pas ar consta deci din a defini ceea ce ncercm s msurm/evalum, evaluarea fiind o component esenial a procesului de nvmnt i ndeplinind funcii bine conturate:

73

Funcia de constatare i diagnosticare a performanelor obinute de elevi, explicate prin factorii i condiiile care au condus la succesul sau insuccesul colar i care sunt de o mare diversitate (psihologic, pedagogic, social etc.).

Funcia de reglare i perfecionare a metodologiei instruirii pe baza informaiilor obinute din explicarea factorilor i condiiilor care au determinat rezultatele la nvtur.

Funcia de predicie i decizie care vizeaz desfurarea n viitor a activitii didactice. Funcia de selecie i clasificare a elevilor n raport cu rezultatele colare obinute. Funcia formativ-educativ, de ameliorare a metodelor de nvare folosite de elevi, de stimulare i optimizare a nvrii. Funcia de perfecionare a ntregului sistem colar.

Creterea eficienei procesului de predare-nvare presupune o mai bun integrare a actului de evaluare n desfurarea activitii didactice prin verificarea i evaluarea sistematic a tuturor elevilor, pe ct posibil dup fiecare capitol, prin raportarea la obiectivele generale i operaionale ale acesteia, verificarea procesului de instruire i corelare a notelor din catalog cu rezultatele obinute de elevi la probele externe (concursuri, olimpiade, examene de admitere etc.). Principalele forme de evaluare ntlnite n practica didactic sunt: a) Evaluarea iniial care conduce la formarea unei imagini despre bagajul de cunotine cu care elevul pornete la drum. Trebuie s ne asigurm de ceea ce cunoate elevul nainte de a-l nva alte lucruri. Aceast form de verificare creeaz i o imagine asupra posibilitilor de progres ale elevului, asupra capacitii lui de nvare, n funcie de care se va stabili programul de instruire. b) Evaluarea formativ (continu) este forma de evaluare pe care profesorul o aplic pe ntreaga durat a programului de instruire n cadrul leciilor i la ncheierea unui capitol. Aceast form de verificare ofer permanent informaii cu privire la eficiena programului de instruire i permite profesorului s ia cele mai potrivite msuri de prevenire a insuccesului colar, ajutnd totodat la ameliorarea metodelor de predare-nvare. Verificarea ritmic ofer, pe baza mecanismului de feed-back continuu, semnalele necesare att elevului ct i profesorului, fiind un veritabil metronom al activitii didactice. c) Evaluarea sumativ (cumulativ) este forma tradiional de evaluare realizat la sfritul unui semestru sau an colar i cuprinde ntreaga materie conform programei colare, pe intervalul de timp la care se aplic verificarea. Rezultatele acestei forme de verificare nu reflect ntotdeauna adevratul nivel de performan al elevilor, dar prin faptul c determin o

74

recapitulare i o abordare global a materiei parcurse, are efecte pozitive n direcia dezvoltrii capacitii de cuprindere i de sintez a elevului. Superioar prin caracterul ei predictiv, evaluarea formativ trebuie totui completat i cu celelalte forme. Rezultatele colare sunt obiectivate n cunotinele acumulate, n priceperi i deprinderi, capaciti intelectuale, trsturi de personalitate i de conduit ale elevilor. Aprecierea ct mai obiectiv a rezultatelor la nvtur presupune urmrirea unor anumite criterii: a) Criteriul raportrii rezultatelor la obiectivele generale i operaionale, prevzute n programa colar. Prin aceasta se scoate n eviden calitatea i eficiena programului de instruire. Obiectivele pedagogice permit, pe lng orientarea metodologic i o verificare i apreciere exact a rezultatelor elevilor, astfel nct doi profesori care apreciaz aceeai performan s nu realizeze diferene de notare dect foarte mici. n acest sens, obiectivele ndeplinesc funcia de criteriu de referin atunci cnd se formuleaz o judecat de valoare asupra rezultatelor colare, dar ele sunt influenate i de factori perturbatori, uneori obiectivi, alteori subiectivi, cum ar fi dotarea material, nivelul clasei, preteniile profesorului, etc. b) Criteriul raportrii rezultatelor la nivelul general atins de populaia colar evaluat, care se manifest cteodat, din pcate, printr-o tendin de apreciere indulgent a rezultatelor elevilor din clasele mai slabe i de exigen sporit pentru elevii din clasele considerate mai bune. c) Criteriul raportrii rezultatelor la capacitile fiecrui elev i la nivelul lui de cunotine de dinaintea ncheierii programului de instruire. Aceast form de evaluare d msura progresului colar realizat de elevi. Metodele de verificare a randamentului colar presupun observarea modului n care nva elevul (logic, mecanic, creativ, ritmic, continuu, n salturi etc.) i se realizeaz prin probe orale, scrise i practice, teste de cunotine i deprinderi. Verificarea oral, cea mai frecvent folosit, are anumite avantaje care o impun. n primul rnd favorizeaz dialogul, elevul putnd s-i argumenteze rspunsurile i s participe la o confruntare de idei cu ntreaga clas, iar profesorul poate detecta cu uurin erorile i poate interveni i corecta imediat. Verificarea oral are ns i numeroase limite: ntrebrile nu au toate acelai grad de dificultate; unii elevi sunt emotivi i se blocheaz (mai ales atunci cnd sunt ironizai de ctre profesor); rspunsurile lor strnesc ilaritate n clas; timpul nu permite o verificare complet a coninutului predat. Mai mult, comportamentul i starea psihic a profesorului poate influena notarea.

75

Verificarea scris se utilizeaz sub forma unor lucrri de scurt durat, lucrri tip obiectiv, lucrri de una sau dou ore, semestriale (care sunt dinainte anunate i pregtite i n clas), lucrri scrise tip examen. Cercetrile au dovedit c evaluarea formativ n form scris, dup fiecare capitol, combinat cu verificrile orale este deosebit de eficient i stimulativ. Probele scrise sunt preferate de ctre elevi i profesori pentru c asigur un grad mai mare de obiectivitate la notare, ofer elevilor mai emotivi sau celor care gndesc mai lent posibilitatea de a se exprima fr a fi influenai de factori perturbatori, asigur evaluarea unui numr mare de elevi, ntrebrile au acelai grad de dificultate i favorizeaz realizarea comparrii rezultatelor. Dezavantajele metodei sunt marcate de faptul c profesorul nu poate interveni i corecta pe loc erorile descoperite, el urmnd s o fac n clas la discutarea lucrrilor. Elevii nu pot fi corectai dac fac anumite confuzii sau cnd rspunsul nu este complet. Rspunsurile incomplete pot genera i diferene de apreciere i notare. Examinarea prin probe practice este caracteristic disciplinelor cu pronunat caracter aplicativ, iar Informaticii cu att mai mult. Ea se poate desfura n forme variate, de la realizarea de programe simple sau editri de texte sau grafic pe durata unei ore, lucrndu-se individual sau n grup, pn la aplicaii complexe, realizate ntr-un interval mai lung de timp. Sunt verificate i evaluate cunotinele teoretice necesare realizrii lucrrii, ct i deprinderile i dexteritile necesare executrii ei. O alt form de verificare este evaluarea prin teste i care se efectueaz la nceputul programului de instruire (iniiale), pe parcursul acestuia (progres) i la sfritul programului (finale). Rezultatele acestor teste pot fi prelucrate statistic i pot conduce la concluzii interesante n legtur cu eficiena metodelor de predare-nvare folosite. Este necesar formarea la elevi a capacitii de autoevaluare, prezentndu-le criteriile de apreciere, ceea ce va mari ncrederea elevului n propriile sale fore i va nltura orice urm de suspiciune. Dei imperfect, sistemul actual de evaluare permite o ierarhizare a elevilor n clase dup criterii reale de competen, ofer informaii edificatoare asupra nivelului de cunotine al fiecrui elev, stimuleaz elevul la nvtur. 3.4. Condiia profesorului

Analiza psihologiei omului de la catedr a constituit un obiect de studiu permanent pentru cercettori. De exemplu, n <36> se abordeaz problema condiiei psihice a

76

profesorului (Decalogul profesorului), conturndu-se un (posibil) profil psihologic al acestuia. n faa elevului, profesorul trebuie s fie (sau cel puin s par): Cel mai interesat de subiectul pe care-l abordeaz, deoarece pe parcursul unei lecii starea profesorului se transmite elevului. Profesorul nu-i poate permite s arate dezinteres sau plictiseal fa de subiectul pe care-l pred. El trebuie s-l considere i s-l fac interesant (chiar dac este simplu, l cunoate i l-a mai abordat de zeci i zeci de ori). Profesorul nu poate s dea niciodat semne de rutin sau plictiseal. El va capta interesul elevilor atunci cnd va dovedi c este cel mai interesat i ncntat de subiectul abordat (numai aa va strni i va menine treaz interesul elevilor). Va cunoate cu exactitate subiectul. Este normal c orice metode am alege, orice mijloace am folosi n predare, nu putem face pe alii s neleag ceva ce nici noi nu nelegem cu exactitate. Celebra butad am explicat pn am priceput i eu, vine s confirme regula. A explica o problem sau a elucida un aspect pe care nu-l poate nelege clasa, presupune abordarea aspectului de la nivelul de nelegere al elevului de nivel mediu din clas i amplificarea n spiral, prin pai care presupun, pe lng raionament, i introducerea unor noiuni noi. Succesiunea etapelor demonstraiei este subordonat obiectivului final adic nelegerea subiectului. Orice ruptur sau forare compromite demersul didactic, iar elevii sesizeaz cu rapiditate aceste momente. O conjunctur de raionament poate conduce ctre aspecte care vor fi abordate n leciile viitoare (astfel, stpnirea coninuturilor n ansamblul lor este o condiie sine qua non pentru profesor, singura n msur a realiza conexiunile dintre coninuturi). S tie c nainte de a nva de la altcineva, poi descoperi singur. Recurgerea la metodele active (bazate pe activitatea proprie a elevului) n nsuirea anumitor concepte, priceperi, deprinderi are un efect stimulator, elimin ablonismul, d fru liber imaginaiei creatoare, muncii independente. Desigur c exist limite n aplicarea acestui principiu, cunoscuta metod a specialistului care ncearc nti toate posibilitile, apoi citete documentaia, fiind un argument n plus. Profesorul colaboreaz, nu conduce. Adic, activitatea n grup are avantajul armonizrii ideilor n vederea atingerii obiectivului final, iar profesorul se integreaz frecvent n grup, participnd de cele mai multe ori ca lider, la soluionarea problemelor. Aceast postur de lider creeaz grupului un handicap,

77

ntrit uneori de ideea preconceput c profesorul cunoate cu exactitate modul de rezolvare i prin urmare, el nu particip la descoperirile echipei, ci doar le supervizeaz (de aceea, tot ceea ce el sugereaz este regul). Elevului trebuie s i se ofere posibilitatea prezentrii i argumentrii ideilor sale, el trebuie lsat s-i continue raionamentul (n anumite limite, chiar dac acesta este greit), pn cnd se convinge de greeal. ntreruperea brutal i fr argumentare transform elevul din colaborator n adversar, acesta canalizndu-i eforturile n contracarare i nu n colaborare. n procesul instructiv profesorul trebuie s se coboare la nivelul de nelegere i anticipare al elevului, s se transpun n situaia acestuia; relaia profesor-elev fiind una de colaborare, n care, cu certitudine, profesorul este cel care tie i elevul cel care nva. Premizele colaborrii pornesc de la cunoaterea reciproc a exigenelor profesorului i a posibilitilor elevului, iar mprirea forat i aprioric n profesori blnzi sau duri, sau n elevi slabi i buni, este duntoare. Profesorul are obligaia s cultive elevului ncrederea n posibilitile sale, s-i depisteze punctele slabe i fr a i le scoate n eviden, s-l ajute s se corecteze. Cea mai duntoare atitudine este calificarea unui elev dup rezultatele obinute la celelalte discipline. Opiunile, nclinaia, vocaia, interesele, perturbrile exterioare, pot influena ntr-un sens sau altul prestaia elevului la o disciplin, iar dac situaia o permite calificarea elevilor se va face totdeauna cu etichete pozitive: mai interesai, mai pasionai, mai rapizi, mai originali. S informeze i s formeze priceperea de a utiliza informaia. Realizarea acestui deziderat face parte din panoplia de mijloace externe a fiecrui cadru didactic. Unii profesori, n funcie i de disciplin, introduc noiuni i teme noi pornind de la necesiti reale, de soluionare a unor probleme concrete, iar aceste noiuni devin mijloace naturale, folosite imediat. Analiza atent a mijloacelor care ne stau la dispoziie pentru rezolvarea unei probleme, scoate n eviden utilitatea cunotinelor dobndite anterior, iar mbrcarea problemelor aparent strict teoretice ntr-o hain practic, real, se poate transforma ntr-o posibilitate de succes. S dirijeze raionamentul elevului ctre descoperirea soluiei optime. Elevul trebuie ndreptat pe fgaul descoperirii, corectndu-i-se alegererile i sftuind-l s-i verifice singur paii, nvndu-l s fac analogii, s descopere diferene, s

78

intuiasc situaiile limit. Elevul trebuie nvat n acelai timp s abstractizeze, s aplice rezultatele teoretice ce i-au fost prezentate, s aleag dintr-o mulime de soluii metoda cea mai adecvat de rezolvare. Elevul trebuie s fie contient de faptul c nu este primul i nici singurul rezolvator al acelei probleme i c poate s existe o metod mai eficient descoperit de alii. n acest fel, acesta va fi preocupat mereu de optimizarea propriilor soluii, i se va forma spiritul critic i autocritic i dorina de autodepire. S nvee elevii s-i argumenteze i demonstreze corectitudinea soluiei gsite. Argumentele pro i contra unei soluii trebuie s nsoeasc fiecare pas al rezolvrii. Elevul trebuie obinuit s-i suspecteze corectitudinea soluiei gsite prin analiza cazurilor limit i s caute n permanen contraexemple. Analiza complexitii algoritmilor este un concept care se deprinde i se aplic dup o oarecare experien. S formeze elevilor capacitatea de abstractizare i generalizare. Posibilitatea adaptrii i aplicrii unui algoritm la o clas de probleme de acelai tip, a avut ca rezultat, printre altele, apariia metodelor de elaborare a algoritmilor, nelegerea problematicii generale i a metodelor aplicate, particularizarea lor la situaii concrete. Crearea unor deprinderi de genul de la simplu la complex, este la fel de important. S nu prezinte sau s rezolve o problem pe care elevul o poate rezolva singur. Elevul trebuie ncurajat s descopere ct mai multe soluii, profesorul care ofer i pretinde totul aa cum a oferit devenind de fapt un dresor de papagali. Cu rbdare, punnd ntrebri ajuttoare, dnd mici indicaii, elevul poate fi ajutat s obin, sau s cread cu convingere c a obinut singur rezultatul dorit; ncrederea n posibilitile lui crete, nu se simte stresat sau presat de asimilarea unei succesiuni ameitoare de nouti. Mai mult ca oricare altul, profesorul trebuie s fie un bun actor, un interpret fr partitur, care trebuie s imagineze i s improvizeze mereu, fr ca spectatorul lui fidel, elevul, s sesizeze vreodat acest aspect. Ne vom preface c o soluie prezentat de elev este bun, pn cnd i va descoperi singur greeala, vom suferi alturi de el cutnd-o pe cea corect i ne vom bucura o dat cu el descoperind-o. Profesorul nu poate fi suprat sau trist, nu poate fi melancolic, distrat, inexact. El trebuie s fie mereu bine dispus i atent. n plus, trebuie s-i soluioneze singur

79

toate probleme cu clasa, s nu dea semne de slbiciune. Cu ct se cunosc reciproc mai mult, cu ct colaboreaz i se ajut mai mult, cu ct se neleg i se apreciaz mai mult, cu att profesorul i elevii se vor apropia mai mult. 3.5. Planificarea activitii didactice

Actoria didactic are ns limite. n urma practicii didactice s-a stabilit ca profesorul s prezinte un plan de munc anual (calendaristic) sau semestrial. Planificarea calendaristic trebuie s conin ealonarea coninuturilor disciplinei respective pe durata anului sau semestrului cu indicarea numrului de ore i a datei stabilit pentru studiul fiecrei teme. n paralel cu leciile de comunicare de cunotine sau mixte, este necesar planificarea leciilor recapitulative, iar la sfritul semestrului, lecii de evaluare sumativ. n planificarea calendaristic se vor face referiri la materialul didactic i la lucrrile practice care vor fi efectuate. Rubricaia planificrii calendaristice depinde de gradul de detaliu la care se dorete s se realizeze aceasta. Temele specificate n planificare sunt concretizate n lecii, pentru care profesorul trebuie s ntocmeasc n plus un plan de lecie (Proiect de tehnologie didactic etc.) la nivel de detaliu. Pentru o proiectare corect, profesorul trebuie s in seama de anumite etape pe care trebuie s le parcurg i n care trebuie s rspund la urmtoarele ntrebri: 1) Ce voi face ? nainte de a face orice altceva se vor preciza cu claritate obiectivele educaionale ale activitii viitoare. 2) Cu ce voi face ? Este absolut necesar s se analizeze atent resursele educaionale disponibile pentru a realiza obiectivele stabilite. 3) Cum voi face ? Se va alctui strategia educaional potrivit pentru realizarea obiectivelor stabilite. 4) Cum voi ti dac s-a realizat ceea ce trebuia ? n orice activitate de altfel este dificil de stabilit dac s-a atins obiectivul propus. n activitatea didactic este cu att mai greu. Gsirea unei metodologii satisfctoare de evaluare a eficienei activitii realizate este o problem doar parial rezolvat. Proiectarea didactic

80

presupune totui concretizarea i detalierea urmtoarelor etape (i vom ncheia capitolul cu aceste consideraii): 1) Precizarea obiectivelor. Presupune stabilirea n mod precis a ce deprinderi se doresc a se forma pe parcursul desfurrii activitii didactice. Se va verifica dac ceea ce s-a stabilit este ceea ce trebuia realizat n raport cu programa colar. Se va verifica i dac obiectivele stabilite sunt realizabile n timpul disponibil. 2) Analiza resurselor. Se va stabili coninutul activitii. Se va analiza calitatea materialului uman, dezvoltarea fizic i psihic a elevilor, particularitile individuale, motivaia nvrii, mijloacele materiale. Se vor alege metodele didactice necesare. 3) Elaborarea strategiei. Se vor selecta mijloacele de instruire de care este nevoie, combinnd metodele, materialele i mijloacele astfel nct s se amplifice eficacitatea lor didactic. Se va descrie n detaliu scenariul activitii care urmeaz a fi desfurat. 4) Evaluarea. Se vor analiza cu atenie standardele de performan i se va elabora un sistem de metode i tehnici de evaluare adecvate atingerii scopului propus. Urmtoarele capitole vor avea fie un aspect pur metodic, sau vor conine exemple concrete (planuri/proiecte de lecie) legate de concretizarea noiunilor/rezultatelor n sine.

CAPITOLUL 3

Principii didactice

n acest capitol sunt prezentate pe scurt cteva dintre principiile didactice generale, simultan cu anumite exemplificri ale aplicrii lor n domeniul Informaticii.

1. CLASIFICAREA I CARACTERISTICILE PRINCIPIILOR DIDACTICE

81

Un model al sistemului de nvmnt trebuie s se ncadreze n contextul legilor obiective care acioneaz n societate la momentul respectiv. Coninutul, scopul, sarcinile concrete ale predrii Informaticii pot fi deduse din planurile de nvmnt, precum i din alte activiti specifice (colare sau chiar extracolare). Aceasta corespunde stadiilor (ciclurilor) de nvare fixate n conformitate cu dezvoltarea intelectual a elevilor, o atenie prioritar trebuind s fie direcionat spre adaptarea la nou, inclusiv n ceea ce privete dezvoltarea bazei materiale. Principiile didactice reprezint normele generale care orienteaz conceperea, organizarea i desfurarea procesului de predare/nvare. Aa cum este normal, ncepem prin a puncta cteva dintre caracteristicile generale ale principiilor. Va urma o clasificare i descriere mai detaliat a acestora. Deoarece din punct de vedere metodic principiile didactice nu sunt independente, am preferat s grupm (puinele) exemple ntr-o seciune separat. Principiile didactice au un: Caracter legic, ceea ce nseamn ca ele exprim raporturile eseniale i globale care orienteaz conceperea i desfurarea procesului de nvmnt. Caracter obiectiv, adic se asigur o orientare a procesului de nvmnt nefalsificat i detaat de impresii, tendine i dorine subiective; procesul de nvmnt este de dorit a fi orientat n concordan cu legile dezvoltrii psihice ale individului, precum i cu legile evoluiei societii. Caracter algoritmic. Se exprim cerine i soluii prin utilizarea unui sistem precis de reguli, care trebuie cunoscute i respectate cu exactitate dac se dorete o orientare eficient a procesului de nvmnt. Caracter dinamic. Principiile didactice sunt elemente legice, dar deschise nnoirilor i creativitii. Ele trebuie s fie n pas cu schimbrile i mutaiile care pot interveni n actul didactic. Caracter sistematic. Fiecare principiu (ca entitate n sine) intr n relaie cu celelalte principii, alctuind un ansamblu unitar de legiti ale crui componente se condiioneaz reciproc. Pentru o bun organizare i desfurare a procesului de nvmnt, profesorul trebuie s respecte i s aplice corect mcar urmtoarele principii didactice clasice: 1. Principiul intuiiei. 2. Principiul legrii teoriei de practic. 3. Principiul nsuirii contiente i active a cunotinelor. 4. Principiul sistematizrii i continuitii cunotinelor.

82

5. Principiul accesibilitii cunotinelor. 6. Principiul nsuirii temeinice a cunotinelor. 7. Principiul individualizrii i diferenierii nvrii. Vom descrie pe scurt latura aplicativ a fiecrui principiu n zona noastr de interes. 1. Principiul intuiiei Acest principiu exprim necesitatea studierii obiectelor, fenomenelor, proceselor cu ajutorul simurilor, inndu-se cont de importana realizrii unitii dintre senzorial i raional. A transmite cunotine de informatic n mod intuitiv nseamn a porni de la contactul direct cu realitatea, pentru ca apoi (prin perceperea acestora) s se ajung la generalizri. De cele mai multe ori putem face apel la memorie, reprezentri grafice, asemnri, analogii. Instrumentele de tip multimedia moderne au deschis deja ci nebnuite. Folosind acest principiu, este posibil s nu putem descrie exact i complet o problem, ntr-o singur faz. Putem ns deschide o cale spre nelegerea acesteia, putem stabili un drum ct de ct sigur spre reveniri ulterioare. 2. Principiul legrii teoriei de practic Raportul dintre teorie i practic depinde n ultim instan de dificultatea noiunilor implicate, de mijloacele tehnice avute la dispoziie, de cunotinele anterioare precum i de capacitile intelectuale ale clasei de elevi avut la dispoziie, de abilitatea i experiena cadrului didactic. n informatic, contientizarea necesitii utilizrii performante a unor tehnici folosite frecvent astzi n viaa cotidian (coduri de bare, telefonie mobil, transmisie audio-video prin satelit, pot electronic, scanri, etc.) este esenial. Mai mult, importana verificrii faptului c elevii sunt ntr-adevr n stare s aplice n practic cunotinele teoretice acumulate este cu adevrat vital. Sintetiznd, putem spune c aplicarea eficient a principiului legrii teoriei de practic pretinde respectarea consecvent a urmtoarelor direcii: Laboratoarele (cu caracter didactic) precum i slile de curs/seminar trebuie s fie dotate (inclusiv n ceea ce privete condiiile de lucru) la nivelul cerinelor moderne, anticipndu-se condiiile posibile a fi ntlnite la viitoarele locuri de munc. Activitile practice ale elevilor trebuie s aib o finalitate i o aplicabilitate imediat (manifestat de exemplu prin lucrul n echip la contracte ferme cu uniti economice, gen coaching, sau prin elaborarea unui raport cu contribuii personale, publicabil n reviste colare). Ar fi benefic ca att recompensele ct i pedepsele s fie similare cu cele aplicate ntr-o activitate real i nu doar reprezentate de note sau calificative.

83

Activitile serioase cer o fundamentare teoretic, contientizndu-se faptul c partea de teorie este efectiv util, ba chiar indispensabil dac se dorete o adaptare din mers la cerine ulterioare.

Asistena cadrelor didactice trebuie corelat cu apelarea la specialiti lucrativi din sfera produciei directe, precum i cu o testare pe ct posibil individualizat i specific a elevului.

3. Principiul nsuirii contiente i active a cunotinelor Acest principiu exprim necesitatea ca procesul de instruire (acumulare de cunotine) s se fac organizat, prin fixarea unor scopuri, finaliti i termene precise. nelegerea semnificaiilor i conexiunilor eseniale pentru studiul obiectului vizat (Informatica), trebuie realizat printr-un efort de gndire acional. Profesorul trebuie s delimiteze nc de la nceputul leciei scopul i utilitatea practic i teoretic a temei respective, folosind un bogat material exemplificativ. Se urmrete trecerea de la intenie la gndirea abstract, de la treapta senzorial la treapta raional i favorizarea formrii de noi structuri informaionale. Pentru evitarea unei nsuiri mecanice, se va pune accentul pe metodele active de nvare, pe asigurarea participrii permanente i contiente a elevilor la desfurarea leciilor, pe stimularea muncii creatoare i independente. nsuirea contient i activ a cunotinelor determin formarea unor atitudini sau condiii favorizante pentru nvare cum ar fi: Obinerea unei motivaii favorabile i a satisfaciei nvrii. Asigurarea credibilitii adevrurilor i transformarea lor n convingeri i deprinderi tiinifice. Sporirea posibilitilor de a utiliza n mod concret i profitabil informaia asimilat, oferind potenialului intelectual individual anse superioare de reuit, att pe plan practic/constructiv ct i pe plan creativ. 4. Principiul sistematizrii i continuitii cunotinelor Scopul oricrei activiti de predare este de a narma elevii cu un sistem armonios i corect de cunotine. Logica intern a obiectului de predat i legile generale ale dezvoltrii capacitilor de cunoatere individuale impun asigurarea continuitii, dar i necesitatea sistematizrii materiei. Noile informaii relevante vor fi legate de cele deja introduse i vor prefigura informaiile ulterioare (respectndu-se programa colar). Principiul sistematizrii se concretizeaz deci prin expuneri organizate asupra cunotinelor de asimilat, respectndu-se un anumit plan. Pentru a dezvolta continuu gndirea logic a elevilor, pentru a ncuraja participarea lor activ, pentru a le crea deprinderi de sistematizare i generalizare a

84

celor nvate, profesorul trebuie s-i foloseasc la maximum disponibilitile creatoare i talentul pedagogic n pregtirea expunerilor. Activitatea individual contient a elevului ar trerbui s fie esenial. Cunotinele nu se pot asimila n salturi, iar deprinderile neexersate se pierd (n special n Informatic, unde rata de perisabilitate a acestora este foarte ridicat). Dac dorim un nvmnt de mas eficient i asigurarea unei pregtiri ritmice a elevilor, trebuie s fie acceptat i un control permanent i riguros al profesorului asupra modului i stadiului de nsuire a cunotinelor de ctre elevi. Putem recomanda aplicarea ctorva reguli generale: Secvenele de cunotine transmise trebuie s fie coerente i unitare, ordinea fiind determinat de conexiuni logice clare. nvarea trebuie fcut ritmic, la intervale optime, asigurndu-se simultan restructurarea i reorganizarea pachetului de cunotine. n privina instrumentelor specifice pentru controlul realizrii acestor obiective putem cita: utilizarea de rezumate, conspecte, sinteze, planuri de perspectiv, clasificri, tabele, scheme, statistici etc. Controlul i evaluarea periodic a calitii receptrii trebuie s fie o modalitate de reglaj dar i de autoreglaj. 5. Principiul accesibilitii cunotinelor Cunotinele predate pot fi asimilate de elevi numai dac sunt accesibile ca volum i coninut. O tem este accesibil atunci cnd corespunde particularitilor psihologice de vrst ale elevilor crora le este adresat, este o continuare fireasc a celor acumulate anterior i corespunde capacitii lor reale de munc. Conform acestui principiu, respectarea programei colare, n ideea c ea a fost civilizat construit, apare ca fiind esenial. De asemenea, demersul instructiv-educativ trebuie adaptat condiiilor concrete ale clasei, stabilindu-se un raport optim ntre efortul solicitat elevului i ajutorul care i se acord n procesul de nvare. Dup cum am evideniat deja, n Informatic acest aspect este cu att mai important cu ct condiiile de lucru se pot schimba cu rapiditate chiar pe parcursul unui aceluiai semestru. Respectarea particularitilor psihologice de vrst nu nseamn a scuti elevii de efortul intelectual necesar dezvoltrii gndirii abstracte. n acest scop recomandm: Folosirea unor demersuri gradate de predare/nvare, de genul: de la simplu la complex, de la uor la greu, de la particular la general, de la concret la abstract. Contientizarea elevilor asupra faptului c efortul personal este absolut esenial pentru nelegerea corect i de durat a celor studiate.

85

Asigurarea unui studiu ritmic pentru a evita golurile de cunotine i eforturile ulterioare de nelegere i asimilare. Asigurarea unui control activ i a unei evaluri permanente, n scopul eficientizrii maxime a actului didactic.

6. Principiul nsuirii temeinice a cunotinelor Acest principiu reclam cerina fixrii materialului de specialitate studiat, astfel nct elevii s-l poat reproduce i utiliza creator att n rezolvarea temelor colare curente ct i n activitatea practic viitoare. Expunerile trebuie fcute intuitiv, accentundu-se esenialul i evitndu-se suprancrcarea. Fixarea cunotinelor nu trebuie realizat printr-o repetare succint a celor expuse ci trebuie s se bazeze pe o receptare logic, raional, cu ajutorul creia s se poat identifica esenialul. O asemenea nsuire temeinic poate fi obinut prin diverse modaliti de recapitulare: curent, de sistematizare i sintez, de prentmpinare a uitrii celor deja nvate, de asigurare a fixrii n memorie a sistemului de cunotine fundamentale. Putem din nou recomanda respectarea ctorva reguli: Predarea trebuie s fie intuitiv i accesibil. nsuirea cunotinelor trebuie s fie direcionat spre o asimilare logic i contient, urmndu-se un studiu sistematic. Elevii trebuie stimulai n ideea participrii active i continue la lecii. Este de dorit s se asigure motivaia nvrii, n strns legtur cu anumite aspiraii individuale. 7. Principiul individualizrii i diferenierii nvrii Exprim necesitatea adaptrii strategiei instructiv/educative att la particularitile psihofiziologice ale fiecrui elev n parte ct i la particularitile (relativ comune) ale unei grupe omogene de elevi, n vederea dezvoltrii lor ca personalitate i profesionalism. Individualizarea nvrii se refer la valorificarea ct mai bun a posibilitilor i eforturilor individuale, att pentru persoanele nzestrate ct i pentru cele mai puin nzestrate. Se recomand: Elaborarea de sarcini instructive (teme, lucrri etc.) individualizate pentru fiecare elev n parte (n funcie de aptitudinile, nclinaiile, opiunile, nivelul de dezvoltare intelectual, coeficientul de inteligen) Cerina ca oricare dintre sarcinile anterior specificate s fie identificat prin fie de lucru individuale, cum ar fi: Fie de recuperare (pentru cei rmai n urm).

86

Fie de dezvoltare (pentru elevii foarte buni). Fie de exerciii, destinate tuturor, n scopul formrii unor priceperi i deprinderi aprofundate. Fie de autoinstruire, destinate n special nsuirii unor tehnici de nvare individual i independent. Fie de evaluare general, pentru constatarea nivelului general de pregtire.

Consultaiile speciale, individualizate, nu pot fi evitate. Diferenierea nvrii exprim ns necesitatea de a adapta coninutul strategiilor educaionale n funcie de particularitile comportamentului individual (sau de grup) ale elevilor (cum ar fi promovarea aptitudinilor specifice pentru anumite materii). Aceast difereniere va rspunde att satisfacerii nevoilor destinate tratrii unor particulariti psihologice individuale, ct i satisfacerii unor cerine sociale privind pregtirea i utilitatea existenei unor specialiti. Aici ar fi utile: crearea de coli i/sau profile specializate; relaxarea nvmntului prin introducerea mai multor discipline opionale i facultative; intensificarea activitilor de coordonare direct profesor-elev (consultaii, discuii, mese rotunde, cercuri de profil, etc.); cunoaterea ct mai complet a fiecrui elev, att ca individualitate ct i ca fiin social; mbinarea judicioas a tratrii individuale i difereniate cu cea global, de grup, n care se rezolv sarcini de echip; utilizarea nvmntului asistat; contientizarea elevilor privind posibilitile proprii de formare/dezvoltare intelectual.

2. EXEMPLU
Pentru ilustrarea aplicrii tuturor principiilor (i nu numai) vom ncheia acest capitol printr-un exemplu global. Problema turnurilor din Hanoi este, considerm noi, suficient de edificator i de complex putnd fi folosit n plus i pentru: 1. Prezentarea unor noiuni informatice generale: cuvnt, limbaj formal; graf (arbore); stiv (list, coad). 2. nelegerea metodei backtracking; 3. nelegerea derecursivrii automate n sens iterativ (parte a construciei compilatoarelor). 4. nelegerea unor tehnici de prelucrare a imaginilor. 5. Introducerea ctorva consideraii de corectitudine i complexitate a algoritmilor. 6. Introducerea ctorva concepte de programare nestandard, cum ar fi programarea funcional.

87

Enunul problemei. n oraul Hanoi exist 3 (trei) turnuri de aur care au n vrf un numr de n discuri de diamant. Fiecare disc are propria sa dimensiune, dimensiunile (adic diametrele), fiind diferite ntre ele. Discurile sunt plasate iniial pe un singur turn, de jos n sus n ordinea descresctoare a diametrelor (discul cu diametrul maxim gsindu-se la baz). Se cere s se deplaseze cele n discuri de pe turnul iniial pe un altul (folosind, eventual, ca suport intermediar i pe cel de-al treilea). Restricii. Mutarea discurilor trebuie fcut ntr-un numr succesiv de pai independeni, la fiecare pas mutndu-se un singur disc de pe un turn pe altul; se mut ntotdeauna discul din vrf (adic cel care are diametrul minim de pe turnul respectiv); nu se poate aeza un disc cu diametrul mai mare peste unul cu diametrul mai mic. Soluie. Ca un prim comentariu s remarcm faptul c enunul recursiv este foarte simplu, dei ideea unui algoritm iterativ general pentru aceast problem nu este deloc transparent. Propunem alegerea urmtoarelor notaii care vor simplifica exprimarea ulterioar a soluiei: 1. Pentru turnuri: i, j, k {1,2,3}, valori diferite ntre ele, unde i reprezint turnul de plecare, j este turnul de sosire iar k este turnul intermediar. n acest caz, putem observa c avem k = 6 - i - j = al_treilea(i, j). 2. Discurile vor fi notate cu 1, 2, ...., n n funcie de dimensiune (n este discul de dimensiune maxim). 3. Mutrile vor fi desemnate prin triplete de tipul <a, b, c>, ceea ce va nsemna c se deplaseaz discul c (cel mai din vrf) de pe turnul a pe turnul b (n vrf). Desigur c a,b {1,2,3} iar c {1,2,...,n}. 4. Succesiunea mutrilor va fi indicat prin . Exprimarea problemei ca o funcie definit recursiv (n sens matematic). Dac M este numele funciei (care depinde de: turnul surs, turnul destinaie, numrul de discuri mutate), putem defini: M(i, j, n) = M(i, k, n - 1) < i, j, n > M(k, j, n - 1) Intuitiv, pentru a deplasa n discuri de pe turnul i pe turnul j, se deplaseaz nti n-1 discuri de pe turnul i pe turnul k i n final se deplaseaz cele n-1 discuri rmase de pe turnul k pe turnul j. n cadrul unei lecii concrete, se pot da explicaiile de rigoare cu privire la funcia recursiv i la faptul c un limbaj de programare funcional este un limbaj care lucreaz cu liste i liste de cuvinte. Faptul c definiia recursiv este corect rezult imediat prin inducie.

88

n final, se obine valoarea funciei ca o secven finit de pai (cuvnt) de tipul <i, j, n>. Acest lucru rezult din faptul c, aplicnd n mod repetat definiia lui M, n egalitatea precedent n scade la fiecare repetare.

1 2 3(n)

1 i

2 k

3 j

Observaie. M(p, q, 0) va reprezenta cuvntul vid (punctul din definiia lui M poate fi considerat ca reprezentnd operaia de concatenare, n sensul obinuit al teoriei limbajelor formale). Acum, s precizm c pentru derecursivarea algoritmului vom folosi o stiv. Iniial, stiva este goal. n reprezentarea grafic, ordinea mutrilor este dat de numrul ncercuit. Elementele stivei denot: i) M(...) - apelul recursiv al funciei M. ii) M(... 0) - se ignor apropo de orice aciune (de fapt acest simbol va fi ters ulterior). iii) <...> - se efectueaz o mutare normal. Operaiile generale care se efectueaz asupra stivei sunt: n cazul i). Dac vorbim de un apel al funciei M cu ultima poziie diferit de zero, atunci coninutul capului se terge i acesta se nlocuiete cu 3 celule noi. Restul coninutului stivei coboar.

89

n cazul ii). Coninutul capului stivei se terge i restul coninutului urc n stiv. n cazul iii). Se execut n mod efectiv mutarea indicat, se trece aceasta pe lista de ieire (care va constitui n final soluia problemei) i apoi se procedeaz ca mai nainte.

Procesul se termin i se obine soluia final doar n momentul n care cnd stiva redevine goal. n exemplul detaliat de mai jos considerm cazul i = 1, j = 3, k = 2, n = 3. Ceea se gsete n final, ca succesiune de mutri este: <1,3,1><1,2,2><3,2,1><1,3,3><2,1,1><2,3,2><1,3,1>. Observaie. Numrul de noduri n graful general este 1+203+ 213 + ... +2n-13, dac sunt n discuri i 3 turnuri. Numrul exact de mutri poate fi calculat imediat. Imaginea stivei i a grafului prin care se reprezint backtracking-ul sunt prezentate n continuare.

90

(a) M(1,3,3) M(1,2,2) <1,3,3> M(2,3,2)

(a) M(1,3,1) <1,2,2> M(3,2,1) <1,3,3> M(2,3,2)

(a) M(1,2,0) <1,3,1> M(2,3,0) <1,2,2> M(3,2,1) <1,3,3> M(2,3,2)

(b) <1,3,1> M(2,3,0) <1,2,2> M(3,2,1) <1,3,3> M(2,3,2)

(c) M(2,3,0) <1,2,2> M(3,2,1) <1,3,3> M(2,3,2)

(b)

<1,2,2

M(3,2

<1,3,3

M(2,3

<1,3,1> (a) M(2,1,1) <2,3,2> M(1,3,1) M(2,3,0) <2,1,1> M(3,1,0) <2,3,2> M(1,3,1) (a) (a) MMMMM MM M (a) MMM (b) M M <<<< << < ( ( ( ( M ( M( (a) < ( < ( M1 M 2 1 < M< M< 3 ( ( ( 1 ( 1<( 111 2 13 < ( ( 121 1 1 2 ( <, , , 2 3 M( 1 , , (c)( 3 <( 21 , , , 1 3, (b) 3 , 2( , 2, , , 2 M 3 , 1 3 1, 2 3 3M 2MMM2 2,M 233, 33 2 22 , , MM, M 3 2<, < 3 , < 3 , ( 2 3 2 3 (3 232 ( , ( ,(b) , ( , (, , , 2 , M , < (a) 3 2 21 0 M 1 , 2M3 3 333 2232, 2 2(c)13 0 3 , <2 3 , 0< , 1 1 ( , , 1( 3((a) >,(, 1 >, 1 0 > 3 >, > ( > , , , 12 , 2 2> ) 1) 3, 21>3, 3 >2 ) , 2 ) ) 3( ) , , 2 2 ) , 2, 2 , 1 > , 3) 1 > ) 3 2) ) 331>1 ) 3>) , 2 > )3 ) 1 1 2 (a) (b) 2 ) ) 3) 1 ) 3 , 3 > ,> 2 , , 3 , , , , 3 2) 1 3 1 0 , , 1 , , 1 2 0 (a)1 0 , , 3 2 0 ) 10 ) 0 > >> > ) ) ) ) 2 1 > ) ) > ) ) ) )
( b ) ( c < )3 , 2> , 1 ( b ) ( c ) ( b ) ( c< )2 , 1> , 1 ( b ) ( c < )2 , 3> , 2

(a) M(3,1,0) <3,2,1> M(1,2,0) <1,3,3> M(2,3,2)

(b)

(a) M(2,3,2)

(b)

(b) (c) < 3,2,1 > (b) (c)

(b) (c) < 2,1,1 > (b) (c) < 2,3,2 >

M(1,3

( b ) ( c < ) 2 , 1> ( b s )t i v a d e v in v i d a

i=1 j=3 n=1 i=1 j=2 n=2 M(1,2,2) M(1,3,1)

M(1,2,0) <1,3,1> M(2,3,0) 2 1

<1,2,2> i=3 j=2 n=1 M(3,2,1)

M(3,1,0) <3,2,1> M(1,2,0) 3

i=1 j=3 n=3 M(3,1,3) <1,3,3> 4

i=2 j=1 n=1 M(2,1,1) i=2 j=3 n=2 M(2,3,2) <2,3,2> i=1 j=3 n=1 M(1,3,1) 6

M(2,3,0) <2,1,1> M(3,1,0) 5

M(1,2,0) <1,3,1> M(2,3,0) 7

CAPITOLUL 4

Obiective didactice
n acest capitol vom trata o parte important a predrii oricrei discipline i anume obiectivele didactice generale i particulare. Deoarece obiectivele nu sunt independente, am preferat ca i n acest capitol s dm exemple globale.

1.

OBIECTIVELE INFORMATICII

MAJORE

ALE

STUDIULUI

innd cont de faptul c prezenta lucrare se adreseaz profesorilor i viitorilor profesori de Informatic, am ncercat, fr a avea pretenia c am atins toate aspectele, s formulm o ierarhie a obiectivelor cadru i operaionale ce trebuie atinse prin studiul disciplinelor de informatic n liceu, jalonnd astfel etapele de pregtire ale elevilor. Obiectivele cadru au un grad ridicat de generalitate i complexitate i se refer la formarea unor capaciti i aptitudini specifice disciplinei i sunt urmrite pe o ntreag perioad de colarizare. Obiectivele de referin, specific rezultatele ateptate ale nvrii i urmresc n special progresul realizat n acumularea de cunotine i n formarea deprinderilor, de regul pe perioada unui an de studiu. Transformrile care au loc n societate, dezvoltarea i rspndirea Informaticii, ptrunderea rapid n viaa economic, social i n nvmnt a celor mai noi realizri n domeniul hardware-ului i software-ului, impun o diversificare a pregtirii elevilor de liceu n acest domeniu. nvmntul preuniversitar trebuie s asigure n primul rnd dobndirea unor cunotine de Informatic la nivel de cultur general. Totui, cunotinele de tehnologia informaiei, utilizarea calculatoarelor n rezolvarea problemelor profesionale n diversele domenii ale vieii economice, reprezint o cerin a integrrii n diferitele domenii profesionale ale momentului. Din acest motiv, este posibil s admitem i introducerea/predarea n liceu (la un nivel corespunztor) a unor elemente de programare mai complex (C++, WEB, reele etc.). Astfel, n funcie de filier i specializare, elevii trebuie s dobndeasc, pn la un anumit nivel de aprofundare, un sistem de cunotine, relativ la prelucrarea informaiei cu ajutorul calculatoarelor personale. Pentru realizarea acestui obiectiv pedagogic considerm c este necesar ca elevii: i) S dobndeasc cunotinele necesare nelegerii principalelor aspecte legate de noiunea de informaie (culegere, prelucrare, stocare, transmitere). ii) S-i formeze i modeleze modul de gndire i abordare a problemelor. Asemenea tuturor ramurilor tiinei, Informatica dezvolt gndirea, avnd un rol esenial n procesul

3 de nvare, n formarea caracterului i a personalitii. n plus, Informatica formeaz i dezvolt o manier sistemic de abordare, provoac o analiz progresiv a detaliilor, o rezolvare n contextul general a problemelor particulare. Aceasta este gndirea algoritmic, practic, diferit cumva de gndirea teoretic i abstract. Aceast manier de abordare a problemelor leag cunotinele de programare de contextul bazei de date pe care o prelucreaz i de cel al soluiilor pe care le va obine. Formarea unei gndiri algoritmice, analitice i sistematice i a unui mod de lucru ordonat are consecine deosebite n evoluia viitoare a elevului i este un obiectiv esenial al studiului informaticii n nvmntul preuniversitar. iii) S-i formeze i s-i dezvolte deprinderi de a munci individual i n echip. Cu riscul de a ne repeta, trebuie s subliniem c, chiar dac munca n Informatic este aparent individual, activitatea colectiv este esenial n conceperea i realizarea bazelor de date mari i a produselor software de dimensiuni medii sau mari. Se impune formarea la elevi a acelor deprinderi elementare de lucru cu calculatorul, care ofer ansa unei nvri n ritmul propriu al fiecruia, dar i posibilitatea asimilrii lucrului n echip. Acesta va fi un element de esenial de integrare social i va conduce la formarea unor trsturi de caracter care poate oferi o alternativ civilizat individualismului. n viaa real activitile nu se desfoar izolat, de aceea se impune realizarea unor aplicaii complexe care necesit lucrul n grup, modularizarea programului i pstrarea contactelor cu ceilali membri ai grupului. Se realizeaz astfel asumarea responsabilitii, cu privire la finalizarea propriei munci i asigurarea condiiilor de finalizare a activitii celorlali membri ai colectivului. Conducerea raional a activitii de proiectare i programare, dezvoltarea intuiiei, face ca elevul s capete ncredere n propriile-i fore. iv) S capete deprinderi care-l vor ajuta s devin un utilizator profesionist, adic s dobndeasc cunotinele necesare exploatrii resurselor hardware i software puse la dispoziie de tehnologia informatic actual. Pentru aceasta, elevul trebuie s-i formeze o cultur general informatic, care presupune identificarea i nelegerea principalelor componente ale calculatorului, funcionarea reelelor de calculatoare, s dobndeasc deprinderile necesare de utilizare a noilor produse software. Punctm din nou c pentru atingerea acestui ultim obiectiv cadru, trebuie urmrite, n mod difereniat, mcar urmtoarele obiective de referin: Cunoaterea pn la un anumit nivel de detaliu, a sistemele de operare/mediilor de programare cele mai des folosite ( MS-DOS, Windows, Unix, Linux etc.). Cunoaterea structurii i arhitecturii sistemelor de calcul i a noiunilor elementare de hard, care s le permit s-i fac o impresie precis despre caracteristicile tehnice ale oricrui calculator. Cunoaterea unui limbaj de programare de nivel nalt (Pascal, C, Prolog, Java etc.) i a noiunilor elementare despre limbajele de asamblare (mcar n liceele de specialitate), a limbajului VisualBasic sau, de ce nu, Logo (chiar n gimnaziu). Cunoaterea tehnicilor de proiectare a produselor program cu caracter tiinific, a metodelor de elaborare a algoritmilor, a algoritmilor fundamentali, a tehnicilor de

4 optimizare a algoritmilor (elevii ar trebui s aib i capacitatea de apreciere destul de exact a complexitii algoritmilor). Cunoaterea unor noiuni privind analiza i proiectarea aplicaiilor de gestiune economic i cunoaterea unui sistem de gestiune a bazelor de date, procesoare de calcul tabelar etc. Cunoaterea celor mai uzitate programe utilitare, editoare de texte i editoare grafice, pachete de programe de compresie (arhivare), programe antivirus, noiuni primare de inginerie de sistem etc. Cunoaterea principalelor modaliti de exploatare ale facilitilor oferite de reele (locale i interconectate), servicii Internet, documente Html, faciliti multimedia etc. v) Formarea unei conduite i a unei moraliti profesionale este un obiectiv esenial. n Informatic, respectarea strict a eticii profesionale este o necesitate din motive de respectare a legii copywrite-ului. Elevii trebuie s contientizeze impactul social al dezvoltrii Informaticii care poate chiar modifica societatea, de aici rezultnd necesitatea nelegerii rolului pe care l are aceasta n schimbrile din viaa social, economic, a aspectelor etice ce deriv din aceste schimbri, a avantajelor i riscurilor impuse de utilizarea calculatoarelor. Elevii trebuie s cunoasc prevederile legale cu privire la dreptul de autor, confidenialitatea informaiilor, proteciei bazelor de date, efectele dezvluirii informaiei sau distrugerii ei prin spargeri de parole de protecie, virusare, transfer neautorizat etc. Formarea trsturilor de caracter nu se poate realiza fr o cunoatere a istoricului dezvoltrii Informaticii ca un domeniu al culturii, fr o cunoatere a realitii i a perspectivelor, fr impunerea respectului fa de valorile materiale i umane, a respectului fa de munca colegului sau a colectivului din care elevul face sau va face parte. Acest aspect trebuie avut n vedere pe toat durata colarizrii elevului i nu trebuie s apar ca un scop n sine, ci ca un element de coloratur, n contextul predrii altor noiuni. Formarea unor trsturi ale personalitii elevilor, exprimate i ilustrate prin nsi produsele lor informatice fac din imaginea unui text surs, din modul de organizare a instruciunilor n program, o oglind fidel a personalitii intelectuale i sociale a elevului.

2. PRECIZAREA OBIECTIVELOR
Succesul oricrei activiti didactice este condiionat de claritatea i ordonarea obiectivelor pe care acesta le urmrete. Mai mult dect n oricare alt domeniu, procesului de nvmnt informatic i este caracteristic intenionalitatea, orientarea ctre realizarea unor obiective, spre producerea unor schimbri i transformri care s poat fi controlate i dirijate. n acest spirit, cea mai important condiie pentru reuita predrii Informaticii este structurarea, contientizarea i ierarhizarea unor obiective generale i specifice, adaptate particularitilor de vrst ale elevilor, coninutului

5 cunotinelor i pregtirii tiinifice i metodice a elevilor. Un obiectiv didactic este o descriere a unui ansamblu de comportamente i performane de care elevul trebuie s se arate capabil. Un obiectiv este o intenie comunicat printr-o declaraie ce descrie modificrile pe care dorim s le provocm elevului. Obiectivele integreaz organic comportamentul, adic activitatea vizibil manifestat de elev ct i activitatea mental mai puin vizibil. Obiectivele generale ale predrii Informaticii au anumite determinri care trebuie s pun n eviden: - Importana Informaticii n lumea contemporan, n tiin, n tehnic sau economie. - Necesitatea nvmntului de Informatic i rolul acestuia n formarea culturii generale i nu numai. - Necesitatea dezvoltrii capacitii intelectuale i a gndirii algoritmice. - Necesitatea formrii elevului pentru activitile viitoare, ca utilizator al calculatoarelor, la diferite nivele. Fixarea obiectivelor generale ale Informaticii trebuie s rspund la mcar la urmtoarele dou ntrebri: De ce se pred informatica n coal? Ce se urmrete prin includerea ei n planul de nvmnt? Obiectivele predrii tiinelor informatice n coal includ cu siguran: - Trezirea interesului pentru studiul acestora. - Formarea priceperilor i deprinderilor de baz n utilizarea i exploatarea calculatoarelor. - Stimularea creativitii. - Integrarea utilizrii Informaticii n modul de gndire i de via al elevului. n afara obiectivelor sale generale, Informatica particip prin mijloace ce-i sunt proprii la modelarea personalitii, nu numai sub aspect intelectual ci i sub aspect estetic i moral (estetic: programarea este o art iar personalitatea autorului se manifest prin opera sa; moral: activitatea n domeniul Informaticii nu se poate desfura n afara unei etici profesionale sntoase, dac ne gndim doar la pericolul hacker-ilor i la relaia defectuoas a acestora cu cyber-space-ul virtual de pe Internet). Dintre obiectivele specifice, putem desprinde anumite obiective derivate care pot fi la rndul lor structurate pe trei nivele: Nivelul obiectivului (elev). Nivelul subiectului (profesor). Nivelul aciunii comune. La nivelul elevului, obiectivele derivate sunt: - Integrarea i asimilarea cunotinelor cuprinse n program. - Memorarea activ a acestor cunotine. - Dezvoltarea judecii deductive i inductive. - Contientizarea procedeelor ce stau la baza raionamentelor. - Formarea capacitii de analiz i sintez.

6 - Formarea capacitii de structurare i planificare. - Formarea capacitii de abordare a unei probleme complexe. La nivelul subiectului (profesor), obiectivele derivate se refer la capacitatea de apreciere a fenomenelor i rezultatelor. Nivelul aciunii are n vedere asimilarea de ctre elev a noiunilor i aplicarea lor n practic. Pe baza acestor consideraii se pot elabora i delimita obiectivele operaionale ale fiecrui capitol, lecie .a.m.d. cu detalierea fiecrei componente. Formularea obiectivelor operaionale trebuie fcut n termeni comportamentali ct mai precii, care s exclud formulri vagi. Formularea obiectivelor operaionale presupune: - Identificarea performanei finale care trebuie realizat. - Descrierea n detaliu a condiiei eseniale n care poate s se produc comportamentul respectiv. - Precizarea nivelului de performan la care trebuie s se ajung pentru a fi acceptat ca atare. n acelai timp, trebuie s se cunoasc: - Cine va dirija modelarea unui comportament dorit ? - Ce comportament observabil va dovedi c obiectivul a fost atins? - Care va fi produsul (performana) acestui comportament? - n ce condiii trebuie s aib loc comportamentul? - Pe baza cror criterii apreciem c produsul este satisfctor?

3. ANALIZA RESURSELOR
n acest moment trebuie s rspundem la ntrebarea: Cu ce pot realiza obiectivele stabilite ? Sunt necesare: - O analiz a resurselor psihologice, care necesit cunotine de psihologia copilului, a capacitii de nvare, a particularitilor de vrst i natur psihic, motivaia nvrii etc.; - O analiz a resurselor materiale. - O analiz a coninutului nvrii. Programa colar determin coninutul nvrii, dar acest coninut este prelucrat dup dou categorii de obiective: informative (ce va ti elevul?); formative (ce va putea face elevul?). Aceast clasificare trebuie s stea la baza ntocmirii planului calendaristic. ntocmirea planificrii calendaristice se poate face dup urmtoarea procedur: - Se va selecta din manual coninutul informativ propus de program. - Acest coninut va fi coroborat cu coninutul formativ pretins (priceperi, deprinderi, abiliti). - Ambele vor fi raportate la elementul timp prin stabilirea numrului de ore afectate fiecrei teme.

7 O posibil rubricaie pentru planificarea anual este urmtoarea: Planificare anual Disciplina : Sisteme de calcul (opional) Clasa a IX -a : Profilul matematic-informatic

Disciplina

Capitolul

Sisteme de calcul (opional)

1. Sisteme de calcul (evoluie, generaii de calculatoare, caracteristici) 2. Arhitectura general a unui sistem de calcul 3. Sisteme de operare 4. Sistemul de operare MS-DOS 5. Comenzi interne 6. Comenzi externe 7. Recapitulare 8. Fiiere de comenzi 9. Sistemul de operare UNIX 10. Sisteme multiutilizator 11. Comenzi UNIX 12. Editoare de text UNIX 13. Mediul Shell 14. Mecanismul realizrii proceselor 15. Recapitulare final

Semestru l I II 2

Total ore 2

3 1 1 3 3 1 2 1 1 4 3 3 2 1 17

3 1 1

1 6 2 1 1 4 3 3 2 1 34

Total

17

Pentru realizarea obiectivelor generale, odat ce acestea au fost stabilite, este necesar elaborarea unei planificri semestriale pe capitole, detaliate la nivel de lecie. Pentru fiecare capitol se fixeaz un obiectiv general (final), care orienteaz formularea obiectivelor operaionale pentru fiecare lecie. Aceste obiective se formuleaz innd seama de criteriile de coninut (reprezentate prin obiectivele operaionale) i criteriile relative (analiznd performana unui elev prin comparaie cu performana clasei lui sau altor clase din aceeai coal sau din alte coli). Astfel, criteriile de optimalitate vizeaz

8 creterea performanei n termeni relativi i de coninut. O posibil rubricaie pentru o planificare semestrial poate fi urmtoarea: Planificare calendaristic semestrial Disciplina : Sisteme de operare Semestrul I Capitolul / Sptmna 1. Sisteme de calcul (evoluie, generaii de calculatoare, caracteristici) 1-2 2. Arhitectura general a unui sistem de calcul 3-5 Nr. Subiectul leciei Nr. ore ore Lecie 2 1.Tipuri de sisteme de operare 1 (evoluie, caracteristici) 2. Suporturi de memorare 3 1. Arhitectura unui sistem de calcul 2. Prile componente ale unui sistem 3. Structura i funcionarea unui sistem de calcul 1. Sisteme de operare. Exemple, aprecieri, studiul comparativ 1. Definiie, funcii, structur 1

3. Sisteme de operare 6 4. Sistemul de operare MSDOS 7 5. Comenzi interne 8-10

1 1

1 1

Comenzi externe 11-13 Recapitulare 14

1. Comenzi pentru lucru cu directoare 2. Comenzi pentru lucru cu fiiere 3. Comenzi pentru pregtirea i utilizarea discurilor 1. Principalele comenzi externe 2. Programe utilitare curente 1. Recapitulare

1 1

4. ELABORAREA STRATEGIEI DIDACTICE


Elaborarea strategiei presupune alegerea unui sistem de forme, metode, materiale i mijloace. De selectarea i combinarea acestora depinde reuita activitii didactice. Selectarea tehnicilor de nvare se face n funcie de materialele didactice, care sunt dependente de metodele utilizate, iar metodele sunt determinate de obiective, coninut i colectivul de elevi. Astfel, obiectivele operaionale informative vor pretinde metode mai

9 pasive (profesorul spune - elevul ascult). mbinarea judicioas a celor 3M (Metode, Materiale, Mijloace), asigur succesul leciei. Aceast corelare este gndit din momentul ntocmirii scenariului didactic prin care se nelege o descriere anticipat a desfurrii pas cu pas a unei lecii. Gradul de detaliu vizeaz aspectele eseniale ale condiiei elevului i schimbrile pe care dorim s le realizm.

5. MOMENTELE LECIEI
Desigur c principalele momente ale unei lecii pot fi sumarizate dup cum urmeaz: Captarea ateniei. Enunarea obiectivelor. Reactualizarea cunotinelor nvate anterior. Prezentarea coninutului noii lecii. Dirijarea nvrii. Asigurarea feed-backului. Intensificarea ateniei. Asigurarea transferului de cunotine. Succesiunea i importana lor variaz de la lecie la lecie, de la tip la tip de lecie. Leciile pot fi mprite n trei mari categorii (vor exista desigur lecii mixte): De comunicare de noi cunotine. De fixare i formare de priceperi i deprinderi. De recapitulare i sistematizare. Subliniem nc odat c lecia este n concepia noastr un act de creaie care nu se poate ncadra n abloane. Profesorul se bazeaz doar pe anumite sugestii pentru ntocmirea de diverse scenarii. Vom prezenta n continuare un proiect de tehnologie didactic pentru o lecie mixt. Proiect de tehnologie didactic Disciplina: Sisteme de operare. Profesor: -. Clasa: a IX a. Data: 7.03.2000 (Semestrul I sptmna 10). Tema leciei : Comanda Format. Obiective: nsuirea i formarea deprinderilor de utilizare a suporturilor magnetice n diverse situaii limit (nainte de orice utilizare, la incidente, etc.). Legarea i ncadrarea acestei deprinderi de cele dobndite anterior. Material didactic: Calculator echipat cu hard-disc i uniti de disc flexibil de 3 1/2 i/sau 51/4, precum i suporturile magnetice aferente.

10

Metode: metoda demonstraiei (practice). Evenimentele leciei care duc Activiti ale leciei la realizarea obiectivelor. (metod) Strategia didactic 1. Captarea ateniei i trezirea Profesorul arat c se va studia o interesului pentru lecie comand nou extrem de util n (1 minut) folosirea calculatorului fr de care activitatea ar fi aproape imposibil. 2. Informarea elevului asupra Profesorul cere elevilor s se gndeasc obiectivului urmrit la modul n care ar trebui s acioneze (2 minute) dac doresc s pstreze anumite informaii de pe hard-disc sau dac ar constata un incident care privete sistemul de operare. 3. Reactualizarea cunotinelor Fiiere sistem, ncrcarea sistemului dobndite anterior memorarea fiierelor, pstrarea lor. (5 minute) (Conversaie) 4. Dirijarea nvrii Profesorul prezint comanda. (10 minute) Se pleac de la simplu la complex. Format A: Format A: /V /Q /U 5. Prezentarea materialului Profesorul prezint unitile de disc stimulativ (calculator i flexibil precum i principalele lor dischete) caracteristici (3 minute) 6. Asigurarea conexiunii inverse Ce facem dac unitatea i discul flexibil (3 minute) difer ? /N /T (Problematizare) 7. Obinerea performanelor Elevii execut formatri cu diverse (10 minute) opiuni (Munc independent) 8. Dirijarea nvrii Profesorul prezint o dischet defect. (4 minute) Soluii de reutilizare 9. Evaluarea performanei Formatarea unei dischete de 720 pe o (3 minute) unitate de 1,2 ( programul ATDQ i variante) 10. Recapitulare (6 minute) Stabilirea formei generale 11. Tema pentru acas (4 Se recapituleaz noiunile predate minute) (fixarea cunotinelor) Evaluarea este posibil numai n cazul n care formularea obiectivelor a fost fcut n termeni comportamentali precii, care evideniaz performana ateptat de la elevi. Este de altfel necesar s organizm aciuni care s ne permit s constatm

11 realizarea acestei performane i s nu scpm din vedere efortul depus pentru obinerea lor. Evaluarea trebuie fcut dup criterii absolut obiective. Fixarea unui obiectiv i principiu (ce se face i ce se obine), este decisiv pentru construirea unui plan de lecie. Aceasta este baza pentru construcia planului de lecie i a prezentrii (alegerea metodelor i materialelor didactice necesare).

6. CLASIFICAREA OBIECTIVELOR
Exist n realitate dou mari categorii de obiective care trebuiesc avute n vedere n momentul proiectrii unei lecii: Obiective sub raport stadial. Obiective sub raport psiho-pedagogic.

6.1. Obiective sub raport stadial


Aceste obiective, la rndul lor, se pot mpri n: Obiective fundamentale (finale). Acestea definesc elementele i sarcinile rezultate din delimitarea scopului final al educaiei, cum ar fi cele legate de formarea unei personaliti puternice, complexe, cu o mare dispoziie spre iniiativ i creativitate. Avem n vedere: - Formarea capacitii de asimilare a cunotinelor de ctre elevi. - Formarea capacitii de transfer a cunotinelor i a experienei deja dobndite la rezolvarea unor sarcini necunoscute, aprute pe parcursul derulrii procesului didactic. - Formarea limbajului tiinific de profil. - Formarea unei atitudini tiinifice; trebuie creat un respect al elevului pentru tiin i importana acesteia n evoluia sa ulterioar; acesta trebuie s neleag c procesul de cunoatere nu se ncheie ntr-o perioad determinat de timp, c procesul de cercetare - pentru a fi eficient - trebuie s prelucreze orice informaie n mod critic, abinndu-se de a face afirmaii categorice/definitive. Obiective intermediare. Asemenea obiective sunt formulate n planul-cadru al procesului de nvmnt (privit ca un sistem complex i ntr-o permanent evoluie). n primul rnd, se urmrete dobndirea unei culturi generale de baz (n nvmntul preuniversitar), a unei culturi de specialitate (n nvmntul superior), sau chiar a unei meserii (coli de profil). Obiective secveniale. Acestea reprezint obiectivele specializate, orientate spre anumite laturi ale procesului de educaie: intelectual, tehnologic, profesional, moral, estetic, fizic etc. Obiective operaionale. Ele privesc ndeplinirea concret a unor activiti curente, cum ar fi cele legate de predarea unei lecii sau de exemplificarea unor teme de laborator.

12

6.2. Obiective sub raport psiho-pedagogic


Ele reprezint obiectivele didactice necesare formrii de capaciti intelectuale (teoretice, practice) i/sau afective. i acestea le putem submpri n mai multe categorii: Obiective cognitive/de cunoatere. Prin acestea se urmrete formarea/dezvoltarea urmtoarelor capaciti intelectuale: - cunoaterea: posibilitatea, n principal, a ndeplinirii sarcinilor legate de memorarea, reproducerea i recunoaterea materiei de asimilat; - nelegerea: se refer la transpunere, interpretare i extrapolare. 1. Transpunerea nseamn reformularea unei definiii/noiuni/rezultat cu propriile cuvinte; de exemplu, traducerea unui algoritm dintr-o reprezentare oarecare ntr-un limbaj implementat. 2. Interpretarea nseamn nelegerea comportrii/evoluiei unui obiect/sistem dat, ntr-un context/mediu clar precizat. 3. Obiectivele (legate) de extrapolare au drept consecin cptarea ndemnrii de a se evidenia consecine noi, neidentificate nc n procesul anterior. - analiza: demonstreaz capacitatea elevului de a gndi discriminativ, profund, deductiv, de a distinge faptele concrete (noi) de ipotezele (generale) de lucru; - sinteza: vizeaz - n principal - activitatea intelectual de corelare logic a fenomenelor observate i a cunotinelor asimilate, n vederea realizrii unor lucrri cu caracter personal; - evaluarea: implic posibilitatea formulrii de ctre elevi a unor judecti de valoare, originale (de natur tiinific, social, cultural), raportate bineneles la cantitatea de informaii acumulate pn n acel moment. Obiective psihomotorii/acionale. Asemenea obiective includ formarea de perceperi, capaciti, deprinderi motorii/practice legate de utilizarea corect a ntregii aparaturi de laborator (tastatur, mouse, joy-stick, etc.). Totul trebuie nsuit ntr-un mod profesional i utilizat rapid, precis, cu o bun coordonare a micrilor i implicnd agilitate i suplee. Obiective afective (conative). Acestea au scopul de a dezvolta emoii i sentimente superioare, contribuind la formarea contiinei i conduitei morale, vizeaz deci, n mare, formarea intereselor, atitudinilor i valorilor etico-morale, a personalitii elevului. Personalitatea poate fi format ncepnd cu o vrst foarte fraged, etapizat i utiliznd idei, norme, practici i valori deja recunoscute. Dei nu crearea de asemenea deprinderi reprezint scopul principal al predrii Informaticii n gimnaziu/liceu, rezultatele indirecte pot fi spectaculoase. S ne amintim doar de societatea informaional i de faptul c practic - Informatica poate deveni un mediu de lucru pentru toate celelalte discipline.

13

7. FORMULAREA I OPERAIONALIZAREA OBIECTIVELOR


Nu considerm c este scopul principal al acestei cri de a intra n detaliile elaborrii unui plan de nvmnt sau a unei programe analitice pentru o disciplin specific, fie ea tiina calculatoarelor sau tehnologia informaiei i comunicrii. Acestea fac parte din strategiile (pe termen scurt sau lung) de dezvoltare/promovare a disciplinei i sunt de competena Consiliilor Profesorale, Inspectoratelor colare, Senatelor Universitare, Ministerului Educaiei Naionale etc. n momentul n care un plan de nvmnt i o program analitic sunt ns fixate, formularea obiectivelor este obligaia profesorului i constituie o parte indispensabil a oricrei planificri didactice generale. Operaionalizarea acestora, presupune n plus faptul c un cadru didactic are o orientare global i coerent asupra ntregului proces de nvmnt, c el cunoate i aplic n mod curent elementele de metodic, c procesul n sine de coordonare a nvrii n clas nu mai are secrete. n urma oricrei lecii, elevii trebuie s dobndeasc anumite cunotine, s aib abilitatea de a le structura (analiza, sintetiza) n mod creator. Acetia trebuie s aib i posibilitatea de a se manifesta direct, intervenia profesorului trebuind s fie mai degrab discret. Prin urmare, operaionalizarea nseamn transpunerea scopurilor urmrite de obiectivele formulate n termenii unor operaii sau aciuni sau manifestri observabile i aflate n concordan cu cerinele generale. Obiectivele operaionale sunt imediate, putnd ns avea n anumite situaii i o finalitate pe un termen mai lung; aceasta n ideea c deprinderile i cunotinele dobndite anterior vor trebui s fie completate prin aciuni viitoare care s contribuie decisiv la includerea lor n sistemul individual de informaii i ndemnri. Dac, la un moment dat, avem n vedere o cantitate mai restrns de date (informaii), vom urmri definirea a cte unui obiectiv de recunoatere, de nelegere, de aplicare, de reprezentare etc. Dac aceast cantitate este mai complet (sau mai complex), putem aduga i un obiectiv general (de genul formare i utilitate). Operaionalizarea obiectivelor trebuie s implice, eventual gradat, etape diferite de dificultate care s precizeze: - obiectivele n termeni comportamentali observabili; - sarcinile concrete de nvare, precum i contextul de realizare; - informaia (final) cerut de obiectiv; - criteriul de succes i modul de evaluare. Considerm util s ncheiem i acest capitol cu un exemplu general.

8. EXEMPLU
Vom prezenta o implementare a algoritmilor de parcurgere a grafurilor (neorientate) de tip BFS (Breadth First Search) i DFS (Depth First Search) pornind de la un nod fixat i. Pe scurt, aceti algoritmi pot descrii n felul urmtor. La o mulime S (iniial, aceasta are un singur element i anume pe i) deja selectat de noduri se adaug la fiecare pas un nod nou dintre cele neselectate nc. Noul nod este succesorul unui nod

14 (ales) j din S. n cazul BFS, se parcurge graful n lime, adic se viziteaz vecinii nodului j care nu sunt n S i procesul continu ntr-un mod similar. n cazul DFS, procedeul anterior este aplicat fiilor direci ai nodului j. Coada (respectiv stiva) pot fi utilizate pentru o implementare performant a algoritmilor BFS i DFS. Pentru detalii, se pot consulta <16, 21, 25, 30>. (?????-trebuie pus)

15

CAPITOLUL 5

Metode, tehnici, procedee didactice

Sarcinile didactice se realizeaz cu ajutorul metodelor, tehnicilor i procedeelor didactice. Folosirea judicioas a acestora are o deosebit importan pentru reuita activitii de la catedr. Pe de alt parte, coninuturile fiecrei discipline i obiectivele pe care i le propune s le ndeplineasc pretind metode specifice. Adoptarea i nu adaptarea metodelor de predare ale unor discipline la alte discipline pot conduce la rezultate contradictorii. Aplicarea metodelor, tehnicilor i procedeelor didactice genereaz activiti de nvare specifice.

1. METODE GENERALE DE NVARE


Trebuie s avem n vedere care dintre obiectivele operaionale, rezultate n urma studierii obiectivelor cadru i de referin sunt urmrite prin studiul disciplinelor de Informatic, ce cunotine noi vor asimila elevii i ce cunotine deja dobndite n cadrul altor discipline vor fi utilizate. Cert este c Informatica poate adopta i adapta metode de predare de la alte discipline, dar acest lucru trebuie s se fac inndu-se cont de: dinamica coninuturilor i particularitile metodice ale predrii disciplinei; individualizarea nvrii Informaticii ca disciplin deschis i dinamic; constructivism, care pretinde o participare prioritar contient a elevului la procesul de autoinstruire; studiul Informaticii att ca disciplin autonom ct i ca instrument operaional al altor discipline. Dintre metodele de predare specifice, de exemplu, Matematicii, amintim: Metoda demonstraiei. Metoda reducerii la absurd. Metoda induciei matematice (structurale). Aceste metode nu fac obiectul crii de fa. Cititorul interesat poate consulta <2>, <10>, <38>. n cele ce urmeaz se vor analiza metodele generale utilizate n predarea Informaticii: 1. Expunerea (sistematic, a cunotinelor). 2. Conversaia. 3. Problematizarea. 4. Modelarea. 5. Demonstrarea folosind materialul intuitiv.

16 6. Exerciiul. 7. nvarea pe grupe mici. 8. Munca cu manualul. 9. Jocurile didactice. 10. Instruirea programat. n tratarea acestor metode se vor urmri cu predilecie particularitile specifice predrii disciplinelor de Informatic i n special, aplicaiile practice de laborator i contribuia Informaticii la realizarea obiectivelor didactice ale altor discipline din nvmntul preuniversitar.

1.1. Expunerea sistematic a cunotinelor

17 Dintre formele pe care le mbrac expunerea sistematic a cunotinelor (povestirea, prelegerea, descrierea, explicaia, conversaia etc.), opinm c Informatica utilizeaz cu precdere explicaia. Elementele explicative domin procesul de instruire informatic, acestea fiind caracteristice atingerii unor obiective de referin care cuprind formarea de deprinderi i abiliti practice de utilizare a unor produse soft deseori complicate i dominate de interfee neprietenoase fa de utilizator (netransparente). Ceea ce confer o accentuat not de adaptabilitate este operativitatea impus de aplicarea acestei metode prin alternarea expunerii cu demonstraia practic, elevii fiind astfel scoi din pasivitatea posturii de simpli receptori. Analogiile cu situaii cunoscute fac din receptorul pasiv un participant activ la expunere. Expunerea, nici la disciplinele crora le este caracteristic ca metod, nu se desfoar n condiii perfect univoce, adic fr alternative i reveniri. La informatic aceasta se ntmpl cu att mai puin. Elevul primete n condiii univoce doar ceea ce i se comunic n funcie de nivelul de cunotine dobndit, de propriile-i presupuneri, de experiena sa practic, de nivelul su de gndire, de nelegerea codului de comunicaie, ca s nu mai vorbim de oscilaiile de atenie. Profesorul trebuie s reproiecteze lecia prin prisma posibilitilor elevilor i cu mijloacele lor de gndire. Accentul trebuie pus pe raionament, prin argumentri temeinice, prin scoaterea n eviden a modului n care trebuie s gndeasc. Expunerea trebuie s fie nsoit de un control permanent al gradului de receptivitate al clasei, urmrindu-se mimica elevilor (edificatoare n special la elevii mici), satisfacia nelegerii leciei sau ngrijorarea i nelinitea n cazul n care elevul a pierdut firul explicaiei citindu-se pe faa elevilor. ntrebrile, repetiia, explicaiile suplimentare, analogiile cu alte noiuni cunoscute, permit realizarea unui control permanent al receptivitii la expunere. n Informatic recurgem neaprat la metoda expunerii (explicaiei) atunci cnd tema este complet nou i printr-o metod activ nu se poate descoperi noutatea, sau metoda activ este ineficient din punct de vedere al operativitii. Astfel este necesar aceast metod pentru a nelege noiunea de algoritm (inclusiv exemplificrile clasice), de structur de date (inclusiv modalitile de reprezentare), de comand, funcie sau procedur standard (n legtur cu sistemul de operare sau mediul de programare ales), de raionament (ntr-un spaiu nchis ales) i chiar a modalitii de prezentare i introducere a unor programe utilitare, soft-uri de aplicaie etc. n acest context, pentru prezentarea comenzilor unui sistem de operare, a unui editor de texte (sau grafic), a altor soft-uri mai complicate (prevzute de programa colar), se poate recurge la urmtoarele (sub)metode: Expunerea (la tabl, prin slide-uri pe retroproiector sau prin PowerPoint) cu desenarea meniurilor i prezentarea funciilor fiecrei opiuni, urmnd ca elevul (prin aplicaiile de laborator) s exerseze fiecare funcie n parte, individual sau n grupe mici de lucru.

18 Prezentarea meniurilor i funciilor fiecrei opiuni simultan cu exersarea acestora n cadrul orelor de aplicaii practice de laborator. Prezentarea meniurilor i funciilor fiecrei opiuni simultan cu demonstrarea practic n momentul prezentrii lor de ctre profesor, sarcina elevului fiind numai aceea de a urmri i reine modul de executare a operaiilor prezentate de profesor, urmnd ca elevul s aplice cunotinele dobndite n cadrul orelor de laborator, n aplicaii ample (integrate, de dorit, ntr-un mediu economic clar) care necesit utilizarea n mod repetat i n situaii diferite a funciilor fiecrei opiuni din meniul discutat.

19 Fiecare dintre variantele de mai sus au avantajele i dezavantajele lor. Prima variant este cea mai des folosit datorit faptului c de regul profesorul nu are la dispoziie un laborator i pentru predare (iar aceasta se face cu ntreaga clas). Ea prezint dezavantajul c elevul nu vede pe viu efectul executrii fiecrei opiuni (profesorul fiind nevoit n acest caz s-l descrie n cuvinte), dinamica transformrilor i efectul video al acestora fiind greu de redat n cuvinte. Singurul avantaj este cel al obinerii de ctre elev al unui rezumat logic i coerent dup care se va ghida n timpul realizrii unor aplicaii practice. A doua variant nltur dezavantajul neobservrii pe viu a efectului executrii fiecrei opiuni, dar atenia elevului este ndreptat spre realizarea practic (simultan cu comunicarea modului de realizare a funciilor opiunilor din meniuri). Astfel, o parte dintre funcii sunt abordate prea abrupt sau sunt chiar omise, iar altele sunt exersate prea mult. La acest dezavantaj se adaug i reducerea randamentului prin faptul c profesorul trebuie s urmreasc modul n care fiecare elev sau grup aplic funcia prezentat i s intervin ori de cte ori un elev sau o grup este n impas. n plus, unii elevi i formeaz mai repede deprinderea utilizrii iar alii mai greu, primii fiind tentai s ncerce ntre timp alte opiuni (chiar neprezentate nc de ctre profesor), ceea ce creeaz disfuncionaliti n desfurarea leciei, aprecierea gradului de asimilare i chiar formarea unor idei greite de utilizare (datorate ncercrilor individuale, necoordonate). Pe lng acestea, se pierde din vedere i realizarea unui rezumat sistematic al modului de utilizare, elevul fiind tentat s exerseze imediat funcia i uit s-i noteze n stil propriu modul de utilizare al acesteia. Ultima variant pare s cumuleze toate avantajele celor anterioare prin faptul c elevul urmrete i reine (neavnd alte preocupri care s-i distrag atenia) modul n care profesorul execut (corect) i explic simultan, elevii putnd nota tot ceea ce acesta prezint. Aceast manier de expunere nltur formarea unor deprinderi greite, mrind randamentul la predare i asimilarea noilor cunotine. Aceast variant are ns i un dezavantaj. Este vorba despre necesitatea existenei unei dotri speciale, care s permit observarea n bune condiii de ctre toi elevii clasei a ecranului calculatorului pe care profesorul face demonstraia. Utilizarea unui retroproiector sau a unui videoproiector are multe inconveniente (nafar de costul ridicat), printre care faptul c trebuie s existe anumite condiii de mediu specifice n sala se clas. De exemplu, pentru grupe mici poate fi folosit numai calculatorul ca atare, dac elevii pot fi aezai n preajma acestuia astfel nct fiecare s poat observa fr efort ecranul. Indiferent de coninutul leciei, metoda expunerii nu se folosete singur dect foarte rar pe parcursul unei ore ntregi, aceasta alternnd cu alte metode de predare. Pe de alt parte, exist o tendin accentuat a cadrelor didactice de a nu-i propune aprioric folosirea cu precdere a niciunei metode, ceea ce este foarte duntor.

1.2. Metoda conversaiei

20

Metoda conversaiei se refer la dialogul dintre profesor i elev, n care profesorul nu trebuie s apar n rolul examinatorului permanent, ci n rolul unui colaborator care nu numai ntreab ci i rspunde la ntrebrile elevilor. Prin metoda conversaiei se stimuleaz gndirea elevilor n vederea nsuirii, fixrii i sistematizrii cunotinelor i deprinderilor, n vederea dezvoltrii spiritului de colaborare i de echip. Se asigur astfel o participare activ din partea elevilor, ntrebrile putnd fi adresate (teoretic) n orice moment al leciei. Metoda conversaiei este frecvent utilizat n nvarea Informaticii, ea implicnd un dialog continuu ntre elev i profesor, respectndu-se anumite reguli elementare de colaborare constructiv care s nu determine diminuarea demersului didactic, ci s-l amplifice i s-l consolideze. Conversaia didactic poate s mbrace forme diferite n funcie de anumite criterii. n funcie de numrul de persoane, ea poate fi: Individual. Se poart ntre un elev i profesor. Colectiv sau frontal. ntrebrile sunt adresate ntregii clase, iar rspunsurile vin de la diferii elevi. Dup obiectivele urmrite n diferite variante de lecii, conversaia poate fi: Introductiv. Aceasta este folosit n momentul captrii ateniei i reactualizrii cunotinelor asimilate anterior, pentru a trezi interesul pentru lecia care urmeaz. Expozitiv. n timpul prezentrii unei noi lecii, ea poate trezi interesul pentru fixarea noilor cunotine. Recapitulativ. Este utilizat atunci cnd se urmrete recapitularea i generalizarea unor rezultate prezentate anterior. Evaluativ. Este indicat desigur pe parcursul procesului de verificare i evaluare. Dezvoltat. Aceasta este destinat prezentrii unui nou subiect, nu complet necunoscut.

21 Caracteristicile principale ale ntrebrilor, indiferent de forma de conversaie, impun precizie i vizarea unui singur rspuns. De multe ori se pun ntrebri vagi care ncep cu Ce putei spune despre sau Ce tii despre , care plaseaz elevul ntr-un dubiu total n legtur cu coninutul rspunsului. Din aceeai gam face parte i celebrul ndemn de evaluare Prezint subiectul pe care-l cunoti tu cel mai bine. ntrebarea nu este normal s conin rspunsul, sau s cear un rspuns prin diferit de da sau nu. Ea contribuie la dezvoltarea gndirii. De asemenea, rspunsurile acceptate trebuie s fie corecte, complete, exprimate n termeni precii, s oglindeasc o nelegere efectiv a problemei abordate. Discuiile au i rolul de a corecta greelile din rspuns. Identificarea cauzei, eliminarea greelii ct i posibilitatea reapariiei ei sunt foarte importante. Conversaia are un rol primordial prin faptul c ajut la formarea limbajului informatic, la dezvoltarea raionamentului logic i a gndirii elevului. Dificultile pe care elevul le ntmpin n formarea limbajului de specialitate pot lsa urme n plan afectiv, se pot repercuta asupra dezvoltrii intelectuale a acestuia. De aceea se impune o analiz amnunit a cauzelor acestor dificulti, iar scoaterea lor n eviden trebuie relevate prin examinri (scrise, orale, reprezentri schematice, utilizarea simbolurilor specifice). A fi la curent cu dificultile de limbaj pe care le au elevii la anumite vrste colare i la un anumit stadiu de nsuire a disciplinei nseamn n primul rnd s nu se abuzeze de termeni de specialitate (nlocuindu-i cu termeni sinonimi din vocabularul curent sau explicndu-le sensul, dac un alt neles al termenului este accesibil). Dificultatea formrii vocabularului de specialitate const i n faptul c aceste cuvinte noi sunt introduse n acelai timp cu introducerea noiunilor noi, ceea ce face ca mbogirea limbajului informatic s se fac simultan cu dezvoltarea i formarea gndirii informatice. Stpnirea limbajului se reflect n rezolvarea problemelor i nelegerea textelor i documentaiilor de specialitate. Nestpnirea acestuia provoac inhibiie, imposibilitatea comunicrii sau chiar o comunicare i o nelegere defectuoas, fcndu-l pe elev timid, incoerent sau chiar ridicol n exprimare. Aceast metod mai are i urmtoarele subdirecii: Euristic. Nu exist reguli precise, se bazeaz doar pe ntrebare/rspuns, n functie de evolutia concret a dialogului. Tip dezbatere. Se realizeaz un schimb de preri n care este implicat un anumit colectiv. Ar fi bine s fie trase i nite concluzii care s nu aib doar un rol istoric. Catihetic. Aceasta impune efectuarea unor teste care implic memoria. Este clar c o conversaie se face prin ntrebri. n plus, acestea trebuie s satisfac urmtoarele condiii (unele din ele rezultnd din ceea ce am amintit mai nainte): S fie precise (viznd un singur rspuns). S nu conin rspunsul i s aib un rol instructiv.

22 S stimuleze gndirea i capacitatea de creativitate a elevilor (De ce?, Din ce cauz?, n ce caz? etc.). S fie formulate prin enunuri variate i atrgtoare. S se adreseze ntregului colectiv vizat. S conin ntrebri ajuttoare atunci cnd rspunsul este eronat sau parial. Rspunsurile acceptate trebuie s fie nu numai corecte ci i exprimate n termeni precii i s oglindeasc un anumit nivel de nelegere. Rspunsurile eronate trebuie corectate imediat, prin discuii individuale. Cadrul didactic trebuie s dirijeze conversaia astfel nct ideile s fie bine conturate nainte de a trece la altele, n timp ce lecia i menine caracterul unitar. n ceea ce privete Informatica, recomandm i utilizarea unor instrumente ajuttoare ca de exemplu introducerea/exprimarea noiunilor printr-un limbaj de programare (scris/oral), care s implice utilizarea eficient a simbolurilor (n afar de latura didactic propriu-zis), ceea ce nseamn separarea clar a sintaxei de semantic.

1.3. Problematizarea i nvarea prin descoperire


Predarea i nvarea prin problematizare i descoperire presupun utilizarea unor tehnici care s produc elevului contientizarea conflictului dintre informaia dobndit i o nou informaie, determinndu-l pe elev s acioneze n direcia lichidrii acestuia prin descoperirea unor (noi) proprieti ale fenomenului studiat. Pedagogic vorbind, conflictele se mai numesc i situaii problem (problematizare), putnd fi de cel puin doua tipuri: Contradicii ntre posibilitile existente ale elevului (nivelul intelectual i de pregtire) i cerinele, situaiile n care este pus de noua problem. Aceste conflicte se datoreaz imposibilitii elevului de a selecta dintre cunotinele sale anterioare pe cele potrivite cu valoare operaional de aplicabilitate a viitorului. Incapacitatea elevului de a integra noiunile selectate ntr-un sistem, n acelai timp cu contientizarea faptului c sistemul este pe moment ineficient operaional (lucru care poate fi remediat doar prin completarea informaiei de baz).

23 ntrebrile frontale sau individuale utilizate n etapa de pregtire a introducerii unei noiuni, a prezentrii unui domeniu nou, ntrebri care se adreseaz capacitii de reacionare a individului pot genera noi situaii conflictuale de tipul menionat anterior. Pe ct posibil, cadrul didactic trebuie s gestioneze el nsui apariia situaiilor problem. La modul ideal, ele trebuie s apar de la sine n mintea elevului. Relativ la condiiile pedagogice ale acestor situaii conflictuale generate de anumite probleme practice putem spune c problemele trebuie s aib un sens precis i s fie enunate ntr-un moment optim al leciei. Ele trebuie s nglobeze cunotine anterior nsuite de elev, s le trezeasc interesul, s le solicite un anumit efort mental creator. Exist prerea c rezolvarea problemei poate fi privit ca un proces prin care elevul descoper c o combinaie de reguli nvate anterior se poate aplica pentru gsirea soluiei unei noi situaii conflictuale. n acest sens se pot evidenia urmtoarele etape n rezolvarea problemei: Prezentarea problemei (verbal, scris, grafic etc.). Definirea problemei de ctre elev n sensul distingerii caracteristicilor eseniale ale situaiei, nsuirii enunului, gsirii legturii ntre date, informaii etc. Formularea de ctre elev a anumitor criterii, ipoteze care pot fi aplicate n vederea gsirii unei soluii. Verificarea succesiv a unor asemenea ipoteze, eventual i a altora noi i gsirea efectiv a unei soluii (sau a tuturor). Desigur c n contextul de mai sus expresiile situaie conflictual, problem, rezolvare de problem se refer la probleme i soluii noi, necunoscute nc de elev i nu la ceva de tipul substituirii de valori numerice n expresii date, execuia unui program dat pentru nite valori de intrare etc. Utilizarea n predare a acestei metode este totdeauna util n momentul n care se i gsete rezolvarea conflictului. Descoperirea apare ca o ntregire a problematizrii. Se pot pune astfel n eviden trei modaliti principale de nvare prin problematizare i descoperire (clasificarea fcndu-se dup tipul de raionament folosit): Modalitatea inductiv. Modalitatea deductiv. Modalitatea prin analogie.

24 n primul caz este vorba de generalizri. Elevul trebuie ncurajat s i dezvolte propria cale de nvare, care s nu contrazic lucrurile n care deja crede, prin folosirea unor mijloace tehnice i resurse informaionale personale. n al doilea caz se folosete logica, sau mai exact sistemele deductive (ca metod de raionament). Putem deriva (obine) cunotine noi din cunotine vechi (cu ajutorul unor reguli de inferen specifice). n ultimul caz, se ncurajeaz folosirea unei experiene anterioare nu numai dintr-un domeniu conex, ci chiar din domenii total diferite.

25 Problematizarea are astfel interferene cu conversaia, ntrebrile individuale sau frontale care se adreseaz gndirii, raionamentului nscnd situaii conflictuale. Generarea situaiilor problem trebuie produs astfel nct ntrebrile s apar n mintea elevului fr ca acestea s fie puse de ctre profesor. Dup cum am mai precizat, ca disciplin cu caracter formativ, Informatica i propune formarea unei gndiri algoritmice, sistematice i riguroase, care s promoveze creativitatea, s stimuleze imaginaia i s combat rutina. Chiar dac aparent travaliul informatic se sprijin pe anumite abloane, acestea reprezint numai tendine utile de standardizare. Procesele care izvorsc din situaii reale, care implic calculatorul n rezolvarea unor probleme aparinnd diferitelor sfere ale vieii de zi cu zi, analiza acestor probleme, alegerea structurilor de date pe care se muleaz informaia oferit de mediul nconjurtor, paii algoritmilor i programarea n sine, implic folosirea metodei problematizrii, iar aplicarea acestei metode necesit formarea unor deprinderi ce nu se obin dect printr-un exerciiu ndelungat. Rezolvarea de probleme, ceva curent n nvarea Informaticii, poate fi privit ca un proces prin care elevul descoper c o alt combinaie de reguli nvate anterior conduc la rezolvarea unei noi situaii problematice. Formularea de probleme de ctre elevii nii constituie forme ale creativitii i presupune c elevii i-au format deprinderi intelectuale eficace din punct de vedere al generalizrii i aplicabilitii (orice soluie genereaz o nou problem). Problemele propuse pot fi inspirate din viaa cotidian, din cunotinele dobndite prin studiul altor discipline, din generalizarea unor probleme de informatic rezolvate anterior, probleme de perspicacitate, jocuri etc. Problematizarea i descoperirea fac parte dintre metodele formativparticipative, care solicit gndirea creatoare a elevului, i pun la ncercare voina, i dezvolt imaginaia, i mbogete experiena. n leciile n care se aplic aceste metode profesorul alege problemele, le formuleaz, dirijeaz nvarea i controleaz munca depus de elev n toate etapele activitii sale. Aceast metod este caracteristic, de exemplu, unor lecii de aplicaii practice de laborator, metoda nvrii prin descoperire fiind frecvent aplicat n momentul n care este necesar folosirea programelor utilitare, a soft-urilor de aplicaie etc. Utilitarele se abordeaz n funcie de problemele concrete care urmeaz a fi rezolvate. Obiectivul imediat

26 este cunoaterea i exploatarea produsului i nu mbuntirea lui. Concentrarea ateniei va fi dirijat spre rezolvarea problemei i nu asupra analizei facilitilor i lipsurilor produsului software. Cu siguran, n acest caz este deosebit de important experiena dobndit, cunotinele i deprinderile formate n alte situaii similare de nvare: lucrul cu meniuri, funcii comune mai multor utilitare, cunoaterea structurilor de date, dexteritatea n tehnoredactare etc. Cunoaterea facilitilor produsului soft se face n momentul ivirii necesitii exploatrii acestuia i nu printr-o prezentare a lui ca o niruire mai mult sau mai puin sistematic i complet de funcii sau faciliti. Bineneles c este obligatorie o prezentare general a utilitarului. n contextul altor produse similare, trebuie conceput o viziune de ansamblu din care s se desprind caracteristicile dominante ale utilitarelor din clasa de respectiv i s se prezinte particularitile specifice produsului, cu mbuntiri fa de versiunile anterioare i perspective de dezvoltare pentru cele viitoare. Ca informaticieni, ne interezeaz (n acest context) i ceea ce numim rezolvarea problemelor (problem solving). ndemnrile achiziionate n legtur cu acest subiect depind n primul rnd de cunotinele specifice acumulate, dar din punct de vedere al psihologiei exist acordul c se pot cpta i ndemnri generale. Procesul cognitiv n ansamblu este foarte complicat, numai pentru explicarea coerent a acestuia fiind necesar o ntreag carte. Vom sublinia doar cteva elemente cheie i direcii principale pentru abordarea rezolvrii unor probleme. Astfel, cnd dorim s rezolvm o problem cu ajutorul calculatorului, presupunnd c enunul este acceptat, trebuie s ne ntrebm n primul rnd: Ce tim n legtur cu domeniul implicat. Cum sunt apreciate pe pia rezultatele. Care strategii generale sunt aplicabile. Care sunt motivaiile suplimentare. Dup ce problema a fost enunat i sunt furnizate anumite indicaii suplimentare, putem trece la alegerea strategiei concrete de rezolvare. Aceasta trebuie s fie selectat dup un anumit plan, s permit un anumit tip de verificare i generalizare. De asemenea, trebuie avute n vedere metode sau metodologii prin care s se interzic anumite ramuri i s se permit explorarea de direcii colaterale. Una dintre strategiile generale poate fi urmtoarea: Pot s rezolv problema (am cunotinele necesare). definesc n mod (semi)formal. Caut informaiile suplimentare astfel nct s am o definiie formal concret (eventual, chiar ntr-un limbaj de programare concret).

27 Fac planul de implementare. l execut (scriu programele i le rulez). Verific faptul c ceea ce am fcut este corect. Generalizez (la alte cazuri, la alte probleme). Peste tot, cunoaterea mcar a unei pri din logica formal este indispensabil.

28

1.4. Modelarea

29 Modelarea ca metod pedagogic poate fi descris ca fiind un mod de lucru prin care gndirea elevului este condus la descoperirea adevrului, folosind un aa numit model i utilizndu-se raionamentul prin analogie. Modelul i metoda n sine nu presupun o asemnare perfect cu cazurile reale iniial specificate, ci numai o analogie rezonabil. Ea const n construirea unui sistem S1 a crui descriere coincide cu descrierea sistemului original S pn la un anumit punct. S1 poate avea o natur diferit i este n general mai simplificat i formalizat. Ideea este c investignd sistemul S1 prin metode specifice legate de o anumit tem de lecie se pot gsi noi soluii, care apoi pot fi translatate n concluzii asupra evoluiei sistemului de baz S. Modelarea are o mare valoare euristic colateral, prin utilizarea ei putndu-se dezvolta spiritul de observaie, capacitatea de analiz i sintez, creativitatea. Ideea ar fi s putem determina elevii s descopere singuri modelul. Astfel elevul se obinuiete s creeze noi probleme ce trebuiesc rezolvate, s adapteze algoritmi cunoscui la situaii noi etc. Realitatea nconjurtoare este perceput i neleas pe baza unor modele deja cunoscute. Dezvoltarea deprinderilor de modelare, obinuirea elevilor cu gndirea logic, se realizeaz prin prezentarea exact i clar a modelelor i prin transparena particularizrilor. Un exemplu edificator l reprezint nvarea metodelor de elaborare a algoritmilor. Necesitatea unor formalizri se impune prin rigoarea modului de abordare a problemei, prin sistematizarea organizrii informaiei de intrare, a exactitii proiectrii prelucrrii i prin standardizarea ieirii. Formalizarea necesit cunotine dobndite n studiul altor discipline, fundamentate teoretic, iar accesibilitatea formalizrii este condiionat de factori specifici nivelului de cunotine dobndite anterior, de categoria de vrst, de capacitatea de asimilare (a nivelul clasei, de exemplu). Abordarea ponderat a acestor aspecte conduce la dezvoltarea deprinderilor de abstractizare, a gndirii algoritmice i sistemice. Utilizarea modelelor n realizarea algoritmilor presupune stabilirea unor analogii i n organizarea datelor de intrare. nvarea algoritmilor este legat de cunoaterea modului de organizare a datelor, de cunoaterea profund a structurilor de date posibile a fi prelucrate uor de ctre calculator. Etapa cea mai important este cea a descoperirii algoritmului, urmat de stabilirea modului de organizare a datelor, dar importana acestui ultim aspect este esenial n determinarea performanelor produsului program care implementeaz algoritmul. Modelarea (ca metod pedagogic) este definit ca un mod de lucru prin care gndirea elevului este condus la descoperirea adevrului cu ajutorul modelului, graie raionamentului prin analogie. Modelarea similar, const n realizarea unui sistem de aceeai natur cu originalul, care s permit evidenierea trsturilor eseniale ale originalului. O gam variat de probleme sunt rezolvate prin metoda backtracking. Pentru implementarea ntr-un limbaj de programare a unui algoritm elaborat prin backtracking, elevul are nevoie de un model reprezentat de un program, cum ar fi cel

30 de generare a permutrilor sau de rezolvare a problemei celor opt dame i prin mici modificri, el poate obine multe alte programe care implementeaz algoritmi ce rezolv probleme clasice, cum ar fi: generarea aranjamentelor, combinrilor, problema parantezelor, partiiile unui mulimi, problema celor opt turnuri etc. Similar se procedeaz n rezolvarea problemelor care necesit utilizarea stivelor sau a cozilor, folosind operaiile elementare cu elementele acestor structuri dinamice elementare. Pentru detalii se pot consulta Anexa 1 i Capitolul 6. Modelarea analogic nu presupune o asemnare perfect cu originalul, ci numai folosirea unei analogii. Momentele cunoaterii n procesul modelrii sunt: Trecerea de la original la model. Transformarea modelului sau experimentarea pe model. Transferul pe original a rezultatelor obinute pe model. Verificarea experimental pe original a proprietilor obinute pe model. Trecerea de la original la model se face prin simplificare. Se impune ca simplificarea s nu fie exagerat pentru a nu se omite trsturile eseniale ale originalului. Totodat, trebuie s nu se scape din vedere c valoarea modelului va fi apreciat prin prisma eficacitii lui, adic a posibilitilor pe care le ofer pentru atingerea scopului i c noile informaii obinute pe baza modelului vor fi transferate cu grij asupra originalului, avnd n vedere diferena dintre model i original. Modelul devine astfel purttorul unei semnificaii, informaii, care poate fi exprimat printr-un suport material sau ideal. O clasificare a modelelor dup natura suportului sub care se vehiculeaz informaia, poate fi: Modele materiale, care au suport concret i care se folosesc foarte puin n nvarea Informaticii: folosirea unui table de ah n rezolvarea problemei celor opt dame determin o rapid nelegere a mecanismului metodei backtracking; utilizarea unei stive de monezi de dimensiuni diferite pentru nelegerea rezolvrii problemei turnurilor din Hanoi. Nu trebuie exclus posibilitatea nvrii direct pe obiectul de studiu, caz ntlnit (i recomandat) n studiul structurii i arhitecturii sistemelor de calcul, unde prezentarea prilor componente ale unui sistem de calcul i a conexiunilor dintre acestea, n contextul funcionalitii ca un ansamblu (sistem), este esenial. Modele ideale (virtuale), care se exprim prin imagini sau sisteme de simboluri sau semne convenionale.

31 nvarea Informaticii prin modelare presupune dou etape. ntr-o prim etap, nvarea se va face pe baza modelelor construite de profesori, etap n care se vor analiza trsturile modelului i compararea lui cu originalul. Pentru a reliefa condiiile pe care trebuie s le ndeplineasc modelul se vor da i contraexemple. n a doua etap, elevii vor fi deprini s construiasc singuri modele. Importana descoperirii modelului de ctre elev const n faptul c elevul este obinuit a reprezenta ntr-o form standard condiiile impuse de problem i adncete convingerea sa c Informatica este un domeniu n care rezultatele pozitive se obin doar printr-o nlnuire logic de raionamente. Folosirea modelelor nu nseamn impunerea unor metode care trebuie reinute i aplicate orbete. Se va pune accentul pe nelegerea pailor unui algoritm i se va ncuraja prezentarea oricror metode care exclud modelul i care se impun prin elegan i eficien. Elevii vor fi ncurajai s-i dezvolte i s-i prezinte ideile proprii, contribuind n acest fel la creterea ncrederii n posibilitile lor, n valoarea ideilor lor. Ei nu trebuie s fie obligai s reproduc ideile altora, s atepte ca totul s fie prezentat de profesor, s asimileze reete, ci s descopere metode noi, s le prezinte, analizeze i perfecioneze printr-o comunicare continu i constructiv. Folosirea modelelor n nvare deschide pentru Informatic o impresionant arie de aplicabilitate (inclusiv utilizarea Informaticii n predarea altor discipline, de la artele plastice la cele mai diverse domenii ale tehnicii).

32

1.5. Exemplificarea sau demonstrarea materialului intuitiv


Prin exemplificare sau demonstraie, n acest caz, nelegem prezentarea sistematizat i organizat a unor obiecte, procese, experimente, cu scopul de a uura nelegerea intuitiv i executarea corect a unor activiti programate. Cuvntul intuiie din titlu, nseamn utilizarea oricrui raionament inductiv, n contextul temei i bagajului de cunotine ale elevului. Utilizarea intuiiei mpreun cu exemplificarea necesar poate implica folosirea a diverse modaliti i tehnici didactice datorit diversitii materialului de studiu. Exemplificarea sau demonstrarea materialului intuitiv presupune utilizarea obiectelor reale, ca: utilizarea materialului grafic (plane, scheme); utilizarea retroproiectorului/videoproiectorului i a materialului pretiprit; utilizarea calculatorului (imagini grafice, multimedia, power point). n acest context putem spune c: Prin demonstrarea materialului intuitiv se nelege prezentarea sistematic i organizat a unor obiecte, procese, etc. sau producerea unor experiene, fenomene n faa elevilor, cu scopul de a uura nelegerea i executarea corect a unor activiti <38>. Un rol deosebit l joac astfel intuiia (intuiia este o experien mental; intuiia nseamn o simpl observare i notare a unor fapte; intuiia poate fi asimilat cu un raionament de tip inductiv <38>). Intuiia realizeaz corelaia dintre imagine i cuvnt, fiind att surs de cunotine ct i mijloc de verificare. Informatica nu poate fi desprins dect artificial de bazele ei intuitive i de extinderea ei n realitatea cotidian. Convertirea principiului intuiiei n metoda demonstraiei se realizeaz n funcie de materialul intuitiv: machete, grafic, film didactic, televiziune colar, software-uri de nvare. Materialul intuitiv este frecvent folosit n numeroase lecii cum ar fi de exemplu (se pot consulta i Anexa 1, Capitolul 6): nvarea algoritmilor de sortare, unde prin diferite moduri de reprezentare sunt urmrite grafic valorile care se compar i se schimb ntre ele, conducnd la ordonarea irului. nvarea metodei backtracking, unde folosind materialul natural se urmrete formarea soluiei prin avansri i ntoarceri repetate. Vizualizarea ocuprii i eliberrii zonelor de memorie prin alocarea dinamic a variabilelor. Ilustrarea modului de lucru cu elementele listelor simplu i dublu nlnuite, a stivelor i a cozilor. Echilibrarea arborilor binari (arbori AVL).

33 innd cont de eficiena transmiterii informaiei prin mijloacele vizuale (inclusiv INTERNET) i de orientarea cu predilecie spre mijloacele de informare rapid care solicit att memoria vizual ct i cea auditiv i formarea involuntar a unui public consumator de informaie audiovideo, o orientare a metodelor i procedeelor didactice n vederea exploatrii acestei stri de lucruri creeaz un avantaj aparte procesului instructiv-educativ. Crearea unor filme (casete video) didactice care s urmreasc cu exactitate programa colar creeaz faciliti de predare multor discipline i ar permite elevului s poat revizualiza predarea leciei. Aceasta ar putea elimina ambiguitile sau golurile create de momentele de neatenie din timpul predrii i ar constitui un veritabil profesor la purttor al elevului. Este evident c acest mijloc didactic nu poate nlocui (nici mcar suplini) exerciiul individual i nici prezena efectiv a cadrului didactic. Efortul profesorului este ns cu totul special. Nu este suficient ca un elev s vad un material, el trebuie nvat s vad. Poate c n acest moment ar trebui sa aducem n discuie euristicile i ncurajarea creativitii. Conform <(?????Wankat...)>, se pot pune n eviden chiar euristici pentru dezvoltarea creativitii: ncercai s avei ct mai multe idei. Cu ct mai multe, cu att este posibil s putei selecta cteva bune. Inversai (reformulai, reiterai, punei-o ntr-un alt context etc.) problema. Ghicii o soluie la ntmplare (chiar urmrind un Dicionar...). Gndii-v la ceva distractiv, apropo de utilzarile posibile ale rezolvrii. Gndii-v la probleme similare i la soluiile acestora, chiar n contexte diferite. Concepei o lista general explicativ de cuvinte cheie, proprieti utile, stimulente .a.m.d., care au ct de ct legatur cu tema n cauz.

34

1.6. Metoda exerciiului


La modul cel mai general, exerciiile pot fi privite ca aciuni concrete efectuate n mod contient i repetat n scopul dobndirii unor priceperi i deprinderi (mai rar cunotine) noi pentru a uura anumite activiti i a contribui la dezvoltarea unor aptitudini. Avantajele metodei exerciiului sunt: Se poate forma o gndire productiv, creatoare, cu implicaie financiar. Se ofer posibilitatea ctigrii unei anumite independene. Se ofer posibilitatea iniierii unui dialog-conversaie cu obiective precise asupra unor metode i soluii. Se activeaz atitudinea critic i poate crete discernmntul elevilor n privina celor mai bune metode de lucru. Se ofer o anumit posibilitate profesorului pentru a analiza i evalua activitatea sau performanele generale ale unui elev. Condiia primordial de reuit este dat n principal de selecia corespunztoare a problemelor sau exerciiilor precum i de activitatea de ndrumare-proiectare. Prin urmare, exerciiile sunt aciuni efectuate n mod contient i repetat de ctre elev cu scopul dobndirii unor priceperi i deprinderi i chiar cunotine noi, pentru a uura alte activiti i a contribui la dezvoltarea altor aptitudini. nsuirea cunotinelor de Informatic este organic legat de exersarea utilizrii unor soft-uri de aplicaie, de rezolvarea unor probleme de programare etc. Nu exist lecie n care s nu se aplice aceast metod. Alte avantaje ale acestei metode sunt concretizate n rezultatele aplicrii ei: formeaz o gndire productiv; ofer posibilitatea muncii independente; ofer posibilitatea analizei diverselor metode i soluii de rezolvare a problemelor; activeaz simul critic i autocritic i i nva pe elevi s-i aprecieze rezultatele i metodele de lucru; ofer posibilitatea depistrii i eliminrii erorilor.

35 Este clar c metoda nu contribuie numai la formarea priceperilor i deprinderilor de lucru cu calculatorul, ci contribuie substanial la dezvoltarea unui raionament flexibil i operant. Pentru profesor alegerea, formularea i rezolvarea problemelor i apoi exploatarea rezultatelor obinute constituie o sarcin de importan deosebit. Alegerea problemelor este condiionat de programa analitic, succesiunea prezentrii noiunilor n manuale, metodele de rezolvare ce pot fi folosite i de elevii crora li se adreseaz. Formularea problemelor trebuie s in cont de noiunile cunoscute de elevi, s fie clar, concis (neambigu) i s foloseasc limbajul de specialitate numai n msura n care este cunoscut elevilor. Rezolvarea trebuie s aib n vedere obinerea rezultatelor pe ci clare i uor de verificat, reinerea tipurilor de raionamente folosite, deschiderea perspectivei pentru rezolvarea unor probleme analoage sau mai complexe. Folosirea rezultatelor obinute trebuie s vizeze lmurirea coninutului activ n cunoaterea noiunilor nvate i adncirea semnificaiei lor, asimilarea metodelor de rezolvare i aplicarea lor la rezolvarea altor probleme. Utilizarea pe scar larg a acestei metode a condus la o clasificare a exerciiilor i problemelor, clasificare ce are la baz aportul capacitilor intelectuale necesare rezolvrii lor. n subseciunile care urmeaz insistm asupra unor particularizri.

36

1.6.1. Exerciii i probleme de recunoatere a unor noiuni, formule, metode


De exemplu, elevilor li se prezint metoda backtracking (Capitolul 1). Utiliznd-o, se pot descrie algoritmii care genereaz permutrile, aranjamentele, combinrile, apoi li se poate cere s genereze toate funciile injective, surjective, bijective definite pe o mulime cu m elemente, cu valori ntr-o mulime cu n elemente.

1.6.2. Exerciii i probleme aplicative ale unor formule sau algoritmi cunoscui.
Cunoscnd modul de lucru cu elementele structurilor de date de tip stiv sau coad, elevilor li se poate propune s rezolve problema parcurgerii n lime sau n adncime a unui graf oarecare (<16>, <21>, <25>). Exerciiile aplicative trebuiesc utilizate att timp ct ele trezesc interesul. Repetarea lor nejustificat poate conduce la efecte contrarii. Contraexemplele nsoite de o analiz amnunit vin s sublinieze trsturile eseniale. n acelai timp, analiza erorilor (<17>) este util prin faptul c dezvluie anumite lacune n cunotinele elevilor.

1.6.3 Probleme care permit nsuirea unor noiuni


Specifice Informaticii sunt problemele al cror grad de dificultate crete treptat, o dat cu formarea i asimilarea noiunii, fiecare nou problem aducnd un plus de dificultate. n rezolvarea unei probleme de programare este necesar s se in seama de urmtoarele etape: Analiza iniial a problemei prin care se stabilete formatul i natura datelor de intrare, intervalele de variaie a datelor de intrare, a variabilelor de lucru (date intermediare) precum i formatul i intervalele de variaie a datelor de ieire. Tot n aceast etap se va stabili un algoritm (plan) de rezolvare, exprimat, eventual, n limbaj natural, pe baza cruia se va permite fiecrui elev s lucreze independent. Rezolvarea propriu-zis a problemei este etapa n care se realizeaz transpunerea ntr-un limbaj de programare a algoritmului stabilit n prima etap. n prealabil, algoritmul este reprezentat n una dintre formele cunoscute, se stabilesc variabilele de lucru, forma lor de alocare, prelucrrile ce vor avea loc, apoi se trece la implementarea n limbajul dorit. Dac rezolvarea se poate face pe mai multe ci, trebuie s se sublinieze, dac este posibil, calea optim.

37 Verificarea soluiei sau soluiilor obinute va permite elevului si dea seama dac soluia obinut este cea corect. n aceast etap intervine profesorul cu seturi de date de test care s cuprind dac este posibil, majoritatea (dac nu toate) cazurilor existente ridicate de problem i n special cazurile critice, la limit, ale datelor de intrare. Aceste etape cuprind n esen: nsuirea enunului; discutarea problemei i stabilirea algoritmului de rezolvare; rezolvarea propriu-zis; verificarea soluiilor. Ele se pot modifica dup natura problemelor. Acolo unde problema permite mai multe ci de rezolvare, profesorul analizeaz toate aceste ci i selecteaz pe cele mai importante propunndu-le spre rezolvare pe grupe, comparnd rezultatele, avantajele i dezavantajele fiecrei metode n parte. Se va evidenia n mod obligatoriu cea mai bun soluie. Exemplu. Se cere elevilor determinarea arborelui parial de cost minim asociat unui graf, prin algoritmul lui Kruskal. n prima etap: Se analizeaz enunul. Se verific dac elevii cunosc noiunea de arbore i de arbore parial de cost minim. Pe tabl se deseneaz un graf oarecare, se numeroteaz nodurile i se stabilesc costurile muchiilor. Se stabilesc datele de intrare, formatul acestora, tipul lor (deja se gndete n direcia implementrii ntr-un limbaj de programare); n acest caz datele de intrare se vor citi dintr-un fiier text cu nregistrri de forma: n - numrul de noduri ale grafului; I, j, ai,j - muchia de la nodul i la nodul j are costul ai,j. Fiierul va conine un numr de nregistrri de forma celor de mai sus, egal cu numrul de muchii al grafului. Aici poate interveni profesorul, solicitnd elevilor sau prezentnd o form mai condensat a fiierului de intrare, cu nregistrri de forma: n numrul de noduri ale grafului; 1 i1 a1,i1 i2 a1,i2... ik a1,ik - nodul 1 are vecinii i1, i2, ..., ik, cu ik>1, iacosturile acestor muchii sunt a1,i1, a1,i2, ...,a1,ik 2 j1 a2,j1 j2 a2,j2... jt a2,jt - nodul 2 are vecinii j1, j2, ..., jt, cu jk>2, iarcosturile acestor muchii sunt a2,j1, a2,j2, ...,a2,jt .................................... n-1 l1 an-1,l1 - nodul n-1 poate avea cel mult un vecin mai mare dect el, nodul n. Dac un nod nu are vecini mai mari dect el, linia din fiierul de intrare corespunztoare acelui nod va lipsi. Vom construi fiierul de intrare pentru graful desenat pe tabl, pe care l vom folosi ca prim fiier de test. n a doua etap:

38 Se va stabili modul de memorare al datelor de intrare. Elevii vor fi tentai s reprezinte graful printr-o matrice de adiacen (simetric), iar ntr-o alt matrice tot simetric costurile muchiilor, sau n cel mai fericit caz, printr-o singur matrice, att costurile muchiilor ct i graful. Aici trebuie s intervin profesorul. El va sublinia risipa de memorie realizat prin acest tip de memorare i va propune sau va ncerca s obin de la elevi o memorare mai eficient (printr-un vector) a grafului i costurilor muchiilor. Se va defini un tip de dat numit muchie: muchie : record i,j:byte; a:byte; end; cu semnificaia c i, j sunt vrfurile muchiei, iar a costul ei i se va aloca un vector de muchii, a crui dimensiune maxim se va stabili mpreun cu elevii. Profesorul va prezenta Algoritmul lui Kruskal. Apoi se consider iniial arborele parial vid. Se va selecta muchia de cost minim neselectat anterior i care nu formeaz un circuit cu muchiile deja selectate; procedeul se oprete dup selectarea a n-1 muchii (<16>, <21>, <30>). Se insist asupra criteriului de oprire, profesorul avnd dou posibiliti: s prezinte el criteriul i s verifice cu clasa de ce acesta este cel corect, sau s ncerce s obin de la clas un criteriu de oprire. Urmtoarea problem care trebuie abordat este cea a alegerii muchiei. Evident c prin ordonarea cresctoare a vectorului de muchii acestea vor putea fi selectate n ordinea cresctoare a costurilor lor, dar se pune problema eliminrii muchiilor care formeaz circuite. Aici se va obine de la clas o soluie, innd cont c determinarea componentelor conexe ale unui graf a fost deja rezolvat. Se va stabili algoritmul de ordonare a vectorului de muchii i modul de memorare a nodurilor selectate pe parcursul determinrii arborelui parial de cost minim. Tot n aceast etap, se va determina o soluie n cazul numeric prezentat n figura de pe tabl.

39 n a treia etap, elevilor li se va propune implementarea algoritmului fie cu memorarea datelor de intrare n matrice, fie n vectorul de muchii, pe grupe de lucru. Li se poate cere chiar folosirea de algoritmi de sortare diferii, aceasta pentru a constata faptul c soluia nu este unic i n plus li se va cere s determine cauza obinerii de soluii diferite, dar optime. Profesorul va supraveghea implementarea solicitnd elevilor verificarea etap cu etap a realizrii programului, prin afiarea temporar chiar a unor rezultate intermediare. n ultima etap, elevii vor verifica corectitudinea programului prin folosirea de date de test construite de ei i prin noi teste propuse de ctre profesor, dar aceste teste vor fi prezentate sub form grafic, prin desen pe tabl etc., pentru ca ei s construiasc singuri fiierul de intrare. n final se va propune elevilor spre rezolvare probleme care s utilizeze rezultatul obinut sau s foloseasc tehnici asemntoare, evident fr a specifica elevilor acest lucru. Problem. O localitate avnd n puncte vitale, legate prin strzi a cror lungime se cunoate, este complet nzpezit. Primria, care nu dispune de rezerve suficiente de combustibili, este obligat s deszpezeasc un numr de strzi, astfel nct toate punctele vitale ale localitii s fie accesibile din fiecare punct i s realizeze un consum minim de carburant. S se determine strzile care trebuiesc deszpezite tiind c orice consum de carburant este direct proporional cu lungimea drumului deszpezit. Exemplul prezentat subliniaz importana i consecinele pe care le are asupra modului de rezolvare a unei probleme, modul de organizare a datelor de intrare i a celor intermediare, de lucru. O posibil clasificare a problemelor/exerciiilor (relativ la capacitile intelectuale pentru rezolvare) ar fi: Exerciii de recunoatere a unor noiuni (unitate curent de I/E, unitate de disc, memorie intern, comand extern, programe executabile de tip com. sau exe, HTTP-uri, telnet, etc.). Exerciii aplicative (programe pentru transcrierea unor formule, pseudocoduri). Aceste dou clase de exerciii sunt recomandate n special pentru fixarea unor cunotine deja predate. n acest context poate fi util o complicare gradual a enunului iniial, urmrindu-se memorarea mai bun a formulei sau a ideii algoritmului, cum ar fi: ncadrarea acestuia ntr-un eventual alt tip de probleme cunoscute; complicarea lui n mod progresiv n vederea utilizrii sale n alte situaii; prezentarea unor cazuri limit, care pot conduce la rezultatele eronate. Exerciii grafice plane, vizualizri. Exerciii complexe - acestea presupun o analiz mult mai detaliat a problemei n ansamblu i implic descompunerea problemei n subprobleme, succesiv, pn n momentul n care rezolvarea subproblemelor elementare este cunoscut.

40 n rezolvarea exerciiilor este important crearea posibilitii ndeplinirii unei independene (individual, grup, echip). Pentru formarea unor priceperi sau abiliti legate de munca indepdendent se poate utiliza i aa numita formul a exerciiilor comentate. Aceasta const n rezolvarea exerciiilor de ctre toi elevii, n timp ce un elev desemnat explic permanent rezultatele obinute. Nu este nevoie ca aceast explicaie s fie utilizat pe calculator. Profesorul poate n orice moment s invite oricare alt elev pentru continuarea explicaiei (n acest fel, aceast metod este deosebit de activ). Discuiile suplimentare sunt obligatorii n acest caz. Se vor evidenia permanent avantajele i dezavantajele rezolvrilor propuse, alte metode posibile de rezolvare, idei privind utilizarea acestor rezolvri n leciile urmtoare, particularizri ale lor n leciile anterioare.

1.7. Metoda nvrii n grupe mici

41 Activitatea de nvare pe grupe mici se definete ca o metod n care sarcinile sunt executate de grupuri de elevi, grupuri care sunt cteodat autoconstituite i care se autodirijeaz. Activitatea n Informatic se desfoar n general n echip, travaliul individual fiind o component a muncii corelate din cadrul unui grup de lucru. Tehnicile de organizare a muncii n unitile de Informatic evideniaz ca o form de organizare echipa programatorului-ef, echip n care fiecare membru are sarcini bine stabilite (de analiz, programare, implementare, exploatare), sarcini corelate ntre ele. Este normal ca i activitatea didactic s recurg la metode de nvare colectiv, fr a neglija ns munca individual, ci doar privind-o pe aceasta ca o component a muncii n echip <15>, <39>. Profesorii recunosc, n general, eficacitatea unei astfel de organizri a activitii didactice i o integreaz n arsenalul metodic al predrii disciplinei. Criteriile de formare a grupelor sunt n funcie de obiectivele urmrite (nsuirea de noi cunotine, rezolvare de probleme, etc.): grupuri omogene, formate din elevi cu acelai nivel de cunotine; grupuri eterogene, formate din elevi de toate categoriile (foarte buni, buni i slabi), dar n proporii apropiate; grupuri formate pe criterii afective (prietenie, vecini de banc). Numrul elevilor dintr-un grup poate varia de la 2 la 10, dar cele mai potrivite grupuri sunt cele formate din 4-6 elevi. La leciile de aplicaii practice de laborator, grupurile de lucru formate din 4 elevi care dispun de dou calculatoare, par a fi cele mai eficiente. Grupuri formate din mai mult de 2 elevi la un calculator se dovedesc a fi neproductive. Este bine ca la ntocmirea grupurilor s se stabileasc criterii clare de formare i elevii s fie lsai s se grupeze singuri, respectnd criteriile cerute. Pentru grupurile omogene sarcinile pot fi diferite n funcie de scopul propus. Pentru grupurile eterogene sau create pe criterii afective, sarcinile vor fi aceleai la fiecare grup, dar profesorul va rezerva sarcini suplimentare elevilor mai buni din fiecare grup. Etapele pretinse de aceast metod de nvare sunt: repartizarea materialului (problemelor) fiecrui grup; munca independent a grupurilor sub supravegherea profesorului; discutarea n plen a rezultatelor obinute. Activitatea profesorului se concretizeaz n dou etape. Prima este una proiectiv n care se pregtete materialul de repartizat pe grupe i materialul n plus pentru elevii buni i a doua, de ndrumare/supraveghere i de animare a activitii grupelor de lucru. Ajutorul acordat grupelor de lucru trebuie s fie dat numai la cerere i n aa fel nct profesorul s se situeze pe poziia de colaborator i nu pe cea de autoritate care i impune prerile i soluia personal. Profesorul va interveni cu autoritate numai n situaia n care activitatea grupului se ndreapt ntr-o direcie greit. Cnd unul sau mai multe dintre grupuri gsete o soluie, acestea vor fi discutate i analizate succesiv sau n paralel. Scopul acestei discuii este de a reliefa corectitudinea rezolvrii, determinarea celei mai eficiente i mai elegante soluii i de a descoperi eventualele erori. Importana acestor dezbateri pentru dezvoltarea raionamentului este foarte mare, iar rolul profesorului este cel de a incita

42 i coordona discuiile n direcia obinerii concluziilor care se impun. Se imput, pe bun dreptate, acestei munci n grup o intensitate i o productivitate sczut. Diversificarea sarcinilor grupurilor i mprirea sarcinilor ntre membrii grupurilor atenueaz aceast deficien. Dac prin activitatea n grup se intenioneaz dobndirea de noi cunotine prin lucrul cu manualul, documentaia sau prin testarea unor produse soft, pentru profesor este obligatoriu de a organiza dezbaterile finale care s stabileasc dac elevii i-au nsuit corect noiunile i i-au format deprinderi corecte. Este de asemenea greit a se lucra mereu cu grupuri constituite dup aceleai criterii, pentru c fie c sunt suprasolicitai elevii buni din grupurile eterogene, iar elevii slabi se bazeaz exclusiv pe aportul liderilor de grup, fie c, n grupurile omogene, elevii slabi se complac n postura n care se afl i nu mai ncearc s scape de acest calificativ. Alte cteva probleme pot fi abordate sub un unghi diferit n acest context. Astfel, se pot pune ntrebri mult mai individualizate (acestea nu in neaprat de coninutul n sine al leciei!). Ce ntrebri se pun i modul n care se pun, poate fi mai important dect ntrebarea n sine. Apoi, este mai simpl contactarea elevilor n timpul leciei i chiar dup ea. Susinem, ca prioritate i soluie la anumite probleme locale de nvmnt, aducerea unor specialiti care lucreaz n lumea real pentru a preda lecii de sintez, lecii speciale etc.

1.8. Metoda lucrului cu manualul i documentaia

43 Manualele colare, purttoare ale valenelor formative prin deosebitul lor coninut metodic i didactic, reprezint o limit impus de programa colar din punct de vedere al coninutului informativ. n Informatic, mai mult dect n alte domenii, manualul este supus perisabilitii coninuturilor prin frecvena cu care disciplina este receptiv la noutile domeniului. Realitatea didactic reliefeaz faptul c elevul folosete pentru nvarea teoriei doar notiele ntocmite n clas la predare i din considerente de comoditate sau de obinuin, foarte puin (sau deloc) manualele. Acestea sunt consultate n cel mai fericit caz doar pentru citirea enunurilor problemelor. Atitudinea de reinere sau de respingere fa de manual are consecine negative att asupra caracterului formativ, ct i asupra celui informativ al nvrii. Capacitatea de raionament al unui copil nu se formeaz numai dup modele de raionament oferite de profesor, ci i prin eforturi proprii, prin activitatea proprie de cutare i comparare cu alte scheme de raionament. Valoarea acestei metode nu const numai ntr-o nsuire temeinic a cunotinelor ci i n formarea unor deprinderi de activitate intelectual. Muli elevi ncheie ciclul liceal fr a avea formate deprinderi de lucru cu manualul i documentaia, ceea ce le creeaz serioase probleme de adaptare i explic eecurile din primul an de studenie i greutatea de adaptare la cerinele studiului universitar. Metoda muncii cu manualul este un aspect al studiului individual i se introduce ca metod, treptat, sub directa ndrumare i supraveghere a profesorului. Sunt discipline i profesori care aplic n mod abuziv aceast metod. Pe lng efectele negative asupra nvrii, aceste abuzuri ascund i alte aspecte care nu fac obiectul acestei lucrri. nainte de a aborda aceast metod, profesorul trebuie s atrag atenia elevului asupra aspectelor importante ale leciei, care trebuiesc urmrite n mod special, cernd elevului s realizeze un rezumat cu principalele idei ce trebuie reinute. Rolul profesorului nu se limiteaz numai la a indica lecia din manual sau documentaia care trebuie studiat. n timpul studierii de ctre elevi a noului material, profesorul are un rol activ. El urmrete fiecare elev cum i ntocmete conspectul, d ndrumri cu voce sczut elevilor care-l solicit, verific planurile ntocmite de acetia, corectnd acolo unde este cazul. Profesorul poate s descopere n acest fel anumite lacune n cunotinele anterior dobndite ale elevilor i s intervin ulterior pentru remedierea lor. El se ocup deopotriv de elevii slabi i de cei buni crora le d sarcini suplimentare, reuind astfel s-i fac o imagine despre stilul de lucru i ritmul fiecrui elev. Dup studierea individual din manual sau documentaie, urmeaz discuii asupra celor nsuite de ctre elevi. Aceste discuii au scopul de a preciza problemele eseniale ale leciei, a le sistematiza, a nltura posibilitatea unor omisiuni din partea elevilor sau chiar a nsuirii eronate a unor noiuni. Profesorului i se cere o pregtire minuioas a materialului pentru a fi n msur s rspund prompt la orice ntrebare pus de ctre elevi. Nu orice lecie se preteaz la a fi nsuit din manual. Metoda se aplic numai leciilor care au n manual o redactare sistematic i

44 accesibil nivelului de vrst i de cunotine ale elevilor. Metoda poate fi aplicat pentru studiul unor aplicaii soft, limbaje procedurale (de exemplu HTML) sau n studiul comenzilor sistemelor de operare. Elevilor li se recomand studiul temei stabilite pentru acomodarea cu noiunile, apoi profesorul reia prezentarea cu sublinierea aspectelor eseniale (<31>). Avnd o asemenea baz, profesorul se poate concentra asupra discursului su (ceea ce urmeaz este ntr-o strnsa legtur i cu precedentele metode). Dac este organizat bine, exist urmatoarele avantaje (<(?????-Wankat...)>): Urmrirea atent a audienei: fiecrui asculttor i poate fi sugerat ideea c este personajul principal, ca el (ea) este cel vizat() n primul rnd. Noi poriuni de text pot fi uor introduse suplimentar, prin referirea la manual. Se prezint lucruri deja verificate. Nimic nu poate merge ru, exceptnd ... mbolnvirea lectorului. Stresul fiecrui elev n parte poate fi micorat, el tiind ca nu este destinatarul special. Exist posibilitatea unui feedback imediat i anumite principii de nvare pot fi imediat folosite. Exist posibilitatea pregtirii prealabile a materialului, cu durat determinat, inclusiv cea a expunerii. Posibilitatea de control asupra a ceea ce s-a transmis/recepionat, cui, cnd, sub ce form, precum i a modului de reacie este foarte mare. Desigur c exist i dezavantaje. Nu insistm, pentru c ideea este c fiecare avantaj de mai sus devine un dezavantaj dac profesorul este un prost gestionar al metodelor i timpului su. Oricum, se poate ajunge, din partea clasei, la pasivitate, stagnare, plictiseal, lips de individualizare etc.

45

1.9. Metoda jocurilor didactice


Jocurile didactice (i nu numai) pe calculator au valenele lor educative. Ca metod de nvare, jocurile didactice dau rezultate deosebite n special la clasele mici, dar marele pericol care planeaz asupra acestei metode de instruire l constituie acele aplicaii soft care au o ncrctur educativ redus, dar prin atractivitate captiveaz i rein atenia elevului, uneori ore n ir, fr ca acesta s dobndeasc cunotine sau deprinderi corespunztoare cu efortul fcut. Un rol aparte se atribuie jocurilor manipulative, prin care elevul devine contient de proprietile obiectului studiat, i formeaz deprinderi i dexteriti de utilizare a acestuia prin simularea pe calculator a utilajului sau dispozitivului respectiv. Aceste jocuri numite uneori i simulatoare, necesit n cele mai frecvente cazuri echipamente periferice suplimentare, unele specializate pe lng cele clasice. Amintim n acest caz, utilizarea unor cti speciale pentru obinerea efectului de realitate virtual, echipamente care simuleaz condiii de zbor (pentru pilotaj) etc. Alte tipuri de jocuri, numite reprezentative, printr-o simbolizare sau abstractizare a unor elemente reale, conduc spre descoperirea unor reguli de lucru (sau joc) cu aceste elemente, dezvoltnd n acest fel imaginaia elevului. Ce altceva reprezint un produs soft (de exemplu, un editor grafic sau de text) atunci cnd nvei s-l utilizezi, dect un joc mult mai serios? Chiar dac aceast metod nu este caracteristic studiului Informaticii, la limita dintre jocul didactic i nvarea asistat de calculator se situeaz o bun parte dintre software-urile de nvare, att a Informaticii ct i a altor discipline (<38>).

1.10. Instruirea programat i nvarea asistat de calculator

46 Instruirea programat poate fi aplicat cu mare succes n momentele n care obiectul primordial al predrii l constituie utilizarea unui mecanism real. n cadrul instruirii programate, eseniale devin probele i produsele demonstrative, pe care ar trebui s le descriem elevilor. Trebuie avut n vedere ca numrul de ore afectat acestei instruiri programate nu trebuie s fie foarte mare. Acestea trebuie s includ un numr suficient de ore de verificare a cunotinelor acumulate, evitnduse ns monotonia i instaurarea plictiselii (este recomandat utilizarea alternativ a altor metode). Trebuie evitat de asemenea i folosirea metodei pentru un timp ndelungat, lucru care poate conduce n anumite situaii, la o izolare social a elevului. O idee pentru contracararea acestor efecte ar fi creterea numrului de ore sau organizarea activitilor pe grupuri sau n echip. Instruirea asistat de calculator este un concept diferit de instruirea programat, doar n modalitatea de utilizare. Exist aceleai premise i moduri de utilizare, cu excepia faptului c un sistem de calcul devine principala interfa dintre un profesor i un elev. Absolut toate noiunile, conceptele, exerciiile, problemele, evalurile, testrile, prezentrile legate de o anumit tem n cadrul unei lecii (inclusiv estimarea ndeplinirii obiectivelor) sunt ndepliniri, dirijri, verificri cu ajutorul calculatorului (mediul soft corespunztor). Procesul de predare-nvare i verificare-evaluare funcioneaz pe baza principiului cibernetic comand-control-reglare (autoreglare). Instruirea programat, ca metod didactic, presupune construirea unor programe de nvare, care prin fragmentarea materialului de studiat n secvene realizeaz o adaptare a coninuturilor la posibilitile elevilor, la ritmul lor de nvare, asigur o nvare activ i o informare operativ asupra rezultatelor nvrii, necesar att elevului pentru autocorectare ct i profesorului. n elaborarea programelor de nvare se au n vedere urmtoarele operaii(<38>): Precizarea obiectivelor operaionale n funcie de coninut i posibilitile elevilor. Structurarea logic a coninutului dup principiul pailor mici i al nvrii gradate. Fracionarea coninutului n secvene de nvare (uniti didactice) inteligibile i nlnuite logic. Fixarea dup fiecare secven a ntrebrilor, exerciiilor sau problemelor ce pot fi rezolvate pe baza secvenei informaionale nsuite. Stabilirea corectitudinii rspunsurilor sau soluiilor elaborate; aceasta se poate realiza fie prin alegerea dintre mai multe rspunsuri posibile (trei, patru sau chiar cinci), iar n situaia n care nu a fost ales rspunsul corect, se poate recurge la ntrebri suplimentare, fie se elaboreaz un rspuns i se compar cu cel corect.

47 Ca orice inovaie, instruirea programat a trecut prin cteva faze contradictorii. La nceput s-a lovit de rezerva tenace a tradiiei i de dificultile materiale (tehnice), apoi dup ce a ctigat teren n contiina teoreticienilor i practicienilor s-au exagerat ntr-o oarecare msur valenele ei aplicative, crendu-se iluzia descoperirii pietrei filozofale n domeniul pedagogic. n final, dup o analiz lucid, s-a admis c exist pri pozitive i negative. Criticile aduse instruirii programate sunt att de ordin psihologic, ct i de ordin pedagogic i metodic. Psihologic, instruirii programate i se imput faptul c nu ine seama de principiile psihologice ale nvrii, viznd nvarea ca o simpl succesiune i nmagazinare de fapte. De asemenea, se tie c motivaia nvrii nu poate fi analizat numai prin prisma reinerii i nvririi imediate, fcnd abstracie de interesul elevului fa de coninut. n plus, elevul lucrnd singur sau cu calculatorul, se simte izolat. Pedagogic vorbind, frmiarea coninuturilor este n detrimentul formrii unei viziuni globale, iar valoarea cunoaterii imediate de ctre elev a rezultatului obinut are valene contestabile. Metodic, decupajul analitico-sintetic al coninuturilor ngusteaz elevului posibilitatea formrii aptitudinilor de analiz i sintez. Aceste critici au determinat mutaii serioase n concepia de aplicare a metodei, dar practica didactic dovedete c atunci cnd se cunosc i se evit cauzele care genereaz efecte negative, metoda produce rezultate bune. Tendinele de mbuntire a aplicrii metodei se ndreapt ctre alternarea utilizrii metodei cu celelalte metode clasice. Inserarea ntr-o lecie programat a unor metode clasice schimb determinarea muncii colare, repunndu-l pe elev n direct dependen cu activitatea profesorului i dndu-i acestuia posibilitatea s verifice gradul de nsuire a cunotinelor coninute n program. O alt tendin este aceea de a modifica modul de redactare al programului, n special prin mrirea volumului de informaie din unitile logice i prin separarea prii de verificare, existnd situaii n care verificarea se va face dup cteva ore sau chiar a doua zi. n plus, n program se pot insera secvene independente, care s necesite timp mai mare de gndire sau de lucru. Izolarea imputat nvrii programate poate fi contracarat prin alternarea cu munca n grup sau chiar prin nvare programat n grup, situaie n care grupul parcurge n colectiv un program special conceput n acest sens. Un exemplu de program de nvare care convinge prin atractivitate (<31>) este un program de nvare a tablei nmulirii: - se genereaz aleator, succesiv, zece perechi de numere naturale de la 1 la 10; - se afieaz pe ecran perechile corespunztoare sub forma n1xn2 i elevul introduce de la tastatur rezultatul; - programul afieaz un mesaj sau emite un semnal sonor n cazul n care rspunsul este incorect i repeta ntrebarea; dac nici al doilea rspuns nu este corect, se va afia rspunsul corect;

48 - fiecare rspuns este punctat, iar la sfrit se va afia nota obinut; programul poate cere continuarea cu un nou set de zece ntrebri. Perspectiva nvrii asistate de calculator, inclusiv prin intermediul INTERNET-ului, este cert. Ea ofer posibilitatea prezentrii programului, verificrii rezultatelor i corectrii erorilor, modificnd programul dup cunotinele i conduita elevului. Calculatorul nu numai c transmite un mesaj informaional, dar el poate mijloci formarea i consolidarea unor metode de lucru, de nvare. Se poate afirma c nvarea asistat de calculator nu numai c nva elevul, ci l i nva cum s nvee. Prin aplicarea acestei metode de nvare nu se ntrevede diminuarea rolului profesorului. Dimpotriv, sarcinile lui se amplific prin faptul c va trebui s elaboreze programe i s le adapteze la cerinele procesului educativ. Orict de complete ar fi programele de nvare asistat de calculator, profesorul rmne cea mai perfecionat main de nvat. Se poate consulta site-ul MECT pentru lucruri suplimentare (adresele le vom furniza i n Anexa 2).

1.11. Studiu de caz (exemplu general)


Acest exemplu poate fi, n fapt, considerat ca un corolar al tuturor capitolelor anterioare. Dup cum tim deja, n viziunea planului cadru pentru licee, filiera teoretic, specializarea Matematic-Informatic, funcioneaz clase cu studiul intensiv al disciplinelor de Informatic. Disciplinele de Informatic sunt componente ale ariei curriculare Tehnologii i se studiaz pe trunchiul comun cu 4 ore pe sptmn i 13 ore pe sptmn n cadrul curriculum-ului la decizia colii. Avnd n vedere finalitatea aplicativ imediat a coninutului teoretic, orele din trunchiul comun se desfoar consecutiv, n laborator, cu clasa mprit n dou grupe de 10-15 elevi. n cadrul curriculumu-lui la decizia colii orele se pot organiza pe grupe asistate chiar de doi profesori, n funcie de specificul coninuturilor modulului (dac acesta este interdisciplinar). Unitatea didactic intitulat Structuri arborescente i aplicaii acoper o arie de coninuturi neabordate pe trunchiul comun i se adreseaz elevilor Clasei a X-a. Necesitatea abordrii acestor coninuturi este relevat de frecvena problemelor practice care pot fi rezolvate utiliznd aceste structuri de date i de constatarea faptului c n cadrul concursurilor colare, la nivel judeean, naional i internaional, frecvena problemelor care necesit cunotine de teoria grafurilor, n spe de utilizarea structurilor arborescente, este mare (Anexa 1, Capitolul 6).

1.11.1. Obiective cadru

49 Contientizarea necesitii organizrii datelor n structuri arborescente i formarea deprinderilor de utilizare a acestor structuri. Stimularea creativitii i formarea deprinderilor de simulare i utilizare a modelelor matematice n rezolvarea problemelor concrete. Implementarea algoritmilor specifici structurilor arborescente i utilizarea lor n aplicaii n vederea optimizrii alocrii resurselor.

1.11.2. Grupuri int


Cursul se adreseaz elevilor de Clasa a X-a cu performane peste nivelul mediu al clasei, care au atins obiectivele trunchiului comun i care dovedesc reale perspective de progres i disponibilitate la efort, elevilor participani la concursurile i olimpiadele colare. Se studiaz n semestrul al II-lea.

1.11.3. Obiective de referin i activiti de nvare


Asimilarea noiunilor i rezultatelor teoretice cu privire la structurile de date de tip arbore i a modului de reprezentare a acestora n memoria calculatorului. Aplicarea cunotinelor dobndite i a deprinderilor formate n rezolvarea unor probleme concrete.

50

Obiective de referin 3.1 s cunoasc alte structuri de date de tip arbore (de exemplu heapuri)

3.2 diversificarea gamei structurilor cunoscute i adaptarea lor la specificul aplicaiilor (arbori pariali, arbori de compresie, arbori de joc)

Activiti de nvare prezentarea structurilor de tip heap, a modului de memorare a i a dinamici lor; perceperea avantajelor utilizrii n aplicaii a acestor structuri. perceperea necesitii adaptrii structurilor cunoscute la specificul aplicaiilor; integrarea i adaptarea la particularitile aplicaiei a algoritmilor.

1.11.4. Specificarea coninuturilor


1. Noiuni introductive. 1.1 Proprieti ale arborilor. 1.2 Arbori cu rdcin. 1.3 Arbori binari i proprieti. 2. Reprezentarea arborilor. 1.1 Reprezentarea arborilor binari. 2.2 Operaii elementare pe arbori binari (creare, parcurgere). 2.3 Reprezentarea arborilor binari strici. 3. Arbori asociai expresiilor aritmetice. 4. Structuri de cutare. 4.1 Cutarea secvenial.

51 4.2 Cutarea binar. 4.3 Cutarea pe arbori binari (de cutare). 4.4 Alte operaii pe arbori binari de cutare. 4.5 Arbori binari de cutare optimali. 5. Arbori echilibrai. 5.1 Arbori Adelson-Velskii-Landis (AVL). 5.2 Arbori bicolori. 6. Heap-uri. 6.1 Min-heap-uri i Max-heap-uri. 6.2 Crearea unui heap. 6.3 Heap-sort. 6.4 Cozi cu prioritate. 7. Arbori pariali. 7.1 Arbori pariali de cost minim. 7.2 Algoritmii lui Kruskal i Prim pentru determinarea unui arbore parial de cost minim. 7.3 Arbori pariali BF. 7.4 Arbori pariali DF. 8. Arbori de compresie Huffman (codul Huffman).

1.11.5. Elaborarea standardelor de performan


Corespunztor obiectivelor specifice, se elaboreaz standardele de performan ce se doresc atinse. Astfel, pentru competena cunoaterea proprietilor arborilor n general i a arborilor binari n particular, se va elabora standardul:

52 Niv el A. (910) Descriptor de nivel -elevul cunoate toate proprietile definitorii ale arborilor ; - nelege i utilizeaz codul lui Pruffer; -opereaz cu noiunea de arbore binar; -cunoate proprietile arborilor binari i modul de reprezentare n memorie a acestora; - este capabil s creeze i s parcurg un arbore binar; - implementeaz optimal n aplicaii algoritmii nvai; -intuiete necesitatea i este capabil s adapteze organizarea datelor de intrare la cerinele algoritmilor ce vor fi folosii.

53 B. (78) -elevul cunoate majoritatea proprietilor definitorii ale arborilor; -nelege i utilizeaz codul lui Pruffer; -opereaz cu noiunea de arbore binar; -cunoate proprietile arborilor binari i modul de reprezentare n memorie a acestora, dar are preferine pentru anumite metode, care nu sunt totdeauna cele optime; -este capabil s creeze i s parcurg un arbore binar; -este capabil s implementeze n aplicaii algoritmii nvai; -are unele dificulti n organizarea datelor de intrare, la implementarea algoritmilor folosii.

54 C. (56) -elevul cunoate unele proprieti definitorii ale arborilor; - nelege, dar utilizeaz cu dificultate codul lui Pruffer; - nelege noiunea de arbore binar; -cunoate unele proprieti ale arborilor binari, dar folosete o singur metod de reprezentare n memorie a acestora; -are dificulti n crearea i parcurgerea arborilor binari; -implementeaz cu dificultate n aplicaii algoritmii nvai; -are dificulti n organizarea datelor de intrare; -elevul cunoate unele proprieti definitorii ale arborilor; -nelege, dar nu poate utiliza codul lui Pruffer; -are lacune n nelegerea noiunii de arbore binar; -nu cunoate proprietile arborilor binari i nu este capabil s foloseasc nici o metod de reprezentare n memorie a acestora; -nu este capabil s creeze i s parcurg un arbore binar; -are dificulti n organizarea datelor de intrare.

C. (34)

55

2. Metode specifice de nvare


Acestea se refer la ramuri (subramuri) particulare ale Informaticii (cum ar fi teoria algoritmilor, logica, etc.). Fr a intra n detalii, invitm cititorul s consulte att Bibliografia ct i Capitolul 1. Metodele nu sunt independente la fel ca obiectivele sau principiile didactice. Ele se pot combina, iar dac lum n calcul i varietatea de obiective i/sau metode/metodologii specifice, ajungem la un numr impresionant de variante educaionale or/tem. Din acest motiv, am preferat s furnizm exemple globale i nu locale, pentru fiecare metod n parte. Alte exemple pot fi consultate pe parcursul lucrrii, n Anexa 1, Capitolul 6. Alegerea problemelor este condiionat de: planul de nvmnt; manualele alternative; contextul local; nivelul clasei; materialul didactic disponibil; criteriile de valoare receptate; formularea problemelor (acestea trebuie s in cont de: coninutul manualelor; noiunile anterioare pe care le posed elevii; caracterul fundamental sau legislativ al problemelor). Ca o concluzie parial i nici pe departe exhaustiv, tratarea rezolvrilor trebuie s aib n vedere obinerea rezultatelor pe ci clare (i, pe ct posibil, verificabile printr-o alt metod), analiza metodelor utilizate, reinerea tipurilor de raionamente folosite, deschiderea unor perspective pentru probleme similare sau mai complexe. Se urmrete cunoaterea activ a noiunilor nvate, adncirea semnificaiilor, asimilarea metodelor de rezolvare, aplicarea lor n rezolvarea altor tipuri de probleme.

CAPITOLUL 6

Liste, Stive, Cozi, Grafuri, Arbori, Sortare/Cutare


Scopul acestui capitol este de a prezenta cteva exemple semnificative de algoritmi asupra unor structuri de date clasice, care au fost referii pe parcursul lucrrii, dar nu ntr-un mod metodic.

1. Liste
Lista este o multimulime dinamic, adic este o colecie cu un numr variabil de elemente, care se pot repeta. Elementele au acelai tip. n general, tipul elementelor unei liste este un tip utilizator. Elementele unei liste se numesc noduri. Dac ntre nodurile unei liste exist o singur

56
relaie de ordine, atunci lista se numete simplu nlnuit. Dac ntre nodurile unei liste exist dou relaii de ordine, atunci lista se numete dublu nlnuit. n general vom spune c o list este n-nlnuit dac ntre nodurile ei sunt definite n relaii de ordine. n legtur cu listele se au n vedere unele operaii de interes general: a) crearea unei liste; b) accesul la un nod oarecare al listei; c) inserarea unui nod ntr-o list; d) tergerea unui nod dintr-o list; e) tergerea unei liste.

1.1. Liste simplu nlnuite


ntre nodurile unei liste simplu nlnuite este definit o singur relaie de ordine, total. De obicei aceast relaie este cea de succesor, adic fiecare nod conine un pointer a crui valoare reprezint adresa nodului urmtor din list. Asemntor, se poate defini relaia de precedent. n cele ce urmeaz ne vom mrgini numai la liste simplu nlnuite pentru care nodurile satisfac relaia succesor. O asemenea list se caracterizeaz prin aceea c exist totdeauna un nod i numai unul care nu are urmtor (succesor, fiu), precum i un nod, unic, care nu este urmtorul (succesorul) nici unui alt nod. Aceste noduri formeaz capetele listei simplu nlnuite. Pentru a gestiona nodurile unei liste simplu nlnuite, vom utiliza doi pointeri spre cele dou capete ale listei. Notm pointerul spre nodul care nu este urmtorul (succesorul) nici unui alt nod al listei (adic primul nod al listei) cu pInceputLista i cu pSfarsitLista pointerul spre nodul care nu are succesor n list. Aceti pointeri vor fi utilizai n toate exemplele pe care le vom avea n vedere n prelucrarea listelor simplu nlnuite. Ei pot fi definii fie ca variabile globale, fie ca parametri pentru funciile de prelucrare a listei, fie ca date membru ale unui obiect. Tipul unui nod ntr-o list simplu nlnuit se poate defini folosind o declaraie de forma (C/C++):
typedef struct _tagNod { //declaraii; int nCodUnic; struct _tagNod *pElementUrmator; } MPI_Nod;

Pointerul pElementUrmator va conine adresa spre urmtorul nod al listei, adic definete relaia succesor pentru nodurile listei. Nodul spre care pointeaz variabila pSfarsitLista va avea drept valoare NULL pentru pElementUrmator (pElementUrmator = NULL;). Pointerii pInceputLista i pSfarsitLista se declar n afara oricrei funcii (de obicei naintea definirii funciei main a programului principal, deci variabile globale) prin:
MPI_Nod *pInceputLista, *pSfarsitLista;

Pe tot parcursul acestui capitol ne vom mrgini la a descrie ordinea operaiilor ce trebuie respectat n lucrul cu diverse structuri. Menionm de la nceput c nu urmrim o optimizare a codului, ci o nelegere corect a operaiilor ce trebuie efectuate i o claritate a codului scris. De asemenea, acest capitol nu constituie o tratare complet a structurilor prezentate ci doar o sintez a acestora.

1.1.1. Crearea unei liste simplu nlnuite


Operaiile ce trebuiesc efectuate la crearea unei liste simplu nlnuite sunt:

57 1. Se iniializeaz pointerii pInceputLista i pSfarsitLista cu valoarea NULL, deoarece la 2.


3. nceput lista este vid. Se rezerv zon de memorie n memoria heap pentru nodul curent. Se ncarc nodul curent cu informaiile suplimentare. Se atribuie pointerului pSfarsitLista->pElementUrmator adresa din memoria heap a nodului curent, dac lista nu este vid. Altfel se atribuie lui pInceputLista aceast adres. Se atribuie pointerului pSfarsitLista adresa nodului curent.

4.

5. 6. pSfarsitLista->pElementUrmator = NULL; 7. Procesul se reia de la pasul 2 de mai sus pentru a aduga un nod nou la list.

Pentru claritate, aciunea de creare a unei liste ar trebui tratat n modul urmtor: C.1. Lista este vid i trebuie creat primul nod al listei. C.2. Lista nu este vid i se adaug un nou nod la sfritul listei. Pentru C.1., ordinea operaiilor este urmtoarea: Se iniializeaz pointerii pInceputLista i pSfarsitLista cu valoarea NULL, deoarece la nceput lista este vid.
pInceputLista = NULL; pSfarsitLista = NULL;

C.1.1. C.1.2.

C.1.3.

C.1.4.

Se rezerv zon de memorie n memoria heap pentru nodul curent. Se ncarc nodul curent cu informaiile suplimentare. Se atribuie pointerului pInceputLista i pSfarsitLista adresa din memoria heap a nodului curent (pointerii pInceputLista i pSfarsitLista au aceeai valoare cnd lista este vid (valoarea NULL) sau lista are un singur element. Se atribuie valoarea NULL pointerului pElementUrmator.

Codul ar putea arta astfel: ...


// C1.1. pInceputLista = NULL; pSfarsitLista = NULL; // C1.2. pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf (Memorie insuficienta la crearea listei\n); exit(1); } // C1.3. // aciuni specifice de iniializare a datelor membru din nodul listei // C1.4.

58
pInceputLista = pTemp; pSfarsitLista = pTemp; // C1.5. pSfarsitLista->pElementUrmator = NULL;

Grafica intuitiv:
pInceputLista = pSfarsitLista

pElementUrmator = NULL

Pentru C.2. ordinea operaiilor este urmtoarea: C.2.1. Se rezerv zon de memorie n memoria heap pentru nodul curent. C.2.2. Se ncarc nodul curent cu informaiile suplimentare. C.2.3. Se atribuie pointerului pSfarsitLista->pElementUrmator adresa din memoria heap a nodului creat. C.2.4. Se atribuie pointerului pSfarsitLista adresa din memoria heap a nodului creat. C.2.5. Se atribuie valoarea NULL pointerului pSfarsitLista->pElementUrmator. Codul ar putea fi urmtorul:
// C2.1. pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf (Memorie insuficienta la crearea listei\n); exit(1); } // C2.2. // operaii specifice de iniializare a nodului // C2.3. Se face legtura dintre ultimul nod al listei cu noul nod creat pSfarsitLista->pElementUrmator = pTemp; // C2.4. Noul nod creat va deveni ultimul nod al listei pSfarsitLista = pTemp;

//C2.5. Acum pSfarsitLista pointeaz spre noul nod creat care nu are succesori
pSfaristLista->pElementUrmator = NULL;

Operaia de adugare a unui nod la o list existent poate fi schematizat ca mai jos.
pInceputLista pSfarsitLista

59
... (1)
pTemp pElementUrmator = NULL

(3) (2)
pSfarsitLista

Se aloc n heap memorie pentru noul nod, adresa fiind n pTemp. Ordinea operaiilor care urmeaz este strict: 1. realizarea legturii noului nod cu ultimul nod al listei; 2. noul nod devine ultimul nod al listei; 3. pElementUrmator din ultimul nod adugat ia valoarea NULL.

1.1.2. Accesul la un nod al listei simplu nlnuite


Dup modul cum este definit relaia de ordine n list, rezult i accesul la nodurile listei. Pentru a gsi un nod al listei va trebui s parcurgem lista de la nceput i apoi trecem de la un nod la altul folosind pointerul pElementUrmator. Pentru a gsi un anumit nod al listei va trebui s definim criterii de identificare pentru acesta (de exemplu numrul de ordine al nodului, nodul care conine o anumit informaie, etc.). Parcurgerea toatal a listei pentru a afia (a efectua anumite operaii) poate fi redat cu urmtorul cod: ...
MPI_Nod *pTemp; pTemp = pInceputLista; while (pTemp != NULL) { // Calcule. Adresa nodului curent este n pTemp. ... // Trec la urmtorul nod al listei pTemp = pTemp->pElementUrmator; } ...

Dac definim drept criteriu de cutare dup o anumit valoare a datei membru nCodUnic al structurii MPI_Nod, atunci determinarea nodului respectiv se va face parcurgnd lista de la nceput i comparnd valoarea datei membru nCodUnic cu valoarea memorat ntr-o variabil local (n general preluat de la tastatur sau rezultat n urma unor calcule anterioare). Presupunem c valoarea este pstrat n variabila m_nCodUnic. Codul poate arta astfel (n cadrul unei funcii): ...
MPI_Nod *pTemp; int m_nCodUnic;

60
...
pTemp = pInceputLista; while (pTemp != NULL) { if (pTemp->nCodUnic == m_nCodUnic) return pTemp; // n pTemp avem adresa nodului cutat pTemp = pTemp->pElementUrmator; } return NULL; //nu exist un asemenea nod ...

1.1.3. Inserarea unui nod ntr-o list simplu nlnuit


Inserarea unui nod ntr-o list simplu nlnuit se poate face n mai multe moduri: 1. inserarea naintea primului nod; 2. inserarea naintea unui nod precizat printr-o cheie; 3. inserarea dup un nod precizat printr-o cheie; 4. inserarea dup ultimul nod al listei aceasta coincide cu operaia de adugare la sfritul listei, descris mai nainte.

1.1.3.1. Inserarea unui nod ntr-o list simplu nlnuit naintea primului ei nod
Adresa primului nod al listei (dac nu este vid) este pstrat n pointerul pInceputLista. Operaiile care trebuiesc efectuate precum i ordinea acestora este descris n continuare: 1) alocare de memorie pentru noul nod, adresa se obine de exemplu n pTemp (dac operaia sa desfurat cu succes se continu cu (2) altfel se renun la inserare); 2) pointerul pTemp->pElementUrmator va pstra adresa urmtorului nod care este n fapt fostul prim nod al listei, deci valoarea lui pInceputLista;
pTemp->pElementUrmator = pInceputLista;

3) pointerul pInceputLista va primi ca valoare adresa noului nod creat


pInceputLista = pTemp;

Observaie. Dac se inverseaz etapele (2) cu (3) atunci am pierdut lista. Pointerul pSfarsitLista va puncta spre ultimul element al listei, pointerul pInceputLista va puncta spre noul nod creat iar pInceputLista->pElementUrmator va puncta tot spre noul nod creat. O ncercare de a parcurge lista n acest moment va duce la buclarea programului. Grafic, situaia se prezint astfel:
pInceputLista

pElementUrmator Dac lista este vid aceast operaie coincide cu cea de creare a primului nod al listei.

1.1.3.2. Inserarea unui nod ntr-o list simplu nlnuit naintea unui nod precizat printr-o cheie

61
Presupunem c valoarea cheii memorat n nod este n data membru nCodUnic. S reprezentm grafic ce ar trebui s facem n aceast situaie. Prin nod curent nelegem nodul din list care satisface condiia nCodUnic = m_nCodUnic: Nod anterior Nod curent

Aici trebuie nserat noul nod Judecnd dup figura de mai sus, ordinea operaiilor care trebuie fcute este urmtoarea (presupunnd c toate operaiile se efectueaz cu succes): 1. alocarea memoriei pentru nodul de inserat; adresa va fi pstrat n variabila pTemp; 2. pstrarea adresei nodului anterior n variabila pNodAnterior; 3. pstrarea adresei nodului care satisface condiia (nodul curent) n variabila pNodCurent; 4. atribuirea pointerului pNodAnterior->pElementUrmator a adresei nodului ce trebuie jnserat, pstrat n variabila pTemp; 5. atribuirea pointerului pTemp->pElementUrmator a adresei nodului curent pNodCurent; 6. iniializarea datelor pentru noul nod. Observaie. Trebuie avut n vedere posibilitatea c i primul al listei poate ndeplini condiia de cutare. n acest caz avem de inserat un nod la nceputul listei. n continuare, s-ar prea c nu este necesar o alt prelucrare deoarece pNodCurent = pNodAnterior->pElementUrmator. S nu uitm ns c valoarea cheii ne ajut la obinerea nodului curent. Codul ar putea fi urmtorul (inserm acest cod n cadrul unei funcii care returneaz 0 n caz de succes sau 1 n caz contrar): ...
MPI_Nod *pTemp, *pNodCurent, *pNodAnterior; int m_nCodUnic; ... pTemp = pInceputLista; pNodAnterior = pInceputLista; pNodCurent = NULL; while (pTemp != NULL){// Caut nodul ce satisface condiia... if (pTemp->nCodUnic == m_nCodUnic) { pNodCurent = pTemp; break; } pNodAnterior = pTemp; pTemp = pTemp->pElementUrmator;

62
} if (pNodCurent == NULL) { printf(Nu exista cheia %d Lista nemodificata..., m_nCodUnic); return 1; } if (pNodCurent == pInceputLista) {// Nodul se insereaz la nceputul listei. Se va apela funcia care trateaz acest caz. } else { // aloc memorie pentru noul nod pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf(Nu pot aloca memorie pentru noul nod\n; return 1; // Se ntoarce un cod de eroare } pNodAnterior->pElementUrmator = pTemp; pTemp->pElementUrmator = pNodCurent; // Urmeaz iniializri pentru nodul inserat return 0; // Operaie ncheiat cu succes

63 1.1.3.3. Inserarea unui nod ntr-o list simplu nlnuit dup un nod precizat printr-o cheie
Ca mai sus, prin nod curent nelegem nodul din list care satisface condiia nCodUnic = m_nCodUnic. n acest caz avem nevoie de adresa nodului urmtor, adres care este pstrat n pElementUrmator al nodului curent. Codul pentru determinarea nodului curent este urmtorul:
MPI_Nod *pTemp; int m_nCodUnic;

...
pTemp = pInceputLista;

while (pTemp != NULL)


{ if (pTemp->nCodUnic == m_nCodUnic) return pTemp; pTemp = pTemp->pElementUrmator; } // Dac nu exist un asemenea nod se ntoarce valoarea NULL return NULL; ...

O reprezentare grafic a situaiei de mai sus este urmtoarea: Nod curent

Aici trebuie nserat noul nod Ordinea operaiilor este: 1. se determin nodul curent, adresa pstrndu-se n pNodCurent; 2. dac exist nod curent, se aloc memorie pentru nodul ce se va aduga (presupunem c operaia s-a efectuat cu succes); adresa se pstreaz n pTemp; 3. adresa nodului urmtor (dac exist), se salveaz ntr-o variabil temporar, pTempUrmator; 4. se actualizeaz valoarea pointerului pElementUrmator din nodul curent, cu adresa noului nod : pNodCurent->pElementUrmator = pTemp; 5. se realizeaz legtura dintre noul nod i urmtoarele, pTemp->pElemntUrmator =
pTempUrmator;

6. dac pTempUrmator este NULL (necompletat) atunci nseamn c inserarea se face la


sfritul listei i atunci trebuie actualizat valoarea pointerului pSfarsitLista cu adresa nodului adugat, care se gsete n pTemp; deci pSfarsitLista = pTemp. Observaie. Codul poate fi scris imediat traducnd strict etapele descrise mai sus.

64 1.1.4. tergerea unui nod dintr-o list simplu nlnuit


tergerea se poate realiza n mai multe moduri. n cele ce urmeaz avem n vedere urmtoarele cazuri: S.1.tergerea primului nod al unei liste simplu nlnuite; S.2. tergerea unui nod precizat printr-o cheie; S.3.tergerea ultimului nod al unei liste simplu nlnuite. Vom analiza fiecare situaie n parte punnd n eviden operaiile care trebuie efectuate precum i ordinea acestora. Operaia comun tuturor cazurilor luate n considerare este cea a eliberrii memoriei alocate. Pentru fiecare funcie (operator) din C/C++ de alocare de memorie din memoria heap exist definit i funcia (operatorul) corespunztoare de eliberare a memoriei ocupate.

1.1.4.1. tergerea primului nod al unei liste simplu nlnuite


tergerea primului nod presupune reactualizarea valorii pointerului pInceputLista cu valoarea pointerului pInceputLista->pElementUrmator. Ordinea operaiilor este urmtoarea: (1) dac valoarea pointerului pInceputLista este NULL atunci lista este vid i nu avem ce terge (operaie terminat); (2) dac pInceputLista = pSfarsitLista atunci lista are un singur nod i vom elibera memoria ocupat de acel nod dup care vom asigna valorea NULL pentru pointerii pInceputLista i pSfarsitLista (operaie terminat), n caz contrar se trece la (3); (3) pstrm adresa de nceput a listei ntr-o variabil temporar, pTemp; (4) asignm pointerului pInceputLista valoarea pointerului pInceputLista->pElementUrmator; (5) eliberm zona de memorie a crei adres se afl n pTemp. Se observ c dac se execut direct (4) se pierde adresa zonei de memorie ce trebuie eliberat.

1.1.4.2. tergerea unui nod precizat printr-o cheie


tergerea unui nod precizat printr-o cheie (se presupune c nodul care trebuie ters are succesor) presupune refacerea legturilor dintre nodul precedent i succesorul nodului ters, precum i eliberarea zonei de memorie alocate. Presupunem c lucrm cu urmtoarele variabile de memorie: - pNodAnterior ce conine adresa nodului precedent celui ce trebuie ters;

pNodCurent ce conine adresa nodului ce trebuie ters; pNodUrmator ce conine adresa nodului succesor celui ce trebuie ters care se obine pNodUrmator = pNodCurent->pElementUrmator;

astfel:

Cu aceste notaii ordinea operaiilor este urmtoarea: (1) se actualizeaz valoarea pointerului pNodAnterior->pElementUrmator cu valoarea pointerului pNodUrmator; (2) se elibereaz zona de memorie dat de pNodCurent. Reprezentarea grafic:

65

pNodAnterior

pNodCurent

pNodUrmator

Sgeile ngroate indic noua legtur care trebuie stabilit. Nodul din mijloc va fi ters. Determinarea nodului curent se va face cu ajutorul unui cod asemnator celui descris la cutarea unui nod folosind o cheie. Observaie. Dac nodul ce trebuie ters este primul nod al listei ( pNodCurent pInceputLista) atunci se aplic soluia indicat n paragraful anterior.
=

1.1.4.3. tergerea ultimului nod al unei liste simplu nlnuite


Aceast operaie presupune urmtoarele aciuni: (1) dac lista este vid atunci nu avem ce terge, operaia fiind terminat; (2) determinarea penultimului nod al listei, a crui adres o vom pstra n variabila pTemp; (3) eliberarea zonei de memorie a crei adres se afl n pSfarsitLista; (4) actualizarea valorii pointerului pSfarsitLista cu valoarea variabilei pTemp; (5) setarea pe NULL a pointerului pSfaristLista->pElementUrmator. Observaie. Aplicarea efectiv necesit de fiecare dat parcurgerea listei n totalitatea ei, ceea ce pentru liste mari operaia este consumatoare de timp. Etapele de mai sus nu trateaz cazul cnd lista are exact un singur nod. n aceast situaie, nainte de etapa (2) ar trebui testat dac pInceputLista = pSfarsitLista. n caz afirmativ, se execut etapele descrise la tergerea primului nod al listei. De asemenea trebuie testat mereu dac lista nu este vid.

1.1.4.4. tergerea unei liste simplu nlnuite


tergerea unei liste simplu nlnuite se poate face prin aplicarea repetat a aciunii de tergere a primului nod din list. Se repet acest procedeu pn cnd valoarea pointerului pInceputLista devine NULL.

1.2. Stive
O stiv este o list simplu nlnuit gestionat conform principiului LIFO (Last In First Out). Conform acestui principiu, ultimul nod pus n stiv este primul nod care este scos din stiv. Operaiile cele mai importante care se definesc asupra unei stive sunt:

(1) se adaug un element n stiv (push); (2) scoate un element din stiv (pop); (3) se terge stiva (clear).
Primele dou operaii afecteaz vrful stivei. Pentru a implementa o stiv printr-o list simplu nlnuit, va trebui s identificm baza i vrful stivei cu capetele listei simplu nlnuite. Distingem dou posibiliti: I.1. nodul spre care pointeaz variabila pInceputLista este baza stivei, iar nodul spre care pointeaz variabila pSfarsitLista este vrful stivei;

66 I.2.
nodul spre care pointeaz variabila pInceputLista este vrful stivei, iar nodul spre care pointeaz variabila pSfarsitLista este baza stivei. n cazul I.1., funciile push i pop se identific cu operaiile de adugare a unui nod la sfritul listei simplu nlnuite, respectiv cu tergerea ultimului nod al unei liste simplu nlnuite. Dac revenim la operaia de tergere a ultimului nod al unei liste simplu nlnuite, atunci constatm c funcia pop este ineficient n acest caz, pentru c nu avem acces direct la penultimul nod al listei simplu nlnuite. n cazul I.2., funciile push i pop se identific cu operaiile de adugare a unui nod la nceputul listei simplu nlnuite, respectiv de tergere a primului nod al unei liste simplu nlnuite. Dup cum am observat, aceste operaii efectuate la nceputul listei se realizeaz fr a fi necesar parcurgerea listei simplu nlnuite. n concluzie, dac se implementeaz o stiv folosind liste simplu nlnuite este de preferat varianta I.2. n ambele situaii (I.1., I.2.) funcia clear terge stiva se implementeaz la fel ca n cazul tergerii unei liste simplu nlnuite. Observaie. O stiv care are un numr maxim cunoscut de elemente poate fi implementat i ca un vector. De exemplu, o stiv de ntregi se definete astfel:
int stiva[100];

caz n care funciile push, pop i clear au o cu totul alt implementare. n acest caz numrul maxim de elemente al stivei va fi 100 (de la 0 la 99). Va exista un indice, nIndiceStiva, prin care vom gestiona vrful stivei. n general, punerea unui element pe stiv va nsemna verificarea faptului dac nu se depete valoarea maxim a indicelui (99 n acest caz), incrementarea valorii indicelui urmat de actualizarea elementului stivei. Scoaterea unui element din stiv va nsemna preluarea valorii curente data de indicele stivei urmat de decrementarea indicelui stivei. n cazul funciei pop se va verifica faptul c indicele nu trebuie s devin negativ. Operaia de tergere a stivei este echivalent cu setarea pe 0 (zero) a indicelui stivei. O reprezentare grafic a stivei este dat n figura urmtoare. Vrful stivei

Baza stivei

1.3. Cozi
O list simplu nlnuit gestionat dup principiul FIFO (First In First Out), adic primul nod introdus n list este i primul nod care va fi scos din list, se numete coad. Cele dou capete ale listei simplu nlnuite care implementeaz o coad sunt i capetele cozii. Operaiile care se definesc asupra unei cozi sunt aceleai ca la stive: CO.1. adugarea unui element n coad; CO.2. scoaterea unui element din coad; CO.3. tergerea cozii.

67
Implementarea acestor funcii este aceeai cu implementarea funciilor de adugare a unui nod la sfritul unei liste simplu nlnuite, respectiv de tergere a unui nod de la nceputul aceleai liste. Observaie. Implementarea unei cozi folosind un tablou unidimensional (static) se dovedete n acest caz ineficient. De exemplu, la fiecare extragere a unui element din coad elementele tabloului trebuie rearanjate (mutate spre stnga).

1.4. Liste circulare simplu nlnuite


Lista simplu nlnuit pentru care valoarea pointerului, pSfarsitLista->pElementUrmator, este egal cu valoarea pointerului pInceputLista (ultimul nod al listei puncteaz spre primul nod al listei) se numete list circular simplu nlnuit. Din definiia listei circulare simplu nlnuite se constat c toate nodurile sunt echivalente: fiecare nod are un succesor i n acelai timp este succesorul altui nod. ntr-o astfel de list nu mai exist capete. Gestiunea nodurilor listei circulare simplu nlnuite se realizeaz cu ajutorul unei variabile ce puncteaz spre un nod oarecare al listei. Pentru cele ce urmeaz vom nota aceast variabil cu pListaCirculara, definit astfel:
MPI_Nod *pListaCirculara;

1. 2. 3. 4.

Operaiile posibile asupra acestui tip de list sunt: crearea unei liste circulare; adugarea unui nod nainte sau dup un alt nod care satisface un anumit criteriu de identificare; tergerea unui nod care satisface un anumit criteriu de identificare; teregerea complet a listei.

1.4.1. Crearea unei liste circulare simplu nlnuite


Crearea listei circulare simplu nlnuite se face analog ca n cazul listei simplu nlnuite. Pentru nceput, variabila pListaCirculara va avea valoarea NULL. Nodurile care se vor aduga vor fi plasate dup nodul spre care pointeaz pListaCirculara. Etapele crerii listei circulare nlnuite sunt: 1. alocarea de memorie pentru nodul care se va crea, adresa este n pTemp; 2. noul nod creat va puncta spre nodul urmtor celui gestionat de pListaCirculara, adic, pTemp->pElementUrmator = pListaCirculara->pElementUrmator; 3. se va face atribuirea variabilei pListaCirculara->pElementUrmator a adresei nodului creat, pListaCirculara->pElementUrmator = pTemp. Un cod parial poate arta astfel:
// Alocare n memoria heap a noului nod pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf(Memorie insuficienta. Alocare esuata...); }

68
else { if (pListaCirculara == NULL) // Lista vid { pListaCirculara = pTemp; pListaCirculara->pElementUrmator = pTemp; // iniializri informaii nod ... } else { // Inserare dup nodul identificat de pListaCirculara pTemp->pElementUrmator = pListaCirculara->pElementUrmator; pListaCirculara->pElementUrmator = pTemp; } }

Codul prezentat mai sus ia n considerare cele dou aspecte discutate la crearea unei liste simplu nlnuite: lista este vid i se creaz primul nod, sau lista are deja cel puin un nod i se adaug noul nod la sfritul listei. Codul nu surprinde ns operaiile de completare a informaiilor suplimentare pentru nodul adugat. Reprezentarea grafic a acestei operaii este dat n figura urmtoare:
pListaCirculara

Aici se vor aduga nodurile listei

1.4.2. Inserarea unui nod ntr-o list circular simplu nlnuit


Inserarea unui nod ntr-o list circular poate fi fcut naintea sau dup un nod identificat printro cheie. n cadrul acestor operaii de inserare trebuie avut n vedere faptul c ordinea efecturii operailor este critic. n caz contrar, se poate produce o distrugere a listei, spaii din memoria heap alocate i pierdute de ctre program, ncercri de a accesa zone de memorie protejate, etc. Inserarea unui nod dup un alt nod precizat a crui adres se afl n pNodCurent, de exemplu, se face ca mai sus (rolul variabilei pListaCirculara este jucat de pNodCurent). n cazul inserrii unui nod naintea altui nod precizat printr-o cheie, n procesul de identificare al nodului naintea cruia se face inserarea suntem obligai s memorm i adresa nodului anterior. Dac am determinat aceast adres (a nodului anterior), problema se transform ntr-o inserare nod dup un nod cunoscut.

69 1.4.3. tergerea unui nod dintr-o list circular simplu nlnuit


Aceast problem coincide cu problema tergerii unui nod care are succesor i este succesorul altui nod dintr-o list simplu nlnuit.

1.5. Liste dublu nlnuite


Listele simplu nlnuite - ct i cele circulare discutate pn acum - au marele dezavantaj c relaia de ordine dintre noduri este ori de preceden ori de succesiune. Cu alte cuvinte, parcurgerea acestor liste se face ntr-o singur direcie, totdeauna putndu-se identifica cel mult un vecin al unui nod. Lista dublu nlnuit se definete n acelai mod ca o list simplu nlnuit, cu observaia c pe mulimea nodurilor definim dou relaii de ordine: precedent i succesor (utilizate simultan). Pentru cele ce urmeaz vom presupune c nodurile listei dublu nlnuite au tipul definit ca mai jos:
typedef struct _tagNodLD { declaraii struct MPI_Nod_LDI *pPrecedent; struct MPI_Nod_LDI *pElementUrmator; }MPI_Nod_LDI;

Pentru a gestiona o list dublu nlnuit vom utiliza variabilele pInceputLista i pSfarsitLista, ca i la listele simplu nlnuite. Aceste variabile puncteaz spre capetele listei, care se caracterizeaz prin urmtoarele: primul nod al listei nu are precedent (pInceputLista->pPrecedent = NULL);

ultimul nod al listei nu are succesor (pSfarsitLista->pSuccesor = NULL).


O reprezentare grafic a listelor dublu nlnuite poate fi dat de figura de mai jos.

inf

inf

...

inf

n legtur cu listele dublu nlnuite se pot defini aceleai operaii ca i n cazul listelor simplu nlnuite: 1. Crearea unei liste dublu nlnuite. 2. Accesul la un nod al unei liste dublu nlnuite. 3. Inserarea unui nod ntr-o list dublu nlnuit. 4. tergerea unui nod dintr-o list dublu nlnuit. 5. tergerea unei liste dublu nlnuite.

1.5.1. Crearea unei liste dublu nlnuite


n momentul crerii unei liste dublu nlnuite distingem dou situaii: a) lista este vid i se adaug primul nod la list; b) lista conine noduri, adugarea fcndu-se dup ultimul nod (la sfritul listei). Pentru a), ordinea operaiilor este urmtoarea (se reiau operaiile de la liste simplu nlnuite i se modific pentru a fi funcionale pentru liste dublu nlnuite):

70 C.1.1.
Se iniializeaz pointerii pInceputLista i pSfarsitLista cu valoarea NULL, deoarece la nceput lista este vid.
pInceputLista = NULL; pSfarsitLista = NULL;

C.1.2. C.1.3.

C.1.4.

C.1.5.
C.1.6.

Se rezerv zon de memorie n memoria heap pentru nodul curent. Se ncarc nodul curent cu informaiile suplimentare. Se atribuie pointerului pInceputLista i pSfarsitLista adresa din memoria heap a nodului curent (pointerii pInceputLista i pSfarsitLista au aceeai valoare cnd lista este vid (valoarea NULL) sau cnd lista are un singur nod. Se atribuie valoarea NULL pointerului
pInceputLista->pElementUrmator

C.1.7.

Se atribuie valoarea NULL pointerului pInceputLista->pPrecedent.

Codul ar putea arta astfel: ...


// C1.1. pInceputLista = NULL; pSfarsitLista = NULL; // C1.2. pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf (Memorie insuficienta la crearea listei\n); exit(1); } // C1.3. // aciuni specifice de iniializare a datelor membru din nodul listei // C1.4. pInceputLista = pTemp; pSfarsitLista = pTemp; // C1.5. pSfarsitLista->pElementUrmator = NULL; pInceputLista = pSfarsitLista pInceputLista->pPrecedent = NULL;

Dm mai jos reprezentarea grafic pentru un nod al unei liste dublu nlnuite:

71
pPrecedent = NULL pElementUramator = NULL

Pentru a accesa un nod, ordinea operaiilor este urmtoarea: C.2.1. Se rezerv zon de memorie n memoria heap pentru nodul curent, pTemp. C.2.2. Se ncarc nodul curent cu informaiile suplimentare. C.2.3. Se atribuie pointerului pSfarsitLista->pElementUrmator adresa din memoria heap a nodului creat. C.2.4. Se atribuie pointerului pTemp->pPrecedent valoarea lui pSfarsitLista. C.2.5. Se atribuie pointerului pSfarsitLista adresa din memoria heap a nodului creat. C.2.6. Se atribuie valoarea NULL pointerului pSfarsitLista->pElementUrmator. Codul ar putea fi urmtorul:
// C2.1. pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod)); if (pTemp == NULL) { printf (Memorie insuficienta la crearea listei\n); exit(1); } // C2.2. // operaii specifice de iniializare a nodului // C2.3. Se face legtura dintre ultimul nod al listei cu noul nod creat pSfarsitLista->pElementUrmator = pTemp; // C.2.4. pTemp->pPrecedent = pSfarsitLista; // C2.5. Noul nod creat va deveni ultimul nod al listei pSfarsitLista = pTemp;

//C2.6. Acum pSfarsitLista pointeaz spre noul nod creat care nu are //succesori
pSfaristLista->pElementUrmator = NULL;

Operaia de adugare a unui nod la o list existent poate fi schematizat ca mai jos:
pInceputLista pSfarsitLista

... (4)
pTemp

pElementUrmator = NULL

(1)

(3)

(3)

(2) pSfarsitLista

72

Ordinea operaiilor care urmeaz este strict: 1. (1) pElementUrmator ia valoarea lui pTemp; 2. (4) pPrecedent din nodul alocat ia valoarea variabilei pSfarsitLista; 3. (2) noul nod devine ultimul nod al listei, pSfarsitLista se schimb corespunztor; 4. (3) pElementUrmator din ultimul nod adugat ia valoarea NULL.

1.5.2. Accesul la un nod al unei liste dublu nlnuite


Deoarece avem definite dou relaii de ordine, lista poate fi parcurs n dou moduri: de la nceput spre sfrit (se va folosi pointerul pElementUrmator) sau de la sfrit spre nceput (se va folosi pointerul pPrecedent). Metoda a fost descris la liste simplu nlnuite. Nu o relum.

1.5.3. Inserarea unui nod ntr-o list dublu nlnuit


Distingem urmtoarele situaii: a) inserare la nceputul listei; b) inserare dup sau naintea unui nod precizat, nod care nu este capt al listei; c) inserare la sfritul listei. Observaie. Inserarea la sfritul listei, c), coincide cu operaia de adugare a unui nod la sfritul listei, operaie deja descris.

1.5.3.1. Inserare la nceputul listei


Situaia este foarte asemntoare cu cea ntlnit la liste simplu nlnuite. Operaiile care se execut n plus sunt cele referitoare la stabilirea corect a informaiilor pentru pointerul ce implementeaz relaia de preceden, pPrecedent. Relum ceea ce am descris pentru listele simplu nlnuite. Adresa primului nod al listei (dac nu este vid) este pstrat n pointerul pInceputLista. Operaiile care trebuiesc efectuate, precum i ordinea acestora, este descris n continuare:

1. alocm memorie pentru noul nod; adresa se obine - de exemplu - n pTemp; 2. pointerul pTemp->pElementUrmator va pstra adresa urmtorului nod, care este n fapt
fostul prim nod al listei, deci valoarea lui pInceputLista;
pTemp->pElementUrmator = pInceputLista;

3. pointerul pInceputLista->pPrecedent va pstra adresa noului nod creat, pTemp; 4. pointerul pInceputLista va primi ca valoare adresa noului nod creat
pInceputLista = pTemp;

6. pointerul pInceputLista->pPrecedent va primi drept valoare NULL (este noul nod de


nceput al listei).

1.5.3.2. Inserare dup sau naintea unui nod precizat, nod care nu este capt al listei
Vom descrie numai operaia de inserare a unui nod naintea unui nod precizat. Presupunem c dispunem de urmtoarele informaii: adresa nodului precedent (pNodAnterior) i de adresa nodului succesor (pNodUrmator) nodului ce va fi inserat. n acest caz, codul pentru determinarea celor dou adrese este mai simplu, pentru c din nodul care satisface condiia cerut putem obine adresa nodului precedent (cu ajutorul pointerului pPrecedent). Adresa nodului anterior i a celui urmtor se obin printr-o procedur asemntoare cu cea descris la liste simplu nlnuite.

73
nainte de a face inserarea, situaia legturilor (valorile pointerilor pPrecedent i pElementUrmator) din cele dou noduri sunt:
pNodAnterior->pElementUrmator = pNodUrmator; // succesorul pNodUrmator->pPrecedent = pNodAnterior; // precedentul

Ordinea operaiilor pentru inserare este:

1. alocarea memoriei pentru noul nod; adresa se pstreaz n pTemp (presupunem c aciunea de
alocare s-a desfurat cu succes); 2. stabilirea precedenei pentru noul nod:
pTemp->pPrecedent = pNodAnterior;

3. stabilirea nodului succesor pentru noul nod:


pTemp->pElementUrmator = pNodSuccesor

4. stabilirea nodului succesor pentru nodul anterior:


pNodAnterior->pElementUrmator = pTemp;

5. stabilirea nodului precedent pentru nodul succesor:


pNodUrmator ->pPrecedent = pTemp;

Observaie. Acest cod poate fi optimizat, varianta de fa fiind preferat doar din motive didactice. Inserarea dup un nod precizat se trateaz exact la fel ca n cazul anterior, deoarece dispunem de adresele nodului anterior i a celui succesor. Diferena apare din modul de determinare a celor dou adrese. Mai nti se obine adresa nodului anterior i apoi, cu ajutorul pointerului pElementUrmator din nodul anterior, obinem adresa nodului urmtor.

1.5.4. tergerea unui nod dintr-o list dublu nlnuit


Dup modul de amplasare a nodului care trebuie ters, distingem urmtoarele cazuri: (1) tergerea primului nod al listei; (2) tergerea ultimului nod al listei; (3) tergerea unui nod care nu este capt al listei.

1.5.4.1. tergerea primului nod al listei


nainte de a efectua tergerea acestui nod trebuie s ne asigurm c am pstrat adresa nodului urmtor. Primul nod al listei este dat de valoarea pointerului pInceputLista. Operaia de tergere n acest caz poate fi descris astfel: (1) dac lista este vid, operaia este terminat; (2) pstrm adresa nodului urmtor:
pTemp = pInceputLista->pElementUrmator;

74 (3) eliberm memoria punctat de pInceputLista; (4) actualizm valoarea lui pInceputLista cu pTemp (nodul urmtor devine primul nod);
(5) noul nod de nceput al listei nu are precedenti:
pInceputLista->pPrecedent = NULL;

Observaie. Ce se ntmpl dac lista are exact un singur element? Funcioneaz corect etapele de mai sus? Analiznd aceast situaie constatm c valoarea pointerului pInceputLista va fi NULL n etapa (4) pentru c valoarea pointerului pTemp este NULL. Dar valoarea pointerului pSfarsitLista, este corect? Deoarece lista devine vid, valoarea acestui pointer ar trebui s fie NULL. Conform operaiilor de mai sus aa ceva nu se ntmpl. Mai mult, n ( 5) vom obine o eroare datorit faptului c vom ncerca s accesm o zon de memorie interzis (adresa 0x00000000). Ce este de fcut? Modificm (2) astfel: Dac pInceputLista->pElementUrmator = NULL, atunci eliberm zona de memorie pointat de pInceputLista, dup care setm pe NULL pointerii ce menin informaia despre capetele listei (pInceputLista i pSfarsitLista). Operaia se consider terminat i nu se mai execut celelalte etape.

1.5.4.2. tergerea ultimului nod al unei liste dublu nlnuite


Dac lista are un singur nod, aceast operaie coincide cu cea a tergerii primului nod al listei. Deci vom presupune c lista are cel puin dou noduri. n acest caz ordinea operaiilor poate fi:

(1) pstrm adresa nodului precedent n pNodPrecedent:


pNodPrecedent = pSfarsitLista->pPrecedent;

(2) eliberm zona de memorie punctat de pSfarsitLista; (3) reactualizm valoarea pointerului pSfarsitLista
pNodPrecedent;

cu

valoarea

pointerului

(4) ultimul nod al listei nu are succesor:


pSfarsitLista->pElementUrmator = NULL;

1.5.4.3. tergerea unui nod neterminal al listei


Datorit faptului c nodul nu este terminal (lista are cel puin trei noduri) operaiile necesare tergerii acestui nod, punctat de variabila pTemp, sunt:

(1) pstrarea adresei nodului precedent n pNodPrecedent:


pNodPrecedent = pTemp->pPrecedent;

(2) pstrarea adresei nodului urmtor n pNodUrmtor:


pNodUrmator = pTemp->pElementUrmator;

(3) eliberarea zonei de memorie punctat de pTemp;


(4) refacere legturi; legtura cu nodul precedent:
pNodUrmator->pPrecedent = pNodPrecedent;

75
legtura cu nodul urmtor:
pNodPrecedent-pElementUrmator = pNodUrmator;

1.5.5. tergerea unei liste dublu nlnuite


Pentru a terge o list dublu nlnuit, se poate aplica n mod iterativ procedeul de tergere a primului nod (ultimului nod) al listei pn cnd lista devine vid. Un cod simplu care realizeaz acelai lucru (nu mai reface legturile dup tergerea unui nod) poate fi:
... MPI_NodLD *pTemp1, *pTemp; pTemp = pInceputLista; while (pTemp != NULL) { pTemp1 = pTemp->pElementUrmator; delete pTemp; // eliberare memorie ocupat pTemp = pTemp1; } ...

Exerciiu. Rescriei codul de mai sus fr a folosi variabila temporar pTemp1. Observaie. Din punct de vedere metodic, profesorul trebuie s ndrume elevul ntr-un asemenea mod nct acesta s fac o distincie clar ntre definiia formal a unei structuri de date, reprezentarea sa grafic (vizual) i diversele tipuri de implementare.

2. Grafuri i arbori
Dei arborii sunt un caz particular de grafuri, vom ncepe cu tratarea arborilor. Vom lucra n general cu grafuri orientate (digrafuri). Vom preciza n mod explicit referinele la grafurile neorientate. Conform (<16, 21, 30>) arborii (orientai) sunt grafuri conexe i fr circuite. Ca reprezentare, arborii sunt structuri de date de natur recursiv i dinamic. n acest sens, putem spune c prin arbore nelegem o mulime finit i nevid de elemente numite noduri, A = {A1,A2,...,An}, n numr natural pozitiv, care satisface proprietile: - exist un nod i numai unul care se numete rdcina arborelui; - celelalte noduri formeaz submulimi disjuncte ale lui A, care formeaz la rndul lor cte un arbore; arborii respectivi se numesc subarbori ai rdcinii. ntr-un arbore exist noduri crora nu le mai corespund subarbori. Un astfel de nod se numete nod terminal sau nod frunz. O alt noiune legat de arbori este cea de nivel. Rdcina unui arbore (care se numete i nod tat) are nivelul 1. Dac un nod are nivelul n, atuncii descendenii lui (care se mai numesc i fii) au nivelul n+1. Dac pentru fiecare nod subarborii si sunt ordonai (n sensul rdcinilor), atunci arborele se numete ordonat.

2.1. Arbori binari


Un arbore binar este o mulime finit de elemente care este vid sau conine un element numit rdcin, iar celelalte elemente se mpart n dou submulimi disjuncte, care fiecare la rndul ei, este un arbore binar. Una dintre submulimi se numete subarborele stng al rdcinii, iar cealalt subarborele drept. Arborele binar este ordonat, deoarece n fiecare nod, subarborele stng se consider c precede subarborele drept. Deci un nod al unui arbore binar are cel mult

76
doi fii (descendeni) numii fiul stng i fiul drept. Structura ce definete un arbore binar este poate fi descris astfel:
typedef struct _tagArbore { declaraii struct _tagArbore* pStang; struct _tagArbore* pDrept; } MPI_Arbore;

Practic, tipul este acelai cu cel al unei liste liniare dublu nlnuite dar, pentru a evita unele confuzii, am mutat locul pointerilor dintr-un nod (i am schimbat numele cmpurilor i variabilelor folosite): T inf

inf

inf

Situaia menionat este un exemplu edificator pentru faptul c o structur de date trebuie vzut nu numai ca o colecie de informaii organizat ntr-un anume mod (simpl, compus, array, record, etc.) ci i mpreun cu mulimea de operaii admis a se efectua asupra ei (asupra arborelui, altele sunt operaiile admise dect cele asupra listelor nlnuite, stiv, coad, etc.). n continuare vom insista asupra operaiilor cele mai des folosite asupra arborilor binari: 1. 2. 3. 4. inserarea unui nod frunz; accesul la un nod al unui arbore binar; parcurgerea unui arbore binar; tergerea unui arbore binar.

Operaiile de inserare i acces la un nod presupun - ca i la liste - definirea unui criteriu de identificare al unui anumit nod. Gestiunea nodurilor unui arbore binar se realizeaz cu ajutorul unei variabile ce puncteaz spre rdcina (sub)arborelui. Notm aceast variabil cu pRadacina, definit astfel:
MPI_Arbore* pRadacina;

Aceast variabil are ca valoare adresa de nceput a zonei de memorie n care se pstreaz rdcina arborelui. n cazul n care arborele este vid, pRadacina are valoarea NULL.

2.1.1. Inserarea unui nod frunz ntr-un arbore binar


Etapele ce trebuie parcurse pentru a realiza aceast operaie sunt: 1. Se aloc zon de memorie pentru nodul care urmeaz s se insereze n arbore. Notm cu pTemp pointerul care are ca valoare adresa de nceput a zonei respective. Dac alocarea se

77
face cu succes, se continu cu etapa urmtoare. n caz contrar, inserarea nu poate fi efectuat. Operaia de inserare se termin cu afiarea unui mesaj de eroare. 2. Se atribuie valori variabilelor ce formeaz acest nod. Dac asignrile se termin cu succes, se trece la etapa urmtoare. 3. Se atribuie valoarea NULL pointerilor pStang i pDrept pentru noul nod punctat de pTemp.
pTemp->pStang = NULL; pTemp->pDrept = NULL;

4. Unde se insereaz noul nod? Dac pRadacina este NULL (arbore fiind vid), atunci acest nod
va fi primul nod al arborelui i facem asignarea:
pRadacina = pTemp;

Procesul se oprete. n caz contrar, se determin poziia n care trebuie inserat noul nod. Presupunem c aceast adres este meninut n variabila pNodTata. De asemenea, criteriul folosit mai sus va indica dac inserarea se va face n nodul stng sau n nodul drept al nodului pNodTata sau operaia nu poate fi efectuat. n cazul cnd operaia de inserare nu poate efectuat, eliberm zona de memorie a crei adres se afl n pTemp i procesul se termin. 5. Dac inserarea se face n nodul stng, atunci se face atribuirea (legtura nodului pNodTata cu noul nod):
pNodTata->pStang = pTemp;

i procesul se termin. 6. Dac inserarea se face n nodul drept, atunci se face atribuirea (legtura nodului pNodTata cu noul nod):
pNodTata->pDrept = pTemp;

i procesul se termin. Etapa 4. este cea mai important din cadrul acestui proces. Criteriul de identificare a nodului dup care se face inserarea este specific pentru fiecare caz n parte. Informaiile care contribuie la identificarea nodului sunt cele din nodul care se vrea a se insera i cele existente deja n nodurile alocate. Trebuie reinut c n acest caz se va ncepe cu cercetarea nodului rdcin i c operaiile care se efectueaz sunt aceleai pentru fiecare nod. Deci acest criteriu de identificare poate fi implementat ca o funcie cu cel puin doi parametri. Un parametru va conine adresa nodului supus testrii parametru de intrare iar cellalt parametru va conine adresa nodului dup care se face inserarea parametru de ieire. Prototipul funciei ar putea fi:
int identificare(MPI_Arbore* pNodCurent, MPI_Arbore* pNodDeterminat);

cu urmtoarele convenii pentru valoarea de tip int returnat: a) numr strict negativ: se face inserarea n nodul stng; b) numar strict pozitiv: se face inserarea n nodul drept; c) valoarea zero: inserarea nu poate fi efectuat.

2.1.2. Accesul la un nod al unui arbore binar


Accesul la un nod al unui arbore binar presupune existena unui criteriu care s permit determinarea nodului respectiv. Acest lucru a fost discutat imediat anterior la Etapa 4.

78 2.1.3. Parcurgerea unui arbore binar


Sunt cunoscute trei metode (recursive) clasice de parcurgere a unui arbore binar: (1) n preordine; (2) n inordine; (3) n postordine. Parcurgerea unui arbore binar n preodine nseamn accesul la rdcina arborelui i apoi parcurgerea celor doi subarbori, nti a celui stng i apoi a celui drept. Subarborii, fiind la rndul lor arbori binari, se parcurg n acelai mod. Parcurgerea unui arbore binar n inordine nseamn parcurgerea mai nti a subarborelui stng, apoi accesul la rdcin i n continuare parcurgerea subarborelui drept. Cei doi subarbori se parcurg n acelai mod. Parcurgerea unui arbore binar n postordine nseamn parcurgerea mai nti a subarborelui stng, apoi a subarborelui drept i n final accesul la rdcina arborelui. Cei doi subarbori se parcurg n acelai mod. Pentru fiecare dintre cele trei metode construim funciile Preordine, Inordine i Postordine care au urmtorul prototip:
void void void Preordine(MPI_Arbore* pNod); Inordine(MPI_Arbore* pNod); Postordine(MPI_Arbore* pNod);

Pentru descrierea recursiv a lor vom folosi i funcia:


void Radacina(MPI_Arbore* pNod);

prin care vom descrie anumite operaii specifice rdcinilor subarborelui. Algoritmul pentru parcurgerea n preordine este descris n continuare. Dac pointerul spre rdcin nu este NULL, atunci se execut etapele: a. se apeleaz funcia Radacina cu valoarea parametrului pointer spre rdcin; b. fiul stng devine noua rdcin i se apeleaz funcia Preordine cu valoarea parametrului pointer spre noua rdcin (astfel se parcurge n preordine subarborele stng); c. fiul drept devine noua rdcin i se apeleaz funcia Preordine cu valoarea parametrului pointer spre noua rdcin. Codul funciei este:
void Preordine(MPI_Arbore* pNod) { if (pNod != NULL) { Radacina(pNod); Preordine(pNod->pStang); preordine Preordine(pNod->pDrept); preordine }

// //

parcurge parcurge

subarborele subarborele

stng drept

n n

79
Codurile pentru funciile Inordine i Postordine se construiesc analog avnd n vedere definiiile acestora.

2.1.4. tergerea unui arbore binar


Pentru a terge un arbore binar este necesar parcurgerea lui i tergerea fiecrui nod. Arborele va fi parcurs n postordine (rdcina arborelui trebuie tears ultima). Codul pentru aceast funcie este:
void StergArbore(MPI_Arbore* pNod) { if (pNod != NULL) { StergArbore(pNod->pStang); StergArbore(pNod->pDrept); EliberezMemorie(pNod); } }

unde:
void EliberezMemorie(MPI_Arbore* pNod) { free(pNod->pStang); free(pNod->pDrept); free(pNod); }

Observaie. Nu au fost puse condiii asupra valorii pointerilor nainte de a elibera memoria punctat de ei.

2.2. Grafuri
Principalele exemple se refer la parcurgerea grafurilor n adncime sau n lime. n urma utilizrii acestor algoritmi principali se pot rezolva numeroase probleme privind teoria general a grafurilor (inclusiv reele de calculatoare). A se consulta Capitolul 4, Seciunea 8.

3. Sortare i cutare
Pentru o introducere n problematica vast a acestui domeniu (inclusiv justificarea studiului su intensiv) , recomandm crile <14, 23, 24, 33> . Dei din punct de vedere practic sortarea extern este mult mai important, vom insista, din considerente didactice, asupra sortrii interne. Aceasta nseamn c algoritmii n sine, ideile importante de rezolvare a problemelor reale, complexitatea teoretic, primeaz asupra considerentelor legate de spaiul (resurse hard) i de timpul efectiv (msurat n secunde) de rezolvare. Orice aplicaie care presupune memorarea unor date i regsirea ulterioar a celor care satisfac un anumit criteriu, necesit mecanisme eficiente pentru localizarea lor. Acesta ar fi enunul cel mai general al unei probleme de cutare. Rezolvarea problemei depinde n mod esenial de modul n care sunt memorate datele. Dac, n funcie de criteriul dup care se vor face cutrile, datele sunt memorate ntr-o anumit ordine, algoritmul de cutare poate s fie implementat mai eficient. Dac pentru o aceeai aplicaie sunt necesare cutri dup criterii diferite, lucrurile devin puin mai complicate. De exemplu, dac pentru un dicionar de termeni este necesar s se fac att regsirea definiiei unui termen dup

80
numele acestuia, ct i regsirea tuturor termenilor care se refer la un anumit subiect, stabilirea ordinii utile nu mai este att de simpl. S presupunem ns pentru nceput c dorim s rezolvm problema ordonrii (cresctoare) a unui vector A. Pornind de la acest considerent vom prezenta diverse metode de sortare. n funcie de locul n care sunt pstrate elementele vectorului A n timpul prelucrrii, distingem dou tipuri de sortri:

a) b)

sortare intern: elementele lui A sunt pstrate n memoria intern a calculatorului; sortare extern: elementele lui A sunt pstrate pe un suport extern.

Metodele de sortare vor diferi n funcie de tipul sortrii (intern sau extern). De asemenea, modul de soluionare a problemelor care presupun regsirea datelor este puternic influenat de suportul de memorare al informaiei. n cazul sortrii interne, exist o multitudine de strategii de sortare, fiecare avnd avantajele i dezavantajele sale care sunt analizate n funcie de diverse criterii: memoria ocupat; numr de comparaii; numr de deplasare a elementelor; timp de execuie. n cazul informaiilor aflate n memoria intern se pune problema dac acestea sunt memorate n structuri statice sau structuri dinamice. Algoritmii (imperativi, ne-paraleli) de sortare intern pot fi mprii n dou mari categorii : algoritmi banali (timp de lucru O(n2) sau chiar mai mare), care au ns marea calitate c sunt uor de neles i algoritmi performani (O(nlogn) sau mai mic), care au ns defectul (din punctul de vedere al unui profesor de gimnaziu sau chiar de liceu) c fac apel la cunotine matematice, de specialitate i chiar intelectuale mult prea complexe. n ceea ce privete cutarea, am adoptat aceeai tactic de natur didactic, fr a avea pretenia de a epuiza subiectul n sine (o tratare exhaustiv presupune familiarizarea cititorului, la nivel matematic i informatic cu, de exemplu, domeniul recunoaterii formelor).

3.1. Algoritmi clasici de sortare, de complexitate timp O(n2) i mai mare


Indiferent dac implementarea structurii de date aleas pentru memorarea mulimii A (ceea ce mai sus a fost numit vector) care va fi sortat este bazat pe ceva static (structura array) sau dinamic (structura pointer), descrierea n pseudocod a algoritmilor va fi orientat spre sublinierea ideii generale de realizare (a metodei) i nu pe detaliile de implementare. Se poate consulta i Capitolul 1, n care sunt prezentate i cteva detalii relative la corectitudinea i terminarea algoritmilor.

3.1.1. Cutare
Problem. S se determine apartenena unui element la un ir ordonat cresctor. Soluie. A fost n ntregime prezentat n Capitol 1.

3.1.2. Sortare clasic


Problem. Fie la intrare o colecie de obiecte, nu neaprat distincte. S se furnizeze la iesire aceeai colecie, eventual sub o alt form, care s satisfac anumite criterii (anterior precizate). nainte de prezentarea soluiilor generale (mai mult sau mai puin performante), un exemplu poate fi util. Exemplu. Un vector de dimensiune n (de ordinul milioanelor, s zicem), conine toate numerele naturale de la 0 la n (cu excepia unuia, bineneles). S se determine numrul care lipsete. Iat o prim soluie: - calculm suma primelor n numere naturale cu formula n(n + 1)/2; - printr-o parcurgere secvenial, calculm suma elementelor vectorului;

81
- diferena celor dou sume este numrul cutat. Complexitatea este evident liniar pentru o implementare corect. O alt idee de rezolvare este dat n secvena de program Pascal care urmeaz.
m := 0; for i:= 1 to n do m : = m + a [i] -i; Numrul cutat va fi m. V invitm s gsii (implementai) i ali algoritmi, rezonabili ca

ordin de complexitate.

3.1.2.1. Sortarea prin inserie direct


Vom ncepe aceast subseciune cu cteva exemple. Exemplul 1. Un vector de dimensiune n (de ordinul milioanelor), conine numere naturale care se pot repeta. S se specifice dac exist n ir un numr care se repet de mai mult de [n/2] (partea ntreag inferioar) ori i care este acesta. Dac considerm iniializate corespunztor (cu zero) variabilele numar i aparitii atunci secvena de cod Pascal poate fi :
Pentru i de la 1 la n Dac a [i] > numar atunci aparitii := aparitii + 1 altfel Dac aparitii >1 atunci aparitii := aparitii -1 altfel numar := a [i] ;

La sfritul parcurgerii irului vom obine n numar numrul cutat, dac ap >1, sau aparitii > 1 dac numrul cerut nu se afl n ir. Exemplul 2. S se implementeze n limbajul Pascal algoritmul de calcul a valorii minime dintrun ir. Datele de intrare se vor citi dintr-un fiier text. S presupunem, din motive metodice, c enunul anterior reprezint o tem pentru acas i c una dintre rezolvrile posibile este (chiar dac exemplul mai este discutat n lucrare):
program minim; Programul determina elementul minim dintr-un sir var a : array [1..15] of byte; min,n,i,k : byte; f : text; begin assign(f,'sir.txt'); reset(f); i := 0; repeat i := i + 1; read(f,a [i] ); until eoln(f); close(f); n := i; write(' Sirul : '); for i = 1 to n do write(a i ,',');

82
writeln(#8,'.'); min := a [1] ; k := 1; for i := 2 to n do if a [i] < min then begin min := a [i] ; k := i; end; writeln(' Elementul minim este ',min,' si se afla pe pozitia ',k); readln; end.

Un posibil dialog cu clasa odat ce programul a fost scris pe tabl i care are drept scop verificarea temei, este: ntrebrile profesorului Rspunsurile (corecte ale) elevilor 1. Ce reprezint a:array [1..15] ? 1. Un tablou unidimensional cu maximum 15 elemente. 2. Ce nseamn specificaia of byte? 2. Elementele tabloului vor fi de tip byte, care este un tip ntreg. 3. Ce alte tipuri ntregi mai 3. Tipurile: shortint, word, integer, cunoatei? longint. 4. De unde se vor introduce valorile 4. Din fiierul text sir.txt. irului n vectorul a? 5. Ct se folosete efectiv din tablou ? 5. Numrul de elemente ale irului nu este cunoscut. El va fi determinat dup terminarea citirii din fiier i va fi memorat n variabila n. 6. Exist o limit pentru prelucrarea 6. Da. Limita este impus de propus ? rezervarea memoriei fcut la declararea tabloului a i n va putea lua valoarea maximum 15. 7. Cum se vor plasa elementele citite n zona de memorie rezervat lor ? 8. Cum ai descrie n cuvinte (limbaj natural) algoritmul anterior? 7. Primele elemente ale tabloului vor fi ocupate de termenii irului, iar restul vor rmne nefolosite. 8. Am considerat c primul element este cel mai mic i l-am memorat n variabila min; apoi ncepnd cu al doilea element i pn la sfritul irului, dac ntlnim un element mai mic dect min l reinem pe acesta ca element minim. Revenind la problema sortrii, sortarea prin inserie direct se poate descrie prin urmtoarea idee general : pentru a sorta (cresctor) un vector (ir) a[1..n], se afl mai nti minimul subirului a[i..n], apoi se deplaseaz acesta pe poziia i (prima din subir); ceea ce am descris mai sus se repet pentru i lund valori ntre 1 i n 1.

3.1.2.2. Sortarea cu bule


Se poate consulta Capitolul 1 (i <14, 23, 24, 33>).

83 3.1.2.3. Sortarea prin selecie


Se poate consulta Capitolul 1 (i <14, 23, 24, 33>).

3.1.2.4. Sortarea prin interclasare


Fie secvena a1, a2, ... , an (n 2). Aplicnd metoda divide et impera, se mparte irul n dou subiruri a1, a2, ... , am , respectiv am+1, am+2, ... , an cu m (n +1) div 2. Procedeul se repet pentru subirurile ap, ap+1, ... , aq (m = (p, q) div 2) pn cnd se obin subiruri de lungime 1 (ir deja sortat). Dintre subirurile sortate, se obin prin interclasare alte subiruri formate din elementele a dou cte dou subiruri, pn la obinerea irului sortat, de lungime n. Vom ncepe cu un exemplu. Exemplu. Fie irul (secvena, vectorul, lista, etc.) 7, 1, 9, 4, 3, 1, 5, 2, 6, de lungime 9. El va fi mprit n dou subiruri: - 7, 1, 9, 4, 3, primul subir, identificat prin capetele sale (1,5); - 1, 5, 2, 6, al doilea subir, identificat prin (6,9). Subirul (1,5) se mparte n subirurile (1,3) i (4,5), dintre care subirul (1,3) se mai divide n (1,2) i (3,3). Subirurile (1,2) i (4,5) se impart n subiruri de lungime unu. Subirul (6,9) se mparte n subirurile (6,7) i (8,9), care la rndul lor se mpart n subiruri de lungime unu. Acestei secvene de divizri i se poate asocia un arbore binar care are rdcina marcat cu (1,9) (capetele irului iniial) i pentru fiecare nod marcat cu (p,q), marcm succesorii si stng i drept cu (p,m) i respectiv (m+1,q) pn cnd q-p= 0. Mrcile nodurilor reprezint capetele subirurilor obinute n etape succesive de divizare. Nodurile terminale sunt marcate cu capetele subirurilor de lungime unu. Reprezentarea grafic se numete arbore de cutare :

Subirurile terminale sunt sortate. Se interclaseaz apoi irurile terminale obinndu-se noi iruri (n locul irurilor printe ale acestora) care vor fi ulterior ordonate. Aplicarea succesiv a procedurii de interclasare se face printr-o parcurgere n inordine a arborelui binar asociat. Programul Pascal care implementeaz acest algoritm va fi prezentat n ntregime n continuare, el reprezentnd un exemplu ilustrativ complet pentru metoda n cauz. Fiierul de Intrare sir.txt va conine:
7 1 9 4 3 1 5 2 6

Ieirea va fi de forma: irul iniial : 7, 1, 9, 4, 3, 1, 5, 2, 6

84 irul sortat : 1, 1, 2, 3, 4, 5, 6, 7, 9 Programul surs (Metoda):


program sortare_prin_interclasare; var a : array [1..20] of byte; n,i : byte; f : text; procedure sortint(p,q:byte); { procedura de sortare prin interclasare } var m : byte; procedure intercl(u,w,v:byte); { procedura de interclasare iruri ordonate } var i,j,k : byte; b : array [1..20] of byte; begin k := 0; i := u; j := w +1; repeat k := k +1; if a [i] < a [j] then { alege elementul cel mai mic din cele dou subiruri } begin b [k] := a [i] ; i := i +1; end else begin b [k] := a [j] ; j := j +1; end until (i > w) or (j > v); { pn cnd unul dintre iruri se termin } if i > w then for i = j to v do begin k := k +1; b [k] := a [i] ; { se completeaz cu elementele din irul neterminat } end else for j = i to w do begin k := k +1; b [k] := a [j] ; end; for i = 1 to k do{ se scrie irul obinut prin interclasare peste subirurile surs } a [u+i] -1 := b [i] ; end; begin { procedur de sortare prin interclasare } if p < q then { se aplic metoda divide et impera }

85
begin m := (p + q) div 2; { mprire problem } sortint(p,m); { sortare subproblema nti } sortint(m +1,q); { sortare subproblema a doua } intercl(p,m,q); { combinare soluii } end; end; begin { programul principal } assign(f,'sir.txt'); reset(f); n := 0; repeat { citire ir iniial } n := n +1; read(f,a [n]) until eoln(f); close(f); write(' Sirul initial : '); { afiare ir iniial for i = 1 to n do write(a i ,','); writeln(#8,'.'); sortint(1,n); { apel procedur de sortare write(' Sirul sortat : '); for i = 1 to n do { afiare ir sortat } write(a i ,','); writeln(#8,.);

end.

3.1.2.5. Sortarea shell


Pentru a mai alunga monotonia prezentrilor anterioare, metoda n cauz va fi descris (incomplet, fr cod sau discuii precise legate de corectitudine, complexitate, etc.) sub forma unui proiect didactic.
PROIECT DE TEHNOLOGIE DIDACTIC (este bine s se consulte i Capitolul 4) Data:-. Clasa: a X-a. Profesor:-. Disciplina: Algoritmic i programare. Subiectul leciei: Sortarea tablourilor prin metoda shell. Scopul leciei: Introducerea unei noi metode de sortare a tablourilor cu ajutorul arborilor de sortare i cutare. Tipul de lecie: Mixt. Obiective operaionale: Elevii trebuie s fie capabili : s deosebeasc aceast metod de cele prezentate anterior; s implementeze corect metoda shell; s observe avantajele i dezavantajele fa de celelalte metode. Metode folosite: expunerea, conversaia, exerciiul. Mijloace de realizare: convenionale. DESFURAREA LECIEI Punctul 1.

86
Etapa: Moment organizatoric. Timp: 2'. Activitatea desfurat de profesor: Se face prezena i se verific exitena celor necesare nceperii orei. Punctul 2. Etapa: Verificarea cunotinelor. Timp: 15'. Activitatea desfurat de profesor: Verificarea temelor date elevilor pentru acas. Verificarea cunotinelor din lecia precedent cu tema: Sortarea tablourilor prin metoda inseriei directe prin ntrebri: n ce const aceast metod? Avantajele i dezavantajele fa de alte metode implementate anterior. Reluarea metodei cu ajutorul unui alt exemplu. Metoda: Verificare oral. Punctul 3. Etapa: Trecerea la lecia nou. Timp: 2'. Activitatea desfurat de profesor: Anunarea i scrierea pe tabl a titlului leciei: Sortarea tabolourilor prin metoda shell. Punctul 4. Etapa: Predarea noilor cunotine. Timp: 2'. Activitatea desfurat de profesor: Pornind de la un exemplu de la metoda inseriei directe, se poate observa c aceast metod se poate mbunti ajungndu-se la shell-sort. Ideea este urmtoarea: se mparte la nceput tabloul n grupe de cte dou elemente care se raporteaz separat: de exemplu, dac dimensiunea este 16, vom forma grupele (1,9), (2,10); se formeaz grupe de cte patru elemente din cele sortate anterior; procedeul continu pn cnd se ajunge la tabloul n cele din urm ordonat cresctor. Metoda: Expunerea. Punctul 5. Etapa: Fixarea noilor cunotine. Timp: 3'. Activitatea desfurat de profesor: Fiecare grup fiind sortat separat, se observ ca elementele mari se deplaseaz la dreapta. Complexitatea timp n cazul cel mai nefavorabil al algoritmului shell-sort este n3. Prin urmare, profesorul formuleaz ntrebri i exerciii n legtur cu:

metoda de sortare shell; compararea cu celelalte metode. Exemplific noiunile introduse, la tabl. Metoda: Conversaia. Punctul 6. Etapa: Precizarea temei pentru acas. Timp: 3'. Activitatea desfurat de profesor: Exemplific pas cu pas sortarea prin noua metod pe un exemplu concret.

Solicit implementarea algoritmului n Pascal.

87 3.1.3. Sortare rapid


n acest seciune ne vom axa pe prezentarea succint doar a dou metode de complexitate O(n log n). Enunul problemei este acelai cu cel din seciunea precedent.

3.1.3.1. Sortarea quicksort


Ceea ce urmeaz este doar o variant (datorat autorilor) a metodei descrise de E. W. Dijkstra.
PROIECT DE TEHNOLOGIE DIDACTIC Disciplina: Informatic. Clasa: a IX-a. Profesor:-. Data:-. Tema: Cutare i sortare. Metoda quiksort. Tipul de lecie: Predare. Metode didactice: Expunere, exerciii. Mijloace de nvare: Manuale, culegeri. Material bibliografic: (<33>). Obiective operaionale. S neleag metoda predat. S poat aplica metoda pentru un exemplu concret. S poat face deosebire fa de celelalte metode. S poat identifica cu claritate metoda. Nr. Etapa Durata Coninut crt. 1. Organizarea clasei 2'-3' Verificare prezen elevi. Verific dac existmaterialele necesare. 2. Verificarea temei 5'-10' Dac au existat dificulti la pentru acas rezolvarea temei, scot la tabl pe cineva. Dac ora anterioar s-a dat test, tema o va reprezenta testul. 3. Verificarea 10'-15' Se pot scoate 2-3 elevi la tabl cunotinelor sau se poate da o scurt lucrare. anterioare 4. Actualizarea 5'-10' Facem legtura cu lecia anterioar. cunotinelor Se pot pune calificative. 5. Anunarea titlului 1' Titlul scris pe tabl. leciei Se enun obiectivele leciei.

Metoda

Frontal.

Conversaie. Exerciii. Frontal.

Metoda quicksort prezentat mai sus folosete informaii memorate n structuri statice. Pentru a simplifica expunerea, s considerm c avem un singur criteriu de cutare. Considerm c datele sunt memorate n vectori de nregistrri (array) i cutarea datelor se face pe baza valorii unui cmp. n mod tradiional acest cmp se numete cheia nregistrrii (pe parcursul lucrrii am mai folosit acest termen). Tipurile de date utilizate pentru cmpurile cheie sunt alese astfel nct asupra lor poate fi definit o relaie de ordine. n cazul n care componentele vectorului sunt memorate n ordinea cresctoare sau descresctoare a cheilor, atunci regsirea unei nregistrri cu cheie dat se poate face mai rapid dect prin parcurgerea secvenial a tuturor elementelor vectorului. Mai complicat este s ordonm (cresctor) elementelor vectorului, pe baza valorilor

88
cheilor. Reformulnd problemare de sortare, aceasta nseamn s transformm (pe loc) un vector A ntr-un vector pentru care:

A[i].cheie <= A[i + 1].cheie, 1 <= 1 < n - 1,

(1)

utiliznd o cantitate minim de memorie suplimentar. Dup cum am mai precizat, nu exist un cel mai bun algoritm universal de sortare. Alegerea algoritmului potrivit pentru o aplicaie dat trebuie s in seama de numrul de elemente ce trebuie sortate, de complexitatea operaiilor de schimbare ntre ele a valorilor a dou nregistrri i de ct de neordonate sunt elementele vectorului. n cazul quicksort-ului, folosim vectorul A cu elemente numere ntregi. Prin parcurgerea vectorului pornind de la ambele capete (pe rnd) i interschimbarea elementelor care nu sunt n relaia cerut, se mparte vectorul n dou pri, nu neaprat de lungime egal, cu proprietatea c toate elementele din prima parte sunt mai mici (sau mai mari, n cazul sortrii descresctoare) dect toate elementele din cea de-a doua parte. Unul dintre subvectori este memorat (prin indicii de nceput i sfrit), iar cu cel rmas se procedeaz analog. Subirurile memorate sunt prelucrate apoi pe rnd n acelai mod (recursiv), n ordinea invers a memorrii lor. Aplicnd algoritmul, condiia de ordonare (1) poate fi rescris sub forma:
Pentruorice element condiia:

A[K] din vector (denumit pivot) este ndeplinit i < K A[i] A[K] i

K < j A[K] A[j]


Sfpentru

Ca i la sortarea cu bule, se verific dac la un moment dat este ndeplinit condiia corespunztore, n caz contrar efectundu-se corecia necesar, printr-o inversare:
Dac (gsim o pereche de valori

A[i].cheie > A[i + 1].cheie


atunci Sfdac

(i, i + 1) pentru care ) (2)

vom schimba ntre ele cele dou elemente.

Presupunem c a fost aleas ca poziie pivot (K), cea din mijlocul vectorului. Algoritmul urmtor asigur ndeplinirea condiiei anterioare pentru aceast poziie. Limitele ntre care variaz indicii elementelor din vector sunt primul i ultimul. QuickSort (A, primul, ultimul)

i primul j ultimul pivot = A[(primul + iltimul)/2]


repet poziioneaz I dup elementele cu chei<pivot.cheie poziioneaz j naintea elementelor cu chei>pivot.cheie Dac ( i < j ) atunci

89
schimb (A[i], A[j]) Dac (i <= j) atunci { i := i + 1 j := j +1 Pncnd ( i >= j ) }

Exemplu. Fie irul valorilor 9,2,4,10,3 i considerm c poziia iniial a pivotului este K = 3 . Evoluia algoritmului produce urmtoarele transformri:

primul = 1 i = 1

K=3 ultimul = 5 j = 5
1) 2) 3) 9 2 4 10 3 3 2 4 10 9 3 2 4 10 9 I=2, j=4, K=3 I=3, j=3, K=3

Se observ c, dei pentru K = 3 condiia este ndeplinit, irul nu este nc ordonat. Pentru K = 2 i K = 4 condiia nu mai este ndeplinit. Pentru a corecta aceste "greeli" algoritmul trebuie s fie aplicat din nou, att la stnga, ct i la dreapta pivotului. Nu este necesar s se caute dincolo de vechea valoare pentru K (toate valorile aflate "la dreapta" acestei poziii sunt sigur mai mari dect valoarea aflat pe noua poziie de referin). Mai mult, este suficient s se caute numai pn la ultima valoare pentru j.

primul = 1, ultimul = 3 i = 1, j = 3, K = 2
1) 2) 3) 3 2 4 2 3 4 2 3 4

i = 1, j = 2, K = 2 i = 2, j = 2, K = 2

Toate cele de mai sus pot fi ncadrate n Punctul 6 al Planului de lecie. Am mai putea introduce i Punctul 7, Fixarea cunotinelor, destinat prezentrii unei aplicaii practice sau revenirii asupra unor cunotine teoretice eseniale, deja predate. Evaluarea procesului de nvare va rezulta prin supravegherea activitii depuse i constatarea dificultilor n asimilarea cunotinelor i rezolvarea acestor dificulti. Cu ct se insist mai mult pe punctele problematice cu att rezultatul evalurii va fi mai bun. Iat i un exemplu aproape complet de implementare Pascal a ordonrii rapide:
procedure QuickSort (var px:vector; primul, ultimul:integer); var I,j:integer; temp:element; begin I:=primul; I:=ultimul; temp:=px[(primul+ultimul) div 2]; repeat while (px[I].cheie<temp.cheie)do

I:=I+1;
while (px[j].cheie>temp.cheie)do

90
j:=j-1; if (I<j) then schimb (px[I],px[j]); if (I<=j) then begin j:=j-1;

I:=I+1;
end; until (I>=j); if (primul<j) then QuickSort (px,primul,j); if (I<ultimul) then QuickSort (px,I,ultimul); end;

n implementarea considerat mai sus, elementul de refin a fost ales mijlocul vectorului. Se pot obine soluii de accelerare a algoritmului dac se face o alegere mai inteligent a elementelui de referin. Se poate arta c pentru acest algoritm complexitatea medie este O(n log n). n cazul cel mai defavorabil i acest algoritm este, totui, de complexitate O(n2). Dm i o variant nerecursiv :
procedure QuickSort; begin; verf:=0; push (1); push (N); repeat ultim:=pop; prim:=pop; repeat i:=prim, j:=ultim; mijloc:=A[(prim+ultim) div 2]; repeat while A[i]<mijloc do i:=i+1; while A[j]>mijloc do j:=j-1; if i<=j then begin swap (i,j); i:=i+1; j:=j+1; end; until i>j; if i< ultim then begin push (i); push (ultim); end; ultim:=j; until prim > ultim;

until vrf = 0; end; Un alt mod de implementare este cel bazat pe metoda divide et impera. Aplicnd metoda divide et impera vom mpri irul n dou subiruri crora le vom aplica acelai algoritm de

91
divizare pn cnd subirurile obinute vor avea lungimea 1 (i vor fi ordonate). Soluiile pariale fiind memorate tot n acelai ir, operaia de combinare a soluiilor pariale este deja efectuat. Subliniem c n acest algoritm procedurile Prelucrare i ObtinSolutieFinala sunt vide. Procedura Divide are la baz ideea divizrii subirului (p,q) prin plasarea primului element din subir pe poziia sa final n subirul sortat, n aa fel nct toate elementele aflate n stnga sa s fie mai mici dect acesta, iar cele aflate la dreapta - mai mari sau egale cu acesta. Aceast divizare se obine astfel: - memorm captul stng ntr-o variabil i:= p; - memorm captul drept ntr-o variabil j: =q; - marcm captul drept al subirului (prin valoarea true a unei variabile booleene t); - dac a [i] >a [j] schimbm cele dou elemente ntre ele, marcm cellalt capt al irului (t:=not t) i n funcie de captul marcat incrementm pe i (dac t este adevrat) sau decrementm pe j (n caz contrar); - repetm pasul anterior pn cnd i >= j. Procedura Pascal care implementeaz algoritmul de sortare rapid quicksort, obinut prin metoda divide et impera este:
procedure quicksort(p,q:byte); { se aplic metoda divide et impera } var i,j,k : byte; t : boolean; begin if p < q then { test de ieire din apelul recursiv } begin i := p; j := q; t := true; { marcarea captului drept al irului} repeat if a [i] > a [j] then begin { interchimbare elemente de pe poziiile i i j } k := a [i] ; a [i] := a [j] ; a [j] := k; t := not t; { schimbare marc capt ir } end; if t then j := j 1 { decrementare indice capt drept } else i := i +1; { incrementare indice capt stng } until i = j; { pn cnd cei doi indici sunt egali } if i =p then { dac cei doi indici se ntlnesc n captul stng } quicksort(p +1,q) else

92
if i=q then{ captul drept } quicksort(p,q -1) else begin { dac cei doi indici se ntlnesc n interiorul irului } quicksort(p, i-1); quicksort(i +1,q); end; end; dac cei doi indici se ntlnesc n

end; S facem i cteva considerente de complexitate. n cazul cel mai defavorabil, cnd vectorul este iniial ordonat, se fac n-1 apeluri succesive ale procedurii quicksort, cu parametrii (1,n), (1,n-1),...,(1,2), dac vectorul este iniial ordonat descresctor sau cu (1,n), (2,n),...,(n-1,n), dac vectorul este iniial ordonat cresctor. La fiecare apel al procedurii quicksort se efectueaz i-1 (respectiv n-i-1) operatii elementare pentru divizarea intervalului. n total sunt n-1+ n-2 + ... 1= n (n-1)/2 operaii elementare. n cazul cel mai defavorabil, complexitatea algoritmului este deci O(n2). S analizm comportarea algoritmului n medie (<14>): - considerm c orice permutare a elementelor vectorului are aceeai probabilitate de apariie i notm cu Tn numrul de operaii elementare efectuate pentru a sorta n elemente; - probabilitatea ca un element al vectorului s fie plasat pe poziia k n vectorul ordonat, este de

1 . Observm c: n

0 dac n = 0, n = 1 Tn = 1 n ) n ( (Tk1 + Tn k ) + n 1 dac n > 1 k=1


Deci numrul de operaii elementare necesare ordonrii unui ir de lungime n notat Tn, se constituie din cele n-1 operaii necesare determinrii poziiei k a primului element n vectorul ordonat i din cele Tk-1 + Tn-k operaii elementare necesare ordonrii subirului stng, respectiv drept. Din relaia de recuren rezult:
nTn = T0 +T1 +... +Tn-1 =Tn-1 +...+ T1 +T0 = n-1

nTn =n(n- 1) +2 Tk1


k=1

Trecnd n relaia de mai sus pe n n n-1 i scznd cele dou relaii, obinem:

nTn - (n- 1)Tn-1 =n(n- 1) +2 Tk1 (n- 1)(n- 2) - 2 Tk1 = 2(n 1 + (n + 1 Tn1 ) )
k=1 k=1

n1

mprind ambii membrii cu n.(n + 1) relaia devine:

93 Tn T 2(n 1 ) = n1 + n + 1 n n(n + 1 )
Apoi, trecem pe n n n-1:

Tn1 Tn2 2(n 2) = + n n 1 (n 1 n )


........................................... Pentru n = 2 :

Sumnd aceste relaii obinem:


n n n Tn 2(k 1 ) k + 1 2 1 n 2 = = 2 = 2( ), n + 1 k=2 k(k + 1 ) ) ) k= 2 k(k + 1 k= 2 k k= 2 k(k + 1

T2 T1 2 1 = + 3 2 2 3

de unde rezult c
n n n Tn 1 1 1 1 1 1 = 2( 1 2 ( ) = 2( 1 2( )) n+ 1 k+1 2 n+ 1 k=1 k k= 2 k k=1 k

sau,
n n n Tn 1 2 1 4n 1 2 n 1 n1 = 2( 2 + ) =2 2 = = dx = 2lnn. n+ 1 n+ 1 n + 1 k=1 k n k=1 k 1 x k=1 k k=1 k n

n medie complexitatea algoritmului este astfel de O(n ln n).

3.1.3.2. Sortarea cu grmezi, heapsort


Acest algoritm este prezentat i ntr-un proiect de lecie, care va urma. Este necesar de amintit faptul c dei informaia de intrare poate fi coninut ntr-un vector sau o list (utilizndu-se pointeri), ea trebuie vzut ca alctuind un arbore binar. Astfel, ca exemplu, s lum vectorul V de mai jos, avnd 12 componente : 40 5 1 15 -20 20 30 40 50 60 10 15 V
1 2 3 4 5 6 7 8

9 10 11 12 Arborele asociat va conine valoarea 40 (corespunztoare poziiei 1 din V) n nodul rdcin. Avnd valoarea v ntr-un nod, valoare corespunztoare poziiei k din V, cei (maxim 2) succesori imediai ai nodului vor conine valorile situate pe poziiile 2k (fiul stng), respectiv 2k + 1 (fiul drept) din V.
(rdcin, nivel 1) (1) 2k=2

4 0 5 3
(2) 2k+1=5 (3) 2k+1=7

(2) 2k=4

1 5

20

2 0
15

(3) 2k=6 (6) 2k=12

3 0

4 0
(4) 2k=8

5 0
(4) 2k+1=9

6 0

10

(5) 2k=10

(5) 2k+1=11

94

95
PROIECT DE TEHNOLOGIE DIDACTIC Data:-. Clasa: a XI-a . Profesor: -. Disciplina: Informatic aplicat. Tipul leciei: Predare-nvare. Obiectiv fundamental: Formarea deprinderii de a ordona un ir utiliznd Heapsort-ul. Obiective operaionale: La sfritul leciei elevii vor fi capabili : s defineasc un heap(grmad, ansamblu); s creeze un heap; s aplice algoritmul de sortare Heapsort; s scrie programul pentru algoritmul Heapsort. Strategii didactice: Conversaia, explicaia, metoda analitic, munca independent, etc. Mijloace de nvmnt: Manuale, culegeri de probleme. Metode: Activitate frontal, individual. Resurse: - pedagogice - Metodica predrii informaticii, alte cursuri de informatic, ghiduri pentru profesori;: - oficiale - programa colar; - temporale - 50 minute; - psihologice - cunotine dobndite de ctre elevi pn la aceast dat; - colectiv eterogen (interesat de obiect); - clasa mprit pe grupe.

Un heap(grmad, ansamblu) este o multimulime (mulime n care anumite componente se pot repeta). Multimulimea poate fi reprezentat ca un arbore binar (n sensul celor spuse anterior, n exemplu). Atunci, un max-heap este un arbore binar complet (exceptnd, eventual, lipsa unei ultime frunze/nod pendant) n care valoarea memorat n orice nod al su este mai mare sau egal dect valorile memorate n nodurile fii ai acestuia. Similar, min-heap-ul este un arbore binar complet n care valoarea memorat n orice nod al su este mai mic sau egal dect valorile memorate n nodurile fii ai acestuia. Deoarece, conform proprietii de max-heap, elementul maxim trebuie s se afle n rdcina heap-ului, deci pe prima poziie din vector, el poate fi plasat pe poziia sa corect, interschimbndu-l cu elementul din poziia n. Noul element din rdcina heap-ului poate s nu respecte proprietatea de max-heap, dar subarborii rdcinii rmn heap-uri. Prin urmare, trebuie restaurat heap-ul, apelnd o funcie de combinare a elementelor din poziiile 1 i n-1. Elementul de pe poziia n fiind deja la locul lui, practic nu mai este nevoie s fie inclus (formal) n heap. Procedeul se repet pn cnd toate elementele vectorului sunt plasate pe poziiile lor corecte. Codul C este:
#include <stdio.h> #include <alloc.h> #include <conio.h> void schimba(int *a, int *b) {

96
int aux = *a; *a = *b; *b = aux; } void urca(int *v, int i) { if (i > 0) { int j = (i - 1) / 2; if (v[i] > v[j]) { schimba(&v[i], &v[j]); urca(v, j); } void coboara(int *v, int j, int i) { int k = 2 * (j + 1) - 1; if (k < i) { /* v[k] va fi fiul stang al lui v[j], iar v[k + 1] fiul drept. */ if (v[j] < v[k]) { if (k + 1 == i) schimba(&v[j], &v[k]); else if (v[k] > v[k + 1]) { schimba(&v[j], &v[k]); coboara(v, k, i); } else { schimba(&v[j], &v[k + 1]); coboara(v, k + 1, i); } } else if (v[j] < v[k + 1] && k < i - 1) { schimba(&v[j], &v[k + 1]); coboara(v, k + 1, i); } } } void afiseaza_lista(int *v, int n) { int i; printf("Lista sortata crescator este \n"); for (i = 0; i < n; i++)

97
printf("%d ", v[i]); } void main() { clrscr(); /* urmeaza citirea datelor; n este numarul de elemente; v este vectorul cu n elemente ce urmeaza a fi sortat */ int n; printf("Dati numarul de elemente\n"); scanf("%d", &n); int *v = (int *) malloc(n * sizeof(int)); int i; if (v == NULL) { printf(\n Alocare esuata.\n); exit(1); } for (i = 0; i < n; i++) { printf("dati v[%d]=", i + 1); scanf("%d", &v[i]); } /* vom forma in continuare un ansamblu cu proprietatea de maxim; v[i] are fiul stang v[2*(i+1)-1], iar fiul drept v[2*(i+1)]. Ideea este ca elementul v[i] va urca (eventual) pana la radacina. Se observa usor ca proprietatea de maxim a ansamblului se pastreaza. Urcarea se va face de la varfurile pendante catre radacina, deci se scade o unitate si se injumatateste indexul (conform codicarii). */ for (i = 1; i < n; i++) urca(v, i); /* Acum vom aplica o proprietate a max-ansamblelor, anume aceea ca radacina are eticheta cea mai mare. Deci, vom interverti v[0] (adica radacina) cu v[i] (elementul curent) si vom crea imediat un ansamblu cu proprietatea de maxim pentru primele i - 1 elemente. Pentru aceasta, va trebui sa coboram noua radacina la locul ei (adica pe locul v[i]). */ for (i = n - 1; i > 0; i--) { schimba(&v[0], &v[i]); coboara(v, 0, i); } afiseaza_lista(v, n); getch(); }

Codul PASCAL este:

98
{sortare cu ansamble. Numim ansamblu (heap, gramada) din punct de vedere al executiei algoritmului! - un arbore in care inf(tata)>=inf(i), unde i sint noduri ale subarborelui de radacina tata} program heap_sort; uses crt; const nmax = 100; type vector = array [1..nmax] of integer; var v : vector; i, {variabila de lucru} n, {numarul de elemente} m, {index de lucru, cu valori intre 1 si n} aux : integer; {variabila de lucru} {procedura de interschimbare a doua elemente din vector} procedure schimba (var i, j : integer ); var aux : integer; begin aux := v[i]; v[i] := v[j]; v[j] := aux; end; {procedura determina cel mai mare element din arbore in urmatoarea maniera: se ia elementul si se testeaza care informatie din fii este mai mare. Eventual, eticheta tatalui se interschimba cu eticheta celui mai mare fiu.} procedure insereaza ( var i : integer ); {"i" reprezinta indexul nodului tata} var j, aux : integer; {variabile de lucru} begin {"2*i<=m" este conditia de terminare a recursiei} if (2 * i <= m) then begin {"j" reprezinta indexul fiului stang} j := 2 * i; {daca exista fiu drept, atunci comparam cei doi fii intre ei} if j + 1 <= m then {"j" va reprezenta in final indexul celui mai mare dintre fii} if v[j] < v[j + 1] then j := j + 1; {comparam acum tatal cu fiul, eventual interschimbandu-i} if v[i] < v[j] then begin schimba ( i, j ); {urmeaza apelul recursiv necesar pentru eventuala "coborare" a nodului catre frunze.} insereaza ( j ); end; end; end; {programul principal}

99
begin {stergerea ecranului} clrscr; {citirea vectorului} write ( ' Dati dimensiunea vectorului= ' ); readln ( n ); writeln; writeln ( ' Dati acum sirul: ' ); for i := 1 to n do begin write ( ' v[' ,i, ']=' ); readln ( v[i] ); end; {"m" reprezinta indexul elementului curent, care initial coincide cu numarul de elemente ale vectorului} m := n; {creearea ansamblului. Plecam de la penultimul nivel al arborelui deoarece trebuie sa fim siguri ca avem descendenti.} for i := trunc(m/2) downto 1 do insereaza ( i ); {determinarea vectorului sortat} while m > 1 do begin {plecam din radacina, deci de la indexul 1} i := 1; {urmeaza apelul de "coborare" eventuala a radacinii} insereaza ( i ); {deoarece eticheta radacinii este cea mai mare din vector o putem intershimba cu ultimul element. Astfel cel mai mare element al vectorului se afla pe ultima pozitie.} schimba ( 1, m ); {vom pastra proprietatea de ansamblu cu proprietatea de maxim (max-heap) pentru vectorul cu n-1 elemente.} m := m-1; end; writeln; {urmeaza afisarea vectorului sortat crescator} write( ' sirul sortat este: ' ); for i := 1 to n do write ( v[i], ' ' ); writeln; readln; end.

Anexele vor conine i alte exemple utile.

100

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