Documente Academic
Documente Profesional
Documente Cultură
Subalgoritmi
Subalgoritmi
1. Introducere2
2. Conceptul de subprogram 3
3. Declararea de funcie 5
Exerciii i probleme rezolvate ...7
Probleme propuse pentru rezolvare9
2.1 Apelul de funcie. Alctuirea programului cu funcie 11
Probleme rezolvate..14
Probleme propuse pentru rezolvare16
3.Proceduri..18
Probleme rezolvate..19
Probleme propuse pentru rezolvare21
3.1Apelul de procedur. Mecanismul de transfer al
parametrilor la apel 23
Exerciii i probleme rezolvate25
Probleme propuse pentru rezolvare26
4. Domeniul de vizibilitate al variabilelor .32
Exerciii propuse pentru rezolvare.33
4.1.Comunicarea prin variabile globale.35
4.2.Comunicarea prin parametri35
4.2.1.Parametri valoare...35
4.2.2.Parameri variabila 36
4.2.3.Regula de ononimie...37
Exerciii propuse pentru rezolvare.38
Bibliografie..44
ntroducere
Lucrarea este elaborat n conformitate cu Curriculumul disciplinar de
informatic i are drept scop nsuirea de ctre elevi a cunotinelor necesare
pentru formarea culturii informaionale i dezvoltarea gndirii algoritmice.
Modul de expunere a materialului este similar celui din manualele de
informatic pentru clasele precedente. Mai nti se prezint noiunile de baz
teoretice,urmate de un numr semnificativ de probleme rezolvate i propuse, avnd
drept scop fixarea i exersarea unor cunotine de baz.
Pentru a mri accesibilitatea lucrrii s-au rezolvat integral i comentat marea
majoritate a problemelor, cu scopul ca elevii s dispun de un model de abordare
logic i concis.
Gradul de dificultate al problemelor n mod logic, crete progresiv, att n
cuprinsul lucrrii, ct i n cadrul fiecrei teme. Tipurile de probleme propuse n
lucrare solicit elevilor n primul rnd participarea activ, atitudinea creatoare,
descoperire.
Paii semnificativi care sunt inclui n structura acestei lucrri sunt:
1. Definirea termenilor problem, subproblem, program principal, subprogram,
subprogram apel, apel de funcie, apel de procedur.
2. Elaborarea unei funcii i proceduri.
3. Elaborarea programelor cu funcii i proceduri.
4. Set de probleme rezolvate.
Lucrarea, n mod necesar i culegerile de probleme s-au elaborat pentru
completarea eficient a manualului de informatic existent.
n ansamblu, materialul inclus n lucrare va contribui la obinerea urmtoarelor
competene:
- analiza structural a problemei;
- divizarea problemelor complexe n probleme mai simple i reducerea lor la cele
deja rezolvate;
1. Conceptul de subprogram.
n practic, problemele sunt mult mai complexe dect cele didactice, pe care
noi le rezolvm la coal. Pentru proiectarea unor aplicaii complexe, este necesar
descompunerea problemei care trebuie rezolvat n subprobleme relativ
independente, pentru fiecare dintre aceste subprobleme, scriindu-se module de
program mai simple. Cum la orice firm se lucreaz n echip, modulele de
program sunt de obicei implementate de mai muli programatori. Pentru ca
programul s funcioneze, n final modulele de program trebuie asamblate. Prin
urmare ntr-o etap prealabil implementrii, se face o analiz a problemei de
rezolvat, se stabilete subprogramele i modulele de program care trebuie s
rezolve aceste subprobleme, precum i modalitile n care acestea trebuie s
comunice ntre ele.
n programare des e ntlnit cazul cnd n timpul ndeplinirii unui program pe
parcurs e necesar de apelat unele i aceleai calcule, dar pentru date diferite. Pentru
a exclude repetarea acestor nscrieri i pentru ca programul s fie mai clar se
permite ca prile ce se repet s alctuiasc un program aparte ce se poate apela de
mai multe ori dup necesitate.
La predarea acestei teme pentru analiz se vor propune urmtoarele 2
probleme:
1. Fie dat un patrulater convex cu lungimile celor 4 laturi i una din diagonale. S
se calculeze aria acestui patrulater. Evident diagonala mparte patrulaterul n 2
triunghiuri.
2. Fie date 5 numere ntregi. De gsit elementul maximal din aceste numere.
Ambele probleme pot fi descompuse n subprobleme mai simple:
- n primul caz - subproblema aria triunghiului dup formula Heron.
- n cazul al doilea subproblema maximul din 2 numere.
Pentru rezolvarea ntregii probleme e necesar s se alctuiasc algoritmul
principal n care pentru rezolvarea subproblemelor se folosesc apelurile
subalgoritmilor.
3
Algoritmul problemei 1.
1. Se calculeaz aria triunghiului I, care e compus din laturile a, b, c.
2. Se calculeaz aria triunghiului al II, care e compus din laturile d, e, c.
3. Se adun ariile triunghiurilor I i II.
b
a
c
e
II
d
Algoritmul problemei 2, varianta I.
1. Se citesc datele de la tastier a, b, c, d, e.
2. Se gsete maximul din primele dou numere a, b rezultatul va fi n m.
3. Acest rezultat se compar cu c rezultatul va fi n m.
4. Rezultatul dat se compar cu d cel mai mare fiind n m.
5. Se compar m cu e i rezultatul final n m.
Algoritmul problemei 2, varianta II.
1. Se citesc datele de la tastier a, b, c, d, e.
2. Se gsete maximul din primele dou numere a, b, rezultatul va fi n m.
3. Se gsete maximul din primele dou numere c, d, rezultatul va fi n m1.
4. Se compar e cu m1, rezultatul va fi n m1.
5. Se compar m cu m1, rezultatul final va fi n m1.
Se observ c prima problem se reduce la subproblema determinarea ariei
triunghiului dup formula Heron, iar problema a doua la subproblema gsirii
maximului din 2 numere.
La nivelul limbajului de programare acest lucru se realizeaz prin folosirea
de subprograme.
n limbajul Pascal exist 2 tipuri de subprograme: funcii i proceduri. Vom
utiliza subprogramele de tip funcie atunci cnd avem de calculat la rezultat o
singur valoare. n cazul n care trebuie s obinem mai multe rezultate vom utiliza
subprograme de tip procedur, sau n funcie de modul de folosire n program.
Orice program poate conine mai multe proceduri sau funcii. Procedurile i
funciile se definesc n partea declarativ a programului principal, imediat dup
declaraiile de variabile.
Variabilele declarate n programul principal vor purta numele de
variabile
globale.
ndeplinirea programei se ncepe cu citirea datelor din programul principal,
urmnd ca dup necesiti s se apeleze subprogramul. Subprogramul se
ndeplinete i rezultatele sale snt transmise programului principal care continue
s se ndeplineasc. Orice subprogram la rndul su poate conine subprograme.
Subprogramul ca si orice program Pascal e alctuit din antet, parte
declarativ si parte executabil.
2. DECLARAREA DE FUNCIE
Declararea unei funcii sau proceduri const in scrierea ei efectiv. n cadrul
acestei scrieri se respect, n linii mari, modalitatea de scriere a unui program. n
plus, va aprea o list de parametri, prin care se realizeaz comunicarea cu
exteriorul.
Declaraia de funcie descris cu ajutorul unei diagrame de sintax:
Declaraie
de funcie
Antet de
funcie
begin
instruciuni
end;
Antet de
funcie
Function
id
id
tip
tip
,
;
var m, i : integer;
begin
m := a[1] ;
for i:= 2 to n do
if a[i] <= m then m:= a[i];
Minim := m;
end;
**
12.Elaborai o funcie care returneaz numrul de rdcini reale ale ecuaiei ax2+
bx + c =0 cu coeficienii reali.
13. Elaborai o funcie PASCAL care returneaz valoarea funciei logice
y = (x1 x2) & (x1 x3).
14. Elaborai o funcie PASCAL care returneaz valoarea funciei logice
y = (x1 x2) & (x2 x3).
15. Elaborai o funcie PASCAL care returneaz valoarea funciei
y = sin (3x2 + 5x +8), x, y R.
16. Elaborai o funcie PASCAL care returneaz valoarea funciei
z = ln (x2 + 2y2 +1), x, y, z R.
17.Fie dat un tablou liniar a[1..n], n<=100. Elaborai o funcie care determin:
a) elementul minim din tablou;
b) locul elementului minim din tablou, n tablou exist un singur element
minim;
c) produsul elementelor negative din tablou;
d) suma elementelor pozitive din tablou;
18. Fie dat un tablou bidimensional a[1..n, 1..m], n, m <= 10. Elaborai o funcie
care determin:
a) suma elementelor mai mici ca 10;
b) numrul elementelor negative de pe diagonala principal;
c) minimul elementelor din tablou;
d) suma elementelor mai jos de diagonala principal;
e) numrul de elemente pozitive din tablou.
19. Se d irul S. Determinai:
a) cte litere diferite de m sunt n ir;
b) cte vocale sunt n ir;
c) cte litere de a i b sunt n ir;
d) cte silabe de ma sunt n ir;
e) cte cuvinte sunt n textul dat;
f)cte propoziii sunt n textul dat. Fiecare propoziie se termin cu (.).
10
Identificator (din
progr. principal)
:=
Identificator
(nume de funcie)
Parametri
actuali
expresii, iar lista parametrilor actuali trebuie s coincid ca numr, ordine i tip de
dat cu lista parametrilor formali din declaraia de funcie.
n problemele analizate anterior vom alctui un program cu funcii.
Program Patrulater;
{ Program fr funcii }
var a, b, c, d, e, s, p, s1, s2 : real;
begin
writeln (Introdu lungimile laturilor
patrulaterului si a diagonalei );
readln (a, b, c, d, e);
p: = (a + b +c) / 2;
s1: = sqrt (p*(p - a)* (p - b) *(p - c));
p: = (d + e +c) / 2;
s2: = sqrt (p*(p - d)* (p - e) *(p - c));
s: = s1 + s2;
writeln(Aria patrulaterului = ,s);
end.
n programul de mai jos se folosete funcia alctuit anterior.
Program Patrulater;
{ Program cu funcii }
var a, b, c, d, e, s, s1, s2 : real;
Function Heron (x, y, z : real) :real;
var p: real;
begin
11
p: = (x + y +z) / 2;
Heron: = sqrt (p*(p - x)* (p - y) *(p - z));
end;
begin
writeln (Introdu lungimile laturilor
patrulaterului si a diagonalei );
readln (a, b, c, d, e);
s1: = Heron (a, b, e);
s2: = Heron (d, e, c)
s: = s1 + s2;
writeln(Aria patrulaterului = ,s);
end.
Putem sintetiza astfel aciunile efectuate la un apel de funcie.
12
Program Patrulater
a
Function Heron
s1
Heron
s2
s
s1:=Heron(a, b, e)
Program Patrulater
a
Function Heron
s1
Heron
s2
s
s2:=Heron(d, e, c)
13
** Probleme rezolvate **
1. Fie date 5 numere ntregi. Elaborai un program ce determin elementul maxim.
Program maxim_var1;
var m,a,b,c,d,e: integer;
function max2 (x,y: integer): integer;
begin
if x>y then max2:=x else max2:=y;
end;
begin
writeln (Introdu 5 numere);
readln (a,b,c,d,e);
m:= max2(a,b);
m:= max2(c,m);
m:= max2(d,m);
m:= max2(e,m);
writeln (cel mai mare este=, m);
end.
Program maxim_var2;
var m, m1,a,b,c,d,e: integer;
function max2 (x,y: integer): integer;
begin
if x>y then max2:=x else max2:=y;
end;
begin
writeln (Introdu 5 numere);
readln (a,b,c,d,e);
m:= max2(a,b);
m1:= max2(c,d);
m1:= max2(e,m1);
m1:= max2(m,m1);
writeln (cel mai mare este=, m1);
end.
2. Elaborai un program folosind o funcie care calculeaz media aritmetic a
elementelor din tabloul A[1..n] n<=100, de numere ntregi. n funcie se
calculeaz suma elementelor.
Program Media;
const nmax = 100;
type vector = array [1..nmax] of integer;
var a: vector, st, n, i :integer;
Function suma (x: vector) : integer;
var s, i : integer;
14
begin
s:=0;
for i := 1 to n do
s:=s + x[I];
suma := s;
end;
begin
write (n=); readln (n);
writeln ( introdu , n , elemente);
for i:= 1 to n do
readln (a[i]);
st:= suma (a);
med:= st /n;
writeln (media tabloului=, med:4:2);
end.
3. Elaborai un program care calculeaz suma de pe fiecare linie din tabloul
bidimensional A[1..n, 1..m] unde n, m <=10. n funcie calculai suma
elementelor pozitive , rezultatele de nscris ntr-un tablou liniar B.
Program ElementeLinii;
const nmax = 10; mmax=10;
type
matrice = array [1..nmax, 1..mmax] of integer;
vector = array [1..nmax] of integer;
var
a : matrice;
b: vector;
j, i, n, m: byte;
Function Sumapoz (k: byte, x: matrice) : integer;
var j : byte;
s, p: integer;
begin
for j:= 1 to n do
if x[k, j] >0 then sp := sp + x[k, j];
Sumapoz:= sp;
end;
begin
write (n=); readln (n);
write (m=); readln (m);
writeln (Introdu , m*n ,elemente );
for i:=1 to n do
for j := 1 to m do
readln (a[i, j]);
for i := 1 to n do
b[i]:=Sumapoz (i, a);
writeln ( Sumele elementelor pozitive pe linii
sunt);
15
end.
for i:= 1 to n do
writeln ( Linia, i , Suma=, b[i]);
**
**
1. Se consider antetul:
Function F
16
3. PROCEDURI
n limbajul PASCAL, funciile sunt asemntoare funciilor din matematic.
Totui, funciile prezint o anumit limitare, au ca rezultat o singur valoare.
Deoarece de multe ori este necesar obinerea ca rezultat a mai multor valori,
limbajul Pascal permite utilizarea unui al doilea tip de subprogram, procedur.
Procedura poate s ntoarc nici unul, unul sau mai multe rezultate.
Spre deosebire de funcii, procedurile furnizeaz rezultate prin intermediul
parametrilor i nu prin numele asociat. Pn acum s-au folosit deja anumite
proceduri predefinite, cu numr variabil de parametri, cum ar fi Read i Write.
Diagrama de sintax a procedurii este urmtoarea:
Declaraie
de procedur
Antet de
procedur
antet de
procedur
begin
instruciuni
end;
var
procedure
id
id
tip
,
;
**
Probleme rezolvate
**
4 - Joi
2 Mari
5 - Vineri
3 Miercuri
6 Smbt
7 Duminic
end;
2:
3:
4:
5:
6:
7:
writeln
writeln
writeln
writeln
writeln
writeln
(Marti);
(Miercuri);
(Joi);
(Vineri);
(Simbata);
(Duminica);
end;
2. Elaborai o procedur care afieaz la ecran tabelul de adevr a funciei logice
y=x1 & x2.
Procedure Tabel;
var x1, x2: boolean;
begin
for x1:= false to true do
for x2:= false to true do
Writeln (x1, and , x2 , = , x1 and x2);
End;
3. Se d tabelul A[1..n], n<=100, de numere ntregi. Elaborai o procedur care
efectueaz deplasarea spre stnga cu o poziie a elementelor a[2], a[3], a[n].
Primul element va fi nscris pe ultima poziie.
const nmax = 100;
type vector=array [1..nmax] of integer;
Procedure Permutare (Var X: vector);
var c: integer;
i: byte;
begin
c:= x[1];
for i:=1 to n-1 do
x[i]:= x[i+1];
x[n]:=c;
end;
4. Se d mrimea tabelar a[1..n, 1..n] de numere ntregi, unde n<=10. Elaborai o
procedur ce va aduna la elementele fiecrui rnd, elementul, ce aparine acestui
rnd i diagonalei principale.
const nmax=10;
type matrice = array[1..nmax, 1..nmax] of integer;
Procedure Modificare (var x: Matrice);
var c: integer;
i, j: byte;
20
begin
for i:= 1 to n do
begin
c:= x[i, i];
for j:= 1 to n do
x[i, j]:= x[i, j]+c;
end;
end;
**
MAI MIC
MAI MARE
2 februarie
3 martie
4 aprilie
5 mai
6 iunie
7 iulie
8 august
9 septembrie
10 octombrie
11 noiembrie
12 decembrie
matrice=array[1..10,1..10] of integer;
parametri
actuali
,
22
m1
m2
23
Program maxim
a
m1
m2
max2(a,b,m)
Program maxim
a
b
c
3
m1
m2
Procedure max2
x
y
3
max2(a,b,m)
**
**
1. Se consider declaraiile
type matrice = array[1..10, 1..10] of integer;
Elaborai un program care efectueaz interschimbarea dintre elementul minim al
tabloului i elementul din colul stng de sus:
n procedura citire introducerea tabloului;
n procedura minim gsirea elementului minim i locul lui;
n procedura modificare interschimbarea elementelor;
n procedura Tablou afiarea tabloului.
Program Interschimbare;
const nmax=10;
type matrice = array[1..nmax,1..nmax] of integer;
var a: matrice;
i, j, ll, lc, min, n:integer;
Procedure Citire (var x: matrice);
var i, j: byte;
begin
for i:= 1 to n do
for j:= 1 to n do
readln (x[i, j]);
end;
Procedure minim (x: matrice, var m, lm, cm: integer);
var i,j: byte;
begin
M:=x[1,1]; lm:=1; cm:=1;
for i:= 1 to n do
for j:= 1 to n do
if m< x[i, j] then
begin
m:= x[i, j]; lm:=I; cm:=j;
end;
end;
Procedure modificare (lm, cm: integer, var x: matrice);
var I, j: byte; c:integer;
begin
c:= x[1,1];
25
end;
Procedure Tablou ;
var i, j: byte;
begin
for i:= 1 to n do
begin
for j:=1 to n do
write (a[i, j]: 3);
writeln;
end;
end;
begin
write ( Introdu dimensiunea tabloului);
readln (n);
writeln (Introdu, n*n, elemente);
citire (a);
writeln (Ati introdus);
Tablou;
Minim (a, min, ll, lc);
Modificare (ll, lc, a);
writeln (Tabloul modificat);
Tablou;
end.
**
**
c)12
d)nici un raspuns
2. Ce va tipari programul urmator?
program test;
var a,b:integer;
procedure p(x:integer; var y:integer);
begin
x:=2*x; a:=x+y; y:=x-1;
end;
begin
a:=4; b:=2;
p(a,b); writeln(a, ,b);
end.
a) 87
b)82
c)107
b:=1; c:=b+1;
end;
BEGIN
a:=1; d:=0;
p(a,d); write(a,d);
end.
Ce va afisa programul dat n cazul nlocuirii antetului de procedura p cu fiecare din
declaratiile ce urmeaz :
a)procedure p(var b,c:integer);
b)procedure p(b,c:integer);
c)procedure p(b:integer; var c:integer);
d)procedure p(var b:integer; c:integer);
6. Ce va afia urmtorul program:
Program t11;
var a:integer;
procedure p(var x:integer);
28
BEGIN
end;
x:=x+1;
x:=x+a;
BEGIN
a:=5;
p(a);
p(a);
end.
writeln(a);
writeln(a);
end;
a:=a+1;
b:=b+a;
BEGIN
x:=0;
y:=0;
p(x,y); write(x,y);
p(y,y); write(x,y);
end.
8. Elaborai programul. Fie date segmentele a, b, c i d. Pentru orice triplet din
aceste segmente din care se poate construi triungi, determinai aria acestui triungi.
(Elaborai procedura, aria (x,y,z) ce determin aria triunghiului cu laturile x, y, z
dac astfel de triunghi exist).
9. Se consider declaraiile:
type vector=array[1..100] of integer;
Elaborai un program folosind proceduri care modific elementele tabloului astfel:
adaug la fiecare element de pe locurile pare numrul z.
n procedura citire introducerea tabloului;
n procedura modificare modificarea tabloului;
n procedura tablou afiarea tabloului.
10. Se consider declaraiile:
type vector=array[1..100] of integer;
Elaborai un program care modific elementele tabloului astfel: elementele de pe
locurile impare se nlocuiesc cu 100.
n procedura citire introducerea tabloului;
29
30
31
**
33
**
Program main;
var a,b:integer;
procedure p1( var x:real);
var c:char;
function f(y:char):char;
var d:integer;
begin bloc1
end;
begin bloc2
end;
procedure p2;
var d:integer;
begin bloc3
end;
beginbloc4
end.
Care din urmatoarele asertiuni sunt adevarate ?
a) n bloc1 sunt vizibile variabilele a,b,c(char), d,x,y
b) n bloc2 sunt vizibile variabilele a,b,x,c(char)
bloc2
end;
procedure p2;
BEGIN
bloc3
end;
BEGIN
bloc4
end.
Care din urmatoarele asertiuni sint adevarate ?
34
35
36
Program P;
var x,z,y:integer;
Procedure Q(y:integer; var z:integer);
begin
x:=x+1;
y:=y+2;
z:=z+3;
writeln(x,y,z)
{1,2,3}
end;{Q}
begin
x:=0; y:=0; z:=0;
writeln(x,y,z);
{0,0,0}
Q(x,y);
writeln(x,y,z)
{1,3,0}
end.{P}
Relativ la procedura Q, identificatorul x este global, y este parametru valoare
iar z parametru variabil. n program x, y, z primesc valorile 0 care sunt afiate
0, 0, 0.
Prin execuia apelului Q(x, y), variabilele desemnate prin identificatorii
x (global) primete valoarea 1, y (din procedur ca parametru valoare) primete
valoarea 2, i z (din procedur ca parametru variabil) primete valoarea 3. Ca
rezultat n procedur variabilile x,y,z au valorile 1 2 3. La revenirea n program,
variabila cu nume x (global) pstreaz valoarea 1 dobndit n provedur; variabila
y (global) obine valoarea 3, iar z (global) are valoarea 0. Valorile lui x, y, z din
program sunt afiate 1 3 0.
a)1 20
b)1 2
c)10 20
d)nici un raspuns anterior nu este corect
2. Ce valoare afiseaza programul urmator?
Program test;
var x,y,z:integer;
procedure suma(x,y,z:integer);
begin
z:=x+y
end;
begin
x:=1; y:2; z:= 0;
suma (x,y,z);
suma (y,z,x);
suma(z,x,y);
writeln (z);
end.
a) 7 b) 0 c)5
Program Test;
var a,b,c,d: integer;
procedure p (var b:integer; c:integer);
var d: integer;
begin
a:=5; b:=6; c:=7; d:=8;
writeln (a,b,c,d);
end;
begin
a:=1; b:=2; c:=3; d:=4;
p (a,b); writeln (a,b,c,d);
end.
a) 5678
b) 6638
c) 6678
1234
6634
6234
begin
a:=1; b:=2; c:=3; d:=4;
P(a,b); writeln (a,b,c,d)
End.
7. Ce va afisa programul :
Program t3;
Var a,b,c,d:integer;
Procedure p(var b:integer; c:integer);
BEGIN
a:=2*a; b:=2*b; c:=2*c; d:=2*d;
writeln(a,b,c,d);
end;
begin
a:=1 ; b:=1; c:=1; d:=1;
p(a,b); write(a,b,c,d);
p(c,d);write(a,b,c,d);
end.
a)4122
b)4422
c)4422
d)4122
4412
4112
4112
4112
8244
8244
4244
8244
8124
8124
8128
8128
p(b,b)
(3)
41
p(a+1,b)
(2)
p(5,a,b)
(4)
p(a,b+1)
p(var b,c:integer);
p(b,c:integer);
p(b:integer; var c:integer);
p(var b:integer; c:integer);
x:=x+1; y:=y+1;
end;
begin
a:=5; b:=5;
p(a,b); writeln(a,b);
p(a,b); writeln(a,b);
end.
11. Fie dat programul. Ce va afisa urmatorul program:
Program t10;
var x,y,z:integer;
procedure p(var a,b:integer);
var z:integer;
BEGIN
BEGIN
end.
43
BIBLIOGRAFIA:
1. BAC 2002,2003. Teste la informatic, Lyceum
2. A.Grimalschi. Informatica.Limbajul Pascal. Chiinu 1999. Manual cl IX-XII.
3. T.Blnescu. S.Gavril . a. Pascal i Turbo Pascal. Vol. I, II. Editura tehnica
Bucureti,1992.
4. Manualul nceptorului n programare Pascal. Cluj-Napoca 19955. I.Creang-Andrunache. Informatica probleme Pascal. Ed.Paragon, Chiinu
2001.
6. Em.Cerchez. Informatica, manual cl X. ,Polirom ,Romnia 2000.
7. Eu.Kalisz. Iniiere n Turbo Pascal, Ed.Teora 1998.
8. Fl.Munteanu. Programarea calculatoarelor cl X-XII Editura didactic i
pedagogic Bucureti 1998.
9. Ion Ftu. Teste gril de programare n limbajele Pascal i C. Editura didactic i
pedagogic Bucureti 1995.
10... . 1987
11.... . 1989.
12.. . .
1987.
44