Documente Academic
Documente Profesional
Documente Cultură
Silviu GNCU
Metodologia rezolvrii
problemelor de informatic n
stilul orientat pe obiecte
ISBN 978-9975-76-085-0.
Autorul
3
Sugestii metodologice
1. Modelul orientat pe obiecte
Conform Grady Booch tehnologia orientat pe obiecte a fost conceput n
baza principiilor de abstractizare, incapsulare, modularitate, ierarhizare, tipizare,
paralelilism i persisten. Ceea ce este important const n faptul c aceste principii
se regsesc n modelul orientat pe obiecte.[4, p.25].
1. Abstractizare - procesul care capteaz caracteristicile eseniale ale unui
obiect, caracteristici ce difereniaz acest obiect de toate celelalte tipuri de obiecte.
Prin abstractizare se rezolv problemele cu un grad sporit de complexitate.
Abstractizarea se manifest prin determinarea similaritii dintre anumite obiecte,
situaii sau procese din lumea real i n luarea deciziilor, ignornd pentru moment
deosebirile dintre obiecte;
2. Incapsulare - procesul mental executat pe o abstractizare n care elementele
structurale ale abstractizrii sunt izolate de cele ce constituie comportamentul su.
Servete la separarea interfeei vizibile a unei abstractizri de implementarea sa;
3. Modularitate - procesul de divizare a unui sistem complex n pri (module)
manevrabile. Modularitatea este caracteristica de divizare a programului n mai multe
uniti care sunt compilate separat, dar simultan i comunic ntre ele;
4. Ierarhizare - procesul de clasificare pe nivele de abstractizare;
5. Tipizare reprezint un mod de protejare a obiectelor. Prin intermediul
tipizrii se face distincie dintre obiectele diferitor clase, astfel obiectele nu pot fi
schimbate sau, n unele cazuri, aceast schimbare este limitat;
6. Concurena (paralelism) este o proprietate, prin intermediul creia se
permite ca mai multe obiecte diferite s fie n execuie n acelai timp. Sistemele care
implic concurena sunt sisteme cu procesoare multiple, n care mai multe procese
sau thread-uri (fire de execuie) pot fi executate concurent pe procesoare diferite.
7. Persistena este proprietatea obiectelor care implic existena acestora i
dup ncetarea procesului care le-a creat. Starea obiectului i codul corespunztor
metodelor sunt memorate n baza de date. Tipurile obiectelor pot fi declarate
persistente prin folosirea cuvntului cheie persistent la momentul declarrii, variabila
fiind i ea constrns la un tip persistent.
Eseniale pentru limbajele de programare orientate pe obiect sunt primele patru
caracteristici. Un limbaj de programare este orientat pe obiecte dac susine primele
patru caracteristici.
4. Tendine
n prezent tehnologiile informaionale se afl n continu cretere. Astfel, au
aprut noi platforme de dezvoltare. Concomitent cu acestea s-au dezvoltat i mediile
de programare vizual orientate pe obiecte. Ele ofer posibilitatea de a elabora
diverse produse software. Prin intermediul lor se pot realizeaz:
a) aplicaii Windows orientate pe obiecte;
b) aplicaii Windows pentru gestiunea bazelor de date;
c) aplicaii Windows pentru lucru n reea;
d) aplicaii pentru gestiunea paginilor web, etc.
Elaborare unei aplicaii Windows orientat pe obiecte presupune:
1. A gestiona componentele oferite de ctre mediul de programare utilizat. Un
mediu de programare vizual orientat pe obiecte conine o gam larg de componente
destinate procesrii datelor. Pentru gestiunea lor, sunt necesare cunotine n ceea ce
privete structura obiectelor. Aceasta presupune a studia proprietile, metodele i
evenimentele caracteristice unei componente i modalitate de modificare a lor n
dependen de specificul problemei.
2. A elabora componente noi. n cazul n care mediul de programare nu ofer
suficiente componente, apare tendina de elaborare a lor.
Observm necesitatea studierii programrii orientate pe obiecte n ambele
cazuri.
1. Crearea de obiecte
Problem exemplu. Creai obiectul dreptunghi
date: lungimile laturilor;
metode: citire, afiare, iniializare, determinare a perimetrului i ariei.
Se vor introduce datele despre dou dreptunghiuri i se vor afia datele despre
dreptunghiul cu suprafaa maxim i dreptunghiul cu perimetrul minim.
Rezolvare :
#include<iostream.h>
class dreptunghi{
double lung,lat;
public:
void citire();//pentru citirea datelor
void afisare();//pentru afisare
double arie();
double perimetru();
void init(double a, double b){lung=a;lat=b;}
};
void dreptunghi::citire(){
cout<<"Dati datele despre dreptunghi"<<endl;
cout<<"Lungimea="<<endl;cin>>lung;
cout<<"Latimea"<<endl;cin>>lat;
}
double dreptunghi::arie(){return lung*lat;}
double dreptunghi::perimetru(){return 2*(lung+lat);}
void dreptunghi::afisare(){
cout<<"Lungimea="<<lung<<endl;
cout<<"Latimea="<<lat<<endl;
cout<<"Aria="<<arie()<<endl;
cout<<"Perimetru="<<perimetru()<<endl;
}
main(){
dreptunghi a,b;
a.citire();b.init(4.5,8);
a.afisare();b.afisare();
cout<<"Dreptunghiul cu suprafata maxima"<<endl;
if(a.arie()>b.arie())a.afisare();
else b.afisare();
cout<<"Dreptunghiul cu perimetru minim"<<endl;
if(a.perimetru()<b.perimetru())a.afisare();
else b.afisare();
}
10
11
mai mic sau egal dect 8 ani i 25%, dac stagiu este mai mare dect 8 ani), Salariu
primit (se va determina conform formulei: salariu calculat+spor).
De la tastatur se citesc datele despre n angajai. S se afieze:
a) Lista tuturor angajailor;
b) Lista angajailor cu un stagiu mai mare dect 10 ani;
c) Lista angajailor cu un salariu mai mare dect 1000;
2. Constructori
Clas-pereche este numit o clas cu dou date, care de obicei sunt dou
numere n1 i n2. Este necesar de a elabora un program, prin intermediul cruia se va
crea tipul de date clas-pereche. n toate sarcinile trebuie s fie prezente:
a) Trei tipuri de constructori: fr parametri, cu parametri, de copiere;
b) Destructorul;
c) Metoda de citire;
d) Metoda de afisare;
Toate aceste condiii necesit a fi respectate pentru urmtoarele cazuri.
3. Motenire simpl
Problem exemplu n calitate de clas de baz se consider clasa binar. n
calitate de date vor fi dou valori reale. Metodele vor fi:
a) constructorul cu i fr parametri;
b) metodele de citire i afisare.
Creai clasa dreptunghi, derivata clasei binar. Pentru clasa dreptunghi vor fi
implementate metodele de determinare a suprafeei i a perimetrului.
De la tastatur se citesc datele despre n dreptunghiuri. Elaborai un program
prin intermediul cruia la ecran se vor afia datele despre toate dreptunghiurile,
dreptunghiul cu suprafaa maxim i dreptunghiul cu perimetrul maxim.
Rezolvare :
#include<iostream.h>
class binar{
protected:
double a,b;
public:
binar(){a=b=0;}
binar(int i, int j){a=i;b=j;}
void citire();
void afisare();
};
class dreptunghi : public binar{
public:
dreptunghi(){};
dreptunghi(int i,int j):binar(i,j){};
double arie();
double perimetru();
};
void binar::citire(){cout<<"Dati 2 valori reale "; cin>>a>>b;}
void binar::afisare(){cout<<"a="<<a<<" B="<<b<<endl;}
double dreptunghi::arie(){return a*b;}
14
3. Creai clasa trapez_isoscel, derivata clasei triad. Pentru clasa trapez isoscel
vor fi implementate metodele de determinare a suprafeei i a perimetrului.
De la tastatur se citesc datele despre n trapeze isoscele. Elaborai un program
prin intermediul cruia la ecran se vor afia datele despre toate figurile, trapezul cu
suprafa maxim, trapezul cu perimetru maxim.
15
4. Creai clasa prism (baza este dreptunghi), derivata clasei triad. Pentru clasa
prism vor fi implementate metodele de determinare a suprafeei totale, laterale i de
determinare a volumului.
De la tastatur se citesc datele despre n prisme. Elaborai un program prin
intermediul cruia, la ecran se vor afia datele despre toate prismele, prisma cu
suprafa maxim, prisma cu volumul maxim.
5. Creai clasa piramid (baza este dreptunghi), derivata clasei triad. Pentru
clasa piramid vor fi implementate metodele de determinare a suprafeei totale,
laterale i de determinare a volumului.
De la tastatur se citesc datele despre n piramide. Elaborai un program prin
intermediul cruia, la ecran se vor afia datele despre toate piramidele, piramida cu
suprafa maxim, piramida cu volumul maxim.
7. Creai clasa Student, derivata clasei persoana. Pentru clasa student vor fi
adugate:
date: media notelor curente, grupa;
metode: vor fi redefinite metodele de citire i afiare, bursa. Bursa va fi
determinat conform fomulei: media*75 lei, dac media este mai mare dect 7.5, n
caz contrar va fi 0.
De la tastatur se citesc datele despre n studeni. Elaborai un program prin
intermediul cruia la ecran se vor afia datele despre toi studenii, studentul cel mai
tnr, studentul cu bursa maxim.
8. Creai clasa Sofer, derivata clasei persoana. Pentru clasa ofer vor fi
adugate:
16
c)
date:
afiarea
distana
figurilor
parcurs
sub
(nform
km), de
plata
ptrat;
pentru 1 km;
d)
metode:
afiarea
vorfigurilor
fi redefinite
sub form
metodele
de triunghi;
de citire i afiare, plata. Prin intermediul
metodei
e) afiarea
Plata, se
figurii
va determina
cu suprafa
costul
maxim;
unei curse efectuate de ctre ofer dup
formula:
f) afiarea
distanta*plata
figurii cupentru
perimetru
1 km.maxim;
g)
De afiarea
la tastatur
perimetrului
se citesc datele
total aldespre
figurilor;
n oferi. Elaborai un program prin
intermediul
h) afiarea
cruia
suprafeei
la ecrantotale
se vora figurilor;
afia datele despre toi oferii, oferul cel mai tnr,
oferul
i) sortarea
cu plata figurilor
maxim.n ordine descresctoare suprafeei.
9.
2.Creai
Se consider
clasa Angajat_calificat,
drept baz clasa doi
derivata
(va avea
clasei
n Salariat
calitate de
(prob.
date6).
dou
Pentru
numere
clasa
reale). n baza acestei
Angajat_calificat
vor ficlase
adugate:
se deriv clasele dreptunghi i triunghi_dreptunghic. S
se implementeze
date: gradul calificrii
polimorfismul
(1 superior,
pentru2metodele:
mediu, 3 inferior);
citire, afiare, suprafaa i
perimetru.
metode:De
vorlafitastatur
redefinite
se metodele
citete numrul
de citire
de ifiguri.
afiare,
Elaborai
salariu.un
Salariu
program
va ficare va
determinat
permite
: conform formulei : nr_ore*plata*(100%+calificare),
a) citirea figurilor de la tastatur;
b) afiarea acestora;
50%, pentru gradul 1
c) afiarea figurilor sub form de dreptunghi;
17
18
19
20
d)
e)
f)
g)
h)
i)
5. Motenire multipl
A. Problem exemplu n calitate de clase de baz se consider clasele patrat i
triunghi echilateral. Aceste clase deriv clasa figura, format dintr-un ptrat i un
triunghi echilateral, grafic figura se reprezint:
Rezolvare :
#include<iostream.h>
#include<math.h>
class patrat{
public:
double lp;
patrat(){lp=0;}
patrat(double a){lp=a;}
void cit_patrat();
void afis_patrat();
double per_patrat(){return 4*lp;}
double arie_patrat(){return lp*lp;}
};
void patrat::cit_patrat(){
cout<<"Dati latura patratului"<<endl;cin>>lp;
}
void patrat::afis_patrat(){
cout<<"Patrat: lat="<<lp<<" Aria="<<arie_patrat();
cout<<" Perimetru="<<per_patrat()<<endl;
}
class tr_echil{
public:
double lt;
tr_echil(){lt=0;}
tr_echil(double a){lt=a;}
void cit_triunghi();
void afis_triunghi();
21
cercului)
cerc: lungimea
i nlimea
razei;
triunghiului isoscel. Pentru clasa figura vor fi implementate
metodele
figur (triunghi
de determinare
nscrisansuprafeei
cerc) derivata
i a perimetrului.
claselor cerc i triunghi.
Metodele de citire i desenare vor fi implementate pentru fiecare clas din
ierarhie. De la tastatur se citete un numr ntreg n (n<100), numrul figurilor din
3. n Elaborai
calitate deun
clase
de baz
seintermediul
consider clasele
isoscel figurile
i triunghi
ierarhie.
program
prin
cruia trapez
vor fi afiate
la ecran.
isoscel. Aceste clase deriv clasa figura, format dintru-un trapez isoscel i un
triunghi isoscel, grafic figura se reprezint:
7. Se consider ierarhia format din clasele:
Clas
baz:
Punctderivata
cu cmpurile:
punctului
i culoarea;
Creai de
clasa
figura,
claselorcoordonatele
trapez isoscel
i triunghi
isoscel, dac se
Clase
derivate:
cunosc lungimile bazelor trapezului (lungimea laturii triunghiului isoscel este egal
triunghi echilateral
se consider
a fi n trapezului
centrul triunghiului):
lungimea
cu lungimea
bazei mari(punctul
a trapezului),
iar nlimile
i a triunghiului
sunt de
laturii;
aceiai mrime. Pentru clasa figura vor fi implementate metodele de determinare a
patrat: i
lungimea
laturii, punctul se consider a fi n centrul ptratului;
suprafeei
a perimetrului.
figur (triunghi nscris n ptrat) derivata claselor cerc i ptrat.
Metodele de citire i desenare vor fi implementate pentru fiecare clas din
ierarhie. De la tastatur se citete un numr ntreg n (n<100), numrul figurilor din
4. n Elaborai
calitate deun
clase
de baz
seintermediul
consider clasele
figura (exemplul
ierarhie.
program
prin
cruia cerc
vor fii afiate
figurile la ecran.
rezolvat). Aceste clase deriv clasa figura_noua (format dintr-un cerc i figura
prezentat n exemplul rezolvat), grafic figura_noua se reprezint:
8.Creai
Se consider
clasa figura_noua,
ierarhia format
derivata
dinclaselor
clasele: cerc i figura, dac se cunoate
lungimea
Clas de
laturii
baz:ptratului,
Punct cu lungimea
cmpurile:diametrului
coordonatele
cercului
punctului
esteiegal
culoarea;
cu lungimea
laturii
Clase
ptratului,
derivate:iar lungimea laturii triunghiului echilateral este egal cu a+0.3*a,
unde
triunghi
a este echilateral:
lungimea laturii
lungimea
ptratului.
laturii;Pentru clasa figura_noua vor fi implementate
metodele
patrat: de
lungimea
determinare
laturii,
a suprafeei
punctul se iconsider
a perimetrului.
a fi n centrul ptratului;
figur (o cas format din ptrat i triunghi) derivata claselor patrat i triunghi.
Metodele de citire i desenare vor fi implementate pentru fiecare clas din
ierarhie. De la tastatur se citete un numr ntreg n (n<100), numrul figurilor din
5. nElaborai
calitate deunclase
de baz
consider clasele
patrat
i figura
(problema
3).
ierarhie.
program
prinseintermediul
cruia vor
fi afiate
figurile
la ecran.
Aceste clase deriv clasa figura_noua (format dintr-un ptrat i figura din problema
3), grafic figura_nou se reprezint:
9.
Se consider
o ierarhie de
clase care
s descrie
dintr-o
Creai
clasa figura_noua,
derivata
claselor
figura habitatul
i patrat, animalelor
dac se cunoate
rezervaie
natural.
rezervaie3),pot
ntlnite urmtoarele
animale:
iepuri,cuuri,
datele despre
figur n
(problema
iarfilungimea
laturii ptratului
este egal
cprioare,
vulpi
i
lei.
Unele
dintre
animale
sunt
ierbivore,
altele
carnivore
lungimea bazei mici a trapezului isoscel. Pentru clasa figura_noua vor fi sau chiar
ierbivore
i carnivore.
de clase avasuprafeei
avea claside
baz CAnimal, clas
implementate
metodeleIerarhia
de determinare
a perimetrului.
abstract, din care se vor deriva dou clase: CAnimalIerbivor i CAnimalCarnivor.
Pentru fiecare tip de animal se va proiecta o clas corespunztoare care va extinde
una din clase de mai sus, sau ambele clase, corespunztor modului de hranire a
B. Problem
[2,sep.cunosc
185-186].
animalului.
Despreexemplu
un animal
urmtoarele informaii comune: nume, data
aducerii n rezervaie, greutate, hrana preferat, cantitate hran pe zi. n plus
despre
iepure seierarhia
cunoate
suprafaa
6. Se consider
format
din minim
clasele: pe care poate tri;
despre
vulpe
maximcoordonatele
la care poate punctului
rezista, tipul
(polar,
Clas de
baz:- temperatura
Punct cu cmpurile:
i culoarea;
indigen);
Clase derivate:
triunghi echilateral (punctul se consider a fi n centrul triunghiului): lungimea
laturii;
23
24
Clasele Angajat i Student sunt derivatele clasei Persoana, iar clasa Student_angajat
esteElaborai
derivata claselor
Student
Angajat. ncruia
clasa persoan
vor timp
fi definite
un program,
priniintermediul
pentru clasa
vor fi
urmtoarele:
suprancrcai:
numele,
prenumele,
anul dintre
naterii;
a) date:
Operatorul
+ va
efectua suma
dou obiecte de tipul timp;
b) metode:
Operatorul - va efectua diferena dintre dou obiecte de tipul timp;
citirea
de la tastatur acudatelor
despre persoan,
c) Citire
Operatorul
++ incrementarea
o secund;
d) Afisare
Operatorul
afiarea
-- decrementarea
la consol acudatelor
o secund;
despre persoan;
va returna
vrsta persoanei.
e) Virsta
Operatorul
=
nf)clasa
Operatorii
Angajat>>,<<
suplimentar
vor citi/afia
vor mai
timpul
fi declarate:
n formatul ora:min:sec, de ex. 14:24:35;
Ore de
numrul
de ore==,!=,
lucrate,
Pl_ora
plata pentru o or, funcia;
g) date:
Operatorii
comparaie
>, >=,
<,<=;
h) metode:
Se va realiza
Bani o metod,
va determina
care va
salariul
prelucra
angajatului
timpul nconform
forma corect,
formulei:
de ex. dac
ore*pl_ora.
timpul
va fi 2:59:63, va fi transformat n 3:00:03.
n clasa Student suplimentar vor mai fi declarate
date: media, grupa;
metode Bani va determina bursa studentului conform formulei: media*75 lei,
dac media studentului este mai mare dect apte, n caz contrar returneaz 0.
Clasa
Student_angajat
conine
metode pentru
citire, afiare, Bani (salariu
2. Se
consider clasavadata,
cu urmtoarea
structur:
+bursa).
class data{/*se consider c o luna are exact 30 de zile*/
Pentru aceast ierarhie se va implementa polimorfismul pentru metodele citire,
int an,luna, zi;//2010:11:18
afiare,
public: bani. De la tastatur se citete numrul total de persoane n (n<100). Tipul
acesteia
data(); se citete n momentul execuiei. La ecran va fi afiat un meniu cu
urmtoarele
opiuni:
data(int,int,int);
a) Afiarea tuturor persoanelor;
//
}; b) Afiarea persoanelor grupate pe categorii;
c) Suma total de bani, pe care o primesc toate persoanele citite;
princeintermediul
pentru
clasa data, vor fi
d)Elaborai
Persoanaun
sauprogram,
persoanele
primesc ceicruia
mai muli
bani;
suprancrcai:
e) Persoana sau persoanele ce primesc cei mai puini bani;
a)
Operatorul
+ va efectua
suma dintre
dou obiecte
de tipulacumulate;
data;
f) Afiarea
persoanelor
n ordine
descresctoare
veniturilor
b)
Operatorul
va
efectua
diferena
dintre
dou
obiecte
de
tipul
data;
g) Afiarea persoanelor n ordine cresctoare vrstei.
c) Operatorul ++ incrementarea cu o zi;
d) Operatorul -- decrementarea cu o zi;
e) Operatorul =
f) Operatorii >>,<< vor citi/afia data n formatul an:luna:zi, de ex. 2010:11:18;
g) Operatorii de comparaie ==,!=, >, >=, <,<=;
h) Se va realiza o metod, care va prelucra data n forma corect, de ex. dac data
va fi 2010:12:32, va fi transformat n 2011:01:02.
25
26
7. Agregare
Este necesar de a elabora un program prin intermediul cruia se va gestiona o
list. n acest caz lista reprezint studenii unei grupe. n toate sarcinile trebuie s fie
prezente:
a) constructor crearea listei vide;
b) destructor va elibera memoria Heap de obiecte;
c) metoda de creare va ncrca datele n Heap din fiierul de intrare;
d) metoda de inserare va insera un obiect n Heap;
29
Realizare:
Crem fiierul lista.in i l salvm n directoriul curent. n fiier datele vor fi
scrise n mod corespunztor figurii:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
class TStudent{
char *nume,*grupa;
int anul,id;
double media;
TStudent *next;//adresa umatorului element
TStudent();
friend istream & operator>>(istream &, TStudent *&);
friend ostream & operator<<(ostream &, TStudent*);
friend class lista;
friend int schimb(TStudent *,TStudent *);
};
TStudent::TStudent(){
nume=new char[20];grupa=new char[10];
anul=0;id=0;media=0; next=NULL;
}
istream & operator>>(istream &is, TStudent *&t){
cout<<"Dati datele despre student"<<endl;
cout<<"Id: ";is>>t->id;
cout<<"Nume: ";is>>t->nume;
cout<<"Grupa ";is>>t->grupa;
cout<<"Anul: ";is>>t->anul;
cout<<"Media: ";is>>t->media;
return is;
}
30
void1.
lista::cauta(char
Elaborai un *nume){
program prin intermediul cruia vor fi gestionate filmele de la
TStudent
*p;p=prim;
un
cinematograf.
Despre un film se cunosc urmtoarele date: numele filmului, anul
while(p!=NULL){
ediiei,
actorul principal, regizorul, bugetul filmului, ora de difuzare a filmului n
if(stricmp(p->nume,nume)==0) cout<<p;p=p->next;
cinematograf.
}
}
void lista::cauta(double media, int anul){
TStudent *p;p=prim;
2. Elaborai un program prin intermediul cruia vor fi gestionate mai multe
while(p!=NULL){
state
prezente la un concurs. Despre fiecare
stat se cunosc urmtoarele date: numele
if(p->media>=media&&p->anul==anul)
cout<<p;p=p->next;
rii,
preedintele, suprafaa, numrul de locuitori, continentul.
}
}
int lista::sort_medie(){
int i,j;TStudent
*a,*b;
3. Elaborai
un program prin intermediul cruia vor fi gestionate crile unei
if(!prim)return 0;
biblioteci.
Despre
fiecare carte se cunosc urmtoarele date: denumirea crii, autorul,
a=prim;
editura,
numrul de pagini, anul ediiei, preul.
for(i=0;i<n-1;i++){
b=a->next;
for(j=i+1;j<n;j++){
if((a->media)>(b->media))schimb(a,b);
4. Elaborai un program prin intermediul cruia vor fi gestionate calculatoarele
b=b->next;
unei
universiti. Despre un calculator se cunosc urmtoarele date: tipul monitorului,
}a=a->next;
capacitatea
procesorului, cantitatea memoriei operative, placa video, hard disk-ul.
}
clrscr();
cout<<"Sortarea datelor s-a efectuat cu succes";getch();
return
1;
5. Elaborai
un program prin intermediul cruia vor fi gestionate telefoanele
}mobile ale unui magazin. Despre un telefon se cunosc urmtoarele date: marca, anul
lista::~lista(){
ediiei,
culoarea, preul, termenul de garanie, tipul camerei video.
TStudent *p,*q;
do{
p=prim;prim=prim->next;delete p;
}while(prim!=NULL);
6. Elaborai un program prin intermediul cruia vor fi administrate hotelurile
}
dintr-o
ar. Despre un hotel se cunosc urmtoarele date: nume hotel, adresa, numrul
main(){
de stele, numrul de odi (camere), costurile minim i maxim pentru o camer.
char c;lista g;
g.creare();
do{
7. Elaborai un program prin intermediul cruia vor fi gestionate automobilele
clrscr();
cout<<"Tastati"<<endl<<"1-afisare"<<endl<<"2-excludere";
dintr-un
salon auto. Despre un automobil se cunosc urmtoarele date: marca, anul
cout<<endl<<"3-inserare"<<endl<<"4-Studentii
cu numele
Ion";la 100 km.
ediiei, culoarea, preul, capacitatea motorului,
consumul
cout<<endl<<"5-Studentii cu media>8, nascuti in anul 1990";
cout<<endl<<"6-Sortare dupa medie"<<endl<<"0-iesire"<<endl;
c=getch(); clrscr();
8. Creai un tip de date matr_complex, care va fi o matrice de numere
switch(c){
case '1': g.afisare();getch();break;
complexe.
Asupra acestui tip de date vor fi suprancrcai toi operatorii specifici unei
case '2': g.exclude();break;
matrice.
case '3': g.inserare();break;
case '4': g.cauta("Ion");getch();break;
case '5': g.cauta(8,1990);getch();break;
9. '6':
Elaborai
un program prin intermediul cruia se va crea tipul de date tablou
case
g.sort_medie();break;
bidimensional
cu linii de lungime variabil, notat TBV. Pentru obiectul de tip TBV
}
}while(c!='0');
se
vor implementa metodele:
} a) citire() citirea elementelor obiectului;
32
33
Student Angajat despre care se cunosc datele: numele, prenumele, codul fiscal,
grupa, media, numrul de ore lucrate, plata pentru o or.
n calitate de metode vor fi: citirea datelor de la tastatur, afiarea datelor la
ecran, determinarea bursei i a salariului. Metodele bursa i salariu vor efectua
calculele conform formulelor din clasele precedente.
Asupra personalului vor fi efectuate operaii de adugare a unei persoane,
excludere, afiare a tuturor persoanelor din instituie, ct i determinarea bugetului
lunar de salarizare a personalului instituiei.
34
Probleme rezolvate
Problema1 Reduceri
Elaborai o aplicaie care va determina reducerea unui produs cumprat.
Cumprtorul beneficiaz de reducere n urmtoarele cazuri :
a) n cazul n care suma este mai mare ca 1000 lei reducerea este de 3%;
b) n zilele de odihn reducerea este de 2%.
n rezultatul efecturii unui click pe butonul Reducere, n componenta Label va
fi afiat informaia complet despre reducere cu indicarea sumei finale. n cazul n
care reduceri nu sunt, va fi afiat mesajul corespunztor. Informaia despre zilele de
odihn va fi determinat n baza analizei datei curente. Forma aplicaiei va arta
astfel :
Realizare:
Pe suprafaa formei plasm componentele:
Label1 modificm proprietatea Caption n Suma (lei);
Label2 eliminm textul de la proprietatea Caption i setm dimensiunile
corespunztor;
Edit1 - eliminm textul de la proprietatea Text;
35
Problema2 Termopan
Elaborai o aplicaie, prin intermediul creia va fi posibil de determinat costul
unui geam termopan. Preurile sunt: 1m2 cost 179 lei, pervazul ferestrei cost 39
lei/m. Aplicaia va arta astfel :
Realizare:
Pe suprafaa formei plasm componentele:
Label1 modificm proprietatea Caption n Lungimea (cm);
Label2 modificm proprietatea Caption n Latimea (cm);
Label3 eliminm textul de la proprietatea Caption i setm dimensiunile
corespunztor;
Edit1 - eliminm textul de la proprietatea Text;
Edit2 - eliminm textul de la proprietatea Text;
Button1 modificm proprietatea Caption n Determinare cost;
CheckBox1 - modificm proprietatea Caption n Pervaz;
RadioGroup1 - modificm proprietatea Caption n Geam, iar prin intermediul
proprietii Items introducem simplu i dublu;
36
Problema3 Navigator
Elaborai o aplicaie prin intermediul creia va fi efectuat navigarea n
sistemul de fiiere al calculatorului. Efectund operaia double-click pe numele
fiierului, acesta va fi deschis. Prin intermediul unui buton cu titlul Cauta se va
efectua cutarea fiierelor dup nume, iar datele despre acestea vor fi adugate ntr-o
component de tip TMemo. Componentei de tip TMemo i va fi ataat un meniu
contextual cu titlul Salveaza, efectuarea unui click pe suprafaa acestuia va salva
cutarea n fiierul date.txt aflat n directoriul curent.
Realizare:
Pe suprafaa formei plasm corespunztor componentele:
FileListBox1 pentru afiarea fiierelor;
FilterComboBox1 modificm proprietatea FileList n FileListBox1, prin
intermediul proprietii filter crem urmtorul filtru:
iar
DEPOZITE N MDL
TipulTermenul Rata dobnzii Retrageri
depozitului de plasareanualadin cont
3 luni8%
6 luni9%
Flexibil12 luni10%DA
24 luni11%
36 luni12%
3 luni9%
6 luni10%
Rentier12 luni11%NU
24 luni12%
36 luni13%
DEPOZITE N USD I EUR
3 luni2%
6 luni2,5%
Exclusiv12 luni3%DA
24 luni3,5%
36 luni4%
3 luni3%
6 luni3,5%
Major12 luni4%NU
24 luni4,5%
36 luni5%
Realizare:
Pe suprafaa formei plasm componentele corespunztor:
ComboBox1 pentru selectarea valutei, prin intermediul proprietii Items
introducem valutele existente: MDL, USD, EUR;
ComboBox2 pentru selectarea termenului de depozit, prin intermediul proprietii
39
Realizare:
Pe suprafaa formei plasm componenta Timer1:
Declaraii:
#include <vcl.h>
#pragma hdrstop
#define R 100
#define rad 0.0174533//unghiul de rotire in radiani
#include "Unit1.h"
#include "DateUtils.hpp"
#include "math.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x0,y0,ahr,amin,asec;
Elaborm funcia:
41
Elaborm funcia:
void desen(){
TDateTime t;
Form1->Canvas->Pen->Color=clBtnFace;
Form1->Canvas->Pen->Width=3;
vector(x0,y0,ahr,R-20);
vector(x0,y0,amin,R-15);
vector(x0,y0,asec,R-7);
t=Now();
ahr=90-HourOf(t)*30-(MinuteOf(t)%12)*6;
amin=90-MinuteOf(t)*6;
asec=90-SecondOf(t)*6;
Form1->Canvas->Pen->Width=3;
Form1->Canvas->Pen->Color=clGreen;
vector(x0,y0,ahr,R-20);
Form1->Canvas->Pen->Width=2;
Form1->Canvas->Pen->Color=clBlack;
vector(x0,y0,amin,R-15);
Form1->Canvas->Pen->Width=1;
Form1->Canvas->Pen->Color=clRed;
vector(x0,y0,asec,R-7);
}
42
}
Canvas->Brush->Style=bs;
Canvas->Pen->Color=pc;
Canvas->Pen->Width=pw;
desen();
Realizare:
Pe suprafaa formei plasm corespunztor componentele:
Edit1, Edit2 pentru scrierea numerelor complexe, vom seta proprietatea Text cu ir
vid;
Button1, Button2, Button3, Button4 butoane pentru efectuarea calculelor cu numere
complexe, setm proprietatea Caption a fiecrui buton, n mod corespunztor: Suma,
Diferenta, Produsul, Citul;
Label1, Label2 conform figurii;
Label3 pentru afiarea rezultatului, vom seta proprietatea Caption cu ir vid;
Crem tipul de date complex:
class complex{
public:
double x,y;//complex=x+yi
complex(){x=y=0.0;}
complex(double a,double b){x=a;y=b;}
complex(AnsiString s);
friend complex operator+(complex,complex);
friend complex operator-(complex,complex);
friend complex operator*(complex,complex);
friend complex operator/(complex,complex);
complex operator=(complex b){x=b.x;y=b.y;return *this;}
AnsiString ToStr();
friend complex ToComplex(AnsiString);
};
43
complex::complex(AnsiString s){
AnsiString sx,sy,sc;
int a=s.Pos("+");
if(a==0)a=s.Pos("-");
if(a==1){
sc=s.SubString(2,s.Length()-1);
a=sc.Pos("-")+1;
}
sx=s.SubString(1,a-1);
sy=s.SubString(a,s.Length()-a);
x=sx.ToDouble();
y=sy.ToDouble();
}
AnsiString complex::ToStr(){
AnsiString s="";
s=s+AnsiString(x);
if(y>=0)s=s+"+";
s=s+AnsiString(y)+"i";
return s;
}
complex ToComplex(AnsiString s){
complex z(s);
return z;
}
complex operator+(complex a,complex b){
complex c;
c.x=a.x+b.x;
c.y=a.y+b.y;
return c;
}
complex operator-(complex a,complex b){
complex c;
c.x=a.x-b.x;
c.y=a.y-b.y;
return c;
}
complex operator*(complex a,complex b){
complex c;
c.x=a.x*b.x-a.y*b.y;
c.y=a.x*b.y+a.y*b.x;
return c;
}
complex operator/(complex a,complex b){
complex c;
c.x=(a.x*b.x+a.y*b.y)/(b.x*b.x+b.y*b.y);
c.y=(-a.x*b.y+a.y*b.x)/(b.x*b.x+b.y*b.y);
return c;
}
rez="("+a.ToStr()+")"+"+"+"("+b.ToStr()+")"+"="+c.ToStr();
Label3->Caption=rez;
Student Angajat despre care se cunosc datele: nume, prenume, codul fiscal, grupa,
media, numrul de ore lucrate, plata pentru o or.
n calitate de metode vor fi: citirea datelor de la tastatur, afiarea datelor,
determinarea bursei i a salariului. Metodele bursa i salariu vor efectua calculele
45
46
47
pl_ora=Form1->plata->Text.ToDouble();}
AnsiString Angajat::afisare(){
AnsiString s=Persoana::afisare();
s=s+functia+" "+FormatFloat("0.00",salariu());
return s;}
double Angajat::salariu(){return ore*pl_ora;}
void Student::citire(){
Persoana::citire();
grupa=Form1->grupa->Text;
media=Form1->media->Text.ToDouble();}
AnsiString Student::afisare(){
AnsiString s=Persoana::afisare();
s=s+grupa+" "+FormatFloat("0.00",bursa());
return s;}
double Student::bursa(){
if(media<7.5) return 0;
else if(media<8.5) return 300;
else if(media<9.5) return 400;
else return 500;}
void Stud_Ang::citire(){
Persoana::citire();
grupa=Form1->grupa->Text;
media=Form1->media->Text.ToDouble();
functia=Form1->functia->Text;
ore=Form1->ore->Text.ToInt();
pl_ora=Form1->plata->Text.ToDouble();}
AnsiString Stud_Ang::afisare(){
AnsiString s=Persoana::afisare();
s=s+grupa+" "+functia+" "+FormatFloat("0.00",bursa()+salariu());
return s;}
class celula{
public:
Persoana *p;
celula *next;
celula(){next=NULL;}
void cit(int);
AnsiString afis(){return p->afisare();}
double consum();
};
double celula::consum(){return p->bursa()+p->salariu();}
void celula::cit(int i){
switch(i){
case 0 : p=new Student;break;
case 1 : p=new Angajat;break;
case 2 : p=new Stud_Ang;break;
}p->citire();}
class lista{
celula *prim;
public:
lista(){prim=NULL;}
void afisare();
void inserare(int);
void exclude(AnsiString);
double bani();
48
~lista();
Probleme pentru rezolvare independent
};
void lista::afisare(){
Form1->Memo1->Clear();
1. Forme (ferestre).
if(prim==NULL) Form1->Memo1->Lines->Add("Lista este vida");
else{
Form1->Memo1->Lines->Add("Lista
Personalului");
1. Elaborai o aplicaie prin intermediul
creia va fi afiat o fereastr cu
celula *p;p=prim;
urmtoarele
setri: dimensiunile 400400, culoarea albastr, poziia centru sus,
while(p!=NULL){
titlu
numele i prenumele studentului, utilizatorului i se va interzice
Form1->Memo1->Lines->Add(p->afis());p=p->next;
redimensionarea
formei.
}}}
void lista::inserare(int i){
celula *q;q=new celula;
q->cit(i);q->next=prim;prim=q;}
2. Elaborai o aplicaie care la efectuarea unui click pe suprafaa formei va
void lista::exclude(AnsiString c){
modifica,
n mod aleator, culoarea formei (minim 5 culori).
celula *w,*q;w=prim;
Indicaie : pentru generarea culorilor
if(w->p->cod()==c){prim=w->next;delete
w;}va fi utilizat funcia random.
else{while(w->next->p->cod()!=c && w!=NULL)w=w->next;
if(w!=NULL){q=w->next;w->next=q->next;delete q;}}}
lista::~lista(){
3. Elaborai o aplicaie care la efectuarea unui click va exclude bara de titlu a
celula *p,*q;
formei,
iar la efectuarea double-click va afia bara de titlu a formei cu titlul respectiv
if(prim!=NULL)
SALUT.
do{p=prim;prim=prim->next;delete p;}while(prim!=NULL);}
double lista::bani(){double d=0;celula *p;p=prim;
while(p!=NULL){d=d+p->consum();p=p->next;}
return
d;}
4. Elaborai
o aplicaie care va modifica titlul formei n dependen de
Prelucrm
evenimentul
5. Elaborai
o aplicaie
careButton1Click
la efectuarea unui double-click va modifica
p.inserare(RadioGroup1->ItemIndex);
consecutiv valoarea proprietii BorderStyle.
Button2Click(Sender);
RadioGroup1->ItemIndex=-1;
nume->Clear();prenume->Clear();
6. Elaborai o aplicaie care:
idnp->Clear();grupa->Clear();
a)
la
apsarea tastei x va nchide aplicaia;
media->Clear();functia->Clear();
b)
la
apsarea tastei L va mri lungimea ferestrei cu 10%;
ore->Clear();plata->Clear();
va
deplasa
fereastra n sus;
FormatFloat("0.00",p.bani()));
b) la apsarea
tastei
va deplasa
fereastra n jos;
Prelucrm
evenimentul
Button4Click
c) la apsarea tastei va deplasa fereastra n dreapta;
AnsiString s=InputBox("Excludere","Indicati codul fiscal al
d)
la apsarea
tasteia
va deplasa fereastra n stnga.
persoanei
ce urmeaza
fi exclusa","");
p.exclude(s);Button2Click(Sender);
49
50
2. Componenta Button.
1. Creai aplicaia SHOW/HIDE. Pe suprafaa formei cu titlul SHOW/HIDE
sunt plasate 3 butoane, cu titlurile respective: show, hide, show/hide. La efectuarea
unui click pe unul din primele 2 butoane butonul show/hide va fi ascuns sau afiat, n
dependen de butonul apsat.
51
3. Componenta Edit
1. Creai aplicaia TITLUL FORMEI. Pe suprafaa formei sunt plasate
componentele Buton (cu titlul Scrie) i Edit. La efectuarea unui click pe suprafaa
butonului titlul ferestrei va corespunde cu textul din cutia Edit.
52
54
12. Elaborai o aplicaie care va verifica dac greutatea i nlimea unui copil
corespund vrstei. Vrsta copilului se va introduce prin intermediul unei componente
Edit. Formule de calcul :
greutate=2*v+8 (n kg),
nlime=5*v+80 (n cm).
55
15. Creai aplicaia Sistem de ecuaii, care s determine soluiile unui sistem de
ecuaii cu dou necunoscute. Rezultatele vor fi afiate prin intermediul
componentelor Label.
16. Creai aplicaia Triunghi. Prin intermediul a 3 cutii de editare se introduc 3
valori numerice, care reprezint lungimile laturilor unui triunghi. La efectuarea unui
click pe butonul Calcul se va determina:
a) tipul triunghiului (ascuit, obtuz, dreptunghic), utiliznd teorema lui
Pitagora;
b) aria triunghiului (Formula lui Heron);
c) perimetrul triunghiului.
n cazul n care valorile introduse nu pot forma un triunghi, va fi afiat un
mesaj, care va indica aceasta i nu se va efectua nici un calcul. Rezultatele vor fi
afiate prin intermediul componentelor Label.
18. Creai aplicaia Numere prime. Prin intermediul unei componente Edit se
citete un numr ntreg. La efectuarea unui click pe butonul Determina ntr-o
component Label vor fi afiate toate numerele prime mai mici sau egale cu numrul
56
Cn
r!*(n r )!
5.
Creai
Virus.
Pe suprafaa
principaleasedou
plaseaz
un buton cu
20.
Creaiaplicaia
aplicaia
Numere
prietene. formei
Prin intermediul
componente
titlul
Lanseaz
virus.
La
efectuarea
unui
click
pe
acest
buton
forma
principal
Edit se citesc 2 numere ntregi. Dou numere se numesc prietene dac posed este
ascuns
i afiat
o alt
cuegal
titlulcuVirus.
cuceluilalt,
titlul Virus,
proprietatea:
fiecare
din form
ele este
sumanchiderea
divizorilorformei
inferiori
de va
afia
o
nou
form
cu
acelai
titlu.
Aplicaia
se
va
nchide
la
apsarea
tastei
x.
exemplu 220 i 284. Prin intermediul unei componente Label se va afia dac
numerele sunt sau nu prietene.
6. Elaborai o aplicaie multiform. Prin intermediul formei principale se vor
seta unele proprieti ale formei a doua: titlul, dimensiunile, distana de sus, distana
21. Creai
aplicaia
Numar perfect.
Prin date,
intermediul
unei componente
Edit
se
din stnga.
Numai
dup introducerea
acestor
la efectuarea
unui click pe
butonul
citete
un
numr
ntreg.
Prin
intermediul
unei
componente
Label
se
va
afia
dac
Arata, va fi afiat a doua form, iar forma principal va fi ascuns. La nchiderea
numrul
este perfect,
supraperfect
formei secundare,
forma
principalsau
va imperfect.
fi afiat. Numrul este perfect dac suma
divizorilor inferiori acestuia este egala cu el nsui, dac suma este mai mic ca
numrul atunci el este imperfect, dac suma este mai mare ca numrul dat atunci el se
numete supraperfect.
7. Creai aplicaia Bursa. Prin intermediul formei principale utilizatorul va
introduce datele despre un student: numele, grupa, anul naterii i media notelor
curente. La efectuarea unui click pe butonul determin media, va fi afiat o fereastr
5. Aplicaii
multiforme.
cu titlul: numele i grupa studentului,
n interiorul
acesteia va fi afiat vrsta i media
studentului. Pentru determinarea bursei va fi utilizat formula: media notelor
curente*75, dac media notelor curente este mai mare ca 7.6, n caz contrar 0.
1. Elaborai o aplicaie multiform. Aplicaia va fi format din 3 forme. Pe
suprafaa formei principale (forma 1) este plasat un buton cu titlul Forma Noua. La
efectuarea unui click pe suprafaa acestuia, este ascuns forma principal i afiat o
alt form similar formei principale, titlul acestei forme fiind Forma 1. Efectuarea
8. Creai aplicaia Dialog. Pe suprafaa formei principale vor fi plasate 2
unui click pe butonul Forma Noua ascunde forma i afieaz o alt forma cu titlul
butoane de comand, cu titlurile respectiv, Inchide aplicaia, Modifica culoarea
Forma 2, .d. nchiderea unei dintre forme va genera nchiderea aplicaiei.
formei. La efectuarea unui click pe unul dintre butoane, va fi afiat o fereastr de
dialog cu urmtorul coninut:
Inchide aplicaia fereastra de dialog va conine butoanele Yes i No. La
efectuarea unui click pe butonul Yes, aplicaia se va nchide;
2. Elaborai o aplicaie care la efectuarea unui click pe butonul cu titlul Intro,
Modifica culoarea formei fereastra conine un cmp pentru introducerea
va afia o fereastr de dialog prin care i se va cere utilizatorului s-i scrie prenumele
culorii i butoanele Ok, Cancel. Efectuarea unui click pe butonul Ok, modific
(de exemplu Ion). Dup efectuarea unui click pe butonul Ok, fereastra va fi nchis i
culoarea formei corespunztor valorii introduse.
va fi afiat o alta fereastr, cu un mesaj de salut (de exemplu Salut Ion).
Cn ,
interiorul acesteia este afiat un cod aleator format din 4 cifre), o component Edit (n
cadrul acestei componente utilizatorul va scrie codul afiat n Label), un buton de
comand. La efectuarea unui click pe butonul de comand se va verifica
corectitudinea codului, dac codul este scris corect, atunci fereastra modal este
nchis. La elaborarea aplicaiei vor fi excluse alte posibiliti de nchidere a ferestrei
modale.
10. Elaborai o aplicaie care la lansare va afia o form, prin intermediul creia
se va cere utilizatorului s introduc numele i parola. Validarea acestora se va
efectua prin efectuare unui click pe butonul Validare sau apsnd tasta Enter. Dac
numele i parola sunt corecte se va deschide o nou form, iar precedenta va fi
ascuns. Scrierea greit a numelui sau a parolei de trei ori consecutiv va nchide
forma proiectului.
6. Aplicaii cu butoane
1. Creai aplicaia CONTOR. Pe suprafaa ferestrei principale sunt plasate
componentele: Edit, un buton UpDown asociat componentei Edit, un grup de 4
butoane radio, cu titlurile respectiv uniti, zeci, sute, mii. La efectuarea unui click pe
unul dintre butoanele radio valoarea din cutia de editare va fi incrementat sau
decrementat corespunztor butonului radio.
59
a)9.Grupul
Creai aplicaia
Pozitie vaBaza.
conine
Pe suprafaa
urmtoarele
formei
opiuni:
suntCentru,
plasate Stinga
8 componente
sus, Stinga jos,
CheckBox,
8 componente
Dreapta
sus, Dreapta Label,
jos. o cutie de editare. Prin intermediul cutiei de editare
se va
b)introduce
Grupul Culoare
un numr
va conine
ntreg. Butoanele
o list cu 5deopiuni
tip TCheckBox
cu diferitevor
culori.
avea titlurile: baza
doi,c)baza
trei,...,
baza nou.vaLaconine
bifareaurmtoarele
butoanelor opiuni:
numrul200200,
introdus va
fi transformat
Grupul
Dimensiune
200300,
corespunztor
300200,bazei
400500,
selectate
500400.
i afiat (doar dac este bifat) prin intermediul
componentelor
tip TLabel.
Efectuareadeunui
click pe fiecare grup va afia forma cu setrile selectate.
5.
10.Creai
Creaiaplicaia
aplicaiaCONVERTOR.
Butoane Radio.Aceast
Pe suprafaa
aplicaie
formei
va permite
cu titlulefectuarea
Butoane
Radio este plasat
urmtoarelor
transformri:
o component RadioGroup i un buton de comand. La
efectuarea
a) milimetri,
unuicentimetri,
click pe suprafaa
decimetri,
butonului
kilometri,
de comand
dac valoarea
n componenta
iniial se consider
RadioGroup
vor dat
fi adugate
n metri;
10 butoane cu titlurile respectiv 0,1,...,9. Butoanele vor fi divizate n
trei
b)coloane.
miligrame,
La kilograme,
selectarea butonului
tone, centigrame,
cu valoare
dac
maxim,
valoarea
n iniial
cutie vasefi consider
adugat nc
un buton
dat n(urmtorul
grame; dup numrul maxim). Se va permite adugarea de noi butoane,
doar
c) sptmni,
dac valoarea
zile,butonului
minute, secunde,
maxim nu
dac
depete
valoarea50.
iniial
La selectarea
se consider
butonului
dat ncuore.
titlul
0, vaLafielaborarea
exclus butonul
aplicaiei
cu valoarea
vor fi utilizate
maximal,
componente
excluderea
RadioGroup
se va efectua
(cte
doar
un dac
grup
pentru fiecare
numrul
de butoane
caz). Pentru
depete
fiecare
valoare
caz va
3. La
fi afiat
efectuarea
rezultatul
unuinclick
componente
pe oricareLabel.
alt buton
din cutie, va fi afiat un mesaj care va conine titlul butonului selectat.
62
ASCIICaractere
DeschideDeschide
Transforma Transforma
SalvareSalvare
Efectuarea unui click pe opiunea Deschide va scrie caracterele din fiier
(ascii.txt/caractere.txt) n componenta Memo;
Efectuarea unui click pe opiunea Transforma va transforma textul n cod
ASCII (va transforma codul n text) , apoi acesta va fi scris n componenta Memo;
Efectuarea unui click pe opiunea Salvare va scrie caracterele din Memo n
unul din fiierele (ascii.txt, dac textul a fost transformat n cod i respectiv
caractere.txt);
10. Creai aplicaia Triunghiul lui Pascal. Prin intermediul unei componente
de tip TEdit se va citi nlimea triunghiului. Triunghiul va fi afiat prin intermediul
unei componentei Memo. De exemplu triunghiul cu nlimea 4 va arta astfel:
Triunghiul lui Pascal :
63
n!
C
r!*(n r)!
64
65
butonul
11. Creai
al doilea
aplicaia
va fi rotit
Parabola.
patrulaterul,
Prin intermediul
citindu-se n
a trei
prealabil
cutii de
msura
editareunghiului
se vor de
introduce
rotire
i coordonatele
coeficienii punctului
pentru o ecuaie
fa dede
care
gradul
se vadoi
efectua
(parabol).
rotirea.La efectuarea unui
click pe butonul cu titlul Desen va fi desenat pe o component de tip TImage graficul
ecuaiei introduse.
18. Creai aplicaia Creion. Aplicaia va simula componenta Pencil din
aplicaia PAINT. Prin intermediul unui meniu contextual va fi posibil de selectat
culoarea creionului i curirea suprafeei de desenare.
12. Creai aplicaia Hiperbola. Prin intermediul a patru cutii de editare se vor
introduce coeficienii pentru o ecuaie de gradul trei (hiperbol). La efectuarea unui
click pe butonul cu titlul Desen va fi desenat graficul ecuaiei introduse pe o
19. Creai aplicaia Deplasare. Pe suprafaa formei este desenat o figur. La
component de tip TImage.
efectuarea unui click pe butonul cu titlul Start se va mica figura pe traiectoria unui
ptrat. Pentru aceasta se vor indica coordonatele ptratului (colul stnga sus al
ptratului i lungimea laturii). Efectuarea unui click pe butonul Stop va stopa
13. Creai
aplicaia
Parabole.
Pe suprafaa
formei se
4 butoaneMareste
de
procesul
de rotire
a figurii.
Prin intermediul
butoanelor
cuplaseaz
titlurile respectiv
comand
cu titlurile
respectiv
sus, jos,
dreapta,
stinga.
La efectuarea
unui click pe
i
Micsoreaza
se va mri,
respectiv
micora
viteza
de deplasare
a figurii.
unul dintre butoane va fi desenat o parabol cu ramurile orientate respectiv n sus, n
jos, la dreapta, la stnga.
20. Creai aplicaia Plutire. Pe suprafaa formei este desenat o figur (cerc,
14.
Elaborai o aplicaie
prin intermediul
creia
va ficu
desenat
sistemul
cartezian
patrat, dreptunghi).
La efectuarea
unui click pe
butonul
titlul Start
figura
va pluti
de suprafaa
coordonate
Oxy cu
numerotrile
corespunztoare.
n acest sistem
pe
formei
(semarcajele
va deplasai pe
traiectoria unei
sinusoide). Efectuarea
unui
reprezentai
punctul
i stopa
proieciile
acestuia
pe axeleade
coordonate. Coordonatele
click
pe butonul
StopAva
procesul
de plutire
figurii.
punctului vor fi citite prin intermediul a dou cutii de editare.
9. Componenta Timer
15. Creai aplicaia Grafic. Prin intermediul acestei aplicaii se vor desena
graficele urmtoarelor funcii:
1. Elaborai o aplicaie care va permite modificarea culoarea formei peste un
interval
de
timp.
f ( x)
x Intervalul
3 x 2 de timp se va
f (introduce
x) x2de
lnctre
x utilizator. Culoarea e x e x
formei se
1 va
1 modific n mod aleator dintr-o gam de 8 culori.
f ( x)
1
f ( x) 2
2
f ( x) sin x sin 2x
x
x
e
x e x
2. Elaborai o aplicaie care va modifica poziia2formei peste un interval de
x de timp se va introduce de ctre utilizator. Poziionarea formei
f ( x)va
fix x
timp. Intervalul
28
f ( x)n
2 aleator astfel: sus, jos, dreapta, stnga, centru.
e e
efectuat
mod
f ( x) x
x 1
tgx
x
f ( x)
x2f ( x) e
3. Creai aplicaia Logare. Pe suprafaa formei
va fi plasat un buton cu titlul x
Logare, la efectuarea unui click pe suprafaa acestuia se va afia o nou fereastr,
unde16.
utilizatorul
va introduce
numele
i parola.
Pentruformei
introducerea
acestora
Creai aplicaia
Rotete
triunghi.
Pe suprafaa
se plaseaz
douse vor
acorda
Dac utilizatorul
nu reuete
introduc
datele de
corect,
butoane20cusecunde.
titlurile respectiv
Deseneaza
triunghi s
i Roteste
triunghi.
Lalogare
efectuarea
aplicaia
este
nchis.
Numele
de
utilizator
i
parola
corect
vor
fi
fixate
n
codul
unui click pe primul buton se va desena un triunghi, iar la efectuarea unui click pe
programului.
butonul al doilea va fi rotit triunghiul, citindu-se n prealabil msura unghiului de
rotire i coordonatele punctului fa de care se va efectua rotirea.
68
71
70
72
10. Creai aplicaia Ceas digital. La mijlocul ferestrei va fi afiat un ceas digital
ce indic timpul n formatul ore:min:sec, cu mrimea de 72 pt. Culoarea formei va fi
modificat dintr-o gam de 5 culori la fiecare minut. Prin intermediul unui meniu
utilizatorul va putea seta ora, minutele, respectiv secundele.
75
76
77
11.6.Elaborai
Creai aplicaia
un proiect
Depozit.
prin intermediul
Fereastra aplicaiei
cruia seva
vorarta
efectua
n modul
operaii
urmtor:
asupra
tipului de date arbori binari de cutare. n calitate de noduri ale arborelui binar de
cutare vor fi numere ntregi. Prin intermediul unui meniu se vor efectua operaiile:
a) crearea arborelui binar de cutare (ncrcarea datelor din fiier);
b) desenarea arborelui pe suprafaa formei;
c) parcurgerea arborelui prin metodele: inordine, preordine i postordine;
d) cutarea unui nod;
e) inserarea unui nod n arbore;
f) excluderea unui nod din arbore.
pentru
adugarea
unui
produs
n
depozit
ntr-o
anumit
cantitate;
intermediul cruia se vor efectua urmtoarele operaii:
b)
exclude
pentru
excluderea
unui
produs
din
depozit.
a) ncrcarea datelor despre medicamente din fiier i prin intermediul unui
Pentru componenta
ListBox vadatelor;
fi creat un meniu contextual cu opiunea
formular
destinat introducerii
exclude,
pentru
a oferi
utilizatorului
de a exclude un produs.
b) cutarea
unui
medicament
dupposibilitatea
nume;
c) afiarea medicamentelor n ordine lexicografic a numelui (va fi utilizat o
component Memo);
d) eliminarea unui medicament prin indicarea numelui acestuia;
e) afiarea medicamentelor care au data de expirare mai mic dect o dat
7. Elaborai un proiect care va permite vizualizarea imaginilor dintr-un
specificat.
directoriu indicat. Iniial va permite vizualizarea din directoriul curent, ca ulterior s
permit modificarea acestuia. Aplicaia dat va conine instrumente pentru
mrirea/micorarea imaginilor, ct i pentru a trece la urmtoare/precedenta imagine.
Elaborai
aplicaie
prin
creiadevatexte
fi rezolvat
SUDOKU.
8.13.
Elaborai
unoproiect
care
va intermediul
simula un editor
similarjocul
aplicaiei
Prin intermediul componentei StringGrid utilizatorul va introduce numerele n cutie.
Notepad.
Efectuarea unui click pe suprafaa butonului cu titlul Rezolvare, va rezolva jocul.
9. Elaborai un proiect care va simula un editor de imagini (similar aplicaiei
Paint).
conine Operaii
instrumente
specificeCu
pentru
desenarea
De
14.Editorul
Elaboraivaaplicaia
cu mulimi.
ajutorul
a doufigurilor.
componente
asemenea
va
permite
ncrcarea
i
salvarea
unei
imagini.
StringGrid se citesc elementele a dou mulimi A i B. Prin intermediul unui meniu
utilizatorului i se va oferi posibilitatea de a efectua operaii cu mulimi. Meniul va
conine opiunile:
Creai aplicaia
intermediul
a)10.
reuniune
va afiaCalculator.
elementelePrin
mulimii
A B;aplicaiei se va oferi
utilizatorului
posibilitatea
de a efectua:mulimii A B;
b) intersecie
va afia elementele
a)
operaii
cu
numere
reale;
c) diferena va afia elementele mulimii A\B;
b)
operaii de element
conversie
dintr-un
sistem
n altul;
d) incluziune
va
verifica
dacde
unnumeraie
element (va
fi introdus prin
c)intermediul
operaii trigonometrice;
unei cutii de editare) se include n mulimea A;
d) incluziune
operaii logaritmice.
e)
mulimi va verifica dac mulimea A se include n mulimea B;
79
78
80
Probleme rezolvate
Problema1 Magazin
Elaborai o aplicaie prin intermediul creia va fi simulat activitatea unui
magazin. Astfel, se vor efectua operaii de primire a mrfii i de vnzare a acesteia.
Forma aplicaiei va arta n modul urmtor:
Realizare:
Pentru pstrarea datelor despre produsele din magazin vom crea tabelul
produse.db, pe care l vom salva n dosarul curent. Tabelul va avea urmtoarea
structur:
81
while(!Table1->Eof){
s= AnsiString(Table1->FieldValues["Nume produs"]);
ComboBox1->Items->Add(s);
Table1->Next();}
83
85
84
86
FORMULARUL Ad_carte
FORMULARUL Ad_autor
87
FORMULARUL Ad_limba
FORMULARUL Ad_editura
FORMULARUL Administrare
88
FORMULARUL Raport
Pe forma Raport plasm componenta QuickRep1, modificm proprietatea
Name n Lista_carti. Scriem textul interogrii n cadrul componentei Query de pe
forma principal (n cadrul proprietii SQL scriem interogarea, dup care setm
Active=true;
Quickrep1: Dataset=Main->Query;Bands->HasTitle=true;
Bands->HasColumnHeader=true;
Bands->HasDetail=true;
Pe banda Title plasm componenta QRLabel1 i atribuim proprietii Caption textul
Lista carti;
Procedm similar i n cazul benzii Column Header;Pe banda Detail plasm
componentele:
QRDBText1: Dataset=Main->Query;DataField=titlu;
QRDBText2: Dataset=Main->Query; DataField=limba;
QRDBText3: Dataset=Main->Query; DataField=pagini;
QRDBText4: Dataset=Main->Query; DataField=pret;
QRDBText5: Dataset=Main->Query; DataField=nume;
QRDBText6: Dataset=Main->Query; DataField=editura;
QRDBText7: Dataset=Main->Query; DataField=data.
n cadrul acestei forme urmeaz a fi create mai multe rapoarte, plasm
componenta Quickrep2 pe form, iar pe suprafaa acesteia:
89
Codul surs:
Unit1.cpp fiierul formei principale (Main)
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
#include "Unit7.h"
#include "Unit8.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TMain *Main;
__fastcall TMain::TMain(TComponent* Owner): TForm(Owner){
sql="SELECT Carti.titlu, Carti.pret,Carti.pagini, Carti.data,
Editura.nume, Autori.nume, Autori.prenume, Limba.limba FROM
Autori,Carti,Editura,Limba WHERE (Carti.id_autor =
Autori.id_autor) AND (Editura.id_editura = Carti.id_editura) AND
(Limba.id_limba = Carti.id_limba)";
}
void __fastcall TMain::Carte1Click(TObject *Sender){
Ad_carte->Show();}
90
91
"Unit1.h"
"Unit2.h"
"Unit3.h"
"Unit4.h"
"Unit5.h"
92
#include "Unit6.h"
#include "Unit8.h"
TCauta *Cauta;
TDateTime d;int nr;
void __fastcall TCauta::Button2Click(TObject *Sender){
AnsiString s[10];double q;
s[0]=Main->sql+"AND (Carti.pret <:a)";
s[1]=Main->sql+"AND (Carti.pret >:a)";
s[2]=Main->sql+"AND (Carti.pret = :a)";
Main->Query1->Close();
Main->Query1->SQL->Text=s[nr];
q=Edit2->Text.ToDouble();
Main->Query1->ParamByName("a")->AsFloat=q;
Main->Query1->Open();
}
void __fastcall TCauta::RadioGroup1Click(TObject *Sender){
nr=RadioGroup1->ItemIndex;
}
void __fastcall TCauta::FormShow(TObject *Sender){
AnsiString s;
ComboBox1->Clear();
Main->Limba->First();
while(!Main->Limba->Eof){
s= AnsiString(Main->Limba->FieldValues["Limba"]);
ComboBox1->Items->Add(s);
Main->Limba->Next();
}
}
void __fastcall TCauta::Button1Click(TObject *Sender){
Main->Query1->Close();
Main->Query1->SQL->Text=Main->sql+"AND (Carti.titlu like :a)";
Main->Query1->ParamByName("a")->AsString="%"+Edit1->Text+"%";
Main->Query1->Open();
}
void __fastcall TCauta::Edit1Change(TObject *Sender){
Button1Click(Sender);}
void __fastcall TCauta::ComboBox1Change(TObject *Sender){
Main->Query1->Close();
Main->Query1->SQL->Text=Main->sql+"AND (Limba.limba like :a)";
Main->Query1->ParamByName("a")->AsString="%"+
ComboBox1->Items->Strings[ComboBox1->ItemIndex]+"%";
Main->Query1->Open();
}
void __fastcall TCauta::BitBtn1Click(TObject *Sender){
AnsiString s[10];
s[0]=Main->sql+"AND (Carti.data <=:a)";
s[1]=Main->sql+"AND (Carti.pret >=:a)";
s[2]=Main->sql+"AND (Carti.pret = :a)";
Main->Query1->Close();
Main->Query1->SQL->Text=s[nr];
Main->Query1->ParamByName("a")->AsDateTime=d;
Main->Query1->Open();
}
void __fastcall TCauta::DateTimePicker1Change(TObject *Sender){
93
d=DateTimePicker1->DateTime;}
void __fastcall TCauta::RadioGroup2Click(TObject *Sender){
nr=RadioGroup2->ItemIndex;
}
void __fastcall TCauta::Tipar1Click(TObject *Sender){
Raport->Lista_carti->Preview();
}
94
3. n baza tabelului tari.db, s se creeze fiiere sql care vor conine urmtoarele
interogri:
a) interog1 va afia numele rii i densitatea populaiei acesteia;
b) interog2 va afia numele rii cu densitatea populaiei maxim;
c) interog3 va afia numele rii cu densitatea populaiei minim;
95
3. Elaborai
4. Creai otabelul
aplicaie
angajati.db
care n baza
cu urmtoarele
datelor din tabelul
cmpuriangajati.db,
:
va permite
afiarea banilor cheltuii pentru salarizare timp de un an. Anul se va indica prin
intermediul unei componente de tip TComboBox. Dup selectarea anului prin
intermediul unei componente de tip TLabel va fi afiat suma de bani.
11. Utiliznd tabelul studenti.db creat n exemplul 10, Creai tabelul bursieri.db
i prin intermediul butonul completare, s se completeze tabelul bursieri cu datele
corespunztoare.
12. Utiliznd tabelul studenti.db creat n exemplul 10, Creai tabelul
grupa_mea.db n care se vor scrie studenii grupei din care suntei. Scrierea datelor se
va efectua prin intermediul butonului completare.
13. Utiliznd tabelul studenti.db creat n exemplul 10, Creai tabelul stud_18.db
n care se vor scrie toi studeni cu vrsta de 18 ani. Scrierea datelor se va efectua prin
intermediul butonului completare.
14. Elaborai o aplicaie prin intermediul creia se va crea un formular de
vizualizare a datelor tabelului tari.db. Se recomand ca formularul s fie de
urmtoarea form:
alta circular). Diagramele vor fi create n baza datelor din cmpurile Suprafata i
Populatie.
16. Elaborai o aplicaie ar-Capital. ntr-o component de tip TComboBox
se vor scrie numele rilor din tabelul tari.db. Pe suprafaa formei va fi plasat o
component de tip TRadioGroup. n cadrul acestei componente vor fi scrise 4 nume
de orae (dintre care unul este capitala rii selectate). La efectuarea unui click pe una
dintre opiuni va fi afiat un mesaj cu indicarea corectitudinii rspunsului. Verificarea
rspunsului se va efectua n baza datelor din tabelul tari.db.
Nume cimp
nume
prenume
data nasterii
tara
orasul
tipul
String
String
Data
String
String
99
c)
a) Formular de excludere
adugare prin
prinintermediul
intermediulacestuia
acestuiase
sevor
va permite:
introduce datele
Excluderea
unuirelaiei
automobil;
despre
cri n baza
de mai sus.
b) Formular
Excluderea
de vizualizare
unei mrci
(acest
(excluderea
formularunei
nu vor
mrci
conine
presupune
componente
excluderea
de tipul
tuturor
automobilelor
de marca respectiv);
TDBGrid)
prin intermediul
acestuia se vor afia:
Datele
Excluderea
despreunui
toate
tipcrile,
(excluderea
despreunui
toi tip
autorii;
presupune excluderea tuturor
automobilelor
Autoruldecutipul
celerespectiv).
mai multe cri;
d)
Formular
Cartea pentru
cea maiefectuarea
scump; de operaii prin intermediul acestuia se va
permite:
Numrul de cri cu o vechime mai mare de 10 ani.
c) Formular
Modificarea
de excludere
datelor despre
prin intermediul
un automobil;
acestuia se va permite:
Excluderea
Modificarea
mrcii
unei
cri;unui automobil;
Excluderea
Modificarea
unui
tipului.
autor (excluderea unui autor presupune excluderea tuturor
n cadrul
proiectului
vor fi introduse
crilor
unde figureaz
autorulminim
dat); 15 nregistrri.
Excluderea unei limbi (excluderea unei limbi presupune excluderea tuturor
crilor unde figureaz limba dat).
d) Formular pentru efectuarea de operaii prin intermediul acestuia se va
permite:
Modificarea datelor despre o carte;
Modificarea datelor unui 3.
autor;
Aplicaii cu Interogri
Modificarea limbii de ediie a unei cri.
n cadrul proiectului vor fi introduse minim 15 nregistrri.
1. Elaborai o aplicaie cu interogri n baza tabelului tari.db. Se vor afia:
a) Toate cmpurile;
b) Cmpurile Nume, Suprafata i Populatie, unde Suprafata>2000;
c) nregistrrile unde densitatea populaiei este mai mare dect 100.
Pentru
acest proiect
vor fi elaborate
urmtoarele
formulare:
3. Elaborai
o aplicaie
prin intermediul
creia
vor fi afiate numai nregistrrile
a)
Formular
de
adugare
prin
intermediul
acestuia
se vor
introduce
datele
tabelului tari.db, unde numele rii ncepe cu /conine un
caracter
selectat.
Caracterul
despre
automobile
n
baza
relaiei
de
mai
sus.
va fi selectat prin intermediul unei componente de tip TComboBox, care va conine
b) Formular
dealfabetului
vizualizareenglez.
(aceste formulare nu vor conine componente de tipul
toate
caracterele
TDBGrid) prin intermediul acestuia se vor afia:
Datele despre toate automobilele;
Automobilul cel mai scump;
4.Elaborai
aplicaie
prin intermediul
creia
se va
permite
alegerea
Numrulode
automobile
cu o vechime
nu mai
mare
de 5 ani.
coloanelor tabelului tari.db. Pentru indicarea acestora se va utiliza cte un buton de
tip TCheckBox. Dac acesta va fi bifat, atunci datele Cmpului corespunztor se vor
102
101
afia, n caz contrar nu se vor afia. Datele vor fi afiate prin intermediul unei
componente de tip DBGrid i sortate dup ultimul cmp selectat.
5. Elaborai o aplicaie n baza tabelului angajati.db, prin intermediul creia se
vor afia:
a) nregistrrile unde Cmpul Salariu [a,b];
b) Salariul maxim pentru nregistrrile cu cmpul Salariu [a,b];
c) Salariul minim pentru nregistrrile cu cmpul Salariu [a,b];
d) Salariul mediu pentru nregistrrile cu cmpul Salariu [a,b];
e) Numrul de nregistrri cu cmpul Salariu [a,b].
Valorile a i b vor fi introduse de la tastatur prin intermediul a dou cutii de editare.
103
min max
* count ([ avg a, avg a ])
K1 =
sum
avg
104
formula:
Salariu=Salariu+
max
min 2
avg
4. Rapoarte
1. Elaborai o aplicaie prin intermediul creia va fi creat un raport pentru toate
cmpurile tabelului tari.db. Pagina raportului va avea urmtoarele dimensiunea A4 i
orientarea Landscape.
2. Elaborai o aplicaie prin intermediul creia va fi creat un raport pentru
cmpurile Nume, Prenume i Salariu ale tabelului anagajati.db. Pe pagina raportului
va fi creat o diagram pentru cmpurile respective.
3. Elaborai o aplicaie n baza tabelei angajati.db, prin intermediul creia se va
crea un raport care va afia:
a) nregistrrile unde Cmpul Salariu [a,b];
b) nregistrrile unde Cmpul Salariu [salariu mediu-a, salariu mediu+a];
c) nregistrrile unde angajaii au un stagiu de munc nu mai mic de 5 ani.
Valorile a i b vor fi introduse de la tastatur prin intermediul a dou cutii de editare.
5.atribute,
Elaborailimbi,
o aplicaie
tematici
prin
vaintermediul
afia datelecreia
din cmpurile
va fi creat
: DenCarte,
un raport DenTem,
care va
DenLimba,
pret; pentru sptmna curent. n orar se va specifica: ziua, data,
conine
orarul leciilor
lecia,
f) va
profesorul,
determinasala
numrul
de studii.
crilor cu preul mai mic ca 50, numrul crilor cu
preul ntre 50 i 100, numrul crilor cu preul mai mare ca 100;
g) ntr-o component ComboBox se vor introduce numele fiecrui autor. La
efectuarea unui click pe numele5.unui
autor seADO
vor afia crile n care figureaz
Tehnologia
autorul dat i anume cmpurile: DenCarte i pret;
h) ntr-o component ComboBox se vor introduce toate datele din Cmpul
Microsoft
ADO
DataAlegerea
Objects) uneia
asigur
accesopiuni
aplicaiilor
client
la date.
DenLimba
din (ActiveX
tabelul limbi.
dintre
va afia
datele
Pentrudespre
implementarea
modelului ADO
Borland
C++ cmpurile:
Builder ofer
paleta de
crile cu caracteristica
aleas
i anume
DenCarte
i AnEd.
componente ADO, cu ajutorul creia se poate realiza conectarea la sursele de date
suportate de ADO.
Considerm baza de date Biblioteca.mdb salvat n mapa My Documents, cu
urmtoarea structur:
3. Elaborai o aplicaie care va mri preul unei cri n modul urmtor: dac
numrul de pagini este mai mic ca 100 atunci preul crii se va majora cu 25%, dac
numrul de pagini este mai mare sau egal cu 100, atunci preul acesteia se va majora
cu 15 %. Elaborai un raport n care se va prezenta informaia despre cmpurile
DenCarte, NumeAutor, PrenumeAutor, NumPag, pret. Restabilii preurile.
1. Depozit de automobile
2. Magazin de calculatoare
108
4. Depozit de produse
5. Rezervri la hotel
109
6. Angajai
Bibliografie
Cerine fa de proiect:
a) Formularul ferestrei principale;
b) Formulare de adugare (pentru fiecare tabel cte un formular);
c) Formulare pentru cutarea datelor (6 cutri);
d) Vizualizarea tuturor nregistrrilor i vizualizarea datelor pentru fiecare tabel;
e) Crearea rapoartelor (minim 5 rapoarte);
f) Oferirea unei interfee simple i comode pentru utilizatorii BD;
g) Introducerea a minim 30 de nregistrri cu date corecte;
h) * Selectarea bazei de date n timpul execuiei.
111
110
Cuprins
Prefa............................................................................................................. 3
4
Sugestii metodologice.....................................................................................
Capitolul I. Limbajul C++
1. Crearea de obiecte...................................................................................... 9
2. Constructori.................................................................... 12
3. Motenire simpl........................................................................................ 14
4. Funcii virtuale i polimorfism................................................................... 17
5. Motenire multipl...................................................................................... 21
6. Suprancrcarea operatorilor....................................................................... 26
7. Agregare..................................................................................................... 29
Capitolul II. Mediul de programare vizual C++ Builder
Probleme rezolvate......................................................................................... 35
1. Forme (ferestre)................................................................... 50
2. Componenta Button.................................................................................... 51
3. Componenta Edit........................................................................................ 52
4. iruri de caractere i componenta Label.................................................... 54
5. Aplicaii multiforme................................................................................... 57
6. Aplicaii cu butoane................................................................................... 59
7. Aplicaii cu meniuri.................................................................................... 61
8. Aplicaii cu elemente de grafic................................................................. 64
9. Componenta Timer..................................................................................... 67
10. Aplicaii cu liste de opiuni i casete combinate...................................... 68
11. Componenta StringGrid........................................................................... 71
12. Aplicaii cu Data Calendaristic............................................................... 73
13. Aplicaii cu directoare i fiiere................................................................ 75
14. Aplicaii diverse........................................................................................ 76
Capitolul III. Baze de date
Probleme rezolvate......................................................................................... 81
1. Utilitarul Database Desktop....................................................................... 95
2. Aplicaii cu Tabele..................................................................................... 96
3. Aplicaii cu Interogri................................................................................. 102
4. Rapoarte.............................................................................................. 105
5. Tehnologia ADO........................................................................................ 106
6. Proiecte pentru gestiunea bazelor de date................................................... 107
Bibliografie..................................................................................................... 111
112