Documente Academic
Documente Profesional
Documente Cultură
Metodic\
© 2016 by Editura POLIROM
Această carte este protejată prin copyright. Reproducerea integrală sau parţială, multiplicarea
prin orice mijloace şi sub orice formă, cum ar fi xeroxarea, scanarea, transpunerea în format
electronic sau audio, punerea la dispoziţia publică, inclusiv prin internet sau prin reţele de calculatoare,
stocarea permanentă sau temporară pe dispozitive sau sisteme cu posibilitatea recuperării informaţiilor,
cu scop comercial sau gratuit, precum şi alte fapte similare săvârşite fără permisiunea scrisă a deţină-
torului copyrightului reprezintă o încălcare a legislaţiei cu privire la protecţia proprietăţii intelectuale
şi se pedepsesc penal şi/sau civil în conformitate cu legile în vigoare.
www.polirom.ro
Editura POLIROM
Iaşi, B‑dul Carol I nr. 4; P.O. BOX 266, 700506
Bucureşti, Splaiul Unirii nr. 6, bl. B3A, sc. 1, et. 1,
sector 4, 040031, O.P. 53
MASALAGIU, CRISTIAN‑DUMITRU
Didactica predării informaticii / Cristian‑Dumitru Masalagiu, Ioan Asiminoaei, Mirela‑Anca
Ţibu. – Ed. a 2‑a, rev. şi adăug. – Iaşi: Polirom, 2016
Conţine bibliografie
I. Asiminoaei, Ioan
II. Ţibu, Mirela‑Anca
371.3:004+007
Printed in ROMANIA
Edi‑ia a II‑a revăzută şi adăugită
POLIROM
2016
CRISTIANMASALAGIUesteprofesoruniversitardoctorlaFacultateadeInformaticăDepar
,
deInformatică,dincadrulUniversită‑ii„AlexandruIoanCuza”,Iaşi,fiindangajatînîn
superiordinanul1980.Informa‑iisuplimentareprivindîntreagasaactivitatedid
pot fi găsite la adresa web http:/ www.info.~masalagiu.
uaic.ro/
IOANASIMINOAEIesteadministratorre‑eacalculatoare,CECBankSA,SucursalaJude‑ea
cadru didactic asociat la Facultatea de Informatică a Universită‑ii „Alexandr
Cursuri sus‑inute în cadrul facultă‑ii: Metodica predării informaticii (anul IV, Sec
ProgramareWindows –MFC,COM/DCOM,dezvoltaredeaplica‑iifolosindplatforma.NET,topici
speciale. NET. Informa‑ii suplimentare privind întreaga sa activitate didacti
găsite la adresa web http:/ www.info.uaic. ro/
~iasimin.
MIRELA ,IBU este profesor titular la Liceul Teoretic de Informatică „Grigore Mois
metodist al Inspectoratului Şcolar Jude‑ean Iaşi, coordonator de practicăplina ped
Informatică, anul III) şi colaborator la Facultatea de Informatică a Universită‑ii „Al
Cuza” din Iaşi, unde a sus‑inut seminarele la disciplina Didactica informaticii
Informatică.)
Cuprins
Cuvânt-înainte. . . . . . . . . . . . . . . . 9
Introducere
.............. 11
Ce este informatica?
. ............. 11
Societatea informa‑ională şi .e-
. . . . . . .educa‑
.. ia 15
Structura lucrării şi contribu‑iile personale ....... ale autorilor
12
Capitolul 1. Curriculum, instruire,
......... evaluare 23
1. Teoria curriculumului . ........... 23
1. Curriculumul na‑ional în informatică . ....... 23
1. 2 Elaborarea ofertei curriculare ......... 25
1. 3 Planurile de învă‑ământ . .......... 26
1. 4 Programele şcolare (analitice, curriculare) . ...... 30
1.2 Teoria instruirii
. ............. 36
1.2 Manualele şcolare ............ 36
1.2 Structura. .lec‑ . . . . . . . . . . iei 42
1.2 3 Calitatea cunoştin‑elor . . . . . . . . . asimilate 43
1.2 4 Formarea limbajului de specialitate . ....... 4
1.2 5 Caietele elevilor . ........... 45
1.3 Teoria evaluă . . . . . . . . . . . rii
... 46
1.3 Repetare, recapitulare, . . . . . . . . evaluare 46
1.3 2 Practica evaluării activită . . . . . . . . ‑ii didactice 15
1.3 Aprecierea cunoştin‑elor elevilor. Măsuri de prevenire
a rămânerilor în. urmă .......... 53
1.3 4 Condi‑ia profesorului . .......... 5
1.3 5 Planificarea activită.‑ii . . . . . . . didactice 57
Capitolul 2. Principii didactice şi didactica formă. rii
... de competen
59
2.1 Clasificarea şi caracteristicile principiilor . ..... didactice59
2.1 Principiul intui‑
. . . . . . . . . . . iei 60
2.1 Principiul legării teoriei. . .de . . . . . practică 60
2.1 3 Principiul însuşirii conştiente şi active . . . . a cunoştin‑
1 6 elor
2.1 4 Principiul sistematizării şi continuită . . . . . ‑ii cunoştin‑62 elor
2.1 5 Principiul accesibilită‑ii cunoş . ....... tin‑elor 62
2.1 6 Principiul însuşirii temeinice a. cunoş ..... tin‑elor 63
2.1 7 Principiul individualizării şi diferen‑ . . . . . ierii învă‑ării64
2. Didactica formării de competen‑ .......... e 69
2. 1 Contextul trecerii de la obiective . . . . . . la competen‑e 69
2. Competen‑ele‑cheie în studiul. . . . .informaticii . 17
2. 3 Proiectarea competen‑ . . . . . . . . . . elor 73
2. 4 Analiza resurselor
............ 75
2. 5 Elaborarea strategiei . . . . . . . . . didactice 19
2. 6 Clasificarea competen‑ . . . . . . . . . . elor 19
2. 7 Formularea competen‑ . . . . . . . . . . elor 93
2. 8 Momentele lec‑
. . . . . . . . . .iei
.. 93
Capitolul 3. Metode, tehnici şi procedee
. . . . . . . didactice 101
3.1 Metode generale de învă . . . . . . . . . . . ‑are 101
3.1 Expunerea sistematică a cunoş . . . . . . . . tin‑elor 20 1
3.1 2 Metoda conversa‑ . . . . . . . . . . . iei 30 1
3.1 Problematizarea şi învă‑area prin descoperire ...... 50 1
3.1 4 Modelarea
. ............ 80 1
3.1 5 Exemplificarea sau demonstrarea materialului .... 1 intuitiv
11
3.1 6 Metoda exerci‑. iului .......... 21 1
3 . 1 6 . Exerci‑ii şi probleme de recunoaştere a unor no‑iuni,
formule, metode ......... 31 1
3 . 1 6 2 . Exerci‑ii şi probleme aplicative pentru formule
sau algoritmi cunoscu‑ . ........ i 31 1
3 . 1 6 3 . Probleme reale care permit însuşirea . . . unor4 1 no‑
1 iuni
3.1 7 Metoda învă‑ării în grupe mici . ........ 71 1
3.1 8 Metoda lucrului cu manualul şi documenta‑ ..... ia 81 1
3.1 9 Metoda jocurilor didactice ......... 120
0 .3 1 Instruirea programată şi învă‑area asistată . . . . de calculator 120
3.2 Metode specifice de învă . . . . . . . . . . . ‑are 12
Capitolul 4. No‑iuni de. . . bază
......... 125
4.1 No‑iuni de bază în informatică . .......... 125
4.2 Paradigme de programare . ........... 130
4.3 Tehnici de programare. Proiectarea algoritmilor: . . . sortare 13 şi căuta
2
4. Algoritmi clasici de sortare, de complexitate ) şi mai mare.
timp . . O(n 136
4. 1 Sortarea prin interschimbarea elementelor . .... vecine 136
4. 2 Sortarea prin selec‑ . .......... ie 137
4. 3 Sortarea prin inser‑. . ie . . . . . . . directă 138
4. Sortarea. Shell
........... 139
4. 5 Sortarea rapidă
. ........... 1 41
4 . 5 1 . Sortarea prin interclasare ........ 142
4 . 5 2 . Sortarea quicksort. . . . . . . . . . 143
4 . 5 3 . Sortarea cu grămezi (
heapsort) ....... 146
4.5 Metode de elaborare (proiectare) a . . . . . . .algoritmilor 150
4.5 1 Metoda
divide et impera. . . . . . . . . . 1 51
4.5 2 Metoda
backtracking. . . . . . . . . . . 153
4.5 3 Metoda
greedy. . . . . . . . . . . . 158
4.5 Metoda programării dinamice ......... 1 61
4.6 Analiza complexită‑ii, corectitudinii şi terminării
algoritmilor/programelor . ........... 164
Capitolul 5. Structuri de date: liste,
....... stive, cozi 17
5.1 Liste ............... 17
5.1 Liste liniare simplu. înlă . . . . . . . . n‑uite 178
5 . 1 . Crearea unei liste simplu . . . . . . înlăn‑uite 1 81
5 . 1 2 . Accesul la un nod al listei simplu . . . . înlăn‑uite 183
5 . 1 3 . Inserarea unui nod -o listă într simplu înlăn‑. . . .uită 185
5 . 1 4 . Ştergerea unui nod -o listă dintr simplu înlăn‑. . .uită 18
5.1 2 Liste circulare simplu. . . înlă . . . . . . n‑uite 1 91
5 . 1 2 . Crearea unei liste circulare simplu . ... înlăn‑192 uite
5 . 1 2 . Inserarea unui nod -o listă într circulară
simplu înlăn‑uită . ......... 193
5 . 1 2 3 . Ştergerea unui nod -o listă dintr circulară
simplu înlăn‑uită . ......... 193
5 . 1 2 4 . Parcurgerea unei liste circulare. simplu .. înlă 193 n‑uite
5.1 3 Liste liniare dublu. înlă . . . . . . . . n‑uite 194
5 . 1 3 . Crearea unei liste dublu . . . . . . înlăn‑uite 195
5 . 1 3 2 . Accesul la un nod al unei liste dublu . ... înlăn‑uite 197
5 . 1 3 . Inserarea unui nod -o listă într dublu înlăn‑. . . uită . 197
5 . 1 3 4 . Ştergerea unui nod -o listă dintr dublu înlăn‑. . uită .. 19
5 . 1 3 5 . Ştergerea unei liste dublu . . . . . . înlăn‑uite 20
5.2 Stive ............... 1 02
5.3 Cozi ................ 20
5.4 Baze de date . ............. 203
5.4 1 Furnizori ADO.NET . . . . . . . . . . 203
5.4 2 Conectarea la baza. . de . . . . . . . . date 205
5.4 3 Execu‑ia comenzilor . .......... 205
5 . 4 3 1 . Adăugarea înregistră . . . . . . . . rilor 205
5 . 4 3 2 . Actualizarea înregistră ........ rilor 206
5.4 Regăsirea informa‑. iilor .......... 7 02
Capitolul 6. Teoria grafurilor şi a
. . . . . arborilor
.... 209
6.1 Grafuri şi arbori . ............ 209
6.2 Arbori binari
. ............. 31 2
6.2 1 Inserarea unui nod frunză -un arbore într binar
alocat dinamic . ........... 51 2
6.2 Parcurgerea unui arbore . . . . . . . . binar 71 2
6.2 3 Crearea arborilor binari plecând de la parcurgerile
în preordine şi inordine
. ......... 91 2
6.2 4 Accesul la un nod al unui arbore ....... binar 20
6.2 5 Ştergerea unui arbore . . . . . . . . . binar 12
Concluzii
................ 233
Anexe. . . . . . . . . . . . . . . . . 235
Anexa 1. Proiecte de tehnologie didactică
......... 237
Anexa 2. Subiecte date la concursuri de. . . specialitate
... 263
Anexa 3. Adrese web utile
. ........... 1 03
Bibliografie. . . . . . . . . . . . . . . . 30
Cuvânt-înainte
Informatica a început să fie considerată ştiin‑ă abia din deceniul nouă al sec
fiind denumită de atunci ştiinţa şicalculului, ştiinţa calculatoarelor sauştiinţa tehnologiei
informaţiei şi comunicării.Fundamenteleei‑indeştiin‑eleexacte:matematicăfizică , chim
,
biologie sau chiar medicină. Informatica este însă atât o ştiin‑ă abstractă, câ
legată de o realitate concretă, intermediată de o maşină (calculatorul). Viito
deja marcat de societatea informa‑ională în care trăim, pe plan interna‑iona
cel economic fiind înlocuite adesea prin războiul informa‑ional. În România
industria IT (I
nformation T echnology) şi‑au căpătat actualul statut cumva cu întârzie ‑
cultă‑ilefiinddeterminatederegimulcomunist.Între1097şi1980(poatechiarmaide
şi‑au făcut totuşi loc calculatoarele analogice, maşinile de facturat ‑ şi conta
rele de tipul Felix sau IBM şi mai apoi minicalculatoarele. În acea perioad
economică (şi relaxare politică) s‑au înfiin‑at centrele teritoriale de calcul
de calcul din anumite întreprinderi, Institutul Central de Informatică
de informatică, sec‑iile de informatică (maşini de calcul, automatizări ş.a. ‑ ) din cad
tă‑ilor de matematică sau al facultă‑ilor de inginerie. După această etapă ‑ de oare
cen‑ă internă şi în ciuda unor succese recunoscute şi pe plan interna‑ional, s
spre sfârşitul epocii Ceauşescu, exact în momentul în care, în lume, apari‑ia ca
personale transforma informatica din ştiin‑a unor aleşi în bun public. A fost
19 0,întreagasocietateromâneascăsădepunăunefortimens(sprijinităşi‑ dinexte
siv prin contribu‑ia generoasă a unor organiza‑ii nonguvernamentale) pent
să nu rămână la periferia utilizării tehnologiilor informa‑ionale moderne. Şcoa
de informatică are astăzi un prestigiu interna‑ional notabil, începând cu
cercetareaşiîncheindcuspecialiştiideînaltnivelcareactiveazăînmaril
şi interna‑ionale.
Datorită noută‑ii, importan‑ei şi dinamicii deosebite de schimbare a dome
încă numeroase întrebări şi dileme ale căror răspunsuri sau solu‑ii se pot doved
pentruînvă‑ământ,câtşipentruansamblulsocietă‑iiviitoare.Trecemînrevis
câteva dintre acestea. Din punct de vedere conceptual, este firesc să ne
dacă informatica este o ştiin‑ă concretă/aplicativă sau abstractă. Este ea indi
matematicăsaumaimultdefizică,chimieoribiologie?Terminologiasaactuală ‑ ,în
pletă şi uneori ambiguă, trebuie să fie nouă în totalitate sau preluată şi adapt
fundamentale,degrani‑ă?Careesterela‑iaexactădintreanumiteconceptede
(aparent) complet diferită, cum ar fi algoritm şi cip?înseamnă Informatica
oare programare,
algoritmicăstructuri
, deinforma‑iesaucomunicare(Internet,telefoniemobi
criptare, interfa‑ă om‑mediu? Care va fi în viitor rela‑ia exactă dintre informa
ştiin‑e?Careesteînacestmomentadevăratasubstan‑intelectuală ă aaceste
01 CUVÂNT-ÎNAINTE
Înprimulsubcapitolvomdiscutadespreinformaticămai , exactdesp
cunoscuteînînvă‑ământulgimnazialşilicealsubdenumirilegenericede
şi „tehnologia informa‑iei şi comunica‑iilor” (TIC). Apoi vom prezenta con
general în care se plasează societatea românească la început ‑ de mile
cular, învă‑ământul. Vom insista asupra învă‑ământului preuniversita
câ‑iva termeni intra‑i deja în vocabularul de bază al limbii române, ‑ d
nifica‑ie exactă este încă necunoscută sau interpretată [Mas2 în
], mod
[*1 ]). eronat
Accentul este pus pe legătura cu mediul virtual cu care educa‑ia, mai
pe cale electronică ( , este astăzi interconectată de‑a lungul între
e‑educaţia)
(vorbim despre lifelong learning, LLL). La sfârşit prezentăm pe scurt con‑inutul
fiecărui capitol în parte, precum şi contribu‑ia concretă a fiecăruia di
autori.
Ce este informatica?
Paşii anteriori pot fi reitera‑i dacă apar erori. Din punctul de ved
calculatorul ajută la demonstrarea teoremelor, poate controla ‑
ilor, furnizează contraexemple, verifică anumite calcule pe date de te
calcule simbolice.
Modelarea îşi are rădăcinile în ştiin‑ele experimentale, având‑ drept
garea unui fenomen, din nou prin câteva etape:
1 . Formarea unei ipoteze de lucru.
2 . Construirea unui model formal (abstract) şi realizarea unei pred
3 . Proiectarea sau realizarea unui experiment şi colectarea date
4 . Analiza rezultatelor.
ÎnRomâniaexistăolegisla‑ieclarăprivindorganizareaînvă‑ământulu ‑
sitar, precum şi curricula corespunzătoare. Până în 16,20 planurile‑cadru
învă‑ământulprimarşigimnazials‑aureconfigurat(apelându‑seinclusi
publice), în curând acelaşi lucru urmând a fi făcut, sub egida Ministerul
Na‑ionaleşiCercetăriiŞtiin‑ifice(MENCŞşi ) aInspectoratuluiŞcolarJude‑ea
şipentruînvă‑ământulliceal.Înprezent,disciplineleinformatică ‑ şite
ma‑iei şi a comunica‑iilor, care abordează con‑inuturi de informatică în m
şi declarat, se regăsesc (în gimnaziu şi liceu) în trunchiul comun (discipl
‑
gatorii), în curriculumul diferen‑iat (în func‑ie de specializare) şi în cur
decizia şcolii. La gimnaziu, vorbind despre prezen‑a disciplinelor de i
trebuie să spunem că nu existăînore
trunchiul comun, dar sunt propuse tot m
14 DIDACTICA PREDĂRII INFORMATICII
Putemspunecădidacticageneralăstudiazăproblemeleteoretice ‑ şi
cativeglobalealeînvă‑ământului(inclusivaleînvă‑ământuluideinfor
referălaprocesulînsuşiriidecătreeleviacunoştin‑elor,priceperilo
lasarcinileşicon‑inutulînvă‑ământului,precumşilaprincipiile,metod
de organizare a învă‑ământului. Metodica poate fi privită ca o didactic
Obiectul de studiu al didacticii predă îlrii
constituie
informaticii
astfel învă‑ământ
deinformaticăprecum
, şisarcinilecareîirevin.Acestesarcinidecurgd
generale ale învă‑ământului şi educa‑iei în etapa actuală de dezvoltar
Înceeacepriveştecadreledidactice,acesteştiin‑esuntimportan
şi trebuie studiate şi stăpânite simultan. Cunoştin‑ele ştiin‑ifice a
vaste şi profunde ar fi) nu sunt suficiente pentru desfăşurarea ‑ în con
zătoare a procesului de instruire. Pentru ca activitatea profesor
dorit este necesar ca aceasta să se desfăşoare într‑un mediu adecva
vedere legislativ, economic, administrativ etc. Asta pentru a nu ma
şi perseveren‑ă.
Ideileprincipaleprivindaspectulsocietă‑iinoişirolulprofesor
schimbare conştientizată a acesteia datează aproximativ din ‑ deceni
lui trecut. Iată câteva dintre ele, aşa cum au fost enun‑ate în perioad
• Societatea viitorului (cea în care trăim acum) va fi o societate
( Information Society). Acest tip de societate va apărea datorită răspândi
noilor tehnologii privind informa‑ia şi comunica‑iile. Schimbări pro
produce în toate domeniile, începând cu administra‑ia (e‑guverna
(e‑commerce) şi terminând cu educa‑ia/învă‑ământul (e‑education/e‑lea
cultura (centre multimedia şi biblioteci virtuale) şi chiar manie
anumită profesiune.
• Astfel, nu vom putea evita (în viitorul foarte apropiat) educa‑ia pe
va implica folosirea calculatorului în mod profesional. Pondere
deschis, la distan‑ă şi în timp real (şi online), va fi covârşitoare. E
16 DIDACTICA PREDĂRII INFORMATICII
Internetuluiconstituieceamaiimportantăbazăpentrupromovar
tip de educa‑ie.
• Rolul profesorului va fi mult mai dificil şi mai important, iar ‑ probl
irea profesorilor, reconversia profesională, vor multispecializare
căpăta impor
‑
tan‑ă na‑ională.
• ,ara noastră trebuie să devină parte activă a efortului general de
costurilor economice şi efectelor sociale negative generate de
societate.
• Anumite condi‑ii specifice României de azi, cum ar fi instabilitat
prelungită, lipsa sprijinului consistent (financiar sau de altă n
faptul că învă‑ământul superior nu poate garanta o pozi‑ie socială si
absolven‑i, existen‑a unor regiuni defavorizate, legisla‑ia (uneor
ne for‑ează (poate surprinzător) să facem paşi mai mul‑i şi mai rapizi decât ‑ăr
dezvoltate pentru a trece la societatea informa‑ională.
• Folosirea generalizată a învă‑ământului la distan‑ă poate genera ch
De exemplu, este posibil ca un singur calculator sau server perfor
sta‑iidelucruplasateînzonegreuaccesibileşicupu‑inielevi)săco
decât între‑inerea şi administrarea mai multor spa‑ii de învă‑ământ
• Tranzi‑ialasocietateainforma‑ionalăvageneraînsăproblemecompl
întregii umanită‑i, astfel încât nu numai guvernele şi administra
chiar şi organiza‑iile de anvergură mondială vor trebui să se implice ‑ a
dierea şi finan‑area unor proiecte de cercetare legate de ‑ rezolv
bleme.Factoriiceimaiimportan‑ipentruoasemeneatranzi‑iesunt
de comunica‑ii şi aplica‑iile informatice.
Putemconcluzionacăpreviziunilefăcuteaufostcuadevăratremarca
care a trecut putând fi exploatată la maximum pentru optimizarea
minimizarea riscurilor de eşec legate de adaptarea la societate
subliniem faptul că printre obiectivele declarate ale tuturor
cadrul Uniunii Europene s‑a numărat şi asigurarea unei tranzi‑ii cât
conflicte spre societatea informa‑ională pentru toate statele
fost dovedit de existen‑a şi activitatea unei Comisii Europene
Informa‑ională (The European Commission for Information – ECIS)
Society
, parte
a Forumului pentru o Societate Informa‑ională (Informational – ISF, Society
una dintre comisiile permanente ale Uniunii Europene), precum şi a
privind ‑ările est‑ şi central‑europene care nu sunt membre ale Uniu
(EuropeanUnionCommissionforEasternandCentralEurope – EUCECC) Countries
.
Sătrecempescurtînrevistăsitua‑iaactualăa‑ăriinoastre,pornind
istoric. În primul rând trebuie amintită Legea învă‑ământului‑ nr. 84/19 5. Ca o c
secin‑ă, Hotărârile de Guvern nr. 36/19 7 şi02/19 8 fixau condi‑iile prin care se
puteaucreaşifinan‑aşiputeaufunc‑ionaanumitere‑eleşiinstitu‑iidedi
tuluiladistan‑Au . ă urmat,înmodfiresc,câtevaordinealeMENCŞprincares‑aupre
condi‑iile concrete de aplicare a directivelor amintite. Printre
• Ordinul MENCŞ 3289/1 8 (http:/ www.edu.ro), de creare a centrelor zonal
pentru învă‑ământul la distan‑ă, finan‑ate, în principal, din resurse
func‑ionând sub asisten‑a proiectului european PHARE. Pentru ‑ a ex
donare eficientă, s‑a creat şi Oficiul Na‑ional pentru Învă‑ământ la
(ONIDD), iar centrele zonale au avut posibilitatea de a crea şi contro
departamentale, cum ar fi cele înfiin‑ate în institutele de înv
Acesteadinurmă,deşicreatesubegidaunorinstitu‑ii‑mamă,aveauind
financiară.
• Ordinul MENCŞ 3495/1 8, prin care s‑a adoptat o nouă listă a specializărilor
admise pentru învă‑ământul superior. Învă‑ământul la distan‑ ‑ ă a fost l
tat, în ansamblu, ca o nouă specializare.
• OrdinulMENCŞ3 54/19 ,princares‑aoficializatşicreareacentrelor‑ deînvă
‑ământ la distan‑ă în institutele (de stat) de învă‑ământ superior. Ace
drept scop primordial asigurarea educa‑iei permanente (sau chia
în anumite situa‑ii) pentru acele persoane care nu au avut posibi
un învă‑ământ clasic. Conform legilor anterioare, finan‑area lor se
fondurieuropene, prin programul PHARE,precumşidinresurselocale(i
aleuniversită‑ilorsaufacultă‑ilorimplicate)cu , oindependen‑
‑ dec
ă
punzătoare fa‑ă de conducerea institu‑iilor în cadrul cărora func‑ion
În16,2întreaga
0 activitate legată de societatea informa‑ională este
MinisterulComunica‑iilorşipentruSocietateaInforma‑ională(MCSI;fos
al Comunica‑iilor şi Tehnologiei Informa‑iei; http:/ www. mcsi. ro) . MCSI es
„organuldespecialitatealadministra‑ieipublicecentraleîndo
INTRODUCERE 19
Capitolul1 este destinat, după cum rezultă şi din titlul său, prezentă ‑ rii te
culumului,instruiriişievaluăriiînînvă‑ământulpreuniversitar,cuac
informatică. Se discută metodele de elaborare a ofertei curricular
învă‑ământ şi a programelor şcolare. Este subliniată importan‑a manuale ‑
mării limbajului de specialitate al elevilor. În capitolul 2, obiect
didactice sunt tratate din punct de vedere metodic, atât la ni
particularizat. Ca o continuare normală, în capitolul 3 se face o trec
metodelor, tehnicilor şi procedeelor didactice folosite la nivel g
clasic,precumşiînpredareainformaticiimoderne.Capitolele4,5şi6sunt
practicexemplificăriiconceptelortratateanterior,prinstudiu
de bază ale folosirii calculatoarelor (în special laparadigme nivel de de softwa
programare, algoritmi esenţiali (în special cei de sortare), metode generale ‑ d
borareaalgoritmilor (
divide et impera, backtracking, greedy,programaredinamică),
analizacomplexită‑ii,corectitudiniişiterminăriiprogramelor,struc
stive, cozi) şi baze de date şi, separat, grafuri şi arbori. Anexele con‑in e
suplimentare de proiecte didactice, subiecte date în anii anter
admiterea în învă‑ământul superior de specialitate (împreună cu bare
precum şi subiecte date la exemenele de grad şi definitivat (pentr
informaticăcepredaulalicee)etc.Deasemenea,suntprezentate free,online) resur
utilepentrudesfăşurareaîncondi‑iicorespunzătoareaprocesuluidid
AeL,Cisco,Oracle,altecăr‑işimanuale),prinfurnizareaunoradresedesi
careleconsiderămimportante.Bibliografia,deşivastăeste , departede
Să punctăm faptul că to‑i cei trei autori au contribuit la conceperea
redactareatextului,dacănuîntr‑unmodegal,oricumfoartegreu ‑ dedif
cit.Totuşi,fiecaredintreeiaremeritemaiimportante(uneori,chiar
crearea anumitor capitole, sec‑iuni sau por‑iuni de text, după cum urm
• Ioan Asiminoaei: capitolele 4 şi 5, cu excep‑ia sec‑iunilor privind para
de programare şi analiza complexită‑ii, corectitudinii şi terminării
programelor, al căror autor este Cristian Masalagiu. Contribu‑ii
• CristianMasalagiu:introducerea(sec‑iunea„Ceesteinformatic ‑
ună cu Mirela ,ibu), capitolul 3 (o bună parte
– împreună cu Mirela ,ibu),
concluziile. Contribu‑ii la anexe.
• Mirela ,ibu: capitolul 1 (aproape în totalitate), capitolul 2 (ajuta
Masalagiu şi Ioan Asiminoaei) şi capitolul 6. Contribu‑ii la anexe.
Înacestcapitolvomtratacâtevaproblemeglobalealeînvă ‑ ‑ământ
niu, punând accent pe actualitatea din România. Strategiile acce
na‑ional pot influen‑a ierarhiile şi importan‑ a utiliză
principiilor, riişi
metodelor
obiectivelor (de fapt,competenţelor) didactice.
1. Teoria curriculumului
Să începem prin a spune că este necesară o participare activă a fiecă ‑ rui ca
ticînîndeplinireaobiectivelorgeneralealeînvă‑ământului,confor
educa‑ional românesc trebuie să răspundă prompt atât cerin‑elor pe
celor ce implică transformarea societă‑ii. Una dintre cele mai import
acestuisistemestecurriculumulşcolarprivindcon‑inuturile ‑ înv
ticii educa‑ionale,curriculumul defineşte sistemul de procese decizionale, manageri-
ale şi de monitorizare care precedă, acompaniază şi urmează proiectarea, elaborarea,
implementarea, evaluarea şi revizuirea permanentă şi dinamică a setului de experienţe
de învăţare oferite de şcoală ( [*7 ], [*8 ]).
Princiclu curricularseexprimăunconceptbazatpestadiuldedezvoltareps
gogicăalelevilori ş careoferăunsetcoerenti ş clardeobiectivedeînvăar ‑
lanivelulprogramelorcolare. ş Specificitateadominantelorcurricu
înparteesteimportantăatâtpentruproiectareacurriculumului
elevi,părin‑ietc.Curriculumul curriculumul
nucleuşi ladeciziaşcoliisuntcel
segmenteprincipalecareconcurălaformareacurriculumului Curriculumul na‑ion
nucleuestegeneral)
( obligatoriupentrutoatecolile
ş i
ş to‑ielevii,repreze
prin care învă‑ământul public speră să asigure egalitatea şanselor. Aces
CURRICULM, INSTRUIRE, EVALA
U RE 25
1. 3 Planurile de învăţământ
Planurile‑cadruprecizeazădisciplineledeînvământ ă‑ însuccesiunealorpe
i
ş tipuri de coli
ş sau niveluri. Pentru fiecare disciplină în parte sunt
de ore pe săptămână şi ani de studiu, precum şi numărul de ore de aplica‑ii pr
delaborator,acoloundeestecazul.Acesteaauuncaracterunicşiob
fiecarestadiudepregătiresautipdeşcoalăcuprinzând , obiecteledes
clasă (perioadă de studiu). Într‑un moment de reorganizare a mecanismul ‑
zi‑ii de cunoştin‑e, conceperea unui curriculum este o întreprindere
dacăinem
‑ contdefaptulcăseimpunerenun‑arealalucruridepăite, ş dari
ş p
unor solu‑ii viabile. La baza elaborării planurilor‑cadru stau următ
(aten‑ie,nuestevorbadespreprincipiiledidactice,carevor 2): fidiscut
27
Noulcurriculumfacelocop‑iunilorelevilor,permiteorealăinstruiremu
ointerdisciplinaritateefectivăînabordareacon‑inuturilor,orie
îndirec‑iacapacităilor
‑ debazăaleviitoruluispecialistîninformaticădintr
,
– formarea gândirii algoritmice (capacitatea de abordare sistem
– capacitatea de abstractizare;
– capacitatea de comunicare imediată şi eficientă;
– capacitateadeexploatareafacilităilor
‑ oferitedetehnologiilein
Curriculumul anterior:
• A fost centrat pe con‑inuturi.
• Formularea obiectivelor viza în mod direct atestarea ‑ profe
tului.
• Con‑inuturile învă‑ării erau aceleaşi pentru to‑i elevii.
• Absen‑a cooperării între elevi în realizarea unei aplica‑ii era o re
• Existau con‑inuturi didactice fixe, neadaptabile la resursele l
Filierateoreticăprofil
, real,specializările:Matematică‑informatic
‑
matică
Filieravoca‑ională,profilmilitar,specializarea:Matematică‑inform
informatică
Nota de prezentare
Prezentul document con‑ine programa şcolară pentru disciplina ‑ in
diatăînfilierateoretică,laprofilulreal,specializareamatematic ‑
siv informatică , precum ş i la filiera voca‑ ională , profil militar, s
matematică‑informatică intensiv informatică, prevăzută săptă
o oră mânal cu
pentru
activităţi teoretice şi 3 ore pentru activităţi practice, în conformitate cu art. 9. din
OMECI0/16. 3 2049.
Studiul disciplinei informatică se va desfăşura cu întregul colec
clasei pentru activită‑ile teoretice şi cu colectivul de elevi ‑ org
gatoriu în laboratorul de informatică, pentru activită‑ile practic
Competenţe generale:
1 . Identificarea conexiunilor dintre informatică şi societate.
2 . Identificarea datelor care intervin într‑o problemă şi a rela‑iilo
3 . Elaborarea algoritmilor de rezolvare a problemelor.
4 . Aplicarea algoritmilor fundamentali în prelucrarea datelor.
5 . Implementarea algoritmilor într‑un limbaj de programare.
Valori şi atitudini:
1 . Exprimareaunuimoddegândirecreativînstructurareaşirezolva
2 . Conştientizarea impactului social, economic şi moral al informati
3 . Formarea obişnuin‑elor de a recurge la concepte şi metode informa
algoritmic specifice în abordarea unei varietă‑i de probleme.
4 . Manifestarea unor atitudini favorabile fa‑ă de ştiin‑ă şi de cunoaşte
5 . Manifestarea ini‑iativei şi disponibilită‑ii de a aborda sarcini v
Algoritmi elementari.
1. Prelucrarea numerelor :
• prelucrarea cifrelor unui numă ‑ r (de exem
plu, suma cifrelor, testarea proprietă‑i
palindrom etc.)
• problemededivizibilitatede ( exemplu,
det
minareadivizorilorunuinumănarea r,determi
c.m.m.d.c.c./ m.m.m.c.testare
, prima litateetc.)
• calculul unor expresii simple ‑ (sume, pro
duse etc.)
2. Prelucrarea unor secven‑e de valori:
• determinare minim/maxim
• verificarea unei proprietă‑i (de exempl
dacătoateelementeledinsecven‑ ‑ ăsunt
mere perfecte etc.)
• calcululunorexpresiiîncareintervin
din secven‑ă (de exemplu: numărarea ‑ ele
mentelor pare/impare etc.)
• generareaşirurilorrecurente(deexemp
şirul Fibonacci)
Sugestii metodologice
Predarea informaticii va fi orientată spre
rezolvarea de probleme, utilizându‑se
preponderent metode activ‑participative şi punându‑ se accent pe
analiza problemei.
Pentru buna desfăşurare a orelor şi aplicarea programei se sugereaz
activită‑i de învă‑are:
– discu‑ii despre activită‑i cotidiene şi modelarea acestora sub for
bine definite de paşi;
– combinarea unor opera‑ii elementare (paşi) pentru ob‑inerea anumi
complexe în func‑ie de scopul propus;
– explicarea conceptului de algoritm şi a caracteristicilor algor
– explicarea diferen‑ei existente între informa‑ii care reprezint
descriu calea de rezolvare a unei probleme;
– descrierea unui algoritm în limbaj natural;
– prezentareaobiectelorcucareopereazăalgoritmii(constante,va
– clasificarea datelor în date de intrare, de ieşire şi date de mane
– descrierea etapelor rezolvării unei probleme din punct de veder
– prezentarea schemelor logice ca modalitate de reprezentare a a
– prezentarea structurilor de bază în pseudocod;
– exersarea scrierii unor algoritmi simpli, folosind structuri l
repetitive;
– identificareaunorsitua‑iiîncarealegereaunuialgoritmprezin
cu alegerea altuia;
– exersareacreăriişiaplicăriialgoritmilorpentrurezolvareaunor
de elevi în studiul altor discipline şcolare;
36 DIDACTICA PREDĂRII INFORMATICII
acumulare acunoştin‑elor.Dacădiscutămdespredocumenta‑iiledefirmă,opin
acesteanuseridică(şinicinutrebuie)laniveluldidacticalmanuale
lorfiindpurinformativşidestinatnuneapăratspecialiştilorsauvi
Tehnicile de învă‑are şi evaluare a nivelului atins, corectarea ‑ depr
pletarea cunoştin‑elor (simultan cu descoperirea lipsurilor) nu po
deprofesor.Manualulareîncăunroldeosebit,şianume măsurăacela de
a gradului
de profunzime în abordarea noţiunilor, precum şi a domeniului ca atare. El ne poate
indicapânălacegraddecomplexitateşidetaliutrebuieîntreprins
Apari‑ia manualelor alternative scoate în eviden‑ă, o dată în plus, ‑ div
telor de vedere în această privin‑ă. Rolul manualului ca mijloc de co
cunoştin‑esediminueazăcontinuuînînvă‑ământulmodern,loculluifiind
mijloace didactice, mai eficiente şi mai atractive: mijloacele audi
informaticii,calculatoarelecuechipamenteperifericespeciale,s
utilizarea unor suporturi de mare capacitate şi cu posibilită‑i ra
(re)găsire a informa‑iei (casete audiovideo, CD‑uri, DVD‑uri, teletext, In
telefonie mobilă etc.). Credem că profesorul şi manualul, ca surse ‑ didact
crate, nu pot fi decât par‑ial înlocui‑i. Toate mijloacele anterior e
auxiliari mai mult sau mai pu‑in eficien‑i, în func‑ie de domeniul‑ şi disci
date. Transformările societă‑ii româneşti din ultimii ani, dezvoltar
informaticii impun o pregătire diversificată a tinerilor în acest do
Disciplina informatică – din cadrul
profilului matematică–‑informaticătrebuie
astfel să asigure dobândirea unor cunoştin‑e de informatică la ‑ nivel
rală, necesare continuării studiului, şi a unor cunoştin‑e cu caracter
societatea în care trăim. Pornind de la faptul că nu există domeniu de ac
să nu se prelucreze şi să nu se transmită informa‑ii atât în domeniul res
spre exteriorul lui, informa‑ia este foarte pre‑ioasă, ea trebuie sto
transmisă în condi‑ii care să asigure corectitudine şi exactitate, a
profesional. Indiferent de profesia pe care o va alege un tânăr, cu sigu
nevoie de cunoaşterea modului de utilizare a unui instrumentar i
cunoştin‑elorşideprinderilornecesarevadepinde,desigur,dedomeni
şi cerin‑ele concrete. Este însă o nevoie stringentă de ini‑iere a tine
şcolileînutilizareacalculatoarelorlaunnivelprofesional,peca
nivel de cultură generală.
Dezvoltarea gândirii algoritmice este un prim obiectiv la realizarea ‑ căruia
matica îşi aduce o contribu‑ie esen‑ială şi eficientă. Asemenea matemati ‑
tica dezvoltă gândirea (ra‑ionamentul), care în şcoală, dar şi în via‑a de zi cu zi are
un rol esen‑ial în procesul de învă‑are, în formarea caracterului şi a pe
Aceastanuseleagădoardecunoştin‑eledeprogramare,cişi(aşacumammen‑i
deja) de cunoştin‑ele referitoare la gestionarea bazelor de ‑ date, l
relor de texte etc. Prin specificul ei, informatica este esen‑ ‑ ial le
vidualcuuncalculatorşicontribuie la
dezvoltarea deprinderii de a lucra individual.
Pe de altă parte, prin intermediul re‑elelor de calculatoare este p
informa‑ii mult mai eficient decât prin orice altă metodă
Educarea clasică.
elevilor
38 DIDACTICA PREDĂRII INFORMATICII
I. Filiera teoretică
1. Profilul real
a) Specializarea matematică‑informatică
Manuale aprobate de minister:
• Mariana Miloşescu, Manual pentru clasele IX‑X. Bucureşti: EDP, 20 4.
• Emanuela Cerchez, Marinel Paul Şerban, Informatică – Manual pentru clasa
a IX‑a. Iaşi: Polirom, 20136.‑
• Sorin Tudor, Manual de informatică pentru clasa a IX‑a (Pascal şi C++), pro-
filul real. Bucureşti: L&S Infomat, 20 9.
• Sorin Tudor, Vlad Tudor (Hu‑anu) Manual , de informatică pentru clasa a X‑a
(Pascal şi C++), profilul real. Bucureşti: L&S Infomat,12. 0
• Sorin Tudor, Vlad Tudor (Hu‑anu) Manual, de informatică pentru clasa a XI‑a
(Pascal şi C++), profilul real. Bucureşti: L&S Infomat, 20 6.
Auxiliare şi culegeri:
• Carmen Popescu, Vlad Tudor (Hu‑anu) ,
Tehnologia Informaţiei şi a Comunicării
(TIC). Competenţe digitale (vol. I‑II) . Bucureşti: L&S Infomat,14.20
CURRICULUM, INSTRUIRE, EVALUARE 39
Pentrudisciplinatehnologiainforma‑ieii ş comunicăriiTIC)
( dincurricu
(trunchiul comun), con‑inuturile corespunzătoare cerin‑elor probei
digitaledincadrulexamenuluidebacalaureatsuntdisponibileo
competentedigitale.ro,oresursăaccesibilăşiamplăpentruactivitat ‑
‑are.
În urma implementării Programului SEI (Sistem Educa‑ional Informat
învă‑ământul preuniversitar românesc, 13.0 de şcoli au fost dotate cu r
calculatoare şi au fost distribuite pachete de lec‑ii multimedia i
de lec‑ii la discipline variate, printre care şi informatica). Lec‑iile a
comisiidespecialitatedincadrulMENCŞşiintegrateîntr‑oplatformăAe
e‑Learning) instalată pe re‑ele de calculatoare din toate liceele. ‑ L
nibileonlinepentruelevii ş profesoripeportaluleduca‑ionalSEI,http:p /
Metodologia de aplicare a programei pentru disciplina informati
cont de faptul că studiul ei la profilul matematică‑informatică are a
teoretic, cât şi practic, fiind organizat după cum urmează:
– în trunchiul comun, din totalul de (două) ore aprobate, o oră cu caract
se poate desfăşura în clasă sau în laborator, cu întregul colectiv a
doua oră, cu caracter practic, se va desfăşura în laboratoarele de in
grupe de0‑15 elevi, fiecare grupă fiind asistată de câte un profesor;
– în curriculumul la decizia şcolii, orele se vor organiza în laborat
clasă.
Observaţie
Volumul de muncă necesar efectuării temelor pentru acasă trebuie să
limiterezonabile(existăsuficienterecomandărilegalepentrusarci
Unnumărmaimaredeexerci‑iiducelalucrudemântuială,copieri,aban
întregii teme, refuz fa‑ă de abordarea temei. Tema trebuie să fie pe
‑ măsura
tă‑ilorelevilorşilegatădeînsuşireaşiaplicareacunoştin‑elorpredat
diferen‑iat, atunci când între elevii aceleiaşi clase există difere
priveşte capacitatea sau pregătirea lor. Tema trebuie să fie înso‑ ‑ ită d
tătoare, de indica‑ii potrivite. Când tema presupune artificii de
pricepere deosebită, trebuie ca elevilor să li se atragă aten‑ia asup
(deexemplu,prinexerci‑iimarcatecu*,adicădificile).Mul‑ieleviînva‑ăpede
metodele de rezolvare a unor probleme şi îşi formează şabloane pe care
automat. Cu siguran‑ă că şi algoritmii importan‑i, rezultat al analize
îndelungate, trebuie re‑inu‑i, dar uzându‑se de logica internă a acest
are(şi)obliga‑iasă‑iînve‑epeelevicumsă‑şifacătema,nusăcreezeunclimatcar
impune angajarea unui meditator
(mediator păgubos între elev şi profesor şi nu
prelungire a acestuia din urmă, în cazuri extreme). Temele pentru aca
scopul doar dacă pot fi controlate în permanen‑ă de către profesor.
Înfinal,profesorultrebuiesăpunăaccentpeaspectelecareriscăsădev
începecustabilireaobiectivelorşiarelabazăprogramaşcolarăadiscipli
trebuie să se încadreze în numărul de ore stabilit prin programă.
Evaluarea este o componentă foarte importantă a procesului de î
evalua rezultatele şcolare înseamnă a determina, a cuantifica ‑ măsur
vele programului de instruire au fost atinse, precum şi eficien‑ ‑ a met
dare‑învă‑are folosite
– pe scurt, înseamnă a evalua randamentul şcolar. Ac‑iu
efectuate în procesul de evaluare se referă la măsurare/cuantific
rezultatelor şi, evident, la adoptarea unor decizii corespunzătoa
măsuraresaucuantificareserealizeazăcuajutorulunorprocedees
sub numele de metode şi instrumente de evaluare. Interpretarea ‑ şi
tatelor evaluării sunt strâns legate de metodele şi instrument
precum şi de factori externi ce ‑in de vârsta elevilor, mediul de dezvo
etc.Înmodnormal,aprecierearezultatelorevaluăriivacon‑ine ‑ douăe
tante: elevii evalua‑i, pe de o parte, disciplina şi profesorul titula
De fapt, evaluarea, componentă esen‑ială a procesului de învă‑ământ, înde
func‑ii bine definite:
• Funcţia de constatare şi diagnosticareaperforman‑elorob‑inutedeelevi,expli
prin factorii şi condi‑iile care au condus la succesul sau insucces
sunt de o mare diversitate (psihologică, pedagogică, socială etc. ‑ ). Permi
tarea lacunelor şi greşelilor elevilor, precum şi înlăturarea acest
• Funcţia de reglare şi perfecţionare a metodologiei instruirii pe baza infor
ob‑inute din explicarea factorilor şi condi‑iilor care au determi
învă‑ătură.
• Funcţia de predicţie şi decizie vizează desfăşurarea viitoarelor activită‑i di
şi performan‑ele ulterioare ale elevilor.
• Funcţia de selecţie şi clasificareaelevilorînraportcurezultateleşcolare
aceasta permi‑ând clasificarea şi/sau ierarhizarea elevilor.
• Funcţia formativ‑educativă,deameliorareametodelordeînvă‑arefolosited
de stimulare şi optimizare a învă‑ării.
• Funcţia de perfecţionare a întregului sistem de învă‑ământ.
sunt corecte, atunci prin selectarea tuturor răspunsurilor obţin 10 puncte; dacă sunt
două corecte, obţin 0 (zero) puncte şi atunci voi selecta doar trei întrebări la toate
testele ce conţin patru răspunsuri posibile, asigurându‑mi astfel un minim de 5 puncte
pe întrebare. Şi astfel de scenarii pot continua. Deşi par simple, testel
dovedescafidestuldedificileîncazulîncarenuseacceptălanotare
este mecanismul de func‑ionare a testelor‑grilă) decât testele ca
corect. Primul test‑grilă aplicat la o clasă va crea surprize mari atât
şi pentru profesor, de aceea profesorul trebuie să fie conştient că est
pregătească elevii pentru un asemenea eveniment.
Testele‑grilă prezintă urmăavantaje
toarele imediate:
1. Obiectivitate şi uşurin‑ă în notare.
2. Răspunsul se poate da într‑un timp scurt.
3. Se poate acoperi o mare parte din materia predată.
Dezavantajele ar fi:
1. Nu se poate pune în eviden‑ă ra‑ionamentul făcut de elev.
2. Există posibilitatea ghicirii răspunsului (valori prea mari, necon
rezultat aşteptat etc.).
Lafiecarelec‑ieseverificămodulîncareafostîn‑eleasălec‑şiia
asimilată
nouă,iar
dacă lec‑ia are un caracter instructiv, trebuie verificat şi gradul î
au fost re‑inute. Verificarea gradului de asimilare se poate face:
– prinrepetareara‑ionamentelorrealizatepeparcursullec‑iei,c
– prin întrebări de control;
– prin rezolvarea de probleme noi.
Creştereaeficien‑eiprocesuluidepredare‑învă‑arepresupuneomai
a actului de evaluare în desfăşurarea activită‑ii didactice prin ver
sistematică a tuturor elevilor, pe cât posibil după fiecare capito
obiectivelegeneraleşiopera‑ionalealeacesteia,prinverificarea ‑
ire şi corelarea notelor din catalog cu rezultatele ob‑inute de el
(concursuri, olimpiade, examene de admitere etc.).
Metodele de verificare a randamentului şcolar presupun observarea modului
care înva‑ă elevul (logic, mecanic, creativ, ritmic, continuu, în salturi
‑ e
lizează prin probe orale, scrise şi practice, teste de cunoştin‑e şi depr
cum am văzut.
Înacestcapitolsuntprezentatepescurtcâtevadintreprinci
şi reperele didacticii formării de competen‑e, cu unele exemplificări
acestora în domeniul informaticii. Trebuie să precizăm faptul că term
care o folosim în prezent (competen‑e în loc de obiective, competen‑e-che
de obiective-cadru,competen‑especificeînlocdeobiectivedereferi
o schimbare conceptuală petrecută relativ recent la nivelul fac
Schimbarea se referă la o lec‑ie şi mută accentul de pe îndeplinirea obie
profesor pe însuşirea unor competen‑e de către elevi. Vom reveni pe parc
Pentruobunăorganizarei
ş desfăurare
ş aprocesuluideînvământ,
ă‑ profesorul
sărespectemereuşisăaplicecorectcelpu‑inurmătoareleprincipiidid
1 . Principiul intui‑iei.
2 . Principiul legării teoriei de practică.
3 . Principiul însuşirii conştiente şi active a cunoştin‑elor.
4 . Principiul sistematizării şi continuită‑ii cunoştin‑elor.
5 . Principiul accesibilită‑ii cunoştin‑elor.
6 . Principiul însuşirii temeinice a cunoştin‑elor.
7 . Principiul individualizării şi diferen‑ierii învă‑ării.
Vomdescriepescurtlaturaaplicativăafiecăruiprincipiuînzonanoas
Consulta‑iilespeciale,individualizate,nupotfievitate.Diferen‑ier
însănecesitateadeaadaptacon‑inutulstrategiiloreduca‑ionaleînfunc‑i
comportamentuluiindividualsaudegrupalelevilor varea
cum
( aptitudinilo
arfipromo
specifice pentru anumite materii). Această diferen‑iere va răspunde
destinate tratării unor particularităi ‑ psihologice individuale
cerin‑e sociale privind pregătirea şi utilitatea existen‑ei unor s
utile:creareadecoli
ş i/
ş sauprofilespecializate;relaxareaînvământulu
ă‑ ‑
cereamaimultordisciplineop‑ionalei ş facultative;intensificarea
donare activi
directăprofesor‑elevconsulta‑
( ii,discu‑ii,meserotunde,cercuri ‑ deprofi
tereacâtmaicompletăafiecăruielev,atâtcaindividualitate,cât
îmbinarea judicioasă a tratării individuale şi diferen‑iate cu cea gl
care se rezolvă sarcini de echipă; utilizarea învă‑ământuluizarea
asistat; c
elevilor privind posibilită‑ile proprii de formare/dezvoltare int
Exemplu
Pentru ilustrarea aplicării tuturor principiilor, vom încheia
exempluglobal.ProblematurnurilordinHanoieste,considerămnoi,un
de edificator şi de complex, putând fi folosit şi pentru:
– în‑elegerea metodei
divide et impera;
– în‑elegereaderecursivăriiautomateînsensiterativ(parteacons
relor)precum
, şianecesită‑iiprezentăriiunui
doar algoritm
înformasarecursivă;
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E 65
Restric‑ii:
– mutarea discurilor trebuie făcută într‑un număr succesiv de paşi ind
fiecare pas deplasându‑se un singur disc de pe un turn pe altul;
– se mută întotdeauna discul din vârf, adică cel cu diametrul minim
respectiv;
– nusepoateaşezaundisccudiametrulmaimarepesteunulcudiamet
Soluţie.Caunprimcomentariu,săremarcămfaptulcăenun‑ulrecursiveste
simplu, deşi ideea unui algoritm iterativ general pentru aceast
deloc transparentă. Propunem alegerea următoarelor nota‑ii, care
exprimarea ulterioară a solu‑iei:
1 . Pentruturnuri:
i, j, k ∈ {1, 2, 3},valoridiferiteîntreiele, reprezintă
unde
turnul „de plecare”,
j este turnul de sosire, k esteiar
„turnul intermediar
acest caz, putem observa căkavem = 6 ‑ i ‑ j = al_treilea (i, j).
2 . Discurile vor fi notate cu n, în func‑ie de dimensiune
1, 2... n este
( discul de
dimensiune maximă).
3 . Mutările vor fi desemnate prin triplete <a, b, de
c>, ceea
tipul
ce va însemna
că se deplasează discul
c (cel mai din vârf) de pe turnul
a pe turnul b (în vârf).
Desigur căa, b ∈ {1, 2, 3}, iarc ∈ {1, 2... n}.
4 . Succesiunea mutărilor va fi indicată ·”. prin „
Observaţie
M(p, q, 0) va reprezenta cuvântul vid (punctulM
din
poate
defini‑
fi consi
ia
‑ lui
derat ca reprezentând opera‑ia de concatenare, în sensul‑ obişnuit
jelor formale).
Acum,săprecizămcăpentruderecursivareaalgoritmuluivomfolosiosti
stiva este goală. În reprezentarea grafică, ordinea mutărilor este d
încercuit. Elementele stivei denotă:
a) M(...) – apelul recursiv alM func‑
. iei
b) M(... 0) – se ignoră apropo de orice ac‑iune (de fapt, acest simbol va fi
ulterior).
c) <...> – se efectuează o mutare normală.
Procesulseterminăşiseob‑inesolu‑iafinalădoarînmomentulcândst
goalăÎn
. exempluldetaliatdemaijos,consideră
i = 1, j = m3, k = 2, n = 3.
Ceea ce se găseşte în final, ca succesiune de mutări, este:
<1, 3, 1> • <1, 2, 2> • <3, 2, 1> • <1, 3, 3> • <2, 1, 1> •
<2, 3, 2> • <1, 3, 1>.
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E 67
Observaţie
Numărul de mutări pentru
n discuri3şiturnuri este
1 + 21 +... + 2n‑1= 2n.
2. 3 Proiectarea competenţelor
Competen‑aşcolarăesteunansambludecunoştin‑e,capacită‑i,deprinder
dobândite de elev în activitatea de învă‑are şi utilizate în context
vârstei elevului şi nivelului cognitiv al acestuia, în vederea rez
cu care acesta se poate confrunta în via‑a reală.
Succesuloricăreiactivită‑ididacticeestecondi‑ionatde ‑ clarit
ten‑elor pe care aceasta urmăreşte să le formeze sau să le dezvolte. Mai
în oricare alt domeniu, învă‑ământului de informatică îi este caracte
‑
nalitatea–orientareacătredezvoltareaunorcompeten‑e‑ carede
bărişitransformăricepotficontrolateşidirijate.Înacestspirit,ce
condi‑ie pentru reuşita predării informaticii face referire la ‑ stru
zareaşiierarhizareaunorcompeten‑egeneraleşispecifice,adaptate
devârstăaleelevilor,con‑inutuluicunoştin‑elorşipregătiriilorşti
Poate fi aplicat următorul algoritm pentru formarea competen‑el
Cunoştin‑e aplicabile
→ Capacită ‑ i, Abilită ‑ i, Priceperi
→ Conş tientizare
→
Atitudini, Comportamente pozitive
→ Competenţă
74 DIDACTICA PREDĂRII INFORMATICII
Competen‑elegeneralealepredăriiinformaticiiauanumitedeter
să pună în eviden‑ă:
– importan‑ainformaticiiînlumeacontemporanăîn , tiin‑
ş în
,ă tehnicăsauec
– necesitatea învă‑ământului de informatică şi rolul acestuia în fo
generale şi nu numai;
– necesitatea dezvoltării capacită‑ii intelectuale şi a gândirii a
– necesitateaformăriielevuluipentruactivită‑ileviitoare,cau
la diferite niveluri.
2. 4 Analiza resurselor
Înacestmomenttrebuiesărăspundemlaîntrebarea:cumpotdezvolta
propuse? Sunt necesare:
– oanalizăaresurselorpsihologice,carenecesităcunoştin‑edepsiho
a capacită‑ii de învă‑are, a particularită‑ilor de vârstă şi natură
‑ psih
‑iei învă‑ării etc.;
– o analiză a resurselor materiale;
– o analiză a con‑inutului învă‑ării.
Clasificareaanterioarătrebuiesăstealabazaîntocmiriiplanif
care se poate realiza după următoarea procedură:
– se va selecta din manual con‑inutul informativ propus de program
– acestcon‑inutvaficoroboratcucelformativpretinspriceperi,
( depri
– ambelevorfiraportatelaelementultimpprinstabilireanumăru
fiecărei teme.
2.1
rezolvare a problemelor şi No‑iunea de algoritm. Caracteristici. 8
implementarea lor 3.1 într‑ un Reprezentarea algoritmilor în pseudocod.
limbaj de programare3.2 Principiile programării structurate.
3.3 Structuridebazăstructura
: liniarăstructura
, alternativăstructura
, repetitivă.
4.1 Evaluare sumativă.
4.5 Algoritmi elementari
1. Prelucrarea numerelor:
• prelucrarea cifrelor unui număr (de exemplu, suma cifrelor, inversul unui
număr, testarea proprietă‑ii de palindrom etc.);
• probleme de divizibilitate (de exemplu, determinarea ‑ divizorilor unui nu
măr, determinarea c.m.m.d.c./c.m.m.m.c., testarea primalită‑ii, descom ‑
punere în factori primi etc.);
• calculul unor expresii simple (sume, produse etc.).
Evaluare sumativă.
2. Prelucrarea unor secven‑e de valori: S5‑S12
• determinare minim/maxim;
• verificareauneiproprietă‑i(deexemplu,dacătoateelementele
‑ dinsecven
‑ă sunt numere perfecte etc.);
• calculul unor expresii în care intervin valori din secven‑ă (de exemplu:
numărarea elementelor pare/impare etc.);
• generarea şirurilor recurente (de exemplu: şirul Fibonacci,
‑ progresii arit
metice şi geometrice).
Evaluare sumativă.
Elementeledebazăalelimbajuluideprogramare.No‑iuniintroductive.
Structura programelor. 5 S13‑S17
Vocabularul limbajului.
Tipuri simple de date (standard).
Constante, variabile, expresii.
Citirea/scrierea datelor.
Reprezentarea algoritmilor într‑un limbaj de programare.
Structuri de control implementate în limbajul de programare.
Evaluare sumativă.
Fişiere text 4. Definire, opera‑ii specifice:
4.5 • citirea şi afişarea datelor folosind fişiere text 1 S18
Tablouri unidimensionale
2.1 Algoritmi fundamentali de prelucrare a datelor structurate în tablouri:
3.1 • parcurgerea tablourilor unidimensionale; 11 S19‑S29
3. • interschimbarea, deplasarea, ştergerea şi inserarea de elemente;
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E
Planificare calendaristică
Evaluare sumativă.
Aplicarea algoritmilor
‑ 5.1 în prelu Aplica‑ii interdisciplinare (specifice profilului) 9 : S34‑S36
crarea datelor 5.2 • Opera‑ii cu frac‑ii şi numere ra‑ionale (simplificarea frac‑iilor,
adunare, scadere, înmul‑ire, împăr‑ire, comparare).
• Generarea primilor
n termeni ai unei progresii.
• Aplica‑ii geometrice (distan‑a dintre două puncte, ‑ volumul cor
purilorregulate,centruldegreutatealuneimul‑imidepuncteetc..)
• Determinarea punctului de intersec‑ie a două mobile în mişcare
rectilinie şi uniformă.
• Determinarea masei moleculare a unui compus chimic.
Evaluare sumativă.
82 DIDACTICA PREDĂRII INFORMATICII
Dupărealizareaplanificăriianualeestenecesarăproiectareauni
detaliate la nivel de lec‑ie. Unită‑ile de învă‑are:
– sunt teme stabilite de profesor, care constituie capitole sau
din punctul de vedere al con‑inutului şi care pot fi evaluate suma
– înrubrica„Competen‑especifice”setrecsimbolurilecompeten‑el
programa şcolară;
– con‑inuturile selectate sunt extrase din lista de con‑inutur
– numărul de ore alocate se stabileşte de către profesor în func‑ie d
acestuia şi de nivelul de achizi‑ii ale elevilor.
Competenţe
Conţinuturi Activităţi de învăţare Resurse Evaluare
specifice
Definirea informaticii ca ştiin‑1. ă Exemple de aplica‑ii informatice din
‑ învia‑
clasă
a so
: evaluare curentă
Rolul informaticii în societate
1.2 cială – conversa‑ia
Studii de caz ale unor situa‑ii sociale, înExemple de situa‑ii în care este necesară pre
‑ – exemplificarea
abordare informatizată lucrarea algoritmică a informa‑iilor
Unitatea de învă‑are: Identificarea datelor care intervin într‑o problemă şi a tipurilor acestora.
Număr de ore: 2 + 6 ore.
Forma de organizare:
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E
• teorie: 2 ore
• activitate practică: 6 ore
Competenţe
Conţinuturi Activităţi de învăţare Resurse Evaluare
specifice
Date cu care lucrează algoritmii (constante,
2.1 Studiidecazcuexemplificarea ‑ în clasă
suc: evaluare curentă
variabile, expresii). 4.1 cesiunilor de opera‑ii prin care se
– conversa‑ia
Clasificareadatelor.Tipuridedate. 4.5 ob‑in, din datele de intrare, datele
– exemplificarea evaluare sumativă
Opera‑iiasupradatelor.Operatori.Clasificarea de ieşire lasfârşitulunită‑ii
– exerci‑iul
înlabora
tor:
ope
ratorilor. Prezentareamediuluideprogramare de învă‑are
Exerci‑ ii de citire ş iscrierea con
versa‑ia; obser
datelor va
Preceden‑a operatorilor. Expresii. rea; exerci‑ iul
de
83
Competenţe
Conţinuturi Activităţi de învăţare Resurse Evaluare
specifice
Etapele rezolvării problemelor. Exempledealgoritmidindiferiteîn domenii
clasă: de evaluare ‑ cu
No‑iunea de algoritm. Caracteristici. 2.1 activitate – conversa‑ia rentă
Reprezentarea algoritmilor în3.1 pseudocod. Exerci‑ii de descriere a unor succesiuni – exemplificarea
de
Principiile programării structurate. 3.2 opera‑ii prin care se ob‑in, din datele – exerci‑de
iul
Structuri de bază: structura liniară
‑ 3.3 , strucintrare, datele de ieşire
tura alternativă, structura repetitivă 4.1 .
Aplica‑ii cu structuri de bază: 4.5 Studiidecazceimplicăanalizareaîn enun‑
laborator:
ului evaluaresuma
• structuraliniară(exemple:calculul‑ ari unei probleme şi stabilirea paşilor de rezol
‑ – exerci‑ iul tivă la sfârş‑ i
ei şi al perimetrului unor figuri‑ geome vare a problemei – exemplificareatul unită‑ii de
DIDACTICA PREDĂRII INFORMATICII
Competenţe
Conţinuturi Activităţi de învăţare Resurse Evaluare
specifice
Algoritmi fundamentali de prelucrare
‑ 2.1 Exerci‑ii de transcriere a algoritmilor
a da ‑ în clasă ce: utili evaluare curentă /
telor structurate în tablouri zează tipul matrice din pseudocod‑ într‑
3.1 bidimensionale – conversa‑
un lim iaevaluare sumativă
• parcurgereatablourilorbidimensionale
3. bajpede programare – exerci‑iul la sfârşitul unită‑ii
linii/coloane (exemple: elemente
‑ 4.1 mini Exerci‑ii de identificare a necesită ‑ –‑ii structurăde învă‑are
exemplificarea
me/maxime,veciniiunuielement ‑ din
4.2 ma rii datelor în tablouri bidimensionale – problematiza ‑
trice,sumepeliniisaucoloane,4.3 ştergereaExerci‑ii de prelucrare a datelor structurate rea în
sau inserarea de linii şi coloane 4.5 etc.); matrice – algoritmizarea
Lucrul în mediul de programare Codeblocks
înlaborator: exer
• tablouri bidimensionale pătratice,
‑ diago
pentru implementarea algoritmilor ‑ ci‑iul;ce prelu
exemplifi ‑
nale,împăr‑ireamatriciiînzoneînfunc‑ie
creazădatelestructurateîntablouri bidimensi
DIDACTICA PREDĂRII INFORMATICII
‑ careaproblemati ‑
dediagonale,generareauneimatricidupă
onale zarea; algori
tmi
o regulă etc.).
zarea;implemen
tarea
Unitatea de învă‑are: Aplicarea algoritmilor în prelucrarea datelor
Număr de ore: 4 + 12 ore
Forma de organizare:
• teorie: 4 ore
• activitate practică: 12 ore
te etc.).
• Determinarea punctului de intersec‑ie a
douămobileînmişcarerectilinie ‑ şiuni
formă.
• Determinarea masei moleculare a unui
compus chimic.
Resurse bibliografice:
Emanuela Cerchez, Informatica. Culegere de probleme pentru liceu, Editura
Polirom, Iaşi, 20 .
EmanuelaCerchez,MarinelŞerban, Informatica pentru gimnaziu,EdituraPolirom,
Iaşi, 20 .
Emanuela Cerchez, Marinel Şerban, Informatica. Manual pentru clasa a IX‑a,
Editura Didactică şi Pedagogică, Bucureşti, 20 4.
EmanuelaCerchez,MarinelŞerban, PC. Pas cu pas,ed.aII‑a,EdituraPolirom,
Iaşi, 20 5.
Emanuela Cerchez, Marinel Şerban, Programarea în limbajul C/C++ pentru
liceu, vol. I, Editura Polirom, Iaşi, 20 5.
Emanuela Cerchez, Marinel Şerban, Alexandru Perie‑anu, Dragoş Răduca
Elemente de bază ale limbajului C/C++, soft educa‑ional, 20 6.
Mariana Miloşescu, Informatica. Manual pentru clasa a IX‑a, Editura Didactică
şi Pedagogică, Bucureşti, 20 6.
2. 6 Clasificarea competenţelor
În momentul proiectării unei lec‑ii, vom avea în vedere formarea de:
– competen‑e sub raport stadial;
– competen‑e sub raport psihopedagogic.
a) Competen‑e sub raport stadial
Sunt competen‑e pe care le putem împăr‑i, la rândul lor, în:
• Competenţe‑cheie, care definesc elementele şi sarcinile rezultate di
scopului final al educa‑iei, cum ar fi cele legate de formarea unei
puternice, complexe, cu o mare dispozi‑ie spre ini‑iativă şi creativit
vedere:
– formarea capacită‑ii de asimilare a cunoştin‑elor de către elevi;
– formarea capacită‑ii de transfer a cunoştin‑elor şi a experien‑ei de
la rezolvarea unor sarcini necunoscute, apărută pe parcursul ‑ d
sului didactic;
– formarea limbajului ştiin‑ific de specialitate;
– formarea unei atitudini ştiin‑ifice; trebuie insuflat un ‑ respe
tru ştiin‑ă şi importan‑a acesteia în evolu‑ia sa ulterioară; elev
în‑eleagă că procesul de cunoaştere nu se încheie într‑o perioadă de
detimp,căprocesuldecercetaretrebuiesăprelucrezeoriceinfo
critic pentru a fi eficient, fără a se face afirma‑ii categorice/defin
Competen‑ele‑cheiesuntorientatespreanumitelaturialepro
intelectuală, tehnologică, profesională, morală, estetică, fizică etc.
• Competenţe generale ale disciplinei, care sunt formulate în planul‑ ‑ ca
cesuluideînvă‑ământ(privitcaunsistemcomplexşiîntr‑opermanent
În primul rând, se urmăreşte dobândirea unei culturi generale ‑ de
mântul preuniversitar), a unei culturi de specialitate (în înv
sau chiar a unei meserii (şcoli de profil).
92 DIDACTICA PREDĂRII INFORMATICII
societateainforma‑ionalăşidefaptulcăpractic,
, informaticapoatede
de lucru pentru toate celelalte discipline.
2. 7 Formularea competenţelor
Nu considerăm că scopul principal al acestui volum este acela de a int
elaborării unui plan sau a unei programe analitice pentru o discip
eaştiin‑acalculatoarelorsautehnologiainforma‑ieişicomunicării.A
dinstrategiile(petermenscurtsaulung)dedezvoltare/promovarea
de competen‑a consiliilor profesorale, inspectoratelor şcolare, se
ministerului de resort etc. În momentul în care un plan de învă‑ământ şi
analitică sunt însă fixate, alegerea competen‑elor specifice din progr
competen‑elor derivate pentru o lec‑ie reprezintă obliga‑ia profeso
o parte indispensabilă a oricărei proiectări didactice. Formarea ace
în plus faptul că un cadru didactic are o orientare globală şi coerentă
‑ a
lui proces de învă‑ământ, că el cunoaşte şi aplică în mod curent elementele
‑
dică, că procesul în sine de coordonare a învă‑ării în clasă nu mai are secre
urma oricărei lec‑ii, elevii trebuie să dobândească anumite cunoş ‑ tin‑e
tateadealestructura(analiza,sintetiza)înmodcreator.Aceştiatr
şi posibilitatea de a se manifesta direct, interven‑ia profesorulu
degrabă discretă. Prin urmare, scopurile urmărite sunt transpuse în
formulate în termenii unor opera‑ii, ac‑iuni sau manifestări observa
concordan‑ăcucerin‑elegenerale.Formareacompeten‑elorderivate„e
putând însă avea în anumite situa‑ii şi o finalitate pe un termen mai l
ideea că deprinderile şi cunoştin‑ele dobândite anterior vor treb
prinac‑iuniviitoarecaresăcontribuiedecisivlaincluderealorîn
de cunoştin‑e, deprinderi şi priceperi. Formarea de competen‑e trebui
eventual gradat, etape diferite de dificultate care să precizeze:
– competen‑e în termeni comportamentali observabili;
– sarcini concrete de învă‑are, precum şi contextul de realizare;
– criteriul de succes şi modul de evaluare.
2. 8 Momentele lecţiei
Putem considera că principalele momente ale unei lec‑ii pot fi sumari
urmează:
– captarea aten‑iei;
– enun‑area competen‑elor de dezvoltat;
– reactualizarea cunoştin‑elor învă‑ate anterior;
– prezentarea con‑inutului noii lec‑ii;
94 DIDACTICA PREDĂRII INFORMATICII
– dirijarea învă‑ării;
– asigurarea feedbackului;
– intensificarea aten‑iei;
– asigurarea reten‑iei şi transferului de cunoştin‑e.
Şcoala: –
Disciplina: Informatică
Clasa: a IX‑a
Profilul: Matematică‑informatică, intensiv informatică
Data: –
Profesor: –
Unitatea de învăţare: Tablouri bidimensionale
Tema lecţiei: Parcurgerea tablourilor bidimensionale pe linii şi colo
Tipul lecţiei: Mixtă
Durata: 50 de minute
Competenţe generale:
CG2
( Identificarea
) datelorcareintervinîntr‑oproblemăi
ş arela‑iilordi
(CG3) Elaborarea algoritmilor de rezolvare a problemelor.
(CG4) Aplicarea algoritmilor fundamentali în prelucrarea datelor
Competenţe specifice:
(CS4.2 ) Identificarea necesită‑ii structurării datelor în tablouri.
(CS4.3 ) Prelucrarea datelor structurate.
(CS5.1 )Elaborareaunuialgoritmderezolvareaunorproblemedin ‑ aria
lară a specializării.
(CS5.2 ) Alegerea unui algoritm eficient de rezolvare a unei probleme.
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E 95
Competenţe derivate:
La sfârşitul activită‑ii didactice elevii vor fi capabili:
(CD1) Să analizeze problema propusă şi să identifice necesitatea repre
eficiente a datelor sub formă de tablou bidimensional/unidimensio
(CD2) Să descrie parcurgerile pe linii/coloane ale elementelor ‑ unui
mensional care intervin în rezolvarea problemelor propuse.
(CD3Să) elaborezealgoritmieficien‑iderezolvareaproblemelorpropus
parcurgerile pe linii/coloane ale unui tablou bidimensional.
(CD4) Să implementeze secven‑e de cod C++ pentru rezolvarea cerin‑‑ elor p
blemelor propuse.
Strategii didactice
Principii didactice:
– principiul sistematizării şi continuită‑ii cunoştin‑elor;
– principiul accesibilită‑ii;
– principiul individualizării şi diferen‑ierii învă‑ării.
96 DIDACTICA PREDĂRII INFORMATICII
Metode de evaluare:
– evaluare continuă pe parcursul lec‑iei;
– apreciere verbală.
Resurse materiale:
– tabla;
– fişa de probleme.
Structura lecţiei pe secvenţe de instruire
Clasa: a IX‑a
Temalec‑iei:Tablouribidimensionale
–parcurgereapelinii/coloaneauneimat
Fişă de probleme
Un test M cu
întrebări de tip grilă cu răspuns unic este aplicat N unui
candida‑1i ( ≤ N ≤ 100, 3 ≤ M ≤ 300). Răspunsurile corecte şi răspunsuril
candida‑ilor sunt numere din mul‑2,
{1, imea
3, 4}. Fiecare răspuns corect
valorează un punct.
Scrie‑i un program C/C++ care citeşte din fiştest.in,
ierul N M, apoi de pe
următoarele N linii câte
M numere reprezentând răspunsurile elevilor M între
‑ la c
bări. De pe ultima linie se citescM răspunsuri
cele corecte.
Se cere:
• Numărul candida‑ilor care au greşit la întrebarea 3.
• Întrebările la care nimeni nu a răspuns corect.
• Punctajul maxim ob‑inut de un candidat.
• Pentruuncandidat K cititdelatastatură,săseafişezepunctajulob‑inu
întrebare, în ordine.
• Să se modifice răspunsul candidatului
x la întrebarea
y ( x, y şi noul răspuns
se citesc de la tastatură).
PRINCIPII DIDACTICE ŞI DIDACTICA FORMĂRII DE COMPETEN,E 9
Cerin‑e suplimentare:
• Să se determine candida‑ii care au ob‑inut punctajul maxim.
• Să se afişeze lista candida‑ilor în ordinea descrescătoare a puncta
Trebuiesăavemînvederecaredintrecompeten‑edetipopera‑ionalre
studierii competen‑elor‑cheie şi a celor specifice sunt urmărite
‑ pri
nelordeinformatică,cecunoştin‑enoivorasimilaeleviişicecunoş ‑ tin‑e
dite în cadrul altor discipline vor fi utilizate. Certadopta
este că infor
şi adapta metode de predare de la alte discipline, dar acest lucru tr
‑inându‑se cont de:
• Dinamica con‑inuturilor şi particularită‑ile metodice ale predări
• Individualizarea învă‑ării informaticii ca disciplină deschisă şi dina
• Constructivism, care pretinde o participare prioritară conşt
procesul de autoinstruire.
• Studiul informaticii, atât ca disciplină autonomă, cât şi ca instru
al altor discipline.
A cestemetodenufac,înprincipiu,obiectulcăr‑iidefa‑ăCititorul
. in
consulta[An],
însă [CMS ], [RV ].
Fiecaredintreceledouăvariantedemaisusprezintăatâtavantaje
Prima este folosită atunci când profesorul nu are la dispozi‑ie un l
pentru predare, iar aceasta se face cu întreaga clasă. A doua variant
mai eficientă, deoarece elevul are posibilitatea de a testa pra
cunoştin‑elorproaspătexplicate.Totuşi,uniieleviîşiformeazămai ‑ reped
rea utilizării, iar al‑ii mai greu, primii fiind tenta‑i să încerce între t
(chiar neprezentate încă de profesor), ceea ce creează disfunc‑ionalită
‑ ‑i î
rea lec‑iei, aprecierea gradului de asimilare şi chiar formarea unor
utilizare(datorateîncercărilorindividuale,necoordonate)Pe . lâ
uneori din vedere realizarea unui rezumat sistematic al modului
fiindtentatsăexersezeimediatşiuităsă‑şinoteze(înstilpropriu)modu
a acesteia.
Răspunsurileacceptatetrebuiesăfienunumaicorecte,cişiexprima
precişişisăoglindeascăunanumitniveldeîn‑elegere.Răspunsurile ‑ erona
tează imediat, prin discu‑ii individuale. Cadrul didactic va dirija
încât ideile să fie bine conturate înainte de a trece la altele, î
men‑ine caracterul unitar. În ceea ce priveşte informatica, recomand
unor instrumente ajutătoare, cum ar fi introducerea/exprimarea n
limbaj algoritmic (scris/oral) care să implice utilizarea eficientă a simbol
afară de latura didactică propriu‑zisă), ceea ce înseamnă separarea clar
de semantică.
Desigurcăîn
, contextuldemaisus,sintagmele„situa‑ieconflictuală”
şi „rezolvare de problemă” se referă la probleme şi solu‑ii noi, necunoscu
elev,iş nulacevadetipulsubstituiriidevalorinumericeînexpresiid
programdatpentruniştevalorifixatedeintrareetc.Utilizareaînpreda
este întotdeauna utilă în momentul în care se şi găseşte rezolvarea co
Învă‑area prin descoperire apare ca o întregire a problematizării. D
ra‑ionamentfolosit,sepotpuneîneviden‑ătreimodalită‑iprincipale
problematizare şi descoperire:
• Modalitatea
inductivă.
• Modalitatea
deductivă.
• Modalitatea
prin analogie.
METODE, TEHNICI ŞI PROCEDEE DIDACTICE 70 1
săsedesprindăcaracteristiciledominantealeaplica‑iilordincla
prezinteparticularită‑ilespecificeprodusului,cuîmbunătă‑iri ‑ fa‑ădev
rioare şi perspective de dezvoltare pentru cele viitoare.
Ca informaticieni, în acest context ne interesează ceea ce‑ numim r
blemelor (
problem solving). Competen‑ele dobândite în legătură cu acest su
depindînprimulrânddecunoştin‑elespecificeacumulate,dardinpun
al psihologiei, ca ştiin‑ă, există consensul că se pot dobândi şi competen‑e
Procesul cognitiv în ansamblu este foarte complicat şi vom sublinia ‑
mente‑cheie şi direc‑ii principale pentru abordarea rezolvării unor
când ni se solicită rezolvarea cu ajutorul calculatorului ‑ a unei
plexe)presupunând
, căenun‑ulformaleste„acceptat”,trebuiesărăspund
întrebări, cum ar fi:
• Ce ştim în legătură cu domeniul implicat?
• Cum sunt apreciate rezultatele?
• Ce strategii generale sunt aplicabile?
• Care sunt motiva‑iile suplimentare?
Dupăceproblemaafostenun‑atăşisuntfurnizateanumiteindica‑iisu
putem trece la alegerea strategiei concrete de rezolvare.‑ Aceast
tată după un anumit plan de lucru şi să permită o modalitate de verifica
‑
lizare. De asemenea, trebuie avute în vedere metode sau metodologii
interzică anumite alternative şi să se permită explorarea de direc‑i
dintre strategiile generale poate fi următoarea:
• Pot să rezolv problema (am cunoştin‑ele necesare).
• Descriu algoritmul de rezolvare în mod (semi)formal.
• Caut informa‑iile suplimentare astfel încât să am o defini‑ie for
(eventual, într‑un limbaj de programare cunoscut).
• Concep planul de implementare şi îl execut: scriu
programele şi le rulez pe date
de test.
• Verific dacă ceea ce am făcut este
corect.
• Identific posibilită‑i de generalizare la alte probleme (se‑ poate u
tolul 4. )
3.1 4 Modelarea
Modelarea, ca metodă pedagogică, poate fi descrisă ca un mod de lucru pri
gândirea elevului este condusă spre descoperirea adevărului, folo
model şi utilizând ra‑ionamentul prin analogie. Modelul şi metoda ‑ în s
pun o asemănare perfectă cu cazurile reale specificate ini‑ial, ci num
rezonabilă. Ea constă în construirea unuiS1 a căsistem
rui descriere coincide cu
descrierea sistemului S până
original
la un anumit punct.
S1 poate avea o natură
METODE, TEHNICI ŞI PROCEDEE DIDACTICE 90 1
Folosireamodelelorînînvă‑aredeschidepentruinformaticăoaried
inter‑ şi transdisciplinară impresionantă, de la artele plastice
domenii ale tehnicii.
Condi‑iaprimordialădereuşităestedatăînprincipaldeselectarea
aproblemelorsauexerci‑iilor,precumşideactivitateadeîndrumare
urmare, exerci‑iile sunt ac‑iuni efectuate în mod conştient şi repetat
scopul dobândirii unor priceperi şi deprinderi şi chiar a unor cunoşt
a uşura alte activită‑i şi a contribui la dezvoltarea altor aptitu
‑
tin‑elor de informatică este legată de exersarea utilizării unor soft
rezolvarea unor probleme de programare etc. Nu există lec‑ie în care să n
această metodă. Alte avantaje sunt concretizate în rezultatele a
METODE, TEHNICI ŞI PROCEDEE DIDACTICE 31 1
Pentruformareaunorpriceperisauabilită‑ilegatedemuncaindep
utiliza şi aşa‑numita formulă a exerci‑iilor comentate. Aceasta const
exerci‑iilor de către to‑i elevii, în timp ce un elev desemnat explică
‑ per
tatele ob‑inute. Nu este nevoie ca această explica‑ie să fie utilizat
Profesorul poate în orice moment să invite oricare alt elev‑ pentru
ca‑iei (în acest fel, metoda devine activ‑participativă). Se pot eviden
avantajelei ş dezavantajelerezolvărilorpropuse,altemetodeposi
privind utilizarea acestor rezolvări sau particularizări ale lor d
Specificeinformaticiisuntproblemelealcărorgraddedificultatec
cuformareai ş asimilareano‑iunii,fiecarenouăproblemăaducândunplusded
În rezolvarea unei probleme este necesar să se ‑ină seama de următoare
• Analiza ini‑ială a problemei, prin care se stabilesc formatul, natura
de varia‑ie ale datelor de intrare/ieşire şi ale variabilelor ‑ de l
diare). Tot în această etapă se va stabili un algoritm de rezolvare, ex
în limbaj natural, ceea ce va permite fiecărui elev să lucreze indep
• Rezolvarea propriu‑zisă a problemei este etapa în care se realizează tra
într‑un limbaj de programare a algoritmului stabilit în prima ‑ et
rea). Algoritmul este reprezentat în una dintre formele cunosc
variabilele de lucru, forma lor de alocare, prelucrările ce vor av
trece la implementarea în limbajul dorit. Dacă rezolvarea se poa
multecăi,esteindicatăalegereacăiloroptimeînfunc‑iedeanumite
anterior(paradigmadeprogramare,complexitateaalgoritmului, ‑ s
turilor de date etc.).
METODE, TEHNICI ŞI PROCEDEE DIDACTICE 51 1
x2 y2 //
.................
Xn‑1 yn‑1 //
cmin // consumul total minim de carburant necesar desză‑
pezirii celor n ‑ 1 străzi alese
typedef struct{
int punctX, punctY;
double lungime;
}STRADA;
cusemnifica‑ia că
punctX , punctY suntnodurileadiacente,
lungimeiar
reprezintă
costul muchiei. În consecin‑ă, se va alocaSTRADA
un vector
, a cărui dimensiune
maximăsevastabiliîmpreunăcuelevii.Eleviivorexplica aplicarea
Algoritmului
lui Kruskalpeenun‑uldatalproblemei.Încontinuare,sesugereazăapli
strategiigreedy; detip sevorsortamuchiilecrescătordupăcost;sevaparc
graful în inordine, plecând ini‑ial de la un arbore par‑ial vid; la fie
selectamuchiadecostminimneselectatăanteriorşicarenuforme
muchiiledejaselectate;procedeulseopreşte după
n – 1muchii
selectarea
([Cro
], a
[CP], [MM ]). Se insistă asupra importan‑ei criteriului de oprire, profe
douăposibilită‑i:săprezinteelînsuşicriteriulşisăverificecuclasa
este cel corect sau să încerce să ob‑ină de la clasă un criteriu de opri
METODE, TEHNICI ŞI PROCEDEE DIDACTICE 71 1
Desigur,existăşidezavantaje.Nuinsistăm,pentrucăideeaestecăfieca
de mai sus devine un dezavantaj dacă profesorul nu este un bun ‑ gesti
lor şi timpului său, caz în care se poate ajunge, din partea clasei,
‑ la pas
nare, plictiseală, lipsă de individualizare etc.
Săneoprimtotuşiasupracâtorvametode,specificepoatenuatâtu
câtcontextuluiactualeisocietă‑iinforma‑ionale(sepoateconsult
cursuriautorizate.eu, de unde ne‑am şi inspirat uneori), care impune, p
şi educa‑ia adul‑ilor (ele ar putea fi numite şi metode/tehnici de inst
• Metoda brainstorming, corelată cu discu‑iile în cadrul unei mese r
• Maieutica.
• Asa‑numita metodă
role play.
Brainstormingulesteunprocedeuîncareungrupdeparticipan‑i(sigurcăa
pot fi chiar elevi) se concentrează (prin discu‑ii) asupra unei problem
caută solu‑ii prin intermediul procesului colectiv de adunare de
admise formulări descurajatoare de tipul: „Am încercat acest lucr
„Nu va da rezultate niciodată”; „Cine are timp pentru aşa ceva?”. ‑ După ce s
izează lista sugestiilor, aceasta poate fi redusă la un număr de op‑iuni
poatefiolistăasolu‑iilorînordineapriorită‑ilor.Unelesugestiipo
nu se întruneşte consensul grupului. Profesorul trebuie să aibă grij
continue,prevenindgândireanegativăCa . unavantajdeluatînseam
permite enun‑area unor opinii şi/sau aprecieri creative, fără restric
tema în discu‑ie. Masa rotundă se referă la ideea de a desfăşura discu‑iil
în cadrul unor subgrupuri, pentru ca ulterior acestea să fie extinse
Maieutica este o metodă prin care se urmăreşte ajungerea la adevăr to
unordiscu‑ii/dialoguri,încareîntrebărileipoteticesuntfolosite
Maiexact,predareadetip„întrebare‑răspuns”estecâteodatămultm
maiactivădecâtprelegereauzualăO. discu‑iecareîncepecuoîntrebare
dificilă) necesită un angajament activ al participan‑ilor de a răspu
solu‑ii, fiind mai productivă decât receptarea pasivă.
În sfârşit,
interpretarea de roluri (autoexplicativă ca sens, credem) are ca sc
primordialsăcontribuielaconştientizareadecătreparticipan‑ ‑ iam
tive, valori, stiluri de comunicare şi norme culturale care se pot ma
unordiscu‑ii(deasemenea,dorin‑aesteşidea‑iînvă‑apeaceştiacumsălefa
cu succes). În acest mod, s‑ar asigura aplicarea în practică a unei game v
aptitudini evident necesare lucrului în echipă, cum ar fi solu‑iona
luarea unor decizii echilibrate, rezolvarea situa‑iilor neprevă ‑ zut
selor op‑iuni pentru solu‑ionarea unor situa‑ii dificile.
Ca o concluzie (par‑ială şi nicidecum exhaustivă) a acestui capitol, pr
tratarea rezolvărilor trebuie să aibă în vedere ob‑inerea rezultat
pecâtposibil,verificabileprintr‑oaltămetodă)analiza , metodeloru
tipurilor de ra‑ionamente folosite, deschiderea unor noi perspect
similare sau mai complexe. Se urmăresc cunoaşterea activă a no‑iunilo
adâncirea semnifica‑iilor, asimilarea metodelor de rezolvare, ‑ apl
onarea altor tipuri de probleme.
Capitolul 4
No‑iuni de bază
Începemcuoscurtătrecereînrevistăacâtorvaconceptecarevorfiu
în carte, în special ca suport teoretic pentru exemplele alese. Pen
pot consulta [An], [At], [CMS ], [Hor], [HS ], [Max1 ], [Po], [RV ].
Temeleşidomeniileabordateîntratareadisciplinelordeinform
prin competen‑ele‑cheie şi competen‑ele specifice. În concep‑ ia noastr
algoritmul
reprezintă o no‑iune fundamentală, un concept de bază pentru informa
algoritm (imperativ) se în‑elege ansamblul de transformări (metode)
asupra unui set de date de intrare şi care determină ob‑inerea, într
după o succesiune precisă de paşi, a unui set de ieşdate
ire( [CLRde], [K1 ], [K2 ]).
Aceasta nu este o defini‑ie, ci o descriere a unui concept. Spre ‑ deose
matica clasică (în care no‑iunile de bază, nedefinite, ci doar descrise,
simple: mul‑ime, punct, plan etc.), no‑iunile informatice similare sunt
complicate (în afară de algoritm, mai amintim: bază de date, program concu
site, cip etc.). Un accent deosebit trebuie pus pe caracteristicile gene- a
ralitatea ( universalitatea), determinismul şi finitudinea, eficacitatea ( [K1 ], [Max2 ]).
Introducereaoricăreino‑iuni(chiarnefundamentalăar ) trebuisăparcu
etape:
• Etapa de elaborare şi motivaţie(ini‑ialăFundamentată
). şieficientintegratăînt
sistem, o no‑iune cere noi domenii de aplicare. Prin urmare, atrage
(motivează) introducerea unor noi no‑iuni sau furnizarea unor noi r
când aria de extindere se îngustează.
126 DIDACTICA PREDĂRII INFORMATICII
Atribuire
In C/C# semnul pentru
atribuire este =
citire NumeVariabila;
Observaţie
VariabilaNumeVariabilavaavea
Citire
atribuită valoarea furnizată în cadrul
acestei opera‑ii (de exemplu, ceea ce
tastăm sau citim-unîntr
fişier).
scrie NumeVariabila;
Observaţie
Scriere
Valoarea variabilei va fi afişată pe
ecransauscrisă
-un
într
fişier.Ecranul
este văzut tot ca un fişier.
BlocInstructiuni;
Structura
secven‑ială
Observaţie
(bloc de ÎnC/C++/C# BlocInstructiuni
instruc‑
‑ ieste delimitat de acolade
uni)
128 DIDACTICA PREDĂRII INFORMATICII
for(initializare;
conditie; actualizare)
{ BlocInstructiuni;
StructuraActualizare;
}
de control
repetitivă
// C/C++/C#
cu număr
for(initializare;
finit de conditie; actualizare)
paşi {
BlocInstructiuni;
Actualizare;
}
NO,IUNI DE BA=Ă 129
Observaţie
Pseudocodul, schema logică etc., folosite în mod real, pot diferi de la p
profesor, de la şcoală la şcoală. Sperăm ca abordarea sugerată de noi să nu con
diferen‑e majore, care să genereze neîn‑elegeri insurmontabile. Nu am i
formă de pseudocod similară cu un cod Pascal deoarece acest limbaj es
ce mai pu‑in folosit.
Observaţie
Înainte de a prezenta schema logică sau codul pentru un algoritm es
realizămodescriereaacestuia.Oabordaredirectă,similarăcuceaofer
nu este productivă şi va for‑a elevul să memoreze ceva ce nu a în‑eles.
Prinurmare,oricetraiectoriedeprelucrăriinduceîndigrafulaso
un drum de la nodul ini‑ial (etichetat cu 1), asociat primei opera‑ii d
( Start‑Început), la nodul final (etichetat cu 8), asociat ultimei‑ opera‑ii
ritmStop‑Sfârşit
( ).
Începem această sec‑iune prin a puncta că, din punctul nostru de ‑ veder
ritm, indiferent de forma sa de prezentare sau de descriere (mai mult
apropiată de un limbaj natural, mai mult sau mai pu‑in formalizată), tre
din urmă, să fie implementat într‑un limbaj de programare şi executat ‑ pe
lator real. Totul depinde de modalitatea de a defini opera‑ional
fără a folosi direct (de exemplu, maşina Türing) sau indirect (prin genul pro
diferen‑aspecifică)unconceptformal.Suntastfelnecesarecâtevapr
paradigmele (saustilurile fundamentale) de programare. Suportul bibliografic‑ prin
cipal este dat de linkurile din Anexa 3.
NO,IUNI DE BA=Ă 1 31
Odatăcuintrareano‑iunilordealgoritmşicalculatorînlimbajul
diverse idei privind modalitatea în care gândim rezolvarea unei p
devederegeneralfilosofic,paradigmeleformeazătotalitateapract
o disciplină ştiin‑ifică la un moment dat. Ele dictează „ce se studiază”, „c
problemeimportantesepun”,„cumsuntinterpretaterezultatele”
ceea ce afirmau Aristotel (ştiin‑a „normală” se bazează pe acumularea ‑ de
ma‑iipesteceeacesecunoaştedeja,totulalcătuindşiîmbogă curentă
‑indparadi
)
şiPlaton(ştiin‑a„revolu‑ionară”punelaîndoialăînsăşiparadigmacurentăp ,
problema cum s‑ar putea cunoaşte ceva nou „altfel”). Atunci vom‑ accept
tatea trecerii, câteodată, de la o paradigmă
schimbarealade
alta (
paradigmă) .
Paradigma de programare ar reprezenta astfel un set de reguli ‑ pri
zeazămodulîncareseconstruieşteunprogramîntr‑unlimbajdeprogram
modul în care se proiectează limbajul însuşi. O paradigmă de programare
astfel:cumsereprezintăinforma‑iavariabile,
( func‑ii,obiecte,fapte,const
şi cum se prelucrează aceste reprezentări (prin atribuiri, evaluări, fir
fluxuri de lucru
etc.).
Men‑ionăm doar câteva tipuri de (paradigme de) programare:
• Programarea imperativă/procedurală/von Neumann (concretizată ‑ de li
ceduraleca:ALGOL,FORTRAN,COBOL,BASIC,Pascal,Cetc.saudelimbaje
de asamblare şi codurile maşină, specifice fiecărei genera‑ii de cal
începând cu ENIAC şi terminând cu PC‑urile, tabletele şi telefoanel
astăzi).
• Programarea declarativă/nonprocedurală, subdivizată de obicei în:
– programareafunc‑ionalăcâteva
( limbajecunoscute:Lisp,APL,Erlang,Has
ML, OCaml, Scheme etc.);
– programarea logică (limbaje de tip Prolog);
– programarea asociativă (CLIPS).
• Programarea orientată pe obiecte (Smalltalk, C++, Java, C#, PHP etc.).
Exemplu
Considerăm colec‑ia:
{(Popescu, 9, 1.78),
(Ionescu, 10, 1.76),
(Eva, 10, 1.65),
(Adam, 8, 1.79),
(Ionescu, 9, 1.72)}.
Observaţii
1. Nu ne interesează dacă elementul
x se află de mai multe ori în mul‑Aimea.
2. Unele probleme de căutare definesc criterii complexe x cepentru
se ele
caută, nu se rezumă numai la existen‑a/inexisten‑a acestuia A. în mul‑ime
3. Deoarece mul‑imeaA este finită, rezultatul căutării poate fi adevărat
adicăelementulexistăsaunuînAmul‑ şiîntotdeauna
imea vaexistaunrezult
4. Dacă elementele mul‑Aimii sunt aranjate -o anumită
într ordine, este posibil ca
algoritmul de căutare a elementului
x să aibă o formă particulară.
5. Algoritmul normal de căutare începe prin a compara rând pe rând
mul‑imiiA cu elementulx. La prima apari‑ie a elementuluix, algoritmul va
semnala acest lucru şi se poate opri. Dacă s-a parcurs toată A şi ele‑ mul‑imea
mentul xnuafostgăsit,atuncisevaterminaalgoritmulprinafişarea
corespunzător.
Referitorlaproblemacăutăriiconsiderămunexempluclasic,dar
‑ care
drează perfect în enun‑ul de mai sus.
Exemplu
Unvectornotat Ade
, cu
dimensiunencon‑
, inetoatenumerelenaturaleşidis
de la
1 lan + 1 (cu excep‑ia unuia, bineîn‑eles). Să se determine numărul ca
lipseşte.
Code1:
int m = 0;
for (int i = 1; i < n + 1; i++)
m = m + i ‑ A[i];
m = n + 1 + m;
NO,IUNI DE BA=Ă 135
Observaţii
1. Repetăm, autorii nu recomandă descrierea unui algoritm prin furn
codşiapoidiscutarealui.Amputeadescriemetodademaisus,folos
prima idee, în felul următor: odată cu calculul sumei elementelor
vomcalculai ş sumaprimelor
nnumerenaturalei ş vomfacedirectdiferen‑adin
acesteavezi( cAvem
.) nevoiedesumaprimelor(n + 1)numerenaturale a)vezi
(
şi, în concluzie, trebuie să adună
(n m
+ 1) la rezultatul ob‑inut.
2. Codul de mai sus poate fi scris detaliat după cum urmează. Acum se ob
clar că este în fapt prima idee, dar exprimată altfel.
Code2:
int m = 0;
int suma = 0;
for (int i = 1; i < n + 1; i++)
{
m = m + A[i];
suma = suma + i; // suma primelor n numere naturale
}
// suma primelor (n + 1) numere naturale
suma = suma + n + 1;
m = suma – m; // Acest număr lipseşte
Numărul căutat vamfi . Vă invităm să găsi‑i (implementa‑i) şi al‑i algoritmi,
rezonabili ca ordin de complexitate.
Dacă vectorul ar fi sortat crescător, atunci putem formula un alg
numărul lipsă din vector coincide cu primul k pentru
indice
care
A[k]! = k, dacă
existăaltfel
, este
(n + 1)iar
, kiavaloride 1la lanCe
. concluzieamputeaextrage
din enun‑ul de mai sus? Modul de prezentare a informa‑iei contribuie
algoritmilor.
Revenim la problema ordonării elementelor unui A. În majoritatea
vector, notat
problemelor analizate, elementele A vorvectorului
fi numere naturale, întregi s
reale.Săpresupunemînsă,pentruînceput,cădorimsărezolvămordonării problema
(crescătoare)aunuivector A.Pesteelementeleacestuivectorexistădefin
de ordine totală. Pornind de la acest considerent, vom prezenta
metode de di
sortare. În func‑ie de locul în care sunt păstrate elementele A în timpul
vectorul
prelucrării, distingem:
a) Sortarea internă:elementeleAlui
suntpăstrateînmemoriainternăacalculat
b) Sortarea externă:elementele Alui
suntpăstratepeunsuportextern;seuti
neapărat în cazul unui volum foarte mare de date.
136 DIDACTICA PREDĂRII INFORMATICII
Metodeledesortarevorfidiferite,înfunc‑iedetipulsortării,int
De asemenea, modul de solu‑ionare a problemelor care presupun regăs
este puternic influen‑at de suportul de memorare a informa‑iei. Î
interne, există o multitudine de strategii de sortare, fiecare
‑ cu a
tajele sale, strategii care sunt analizate în func‑ie de diverse cr
• Memoria ocupată.
• Numărul de compara‑ii.
• Numărul de deplasări ale elementelor.
• Timpul de execu‑ie.
2
4. Algoritmi clasici de sortare, de complexitate
) t
şi mai mare
Indiferent dacă implementarea structurii de date alese pentru A m
(ceea ce mai sus s‑a numit vector) care va fi sortată este bazată‑pe ceva s
turaarray) sau dinamic (structura
pointer), descrierea în pseudocod a algoritmi
va fi orientată spre sublinierea ideii generale metodei)
de concretizare
, şi nu pe (a
detaliile de implementare.
do
{ // vectorul ce se sortează este notat cu x
bool ok = true;
for(i=1; i<n-1; i++)
{
if (x[i] > x[i+1]) // crescător/descrescător [*]
{
ok = false;
temp = x[i]; // temp are acelaşi tip ca x[i] şi se
presupune că a fost declarat
x[i] = x[i+1];
x[i+1] = temp;
}
}
} while (ok);
Observaţii
1. Condi‑ia[*] dinif determină modul de sortare, crescător sau descres
2. Un şir sortat crescător parcurs de la sfârşit spre început este des
Observaţie
Am considerat indexul primului element din vector ca având valo
caz, vectorul în C/C# trebuie declarat ca având dimensiunea
n + 1 . Reamintim că
în C/C# indexul primului elementarray
al unui
are valoarea 0.
Presupunând căcitit
am elementele vectorului, numărul de elemente, a
toatedeclarăriledevariabileşiini‑ializărilenecesare,codulînC/C
138 DIDACTICA PREDĂRII INFORMATICII
Observaţii
1. Am considerat indexul primului element ca fiind 1. Dimensiunea de
tabloului trebuie să fie în acest
+ 1.
n caz
2. Secven‑a de cod arată şi modalitatea de a ob‑ine elementul cu valoa
sau maximă dintr
-un şir.
Descrierea algoritmului
Considerămcăprimele j – 1elementealevectoruluisuntsortatecres
[1] < x[2] < x[3] <...< x[j ‑ 1]. Următorulelement, x[j],îlvomcompara
cux[j – 1], x[j – 2] etc., până când este îndeplinită condi‑
x[i] iaşi apoi
< x[j]
îl vom insera pe pozi‑ ia
i + 1. Inserarea pe pozi‑ ia
i + 1 presupune salvarea x[j] lui
într‑o variabilă locală şi apoi deplasarea, în cadrul x , a elementelor
vectorului
NO,IUNI DE BA=Ă 139
int temp = 0;
int i = 0;
for (int j = 2; j<=n; j++)
{
temp = x[j];
i = j - 1;
while ((i>0) && (temp < x[i]))
{
x[i + 1] = x[i];
i = i - 1;
}
x[i + 1] = temp;
}
Observaţii
1. Determinarea locului unde se va insera elementul
x[j] se face aici prin parcur
‑
gerea secven‑ială a subşirului deja ordonat crescător. Acest algor
poate fi înlocuit cu cel de căutare binară. Subşirul ordonat este împ
subşiruri.Seexamineazărela‑iadeordinedintreelementul ‑ delami
ruluişielementul
x[j]şisestabilesteîncaresubşirsevafacecăutarea.Op
de divizare continuă până se găseşte pozi‑ia în care urmează să fie ‑ inser
mentulx[j].
2. Deoarece se ia în considerare următorul element al şirului fa‑ă de sub
ordonat,aceastămetodăpoatefinumită„sortareprininser‑iedirect
4. Sortarea Shell
Vom începe prezentarea cu o observa‑ie pe care o considerăm utilă.
Metoda de sortare Shell face parte din categoria metodelor de s
directă în care pasul de inserare este mai mare ca 1. Pentru a mai alunga
prezentăriloranterioare,metodaîncauzăvafidescrisăincomplet,
( fărăcodsau
precise legate de corectitudine, complexitate etc.) sub forma unui
Pentrucăpeparcursulsubcapitoluluiprivindsortareavommaiintrod
detehnologiedidacticărugă , mcititorulsăconsulteAnexapentru
1, aide
standard (recomandată astăzi) a acestora. În acest loc, forma unui proi
aproximativă.
140 DIDACTICA PREDĂRII INFORMATICII
Punctul 1
Etapa: Moment organizatoric.
Timp: 2 min.
Activitatea desfăşurată de profesor:
– Se face prezen‑a şi se verifică existen‑a celor necesare începerii o
Punctul 2
Etapa: Verificarea cunoştin‑elor.
Timp: 12 min.
Activitatea desfăşurată de profesor:
– Verificarea temelor date elevilor pentru acasă.
– Verificarea cunoştin‑elor din lec‑ia precedentăSortarea , cu tema
tablourilor
prin metoda inserţiei directe, prin întrebări:
• În ce constă această metodă?
• Avantajele şi dezavantajele fa‑ă de alte metode implementate an
• Reluarea metodei cu ajutorul unui alt exemplu.
Metoda: Verificare orală.
Punctul 3
Etapa: Trecerea la lec‑ia nouă.
Timp: 2 min.
Activitateadesfăşuratădeprofesor:Anun‑areaşiscriereapetablăati
Sortarea tablourilor prin metoda Shell.
NO,IUNI DE BA=Ă 1 41
Punctul 4
Etapa: Predarea noilor cunoştin‑e.
Timp: 5 min.
Activitatea desfăşurată de profesor:
Pornind de la metoda inser‑iei directe, observăm că această metod
îmbunătă‑i, ajungându‑se la sortarea Shell. Ideea este următoarea:
• Se împarte la început tabloul în grupe de câte două elemente care
separat: de exemplu, dacă dimensiunea
16, putem
esteforma grupele
(1, 9),
(2, 10)…; (1, 9) înseamnă subşirul
{x[1], x[9]}.
• Se formează grupe de câte patru elemente din cele sortate anter
• Procedeul continuă până se ajunge la tabloul în cele din urmă ordon
Metoda: Expunerea.
Punctul 5
Etapa: Fixarea noilor cunoştin‑e.
Timp: 3 min.
Activitatea desfăşurată de profesor:
Fiecare grupă fiind sortată separat, se observă că elementele
se deplasează mari
la dreapta.ComplexitateatimpîncazulcelmainefavorabilShell alalgoritmu
sort
este n3. Prin urmare, profesorul formulează întrebări şi exerci‑ii în legătură c
• Metoda de sortare Shell.
• Compararea cu celelalte metode.
• Exemplifică la tablă no‑iunile introduse.
Metoda: Conversa‑ia.
Punctul 6
Etapa: Precizarea temei pentru acasă.
Timp: 3 min.
Activitatea desfăşurată de profesor:
• Exemplifică pas cu pas sortarea prin noua metodă pe un exemplu concre
• Solicită implementarea algoritmului
limbajul de
în programare studiat.
4. 5 Sortarea rapidă
În această sec‑iune ne vom axa pe prezentarea succintă a doar două
‑ meto
plexitate
O(n log n)Enun‑
. ulproblemeiesteacelaşicuceldinsec‑iuneaprec
Ideea celor doi algoritmi ce vor fi prezenta‑i în continuare se ba
ac‑iuni importante:
• Divizarea şirului în subşiruri care vor fi supuse procesului de sort
• Combinarea subşirurilor pentru a ob‑ine rezultatul final.
142 DIDACTICA PREDĂRII INFORMATICII
Tabelul 4.2 Realizarea celor două etape prezentate mai sus, pentru algoritmii de sortare
prin interclasare şi Quicksort
Observaţie
Acest algoritm presupune crearea unui spa‑iu temporar de memorie c
con‑ine şirul sortat. Spa‑iul suplimentar de memorie are aceeaşi dime
necesar şirului ce urmează a fi sortat.
Aplicareasuccesivăaproceduriideinterclasareseface printr‑opar
inordine
a arborelui binar asociat.
Codul pentru sortare poate fi următorul:
Observaţie
Există variante ale acestui algoritm, dar ideea de bază rămâne aceeaşi
4. 5 2. Sortarea quicksort
Ceeaceurmeazăestedoarovariantă(datoratăautorilor)ametodeilu
Observaţie
Reamintim că opera‑ia de divizare cerută de acest algoritm se face în
valoarea elementelor.
14 DIDACTICA PREDĂRII INFORMATICII
Disciplina: Informatică
Clasa: a IX‑a
Profesor:
Data:
Tema: Căutare şi sortare. Metodaquicksort
Tipul de lecţie: Predare
Metode didactice: Expunere, exerci‑ii
Mijloace de învă‑are: Manuale, culegeri
Material bibliografic: ( [Me ])
Desfăşurarea lec‑iei este asemănătoare cu cea de la proiectul ante
am renun‑at să o prezentăm şi aici.
toate elementele din prima parte sunt mai mici (sau mai mari, ‑ în cazu
crescătoare) decât toate elementele din a doua parte. Unul dint
memorat (prin indicii de început şi sfârşit), iar cu cel rămas se procedea
Subşirurilememoratesuntprelucrateapoiperândînacelaş‑ imod(rec
nea inversă a memorării lor.
Aplicând algoritmul, condi‑ia de ordonare (1) poate fi rescrisă sub for
La fel ca la
sortarea cu bule, se verifică dacă la un moment dat este îndepli
condi‑ia corespunzătore, în caz contrar efectuându‑se corec‑ia nece
inversare:
Exemplu.
Fie şirul următor
{9, 2, 4, 10, 3}. Considerăm pozi‑ia ini‑ială a pivotulu
ca fiind k = 3. Evolu‑ia algoritmului produce următoarele transform
prim = 1 ⇒ i = 1
⇒k = 3
ultim = 5 ⇒ j = 5
1) 9 2 4 10 3
2) 3 2 4 10 9 i = 2, j = 4, k = 3
3) 3 2 4 10 9 i = 3, j = 3, k = 3
prim = 1, ultim = 3 ⇒ i = 1, j = 3, k = 2
1) 3 2 4
2) 2 3 4 i = 1, j = 2, k = 2
3) 2 3 4 i = 2, j = 2, k = 2
40 5 1 15 –20 20 30 40 50 60 01 15
1 2 3 4 5 6 7 8 9 01 11 12
NO,IUNI DE BA=Ă 147
Arboreleasociatvacon‑inevaloarea(4corespunză
0 toare
Vîn
) nodul
pozi‑ieidin
1
rădăcină.Avândvaloareavîntr‑unnod,valoarecorespunzătoare kdin pozi‑
V,cei iei
(maxim 2) succesori imedia‑i ai nodului vor con‑ine valorile situate
2k pe
(fiul stâng), respectiv
2k + 1 (fiul drept) din
V.
Strategii didactice:Conversa‑ia,explica‑ia,metodaanaliticămunca
, independent
Mijloace de învăţământ: Manuale, culegeri de probleme
Metode: Activitate frontală, individuală
Resurse:
– pedagogice:Metodica predării informaticii, alte cursuri de informatică, ghidu
pentru profesori;
– oficiale
– programa şcolară;
148 DIDACTICA PREDĂRII INFORMATICII
– temporale
– 50 de minute;
– psihologice – cunoştin‑e dobândite de elevi până la această dată;
– colectiv eterogen (interesat de obiect);
– clasa împăr‑ită pe grupe.
Codul
C este:
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
void schimba(int *a, int *b)
{
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);
}
NO,IUNI DE BA=Ă 149
if (v == NULL)
{
printf(“\n Alocare esuata.\n”);
exit(1);
}
for (i = 0; i < n; i++)
{
printf(“Tastati valoarea pentru 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 codificarii). */
for (i = 1; i < n; i++)
urca(v, i);
/* Acum vom aplica o proprietate a max‑ansamblurilor, 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();
...}
Elaborareaunui(nou)algoritmpentrurezolvareaunei(clasede)probl
mult timp o formă de manifestare a inteligen‑ei, o exprimare a capacită‑i
şianalizăa
, bagajuluidecunoştin‑eşiexperien‑ale
ă celuicareîlelabora,p
în eviden‑ă caracterul de creativitate, de artă chiar al acestei
standar
dizării reprezentării algoritmilor i s‑a alăturat dorin‑‑ a de sta
borăriialgoritmilor.Cutoatesucceseleob‑inuteînacestsens,acti
NO,IUNI DE BA=Ă 1 51
Observaţie
Nu orice problemă poate fi rezolvată (eficient sau simplu) cu această te
Problemă.
Să considerămn ≥ 1 elemente a1, a2,... an şi un subşir al acestuia
a p,
ap + 1,... aq, cu 1 < p < q < n, asupra căruia avem de efectuat o prelucr
oarecare. Presupunem că această problemă poate fi rezolvatădivide folosind me
et impera.
Soluţie.Metoda divide et imperaderezolvareaacesteiproblemepresupune ‑
‑irea şirului determinat de capetele acestuia Divide), (p,(func‑
q), în
iadouă
subşiruri (p, m) şi (m + 1, q), p ≤ m < q sau (p, m – 1) şi (m, q),
152 DIDACTICA PREDĂRII INFORMATICII
p < m ≤ q,asupracărorasăsepoatăefectuamaiuşorprelucrarea.Prinprel
celordouăsubşirurisevorob‑inerezultatele
βşi γcare,
, combinate(func‑iaCombina),
vorconducelasolu‑ia,notată
aa
, problemei
cu ini‑iale.Împăr‑ireaînsubşiruripoa
continua până la gradul de detaliu care permite ob‑inerea imediat
‑
crării unui subşir.
Reluândexempluldelasortareaprininterclasareşidivide
avândînved
et impera, putem rescrie codul astfel:
Observaţie
În codul preluat de la sortarea prin interclasare s-au modifica
metodelor, pentru a pune în eviden‑ă etapele descrise în vadrul
divide et met
impera.
Încelemaifrecventecazuri,Divide
func‑iile
şi Combina suntcompusedintr‑un
numărredusdeinstruc‑iuni,nemotivându‑sedescriereai ş apelullors
în cadrul func‑DivideEtImpera.
iei
Exemplu
Să se testeze apartenen‑a unui element la un şir ordonat crescă
‑ to
va‑ia de la sortare prin inser‑ie directă. Nu vom prezenta codul‑ pent
blemă, care este foarte bine tratată în majoritatea lucrărilor de s
NO,IUNI DE BA=Ă 153
Enunţul problemei
Se consideră dată o hartă ce con‑ n ‑ări,
ineT = {T1, T2, T3,… Tn} şi o
mul‑ime de culori C = {C1, C2, C3, C4} . Să se coloreze fiecare ‑ară cu una
dintre culorile date, cu condi‑ia ca două ‑ări vecine (cu frontieră comun
colorate cu aceeaşi culoare.
Discuţie
Solu‑iile posibile se regăsesc în S mul‑
= Cimea
x C x C x... x C , i arS
are ncomponente.Unvectorsolu‑iepoatearată {C1, astfel:
C3, C4,… C2} ,unde
componenta de rang k semnifică ‑ara
Tk şi are valoarea Ci, adică ‑araTk este colo ‑
rată în culoareaCi. Înainte de a descrie algoritmul este necesar să speci
că putem reprezenta această hartă ca un graf orientat. T1, aleasă
Primaîn‑ară
mod ,
arbitrar, se învecinează cu ‑ări din mul‑ {T2,imea
T3,... Tn}. T2 se învecinează
cu‑ăridinmul‑imea {T3, T4,... Tn}‑,ara Tkseînvecineazăcu‑ăridinmul‑imea
{T(k + 1),... Tn}.
Observaţii
Fiecare ‑ară are la dispozi‑ie mul‑imea de culori (resurse)
{C1, C2, C3, C4}.
Înaintedeaalocaoresursăpentruoanumită‑ară,sevaverificadacăexis
disponibile, adică ‑ara respectivă mai are culori cu care să se deseneze
154 DIDACTICA PREDĂRII INFORMATICII
Problemă
Se consideră
n ≥ 2 mul‑imi nevide şi finite
A1, A2,... An şi m1, m2,... mn
cardinalele acestor mul‑imi. Consideră f: mAo
1
func‑
× A2ie
×... An → R. O
solu‑ie a problemei este n‑upluun
de formax = (x1, x2,... xn) ∈ A1 × A2
×... An careoptimizează (conform unor criterii specificate) f. func‑ia
Soluţie
Mul‑imea finită A = A1 × A2 ×... An se numeşte spa‑iul soluţiilor posibile ale
problemei. Condiţia de optim pe care trebuie să o îndeplinească o solu‑‑ ie este
mată printr‑un set de rela‑ii între componentele x, rela‑ii vectorului
exprimate prin
formafunc‑iei fO
. solu‑ieposibilăcare, optimizeazăfunc‑ fadică
, iasatisface condi
ţiile interne ale problemei, se numeş te
soluţie‑rezultat sau, mai simplu,soluţie a pro-
blemei. Construirea unei solu‑ii constă în determinarea componentel x.
Construirea primei solu‑ii începe întotdeauna cu construirea p
NO,IUNI DE BA=Ă 15
vectorului
x. La un moment dat se va alege un element dintr‑ – pe
o mul‑
care ime
convenim să o numim mulţimea curentă – şi, presupunând că elementele fiecăre
mul‑imiAi (1 ≤ i ≤ n) sunt ordonate, elementul care se adaugă xvala vect
fi numit
elementul curent. Următorul algoritm (prezentat în limbaj natural
metodabacktracking la nivel conceptual:
Observaţie
Omodificareminorăini‑
( ializarea
x[i]lui
)aacestuicodconducelaeliminarea
‑ se
ven‑ei:
Cazuri particulare
Toate mul‑imile Ai, i = 1, 2,... n au acelaşi număr de elemente care sun
înordinecrescătoareşisuntnumere {1,naturale:
2, 3,... n}.Sepleacăini‑ial
cuvectorulsolu‑ ie
x = {0,0,... 0}.Pentrucomponenta x[i],trecereala‑ urmă
torulelementînseamnă x[i]++iar, laelementulanterior x[i]––Testul
. deexisten‑ă
a elementelor pentru x[i] este 1 E x[i] E n (similar se poate proceda şi în
cazulcoduluipentruproblemelepermutărilor,aranjamenteloretc
func‑ia valid()trebuiedetaliatăi ş estedependentădeenun‑ulproblemei
căîntre condiţiile internede
( optim)i ş condiţiile de continuareexistăostrânsălegătură,
sincronizarea acestora având ca efect o importantă reducere a num
O sinteză a metodei backtracking scoate în eviden‑ă patru etape principale
– etapa în care unei componente a vectorului solu‑ie i se atribu
mul‑imeacorespunzătoareacesteia,urmatădetrecerealamul‑imea
următoare;
– etapa în care atribuirea unei valori pentru o componentă a vect
soldează cu un eşec, situa‑ie care se încearcă a fi depăşită prin trecerea
‑
torul element din mul‑imea (curentă) corespunzătoare componentei
– etapa în care elementele mul‑imii curente au fost epuizate, situ
alegere anterioară nepotrivită, caz în care se impune o revenire ‑ la
rioară, revenire care poate încheia – fără gănefericit
sirea unei solu‑– ii
întregul
proces de căutare a solu‑iilor;
– etapareveniriiînprocesuldecăutareauneinoisolu‑iidupăob‑inere
etapă care se realizează prin trecerea la elementul următor din ul
Procedura backtracking
i:= 1
k:= 0 {k = 0 are semnificatia k1 = 0}
Repeta
Repeta
k:= k + 1
Daca (k > mk) atunci
k = 0 {k = 0 are semnificatia ki = 0}
i = i – 1 {se realizeaza „intoarcerea”}
altfel
xi = aik
Daca (x1, x2,... xi conduce la optim) atunci
i = i + 1 se verifica conditia de continuare
Sfdaca
Sfdaca
Panacand (i > n sau i = 0)
Daca (i > n) atunci
„afisare solutie”
i = n
Sfdaca
Panacand (i = 0)
Sfarsit
Soluţie
Această problemă reprezintă un caz particular al problemei genera
anterior,cazîncaretoate nmul‑imicele
suntegalecumul‑Aimea
.Seaplicămetoda
backtracking, considerând func‑ia de optim exprimată prin condi‑ia:
elementele
vectorului soluţie să fie distincte. Pentru cititorul interesat, codul poat
în [MAM ].
Problemă
Se dau o mul‑ime
A de cardinaln (n ≥ 0) şi o func‑ief: P(A) → R. Să se
determine o submul‑ B ∈ime
P(A) de cardinal
k, B = {b1, b2,... bk}, (1 ≤ k
≤ n), astfel încât
k‑uplul (b1, b2,... bk) să optimizeze func‑iaf.
Soluţie
Familia păr‑ilor mul‑imii finite
A, notată
P(A), se numeşte spaţiul soluţiilorpro‑
blemei. Condiţia de optimpecaretrebuiesăoîndeplineascăosolu‑ieesteexp
printr‑un set de rela‑ii între anumite elemente A, rela‑ii ale
exprimate
mul‑imii prin
func‑ia f. O solu‑ie care poate conduce la ob‑inerea unei solu‑ii optime s
soluţie posibilă. Pot exista mai multe solu‑ii care satisfac condi‑iile de o
doreşte ob‑inerea măcar a uneia dintre ele.
Construirea unei solu‑ii optime constă în determinarea unei su
posibile care îmbunătă‑esc progresiv valoarea f, conducând
func‑ieicătre optim.
Solu‑iile posibile au proprietatea că orice submul‑ ime aeste
soluţii posibile unei o
soluţie posibilă.Prinurmare,şimul‑imeavidăpoateficonsiderată o
soluţie posibilă.
Descrierea metodei:
1 . Considerăm submul‑imeaB, mul‑imea vidă.
2 . Se alege un element
a dinA, neales la un pas anterior.
3 . Verificăm dacă submul‑imeaB U {a} conduce la o solu‑ie posibilă.
4 . Încazafirmativ,adăugămelementul alamul‑imea B.Secontinuăcu2pânăcând
nici un element al mul‑ A nu
imii
mai poate fi adăugatB sau
la adăugarea lui nu
mai poate îmbunătă‑i valoarea func‑f. iei
procedura greedy
k:= 0 // k este numărul de elemente din B
B:= Ø
repeta
alege a din A
daca (B U {a} este solutie posibila) atunci
k:= k + 1
B:= B U {a}
sfdaca
pana cand (nu se mai pot alege elemente din A)
sfarsit
Exemplulcareurmeazăscoateîneviden‑ăceledouăaspecteale‑ metode
rea optimului sau numai apropierea de acesta.
Rezolvare
Această problemă constituie un exemplu ilustrativ complet, pent
prin aplicarea metodei greedy, se ob‑ine valoarea optimă a func‑ f. Algoritmul
iei
necesităopregătireprealabilăAaîn mul‑
vederea
imii aplicăriiproceduriideal
succesivă a elementelor submul‑ B: imii
a) Se va ordona crescător mul‑ A; imea
b) Pornind deB:=la ∅, vom selecta elementele A astfel:
din
– cât timp printre coeficien‑
ci ai func‑ ii
iei
f există numere negative (cărora nu
lis‑aasociatunelement A, cavaloare
din pentru
xicorespunzător)execută, m:
celui mai mic coeficient neasociat unui A îielement
ataşăm celdin mai mic
număr dinA încă neselectat;
– pentru ceilal‑i coeficien‑i (pozitivi) f cărora
ai func‑
nuiei
li s‑a asociat un
elementAdin (ca valoare pentru xi) se alege, pentru cel mai mare coeficien
neasociat unui element A, cel maidin mare număr din A încă neselectat.
Exemplu
Fiemul‑imeadenumereA = {–8, –7, –5, –1, 2, 3, 3, 5, 7, 8} (deja
ordonată)şifunc‑fia
deformaf(x1, x2, x3, x4, x5, x6, x7) = 3x1 + 6x2 –
x3 – 9x4 – 9x5 + 3x6 + 8x7. Solu‑ia problemei va fi un vector
x = (b1, b2,
b3, b4, b5, b6, b7) ale cărui componente sunt elemente A. Succesiunea
din
alegerii valorilor componentelor x pune
vectorului
în eviden‑ă tehnica
greedy:
– corespunzătorceluimaimicelementnegativdintrefcoeficien‑ , alegem iifu
primul element A, deci
din b4 = –8;
– corespunzător celui mai mic element negativ dintrefcoeficien‑ pentru ii f
care nu s‑a ales încă o valoare pentru elementul x, alegemvectorului
următorul
elementAdin , decib5 = –7;
– continuăm alegerea elementelor x până când
luituturor coeficien‑ilor nega
func‑ieif li s‑a asociat componenta corespunzătoare x. Ob‑inem
în vectorul
x =
(b1, b2, –5, –8, –7, b6, b7);
– corespunzătorceluimaimareelementpozitivdintre f, coeficien‑
alegem iifu
ultimul element A, deci
din
b7 = 8;
– corespunzător celui mai mare element pozitiv dintre f coeficien‑
pentru ii
care nu s‑a ales încă o valoare pentru elementul x, alegemvectorului
elementul
anterior celui ales la pasul precedent,
b2 = 7; deci
– continuăm alegerea elementelor x până când
lui tuturor coeficien‑ilor f func
li s‑a asociat componenta corespunzătoare x. în vectorul
Ob‑inem în final
x = (5, 7, –5, –8, –7, 3, 8). Valoarea maximă a func
‑
‑iei este
f(5, 7, –5, –8, –7, 3, 8) = 270.
Problemă
No‑iunea de algoritm, aşa cum a fost prezentată în această lucrare, pre
entită‑idistincteexisten‑aunuisetdedatedeintrareşiauneimet
succesivă a acestora, în vederea ob‑inerii unui set coerent de ‑ date
tat al tuturor prelucrărilor. Abordarea celor trei elemente ca
162 DIDACTICA PREDĂRII INFORMATICII
Soluţie
Pentru o problemă datăS, fie 0
starea sistemului format din datele de
de lucru (intermediare), precum şi din corela‑iile existente între ac
d1 de transformare a datelor orientată în direc‑ ia ob‑
soluţii inerii
optime pentru unei
problemă produce o
prelucrare a stăriiS0, determinând transformarea ei într‑
stare, S1. Suntem în acest moment puşi în fa‑a uneia sau mai multor probleme ‑
lare cu cea ini‑ială şi care, printr‑ o nouă
decizie (comună) de prelucrare, conduc la
o nouă stare. Schimbarea stării sistemului va continua până la ob‑in
finale din care se deduce o solu‑ie optimă a problemei ini‑iale.
În general, fiecare nouă decizie de transformare a stării sistemu
deciziileluateanterior(acesteaaugeneratstareacurentăasis
determinată, ca în cazul metodei greedy, de exemplu.
Fied1, d2,... dn ‑ 1, dn o secven‑ă de decizii optime care determină ‑ tr
rea succesivă a sistemului din starea S0 în starea
ini‑ialăfinală
Sn, prin intermediul
stărilor S1, S2,... Sn ‑ 1.
O modalitate naturală de abordare a problemei constă în luare
decizii optime de prelucraredîn 1
, ordinea
d2,... di ‑ 1, pornind de la starea
ini‑ială S0. Decizia următoare, di, depinde de şirul de decizii optime deja d 1, luat
d2,... di ‑ 1. Spunem în acest caz că se aplică metoda spre
înapoi (sfârşitul‑ şiru
lui de decizii).
Dacă se poate stabili stareaSn sistemului
din care s‑ar deduce solu‑ia optimă a
problemei, este de dorit să se determine dn, precum
o decizie
şi o stare Sn ‑ 1 din
caresăseajungăînstarea Sn înurmaaplicăriideciziei dnIntuitiv
. spus,sedetermin
inversa unei decizii şi starea sistemului anterioară luării acestei decizi
de decizii optime di + 1, di + 2,... dn care duc sistemul din Si starea
în starea
finală Sn. O nouă decizie di care să ducă sistemul dinSstarea i ‑ 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ă determinareaSi unei stăr
şi a două decizii optime di şi di + 1, având două subşiruri optime de decizii:
Principiuloptimalită‑iisugereazăstabilireaunorrela‑iiderecu
rezolvarea unei probleme prin metoda programării dinamice presupun
unor caracteristici ale problemei care o fac rezolvabilă cu ajutor
– problema se poate descompune în subprobleme de acelaşi tip cu acea
– subproblemelenusuntdistincte,ciseintercondi‑ioneazărecipr
aplica tehnica
divide et impera, mult mai eficientă din punctul de vedere
‑ al
sumului de memorie);
– necesitateasatisfaceriiprincipiuluioptimalită‑ii,careimpli
recuren‑ă prin care se exprimă intercondi‑ionarea subproblemelor.
Problemă
Să se determine termenul de rang k din şirul lui Fibonacci, pentru un număr
naturalk dat.
Intrare: k, de la tastatură.
Ieşire: pe ecran, termenul de rang k din şirul lui Fibonacci este
v.
Soluţie (metodă)
În şirul lui Fibonacci, primii doi termeni
a0 = 1sunt
şi a1 = 1. Rela‑ia de
recuren‑ akă = ak – 1 + ak – 2, ∀ k > 2 arată că un termen se ob‑ine ca
suma ultimilor doi termeni anteriori lui.
Vomfolosimetoda înapoiplecânddelastarea u ini‑
= 1ială, v = 1 primii
( doi
termeni),carereprezintăi ş stareadincaresededucesolu‑k ia=problemei
1.
Decizia de trecere la o nouă stare determină următoarele prelucrăr
– aplicarea rela‑iei de recuren‑ă (calculul
s = u +sumeiv), care respectă prin‑
cipiul optimalită‑ii;
– ob‑inerea noii stări prin atribuirea
u = v valorilor
şi v = s.
164 DIDACTICA PREDĂRII INFORMATICII
Se ob‑ine starea
u = 1, v = 2.
Aceasta este starea nou‑ob‑inută (succesoare).
Algoritmiicorespunzătorirezolvăriiuneiproblemepotdiferi,chiard
aceeaşimetodădeproiectare,decătreaceeaşipersoană,darladatediferit
numaivorbimdefolosireaunormetodediversesaudeimplicareamaimul
Existen‑aunorreperegeneralvalabile,aunorunităi ‑ demăsurăstandard,c
fi folosite pentru compararea performan‑
calită‑ii
elor algoritmilor, reprezint
necesitate.Dupăo(scurtă)introducereconceptuală[Cro ]),vomîncepe
( prinaexem‑
plificaanaliza
complexită‑ii(timp/spa‑iu)aalgoritmilorcarerezolvăanumitep
acest
( lucrufiindtratat,lanivelpractic,într‑adevărincomplet,i ş însubca
Men‑ionăm de la început că spa‑iul de memorie real utilizat de un prog
implementează un algoritm este format şi dintr‑o parte constantă, in
datele de intrare (în care se află memorat, de exemplu, codul executa
mărime/dimensiune este de obicei ignorată. De asemenea, într‑o analiz
timpulnecesarintroduceriivalorilordeintrareşiextrageriire
(de obicei) ignorat. Am văzut deja că un algoritm (imperativ) reprezintă o s
finitădepaşi(instruc‑iuni)caredescriuopera‑iipreciseasupraunori
ini‑iale (de intrare) sau intermediare (de lucru, temporare), în vedere
informa‑ii (rezultate) finale (de ieşire). Paşii se execută (adică opera‑iile p
efectueazăînmodconcret)înordineascrieriilorînsecven‑ă.Unalgoritm
o func‑ie sau rezolvă o problemă. Intuitiv, datele de intrare reprezint
domeniul de defini‑ie al func‑iei de calculat (sau informa‑iile ini‑ial
care îşi are originea problema pe care vrem să o rezolvăm), iar datele de ie
elemente din codomeniul func‑iei (respectiv, solu‑iile problemei). Un
modulideal,se termină pentru toateintrărileadmise,prinurmaree
unultimpas,acăruiexecu‑iemarcheazădeobiceişiob‑inerearezultatel
Din motive tehnice, vom lua uneori în considerare şi algoritmi care n
pentru toate intrările, pe care‑ i vom numi
semialgoritmi.
NO,IUNI DE BA=Ă 165
b) Determinarea medieiTpentru
K
(p), privită ca o variabilă aleatoare:
Calcululmedieidemaisussereducedeobiceiladeterminareava
(finite), câteodată existând totuşi dificultă‑i mari de evaluare. Pr
complicatănuesteînsăaceasta,ciefectuareaîntr‑unmodrealistaet
notată cu a). Din acest motiv, vom insista doar asupra determină TK(n). Şi rii l
acest lucru este uneori foarte dificil, fără a lua în calcul considerar
implementare. Suntem nevoi‑i astfel să căutăm margini superioare (un
inferioare)pentru TK(n),caresuntmaiaccesibile,şivomstudiacompor- aşa‑numita
tare asimptotică a acestuia sau ordinul său de creştere. Vom adopta anumit
uzuale pentru clasa func‑iilor (totale)
N laN (pe scurt:
de la[N → N]). Mai exact,
pentru fiecare f ∈ [N → N], numită în acest context şi func‑ie de complexita
punem:
În loc deg ∈ O(f) (Ω(f), Θ(f)), se poate scrie g şi= O(f) (respectiv
Ω(f), Θ(f)). În sfârşit, comportarea asimptotică pentru
TK(n) definită mai sus se
va numicomplexitatea timp a algoritmului K.
Revenind,dacă Pesteoproblemăalgoritmicăatunci , omarginesuperioar
complexitatea ei („de O) se
tip”
poate stabili în practică prin proiectarea
unuialgoritmcaresăorezolve.Deexemplu,vomspune Parecomplexitatea
că ( timp)
O(f(n)) dacă există un algoritm K care rezolvă
P şi K are complexitatea TK(n) =
O(f(n)).
Analog,P are complexitatea (
timp) Ω(f(n)) dacă orice algoritm K care rezolvă
P are complexitateaTK(n) = Ω(f(n)). Mai mult, vom spune că un algoritm K
pentrurezolvareaproblemei P esteoptimal(relativlaPtimp) arecomplexitatea
dacă
Ω(TK(n)). Dar a dovedi că un algoritm dat este optimal pentru o proble
sarcină foarte dificilă, existând pu‑ine rezultate generale şi realizăr
sens. De aceea ne limităm de obicei la considerarea marginilor ‑ superi
rioare, dar mai rar), adică ne vom raporta la. clasa
O(f)
Vom face în continuare câteva precizări legate de nedeterminism, c
de complexitate ale problemelor algoritmice, calculabilitate şi d
probleme/algoritmi şi tratabilitatea algoritmilor.
Unalgoritm K avândproprietatea
TK(n) =că O(f(n)),undef esteunpolinom
(degradoarecare)se , vanumipolinomial (vaavea polinomială)Variante
complexitate .
NO,IUNI DE BA=Ă 167
fără vreo demonstra‑ie formală, admitem că cel mai simplu (în toate sens
triviali ş determinist,algoritm A1)care
să
( l
‑ notă
rezolvă
m problemaeste:
168 DIDACTICA PREDĂRII INFORMATICII
citire m;
alam:= 1;
i:= 1;
Cattimp (i ≤ m) executa
alam:= alam * a;
i:= i + 1
Sfcattimp
1, dacă a =0;
f(a) am = (a 2) m div2 , dacă m este număr impar;
a✴am-1 , dacă m este număr impar
citire m;
alam := 1;
Cattimp (m > 0) executa
Daca (odd(m)) atunci
alam:= alam × a;
m:= m - 1
altfel
a:= a × a;
m:= mdiv2
Sfdaca
Sfcattimp
NO,IUNI DE BA=Ă 169
şi
Func‑iacaracteristică
[MY ])aacestui
( limbajvafidatăchiarP,iarrezolvarea
de
lui Pvafiacelaşilucrucuatestaapartenen‑xa la
unui
limbajul
elementL(problema
membership pentru mul‑imea L). Dacă L ∈ P, acest lucru va însemna că există un
algoritm (privit ca o maşină Türing deterministă; neesen‑ial, maşina Türin
acceptată drept un model universal pentru orice calculator) poli
ce priveşte timpul necesar, care P. Dacă
rezolvă
L ∈ NP, algorimul polinomial care
existăestenedeterminist,ceeaceesteechivalentcuaspunecă„put
polinomial înproblema
|x| P” dacă P(x) = 1, dar dacă cumvaP(x) = 0, atunci
algoritmul poate să nu se termine (altfelPspus, descrie,
problema
în cazul general,
o func‑ie par‑ială şi avem de‑a face cu un semialgoritm). Continuând, dacă sun
douăproblemededecizie P1: I1 → {0, 1} şi P2: I2 → {0, 1}, vom spune că
P1 se reduce polinomial P2 (notatla P1 < P2), dacă există o func‑ie polinomial ‑ cal
culabilăj: I1 → I2 (nu uităm că atât I1, câtIşi2 pot fi codificate N, sau înîntr‑un
acelaş∑i*), astfel încât să avem: P1(x) = P2(j(x)), pentru fiecare x ∈ I 1.
O problemădedecizie PesteNP‑completă dacă P ∈ NPi ş pentrufiecare P’ ∈ NP
avemP < P’. Clasa problemelor NP‑complete este nevidă.
Functia suma(n)
s:= 0;
i:= 1;
Cattimp (i ≤ n) executa
s:= s + i;
i:= i + 1
Sfcattimp
suma:= s;
SfFunctia
Func‑ia numită
suma va ocupa un spa‑iu de memorie fix pentru parametru,
‑ v
abilele locale, pentru adresa de revenire şi, evident, pentru cod.
variabil suplimentar, deci
SAlg(n) = O(1).
Un al doilea algoritm
(Alg2) pe care‑l propunem presupune construirea
func‑ii
recursivecarecalculeazăsumamen‑ionatăfolosindu‑
, sederela‑ia
s(i) = s(i ‑ 1) + i, pornind ini‑ial cu = 0:
s(0)
Functia suma(n)
Daca (n = 0) atunci
suma:= 0;
altfel
suma:= suma(n – 1) + n;
Sfdaca
SfFunctia
• Problemă.Săse ordonezecrescătorelementele
aavând
vectorului
ncomponente.
NO,IUNI DE BA=Ă 173
Înurmătorulexempluvomanalizacomplexitateatimpîncazulcelmaid
Deşin‑amdezvoltatcompletparteateoreticănecesarăpentruaanali
în medie, o vom prezenta (pe scurt) şi pe aceasta.
Soluţie(sortareaprininser‑iedirectă,vezişisubcapitolul 4.3)Algoritmu
(Alg)
propusvaordona,înfiecaremoment,unsubşirob‑inutdincelanterior(d
prin adăugarea unui nou element. El porneşte de la subşirul cu un sing
(care este deja ordonat) şi, odată cu adăugarea unui nou element pe u
pozi‑ie din şir, acesta este promovat până când noul subşir devine ia
Descrierea în pseudocod este:
i:= 2;
Cattimp (i ≤ n) executa
j:= i;
Cattimp (a[j – 1] > a[j] ˄ j > 1) executa
k := a[j – 1];
a[j – 1]:= a[j];
a[j]:= k;
j:= j – 1;
Sfcattimp
Sfcattimp
Analizămcomplexitateatimpaalgoritmului ndimensiunea
, înfunc‑iede presupusă
avectoruluia ceurmeazăafisortat.Lafiecareitera‑ieabucleiprincipale
i ),
elementele
a[1], a[2],... a[i – 1]suntdejaordonateşitrebuie‑ săinter
băm elementele de forma
a[j] cu cele de forma
a[j – 1] (ini‑ial avem
j = i ),
174 DIDACTICA PREDĂRII INFORMATICII
până când noul şir va deveni ordonat. În cazul cel mai defavorabil, câ
element adăugat la şir este mai mic decât cele adăugate anterior, a[i] e
adăugatvafideplasatpânăpeprimapozi‑ie,iarciclulinterior i – 1sevaexe
ori în cadrul fiecărei execu‑ii a ciclului exterior. Considerând ast
elementarăcomparareaelementului a[j – 1]cuelementul a[j] şiinterschimbarea
acestor elemente (atâta timp
a[j – 1] cât
> a[j] ), vom avea în cazul cel mai
defavorabil executate 1 + 2 +... (n – 1) = n × (n – 1)/2 opera‑ii elemen ‑
tare, deci complexitatea algoritmului O(n2). este
Pentru analiza comportării în medie, mai întâi vom considera că oric
a elementelor şirului are aceeaşi probabilitate de apari‑ie (adică or
esteegalprobabilă).Atunci,probabilitatea ai,nou‑ ca
adăvaloarea
ugatălaş irul a 1,
a 2,... a i – 1 , să fie plasată în final pe o pozi‑ ie oarecare k , din a1, a2,...
ai (1 ≤ k ≤ i), este aceeaşi, adică 1/i. Calculăm apoi numărul mediu de opera ‑
‑ii elementare (interschimbări de elemente) pentru ai să ajungă
ca elementul
pe
pozi‑ia k (ce va fi egal cu numărul de schimbări ce se efectuează înmul‑‑ it cu pro
bilitatea ca aceste schimbări să aibă loc) şi numărul mediu total ‑ de oper
tare pentru i fixat.
un Ob‑inem imediat că şi complexitatea algoritmului, în m
este tot O(n2).
Încheindpemomentcuexemplificărilelegatedestudiulcomplexităii, ‑ s
că foarte important în practică este şi studiul coerent al terminăr
programelor(nudoarverificarea a posteriori aacestora prinutilizarea selordiverdate
de test şi teste experimentale). Ideea este că trebuie – dacă se să ne
poate,
asigurăm
tot prin demonstra‑ii – căformale
programele concepute se termină pentru or
instan‑ă admisibilă a datelor şi că ele execută ceea ce vrem, înainte de a fi
( [Me ])Presupunând
. astfelcăinforma‑iiledeintrareadmisibilesuntc
oanumităcondi‑ie,exprimatăprintr‑unpredicatPsau ( precondiţie)
ocondi‑ ră
, ie
mâne
săarătămcăprogramulseterminăpentruoriceasemeneainstan‑ăşică,înaces
informa‑iile de ieşire satisfac unQalt ( postcondiţie)
predicat . Nu este foarte dificil
de tratat astfel programele care nu aceste
con‑inconstruc‑
bucle, ii sintactic
singurele generatoare de informa‑iisau necontrolabile
de execu‑ii infinite . Pentru a
stăpâni ciclurile, sepredicatele
folosesc invariante/invarianţii. Un predicat invariant
R asociat uneieste bucleadevărat înainte de prima execu‑ie a acesteia şi s
plus condi‑ia că, dacă este adevărat înainte de o execu‑ie a corpului bucl
fi adevărat şi după terminarea acelei execu‑ii. Un invariant pentru bu
din algoritmul de mai sus al sortării prin selec‑ie poate fi exprimat
condi‑ia/predicatul informal: Şirul
a1,... ai este ordonat crescător. Pentru
detalii, vezi [R] sau
şi [W2 ].
min:= a1;
i:= 2;
Cattimp (i ≤ k) executa
Daca (min > ai) atunci
min: = ai
Sfdaca
i: = i + 1
Sfcattimp
Precondiţia ( P): Secven‑a de intrare (să o notăm, generic,a) cu are cel pu‑in
două elemente şi acestea sunt numere naturale.
Postcondiţia( Q):Variabila min con‑ine(un)celmaimicnumărdintreelemente
secven‑ei de intrare.
Invariantul ( R), ataşat unicei bucle prezente în program: pentru i ∈ {1,fiecare
2,… k}, existăj ∈ {1, 2,… i}, astfel încât variabila min con‑ine cel mai mic
element al subsecven‑ a1, a2,... ei ai. Această condi‑ie poate fi scrisă pe scurt c
(∀i)(R(i)), undeR(i): există j ∈ {1, 2,… i}, astfel încât variabila min con ‑
‑ine cel mai mic element al subsecven‑ ei ai.
a1, a2,...
Să arătăm mai întâi că Alg se terminăÎn . acest caz, lucrurile sunt sim
deoarece programul con‑ine o singură buclă şi aceasta are un număr finit
execu‑ii ale corpului său, cunoscut aprioric k – 1). În
(anume
privin‑a corectitudi ‑
nii,trebuiesăarătămcă,dacăplecămcuosecven‑ădeintrarecaresatisface ‑ p
di‑ia Pşiacesteiaîiaplicămalgoritmul Algatunci
, lafinalulexecu‑iei(amdemonst
deja căAlg se termină) este satisfăcută postcondi‑ Q. Vom arăta ia
întâiRcă este un
invariant al unicei bucle. Mai exact, se vede direct, pentru începu
prima execu‑ie a corpului buclei, R este adevărat pentru i = 1, adică min con‑ine
cel mai mic element (în sensul ordiniiNstandard ) al subsecven‑ pe ei formate doar
dina1. Altfel spus, înainte de prima execu‑ie a corpului buclei, este
R(1) . ade
Să presupunem acum căR este satisfăcut înaintei – de ceaa execu‑
de‑a ie a cor ‑
pului buclei, i ≥ 2 (pentru o anumită valoare j ∈ {1, 2,… i}) şi să arătăm că R
este adevărat şi după această execu‑ie (pentru o anumită valoare
j’ ∈ {1, 2,… i,
i + 1}).Cualtecuvinte,arătămcă,dacăînaintedecea de‑
i – a execu‑
a ieacorpului
buclei este adevă rată
R(i) , după această execu‑ie va fi adevăR(i rată
+ 1) (deci..
înaintedecea(i + 1) de‑a execu‑ie!i Ş .) aceasta,indiferentdevaloareacurentă i. alu
Această ultimă afirma‑ie este în mod evident adevăR(i) ratăadevă
, deoarece
rată
implică faptul că con‑ineaj, adică o cea mai mică valoare din subsecven‑
min a 1, a
a2,... ai. În cea de‑ai – a execu‑ie a corpului buclei, se compară min cu noua
valoareposibilăa,adică i+1
.Opera‑iaefectuatădealgoritm(înurmaacesteiexe
176 DIDACTICA PREDĂRII INFORMATICII
5.1 Liste
Listaeste o
multimulţime dinamică,adicăocolec‑ie/mul‑imecuunnumărvariabilde
elemente,caresepotrepeta.Elementele sunt
Îngeneral,
tip. deacelaş elementele
i unei
listesunttipuriabstractespecifice,altfelspus,tipuridedatea
par‑ialsautotalunmodel.Elementeleuneinoduri. liste
Dacăse între
numesc nodurile
uneilisteexistăorela‑iedesuccesiune,atunci lista
simplu senumeş
Înacest
înlănţuită. te
cazexistăinforma‑iadeatrecedelaunnodlaaltulsuccesor) ( dar
, nupute
nodul precedent unui nod dat. Dacă între nodurile unei liste există p
determinaatâtsuccesorulunuinod,câtşiprecedentulacestuia,a
dublu înlănţuită.Înlegăturăculistele,seauînvedereuneleopera‑iideintere
a) Crearea unei liste.
b) Accesul la un nod oarecare al listei.
c) Adăugarea unui nod la o listă.
c) Inserarea unui nod într‑o listă.
d) Ştergerea unui nod dintr‑o listă.
e) Ştergerea unei liste.
Observaţii
1. head şi tail sunt variabile declarate în cadrul codului în care s
adresa primului, respectiv al ultimului next este
nod al„pointer
listei. la tipul
nodului”, face parte din defini‑ia nodului şi con‑ine adresa următor
listă sau valoarea NULL.
2. Din figura 5.1 observăm că un nod al listei con‑ine, alături de informa‑ia u
şi adresa următorului nod din listă (dacă există).
3. În cazul unei liste dublu înlăn‑uite, un nod al listei con‑ine în pl
nodului precedent din listă.
Pointerul
next va con‑ine adresa următorului nod al listei, adică define
succesor pentru nodurile listei.
Observaţie
Tipul unui nod pentru o
listă dublu înlănţuită se poate defini astfel:
Pointerul
previous va con‑ine adresa nodului precedent din listă. Primul
listă va avea
previous = null, iar ultimul nod din listă va avea
next = null.
Pointerii
head şi tail se declară în afara oricărei func‑ii (de obicei înai
definirii func‑ iei a programului principal, deci variabile globale) pr
main()
Observaţii
1. În defini‑ia din C#, head şi tail sunt declara‑ i ca . Avem acces la
private
listă numai prin instan‑LinkedList
a tipului. În mod asemănător putem proceda
şi pentru C++.
180 DIDACTICA PREDĂRII INFORMATICII
class Node
{
public: int Key; // Data memorată în nod
Node* next;
public:
Node(int key);
~Node(void);
};
#include “Node.h”
class Lsi
{
Node *head;
Node *tail;
public:
int Add(Node* node);
int Insert(int key, Node* newNode);
// result: 0 = nod negasit; 1 = nod gasit
Node* FindPreviousForKey(int key, int &result);
Node* FindCurrentForKey(int key);
int Delete(Node* node);
int Delete(int key);
int DeleteAll();
void PrintList();
int Count; // Număr noduri în listă
public:
Lsi(void);
~Lsi(void);
};
Pentru clasa
Lsi definită mai sus am definit câteva metode doar
‑ pentr
ficare.
STRUCTURI DE DATE: LISTE, STIVE, COZI 1 81
Observaţii
1. Am eviden‑iat mai sus opera‑iile de adăugare şi inserare a unui nod
Trebuie să men‑ionăm că prima opera‑ie va adăuga un nod la sfârşitul list
a doua opera‑ie va insera un nod înaintea altui nod. În concluzie
inserare a unui nod presupune inserarea unui nod la începutul list
2. Dacă am defini că opera‑ia de inserare va insera un nod după un alt nod, a
nu putem insera un nod la începutul listei şi opera‑ia de adăugare n
sensul.
3. Adoptăm observa‑ia 1. în materialul ce urmează.
Gestionarealisteisimpluînlăn‑uiteovomfacecuajutoruladouăv
head şi tail, definite mai sus.
Pentru LS1, ordinea opera‑iilor este următoarea: se ini‑ializează
head poi
şi tail cu valoareaNULL, deoarece la început lista este vidă.
head = NULL;
tail = NULL;
...
// LS1.0.
head = NULL;
tail = NULL;
// LS1.1.
pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod));
if (pTemp == NULL)
{
printf (“Memorie insuficienta la crearea unui nod al
listei\n”);
exit(1);
}
// LS1.2.
// Acţiuni specifice de iniţializare a datelor-membru
// din nodul listei
// LS1.3.
head = pTemp;
tail = pTemp;
// LS1.4.
tail->next = NULL;
// LS2.1.
pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod));
if (pTemp == NULL) {
printf (“Memorie insuficienta la crearea unui nod al
listei\n”);
exit(1);
}
// LS2.2.
// Operaţii specifice de iniţializare a nodului
// LS2.3. Se face legătura dintre ultimul nod
// al listei cu noul nod creat
tail->next = pTemp;
// LS2.4. Noul nod creat va deveni ultimul nod al listei
tail = pTemp;
//LS2.5. Acum tail punctează spre noul nod creat
// care nu are succesori
tail->next = NULL;
Observaţie
LS2.3 şi LS2.4 trebuie să se execute în această ordine.
...
MPI_Nod *pTemp;
pTemp = head;
while (pTemp != NULL)
{
// Afişare. Calcule. Adresa nodului curent este în pTemp.
// Trec la următorul nod al listei
pTemp = pTemp‑>next;
}
...
Observaţie
Variabilelehead şi tail nu se vor modifica în afara opera‑iilor de adă
‑ ugare, in
rare şi ştergere a unui nod sau ştergere a unei liste. În exemplul ‑ de mai
rea variabilei
head este preluată în variabila locală
pTemp .
...
MPI_Nod *pTemp;
// int tempKey;
// este dat ca parametru formal al metodei
...
pTemp = head;
while (pTemp != NULL)
{
if (pTemp‑>key == tempKey)
return pTemp; // în pTemp avem adresa nodului căutat
pTemp = pTemp‑>next;
}
return NULL; //nu există un asemenea nod
...
STRUCTURI DE DATE: LISTE, STIVE, COZI 185
Observaţie
Inserareaunuinoddupăunnodprecizat -ocheie
printr
(punctul3demaisus)poate
coincide cu opera‑ia de adăugare a unui nod în cazul în care nodul deter
acea cheie este ultimul al listei.
Observaţie
Dacă se inversează etapele (2) cu (3), atunci
am pierdut lista. Pointerul
tailva
punctaspreultimulelementallistei, head vapuncta
pointerulsprenoulnodcreat
iarhead->next va puncta tot spre noul nod creat. O încercare de a parc
în acest moment va duce la intrarea programului -o buclă infinită
într.
Figura 5.4 Reprezentare grafică (prin 2 şi 3 am marcat operaţiile descrise mai sus)
Notă: head. în variabila
a) nod nou – devine nodul de început al listei, adresa păstrată
b) nod head – devine primul nod dehead
după , un nod normal al listei.
186 DIDACTICA PREDĂRII INFORMATICII
...
MPI_Nod *pTemp, *pNodCurent, *pNodAnterior;
int m_key;
...
// Determinare nod. Acest cod poate fi plasat într-o funcţie
// ce va returna pNodAnterior şi pNodCurent
// Prototipul funcţiei poate fi
// int Find(MPI_Nod* pNodAnterior, MPI_Nod* pNodCurent)
pTemp = head;
pNodAnterior = head;
pNodCurent = NULL;
while (pTemp != NULL)
{
// Caut nodul ce satisface condiţia...
if (pTemp‑>key == m_key)
{
pNodCurent = pTemp;
break;
}
pNodAnterior = pTemp;
pTemp = pTemp‑>next;
}
// Sfârşit determinare nod
if (pNodCurent == NULL)
{
printf(“Nu exista cheia %d Lista nemodificata...”,
m_key);
return 1;
}
if (pNodCurent == head)
{
// Nodul se inserează la începutul listei.
// Se va apela funcţia care tratează acest caz.
return 0;
}
else
{
// Alocăm 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 returnează un cod de eroare
}
Observaţii
Am eviden‑iat separat ştergerea primului, respectiv a ultimului
pentru simplul motiv că aceste opera‑ii conduc la modificarea val
head, respectiv
tail. Ştergerea unei liste simplu înlăn‑uite conduce de as
la modificarea valorii variabilelor
head şi tail.
Observaţie
În .NET, eliberarea memoriei alocate
heap este
în realizată deGarbage
către
Collector.
pNodUrmator = pNodCurent‑>next;
Observaţie
DacănodulcetrebuieştersesteprimulpNodCurent
nodallistei ( )atunci
= head ,
se aplică solu‑ia indicată în paragraful anterior.
1 . Dacă lista este vidă, atunci nu avem ce şterge, opera‑ia fiind termina
2 . Determinarea penultimului nod al listei, a cărui adresă o vom păstr
pTemp.
3 . Eliberarea zonei de memorie a cărei adresă se.află în
tail
4 . Actualizarea valorii pointerului
tail cu valoarea variabilei
pTemp.
5 . Setarea pe a pointerului
NULL tail‑>next.
Observaţie
Aplicarea efectivă necesită de fiecare dată parcurgerea listei în t
pentru liste mari presupune un timp mai îndelungat.
Etapeledemaisusnutrateazăcazulcândlistaareexactunsingur
situa‑ie, înainte de
2) ar
etapa
trebui
( verificat dacă
head=tail şi sunt
diferite de
NULL.Încazafirmativ,seexecutăetapeledescriselaştergereaprimulu
De asemenea, trebuie verificat mereu dacă lista nu este vidă.
Observaţii
În cazul în care folosim
POO pentru crearea unei liste simplu înlăn‑uite, d
proprietateCount încadrulclasei,proprietatecevacon‑inenumărulnodu
cadrullistei.Proprietatea
Count vafiactualizatăîncadrulopera‑iilordeadău
inserareşistergeredenoduri.Cuajutorulacesteiproprietă‑idet
estevidă ,
Count=0 are
, unsingurnod, Count=1sau
, maimultenoduri,
Count>1.
...
pTemp = head;
MPI_Nod *pNod; // Va păstra adresa penultimului nod din lis‑
tă.
pNod = null; // Iniţializare
while(pTemp != null)
{
if (pTemp->next == tail)
{
pNod = pTemp;
break;
}
pTemp = pTemp->next;
}
...
STRUCTURI DE DATE: LISTE, STIVE, COZI 1 91
Observaţie
Amputearenun‑aladeclarareavariabilei pNod.Laieşirea
locale
dinbucla
while,
variabilapTemp va con‑ine adresa penultimului nod al listei. În acest
ce determină penultimul nod al listei ar putea avea următorul cod
MPI_Nod* PenultimNod()
{
// Presupunem că head şi tail sunt variabile globale
// pentru a putea fi accesate în cadrul funcţiei
MPI_Nod *pTemp;
pTemp = head;
if (head == tail) // Lista este vidă sau conţine
// un singur nod.
return null; // Nu există un penultim nod.
while (pTemp != null)
{
if (pTemp‑>next == tail)
break;
pTemp = pTemp‑>next;
}
return pTemp;
}
MPI_Nod *head;
192 DIDACTICA PREDĂRII INFORMATICII
pTemp‑>next= head‑>next;
head‑>next = pTemp.
...
MPI_Nod *pTemp = head;
// Ar trebui verificat că lista are noduri.
// if (head == NULL) return;
do
{
// Afişare informaţii nod. Calcule.
pTemp = pTemp->next;
} while (pTemp != head);
...
Pointerul
previousvacon‑ineadresanoduluiprecedentdinlistăPrimu .
listă va avea
previous = null, iar ultimul nod din listă va avea
next = null.
Pentru a gestiona o listă liniară dublu înlăn‑uită, vom utiliza
head şi varia
tail ca la listele simplu înlăn‑uite. Aceste variabile
punctează spre nodurile de
început şi de sfârşit ale listei, noduri ce se caracterizează prin următ
• Primul nod al listei nu are precedent (
head‑>previous = null );
• Ultimul nod al listei nu are succesor=( NULL).
tail‑>next
STRUCTURI DE DATE: LISTE, STIVE, COZI 195
Notă: Săge‑ile spre dreapta indică rela‑ia de succesor, iar cele spre stânga rela‑ia d
Pentrucazula)ordinea
, opera‑iiloresteurmătoarease( reiauopera‑i
simpluînlăn‑uiteşisemodificăpentruafifunc‑ionalepentrulisteledu
LD1. Seini‑ializeazăpointerii
head şi tail cuvaloarea
NULL,deoarecelaînceput
lista este vidă.
head = NULL;
tail = NULL;
LD2. Se rezervă o zonă de memorie în memoria
heap pentru nodul curent.
LD3. Se încarcă nodul curent cu informa‑iile suplimentare.
LD4. Se atribuie pointerilor
head şi tail adresa din memoria
heap a nodului
curent.Pointerii
head şi tailauaceeaşivaloareşidacălistaeste ‑ vidă(va
rea NULL) sau are un singur nod.
LD5. Se atribuie valoarea
NULL pointerului
head‑>next.
LD6. Se atribuie valoarea
NULL pointerului
head‑>previous.
196 DIDACTICA PREDĂRII INFORMATICII
...
// LD1.
head = NULL;
tail = NULL;
// LD2.
pTemp = (MPI_Nod*)malloc(sizeof(MPI_Nod));
if (pTemp == NULL)
{
printf (“Memorie insuficienta la crearea nodului...\n”);
exit(1);
}
// LD3.
// Acţiuni specifice de iniţializare a datelor membru
// din nodul listei.
// LD4.
head = pTemp;
tail = pTemp;
// LD5.
head->next = NULL;
head->previous = NULL;
Cazulb)presupuneadăugareanoduluilasfârşitullistei.Opera‑ ‑ iil
toare cu cele de la liste simplu înlăn‑uite, singura diferen‑ă fiind ace
actualizăm pointerul
previous al nodului creat cu valoarea
taildată
. de
Observaţie
Inserarea la sfârşitul listei, adică opera‑ia (c) de mai sus, coincide cu
adăugare a unui nod la sfârşitul listei, opera‑ie deja descrisă.
pTemp‑>next= head;
3 . Pointerul
head‑>previous va păstra adresa noului nod creat,
pTemp .
4 . Pointerul
head va primi ca valoare adresa noului nod: creat,
pTemp
head = pTemp;
5 . Pointerul
head‑>previous va primi valoarea
NULL (este noul nod de început
al listei).
Inserarea după sau înaintea unui nod precizat, nod care nu este
listei
Vom descrie numai opera‑ia de inserare a unui nod înaintea unui n
Presupunem că dispunem de următoarele informa‑ii:
• adresa nodului precedent (
pNodAnterior );
• adresa nodului succesor (
pNodUrmator );
• adresa noului nod ce va fi inserat între cele două noduri.
Înacestcaz,codulpentrudeterminareacelordouăadreseestema
cădinnodulcaresatisfacecondi‑iacerutăputemob‑ineadresanodulu
ajutorul pointerului
previous). Adresele nodului anterior şi nodului următ
ob‑inprintr‑oprocedurăasemănătoarecuceadescrisălalistesimpluînlăn
de a face inserarea, situa‑ia legăturilor (valorile
next şi previous
pointerilor
) din
cele două noduri sunt:
Observaţie
Acestcodpoate fi optimizat,variantadefa‑ăfiindpreferatădoar ‑ dinm
tice. Inserarea după un nod precizat se tratează exact ca în cazul ante
dispunem de adresele nodului anterior şi nodului succesor. Difer
moduldedeterminareacelordouăadrese.Maiîntâiseob‑ineadresanodu
i
ş apoi, cu ajutorul pointerului
next din nodul anterior, ob‑inem adresa nod
următor.
STRUCTURI DE DATE: LISTE, STIVE, COZI 19
Observaţii
1. Ce se întâmplă dacă lista are exact un singur element? Func‑ionea
etapele de mai sus? Analizând această situa‑ie, constatăm ‑ că valoa
lui pInceputLista va fi NULL în etapa 4), ( pentru că valoarea pointerulu
pTemp este NULL.
2. Valoareapointerului pSfarsitListaestecorectă?Deoarecelistadevinev
valoarea acestui pointer ar NULLtrebui
. Conform să fie
opera‑iilor de mai sus,
aşa ceva nu se întâmplă. Mai mult, 5) vom
în ( ob‑ine o eroare, deoarece ‑ încer
căm să accesăm o zonă de memorie interzisă (adresa 0x00000000).
3. Ce trebuie făcut? Modifică 2) astfel:
m(
Dacă pInceputLista‑>pElementUrmator = NULL, atunci eliberăm zona
de memorie a cărei adresă este memorată head, după
în care setăm peNULL
pointerii ce men‑in informa‑ia despre capetele head şi tail)
listei
. Opera‑
( ia
se consideră terminată şi nu se mai execută celelalte etape.
...
MPI_NodLD *pTemp1, *pTemp;
pTemp = head;
while (pTemp != NULL)
{
pTemp1 = pTemp‑>next;
delete pTemp; // eliberare memorie ocupată
pTemp = pTemp1;
}
...
STRUCTURI DE DATE: LISTE, STIVE, COZI 1 02
Exerciţiu
Rescrie‑i codul de mai sus fără a folosi variabila temporară
pTemp1 .
Observaţie
Din punct de vedere metodic, profesorul trebuie să îndrume elevul în
acesta să facă o distinc‑ie clară între
definiţia formală a unei structuri de date,
reprezentarea sa grafică (vizuală) şi diversele tipuri de implementare.
5.2 Stive
Observaţii
Ostivăcareareunnumărmaximcunoscutdeelementepoatefiimplemen
un vector. De exemplu, o stivă de întregi se defineşte astfel:
int stiva[100],
5.3 Cozi
Implementareaacestorfunc‑iiesteaceeaşicuimplementareafunc‑i
a unui nod la sfârşitul unei liste simplu înlăn‑uite, respectiv de şt
de la începutul aceleiaşi liste.
Observaţie
Implementarea unei cozi folosind un tablou unidimensional (stati
acest caz ineficientă. De exemplu, la fiecare extragere a unui element
elementele tabloului trebuie rearanjate (mutate spre stânga
STRUCTURI DE DATE: LISTE, STIVE, COZI 203
Observaţie
Componente principale pentru .NET:
• CLR – Common Language Runtime;
• BCL/FCL – Base Class Library/ Framework Class Library.
.NET acceptă mai multe limbaje de programare (F# – Fortran, VB.NET – Visual
Basic pentru .NET etc.), dintre care cel mai cunoscut şi folosit este C#.
claselesuntprefixatecuMySQL,iarpentruFirebirdDatabase,clasele
cu Fb etc.
Exemplele ce urmează au la bază următoarele două tabele ce se creează în
de date numită Blogs.
Observaţii
Cheile primare, de tip int
IDENTITY(1,1) , din cele două tabele sunt create
serverul bazei de date şi, ca atare, nu vom furniza valori pentru aces
opera‑iilor de adăugare de înregistrări.
Între cele două tabele există rela‑ia de „unuone-to-many)
la mai multe”
, iar unei
(
înregistrări din tabela Posts îi corespund zero sau mai multe înregi
Comments.
STRUCTURI DE DATE: LISTE, STIVE, COZI 205
În codul de mai sus se specifică drept server bază de date SQL Express, b
date are numele Blogs, iar autentificarea folosită este cea dată de
Open()realizeazăconexiuneacubazadedate,ceeaceînseamnăcăputemfolositab
procedurilecatalogate,
view‑urileetc.cesuntdefiniteînbazadedate.Închider‑
xiuniilabazadedateserealizeazăprin metoda
Close() peobiectul
connection:
connection.Close();
AdăugareadeînregistrăriîntabelaCommentspresupuneexisten‑aun
întabelaPosts(rela‑iadeunu‑la‑mai‑multe)Metoda
. pentruadăugareau
înregistrări este furnizată în continuare.
Observaţie
Codul de mai sus face presupunerea că există în tabela Posts înregis
PostId egal cu cel furnizat în parametrul metodei.
{
cmd.Parameters.Add(“@p1”, SqlDbType.NVarChar, 4000).Value
= newText;
cmd.Parameters.Add(“@p2”, SqlDbType.int).Value = commentId;
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
}
}
Observaţii
Metoda UpdateComments de mai sus diferă de metodele InsertIn
InsertIntoComments numai prin con‑ului
string- inutul
query. Cele trei metode‑ pre
zintă o parte comună de cod ce se execută după ce un obiect de tipa
SqlCommand
fost creat(Open(), ExecuteNonQuery() şi Close()).
Definiţii:
– adiacenţă = proprietatea a două noduri de a fi unite prin muchie/ a
[x, y] ∈ U sau (x, y) ∈ U, spunem că nodurile
x şi y sunt adiacente;
– incidenţă = proprietatea unei muchii sau a unui arc de a uni două nodu
[x, y] ∈ U, spunem că muchia este incidentă cu nodurile
x şi y (analog pen
‑
tru arcul(x, y)).
Definiţii:
– graf parţial = graf care se ob‑ine din graful ini‑ial prin eliminarea unor
arce, nu şi a nodurilor;
– subgraf = graf care se ob‑ine din graful ini‑ial prin eliminarea unor no
tuturormuchiilor/arcelorincidentecuacestea(nupotfielimin
decât cele incidente cu nodurile eliminate).
Proprietăţi:
– Numărul grafurilor neorientate
n noduricu
este ;
– Numărul grafurilor orientate
n noduri
cueste ;
m
– Numărul grafurilor par‑iale ale unui
n noduri
graf cu
şm
imuchii/arce este. 2
Observaţii
1. Un nod izolat constituie o componentă tare conexă.
2. Numărulminimnecesardearce -unîntr
graforientatGcunvârfuri,astfelîn
G să fie tare conex este
n, dacă G nu con‑ine ini‑ial nici un arc. În acest caz, se
construieşte uşor un circuit elementar care trece prin toate v
nou ales având extremitatea ini‑ială egală cu extremitatea ‑ final
dent ales (nu contează cu care vârf începem).
3. Să ne punem aceeaşi problemă ca la punctul anterior, renun‑ând ‑ la id
itului elementar. Mai exact, fiind dat un graf n vârfuri,
orientat numă
G cu rul
minim necesar de arce astfel încât G să fie tare conex, oricum ar fi
arcele,este (n – 1) (n – 2) + n.Astfel,încelmairăucaz,construimmai
întâi un subgraf plin în graful dat, folosind n – 1 vârfuri, ceea ce îns
avem nevoie de cel(n mult
– 1) (n – 2) arce. Apoi rămânem cu acest
subgrafplinşicuunvârf(presupus)izolat.Maiavemnevoie n –de
1 celmult
arce (care să aibă ca extremitate ini‑ială vârful izolat şi ca extremit
rând, cele n – 1 vârfuri deja selectate pentru subgraful plin), plu
care să aibă ca extremitate finală nodul izolat.
Observaţii
Un nod izolat constituie o componentă conexă.
Numărul minim de muchii necesar pentru ca un graf neorientat cu n vâ
conex este n-1 (graful este arbore).
Numărul minim de muchii necesar pentru ca un graf neorientat cu n vâ
conex, oricum ar fi dispuse muchiile, este
(n-1)(n-2)+1 .
21 2 DIDACTICA PREDĂRII INFORMATICII
Un arbore esteungrafconexfărăcircuite.În1matematicianul
857, britanicA
Cayleyafolositpentruprimadatătermenul„arbore”înteoriagrafur
laoanalogiecuîn‑elesulsăudindomeniulbotanicii.Arboriiaufosts
de numeroşi matematicieni şi fizicieni, precum Cayley, pe care l‑au ‑ inter
‑iile lor în chimia organică, sau fizicianul german G.R. Kirchhoff, care a st
această categorie pornind de la studiul re‑elelor electrice.
Observaţie
Orice lan‑ elementar de la rădăcină la un nod din arbore va avea lungim
multk = [log2n].
• Arbore binar strict – orice nod care nu este frunză are exact doi fii.
• Arbore binar complet – se ob‑ine dintr‑un arbore binar plin prin elimin
ordine, a unor frunze de pe ultimul nivel, de la dreapta spre stân
41 2 DIDACTICA PREDĂRII INFORMATICII
Tabelul 6.2 Structura de date ce implementează reprezentarea descendentă a unui arbore binar
Opera‑iiledeinserareşiacceslaunnodpresupun,lafelcalaliste
criteriu de poziţionare saude identificare a unui anumit nod în cadrul arborel
Gestiunea nodurilor unui arbore binarajutorul se realizează cu ce
unei variabile
punctează spre rădăcina (sub)arborelui. Notăm această variabilă cu
pRadacina ,
definită astfel:
ArboreBinar* pRadacina.
Aceastăvariabilăarecavaloareadresadeînceputazoneidememori
alocată rădăcina arborelui. Dacă arborele este vid,
pRadacina are valoarea
NULL.
pRadacina = pTemp;
şiprocesulsetermină.Încazcontrar,sedeterminăpozi‑iaîncaretrebu
noua frunză (dacă va fi fiu stâng sau drept al părintelui său) conform cr
de identificare men‑ionat mai sus. Presupunem că adresa tatălui no
determinatăşimemoratăînvariabila pointer
pNodTata .Încazulîncareopera‑ia
deinserarenupoatefiefectuată,eliberămzonadememorieacăreiadr
în pTemp şi procesul se termină.
5 . Dacă inserarea se realizează în nodul stâng, atunci se face atribu
noduluipNodTata cu noul nod):
pNodTata‑>pStang = pTemp;
6 . Dacă inserarea are loc în nodul drept, atunci se face atribuirea (le
pNodTata cu noul nod):
pNodTata‑>pDrept = pTemp;
Etapa a patra este cea mai importantă din cadrul acestui proce
identificare a nodului după care se face inserarea este specific pen
parte.Informa‑iilecarecontribuielaidentificareanoduluisuntc
inserare se doreşte şi cele existente deja în nodurile alocate. Tr
acest caz se va începe cu cercetarea nodului‑rădăcină şi că opera‑iile ‑ care
ează sunt aceleaşi pentru fiecare nod. Acest criteriu de identifica ‑
mentat ca o func‑ie recursivă cu cel pu‑in doi parametri. Un parametru
adresanoduluisupus – parametru
testării de intrare,iarcelălaltparametruvacon‑in
adresa nodului după care se face– inserarea
parametru de ieşire. Prototipul func‑iei
ar putea fi:
Parcurgereaunuiarbore binarînseamnăaccesullarădăcinaarborelu
în preordine
şi apoi parcurgerea celor doi subarbori, întâi a celui stâng şi apoi
Subarborii, fiind la rândul lor arbori binari, se parcurg în acelaşi mo
unui arbore binar
în inordine înseamnă parcurgerea mai întâi a subarborelui
apoi accesul la rădăcină şi, în continuare, parcurgerea subarborelui dr
subarbori se parcurg în acelaşi mod. Parcurgerea unui arbore binar
în postordine
înseamnă parcurgerea mai întâi a subarborelui stâng, apoi a subarbo
81 2 DIDACTICA PREDĂRII INFORMATICII
1 2 4 7 3 5 6 (preordine)
2 7 4 1 5 3 6 (inordine)
Observaţie
Nus‑aupuscondi‑iiasupravaloriipointerilorînaintedeaelibera
de aceştia.
lvompe
Considerămutilsăcontinuămcuunproiectdidactic, maiinclude
carenu‑
în anexe.
Şcoala:
Disciplina: Informatică
Clasa: a XI‑a
Profilul: Matematică‑informatică, intensiv informatică
Data:
Profesor:
Unitatea de învăţare: Structuri de date arborescente
Tema lecţiei: Opera‑ii cu arbori binari de căutare
Tipul lecţiei: Aplica‑ii practice de laborator
Durata: 2 h 50 min.
Competenţe generale:
(CG1)Identificareadatelorcareintervinîntr‑oproblemăşiaplicare
fundamentali de prelucrare a acestora.
(CG2) Elaborarea algoritmilor de rezolvare a problemelor.
(CG3) Implementarea algoritmilor într‑un limbaj de programare.
222 DIDACTICA PRED RII INFORMATICII
Competenţe specifice:
(CS1)Descriereaopera‑iilorspecificestructurilorarborescente
subprograme care să implementeze aceste opera‑ii.
(CS2) Analizarea în mod comparativ a avantajelor utilizării diferit
structurare a datelor necesare pentru rezolvarea unei problem
(CS3) Aplicarea în mod creativ a algoritmilor fundamentali în rezol
probleme concrete.
Competenţe derivate
La sfâşitul activită‑ii didactice, elevii vor fi capabili să reali
activită‑i:
(CD1)Analizareaproblemeipropuseşiidentificareastructurilord
pentru o reprezentare eficientă.
(CD2Implementarea
) corectăaopera‑iilorcuarboribinaridecăutare:i
crearea, căutarea, parcurgerea, ştergerea unui nod.
(CD3) Utilizarea corectă a func‑iilor pentru rezolvarea problemei pr
(CD4) Testarea, depanarea şi corectarea propriei aplica‑ii, dacă este n
Competenţe psihopedagogice
C1. Cognitive
La sfârşitul lec‑iei, elevii vor fi capabili:
(C1.1) să analizeze o problemă, să descrie etapele de rezolvare.
(C1.2) să identifice etapele de proiectare a aplica‑iilor propuse.
(C1.3) să scrie func‑ii C++ pentru rezolvarea cerin‑elor propriu‑zise.
(C1.4) să aprecieze corectitudinea implementării, rulând aplica‑ia pe
date de test.
C2. Competen‑e afective:
(C2.1) să se autoevalueze corect.
(C2.2) să dovedească curiozitate şi interes pentru no‑iunile utilizat
C3. Competen‑e atitudinale/comportamentale:
(C3.1să
) conştientizezeimportan‑aalegeriiunorstructuridedatead
rezolvarea problemei propuse.
(C3.2)săargumentezeeficien‑astructuriloralesedinpunctul ‑ deved
miei de memorie.
C4. Competen‑e ac‑ionale
(C4.1) să identifice structura de date de tip arbore binar de căutare
(C4.2) să descrie opera‑iile specifice necesare în algoritmul de rezolv
(C4.3) să implementeze corect func‑ii C++ pentru opera‑iile propuse.
(C4.4) să testeze, să depaneze şi să corecteze eventualele erori din‑ propr
ca‑ie.
TEORIA GRAFURILOR ŞI A ARBORILOR 223
Strategii didactice
a) Principii didactice:
– principiul legării teoriei de practică;
– principiul sistematizării şi continuită‑ii cunoştin‑elor;
– principiul accesibilită‑ii;
– principiul individualizării şi diferen‑ierii învă‑ării.
b) Metode şi procedee didactice:
– problematizarea (P), algoritmizarea (A), conversa‑ia frontală şi individ
explica‑ia (E), munca independentă (M).
c) Forme de organizare: lucrul individual.
d) Forme de dirijare a învă‑ării:
– independentă;
– dirijată de către profesor prin mijloacele de învă‑are.
e) Metode de evaluare:
– evaluare continuă pe parcursul lec‑iei;
– apreciere verbală;
– evaluare practică.
f) Resurse materiale:
– calculatoare cu mediul de programare instalat;
– fişe de aplica‑ii;
– material bibliografic:
[CLR ], [L ], [CŞ ], [IP ], [MM ].
24
Structura lecţiei pe secvenţe de instruire
CD Min. Etpele lecţiei – activitate elev-profesor MD
3’ Moment organizatoric.
Profesorul: verifică frecven‑a elevilor, verifică existen‑a resurselor materiale.
Elevii: se pregătesc pentru– deschid
oră calculatoarele, intră în mediul de programare.
3’ Captarea aten‑iei.
Profesorul: anun‑ă tema lec‑iei, distribuie fişele de lucru, explică modul de desfăşurare a orei.
Fişele con‑in un număr de sarcini obligatorii, iar pentru elevii cu performan‑e mai bune se prevăd câ
suplimentare. Vezi fişa.
Elevii: răspund solicitărilor profesorului, cer lămuriri.
Desfăşurarea lec‑iei
Profesorul solicită elevilor: citirea atentă a cerin‑elor, propunerea unor structuri de date car
‑ P, Cv
CD1, 85’ varea eficientă a acestora, argumentarea alegerii.
C1.1, Elevii:analizeazăproblema,identificătipurilededatei ş argumenteazăoportunitatea
o
- reprezentăriid
C2.2 structură de arbore binar de căutare.
Profesorul va pune întrebări, stimulând prin conversa‑ie participarea activă a elevilor la oră. Î
– Ce structură de date permite păstrarea datelor ordonate şi regăsirea lor eficientă Cv ca timp?
DIDACTICA PREDĂRII INFORMATICII
Pot veni elevi la tablă care să exemplifice func‑ionalitatea algoritmului pe date concrete, re
descriere grafică a opera‑iilor, pentru o mai bună în‑elegere.
Profesorul monitorizează activitatea individuală a elevilor, le acordă permanent suport. Dacă au
greşeli repetate la mai mul‑i elevi, se întrerupe lec‑ia pentru o discu‑ie cu toată clasa şi lămurire
Profesorul încurajează elevii cu performan‑e superioare să rezolve cerin‑ele suplimentare,
‑ de ex
marea arborelui binar de că-un utare
arbore
într
binar de căutare echilibrat.
Elevii implementează individual, testează şi depanează propriile aplica‑ii.
Profesorul monitorizează activitatea elevilor, ghidând aplicarea no‑iunilor predate şi acor
este solicitat.
CD2, Evaluarea M,A
CD3, – pe parcurs, prin aprobare şi dezaprobare verbală în urma răspunsurilor date de elevi la întrebăr
CD4 observării sistematice a muncii independente;
TEORIA GRAFURILOR ŞI A ARBORILOR
Clasa:
Tema lecţiei:
Fişă de lucru
Variantă de implementare
#include <fstream>
#include <iostream>
#define NMax 1000
using namespace std;
ifstream fin(„abc.in”);
ofstream fout(„abc.out”);
TEORIA GRAFURILOR ŞI A ARBORILOR 27
{
if(pNod‑>pDrept != NULL && pNod‑>pStang != NULL)
// nodul de sters pNod are ambii fii
{
/* inlocuiesc informatia din radacina cu cea din
/* cel mai din dreapta nod al subarborelui stang
/// care are cheia cea mai mare mai mica decat rada‑
cina*/
ABC *p = pNod‑>pStang;
pTata = pNod;
while (p‑>pDrept != NULL)
{
pTata = p;
p = p‑>pDrept;
}
pNod‑>prod = p‑>prod;
pNod = p; /*nodul de sters devine p; p are cel mult
2 fii*/
}
if(pNod‑>pDrept == NULL) // are cel mult fiu stang
{ if (pTata == NULL) pRadacina = pNod‑>pStang;
else if (pTata‑>pDrept == pNod)
pTata‑>pDrept = pNod‑>pStang;
else pTata‑>pStang = pNod‑>pStang;
}
else
if(pNod‑>pStang == NULL) // are cel mult fiu drept
{ if (pTata == NULL) pRadacina = pNod‑>pDrept;
else if (pTata‑>pDrept == pNod)
pTata‑>pDrept = pNod‑>pDrept;
else pTata‑>pStang = pNod‑>pDrept;
}
delete pNod;
}
}
}
void afisareMeniu()
{
cout<<”\t1. Adauga produs\n”;
cout<<”\t2. Cauta produs\n”;
cout<<”\t3. Afiseaza lista de produse\n”;
cout<<”\t4. Valoare stoc\n”;
cout<<”\t5. Numar de produse din lista\n”;
cout<<”\t6. Stergere produse cu stoc 0\n”;
cout<<”\t7. Iesire\n”;
}
int main()
{
int optiune, cod;
Produs P;
ABC* pNod;
Creare(pRadacina);
while(1)
{
afisareMeniu();
cin>>optiune;
switch (optiune)
{
case 1: cout << „dati produsul de adaugat (cod, pret,
cantitate): „; cin >> P.Cod >> P.Pret >> P.Stoc;
Inserare(pRadacina, P);
break;
case 2: cout << “dati codul produsului cautat: “;
cin >> cod;
pNod = CautaNod(pRadacina, cod);
if (pNod == NULL) cout << “Produsul nu este in lista”;
else cout << pNod‑>prod.Cod << ‘ ‘ << pNod‑>prod.
Pret << ‘ ‘ << pNod‑>prod.Stoc<<’\n’;
break;
case 3: Inordine(pRadacina); cout<<”\n\n”;
break;
case 4: cout << “Valoarea totala a stocului = “ <<
ValoareStoc(pRadacina)<<”\n\n”;
break;
case 5: cout << “Numarul de produse din lista = “ <<
NumarProduse(pRadacina)<<”\n\n”; break;
case 6: StergeNodStoc0(pRadacina, pRadacina, NULL);
break;
case 7: StergArbore(pRadacina); return 0;
default: cout << “Optiune incorecta!”;
}
}
StergArbore(pRadacina);
return 0;}
TEORIA GRAFURILOR ŞI A ARBORILOR 1 32
Disciplina: –
Clasa: –
Data: –
Profesor: –
Unitatea de învăţare: Func‑ii în C/C++
Detalieri de conţinut:Prototipuluneifunc‑iicarenureturneazăvalorişinuarep
respectiv care are parametri şi returnează valori
Tipul lecţiei: Predare de noi cunoştin‑e
Se are în vedere realizarea deprinderilor de a lucra eficient, modulari
‑
zând descompunerea unei probleme date în subprobleme a căror rezolvare es
La sfârşitul lec‑iei, elevii vor fi capabili:
– să declare o func‑ie;
– să recunoască componentele principale ale unei func‑ii (numele ei, valoa
argumente) sau, altfel spus, prototipul unei func‑ii;
– sădescriemoduldefolosireaargumenteloruneifunc‑ii(prinvaloare,pr
– să deprindă folosirea valorilor returnate de către o func‑ie.
238 ANEXE
Momentele lecţiei:Presupunemcăorganizareaclaseidureazăs 06 i
ş verificămi
ş altelucru
legatedemediu.Importantăesteînsăenun‑areascopuluilec‑iei.Astfel,aiciput
cadrul lec‑iei care urmează vor fi expuse următoarele probleme legate de func‑ii
declarareafunc‑iilor;definirealor;utilizareaargumentelorfunc‑ieişiava
• Reactualizarea cunoştin‑elor dobândite anterior.
• Sepotpuneîntrebări,cumarfi:Ceînseamnă #include <string.h> ? Care este rolul
directivei
#include? Unde şi de ce am folosit‑o? Ce informa‑ii poate con‑ine un fişie
antet (în mod uzual are
extensia .h)?
Încadruldeclarăriifunc‑ieiputemfolosinumepentruargumente.Acestlucruîidău
posibilitatea să în‑eleagă semnifica‑ia parametrului respectiv şi valorile
folosite.Compilatorulnuiaînconsiderareacestenume,cinumaitipulparamet
Definirea funcţiei. O definire de func‑ie înseamnă o declarare de func‑ie în ‑care est
zentat şi corpul func‑iei (codul). Orice func‑ie folosită
-un program
într
trebuie să fie definită
undeva în cadrul programului, dar numai o singură dată. De exemplu:
Cândfunc‑fia esteapelată ,
valoare++ incrementează o copie localăaprimuluiargument
actual, în timp ce
referinta++ incrementează al doilea argument formal. Trebuie s
diferen‑a. Un apel al acestei func‑ii este dat în cele ce urmează.
void main()
{
int _valoare = 10;
int _referinta = 100;
printf (“\nInainte de apel functie f\n _valoare = %d \n _referinta
= %d”,_valoare, _referinta);
f (_valoare, &_referinta);
printf (“\nDupa apel functie f \n _valoare = %d \n _referinta =
%d”,_valoare, _referinta);
}
Rezultatulexecu‑ieieste:înaintede fvom
apelul
aveafunc‑ iei = 10şi _refe‑
_valoare
rinta = 100,iardupăapelulfunc‑fiei
vomgăsi _valoare = 10şi _referinta = 101.
Primul argument este prin dat
valoare, iar al doilea
prin referinţă. Deci primul parametru
pentru f se comportă ca o variabilă locală. Deşi nu este indicată transmiterea parame
prin referin‑ă, acest lucru este absolut necesar atunci când mari prin
se transfe
argumenteleuneifunc‑ii.Pentruaindicafaptulcăobiecteletransmiseprin
modificate de către func‑ie, argumentul trebuie const. Dedeclarat
asemenea, declarând un
argumentdetippointer cafiind
const înseamnă
, căobiectulpunctatdeacestpointernu
fi schimbat de func‑ie.
Obţinerea valorii de retur. O func‑ie care nu este declarată ca având void trebuie
tipul să
returneze o valoare. Valoarea returnată este specificată return. Într
de instruc‑
-o func‑ iune
‑ie pot exista mai multe instruc‑ return. De
iuni
exemplu:
int f () { }
void g () { }
Observaţie
O instruc‑iune
return ini‑ializează o variabilă de tipul returnat. Tipul valorii r
o func‑ie trebuie să corespundă cu tipul func‑iei – în caz contrar, se vor efectua
standard şi cele definite de utilizator asupra acestei valori.
Important
Lafiecareapelalfunc‑ieiserealizeazăocopieaargumentelorsaleşiavari
automatic.Memoriautilizatăpentruaceastaesterefolositădupăcefunc‑iaîşiterm
Din această cauză este interzisă returnarea unui pointer . la o variabilă loca
Fixarea cunoştinţelor: Prin întrebări simple, clasa poate fi condusă spre a‑ sesiza mo
tele principale ale lec‑iei referitoare la func‑ii în C/C++: declarare, definir
argumentelor, folosirea practică a func‑iilor, ob‑inerea corespunzătore a val
Activitatea (suplimentară a) profesorului: se va insista asupra faptului că ceea ce po
con‑ineunfişierantetnuesteocerin‑ăalimbajuluideprogramare,ci‑ maidegr
‑ie pentru a separa anumite declara‑ii (de tip, de func‑ii etc.) de codul-sursă pro
Activitatea elevilor: ei trebuie să furnizeze la momentul oportun răspunsuri core
ar fi cele men‑ionate mai sus şi cele descrise în continuare. Mecanismul defi
decompilare #includesereferălafacilitateadegestionareafişirelorcecon‑in
de a uni fragmente de program -o singură
într unitate (fişier) pentru compilare. Direc
#include, a cărei sintaxă este
Tema pentru acasă: Realiza‑i func‑ii care să satisfacă următoarele cerin‑e (nu simul
• Returnează elementul minim dintre cele trei argumente de acelaşi tip a
• Ini‑ializează elementele unei structuri (argumentul va fi transmis pri
const), nu are valoare de retur.
Observaţie
Această lec‑ie va trebui să fie completată cu o lec‑ie de laborator.
Disciplina: –
Clasa: –
Profesor: –
Data: –
Unitatea de învăţare: Structuri de date de tip listă simplu înlăn‑uită, alocată di
ANEXE 1 42
Observaţie
Prezentarea opera‑iilor cu nodurile unei liste simplu înlăn‑uite va fi îns
desene sugestive. Se pot introduce şi aici lucruri concrete privind acti
(alte) metode şi procedee didactice.
Disciplina: –
Clasa: –
Data: –
Profesor: –
Unitatea de învăţare: Tipuri structurate. Tipul înregistrare (Record)
Detalieri de conţinut:Identificareaunornoitipuridedate;proiectareaaplic
rezolvarea unor probleme utilizând instrumente specifice de prelucrar
Tipul lecţiei: Comunicare de noi cunoştin‑e
Timpul acordat: 50 de minute
Obiectiv fundamental: Însuşirea cunoştin‑elor cu privire la crearea propriului
şi a func‑iilor necesare să lucreze cu acesta
Competenţe acţionale:
• Dezvoltarea capacită‑ii de gândire independentă şi a capacită‑ii de comuni
limbajul de programare studiat.
• Gruparea datelor de tipuri diferite în structuri cu organizare omogen
• Stăpânireamodalită‑ilordeacceslacomponenteleuneiînregistrărişiefe
opera‑ii cu acestea.
Seceresăseafişezelistaeleviloradmişilaexamen.Unelevesteconsiderat
media examenului de capacitate este mai mare sau egală cu cinci.
Profesorul poartă un dialog cu clasa despre modul de rezolvare a proble
despre modalitatea în care vor fi memorate datele. Elevii vor propune (prob
informa‑iilor în cinci vectori, câte unul pentru fiecare tip de informa‑ie. U
tablă pentru a construi un exemplu n = pentru
5 elevi. Profesorul va accentua faptul
pentru a afla datele3,elevului
trebuie selectate elemente din cinci
a[3] , b[3]
vectori:
,
c[3], d[3], e[3], deci opera‑iile de prelucrare a datelor memorate în acest mo
dificil
de realizat. Le comunică elevilor că în limbajul Pascal există tipul înregistr
permite lucrul cu date de tipuri diferite. Profesorul scrie pe tablă tit
înregistrare(Record)”şiprezintăelevilordefini‑iatipului:tipulînregistr
tip de date structurat, care poate con‑ine un număr fix sau variabil de compo
tip sau de tipuri diferite. Componentele unei înregistră câmpurisau ri sunt
articole. Înnumite
func‑iedenumăruldearticole,tipulînregistrarese clasifică
înregistrare fixăastfel:
– con‑ine
un număr fix de componente de tipuri diferite;
înregistrare cu variante – con‑ine un număr
variabil de componente de acelaşi tip sau de tipuri diferite.
În continuare, profesorul va scrie pe tablă modul general de definire a t
va explica elevilor particularită‑ile care apar la definire:
Activitatea elevilor (în aceeaşi perioadă de timp): Elevii vor fi aten‑i la întrebă
‑ rile pr
sorului şi vor formula răspunsuri la acestea; vor fi antrena‑i în scrierea l
tabloului unidimensional.
Putem reveni şi spune că activitatea profesorului poate continua cu prezent
permise datelor de tip înregistrare.
Modalitatea de acces la componentele unui Record:
– folosind caracterul punct:
nume_variabilă.nume_câmp ;
– folosind instruc‑ iunea
WITH :
with nume_variabila do
begin
prelucrare campuri inregistrare
end;
Încontinuare,profesorulvaprezentarezolvareaproblemeipropuse ‑ exem
tânddefiecaredatănoilecunoştin‑e,cumarficitireadatelordeintrare(nu
completareaprinprogramacâmpurilor mediaşi obssauafişarearezultatului.Revenind,pu
spune că este de dorit ca elevii să participe activ la oră, răspunzând la între
deprofesor,sănotezeîncaieteceeacenuştiuşisăfieaten‑ilaexplica‑iileprofes
vorfiantrena‑işiînscriereacoduluiprogramului,profesorulpurtândunpe
clasa.
Realizare feedback(douăminute)Profesorul
: confirmă,apreciazărăspunsurilecorect
dacă este cazul, intervine cu explica‑ii suplimentare, în timp ce elevii re
explica‑iile suplimentare şi fac anumite comentarii.
Ultimele trei proiecte de tehnologie didactică ataşate sunt standar ‑
form ultimelor cerin‑e educa‑ionale. Sugerăm cititorului să aducă şi proiectel
prezentat anterior la această formă.
ANEXE 245
Şcoala:
Disciplina: Informatică
Clasa: a X‑a
Profilul: Matematică‑informatică, intensiv informatică
Data: –
Profesor: –
Unitatea de învăţare: Tehnici de implementare a algoritmilor: subprograme.
Tema lecţiei:Subprogrameutilizator:defini‑ie,apel,mecanismdetransferapara
Strategii didactice
Principii didactice:
– principiul înşuşirii conştiente şi active a cunoştin‑elor;
– principiul accesibilită‑ii;
– principiul legării teoriei de practică.
Metodeşiprocedeedidactice:problematizarea(P),algoritmizarea‑ (A),conver
tică (Cv), explica‑ia (E), demonstra‑ie (D).
Forme de organizare: lucrul frontal.
Forme de dirijare a învă‑ării:
– independentă;
– dirijată de profesor prin mijloacele de învă‑are.
Metode de evaluare:
– evaluare continuă pe parcursul lec‑iei;
– apreciere verbală.
Resurse materiale:
– culegeri auxiliare;
– tablă;
– proiector.
Referin‑e bibliografice:
[CŞ ], [K1 ], [CLR ].
Structura lec‑iei pe secven‑e de instruire
MD (metode
CS/CD Min. Etapele lecţiei – activitatea elev‑profesor
didactice)
2’ Moment organizatoric
Profesorul: verifică frecven‑a elevilor, verifică existen‑a resurselor materiale
Elevii: se pregătesc pentru oră – deschid caietele
3’ Captarea atenţiei
Profesorul: anun‑ă tema lec‑iei, competen‑ele pe care urmăreşte să le formeze şi explică modul
‑ de desfă
şurare a orei.
Elevii: răspund solicitărilor profesorului, cer lămuriri.
Desfăşurarea lecţiei
Elevii: analizează problema, identifică secven‑ele de opera‑ii care se repetă pentru date diferite: tes
CD1 primalitate şi suma divizorilor unui număr şi conştientizează avantajul de a le rezolva modular.
• Ar fi util să definim o singură dată o prelucrare, de exemplu testul de primalitate, apoi să o solicităm
se execute de oricâte ori am avea nevoie?
CD2 • Ce avantaje ar aduce această modularizare?
248
Răspunsurile aşteptate ale elevilor:
C2.1 • Se repetă testul de primalitate şi suma divizorilor unui număr, algoritmi care trebuie
Cv aplica‑i o
b.
a şi apoi lui
• Implementareauneisinguresecven‑edecodpentrufiecarealgoritmşiutilizareaacesteialace
cele două date a şi b este evidentă
• Alte avantaje ale unei astfel de modularizări ar fi claritatea, reutilizarea ‑ codului pentru
se, simplificarea codului sursă, uşurin‑a rezolvării unor subprobleme mai simple.
unde:
– tip_rezultat – specifică tipul de date pe care îl returnează func‑ia şi poate fi: întreg
int, (de exemplu:
long, long long), real (de exemplu:float, double), char, pointer (adresă de memorie), void
(vid);
– lista_de_parametri formali – este o listă separată prin virgule, care con‑ine nume de parametri
‑ şi tipuri
le lor, declara‑i individual.
Ofunc‑iepoatesănuaibăparametriformali,cazîncarelistalorestevidă(parantezeleE suntnecesare,c
dacă nu există parametri). Această listă de parametri formali este interfa‑a func‑iei cu toate module
o vor utiliza (apela).
Dacărezultatulfunc‑ieiNUestevoid,eatrebuiesăcon‑inăinstruc‑ return iuni detip prin
expresie;
care se va returna o valoare de tipul precizat. D
Exemplu.
int test(int i,int k,float j) /*antet corect de func‑ie*/
int test(int i,k; float j) /*antet greşit – lista incorectă de parametri formali*/
ATEN,IE!
NU se poate defini o func‑ie în interiorul altei func‑ii!
NU se poate defini o func‑ie într‑o altă func‑ie, deci toate func‑iile au aceeaşi sferă de influen‑ă.
nume_functie(lista_parametrilor_actuali)
încâtoricemodificarearsuportaacestparametruînfunc‑ie,vafiafectatautomatoriginalul.La
din apelul func‑iei, valoarea ini‑ială a parametrului este modificată definitiv.
250
CD4 Exemplu:
C1.2 Func‑ie care interschimbă valorile a două variabile transmise ca parametri, valorile modificate a
C3.2 fiind furnizate tot
a şi b.prin
Evaluarea
Are loc pe parcurs, prin observarea sistematică a reac‑iilor elevilor şi a muncii ‑ lor independente, p
ANEXE
Şcoala: –
Disciplina: Informatică
Clasa: a IX‑a
Profilul: Matematică‑informatică, intensiv informatică
Data: –
Profesor: –
Unitatea de învăţare: Elaborarea algoritmilor de rezolvare a problemelor
‑ şi imp
rea lor într‑un limbaj de programare
Tema lecţiei: Structura repetitivă condi‑ionată anterior
Metode de evaluare:
– evaluare continuă pe parcursul lec‑iei;
– apreciere verbală;
– evaluare practică.
Resurse materiale:
– fişe de aplica‑ii;
– material bibliografic: culegere de probleme, manual pentru
[CŞ ], [K1 clasa
], a IX‑a,
[CLR ], [L ].
CD2, Elevii: răspund solicitărilor profesorului. Dacă răspunsurile aşteptate nu apar în scurt timp, profesorul
care să răspundă.
C4.2
60’ Dirijarea învăţării
Profesorul solicită elevilor să citească cerin‑ele de pe fişa de lucru. Sunt discutate la tablă câteva
P, Cv
pentru o mai bună în‑elegere a enun‑ului, eviden‑iindu‑se posibilită‑ile de optimizare. Profesorul
‑ pune î
mulând prin conversa‑ie participarea activă a elevilor la oră. Întrebări posibile:
n?
• Care este cel mai mic număr care are aceiaşi factori primi în descompunere ca şi
• Cum putem adapta algoritmul elementar de descompunere în factori primi pentru a determina ace
• Cum putem adapta algoritmul elementar de descompunere în factori primi pentru n este a verifica dacă n
liber de pătrate (nu con‑ine în descompunerea în factori primi niciun factor prim la putere pară)?
• Cum putem calcula numărul de divizori ai unui număr natural
n, folosindnenul
descompunerea în factori primi?
Esteunalgoritmmaieficientdecâtparcurgereadivizorilorpropriiposibilii ş numă
airarea
lui
n? celorcaresunt
• Cumcalculămnumăruldecifreîn
0 cares‑arterminaprodusulunornumerenaturalecitite?0 perândpânălaciti
• Putem aplica acelaşi algoritm pentru determinarea numărului den!, cifre
0 0 de
< nla<sfârş
109?itul lui
Dacă da, este eficient?
Asigurarea transferului E
CD2. Răspunsurile aşteptate ale elevilor:
– algoritmulelementardedescompunereînfactoriprimi(cuparcurgereaoptimizatăadivizorilorpr
la );
d←2
C3.1 cat timp d*d≤n executa
p←0
C4.1 cat timp n%d=0 executa
n←[n/d]
p←p+1
sfarsit cat timp
daca p>0 atunci A
prelucreaza(d,p)
sfarsit daca
d←d+1
sfarsit cat timp
ANEXE
M
daca n>1 atunci
prelucreaza(n,1)
sfarsit daca
– cel mai mic număr natural care are aceeaşi factori primi în descompunere n se ob‑ine făcând
ca şiprodusul‑ facto
C1.1
rilor primi distinc‑ n, ob‑
i aiinu‑
luii în urma descompunerii în factori primi a acestuia;
– pentru verificarea unui număr liber prelucrare(d,
de pătrate, p) se va înlocui cu verificarea dacă , p%2=0
C4.2
caz în care răspunsul este NU;
E, Cv
– pentru numărul divizorilor n se poate
lui aplica formula lui Euler bazată pe descompunerea în factori primi:
CD1. p1 p2 pk
dacăn=d 1 *d 2 *d k ,unde d1, d2,…dk suntfactoriiprimidindescompunerea n,iarp1, p2,…
lui pk
sunt puterile acestora, numărul divizorilor (p1+1)∙(p2+1)∙…∙(pk+1).
lui n este Acest algoritm are ‑ com
plexitatea T(n)
timp= O( ), întimpcealgoritmulcareparcurgedivizoriiproprii posibilipânăla
[n/2]
CD3.
are complexitatea T(n) = O(n).
– pentru determinarea numărului de cifre 0 de la sfârşitul produsului numerelor naturale ‑ citit
C2.1
25
Evaluarea
– pe parcurs, prin aprobare, dezaprobare verbală în urma răspunsurilor date de elevi la ‑ întrebări sau î
vării sistemative a munii independente;
– la începutul orei, profesorul negociază cu clasa câteva criterii de evaluare a algoritmilor prop
ANEXE
problemelor din fişa de lucru (corectitudinea algoritmului propus, eficien‑a, tratarea cazurilor
de redactare a algoritmului în pseudocod);
– fiecare echipă va prezenta la tablă una dintre problemele rezolvate, astfel încât‑ în final să fie prez
blemele propuse pe fişa de lucru;
C2.2 – evaluare reciprocă (sunt încurajate echipele care au rezolvat aceeaşi problemă cu‑ cea prezentată l
ze solu‑ia propusă de colegii lor);
– la finalul orei, cu note argumentate de rezultatele aplica‑iei realizate.
5’ Aprecierea activităţii
Profesorul face aprecieri privind performan‑ele elevilor, recomandări de recuperare celor care nu a
sarcinile obligatorii şi îi notează pe cei care au fost activi.
Profesorul poate cere elevilor să se autoevalueze.
4’ Tema pentru acasă
Profesorul propune tema pentru acasă, iar elevii notează în caiete.
Tema pentru acasă ar putea fi una sau două probleme asemănătoare cu cele de pe fişa de lucru şi, pentru cei ca
de performan‑e superioare, probleme date la olimpiade şi concursuri de informatică care utilizează a
fundamental sau al‑i algoritmi studia‑i.
ANEXE 257
Clasa:
Tema lecţiei: Structura repetitivă condi‑ionată anterior.
Fişă de lucru
Temă
Fien un număr natural nenul, 0 < n < 108. Se cere:
1 . Să se determine cel mai mare factor prim care apare în descompunerea n la o puterelui
nu există, în caz contrar.
impară, dacă există sau să se afişeze mesajul
2 . Săsedeterminecelmaimicnumărnaturalcucaretrebuie n astfelînmul‑
încâtitprodusul
ob‑inutsăfiepătratperfect.Săseafişezedescompunereaînfactoriprimiaace
câte o pereche ded forma
p (divizor exponent) pe o linie.
3 . (* ) Se citeşte x, număr natural,1 < x < 105. Să se verifice dacăx! se dividen.cu
Şcoala: –
Disciplina: Informatică
Clasa: a XI‑a
Profilul: Matematică‑informatică, intensiv informatică
Data: –
Profesor: –
Unitatea de învăţare: Grafuri neorientate şi arbori cu rădăcină
Tema lecţiei: Grafuri hamiltoniene, euleriene şi arbori cu rădăcină
Competenţe specifice:
(CS1.1)Transpunereauneiproblemedinlimbajnaturalînlimbajdegrafuri,fol
terminologia specifică.
(CS1.2) Analizarea unei probleme în scopul identificării datelor necesare
modalită‑ilor adecvate de structurare a datelor care intervin într‑o pr
258 ANEXE
CS1
( Descrierea
)3. unoralgoritmisimplideverificareaunorproprietăi ‑ specific
(CS1.4) Descrierea algoritmilor fundamentali de prelucrare a grafurilor şi
acestora într‑un limbaj de programare.
(CS1.8)Aplicareaînmodcreativaalgoritmilorfundamentaliînrezolvareaun
concrete.
Competenţe derivate:
La sfârşitul activită‑ii didactice, elevii vor fi capabili:
(CD1) Să recunoască grafurile hamiltoniene şi euleriene pe baza defini‑iilor şi a
necesare şi suficiente (la grafuri euleriene).
(CD2) Să construiască arborele par‑ial corespunzător parcurgerilor . BF şi DF
(CD3) Să reprezinte un arbore cu rădăcină în formă asecendentă şi descendentă.
(CD4Să ) recunoascăformedeaplicarealealgoritmilorfundamentalidiscuta‑
diverse.
C1. Competenţe cognitive
La sfârşitul lec‑iei, elevii vor fi capabili:
(C1.1): să analizeze o problemă, să descrie etapele algoritmului de rezolvare;
(C1.2): să identifice tipul grafurilor din enun‑;
(C1.3): să scrie în secven‑e de cod pentru parcurgerea DF, BF a unui graf dat.
C2. Competenţe afective
(C2.1): să argumenteze alegerile făcute în subiectele grilă date la test;
(C2.2): să se autoevalueze corect;
(C2.3): să dovedească curiozitate şi interes pentru no‑iunile utilizate.
C3. Competenţe psihomotorii
(C3.1): să utilizeze corect no‑iunile fundamentale de la grafuri neorientat
problemele propuse
C4. Competenţe acţionale
(C4.1): să afişeze muchiile selectate în arbore conform parcurgerii DF sau BF;
(C4.2): să se încadreze în timpul de lucru alocat testului;
(C4.3): să scrie în C++ func‑ii corecte care implementează cerin‑ele.
Stategii didactice
Principii didactice
– principiul legării teoriei de practică;
– principiul sistematizării şi continuită‑ii cunoştin‑elor;
– principiul accesibilită‑ii;
– principiul individualizării şi diferen‑ierii învă‑ării.
Referin‑e bibliografice:
[CŞ ], [MM ], [IP ], [K2 ].
ANEXE 259
Evaluarea
30’ Profesorul aplică testul, conceput pe cel pu‑in două numere, în mod
C3.1 echilibrat, aten‑ionează asupra baremului, a timpului M de lucru
C4.1 cerin‑eideautoevaluare.Acordă lamuriri elevilordacă a fost sol
C4.2 Întimpulîncaresupravegheazăeleviicaredautest,profesorulleu
C4.3 reşte comportamentul, monitorizându‑i totodată‑ în abordarea s
telor.
3’ E
Asigurarea feedbackului
La sfârşitul testului, după strângerea lucrărilor, profesorul p
succintrăspunsurilecorecte,pentrucaeleviisă‑şi‑ poatăapreciao
tiv propria presta‑ie.
2’ Tema pentru acasă
Profesorul propune tema pentru acasă, elevii notează în caiete.
Temapentruacasăarputeafiunasaudouăproblemeasemănătoarecu
cele de pe fişa de lucru şi, pentru cei capabili de performan‑
‑ e superi
oare, probleme date la olimpiade şi concursuri de informatică ca
utilizează acest algoritm fundamental sau al‑i algoritmi studi
260 ANEXE
Nume şi prenume
Data
Clasa
Barem
1. ,5 puncte.
2. 0,75 * 3 = 2, 5 puncte.
3. 0,75 * 3 = 2, 5 puncte.
4. 1 punct.
5. 2 puncte.
1 . 0,25 p. – declarare date; 0,25 p. – verificare adiacen‑ă; 0,25 p. – verificare nod nevizi‑
tat; 0,25 p. – afişare muchie; 0,25 p. – marcare nod vizitat; 0,25 p. – utilizare parcur ‑
gere DF.
void arb_DF(int x)
{
uz[x]=1;
for (int i=1; i<=n; i++)
if (a[x][i]==1 && uz[i]==0)
{
cout<<x<<’ ‘<<i<<’\n’;
DF(i);
}
}
2 .
a) [2,5], [8,4].
b) Din cele 10 muchii elimin
3 muchii. Vom ob‑ine un graf par‑ial
conex minimal care
va fi arbore şi va avea
8 – 1 = 7 muchii.
c) Subgrafulhamiltonian 5vârfuri
cu poatefiindusdemul‑ {1, imea
2, 3, 4, 7}.
d) Desena‑i arborele şi scrie‑i vectorul de „ta‑i” corespunzător arborelui
8 noduri, numerotate 1 la
de8,la
dat prin lista alăturată a descenden‑ilor
(fiilor)?
3.
a) Tata = (3, 6, 0, 1, 8, 1, 1, 3).
= 3.
b) Înal‑imea arborelui
c) Frunzele arborelui:
2, 4, 5, 7.
În această anexă furnizăm (ca modele) câteva seturi de subiecte date în decu
aniladiverseconcursurialeelevilorşiprofesorilor.Acoloundeafostpos
înso‑ite de baremele corespunzătoare de rezolvare, nu însă şi de rezolvările în
doarindicămmodalitateaîncares‑aconstruitunbarem,i ş nubaremulînsine.Grupar
asubiectelorafostfăcutăînfunc‑iedescopulşifinalitateaconcursurilor,du
A. Probleme date la bacalaureat şi olimpiade.
B. Probleme date la admiterea la Facultatea de Informatică, Universitat
Cuza”, Iaşi.
C. Subiectedatelaconcursuriledeob‑inereadefinitivatuluişi/saugrad
pentru profesorii din învă‑ământul preuniversitar (jude‑ele arondate
şi Inspectoratului Şcolar Jude‑ean Iaşi).
S‑anotatcua%brestulîmpăr‑iriinumăruluinaturalalanumărulnatural [c] ne
partea întreagă a numărului real c.
a) Scrie‑i valoarea afişată dacă se citesc, în această ordine, numerele
(6 p.) 7 şi 2.
b) Dacă pentru variabila k se citeşte numărul 5, scrie‑i cea mai mică şi cea mai m
valoarecarepotficititepentru astfel
variabila
încât,înnurmaexecutăriialgoritm
pentru fiecare dintre acestea, valoarea afişată să fie 3. (4 p.)
c) Scrie‑i în pseudocod un algoritm echivalent cu cel dat, înlocuindcât prima
timp...execută cu o structură repetitivă de tip
pentru...execut ă. (6 p.)
d) Scrie‑i programul C/C++ corespunzător algoritmului dat. (10 p.)
struct carte
{ char titlu[21];
float pret;
} c;
ANEXE 265
memorează titlul şi pre‑ul unei căr‑i. Expresia C/C++ a cărei valoare reprezintă pr
căr‑ii respective majorateste:
cu 50%
3 . Ungrafneorientatcu8noduri,numerotatedela1la[18,are ,2 ],muchiile
[1,6 ], [4, 6 ],
[3, 6 ], [6,5 ], [5,3 ], [3,4 ], [7,8 ], [8,2 ].Enumera‑i trei noduri care nu apar‑in nici un
ciclu în acest graf. (6 p.)
4 . Fiind date două şiruri de caractere a şi b, îl numim pe a prefix al lui b dacă a est
cubsaudacăbsepoateob‑inedinaprinalipirealadreaptaaunornoicaract
a şi b pot memora câte un şir cu cel mult 20 de caractere. Ştiind că variabila b
ini‑ializată cu un şir format dintr‑un număr par de caractere, scrie‑i‑ o secven
‑iuni în urma executării căreia variabila a să memoreze un prefix al lui b a cărui
să fie jumătate din lungimea lui b.
1 1 3 2
2 1 1 3
3 2 1 1
1 3 2 1
266 ANEXE
2. SubprogramulFestedefinitalăturat.Scrie‑
‑ void
iceseF(char
afişeac)
ză în urma apelului de mai jos. { if(c>=’a’)
F( ’d’) ; (6 p.) { cout<<c;
printf(“%c”,c);
F(c‑1);
}
}
4 . Fişierul bac.txt con‑ine un şir de cel mult un milion de numere naturale din i
[0, 02 1 ], separate prin câte un spa‑iu. Se cere să se determine toate perec
formate din termeni ai şirului aflat în fiş – x Fier,
2), astfel
x şi y (y încât să nu existe
niciuntermenalşiruluicaresăapar‑inăintervalului(x,y).Numereledinfieca
sunt afişate pe câte o linie a ecranului, în ordine strict crescătoare
spa‑iu,iardacănuexistănicioastfeldepereche,seafişeazăpenu ecran mesajul
exista .
Pentru determinarea numerelor cerute utiliza‑i un algoritm eficient
al timpului de executare.
1. d 4 p.
2. a) Răspuns corect: 2 6 p.
b) Răspuns corect: 125, 624 4 p. Se acordă câte 2 p. pentru fiecare
‑ valoa
re conform cerin‑ei.
c) Pentru algoritm pseudocod corect 6 p. (*) Se acordă numai 2 p. dacă algorit‑
– echivalen‑aprelucrăriirealizate,5 p. mul are o structură repetitivă de t
conform cerin‑ei (*) indicat, principial corectă, dar nu e
– corectitudinea globală ‑ a1 p.algorit
echivalent cu cel dat. Se va‑ puncta o
1
mului ceformăcorectădestructurărepetit
conform cerin‑ei.
d) Pentru program corect 10 p. (*Se ) acordănumaip.
2 dacădoaruna
– declararea tuturor variabilelor
1 p. dintre instruc‑iuni este corectă.
– citire corectă 1 p.
– afişare corectă 1 p.
– instruc‑iune de decizie corectă
2 p.
– instruc‑iunirepetitive3 p.corecte)*(
– atribuiri corecte 1 p.
– corectitudine globală‑ a 1 p. progra
1
mului
268 ANEXE
1. a 4 p.
2. b 4 p.
3. Pentru ră spuns corect 6 p. Se acordă câte 2 p. pentru fiecare nod
enumeratconformcerin‑ei(oricaredin
nodurile 1, 2 7, 8).
4. Pentru rezolvare corectă 6 p. Se acordă câte 2 p. pentru fiecare aspect
al cerin‑ei (ob‑inerea unui prefix
‑ al şiru
lui, lungimea prefixului, memorarea în
variabila indicată).
5. Pentru program corect 10 p. (*) Se acordă câte 2 p. pentru fiecare
– declararea variabilei de tip 1 p. tablou
aspectalcerin‑ei(plasarea ‑ conformc
– citirea elementelor aflate 1 p. pe prima
rin‑ ei a primului element al unei li
linie 6 p. plasarea conform cerin‑ei a celorla
– memorareavalorilorelementelor 1 p. con
elemente ale unei linii, ob‑‑ inerea t
form cerin‑ei (*) 1 p. ror elementelor tabloului).
– afişarea unui tablou bidimensional
– declarareai ş citireavariabilelorsimple,
1
corectitudineglobalăaprogramului
1. b 4 p.
2. Ră spuns corect: dcba 6 p. Se acordă numai 3p. pentru răspuns
par‑ial corect, care include secven
dcb, sau pentru şirul abcd.
3. Pentru subprogram corect 10 p. (*) Se acordă câte 1p. pentru fiecare
– antetul subprogram (*) 2 p. aspect al antetului structură( , de
– determinareanumăruluicerut 6 p. rarea
(* ) parametrului)conformcerin‑ei.
– instruc‑ iunea/ instruc‑ iunile1 p. (*Se
) acordă decâte2p.pentrufiecare
retur
nare a rezultatului aspect al cerin‑ei (termenul şirul
– declararea tuturor variabilelor
‑ 1 p. termenul lo impar, numărul de–ordine
cale, corectitudinea globală a sub inclusiv cazul în care n < 3).
1
programului
4. a) Pentru ră spuns corect 4 p. (*) Se acordă punctajul chiar dacă
– coeren‑a explicării metodei2 p.(*) metoda aleasă nu este eficientă.
– justificarea unor elemente‑ 2 p. de efi
cien‑ă
b) Pentru program corect 6 p. (*) Se acordă punctajul chiar dacă
– opera‑iicufişiere:declarare,
‑ 1 p. presolu‑ia propusă nu prezintă elemente
gătire în vederea citirii, citire de eficien‑
din ă.
fişier
ANEXE 269
Un
.2 graforientatcuvârfuri,
5 numerotatedelala 1 este
,5 repre
zentat alăturat. Numărul maxim de arce care se pot elimina,
astfel încât graful par‑ial ob‑inut să fie tare
(4 p.) conex este:
a) 2; b) 3; c) 4; d) 5.
ANEXE 1 72
3 . Subprogramul DivImpar are doi parametri, a şi b, prin care primeşte două numere ‑ na
5
rale din intervalul [1,0 1 ]. Subprogramul returnează cel mai mare divizor comun imp
al numerelor a şi b.
Scrie‑i defini‑ia completă a subprogramului.
Exemplu: dacă a = 30 şi b = 60, subprogramul returnează valoarea 15. (10p.)
4 . Fişierul date.in con‑ine un şir de cel mult un milion de numere naturale din i
9
[00, 1 ], separate prin câte un spa‑iu. Şirul are cel pu‑in doi termeni pari şi ce
termeni impari. Se cere să se afişeze pe ecran DAmesajul
dacă şirul aflat în fişier are un
subşir ordonat crescător, format din to‑i termenii pari ai săi, şi un subş ‑ ir ord
cător, format din to‑i termenii impari ai săi. Dacă nu există două astfel de su
programul afişează pe ecran mesajul NU. Pentru verificarea proprietă‑ii cerute uti
algoritm eficient din punctul de vedere al timpului de executare şi al m
7 2 5 2 4 3 8
se afişează pe ecran mesajul
DA
iar dacă fişierul con‑ine numerele
5 2 7 2 4 3 8
se afişează pe ecran mesajul
NU
1. d 4 p.
2. a) Ră spuns corect: 2 6 p.
b) Ră spuns corect: 543 4 p.
c) Pentru algoritm pseudocod corect 6 p. (*) Se acordă numai 2 p. dacă algo ‑
– echivalen‑aprelucrăriirealizate,
‑ 5 p. ritmulcon are o structură repetitiv ‑
form cerin‑ei (*) formcerin‑ei,principialcorectă,dar
1
– corectitudineaglobalăaalgoritmului
1 p. nu este echivalent cu cel dat. Se v
puncta orice formă corectă de ‑ struc
turărepetitivăconformcerin‑ei.
1. b 4 p.
2. c 4 p.
3. Pentru rezolvare corectă 6 p. Se acordă câte 2 p. pentru fiecare
proprietatealan‑ului(extremitat
‑
‑ialăextremitate
, finalălan‑
, ‑ elemen
tar) conform cerin‑ei.
4. Pentru rezolvare corectă 6 p. (*) Se acordă numai 2 p. dacă doar
– acces corect la un element al1 p.tabloului una dintre proprietă ‑ ile tablo
– atribuireavalorilorindicate (alternan‑a valorilor binare în ca
5 p. elementelor
tabloului (*) unei linii/coloane, toate elemen
suport) este conform cerin‑ei.
5. Pentru program corect 10 p. (*Se ) acordăcâtep.1 pentrufiecare
– declararea corectă a unei variabile1 p. aspect
careal cerin‑ei (identificarea
‑
să memoreze un şir de caractere meilitereaunuicuvânt,identific
– citirea şirului 1 p. unei majuscule, ob‑inerea unui şir
– accesul la un caracter al şirului 1 p. construit cu prima literă a uno
– construirea şirului conform cerin‑ 5 p. cuvinte,
ei (*) caracteresuport ‑ pentru
– afişarea datelor 1 p. nim, construirea în memorie).
– declararea variabilelor simple,‑ 1 p. corecti
1
tudinea globală a programului
1. a 4 p.
2. Ră spuns corect: 157864 6 p. Se acordă numai 3 p. pentru răspuns
par‑ialcorect,careincludesecven‑a864.
3. Pentru subprogram corect 10 p. (*) Se acordă câte 1 p. pentru fiecare
– antetul subprogramului2 p.(*) aspect al antetului (structură, dec
– determinarea numărului6 p. cerut parametrideintrare)conformcerin‑ei
(* ) (* ) Se acordă câte 2 p. pentru fiecare
– instruc‑ iunea de returnare 1 p. proprietate
a a numărului cerut (div
rezul
tatului comun, impar, maxim).
– declararea tuturor variabilelor1 p.
locale, corectitudine globală a
1
subprogramului
4. a) Pentru ră spuns corect 4 p. Se (*) acordăpunctajulchiardacămetoda
– coeren‑aexplicăriimetodei 2 p. (*) aleasă nu este eficientă.
2x1 p.
– explicarea unor elemente de
eficien‑ă
b) Pentru program corect 6 p. Se
(*) acordăpunctajulchiardacăsolu‑ia
– opera‑ii cu fişiere: declarare,
1 p. propusă nu prezintă elemente‑ de efici
pregătire în vederea citirii,
‑ en‑ă.
ci
tire din fişier
ANEXE 275
– verificareaproprietă‑iiindicate
3 p. (* ) Se acordă numai 2 p. dacă s‑a veri ‑
pentru subşiruri (*, *) ficatproprietateacerutădoarpentr
– afişareamesajuluiconform ‑ 1 p. ce dintre subşiruri sau dacă algoritmul e
rin‑ei principial corect, dar nu conduce
– utilizarea unui algoritm ‑ rezultatul cerut pentru orice set
1 p. efici
ent (* ) de intrare.
(* ) Se acordă punctajul numai pentru
unalgoritmliniar(decomplexitateO(n)),
care utilizează eficient memoria.
O solu‑ie posibilă parcurge cel mult o
dată fiş ierul, memorând atât valoa
ultimuluitermenpar,precumşipeceaa
ultimuluitermenimparşicomparându‑l
dupăcaz,cuvaloareatermenuluicuren
1. Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate
Cerinţe
Să se scrie un program care, citind numerele N, K, S şi cele N elemente din şir, rezo
cerin‑ele:
1. Determină numărul secven‑elor care se vor elimina respectând condi‑ia di
2. Considerând că în şirul citit nu sunt posibile eliminări de secven‑e confo
enun‑, programul determină numărul de elemente
i
din şir cua proprietatea următoare
ştergerea luii
conduce
a la ob‑inerea unui şir în care se mai poate elimina‑ cel pu
ven‑ă de K elemente cu sumă strict mai mare ca S.
Date de intrare
secv.incon‑inepeprimalinieunnumărnaturalP;numărulPpoat
Fişieruldeintrare
aveadoarvaloarea1sauvaloarea2.Adoualiniecon‑ine,înaceastăordine,separ
un spa‑iu, numerele N, K şi S. A treia linie con‑ine, în ordine, elementele şirului, de
prin câte un spa‑iu.
Date de ieşire
Dacă valoarea lui P este 1, se va rezolva numai cerin‑a 1. În acest caz, fişierul de
secv.outvacon‑inepeprimalinieunnumărnaturalreprezentândnumărulsecven‑elo
Dacă valoarea lui P este 2, se va rezolva numai cerin‑a 2. În acest caz, fişierul de
secv.outvacon‑inepeprimalinieunnumărnaturalreprezentândnumărulele
276 ANEXE
Restricţii şi precizări
0 < N ≤ 1 000 000 şi K ≤ N
0 < S ≤ 1 000 000 000
0 ≤ a1, a2,...aN ≤ 1 000
Exemplu
Descrierea soluţiei
Autor: prof. Dana Lica, Centrul Jude‑ean de Excelen‑ă Prahova
FieşiruldenumereA.PentruP=1,solu‑ieO(N).Vomconstruisolu‑iaiterândprinl
de elemente. La fiecare pas vom men‑ine o listă de valori încă neeliminate, la ca
lafinalelementulcurentdinitera‑ie.Dacăprinadăugareaacestuielement,u
ale listei au suma strict mai mare ca S, atunci ştergem ultimele K elemente şi
parcurgerea. Ştergerea se va realiza prin decrementarea cu K elemente a lun
VerificareasumeiultimelorKelementesepoaterealizaeficientfolosi
par‑iale ale listei men‑ionate anterior. Astfel, se va construi vectorul B
ANEX 27
pe pozi‑ia i re‑ine suma primelor i elemente citite. În felul acesta, suma din
y se ob‑ine ca B
[y ] – B [x – 1 ].
Pentru P = 2, solu‑ie O(N). Pentru fiecare pozi‑ie X, vom determina dacă ştergerea e
generează o subsecven‑ă de lungime K de sumă strict mai mare ca S. Acest lucru‑ est
valent cu verificarea existen‑ei unei pozi‑ii Y astfel încât:
(1) ( ∑A[i]Y + Ki = Y ) − A[X] > S şi
( 2 ) Y E X E Y + K
Cerinţă
Să se determine un grup de k numere din şir care au proprietatea că cel mai ma
comun al lor este maxim. Dacă există mai multe astfel de grupuri, se cere acel gr
care suma elementelor este maximă.
Date de intrare
Fişierul
cmmdc.in con‑ine pe prima linie numerele naturale n şi k separate pr
Pe linia a doua se găsesc numerele1 naturale
, a 2,. a n, separate
a prin câte un spa‑iu.
Date de ieşire
Fişierul cmmdc.out con‑ine pe prima linie un număr natural reprezentând cel
divizor comun a exact k numere din şir, maxim posibil. Pe linia a doua, separate pr
spa‑iu şiordonate descrescător, se află cele k numere din şir care dau cel mai mare diviz
comun maxim.
Restricţii şi precizări
• 1 ≤ n ≤ 1 000 000
• 2 ≤ k ≤ 100 000
• k ≤ n
• 1 ≤ ai ≤ 1 000 000, i = 1..n
• Valorile din şir se pot repeta.
278 ANEXE
Exemplu
Descrierea soluţiei
Autori:prof.StelianCiurea,Liceul„DomnulTudor”,Drobeta‑TurnuSev
prof. Dan Pracsiu, Liceul „Ştefan Procopiu”, Vaslui
Complexitate
O(n) pentru construc‑ia vectorului v. O([max(
max(a)
a)*log
]) pentru determinarea
‑ rezult
tului (unde max(a) e maximul din şirul a).
Expresia de mai sus este aproximarea pentru:
Cerinţe
Fiind dată o mul‑ime S formată din N şiruri de caractere, se cere:
1. Săsedeterminecelmailungşir.Dacăsuntmaimulteşiruriavândaceeaşilungime
se cere cel mai mic din punct de vedere lexicografic.
2 . Să se determine toateinteresante
şirurile din mul‑imea S.
Date de intrare
interesant.in con‑ine pe prima linie două numere naturale pi
Fişierul de intrare ş N,
despăr‑ite prin spa‑iu. Pentru toate testele de intrare, numărul p poate av
sau valoarea 2. Pe următoarele N linii, se găsesc şirurile de caractere, câte un
Date de ieşire
Dacă valoarea lui p este 1, se va rezolva numai cerin‑a 1.
În acest caz, în fişierul deinteresant.out
ieşire se va scrie cel mai lung şir dintre
cele citite. Dacă există mai multe şiruri de aceeaşi lungime, se va scrie cel mai mi
de vedere lexicografic.
Dacă valoarea lui p este 2, se va rezolva numai cerin‑a 2.
În acest caz, fişierul deinteresant.out
ieşire va con‑ine pe prima linie o valoare K
ce reprezintă numărul deinteresante,
şiruri iar pe următoarele K linii, şirurile
interesante în
ordinea în care apar în fişierul de intrare.
Restricţii şi precizări
– 2 ≤ N ≤ 200;
– lungimea unui şir va fi cuprinsă între 1 şi 50 ;
– un subşir al şirului de caractere 0
C1 C2… C kCse defineşte ca fiind o succesiune
‑ de car
tere i1
Ci2 C i3… C ik, unde0 ≤ i1 < i2 < i3 < … < ik ≤ k;
– fişierul de intrarenu conţine şiruri identice.
– pentrurezolvareacorectăaprimeicerin‑eseacordă2de 0 puncte,iarpentruc
se acordă 80 de puncte.
280 ANEXE
Exemple
Descrierea soluţiei
Autor: Nicu Vlad‑Lauren‑iu, Liceul Teoretic „Mihail Kogălniceanu”, Va
Test la informatică
Limbajul C/C++
Se acordă0 puncte
1 din oficiu. Timpul efectiv de lucru este de 3 ore.
2 . Seconsiderăalgoritmulalăturat, descris
citeşte n în(număr natural)
pseudocod. x ← n % 0; 1 m ← 1; s ←1
a) Scrie‑ivaloareaafişatădealgoritm dacă n > 9 execută
cât timp
numărul n citit este1.352 (6 p.) ┌ n ← [n / 10]; y ← n % 10
│ dacă (y‑x)*m < 0 atunci
b) Care este cel mai mic număr natural
formatdinpatrucifredistincte │ ┌care ă m > 0 atunci m ← -1
dacpoate
ficititînvarabilanastfel │ └ altfel
‑ încâtalgorit s ← 0
mul să afişeze valoarea 1? (6 p.) │ x ← y
└ scrie s
c) Scrie‑i o secven‑ă de instruc‑iuni care
să folosească doar opera‑ii de adunare
şi scădere şi care să fie echivalentă cu
instruc‑iunea ← [nn
0/ 1 ]. (4 p.)
d) Scrie‑iprogramulC/C+corespunză
+ ‑
tor algoritmului alăturat. (10 p.)
2 . Fieungrafneorientatcumul‑imea{1nodurilor
2, 1 . 5 0 }.Douănoduriişijsuntunite
printr‑omuchiedacăşinumaidacămax(i,j)=2*min(i,j)saumax(i,j)=2*min(i,j)+1.
Care este numărul de muchii ale acestui graf? (6 p.)
a)15; 20 b)16; 20 c)14; 20 d)14x2(20 15)/20
4 .
Fie mul‑imea S = {1, 2. n }, unde n≥ 4 este un număr natural multiplu de 4.
Scrie‑i un program C/C++ care:
a) Citeş te de la tastatură ≥ 4 , precum
numă rulş inun numă r natural p≤( 1 p ≤ n/ 2 ) .
În cazul în care condi‑iile impuse nu sunt îndeplinite, va fi afişat mes
„date
invalide” . (2 p.)
b) Parti‑ ionează mul‑ imea dată S în două submul‑ imi disjuncte∪AB,ş i B ( S = A
A ∩ B = ∅), astfel încât suma elementelor din A să fie egală cu suma eleme
din B. (3 p.)
c) Elimină elementul p din mul‑imea S şi creează o nouă parti‑ie A’, B’ (eventual, ‑ mo
ficând parti‑ia creată la punctul b), astfel ∪ B’, A’
\ {p} = A’ încât S ∩ B’ = ∅ şi
suma elementelor din A’ este egală cu suma elementelor din B’. În cazul î
lucru nu este posibil, va fi afişat mesajul
„partiţie inexistentă” . (5 p.)
Exemplu:Pentrun=S,8 = {18,7 6 5,4 3 2, },parti‑iaini‑ialăeste {18,6 3 A= },
B = {2, 4, 5, 7 }. Dacă p = 1 sau p = 3, va afişa „partiţie inexistentă” . Dacă
p = 2, parti‑ia modificată este A’ {3, 6 8 = }, B’ = {1, 4 5, 7 }. Dacă p = 4, parti‑ia
modificată este{2A’, 6 8 = }, B’ = {1, 3 5, 7 }.
ANEXE 283
Test la informatică
Limbajul Pascal
Se acordă0 puncte
1 din oficiu. Timpul efectiv de lucru este de 3 ore.
2. Seconsiderăalgoritmulalăturat, descris
citesţe n în(număr natural)
pseudocod. x ← n % 10; m ← 1; s ← 1
cât timp n > 9 execută
a) Scrie‑ivaloareaafişatădealgoritmdacă
┌n ← [n / 10]; y ← n % 10
numărul n citit este1.352 (6 p.)
│dacă (y‑x)*m < 0 atunci
b. Care este cel mai mic număr natural │┌dacă m > 0 atunci m ← 1
formatdinpatrucifredistincte carepoate
│└altfel s ← 0
ficititînvarabilanastfel ‑ încât
└x ← yalgorit
mul să afişeze valoarea 1? (6 p.) scrie s
c) Scrie‑i o secven‑ă de instruc‑iuni care
să folosească doar opera‑ii de adunare
şi scădere şi care să fie echivalentă cu
instruc‑iunea ← [n10 / n ]. (4 p.)
d) Scrie‑iprogramulPascalcorespunzător
algoritmuluialăturat. (10 p.)
1. a 4 p.
2. a) Valoarea returnată este 0 6 p.
1. descrierea calculului 4 p.
. 2 ob‑inerea rezultatului corect 2 p.
b) Cel mai mic număr natural conform cu cerinţa este 6 p.
1230. 2 p.
. 1 identificareaă‑ii propriet
demunte 2 p.
2. utilizarea a patru cifre distincte 2 p.
3. ob‑inerea valorii 1230
c) Pentru algoritm corect 4 p.
. 1 folosirea unei structuri câtrepetitive
timp sau 2 p.
repetă 2 p.
2. scrierea corect ă a secven‑ei
d) Pentru program corect 10 p.
. 1 structuraă acorect programului 2 p.
2. citirea corect
ă a parametrului n 1 p.
3. instruc ‑iune repetitivă corectă 3 p.
4. instruc ‑iuni de decizie corecte 3 p.
. 5 afişareacorectăavalorii s 1 p.
28 ANEXE
1. c 4 p.
2. Răspuns corect c 6 p.
1. stabilirea proprietă‑ii de arbore 2 p.
2. un arbore cu n noduri–are
1 muchii
n 2 p.
3. ob‑inerea valorii14 20 2 p.
3. Pentru soluţie corectă 10 p.
1. citirea datelor de intrare 1 p.
2. alocarea memoriei 1 p.
3. lucrul cu şiruri de caractere 1 p.
convert_char
4. structura corectă 1 p.
convert_string
5. structura corectă 1 p.
6. func‑ia(secven‑adecod)caredeterminăcea
3 p. mai
mare submatrice având col‑ul stânga sus la o
anumită pozi‑ie a matricii
7. parcurgerea pozi‑iilor matricii date
1 p.
submatrix_size
8. structura corectă 1 p.
4. Pentru soluţie corectă 10 p.
1. citirea datelor de intrare 1 p.
2. validarea datelor de intrare 1 p.
3. observa‑ia că există un număr par de perechi
1 p. de
forma (k, (n + 1) – k)
4. crearea corectă a parti‑iei ini‑iale,2 p.mul‑imea A
având elemente impare pe primele n/4 pozi‑ii,
iar B elemente pare pe primele n/4 pozi‑ii
5. observa‑ia că dacă p este număr impar,
\ {pS} 1 p.
nu poate fi parti‑ionată
∈ B,p suma(B)
6. observa‑ia că dacă p este par, 1 p.
scade cu p/2
7. observa‑ia că dacă p/2 este impar, p/∈2 A, 1 p.
parti‑iamodificatăeste \ {A’
p/2 =A},B’ = B
∪ {p/2 }
8. observa‑ia că dacă p/2 este par, 1 + p/2 ∈ A, 1 p.
A’ = A \ {1 + p/2 } \ {1 } ∪ {2}, B’ = B ∪
{1 + p/2 } ∪ {1 } \ {2}
9. crearea corectă a parti‑iilor A’,B’ 1 p.
ANEXE 289
1. b 4 p.
Răspuns corect: 74 6 p.
2. 1. observarea faptului că func‑iile F1 şi F2 sunt
1 p.
mutual recursive
2. calculul recursiv (lista tuturor
‑ 3 p.
apelurilor re
cursive)
3. ob‑inerea rezultatului corect 2 p.
3. a) Pentru răspuns corect – 2 0 1 0 5 p.
0 01 111 0 1 ‑2 5 p.
b) Pentru soluţie corectă 5 p.
1. parcurgerea tuturor‑ iilor
pozi
matricii 1 p.
2. parcurgerea tuturor vecinilor ‑ ia pentru
2 p. pozi
curentă
3. determinarea corectă aă faptului
pozi‑ ia cu‑ c 2 p.
rentă este periculoasă sau nu
c) Pentru soluţie corectă 10 p.
1. identificarea ş i tratarea corectă a cazului ‑ 2 p. par
ticular în care (l, c)‑ ine cono mină 2 p.
2. identificarea ş i tratarea corectă a cazului ‑ par
ticular în care (l, c) nu ‑ ine
conminăş i este
periculoasă 3 p.
3. găsirea zonei sigure printr‑un algoritm de tip
flood‑fill ( bfs, dfs sau ad‑hoc) 1 p.
4. identificarea ‑ iilor
poziadiacente zonei 1 p. sigure
5. calcululnumăruluidevecini ‑ incare
minecon
pentrufiecare ‑ ie
pozi
dinzonaactivăsigură
( +
pozi‑ ii adiacente zonei sigure) 1 p.
6. determinarea rezultatului corect pentru cazul
general
290 ANEX
Test la informatică
Limbajul C/C++
Se acordă0 puncte
1 din oficiu. Timpul efectiv de lucru este de 3 ore.
2. Seconsiderăalgoritmulalăturat, citeşte
descrisn
în pseudocod. ( numă r natural nenul)
a) Scrie‑i valoarea afişată de algoritm x ← 1
dacănumărulncititeste 1. 9
(6 p.) y ←2
cât timp x ≠ 0 şi y*y <= n execută
b) Care sunt cea mai mică, respectiv
┌x ← n % y
ceamaimarevaloarepecareopoate
└y ← y + 1
luanînintervalul
[103 , ]astfelîncât scrie y‑1
algoritmulsăafişezevaloarea (6 p.)1 1
c) Înlocui‑iinstruc‑← iunea
ny% cu x
o secven‑ă echivalentă de instruc‑ ‑ i
uni care foloseşte doar adună ‑ ri/scă
deri repetate. (4 p.)
d) Scrie‑iprogramulC/C+corespun
+
zătoralgoritmuluială(10 turat.
p.)
UnpuzzleSUDOKUesteomatrice×9 completată
9 par‑ialcunumerenaturaledelala
1 .9
MaijosesteunexempludepuzzleSUDOKU.Osolu‑ieaunuiastfeldepuzzleesteo
SUDOKU care coincide cu puzzle‑ul pe pozi‑iile precompletate.
Test la INFORMATICA
Limbajul Pascal
Se acordă0 puncte
1 din oficiu. Timpul efectiv de lucru este de 3 ore.
c) Înlocui‑i instruc‑←iunea
n modxy cu o sec‑
ven‑echivalentă
ă deinstruc‑iunicarefoloseşte
doaradunări/scăderirepetate. (4 p.)
d) Scrie‑i programul Pascal corespunză ‑ tor algo
ritmului ală turat. (10 p.)
1. d 4 p.
2. a) Valoarea returnată este 7 6 p.
1. descrierea calculului 4 p.
2. ob‑inerea rezultatului corect 2 p.
b) Cea mai mică valoare a lui n este1 2 3 p.
Cea mai mare valoarena este
lui
253 3 p.
c) Pentru algoritm corect 4 p.
1. folosirea unei structuri repetitive cât timp sau 2 p.
repetă 2 p.
2. scrierea corectă a algoritmului
d) Pentru program corect 10 p.
1. structura corectă a programului 3 p.
2. citirea corectă a parametrului n 1 p.
3. instruc‑iunea repetitivă corectă 5 p.
4. afişarea expresiei y – 1 1 p.
1. a) 4 p.
2. b) 6 p.
3. a) Pentru soluţie corectă 6 p.
1. citirea datelor de intrare 1 p.
2. calculul matricii produs B 2 p.
3. verificarea proprietăţii ParImpar 3 p.
4. b) Pentru răspuns corect 4 p.
a) Pentru soluţie corectă 2 p.
b) Pentru soluţie corectă 8 p.
. 1 creareacorectăapermutării înîn
care
cazul
există 5 p.
. 2 descrierea cazului în care nu există solu‑ 3 p. ie
296 ANEXE
1. b 4 p.
Răspuns corect:0 1 6 p.
2. .1observareafaptuluicăfunc‑iaCesterecursivă
1 p.
2. calculul lui C(5, 3) 3 p.
3. ob‑inerea rezultatului corect 2 p.
3. a) Pentru răspuns corect 4 p.
Exemple:
• Proiecta‑i clasele necesare pentru lucrul cu cercuri, fiecare cerc fii
pozi‑ia centrului şi lungimea razei. Se vor implementa următoarele metode
a) Ini‑ializarea unui cerc.
b) Calculul ariei unui cerc.
c) Calculul lungimii unui cerc.
d) Mutarea unui cerc dat într‑o nouă pozi‑ie.
• Proiecta‑i structurile de date necesare lucrului cu polinoame. Implem
a) Citirea unui polinom.
b) Afişarea unui polinom.
c) Adunarea a două polinoame.
d) Înmul‑irea a două polinoame.
• Reprezentarea grafurilor neorientate cu ajutorul matricilor. Ope
implementat:
a) Ini‑ializarea unui graf.
b) Ob‑inerea grafului complementar unui graf dat.
c) Calculul gradului unui nod dintr‑un graf dat.
d) Calculul lungimii drumului minim dintre două noduri ale unui graf dat.
• Genera‑i toate permutările unei liste date.
două ore), trebuind să fie tratate corect atât din punct de vedere ştiin‑if
într‑unul din limbajele C, C++ sau Pascal), cât şi din punct de vedere metodic. Mo
de construire a
baremului complet rămâne, în mare, cea descrisă mai sus, inclusiv puncte
acordate din oficiu, elementele de metodică care contează şi ponderea ‑ metod
‑inutul legat de specialitate. Dintre subiectele care s‑au dat în ultimi
amintim:
• Să se proiecteze o lec‑ ie care are ca scop predareaalgoritmi
conceptelor
iterativi şi de
recursivi. Ca exemplificare practică, se va considera calculul elementelor
)
n nF0
ş
definit prin:
x0 = 0, x1 = 2, xn = xn‑1 · 3 + xn‑2 · 2 + 4.
x3 + 4 · x2 + 6 · x – 5, , x ≥ 0
f(x) =
x4 + 3 · x · sin(x) + 9 , x < 0
Observaţie
La examenele de titularizare, bibliografia a fost aproximativ aceeaşi cu cea
de grad şi definitivat, cu subiecte axate mai pu‑in pe didactică/metodică şi ma
îndemânările practice legate de informatică. Cum întreaga bibliografie fixa
de resort datează aproximativ din anul 20 (!), credem că ea trebuie urgent actual
factorii în drept.
Anexa 3
[AHU ] V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addison-Wesley,
Reading, 1983.
[An] M. Anastasiei, Metodica predării matematicii, curs litografiat, Editura Universită‑ii „
Cuza”, Iaşi, 1985.
[At] A. Atanasiu, „Algoritmi. Reprezentare şi clasificare”, Gazeta de Informatică, nr. 1-2,/ 9
1- 3 / 9 2 .
[Ba] D. Badea, „Didactica la coala ş competen‑elor – dominante i ş exemplificări ale sce
didactic”,Revista în de Pedagogie,anulLIX,nr.,4Bucureşti,. 11 02
[Bac1]J.Backus, Can Programming Be Liberated from the von Neumann Style? A Functional Style
and Its Algebra of Programming, CACM, 1978.
[Bac2] J. Backus, The History of FORTRAN I, II and III, ACM Sigplan Notices, 1978.
[Bare ] H.P. Barendregt, The Lambda Calculus: Its Sintax and Semantics, North Holland, 1985.
[Barr ] D. Barron, Comparative Programming Languages, American Elsevier, 1968.
[Bî] C.Bîrzea,„Definireai ş clasificareacompeten‑ elor”,
Revista în
de Pedagogienr.Bucureş
,)3( 85 ti,
. 10 02
[Bl ]M.Blum, A Machine-independent Theory of the Complexity of Recursive Functions,JACM,.6791
[BJ] C. Bohm, G. Jacopini, Flow Diagrams, Turing Machines and Languages with Only Two
Formation Rules, CACM, 196 .
[CMS ] A. Catană, M. Săcuiu, O. Stănăşilă, Metodica predării analizei matematice, Editura
Didactică şi Pedagogică, Bucureşti, 1983.
[CS] C. Cazacu, V. Slabu, Logică matematică, Editura „Ştefan Lupaşcu”, Iaşi, 19 .
[CCŞ ] G. Ciucu, V. Craiu, A. Ştefănescu, Statistică matematică şi cercetări operaţionale, Editura
Didactică şi Pedagogică, Bucureşti, 1974.
[CŞ ]E.Cerchez,M.Şerban, Programarea în limbajul C/C++ pentru liceu,EdituraPolirom,Iaşi,
20 5 (Vol. 1, 2), Iaşi, 20 6 (Vol. 3).
[CTT ] E. Ciurea, S. Tăbârcă, T. Tăbârcă, Algoritmi. Metode de elaborare, Editura Universită‑ii
„Transilvania”, Braşov, 19 7.
[CLR ] T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introducere în algoritmi, Editura Computer
Libris Agora, Bucureşti, 20 .
[Cri ] S. Cristea, Fundamentele pedagogice ale reformei învăţământului, Editura Didactică şi
Pedagogică RA, Bucureşti, 19 4.
[Cro ]C.Croitoru, Tehnici de bază în optimizarea combinatorie,EdituraUniversită‑ii„Al.I.Cuza”,
Iaşi, 19 2.
[D1 ]P.J.Denning(ed.)„A , DebateonTeachingComputerScience”, Communications of the ACM,
vol. 32, nr. 12, 198 .
304 BI LIOGRAF E
[D2 ] P.J. Denning (ed.), „Educating a New Engineer”, Communications of the ACM, vol. 35,
nr. 12, 19 2.
[DM ] P.J. Denning, R.M. Metcalfe, Beyond Calculation. The Next Fifty Years of Computation,
Springer Verlag, 19 7.
[DCTPCN ] A. Dima, V. Ca‑arschi, C. Tănase, I. Porof, S. Ca‑arschi, M.I. Ni‑u, Educaţie tehno-
logică (proiectări didactice, clasele IX-X), Editura Performantica, Iaşi, 20 3.
[DC ]W.S.Dorn,D.D.McCracken, Metode numerice cu programe în FORTRAN,EdituraTehnică,
Bucureşti, 1976.
[Fr] F. Frumos, Didactica: Fundamente şi dezvoltări cognitive, Iaşi: Editura Polirom, 2008.
[Hoa] C.A.R. Hoare, Communicating Sequential Processes, Prentice Hall, 1985.
[Hor] E. Horowitz, Fundamentals of Programming Languages, Computer Science Press, 1984.
[HS ] E. Horowitz, S. Sahni, Fundamentals of Data Structures of Computer Algorithms, Computer
Science Press, 1978.
[IP ] C. Ivaşc, M. Prună, Bazele informaticii (grafuri şi elemente de combinatorică). Proiect de
manual pentru clasa a X-a, profil informatică, Editura Petrion, Bucureşti, 19 5.
[J, ] T. Jucan, F.L. ,iplea, Reţele Petri. Teorie şi practică, Editura Academiei Române, Bucureşti,
19 .
[K ]O.Kallenberg,Foundations of Modern Probability,SpringerSeriesinStatistics,SpringerVer
Berlin, 20
[K1 ]D.E.Knuth, Tratat de programarea calculatoarelor. Algoritmi fundamentali,EdituraTehnică,
Bucureşti, 1974.
[K2 ] D.E. Knuth, Tratat de programarea calculatoarelor. Sortare şi căutare, Editura Tehnică,
Bucureşti, 1976.
[LG ]L.Livovschi,H.Georgescu, Sinteza şi analiza algoritmilor,EdituraTehnicăBucureş , ti,1986.
[L ]D. Lucanu, Bazele proiectării programelor şi algoritmilor, Editura Universită‑ii „Al.I. Cuza”,
Iaşi, 19 6.
[MY ]M.Machtey,P.Young, An Introduction to the General Theory of Algorithms,Elsevier,North
Holland, 1978.
[Mas1 ]C.Masalagiu,Introducere în programarea logică,EdituraUniversită‑ii„Al.I.Cuza”,Iaşi,
19 6.
[Mas2 ]C.Masalagiu,Distance Learning and Its Methodical/Pedagogical and Social Implications,
TR -HH -04Restructuring
9, ofthe(re)TrainingofSchoolTeachersinComputerScience,S_
68-9 , Editura
111 Computer Libris Agora, Bucureşti, 19 .
[Mas3 ] C. Masalagiu,Fundamentele logice ale informaticii, Editura Universită‑ii „Al.I. Cuza”,
Iaşi, 20 4.
[MA ] C. Masalagiu, I. Asiminoaei, Didactica predării informaticii, Editura Polirom, Iaşi, 20 4.
[MAM ]C.Masalagiu,I.Asiminoaei,I.Maxim, Metodica predării informaticii,EdituraMatrixRom,
Bucureşti,1.20
[MM ] E. Mateescu, I. Maxim, Arbori, Editura „,ara Fagilor”, Suceava, 19 6.
[Max1 ] I. Maxim, Un punct de vedere asupra metodicii predării informaticii, lucrare metodico-
ştiin‑ifică pentru ob‑inerea gradului didactic I, Editura Universită‑ii din Buc
19 7.
[Max2 ] I. Maxim, O încercare de generalizare a algoritmilor de sortare, Analele Universită‑ii
„Ştefan cel Mare”, Suceava, anul VI, nr. 12, 19 .
[MC ] O. Mândru‑, L. Catană, Suport de curs, Program de formare - Proiectarea curriculum-ului
centrat pe competenţe,AcreditatprinO.M.E.C.T.S.Nr.Universitatea
12, .06 43 / Craiova.
[MCBA ] O.Mândru‑L., CatanăD., Badea,A.Ardelean, Didactica formării de competenţe,„Vasile
Goldiş” University Press, Arad,12. 0
[Me ] K. Mellhorn,Data Stuctures and Algorithms, Springer Verlag, 1984.
[MS ] B.M.E. Moret, H.D. Shapiro, Algorithms from P to NP, Design and Efficiency, Bejamin
Cummings, Redwood, 19 0.
BI LIOGRAF E 305
au apărut: