Sunteți pe pagina 1din 40

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 A1 ... An atunci R
se spune c este o relaie nar asupra lui A1 ... An .

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


vedere computaional.
Raspuns:

1
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 modul de reprezentare pe calculator i n memorie a arborelui binar din figur:

Rspuns:
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. De exemplu, arborele cu un singur nod x se reprezint <<>, x,
<>>. Arborele T din figur se reprezint prin lista:
T = <<<d>, b, <e>>, a, <c>>
n memoria calculatorului va apare:

2
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, , , , q0, , 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), q0 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:
ab
bc
ac
Modus ponens mod de afirmare:
Dac p atunci q (p q)
p
q
Modus tollens mod de negare:

Dac p atunci q (p q)
q
p

3
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 B, B C sau A B, B C
A C AC
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

4
execuia repetat a unei secvene de execuia repetat a unei funcii
instruciuni
un nou apel recursiv se execut tot n
nou iteraie se execut doar n urma urma evalurii unei condiii (pe
evalurii unei condiii (la nceput sau parcurs)
sfrit)
funcia recursiv se apeleaz din nou,
fiecare iteraie se execut pn la capt nainte de terminarea apelului
i apoi se trece, eventual, la o nou precedent
iteraie
se recomand doar atunci cnd
se recomand atunci cnd algoritmul de problema este prin definiie recursiv
calcul este exprimat printr-o formul (recursivitatea consum resurse n
iterativ 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.

5
Folosind aceast valoare ca pe o variabil cu indici, funcia poate accesa i poate modifica
direct orice element al tabloului.

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.

6
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).

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?

7
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
(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

8
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
numele clasei respective.
Arhitectura calculatoarelor (fara rezolvari)

1. S se analizeze comparativ codurile complementare (complement de unu si complement de


doi) folosite la reprezentarea numerelor binare n virgul fix.
2. S se analizeze comparativ codurile zecimale (Binary Coded Decimal-BCD, Excess Three- E3)
de reprezentare a numerelor in virgula fix.
3. S se analizeze problemele exponentului i mantisei la reprezentarea numerelor binare n
virgul flotant.
4. S se prezinte principalele metode de nmulire a numerelor binare fr semn.
5. S se scoat n relief caracteristicile procedurii Robertson pentru nmulirea numerelor binare
ntregi.
6. S se scoat n relief caracteristicile procedurii Booth.
7. S se prezinte treptele unei ierarhii de memorii tipice, a unitilor de informaie vehiculate ntre
acestea, precum i a principiilor care stau la baza funcionrii unei ierarhii.
8. S se analizeze impactul performan/cost corespuztor unei ierarhii de memorii cu dou
trepte.
9. S se prezinte elementele de structura ale unui cache i s se specifice problemele caracteristice
funcionrii cache-ului cu paleta de soluii tehnice aferente.
10. S se analizeze comparativ tipurile de mapare a adreselor de memorie principal n cache n
general i s se particularizeze comparaia pe exemplul ipotetic a unei memorii principale de 32
blocuri i a unui cache de 8 slot-uri.

Circuite i semnale numerice

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


acestuia.
Raspuns:

Parametrii de baz sunt:


T durata de repetiie
Ti durata impulsului
tr timp de ridicare
tc timp de coborre
U amplitudinea impulsului

2. Stabilirea punctului de funcionare la o diod semiconductoare.

9
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:
VL = 0.2V; VH = 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 tpHL i tpLH.

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

9. Sa se defineasca factorii de ncarcare la un circuit intergrat numeric

11
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;
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);

12
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) {
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;

13
};
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;
}
}

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

14
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. CumsereprezintaintrodiagramaUMLdeclasarelatiaintreoclasaVagonsioclasa
Trenconsiderandcauntrenestecompusdinunulsaumaimultevagoanesicaunobiect
VagonpoatefirefolositinrelatiecudiferiteobiecteTren.Precizaticumsenumesteacest
tipderelatiedescrissicareaufostindiciilecarevauajutatsailidentificati.

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. Dacaintrunsistemartrebuiesafavorizati performantadetimp,atioptapentrustilul
arhitectural Layered (arhitecturastratificata)?Dardacaartrebuisafavorizati securitatea?
Justificatisuccintraspunsul.
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

15
(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. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul: Latestareblackboxavemnevoiesidecodpentruaverificadacadateledetest
acoperatoatecailedinprogram?
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
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
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.Deasemeneaprecizati,argumentandsuccint,valoareadeadevaraurmatoarei
afirmatii:IntrunsistemcuomodularitatefoartebunalegealuiBrooksnuseaplicapentru
ca activitatea de construire a sistemului este o activitate perfect partitionabila. (Nota:
precizareavaloriideadevaraafirmatiei,neinsotitadeargumentatienusepuncteaza)
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.

16
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. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul: Testelewhiteboxnupotgarantacatoateeroriledintrofunctievorfidetectate,
dardacasuntdublatedetesteblackboxsepoategarantacavorfigasitetoateeroriledin
respectivafunctie.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
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. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12fraze)
raspunsul:Testareaderegresieestebazatapeideeacaatuncicandseopereazaschimbari
intrunmodul,imediatdupamodificare eforturile detestaretrebuie concentrate exclusiv
asupraasupramodululuimodificat.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
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.

8. Precizati, si argumentati succint daca relatia descrisa de diagrama UML de mai jos
modeleaza saunucazul unui telefon dualsim (carepoate tine simultan doua cartele) cu
cartelecarepotfioricandreutilizatesiinalttelefon.

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.

17
9. Considerand urmatoarele doua procese de dezvoltare: Waterfall si respectiv Extreme
Programming, precizati si argumentati succint pe care lati alege daca ati fi pe rand in
urmatoarelecazuri:
- Cazul1:trebuiesareimplementatidelazero,unsistemcomplex(cca.1milionde
liniidecod)pentrugestiuneapersonaluluisiasalariilor,caresainlocuiascasistemul
existentinprezent,faraniciomodificaredecerinte.
- Cazul2:avetideconstruitunsistempentruplatataxelorsiimpozitelorpentrutara
imaginaraAinamorcuolegislatiehaoticasiinpermanentamodificare
Nota:cele2cazurisuntcompletindependente.
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. Precizatidacaurmatoareaafirmatieesteadevaratasaufalsa,sijustificatisuccint(12
fraze) raspunsul: Procesul de dezvoltare in cascada (waterfall) este recomandat in
majoritateaproiectelorintrucat,datoritastructuriisalerigide,poateconstrangeclientulsa
descopere,incadelainceput,toateposibilelecauzedeschimbaredinsistem.
Nota:raspunsurileadevarat/falsneinsotitedefrazeleexplicativenusepuncteaza!
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
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. S se prezinte soluiile de replasare a blocurilor la accesarea unui cache si metodele de


implementare ale acestora.

Rezolvare
La accesarea unui cache, atunci cnd slot-urile acestuia sunt ocupate, se impune dislocarea
unui bloc n vederea creri de spaiu pentru plasarea blocului cu cuvntul int dorit. ntruct
la soluia de mapare direct nu exist alternative, blocul de dislocat fiind unic, problema
replasrii se pune doar la versiunile set-asociativ pe k ci i complet asociativ de mapare a
adreselor de memorie principal n cache.

18
Pentru problema replasrii exist 4 metode fundamentale, precum i soluii care
combin aceste metode. Cele 4 metode de baz, n ordinea frecvenei de aplicabilitate a
acestora, sunt: LRU (Least Recently Used), random, FIFO (First In First Out) i LFU (Least
Frequently Used).
Metoda alegerii blocului celui mai puin recent utilizat (LRU) din cadrul set-ului, la
maparea set asociativ, sau din cadrul ntregului cache, la maparea complet asociativ, se
poate implementa prin 3 soluii tehnice, anume: cu registre de vrst (age registers), cu o
construcie tip stiv (stack implementation) sau uzitnd de o matrice (matrix implementation).
Metoda age registers, aloc fiecrui slot un numr de log 2 k bii, unde k
reprezint numrul de slot-uri ale set-ului sau a ntregului cache i barele semnific, cel mai
mic ntreg mai mare sau egal cu valoarea logaritmului, care formeaz registrele de vrst.
Coninutul acestor registre, la umplerea setului sau a cache-ului, trebuie s fie diferite, fiind
dislocat, la un miss, slot-ul cu valoarea cea mai mare a registrului de vrst. Pe de alt parte,
la un hit, registrului de vrst corespunztor slot-ului care a dat hit i se aloc valoarea 0,
valorile celorlalte registre de vrst fiind modificate astfel nct blocul cel mai vrstnic (cu
valoarea cea mai mare a registrului de vrst) s fie dislocat la un proxim miss.
Metoda stack implementation urmrete valoarea slot-ului dislocat dintr-un registru
de deplasare alocnd fiecrui slot acelai numr log 2 k de bii ca i metoda anterioar.
Aceast soluie tehnic se aplic cu succes, cu precdere, n cazul irurilor de hit-uri.
Metoda matrix implementation se bazeaz pe o matrice de dimensiune de (k*k) bii
din care se elimin biii de pe diagonal. La accesarea unui slot, elementele de pe liniile
matricii corespunztoare slot-ului accesat se fac 1, iar cele de pe coloana corespunztoare
aceluiai slot se fac 0. La umplerea matricii, numerele de 1-uri i 0-uri, de pe linii i coloane
sunt diferite i linia matricii avnd doar 0-uri va stabili slot-ul a crui bloc se impune dislocat.
Metoda random prevede alegerea aleatoare a blocului de dislocat. Totui, n scop de
depanare, hardware sau software, secvena aleatoare se impune a fi repetabil deci metoda se
bazeaz, de fapt, pe generarea unui set de numere pseudoaleatoare. Din punct de vedere
tehnic, implementarea unui astfel de generator de numere pseudoaleatoare se realizeaz
favorabil uzitnd de un registru de deplasare prevzut cu reacie, un aa numit LFSR (Linear
Feedback Shift Register). Acesta are la baza sintezei expresia unui polinom , aa numit
generator, care are intercalate ntre rangurile registrului de deplasare, sau conectate n
exteriorul acestuia, circuite SAU-EXCLUSIV corespunztoare termenilor interni ai
polinomului generator.
Metodele FIFO i LFU sunt mai puin utilizate.

2. S se prezinte politicile de scriere n cache-uri cu caracteristicile avantajoase i


dezavantajoase specifice diferitelor metode.

Rezolvare
Una dintre problemele importante ale sintezei unui cache (vom considera un singur, unic,
nivel al cache-ului, ignornd divizarea, existent n realitate, a acestuia pe niveluri) este
determinat de operaia de scriere. Soluiile tehnice difer dependent de faptul c avem de-a
face cu un succes (hit) sau cu un rateu (miss) a accesului la cache.
n cazul unui hit, scrierea poate fi realizat n baza metodei write through, att n
memoria principal ct i n cache sau, n baza metodei write back, doar n cache. Comparnd
cele doua metode, varianta write through este mai simplu de implementat n termeni de
circuite, implicit cost, i are avantajul c prezint copiile de informaie din cache i din
memoria principal permanent actualizate. Dezavantajul esenial al metodei write through
const n apelarea, la fiecare scriere, a magistralei memoriei, provocnd gtuiri ale

19
traficului pe aceasta i, n plus, accesul se realizeaz la viteza mult mai lentei memorii
principale fa de cache. Acest din urm dezavantaj poate fi, ntructva, surmontat prin
includerea unui aa numit write buffer. Aceast investiie determin ca accesul s se
desfoare la viteza memoriei principale doar cnd write buffer-ul se umple.
Pe de alt parte, metoda write back, mai costisitor de implementat, implic realizarea
accesului la viteza mult mai rapidului cache, permind mai multe scrieri fr a necesita
actualizarea copiei din memoria principal. Actualizarea acestei copii are loc la un read miss
cnd se impune transferat blocul scris n memoria principal cu o investiie de timp
important, prohibitiv. Aceasta poate fi mbuntit prin prevederea, la fiecare slot de
cache, a unui aa numit dirty bit prin care se urmrete actualizarea doar acelor copii care
au fost nscrise (murdrite) n cache.
n ceea ce privete miss-urile, exist, de asemenea, dou soluii tehnice anume write
around, care implic scrierea doar n memoria principal i write allocate, care implic
scrierea doar n cache, operaie care trebuie precedat de transferurile de informaie specifice
unui read miss.
Chiar dac cele 2 metode de scriere la hit pot fi combinate cu oricare dintre cele 2
metode de scriere la miss, uzual write through se combin cu write around i write back cu
write allocate.

3. S se prezinte metodele de reducere a miss penalty-ului la accesarea cache-lui si s se


scoata in relief elemetele specifice fiecrei soluii.

Rezolvare
Plecnd de la formula care d timpul mediu de acces la o ierarhie de memorie AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea valorii parametrului
Miss Penalty. Exist 5 metode de reducere a acestui parametru: divizarea cache-ului n mai
multe niveluri (Multilevel caches), selectarea, mai nti a cuvntului critic i restartarea
timpurie (Critical word first and early restart), acordarea de prioritate read miss-urilor n
raport cu scrierile (Giving prioriy to read misses over writes), unificare write buffer-ului
(Write buffer merging) i utilizarea unui buffer pentru blocuri dislocate ce urmeaz a fi
reaccesate, a unui aa numit Victim buffer.
Metoda Multilevel caches sparge cache-ul pe trei niveluri, primul de capacitate
mic, funcionnd apropiat, ca vitez, cu procesorul, iar celelalte de capacitate tot mai mare
pentru a capta ct mai multe dintre accese astfel nct acestea s nu ajung la memoria
principal.
Metoda Critical word first and early restart se aplic la blocuri de dimensiune mari
selectnd fie cuvntul int (aa numitul cuvnt critic) pentru a fi trimis, la un miss, primul de
la memoria principal la cache. Pe de alt parte, restartarea timpurie aduce, la un miss, blocul
n ordine din memoria principal n cache, dar trimite nspre procesor cuvntul int imediat
ce acesta a fost adus n cache.
Metoda Giving priority to misses over writes se refer, cu precdere, la aplicarea
metodei de scriere write through i const n crearea unei ci de bypass pentru ca la miss-uri
la citire s nu trebuiasc s se atepte descrcarea informaiei din write buffer n memoria
principal, potenial cauz de apariie a hazardului RAW (Read After Write).
Metoda Write buffer merging const n organizarea de aa manier a informaiei din
write buffer nct condiia de umplere a acestuia s fie amnat ct mai mult posibil.
Metoda Victim buffer const n prevederea unui buffer reprezentnd o memorie
asociativ format din cteva slot-uri n care se ncarc acele blocuri dislocate din cache care
prezint probabilitate ridicat s fie accesate n viitorul imediat urmtor.

20
4. S se prezinte metodele de reducere ale miss rate-ului la accesarea cache-lui si s se scoat
n relief elemetele specifice fiecrei soluii.

Rezolvare
Plecnd de la formula de evaluare a timpului mediu de acces la ierarhia de memorii, AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea valorii parametrului
Miss Rate. Exist 5 metode de reducere a acestui parametru: creterea dimensiunii blocurilor
(Increasing block size), creterea dimensiunii cache-ului (Increasing cache size), creterea set
asociativitii (Higher set associativity), apelarea la cache-uri pseudoasociative
(Pseudoassociative caches) i optimizri de compilator (Compiler optimizations).
Metoda Increasing block size permite reducreea numrului de miss-uri obligatorii
(compulsory misses), dar poate conduce la creterea miss-urilor de capacitate i de conflict.
Metoda Increasing cache size permite reducerea miss-urilor de capacitate, dar
revendic putere suplimentar absorbit de la reea, defavorabil n contextul unui design
axat pe low-power.
Metoda Higher associativity se bazeaz pe reducerea miss-urilor de conflict dar
poate afecta negativ hit time-ul, majornd valoarea acestuia. Menionm n acest context
regula statistic 2:1 care stabilete n mod grosier, c un cache de dimensiune de n sloturi cu
mapare direct prezint acelai numr de miss-uri ca un cache set asociativ pe 2 ci de
capacitate n/2.
Metoda Pseudoassociative caches prevede funcionarea unui cache cu mapare
direct ca unul set asociativ pe 2 ci prin divizarea n 2 pri a cache-ului cu mapare direct i
cutarea informaiei int, la un miss, mai nti n blocul din cealalt parte, bloc a crui
numr este obinut prin complementarea bitului celui mai semnificativ a numrului de bloc.
Metoda compiler optimizations implic investiia hardware cea mai redus (tinznd
spre 0) urmrind rearanjarea buclelor de program de ctre compilator n vederea mbuntirii
localizrii spaiale sau a aplicrii metodei blocrii n vederea mbuntirii localizrii
temporale.

5. S se prezinte metodele de reducere ale miss penalty-ului si miss rate-ului bazate pe


paralelism la accesarea cache-lui i s se scoat n relief elemetele specifice fiecrei soluii.

Rezolvare
Plecnd de la formula de evaluare a timpului mediu de acces la ierarhia de memorii, AMAT
(Average Memory Access Time) dat de: AMAT = Hit Time + Miss Rate * Miss Penalty,
mbuntirea performanelor cache-ului poate fi obinut prin reducerea, bazat pe
paralelism, a valorilor parametrilor Miss Rate i Miss Penalty. Exist 3 metode bazate pe
paralelism i anume: prevederea de mecanisme de funcionare nonblocking a cache-ului
(Nonblocking caches), prevederea de buffer-e hardware pentru prefetch-ul instruciilor i
datelor (Hardware prefetching of instructions and data) i realizarea prefetch-ului de ctre
compilator (Compiler prefetching)
Metoda Nonblocking caches se aplic sistemelor cu control pipeline a procesorului,
permind, prin consistent investiie hardware, suprapunerea de hit-uri de instrucii cu miss-
uri de date (hit under misses).
Metoda Hardware prefetching of instructions and data prevede adaosul unui buffer
pentru instrucii i a unuia sau a mai multor buffer-e pentru date n care s se aduc n avans,
pe lng blocul cu informaia int, care se ncarc n cache, i urmtorul bloc care se ncarc
n buffer (n aa numitul instruction stream buffer n cazul instruciilor, respectiv n data

21
stream buffers n cazul datelor) n sperana c accesul la urmtorul bloc l gsete pe acesta n
mult mai rapidul buffer, nefiind necesar accesarea mult mai lentei memorii principale.
Metoda Compiler prefetching pleac de la premisa c sistemul este prevzut cu
cache nonblocking, astfel nct se permite funcionarea suprapus a instruciilor ordinare ale
unui program cu instrucii de prefetching. Acestea din urm aduc n cache, n avans,
informaia ce urmeaz a fi accesat n viitor, sens n care se face uz de desfacerea buclelor de
program (loop unrolling) i intercalarea instruciilor de prefetching. Aceast metod se aplic
n mod eficient la nmulirea de matrici.

6. S se detalieze modurile de adresare specifice mainii MIPS (Microprocessor without


Interlocked Pipeline Stages) convenionale cu 5 stagii.

Rezolvare
Maina MIPS este prevzut cu un set restrns de moduri de adresare, n esen , un mod de
adresare cu referire la locaii de memorie (din care sunt derivate alte dou) i dou moduri de
adresare cu referire la registre.
Modul de adresare cu referire la locaii de memorie se bazeaz pe cmpul de
deplasament, parte a cuvntului instrucie. La MIPS, cuvntul instrucie prezint lungimea de
32 de bii, existnd 3 tipuri de instrucii (I, R, J). La instruciile de tip I, incluznd instruc iile
cu referire la memorie Load i Store, avem urmtoarea partajare a biilor: primii 6 bii sunt
destinai codului operaie, urmtorii 5 bii sunt destinai specificrii adresei registrului general
surs, apoi urmtorii 5 sunt destinai specificrii adresei registrului general destinaie iar n
restul de 16 bii se specific valoarea deplasamentului. O instrucie cu referire la memorie,
spre exemplu de ncrcare (Load), ca enun n limbajul de asamblare MIPS se prezint astfel:
LD R2, 45(R7). Prin acest enun, coninutul registrului R7, cu adresa specificat de cei 5 bii
destinai registrului surs se adun cu valoarea deplasamentului 45, codificat n cei 16 bii de
deplasament, iar rezultatul, obinut printr-o unitate aritmetic de nsumare, reprezint adresa
de memorie (mai exact adresa din cache-ul de date) de la care se efectueaz citirea datei int.
Aceasta din urm este ncrcat n registrul R2 a crui adres este specificat prin cei 5 bi i
alocai registrului destinaie.
Din acest mod de adresare general, prin particularizare, sunt derivate alte 2 moduri
de adresare. Atunci cnd n cmpul de 16 bii alocat deplasamentului se stocheaz valoarea 0,
obinnd un enun de forma LD R2, (R7) se obine modul de adresare indirect cu referire la
registre. Pe de alt parte cnd avem un enun de tipul LD R2, 45(R0), lund n considera ie
particularitatea mainii MIPS care prevede pstrarea constantei 0 n registrul general R0,
avem de a face cu modul de adresare direct la memorie.
n ceea ce privete modurile de adresare cu referire la registre, acestea sunt fie de tipul
register-immediate fie de tipul register-register. Formatul de instrucie pentru modul register-
immediate este tot de tipul I, cu meniunea c n cmpul de 16 bii destina i anterior
deplasamentului, se stocheaz, de aceast dat, un operand tip constant, denumit immediate.
n calitate de exemplu, considernd instrucia de scdere SUB R3, R2, #45, aceasta prevede
scderea din coninutul registrului R2 specificat prin adresa din cmpul aloca registrului surs
a valorii constantei 45 specificat n cei 16 bii de operand, aa numit immediat, iar rezultatul
diferen este stocat n registrul cu adresa specificat n cei 5 bii alocai registrului destinaie.
Legat de modul de adresare register-register, acesta uziteaz de un alt tip de format de
instrucie, anume de tip R. La acesta, primii 6 bii sunt destinai codului operaiei, ca i la
formatul de tip I, urmnd apoi 3 cmpuri de 5 bii n care se stocheaz, n primele 2, adresele
operanzilor surs, iar n cel de al treilea, adresa registrului destinaie. Cei 11 bii rma i sunt
alocai, 5 dintre ei, cmpului de specificare a numrului de bii de deplasat pentru instrucii cu
deplasare de coninut de registre i ultimii 6 bii sunt destinai specificrii aa numitei funcii

22
(function), cmp prin care se poate extinde repertoriul de instrucii. n calitate de exemplu,
considernd enunul din limbajul de asamblare MIPS reprezentat de ADD R5, R2, R1 acesta
prevede, prin modul de adresare cu referire la registre, adunarea coninutului registrelor surs
R2 i R1, avnd adresele specificate n corespondentele cmpuri de 5 bii, i stocarea
rezultatului sum n registrul R5 avnd adresa specificat n cei 5 bii alocai registrului
destinaie.

7. S se clasifice i s se defineasc tipurile de hazarduri de date cu exemplificarea


hazardului de tip RAW (Read After Write) la maina MIPS (Microprocessor without
Interlocked Pipeline Stages) convenional cu 5 stagii.

Rezolvare
Clasele de hazarduri sunt:
RAW (Read After Write)
WAW (Write After Write)
WAR (Write After Read)
Definite global, prin hazardurile de date ale unei maini pipeline se nelege alterarea
cauzat de execuia suprapusa a instruciilor ordinii acceselor (citiri i scrieri) la date n
raport cu ordinea acestora specific unei maini non-pipeline, cu execuia n secven a
instruciunilor. Pentru a defini n particular clasele anterior menionate, admitem c, n fluxul
de instruciuni al unui program, instrucia i o precede pe instrucia j i ambele se refer la o
anumit dat.
n condiiile specificate, un hazard de date de tip RAW apare atunci cnd succesiva
instrucie j citete o data pe care anterioara instrucie i nu a ajuns nc s o scrie.
Pe de alta parte, n aceleai condiii specificate, un hazard de date de tip WAW apare
atunci cnd succesiva instrucie j scrie o dat pe care anterioara instrucie i nu a ajuns s o
scrie.
n fine, n aceleai condiii specificate, un hazard de date de tip WAR apare atunci cnd
succesiva instrucie j scrie o dat pe care anterioara instrucie i nu a ajuns nc s o citeasc.

8. S se prezinte soluiile de combatere a hazardurilor de date de tip RAW (Read After Write)
pentru instruciile load si store la maina MIPS (Microprocessor without Interlocked Pipeline
Stages) convenional cu 5 stagii.

Rezolvare
O prim soluie de combatere a hazardurilor de date de tip RAW o reprezint a a numita
forward-are (sau bypass-are) implementarea crui mecanism revendic un adaus de
circuistic constnd pe de o parte, din circuite comparatoare de cmpuri ale instruciilor,
menite a detecta hazardul RAW, si pe de alt parte, din asigurarea unor ci de comunica ie
interstagii (via multiplexoare) corespunztor comandate prin rezultatele comparaiilor
anterior amintite.
O a doua soluie de combatere a hazardurilor RAW o reprezint aa numita pipeline
interlock. La ea se apeleaz cnd instrucia care provoac RAW-ul este, n cazul mainii
MIPS, o instrucie de ncarcare. Data citit din cache-ul de date este acum disponibil n
registrul pipeline abia dup stagiul al 4-lea (MEM) si pentru surmontarea unei situa ii de
dependen direct cu instruciunea urmtoare este necesar interclasarea unui stall, dup care
este declanat mecanismul de forwarding.
O a treia soluie de combatere a hazardurilor de date de tip RAW o reprezint
optimizarea de compilator. Daca se succed operaiile a=b+c si d=e-f, atunci hazardurile RAW
care apar la fiecare dintre cele doua instrucii datorit instruciilor de ncrcare sunt

23
surmontate prin programarea de ctre compilator a instruciilor n manier intercalat evitnd
astfel RAW-urile.

9. S se analizeze degradarea de performan prin hazardul de control la maina MIPS


(Microprocessor without Interlocked Pipeline Stages) convenional cu 5 stagii si s se
propun o soluie de mbuntire bazat pe intervenii n schemele mainii.

Rezolvare
La maini pipeline, hazardul de control este provocat, cu precdere, de instrucii de salt, dar i
de alte instrucii care modific starea numrtorului de program (Program Counter- PC).
Astfel la maina MIPS cu 5 stagii, este tiut c instruciunea de salt condi ionat BEQZ (salt
cnd coninutul registrului A este zero) prevede n stagiul EX, testarea condiiei (dac
coninutul lui A este zero) si calculul adresei de salt (prin adunarea coninutului registrelor
NPC si Imm). Apare astfel o degradare de performan cnd condiia de salt nu e ndeplinit
(branch untaken) de 2 cicluri de clock.
Pe de alt parte, degradarea de performan este de 3 cicluri de clock dac este
ndeplinit condiia de salt (branch taken).
Situaia prezentat se poate ameliora ntr-o anume msur prin mutarea testului de
condiie din stagiul de EX n stagiul de ID. De asemenea, calculul adresei de salt poate fi
ntreprins n stagiul ID, dar aceasta, pe seama unei investiii suplimentare n circuistic ntr-
un sumator destinat adunrii coninutului regitrilor NPC si Imm. n acest mod, anterior
prezentata penalitate de performan defavorabil de 3 cicluri de clock se poate reduce la doar
unul.

10. S se urmareasc modificarea coninutului registrului de instrucii (Instruction Register


IR), a numrtorului de program (Program Counter PC) i a indicatorului de stiv (Stack
Pointer SP) la execuia unei instrucii de apelare a unei subrutine, respectiv n cazul unei
intreruperi sau a unei devieri (trap).

Rezolvare
Prin prisma operaiilor elementare implicate, situaiile constnd din execuia unei instruciuni
de CALL a, care apeleaz subrutina de la adresa a, sau a receptrii unei cereri de ntrerupere
sau de trap, implic o derulare asemnatoare a evenimentelor.
Pentru simplitate, vom considera ca avem codul de operaii si adresa instruciilor de
aceeai lungime de 1 byte (8 bii).
Considerm urmtoarea organizare a memoriei principale:

Adresa Memoria principal Starea imediat nainte de fetch-ul


instruciei de CALL
100 CALL IR=SUB; PC=100; SP=240
101 200
102 ADD Starea imediat dup fetch-ul instruciei
de CALL
200 IR=CALL; PC=102; SP=240
Corpul
subrutinei Starea n momentul final al instruciei
RETURN
de CALL
239 102 IR=CALL; PC=200; SP=239
240 150 Regiunea
stivei

24
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
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?

25
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:
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).

26
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).

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 :
( x1)( xn) A1 .. Am - B1 V V Bk
unde Ai i Bi 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

27
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.
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

28
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
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:

29
a) In ce consta Principiul strategiei MinMax?
b) Care este mutarea ce o va face Max n cadrul strategiei MinMax
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
MIN. 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 MIN 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 ?

30
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.
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.

31
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;
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:

32
sau

33
ntreruperi externe

Sistem de 4 ko 1280 Registre cu


ntreruperi ROM RAM funciuni
speciale

CPU

Generator Logic de Port Contor Contor


de tact control a Porturi de I/E serial 0 1
magistralei

P0 P1 P2 P3 TxD RxD T0 T1

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:

34
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:


Magistral intern

Divizor de
fOSC / 2 prescalare

Numrtor

Comparator Comparator

PWM0 PWM1
Separator Separator

PWM0 PWM1

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 CSWfVdd2. 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

35
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 (X1, X2, , XN) ce se poate nota
cu X.
N-upletul (de date) este un set de valori (a1, a2, , an) unde ai dom(Xi).
N-upletul este un articol dintr-un fiier (record), sau un rnd dintr-un tabel (row).

36
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 (X1, X2, , XN);
definirea domeniului pentru fiecare constituant Xi;
definirea unui predicat logic care pentru orice N-uplet de date (a 1, a2, , an) unde ai
dom(Xi) 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 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:

37
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

38
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
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

39
40

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