Documente Academic
Documente Profesional
Documente Cultură
back
CAPITOLUL I: STRUCTURI DE DATE
Cuprins
CAPITOLUL II: STRUCTURI DE DATE
ALOCATE STATIC
Prezentare Cuprins
CAPITOLUL III: ALOCAREA DINAMICĂ A
MEMORIEI
Cuprins
CAPITOLUL IV: CONSIDERAŢII METODICE
PRIVIND PREDAREA STRUCTURILOR DE DATE
DE TIP LISTĂ, STIVĂ, COADĂ
IV.1. Consideraţii generale
IV.1.1. Principiile didactice
IV.1.2 Obiectivele majore ale studiului informaticii. Precizarea obiectivelor.
IV.1.3. Metode generale de învăţare
IV.1.4. Instrumente(mijloace de predare)
IV.1.5. Metode de evaluare pentru atingerea obiectivelor
IV.2. Organizarea lecţiei de informatică
IV.2.1. Calitatea cunoştinţelor asimilate
IV.2.2. Formarea limbajului de specialitate
IV.2.3. Exprimarea fluentă în limbajul de specialitate. Exerciţiul oral.
IV.2.4. Repetarea materiei parcurse
IV.2.5. Evaluarea rezultatelor şcolare. Modele de teste şi fişe de evaluare.
IV.2.6. Aprecierea cunoştinţelor elevului
IV.3. Planificarea şi pregătirea profesorului pentru lecţie.
IV.3.1. Planificarea activităţii didactice
IV.3.2. Etapele esenţiale ale proiectării demersului didactic
IV.3.3. Modele de proiecte de tehnologie didactică
Prezentare Cuprins
Începând cu a doua jumătate a secolului al XX-lea, apariţia şi dezvoltarea
calculatoarelor electronice au declanşat o nouă revoluţie în toate domeniile vieţii
economice şi sociale. La baza acestei revoluţii stau cercetările fundamentale din
domeniul matematicii şi realizările din domeniul microelectronicii.
Diversificarea spectaculoasă a mijloacelor tehnice din domeniul
microelectronicii a dus la o dezvoltare continuă a software-ului, necesitând totodată
adecvarea structurilor de date la aplicaţii din ce în ce mai complexe. Astfel au apărut
structurile de date dinamice, pe lângă cele statice şi semistatice, care permit o alocare
dinamică atât în cadrul structurii cât şi la nivelul întregii structuri. Lista liniară ca
structură de date dinamică s-a dovedit a fi utilă într-o gamă foarte variată de
aplicaţii, unde se pot obţine economie de timp şi memorie, o minimizare a numărului
de operaţii, ajungându-se la algoritmi eficienţi şi, implicit, la programe fiabile,
performante.
Foarte multe produse software care utilizează un volum mare de date
folosesc structuri de date dinamice.
O primă problemă ce apare în prelucrarea structurilor de date este legată de
reprezentarea în memoria internă şi pe suporturile externe. Lucrarea are drept scop
prezentarea câtorva modalităţi de reprezentare, evidenţiindu-se avantajele fiecăreia
în parte.
back
Tipurile de date de care avem nevoie în rezolvarea diferitelor probleme fie
există ca atare în limbajul de programare ales, fie se pot declara cu ajutorul
tipurilor de date elementare. În organizarea datelor, conform logicii algoritmului
de rezolvare, datele de diferite tipuri se grupează în structuri, denumite structuri
de date.
O structură de date poate ocupa în memorie o zonă de dimensiune
constantă, în care elementele componente ocupă tot timpul execuţiei
programului acelaşi loc. O astfel de structură se numeşte statică. Alocarea de
memorie făcută pentru o structură statică este o alocare statică atât la nivelul
întregii structuri, cât şi pentru fiecare componentă în parte.
Dacă o structură de date ocupă o zonă de dimensiune constantă, dar
elementele componente ocupă un loc variabil în timpul execuţiei programului
atunci o astfel de structură se numeşte semistatică. Pentru o structură semistatică
alocarea este statică la nivelul structurii şi dinamică la nivelul componentelor,
Dacă o structură de date ocupă în memoria internă o zonă care se alocă în
timpul execuţiei programului pe măsura nevoii de prelucrare, fără a avea o
dimensiune constantă, atunci structura este dinamică. Pentru o structură
dinamică alocarea este dinamică atât la nivelul componentelor cât şi la nivelul
întregii structuri.
back
Toate variabilele declarate într-o secţiune var sunt alocate static şi se
numesc variabile statice. O variabilă statică este declarată într-o secţiune var a
unui bloc sub un anumit nume, prin intermediul căruia va fi referită în cadrul
acestuia, alocându-i-se memorie la activarea blocului. Variabila va exista(va
ocupa memoria alocată ei) atâta timp cât blocul în care a fost declarată este activ.
În urma declarării, compilatorul Pascal rezervă automat pentru fiecare
variabilă statică o zonă fixă în memoria internă RAM, alcătuită din locaţii
succesive de memorie. Mărimea acestei zone depinde de tipul variabilei: 2 octeţi
pentru integer , 6 pentru real, 1 octet pentru char etc.
Spaţiul de memorie aferent unor astfel de date se defineşte şi se rezervă
la dimensiune maximă, prestabilită, ca spaţiu propriu care nu poate fi
disponibilizat şi nici împărţit cu alte date, chiar dacă, în momentul diverselor
execuţii ale programului, nu este în întregime utilizat (rezervare statică sau la
momentul compilării).
Există două moduri de alocare a acestor structuri de date: alocare
secvenţială şi alocare înlănţuită
back
Elementele listei vor fi stocate într-un tablou de înregistrări. Câmpurile unei
înregistrări vor conţine în mod specific informaţiile pe care dorim să le
reprezentăm în listă.
Memorarea listei liniare în memoria calculatorului se va realiza prin
memorarea elementelor listei în locaţii succesive de memorie, nod după nod. Se
va folosi un tablou în care vor fi reţinute elementele listei, tabloul având
dimensiunea max.
const nmax=20;
type element=record
câmp1:tip_info_1;
câmp2:tip2_info_2;
…………..
end;
lista=array[1..nmax] of element;
var l:lista;
PRIM,ULTIM:integer;
Variabilele cu ajutorul cărora vom manipula elementele listei sunt :PRIM şi
ULTIM care identifică primul, respective ultimul element al listei.
back
În cazul reprezentării înlănţuite, elementele listei nu sunt aşezate
succesiv, fiind nevoie să precizăm în mod suplimentar ordinea lor reală.
Fiecare element al listei trebuie să indice unde se află elementul
următor(anterior). În acest caz va trebui să ştim unde se află primul
element al listei, pentru a avea acces apoi, pe baza înlănţuirilor, şi la
elementele următoare ale listei. De asemenea, este necesar să ştim când
nu mai există succesor(este vorba de ultimul element).
Implementarea alocării înlănţuite se realizează cu ajutorul vectorilor.
Lista va fi un vector care va conţine informaţia ataşată nodului(de
exemplu, un număr întreg) şi adresa nodului următor. Ultimul element
nu are nici un succesor; ca urmare, vom declara o constantă, numită
NUL, care va indica o intrare fictivă a tabloului. Pentru a nu face
confuzie între informaţia de adresă, care este tot de tip integer, şi restul
informaţiei memorate, vom „reboteza” tipul integer. next
Const nmax=100;
nul=0;
Type adresa=integer;
nod=record
inf:integer;
urm:adresa;
end;
Pentru memorarea listei folosim un vector care are componente de tip nod,
descris mai jos:
lista=array[1..nmax] of nod;
ocupat= array[1..nmax] of 0..1; - reţine 1 dacă componenta corespunzătoare din
L memorează un nod, sau 0 în caz contrar.
var L:lista;
Exemplu:
Vectorul L: ((7,3),( , ),(5,4),(1,5),(4,0),( , ))
Vectorul o:(1,0,1,1,1,0)
Lista este: 7, 5, 1, 4. back
•Alocarea înlănţuită necesită spaţiu suplimentar de memorie pentru gestionarea
locaţiilor libere/ocupate.
•Extragerea unui nod dintr-o listă liniară alocată înlănţuit se realizează mult
mai uşor decât extragerea unui nod dintr-o listă liniară alocată secvenţial.
Pentru alocarea secvenţială o asemenea ştergere implică în general deplasarea
unei părţi din listă în locaţii diferite. O concluzie similară se obţine în cazul
inserării unui nod în cadrul unei liste liniare.
•Accesul la diferite părţi din listă este mult mai rapid în cazul alocării
secvenţiale. Aşa cum am văzut, locaţia nodului k din listă în cazul alocării
secvenţiale este o funcţie liniară de k, deci pentru a obţine accesul la acest nod
se consumă un timp constant. În cazul alocării înlănţuite acest acces necesită k
iteraţii urmărind referinţele a k-1 noduri. Astfel utilizarea memoriei înlănţuite
este mai eficientă când parcurgerea listei se face secvenţial şi nu aleatoriu.
Definire
Operaţii specifice
Definiţie :
O listă este o structură de date dinamică în care atât
adăugarea cât şi extragerea unui element se poate face de
pe orice poziţie.
next
Lista simplu înlănţuită este o structură de forma:
prim ultim
Inf urm
Observaţie :
type adresa=^ nod ; Ultimul element al listei (cel aflat la adresa
nod= record ultim) conţine ca informaţie de legătură valoarea
inf :tip_informaţie; constantei predefinite nil, cu semnificaţia că după
urm : adresă; acest element nu mai există în listă nici un alt
end; element .
Var prim ,ultim :adresă
p prim ultim
inf urm
inf urm
q
1. se alocă spaţiu pentru noul nod q
new(q ); procedure adauga_in_fata(p:adresa);
2. se copie informaţia din nodul p în var q:adresa;
nodul q begin
q^.inf:=p^.inf; new(q);
3. se citeşte noua informaţie în p q^.inf:=p^.inf;
write(‘dati informatia: ’); write(‘dati informatia:’);
readln(p^.inf); readln(p^.inf);
4. se leagă nodul q la listă q^.urm:=p^.urm;
q^.urm:=p^.urm; p^.urm:=q;
5. se leagă nodul p de nodul q end;
p^.urm:=q;
inf urm inf urm inf urm inf urm
inf urm inf urm ................. inf urm
nil inf nil
prim p ultim
Parcurgem nodurile liste cu ajutorul unui pointer p care, plecând de la primul nod
va referi pe rând fiecare nod al listei : prelucrăm informaţia din nodul p, mutăm p la
următorul nod şi prelucrarea continuă.
Procedure parcurgere(prim:adresa);
var p:adresa;
Cât timp pointerul p nu a ajuns la sfârşitul begin
listei {p<>nil}: p:=prim;
- prelucrăm informaţia din nodul p (p^.inf) while p<>nil do
- mutăm pointerul p la nodul următor begin
{p:=p^.urm} {prelucrarea informatiei din nodul p}
p:=p^.urm;
end;
end;
Cât timp pointerul p nu a ajuns la sfârşitul listei {p<>nil} şi informaţia memorată
în zona inf a nodului curent este diferită de x :
- mutăm pointerul p la nodul următor
q
1. se alocă spaţiu pentru noul nod q
new(q ); Procedure adauga_după(var p:adresa);
2. se citeşte noua informaţie în q var q:adresa;
write(‘dati informatia: ’); begin
readln(q^.inf); new(q);
3. se leagă nodul q la listă write(‘dati informatia:’);
q^.urm:=p^.urm; readln(q^.inf);
p^.urm^.ant:=q; q^.urm:=p^.urm;
p^.urm:=q; q^.urm^.ant:=q;
q^.ant:=p; p^.urm:=q;
p^.ant:=p;
end;
nil inf urm nil inf
ant urm
..............
prim p
prim
Procedure parcurgere(prim:adresa);
var p:adresa;
Cât timp pointerul p nu a ajuns la sfârşitul begin
listei {p<>nil}: p:=prim;
- prelucrăm informaţia din nodul p (p^.inf) writeln;
- mutăm pointerul p la nodul următor write(‘rezultatul este:’);
{p:=p^.urm} while p<>nil do
begin
{prelucrarea informatiei din nodul p }
p:=p^.urm;
end;
writeln;
end;
Cât timp pointerul p nu a ajuns la sfârşitul listei {p<>nil} şi informaţia memorată
în zona inf a nodului curent este diferită de x :
- mutăm pointerul p la nodul următor
Funcţia returnează :
- nil, dacă valoarea x nu a fost găsită în listă;
- adresa nodului a cărui zonă inf este completată
cu valoarea memorată în variabila x;
Function cauta(prim:adresa;x:byte):adresa;
var p:adresa;
begin
p:=prim;
while( p<>nil) and (p^.inf<>x) do
p:=p^.urm;
cauta:=p;
end;
ant inf urm ant inf urm
nil ant inf nil
..............
ultim^.ant
ultim ultim
p
Proiect
de
tehnologie didactica
Unitate de
invatare
Şcoala………………………... Profesor……………………………
Disciplina……………………. Clasa/nr. ore pe săpt./anul………
Planificare calendaristică
În rubrica referitoare la Conţinuturi apar inclusiv detalieri de conţinut necesare în explicitarea anumitor
parcursuri, respectiv în cuplarea lor la baza proprie de cunoaştere a elevilor.
În rubrica Obiective de referinţă/Competenţe specifice se trec numerele obiectivelor de
referinţă/competenţelor specifice din programa şcolară.
Activităţile de învăţare pot fi cele din programa şcolară, completate, modificate sau chiar înlocuite de
altele, pe care profesorul le consideră adecvate pentru atingerea obiectivelor propuse. Activităţile de
învăţare se construiesc prin corelarea obiectivelor de referinţă la conţinuturi şi presupun orientarea către
un anumit scop, redat prin tema activităţii. În momentul propunerii lor spre rezolvare elevilor, activităţile
de învăţare vor fi transpuse într-o anumită formă de comunicare inteligibilă nivelului de vârstă.
Rubrica Resurse cuprinde specificări de timp, de loc, forme de organizare a clasei, material didactic
folosit etc.
În rubrica Evaluare se menţionează instrumentele sau modalităţile de evaluare aplicate la clasă.
PROIECT DE TEHNOLOGIE DIDACTICĂ
Data:
Obiectul: Informatică
Clasa: a XI-a - profil matematică-informatică
Tema: Liste simplu înlănţuite.
Tipul lecţiei: Lecţie de fixare şi sistematizare.
Durata lecţiei: 50 minute
Obiectivul funadamental:
Recapitularea şi fixarea cunoştinţelor privind modul de declarare şi de
utilzare a listelor simplu înlănţuite alocate static.
Competenţe specifice:
C1.Elevii vor şti să definească structura de date de tip listă
C2. Elevii vor şti cum se implementează o listă simplu înlănţuită;
C3. Elevii vor şti care sunt operaţiile elementare ce se pot efectua la
nivelul unei liste simplu înlănţuite;
C4. Elevii vor cunoaşte modul de selectare a unui element, precum şi cum
se realizează crearea, respectiv afişarea informaţiilor dintr-o listă simplu
înlănţuită;
C5. Elevii vor fi capabili să rezolve probleme ce necesită folosirea listelor
simplu înlănţuite;
Metode şi procedee didactice:
Explicaţia, conversaţia, exerciţiul, demonstraţia.
Mijloace de învăţământ:
Calculatorul, manualul;
Mediul de instruire:
Laboratorul de informatică;
Forme de organizare:
Activitate frontală
Resurse:
- pedagogice:cursuri de informatică, metodica predării informaticii
- oficiale: programa şcolară
- temporale: 50 minute
- psihologice: cunoştinţele dobândite de către elevi la disciplina
informatică
SUCCESIUNEA ŞI DESFĂŞURAREA MOMENTELOR LECŢIEI
I.Moment organizatoric:
•obiective urmărite: crearea unei atmosfere specifice bunei desfăşurări a
activităţii didactice;
•activitatea profesorului: verificarea prezenţei, asigurarea că elevii sunt
pregătiţi pentru începerea lecţiei;
•activitatea elevului: pregătirea caietului;
•metode şi procedee didactice: metoda conversaţiei, explicaţia;
II. Captarea atenţiei şi trezirea interesului pentru lecţie
•activitatea profesorului: se va preciza elevilor că urmează a fi recapitulată
structura de tip listă simplu înlănţuită şi vor fi rezolvate probleme ce necesită
folosirea acestei structuri de date .
•activitatea elevului: ascultă şi notează cele prezentate sau notate pe tablă de
către profesor şi pune întrebări cu care să poată lămuri contextul în care se va
desfăşura lecţia;
•metode şi procedee didactice: metoda conversaţiei, metoda problematizării,
modelarea;
III.Anunţarea lecţiei
Se poartă un dialog pe tema: “Lista simplu înlănţuită”.
activitatea profesorului: sunt adresate clasei următoarele întrebări:
Care este definiţia unei liste simplu înlănţuite?
Ce alte structuri de date cunoaşteţi?
Cum se implementează structura de date de tip listă simplu înlănţuită?
Care sunt principalele operaţii ce se pot efectua la nivelul unei liste simplu
înlănţuite?
după care se va propune elevilor spre rezolvare următoarea problemă:
Fiind dată o matrice rară (spunem că o matrice este rară dacă cel puţin două treimi
din elementele mulţimii sunt nule) să se alcătuiască o listă înlănţuită în care
elementele au forma (linia, coloana, valoarea) şi valoarea ≠0.
să se listeze elementele aflate pe diagonala principală;
să se determine elementul minim de pe diagonala principală;
să elimine elementul de valoare maximă;
determinaţi suma şi produsul a două astfel de matrici;
Datele de intrare se citesc din fişierul text date.txt.
activitatea elevului: răspunde la întrebările adresate şi este atent la completările
aduse de către profesor după care trece la rezolvarea problemei propuse;
metode şi procedee didactice: metoda conversaţiei, a demonstraţiei, a
problematizării şi a modelării;
IV.Asigurarea conexiunii inverse
-activitatea profesorului: profesorul propune precizarea conţinutului listei pentru
matricea:
-activitatea elevului: elevii rezolvă pe caiete noile cerinţe.
0002100
0010000
0000900