Sunteți pe pagina 1din 41

1

Logic i structure discrete



1. Definii demonstraia prin deducie direct i demonstraia prin inducie matematic
complet.
Raspuns:
Demonstraia prin deducie direct este bazat pe regula numit modus ponens. Aceasta
pornete de la o form de implicaie de tipul dac p atunci q i se bazeaz pe prezumia c
ipoteza p este adevrat. Pasul urmtor este de a gsi o afirmaie care este implicat de
presupunere sau de alte fapte cunoscute. Fiecare pas la rndul lui procedeaz n aceeai
manier, ajungndu-se n final cu atingerea concluziei q.
Fiind dat un predicat P, etapele demonstrrii prin inducie sunt urmtoarele:
1) Etapa de baz, care stabilete c proprietatea P(k) este adevrat pentru un anumit
ntreg k.
2) Enunarea ipotezei inductive. Aceasta presupune c pentru un anumit numr arbitrar
nk, declaraiile sau proprietile P(k), P(k+1), ... , P(n) sunt adevrate.
3) Pasul final sau etapa inductiv de a demonstra c P(n+1) este adevrat, fiind dat
ipoteza inductiv.

2. Definii noiunile de mulime, multimulime (multiset).
Raspuns:
Vom nelege printr-o mulime o colecie de lucruri sau obiecte ce poart numele de elemente
sau membri. Mulimea e vzut ca un obiect distinct, dei este format dintr-o colecie, chiar
nelimitat de obiecte distincte. Obiectele care formeaz o mulime trebuie s fie distincte i
bine determinate. n definirea unei mulimi nu exist apariii repetate de elemente i nu exist
o ordine particular sau aranjament ntre elemente. Elementele unei mulimi se scriu separate
prin virgul ntre acolade.
O multimulime este o generalizare a noiunii de mulime. Este o colecie de obiecte care pot
conine apariii repetate de elemente, fr s existe o ordine particular de aranjare a
elementelor. Pentru a diferenia multimulimea de mulime, elementele se ncadreaz ntre
paranteze drepte.

3. Definii conceptele de ir, limbaj i relaie.
Raspuns:
Definim printr-un ir (string) o secven ordonat i finit n acelai timp coninnd zero sau
mai multe elemente, care sunt plasate unul lng cellalt n urma unei operaii de juxtapunere.
Elementele individuale ce alctuiesc un ir aparin unei mulimi finite care se numete
alfabet.
Un limbaj se definete ca o mulime de iruri. Limbajele se reprezint convenabil folosind
notaia exponenial. Dac considerm A ca fiind un alfabet, atunci un limbaj asupra lui A va
fi o mulime de iruri asupra lui A. Mulimea tuturor irurilor asupra lui A este notat cu A
*
.
Astfel orice limbaj construit asupra lui A va fi o submulime a lui A
*
.
Conceptul de relaie este inspirat de ideea legturii apartenenei sau a asocierii ntre obiecte.
Putem astfel defini informal o relaie ca fiind o mulime de n tuple, n care elementele din
fiecare tuplu sunt legate ntre ele ntr-un anumit mod. Din punct de vedere formal putem
defini o relaie astfel: dac R este o submulime a produsului cartezian
n
A A ...
1
atunci R se
spune c este o relaie nar asupra lui
n
A A ...
1
.

4. Artai modul de reprezentare a grafurilor (direcionate i nedirecionate) din punct de
vedere computaional.
2

Raspuns:
Din punct de vedere computaional suntem interesai s reprezentm grafurile ca date. Acest
lucru este convenabil din moment ce noi putem defini un graf n termeni de tuple, mulimi
sau submulimi. Un graf G se reprezint ca i o pereche (N,A) unde N este o mulime de
noduri iar A este o mulime de arce. Dac G este un digraf, atunci arcele n A pot fi
reprezentate prin perechi ordonate, unde perechea (a, b) reprezint arcul cu o sgeat de la a
la b. n acest caz mulimea A, a arcelor, este o submulime a lui N x N, adic A este o relaie
binar asupra lui N. Dac G este un multigraf direcionat, atunci putem reprezenta arcele ca i
un multiset (multimulime) de perechi ordonate. Dac un graf nu este direcionat, putem
reprezenta arcele sale n mai multe feluri. Putem s pstrm notaia unor perechi ordonate,
fiind de acord c reprezint o legtur nedirecionat ntre a, b. Putem s reprezentm, de
asemenea, legtura prin mulimea {a, b}.

5. ntr-un graf, s se defineasc o cale Euler, respectiv un circuit Euler i s se enune condiia
de existen a acestora.
Raspuns:
Calea care conine fiecare arc al grafului exact o singur dat se numete cale Euler. Un
circuit Euler este orice cale care ncepe i se termin n acelai nod i conine fiecare arc al
grafului exact o singur dat. Euler a demonstrat c ntr-un multigraf (conex) exist o cale
eulerian dac i numai dac are exact dou noduri avnd grade impare. O astfel de cale
trebuie s plece dintr-unul din cele dou noduri i s se termine n cellalt. De asemenea,
exist un circuit eulerian dac i numai dac toate nodurile grafului au grade pare. Se
definete gradul unui nod ca fiind numrul de arce sau muchii pentru care nodul este punct
terminal.

6. Artai cum se reprezint n memorie arborele binar din figur:


Raspuns:
Din moment ce fiecare nod are doi subarbori, reprezentm un arbore binar nevid ca i o list
cu trei elemente de urmtoarea form: <L, X, R>, unde X este rdcina, L este subarborele
stng i R subarborele drept. Arborele T din figur se reprezint prin lista:
T = <a, <b>, <c>, <d, <e> > >>
n memoria calculatorului va apare:







3








7. S se defineasc noiunea de funcie calculabil prin modelul de main Turing.
Raspuns:
Modelul de main de calcul propus de Turing se refer la o maina idealizat matematic.
Aceasta cuprinde un set finit de stri interne; dei are un set finit de stri, maina trebuie s
fie capabil s trateze cu intrri nerestricionate n mrime; s fie capabil s apeleze un
spaiu de stocare extern nelimitat; s produc o ieire de mrime nelimitat. ntr-o descriere
formal, o main Turing standard este definit ca un 7-tuplu M = (Q, , , , q
0
, , F), unde
Q este mulimea de stri interne, este alfabetul de intrare, care nu conine simbolul blanc
( { }), este alfabetul simbolurilor de pe band, este funcia de tranziie, : Q
Q {L, R} (L i R denot deplasarea benzii la stnga, respectiv la dreapta), q
0
e Q
este starea iniial sau de start, este simbolul blanc, iar F este mulimea strilor finale sau
acceptoare.

8. Definii noiunile de tuplu i list.
Un tuplu, sau mulime ordonat, se definete ca o colecie de obiecte numite elemente, n care
primul element, al doilea element i aa mai departe urmeaz unul dup cellalt ntr-o ordine
bine stabilit. O caracteristic esenial a tuplului, care l deosebete de o mulime este aceea
c secvena elementelor este definitorie. O a doua caracteristic ce deosebete tuplul de o
mulime este legat de permisiunea existenei repetiiilor elementelor. ntr-o mulime nu
admitem ca un element s fie scris n mod repetat. Acest lucru ns este permis n cazul
tuplelor. Tuplele sunt ntotdeauna secvene finite. O secven constnd din n elemente se
numete n-tuplu. Notaia consacrat pentru tuple este de a scrie elementele separate prin
virgul ncadrate ntre dou paranteze rotunde.
O list este o secven ordonat finit de zero sau mai multe elemente care pot fi repetate.
Diferena major ntre tuple i liste const n prile care pot fi accesate aleator n cele dou
structuri ordonate. n cazul tuplelor, putem accesa aleator orice element ntr-un interval de
timp constant. n cazul listelor, putem accesa aleator ntr-un interval de timp constant doar
elementele aflate la capetele listei, adic primul element al listei care se numete capul
(head) listei respectiv ultimul element care se numete coada (tail) listei. Din moment ce
listele se deosebesc astfel de tuple, ele vor fi notate prin niruirea elementelor separate prin
virgul i ncadrate de paranteze ascuite.

9. S se descrie procedurile de inferen de tip silogism ipotetic, modus ponens i modus
tollens.
Raspuns:
Silogismul ipotetic este de forma:
a b
b c
a c
Modus ponens mod de afirmare:
Dac p atunci q (p q)
p
q
4

Modus tollens mod de negare:
Dac p atunci q (p q)

p

10. S se defineasc rezoluia i s se enune etapele metodei de inferen demonstrativ prin
rezoluie.
Raspuns:
Regula de inferen prin rezoluie n logica propoziional are urmtoarea form:
A v B, B v C sau A B, B C
A v C A C
Aplicarea ei implic urmtorii pai: (1) Se presupune mai nti ca negata teoremei este
adevrat. (2) Se demonstreaz plecnd de la negata teoremei, cu ajutorul axiomelor, c nu
poate fi adevrat. (3) Se deduce ca presupunerea fcut nu poate fi adevrat pentru c duce
la o contradicie. (4) Concluzia este c teorema trebuie sa fie adevrat, de vreme ce negata
acesteia nu poate s fie adevrat.

Tehnici de programare

1. Vizibilitatea i durata de via a unei variabile interne, n limbajul de programare C.
Raspuns:
Variabilele interne unei funcii: sunt vizibile doar n interiorul funciei respective. Din
punctul de vedere al duratei de via pot fi:
- automatice - sunt create cnd se intr n funcie i dispar cnd se revine din aceasta;
- statice - exist pe toat durata programului; nu sunt create i nici nu sunt distruse la fiecare
activare funciei; n consecin, pot fi folosite pentru transmiterea de valori de la un apel la
altul al aceleiai funcii.
n mod implicit, variabilele interne sunt automatice. Pentru a deveni statice, ele trebuie
declarate static.
2. Iniializarea implicit i explicit a variabilelor, n limbajul de programare C.
Raspuns:
n absena iniializrii explicite este garantat iniializarea cu zero doar a variabilelor externe
i statice. Variabilele automatice i registru au valori iniiale nedefinite.
Pentru variabilele externe i statice, valoarea de iniializare explicit trebuie s fie o expresie
constant; iniializarea se efectueaz o singur dat, n principiu nainte ca programul s
nceap execuia.
n cazul variabilelor automatice i registru, iniializarea se efectueaz de fiecare dat cnd
se intr n funcie sau n bloc. Valoarea de iniializare poate fi i o expresie care s implice
valori definite anterior, chiar i apeluri de funcii.
3. Comparai un apel recursiv cu un calcul iterativ echivalent ? Care dintre cele dou variante
este mai eficient?
Raspuns:
Comparaie ntre iteraie i recursivitate:

Iteraia

Recursivitatea
5

execuia repetat a unei secvene de
instruciuni
nou iteraie se execut doar n urma
evalurii unei condiii (la nceput sau
sfrit)
fiecare iteraie se execut pn la capt
i apoi se trece, eventual, la o nou
iteraie
se recomand atunci cnd algoritmul de
calcul este exprimat printr-o formul
iterativ
execuia repetat a unei funcii
un nou apel recursiv se execut tot n
urma evalurii unei condiii (pe
parcurs)
funcia recursiv se apeleaz din nou,
nainte de terminarea apelului
precedent
se recomand doar atunci cnd
problema este prin definiie recursiv
(recursivitatea consum resurse n
exces)
Dei, aparent, cele dou variante sunt echivalente, se impune totui urmtoarea remarc
general: dac algoritmului de calcul i corespunde o formul iterativ este de preferat s se
foloseasc aceasta n locul apelului recursiv, ntruct viteza de prelucrarea este mai mare i
necesarul de memorie mai mic.

4. Operatorii de adresare i derefereniere, n limbajul de programare C.
Raspuns:
Adresa locaiei de memorie n care este stocat o variabil se poate obine aplicnd
operatorul de adres (operatorul &) naintea numelui variabilei.
Operatorul de adres (&) se aplic numai obiectelor din memorie: variabile, funcii i
elemente de tablou. Operatorul & nu poate fi aplicat expresiilor, constantelor sau variabilelor
de tip register.
Pentru a obine valoarea obiectului indicat de un pointer, numit i rvalue, se utilizeaz
operatorul de indirectare (derefereniere), notat cu *.
Dac p este o variabil de tip pointer care are ca valoare adresa locaiei de memorie a
variabilei ntregi x (p indic spre x) atunci expresia *p reprezint o valoare ntreag
(valoarea variabilei x).
Operatorii unari * i & au o preceden mai mare dect operatorii aritmetici.

5. Ce operaii cu pointeri sunt permise n limbajul de programare C ?
Raspuns:
Operaiile permise cu pointeri sunt:
- atribuirea pointerilor de acelai tip;
- adunarea unui pointer cu un ntreg sau scderea unui ntreg;
- scderea sau compararea a doi pointeri care indic spre elemente ale aceluiai tablou;
- atribuirea valorii zero (NULL) sau compararea cu aceasta.

6. Cum se poate realiza (simula) n C, transmiterea argumentelor prin adres ?
Raspuns:
Funcia apelant trebuie s furnizeze celei apelate adresa variabilei ce va fi accesat (un
pointer ctre acea variabil), iar funcia apelat trebuie s declare parametrul ca fiind pointer
i s acceseze variabila indirect, prin intermediul acestuia.
O alt excepie este n cazul tablourilor: cnd numele unui tablou este folosit ca
argument,valoarea transmis funciei este adresa locaiei primului element al tabloului.
Folosind aceast valoare ca pe o variabil cu indici, funcia poate accesa i poate modifica
direct orice element al tabloului.

6

7. Descriei modurile de acces la fiiere permise n limbajul de programare C.
Raspuns:
Limbajul de programare C permite dou modaliti de acces la componentele unui fiier:
acces secvenial: componentele sunt prelucrate strict n ordinea n care sunt nregistrate n
fiier.
acces direct: componentele se pot prelucra n orice ordine, specificnd poziia n fiier a
componentei ce urmeaz s fie prelucrat. Pentru a putea ca, pe baza poziiei, s se calculeze
locul din fiier de unde urmeaz s se continue prelucrarea, programatorul trebuie s
cunoasc formatul fiierului i dimensiunea nregistrrilor.

8. Descriei procesul de rafinare a unui program n pai succesivi (Step Wise Refinement).
Raspuns:
Pasul 1 : Se scrie funcia principal(main) utiliznd, pe ct posibil, apeluri de funcii
corespunztoare operaiilor de baz care se disting n aceast faz. Se descriu structurile de
date aferente programului. Funciile apelate din funcia principal se definesc doar la modul
generic (prototip urmat de /*comentarii*/).
Paii 2, 3, ... : Se dezvolt funciile apelate direct din funcia principal (pasul 2), apoi
funciile apelate din acestea din urm (pasul 3) .a.m.d., pn la elaborarea, n amnunt, a
ntregului program.

9. Care este principiul de baz al metodei de rezolvare Devide and Conquer? Ilustrai aceast
tehnic n pseudocod.
Raspuns:
Metoda Devide and Conquer este o metod fundamental de proiectare a algoritmilor care
poate s conduc la soluii deosebit de eficiente.
Principiul de baz al acestei tehnici este acela de a descompune n mod repetat o problem
complex n dou sau mai multe subprobleme de acelai tip, urmat de combinarea soluiilor
acestor subprobleme pentru a obine soluia problemei iniiale. ntruct subproblemele
rezultate din descompunere sunt de acelai tip cu problema iniial, metoda se exprim n
mod natural printr-o funcie recursiv.
Apelul recursiv se continu pn n momentul n care subproblemele devin banale i soluiile
lor evidente.

10. Care sunt avantajele utilizrii tipurilor de date abstracte?
Raspuns:
Avantajele utilizrii tipurilor de date abstracte sunt:
Modularizarea aplicaiile din programarea real (de mari dimensiuni) pot fi
realizate din module(fiiere) care se proiecteaz, se codific, se compileaz, se
testeaz i se ntrein separat, fiecare modul avnd dimensiuni rezonabile.
Reutilizarea codului un modul realizat judicios are mari anse de a putea fi
utilizat i n alte aplicaii.
ncapsularea prin intermediul datelor abstracte, o parte din cod i date poate fi
ascuns de restul aplicaiei; astfel acestea sunt protejate fa de modificarea
accidental.
Programele devin independente de modul de reprezentare a datelor (de exemplu,
o mulime poate fi implementat printr-un tablou sau printr-o list ordonat, dar
partea de program ce definete operatorii tipului abstract poate s fie aceeai.
Se previne modificarea accidental a datelor. Utilizatorul tipului abstract este
forat s manipuleze datele doar prin intermediul operatorilor ce compun tipul
abstract (se reduce riscul unei distrugeri a datelor).
7


Programarea orientat pe obiecte

1. Enumerai i descriei pe scurt cel puin 3 caracteristici ale orientrii pe obiecte.
Raspuns:
- ncapsularea - gruparea unor elemente nrudite ntr-o unitate, care ulterior poate fi referit
printr-un nume unic.
- Pstrarea strii - odat creat un obiect poate participa n mai multe interaciuni cu alte
obiecte, iar efectul execuiei unei operaii se nregistreaz n variabilele de stare, astfel c la
urmtoarea interaciune obiectul pornete din alt stare.
- Motenirea - o clas derivat din alt clas motenete atributele i operaiile clasei din care
este derivat, fr a fi nevoie ca acestea s fie definite explicit n clasa derivat.
- Polimorfismul - un atribut (variabil) poate conduce la obiecte de clase diferite la momente
de timp diferite; o anumit operaie poate avea implementri diferite n clase diferite aflate n
relaie de motenire.

2. Cum se face transmiterea parametrilor n Java? Precizai efectul asupra tipurilor elementare
i asupra tipurilor referin (nu este necesar scrierea de cod).
Raspuns:
n Java parametrii se transmit ntotdeauna prin valoare, ceea ce nseamn c ntr-o metod se
lucreaz cu copii ale parametrilor, lsndu-se nemodificai parametrii din apel. Dac
parametrii sunt de tipuri elementare, orice modificare efectuat asupra lor n metod nu este
vizibil n punctul de apel. Dac parametrii sunt de tipuri referin, modificarea valorii
referinei nu este vizibil n punctul de apel; prin valoarea transmis a referinei se poate ns
modifica starea obiectului referit n momentul apelului.

3. Enumerai i caracterizai pe scurt cei 4 modificatori de acces pentru metode din Java.
Raspuns:
Modificatorii de acces pentru metode sunt: public, protected, private i package. O metod cu
modificatorul de acces public este vizibil peste tot unde clasa este vizibil. O metod cu
modificatorul de acces protected este vizibil n orice clas derivat din cea curent i n
clasele pachetului curent. O metod cu modificator de acces private este vizibil numai n
clasa curent. n absena unui modificator de acces se consider c metoda este vizibil n
clasele pachetului curent.

4. Ce se nelege prin polimorfism? Ilustrai printr-un exemplu (nu este necesar scrierea
complet a unui program).
Raspuns:
Polimorfismul este legat de conceptul de motenire. O metod (public sau protected) a unei
clase poate fi nlocuit cu alt implementare ntr-o subclas, iar la execuie selectarea
implementrii se face n funcie de tipul efectiv al obiectului (late binding), indiferent de
tipul declarat al referinei utilizate n apel. Astfel, dac exist o clas Vehicul i o clas
derivat Avion i o referin ref de tipul Vehicul, ref poate conduce la execuie fie spre
obiecte Vehicul, fie spre obiecte Avion, iar la apelul unei metode prin ref.oMetoda() se va
selecta implementarea corespunztoare tipului obiectului spre care indic momentan ref.

5. Prin ce se deosebete o interfa de o clas abstract?
Raspuns:
O interfa conine numai declaraii de metode, fr implementri (metode abstracte); o clas
care implementeaz interfaa trebuie s conin implementri pentru toate metodele interfeei
8

(posibil implementri nule) sau s fie declarat clas abstract. O clas abstract conine cel
puin o metod abstract, dar poate avea implementri pentru oricte alte metode. Utilizarea
claselor abstracte implic utilizarea motenirii, pe cnd o interfa poate fi implementat
indiferent de poziia clasei n ierarhia de clase.

6. Ce se poate ntmpla dac ntr-o metod este generat o excepie care nu este declarat n
clauza throws a metodei? (Explicai toate cazurile pe care le considerai posibile).
Raspuns:
Dac ntr-o metod este generat o excepie care nu este declarat n clauza throws a metodei,
pot fi deosebite urmtoarele situaii:
- excepia poate fi una dintre cele pentru care metoda are o clauz catch, care o trateaz;
- excepia poate fi de un subtip al unui tip prevzut n clauza throws a metodei, fiind
propagat n punctul de apel;
- excepia este neverificabil, conducnd probabil la terminarea execuiei programului.

7. Explicai cum se execut metodele sincronizate.
Raspuns:
Pentru a executa o metod sincronizat, firul de execuie din care se face apelul trebuie s
obin lactul obiectului pe care este apelat metoda. Dac lactul este liber, execuia metodei
poate ncepe. Pe durata execuiei nici un alt fir nu poate executa o metod sincronizat pentru
acelai obiect. Dac solicit acest lucru, firul va fi pus n ateptare pn la eliberarea
lactului. Cnd lactul devine liber, va fi ales ntr-o ordine oarecare unul din firele de
execuie n ateptare la acel obiect.

8. Dac un program conine la un moment dat 10 obiecte de un anumit tip (clas), cte
exemplare ale codului metodelor statice, ale codului metodelor ne-statice, ale cmpurilor
statice i ale cmpurilor ne-statice ale clasei vor exista n program? De ce?
Raspuns:
Codul metodelor statice i ne-statice ale unei clase se pstreaz n memorie ntr-un singur
exemplar, indiferent de numrul de obiecte active din clasa respectiv, deoarece nu este
modificat pe parcursul execuiei. De asemenea, variabilele statice (variabilele de clas) vor
exista ntr-un singur exemplar. Doar cmpurile (variabilele) de exemplar, care pstreaz
starea unui anumit obiect, trebuie s existe separat pentru fiecare obiect, adic de 10 ori n
acest caz.

9. Cte fire de execuie are un program cu interfa grafic n care s-a creat i activat un
obiect al unei clase derivate din Thread? Explicai.
Raspuns:
Un program cu interfa grafic (GUI) are implicit 2 fire de execuie cnd este lansat: firul
creat pentru execuia metodei main() i firul destinat execuiei codului de tratare a
evenimentelor. Aceasta nseamn c n cazul descris programul va avea 3 fire de execuie.

10. Cte clase ale unui program Java pot conine o metod main()? Cum se face lansarea n
execuie a programului?
Raspuns:
Oricte clase ale unui program Java pot conine o metod main(), ceea ce este util n special
pentru testarea programului. Pentru lansarea n execuie a programului se poate folosi numele
oricrei clase care conine o metod main():
java OClasaCuMetodaMain
n final trebuie desemnat clasa principal a programului i lansarea n execuie se va face cu
9

numele clasei respective.

Arhitectura calculatoarelor

1. S se analizeze problemele exponentului i mantisei la reprezentarea numerelor binare n
virgul flotant.
Raspuns:
Notaia tiinific prevede urmtoarea forma pentru un numr X de virgul
flotanta
E
X
M
X X B = , unde X
M
reprezint mantisa, B reprezint baza si X
E
reprezint
exponentul.
n ceea ce privete exponentul X
E
, pentru a diminua o potenial eroare n cmpul de
exponent se impune cel mai mic numr reprezentabil n cei e bii alocai exponentului. Pe de
alt parte, pentru a reprezenta numrul 0 avnd att exponentul ct i mantisa format din bii
de 0 exponentul se reprezint ntr-un cod exces de 2
e-1
-1, respectiv de 2
e-1
, dependent de
reprezentarea semn-mrime, respectiv complement de 2 a exponentului.
n ceea ce privete mantisa, chiar dac pe parcursul procesrii interne din calculator,
nu este restricionat forma numerelor de virgul flotant, la introducerea datelor n
calculator, precum i la extragerea rezultatelor s-a impus o forma unic, normalizat n care
se mpacheteaz numerele.

2. Soluii de mbuntaire a latenei operaiei de adunare la sumatoare binare paralele.
Raspuns:
Prin prisma parametrului reprezentat de latena operaiei de adunare, la polul cel mai
defavorabil se situeaz sumatoarele paralele pe principiul propagrii seriale a transportului.
Din clasa sumatoarelor avnd la baz acelai principiu mai fac parte sumatoarele carry
completion i Manchester (Kilburn).
La polul opus se situeaz sumatoarele paralele pe principiul anticiprii transportului.
Dificultile de natur tehnologic au condus la soluii de compromis, cum ar fi structura
arborescent multinivel cu anticipare a transportului sau construcii hibride. Derivat din
principiul anticiprii transportului se prezint metoda sumatoarelor paralele pe principiul
omiterii propagrii seriale a transportului, facilitat de proprietatea de prencrcare permis
de tehnologia CMOS. Bazat pe acelai principiu mai avem i sumatoare la care adunarea se
efectueaz prin aa numitul algoritm al sumei condiionat pe principiul selectrii prin
transport a sumei, respectiv sumatoarele paralele pe principiul condiionrii prin transport a
sumei.

3. S se prezinte principalele metode de nmulire a numerelor binare fr semn.
Raspuns:
Prima metod const n utilizarea de numrtoare prin intermediul crora denmulitul Y este
adunat de un numar X (nmulitor) de ori la el nsui. Metoda revendica un timp de calcul
prohibitiv. n ceea ce privete metoda de nmulire convenional, paper and pencil, pentru
implementare n calculator, ea se dovedete ca neadecvat ntruct stocarea intermediar a
produselor de un bit decelate solicit excesiv resursa memorie. O mbuntire sub acest ultim
aspect o reprezint metoda bazat pe formarea n mod iterativ a unui produs parial
cumulativ, uzitnd de iteraia
1
: 2
i
i i i
P P x Y
+
= + , unde P
i+1
este noul produs parial obinut
prin adunarea la precedentul (P
i
) a produsului de un bit al lui Y corespunztor deplasat la
stnga.
O mbuntire echivalent celei de mai sus prin prisma spaiului de memorare
revendicat este metoda bazat pe iteraia compus: :
i i i
P P x Y = + ,
1
1
: 2
i i
P P

+
= .
10


4. S se scoat n relief caracteristicile procedurii Robertson pentru nmulirea numerelor
binare ntregi.
Raspuns:
Procedura Robertson permite nmulirea numerelor binare reprezentate n complement de 2
plecnd de la definiia acestuia din urm n forma
2
2
1 '
1
0
2 2
n
n i
C n i
i
X x x

=
= +

. O alt
caracteristic o reprezint faptul c, n situaia cnd denmulitul Y este negativ, atunci cnd
se realizeaz deplasarea la dreapta, n rangul cel mai semnificativ al produsului cumulativ
trebuie introdus valoarea 1 n loc de 0 la ntlnirea primului bit de 1 din nmulitorul X. n
acest scop, se utilizeaz un bistabil fanion care, iniial este pus pe 0 i este basculat la primul
bit de 1 a lui X, cnd Y este negativ, asigurnd rmnerea fanionului n aceast stare pn la
finele procedurii.

5. S se scoat n relief caracteristicile procedurilor Booth.
Raspuns:
Ambele proceduri ale lui Booth asigur nmulirea binar n complement de 2. ntr-o prim
instan, Booth lanseaz o prim procedur menit a mbunti latena nmulirii dar aceasta
doar n cazul n care nmulitorul X conine iruri de 1-uri, sau iruri de 0-uri. n acest sens,
propune inspectarea simultan a 2 bii. n cazul c perechea de bii
1
01
i i
x x

= , atunci se
execut o operaie de adunare succedat de deplasarea la dreapta, iar n cazul c perechea de
bii
1
10
i i
x x

= , atunci se execut o operaie de scdere succedat de deplasare la dreapta, i n


fine, cnd perechea de bii
1
00
i i
x x

= sau
1
11
i i
x x

= , se executat doar deplasarea la dreapta.


Cnd produsul cumulativ este deplasat la dreapta, bitul de semn este recirculat.
Metoda propus de Booth produce o accelerare a calculelor doar n situaia cnd
nmulitorul prezint iruri de 1-uri sau 0-uri, dar performana execuiei operaiei de nmulire
se poate degrada semnificativ cnd nmulitorul prezint alternri de 0-uri i 1-uri. Aa
numita procedur Booth modificat surmonteaz aceast deficien apelnd la un bistabil-
fanion de istoric, care distinge ntre biii izolai de 0 sau 1 i iruri (2 sau mai muli bii) de 0
sau 1.

6. S se evidenieze caracteristicile soluiei Wallace de implementare a unor structuri
arborescente combinaionale pentru nmulirea binar.
Raspuns:
n detrimentul regularitii cablajului, n scopul reducerii nlimii structurii arborescente de
sumatoare cu conservarea transportului poate fi apelat soluia unui arbore de tip Wallace.
Pentru cazul unor numere de 8 bii, o posibil structur tip arbore Wallace este dat n figur.

11

CSA
1
x
1
Y2
1
x
0
Y2
0
x
2
Y2
2
CSA
2
x
4
Y2
4
x
3
Y2
3
x
5
Y2
5
CSA
3
CSA
4
x
6
Y2
6
x
7
Y2
7
CSA
5
CSA
6
CPA
S
(1)
C
(1)
S
(2)
C
(2)
S
(3)
C
(3)
S
(4)
S
(5)
C
(5)
S
(6)
C
(6)
C
(4)


Caracteristic acestei soluii este faptul c urmrete minimizarea numrului de celule
sumator prin apelarea, ori de cte ori schema o permite, la unele de tip semisumator i
rezervnd uzitarea celor de tip complet doar cnd folosirea lor este inevitabil. Mai punem n
relief faptul c arborele Wallace tinde s obin sumele produselor de un bit (x
i
y
j
)
corespunztoare cifrelor rezultatului final ct mai timpuriu cu putin, intind soluia cea mai
rapid.

7. S se prezinte caracteristicile metodelor de mprire binar.
Raspuns:
Meninnd fix poziia mpritorului X se deplaseaz spre stnga resturile pariale, uzitnd de
iteraia:
1 1
: 2
i i n i
R R q X
+
= . Tentativa de a seta bitul curent al ctului pe 1 se realizeaz
printr-o scdere de ncercare (trial subtraction), iar specificul de rezolvare a problemei
refacerii restului deteriorat prin scderea menionat face distincia ntre procedurile
fundamentale de mprire binar.
Prima metod poart denumirea de mprire cu restaurarea restului. Atunci cnd
2
i
R X < , se adun X la diferena ( 2
i
R X ), adic
1
: 2
i i
R R X X
+
= + sau, altfel,
1 1
:
i i
R R X
+ +
= + , ceea ce implic restaurarea restului. Avem si o alt metoda a crei
caracteristic esenial const n stocarea resturilor pariale pn cnd se cunoate rezultatul
la trial subtraction.
Cea de-a treia metod este denumit mprire fr restaurarea restului (nonrestoring
division). Succesiv atribuirii valorii 1 bitului ctului (q
n-i
=1), avem, i aici apare deosebirea
fa de metoda restoring, o operaie de adunare (
1
: 2
i i
R R X
+
= + ), urmat, i de aceast dat,
de deplasare la stnga.

8. S se specifice caracteristicile metodei de mprire Sweeney-Robertson-Tocher (SRT) cu
baza 2 a sistemului de numeraie.
Raspuns:
Alegerea valorii bitului curent al ctului se realizeaz, la metoda SRT radix 2, prin
investigarea valoric a celor mai semnificativi 2 bii corespunztori resturilor pariale.
n ceea ce privete ctul final, la SRT radix 2 trebuie investit n conversia formei
signed digit n cea binar convenional, fie n manier on-the-fly, fie apelnd la o
suplimentar activare a sumatorului/scztorului.
12

Admind c se apeleaz la un stil de proiectare asincron care s permit profitarea, n
termen de timp, de neactivarea sumatorului/scztorului, procedura SRT radix 2 este cu att
mai rapid cu ct configuraiile binare particulare ale operanzilor genereaz un numr mai
mare de bii de 0 pentru ct.

9. S se deduc iteraia uzitat de metoda Newton-Raphson pentru mprirea binar bazat
pe convergena rapid.
Raspuns:
Metoda Newton-Raphson urmrete obinerea ctului
Y
Q
X
= determinnd, mai nti,
valoarea reciproc
1
X
i nmulind apoi rezultatul cu Y. Pentru calcularea valorii
1
X
, plecm
de la o aproximaie iniial x
0
i, n punctul (x
0
,f(x
0
)), ducem tangenta la curba constituind
reprezentarea grafic a funciei f(x). Tangenta intersecteaz axa Ox n punctul de abscis x
1
.
Repetnd cele descrise, vom obine n mod succesiv, valorile x
2
, x
3
, , iar n urma obinerii
lui x
i
, proxima valoare x
i+1
rezult uzitnd de ecuaia analitic a tangentei n punctul (x
i
,f(x
i
)),
dat de:
'
( ) ( )( )
i i i
y f x f x x x = , n care
'
( )
i
f x reprezint derivata funciei f(x) n punctul
de abscisa x
i
. Dac y=0, avem expresia
1 '
( )
( )
i
i i
i
f x
x x x
f x
+
= = . Aceast metod general este
aplicat la determinarea valorii reciproce
1
X
prin apelare la funcia
1
( ) f x X
x
= a crei
rdcin este
1
x
X
= .

10. S se specifice caracteristicile esenialelor metode de sintez n logic cablat a unitilor
de control de anvergur moderat.
Raspuns:
Metodele eseniale de sintez a unitaii de control de anvergur moderat sunt: metoda State
Table, metoda One-Hot i metoda Sequence Counter. Toate 3 pleac de la descrierea
funcional a unitilor de control, uzual prin ordinogram. Prima metod, State Table,
permite obinerea proiectului celui mai economic prin prisma elementelor de memorare
revendicate de sintez, dar partea combinaional a logicii rezult complicat, dificil de
urmrit, n consecin ntreaga soluie se prezint neatractiv n perspectiva potenialei
depanri a schemelor. Celelalte 2 metode au caracter euristic, fiind mai puin riguroase dect
metoda sistematic State Table, i conducnd la soluii mai puin economice, dar schemele
rezultate sunt uor de urmrit.

Circuite i semnale numerice

1. S se reprezinte un semnal numeric (impuls) i s se defineasc parametrii de baz ai
acestuia.
Raspuns:
13



Parametrii de baz sunt:
T durata de repetiie
T
i
durata impulsului
t
r
timp de ridicare
t
c
timp de coborre
U amplitudinea impulsului

2. Stabilirea punctului de funcionare la o diod semiconductoare.
Raspuns:
Punctul de funcionare se gsete la intersecia dintre caracteristica volt-amper a diodei i
dreapta de sarcin. P punctul de funcionare.


3. Care sunt regimurile de funcionare ale unui tranzistor bipolar. n circuitele integrate care
din regimurile de lucru sunt preferate i de ce?
Raspuns:
Regimurile de funcionare ale unui tranzistor bipolar sunt: regimul blocat, regimul activ,
regimul invers i regimul saturat.
n circuitele integrate regimul blocat i saturat sunt de preferat deoarece sunt regimurile cele
mai stabile ale unui tranzistor bipolar i permit obinerea unor nivele logice de tensiune cu
diferena cea mai mare.

4. Enunai cinci parametri de baz la un circuit numeric integrat.
Raspuns:
Nivelele de tensiune, marginea de zgomot, factorii de ncrcare, timpul de propagare, puterea
consumat.

5. Definii valorile standard ale nivelelor logice de tensiune la circuitele integrate TTL.
Raspuns:
14

V
L
= 0.2V; V
H
= 3.5V

6. Care sunt circuite logice de baz ce pot fi realizate cu diode semiconductoare.
Raspuns:
Circuite logice I, respectiv SAU.

7. S se defineasc timpii de propagare la un circuit integrat numeric.
Raspuns:
Timpii de propagare sunt t
pHL
i t
pLH
.




8. S se defineasc marginea de zgomot, pentru cazul cel mai defavorabil, la un circuit
integrat numeric.
Raspuns:


15






9. Sa se defineasca factorii de ncarcare la un circuit intergrat numeric
Raspuns:
Definiie: Factorul de ncrcare la intrare i la ieirea unui circuit determin regulile de
interconectare ale acestora.

sau
sau
unde N reprezint numrul de pori comandate. Cele dou relaii trebuie satisfcute simultan.

10. Care sunt cele trei componente ale puterii consumate de un circuit integrat.
Raspuns:
Puterea static puterea consumat n regimul de funcionare static (sau de frecvene de
lucru sub 1Mhz) de ctre circuitele logice integrate; aceast component este dat n catalog;
Puterea dinamic puterea consumat n regim de comutare a circuitelor logice integrate;
component este dependent de configuraia sistemului numeric i de frecvena de lucru a
acestuia; ea se calculeaz de ctre utilizator n funcie de particularitatea sistemului.
Puterea dinamic suplimentar putere consumat n regim de comutare a circuitului
numeric; este dependent de schema electronic intern a circuitului integrat; este
componenta rspunztoare de generarea zgomotelor interne n sistemele numerice ce pot crea
grave disfuncionaliti n sistem.

Proiectarea i analiza algoritmilor

1. S se scrie algoritmul de cutare binar ntr-un tablou de ntregi, prin njumtirea
intervalului. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
int cautare_binara(int x){
int s,d,m;
s=0; d=N-1;
do{
m=(s+d)/2;
if(x>tab[m])s=m+1;
16

else d=m-1;
}while(tab[m]!=x&&s<=d);
if(tab[m]==x)return m;
else return -1;}

2. S se scrie algoritmul de sortare Quicksort pentru un tablou de ntregi prin interschimbarea
valorilor de-o parte i de alta a elementului pivot, i aplicarea recursiv a algoritmului
independent pe cele dou partiii rezultate. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
void quick_sort(int l, int r)
{
int i,j,x,aux;
i=l; j=r;
x=tab[(i+j)/2];
do
{
while(tab[i]<x)i++;
while(tab[j]>x)j--;
if(i<=j){aux=tab[i];tab[i]=tab[j];tab[j]=aux;i++;j--;}
} while(i<=j);
if(l<j)quick_sort(l,j);
if(r>i)quick_sort(i,r);
}

3. S se scrie algoritmul de sortare prin interschimbare a unui tablou de ntregi. Se accept
pseudocod, cod C, C++ sau Java.
Rspuns:
void bubblesort()
{
int aux,b;
do
{
b=0;
for(int i=0;i<n-1;i++)
if(a[i]>a[i+1]) {aux=a[i];a[i]=a[i+1];a[i+1]=aux;b=1;}
}while(b);
}

4. S se scrie algoritmul pentru cutarea unui model ntr-un ir de caractere. Se accept
pseudocod, cod C, C++ sau Java.
Rspuns:
function CautareDirecta(var poz:integer):boolean;
var i,j:integer;
begin
i:=-1;
repeat
i:=i+1; j:=0;
while (j < m) and (s[i+j]=p[j]) do j:=j+1
until (j=m) or (i=n-m);
poz:=i;
CautareDirecta:=j=m
end;

5. S se scrie operatorii de inserie i de cutare a unui nod ntr-o list simplu nlnuit cu
chei ntregi, implementat cu pointeri. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
struct nod {
int cheie;
struct nod *urm;
};
struct nod *insereaza_nod(struct nod *lista, struct nod *nodNou) {
17

if (list == NULL)
list = nodNou;
else {
nodNou->urm = list;
list = nodNou;
}
return list;
}
struct nod *cauta_nod(struct nod *lista, int cheie) {
struct nod *p;

for (p = lista; p->cheie != cheie && p != NULL; p = p->urm);
return p;
}

6. S se scrie operatorii pentru adugarea sau extragerea de elemente dintr-o stiv. Se accept
pseudocod, cod C, C++ sau Java.
Raspuns:
struct nod {
int cheie;
struct nod *urm;
};
void push(struct nod **stiva, struct nod *nodNou) {
if (*stiva == NULL)
*stiva = nodNou;
else {
nodNou->urm = *stiva;
*stiva = nodNou;
}
}
struct nod *pop(struct nod **stiva) {
struct nod *p;

if (*stiva == NULL)
return NULL;
p = *stiva;
*stiva = (*stiva)->urm;
return p;
}

7. S se scrie operatorul de inserie a unui arbore binar ordonat ce respect proprietatea c
pentru fiecare nod cheile din stnga sunt mai mici ca i cheia din nod iar cheile din dreapta
mai mari dect cheia din nod. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
struct nod {
int cheie;
struct nod *stang, *drept;
};
void inserare(struct nod **radacina, struct nod *nodNou) {
struct nod *t;

t = *radacina;
if (t != NULL ) {
if (nodNou->cheie < t->cheie)
inserare(&t->stang, nodNou);
else
inserare(&t->drept, nodNou);
}
else {
*radacina = nodNou;
}
}

18

8. S se scrie structura de date aferent i algoritmul pentru parcurgerea unui graf n
adncime. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
cautaInAdancime(graf g, nod x) {
nod y;
marc[x] = vizitat;
for (fiecare nod y adiacent lui x) do
if (marc[y] == nevizitat) then
cautaInAdancime(g, y);
}
traversareInAdancime(graf g) {
nod x;
for (fiecare nod x din g) do
marc[x] = nevizitat;
for (fiecare nod x din g) do
if (marc[x] == nevizitat ) then
cautaInAdancime(g, x);
}

9. S se scrie algoritmul de determinare al arborelui de acoperire minim pentru un graf
folosind metoda lui Prim de selecie a arcului minim, din aproape n aproape, ce leag
mulimea nodurilor vizitate de mulimea nodurilor nevizitate. Se accept pseudocod, cod C,
C++ sau Java.
Raspuns:
prim(graf g) {
initializeaza multimea A a arcelor arborelui de acoperire T cu multimea vida
initializeaza multimea N nodurilor arborelui de acoperire T cu un nod
oarecare din g, considerat nodul de pornire
while (N nu contine toate nodurile grafului g) do {
alege arcul (u,v) de pondere minima care uneste un nod u din N cu un
nod v din g care nu este in N
adauga arcul (u,v) in multimea A
adauga nodul v in multimea N
}
}

10. S se scrie algoritmul de determinare al arborelui de acoperire minim pentru un graf
folosind metoda lui Kruskal de inserie a arcelor n ordine cresctoare a ponderilor, ns fr a
crea cicluri. Se accept pseudocod, cod C, C++ sau Java.
Raspuns:
kruskal(graf g) {
initializeaza arborele de acoperire A cu multimea vida
for (fiecare nod v din g) do
creaza o componenta conexa formata doar din v
sorteaza arcele grafului g in ordinea crescatoare a ponderilor
for (fiecare arc (u,v) din g in ordinea ponderilor) do
if (u si v apartin unor componente conexe diferite) {
A = A U {(u,v)}
uneste cele doua componente
}
}

Fundamente de inginerie software

1. Cum se reprezinta intr-o diagrama UML de clasa relatia intre o clasa Vagon si o clasa
Tren considerand ca un tren este compus din unul sau mai multe vagoane si ca un obiect
Vagon poate fi refolosit in relatie cu diferite obiecte Tren. Precizati cum se numeste acest
tip de relatie descris si care au fost indiciile care v-au ajutat sa il identificati.
19


Raspuns:
Relatia descrisa se numeste agregare, si se reprezinta in UML ca in figura de mai jos:
Relatia intre Vagon si Tren este in mod clar o relatie de tip HAS-A (intreg-parte),
adica un obiect Tren este compus din obiecte Vagon. Astfel, am oscilat intre o relatie de
agregare si una de compozitie. Indiciul din enunt care a facut diferenta este acela ca obiectel
Vagon pot fi refolosite in relatie cu diferite obiecte Tren, ceea ce inseamna ca viata
obiectelor Vagon este distincta de cea a obiectelor Vagon. Astfel, relatia este una de
agregare.

2. Daca intr-un sistem ar trebuie sa favorizati performanta de timp, ati opta pentru stilul
arhitectural Layered (arhitectura stratificata)? Dar daca ar trebui sa favorizati securitatea?
Justificati succint raspunsul.
Raspuns:
Daca trebuie favorizata performanta de timp, stilul architectural Layered, NU este
recomandat. Motivul este acela ca apelarea unui serviciu la nivelul cel mai din exterior
(accesibil clientului aplicatiei) implica cel mai adesea o dubla parcurgere a tuturor nivelurilor
/ straturilor, adica atat pentru transmiterea serviciului, cat si pentru receptarea
rezultatului/rezultatelor.

Daca insa trebuie favorizata securitatea stilul architectural Layered, este extrem de indicat!
Motivul este acela ca fiecare layer poate oferi un nivel distinct de securitate, ce poate fi
verificat atunci cand acel nivel este accesat. In plus, faptul ca fiecare nivel comunica doar cu
nivelul imediat inferior (ca si client) respectiv cu nivelul imediat superiar (ca si server) face
ca incapsualrea datelor, si deci securitatea lor sa fie mai buna.

3. Precizati daca urmatoarea afirmatie este adevarata sau falsa, si justificati succint (1-2 fraze)
raspunsul: La testare blackbox avem nevoie si de cod pentru a verifica daca datele de test
acopera toate caile din program?
Nota: raspunsurile adevarat/fals neinsotite de frazele explicative nu se puncteaza!
Raspuns:
Afirmatia este fundamental FALSA. Motivul este acela ca testarea blackbox, prin insasi
definitia sa, nu implica cunoasterea codului. In testarea blackbox, cazurile de test se scriu
strict pe baza contractului modului testat, adica a (specificatiilor ?) datelor de intrare,
respectiv a celor de iesire.

4. Care este diferenta intre urmatoarele tipuri de relatii intre clase: asociere, agregare,
compozitie?
Raspuns:
Asocierea reprezinta forma cea mai slaba (si mai generala) in care putem exprima relatia
dintre doua clase. Atunci cand spunem ca o relatie este de asociere tot ce stim este ca intre
cele doua clase exista o relatie.

Atunci cand afirmam ca o relatie intre doua clase este una de agregare sau compozitia,
inseamna ca din descriere cerintelor putem spune ca intre cele doua clase implicate exista o
relatie de tip HAS-A, o relatie de tip parte-intreg (containment). Mai departe, distinctia
intre agregare si compozitie este de data masura in care obiectele parte pot fi reutilizate de
diferite obiecte intreg: daca obiectele parte sunt create si folosite exclusiv de catre un
20

singur obiect, atunci relatia este una de compozitie; in caz contrar, daca obiectele parte pot
fi folosite shared de catre mai multe obiecte intreg atunci relatia este una de agregare. Pe
scurt: compozitia este o forma de relatie mai stransa decat agregarea,

5. Enuntati legea lui Brooks, referitoare la extinderea echipelor de dezvotatori in timpul
proiectului. De asemenea precizati, argumentand succint, valoarea de adevar a urmatoarei
afirmatii: Intr-un sistem cu o modularitate foarte buna legea lui Brooks nu se aplica pentru
ca activitatea de construire a sistemului este o activitate perfect partitionabila. (Nota:
precizarea valorii de adevar a afirmatiei, neinsotita de argumentatie nu se puncteaza)
Raspuns:
Legea lui Brooks afirma ca adaugarea de programatori (ingineri software) la un proiect aflat
in intarziere, va face ca proiectul sa intarzie si mai mult. Motivul este acela, ca un realizarea
unui proiect software nu este o activitate perfect partitionabila, ci dimpotriva una ce implica
foarte multe interactiuni. Iar adaugarea unor noi programatori ar implica o repartitionare
(uneori imposibil de realizat) a task-urilor din proiect. In plus fiecare om adus in plus, aduce
dupa sine relatii de comuncare mai complexe.

In sisteme cu modularitate foarte buna, creste intr-adevar gradul de partitionare, si deci
capacitatea de diviziune a task-urilor intre membrii echipei. Totusi, legea lui Brooks ramane
valabila, din 2 motive: (i) surplusul de comunicare este semnificativ indiferent de
modularitate si (ii) oricat de modular ar fi proiectat un sistem, totusi nu se poate ca sistemul
sa devina unul perfect partitionabil.

6. Precizati daca urmatoarea afirmatie este adevarata sau falsa, si justificati succint (1-2 fraze)
raspunsul: Testele whitebox nu pot garanta ca toate erorile dintr-o functie vor fi detectate,
dar daca sunt dublate de teste blackbox se poate garanta ca vor fi gasite toate erorile din
respectiva functie.
Nota: raspunsurile adevarat/fals neinsotite de frazele explicative nu se puncteaza!
Raspuns:
Afirmatia este fundamental FALSA. Nici o forma de testare, si nici o combinatie de tehnici
de testare nu pot vreodata garanta absenta bug-urilor. Asa cum spunea Dijkstra, testarea poate
evidentia doar prezenta bug-urilor, dar nu poate niciodata garanta absenta lor. Desigur,
utilizarea concertata a mai multor tehnici de testare contribuie la reducerea numarului de bug-
uri, dar ceea ce face enuntul de mai sus, complet fals este cuvantul garanta.

7. Precizati daca urmatoarea afirmatie este adevarata sau falsa, si justificati succint (1-2 fraze)
raspunsul: Testarea de regresie este bazata pe ideea ca atunci cand se opereaza schimbari
intr-un modul, imediat dupa modificare eforturile de testare trebuie concentrate exclusiv
asupra asupra modulului modificat.
Nota: raspunsurile adevarat/fals neinsotite de frazele explicative nu se puncteaza!
Raspuns:
Afirmatia este FALSA. Ideea de baza in testarea de regresie este reluarea unui subset de teste
care au fost rulate anterior. Desigur, aceste teste se refera la modulul modificat, dar in nici un
caz exclusiv asupra sa. In testarea de regresie, pe langa testele ce vizeaza modulul modificat
se mai reiau doua clase de teste: (i) un set de teste reprezentative prin care se retesteaza
principalele functionalitati ale sistemului; (ii) un set de teste ce vizeaza modulele direct
conectate cu modul modificat, avand in vedere ca impactul schimbarii ar putea sa le fi
influentat in primul rand pe acestea.

21

8. Precizati, si argumentati succint daca relatia descrisa de diagrama UML de mai jos
modeleaza sau nu cazul unui telefon dual-sim (care poate tine simultan doua cartele) cu
cartele care pot fi oricand reutilizate si in alt telefon.

Raspuns:
Relatia descrisa de diagrama UML NU modeleaza intrutotul ceea ce sustine enuntul de mai
sus! Intr-adevar relatia de mai sus, indica faptul ca un obiect telefon are in compozitia sa un
numar de cartele ce poate varia intre niciuna si doua cartele... dar partea care nu este bine
interpretata se refera la reutilizarea oricand in alt telefon. Relatia din figura este una de
compozitie, marcata prin rombul negru, si deci obiectele Cartela sunt construite specific
pentru un anumit obiect Telefon, putand fi folosite doar de catre acel obiect.

9. Considerand urmatoarele doua procese de dezvoltare: Waterfall si respectiv Extreme
Programming, precizati si argumentati succint pe care l-ati alege daca ati fi pe rand in
urmatoarele cazuri:
- Cazul 1: trebuie sa reimplementati de la zero, un sistem complex (cca. 1 milion de
linii de cod) pentru gestiunea personalului si a salariilor, care sa inlocuiasca sistemul
existent in prezent, fara nici o modificare de cerinte.
- Cazul 2: aveti de construit un sistem pentru plata taxelor si impozitelor pentru tara
imaginara Ainamor cu o legislatie haotica si in permanenta modificare
Nota: cele 2 cazuri sunt complet independente.
Raspuns:
Pentru Cazul 1 as alege procesul de dezvoltare Waterfall din urmatoarele motive: (i) e
vorba de un sistem de mari dimensiuni, ce implica deci echipe de mari dimensiuni, ceea ce
face ca un proces mai formal sa fie dezirbabil; in plus (ii) cerintele sistemului sunt f. bine
cunoscute, si clar fixate, deci nu exista riscul de a trebui sa reluam toate fazele procesului
(principalul dezavantaj la Waterfall) datorita unei schimbari de cerinte.

Pentru Cazul 2 as alege in mod evident Extreme Programming datorita cerintelor in
permanenta schimbare. Din acest motiv avem nevoie de un proces care sa se poata adapta
bine, si mai ales rapid schimbarilor de cerinte, iar Waterfall nu corespunde acestor cerinte.
Extreme Programming, are avantajul ca este un proces iterativ si incremental, si in plus are
durata iteratiilor scurte.

10. Precizati daca urmatoarea afirmatie este adevarata sau falsa, si justificati succint (1-2
fraze) raspunsul: Procesul de dezvoltare in cascada (waterfall) este recomandat in
majoritatea proiectelor intrucat, datorita structurii sale rigide, poate constrange clientul sa
descopere, inca de la inceput, toate posibilele cauze de schimbare din sistem.
Nota: raspunsurile adevarat/fals neinsotite de frazele explicative nu se puncteaza!
Raspuns:
Afirmatia este FALSA. Procesul de dezvoltare Waterfall este recomandat in foarte putine
cazuri, tocmai datorita structurii sale rigide, nebazata pe iteratii si incremente, ce impiedica o
adaptare rapida la schimbari de cerinte. Cu atat mai putin este recomandat procesul Waterfall
atunci cand vine vorba de un sistem unde cerintele nu sunt bine intelese. Structura rigida a lui
Waterfall NU poate sub nici o forma constrange (determina) clientul sa descopere de la
inceput toate posibilele cauza de schimbare... Aceasta este o utopie. Chiar si in sisteme unde
cerintele sunt clar specificate de la inceput, pot interveni in timp schimbari ce nu pot fi sub
22

nici o forma prevazute. De aceea, trebuie favorizate procesele de dezvoltare (iterative si
incrementale) care pot face fata schimbarilor neasteptate.

Fundamente de ingineria calculatoarelor

1. Sa se clasifice, defineasca pe o masina MIPS (Microprocessor with Interleaved Pipeline
Stages) conventionala cu 5 stagii tipurile de hazarduri de date.
Raspuns:
Clasele de hazarduri sunt:
- RAW (Read After Write)
- WAW (Write After Write)
- WAR (Write After Read)
Definite global, prin hazardurile de date ale unei masini pipeline se intelege alterarea
cauzata de executia suprapusa a instructiilor ordinii acceselor (citiri si scrieri) la date in
raport cu ordinea acestora specifica unei masini non-pipeline, cu executia in secventa a
instructiunilor. Pentru a defini in particular clasele anterior mentionate, admitem ca, in fluxul
de instructiuni al unui program, instructia i o precede pe instructia j si ambele se refera la o
anumita data.
In conditiile specificate, un hazard de date de tip RAW apare atunci cand succesiva
instructie j citeste o data pe care anterioara instructie i nu a ajuns inca sa o scrie.
Pe de alta parte, in aceleasi conditii specificate, un hazard de date de tip WAW apare
atunci cand succesiva instructie j scrie o data pe care anterioara instructie i nu a ajuns sa o
scrie.
In fine, in aceleasi conditii specificate, un hazard de date de tip WAR apare atunci cand
succesiva instructie j scrie o data pe care anterioara instructie i nu a ajuns inca sa o citeasca.

2. Sa se specifice pe o masina MIPS (Microprocessor with Interleaved Pipeline Stages)
conventionala cu 5 stagii solutiile de combatere a hazardurilor de date de tip RAW (Read
After Write)
Raspuns:
O prima solutie de combatere a hazardurilor de date de tip RAW o reprezinta asa numita
forward-are (sau bypass-are) implementarea carui mecanism revendica un adaus de
circuistica constand pe de o parte, din circuite comparatoare de campuri ale instructiilor,
menite a detecta hazardul RAW, si pe de alta parte, din asigurarea unor cai de comunicatie
interstagii (via multiplexoare) corespunzator comandate prin rezultatele comparatiilor
anterior amintite.
O a doua solutie de combatere a hazardurilor RAW o reprezinta asa numita pipeline
interlock. La ea se apeleaza cand instructia care provoaca RAW-ul este, in cazul masinii
MIPS, o instructie de incarcare. Data citita din cache-ul de date este acum disponibila in
registrul pipeline abia dupa stagiul al 4-lea (MEM) si pentru surmontarea unei situatii de
dependenta directa cu instructiunea urmatoare este necesara interclasarea unui stall, dupa care
este declansat mecanismul de forwarding.
O a treia solutie de combatere a hazardurilor de date de tip RAW o reprezinta
optimizarea de compilator. Daca se succed operatiile a=b+c si d=e-f, atunci hazardurile RAW
care apar la fiecare dintre cele doua instructii datorita instructiilor de incarcare sunt
surmontate prin programarea de catre compilator a instructiilor in maniera intercalata evitand
astfel RAW-urile

23

3. Sa se analizeze degradarea de performanta prin hazardul de control la masina MIPS
conventionala cu 5 stagii si sa se propuna o solutie de imbunatatire bazata pe interventii in
schemele masinii
Raspuns:
La masini pipeline, hazardul de control este provocat, cu precadere, de instructii de salt, dar si
de alte instructii care modifica starea numaratorului de program (Program Counter- PC).
Astfel la masina MIPS cu 5 stagii, este stitut, ca instructiunea de salt conditionat BEQZ (salt
cand continutul registrului A este zero) prevede in stagiul EX, testarea conditiei (daca
continutul lui A este zero) si calculul adresei de salt (prin adunarea contituntului registrelor
NPC si Imm). Apare astfel o degradare de performanta cand conditia de salt nu e indeplinita
(branch untaken) de 2 cicluri de clock.
Pe de alta parte, degradarea de performanta este de 3 cicluri de clock daca este
indeplinita conditia de salt (branch-ul este taken)
Situatia prezentata se poate ameliora intr-o anume masura prin mutarea testului de
conditie din stagiul de EX in stagiul de ID. De asemenea, calculul adresei de salt poate fi
intreprins in stagiul ID, dar aceasta, pe seama unei investitii suplimentare in circuistica intr-
un sumator destinat adunarii continutului registrilor NPC si Imm. In acest mod, anterior
prezentata penalitate de performanta defavorabila de 3 cicluri de clock se poate reduce la doar
unul.

4. Sa se prezinte solutiile prin care compilatorul asigura scheduling-ul instructiei in branch
delay slot si sa se specifice aspectele favorabile si defavorabile ale fiecarei solutii.
Raspuns:
Sarcina determinarii si programarii instructiei in branch delay slot revine compilatorului. In
acest sens, compilatorul are 3 alternative. In cazul in care aplicarea solutiei from before nu
este posibila, alegerea depinde in mod decisiv de predictie. Anume, daca branch-ul a fost
prognozat la momentul compilarii ca fiind taken, atunci alegerea este de la tinta (from
target). Aceasta solutie, aplicabila cu precadere la buclele de program, poate necesita
repetarea instructinii introduse in branch delay slot cu consecinta corespunzatoare a lungirii
programului. In fine, daca branch-ul a fost prognozat la momentul compilarii ca fiind untaken
atunci alegerea este pe ramura fall-through.


5. Sa se urmareasca modificarea continutului registrului de instructii (Instruction Register
IR), a numaratorului de program (Program Counter PC) si a indicatorului de stiva (Stack
Pointer SP) la executia unei instructii de apelare a unei subrutine, respectiv in cazul unei
intreruperi sau a unei devieri (trap).
Raspuns:
24

Prin prisma operatiilor elementare implicate, situatiile constand din executia unei instructiuni
de CALL a , care apeleaza subrutina de la adresa a, sau a receptarii unei cereri de intrerupere
sau de trap, implica o derulare asemanatoare a evenimentelor.
Pentru simplitate, vom considera ca avem codul de operatii si adresa instructiilor de aceeasi
lungime de 1 byte (8 biti)
Consideram urmatoarea organizare a memoriei principale:

Adresa Memoria principala Starea imediat inainte de fetch-ul
instructiei de CALL
IR=SUB; PC=100; SP=240

Starea imediat dupa fetch-ul instructiei
de CALL
IR=CALL; PC=102; SP=240

Starea in momentul final al instructiei
de CALL
IR=CALL; PC=200; SP=239

100 CALL
101 200
102 ADD

200 Corpul
subrutinei
RETURN

239 102
Regiunea stivei 240 150


6. Sa se prezinte la nivel bloc conditiile de arbitrare centralizata cu avantaje si dezavantaje
Raspuns:
Chiar daca exista si solutii hibirde, constand din combinatii dintre ele, drept fundamentale
sunt considerate urmatoarele metode de arbitrare centralizata: daisy-chaining; polling si
independent requesting.
La primele doua, potentialii competitori la castigul magistralei comunica arbitrului
central (uzual inclus in chip-ul CPU Central Processsing Unit) doleanta lor de a deveni bus
master pe o linie fizica (de REQUEST). CPU-ul capteaza si stocheaza cererea, uzual intr-un
bistabil intern si apoi raspunde in mod specific pentru fiecare dintre metode, Astfel, la metoda
daisy chaining exista o singura linie de raspuns (de GRANT), care este conectata fizic,
cascadand unitatile competitioare. Metodele daisy chaining se caracterizeaza prin simplitate
constructiva, cost redus dar prezinta si dezavantaje (fiabilitatea redusa si favorizarea anumitor
dispozitive)
In ceea ce priveste metoda de polling, numarul de conexiuni prin care arbitrul
comunica castigatorul competitiei creste la valoarea data de

log
2
n +1

, unde n este numarul


unitatilor competitoare si barele semnifica cel mai mic intreg mai mare sau egal cu valoarea
logaritmului.
Cea mai costisitoare metoda de arbitrare centralizata este independent requesting,
caracterizata prin faptul ca fiecare unitate comunica in mod independent cererea sa de a
deveni bus master. Avem deci n linii de REQUEST si tot n linii pe care arbitrul poate
comunica raspunsul (liniile de ACKNOWLEDGE).

7. Sa se scoata in relief modul specific de functionare al operarii numerelor de virgula
floatanta.
Raspuns:
In general, operarea in virgula flotanta provoaca un numar sporit de hazarduri de structura.
Latenta variata a unitatilor de virgula flotanta face sa creasca numarul hazardurilor de
date de tip RAW care necesita intercalarea unui numar considerabil de cicluri de stall chiar si
in conditiile existentei mecanismelor de forwarding.
25

Pe de alta parte, aceeasi latenta, determina scrierea simultana, in acelasi ciclu de
clock, a posibil mai mulor instructii, facand necesara decalarea acestor operatii.
De asemena pot aparea hazarduri de date de tip WAW. Solutionarea unor astfel de
situatii implica capacitatea de buffer-are a rezultatului astfel incat scrierile sa fie inseriate ca
la o masina cu functionare non-pipeline.
Mai mentionam ca specificul operarii la virgula flotanta da posibilitatea cresterii
situatiilor de alterare a starilor de precise exeception, in cazul exceptiilo

8. Sa se scoata in relief elementele comune si cele distinctive ale metodelor scoreboarding si
Tomasulo de implementarea scheduling dinamic.
Raspuns:
Specific metodei de scoreboarding este faptul ca stagiul de ID (decodificarea instructiunilor si
citirea operanzilor) al masinii MIPS conventionale este spart in substagiul de Issue si cel de
Read operands. Fiecare instructiune este monitorizata prin intermediul a trei structuri de
date: Instruction status, Functional Unit Status si Register Status. Urmarirea instructiilor se
face prin intermediul pilei de registrii, ceea ce exclude folosirea mecanismelor de forwarding,
fiind necesare, de asemenea, cicluri de clock distincte pentru stagiile de Write result si
Read operands. La aceste aspecte defavorabile ar mai fi de adaugat aglomerarea traficului
la nivelul magistralei specific metodei de scoreboard
Pe de alta parte, metoda lui Tomasulo utilizeaza si ea de structuri de date (Reservation
Stations Status, Register Status) dar acestea sunt semnificativ mai simple. In schimb metoda
prevede la fiecare unitate de structura a unor registre buffer denumite reservation stations.
Prin intermediul acestora Tomasulo solutioneaza bazat pe strategia de register renaming
antidependentele (provocatoare de WAR), si dependentele de iesire (provocatoare de WAW).
Se prevede o magistrala comuna CDB (Common Data Bus) care interconecteaza unitatile de
structura nu numai cu pila de registrii ci si cu statiile de rezervare.

9. Sa se arate cum se obtine imbunatatirea controlului pipeline aplicand optimizarea de
compilator bazata pe loop unrolling la bucla de program care incrementeaza cu o valoare
scalara elementele unui vector.
Raspuns:
Se considera conditiile ipotetice adoptate la curs.
Tradusa in termenii limbajului de asamblare MIPS prin intercalarea ciclurilor de stall,
bucla apare astfel:
Numar cc
Loop: L.D F0, 0(R1) 1
Stall 2
ADD.D F4, F0, F2 3
Stall 4
Stall 5
S.D F4, 0(R1) 6
DADDUI R1, R1, #-8 7
Stall 8
BNE R1,R2,loop 9
Stall 10

Prin aplicarea loop unrolling si compiler scheduling, sunt eliminate toate stall-urile si se
imbunatateste simtitor raportul dintre instructiile active (LD, ADDD, SD) si cele de balast
astfel (DADDUI, BNE):

26

Numar cc
Loop: L.D F0, 0(R1) 1
LD F6, -8(R1) 2
LD F10, -16(R1) 3
LD F14 -24(R1) 4
ADD.D F4,F0,F2 5
ADD.D F8,F6,F2 6
ADD.D F12,F10,F2 7
ADD.D F16,F14,F2 8
S.D F4, 0(R1) 9
S.D F8, -8(R1) 10
DADDUI R1,R1,#-32 11
S.D F12, 16(R1) 12
BNE R1, R2, loop 13
S.D F16, +8(r1) 14

10. Sa se aplice strategia de optimizare bazata pe loop unrolling la masina superscalara cu
lansarea simultana a doua instructiuni.
Raspuns:
Caracteristic unei masini superscalare este lansarea in executie simultana a mai multor
instructii. Atunci cand sunt lansate doua instructiuni in mod uzual, una este executata de
unitatea de operare a intregilor(inclusiv instructiunile de incarcare si memorate pentru virgula
flotanta) si cealalta este executata de unitatea de operare in virgula flotanta, cele doua unitati
avand pile de registre proprii, independente. In conditiile ipotetice admise la curs, solutia
bazata pe loop unrolling la masina superscalara cu lansarea simultana a doua instructiuni,
simplifica desfacerea buclei de 5 ori, conducand la urmatoarea situatie

Numar cc
Loop: L.D F0, 0(R1) 1
LD F6, -8(R1) 2
LD F10, -16(R1) ADD.D F4,F0,F2 3
LD F14 -24(R1) ADD.D F8,F6,F2 4
LD F18, -32(R1) ADD.D F12,F10,F2 5
S.D F4, 0(R1) ADD.D F16,F14,F2 9
S.D F8, -8(R1) ADD.D F20,F18,F2 10
S.D F12, -16(R1) 12
DADDUI R1,R1,#-40 11
S.D F16, +16(R1) 12
BNE R1, R2, loop 13
S.D F20, +8(r1) 14

Sisteme de operare

1. Definii un sistem de operare i enumerai (cu o scurt caracterizare) cel puin 4
responsabiliti ale unui sistem de operare.
Rspuns:
Un sistem de operare este un set de programe care:
- asigur gestionarea resurselor unui sistem de calcul, implementnd algoritmi care s
maximizeze performanele i
- realizeaz o interfa cu utilizatorul, extinznd i simplificnd setul de operaii
27

disponibile.
Principalele responsabiliti:
- interfaa cu utilizatorul, cu 2 componente principale:
a) comenzi introduse direct de utilizatori de la terminale;
b) apeluri sistem, folosite n programe, similar cu apelurile de funcii.
- gestionarea proceselor, care face posibil existena simultan a mai multor procese n
evidena sistemului, crearea i terminarea proceselor, comunicarea ntre procese;
- gestionarea fiierelor: crearea i tergerea, controlul accesului, citirea i scrierea;
- gestionarea memoriei: o parte a memoriei este destinat sistemului de operare, restul se
mparte ntre programele utilizator, prin mecanismul de memorie virtual, n care este
implicat i un suport de memorie extern.

2. Calculai numrul total de blocuri necesar pentru un fiier cu dimensiunea de 1 Moctet ntr-
un sistem de fiiere UNIX cu blocuri de 1 koctet i adrese de bloc pe 4 octei.
Rspuns:
Numrul de blocuri de date necesar:
1 Moctet (1024 Koctet) / 1 koctet = 1024 blocuri
Primele 10 blocuri sunt adresate direct. Trebuie folosit i adresarea indirect simpl, care
permite accesul la 1 koctet (1024 octei) / 4 octei = 256 blocuri. Nu este suficient, se trece la
dubl indirectare, pentru 1024-10-256 = 758 blocuri de date. Acestea necesit nc 758/256 =
3 blocuri de simpl indirectare.
Numrul total de blocuri: 1024 (date) + 1 (simpl indirectare) + 1 (dubl indirectare) +3
(simpl indirectare) = 1029

3. Enumerai (cu o scurt caracterizare) cel puin 5 directoare de pe primul nivel al unui
sistem de fiiere UNIX.
Rspuns:
Directoare de pe primul nivel al unui sistem de fiiere UNIX:
a) /boot sau /kernel - conine imaginea nucleului sistemului de operare;
b) /dev - conine fiiere care corespund perifericelor conectate la sistem;
c) /home - conine directoarele gazd ale utilizatorilor;
d) /bin - conine principalele comenzi ale sistemului (uneori doar legtur la /usr/bin);
e) /etc - conine fiiere i directoare destinate n special administrrii sistemului;
f) /tmp - conine fiiere temporare create de diverse comenzi ale sistemului sau de
utilizatori.

4. Care sunt activitile efectuate de un interpretor de comenzi (Shell) UNIX pentru stabilirea
ambianei de execuie a unei comenzi?
Rspuns:
Activitile efectuate de un interpretor de comenzi (Shell) UNIX pentru stabilirea ambianei
de execuie a unei comenzi sunt:
- mprirea liniei de comand n atomi;
- interpretarea caracterelor de citare;
- redirectarea intrrilor i ieirilor;
- substituia variabilelor de mediu;
- substituia comenzilor;
- expandarea numelor de fiiere.

5. Prin ce se deosebete o funcie de bibliotec de un apel sistem?
Rspuns:
28

Codul pentru tratarea complet a funciilor de bibliotec se ataeaz fiecrui program care
apeleaz funcia. Codul pentru tratarea apelurilor sistem face parte din nucleul sistemului de
operare i nu este ataat fiecrui program. Execuia apelurilor sistem se face n regim
privilegiat.

6. Care sunt categoriile de utilizatori la stabilirea drepturilor de acces ntr-un sistem de fiiere
UNIX i cum se interpreteaz drepturile de acces la fiierele obinuite i la directoare?
Rspuns:
Pentru stabilirea drepturilor de acces ntr-un sistem de fiiere UNIX se consider 3 categorii
de utilizatori:
a) proprietarul unui fiier/director; b) grupul proprietarului; c) ali utilizatori. Pentru fiecare
categorie se controleaz dreptul de citire, de scriere i de execuie. n cazul directoarelor
dreptul de execuie are semnificaia de a permite traversarea acelui director.

7. Explicai cum se execut apelul sistem UNIX cu prototipul:
int fork(void)
Rspuns:
Apelul sistem int fork( void) se folosete pentru a crea noi procese. Procesul nou creat devine
fiul procesului din care s-a apelat fork(), iar procesul apelant este printele noului proces.
Codul noului proces este copia codului procesului printe, procesele partajnd acelai
segment de cod, dar noul proces va avea propriile segmente de stiv i de date, copiate de la
printe. Apelul returneaz valoarea 0 n fiu i PID-ul noului proces n printe. Nu se impune o
anumit ordine de execuie ntre cele dou procese.

8. Care este rolul semnalelor in UNIX? Precizai cum se pot genera semnale i ce aciuni
poate specifica un proces pentru un anumit semnal.
Rspuns:
Semnalele UNIX constituie un mecanism elementar de comunicare ntre procese i o
modalitate de tratare a unor evenimente asincrone cu execuia unui proces. Ele pot fi
considerate ca ntreruperi software. Surse de semnale pot fi:
- acionarea anumitor taste/combinaii de taste (ex. Ctrl-C);
- apariia unor excepii hardware;
- apelul sistem sau comanda kill;
- apariia unor condiii software particulare (ex. terminarea unui proces fiu).
Un proces poate specifica pentru un semnal una din urmtoarele aciuni:
- ignorarea semnalului (nu se pot ignora SIGKILL i SIGSTOP);
- interceptarea i tratarea semnalului;
- aplicarea aciunii implicite (de regul terminarea procesului).

9. Care este rolul unui pipe i n ce condiii se poate utiliza?
Rspuns:
Pipe-ul este un mecanism de comunicare unidirecional ntre procese i funcioneaz similar
cu comunicarea ntre un proces i un fiier. Un pipe folosete ns 2 descriptori de fiier, de
regul un proces scriind n pipe, iar altul citind din pipe. Octeii citii dispar din pipe. ntre
cele 2 procese care comunic prin pipe trebuie s existe o relaie de rudenie, de regul
procesul care creeaz pipe-ul fiind printele celuilalt proces. Cnd captul de citire al unui
pipe este nchis, procesul care scrie poate primi semnalul SIGPIPE. Cnd captul de scriere
este nchis, procesul care citete va primi semnalarea de sfrit de fiier (un apel read
returneaz 0).

29

10. Ce relaie exist ntre un proces i un fir de execuie? n ce moduri se pot implementa
firele de execuie?
Rspuns:
Un fir de execuie reprezint un fir de control separat n cadrul unui proces. Astfel, un proces
poate avea mai multe fire de execuie care partajeaz resursele procesului, n particular
spaiul de memorie al procesului. Resursele proprii ale unui fir de execuie sunt n general
limitate la stiv i la un numrtor de program Exist dou modaliti principale de
implementare a firelor de execuie: a) n spaiul utilizator, ceea ce nseamn c nucleul
sistemului de operare nu cunoate existena lor i b) n spaiul nucleu, ceea ce face ca nucleul
s le ia n considerare la planificarea pentru execuie.

Bazele inteligenei artificiale

1. Definiti conceptele: cunoastere, deductie logica.
Rspuns:
Cunoaterea este fenomenul prin care se face un transfer de informaii de la obiect la
observator. n cursul acestui transfer sunt recepionate numai caracteristicile eseniale. Deci
cunoaterea nu are un caracter enciclopedic, avnd loc o abstractizare i o filtrare a
informaiei recepionate.
Structural cunoaterea este format din piese de cunoastere ( numite entitti ) prin care sunt
reprezentate diversele caracteristici ale fenomenului observat. Pentru construirea unei piese
de cunoatere se utilizeaz doua noiuni:
a) concepte (rezultatele unui proces de abstractizare prin care se deduc acele carateristici ce
permit ncadrarea obiectului intr-o anumit clas).
b) instante (caracteristici individuale care aparin unui obiect).
Deduciile logice (raionamentul) reprezint un lan de judeci a cror obiectiv este obinerea
unor noi adevruri. Prin judecat se nelege o propoziie simpl prin care se afirm sau se
neag ceva i care ntotdeauna prezint valoarea adevrat. Judecile pot fi de tip:
- predicie, dac ofer un raport ntre un obiect i o nsuire a acestuia i de tip
- relaie dac reflect un raport ntre dou sau mai multe obiecte.

2. Informaiile despre un fenomen din lumea real sunt reprezentate n bazele de cunotine
prin intermediul clauzelor Horn? Cum se definete o clauz Horn? Dati un exemplu.
Rspuns:
O clausa Horn este o construcie de forma :
( x
1
)( x
n
) A
1
.. A
m
- B
1
V V B
k

unde A
i
i B
i
sunt formule atomice (propozitii elementare) iar n, m i k pot fi eventual 0.
Pentru cazul in care k = 1 clauzele poart denumirea de clause Horn, Utiliznd acest tip de
reprezentare devina posibil cuantificarea propozitiilolor si frazelor din limabj natiural care
conin informaiil relative la fenomenul descris prin construcii care vor permite accesul la
semantica fenomenului descris. De exemplu :
- Fraza Este iarna si este frig conduce la clausa Horn :
este (iarna),este(frig)
- Relaiile dintre componentele fenomenului : Este luna ianuarie atunci Este iarna si
este frig conduce la clausa Horn :
este_luna(ianuarie) este (iarna),este(frig)

3. Clauzele Horn utilizate pentru descrierea cunotinelor conin constante i variabile. Care
este semnificaia conceptului de constant, respectiv variabil? Care sunt strile in care poate
fi prezenta o variabila i ce reprezint respectivile stri? Eemplificai aceste concepte.
30

Rspuns:
In propozitiile elementare care apar in cadrul unei clause Horn, cuantificarea proprietilor
unei entiti (obiect, fenomen descris) este asigurat de atribute. Aceste atribute pot fi
constante caz in care definesc o proprietate care nemodificabil n contextul bazei de
cunotine. De exemplu :
este (iarna),este(frig)

Constantele iarn i frig sunt nemodificabile n baza de cunotine.
Dac atributul este de tip variabil atunci definete un nume de clas de atribute de acelai
tip. Maina de inferene va incerca n baza intrebrilor adresate s determine o valoare
constant pentru atribut. De exemplu :
este (Anotimp),este(frig)

unde clasa Anotimp urmeaz s fie instaniat la o valoare constant (de exemplu constanta
iarna, toamn etc.

4. Care este diferena intre aspectul declarativ si procedural al mecanismului de inferena in
Prolog. Dai un exemplu.
Rspuns:
Cele doua moduri de interogare prin care un utilizator se poate adresa mecanismului de
inferen i strategiilor complementare acestuia sunt cunoscute sub denumirea de:
- mod de lucru declarativ;
- mod de lucru procedural.

- Interogarea declarativ : - n modul de lucru declarativ se verific dac relaia este
adevrat pentru variabilele declarate prezente, singurul rspuns posibil fiind DA sau NU.
De exemplu:
?- aparine (2, [ 1,2,3,4 ] ) - variabilele sunt de tip intrare ,intrare
Yes.

- Interogarea procedural : - se urmrete obinerea unui rezultat ,cel puin una dintre
variabile fiind de ieire. Pentru procedura de apartenen ntrebarea se pune astfel: "Care
sunt elementele care aparin listei specificate ?"
?- aparine ( X,[ 1,2,3,4 ] ) - variabilele sunt de tip ieire ,intrare
X=1
X=2
X=3
X=4
4 soluii.

5. In ce const aspectul de tip determinism si respective nedeterminism din bazele de
cunotine? Care este rolul elementului ! (cut).
Rspuns:
Maina de inferen in momentul in care actioneaza asupra unei baze de cunotine in
contextual unei ntrebri adresate de utilizator va furniza intregul spaiu de solutii posibile.
Acest aspect care se datoreste modului specific de functionare a mecanismului de
backtracking Prolog face ca solutiile oferite sa aiba un caracter nedeterminist i implicit ca
intreaga baza de cunotine formata din cunotine propriuzise i din strategii complementare
sa aiba un character nedeterminist. Apare logic, necesitatea de a selecta din multitudinea de
soluii obinute pe acelea care corespund obiectivului din momentul respectiv. Pentru
31

rezolvarea acestui aspect maina de inferen dispune de un mecanism de selectie a solutiilor
care este activat de catre utilizator, daca considera ca este necesara alegerea unei anumite
solutii. Mecanismul este activat de un element de tiere , definit prin ! (cut) al crui efect
const n interzicerea deplasrii pe anumite direcii din spaiul soluiilor . Denumirea de
element de tiere provine din faptul c efectiv se taie o ramur sau mai multe din graful ce
definete spaiul soluiilor.

6. In ce consta tehnica genereaza si testeaza utilizata de masina de inferenta Prolog?
Rspuns:
Tehnica "genereaza i testeaza" este comun n proiectarea algoritmilor i programare. n
cadrul acestei tehnici, o rutina genereaz o mulime de soluii posibile pentru problema n
cauz, n timp ce un alt proces testeaz soluiile, alegndu-le pe cele corecte. n mod obinuit,
programele de tip "genereaz i testeaz" sunt simple, ns puin eficiente. n scopul
optimizrii acestei tehnici, se ncearc amplasarea modulului de testare n nteriorul
generatorului, ct mai adinc posibil. Intenia este ca cele doua module s se ntreese, astfel
ncit s fie generate de la nceput numai soluii corecte.
n Prolog, implementarea tehnicii presupune prezena mpreun a dou scopuri: primul are rol
de generare, cel de-al doilea de testare, sub forma:
find(X) if generez(X),
testez(X).
Datorit modului de lucru a mainii de inferena Prolog, dac generez(X) este un succes,
rezultatul va fi testat n continuare. Dac rezultatul testului este un eec, prin backtracking se
va reactiva generez(X) i deci se va propune urmtoarea soluie. Operaiile se repet, pna
cnd generez(X) epuizeaz setul de soluii posibile. Aceast tehnic, "generare i testare",
poate fi vazut ca o modalitate de construire a startegiilor complementare. Astfel, ntr-un
program nedeterminist, generatorul propune un element, iar modulul de test verific dac
propunerea este corect.

7. Se da arborele de joc:








a) In ce consta Principiul strategiei MinMax?
b) Care este mutarea ce o va face Max n cadrul strategiei MinMax
32

Rspuns:
Strategia minimax poate fi rezumat astfel
ntr-un joc strategic atunci cnd este confruntat cu cteva posibilitti de alegere, oponentul
va alege cea mai buna mutare pentru el, ceea ce nsemna alegerea cea mai nefavorabila
pentru mine. Tinta mea este deci de a face mutarea care maximizeaz pentru mine valoarea
poziiei dupa ce oponentul face cea mai buna mutare a sa, ceea ce nseamna c se
miximizeaz valoarea poziiei pentru el.
Precizri
(1) Funcia de evaluare se transform ntr-un estimator euristic, care evalueaz sansele de
cstig din punctual de vedere al unuia dintre juctori. Astfel cea mai mare valoare va
reprezenta sansa de a cstiga cea mai mare pentru un juctor n timp ce cea mai mic
valoare ve defini ansa de a cstiga a oponentului.
(2) Deoarece unul din cei doi juctori va tinde sa obina poziia cu cea mai mare valoare iar
cel de al doilea poziia cu valoarea cea mai mic, cei doi juctori pot fi numiti MAX i
MI N. Ori de cte ori MAX este la mutare va alege mutarea care maximizeaz valoarea
obinuta din evaluarea funciei euristice ce caracterizeaz poziia, iar n opoziie MI N va
alege mutarea care minimizeaz valoarea
(3) Fiind date valorile de pe nivelul cel mai de jos al arborelui de cutare, strategia minimax
va determina valorile pentru toate celelalte poziii din arborele de cutare

Se efectueaz mutarea A1A11

8. De ce se folosesc why si how in sistemele expert si cum se raspunde la ele.
Rspuns:
Aceste dou ntrebri se pun pentru a asigura transparena procesului de interogare a bazei de
cunotine. Acestea au semnificaia:
-why? cu semnificaia "de ce ai pus aceast ntrebare"
-how? cu semnificaia "cum ai ajuns la aceasta concluzie"
La ntrebarea How se listeaz premisele la care s-a rspuns cu da ncepnd cu prima din baza
stivei pana la premisa i a crei validare se cere. Practic se prezint istoricul procesului de
inferen pn n punctual curent n care s-a pus ntrebarea.
La ntrebarea Why se listeaz toate premisele ncepnd cu ce urmtoare punctului curent ca i
concluziile la care se ajunge din punctual curent. Practic se prezint perspectiva care se poate
ajunge ntr-un pas din punctual current al pcesului de inferent.

9. Ce este un estimator euristic ?
Rspuns:
Cutarea in adncimea sau limea spaiului configuraiilor posibile ridic problema
proliferrii alternativelor care trebuiesc a fi explorate. Acest aspect face ca o serie de
probleme din lumea real s nu poat fi rezolvate datorit creterii timpului de explorare si a
cantitilor mari de memorie solicitat. Cutarea euristica ncearc sa remedieze in mod mai
eficient aceasta problema prin faptul ca ia in considerare numai alternative (configuraia) cea
mai promitoare la un moment dat. Cu alte cuvinte se procedeaz la o estimare a
configuraiilor care pot fi generate la un moment dat, estimare care se efectueaz in
conformitate cu scopul (configuraia int) care urmeaz a fi atins, dup care se pleac mai
departe cu alternativa cea mai promitoare. Concomitent, se menine setul de alternative
candidat gsite, urmnd ca mai departe acestea sa fie folosite pentru urmtoarea estimare.

10. S se prezinte cel puin 2 strategii de joc ce se utilizeaza in prezent n construirea
aplicaiilor de tip joc.
33

Rspuns:
Se utilizeaz urmtoarele strategii :
- Alegerea celei mai bune mutri
Aceasta strategie sta la baza strategiilor de joc si prezint urmtorul principiu:
Gaseste toate strile de joc posibile care pot fi obinute ntr-o singur mutare. Calculeaz
valorile strilor, utiliznd o funcie de evaluare. Alege mutarea care conduce la pozia cu
scorul cel mai mare.
- Alegerea minimax
Principiul este :
ntr-un joc strategic atunci cnd este confruntat cu cteva posibilitti de alegere,
oponentul va alege cea mai buna mutare pentru el, ceea ce nsemna alegerea cea mai
nefavorabila pentru mine. Tinta mea este deci de a face mutarea care maximizeaz
pentru mine valoarea poziiei dupa ce oponentul face cea mai buna mutare a sa, ceea ce
nseamna c se miximizeaz valoarea poziiei pentru el.
- Alegerea alfa_beta
Strategia care implementeaza tehnica minimax exploreaz toate poziii n arborele de
cutare, ncepand cu poziiile terminale si urcnd n sus spre nodul de start nivel cu nivel.
n cursul acestui proces se evaluaeaz toate poziiile care sunt generate. Tot acest efort de
calcul poate fi optimizat prin aceea c nu toate aceste valori sunt necesare de a fi calculate
pentru a obine o valoare corecta minimax pentru poziia curent (radacina) si deci o
mutare corecta. Optimizarea se bazeaz pe urmtoare idee. Presupunem c exista doua
alternative de mutare din care trebuie sa alegem una. Pentru a lua o decizie corect nu
este neaparat necesar sa cunoastem valoarea corecta a mutrii pe care o lasam de o parte,
este suficient sa stim c valoarea sa este inferioara (sau superioara) valorii mutrii pe care
am selectat-o pentru ca decizia sa fie corecta. Procesul de cutare se desfasoara utilizand
doua valori numite Alpha si Beta pentru operatii de taiere n arborele de joc.

Sisteme ncorporate

1. Definii noiunea de Sistem ncorporat i prezentai diferenele fa de calculatoarele de uz
general.
Rspuns:
Exist mai multe definiii. Oricare din urmtoarele este bun:
a. Un SI este un sistem integrnd hardware i software i proiectat pentru o anumit
funcionalitate.
b. Un SI este un sistem de calcul cu scop predefinit inclus ntr un dispozitiv pe care l
conduce.
c. Un SI este un sistem de calcul cu cerine specifice. Spre deosebire de calculatorul de uz
general, SI execut sarcini predefinite.
d. Un SI este este o combinaie de hardware i software cu programare i faciliti fixe,
proiectat pentru un tip de aplicaii.
e. SI constituie un subdomeniu al domeniului ingineriei calculatoarelor, bazat pe circuite
logice programabile de utilizator i orientat pe aplicaii de timp real.

Diferenele fa de calculatoarele de uz general sunt:
a. Interfaa cu omul: ecran la calculatoarele de uz general i led uri, LCD uri,
comutatoare, minitastaturi la SI;
b. Spre deosebire de calculatoarele de uz general, SI au sisteme de intrare/ ieire simple, fr
periferie;
c. SI pot include FPGA uri, ASIC uri, circuite analogice;
34

d. Software ul are o funcionalitate fix i specific aplicaiei; un calculator de uz general
poate executa mai multe programe, alegerea fcnd o utilizatorul, pe cnd un SI poate
executa mai multe programe dar alegerea o face programatorul.

2. Ce nseamn multiplexarea/demultiplexarea terminalelor unui microcontroler? Dai un
exemplu.
Rspuns:
Multiplexarea terminalelor nseamn alocarea de ctre proiectantul microcontrolerului a mai
multor funcii aceluiai terminal. Funciile diferite sunt activate la momente de timp diferite.
Demultiplexarea terminalelor nseamn transformarea unui terminal multiplexat n mai multe
terminale fiecare cu o unic funcie. Operaia cere cte un bistabil extern microcontrolerului
pentru fiecare terminal mutiplexat.
Exemplu: magistrala multiplexat de adrese/date a mai multor tipuri de microcontrolere. La
nceputul fiecrui ciclu main magistrala are semnificaie de adrese dup care i schimb
semnificaia n date. Microcontrolerul are un terminal de ieire prin care arat semnificaia
magistralei multiplexate. Acesta va fi folosit pentru demultiplexare. Pentru demultiplexare
sunt necesare registre externe microcontrolerului.

3. Prezentai structura intern a unui microcontroler.
Rspuns:
Structura:
35


sau









36

























4. Ce se nelege prin noiunea de Registru cu Funciuni Speciale?
Rspuns:
Registrele cu Funciuni Speciale sunt registre interne microcontrolerului, implementate ca
parte a memoriei SRAM interne a microcontrolerului. Ele sunt folosite pentru a comanda i
configura resursele interne ale microcontrolerului (periferie, memorie, alte registre), memoria
extern precum i terminale ale microcontrolerului. Registrele cu Funciuni Speciale sunt
accesibile programatorului prin intermediul unor adrese, la nivel de registru i, n unele
cazuri, la nivel de rang individual.

5. Ce se nelege prin facilitatea de captare/comparare?
Rspuns:
Facilitatea de captare/comparare este strns legat de un contor/temporizator al unui
microcontroler. Captare nseamn memorarea coninutului contorului n un registru la un
moment stabilit de activarea unui semnal exterior. Pot exista mai multe asemenea registre i
semnale exterioare de comand (de exemplu 4). Facilitatea este util la msurarea timpului
ntre 2 captri cu rezoluia dat de perioada semnalului de numrare, astfel putnd fi msurate
durate i perioade de semnale, precum i la evidenierea momentulu cnd are loc un
eveniment extern, raportat la evenimente anterioare. Comparare nseamn activarea unor
terminale ale microcontrolerului atunci cnd coninutul contorului este egal cu o valoare
predeterminat. Pot exista mai multe astfel de terminale i mai multe registre interne n care
se nscriu valorile predeterminate. Facilitatea este util la implementarea unor secvene de
comand a unor procese externe.

6. Ce se nelege prin PWM? Dai un exemplu de modul PWM.
Rspuns:

Sistem de
ntreruperi
ntreruperi externe
CPU
Generator
de tact
Logic de
control a
magistralei

Porturi de I/E
Port
serial
Contor
0
Contor
1
1280
RAM
4 ko
ROM
Registre cu
funciuni
speciale
P0 P1 P2 P3 TxD RxD T0 T1
37

PWM nseamn Pulse Width Modulation adic generarea de semnale cu perioad constant
dar cu durate variabile. Facilitatea este util la comanda motoarelor de curent continuu.

Exemplu: modul PWM cu 2 ieiri:























7. Justificai impactul frecvenei i a tensiunii de alimentare asupra consumului sistemelor
ncorporate. Soluii.
Rspuns:
Impactul frecvenei i a tensiunii de alimentare asupra consumului sistemelor ncorporate este
dat de formula C
SW
fV
dd
2
. Este puterea de comutare: este dat de frecvena tactului, de nivelul
alimentrii i de capacitatea de comutare care, la rndul ei, depinde de datele care se
proceseaz i de capacitatea circuitului care realizeaz comutarea;
Soluii de scdere a consumului: micorarea frecvenei tactului i a nivelului alimentrii pn
la nivelul acceptat de task.

8. Justificai impactul codificrii pe magistralele externe asupra consumului sistemelor
ncorporate. Soluii.
Rspuns:
Capacitatea intrinsec a magistralelor externe procesorului este cu cteva ordine de mrime
mai mare ca cea a magistralelor interne; consumul poate fi redus minimiznd tranziiile
liniilor de I/ E ale procesorului. Soluia cea mai eficient const n codificarea informaiei
trimis pe magistralele externe. ntruct tranziiile de pe liniile de date depind de configuraia
care se transfer, nu se poate interveni asupra magistralei de date. A fost vizat magistrala de
adrese.
Soluii de scdere a consumului: utilizarea de coduri pentru transferuri low-power. Exemple:
Bus Invert, Gray, Beach, T0 (se folosete o linie suplimentar, INC, pentru a evita transferul
de adrese consecutive; dac 2 adrese sunt consecutive, linia INC = 1, liniile de adrese rmn
Magistral intern
Divizor de
prescalare
fOSC / 2
Numrtor
Comparator
PWM0
Separator
PWM0
Comparator
PWM1
Separator
PWM1
38

nemodificate (pentru a evita tranziii inutile) iar noua adres este calculat la recepie; dac
cele 2 adrese nu sunt consecutive, linia INC = 0 iar liniile de adrese vor lucra normal).

9. Reprezentarea nivelelor logice pe liniile magistralei CAN.
Rspuns:
Nivelele logice sunt reprezentate pe linii prin tensiuni difereniale. Fiecrui semnal i
corespund 2 linii fizice pe care nivelul logic este reprezentat prin diferena de tensiune:
pozitiv pentru un nivel logic i negativ pentru cellalt nivel logic. Reprezentarea biilor pe
linie: prin metoda NRZ (Non Return to Zero): 1 logic nseamn o tranziie a liniei i 0 logic
nseamn lipsa tranziiei. Dup 5 bii de valoare 0 este inserat un bit complementar, pentru
resincronizare.

10. Prezentai 2 soluii, principial diferite, pentru conectarea microcontrolerelor la Internet.
Prezentai avantajele i dezavantajele lor.
Rspuns:
Cele 2 soluii sunt:
a. Prin conectare direct a sistemelor cu microcontrolere la Internet;
b. Prin conectarea sistemelor cu microcontrolere la un PC care va avea rol de poart la
Internet.
n primul caz:
a. Au aceleai poziii i ponderi ca sistemele mai mari (PC urile);
b. Soluia cere scrierea unei stive TCP/ IP proprii sau a unui subset al acesteia precum i
rezolvarea conectrii fizice la Internet;
c. Soluia este relativ ieftin, permite conectarea unor sisteme de dimensiuni mici la Internet
dar resursele acestor sisteme sunt limitate.
n al 2-lea caz:
a. Sistemele cu microcontrolere sunt grupate, sub controlul unui calculator cu rol de poart la
Internet;
b. Acesta gestioneaz toate sistemele, rspunde la cererile lor, poate asigura securitatea
sistemelor, monitorizare i evaluare automate pentru sisteme i chiar conexiuni multiple, la
un moment dat;
c. Sistemele cu microcontrolere pot comunica cu poarta utiliznd diferite standarde: RS 232,
RS 485, I2C etc.


Baze de date

1. Elementele Algebrei Relationale: operator relational, constituant, domeniu, N-uplet.
Rspuns:
Elementele Algebrei Relationale: operator relational, constituant, domeniu, N-uplet.
Un operator relaional (selecie, proiectie, join, union, intersect, minus) se aplic asupra
unor tabele i rezultatul va fi tot o tabel.
Constituant (cmp, atribut, caracteristic) este informaia elementar (atomic) a unei
relaii. Notm constituanii cu X1, X2, X3, .Xn. Ex: CodP, Nume, Adresa, Salar,..
Domeniul (tip abstract) este ansamblul valorilor pe care le poate lua un constituant i se
noteaz dom(Xi). Mai muli constituani pot avea acelai domeniu : Tel_acasa, Tel_serv, Fax.
N-upletul de constituani este un ansamblu de constituani (X
1
, X
2
, , X
N
) ce se poate nota
cu X.
N-upletul (de date) este un set de valori (a
1
, a
2
, , a
n
) unde a
i
e dom(X
i
).
N-upletul este un articol dintr-un fiier (record), sau un rnd dintr-un tabel (row).
39


2. Definiia relaiei n algebra relational.
Rspuns:
Definiia relaiei n algebra relational
O relaie N-ar R(X) se definete prin trei elemente:
- precizarea unui N-uplet de constituani (X
1
, X
2
, , X
N
);
- definirea domeniului pentru fiecare constituant X
i
;
- definirea unui predicat logic care pentru orice N-uplet de date (a
1
, a
2
, , a
n
) unde a
i
e
dom(X
i
) pentru i=1..n d o propoziie adevrat sau fals.
Notm aceast relaie R(X1,X2,X3,.Xn) sau R(X).
Relaia R(X) este format din ansamblul N-upleilor pentru care predicatul d propoziii
adevrate.
Relaia STUD(Cods, Nume, Adresa, Data_n, Bursa) va cuprinde toi N-upleii
(nregistrrile) pentru care condiiile (predicatul) de student sunt ndeplinite (admis,
neexmatriculat, netransferat, nu a absolvit,etc.). Nu orice combinaie de valori, care aparine
domeniilor constituanilor ne d un n-uplet valid.

3. Ce este o baza de date relaional?
Rspuns:
O baz de date relaional presupune organizarea informaiei n tabele normalizate,
legate ntre ele prin chei simbolice. Fiecare tabel are o cheie primar unic. Anumite
cmpuri ale tabelei pot fi chei externe care refer o cheie primar dintr-o tabela printe.
O BD relaionaltrebuie s accepte operaiile algebrei relaionale (Select, Project, Join) i
cele din teoria mulimilor (Union, Intersect i Minus).

4. Definii operaiile algebrei relationale.
Rspuns:
Operaiile algebrei relationale sunt:
- Selecia n-upleilor (nregistrrilor) dintr-o relaie se noteaz cu o
cond
(R) se face pe
baza unor condiii, care trebuie s le ndeplineasc anumite coloane:
DISP FOR Bursa > 0 .AND. Cods = AC4 - in XBase
SELECT * FROM Stud WHERE Bursa > 0 AND Cods LIKE AC4%; - in SQL

- Proiecia se noteaz cu [
lista_atribute
(R) i selecteaz numai anumite coloane dintr-o
relaie R:
LIST Nume, Adresa, Data_n - n XBase
SELECT Nume, Adresa, Data_n FROM Stud; - n SQL

- JOIN (reuniune) combin n-upleii din dou relaii comparnd dou coloane (union
compatibile) din tabele diferite.
Afiare nume student,adresa i notele fiecrui student bursier la diferite cursuri(codc)
identificate n tabela Note prin Cods.

SELECT ST.Nume, ST.Adresa, NT.Nota, NT.Codc FROM Stud ST, Note NT
WHERE ST.Cods = NT.CodS AND Bursa > 0;

5. Normalizarea bazei de date.
Rspuns:
40

Forma normal urmrete eliminarea redundanei informaiilor din baza de date. Orice
informaie va apare o singur dat n BD. Singurele informaii care se repet sunt cheile
simbolice care fac referine spre tabelele printe.
Normalizarea bazei de date presupune aducerea relaiilor gradual pe diverse forme normale
1, 2, 3. Primele 3 forme normale se bazeaz pe dependena funcional fa de cheia primar
a atributelor. Fiecare form normal preia constrngerile formei anterioare la care adaug noi
condiii. O tabel care nu respect forma normal va fi spart n doua tabele legate prin cheia
simbolic..
Cod profesor, determin Nume profesor, Telefon, Adresa. Se va crea o alt tabel Prof n care
CodP este cheie primar i care va fi referit prin CodP din alte tabele (Curs, Orar) n care se
cer date despre profesor. Datele despe un profesor student sau curs apar o singur dat n BD.
Notele se trec ntr-o tabel Note i se identific prin cod student CodS i cod curs CodC la
care se refer.

6. Care sunt cerinele formelor normale 1, 2 i 3 ?
Rspuns:
Forma normal 1 (1NF) cere ca domeniul atributelor s cuprind valori atomice
(indivizible); se interzic cmpurile compuse sau relaii n relaie

Forma normal 2 (2NF) O relaie R este n 2NF dac orice atribut este complet dependent
funcional de cheia primar.
Variant: Se cere s nu existe atribute care s depind numai de o parte a cheii primare.

Forma normal 3 (3NF) este bazat pe conceptul de dependen funcional tranzitiv. Nu se
permit atribute ale relaiei care nu fac parte din cheia primar i care determin alte atribute.

7. Cum se deschid i cum se utilizeaz mai multe fisiere de date i index n XBase?
Rspuns:
In XBase se pot utiliza mai multe fiiere deshise fiecare ntr-o zon de lucru, pentru care se
aloc cte o zona de memorie. O zon delucru conine:
- Numele fierului deschis n zon i a fiierelor index asociate
- Zonele tampon pentru acel fiier i pentru fiiere index asociate
- Zona care conine nregistrarea curent i structura cmpurilor nregisrtrii
- Lista referinelor spre alte fiiere de date fcut prin declaraiile de Set Relation
- Adresa blocului curent citit din fiier i numrul nregistrrii curente

Deschiderea fiierelor se face sub forma:
USE Fisier1 index index1,index,2 IN nr_zona ALIAS alias1

Cnd se utilizeaz un fiier se selecteaz nti zona unde fiierul este deschis prin:
SELECT alias1 (sau nr_zona)
Toate comenzile folosite (Display, Replace, Edit, Browse, Seek, Go, Skip) se vor referi la
nregistrarea curent din fiierul deschis n acea zon.

8. Cum se face accesul direct la nregistrrile dintr-un fiier folosind fiirele index?
Rspuns:
Un fiier deschis se poate indexa dup unul sau mai multe cmpuri prin comanda:
INDEX ON camp TO index1
Fiecare index creat este un arbore de ordinul k (nr de articole index pe bloc) avnd X nivele.
Ultimul nivel conine referine spre fiierul de date. Fiecrei nregistrri din fiierul de date i
41

corespunde o nregistrare n fiierul index format din valoarea cheii + pointer spre fiierul de
date (pentru ultimul nivel) sau spre urmtorul bloc index din arbore. Numrul de accese disc
pentru a citi o nregistrare este nr.de nivele index X+1.
La comenzile de afiare (List, Browse ) nregistrrile se parcurg secvenial n ordinea valorii
cheii din fiierul index master.
Cutarea unei nregistrri cu o cheie dat se face astfel:
USE student INDEX Inume IN 4 ALIAS st
ACCEPT Nume student: TO Vnume
SEEK Vnume
IF EOF()
? Studentul cu numele + Vnume + Nu exista
ELSE
DISP
ENDIF
..

9. De ce se deschid mai multe fiiere index pentru un fiier de date ? Care este fiierul index
dup care se fac cutrile n acces direct i parcurgerea secvenial n fierul de date n acest
caz ?
Rspuns:
La adgarea de noi nregistrri n fiierul de date se actualizeaz toate fiierele index
deschise pentru a asigura coerena informaiilor din baza de date. Fierele index care nu sunt
deschise, nu se actualizeaz i nregistrrile adugate nu pot fi gsite n acces direct.
Dac se adaug multe nregistrri la un moment dat se poate ca fiiere index s nu fi deschise,
dar la sfritul operaiei se va face o rendexare dup fiecare cheie.
Comanda REINDEX reface toate fiiere index deschise. Dac nu sunt fiiere index deschise
comanda nu are nici un efect.
Cutarea ntr-un fiier deschis ntr-o zon se face dup fiierul index master, care este primul
din list, sau fiierul indicat prin:
USE student INDEX Inume,Icods,Itel
SEEK Popa V -- index master Inume cautare dupa nume student
DISP
SET ORDER TO 3 -- indexul master este Itel
SEEK 0256493111 -- cautare dupa numar de telefon
DISP

10. Cum se realizeaz o legtur automat dintre dou tabele ntr-o baz de date prin cheie
simbolic?
Rspuns:
Legtura automat dintre 2 tabele din BD se realizeaz prin comanda SET RELATION, care
definete un cmp cheie extern n prima tabel, care face referin spre un cmp
corespunztor fierului index master din a doua tabel.
USE student INDEX Inume IN 1 ALIAS ST
USE masini INDEX Inrm IN 3 ALIAS MS
SET RELATION nrm INTO MS -- legatura NRM din Student si NRM din Masini

SEEK Popescu B
? Nume, Adresa, Nrm, MS--> Marca, MS-->anF, MS-->Putere

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