Documente Academic
Documente Profesional
Documente Cultură
00 Prezent Are
00 Prezent Are
Scopul lucrrii
Prezentare
CUPRINSUL LUCRARII
Cap. I: Structuri de date
Cap. II: Structuri de date alocate static
Cap. III: Alocarea dinamic a memoriei
Cap. IV : Consideraii metodice privind predarea structurilor de date
Cap. V : Probleme propuse
back
Cuprins
Cuprins
Cuprins
back
back
back
back
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; - reine 1 dac componenta corespunztoare 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
back
Definire
Operaii specifice
Definiie :
O list este o structur de date dinamic n care att
adugarea ct i extragerea unui element se poate face de
pe orice poziie.
urm
inf
urm
inf
urm
...........
inf
nil
ultim
prim
Inf
adres de
legtur
urm
Observaie :
Ultimul element al listei (cel aflat la adresa
ultim) conine ca informaie de legtur valoarea
constantei predefinite nil, cu semnificaia c dup
acest element nu mai exist n list nici un alt
element .
inf
urm
Observaie :
Lista are un singur nod. Se
folosesc doi pointeri care-i
memoreaz adresa.
inf
urm
inf
urm
......
inf
urm
inf
urm
inf
urm
inf
urm
inf
inf
urm
nil
inf
nil
prim
ultim
procedure adaugare_sfarsit(var
ultim:adresa);
var p:adresa;
begin
new(p);
write(dati informatia:);
readln(p^.inf);
p^. urm:=nil;
ultim ^.urm:=p;
ultim:=p;
end;
inf
urm
inf
urm
inf urm
inf urm
prim
inf
......
notat p
new(p);
2. se completeaz informaia util
write(dati valoarea:);
read(p^.inf);
3. se completeaz zona de legtur a nodului p
cu adresa primului nod din lista
p ^.urm :=prim;
4.
se reactualizeaz adresa primului nod din lista
cu valoarea nodului p
prim:=p ;
urm
inf
urm
inf urm
inf
inf
inf
nil
ultim
.....
inf
urm
inf
urm
inf
urm
inf
urm
inf urm
inf
urm
inf
urm
......
q^.urm
p^.urm
inf urm
new(q);
2. se completeaz zona inf pentru noul nod
writeln(dati informatia:);
readln(q^.inf);
3. se leag noul nod la list
q^.urm:=p^.urm;
p^.urm:=q;
procedure adauga_dupa(p:adresa);
var q:adresa;
begin
new(q);
writeln(dati informatia:);
readln(q^.inf);
q^.urm:=p^.urm;
p^.urm:=q;
end;
inf
.....
urm
inf urm
inf
urm
inf
inf urm
inf
inf
urm
inf
urm
urm
urm
......
p^.urm
q^.urm
q
1. se aloc spaiu pentru noul nod q
new(q );
2. se copie informaia din nodul p n
nodul q
q^.inf:=p^.inf;
3. se citete noua informaie n p
write(dati informatia: );
readln(p^.inf);
4. se leag nodul q la list
q^.urm:=p^.urm;
5. se leag nodul p de nodul q
p^.urm:=q;
procedure adauga_in_fata(p:adresa);
var q:adresa;
begin
new(q);
q^.inf:=p^.inf;
write(dati informatia:);
readln(p^.inf);
q^.urm:=p^.urm;
p^.urm:=q;
end;
inf
urm
inf urm
prim
q
inf
inf urm
inf
urm
.................
q
urm
inf
urm
nil
inf urm
inf
nil
ultim
ultim
inf
urm
urm
inf
urm
inf urm
inf urm
inf
urm
prim
p
prim
inf
.............
inf
urm
inf urm
prim
q
urm
inf
urm
inf
urm
inf urm
inf
urm
inf
nil
inf
.........
q
.........
p^.urm
Procedure sterge_dupa(p:adresa);
var q:adresa;
begin
q:=prim;
while q^.urm<>p do
q:=q^.urm
q^.urm:=p^.urm;
dispose(p);
end;
inf
urm
inf urm
inf
inf
urm
inf urm
...............
prim
urm
inf
urm
inf urm
inf
nil
ultim
Parcurgem nodurile liste cu ajutorul unui pointer p care, plecnd de la primul nod
va referi pe rnd fiecare nod al listei : prelucrm informaia din nodul p, mutm p la
urmtorul nod i prelucrarea continu.
Procedure parcurgere(prim:adresa);
var p:adresa;
begin
p:=prim;
while p<>nil do
begin
{prelucrarea informatiei din nodul p}
p:=p^.urm;
end;
end;
Funcia returneaz :
- nil, dac valoarea x nu a fost gsit n list;
- adresa nodului ce are completat zona inf
cu valoarea memorat n variabila x;
Function cauta(prim:adresa;x:byte):adresa;
var p:adresa
begin
p:=prim;
while (p^.inf<>x) and (p<>nil) do
p:=p^.urm;
cauta:=p;
end;
ant
..............
ant
inf
inf
urm
nil
urm
ultim
1. se aloc spaiu pentru noul nod p
new(p);
2. se completeaz zona inf cu informaia util
write(dati informatia);
readln(p^.inf);
3. completarea zonei urm cu constanta nil
p^.urm:=nil;
4. completarea zonei de legtur ant a
nodului p cu adresa ultimului nod din list
p^.ant:=ultim;
5. se leag nodul p de nodul ultim
ultim^.urm:=p;
6. se actualizeaz valoarea variabilei ultim
cu adresa lui p
ultim:=p;
ant inf
urm
ant
nil
inf
p
ultim
ant
inf urm
ant inf
urm
nil
inf
ant
nil inf
urm
urm
..............
prim
...
ant
inf
urm
ant inf
ant
urm
inf
urm
...
q^.urm
p^.urm
p
ant
urm
q
1. se aloc spaiu pentru noul nod q
new(q );
2. se copie informaia din nodul p n
nodul q
q^.inf:=p^.inf;
3. se citete noua informaie n p
write(dati informatia: );
readln(p^.inf);
4. se leag nodul q la list
q^.urm:=p^.urm;
p^.urm^.ant:=q;
p^.urm:=q;
q^.ant:=p;
...
ant
inf
urm
ant
inf
urm
ant
inf
urm
...
q^.urm
p^.urm
p
ant
inf
urm
q
1. se aloc spaiu pentru noul nod q
new(q );
2. se citete noua informaie n q
write(dati informatia: );
readln(q^.inf);
3. se leag nodul q la list
q^.urm:=p^.urm;
p^.urm^.ant:=q;
p^.urm:=q;
q^.ant:=p;
nil
prim
inf
urm
nil inf
ant
urm
..............
p
prim
....
ant
inf
p^.ant
urm
ant
inf
urm
ant
inf
urm
..............
p^.urm
p^.ant^.urm
Procedure sterge_nod(p:adresa);
begin
p^.ant^.urm:=p^.urm;
p^.urm^.ant:=p^.ant;
dispose(p);
end;
Procedure parcurgere(prim:adresa);
var p:adresa;
begin
p:=prim;
writeln;
write(rezultatul este:);
while p<>nil do
begin
{prelucrarea informatiei din nodul p }
p:=p^.urm;
end;
writeln;
end;
..............
ant
inf
urm
ant
inf
urm
nil
ultim^.ant
ultim
p
1. se memoreaz adresa penultimului nod din
list n nodul p
p:=ultim^.ant;
2. se completeaz zona urm a nodului p cu
valoarea constantei nil deoarece nodul p
va deveni ultimul nod din list
p^.urm:=nil;
3. se terge fizic ultimul nod din list
dispose(ultim);
4. se reactualizeaz valoarea pointerului ultim
ultim:=p;
ant
inf
nil
ultim
nil
inf
urm
ant inf
urm
.....
ant
inf
nil
ultim
prim
ant
Adresa de
Informaia legtur cu
util
nodul urmtor
inf
urm
Observaie :
Ultimul element al listei (cel aflat la adresa
ultim) conine ca informaie de legturcu nodul
urmtor valoarea constantei predefinite nil, cu
semnificaia c dup acest element nu mai exist
n list nici un alt element .Primul element al listei
(cel aflat la adresa prim) conine ca informaie de
legtur cu nodul anterior valoarea constantei nil,
cu semnificaia c naintea acestui nod nu mai
exist nici un alt element.
Planificare
calendaristica
Proiect
de
tehnologie didactica
Unitate de
invatare
coala...
Profesor
Disciplina.
Clasa/nr. ore pe spt./anul
Planificare calendaristic
Uniti de
nvare
Obiective de
referin/
Competene
specifice
Coninuturi
Numr
ore
alocate
Sptmna
Obs.
coala...
Disciplina.
Obiective de
referin/
Competene
specifice
Activiti de
nvare
Resurse
Evaluare
n rubrica referitoare la Coninuturi apar inclusiv detalieri de coninut necesare n explicitarea anumitor
parcursuri, respectiv n cuplarea lor la baza proprie de cunoatere a elevilor.
n rubrica Obiective de referin/Competene specifice se trec numerele obiectivelor de
referin/competenelor specifice din programa colar.
Activitile de nvare pot fi cele din programa colar, completate, modificate sau chiar nlocuite de
altele, pe care profesorul le consider adecvate pentru atingerea obiectivelor propuse. Activitile de
nvare se construiesc prin corelarea obiectivelor de referin la coninuturi i presupun orientarea ctre
un anumit scop, redat prin tema activitii. n momentul propunerii lor spre rezolvare elevilor, activitile
de nvare vor fi transpuse ntr-o anumit form de comunicare inteligibil nivelului de vrst.
Rubrica Resurse cuprinde specificri de timp, de loc, forme de organizare a clasei, material didactic
folosit etc.
n rubrica Evaluare se menioneaz instrumentele sau modalitile de evaluare aplicate la clas.
Competene specifice:
C1.Elevii vor ti s defineasc structura de date de tip list
C2. Elevii vor ti cum se implementeaz o list simplu nlnuit;
C3. Elevii vor ti care sunt operaiile elementare ce se pot efectua la
nivelul unei liste simplu nlnuite;
C4. Elevii vor cunoate modul de selectare a unui element, precum i cum
se realizeaz crearea, respectiv afiarea informaiilor dintr-o list simplu
nlnuit;
C5. Elevii vor fi capabili s rezolve probleme ce necesit folosirea listelor
simplu nlnuite;
Calculatorul, manualul;
Mediul de instruire:
Laboratorul de informatic;
Forme de organizare:
Activitate frontal
Resurse:
- pedagogice:cursuri de informatic, metodica predrii informaticii
- oficiale:
programa colar
- temporale:
50 minute
- psihologice:
informatic
III.Anunarea leciei
Se poart un dialog pe tema: Lista simplu nlnuit.
activitatea profesorului: sunt adresate clasei urmtoarele ntrebri:
Care este definiia unei liste simplu nlnuite?
Ce alte structuri de date cunoatei?
Cum se implementeaz structura de date de tip list simplu nlnuit?
Care sunt principalele operaii ce se pot efectua la nivelul unei liste simplu
nlnuite?
dup care se va propune elevilor spre rezolvare urmtoarea problem:
Fiind dat o matrice rar (spunem c o matrice este rar dac cel puin dou treimi
din elementele mulimii sunt nule) s se alctuiasc o list nlnuit 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;
determinai suma i produsul a dou astfel de matrici;
Datele de intrare se citesc din fiierul text date.txt.
activitatea elevului: rspunde la ntrebrile adresate i este atent la completrile
aduse de ctre profesor dup care trece la rezolvarea problemei propuse;
metode i procedee didactice: metoda conversaiei, a demonstraiei, a
problematizrii i a modelrii;
0010000
0000900