i structuri de date
-conspect -
CUPRINS
Tehnici de programare
11.
12.
Probleme
Bibliografie
Introducere:
Semiotica se ocup cu studiul semnelor n natura i n societate.
Semnul nu este o calitate n sine a unui obiect, ci o funcie pe care acest
obiect o poate dobandi. Studiind combinatorica rezultant, rezult ca din
punct de vedere teoretic sunt posibile mii de clase de semne; dar imensa
2
CAPITOLUL 1
Sistem informaional Sistem informatic
Sistem informaional
Un sistem poate fi privit ca un ansamblu de elemente interconectate i
interconditionate prin relaii fizice, sociale i de alta natura, intre ele i nu
mediul extern sistemului, care functioneaza n vederea realizarii unui scop
sau a finalizarii unui obiect.
Activitatea desfasurata intr-un sistem organizat, n vederea realizarii
unui obiectiv poate fi definita ca fiind rezultatul actiunii conjugate, a 3
subsisteme ce actioneaza intr-o stransa interdependenta i care la randul lor
pot fi considerate sisteme:
- Sistemul de conducere sau decizional ( S.D. )
- Sistemul condus, de executie sau operational ( S.O. )
- Sistem informational.
Sistemul de conducere are rolul de a dispune, indruma i coordona
activitatea n vederea realizarii abiectivelor fixate, cu eficienta maxima.
Sistemul condus are rolul de a executa practic deciziile luate i de a furniza
date privind actiunile realizate, sau n curs de executie, folosind pt aceasta
resursele materiale, financiare stiintifice i umane existente, repartizate pe
obiective dinainte stabilite.
Pentru executarea activitatiilor de baz ale procesului decizional:
planificare, urmarire, control i decizie, sistemului de conducere ii sunt
necesare permanent informatii despre starea i evolutia sistemului de
executie, despre legaturile acestuia cu exteriorul. De la sistemul de
conducere, spre sistemul condus vor circula decizii. Acest circuit de
informatii i decizii reprezint un proces permanent care se realizeaza prin
existenta Sistemului Informational.
Sistemul Informational este un instrument indispensabil conducerii, avnd
ca parti componente mijloacele i procedeele ce asigura legaturile intre
elementele de executie i elementele decizionale pentru conducere i
organizare.
n felul acesta, prin sistemul informational se pot cunoaste la timp i
n cantitati necesare toate elementele de caracterizare a activitatilor
desfasurate, el cuprinzand fondul de informatii, tehnicile de colectare i
10
Aceste preocupari s-au materializat att n plan practic, prin realizarea unor
sisteme mari cat i n plan teoretic, prin elaborarea de catre ISO
( International Standard Organization ) a unui model arhitectural stratificat
de referinta pentru interconectarea sistemelor deschise.
Modelul a fost adoptat n 1983 i reprezint un cadru conceptual de
lucru pentru definirea de standarde referitoare la interconectarea
calculatoarelor eterogene. Scopul fundamental al acestui standard
international este asigurarea unei baze comune pentru coordonarea de noi
standarde privind interconectarea sistemelor, permitand n acelasi timp
evaluarea standardelor existente.
Conceptul de sistem deschis n viziunea ISO denota capabilitatea
oricaror 2 sisteme, omogene sau neomogene care respecta modelul de
referinta i standardele corespunzatoare de a putea fi interconectate. De
asemenea a fost adoptat teoretic i practic i un model arhitectural ierarhizat,
elaborat de catre Departamentul Apararii din S.U.A. ( Departament of
Defence DoD )
Standardizarea arhitecturii Sistemelor de Gestiune a Bazelor de Date. n
acest sens amintim arhitectura propusa de CODASYL i ANSI.
Standardizarea limbajelor de programare s-a materializat prin propunerile
grupului de lucru CODASYL, care au elaborat limbajul de programare
COBOL. Unele limbaje cum sunt: C, C++, Basic, SQL, au devenit
standarde de facto, datorita faptului ca s-au impus prin performantele i
facilitatiile ce le ofera.
CAPITOLUL 2
Structuri de date
Prelucrarea automata a datelor necesita, pe langa activitatiile legate de
formularea problemei, de analiza acesteia n vederea gasirii algoritmului de
rezolvare i o alta activitate deosebit de importanta, legata de organizarea
datelor.
Organizarea datelor este un proces care cuprinde urmatoarele activitati:
- identificarea datelor;
- clasificarea i descrierea propietatiilor, a caracteristicilor
datelor;
- gruparea datelor n colectii de date destinate prelucrarii
automate;
- reprezentarea externa pe suporturi tehnice;
11
12
a1
a2
a3
a4
15
16
X
1
X1
de
baz
2
X2
Adresa
de
baz+1
....
Adresa
de
baz+2*1
n
Xn
Adresa
Adresa
de
baz+(n-1)*1
17
18
20
CAPITOLUL 5
Limbaje de prezentare a algoritmilor ( pseudocod )
21
PROCEDURE nume_procedura
FUNCTIE nume_functie
Exista posibilitatea reluarii repetate a unui pas sau grup de mai multi pasi in
interiorul unui aloritm; aceste procee repetitive pot fi definite ca iterative sau
recursive.
Iterativitatea este procesul prin care rezultatul este obtinut prin executia
repetata a uui set de operatii, de fiecare data cu alte valori de intrare.
Recursivitatea reprezinta un proces repetitiv prin care rezultatul de la un
anumit pas se determina pe baza unuia sau mai multor rezultate obtinute in
pasii anteriori.
Scheme logice
Schema logica este o forma de prezentare a algoritmului si a modului de
lucru al acestuia sub forma grafica, folosind diferite simboluri grafice.
Se stie ca in practica programarii se acorda o importanta deosebita realizarii
schemelor logice in perioada de debut, astfel ca dupa o anumita experienta in
domeniu, se incearca tot mai des renuntarea la aceasta importanta etapa a
proiectarii.
23
24
25
26
CAPITOLUL 7
Evaluarea corectitudinii algoritmilor
Un program realizat trebuie s fie corect, clar, sigur n funcionare,
uor de modificat, portabil, eficient, nsoit de o documentaie
corespunztoare. Exist numeroase tehnici de verificare i validare a
algoritmilor, adresate n general practicienilor, dar i uor accesibile unui
nceptor n programare.
Dintre acestea amintim:
verificare
validare
27
30
gramatica
punctuatia
semantica
Rezultatul activitii de programare l constituie programul scris ca
text ntr-un limbaj de programare. Un astfel de program se numete program
sursa. El este scris printr-un editor de texte acceptat de limbajul de
programare respectiv.
Fiind scris ca format text, programul surs nu este neles de ctre
istemul electronic de calcul. Pentru aceasta este necesara traducerea lui intrun cod intern, accesibil calculatorului. Aceast operaie se realizeaz cu un
program translator numit compilator. Compilatorul este componenta
software care realizeaz traducerea programului sursa n cod intern,
rezultand aa numitul program cod obiect. Lucrul cu un anumit limbaj de
programare presupune existenta compilatorului pentru acel limbaj.
Ansamblul format din limbajul de programare i programul translator
asociat, formeaza sistemul de programare.
Limbajul de programare pascal face parte din categoria limbajelor de
programare evoluate de nivel inalt. Un program structurat este constituit din
unitati functionale bine definite, ierarhizate conform naturii specifice a
problemei de rezolvat. n interiorul unei astfel de unitati functionale,
structurarea se manifesta att la nivelul operaiilor de executat ct i la cel al
datelor de prelucrat.
Programarea structurata este o metoda independenta de limbajul de
programare utilizat. Limbajul Pascal include conceptele programarii
structurate n ambele sensuri ale efortului de abstractizare presupus de
realizarea unui program: ogranizarea datelor i conceperea succesiunii de
operaii.Limbajul Pascal a fost implementat pn n prezent pe o mare
varietate de calculatoare, avnd un inalt grad de portabilitate comparativ cu
implementarea altor limbaje de programare.
Un program reprezint o mulime ordonat de instruciuni, asociat
unui algoritm de rezolvare a unei probleme care comand operaiile de
prelucrare a datelor.
Instruciunea reprezint exprimarea intr-o forma riguroasa a unei
operatii i precizeaza functia i adresele operanzilor.Relaia dintre cele 3
elemente: algoritm, limbaj i program poate fi exprimat astfel:
Blocul
32
invers.
CHR ( cod ) este o funcie care intoarce ca rezultat caracterul
respectiv.
x:=chr(64)
ORD ( caracter ) este o funcie care intoarce codul ASCII al
caracterului respectiv.
Tipul Boolean este un tip ordinal, enumerativ, care ocup un octet
memorie i poate lua 2 valori logice: adevarat i fals.
Declaraia de tip se face :
Type boolean = ( True, False )
Tipul Declarat ( Enumerativ ) este definit de utilizator ca o lista
ordonat, prin enumerarea valorilor posibile astfel:
TYPE identif tip = ( lista elemente )
TYPE zi-sapt= ( luni, marti, ... , duminica )
Tipul Subdomeniu se mai numeste tip interval i se defineste ca
submultime a unui tip ordinal prin precizarea intervalului inchis de valori.
Toate caracteristicile tipului parinte ( Integer , Char ) se regasesc n tipul
subdomeniului, singura deosebire dintre ele constand n multimea valorilor
pe care le poate lua.
Declararea constantelor:
CONST ident = valoare;
Pot fi numai de tip standard ( scalar ) i se declar n sectiunea
CONST
Valoarea constantei nu poate fi modificat n timpul rulrii
programelor.
Orice ncercare de a atribui constantelor o valoare, chiar dac este
egal cu cea iniial, va genera un mesaj de eroare.
Se asigur astfel protecia valorilor.
Declaraia de tip
TYPE Identif_tip=definiie tip;
Declaraia de variabile
Var identif var: spaiu tip var
Dac sunt mai multe variabile de acelasi tip, se inir separate cu `,`
Declaraia de funcii i proceduri
function nume_funcie (declaraie de var): tip rez;
function fact (n: integer):integer;
34
Instruciuni simple:
de atribuire
apeluri de procedura
instruciunea de salt necondiionat(goto)
instruciunea vid
Instruciuni simple
Prin instructiuni simple se realizeaz o mare parte din operatiile
de baz a algoritmilor de prelucrare. Instructiunea vid descrie aciunea vid,
ea este definit prin lipsa n contextul unor construcii pascal, fr a avea o
mnemonica explicit.
Se prezint ca o linie goala urmat de `;`
i:=1 ; 2 instruciuni vide
If x>0 then
x:=x+1
else;
Instruciunea de atribuire evalueaz o expresie i atribuie rezultatul
obtinut unei variabile sau functii.
Are formatul general:
Identificator:=valoare;
Prioritatea operanzilor n Pascal:
NOT
* / DIV MOD AND
+ - OR ( *, +, -, pe multimi )
= , > , < ,<= , >= , <> , i operatori relationali pe multimi
Expresii logice sunt cele care n urma evaluarii produc un rezultat
logic de TRUE sau FALSE ( Boolean ). Ele se prezint fie sub forma unor
condiii simple, fie sub forma unor conditii compuse, formate din mai multe
conditii simple legate prin operatorii logici: AND, OR, NOT.
Dac nu suntem siguri de prioritatea anumitor operatori este necesara
utilizarea parantezelor.
35
Apelul de procedur:
Orice rutin scris de noi, pentru a efectua anumite operaii, se
numete procedur.
Procedurile ntlnite n program ca simple instruciuni genereaz o
serie de operaii:
compilatorul caut numele de procedur n biblioteca sa; dac
nu este gsit acolo procedura e cautat n lista de declaraii de proceduri a
programului; dac nu este nici acolo se afiseaz un mesaj de eroare.
dac este gsit procedura e apelat.
Instructiunea de salt neconditionat GOTO
Format : GOTO eticheta;
La intalnirea ei se executa un salt la linia care este precedata de
eticheta urmata de `:`
IF delta >= 0 THEN
GOTO 30
ELSE
WRITE (` ecuatia nu are solutii`);
30: x1:=(-b+sqrt(delta))/(2*a);
x2:=(-b-sqrt(delta))/(2*a);
write ( x1, x2 );
end.
Instructiuni structurate
Instructiunea compusa este o secventa de instructiuni delimitata de
cuvintele rezervate BEGIN, END.
Format :
BEGIN lista-instr END;
Efectul executiei instructiunii IF:
Se evalueaza conditia specificata.
Instructiuni pentru realizarea structurilor repetitive
Instructiunea WHILE realizeaza structura repetitiva conditionata
anterior.
Format:
WHILE conditie DO instructiune; este echivalenta cu o
constructie formata din urmatoarele instructiuni:
IF conditie THEN
BEGIN
instructiune
GOTO 1
end.
Instructiunea WHILE se mai numeste instructiune cu test initial.
36
Instructiunea Repeat
Realizeaza structura repetitiva conditionata posterior.
Format:
REPEAT instructiune UNTIL conditie ;
REPEAT
instructiune
UNTIL
conditie;
Ca i ELSE, inainte de UNTIL mi se pune `;`.
Instructiunea FOR ( ciclu cu contor )
Realizeaza structura repetitiva cu numarator ( contor de numarare ).
Format:
1) FOR contor:=val initiala TO val finala
DO instructiunea;
2) FOR contor:=val initiala DOWNTO val finala
DO instructiunea
38
- tip de data
- domeniu.
Utilizatorul poate defini n cadrul modulului su i tipuri de date
proprii, deci tipuri de date predefinite. Pentru aceasta, declaraia de tip se
face de ctre programatori n prima parte a modului de cod cu ajutorul
instruciunii :
END TYPE
Operatorii : Reprezint comenzi speciale pentru operaiile ce pot fi executate
cu datele din program. Basic pune la dispoziie 4 tipuri de operatori :
aritmetici, logici, de comparare i de concatenare.
O funcie este o procedur care efectueaz o anumit sarcin ntr-un
program.
1.
Dialogul standard cu utilizatorul
Funcia INPUT- apelul funciei INPUT permite preluarea de date de la
tastatur.
2.
Funcii matematice i statistice : ABS, EXP, INT, LOG, RND,
SQR, ATN, SIN, COS, TAN ;
3.
Funcii pentru iruri de caractere : LCASE$, UCASE$,
LTRIM$, RTRIM, CHR, ASC, LEN, VAL, LEFT$, RIGHT$, MID$,
INSTR,
4.
Funcii pentru conversia ntregilor : INT, CINT ;
5.
Funcii pentru conversia tipului de dat : CDBL, CLNG.
6.
Funcii pentru lucrul cu date calendaristice : TIME$, DATE$ ;
O procedur este o secven de instruciuni executate ca un tot unitar
sau partajabile. Exist trei tipuri de proceduri : SUB, FUNCTION, Tip de
proprietate. Sintaxa general a unei proceduri este : Private/Public/Static/Sub
.
End Sub.
Instruciuni de atribuire atribuirea se poate efectua prin
instruciunile :
Let - pentru valori atribuite variabilelor i proprietilor ;
Set pentru atribuirea de obiecte la o variabil de tip obiect ;
Lset i Rset pentru atribuiri speciale de iruri sau tipuri
definite de utilizator
39
40
42
CAPITOLUL 11
Tehnici de programare structurat
43
1. Recursivitatea
Este o tehnic de programare utilizat frecvent , n implementarea
funciilor i procedurilor . La baza recursivitii st stiva, care este gestionat
n mod implicit, n aceast zon de memorie salvndu-se automat, la fiecare
la fiecare apel de funcieurmtoarele informaii :
Valorile parametrilor de tip valoare;
Adresele parametrilor de tip variabil;
Variabilele locale ale subprogramului;
Adresa de ntoarcere la instruciunea aflat dup instruciunea de apel.
2. Tehnica Backtracking
44
CAPITOLUL 12
Probleme
Problema nr. 1
Sa se prezinte sub forma de chema logic i instruciunea unui limbaj de
programare sau pseudocod un algoritm eficient care s determine pentru o
matrice de n linii i m coloane a crei elemente se citesc de la tastatur
urmtoarele:
a) media aritmetic a elementelor de pe fiecare linie
b) media aritmetica a elementelor de pe fiecare coloan
c) valoarea elem. maxim i locul n care acesta se afl de pe fiecare linie
d) valoarea elem. maxim i locul n care acesta se afl de pe fiecare
coloan
e) valoarea elem. minim i locul n care acesta se afl de pe fiecare linie
f) valoarea elem. minim i locul n care acesta se afl de pe fiecare
coloan
g) elementul maxim la nivel de matrice
h) elementul minim la nivel de matrice
program matricea_de_la_curs;
type matrice=array[1..20,1..20] of integer;
var a:matrice;
max,max2,min,min2,w,z,i,p,maa,m,n,d,e,f,g,minn,maxx,j,s,ma,x,y:integer;
begin
writeln('dati nr de linii i nr de coloane');
write('n=');
readln(n);
write('m=');
readln(m);
for i:=1 to n do
45
for j:=1 to m do
begin
writeln('a[',i,',',j,']=');
read(a[i,j]);
end;
a) for i:=1 to n do
begin
s:=0;
for j:=1 to m do
s:=s+a[i,j];
ma:=(s div m);
writeln('media aritmetica pe linia ',i ,'=',ma);
readln;
end;
b) for j:=1 to m do
begin
p:=0;
for i:=1 to n do
p:=p+a[i,j];
maa:=(p div n);
writeln('media aritmetica pe coloana ',j,'= ',maa);
readln;
end;
c) for i:=1 to n do
begin
max:=-3200;
for j:=1 to m do
if a[i,j]>max then
begin
max:=a[i,j];
x:=j;
end;
writeln('maximul liniei ',i,' este elementul a[',i,',',x,'] i este egal cu ',max);
readln;
end;
d) for j:=1 to m do
begin
max2:=-3200;
for i:=1 to n do
if a[i,j]>max2 then
46
begin
max2:=a[i,j];
y:=i;
end;
writeln('maximul coloanei ',j,' este elementul a[',y,',',j,'] i este egal cu
',max2);
readln;
end;
e) for i:=1 to n do
begin
min:=3200;
for j:=1 to m do
if a[i,j]<min then
begin
min:=a[i,j];
w:=j;
end;
writeln('minimul liniei ',i,' este elementul a[',i,',',w,'] i este egal cu ',min);
readln;
end;
f) for j:=1 to m do
begin
min2:=3200;
for i:=1 to n do
if a[i,j]<min2 then
begin
min2:=a[i,j];
z:=i;
end;
writeln('minimul coloanei ',j,' este elementul a[',z,',',j,'] i este egal cu
',min2);
readln;
end;
g) maxx:=-3200;
minn:=3200;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>maxx then
begin
maxx:=a[i,j];
47
d:=i;
e:=j;
end;
h) for i:=1 to n do
for j:=1 to m do
if a[i,j]<minn then
begin
minn:=a[i,j];
f:=i;
g:=j;
end;
writeln('elementul maxim al matricei este a[',d,',',e,']=',maxx);
writeln('elementul minim al matricei este a[',f,',',g,']=',minn);
readln;
end.
SCHEMA LOGIC:
48
49