Visual Basic 0 abc-doar


Exemple: Public Const text1 = "text public"



Yüklə 0,98 Mb.
səhifə2/10
tarix03.11.2017
ölçüsü0,98 Mb.
#29921
1   2   3   4   5   6   7   8   9   10

Exemple: Public Const text1 = "text public"

Public Const numar = 10

In interiorul procedurilor si claselor,toate constantele declarate cu

Const sunt private,chiar daca se utilizeaza si specificatorul Public.

Pentru a declara mai multe constante in aceeasi linie de cod,se pot utili-

za virgule despartitoare intre definitii.

EXEMPLU: Public Const text1 = "Text1",numar1 AS Double = 2.737693

Constantele declarate in afara procedurilor si functiilor au vizibilitate

in intregul modul in care au fost declarate.

Nu are rost sa declarati constante,decat daca o anumita valoare nume-

rica,sau o expresie oarecare se va repeta de mai multe ori in program.Cu

cat numarul de repetitii este mai mare,cu atat constanta respectiva va

optimiza programul prin reducerea memoriei consumate.Nu declarati astfel

de constante fara un scop precis definit ("de rezerva"),deoarece fiecare

astfel de data declarata va ocupa un tampon de memorie si va introduce in

program un numar suplimentar de operatii (scade viteza de executie).Cu

cat un program este mai complex,cu atat este mai dificila gestionarea

acestor tipuri de data.Daca doriti sa creati module independente,este

recomandabil sa utilizati doar constante cu vizibilitate locala,pentru a

evita eventualele conflicte de denumire,atunci cand includeti modulul

intr-un program mai mare.Deasemenea este bine sa evitati denumirea unor

astfel de constante cu x si y sau a,b si c.Pentru formularea numelui este

bine sa utilizati o denumire cat mai sugestiva,formata din cel putin

patru caractere alfanumerice,astfel ca in etapa de depanare sa fie cat

mai usor de evaluat semnificatia respectivei valori.

Atunci cand formati subclase sau cand dezvoltati un obiect oarecare,

inainte de a declara constante noi,verificati ce constante are clasa de

baza.In cele mai multe cazuri,exista o constanta implicita ce poate opti-

miza codul d-voasta.De cele mai multe ori,experienta unui programator se

reflecta si in modul in care isi alege constantele de lucru.Pentru un

program de uz restrans,constantele pot fi utilizate dupa liberul arbitru,

dar in cazul programelor comerciale si profesionale,fiecare constanta

trebuie aleasa cu maximum de atentie,astfel incat codul sa fie optimizat

la maxim si sa evite orice conflict posibil cu alte module si obiecte.

Exista si o directiva de precompilare denumita #Const.Aceasta comanda

se utilizeaza pentru a selecta conditional un anumit set de constante ce

urmeaza sa formeze mediul de operare,pentru o anumita aplicatie.Acest gen

de constante sunt intotdeauna Private pentru modulul in care au fost des-

carcate (nu au vizibilitate in afara modulului).


-7-

TIPURI DE DATA

In mod curent,Visual Basic recunoaste urmatoarele tipuri de data:

Boolean,Byte,Currency,Date,Decimal,Double,Integer,Long,Object,Single,

String,User-Defined si Variant.

Pentru o descriere amanuntita a fiecarui tip de data,consultati manua-

lul Help.Trebuie remarcat insa tipul Variant.Orice variabila declarata,

pentru care nu s-a specificat expres tipul de data va fi creata automat

cu tipul Variant.Acest tip de data,poate accepta date din orice alt tip

de data (cu exceptia String cu lungime constanta si User-defined),sau cu

alte cuvinte se adapteaza la formatul datelor.Acest tip de data,este cu

o origine ceva mai recenta si a inlocuit treptat majoritatea variabilelor

utilizate intr-un program,deoarece elimina interminabilele operatii de

conversie a datelor dintr-un format in altul.Utilizatorii de C si C++,pot

aprecia acest tip de data la justa valoare.

Pentru declararea unei variabile,se utilizeaza instructiunea Dim.Daca

se utilizeaza o variabila de tip Variant,aceasta va accepta formatul

tipului de data cu care a fost initializata.De exemplu,daca primeste o

valoare de tip integer,variabila va fi creata de tip integer.Daca insa

in cursul operatiilor efectuate valoarea variabilei iese in afara dome-

niului de reprezentare,formatul de data se va schimba automat la tipul

de data imediat urmator (cel care accepta valoarea actuala).

EXEMPLU: deschideti o fereastra noua si editati urmatoarea procedura

Private Sub Form_Click()

Dim valoare1

valoare1 = 3

Form1.Print valoare1 / 5

End Sub

In exercitiul de mai sus,valoare1 a fost declarata de tip Variant,deoarece

nu am specificat nici un format anume.In momentul initializarii a primit

valoarea 3 si a devenit de tip integer,dar in urma operatiei de impartire

a fost convertita automat la tipul double.

Pentru a declara o variabila cu un tip anume se va specifica prin AS

tipul de data dorit.

EXEMPLU: deschideti o fereastra noua si editati urmatoarea procedura:

Private Sub Form_Click()

Dim text2 AS String

text2 = "Textul declarat"

Form1.Print text2

End Sub

Executati fereastra cu Run si Start si executati un click in fereastra.

Pentru conversia unui tip de data in altul se pot utiliza urmatoarele

functii: CBool(),CByte(),CCur(),CDate(),CDbl(),CDec(),CInt(),CLng(),CSng()

CVar(),CStr().

De fapt,tipul Variant nu face decat sa apeleze o procedura in care sunt

apelate toate aceste functii pana cand returneaza un rezultat exprimabil.

Astfel,indiferent de tipul initial al datei,tipul Variant va apela proce-

dura de control si va returna un rezultat reprezentabil.Pentru a putea

evita erorile de executie determinate de o incompatibilitate de format,

puteti sa creati o astfel de procedura de conversie automata,prin care

valoarea ce a determinat eroarea sa fie convertita instantaneu la un

format de data reprezentabil (procedura de tratare a erorii).


-8-

Un alt tip de data mai special,este tipul user-defined (definit de

utilizator).Acest tip de data se formeaza cu ajutorul unei instructiuni

TYPE si poate fi declarat doar la nivel de modul (nu se poate declara in

interiorul unei proceduri).Daca modulul respectiv este o clasa sau un

obiect,tipul de data trebuie sa fie precedat de specificatorul Private.

Se poate forma un astfel de tip de data,utilizand orice combinatie din

celelalte tipuri de data,pentru a forma structuri mai complexe ca tip,

asemenatoare cu cele de tip RECORD sau STRUCT.Pentru a apela unul dintre

membrii tipului de data se va utiliza operatorul punct(.),la fel ca si

in cazul obiectelor.

EXEMPLU: deschideti o fereastra noua si editati urmatorul cod:

Private Type elev

Nume As String

Prenume As String

Varsta As Integer

End Type

Private Sub Form_Click()

Dim data1 AS elev

data1.Nume = "Ionescu"

Form1.Print data1.Nume

End Sub

Observati ca tipul de data trebuie declarat in afara procedurii ce defi-

neste evenimentul Click.Apoi,se declara o variabila din tipul respectiv

si se atribuie valori sau se efectueaza operatiile dorite.

Pentru aplicatiile uzuale de mici dimensiuni,este simplu si practic sa

utilizati tipul Variant.Pentru aplicatiile specifice,tipul de data se va

alege in functie de necesitatile hardware sau software de moment.

EXEMPLE: -daca doriti sa creati o aplicatie numerica prin care comunicati

cu un terminal extern dotat cu procesor pe 8 biti (de exemplu un aparat

telefonic sau un aparat casnic),atunci este imperios necesar sa utilizati

tipul Byte (care ocupa 8 biti de memorie si accepta valori intre 0-255).

-daca doriti sa creati o aplicatie numerica in care utilizati

si valori numerice extrem de mari,va trebui sa alegeti unul dintre tipu-

rile de data Decimal,Double sau Long.

-daca doriti sa creati o aplicatie de tip multitasking,in care

grupati mai multe semnale intr-un format mai mare,puteti grupa de exemplu

doua mesaje de tip Integer (2 bytes= 16 biti) intr-un semnal de 32 de biti

-daca doriti sa utilizati semnale neobisnuit de lungi,alegeti

tipul string (mesajul poate avea 10 bytes + pana la 2 miliarde de biti)

-daca doriti sa utilizati tipuri de date variabile,utilizati

tipul Variant (ocupa 22 bytes + lungimea sirului)

Cu cat tipul de data utilizat este mai mic,cu atat intarzierea pentru

fiecare operatie este mai mica.Astfel,valoarea 1 codificata sub forma de

Byte se executa de 22 de ori mai repede decat valoarea 1 codificata sub

forma de variabila de tip Variant.Atunci cand aplicatia proceseaza mai

multe milioane de astfel de date,diferenta de durata a executiei devine

din ce in ce mai semnificativa.

Considerentele software,depind doar de celelalte elemente din program.

Exemplu: -doriti sa utilizati un modul de program mai vechi,in care date-

le sunt preluate intr-un tampon de memorie cu un anumit format (exemplu:

16 biti).Trebuie sa utilizati date reprezentate in formatul respectiv.


-9-

COMENZI - singurele comenzi utilizate in limbajul BASIC sunt directivele

de precompilare #Const si #If...Then...#Else.Directivele de precompilare,

se utilizeaza pentru a putea selectiona pentru compilare doar anumite

blocuri de cod,in functie de o anumita conditie precizata prin #IF.Cel

mai cunoscut exemplu de acest gen,este in cazul programelor ce incarca

blocuri diferite de cod in functie de tipul sistemului de operare.De

exemplu,pentru Win 3.1 se utilizeaza constanta Win16,iar pentru Windows

'95 se utilizeaza constanta Win32.Aceste constante nu pot fi resetate si

se pot utiliza pentru a selecta blocurile de cod ce urmeaza sa fie incar-

cate conditional pe tipul respectiv de platforma.

EXEMPLU: #If Win32 Then

......primul grup de coduri

#Else

.....grupul alternativ de coduri

#End If
FUNCTII -Visual Basic grupeaza un numar destul de mare de functii pre-

definite.Functiile predefinite contin cate un set de instructiuni si

returneaza o anumita valoare.Se pot grupa in functie de utilitatea lor

in: functii matematice,functii de conversie,functii de sistem,functii

financiare,functii pentru operatii cu datele calendaristice,functii

pentru operatii cu datele de tip ora,minut secunda si functii pentru ope-

ratii asupra sirurilor de caractere.In manualul Help,functiile sunt ordo-

nate alfabetic,impreuna cu o descriere destul de elocventa.Nu este nece-

sara o descriere suplimentara,dar trebuie mentionat faptul ca toate aceste

functii se pot utiliza si in ecuatii,unde vor fi inlocuite in mementul

executiei,prin valoarea pe care o returneaza(spre deosebire de proceduri).

EXEMPLU : deschideti o fereastra noua si editati un cod de genul:

Private Sub Form_Click()

Dim calcul1 As Double

calcul1 = (Sin(3.72) + Cos(3.72))/Sin(1.43)

Form1.Print "Rezultatul calculului ="

Form1.Print calcul1

End Sub

In mod similar se va utiliza oricare dintre functiile pre-definite,fie

in interiorul unei ecuatii,fie pentru a returna o anumita valoare necesara

in secventa de operatii aflata in executie.Functiile se pot si intrica,

una in alta,de genul:

calcul1 = Sin(Cos(2.34))

Pentru a declara o functie noua,se va utiliza instructiunea Function.

In limbajul BASIC,Function este asimilata a fi o procedura,la fel ca si

Sub si Property,adica un grup de coduri ce pot fi executate prin apelarea

unui anumit identificator.Spre deosebire de celelalte proceduri,o functie

returneaza intotdeuna o anumita valoare si poate fi inclusa in ecuatii.

Pentru declararea functiei se pot utiliza si specificatorii Public,Private

Friend sau Static,pentru a reglementa domeniul de vizibilitate.In rest,

functia poate avea unul sau mai multe argumente si va returna corespunza-

tor acestor argumente,valori din tipul de data declarat.Optional,se poate

specifica daca argumentul va fi returnat prin referinta (adresa sa) sau

prin valoare (valoarea de moment).Implict toate functiile sunt publice.

Functia returneaza controlul la codul imediat urmator celui de apel.


-10-

Declararea unei functii se poate face numai la nivel de modul,adica

la nivel de clasa,structura sau interfata.Declaratia functiei nu se poate

face in interiorul unei alte proceduri sau functii,fila,bloc de instruc-

tiuni sau spatiu namespace.Dupa declarare,functia poate fi apelata fie

direct,fie cu ajutorul instructiunii Call.Daca functia se apeleaza direct,

prin numele sau,va returna o valoare,iar daca functia se apeleaza prece-

data de instructiunea Call,valoarea returnata va fi ignorata (functia se

va comporta la fel ca si o procedura).

EXEMPLU: deschideti o fereastra noua si editati urmatorul cod:

Function ArieCerc(ByVal r As Double) AS Double

ArieCerc = (3.141592 * r * r) / 2

End Function

Private Sub Form_Click()

Form1.Print "Aria cercului este:"

Dim raza,arie AS Double

raza = 137.73953

arie = ArieCerc(raza)

Form1.Frint arie

End Sub

In exemplul de mai sus,am declarat functia ArieCerc cu un parametru de

tip double prin care functia accepta valoarea dorita pentru raza cercului.

Functia returneaza o valoare tot de tip double,reprezentand valoarea cal-

culata pentru parametrul preluat.Observati ca functia a fost declarata in

afara procedurii Click() si apoi a fost apelata din interiorul procedurii.

In limbajul BASIC,deosebirea dintre o functie si o procedura nu este

atat de transanta ca si in alte limbaje de programare.Astfel,o functie

declarata cu Function poate functiona exact la fel ca si o procedura,daca

este apelata prin instructiunea Call.

EXEMPLU: deschideti o fereastra si editati codul:

Function EditareText()

Form1.Print "Prima linie de text."

Form1.Print "......"

Form1.Print "Ultima linie de text"

End Function

Private Sub Form_Click()

Call EditareText

End Sub

Aceasta situatie este oarecum confuziva,mai ales pentru incepatori.Pentru

a putea face o distinctie clara intre o functie si o procedura,este bine

sa retineti urmatoarele:

1.-o functie returneaza intotdeauna o valoare (chiar daca este ignorata)

2.-o functie poate fi utilizata intr-o expresie (in membrul drept)

3.-o functie se declara cu instructiunea Function... End Function

Dupa declarare,functia poate fi utilizata la fel ca si functiile pre-

definite,cu conditia sa fie apelata in spatiul de vizibilitate prevazut

prin declaratie.Daca acesta nu este specificat expres,functia va fi de tip

Public.

Functiile pot fi recursive,adica se pot auto-apela.Trebuie sa se evite

acest gen de situatie,deoarece se creaza o bucla infinita,in care proceso-

rul repeta acelasi set de operatii la infinit.

EXEMPLU: Functia1 apeleaza Functia2,care apeleaza Functia1...la infinit.


-11-

PROCEDURI - procedurile sunt secvente de instructiuni ce pot fi executate

grupat,sub forma de unitate distincta,prin apelarea unui identificator

comun (numele procedurii).In BASIC,procedurile frecvent intalnite pot fi

de tip Sub,Property sau Function.Tipul Function este un tip particular de

procedura (returneaza o valoare) si a fost prezentat mai sus.Tipul Sub,

este tipul cel mai comun de procedura si se utilizeaza pentru orice

grupare de instructiuni ce necesita sa fie executate impreuna.Tipul Pro-

perty este un tip particular de procedura si se utilizeaza pentru a orga-

niza un set oarecare de instructiuni in interiorul unei clase sau a unei

structuri.O procedura de tip Property include una dintre procedurile spe-

cifice Get sau Set,sau amandoua,si este specifica programarii orientate

spre obiect.

PROCEDURA SUB - se declara prin instructiunea Sub....End Sub.Pentru

a specifica spatiul de vizibilitate se pot utiliza specificatorii Public,

Private sau Friend.Procedura trebuie sa includa toate codurile executabile

fara sa apeleze la date,sau blocuri externe de cod.O procedura trebuie sa

fie declarata numai la nivel de modul.Nu se poate declara o procedura in

interiorul unei alte proceduri,sau functii.Pentru iesirea prematura din

procedura se poate utiliza cuvantul cheie Exit Sub.La fel ca si functiile

si procedurile pot accepta argumente,fie prin referita,fie prin valoarea

de moment,dar spre deosebire de functii nu returneaza valori.Prin urmare,

operatiile din procedura pot sa modifice valoarea parametrilor utilizati

ca argumente,dar nu pot sa returneze o valoare noua (creata in interiorul

procedurii).

La fel ca si functiile,procedurile sunt recursive,adica se pot apela

reciproc,la infinit.Pentru a evita o bucla infinita,trebuie ca una dintre

valorile din interiorul procedurii sa se modifice dupa fiecare aplel si

sa existe o conditie de iesire din bucla (de obicei cu IF ...si Exit Sub).

Este mai bine sa evitati recursivitatea,ori de cate ori este posibil.

In interiorul unei proceduri se pot utiliza atat variabile locale (cele

declarate in interiorul procedurii cu Dim) cat si variabile globale ce au

fost declarate Public,la nivel de modul.Atunci cand se utilizeaza atat

variabile externe cat si variabile locale,trebuie sa excludeti orice con-

flict generat de numele variabilei (in cazul in care au acelasi nume).

Pentru a apela o procedura,se utilizeaza identificatorul sau (numele).

O procedura poate fi apelata si cu ajutorul instructiunii Call.Daca se

apeleaza o procedura prin Call,atunci este obligatoriu sa includeti si

argumentele procedurii.Daca procedura se apeleaza doar prin nume,lista

de argumente este optionala.

EXEMPLU: deschideti o fereastra si editati urmatorul text:

Sub Calcul()

Dim xxx

For xxx = 0 To 10

Form1.Print xxx * xxx

Next xxx

End Sub

Private Sub Form_Click()

Calcul

End Sub

In exemplul de mai sus,Calcul este o procedura definita de utilizator,iar

Form_Click() este procedura atribuita evenimentului Click.


-12-

PROCEDURA PROPERTY - se utilizeaza pentru a crea proprietati specifice

unui anumit obiect.Exista trei instructiuni special concepute pentru

acest scop: Property Get,Property Let si Property Set ( in versiunile de

la Visual Basic 6.0 in sus,Let a fost inlocuit prin Set).Daca proprietatea

urmeaza sa fie de tip read-only se defineste numai cu Get,iar daca pro-

prietatea urmeaza sa fie de tip write-only se defineste numai cu Let.In

mod curent insa,proprietatile obiectelor pot fi rescrise sau citite la

discretie.Pentru acest scop,este necesar sa se utilizeze ambele instruc-

tiuni atunci cand se declara proprietatea respectiva.Exista un set de

reguli ce trebuiesc respectate atunci cand se declara o proprietate:

1.-parametrii instructiunilor Property Get,Property Let si Property Set

trebuie sa fie perfect compatibili.

2.Property Let trebuie sa contina un parametru in plus fata de Get,iar

tipul de data al acestui parametru trebuie sa corespunda cu cel returnat

de Property Get (trebuie sa poata accepta valoarea returnata)

3.Property Set trebuie sa contina un paramatru in plus fata de Get si

anume o data de tip Variant,Object sau numele unei clase de obiecte.

In rest,cele doua proceduri trebuie sa fie astfel inlantuite incat sa

se actualizeze reciproc.Ca rezultat,proprietatea obiectului va putea

Yüklə 0,98 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin