41
3. predavanje

3. Varijable

Embed Size (px)

Citation preview

  • 3. predavanje

  • Sadrajpromijenljive u VBImenovanjeTipoviDeklaracijaDodjela vrijednostiScopePrivatePublicKonstante

  • Promijenljive (Variable) Da bi program bio funkcionalan on mora imati mogunost da pamti ili uva privremene vrijednosti koje se odnose na izvrenje programa.

    VB uva vrijednosti (informacije) u oblikuPromenljivih (variable)Konstanti (constant)

    Varijable su imenovane lokacije u memoriji raunara u kojima se uvaju odgovarajue vrijednosti.

  • promijenljive nastavak...

    Tri komponente odreuju promijenljivu

    Ime istovremeno je i ime memorijske lokacijeTip odreuje veliinu memorije i vrstu podatka koji se smijeta u memorijuvrijednost informacija koja se uva u memoriji

  • Imenovanje promijenljivePromijenljiva mora imati ime da bi joj se mogla dodijeliti vrijednost.

    Dim X As Integer

    Naredba Dim (Dimension) se koristi za deklaraciju promijenljive. Odvoj memorijski prostor u kom e se uvati promijenljiva informacija i nazovi je XPoslednje dvije rijei odreuju Tip tj znaeTa memorijska lokacija treba da je velika 2 bajta, i informacija e biti cijeli broj, (Integer)

  • Imenovanje promijenljive nastavak...Kod odreivanja imena promijenljive programer ima dosta veliku slobodu. Ipak postoje pravila:Ime mora poinati slovomMoe sadrati: slova brojeve donju crtu Ime mora biti jedinstveno u svojoj oblasti vaenjaNe smije biti due od 255 karakteraNe moe biti iz skupa rezervisanih rijei

  • Tipovi

    TipSadrajMemorijaopsegBytecijeli broj1 bajt0 do 255Integercijeli broj2 bajta32 768 do +32 767Longcijeli broj4 bajta2 147 483 648 do+2 147 483 647SingleDecimalni broj4 bajta3.40E 38 do 1.40E-45 1.40E-45 do 3.40E38DoubleDecimalni broj8 bajtova1.79E 308 do 4.94E-324 4.94E-324 do 1.79E 308 StringTekst1 bajt/karakter

  • Tipovi nastavak...

    TipSadrajMemorijaopsegCurrency15cif.4cifbanka8 bajtova9.220E-14 do 9.22E 14BooleanLogike vrijednosti2 bajtaTrue FalseDateDatum i vrijeme8 bajtovaJanuary 1, 100 do December 31, 9999 Object Referenca na objekat4 bajtaVariantSve dosad navedeno16 bajtova +1 po karakteru

  • ByteByte varijabla zauzima samo 8 bita (1 byte) memorije.Moe sadrati vrijednosti od 0 do 255.Negativne vrijednosti i vrijednosti vee od 255 nisu dozvoljene.Pri pokuaju da dodijelite negativnu vrijednost ili vrijednost veu od 255 dolazi do runtime overflow error

  • IntegerInteger tip je slian byte tipu, osim to moe smijestiti vee vrijednosti i negativne podatke

    Zauzima 16 bita (2 bajta) memorije i moe sadrati cijele brojeve u intervalu od 32768 do 32767. Zauzima relativno malo memorije i koristi se kad god je to mogue. Ne koristi se za realne brojeve!

  • Long integerLong integer je isto to i integer tip stim to se u njega mogu smijestiti vrijednosti u intervalu od 2 147 483 648 do 2 147 483 647. Zauzima 32 bita (4 bajta) ili dva puta vie memorije od integera.

    Treba voditi rauna kad koristiti integer a kad long zbog memorije

  • SingleSingle tip se koristi za brojeve sa pokretnim zarezom. Zauzima 32 bita (4 bajta). Relativno mali brojevi, kao to je npr kvadratni korijen od 2, mogu biti prikazani i sauvani sa prilino velikom tanou.Raunanja sa velikim brojevima kao to je 7.000001 1040 moe biti nedovoljno precizno.Zbog toga se mora voditi rauna o upotrebi ovog tipa kod preciznih raunanja.

  • Double

    Double tip se koristi za brojeve sa pokretnim zarezom. Zauzima 64 bita (8 bajtova) Pogodan je za raunanje sa veoma velikom preciznouZbog velike memorije koju koristi moe drastino usporiti izvravanje programa

  • StringSlui za manipulaciju sa tekstom. Imena, adrese, opisi...

    Fixed-Length Strings / Variable-length string

    Fixed-length string moe sadrati u veini sluajeva do 65,000 karaktera dok variable-length string moe biti dugaak do 2 biliona karaktera. Deklaracije su donekle razliite: Dim ime As String * 10 string do 10 karaktera Dim ime As String string promijenljive duine

  • CurrencyCurrency tip je namjenjen za uvanje monetarnih veliina kao to su bankarski rauni, cijene.... One se interno uvaju kao velike integer vrijednosti bez decimalnog zareza. Kada je potrebna vrijednost VB dijeli tu vrijednost sa 1000 pa se dobija vrijednost koja ima tanost na 4 decimale. Na taj nain se obezbijeuje zahtjevana tanost od 4 decimale. Treba voditi rauna da za neke raunice nije dovoljna preciznost od 4 decimale pa se u tom sluaju mora koristiti tip double..

  • Boolean

    Boolean tip promijenljive mogu imati vrijednost samo True ili False. Bilo koja vrijednost razliita od nule se smatra TRUE a vrijednost 0 se smatra FALSE.

    Po konvenciji je usvojeno da je podrazumijevana vrijednost za TRUE 1 u VBA

  • Date Date tip promijenljive mogu sadrati podatke o datumu I vremenu

    Zauzima 8 bajtova memorije.

    Moe imati vrijednost od Jan 1, 100 do Dec 31, 9999 i vrijeme od 00:00:00 do 23:59:59 sa rezolucijom 1 sec.

    Pri konverziji numerikih podataka u Date tip dio broja koji se nalazi desno od decimalnog zareza je datum a lijevo vrijeme. Ukoliko nema decimalnog zareza ili je ta vrijednost nula podrazumijevana vrijednost za vrijeme je pono

  • VariantUkoliko eksplicitno ne definiete tip podatka VB mu dodeljuje varijant tip. On moe prihvatiti bilo koju vrijednost i to razliitih tipova u toku izvrenja programa.

    Generalno zahtevaju veliku memoriju i usporavaju izvrenje programa u odnosu na ostale tipove

  • Variant nastavak...Variant tip je veoma koristan u situacijama kada tipovi podataka koji se koriste u aplikaciji nisu poznati. Npr, VB aplikacije esto rade sa podacima koji se nalaze u fajlovima, neka polja mogu nedostajati ili sadrati podatke iji tip ne odgovara onom koji se oekuje. Pridruivanje tipa string ili integer podatku koji nedostaje ili nije odgovarajui moe dovesti do run time error.

    Varijant tip se moe prilagoditi ovim situacijama

  • user-defined typeVB podrava tipove koje definie programerNpr rekordi (records) / strukture nainjene od postojeih tipovaOmoguava da objedinite podatke razliitih tipovaU literaturi se obiljeavaju kao UDT

    Primjer: UDT Student tip podatka sa 2 elementa

    Type Student Ime As String Stipendija As CurrencyEnd Type

  • user-defined type nastavak...Kada se jednom deklariu koriste se kao i osnovni tipoviKoristite taku (.) da pristupite eljenom elementu

    ** Deklaracija i inicijalizacija promijenljive Student Dim NekiStudent As Student NekiStudent.Ime = XXXXX NekiStudent.Stipendija = 123.45

  • Deklaracija promenljivih

    Postoji dva naina da deklariete promijenljive Implicitna deklaracijaEksplicitna deklaracija

  • Implicitna deklaracijaVB automatski kreira varijable. Kao i sve to ne kontroliete do kraja, ovo generalno nije dobra ideja. Gubite na memorijskim resursima i brzini izvrenja applikacije. VB automatski dodeljuje varijant tip svakoj varijabli koju niste deklarisaliPrivate Sub cmdCombine_Click() FirstName = txtFirstName.Text LastName = txtLastName.Text txtFullName = FirstName + " " + LastName End Sub

  • Eksplicitna deklaracijaPodrazumijeva upotrebu kljunih rei: Dim, Static, Private, i Public.

    DimVariableName As DataTypeStaticVariableName As DataTypePrivateVariableName As DataTypePublicVariableName As DataType

    U svakom primjeru se pojavljuje ime promijenljive i tip podatka kao dio deklaracije.

  • Eksplicitna deklaracija primjer Private Sub cmdCombine_Click() Dim FirstName As String Dim LastName As String FirstName = txtFirstName.Text LastName = txtLastName.Text txtFullName = FirstName + " " + LastName End Sub

  • Eksplicitna deklaracija nastavak...VB rezervie odgovarajuu memoriju za svaku promenljivu u skladu sa deklaracijom.

    Nakon to je promijenljiva deklarisana nije mogue mijenjati njen tip ali je mogue je konvertovati njenu vrijednost i dodijeliti konvertovanu vrijednost drugoj promjenljivoj odgovarajueg tipa.

  • Implicit ili Explicit pitanje je.... Uvijek koristite eksplicitne deklaracije kad god je to mogue (brzina, memorija)Aktivirajte kompajlersku naredbu koja zahtijeva deklaraciju promenljivih (Option Explicit)Tools/ Options/Editor Tab

  • Dodijeljivanje vrijednosti Nakon to ste deklarisali promenljivu moete joj dodijeliti vrijednostNaredba za dodijeljivanje vrijednosti ima sledei oblik:

    Imepromijenljive = Izraz Izraz moe biti:Matematiki izraz KonstantaPromijenljiva Svojstvo kontrole

  • Dodijeljivanje primjer....BrojIndeksa = 5712 FirstName = XXX" ProsaoTest = True Dozvola = lblTitle.Enabled Cijena = 45.1 + ProdajaBrojac = Number Number je druga promijenljivaDatumRodjenja = #4-1-92# DatumStaravrijednost = Novavrijednost - 1000.00

  • Podrazumijevane vrijednosti (default value)Ukoliko promjenljivoj ne dodijelite vrijednost VB dodijeljuje

    Tip promijenljivePodrezumijevana vrijednost Integer0 Long0 Single0 Double0 String"" (blank) BooleanFalse VariantEMPTY Date0 Currency0

  • Konstante (constant)Mnoge aplikacije zahtijevaju podatke koji se ne mjenjaju u toku izvrenja aplikacije. Ovi podaci se nazivaju konstantama.Konstanta se definie u aplikaciji i dodijeljuje joj se vrijednost pri deklaraciji.Njena vrijednost se moe dodijeliti bilo kojoj promjenljivoji ali se sama vrijednost konstante ne moe mijenjati.

    [Public|Private] Const CnstName [As DataType] = Value

  • Konstante nastavak...Sva pravila koja vae za promjenljive vae i za konstanteScope i Lifetime pravila koja vae za promijenljive vae i za konstante ( vidi kasnije)Ukoliko se ne navede tip konstante, VB ga dodeljuje na osnovu vrijednsti (Value) koja se navodi u deklaraciji.

    [Public|Private] Const CnstName = Value

  • Oblast vaenja

    Varijabla je dinamiki dio aplikacije i moe se koristiti na razliite naine.

    Deklaracija varijable znai vie od dodijele imena i tipa.

    Zavisno od kljune rei koja se koristi pri deklaraciji varijable i mijesta na kom je varijabla deklarisana u programu, odreuje se njena oblast vaenja (SCOPE).

  • Oblast vaenjaScope: Oblast vaenja ili vidljivost promijenljive. Za promenljivu koja se moe vidjeti iz bilo koje procedure u aplikaciji se kae da je javna (public).

    Za promenljivu koja se moe koristiti samo u nekoj proceduri se kae da je privatna (private).

    promijenljive deklarisane unutar tijela procedure su lokalne i ne mogu se pozivati van te procedure.Ne postoji nain da deklariete promenljivu unutar procedure koja e biti vidljiva ostaku programskog koda.

  • Public Public imepromijenljive [As DataType] = Value

    Public kljuna re ini promenljivu vidljivom u cijeloj aplikaciji. Public se koristi na nivou modula i ne moe se korisiti unutar procedura. Najee se koristi u standardnim modulima koji nisu dio formi.Svaka varijabla koja je deklarisana na poetku modula (general section) je public osim ako se posebno ne deklarie kao Private.

  • PrivatePrivate imepromijenljive [As DataType] = Value

    Private ograniava vidljivostvarijable na moduo u kom je varijabla deklarisana.

  • Lokalne promijenljiveSve promijenljive deklarisane unutar neke procedure (subrutine ili funkcije) su lokalne.To znai da njima se njima moe pristupiti samo iz procedureOne zauzimaju memorijski prostor samo u toku izvrenja procedure!Na taj nain se moe voditi rauna o resursimaTreba voditi rauna da se nakon naputanja procedure vrijednost lokalne promijenljive gubi!

  • ivotni vijek promijenljivepromijenljive ne moraju biti stalni stanovnici jedne aplikacije. Kao to je njihova vidljivost odreena mijestom deklaracije njihov ivotni vijek je takoer odreen deklaracijom. ivotni vijek promijenljive odreuje kada i koliko dugo je ona dostupna aplikaciji. promijenljive deklarisane unutar procedure postoje za vrijeme izvrenja procedure. Kad se procedura zavri oslobaa se memorijski prostor koje su one zauzimale. Primjer X2 i Y2 na prethodnoj slici.

  • nastavakpromijenljive deklarisane na poetku modula forme (General section) postoje sve dok je forma uitana.Napomena: Forma moe biti uitana a da se ne prikae!

    Sve procedure unutar modula forme mogu koristiti ove promijenljive. Kada se Forma zatvori i ukloni iz memorije uklanjaju se i njene promijenljive.

  • nastavakpromijenljive deklarisane kao Public u standardnim modulima imaju najdui ivotni vijek. One su dostupne od pokretanja aplikacije do prekida izvrenja programa. Zbog toga one uvaju svoju vrijednost u toku svog vremena rada aplikacije.

    promijenljive deklarisane kao Private , na poetku standardnog modula, postoje sve vrijeme trajanja aplikacije, ali su u skladu sa pravilima (scope), dostupne samo unutar modula..

    Module 1: The VB IDEEssential VB, DEVELOPMENTOR 2001Module 1: The VB IDEEssential VB, DEVELOPMENTOR 2001