Sunteți pe pagina 1din 64

UNIVERSITATEA PETRU MAIOR

FACULTATEA DE INGINERIE
CATEDRA ITM










Ioan MOCIAN Rzvan CAZACU










PROGRAMAREA I UTILIZAREA CALCULATOARELOR (2)

- Lucrri de laborator














- 2010 -
3
Cuvnt nainte

Prezentul ndrumtor de lucrri de laborator a fost conceput pentru a folosi studenilor
arondai catedrei ITM, la aprofundarea cunotinelor de programare dobndite la cursul de
programarea i utilizarea calculatoarelor. ndrumtorul a fost gndit ntr-o manier practic, n
aa fel ca s pun la dispoziia studenilor tot ce au nevoie pentru o bun nelegere a
fenomenelor programrii n limbajul Visual Basic.
Astfel, materialul a fost mprit pe 4 categorii de programe, de la simplu la complex, pentru
ca studenii s parcurg n mod firesc paii de nvare. Fiecare categorie are o parte de
consideraii teoretice, cel puin un program model, urmate de programe propuse care au numai
specificaiile necesare. Acest mod de abordare i ajut pe studeni s aplice n practic
cunotinele dobndite. De asemenea, acest ndrumtor de laborator, i ajut pe studeni s
poat studia individual programarea n Visual Basic.
ndrumtorul este structurat pe 4 mari categorii de aplicaii i anume:
Lucrri tip A. Programe cu obiectele de baz;
Lucrri tip B. Programe cu obiecte complexe;
Lucrri tip C. Programe cu mai multe formulare;
Lucrri tip D. Programe de sintez.
Lucrri tip A. Programe cu obiectele de baz. n aceast categorie sunt incluse cele mai
simple programe, care folosesc obiectele de baz TextBox, Label, CommandButton,
instruciunea IF...THEN... ELSE i funciile InputBox i MsgBox. Ele au ca scop obinuirea
studenilor cu mediul Visual Basic i de a nelege tehnica programrii n acest limbaj.
Lucrri tip B. Programe cu obiecte complexe. n aceast categorie sunt incluse aplicaii cu
grad mai mare de dificultate n care sunt folosite, pe lng obiectele de tip A, i obiectele
ListBox, ComboBox, OptionButton i CheckBox. Pe baza modelului prezentat, studenii
trebuie s rezolve problemele propuse, pe baza specificaiilor prezentate.
Lucrri tip C. Programe cu mai multe formulare. n aceast categorie intr aplicaii care
cuprind teme a cror rezolvare necesit mai multe formulare, care se apeleaz unele pe altele.
Aceste proiecte sunt de complexitate mai mare, folosind multe din cunotinele dobndite la
celelalte categorii de programe. Exemplul din programul model urmrete s v obinuii cu
abordarea acestor tipuri de aplicaii, n care este foarte important s se lucreze ordonat, de la
denumirea obiectelor pn la stabilirea corect a proprietilor.
Lucrri tip D. Programe de sintez. n aceast categorie intr aplicaii care cuprind teme a
cror rezolvare folosete obiecte i tehnici pe care le-ai utilizat n celelalte tipuri de
programe. Din aceast cauz nu vom mai avea un program model, ci vom da, cel mult,
interfaa i schema logic. Aici va fi artat modalitatea de construi meniuri n Visual Basic.
De asemenea, vei nva s combinai cunotine dobndite anterior, pentru a rezolva diverse
probleme practice.

4
Anexa conine teme propuse pentru studenii care doresc s se perfecioneze i s-i ncerce
competenele de programator n Visual Basic. Studenii se pot consulta cu profesorul
coordonator pentru rezolvarea problemelor care apar. Programele din aceast anex vor fi
bine apreciate la evaluarea final a fiecrui student.
Acest ndrumar de lucrri de laborator la disciplina Programarea i utilizarea
calculatoarelor(II) se adreseaz studenilor de la seciile arondate catedrei de Inginerie
Tehnologic i Managerial de la Universitatea Petru Maior din Trgu Mure, dar poate fi
folosit de oricine dorete s nvee, cu efort minim, programarea n limbajul Visual Basic.



Tg. Mure, februarie 2010 Autorii

5
Cuprins

Cuvnt nainte ............................................................................................................... 3
Lucrri tip A. Programe cu obiectele de baz ........................................................... 7
Consideraii teoretice ......................................................................................... 7
Programul model Adunarea a dou numere ................................................... 7
Programul 1. Sum i produs ............................................................................. 10
Programul 2. Valoare funcie ............................................................................. 11
Programul 3. Valoare funcie definit pe intervale ........................................... 12
Programul 4. Calculul mediei ........................................................................... 13
Programul 5. Rezolvarea ecuaiei de gradul I ................................................... 14
Programul 6. Rezolvarea ecuaiei de gradul II ................................................. 15
Programul 7. Rezolvarea unui sistem liniar de 2 ecuaii cu 2 necunoscute ...... 16
Programul 8. Calculul sumei ptratelor primelor n numere naturale ................ 17
Programul 9. Calculul minimului i maximului a 3 numere ............................. 18
Programul 10. Calculul dobnzii unui depozit .................................................. 19
Lucrri tip B. Programe cu obiecte complexe ........................................................... 21
Consideraii teoretice ......................................................................................... 21
Program model Operaii cu numere .......................................................... ..... 24
Programe model Scriere, citire, funcie .......................................................... 28
Programul 1. Calcule trigonometrice ................................................................. 32
Programul 2. Calculul maxim-ului i minim-ului unui ir de numere ............... 33
Programul 3. Calculul sumei unui ir de numere ............................................... 34
Programul 4. Trecerea articolelor dintr-o list n alta ........................................ 35
Programul 5. Calcule cu trei numere .................................................................. 36
Lucrri tip C. Programe cu mai multe formulare ..................................................... 37
Consideraii teoretice .......................................................................................... 37
Programul model Calcule diverse ................................................................... 39
Programul 1. Calcule aritmetice i trigonometrice ............................................. 44
Programul 2. Calcule geometrice ....................................................................... 45
Programul 3. Calcule arii .................................................................................... 46
Programul 4. Calcule economice ........................................................................ 47
Programul 5. Rezolvri de ecuaii ...................................................................... 48
Lucrri tip D. Programe de sintez ............................................................................ 49
Programul 1. Ordonarea unui ir de numere ...................................................... 49
Programul 2. ListBox i ComboBox cu date citite dintr-un fiier ..................... 51
Programul 3. Rezolvarea ecuaiei de gradul II cu diverse condiii .................... 52
6
Programul 4. Program cu meniuri ............................................................... 54
Programul 5. Program cu propoziii ............................................................ 61
Anex. Teme pentru programe ............................................................................ 62
1. Determinarea centrului de greutate a unui cadru de srm ...................... 62
2. Desenarea unui cerc care trece prin 3 puncte .......................................... 62
3. Desenarea unui cerc nscris ntr-un triunghi ............................................ 62
4. Crearea unei agende personale varianta I, cu structuri de date ............... 62
5. Crearea unei agende personale varianta II, cu baze de date .................... 62
6. Dezvoltarea unei aplicaii Calculator de buzunar ................................. 62
7. Aplicaia 6 din 49 ................................................................................. 63
8. Aplicaie Criptare text .......................................................................... 63
9. Aplicaie Situaia depozitelor de la banc ............................................ 63
10. Reprezentarea grafic a funciei de gradul II ........................................ 63
11. Aplicaie Puncte n interiorul cercului ............................................... 63
12. Aplicaie de utiliti ............................................................................... 63


PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

7
Lucrri tip A . Programe cu obiectele de baz
n acest capitol vor fi efectuate lucrri de programare simple, de iniiere, care vor necesita cunotine
despre obiectele TextBox, Label, CommandButton, instruciunea IF...THEN... ELSE, funciile
InputBox i MsgBox. Tot n aceste programe vor fi folosite i instruciuni de ciclare. Primul program
va fi tratat n detaliu, fiind folosit ca model, iar urmtoarele vor avea propus tema, schema logic,
interfaa sau numai o parte din ele.
Consideraii teoretice
n acest paragraf vor fi prezentate, prin exemple, cele mai ntlnite situaii pe care le vei
ntlni n practic.
Declararea unei variabile: Dim x As Integer, y As Single, y As String.
Citirea n variabila x, dintr-un TextBox: x = txtRaza.Text.
Scrierea ntr-un TextBox a valorii din variabila aria: txtRezultat.Text = aria
Introducerea unei valori n variabila n, cu funcia InputBox:
n = InputBox(Nr. de puncte:)
Afiarea unui mesaj: MsgBox(Radacini imaginare!).
Revedei instruciunile de ciclare FOR ... NEXT, DO WHILE ... LOOP.

Programul model Adunarea a dou numere
Acest program i propune s adune dou numere, este un program simplu care arat paii
care trebuie parcuri pentru abordarea programelor din aceast categorie.
Specificaii:
Programul va avea dou variante: cele 2 numere vor fi introduse cu TextBox sau cu
InputBox;
Se va testa care numr e mai mare i va fi afiat un mesaj de forma Primul numr
este mai mare sau Al doilea numr este mai mare;
Rezultatul va fi afiat ntr-un TextBox.


PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

8
Schema logic:










Interfaa:


Se observ c interfaa conine 4 etichete (labels), 3 TextBoxuri i 2 butoane de comand.
ncercai s pstrai proporiile i aezarea din figur.

Programul:
Varianta I-a: numerele se citesc din textbox-uri, iar mesajul privind numerele se
afieaz cu MsgBox. Vei deduce din codul surs, denumirile obiectelor.
START
a, b
a > b
NU DA
Afiseaza
Suma
Afiseaza
a > b
Afiseaza
a < b
S = a + b
STOP
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

9


Varianta II-a: numerele se citesc cu funcia InputBox, iar mesajul privind numerele se
afieaz cu proprietatea Caption a obiectului Label. Vei deduce din codul surs, denumirile
obiectelor. Interfaa se va modifica i ea: nu mai e nevoie de textbox-urile de introducere a
celor dou numere


Salvarea proiectului:
Pentru salvarea proiectului trebuie s crem un director al acestuia. Creai directorul:
My Documents / PUC2 / Lucrarea x,
n care vei salva fiierele Lucrarea_x.vbp i Lucrarea_x.frm (proiectul i formularul).



PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

10
Concluzii:
Acest exemplu trebuie s v ajute s nelegei care sunt paii pe care trebuie s-i urmai
pentru a face un program n Visual Basic.
n aceste exemple ai vzut:
Cum se introduc date n program cu TextBox i InputBox;
Cum se citete o valoare dintr-un TextBox;
Cum se scrie o valoare ntr-un TextBox;
Cum se folosete instruciunea IF...THEN... ELSE;
Cum se poate schimba o etichet prin modificarea valorii proprietii Caption;
Reinei aceste tehnici pentru c ele v vor fi de folos n programele care urmeaz.
Programul 1. Sum i produs
Specificaii:
Programul va aduna i nmuli 3 numere 2 introduse cu TextBox i unul cu
InputBox;
Rezultatele vor fi scrise n textbox-uri.
Interfaa:








PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

11
Programul 2. Valoare funcie
Specificaii:
Programul va calcula valoarea unei funcii pe baza unui argument dat;
Forma funciei este opional;
Rezultatul va fi scrise ntr-un textbox.


Interfaa:

































PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

12
Programul 3. Valoare funcie definit pe intervale
Specificaii:
Programul va calcula valoarea unei funcii pe baza unui argument dat;
Forma funciei:
f(x) =

+
3
2
1
2
2
x x
x
x

Rezultatul va fi scrise ntr-un textbox;
ncercai i alte funcii i alte intervale de argumente.
Schema logic:













Interfaa:

NU
- pentru x < 0
- pentru 0 < x <=10 (x cuprins ntre 0 i 10)

- pentru x > 10

START
START
STOP
x
f(x)
x < 0
NU
DA
x < 10
DA
1 ) (
2
+ = x x f
2 ) ( = x x f
3 ) (
2
+ = x x x f
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

13
Programul 4. Calculul mediei
Specificaii:
Programul va calcula media aritmetic a 3 note de trecere (>= 5);
Dac o not este mai mic dect 5, nu se va calcula media i va fi afiat un mesaj;
Se va verifica dac notele sunt n intervalul [1, 10], afindu-se un mesaj dac nu
aparin acestui interval(Cel puin o not este nevalid);
Rezultatul va fi scrise ntr-un textbox.

Schema logic:














Interfaa:





START
START
STOP
n1,n2,n3
1<= n1,n2,n3 <= 10
Mesaj
Media = (n1+n2+n3) / 3
Media
DA
NU
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

14
Programul 5. Rezolvarea ecuaiei de gradul I
Specificaii:
Programul va calcula soluia unei ecuaii de gradul I;
Pentru coeficienii ecuaiei i soluie se va folosi obiectul TextBox;
Pentru coeficientul lui x, egal cu zero se va emite un mesaj.
Schema logic:












Interfaa:











START
STOP
a, b
a # 0
x = - b / a
NU
DA
Mesaj
Solutia
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

15
Programul 6. Rezolvarea ecuaiei de gradul II
Specificaii:
Programul va calcula soluiile unei ecuaii de gradul II;
Pentru coeficienii ecuaiei i soluii se va folosi obiectul TextBox;
Pentru rdcini complexe, se va emite un mesaj.
Schema logic:








Interfaa:






START
STOP
D = b
2
4ac
a, b, c
D < 0
NU
Mesaj
DA
) * 2 /( ) (
2 , 1
a D b x =
X
1
, X
2
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

16
Programul 7. Rezolvarea unui sistem liniar de 2 ecuaii cu 2
necunoscute
Specificaii:
Programul va calcula soluiile unui sistem liniar de 2 ecuaii cu 2 necunoscute;
Pentru a avea soluie determinantul sistemului trebuie s nu fie 0. Dac este zero va fi
anunat un mesaj de sistem nedeterminat;
Coeficienii sistemului se vor introduce prin textbox-uri;
Soluia va fi scris n textbox-uri.
Schema logic:













Ne reamintim c determinantul sistemului se calculeaz ca diferena dintre coeficienii
diagonalei principale i a diagonalei secundare (vezi schema logic).
Delta_x - este acelai determinant n care se nlocuiete coloana coeficienilor lui x cu
coloana termenilor liberi.
Delta_y - este acelai determinant n care se nlocuiete coloana coeficienilor lui z cu
coloana termenilor liberi.



START
DA
NU
START
STOP
a1,b1,c1
a2,b2,c2
delta = a1*b2 a2*b1
Sistem nedeterminat
delta = 0
X = delta_x / delta
Y = delta_y / delta
Afiseaza
X, Y
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

17
Interfaa:


Sugestie! ncercai rezolvarea unui sistem de 3 ecuaii cu 3 necunoscute.

Programul 8. Calculul sumei ptratelor primelor n numere naturale
Specificaii:
Programul va calcula suma 1
2
+ 2
2
+ . . . + n
2
;
Programul va cere ca dat de intrare, numrul n;
Se va folosi un ciclu For ... Next sau Do While ... Loop;
Rezultatul va fi scris ntr-un TextBox.

Schema logic:









Interfaa va fi conceput de ctre studeni.
NU
DA
START
STOP
n
S = 0
i = 1
i <= n
S = S + i
2

i = i + 1
Afiseaza n, S
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

18
Programul 9. Calculul minimului i maximului a 3 numere
Specificaii:
Cele 3 numere se vor introduce cu TextBox;
Rezultatele vor fi scrise n TextBox-uri.
Schema logic:























START
a, b, c

NU
DA
STOP
a > b
max = b
max = a
max < c
max = c
NU
DA
a < b
min = b
min = a
min > c
min = c
NU
DA
NU
DA
min, max
PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

19
Interfaa:



Programul 10. Calculul dobnzii unui depozit
Programul va trebui s calculeze dobnda unui depozit de bani, dup un anumit numr de
luni, cnd se cunoate dobnda anual.
Specificaii:
Datele de intrare sunt:
- suma depozitului;
- dobnda anual;
- numrul de luni.
Datele de ieire sunt:
- dobnda calculat;
- depozitul actual.
Formula de calcul a dobnzii este:
Dobinda = S
0
* dob/100 * n/12
unde,
S
0
este suma iniial;
dob este dobnda anual, n procente;
n este numrul de luni trecute.
Depozitul actual este suma dintre valoarea iniial i dobnda calculat.



PUC 2 ndrumtor de lucrri de laborator Lucrri tip A

20
Interfaa:









Sugestie! ncercai s deducei o formul de calcul pentru dobnda capitalizat, adic s se
ia n considerare la calculul fiecrei luni, valoarea actualizat a depozitului.

PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

21
Lucrri tip B. Programe cu obiecte complexe
n acest capitol vor fi efectuate lucrri de programare cu grad de dificultate mai mare, n care vom
folosi obiectele ListBox, ComboBox, OptionButton i CheckBox. De asemenea, vor fi abordate
problemele scrierii i citirii din fiiere, precum i funciile definite de utilizator.
Consideraii teoretice
ListBox, ComboBox:
Iat cteva consideraii de care trebuie s inei cont n aplicaiile din aceast categorie,
prezentate n continuare.
Denumirea unui ListBox: prefixul lst + denumirea, de exemplu lstNote.
Denumirea unui ComboBox: prefixul cbo + denumirea, de exemplu cboNote.
Citirea n variabila x, respectiv y a unui articol selectat din ListBox respectiv ComboBox:
x = lstNote.List(lstNote.ListIndex)
y = cboNote.List(cboNote.ListIndex)
ncrcarea unui ListBox sau ComboBox se face cu metoda AddItem. Aceast ncrcare se
face n procedura Form_Load (care se deschide automat, cu un dublu-click ntr-un punct de
pe formular care nu atinge vreun obiect). Iat un exemplu:


OptionButton, CheckBox:
Acestea sunt obiecte care se creeaz n interiorul unui Frame. Ele sunt obiecte cu care se iau,
elegant, opiuni i decizii, de exemplu, ce operaie s execut dintr-o list de operaii sau cum
s formatez afiarea unui rezultat (culoare, font, bold) dintr-o list de posibiliti. Diferena
major dintre OptionButton i CheckBox este c n primul caz poate fi ales numai unul,
iar n al doilea caz pot fi alese oricte opiuni cteva, toate, niciuna. Reinei c cele dou
obiecte au urmtoarele prefixe: OptionButton opt, CheckBox chk.
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

22
Pentru a testa dac un buton de opiune este setat, trebuie verificat proprietatea Value care
poate avea valoarea 1 pentru True sau 0 pentru False. Iat o astfel de secven de program:

If optAduna.Value = 1 Then
c = a + b
End If
Pentru a testa dac o caset de validare este setat, trebuie verificat proprietatea Value care
poate avea valoarea 1 pentru True sau 0 pentru False. Iat o astfel de secven de program:

If chkBold.Value = 1 Then
txtR.FontBold = True
Else
txtR.FontBold = False
End If
Folosirea fiierelor:
n practica aplicaiilor pe calculator, introducerea datelor de la tastatur i afiarea rezultatelor
pe ecran, se ntlnete ntr-un numr limitat de cazuri, cnd programele au puine date de
intrare sau sunt simple. Un program face parte, de regul, dintr-un pachet de programe i
folosete date de la alt program iar rezultatele obinute vor fi date de intrare pentru alt
program. Aceast comunicare" ntre programe se face prin intermediul fiierelor, care se
constituie n depozit de date de intrare/ieire(I/O).
Fiierele pot memora informaii din cele mai diverse imagini, texte, date numerice etc.
Orice fiier, nainte de a avea acces la el , trebuie deschis cu instruciunea Open. De fapt,
orice acces la un fiier presupune efectuarea urmtoarelor operaii:
Deschiderea fiierului;
Accesul la el (scriere, citire, adugare);
nchiderea fiierului.
Aceste operaii vor trebui s apar n programele pe care le vei scrie. n continuare vor fi
reamintite aceste operaiuni, mpreun cu sintaxa lor.
Deschiderea unui fiier:
Open cale For mode As #NumarFisier.
unde,
cale este o expresie de tip text cu numele fiierului i locul unde se afl;
mode este tipul de acces la fiier care poate fi Append, Input i Output, pentru
fiierele cu acces secvenial pe care le vom folosi noi.
#NumarFisier este un numr ntreg cuprins n intervalul 1 511, cu care de noteaz
(codific) deschiderea unui fiier pentru a putea fi referit mai uor n program.

PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

23
Exemple:
Open c:\Mocian\Lucru\VB6\ex1.txt For Input As #1.
Open c:\Mocian\Lucru\VB6\ex2.txt For Output As #2.
Open c:\Mocian\Lucru\VB6\rezultat.dat For Append As #3.
Inchiderea unui fiier:
Close #1 - nchiderea unui fiier
Close #1, #2, #20 - nchiderea mai multor fiiere
Close - nchiderea tuturor fiierelor
Scrierea datelor n fiier:
Write #1, x1, x2, y1, y2
unde:
#1 - este numrul asociat la deschiderea fiierului, numit i specificator de fiier.
x1, x2, y1, y2 - este lista de date care va fi scris n fiier.
Cnd se specific datele trebuie s inem cont de urmtoarele:
mai multe valori se scriu n list separate prin virgul;
textele se scriu ntre ghilimele;
data i ora trebuie specificate n format: #dd-mm-yy hh:mm:ss#;
Iat o secven de program care scrie ntr-un fiier coeficienii i soluiile ecuaiei de gradul II:
Open C:\Mocian\CursVB\ecuatia2.dat For Output As #1
Write #1, a, b, c, x1, x2
Close #1
Observaie important! Pentru scrierea n fiiere se poate folosi i instruciunea Print #n,
unde n este specificatorul de fiier. Aceast instruciune realizeaz o scriere formatat, iar
fiecare articol din fiier este considerat ca o singur variabil de tip String (i nu o list de
variabile ca la instruciunea Write), iar textele scrise nu se ncadreaz n ghilimele.
Utilizarea acestei instruciuni pentru scrierea n fiier nu este recomandat din cauz c la
citirea ulterioar a irului de caractere, acesta trebuie prelucrat folosind manipulri destul
de complicate pentru a separa expresiile iniiale.
Citirea datelor n fiier: - secven de program
Open C:\Mocian\CursVB\ecuatia2.dat For Input As #1
Input #1, a, b, c
Close #1
Pentru o citire corect, nregistrarea trebuie s aib aceeai structur ca i lista de variabile din
instruciunea Input, altfel vom primi un mesaj de eroare. Fiecrei variabile i se va atribui
valoarea aflat ntre dou virgule.
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

24
Un fiier are mai multe articole, iar instruciunea Input citete un singur articol. Pentru a citi
toate articolele unui fiier trebuie s ne gndim la plasarea lui Input ntr-o structur
repetitiv. Ieirea din bucl trebuie s se fac atunci cnd s-a ajuns la sfritul fiierului, adic
atunci cnd s-au citit toate articolele. Pentru a testa sfritul fiierului se utilizeaz funcia
Eof(), care returneaz una din valorile True sau False dup cum suntem la sfritul
fiierului sau nu.
Sintaxa funciei este: Eof(1), dac fiierul a fost deschis cu #1.
Program model Operaii cu numere
Acest program i propune s adune i s nmuleasc dou numere, respectiv s afieze
rezultatele dup opiunile utilizatorului. Deoarece algoritmul este simplu nu va fi prezentat,
mai important este interfaa cu obiectele sale.
Specificaii:
Primul numr va fi introdus prin selectarea dintr-un ListBox;
Al doilea numr va fi introdus prin selectarea dintr-un ComboBox;
Programul va afia numai suma, numai produsul sau ambele;
Rezultatele vor fi afiate n textbox-uri;
Fontul de afiare a rezultatelor poate fi normal, bold sau de culoare roie.
Interfaa:


Interfaa conine:
Un listbox de unde se va alege primul numr (a);
Un combobox de unde se va alege al doilea numr (b);
2 textbox-uri pentru afiarea rezultatelor (suma i produsul);
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

25
Un frame cu 3 butoane de opiune pentru alegerea operaiei (primul setat pe True la
proprietatea Value);
Un frame cu 2 checkbox-uri pentru alegerea formatului de font;
4 etichete (labels);
2 butoane de comand.
Numele obiectelor le vei da respectnd regulile nvate, cu prefixul fiecruia naintea
numelui. Numele date de acest exemplu le vei deduce din codul surs al programului.
Codul surs:
Codul surs (programul propriu-zis) conine mai multe proceduri care se declaneaz la
urmtoarele evenimente:
O procedur special care se declaneaz automat la pornirea programului (ncrcarea
formularului) numit Form_Load. Fiecare formular are o astfel de procedur care
poate fi folosit pentru anumite preparative care nu au evenimente, cum ar fi
ncrcarea cu date a obiectelor ListBox i ComboBox, ceea ce vom face i noi.
Pentru a ajunge la aceast procedur dai dublu-clic ntr-o zon neutr a
formularului.
Procedura cmdCalculeaza_Click care se declaneaz atunci cnd se face clic pe
butonul de comand cmdCalculeaza. Practic, aceasta este procedura care execut
algoritmul de calcul.
Procedura cmdExit_Click care se declaneaz atunci cnd se face clic pe butonul de
comand cmdExit, care nu face altceva dect s ncheie programul.
Procedura Form_Load:




PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

26
Procedurile din spatele butoanelor cmdCalculeaza i cmdExit:




PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

27
Concluzii:
Exemplul prezentat v ajut s nelegei urmtoarele:
Cum s folosii procedura Form_Load pentru a ncrca cu date obiectele ListBox i
ComboBox, folosind metoda AddItem;
Cum se ncarc un ListBox sau un ComboBox folosind un ciclu (For...Next, Do
While).
Cum se atribuie unei variabile o valoare provenit din ListBox i ComboBox,
folosind proprietile List i ListIndex;
Cum s folosii obiectele OptionButton i CheckBox;
Cum s folosii proprietile ForeColor i FontBold pentru a scrie n culori sau cu
bold ntr-un TextBox;
Acest program este un bun model de unde v putei inspira pentru a face programele care
urmeaz n aceast categorie.


















PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

28
Programe model Scriere, citire, funcie
Acest paragraf conine 3 exemple de programe simple.
Exemplul 1. Scrierea ntr-un fiier
Acest exemplu const n scrierea ntr-un fiier a notelor studenilor. Numele studenilor i
nota se introduc cu funcia InputBox, ntr-un ciclu Do While.
Interfaa:


Codul surs:
Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdScrie_Click()
Open "C:\Mocian\Scoala\CursVB\note.dat" For Output As #1
nume = InputBox("Numele= ")
Do While nume <> ""
prenume = InputBox("Prenumele= ")
nota = InputBox("Nota= ")
Write #1, nume, prenume, nota
nume = InputBox("Numele= ")
Loop
Close #1
End Sub

Rezultat:

n fiier vor apare datele introduse sub aceast form. Verificai coninutul fiierului.


PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

29
Exemplul 2. Citirea dintr-un fiier
Acest exemplu const n citirea datelor din fiierul pe care l-ai creat n exemplul nr.1 i le
scrie n formularul aplicaiei.
Interfaa: - conine numai 2 butoane de comand.


Codul surs:
Private Sub cmdCiteste_Click()
Open "C:\Mocian\_Scoala\CursVB\note.dat" For Input As #1
Do Until EOF(1)
Input #1, nume, prenume, nota
Form1.Print nume, prenume, nota 'Afisarea datelor pe formular
Loop
Close #1
End Sub

Private Sub cmdExit_Click()
End
End Sub
Din acest exemplu se observ cum a fost pus condiia pentru a detecta sfritul de fiier EOF,
care merit reinut pentru c vei mai avea nevoie de ea. De asemenea, se vede cum se scrie
pe o interfa, tehnic folosit mai ales pentru teste.

Exemplul 3. Crearea unei funcii utilizator
n acest exemplu se creeaz un program care calculeaz perimetrul unui triunghi dreptunghic
cnd se cunosc catetele sale. Se tie c pentru aceasta trebuie calculat i ipotenuza
triunghiului care se calculeaz cu teorema lui Pitagora. Calculul ipotenuzei se va face cu o
funcie definit de utilizator.

PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

30
Interfaa:


Aceast interfa are 4 etichete, 2 textbox-uri i 2 butoane de comand. Etichetele au la
proprietatea Caption urmtoarele valori:
Cateta1:;
Cateta2:;
Perimetrul triunghiului este:;
xx.
Rezultatul se va scrie n proprietatea Caption a etichetei lblPerimetru, care la definire va avea
valoarea xx.
Codul surs:

Observai c toate variabilele declarate sunt locale, chiar dac au acelai nume.

lblPerimetru, eticheta care are
scris n proprietatea Caption
rezultatul obinut
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

31
Concluzii
Din cele 3 programe prezentate ai putut s v punei la punct cu urmtoarele aspecte legate
de programarea Visual Basic:
Deschiderea i nchiderea unui fiier;
Scrierea datelor ntr-un fiier;
Citirea datelor dintr-un fiier;
Crearea i folosirea la modul concret a unei funcii cu parametri create de utilizator;
Folosirea proprietii Caption a obiectului Label pentru afiarea unor rezultate;
Folosirea funciei Format, pentru formatarea numerelor.
Exemplele prezentate pot fi folosite ca modele pentru temele propuse n continuare.




















PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

32
Programul 1. Calcule trigonometrice
Programul va calcula cele 4 funcii trigonometrice, la alegere cu ajutorul butoanelor de
opiune. Algoritmul de calcul nu necesit o schem logic.
Specificaii:
Unghiurile se vor introduce n 4 moduri, folosind butoane de opiune:
- cu textbox;
- cu listbox;
- cu combobox;
- cu inputbox;
Funciile trigonometrice vor fi alese cu butoane de opiune;
Rezultatul funciei va afiat ntr-un textbox;
Cu ajutorul a 3 checkbox-uri se va stabili formatul de afiare rou, bold i italic;
Unghiurile se vor introduce n grade, dar ele trebuie transformate n radiani, pentru
aa cer funciile trigonometrice. Formula de transformare este:
unghi_rad = unghi_grad * PI / 180, unde PI = 3.14159265358979
Definii constanta PI, nafara oricrei proceduri, dup modelul de mai jos:


Interfaa:



PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

33
Programul 2. Calculul maxim-ului i minim-ului unui ir de numere
Specificaii:
Programul va gsi cel mai mare i cel mai mic numr dintr-un ir de numere;
Numerele vor fi introduse ntr-un ListBox cu funcia InputBox;
Rezultatul va fi afiat n textbox-uri.


Schema logic:





















START
n
x1,x2...xn
Introducerea elementelor irului
Max = x1
i = 2
Max < xi
i = i + 1
i < n
DA
NU
NU
NU
DA
DA
Max = xi
i = i + 1
i < n
STOP
Max
Aceast zon se va repeta
pentru calculul minim-ului,
cu adaptrile de rigoare
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

34
Interfaa:



Programul 3. Calculul sumei unui ir de numere
Specificaii:
Numerele vor fi introduse cu funcia InputBox;
Terminarea introducerii se va face prin apsarea tastei Enter fr a introduce nimic;
Numerele vor fi stocate ntr-un ListBox;
Numerele i suma lor vor fi salvate ntr-un fiier, al crui nume se va afia.
Schema logic:











START
x
1
,x
2
, ... x
n

S = 0
i = 1
S = S + i
i = i + 1
NU
DA
i <= n
Afiseaza
rezultat
STOP
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

35
Interfaa:



Programul 4. Trecerea articolelor dintr-o list n alta
Specificaii:
Vor fi create 2 ListBox-uri;
Articolele vor fi introduse cu funcia InputBox n ListBox-ul din stnga;
Trecerea se va face n ambele sensuri;
Vor exista 2 tipuri de butoane de comand:
- trecerea a numai un articol;
- trecerea n bloc a tuturor articolelor.
Vei folosi metodele AddItem, Clear, RemoveItem ale obiectului ListBox.

Interfaa:

Observaie! ncercai s ncrcai lista din stnga cu date din fiier
PUC 2 ndrumtor de lucrri de laborator Lucrri tip B

36
Programul 5. Calcule cu trei numere
Specificaii:
Cele 3 numere vor fi introduse cu TextBox;
Cu cele 3 numere vor fi efectuate 3 opereaii:
- adunare;
- produs;
- medie aritmetic;
Alegerea operaiei de efectuat se va face cu butoane de opiune (OptionButton);
Rezultatul va fi trecut ntr-un TextBox care va fi formatat rou sau bold.

Interfaa;


Observaie! Proprietatea Caption a etichetei Rezultat poate fi nlocuit cu numele operaiei
care s-a executat (exemplu: Suma este: ).





PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

37
Lucrri tip C. Programe cu mai multe formulare
n acest capitol vor fi efectuate lucrri de programare care cuprind teme a cror rezolvare necesit mai
multe formulare, care se apeleaz unele pe altele. Aceste proiecte sunt de complexitate mai mare,
folosind multe din cunotinele dobndite la celelalte categorii de programe. Exemplul din programul
model urmrete s v obinuii cu abordarea acestor tipuri de aplicaii, n care este foarte important s
se lucreze ordonat, de la denumirea obiectelor pn la stabilirea corect a proprietilor. n textul
explicativ se va folosi att termenul de form ct i cel de formular, care, n fond, nseamn acelai
lucru.
Consideraii teoretice
Aplicaiile de pn acum constau dintr-o singur form pe care se puneau obiectele. Aceste
aplicaii sunt simple, rostul lor era s ne obinuim cu programarea n Visual Basic.
E greu s ne imaginm o aplicaie ct de ct serioas care s aib numai o form. Lucrul cu
mai multe forme implic o disciplin sever, o gestionare atent a ntregului proiect.
Atunci cnd privim mediul de programare Visual Basic, apare prima form a aplicaiei, cea
implicit, avnd numele implicit Form1. Pe aceast form ncepem s aezm obiectele
aplicaiei, din care nu va lipsi unul sau mai multe butoane de comand.
Dac pe o form avem multe obiecte i aceasta devine foarte ncrcat este cazul s ne
gndim la o soluie de a o mpri n mai multe forme. Aici rolul experienei i spune
cuvntul. Mai nti trebuie s schim pe hrtie, cam ce face aplicaia apoi s ncercm s
proiectm formele necesare.
n principiu, se gndete o form principal numit, de regul, frmMain care are urmtoarele
atribuii:
Pornete aplicaia
Deschide alte forme
nchide aplicaia.
Toate formele aplicaiei vor directa programul spre frmMain, atunci cnd sunt nchise. Din
forma principal se poate merge ntr-o alt form sau se poate nchide aplicaia.
Pentru a insera o nou form folosim comanda Project - AddForm, care va primi numele
implicit Form2, sau alt indice care urmeaz la rnd. n urma acestei comenzi va apare o form
goal la fel ca la deschiderea proiectului. n fereastra Project Explorer va apare i numele noii
forme.
Una dintre cele mai folosite proprieti ale obiectului Form este proprietatea Visible, care
poate avea 2 valori True i False, adic forma se vede sau nu, dup cum condiiile o cer.
Iat cum se folosete aceast proprietate:
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

38
frmMain.Visible = False - forma devine invizibil.
frmMain.Visible = True - forma devine vizibil.
Fiecare form are n spatele ei proceduri i funcii legate de obiectele aparintoare formei. De
asemenea, exist aa numitele module standard care conin proceduri i funcii care nu sunt
legate de o form. Toate aceste proceduri folosesc variabile care pot fi locale sau globale. ntr-
o lecie anterioar s-a vorbit despre aceste variabile dar ele vor fi nelese cu adevrat abia
acum.
Declararea variabilelor se face cu instruciunea Dim. Dup locul n care se gsete aceast
instruciune vom determina valabilitatea variabilei declarate. Dac la nceputul modulului
formei, seciunea numit General include instruciunea Option Explicit aceasta oblig
declararea n prealabil a tuturor variabilelor folosite. Dac aceast instruciune lipsete, toate
variabilele vor fi declarate variant, ceea ce duce la un consum mai mare de memorie.
Dac variabila este declarat n interiorul unei proceduri, ea se numete variabil local,
adic exist numai n interiorul acelei proceduri:

Private Sub Nume_procedura()
Dim x1 As Integer 'x1 este variabila locala
.............
.............
End Sub
Variabila x1 va dispare dup ce ieim din procedur, deci nu va mai putea fi folosit n alte
proceduri.
Pentru ca variabilele s poat fi utilizate n toate procedurile unui modul, instruciunea Dim va
fi plasat n seciunea General, aa cum se vede n secvena urmtoare:
Option Explicit
Dim raza As Double
Dim aria As Double
Const PI As Double = 3.1416

Sub Calcul()
aria = PI * raza ^ 2
'.........
End Sub

Sub evaluare()
Dim taxateren As Double
If aria > 500 Then
taxateren = 10000
Else
taxateren = 0
End If
End Sub
Variabilele raza i aria sunt variabile care nu-i pierd valoarea cnd se termin procedura
n care sunt utilizate. Ele se numesc variabile globale de modul. Ele pot fi folosite n oricare
procedur a modulului respectiv.
Dac n locul instruciunii Dim se utilizeaz Public, toate modulele-standard i toate form-
urile aplicaiei vor putea lucra cu variabilele astfel declarate. Acestea se numesc variabile
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

39
globale de aplicaie, pentru c sunt valabile n orice procedur sau form a aplicaiei. Aceste
variabile nu se pot declara ntr-o procedur Sub ... End Sub.
Este foarte important s gndim bine, care s fie variabile locale i care variabile globale. Nu
trebuie abuzat de folosirea variabilelor globale care pot consuma inutil memorie. Dac o
variabil local i una global au acelai nume nu este nici un conflict, deoarece variabila
local este mai puternic fr s afecteze variabila global care rmne la aceeai valoare.
Programul model Calcule diverse
Aceast aplicaie este un exemplu practic de program cu mai multe formulare, care const n
diferite calcule care se fac n formularele corespunztoare: media a 3 note, calculul ariilor i
volumului conului, deducerea TVA dintr-o valoare total. Programele sunt simple, dar scopul
exemplului este acela de a prezenta metodologia de abordare a unor astfel de programe.
Specificaii:
Programul va avea 4 forme, una principal numit frmMain i 3 forme
corespunztoare fiecrui calcul care va fi fcut, numite frmMedie, frmCon i
frmTVA;
n formularul principal frmMain vor exista 3 butoane de comand care nu vor avea
alt funciune dect deschiderea celor 3 formulare secundare frmMedie, frmCon i
frmTVA;
n fiecare formular secundar va exista un buton de comand care va deschide
formularul principal i l va nchide pe cel secundar;
n orice moment, pe ecran va exista numai un formular.
Schema bloc: deoarece aplicaia conine, practic, 3 programe, fiecare dintre ele va avea
propria schem logic, important este s vedem corelaia dintre aceste formulare prezentat
ntr-o schem de principiu, numit schem bloc, aa cum se vede mai jos.




La nevoie se pot face schemele logice pentru fiecare program n parte. Aici nu e cazul, pentru
c programele componente sunt banale.
Interfeele (formularele):
Deoarece avem 4 interfee, fiecare cu obiectele lor, este nelept s ne organizm puin treaba,
ca s nu avem probleme la scrierea codului. Pentru denumirea obiectelor vom respecta regula
nvat deja: prefixul cu 3 litere mici, prima liter a numelui cu majuscul. Practic,
interfeele se schieaz pe hrtie pentru a fi mai operativi.
Este indicat s facem i un tabel cu toate obiectele care sunt implicate n codul surs pentru a
nu grei denumirile acestora. Amintii-v de cunoscuta eroare pe care o ntlnii mereu
frmMain frmCon frmMedie
frmTVA
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

40
Object Required care apare atunci cnd obiectul are un nume la creare i altul n codul
surs.
Iat tabelul pentru cazul nostru:
Formular Obiect Proprietate Valoare /
Observatii
frmMain cmdMedie Caption Calcul
medie
cmdCon Caption Calcul con
cmdTVA Caption Calcul TVA
cmdExit Caption Terminare
aplicatie
frmMedie txtNota1 TextBox
pentru
prima not
txtNota2 TextBox
pentru a
doua not
txtNota3 TextBox
pentru a
treia not
lblMedie In acest
label se va
scrie media
cmdCalcul Caption Calculeaza
media
cmdExit Caption Exit
frmCon txtRaza Introducerea
razei
txtInaltimea Introducerea
nlimii
txtA
TextBox
pentru aria
calculata
txtV
TextBox
pentru
volumul
calculat
cmdCalcul
Caption
Calculeaza
cmdExit
Caption
Exit
frmTVA txtValoare Introducerea
valorii
txtTVA Locked True
cmdCalcul
Caption
Calculeaza
cmdExit
Caption
Exit

PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

41
Observaie important! Pentru a mpiedica scrierea de ctre operator n textbox-urile de
afiare a rezultatelor, proprietatea Locked a acestora se pune pe valoarea True. Aceste
textbox-uri sunt: txtA i txtV din formularul frmCon, respectiv txtTVA din formularul frmTVA.
Interfeele propriu-zise sunt prezentate n continuare:

























frmMain
frmTVA
frmMedie
frmCon
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

42

Observai c toate butoanele Exit conduc spre formularul principal frmMain.
Cnd avem mai multe formulare i lansm programul n execuie, Visual Basic-ul nu tie cu
care formular s nceap. Cnd aveam numai un formular nu se punea aceast problem.
Pentru a stabili care este forma de pornire executai urmtorii pai:
Dai comanda Project Project1 Properties din comboxul Startup Object alegei
formularul de start;
Apsai butonul OK.


Codul surs:
Procedurile formularului principal frmMain sunt:












Procedurile formularului frmMedia sunt:





PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

43










Procedurile formularului frmCon sunt:









Procedurile formularului frmTVA sunt:







PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

44

Concluzii:
Aceast aplicaie v-a ajutat s nelegei metodologia crerii programelor Visual Basic cu mai
multe formulare. Ai nvat cum se face:
Inserarea unei noi forme n program;
Alegerea formei de start;
Vizibil sau invizibil o form;
Declararea unei constante globale (PI, n formularul frmCon);
Afiarea unui rezultat folosind proprietatea Caption a unei etichete (frmMedia);
Afiarea unei valori numerice cu format (funcia Format).

Programul 1. Calcule aritmetice i trigonometrice
Programul este unul simplu, face calcule aritmetice cu 2 numere (adunare, produs, medie) i
calculeaz o funcie trigonometric a unui unghi introdus n grade sexagesimale (cu care
suntem cu toii obinuii). Fiecare tip de calcul se face cu ajutorul formularului su, deschis
dintr-un formular principal.
Specificaii:
Programul va avea 3 formulare, unul principal frmMain care conine butoanele de
comand pentru deschiderea celorlalte dou;
Formularul pentru calcule aritmetice se va numi frmAritmetice;
Formularul pentru calcule trigonometrice se va numi frmTrig;
Formularele secundare vor avea cte un buton Exit pentru revenire n frmMain;
Cele 2 numere i unghiul se vor introduce cu textbox-uri;
Pentru calculul funciilor trigonometrice unghiul se transform n radiani cu formula
rad = PI*ung / 180, unde ung este unghiul introdus de noi;
Rezultatele vor fi afiate n textbox-uri, avnd proprietatea Locked setat pe True.
Interfee:





frmMain
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

45






Sugestie! ncercai i alt variant pentru Calcule trigonometrice, de exemplu funcia s fie
aleas cu buton de opiune, iar rezultatul s fie scris din etichete sub forma Sin 30 = 0.5.
Pentru aceasta e nevoie de mai multe etichete la care trebuie s le modificai proprietatea
Caption.

Programul 2. Calcule geometrice
Programul va trebui s calculeze aria total i volumul corpurilor geometrice trunchi de con i
sfer. Este nevoie de 2 formulare pentru aceste calcule deoarece datele de intrare i rezultatele
sunt diferite, plus un formular principal de pornire a aplicaiei.
Specificaii:
Programul va avea 3 formulare, unul principal frmMain care conine butoanele de
comand pentru deschiderea celorlalte dou, numite frmTrunchiCon i frmSfera;
Formularele secundare vor avea cte un buton Exit pentru revenirea n frmMain;
Pentru truchiul de con folosii formulele:
Al = G(R + r);
At = Al + (R
2
+ r
2
);
V = H(R
2
+ r
2
+ Rr) / 3;
Pentru sfer folosii formulele:
Aria = 4R
2
;
Vol = 4R
3
/ 3;
Rezultatele vor fi afiate n textbox-uri, avnd proprietatea Locked setat pe True.
Interfee:



frmTrig
frmAritmetice
frmMain
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

46










Programul 3. Calcule arii
Programul va trebui s calculeze ariile pentru triunghi, dreptunghi i trapez. Va avea nevoie
de 4 formulare din care unul este formularul de start.
Specificaii:
Programul va avea 4 formulare, unul principal frmMain care conine butoanele de
comand pentru deschiderea celorlalte trei, numite frmTriunghi, frmDreptunghi i
frmTrapez;
Formularele secundare vor avea cte un buton Exit pentru revenirea n frmMain;
Pentru triunghi folosii ca date de intrare lungimile laturilor i formula lui Heron:
A = ) )( )( ( c p b p a p p
unde a, b, c sunt lungimile laturilor, iar p este semiperimetrul triunghiului;
Pentru dreptunghi folosii formula A = L * l;
Pentru trapez folosii ca date de intrare baza mare, baza mic i nlimea, iar pentru
arie, formula A = h(B + b) / 2;
Rezultatele vor fi afiate n textbox-uri, avnd proprietatea Locked setat pe True.

Interfee:




frmSfera
frmTrunchiCon
PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

47









Programul 4. Calcule economice
Programul va trebui s calculeze echivalentul n EURO i USD a unei sume n lei, respectiv
s calculeze dobnda unui depozit n lei pe o anumit perioad.
Specificaii:
Programul va avea 3 formulare, unul principal frmMain care conine butoanele de
comand pentru deschiderea celorlalte dou, numite frmValuta, i frmDobinda;
Formularele secundare vor avea cte un buton Exit pentru revenirea n frmMain;
Pentru calculul de schimb valutar se va folosi cursul zilei, care va fi stabilit prin
program cu ajutorul unor constante, pentru a nu fi cerut la fiecare rulare a
programului;
Pentru calculul dobnzii, datele de intrare vor fi valoarea depozitului, dobnda pe an
i numrul de luni pentru care se face calculul. Formula de calcul o vei deduce
singuri;
Rezultatele vor fi afiate n textbox-uri, avnd proprietatea Locked setat pe True.
Interfee:






PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

48










Programul 5. Rezolvri de ecuaii
Programul va trebui s rezolve 3 tipuri de ecuaii: ecuaia de gradul I, ecuaia de gradul II i
sistemul liniar de 2 ecuaii cu 2 necunoscute. Aceste programe au fost prezentate separat la
categoria A, dar acum vor fi introduse ntr-o aplicaie cu mai multe formulare.
Specificaii:
Programul va avea 4 formulare, unul principal frmMain care conine butoanele de
comand pentru deschiderea celorlalte trei, numite frmEcuatia1, frmEcuatia2 i
frmSistem;
Formularele secundare vor avea cte un buton Exit pentru revenirea n frmMain;
Cele 3 tipuri de ecuaii au schema logic de rezolvare la exemplele din categoria A,
pe care le putei consulta (programele 5, 6 i 7);
Interfee:








PUC 2 ndrumtor de lucrri de laborator Lucrri tip C

49










PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

49
Lucrri tip D. Programe de sintez
n acest capitol vor fi efectuate lucrri de programare care cuprind teme a cror rezolvare folosete
obiecte i tehnici pe care le-ai utilizat n celelalte tipuri de programe. Din aceast cauz nu vom mai
avea un program model, ci vom da, cel mult, interfaa i schema logic. Unele propuneri de teme vor
avea numai specificaii.
Programul 1. Ordonarea unui ir de numere
Acest program i propune s ordoneze cresctor un ir de numere reale introduse aleator.
Specificaii:
Numerele vor fi introduse cu funcia InputBox;
irul brut va fi pus ntr-un ListBox;
irul ordonat va fi pus n alt ListBox;
Numerele irului vor fi inute ntr-o matrice liniar.














PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

50
Schema logic:




























DA
NU
DA
DA
NU
i = 1
j = i + 1
ax = a(i)
a(i) = a(j)
a(j) = ax
i = i + 1 a(i)
START
i = 1
n
i <= n
DA
NU
a(i) > a(j)
j = j + 1
j <= n
i = i + 1
i <= n
Afiseaza
ordonarea
a
STOP
NU
Introducerea irului
(InputBox)
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

51
Interfaa:








Programul 2. ListBox i ComboBox cu date citite dintr-un fiier
Specificaii:
Acest exemplu l vom folosi pentru a citi informaii din 2 fiiere pentru a completa un ListBox
(fiierul List1.txt) i un ComboBox (fiierul Combo1.txt), respectiv pentru a scrie informaii
ntr-un al 3-lea fiier. Primele dou fiiere se vor crea cu utilitarul Notepad i vor avea
structurile de mai jos:

List1.txt: Nume1 Prenume1
Nume2 Prenume2
. . .
Nume n Prenume n

Combo1.txt: Nota1
Nota2
. . .
Nota n
Al 3-lea fiier va avea numele Rez.dat i o structur definit prin program, de forma: Nume
Prenume Nota, fiecare nregistrare fiind format din seleciile care se vor face din ListBox
i ComboBox. Acest fiier va fi generat de ctre program, trebuie doar s i stabilii locul
unde va fi salvat (instruciunea Open).
Atenie la urmtoarele aspecte:
Fiierele List1.txt i Combo1.txt se deschid n modul Input, iar fiierul Rez.dat n
modul Append;
ncrcarea obiectelor ListBox i ComboBox se face n procedura special
Form_Load (care se deschide automat cu un dublu-click n interiorul
formularului).
Deoarece avem o nregistrare de tip String, scrierea efectiv n fiier se face cu
instruciunea Print #n, x - unde x = nume & & nota (de exemplu:
Mocian Ioan 8).
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

52
Deoarece algoritmul este foarte simplu citirea a dou valori, concatenarea lor i scrierea n
fiier a rezultatului nu mai este necesar schema logic.
Interfaa:





Dup rularea programului, verificai corectitudinea fiierului Rez.dat cu utilitarul Notepad.


Programul 3. Rezolvarea ecuaiei de gradul II cu diverse condiii
Specificaii:
Acest program i propune rezolvarea ecuaiei de gradul II, avnd mai multe metode de
introducere a datelor iniiale (coeficienii a, b i c), cum ar fi:
Introducerea coeficienilor de la tastatur, din textBox-uri.
Introducerea coeficienilor din comboBox-uri.
Introducerea coeficienilor din listBox-uri.
Introducerea coeficienilor din fiier.
Pentru fiecare metod de introducere este nevoie de o alt interfa, n cazul nostru de 4 forme
plus una care se deschide prima i care ne d posibilitatea de a le deschide pe celelalte, numit
n general frmMain.
Mai nti trebuie s ne gndim cum vor arta formele, pentru aceasta vom face schie pe hrtie
i o schem de funcionare a aplicaiei. Problema rezolvrii ecuaiei de gradul II ai mai
ntlnit-o. Noutatea const n valorificarea unor cunotine anterioare, cum ar fi folosirea
ListBox-urilor i ComboBox-urilor, a butoanelor de opiune, a citirii i scrierii n fiiere etc.
Rezultatele vor fi scrise n diverse formate, aa cum se vede din interfee.





PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

53
Interfeele:







Cnd pornete aplicaia trebuie s se activeze form-ul frmMain. De aici, n funcie de
opiunea aleas, se pot activa oricare din cele 4 form-uri (frmTastatura, frmCombo,
frmList, frmFisier). Se observ c fiecare din form-urile satelit conin obiectele
corespunztoare metodei alese.
Respectai notaiile care apar pe formulare pentru a v fi mai uor la scrierea codului din
spatele fiecrui buton de comand.





frmTastatura
frmCombo
frmMain
frmFisier
frmList
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

54
Programul 4. Program cu meniuri
Cteva consideraii despre meniuri:
O alternativ la programele cu mai multe formulare este aceea de a folosi meniuri n locul
butoanelor de comand, pentru deschiderea acestora, mai ales cnd exist un numr mare de
formulare. Diferena este c pentru a lansa o procedur, n loc s se dea click pe un buton se
va da click pe o opiune de meniu. Pentru crearea meniurilor se folosete editorul de meniuri.
Editorul de meniuri este un utilitar inclus n limbajul VB, destinat proiectrii meniurilor
utilizator. Acesta se va folosi pentru crearea meniurilor personalizate, specifice aplicaiilor pe
care le vei face.
Deschiderea editorului de meniuri se face prin comanda Tools - Menu Editor,
rezultnd imaginea de mai jos:











Aceast caset de dialog conine o serie de casete de text i butoane de comand a cror
semnificaie va fi exprimat n continuare.
Caption este o caseta de text n care se introduce numele articolului de meniu, aa cum apare
el n bara de meniuri a programului pe care l facei. Pentru a permite accesul rapid de la
tastatur a articolului, se pune caracterul & naintea unei litere cu care dorim s apelm
articolul respectiv (Ex: Cal&cul se apeleaz dac apsm litera c, lista cu articole fiind
activat). Dac la Caption se introduce caracterul - se va insera o linie separatoare ntre
articolele meniului. Completarea acestei casete este obligatorie.
Name este o caseta de text n care se introduce numele articolului de meniu. Prefixul este
mnu (Ex: mnuCalcule) iar completarea casetei este obligatorie. Acesta este numele folosit
n codul surs.
Index este o caseta de text folosit pentru a introduce un numr ntreg care determin poziia
articolului n cadrul unei matrici de controale. Aceast tehnic nu este folosit de nceptori,
aa c aceast caset nu trebuie completat.
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

55
Shortcut este o caseta combinat care afieaz o list din care se poate selecta o tast rapid
pentru articolul de meniu respectiv. Tastele vor fi afiate n dreapta articolului. Completarea
acestei casete nu este obligatorie.
HelpContextID este o caseta de text folosit pentru un cod numeric asociat unui identificator
de context. Nu vom folosi aceast facilitate la acest nivel.
NegotiatePosition este o caseta combinat legat de programarea avansat, deci nu o lum n
considerare.
Cele 4 casete de validare au urmtoarele funciuni:
Checked - este folosit pentru a apare un simbol n stnga articolului de meniu.
Lsai-o nebifat.
Enabled - activeaz articolul de meniu. Lsai-o activat.
Visible - activeaz vizibilitatea articolului de meniu. Lsai-o activat.
WindowList - Lsai-o neactivat, aparine programrii avansate
Cele 4 butoane de ierarhizare permit mutarea articolelor de meniu n sus sau n
jos, respectiv la stnga i dreapta n cadrul aceluiai nivel. Micnd un articol stnga-dreapta
stabilim, de fapt, subnivele ale articolului din stnga-sus. i aici se poate imagina o structur
arborescent ca la structura de directoare din Windows Explorer.
Este de la sine neles c articolele cele mai din stnga vor apare n partea de sus a formei, iar
cele indentate spre dreapta, vor fi ascunse n spatele articolului printe (primul din stnga-
sus). Exemplul practic pe care l vom face ctre sfritul leciei va clarifica aceste aspecte.
Pe editorul de meniuri exist i 5 butoane de comand care au funciile urmtoare:
Next - mut selecia pe linia urmtoare a structurii meniului;
Insert - insereaz o nou linie deasupra celei selectate;
Delete - terge linia selectat;
OK - nchide editorul de meniuri i salveaz toate modificrile efectuate;
Cancel - nchide editorul de meniuri i anuleaz toate modificrile
Pentru a lega codul-surs de opiunile de meniu se face dublu-click n faza de proeictare pe un
articol de meniu are loc deschiderea ferestrei de cod a evenimentului Click al articolului
respectiv. n acest mod se poate scrie codul care trebuie executat cnd se face click pe un
articol de meniu. Mecanismul este asemntor cu cel de la butoanele de comand.
Fcnd dublu-click pe un articol de meniu se va deschide fereastra urmtoare:




PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

56
n aceast fereastr se va scrie codul asociat articolului de meniu (mnuEc_1 n cazul nostru),
cod care va fi executat la evenimentul click.
Dac structura unui meniu este inteligent construit, utilizatorii aplicaiei nu vor avea nici o
problem n utilizarea lor. Meniurile voastre nu vor diferi cu nimic de meniurile aplicaiilor
Windows create de profesioniti.
Pentru a crea o aplicaie cu meniuri trebuie parcuri urmtorii pai:
1. Mai nti desenm pe hrtie structura detaliat a ntregului meniu.
2. Pornim Editorul de meniuri cu comanda Tools / Menu Editor .
3. Construim structura meniului pornind de la schia de pe hrtie.
4. Pentru fiecare opiune a meniului va trebui s scriem codul care va fi executat la
evenimentul click al acesteia.
Opiunile din meniu trebuie s ni le imaginm ca fiind nite butoane de comand mai speciale,
care la evenimentul click execut o procedur.
Exemplu practic de aplicaie cu meniu
Ne propunem s proiectm o aplicaie care face nite calcule i rezolv ecuaii i sisteme de
ecuaii liniare. Gestionarea acestei aplicaii se va face cu ajutorul unui meniu, desenat pe
hrtie i prezentat mai jos.

Calcule Rezolvari Help
Media aritmetica Ecuatia de gr. I Descriere aplicatie
Media geometrica Ecuatia de gr. II Despre aplicatie
Perimetrul triunghiului Sistem 2 ec.
Punctaj Sistem 3 ec.

Analiznd meniul afiat rezult c avem de fcut 4 calcule, de rezolvat 2 ecuaii i 2 sisteme,
respectiv de a vizualiza 2 fiiere de tip Help. Pentru fiecare din cele 10 opiuni trebuie s
avem cte o procedur care se declaneaz la evenimentul click pe acea opiune.
Primul pas care trebuie fcut este desenarea interfeei, care va trebui s conin att obiecte
cunoscute deja (textBox-uri pentru introducerea i afiarea datelor, butoane de comand,
etichete etc) ct i meniul. Aceast interfa este artat n figura urmtoare.








PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

57







Fig. xx. Interfaa aplicaiei
Interfaa prezentat mai sus este potrivit pentru submeniul Calcule, presupunnd c avem de
fiecare dat numai 3 date de intrare. Proprietatea Caption a obiectului Label este folosit
pentru a afia diferite etichete n funcie de opiunea aleas.
Iat numele obiectelor de pe interfa, nume care vor fi folosite i n codul surs:
Etichete: lblVal1, lblVal2, lblVal3, lblRezultat i lblRezVal.
Casete de text: txtVal1, txtVal2 i txtVal3
Butoane de comand: cmdOK i cmdExit
Submeniul Calcule: mnuMediaA, mnuMediaG, mnuPerimetruT i
mnuPunctaj
Pentru submeniul Rezolvari trebuie gndit o alt form care s conin obiectele pentru
introducerea datelor iniiale i pentru afiarea rezultatelor. Aceast parte a aplicaiei nu este
cuprins n acest exemplu, aa c va trebui s o facei singuri, pe baza cunotinelor acumulate
pn acum.
Pentru afiarea casetei de dialog a editorului de meniuri folosii comanda Tools / Menu
Editor... Dup completarea tuturor elementelor meniului va trebui s obinei ceea ce se
vede n figura urmtoare.








PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

58












ncercai s nelegei toate informaiile afiate n figura 15.23 pentru a face legtura cu ceea
ce se vede n interfa.
Definirea procedurilor-eveniment se face astfel:
Click pe elementul de meniu din interfa, de exemplu Me&dia aritmetica .
Se va deschide procedura Sub mnuMediaA_Click(), care se va completa cu
codul care dorim s fie executat la activarea acestei opiuni.
Aceast operaiune seamn cu ataarea unei proceduri la un buton de comand.
n continuare se va prezenta codul pentru partea de calcule a aplicaiei.

Dim rez As Integer Acestea sunt variabile globale
Dim rez1 As Double Media aritmetic
Dim rez2 As Double Media geometric
Dim rez3 As Double Perimetrul triunghiului
Dim rez4 As Integer Punctaj 3 puncte la victorie + 1 punct la egal

Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdOK_Click()
lblRezultat.Visible = True
lblRezVal.Visible = True
Select Case rez
Case 1 Media aritmetica
rez1 = Format((Val(txtVal1) + Val(txtVal2) + Val(txtVal3)) /
3, "##.00")
lblRezVal.Caption = rez1
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

59
Case 2 Media geometrica
rez2 = Format(Sqr((Val(txtVal1) * Val(txtVal2) *
Val(txtVal3))), "##.00")
lblRezVal.Caption = rez2
Case 3 Perimetrul triunghiului
rez3 = Format(Val(txtVal1) + Val(txtVal2) + Val(txtVal3),
"#####.00")
lblRezVal.Caption = rez3
Case Else Punctaj
rez4 = Val(txtVal1) * 3 + Val(txtVal2)
lblRezVal.Caption = Format(rez4, "###")
End Select
End Sub

Private Sub mnuMediaA_Click()
Ascunde
lblRezultat.Caption = "Media aritmetica este:"

lblVal1.Caption = "Nota 1:"
lblVal2.Caption = "Nota 2:"
lblVal3.Caption = "Nota 3:"
lblVal1.Visible = True
lblVal2.Visible = True
lblVal3.Visible = True
txtVal1.Visible = True
txtVal2.Visible = True
txtVal3.Visible = True
rez = 1
End Sub
Sub Ascunde()
lblVal1.Visible = False
lblVal2.Visible = False
lblVal3.Visible = False
txtVal1.Visible = False
txtVal2.Visible = False
txtVal3.Visible = False
lblRezultat.Visible = False
lblRezVal.Visible = False
End Sub

Private Sub mnuMediaG_Click()
Ascunde
lblRezultat.Caption = "Media geometrica este:"

lblVal1.Caption = "Numarul 1:"
lblVal2.Caption = "Numarul 2:"
lblVal3.Caption = "Numarul 3:"
lblVal1.Visible = True
lblVal2.Visible = True
lblVal3.Visible = True
txtVal1.Visible = True
txtVal2.Visible = True
txtVal3.Visible = True
rez = 2
End Sub

Private Sub mnuPerimetruT_Click()
Ascunde
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

60
lblRezultat.Caption = "Perimetrul triunghiului este:"

lblVal1.Caption = "Latura AB:"
lblVal2.Caption = "Latura BC:"
lblVal3.Caption = "Latura AC:"
lblVal1.Visible = True
lblVal2.Visible = True
lblVal3.Visible = True
txtVal1.Visible = True
txtVal2.Visible = True
txtVal3.Visible = True
rez = 3
End Sub

Private Sub mnuPunctaj_Click()
Ascunde
lblRezultat.Caption = "Punctajul obtinut este:"

lblVal1.Caption = "Victorii:"
lblVal2.Caption = "Meciuri egale:"
lblVal3.Caption = "Infringeri:"
lblVal1.Visible = True
lblVal2.Visible = True
lblVal3.Visible = True
txtVal1.Visible = True
txtVal2.Visible = True
txtVal3.Visible = True
rez = 4
End Sub

Acest exemplu v ofer un caz concret de utilizare a meniurilor n aplicaiile scrise n Visual
Basic. El poate fi o surs de inspiraie pentru aplicaiile pe care o s le proiectai.
Observai cum se folosete proprietatea Caption pentru a schimba din cod ceea ce afieaz
o etichet, tehnic foarte des folosit de ctre programatorii profesioniti.
Observai, de asemenea, folosirea variabilelor globale rez, rez1, rez2, rez3 i
rez4 care au fost declarate n afara procedurilor.
Completai aplicaia cu partea de rezolvri a ecuaiilor i sistemelor.







PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

61
Programul 5. Program cu propoziii
Acest program i propune s ating i s combine mai multe cunotine pe care le-ai studiat
n tipurile de lucrri anterioare.
Specificaii:
Programul are 3 listbox-uri cu cuvinte subiecte, predicate i complemente;
Aceste listbox-uri se vor ncrca fiecare din cte un fiier, care se vor crea n Notepad
i vor avea forma (exemplu pentru subiecte):
Subiect1
Subiect2
........

O propoziie va fi format din 3 cuvinte: subiect, predicat i complement legate
ntre ele cu operatorul &;
Cele 3 cuvinte se vor alege, fiecare din listbox-ul corespunztor;
Propoziia va fi format i afiat ntr-un textbox, folosind un buton de comand;
Un buton de comand va scrie propoziia ntr-un fiier;
Un altul va terge propoziia din textbox;
Un altul va afia coninutul fiierului ntr-un listbox, care va fi creat ntr-un alt
formular;
Interfaa:











PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

62

ANEXA. Teme pentru programe
1. Determinarea centrului de greutate a unui cadru de srm:
Datele de intrare vor fi segmente care vor fi citite dintr-un fiier de forma:
x1, y1, x2, y2
......
xn-1, yn-1, xn, yn
Segmentele vor fi desenate, mpreun cu centrul de greutate care va fi
simbolizat printr-o cruce mic si notat cu G
Coordonatele centrului de greutate vor fi afiate
2. Desenarea unui cerc care trece prin 3 puncte:
Punctele vor fi introduse prin textBox-uri
Centrul cercului si raza vor fi afisate
3. Desenarea unui cerc nscris ntr-un triunghi:
Punctele care determin triunghiul vor fi introduse prin textBox-uri
Centrul cercului si raza vor fi afisate
4. Crearea unei agende personale varianta I, cu structuri de date:
Se va crea un tip de data numit Persoana, care conine nume, prenume,
telefon, data naterii, profesie, loc de munc, etc.
Aplicaia va conine mai multe formulare, cum ar fi formularul de actualizare a
datelor, formularul de afiare a diverselor interogri cum ar fi: toate persoanele
de gen feminin, toate persoanele dintr-un ora, toate persoanele nscute ntr-o
anumit lun etc.
Design-ul aplicaiei este la latitudinea studentului.
5. Crearea unei agende personale varianta II, cu baze de date:
Se va crea o baz de date cu informaii despre persoane, firme etc.
Aplicaia va conine mai multe formulare, cum ar fi formularul de actualizare a
datelor, formularul de afiare a diverselor interogri cum ar fi: toate persoanele
de gen feminin, toate persoanele dintr-un ora, toate persoanele nscute ntr-o
anumit lun etc.
Design-ul aplicaiei este la latitudinea studentului.
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

63
6. Dezvoltarea unei aplicaii Calculator de buzunar:
Va conine cele 4 operaii, radical, sin, cos, tg, ctg, buton cu memorie etc.
Design-ul aplicaiei este la latitudinea studentului.
7. Aplicaia 6 din 49:
Un formular va nscrie n fiier variante: Nume, x1,x2,...x6.
O funcie care face extragerea (random).
O funcie care stabilete rezultatele:
I 6 numere bune
II 5 bune
III 4 bune
IV 3 bune
Design-ul aplicaiei este la latitudinea studentului.
8. Aplicaie Criptare text:
Un text va fi criptat dup o cheie, pentru a fi trimis undeva.
O functie care va ti s decripteze textul.
Textele pot fi stocate n textBox sau n fiiere.
Design-ul aplicaiei este la latitudinea studentului.
9. Aplicaie Situaia depozitelor de la banc:
Am mai multe depozite, fiecare cu data lui de start i cu dobnda lui.
Doresc s vd depozitele la un anumit moment.
Design-ul aplicaiei este la latitudinea studentului.
10. Reprezentarea grafic a funciei de gradul II:
Se vor intoduce parametrii a, b, c.
Se va specifica max/min ul funciei precum i interseciile cu axa Ox (x1,x2).
Design-ul aplicaiei este la latitudinea studentului.
11. Aplicaie Puncte n interiorul cercului:
ntr-un fiier se gsesc n puncte:
x1, y1
x2, y2
PUC 2 ndrumtor de lucrri de laborator Lucrri tip D

64
...
xn, yn
Se d un cerc (centru i raza) i se cere cte puncte sunt n interiorul cercului.
Se vor desena pe interfa punctele i cercul pentru a verifica rezultatele.
Design-ul aplicaiei este la latitudinea studentului.
12. Aplicaie de utiliti:
Va arta valoarea unei sume n lei, n principalele valute(USD, EURO, LIRE,
etc).
De asemenea va arta ora n cteva mari orae ale lumii.
Design-ul aplicaiei este la latitudinea studentului.