Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Utilizarea tablourilor, tipurilor definite de utilizator, enumerarilor si a sirurilor de caractere

Informatica


Utilizarea tablourilor, tipurilor definite de utilizator, enumerarilor si a sirurilor de caractere

Tablouri

    Asa un ati īnvatat , un tip descrie setul de valori pe care o variabila le poate vea si un set de operatii pe care programele dumneavoastra le pot executa cu variabila respectiva. Cu exceptia sirurilor de caractere , toate tipurile pe care le-am prezentat pāna acum pot avea numai o valoare. Pe masura ce programele dumneavoastra īncep sa execute operatii mai utile, este posibil ca o variabila sa contina mai multe valori. De exemplu, variabila punctaj poate sa retina punctajul obtinut de toti studentii īn sesiunea de examene. Un tablou este o structura de date care poate sa pastreze mai multe valori de acelasi tip. Tablourile trebuie concepute ca niste colectii de date care poarta acelasi nume si au acelasi tip. Bineīnteles, 626p1511g daca tabloul este de tip Variant atunci elementele acestuia pot sa contina diferite tipuri de date (numerice, siruri de caractere, date calendaristice, obiecte).
    Īn Visula Basic sunt doua tipuri de tablouri: tablouri cu dimensiune fixa si tablouri dinamice.
    Tablourile cu dimensiune fixa sunt tablourile care au un numar fix e componente. Acesta este declarat de la īnceput astfel īncāt compilatorul aloca suficienta memorie pentru a putea retine toate elementele. Declararea unui tablou cu dimensiune fixa se poate face īn doua moduri:
- prin specificarea numarului ultimului element
Dim|Public|Private NumeTablou(NrUltimulElement) As TipData
Exemplu:
        Dim aPuncte(5) As Integer
Cānd declarati un tablou primul element este 0. Exista totusi posibilitatea sa faceti ca primul element sa fie 1. Pentru aceasta inserati declarati Option Base 1 īn sectiunea General a modulului īn care declarati tabloul.
Pentru a atribui valori fiecarui element din tablou veti proceda astfel:
aPuncte(0)=270
aPuncte(1)=250
aPuncte(2)=289
aPuncte(3)=275
aPuncte(4)=300
- prin specificarea marginilor (adica se specifica numarul primului si ultimului element)
Dim|Public|Private NumeTablou(NrPrimulElement To NrUltimulElement) As TipData
Exemple:
        Dim a( 1 To 10) As Double
        Dim b(10 To 100) as Date

    Tablourile dinamice sunt tablourile care au un numar variabil de elemente. Exista situatii cānd nu stiti de cāte elemente aveti nevoie īn tabloul dumneavoastra. si pentru a nu aloca un spatiu prea mare sau prea mic de memorie, Visual Basic va ofera posibilitatea sa redimensionati tabloul īn functie de necesitati. Pentru a crea un tablou dinamic trebuie sa-l declarati fara dimensiune:
Dim NumeTablou() As TipData
    si apoi īn functie de cāte elemente aveti nevoie i le alocati cu ajutorul instructiunii ReDim.
ReDim NumeTablou(NrUltimulElement) sau
ReDim NumeTablou(NrPrimulElement To NrUltimulElement)
Instructiune ReDim are aceeasi sintaxa ca instructiunea Dim de la tablourile cu dimensiune fixa. Instructiunea ReDim poate fi folosita numai īn interoirul unei proceduri
Exemplu:
Dim Salarii() As Integer
si apoi īntr-o procedura se aloca numarul de elemente:
Private Sub CalculareImpozit()
        ReDim Salarii(1 To 10)
            .............        
        End Sub   
    Īn toate exemplele prezentate pāna acum, tablourile au constatat īntr-un singur rānd de date. Totusi, limbajul Visual Basic accepta tablouri bi-,tri, si multi- dimensionale. Cea mai buna cale de a vizualiza u tabel un tabel bidimensional este o matrice cu rānduri si coloana. Daca tabelul contine trei dimensiuni, considerati-l ca pe mai multe pagini, fiecare dintre ele continānd matrice bidimensiuonale. Rāndurile tabelului merg de la stānga la dreapta , īn tip ce coloanele merg de sus īn jos pe pagina. Declararea uni tabel multidimensional este asemanatoare cu cea a unui tabel cu o singura dimensiune. Diferenta consta īn faptul ca se mai specifica si numarul de elemente al celorlalte dimensiuni.
Exemple:
Dim aCuloarePunctePlane(10,10) As Byte
Private aCuloarePuncteSpatiu( 1 To 30,1 To 50, 1 To 60) As Byte

    Cānd adresati un element al unui tablou multidimensional trebuie sa specificati numarul de ordine al elementului pe fiecare dimensiune.
Exemple:
aCuloarePunctePlane(3,6)=10
aCuloarePuncteSpatiu(15,49,3)>=20
Pentru gestionarea cāt mai eficienta a elementelor tablourilor sunt de mare folos structurile repetitive.

        Tipuri definite de utilizator

    Vor aparea situatii cānd veti dori ca o singura variabila sa stocheze mai multe informatii de tipuri diferite dar care se afla īn strānsa legatura.
Pentru aceasta Visual Basic va permite sa creati tipuri definite de utilizator. Aceste sunt compuse dintr-un numar de componente numite cāmpuri. Spre deosebire de tablouri, cāmpurile pot contine tipuri de date diferite. Fiecare cāmp are un nume (identificator de cāmp). Sintaxa unui tip definit de utilizator este urmatoarea:
Private| Public Type NumeTip
        Nume_cāmp1 As TipData
Nume_cāmp2 As TipData
............
Nume_cāmp3 As TipData
End Type

Exemplu:
    Private Type InfoStudent
        sNume As String * 30   
dDataNasterii As Date
        sSex As String *1
sMediaAdmitere As Single
iMediiSemestriale(1 To 8) As Integer
sAdresa As String * 30
    End Type
Dupa ce ati creat un anumit tip puteti defini variabile locale, la nivel de modul sau globale de acel tip.
Exemple:
Dim student As InfoStudent
Dim StudentiContabiliate(1 To 70) As InfoStudent

    Atribuirea sau recuperarea de valori stocate īn cāmpurile acestor variabile se face exact ca īn cazul proprietatilor controalelor sau a formelor.
Exemple:
    Student.sNume="Munteanu Razvan"
Student.sMediaAdmitere= 9,91

        Enumerarile

    Tipul enumerare defineste o multime o multime ordonata de valori: se enumera un sir de identificatori care desemneaza valorile posibile. Īn mod implicit primul element al enumerarii este initializat cu 0. Fiecare alt element desemneaza succesorul valorii specificate de elementul precedent. Identificatorii apar īn ordinea crescatoare a valorii lor.
    Sintaxa:
        Private|Public Enum NumeEnumerare
            Element1[=valoare]
            Element2[=valoare]
            ........
            Elementn[=valoare]
        End Enum   
    Exemplu:
        Private Enum ZileSaptamāna
            Luni = 1
            Marti
Miercur
            Joi
            Vineri    
            Sāmbata
            Duminica
        End Enum
Dupa ce am creat un tip enumere, ca si īn cazul tipurilor definite de utilizator, putem defini o variabila de tip enumerare. Aceasta variabila va putea sa ia ca valoare doar elementele din enumerare.
    Exemplu:
        Dim ZiSptamāna As Zile Saptamāna
        ZiSaptamāna = Miercuri

        siruri de caractere

    Dupa cum ati vazut pāna joule , Visual Basic ca si alte limbaje de programare, lucreaza cu cuvinte, deci cu siruri de caractere.
Pentru a putea manipula īntr-un mod cāt mai usor cuvintele Visual Basic pune la dispozitia programatorilor tipul de date String. Astfel puteti sa declarati o variabila de tip String care va putea sa stocheze siruri de caractere. Declararea unei astfel de variabile se realizeaza īn felul urmator:
    [Public| Private] Dim NumeVariabila As String [*NrCaractere]

    Puteti specifica la declaratie numarul de caractere astfel īncāt compilatorul sa stie ce cantitate de memorie sa aloce. Daca nu stabiliti de la īnceput numarul de caractere compilatorul va aloca memorie īn mod dinamic īn functie de necesitatile de moment determinate de diferitele lungimi ale sirurilor de caractere ce vor fi stocate īn variabila.
Asa cum am mai precizat operatiile pe care le suporta irurile de caractere sunt operatia de concatenare si cele de comparatie.
Exemplu de concatenare:
    Dim sNume As String, sPrenume As String, sNumeIntreg
    sNume="Munteanu "
sPrenume="Razvan"
sNumeIntreg =sNume & sPrenume `sNumeIntreg va contine sirul de caractere
                “ ˝Munteanu Razvan˝

    De asemenea exista o serie īntreaga de functii pe care le puteti folosi ca sa prelucratii sirurile de caractere:
- strInversat=StrReverse(strNormal) inverseaza ordinea caracterelor īntr-un sir;
- NrCaractere=Len(strsir) returneaza numarul de caractere al sirului;
- strRezultat=Left(strsir,intNrCaractere) extrage dintr-un sir de caractere primele intNrCaractere din partea stānga a sirului;
- strRezultat=Right(strsir,intNrCaractere) extrage dintr-un sir de caractere primele intNrCaractere din partea dreapta a sirului;
- strRezultat=Mid(strsir,intCaracterStart [,intNrCaractere]) extrage dintr-un sir de caractere primele intNrCaractere din partea stānga a sirului īncepānd cu pozitia intCaracterStart;
- lngRezultat=InStr ([intStart, ]strsir, strCauta[, intCompara]) verifica daca un caracter sau un sir( strCauta) se gaseste īn interiorul altui sir (strsir). Īn caz afirmativ functia returneaza pozitia primului caracter cautat īn sirul strsir.
Exemplu:
Presupunem ca variabila Nume contine numele complet. Dorim sa extragem numele de familie. Vom proceda astfel:
strSpatiu=˝ ˝
lngNrCaracter=InStr(Nume,strSpatiu)
NumeFam=Left(Nume,lngNrCaracter)

    Voi prezenta īn continuare un program mai amplu ca va utiliza diferite structuri de control si diferite tipuri de date. Programul va prelua informatii despre studenti prin intermediul unei ferestre si va afisa o lista ce cuprinde studentii īn ordinea punctajului obtinut la examene.
Adaugati urmatoarele elemente la proiect:
Form1
Name frmInfo
Caption Culegere date

Label1 Caption Nume
Label2 Caption Specializare
Label3 Caption Grupa
Label4 Caption Puncte

TextBox1 Name cmdNume ; Text ˝˝
TextBox2 Name cmdSpecializare ; Text ˝˝
TextBox3 Name cmdGrupa ; Text ˝˝
TextBox4 Name cmdPuncte ; Text ˝˝

CommandButton1 Name cmdAdaugare ; Caption Adaugare
CommandButton2 Name cmdAdaugare ; Caption Adaugare




Din meniul Project mai adaugati o forma la proiect.
Form2
Name frmAfisare ; Caption Rezultare

CommandButton1 Name cmdTerminare ; Caption Terminare

    Īn fereastra Components (Ctrl+T) bifati controlul ActiveX Microsoft FlexGrid Control pentru al putea utiliza īn acest proiect. El va fi adaugat la controalele din Cutia de instrumente(ToolBox).
Adaugati la forma un control FlexGrid.
Name flxRzultate
FexedCols 1
Cols 5


    Din meniul Project adaugati un modul standard la proiect (cu comanda Add Module) īn acre scrieti urmatorul cod:

Option Explicit

Public Type InfoStudent
Nume As String * 30
Specializare As String * 20
Grupa As Integer
puncte As Integer
End Type
Public aStudenti(1 To 70) As InfoStudent
Public iNrStudenti As Integer

    Īn fereastra de cod a primei forme adaugati codul urmator:

Option Explicit
Option Base 1

Private Sub cmdAdaugare_Click()
iNrStudenti = iNrStudenti + 1
With aStudenti(iNrStudenti)
.Nume = txtNume.Text: txtNume.Text = ""
.Specializare = txtSpecializare.Text: txtSpecializare.Text = ""
.Grupa = Cint(txtGrupa.Text): txtGrupa.Text = ""
.puncte = Cint(txtPuncte.Text): txtPuncte.Text = ""
End With
End Sub

Private Sub cmdAfisare_Click()
Unload frmInfo
frmAfisare.Show
End Sub

Private Sub Form_Load()
iNrStudenti = 0
End Sub

    Iar īn fereastra de cod a formei doi adaugati urmatorul cod:

Option Explicit

Private Sub cmdTerminare_Click()
End
End Sub

Private Sub Form_Load()
Sortare
With flxRezultate
.Row = 0:
.Col = 1: .Text = "Numele"
.Col = 2: .Text = "Specializarea"
.Col = 3: .Text = "Grupa"
.Col = 4: .Text = "Pnctajul"
Dim i As Integer
For i = 1 To iNrStudenti
.Row = i
.Col = 1: .Text = aStudenti(i).Nume
.Col = 2: .Text = aStudenti(i).Specializare
.Col = 3: .Text = aStudenti(i).Grupa
.Col = 4: .Text = aStudenti(i).puncte
.Rows = iNrStudenti + 1
Next i
End With
End Sub
Private Sub Sortare()
Dim i As Byte, j As Byte, aux As InfoStudent
For i = 1 To iNrStudenti
For j = i + 1 To iNrStudenti
If aStudenti(i).puncte < aStudenti(j).puncte Then
aux = aStudenti(i)
aStudenti(i) = aStudenti(j)
aStudenti(j) = aux
End If
Next j
Next i
End Sub




Document Info


Accesari: 1583
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )