Documente Academic
Documente Profesional
Documente Cultură
Introducere Capitolul 1 Visual Basic-prezentare general 1.1.Visual Basic- prezentare general 1.2. Ferestre Capitolul 2 Concepte de baz n Visual Basic 2.1. Obiectul 2.2. Proprietile unui obiect 2.3. Metode 2.4. Evenimente Capitolul 3 Etapele realizrii unei aplicaii n Visual Basic 3.1.Proiectarea interfeei cu utilizatorul 3.2. Scrierea codului 3.3. Aplicaii Capitolul 4 Elemente de limbaj procedural Visual Basic.Variabile, constante, operatori, instruciuni 4.1. Variabile 4.2. Constante 4.3. Operatori 4.4. Funcii predefinite 4.5. Aplicaii Capitolul 5 Structuri de control 5.1. Structuri de control alternative 5.2.Structuri repetitive 5.3. Aplicaii Capitolul 6 Programare modular 6.1. Proceduri standard 6.2. Proceduri de tip funcie 6.3. Aplicaii
Visual Basic Aplicaii n inginerie Capitolul 7 Fiiere Visual Basic 1. Deschiderea fiierelor 2.nchiderea fiierelor 3. Exploatarea fiierelor n acces secvenial 4. Exploatarea fiierelor cu acces aleator 5. Aplicaii Bibliografie
Prezenta lucrare se dorete a fi o mbinare ntre ceea ce reprezint un produs informatic foarte utilizat (Visual Basic) i mediul aplicaiilor inginereti. Se vrea, n egal msur, un suport de curs destinat proceselor educaionale de formare iniial i de formare continu. Noiunile teoretice ncearc s surprind att elementele generale ale programrii indiferent de limbajul utilizat , ct i elementele specifice Visual Basic. De ce Visual Basic? Pentru c acest limbaj este caracterizat att de simplitate, ct i de putere, deci este o bun opiune pentru cititorul interesat de a face din calculator un prieten. Mediul pune la dispoziie faciliti, programe de ghidare, comenzi. Lucrarea se adreseaz studenilor de la facultile tehnice, precum i celorlalte categorii de persoane ce doresc s-i formeze deprinderi de programare. Aplicaiile, preponderent din inginerie, ofer posibilitatea ca cititorul, nelegnd fenomenul pe care vrea s l rezolve cu ajutorul calculatorului, s se poat concentra asupra modului de rezolvare, respectiv asupra instruciunilor ce vor fi utilizate. Pentru aprofundarea noiunilor teoretice, utilizatorul va avea posibilitatea s exerseze numeroasele aplicaii care sunt prezentate n carte.
Cunotine prealabile Arhitectura unui calculator Sistemul de operare Windows Plan tematic 1.1.Visual Basicprezentare general 1.2.Ferestre Intrebri obiectiv - Ce este un mediu integrat de dezvoltare? - Care sunt ferestrele mediului Visual Basic?
1.2. Ferestre
Figura1.1. Ferestrele mediului Visual Basic Ferestrele ce apar pe ecran au urmtoarea semnificaie: 1- Form-ul (formularul) este principalul element de interfa; reunete obiectele interactive ale aplicaiei ( butoane de comand, etichete, bare de meniu) 2- Fereastra Toolbox conine reprezentri ale controalelor ce vor fi plasate pe form. 3- Fereastra Project Explorer permite gestionarea rapid a componentelor proiectului. Proiectul va fi format din form-uri, module ( ce
Figura 1.2. Exemplu de interfa 4- Ferestra Properties conine proprietile descriptive sau funcionale form-ului, controlului sau altui element activ 5- Ferestra Immediate este o fereastr n care se pot scrie i executa instruciuni ale limbajului de programare, rezultatele fiind disponibile imediat.
Cunotine prealabile Sistemul de operare Windows Visual Basic prezentare general Plan tematic 2.1. Obiectul 2.2. Proprietile unui obiect 2.3. Metode 2.4. Evenimente Intrebri obiectiv -Ce este un obiect? -Care sunt proprietile obiectelor Visual Basic i cum pot fi modificate? -Care sunt metodele obiectelor Visual Basic? -Ce sunt evenimentele?
2.1. Obiectul
Spre deosebire de programarea procedural, n care structurile de date i comportamentul acestora nu sunt asociate, programarea orientat pe obiecte specific organizarea programului ca o colecie de obiecte ce conin o structur de date i un comportament. Aceast abordare permite modelarea direct a realitii prin intermediul obiectelor definite ca entiti cu identitate proprie i caracterizate prin comportament i stare. a) Obiectul reprezint o entitate din lumea real. O fereastr, un formular, un control sunt exemple de obiecte. Pentru efectuarea unei operaii asupra unui obiect se va apela la o metod. Obiectele se caracterizeaz prin [ANI 03], [LUP01]: Identitate, care permite distingerea unui obiect de un alt obiect; obiectul este caracterizat prin proprieti (atribute) ca: nume,dimensiuni, culoare, etichet. Stri semnificative, care corespund valorilor tuturor atributelor la un moment dat. Comportament ansamblul operaiilor pe care obiectul le poate executa ca reacie la mesajele trimise de ctre alte obiecte . Programarea orientat pe obiecte face apel la urmtoarele concepte: ncapsularea Clasificarea Polimorfismul Motenirea
10
ncapsularea - reprezint proprietatea obiectului de a conine la un loc date i metode, astfel nct accesul la date se realizeaz numai prin intermediul metodelor. Clasificarea presupune regruparea n clase a obiectelor ce au aceeai structur i acelai comportament. Polimorfismul- const n proprietatea instanelor unei clase, ca la primirea aceluiai mesaj s manifeste comportamente diferite. n Visual Basic este posibil numai simularea polimorfismului. Motenirea permite partajarea atributelor i operaiilor comune ntre clase, pstrnd, n acelai timp, diferenele. Visual Basic nu suport integral motenirea. Datorit caracteristicilor sale, Visual Basic este un limbaj pseudo-obiect.
11
proprietile se in n ordine alfabetic. Indiferent de modul de nregistrare i de inere a proprietilor prima proprietate din fereastra de proprieti este NAME. Coloana stng a ferestrei de proprieti conine numele proprietilor iar coloana dreapt conine valorile actuale ale proprietilor.
Figura 2.1. Ferestra Properties a obiectului Form Selectarea unei proprieti face posibil modificarea valorii ei, ceea ce are rspuns imediat asupra obiectului. Aceste modificri sunt modificri care se fac n momentul editrii formei. Modificri asupra proprietilor, mai puin proprietatea NUME pot fi fcute i n timpul execuiei, deci prin program.
12
Selectarea pe form a altui obiect aduce n fereastra de proprieti proprietile corespunztoare acelui obiect (a noului obiect selectat). Principalele proprieti ale unui obiect sunt: 1) Proprietatea nume: NAME Prin intermediul acestei proprieti obiectului i se ataeaz implicit sau de ctre programator un nume de referin. Numele de referin este cuvntul rezervat prin intermediul cruia obiectul este recunoscut de ctre aplicaie.Numele de referin conine tipul obiectului i un numr de ordine. Totui este bine ca numele s conin pe lng tipul obiectului i o descriere sumar a obiectului (aciunea). Pentru atribuirea de denumiri specifice se va utiliza un prefix conform tabelului urmtor: Tabelul 2.1. Prefixe utilizate pentru denumirea obiectelor Visual Basic[FRI 01], [ANI 03] Obiect form Buton de comand etichet Caset de text meniu Buton de opiune Caset cu list Caset list combinat Caset cu list fiiere Caset de validare Prefix frm cmd lbl txt mnu opt lst cbo fil chk Exemplu frmExemplu cmdIeire lblNume txtText mnuMeniu optAlege lstGrupa cboSerie filFiier chkTiprete
13
2) Proprietatea legat de mesajul nscris pe obiect Mesajul nscris pe obiect poate fi: - de tip informativ; - de tip list. Dac mesajul nscris pe obiect este de tip informativ proprietatea se numete CAPTION ( de exemplu pentru obiectul Label) . Dac mesajul nscris pe obiect este de tip list proprietatea se numete TEXT (de exemplu pentru obiectul TextBox) . Pentru obiectele active i pentru forme exist proprietatea logic ENABLED care activeaz sau dezactiveaz obiectul. Aceast proprietate are valorile: - TRUE dac obiectul este activ; - FALSE dac obiectul este inactiv. Activarea sau dezactivarea se face numai n execuia formei. 3) Proprieti legate de poziie i dimensiuni - LEFT; - HIGH. 4) Proprieti legate de font pentru dimensiunea fontului, pentru caracterul italic i pentru subscrieri. 5) Proprieti legate de culori: pentru culoarea obiectului; culoarea fontului i culoarea pentru nscrisul de pe obiect.
14
Figura 2.2. Exemplu de modificare a proprietii Backcolor n faza de proiectare Fiecrui obiect i se ataeaz n jur de 40 de proprieti. Proprietile ataate unui obiect se gsesc n fereastra de proprieti n momentul n care obiectul este selectat. n cazul n care se dorete modificarea anumitor proprieti ale unui obiect n faza de execuie a aplicaiei, se va utiliza sintaxa : Obiect.Proprietate=Variabil Exemplu: Pentru a se modifica culoarea de fond a formei numite frmInceput n culoarea roie se va introduce comanda: frmInceput.BackColor=QBColor(red)
15
2.3.Metode
Metoda reprezint o aciune pe care programul poate s o efectueze asupra obiectului. Sintaxa este urmtoarea [W1]: [Obiect].Metod [list de parametri] n biblioteca de obiecte Object Browser sunt prezentate descrierile metodelor.
2.4. Evenimente
Evenimentul poate fi definit ca rspunsul unui obiect la o aciune a utilizatorului sau a programului. De exemplu, apsarea unei taste poate constitui o aciune care determin un eveniment. Pentru un eveniment se poate scrie cod. Programul va rspunde la eveniment numai dac are scris o procedur ataat evenimentului. Altfel, evenimentul va fi ignorat. Att pentru form ct i pentru controalele ataate vom avea evenimente. De exemplu, pentru controlul Caset de text se pot scrie proceduri ataate evenimentelor de clic, dublu-clic, introducere a textului. Dac programatorul va scrie o procedur eveniment pentru dublu-clic pe caseta de text, atunci cnd utilizatorul va executa aceast aciune, sistemul va rspunde prin apelarea procedurii ataate evenimentului. Numele procedurii eveniment este format din concatenarea irurilor reperezentate de numele
16
obiectului, liniu de subliniere i numele evenimentului. De exemplu, pentru un buton de comand la care dorim ataarea unei proceduri cnd se acioneaz click asupra lui, numele procedurii ataate va fi Command1_Click.
Visual Basic Aplicaii n inginerie Capitolul 3 Etapele realizrii unei aplicaii n Visual Basic
17
Cunotine prealabile Visual Basic prezentare general Definiia obiectului Metode, proprieti, evenimente Plan tematic 3.1.Proiectarea interfeei cu utilizatorul 3.2. Scrierea codului 3.3. Aplicaii Intrebri obiectiv -Cum se realizeaz interfaa unei aplicaii? -Care sunt caracteristicile etichetelor, butoanelor de comand, casetelor de text casetelor tip list i a controalelor de opiune? -Ce sunt modulele Visual Basic?
Cuvinte-cheie -etichete -butoane de comand -casete de text -controale de opiune -casete cu list -module
18
O aplicaie Visual Basic se numete general Proiect. CONTROALE FORME PROIECT Pentru realizarea unei aplicaii Visual Basic , etapele care vor fi parcurse sunt [FRI 01], [ANI 03]: 1. Stabilirea aplicaiei care va fi rezolvat cu ajutorul mediului Visual Basic 2. Proiectarea interfeei grafice cu utilizatorul prin aezarea obiectelor pe foaie (form); 3. Modificarea proprietilor obiectelor 4. Scrierea codului de program 5. Rularea aplicaiei n Visual Basic exist ferestre pentru editarea: - formelor; - obiectelor; - procedurilor.
19
Dintre icoanele de pe meniu se alege Tools care, prin apsare, determin apariia pe ecran a unei ferestre cu obiecte . Prin apsarea tastei F4 pe ecran mai apare o fereastr (se poziioneaz n partea dreapt a ecranului) , fereastra de proprieti sau atribute .
Figura 3.1. Crearea unei aplicaii Pe lng aceste dou ferestre pe ecran mai exist o zon (fereastr) de lucru numit fereastr de editare de forme. Ca orice editor interactiv, Visual Basic pune n eviden zona selectat a ecranului. Punerea n eviden
20
se face prin ncadrarea zonei active ntr-un chenar (chenarul este format din ptrele albastre). Modul de proiectare Se deseneaz forma. Se vor stabili proprietile obiectului form. n tabelul urmtor sunt descrise principalele proprieti ale obiectului. Tabelul 3.1.Principalele proprieti ale unui form [NAS 00] Proprietate BackColor BorderStyle Caption Enabled Descriere Specific culoarea fundalului formului. Se alege dintr-o list de culori. Stabilete stilul fundalului formului. Este textul care se afieaz n linia de titlu a form-ului. Stabilete dac form-ul este activ (True) sau nu (False). Se lucreaz cu aceast proprietate doar n aplicaii cu mai multe form-uri (MDI). Permite schimbarea tipului, mrimii i atributelor fontului. Stabilete culoarea cu care se va scrie textul. Precizeaz nlimea form-ului n twips.
Visual Basic Aplicaii n inginerie Icon Left MaxButton MinButton MousePointer Moveable Picture
21
ScaleMode
ShowInTaskbar StartUpPosition
Arat imaginea de tip icon ce se va afia pe taskbar atunci cnd utilizatorul minimizeaz form-ul. Indic distana pn la marginea stng a ecranului, n twips. Specific dac form-ul va avea sau nu buton de maximizare. Specific dac form-ul va avea sau nu buton de minimizare. Stabilete forma cursorului mouseului atunci cnd, la execuie, utilizatorul indic form-ul. Stabilete dac utilizatorul paote muta sau nu form-ul pe ecran, la momentul execuiei. Precizeaz numele unei imagini de tip icon (fiier de tip .ico) care apare pe fundalul form-ului la execuie. Stabilete unitatea de msur utilizat pentru form (twip, pixel, inch, centimetri sau altele). Implicit este twip. Stabilete dac form-ul apare sau nu la execuie n linia de start a Windows-ului. Stabilete poziia form-ului pe ecran (implicit acesta apare n stnga sus, dar poate fi afiat centrat pe ecran sau centrat n cadrul unui form-printe vezi aplicaiile MDI).
22
Indic distana pn la marginea de sus a ecranului, n twips. Stabilete dac form-ul va aprea pe ecran la execuie (True) sau este invizibil (False). Precizeaz nlimea form-ului, n twips. Stabilete starea iniial a ferestrei n care apare form-ul la execuie (minimizat, maximizat sau cu aceleai dimensiuni ca la proiectare).
n faza urmtoare de realizare a aplicaiei se selecteaz obiectele necesare proiectului (formei) din fereastra de obiecte unul cte unul, pe rnd. Obiectul selectat se transport pe form. Transportarea obiectelor pe form se face pe rnd (cte un singur obiect odat). Pe form, prin selectarea obiectului, pot fi modificate proprietile acestuia astfel nct acesta s corespund cerinelor. Totodat, obiectului selectat i se specific metoda i evenimentele. n cadrul evenimentelor, obiectului selectat i se ataeaz o procedur. Dup aceasta aplicaia este lansat n execuie. Obiectele de lucru n Visual Basic sunt: a) etichete; b) casete de text;
Visual Basic Aplicaii n inginerie c) d) e) f) g) butoane de comand; casete de selecie; butoane de opiuni; poteniometre liniare; casete de liste combinate.
23
Fiecare obiect este caracterizat de: proprietile sale; metodele sale; evenimentele sale. Transferarea unui obiect pe form se realizeaz astfel: n fereastra de obiecte se selecteaz obiectul dorit cu clic stnga pe el, dup care cu mouse-ul se trage obiectul n fereastra de editare a formelor. Dac obiectul este selectat, simbolul de mouse devine o cruciuli de tip int (+) cu care se alege poziia din colul din stnga sus a obiectului selectat. Dup fixarea colului din stnga sus se trage cu mouse-ul pe ecran. Va apare un dreptunghi care va conine obiectul dorit. Dac pe form sunt puse mai multe obiecte, obiectul selectat este evideniat cu ptrele luminoase i are proprietile afiate n fereastra de proprieti., Dup selectare, obiectul poate fi modificat (exemplu: pot fi modificate proprietile, dimensiunile etc.). a) Eticheta (LABEL) Eticheta are un rol pur descripional. Evenimentul ataat unui obiect de tip etichet este evenimentul CHANGE. Numele care se d unei etichete trebuie s conin o descriere.
24
n CAPTION din fereastra de proprieti se trece textul care dorim s apar n acea etichet. Etichetele au o proprietate foarte important numit AUTOSIZE care dimensioneaz automat eticheta n funcie de fontul i de textul folosit. n tabelul urmtor sunt precizate principalele proprieti ale obiectului Etichet [FRI 01], [NAS 00] Tabelul 3.2. Principalele proprieti ale unei etichete Proprietate Alignment AutoSize Descriere Indic modul de aliniere a textului etichetei (stnga, dreapta, centru). Dac este setat True, modific dimensiunile etichetei atunci cnd, la execuie, este introdus un text prea mare pentru dimensiunile date. Specific culoarea fundalului etichetei. Se alege dintr-o list de culori. Stabilete stilul fundalului etichetei. Este textul care se afieaz pe etichet. Stabilete dac eticheta este activ (True) sau nu (False). Are valoarea implicit True. Permite schimbarea tipului, mrimii i atributelor fontului. Stabilete culoarea textului etichetei. Precizeaz nlimea etichetei n twips. Indic distana pn la marginea
25
MousePointer TabIndex
ToolTipText
stng a form-ului n twips. Stabilete forma cursorului mouseului atunci cnd, la execuie, utilizatorul indic eticheta. Specific, printr-o valoare numeric, poziia n ordinea de parcurgere a controalelor la momentul execuiei (eticheta nu poate deine focus, dar poate face parte din aceast ordine). Precizeaz textul explicaii sau indicaii) ce se va afia ntr-o caset de tip tooltip, la indicarea etichetei cu ajutorul mouse-ului Indic distana pn la marginea de sus a form-ului, n twips. Stabilete dac eticheta apare pe ecran la execuie (True) sau este invizibil (False). Precizeaz limea etichetei n twips. Stabilete dac este posibil scrierea textului pe mai multe linii n cadrul etichetei.
Dup poziionarea etichetei pe form se poate ataa un eveniment acelei etichete. Este vorba despre o procedur care poate fi ataat etichetei, procedur care se lanseaz n execuie ori de cte ori coninutul sau valoarea proprietii CAPTION se modific. Din acest motiv evenimentul ataat etichetei se numete CHANGE.
26
Editorul de programe Editorul de programe este cel care permite scrierea textului surs al procedurii ataate etichetei i evenimentului CHANGE i se apeleaz cu dublu clic pe ETICHET.
Figura 3.2. Editare de program Un clic pe el are ca efect selectarea obiectului, fapt care face ca n cutia de proprieti s Proprietatea etichetei
ETICHET
27
Dublu clic determin apariia editorului de text care n mod automat va prelua urmtoarele dou linii. b) Butonul de comand Butonul de comand are ca reprezentare, reprezentarea tridimensional a unui buton. Principalele proprieti ale unui buton de comand sunt prezentate n tabelul 3.3. Tabelul 3.3. Principalele proprieti ale unui buton de comand [FRI 01], [NAS 00] Proprietate BackColor Descriere Specific culoarea fundalului butonului. Se alege dintr-o list de culori. Pentru a putea schimba culoarea implicit trebuie modificat valoarea proprietii Style (1-Graphical, n loc de 0Standard). Stabilete dac butonul va recepta un eveniment clic la apsarea tastei Esc. Este textul care se afieaz pe butonul de comand. Stabilete dac butonul va recepta un eveniment clic la apsarea tastei Enter, chiar dac un alt control deine focus-ul. Stabilete dac butonul este activ (True) sau nu (False). Are valoarea
Enabled
28
Picture
Style
TabIndex
TabStop ToolTipText
implicit True. Permite schimbarea tipului, mrimii i atributelor fontului. Precizeaz nlimea butonului n twips. Indic distana pn la marginea stng a form-ului, n twips. Stabilete forma cursorului mouseului atunci cnd, la execuie, utilizatorul indic butonul de comand. Precizeaz numele unei imagini grafice de tip icon (fiier de tip .ico) care apare pe buton (valoarea proprietii Style trebuie s fie 1Graphical). Stabilete dac butonul va aprea ca un buton Windows standard numai cu text (valoarea 0-Standard) sau cu text i imagine (valoarea 1Graphical). Specific, printr-o valoarea numeric, poziia n ordinea de parcurgere a controalelor la execuie. Precizeaz dac butonul va obine (True) sau nu (False) focus la parcurgerea cu tasta TAB. Precizeaz textul (explicaii sau indicaii) ce se va afia ntr-o caset de tip tooltip, la indicarea butonului cu ajutorul mouse-ului.
29
Indic distana pn la marginea de sus a form-ului, n twips. Stabilete dac butonul va aprea pe ecran la execuie (True) sau este invizibil (False)=. Precizeaz limea butonului n twips.
Evenimentul ataat unui buton de comand este evenimentul CLICK. Starea fizic a unui buton poate fi: activ sau inactiv. Proprietatea NUME are aceeai semnificaie ca la orice obiect. Proprietatea CAPTION este o proprietate a crei valoare se afieaz pe buton. n general butoanele de comand sunt cele care lanseaz n execuie aciunile majore ale aplicaiei. c) Caseta de text n cazul casetei de text, TEXTBOX, proprietile sunt legate de nume, nume care poate fi dat automat sau poate fi dat de programator. Tabelul 3.4. Principalele proprieti ale unei casete de text [FRI 01], [NAS 00] Proprietate Alignment BackColor Descriere Indic modul de aliniere a textului n caset (stnga, dreapta, centru) Specific culoarea fundalului casetei. Se alege dintr-o list de culori.
Visual Basic Aplicaii n inginerie BorderStyle Enabled Font ForeColor Height Left Locked MaxLength
30
MousePointer MultiLine
PasswordChar
Stabilete stilul fundalului casetei. Stabilete dac caseta este activ (True) sau nu (False). Are valoarea implicit True. Permite schimbarea tipului, mrimii i atributelor fontului. Stabilete culoarea cu care se va scrie textul. Precizeaz nlimea casetei n twips. Indic distana pn la marginea stng a form-ului n twips. Precizeaz dac utilizatorul poate (True) sau nu (False) s editeze textul ce apare n caset. Specific numrul maxim de caractere pe care le poate introduce utilizatorul n caset. Valoarea implicit 0 nseamn numr nelimitat. Stabilete forma cursorului mouseului atunci cnd, la execuie, utilizatorul indic acest control. Permite (True) sau nu (False) introducerea textului pe mai multe lini. La scrierea pe mai multe linii se poate utiliza proprietatea ScrollBars, pentru a permite deplasarea mai facil n caset. Stabilete caracterul care apare repetat n caset atunci cnd utilizatorul introduce o parol.
31
TabStop Text
ToolTipText
Specific prezena barelor de derulare n cazul scrierii textului pe mai multe lini. Specific, printr-o valoare numeric, poziia n ordinea de parcurgere a controalelor la execuie. Precizeaz dac controlul va obine (True) sau nu (False) focus la execuie. Specific textul care se va afia iniial n caset. Acesta poate fi nlocuit sau nu de ctre utilizator la execuie. Precizeaz textul (explicaii sau indicaii) ce se va afia ntr-o caset de tip tooltip la execuie, la indicarea csuei de text cu ajutorul mouse-ului. Indic distana pn la marginea de sus a form-ului n twips. Stabilete dac controlul va aprea pe ecran la execuie (True) sau este invizibil (False). Precizeaz limea casetei n twips.
Coninutul informaiei din cutia de text se regsete n proprietatea TEXT. Restul proprietilor: poziie, dimensiune, funcie sunt aceleai. Asupra csuei de text se poate aciona cu dimensionare, mutare etc. deci aciunile de tip metod sunt legate de dimensionare i mutare.
Visual Basic Aplicaii n inginerie Evenimentul ataat evenimentul: CHANGE. Pot fi: unei csue text
32 este
d) Controale de opiune Casete de validare (Check box) Butoane de opiune (Option Box) Casete cu list (List Box) Casete combinate (Combo Box)
Casetele de validare Dau posibilitatea utilizatorului de a alege una sau mai multe opiuni, afind un marcaj de validare atunci cnd va fi validat. Utilizatorul va valida sau invalida opiunea executnd click. Butoanele de opiune Se utilizeaz n cazul n care este necesar selectarea unei opiuni. Butoanele aezate pe form formeaz un singur grup.
33
Casetele cu list Permit afiarea vertical a unei liste de opiuni din care utilizatorul poate alege una sau mai multe. Tabelul 3.5. Proprietile obiectului List Box [FRI 01], [NAS 00] Proprietate BackColor Columns Forecolor List Multiselect Font Height Left MousePointer Descriere Specific culoarea fundalului casetei. Specific numrul de coloane . Definete culoarea textului. Permite introducerea manual a listei care va fi afiat Precizeaz numrul de elemente . Permite schimbarea tipului, mrimii i atributelor fontului. Precizeaz nlimea butonului n twips. Indic distana pn la marginea stng a form-ului, n twips. Stabilete forma cursorului mouseului atunci cnd, la execuie, utilizatorul indic butonul de comand. Precizeaz numele unei imagini grafice de tip icon (fiier de tip .ico) care apare pe buton (valoarea proprietii Style trebuie s fie 1Graphical). Stabilete dac butonul va aprea ca un buton Windows standard
Picture
Style
34
TabIndex
TabStop
numai cu text (valoarea 0-Standard) sau cu text i imagine (valoarea 1Graphical). Specific, printr-o valoarea numeric, poziia n ordinea de parcurgere a controalelor la execuie. Precizeaz dac butonul va obine (True) sau nu (False) focus la parcurgerea cu tasta TAB.
Exist trei tipuri de module: module formular, avnd extensia .frm, care conin descrieri ale formularelor i controalelor ataate module standard, avnd extensia .bas, ce conin declaraii i proceduri co pot fi utilizate de mai multe module module clas, cu extensia .cls sunt asemntoare cu modulele formular, dar nu posed interfa cu utilizatorul. Se folosesc pentru crearea de noi obiecte. Fiecare modul va conine : partea de declaraii partea de proceduri
35
3.3. Aplicaii
Aplicaia 1. S se proiecteze o interfa care s conin o etichet cu mesajul Studenii anului I de la Facultatea de Inginerie Tehnologic. Culoarea fontului va fi albastr, fontul va fi TNR ,24. Se deschide o nou aplicaie standard exe
36
Figura 3.5. Exemplu de modificare a proprietilor Se seteaz proprietile corespunztoare cerinelor problemei, respectiv se va alege culoarea fontului i tipul fontului Modificarea proprietilor se face direct din fereastra de proprieti, nu prin intermediul programului Se ruleaz aplicaia din meniul Run
37
Figura 3.6. Proiectarea interfeei Aplicaia 2. S se proiecteze o aplicaie cu dou butoane de comand, prin apsarea unuia s se schimbe culoarea textului unei etichete n rou, iar prin apsarea celuilalt s se schimbe culoarea n verde. Se deschide o nou aplicaie Se poziioneaz eticheta i cele dou butoane de comand pe form Se seteaz proprietile corespunztoare pentru cele trei obiecte
38
Figura 3.7. Proiectarea interfeei Se deschide fereastra View Code (click mouse dreapta) Se scrie secvena de cod aferent Private Sub Command1_Click() Label1.ForeColor = vbRed End Sub Private Sub Command2_Click() Label1.ForeColor = vbGreen End Sub Se ruleaz programul
39
Figura 3.8. Rularea aplicaiei Aplicaia 3. S se proiecteze o aplicaie care s cuprind o caset de text i trei butoane de comand, prin care s se formateze Bold sau italic textul din caset. Se deschide o nou aplicaie Se aaz pe form o caset de text i trei butoane de comand Se schimb proprietile aferente celor trei butoane de comand i casetei text Se selecteaz opiunea View Code Se scrie codul pentru cele trei butoane de comand
40
Figura 3.9. Proiectarea interfeei Private Sub anulare_Click() Text1.FontBold = False Text1.FontItalic = False End Sub Private Sub bold_Click() Text1.FontBold = True End Sub Private Sub italic_Click() Text1.FontItalic = True End Sub Se ruleaz aplicaia Se va obine ecranul afiat mai jos
41
Visual Basic Aplicaii n inginerie Capitolul 4 Elemente de limbaj procedural Visual Basic Variabile, constante, operatori, instruciuni
42
Cunotine prealabile Proiectarea interfeei grafice cu utilizatorul Obiecte Visual Basic Plan tematic 4.1. Variabile 4.2. Constante 4.3. Operatori 4.4. Funcii predefinite 4.5. Aplicaii Intrebri obiectiv -Cum se declar variabile i constantele? -Care sunt tipurile de date utilizate n Visual Basic? -Care sunt operatorii ? -Ce funcii predefinite exist?
43
4.1. Variabile
Variabilele sunt locaii de memorie n care se depoziteaz date sau informaii logice ce vor fi prelucrate n timpul execuiei [LUP 01]. Variabilele sunt caracterizate de: nume, tip, domeniu de aciune i durat de aciune. Numele variabilei este atribuit de ctre programator. El trebuie s nceap obligatoriu cu o liter; poate conine litere i cifre dar i liniua de subliniere. Odat atribuit un nume unei variabile, acest nume devine cuvnt rezervat, adresabil n orice secven procedural, att n stnga unei instruciuni de atribuire ct i n partea dreapt a acesteia. Dac se afl n partea stng atunci n variabil se nregistreaz informaia. Dac este n partea dreapt a instruciunii atunci informaia se transmite i particip la calcul. Declararea unei variabile se poate cu una din structurile [FRI 01], [NAS 00], [ANI 03] : Dim <variabil> [(indici)] [As Tip_dat] [,<variabil> [(indici)] [As Tip_dat] Sau Static <variabil> [(indici)] [As Tip_dat] [,<variabil> [(indici)] [As Tip_dat] Sau Public <variabil> [(indici)] [As Tip_dat] [,<variabil> [(indici)] [As Tip_dat]
44
Tipuri de variabile n Visual Basic Variabilele pot fi: variabile elementare; variabile compuse i variabile de tip definit de programator. Tipul unei variabile poate fi declarat: a) explicit n zona de declarare a programului (n zona declarativ); b) forat ntr-o instruciune de atribuire, numele variabilei aprnd pentru prima oar n procedura respectiv i gsindu-se n membrul stng al unei instruciuni de atribuire urmat de un sufix de tip; c) implicit dac numele variabilei apare pentru prima oar n procedur, se gsete n membrul stng al unei operaii de atribuire i nu este urmat de sufix. Tipul variabilei va fi tipul rezultat al membrului drept al instruciunii de atribuire. Tabelul 4.1. Tipuri de date n Visual Basic [FRI 01], [NAS 00], [ANI 03] Tipul Boolean Sufix Descriere Denumit i logic, poate lua doar valorile True sau False. True i False sunt cuvinte rezervate n Visual Basic Valori numerice pozitive, fr zecimale, n intervalul 0-255 Date numerice care stocheaz sume nsoite de semnul monetar, n intervalul -
Byte Currency
45
Date
Double
Integer Long
% &
Object
Single
String
$922,337,203,685,477.5808 $922,337,203,685,477.5807. Semnul monetar este scris automat de ctre Visual Basic. Date calendaristice i timp. Data se ncadreaz n intervalul 1 ianuarie 100 31 decembrie 9999 Valori numerice n intervalul 1.79769313486232E+308 1.79769313486232E+308. Este denumit i dubl precizie Valori numerice fr zecimale, n intervalul -32,768-32,767. Similar cu Integer, dar cu valori n intervalul 2,147,483,648-2,147,483,647. Acest tip consum mai mult memorie. Este denumit i long integer (ntreg lung). Tip special de date, care face referire la obiecte cum sunt controalele sau form-ul. Valori numerice n intervalul 3,402823E+38 to 3.402823E+38. Este denumit i simpl precizie. ir de caractere alfanumerice (maxim 65400 de caractere). Pe lng cifre i litere, se pot
Visual Basic Aplicaii n inginerie include caractere speciale precum ^, %. and @. Dat de orice tip, utilizat atunci cnd tipul datei este incert.
46
Variant
Sufixele sunt semne distinctive care se pun imediat dup numele declarat printr-o operaie de atribuire i foreaz tipul variabilei indiferent de rezultatul sau de tipul membrului drept al instruciunii. Caracterizarea variabilelor dup domeniul de aplicabilitate Visual Basic-ul i mparte variabilele n dou domenii mari [FRI 01], [NAS 00], [ANI 03], i anume: domeniul public i domeniul privat. Declararea unei variabile publice se face n zona declarativ general a aplicaiei sau prin cuvntul rezervat PUBLIC tot ntr-o zon declarativ. Sintaxa de declarare va fi: PUBLIC <nume> sau PUBLIC <nume>, <tip> Variabilele locale se declar n zone declarative ale subprogramelor a cror caracterizare ncepe cu PRIVATE. Diferena ntre aceste dou tipuri de variabile este dat de zona de vizibilitate a lor astfel:
47
variabilele publice sunt apelabile (sunt vzute) n orice parte a aplicaiei; - variabilele private sunt vizibile numai n zonele de program . Caracterizarea variabilelor dup durata lor de via se face prin intermediul declaraiilor de tip dinamic sau static. O variabil declarat ntr-un program cu DIM are durata de via strict legat de perioada de executare a subprogramului, i anume: n momentul lansrii n execuie a subprogramului la ntlnirea declaraiei DIM n memorie se rezerv o zon corespunztoare variabilei i se iniializeaz aceast zon. La ncetarea (la terminarea) executrii procedurii, acea parte de memorie se elibereaz putnd fi folosit de orice alt procedur. Declararea static se face cu ajutorul cuvntului rezervat STATIC i pentru o variabil are urmtoarea aciune: la prima ntlnire a declaraiei STATIC variabilei declarate n acest mod i se ataeaz o zon de memorie care se iniializeaz. La terminarea executrii procedurii, zona respectiv de memorie nu se elibereaz ci pstreaz n continuare ultima valoare a variabilei. De remarcat c acea zon de memorie nu este vizibil din nici o alt procedur inclus. Exemplu 1: Private Sub Command1_Click() Static s As Integer s=s+1 Print Tab(20), "s="; s
Visual Basic Aplicaii n inginerie End Sub La prima apelare va apare 1 (PRINT A : 1); la a doua apelare va apare 2 .a.m.d.
48
Exemplu 2: PRIVATE SUB Ex1 Dim s AS INTEGER s=s+1 PRINT s END SUB
49
Figura 4.3. Rularea aplicaiei Dac aceeai declarare se face cu DIM, orice apelare are ca rezultat valoarea 1. Atenie! Dac n cadrul unei funcii sau proceduri se utilizeaz mai multe variabile, acestea vor fi declarate n mod explicit. Exemplu: Dac se dorete declararea variabilelor a i b de tip integer, atunci se utilizeaz structura: Dim a As Integer, b As Integer aceasta avnd ca efect recunoaterea att a lui a ct i a variabilei b de tip integer
50
Structura Dim a, b As Integer va avea ca efect recunoaterea lui b ca intreg, iar a variabilei a de tip Variant. Pe lng aceaste tipuri de date predefinite, utilizatorul poate s-i declare propriile tipuri de date. Acestea se declar n seciunea General/Declarations cu ajutorul cuvintelor Type i End Type[FRI 01], [NAS 00], [ANI 03] : Type tip Var1 As tip1 Var2 As tip2 ..... END TYPE Apoi se va declara variabila de acest tip cu Dim sau Static. Acest tip de date va fi accesat utilizndu-se notaia cu punct. Exemplu: se definete tipul de date Studenti Type studenti Nr_mat As Integer Nume As String * 20 Prenume As String * 20 Facultate As String * 30 End Type se declar o variabil de tip Studenti Dim a As Studenti se atribuie valori cmpurilor din noua variabil
51
a . Nr_mat = InputBox(Introducei numrul matricol ) a . Nume = InputBox(Introducei numele studentului) a . Prenume = InputBox(Introducei prenumele studentului ) a . Facultatea = InputBox(Introducei numele facultii )
4.2. Constante
Constantele sunt identificatori a cror valoare este cunoscut anterior execuiei programului.Constantele se declar n mod explicit utiliznd sintaxa [NAS 00], [FRI 01], [ANI 03]: Const <numeconstant> [as <tip>] = expresie Exemplu: Const PI As double = 3.14 Const data_admiterii = # 7/7/2005# Const nume = Popa Vasile
4.3. Operatori
1.Operatori matematici a) operatori uzuali: +; -; *; / funcioneaz cu orice fel de date numerice b) operatorul MOD: este un operator care red restul unei operaii de mprire i este un numr ntreg
Visual Basic Aplicaii n inginerie c) operatorul ^ (ridicare la putere) Ex.: 2 ^ 4 = 24 44 ((4^4)^4)^4 44 2.Operatori logici : AND; OR; XOR; NOT
AND A F XOR A F A A F A A F F F F F F A OR A F NOT A F A A A F A F
52
F A
Tabelul 4.2.Utilizarea operatorilor logici Operator Exemplu And If (A > B And (C < D) Or If (A > B) Or (C < D) If Not (strRasp = Da) Descriere Are rezultatul True (adevrat) atunci cnd ambele condiii sunt adevrate Are rezultatul True (adevrat) atunci cnd mcar una dintre condiii este adevrat Are rezultatul True (adevrat) atunci cnd condiia evaluat este fals i invers
Not
53
Tabelul 4.3. Utilizarea operatorilor de comparare[FRI 01] Operator Exemplu > lblVenit.Caption > Estimat Descriere Are rezultatul True (adevrat) atunci cnd valoarea din stnga este strict mai mare (numeric sau alfabetic) dect cea din dreapta Are rezultatul True atunci cnd valoarea din stnga este strict mai mic (numeric sau alfabetic) dect cea din dreapta Are rezultatul True atunci cnd valoarea din stnga este egal sau identic cu cea din dreapta Are rezultatul True atunci cnd valoarea din stnga este mai mare sau egal (numeric sau alfabetic) dect cea din dreapta Are rezultatul True atunci cnd valoarea din stnga este mai mic sau egal
<
Nota = Limita
>=
<=
N <= LblNumar.Caption
54
<>
txtRaspuns.Text <> Da
(numeric sau alfabetic) dect cea din dreapta Are rezultatul True atunci cnd valoarea din stnga este diferit de cea din dreapta
1. Operatori pentru lucrul cu iruri. Exemplu: operatorii & i + concatenare. 2. Ali operatori
execut
IN se vor regsi valori n cadrul unei liste LIKE execut comparare cu caractere de nlocuire BETWEEN se vor regsi valori n cadrul unei game
Abs( expresie_numerica ): returneaza valoarea absoluta a unei expresii numerice, sau a unui numar Asc( sir_caractere ): returneaza codul primului caracter din sirul de caractere specificat
55
Chr( COD_CARACTER ): returneaza caracterul cu codel specificat Date(): Returneaza data calendaristica Day( data_calendaristica ): returneaza numarul zilei din luna Month( data_calendaristica ): returneaza numarul lunei din an Year( data_calendaristica ): returneaza anul CDate( expresie ): face conversia la tipul Date CDbl( expresie ): face conversia la tipul Double Dec( expresie ): face conversia la tipul Decimal CInt( expresie ): face conversia la tipul Integer CLng( expresie ): face conversia la tipul Long CSng( expresie ): face conversia la tipul Single CStr( expresie ): face conversia la tipul String Cos( expresie_numeric ): returneaz cosinus dintr-o expresie numeric sau dintr-un numr. Valoarea returnat este de tip Double. Exp( expresie_numeric ): returneaz valoarea constantei e ridicat la o putere (expresie numeric sau numr).
56
Log( expresie_numeric ): returneaz logaritm natural dintr-un numr sau dintr-o expresie numeric. IsDate( expresie ): returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze este compatibil cu o dat calendaristic. IsEmpty( expresie ): returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze nu conine o valoare. Null este considerat valoare. IsNumeric( expresie ): returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze poate fi evaluat ca numr. IsObject( expresie ): returneaz valoarea adevrat (TRUE) dac identificatorul dintre paranteze este de tip obiect. IsError( expresie ): returneaz valoarea adevrat (TRUE) dac expresia dintre paranteze conine o eroare. Len( ir_caractere/variabil ): returneaz numrul de caractere ale irului de caractere specificat sau numrul de octei necesari pentru a stoca coninutul unei variabile. Space( numr): returneaz numrul de spaii specificate Str(expresie_numeric): convertete rezultatul evalurii expresiei numerice dintre paranteze ntrun ir de caractere.
57
Val(ir_caractere): returneaz rezultatul evalurii irului de caractere specificat, ntr-un numr Mid((ir_caractere, poziie_start[, lungimea])): extrage un ir de caractere dintr-un alt ir de caractere. Funcii de dialog [FRI 01], [ANI 03]
1) INPUT BOX [prompt; title; default; xpos; ypos; helpfile; context) Primul argument este obligatoriu i este cel care transmite invitaia de a introduce un anumit tip de operaie. title parametru text care apare afiat n bara de prezentare a ferestrei Input Box default mesaj text care se afl implicit n cutia de text aferent Input Box xpos; ypos valorile coordonatelor din colul din stnga sus al ferestrei (coordonatele colului din stnga sus al ferestrei Input Box pe ecran). Input Box: TITLE Default prompt sub form de etichet
58
S se introduc de la tastatur valoarea razei unui cerc. Secvena de cod va fi: Private Sub Command1_Click() Dim r As Integer r = InputBox("Introduceti raza cercului", "Raza cercului") End Sub
Figura 4.4.Rularea aplicaiei 2) MSG BOX este o funcie ce se utilizeaz pentru afiarea unor texte.
59
MSG BOX are sintaxa urmtoare: MSG BOX (msg, type, title, helpfile, context) msg expresie ir afiat ca mesaj n caseta dialog; este argument obligatoriu; type expresie numeric ce specific numrul i tipul butoanelor care vor fi afiate title expresie ir ce apare n bara de titlu a casetei de dialog context asigur asistena soft MSG BOX:
TITLE
msg. type
argumentul obligatoriu al MSG BOX i este un mesaj de tip ir de caractere afiat ntr-o cutie de text
buton
MSGBOX afieaz un mesaj ntr-o caset de dialog i prin argumente specific titlul i mesajul casetei preciznd i tipul butoanelor care trebuie afiate pe fereastra casetei. Este o cutie de text prin care se afieaz un rspuns i n acelai timp se ateapt o aciune aferent acelui rspuns. Tabelul 4.4Simbolurile grafice (icon-urile) din funcia MsgBox ()[FRI 01] Valoare 16 Literal predefinit vbCritical Descriere Afieaz icon-ul Critical Message
Visual Basic Aplicaii n inginerie 32 48 64 vbQuestion vbExclamation vbInformation Afieaz icon-ul Warning Query Afieaz icon-ul Warning Message Afieaz icon-ul Information Message
60
Tabelul 4.5.Specificarea butoanelor implicite pentru funcia MsgBox ()[FRI 01] Valoare 0 256 512 768 Literal predefinit vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 Descriere Primul buton este implicit Al doilea buton este implicit Al treilea buton este implicit Al patrulea buton este implicit
Tabelul 4.6. Alte opiuni ce pot fi incluse n argumentul intTip al funciei MsgBox () Valoare 0 Literal predefinit vbApplicationModal Descriere Fereastr modal la nivel de aplicaie: utilizatorul trebuie s
61
4096
vbSystemModal
16384
vbMsgBoxHelpButton
65536
vbMsgBoxSetForeground
524288
vbMsgBoxRight
1048576 vbMsgBoxRtlReading
rspund la mesaj nainte de a putea continua lucrul n aplicaia curent Fereastr modal la nivel de sistem: utilizatorul trebuie s rspund la mesaj nainte de a putea continua lucrul cu orice aplicaie Windows Adaug butonul Help la fereastra MsgBox () astfel se poate ajunge la 4 butoane afiate Specific faptul c fereastra MsgBox () se afieaz pe ecran deasupra oricrei alte ferestre Textul este aliniat la dreapta Textul apare de la dreapta la stnga (interfee n arab sau
Visual Basic Aplicaii n inginerie ebraic) Tabelul 4.7.Butoanele folosite de funcia MsgBox ()[FRI 01] Valoare Literal predefinit 0 vbOKOnly 1 2 3 4 5 vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel Descriere Afieaz doar butonul OK Afieaz butoanele OK i Cancel Afieaz butoanele Abort, Retry i Ignore Afieaz butoanele Yes, No i Cancel Afieaz butoanele Yes i No Afieaz butoanele Retry i Cancel
62
Tabelul 4.8. Valorile returnate de MsgBox () Valoare 1 2 3 4 5 Literal predefinit vbOK vbCancel vbAbort vbRetry vbIgnore Descriere A fost selectat butonul OK A fost selectat butonul Cancel A fost selectat butonul Abort A fost selectat butonul Retry A fost selectat butonul
63
6 7
vbYes vbNo
Exemplu S se afieze un mesaj de interogare a utilizatorului n privina corectitudinii unor date introduse
Visual Basic Aplicaii n inginerie Secvena de cod pentru exemplificarea utilizrii acestei funcii va fi: Private Sub Command1_Click() Dim r As Integer r = MsgBox("Datele introduse sunt corecte? ", vbYesNo + vbQuestion, "ATENTIE") End Sub
64
4.5. Aplicaii
Aplicaia 4. S se determine spaiul parcurs de un vehicul pentru care se cunosc viteza i timpul deplasrii. Se va realiza macheta propus, machet ce cuprinde dou butoane de comand, unul intitulat Calcul, ce va calcula parametrul cerut, cellalt va realiza ieirea din aplicaie Pentru aceasta, se vor poziiona pe form cele dou butoane de comand Pentru fiecare obiect se va tasta F4, pentru vizualizarea ferestrei de proprieti Se vor modifica proprietile obiectelor astfel - form: proprietatea Caption va lua valoarea Aplicaia 1 - proprietatea Forecolor va lua alt valoare - command1: proprietatea Caption va lua valoarea Calcul spaiu
65
Figura 4.6. Proiectarea interfeei aplicaiei se vor ataa secvene de cod pentru butoanele command1 i command2 astfel:
Private Sub Command1_Click() Dim viteza As Double Dim timp As Double Dim spatiu As Double viteza = InputBox("Introducei vehiculului:") timp = InputBox("Introducei vehiculului:")
viteza viteza
Visual Basic Aplicaii n inginerie spatiu = viteza * timp Print Print Print Tab(30); "viteza vehiculului="; viteza Print Tab(30); "durata deplasrii="; timp Print Tab(30); "distana parcurs="; spatiu End Sub
66
Private Sub Command2_Click() End End Sub se va rula programul utiliznd comanda RUN se vor introduce datele cerute de aplicaie, respectiv viteza i durata rezultatul este prezentat n figura urmtoare:
67
Figura 4.8. Afiarea rezultatelor Aplicaia 5. S se determine duritatea Brinell. Datele de intrare sunt fora de apsare, diametrul bilei i diametrul calotei imprimate. HB = 2F (4.1)
D( D D 2 d 2 )
68
Se va realiza macheta propus, machet ce cuprinde dou butoane de comand, unul intitulat Calcul, ce va calcula parametrul cerut, cellalt va realiza ieirea din aplicaie
Figura 4.9 Proiectarea interfeei Pentru fiecare obiect se va tasta F4, pentru vizualizarea ferestrei de proprieti Se vor modifica proprietile obiectelor astfel - form: proprietatea Caption va lua valoarea Aplicaia 1 - proprietatea Forecolor va lua alt valoare, la alegere - command1: proprietatea Caption va lua valoarea Calcul spaiu, iar proprietatea Name va lua valoarea Calcul,
69
command2: proprietatea Caption va lua valoarea Ieire, iar proprietatea Name va lua valoarea Ieire
Figura 4.10. Modificarea proprietilor se vor ataa secvene de cod pentru butoanele command1 i command2 astfel:
Private Sub Calcul_Click() Const pi = 3.14 Dim f As Double Dim d As Double Dim d1 As Double Dim hb As Double f = InputBox("Introduceti forta de apsare:")
Visual Basic Aplicaii n inginerie d = InputBox("Introduceti diametrul bilei:") d1 = InputBox("Introduceti diametrul urmei:") hb = 2 * f / pi / d / (d - Sqr((d * d) - (d1 * d1))) Print Print Print Tab(30); "forta de apsare="; f Print Tab(30); "diametrul bilei="; d Print Tab(30); "diametrul urmei="; d1 Print Print Tab(30); "Duritatea Brinell calculat HB="; d End Sub Private Sub iesire_Click() End End Sub
70
71
se va rula programul utiliznd comanda RUN se vor introduce datele cerute de aplicaie, respectiv viteza i durata Rezultatul este prezentat n figura urmtoare:
Figura 4.12. Afiarea rezultatelor Aplicaia 6. S se determine duritatea Vickers, avnd ca date de intrare F (fora de apsare) i d (diagonala ptratului). Relaia de calcul va fi:
HV = 0,189 * F
2
(4.2)
72
se vor urma aceiai pai ca la aplicaiile precedente pentru a se realiza forma i butoanele de comand se va scrie codul :
Private Sub Command1_Click() Dim f As Double Dim d As Double Dim hv As Double f = InputBox("Introduceti forta de apsare:") d = InputBox("Introduceti diagonala ptratului:") hv = 0.189 * f / d / d Print Print Print Tab(30); "forta de apsare="; f Print Tab(30); "diagonala ptratului="; d Print Print Tab(30); "Duritatea Vickers calculat HV="; hv; "kgf/mm^2" End Sub Private Sub Command2_Click() End End Sub se va rula aplicaia
73
Figura 4.13. Afiarea rezultatelor Aplicaia 7. S se determine lucrul mecanic al unui arc solicitat la ntindere. Datele de intrare sunt: - constanta elastic c=20 - alungirea final - alungirea iniial Relaia de calcul este [BOD 97] (4.3):
Lucrul _ mecanic alungirea cons tan ta _ elastic ( alungirea 2 _ initiala ) = _ final
74
se vor urma aceiai pai ca la aplicaiile precedente pentru a se realiza forma i butoanele de comand se va defini obiectul Label; se vor modifica proprietile Caption ( cu valoarea Calculul lucrului mecanic) i Autosize(cu valoarea True)
Private Sub Command1_Click() Const c = 20 Dim l As Double Dim di As Double Dim df As Double di = InputBox("Introduceti alungirea initiala:")
Visual Basic Aplicaii n inginerie df = InputBox("Introduceti alungirea finala:") l = c / 2 * (di * df) Print Print Print Print Print Tab(30); "alungirea initiala="; di Print Tab(30); "alungirea finala="; df Print Print Tab(30); "Lucrul mecanic calculat="; l End Sub Private Sub iesire_Click() End End Sub se va rula aplicaia
75
76
S se determine duritatea unui material dup una din metodele Vickers sau Brinell. Se vor utiliza butoane de opiune. Se deschide o nou form Se poziioneaz dou butoane de opiune, unul pentru duritatea Vickers, cellalt pentru duritatea Brinell Se deschide fereastra de proprieti a butoanelor de opiune, utiliznd tasta F4 Se modific proprietile Caption (cu valoarea Duritatea Brinell, respectiv duritatea Vickers) Se scrie codul aferent celor dou butoane de opiune
Visual Basic Aplicaii n inginerie Private Sub Option1_Click() Const pi = 3.14 Dim f As Double Dim d As Double Dim d1 As Double Dim hb As Double f = InputBox("Introduceti forta de apsare:") d = InputBox("Introduceti diametrul bilei:") d1 = InputBox("Introduceti diametrul urmei:") hb = 2 * f / pi / d / (d - Sqr((d * d) - (d1 * d1))) Print Print Print Print Print Tab(30); "forta de apsare="; f Print Tab(30); "diametrul bilei="; d Print Tab(30); "diametrul urmei="; d1 Print Print Tab(30); "Duritatea Brinell calculat HB="; d End Sub Private Sub Option2_Click() Dim f As Double Dim d As Double Dim hv As Double f = InputBox("Introduceti forta de apsare:") d = InputBox("Introduceti diagonala ptratului:") hv = 0.189 * f / d / d Print Print Print Tab(30); "forta de apsare="; f Print Tab(30); "diagonala ptratului="; d
77
78
Print Print Tab(30); "Duritatea Vickers calculat HV="; hv; "kgf/mm^2" End Sub
Figura 4.17.Afiarea rezultatelor Aplicaia 9. S se determine momentele de inerie n raport cu cele trei axe principale pentru un paralelipiped din font cu densitatea r=7800 kg/m3 i avnd dimensiunile a=0,5 m, b=0,3 m i c=0,04 m.
79
I1 =
I2 =
1 rabc(b 2 + c 2 ) 12
1 rabc(a 2 + c 2 ) 12
(4.4)
(4.5)
1 rabc(a 2 + b 2 ) (4.6) 12 Se va realiza macheta propus, machet ce cuprinde dou butoane de comand, unul intitulat Calcul, ce va calcula parametrul cerut, cellalt va realiza ieirea din aplicaie se va defini obiectul Label; se vor modifica proprietile Caption ( cu valoarea Calculul lucrului mecanic), Autosize(cu valoarea True), Backcolor (la alegere) i Forecolor (la alegere). se vor aeza pe form trei butoane de opiune, pentru determinarea fiecrui moment de inerie I3 =
Private Sub Check1_Click() Const r = 7800 Dim a As Double Dim b As Double Dim c As Double Dim l As Double a = InputBox("Introduceti dimensiunea a:") b = InputBox("Introduceti dimensiunea b:") c = InputBox("Introduceti dimensiunea c:") l = 1 / 12 * r * a * b * c * (b ^ 2 + c ^ 2)
80
81
se vor aeza trei casete de text, la care se vor modifica proprietile Text, tergndu-se coninutul prin selecia uneia dintre cele trei opiuni se va afia momentul de inerie corespunztor uneia dintre cele trei axe se va scrie codul se va rula aplicaia
82
83
S se determine temperatura dezvoltat n zona de achiere la burghiere. Datele de intrare sunt: C-constant ce depinde de materialul de prelucrat s-avansul burghiului [mm/rot] D-diametrul burghiului [mm] X,y-exponeni determinai experimental Coeficienii C,x i y vor fi dai sub form de constant, iar D i s vor fi citii de la tastatur Relaia de calcul va fi:[PIC92], [LUP00]
= Cs x D y
(4.7)
se deschide o nou aplicaie se poziioneaz pe form trei casete de text i trei etichete se poziioneaz dou butoane de comand datele de la tastatur nu vor mai fi citite cu ajutorul funciei InputBox, ci vor fi citite ca i coninut al casetelor de text se vor modifica proprietile etichetelor : proprietatea Caption ( cu afirile aferente), WordWrap cu valoarea True i Autosize ( cu valoarea True) se vor modifica proprietile casetelor de text referitoare la culoarea, dimensiunea i fontul folosit
84
Figura 4.20. Modificarea proprietilor se va modifica proprietatea Text prin tergerea coninutului se vor modifica proprietile Caption ale butoanelor de comand se va ataa cod butoanelor de comand
Private Sub Command1_Click() Dim d As Integer Dim s As Double Const c = 400 Const x = 0.8 Const y = 0.9 d = Val(Text1.Text)
85
Figura 4.21. Proiectarea interfeei se va rula aplicaia se vor introduce valorile d=15mm, s=0.2mm/rot
86
Figura 4.22. Afiarea rezultatelor Observaie: Aceast aplicaie ofer alt posibilitate de a introduce datele, utiliznd proprietatea text a unei cutii de text. De asemeni, la afiarea datelor se va folosi tot un TEXTBOX.
Aplicaia 11.
O rachet cu masa m=100 kg va fi accelerat la prima vitez cosmic v=8000 m/s. Viteza gazelor de ardere va fi de 3000 m/s, iar timpul de ardere t=120s. S se determine ce mas de combustibil este necesar pentru ca racheta s ating viteza v.
87
m c = m g (
1)
(4.8)
se proiecteaz interfaa cu utilizatorul; aceasta va conine trei etichete i trei casete de text
Figura 4.23. Proiectarea interfeei cu utilizatorul se modific proprietile casetelor de text i ale etichetelor se aaz pe form un buton de comand se ataeaz butonului de comand secvena de cod care urmeaz
88
89
Se plaseaz ntr-un ascensor un pendul matematic i un pendul elastic avnd constanta elastic k=300 N/m i masa m=1 kg. Se deplaseaz ascensorul pe vertical cu acceleraia constant de 4m/s2. S se determine care dintre cele dou pendule are perioada oscilatorie mai mare. Perioada pendulului matematic este [BOD97]:
Tm = 2
1 g+a
(4.9)
Te = 2
m k
(4.10)
se aaz pe form o caset de text creia i vor fi modificate proprietile Text, Font, Forecolor i Multiline pentru o mai bun lizibilitate a mesajului pe care l va conine se poziioneaz un buton de comand ce va avea rolul de a declana codul de determinare a pendulului cu cea mai mare perioad
90
91
Command1_Click() k = 300 m=1 a=4 g = 9.8 tm = 2 * 3.14 * Sqr(1 / (g + a)) te = 2 * 3.14 * Sqr(m / k) If tm > te Then Text1.Text = "Perioada pendulului matematic este mai mare" Else Text1.Text = "Perioada pendulului elastic este mai mare" End If End Sub
92
se ruleaz aplicaia se acioneaz click asupra butonului de comand rezultatul va fi cel prezentat n figura anterioar
Aplicaia 13.
Se plaseaz ntr-un ascensor un pendul matematic i un pendul elastic avnd constanta elastic k=300 N/m i masa m=1 kg. Se deplaseaz ascensorul pe vertical cu acceleraia constant de 4m/s2. Dac perioada pendulului matematic este mai mare s se afieze un mesaj. Se realizeaz o machet cu un buton de comand Se modific proprietile butonului de comand (proprietatea Caption ) Se ataeaz cod butonului de comand
Private Sub Command1_Click() k = 300 m=1 a=4 g = 9.8 tm = 2 * 3.14 * Sqr(1 / (g + a)) te = 2 * 3.14 * Sqr(m / k) If tm > te Then MsgBox (" Ati obtinut rezultatul dorit") End Sub Sau Private Sub Command1_Click()
93
94
Observaie: S-a exemplificat utilizarea structurii condiionale If n dou variante. Afiarea rezultatelor s-a realizat cu ajutorul funciei Msg Box
95
Cunotine prealabile Elementele limbajului Visual Basic Operatori de comparare Combinarea condiiilor cu ajutorul operatorilor logici Plan tematic 5.1. Structuri de control alternative 5.2. Structuri repetitive 5.3. Aplicaii Intrebri obiectiv - Ce sunt structurile de control? - Care sunt structurile alternative n Visual Basic? -Care sunt structurile repetitive ale limbajului?
96
Limbajul procedural permite o programare structurat. Orice algoritm tradus n limbaj procedural poate fi descompus n cele trei structuri fundamentale: - atribuire; - structur de control decizional; - structur de control repetitiv.. Atribuirea se realizeaz prin intermediul semnului = i are forma VARIABIL = EXPRESIE. Expresia poate fi: o variabil; numele unei funcii sau una ori mai multe operaii. Dac numele variabilei receptoare este definit anterior atunci tipul expresiei din dreapta trebuie s aib ca domeniu un subdomeniu al tipului variabilei din stnga.
Instruciune 1
Instruciune 2
Instruciune n
97
Dac variabila din partea stng se definete implicit n cadrul acestei operaii de atribuire atunci tipul este dat de tipul rezultatului. Dac se face n cadrul operaiei de atribuire o declarare forat a tipului atunci tipul rmne cel declarat.
Instruciune 1
Ea este realizat prin intermediul instruciunii IF sau prin intermediul instruciunii CASE. 1) Instruciunea IF are trei forme: a) IF cu ramur vid; b) IF uzual cu dou ramuri; c) IF-uri multiple sau imbricate.
98
a) IF-ul cu ramur vid este instruciunea IF care are activ numai o singur ramur i este obligatoriu ca aceast ramur s fie ramura THEN. IF-ul cu ramur vid are dou forme: 1) IF <cond> then instruciune Aceast form se utilizeaz dac instruciune execut n mod obligatoriu o singur instruciune . Aceast form de IF ncape pe un singur rnd. 2) IF <cond> then instruciune 1 End If n acest caz instruciune 1 poate cuprinde una sau mai multe instruciuni i n mod obligatoriu instruciune 1 se scrie pe alt rnd dect IF-ul.
Exemplu:
S se calculeze sumele ce vor trebui pltite pentru asigurarea autovehiculelor n funcie de capacitatea cilindric a lor . Se vor utiliza ambele variante de IF.
Private Sub Command1_Click() Dim n As Integer Dim suma As Double n = InputBox("Introducei capacitatea cilindric") If n <= 800 Then suma = 35 If n > 800 And n <= 1200 Then suma = 40 If n > 1200 And n <= 1600 Then suma = 45 If n > 1600 Then suma = 60 End If
99
b) IF-ul uzual cu dou ramuri IF <cond> then instruciune 1 Else instruciune 2 END IF. n acest caz instruciune 1 ca de altfel i instruciune 2 pot fi formate din cte o singur instruciune sau pot cuprinde secvene de instruciuni. Fiecare dintre instruciuni se scrie pe cte un rnd.
Modul de aciune: se testeaz condiia i dac aceasta este ndeplinit se execut instruciune 1 i se trece dup END IF (se pred controlul instruciunii urmtoare de dup END IF). Dac aceast condiie nu este ndeplinit atunci se execut instruciune 2 i se pred controlul instruciunii de dup END IF.
c) IF-uri multiple (imbricate) IF <cond 1> THEN instruciune 1 ELSE IF <cond 2> THEN instruciune 2 ELSE IF ELSE instruciune (n+1)
100
Ca regul general se recomand a nu se folosi mai mult de 7 imbricri (7 IF-uri unul n altul). Deoarece IF-ul consum foarte mult timp, se recomand ca cea mai des ndeplinit condiie s fie trecut prima. n sintaxa IF-urilor imbricate ultimul ELSE este simplu (nu mai exist dup ELSE nici un alt IF).
Exemplu S se rezolve problema precedent utiliznduse varianta structurii cu If-uri imbricate.
101
Private Sub Command1_Click() Dim n As Integer Dim suma As Double n = InputBox("Introducei capacitatea cilindric") If n <= 800 Then suma = 35 ElseIf n <= 1200 Then suma = 40 ElseIf n > 1200 And n <= 1600 Then suma = 45 Else: suma = 60 End If MsgBox "suma ce va fi achitat: " & suma End Sub 2) SELECT CASE este instruciunea ce permite selecia multipl. Formatul ei este: Select Case <expresie> Case <valoare1> <bloc de instruciuni> ... [Case <valoaren> <bloc de instruciuni>] [Case Else <bloc de isntruciuni>] End Select Select Case <expresie> Case Is <relaie>
102
Valoare (1,2,...,n) poate fi valoarea unei variabile, a unei expresii ori o list de expresii.
Exemplu S se rezolve problema precedent utiliznduse varianta structurii CASE. Private Sub Command1_Click() Dim n As Integer
103
capacitatea
104
Condiie Fals
Modul de aciune: se testeaz condiia i dac aceasta este ndeplinit se execut instruciune i se testeaz iari condiia. n momentul n care condiia nu mai este ndeplinit controlul se pred dup WEND. Aceast instruciune poate s nu se execute niciodat. Variabila testat n condiie trebuie s fie definit i iniializat anterior instruciunii WHILE.
105
Instruciunea din corpul lui WHILE trebuie s conin o aciune care s modifice (s altereze) valoarea variabilei testate n condiie.
2)Secvena de instruciuni DO..LOOP n cadrul acestui gen de instruciuni se ntlnesc patru tipuri: a) DO WHILE <cond> instruciune LOOP
106
Aciune: se testeaz condiia care dac nu este ndeplinit se execut instruciunea i se revine la testarea condiiei. Dac aceast condiie este ndeplinit atunci se trece la instruciunea de dup LOOP. Pentru variabila testat n condiie este obligatoriu ca ea s fie definit i iniializat anterior instruciunii (anterior lui DO). Este o instruciune repetitiv cu test final inversat.
d) DO
instruciune LOOP UNTIL <cond>
107
contor variabila ce controleaz numrul de execuii al ciclului val-start valoarea iniial a variabilei contor val-stop valoarea final a variabilei contor step indic valoarea cu care se mrete sau se micoreaz variabila contor dup fiecare execuie a instruciunii. Dac Step lipsete, valoarea implicit a pasului de ciclare este egalat cu 1.
Aciune: a) se egaleaz variabila contor cu valoarea iniial (val-start ); b) se testeaz dac valoarea din contor este mai mare dect valoarea final (sfrit) i dac da se iese din ciclu, dac nu atunci se execut secvena de instruciune; c) se adaug la valoarea contorului valoarea pasului (cnd aceasta exist) sau valoarea 1 n lipsa acestuia i se repet ciclul de la punctul b. Valoarea pasului (STEP) nu este obligatoriu 1 i poate avea chiar valori negative.
5.3. Aplicaii
Aplicaia 11. 8
S se realizeze o aplicaie de selecie a unui rspuns corect, dndu-se patru variante de rspuns.
NOTA 8 1. Ecuatia de gradul II 2. Mediile aritmetica, geometrica si armonica a 3 numere 3. Maximul si minimul a 3 numere
108
Se adaug pe form obiectele conform machetei: 5 etichete, un buton de comand i o caset text Se modific proprietile obiectelor pentru a mri lizibilitatea Se adaug cod butonului de comand Pentru introducerea datelor se va utiliza coninutul unei casete de text Se va afia mesajul cu ajutorul funciei MsgBox Se va utiliza o structur alternativ de tip CASE
109
110
S se rezolve aceeai aplicaie utilizndu-se o structur IF: Se va utiliza aceeai interfa cu utilizatorul Se va scrie cod ataat butonului de comand Pentru introducerea datelor se va utiliza coninutul unei casete de text Se va afia mesajul cu ajutorul funciei MsgBox Se va rula aplicaia
Private Sub Command1_Click() Dim v As Integer v = Val(Text1.Text) If v = 1 Then MsgBox ("Rspuns gresit") ElseIf v = 2 Then MsgBox ("Rspuns gresit") ElseIf v = 3 Then MsgBox ("Rspuns corect") Else MsgBox ("Rspuns gresit") End If End Sub
111
S se determine fora de frecare tiind ca aceasta are loc ntre trei perechi de suprafee ( oel pe oel, oel pe ghea, cauciuc pe asfalt) . Datele de intrare sunt fora de frecare i coeficienii de frecare [LUP 01] .
F = *N
oel/oel=0,12 oel/ghea=0,014 cauciuc/asfalt =0,85
(5.1)
112
Private Sub Command1_Click() Dim v As Integer v = Val(Text2.Text) Select Case v Case 1 miu = 0.12 Case 2 miu = 0.014
113
Figura 5.7. Introducerea datelor de intrare se va rula aplicaia pentru citirea datelor de la tastatur se utilizeaz funcia InputBox
114
Folosindu-se structuri compuse, s se determine fora de frecare n condiiile alegerii dintre frecarea static i frecarea de alunecare. Coeficienii de frecare static sunt: oel/oel=0,15 oel/ghea=0,027 cauciuc/asfalt =0,9 Coeficienii de frecare de alunecare sunt cei de la aplicaia precedent.
115
116
117
S se calculeze, utiliznd instruciunea repetitiv FOR , suma primelor N numere naturale, numrul N fiind dat de intrare. Se proiecteaz o interfa coninnd un buton de comand Se ataeaz codul
Private Sub Command1_Click() Dim n As Integer s=0 n = InputBox("Introduceti valoarea N=") For i = 1 To n s=s+i Next s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
118
S se calculeze , utiliznd instruciunea repetitiv FOR, produsul primelor N numere naturale . Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent
Figura 5.12. Introducerea datelor Se scrie codul aferent aciunii asupra butonului de comand
119
Se ruleaz aplicaia
120
Aplicaia 17.
10
S se calculeze , utiliznd instruciunea repetitiv FOR, produsul primelor n numere naturale pare. Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent Se scrie codul
Private Sub Command1_Click() Dim n As Integer p=1 n = InputBox("Introduceti valoarea N=") For i = 1 To n p=p*i*2 Next p = MsgBox(p, vbOKOnly, "Produsul calculat este") End Sub
Se ruleaz aplicaia
121
S se calculeze , utiliznd instruciunea repetitiv FOR, produsul primelor n numere naturale impare. Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent Se scrie codul
Private Sub Command1_Click() Dim n As Integer p=1 n = InputBox("Introduceti valoarea N=") For i = 1 To n p = p * (i * 2 - 1) Next p = MsgBox(p, vbOKOnly, "Produsul calculat este") End Sub
Se ruleaz aplicaia
122
S se calculeze , utiliznd instruciunea repetitiv FOR, suma primelor n numere naturale impare. Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent Se scrie codul Private Sub Command1_Click() Dim n As Integer s=0 n = InputBox("Introduceti valoarea N=") For i = 1 To n s = s + (i * 2 - 1) Next s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
123
S se calculeze , utiliznd instruciunea repetitiv FOR, suma primelor n numere naturale pare. Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent Se scrie codul
Private Sub Command1_Click() Dim n As Integer s=0 n = InputBox("Introduceti valoarea N=") For i = 1 To n s = s +i * 2 Next s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
124
S se calculeze , utiliznd instruciunea repetitiv FOR, suma primelor n numere naturale mai mari dect un numr A. Se realizeaz interfaa cu utilizatorul ca la aplicaia precedent Se scrie codul Private Sub Command1_Click() Dim n As Integer n = InputBox("Introduceti valoarea N=") a = InputBox("Introduceti valoarea A=") s=0 For i = 1 To n s=s+i+a Next s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
125
S se evalueze rspunsul la ntrebarea Care dintre urmtoarele proprieti nu este caracteristic lichidelor? Variantele de rspuns sunt: 1. Curgerea laminat 2. Curgerea turbulent 3. Presiunea 4. Compresibilitatea Pentru fiecare rspuns incorect se vor scdea dou puncte din not. Se poziioneaz pe form urmtoarele obiecte: o etichet (Label) creia i se vor schimba proprietile Caption ( cu mesajul dorit) i Wordwrap (True); o caset de tip list, unde la proprietatea List se vor scrie cele patru opiuni; un buton de comand Se vor introduce datele privind rspunsul cu ajutorul funciei InputBox Se vor afia notele utiliznd funcia MsgBox Pentru determinarea notei obinute se alege structura repetitiv While..Wend Codul va fi
Private Sub Command1_Click() Dim raspuns As Integer raspuns = InputBox("Alegeti o variant de raspuns:") i=0
126
While raspuns <> 4 raspuns = InputBox("Alegeti o variant de raspuns:") i=i+2 Wend nota = 10 - i nota = MsgBox(nota, vbOKOnly, "Nota dvs. este:") End Sub
Se ruleaz aplicaia
127
S se determine diferena dintre consumul de combustibil normat i cel efectiv pe marca de main. Se realizeaz macheta urmtoare, care va conine un buton de comand intitulat Diferene Se tasteaz codul
Private Sub Command1_Click() Dim tip As String Dim conse As Double Dim consn As Double
128
Dim rasp As String * 2 rasp = "DA" Cls Print Tab(7); " Situatia diferentei dintre Ce si Cn" Print Print Tab(10); "TIP"; Tab(20); "Consum normat"; Tab(40); "Consum efectiv"; Tab(60); "Diferenta" Print String(60, "_") While UCase(rasp) = "DA" tip = InputBox("Marca automobilului") consn = InputBox("Consum normat") conse = InputBox("Consum efectiv") Dif = consn - conse Print Print Tab(10); tip; Tab(20); consn; Tab(40); conse; Tab(60); Dif Print Print String(60, "_"); rasp = InputBox("Mai continuati?") Wend End
Observaie: Afiarea datelor cerute se va realiza utiliznd comanda Print. Pentru a introduce mai multe date, se interoghez utilizatorul n privina continurii aciunii, folosind MsgBox
129
S se calculeze , utiliznd instruciunea repetitiv While... Wend, suma primelor n numere naturale . Se realizeaz interfaa cu utilizatorul ce va conine un buton de comand poziionat pe o form Se modific proprietatea Caption a butonului de comand dndu-i-se valoarea Calculul sumei primelor N numere naturale Se scrie codul
130
Dim n As Integer s=0 n = InputBox("Introduceti valoarea N=") While i <= n s=s+i i=i+1 Wend s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
Se ruleaz aplicaia
Aplicaia 25.
S se calculeze , utiliznd instruciunea repetitiv Do While..Loop , produsul primelor n numere naturale . Se realizeaz interfaa cu utilizatorul ce va conine un buton de comand poziionat pe o form Se modific proprietatea Caption a butonului de comand dndu-i-se valoarea Calculul produsului primelor N numere naturale Se scrie codul
131
n = InputBox("Introduceti valoarea N=") i=1 Do While i <= n p=p*i i=i+1 Loop p = MsgBox(p, vbOKOnly, "Produsul calculat este") End
Se ruleaz aplicaia
Aplicaia 26.
S se calculeze , utiliznd instruciunea repetitiv Do Until..Loop , produsul primelor n numere naturale . Se realizeaz interfaa cu utilizatorul ce va conine un buton de comand poziionat pe o form Se modific proprietatea Caption a butonului de comand dndu-i-se valoarea Calculul produsului primelor N numere naturale Se scrie codul
Private Sub Command1_Click() Dim n As Integer p=1 n = InputBox("Introduceti valoarea N=") i=1 Do Until i > n p=p*i
132
Se ruleaz aplicaia
Aplicaia 27.
S se calculeze , utiliznd instruciunea repetitiv Do..Loop Until, suma primelor n numere naturale . Se realizeaz interfaa cu utilizatorul ce va conine un buton de comand poziionat pe o form Se modific proprietatea Caption a butonului de comand dndu-i-se valoarea Calculul sumei primelor N numere naturale Se scrie codul
Private Sub Command1_Click() Dim n As Integer s=0 n = InputBox("Introduceti valoarea N=") Do s=s+i i=i+1 Loop Until i > n s = MsgBox(s, vbOKOnly, "Suma calculat este") End Sub
133
S se calculeze , utiliznd instruciunea repetitiv Do..Loop While, suma primelor n numere naturale . Se realizeaz interfaa cu utilizatorul ce va conine un buton de comand poziionat pe o form Se modific proprietatea Caption a butonului de comand dndu-i-se valoarea Calculul produsului primelor N numere naturale Se scrie codul
Private Sub Command1_Click() Dim n As Integer p=1 n = InputBox("Introduceti valoarea N=") i=1 Do
134
p=p*i i=i+1 Loop While i <= n p = MsgBox(p, vbOKOnly, "Produsul calculat este") End Sub
10
n funcie de materialul din care este construit un perete (beton, crmid, lemn), temperatura interioar Ti, temperatura exterioar Te , grosimea peretelui l i conductivitatea termic , s se determine fluxul termic.
135
136
optiune = InputBox("introduceti materialul ") l = InputBox("introduceti ltimea peretelui ") ti = InputBox("introduceti temperatura interioar ") te = InputBox("introduceti temperatura exterioar ") Select Case optiune Case 1 perete = beton Case 2 perete = caramida Case 3 perete = lemn End Select Select Case perete Case beton j = 2.1 / l * (ti - te) Case caramida j = 0.5 / l * (ti - te) Case lemn j = 0.15 / l * (ti - te) End Select v = MsgBox(j, vbExclamation, "Fluxul termic este:") End Sub
137
S se determine elementul maxim i elementul minim dintr-un ir de valori introduse de la tastatur. Se va ataa cod unui buton de comand Se iniializeaz o variabil de tip sir Pentru citirea datelor de la tastatur se utilizeaz o instruciune repetitiv For..next Se vor iniializa valorile maxime i minime cu primul element al irului Se ruleaz aplicaia
138
Private Sub Command1_Click() Dim sir(1 To 5) As Integer For i = 1 To 5 sir(i) = InputBox("Introduceti elementul & i & al sirului", i) Next i Max = sir(1) Min = sir(1) For i = 1 To 5 If sir(i) > Max Then Max = sir(i) If sir(i) < Min Then Min = sir(i) Next i MsgBox "Maximul sirului este" & Max & " Minimul sirului este :" & Min End Sub
139
S se determine diametrul standardizat al unui ax dintr-un ir de valori. Valoarea calculat va fi rotunjit, alegndu-se diametrul imediat superior. Pentru introducerea diametrelor standardizate va fi declarat o variabil de tip ir Pentru parcurgerea irului n vederea introducerii diametrelor standardizate i a determinrii limitelor n care se ncadreaz diametrul rezultat din calcule se vor folosi instruciuni repetitive For...Next
140
Private Sub Command1_Click() Dim sir(1 To 10) As Integer Dim diametru As Double For i = 1 To 10 sir(i) = InputBox("Introduceti diametrul standardizat " & i) Next i diametru = InputBox("INTRODUCETI DIAMETRUL CALCULAT ") For i = 1 To 9 If (diametru > sir(i)) And (diametru < sir(i + 1)) Then diametru = sir(i + 1) End If Next i MsgBox "DIAMETRUL STANDARDIZAT ALES ESTE: " & diametru End Sub
141
S se determine diametrul standardizat al unui ax dintrun ir de valori. Valoarea calculat va fi rotunjit, alegndu-se diametrul imediat superior. Fa de aplicaia precedent, valorile standardizate vor fi afiate sub forma unei liste utiliznd obiectul ListBox. Se proiecteaz interfaa cu utilizatorul. Aceasta va conine un buton de comand la care se va modifica proprietatea Caption (Cu valoarea Alegerea diametrului standardizat) Pe interfa se plaseaz o etichet cu proprietaea Caption Valorile standardizate ale diametrului Se plaseaz un obiect Textbox care la proprietatea List va avea introdus lista cu valorile standardizate. Se ataeaz codul
Private Sub Command1_Click() Dim diametru As Double diametru = InputBox("INTRODUCETI DIAMETRUL CALCULAT ") For i = 1 To 5 If (diametru > Val(List1.List(i))) And (diametru < Val(List1.List(i + 1))) Then diametru = List1.List(i + 1) End If Next i MsgBox DIAMETRUL ESTE: & diametru End Sub STANDARDIZAT ALES
142
143
S se determine suma elementelor unei matrici. Se proiecteaz o interfa cu o etichet i dou butoane de comand, unul pentru calculul sumei elementelor matricii, cellalt pentru ieirea din aplicaie Se modific proprietile aferente fiecrui obiect Se scriu codurile ataate celor dou butoane de comand
144
Dim n As Integer Dim m(5, 5) As Integer n = InputBox(" Introduceti numrul de linii si coloane:") For i = 1 To n For j = 1 To n m(i, j) = InputBox("Elementul [" & i & "," & j & "]=") Sum = Sum + m(i, j) Next j Next i MsgBox "SUMA ELEMENTELOR MATRICII ESTE : " & Sum End Sub Private Sub Command2_Click() End End Sub
145
146
S se determine numrul de dini z al unei frezei n funcie de diametrul prii de fixare d. [LUP 00]
z = kz * q * d
(5.3)
147
Tipul frezei
Material
Kz
Oel rapid Carbur metalic Oel rapid Carbur metalic Oel rapid Carbur metalic
3 5 4
Se vor afia toate cele ase variante. n seciunea General a unui modul se va defini tipul de date freza.
148
Private Sub Command1_Click() Dim lista(1 To 6) As freza Dim i As Integer Dim d As Double Dim z As Integer d = InputBox(" Introduceti diametrul prtii de fixare") For i = 1 To 6 lista(i).tip = InputBox("Introduceti tipul frezei " & i) lista(i).material = InputBox("Introduceti materialul frezei " & i) lista(i).kz = InputBox("Introduceti kz pentru freza" &i) lista(i).q = InputBox("Introduceti q pentru freza " & i) Next i For i = 1 To 6 z = Round(lista(i).kz * Sqr(lista(i).q * d)) Print Print Print Tab(20); "Numrul de dinti al frezei" & i & " este z=" & z Next i End Sub
149
150
Cunotine prealabile Elementele limbajului Visual Basic Structuri de control Plan tematic 1. Proceduri de tip funcie 2.Proceduri standard 4. Aplicaii Intrebri obiectiv - Cum se elaboreaz aplicaiile utiliznd programarea modular? - Cum se definesc procedurile? - Cum se apeleaz procedurile?
Cuvinte-cheie - funcii definite de utilizator apelarea funciilor -proceduri de tip proprietate -apelarea procedurilor
151
Procedurile de tip funcie au structura uzual a unui program cuprins ntre declaraiile: Sintaxa unei funcii este urmtoarea [FRI 01], [NAS 00], [ANI 03]:
152
[Private|Public] Function nume_funcie [([ByRef|ByVal] param_1 as tip_date , ....)] [as tip_date] [instruciuni] [nume_funcie = expresie] ... [Exit Function] [instruciuni] [nume_funcie = expresie] End Function Unde:
Exit Function permite ieirea forat dintr-o funcie, nume_funcie = expresie permite asocierea unui rezultat numelui funciei.
ntre Function i End Function se afl zona declarativ a funciei n care se declar variabile locale i zona activ a funciei, respectiv cea care comand aciunea. Printre instruciunile din zona activ exist o instruciune de tip atribuire care este obligatorie. Aceast instruciune este de forma:
NUME_FUNCIE=expresie
153
Acest lucru nseamn c nume_funcie este att denumirea procedurii de tip funcie ct i numele variabilei prin intermediul creia se realizeaz transferul implicit de informaie ntre funcie i programul general. Tipul acestei variabile este implicit variant n lipsa unei declaraii care s foreze tipul. Apelarea unei funcii se face n afara ei prin nume_funcie urmat n parantez de lista parametrilor actuali, nume situat obligatoriu n partea dreapt a unei instruciuni de atribuire. Dac funcia nu are parametri, prezena parantezelor dup nume_funcie este obligatorie. Printre instruciunile dintre declaraiile de nceput i sfrit ale funciei poate s existe i o instruciune de ieire forat din funcie, instruciune de tip EXIT. Instruciunea EXIT ne semnaleaz n timpul execuiei ieirea forat iar funcia nu returneaz valoare (practic aceast instruciune ne scoate forat din funcie) . Acest rezultat va fi returnat n momentul terminrii execuiei funciei. Apelul unei funcii se poate face astfel:
Variabila = nume_funcie [(valoare_param_1, valoare_param_2, ... .)]. Variabila preia rezultatul returnat de funcie.
Visual Basic Aplicaii n inginerie Exist trei tipuri de proceduri subrutin: a) subrutine generale; b) subrutine de tip eveniment; c) subrutine de tip proprietate.
154
a) Subrutinele generale nu sunt legate de obiecte. Ele reprezint doar o secven de cod apelabil prin program. Sintaxa pentru definirea unei proceduri este urmtoarea[FRI 01], [NAS 00], [ANI 03]:
Private|Public] Sub nume_procedura[([ByRef|ByVal] param_1 as tip_date,....)] [instruciuni] .... [Exit Sub] ... [instruciuni] End Sub
Unde:
Private semnific faptul c procedura poate fi apelat numai din modulul unde a fost definit, Public semnific faptul c procedur poate fi apelat din orice modul; Exit Sub permite ieirea forat dintr-o procedur.
155
Apelarea unei astfel de proceduri se poate face n dou moduri: 1) prin intermediul numelui procedurii urmat e lista parametrilor, list ce nu se gsete ntre paranteze, parametrii urmnd imediat dup nume_procedur i fiind separai prin virgule; nume_procedur n acest caz constituind o instruciune de sine stttoare. 2) prin intermediul instruciunii CALL nume_procedur [lista parametrii] n acest caz lista de parametrii este obligatorie ntre paranteze.
[Call ] nume_procedura [(valoare_param_1,valoare_param_2,....)] Dac un parametru formal este prefixat de ByRef , modificarea acestora n procedur se va reflecta i n variabila corespunztoare transmis ca parametru actual. Acesta este transfer de parametri prin referin. Acest aspect este valabil i cnd lipsete declaraia ByRef din faa unui parametru. Modificarea parametrilor declarai By Val nu va afecta coninutul variabilelor care le-au fost transmise. Acest tip de transfer reprezint transferul prin valoare.
b) Subrutine de tip eveniment Subrutinele de tip eveniment sunt subrutine ataate unor obiecte i acioneaz la un eveniment ataat obiectului. Modul lor de descriere: [PRIVATE/STATIC] SUB nume_obiect_aciune ()
156
Aciunea unor astfel de proceduri se desfoar numai la aciunea asupra obiectului ceea ce nseamn c procedura principal are n observaie pentru fiecare obiect un CONTROL care dac este activat genereaz lansarea n execuie a procedurii. n general evenimentele sunt de tip CLICK sau CHANGE. c) Proceduri de tip proprietate Acestea sunt de tipul: PROPERTY GET; LET i PUT
6.3. Aplicaii
Aplicatia 36.
S se determine, utiliznd funcii definite de utilizator, durabilitatea unui cuit de strung [LUP 95], [LUP 01]. T= C v t sy
z x
(6.1)
Se dau sub form de constant C=4000 i x=3,y=4, z=3,5. Se va utiliza funcia putere. Se proiecteaz interfaa din figura urmtoare, coninnd o etichet i dou butoane de comand,
157
unul pentru calcul, cellalt pentru ieirea din aplicaie Se modific proprietile obiectelor ca la aplicaiile anterioare Se va ataa cod butoanelor de comand Funcia putere, definit de utilizator, va fi scris n seciunea General Funcia va fi apelat cu parametri actuali n cadrul procedurii ataate evenimentului click al butonului de comand. Atenie : parametrii actuali vor fi de acelai tip cu parametrii formali
158
Public Function putere(a As Double, b As Double) As Double putere = a ^ b End Function Private Sub Command1_Click() Dim v As Double Dim ta As Double Dim s As Double Dim c As Double Dim x As Double Dim y As Double Dim z As Double c = 4000 x = 300 z = 3.5 v = InputBox("Introduceti viteza de aschiere n intervalul 20-60:") ta = InputBox("Introduceti adancimea de aschiere n intervalul 0,5-3 :") s = InputBox("Introduceti avansul n intervalul 0,050,5 :") t = c / (putere(v, x) * putere(ta, y) * putere(s, z)) MsgBox " Durabilitatea cutitului de strung este " & t& min End Sub Private Sub Command2_Click() End End Sub
159
S se transmit trei parametri unei proceduri, att prin valoare ct i prin referin. Se proiecteaz o interfa cu dou butoane de comand, unul prin care se vor apela procedurile, cellalt pentru ieirea din aplicaie. Parametrul x transmis cu prefixul ByVal , dei a fost modificat n procedura de apelare, la revenire va pstra valoarea iniial
160
Parametrii y i z, transmii prin referin (prefixul By Ref), vor pstra valorile modificate, dup revenirea din procedura apelant Se vor ataa urmtoarele secvene de cod. (se va defini un modul ce va conine procedurile testare() i procedura1() )
Private Sub Command1_Click() Call testare End Sub Sub procedura1(ByVal x As Integer, ByRef y As Integer, c As Integer) x=y+z y=x+z z=x+y MsgBox "x=" & x & " y=" & y & " z=" & z End Sub Sub testare() Dim x As Integer, y As Integer, z As Integer x=1 y=2 z=3 Call procedura1(x, y, z) MsgBox "x=" & x & " y=" & y & " z=" & z End Sub Private Sub Command2_Click() End End Sub Se ruleaz aplicaia
Visual Basic Aplicaii n inginerie Se vor afia dou rnduri de valori: X=2, Y=2, Z=4
161
162
Cunotine prealabile Elementele limbajului Visual Basic Structuri de control Programare modular Plan tematic 1. Deschiderea fiierelor 2.nchiderea fiierelor 3. Exploatarea fiierelor n acces secvenial 4. Exploatarea fiierelor cu acces aleator 5. Aplicaii Intrebri obiectiv - Cum se stocheaz datele n fiiere ? - Cum se citesc datele din fiiere? - Cum se scriu datele dintr-un fiier n alt fiier?
Cuvinte-cheie - fiier -acces secvenial -acces direct -deschidere fiier -nchidere fiier
163
Fiierele sunt colecii de date omogene din punct de vedere al naturii, coninutului i prelucrrii lor. Accesul la datele din fiier poate fi: secvenial, caz n care pentru a se ajunge la o anumit nregistrare se vor parcurge toate nregistrrile anterioare direct, caz n care este posibil accesarea unei nregistrri n mod direct, fr a fi necesar parcurgerea datelor anterioare.
7.1.Deschiderea fiierelor
Pentru a se putea scrie/citi datele n/dintr-un fiiere este necesar deschiderea acestuia. Comanda care va aloca zone de memorie tampon pentru operaiile de intrare-ieire este[FRI 01], [NAS 00], [ANI 03]:
OPEN nume_fiier FOR mod_deschidere AS #nr_fiier LEN=expresie unde: nume_fiier poate fi un fiier care exist pe disc sau un fiier care va fi creat n acest moment; dac fiierul nu se gsete n directorul curent, atunci va fi specificat calea mod_deschidere- poate avea valorile: Pentru acces secvenial APPEND permite adugarea de date n fiier INPUT- permite citirea datelor din fiier OUTPUT permite crearea unui nou fiier Pentru acces direct:
164
RANDOM Pentru acces binar: Binary Observaie : dac fiierul exist i el va fi deschis utiliznd clauza OUTPUT, atunci va fi suprascris. nr_fiier este un numr cuprins ntre1 i 511 i reprezint numrul care este atribuit fiierului i care va fi utilizat ca identificator pentru respectivul fiier
Exemplu:
Se va deschide pentru creare fiierul Freze.DAT Se va deschide pentru citire fiierul Materiale.DAT
Aceast comand are ca efect ntreruperea legturii dintre fiier i numrul lui. Dac dup instruciunea Close nu este precizat nici o clauz, atunci vor fi nchise toate fiierele.
165
166
La nivel de proiect s-a declarat o variabil de tip utilizator: Type pers nume As String suma As Double End Type
167
Unde: Numr_fiier - numrul fiierului Nr_nregistrare prin nmulirea cu lungimea nregistrrii va determina poziia datelor care vor fi citite Nume_variabil numele variabilei care conine datele ce vor fi citite Scrierea datelor n fiier Se realizeaz cu instruciunea:
Put numr_fiier, numr_nregistrare, nume_variabil
7.5. Aplicaii
Aplicaia 38 .
S se creeze fiierul secvenial freze.dat cu urmtoarea structur: tip frez; material; kz; q; d. [LUP 00] S se scrie o procedur de introducere a datelor n fiier.
168
Se creaz o interfa cu un buton de comand Se adaug proiectului un modul n care se va declara tipul de date utilizator Fisier i se va declara o variabil global de tip fiier Se scrie cod pentru butonul de comand Procedura va realiza crearea fiierului i scrierea datelor
Type fisier tip As String material As String kz As Double q As Integer d As Double z As Integer End Type Global fis As fisier Private Sub Command1_Click() fnume = "d:\cartevb\freze.dat" Open fnume For Output As #1 raspuns = "DA" While UCase(raspuns) = "DA" fis.tip = InputBox("Introduceti tipul frezei :") fis.material = InputBox("Introduceti materialul
169
frezei :") fis.kz = InputBox("Introduceti kz :") fis.q = InputBox("Introduceti q :") fis.d = InputBox("Introduceti diametrul frezei :") fis.z = Round(fis.kz * (fis.q * fis.d) ^ (1 / 2)) Print #1, fis.tip; Tab(10); fis.material; Tab(30); fis.kz; Tab(40); fis.q; Tab(50); fis.d; Tab(60); fis.z raspuns = InputBox("Mai continuati?") Wend Close #1 End Sub
170
S se adauge date n fiierul care a fost creat la aplicaia precedent. Procedura de adugare a datelor n fiierul existent presupune deschiderea fiierului cu clauza APPEND
Type fisier tip As String material As String kz As Double q As Integer d As Double z As Integer End Type Global fis As fisier Private Sub Command2_Click() fnume = "d:\cartevb\freze.dat" Open fnume For Append As #1 raspuns = "DA" While UCase(raspuns) = "DA" fis.tip = InputBox("Introduceti tipul frezei :") fis.material = InputBox("Introduceti materialul frezei :") fis.kz = InputBox("Introduceti kz :")
171
fis.q = InputBox("Introduceti q :") fis.d = InputBox("Introduceti diametrul frezei :") fis.z = Round(fis.kz * (fis.q * fis.d) ^ (1 / 2)) Print #1, fis.tip; Tab(10); fis.material; Tab(30); fis.kz; Tab(40); fis.q; Tab(50); fis.d; Tab(60); fis.z raspuns = InputBox("Mai continuati?") Wend Close #1 End Sub
172
S se afieze datele existente n fiierul Freze.dat Se va ataa unui buton de comand urmtoarea procedur
Private Sub Command3_Click() Dim z As Integer Dim l1 As String, l2 As String Cls fnume = "d:\cartevb\freze.dat" Open fnume For Input As #1 Print "Tip "; Tab(10); "Material"; Tab(30); "z" Print String(55, "_") While Not EOF(1) Line Input #1, l l1 = Mid(l, 1, 6) l2 = Mid(l, 10, 10) l3 = Mid(l, 60, 2) Print l1; Tab(10); l2; Tab(30); l3 Wend Close End Sub
173
S se scrie datele din fiierul Freze.dat n fiierul Date.dat Se va proiecta o intefa cu un buton de comand Se va scrie procedura ataat butonului de comand Se va rula aplicaia
Private Sub Command4_Click() Cls fnume = "d:\cartevb\freze.dat" Open fnume For Input As #1 Open "d:\cartevb\date.dat" For Output As #2
174
Print #2, "Tip "; Tab(10); "Material"; Tab(30); "z" Print #2, String(55, "_") While Not EOF(1) Line Input #1, l l1 = Mid(l, 1, 6) l2 = Mid(l, 10, 10) l3 = Mid(l, 60, 2) Print #2, l1; Tab(10); l2; Tab(30); l3 Wend Close End Sub Aplicaia 42.
S se creeze fiierul Agenda.dat n acces aleatoriu cu urmtoarea structur: Denumirea materialului Modulul Young de elasticitate E Coeficientul de ntindere transversal Poisson Modulul de compresiune K Rezistena la traciune sigma S se afieze proprietile de mai sus pentru materialul a crui nume va fi introdus de la tastatur.
Material E Poisson k Sigma
200 100 72 17
170 125 75 44
Visual Basic Aplicaii n inginerie Informaiile introduse se vor fi listate. Drept interfa se vor folosi dou forme : -frmfis, cu trei butoane de comand ( pentru crearea, consultare i execuie) -frmintrod, cu cinci etichete, cinci casete de text i un buton de comand pentru scrierea datelor Se va aduga aplicaiei un modul care va avea coninutul: Type materiale material As String e As Double poisson As Double k As Double sigma As Double End Type
Global mat As materiale Global nr As Integer
175
Se va proiecta interfaa cu formularul frmfis, pe care se vor aeza cele trei butoane Se va ataa urmtoarea secven de cod:
176
Private Sub Command2_Click() n=0 d = InputBox("Introduceti denumirea materialului ") Do n=n+1 Get #2, n, mat If Trim(mat.material) = d Then Print mat.material; Tab(20); mat.e; Tab(25); mat.poisson; Tab(30); mat.k; Tab(35); mat.sigma Exit Sub End If Loop Until EOF(2) End Sub Private Sub Command3_Click() Close End End Sub Private Sub Form_Load() Dim lung lung = Len(mat) Open "d:\cartevb\agenda.dat" For Random As #2 nr = 1 End Sub
177
Figura 7.5. Proiectarea interfeei Se va aduga un nou formular, frmintrod, pe care vor fi afiate cele cinci etichete i cele cinci casete de text. Citirea de la tastatur a datelor se va face prin cititea proprietii Text a casetelor de text aferente.
178
Private Sub Command1_Click() mat.material = Text1.Text mat.e = Text2.Text mat.poisson = Text3.Text mat.k = Text4.Text mat.sigma = Text5.Text Put #2, nr, mat nr = nr + 1 Frmintrod.Hide Beep End Sub
179
Se va rula aplicaia; se va aciona asupra butonului de introducere a datelor, ceea ce va determina deschiderea formularului de introducere a datelor.
180
181
Bibliografie
[LUP 01]
Anica-Popa, L., Anica-Popa, I, Programarea calculatoarelor- Visual Basic, Ed. Infomega, Bucureti, 2003 Bodea, M., Fizica pentru ingineri, vol. I, II, Editura Universitii Transilvania Braov, 1997 Frinaru, L., Brava, I., Visual Basic: Primii pai i urmtorii, Editura Polirom, Iai, 2001 John Clark Craig, Jeff, Visual Basic 5.0, Manualul programatorului, Editura Teora, Bucureti, 1998 Lupulescu, N.B., Oancea ,Gh., Nedelcu, A., Proiectarea informatizat a sculelor pentru frezarea metalelor, Editura Lux Libris, Braov, 2000 Lupulescu, N.B., Oancea ,Gh.,Informatic aplicat n inginerie, Aplicaii n limbaj Turbo Pascal, Editura Universitii Transilvania, Braov, 2001
[MAN01] Mansfield, R., Programarea bazelor de date n Visual Basic 6 pentru.. amici!, Editura Tehnic, Bucureti, 2001 [NAS 00] Nastase, P., Coscescu, L., Covrig, L., Tehnologia bazelor de date-Access 2000, Editura Economic, Bucureti, 2000 [POP 99] Popa, Gh.,Iliescu, M.,Programarea calculatoarelor, Limbajul Visual Basic,
182
[LUP 95]
[POP 99] W1 W2
Editura Cison,Bucureti, 1999 Lupulescu, N.B., Oancea, Gh. Proiectarea informatizat a sistemelor de producie, Editura Universitii Transilvania, Braov, 1995 Popa, Gh. Ivancenco, V., Andronache, V., Visual Basic, Editura Cison, Bucureti, 1999 http://msdn.microsoft.com/library/ http://www.vb-world.net