Sunteți pe pagina 1din 5

TEME DE LABORATOR

1. Să se realizeze un bloc PL_SQL de determinare a soluţiilor reale ale ecuaţiei


de gradul întâi dată sub forma generală: ax +b=0

Rez :
DECLARE
a REAL;
b REAL;
c REAL;
BEGIN
a:=&a;
b:=&b;
IF a!=0 THEN x:= -b/a;
dbms_output.Put_line('Solutia este: ' ||x);
ELSIF b=0n THEN
dbms_output.Put_line('Exista o infinitate de solutii!');
ELSE
dbms_output.Put_line('NU exista solutii!');
END IF;

END;

2. Să se realizeze un bloc PL_SQL de determinare a soluţiilor reale ale ecuaţiei


de gradul al doilea dată sub forma generală
REZ :
DECLARE
a REAL;
b REAL;
c REAL;
discriminant REAL;
x1 REAL;
x2 REAL;
BEGIN
a:=&a;
b:=&b;
c:=&c;
--DBMS_OUTPUT.PUT_LINE('a= '||a);
discriminant:= b*b-4*a*c;
IF discriminant>0 THEN x1:=(-b- SQRT(discriminant))/(2*a);
x2:=(-b+ SQRT(discriminant))/(2*a);
dbms_output.Put_line('Solutiile sunt: '||x1||' si '||x2);
ELSIF discriminant=0 THEN x1:=-b/(2*a);
dbms_output.Put_line('Solutia este unica: '||x1);
ELSE dbms_output.Put_line('Solutii ne-reale');
END IF;

END
3. Să se descrie în PL_SQL algoritmul pentru determinarea sumei inverselor
primelor n numere naturale.
REZ :
DECLARE
n REAL;
s REAL;
BEGIN
n:=&n;
s:=0;
FOR i IN 1..n LOOP
s:=s+(1/n);
END LOOP;
dbms_output.Put_line('Suma inverselor primelor'||n||'numerele naturale este:' ||
s);
END;

4. Să se descrie în PL_SQL algoritmul pentru determinarea sumei primelor n


numere naturale impare.

REZ :
DECLARE
n NUMBER;
r NUMBER;
BEGIN
n := 8;
r := n*n; --Formula lui Gauss pentru sume de numere impare
dbms_output.Put_line('Suma primelor ' || n || ' numere naturale impare este ' ||
r);
END;

5. Să se realizeze functie PL_SQL pentru determinarea celui mai mic divizor


natural propriu al unui număr întreg dat.
REZ:
DECLARE
a INTEGER;
divizor INTEGER;
gasit INTEGER;
BEGIN;
a:=&a;
divizor:=1;
LOOP
divizor:=divizor+1;
IF mod (a, divizor)=0 THEN gasit:= TRUE;
END IF;
EXIT WHEN gasit;
END LOOP;
IF divizor<a THEN
dbms_output.Put_line('Divizor propiu minim '||divizor||'.' );
ELSE
dbms_output.Put_line('Numarul nu are divizori proprii!');
END IF;

END;

6. Să se realizeze o functie PL_SQL pentru determinarea celui mai mare divizor


natural propriu al unui număr întreg dat.

REZ :
DECLARE
n NUMBER;
d NUMBER;
BEGIN

n := 17;

d := n - 1;

WHILE MOD(n, d) != 0 LOOP


d := d - 1;
END LOOP;

IF (d = 1) THEN
dbms_output.Put_line('Numarul este prim');
ELSE
dbms_output.Put_line('Cel mai mare divizor propriu al numarului ' || n || '
este ' || d);
END IF;

END;

7. Să se realizeze o procedura PL_SQL pentru determinarea divizorilor naturali


ai unui număr intreg dat.

REZ:

DECLARE
number NUMBER;
divisor NUMBER;
BEGIN

number := 14;
divisor := 1;

WHILE divisor <= number LOOP


IF MOD(number,divisor) = 0 THEN
dbms_output.put_line(divisor);
divisor:= divisor + 1;
ELSE
divisor := divisor+ 1;
END IF;
END LOOP;
8. Să se realizeze un bloc PL_SQL pentru determinarea celui mai mare divizor
comun a două număre intregi date.
REZ :

DECLARE
a NUMBER;
b NUMBER;
cmmdc NUMBER;
BEGIN
a := 32;

b := 16;

WHILE MOD(b, a) != 0 LOOP


cmmdc := MOD(b, a);
b := a;
a := cmmdc;
END LOOP;

dbms_output.Put_line('Cel mai mare divizor comun este: ' || a);


END;

9. Să se realizeze un bloc PL_SQL pentru determinarea primelor n elemente ale


sirului Fibonacci F_0=1, F_1=1, F_k=F_(k-1)+F_(k-2).

REZ :
DECLARE
elem1 NUMBER := 0; -- primul element din serie
elem2 NUMBER := 1; -- al doilea element din serie
rez number;
n NUMBER := 10;
i NUMBER;
BEGIN
dbms_output.put_line('Sirul lui Fibonacci pana la numarul ' || n || ' este: ' );
dbms_output.put_line(elem1);
dbms_output.put_line(elem2);
FOR i IN 2..n
LOOP
rez:= elem1 + elem2;
elem1 := elem2;
elem2 := rez;
dbms_output.put_line(rez);
END LOOP;
END;

10. Să se realizeze un bloc PL_SQL pentru determinarea descompunerii in factori


primi a unui numar intreg.
REZ :
DECLARE
mynumber INTEGER := 47; --Prime factors of this number will be calculated.
mydevisor INTEGER := 2;
BEGIN
FOR i IN 2 .. mynumber LOOP
IF MOD(mynumber, mydevisor) = 0 THEN
dbms_output.put_line(mydevisor);
mynumber := mynumber / mydevisor;
mydevisor := mydevisor + 1;
ELSE
mydevisor := mydevisor + 1;
END IF;

END LOOP;
END;

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