Začátečník

Pokročilý

Profesionál

Úvod do světa .NET /4. díl

Moderní technologie vývoje softwaru

 

Budete potřebovat přibližně 30 minut

Operační systém použitý v příspěvku: Windows 2000

Vývojové nástroje: Visual Basic .NET

 

 

Vážení čtenáři,

 

v dnešním dílu seriálu začněme s vysvětlováním pojmu proměnná. Dozvíte se, na co vlastně proměnné slouží, jak se deklarují a inicializují. Také bude ozřejměn pojem obor proměnné. Přeji příjemné počtení.  

 

Obsah

Pojem proměnná

Deklarace proměnné

Inicializace proměnné

Obor proměnné

Příklad: Formulář (třída formuláře) jako obor proměnné

 

 

Pojem proměnná

 

Tak, jak je základní stavební jednotkou aplikace stylu .NET forma zvaná assembly, tak ve světě programového kódu je základní jednotkou pro ukládání hodnot proměnná. Do proměnné lze umísťovat různé hodnoty, jako například celá či desetinná čísla, text, datum atd. Proměnné jsou někdy také označovány jako kontejnery, aby se ještě více zvýraznila jejich schopnost uchovávat jistou hodnotu (obr. 1).

 

 

Obr. 1 – Vizuální přiblížení pojmu proměnná

 

Pokud byste se chtěli podívat na proměnné z techničtějšího hlediska, zjistili byste, že každá proměnná alokuje jisté místo v paměti počítače (proměnná má tedy svůj rozsah, který je zpravidla měřen v bitech). Právě toto místo v paměti je schopno uchovat hodnotu, kterou má proměnná „na starosti“. Aby ovšem bylo možné do proměnné umístit jakoukoliv hodnotu, je potřebné ji nejdříve deklarovat.

 

 

Deklarace proměnné

 

Na deklarování proměnných slouží ve VB .NET příkaz Dim. Obecný zápis procesu deklarace proměnné je:

 

Dim jméno_proměnné As datový_typ_proměnné

 

Pokud byste tedy chtěli deklarovat proměnnou číslo, která by byla datového typu Integer, použili byste tento zápis programového kódu:

 

        Dim číslo As Integer

 

Jste-li začínajícími programátory, může se vám mnoho věcí na způsobu deklarace proměnné zdát nejasných, a proto si dovolím tento proces rozebrat poněkud podrobněji. Snad nejdůležitější informací je, že neexistuje nic jako „ryzí proměnná“, vždy se můžete střetnout jenom s proměnnou, které reprezentuje jistý datový typ. Datový typ si můžete představit jako charakteristiku, která blíže určuje použití proměnné. Ve VB .NET se koneckonců můžete střetnout s poměrně velkým počtem rozličných datových typů (jejich charakteristikou se budeme zabývat v příštím dílu seriálu). Příkaz Dim zabezpečí rezervaci místa v paměti pro vytvořenou proměnnou (přitom samozřejmé dbá na to, aby byla velikost rezervovaného místa v souladu s rozsahem použitého datového typu proměnné). V zápisu je také důležité klíčové slovo As, za kterým následuje specifikace zvoleného datového typu. Celý zápis ukončuje název datového typu, v našem případě je to typ Integer, který je vhodný pro ukládání celých čísel.

 

Použijete-li pouze uvedený zápis s příkazem Dim, je pro proměnnou číslo jenom vyhrazeno místo v paměti počítače, ale samotná proměnná neobsahuje žádnou hodnotu. Aby bylo možné umístit do proměnné hodnotu, je zapotřebí proměnnou inicializovat. Jak na to si ukážeme v další kapitole.

 

 

Inicializace proměnné

 

Inicializace proměnné se uskutečňuje pomocí takzvaného přiřazovacího příkazu.

 

V této souvislosti bychom si také měli ozřejmit pojem příkaz. Příkazem se obyčejně rozumí jeden řádek programového kódu. Příkazem může být ovšem také klíčové slovo programovacího jazyka, po použití kterého se uskuteční nějaká operace. Nakonec příkazem může být chápána i programová konstrukce typu přiřaďování, kdy dochází k umístění hodnoty do proměnné.     

 

Přiřazovací příkaz obecně přiřazuje jistou hodnotu do proměnné. Řečeno jinými slovy, jenom pomocí přiřazovacího příkazu můžete do proměnné uložit nějakou hodnotu. Jak ovšem takový příkaz vypadá? Asi takto:

 

jméno_proměnné = hodnota, kterou chceme do proměnné přiřadit

 

Přiřazovací příkaz dělá přesně to, co říká jeho název, tedy přiřazuje „něco někam“. Jaký je cíl přiřazení? No přece proměnná. A co do proměnné přiřazujeme? Libovolnou hodnotu v závislosti od rozsahu příslušného datového typu proměnné. Ještě prostěji, obsah pravé strany příkazu je „vložen“ do proměnné, název které se nachází na levé straně přiřazovacího příkazu.  

 

Budeme-li chtít navázat na předchozí deklaraci proměnné číslo, můžeme použít tento zápis programového kódu:

 

        číslo = 1000

 

Tímto způsobem naznačíme VB .NET, aby do proměnné umístil hodnotu (číslo) 1000.

Porovnání mezi deklarací a inicializací proměnné znázorňuje obr. 2.

 

 

Obr. 2 – Rozdíl mezi deklarací a následnou inicializací proměnné

 

Pokud ji v budoucnu nezměníte, proměnná číslo bude stále obsahovat tuto hodnotu. Abyste se přesvědčili, že proměnná opravdu obsahuje zadanou číselní hodnotu, můžete použít metodu Show třídy MessageBox v následujícím tvaru:

 

  

        MessageBox.Show(číslo)

 

Metodě Show je v tomto případě jako vstupní hodnota (přesněji jako parametr) předána proměnná číslo, a protože metoda zobrazuje v dialogovém okně hodnotu svého parametru, udělá tak i v našem případě a zobrazí okno s hodnotou 1000. Dobrá, přesvědčili jste se, že proměnná opravdu obsahuje vloženou hodnotu. Pokud byste chtěli změnit hodnotu proměnné třeba na rovný milion, opět použijete přiřazovací příkaz, jenom s novým určením hodnoty:

 

        číslo = 1000000

   

Takto je předchozí obsah proměnné číslo smazán a nahrazen novou hodnotou. Demonstrovaným postupem můžete měnit hodnotu proměnné, no nesmíte v žádném případě zapomenout na rozsah proměnné. Ten totiž určuje interval hodnot, které můžete do proměnné uložit (v případě datového typu Integer je tento interval <-2 147 483 648, 2 147 483 647>)

 

Datový typ Integer je uchováván jako 32bitová, resp. 4bajtová hodnota. Jde o datový typ, jenž poskytuje nejefektivnější výkon při celočíselných operacích na dvaatřicetibitových procesorech.      

 

Jestliže byste do proměnné číslo přiřadili hodnotu mimo povolený interval, VB .NET by vygeneroval chybové hlášení.

 

V souvislosti s uchováváním hodnot pomocí proměnné by vás ovšem mohla napadnout otázka, dokdy ve skutečnosti proměnná bude přiřazenou numerickou hodnotu obsahovat. Aby bylo možné vyřešit toto dilema, musíme si vysvětlit další důležitý pojem, kterým je obor proměnné.     

 

 

Obor proměnné

 

Oborem proměnné rozumíme časový interval, v rámci kterého proměnná udržuje svou hodnotu. Umístíte-li na formulář projektu tlačítko a poklepete na něj, otevře se editor pro zápis kódu. V prostředí editoru můžete zapsat kód třeba pro událostní proceduru Click tlačítka. Kdybychom v této událostní proceduře deklarovali proměnnou číslo a přiřadili do této proměnné numerickou hodnotu, proměnná by obsahovala tuto hodnotu jenom dokud by byl vykonáván kód dané procedury. Když se provádění událostní procedury ukončí, zlikvidují se všechny proměnné, které byly v této proceduře deklarovány (a pochopitelně dojde i k destrukci hodnot, které tyto proměnné obsahovaly). Předveďme si tuto situaci prakticky na ukázce programového kódu obsluhy události Click tlačítka Button1:

 

    Private Sub Button1_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles Button1.Click

        Dim číslo As Integer

        číslo = 1000

        MessageBox.Show(číslo)

    End Sub

 

Uvnitř procedury typu Sub je deklarována proměnná číslo typu Integer. Proměnná je také inicializována na hodnotu 1000. Další příkaz zobrazuje dialogové okno s hodnotou. Tím je úkol událostní procedury splněn a procedura je ukončena. V té chvíli dochází k likvidaci proměnné číslo a také „mizí“ hodnota, která byla do proměnné číslo uložena. Proto říkáme, že oborem proměnné číslo je událostní procedura Click tlačítka Button1.

 

Proměnná může mít i daleko širší obor. Oborem proměnné může být celý formulář (resp. celá třída formuláře) nebo také celý projekt VB .NET (jestliže je proměnná deklarována v doprovodném modulu).

 

Modulem se rozumí speciální soubor, do kterého se ukládají tzv. veřejné proměnné, funkce a další platné programové konstrukce.

 

Zkusme si první z těchto variant ukázat na praktickém příkladu.  

 

 

Příklad: Formulář (třída formuláře) jako obor proměnné

 

  1. Vytvořte ve VB .NET nový projekt typu Windows Application.
  2. Na formulář umístěte dvě tlačítka, která nechte standardně pojmenovaná.
  3. Poklepejte na první tlačítko a upravte podobu událostní procedury Click podle vzoru:

 

    Private Sub Button1_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles Button1.Click

        číslo = 1000

        MessageBox.Show(číslo)

    End Sub

 

  1. Klepněte na druhé tlačítko a zadejte programový kód pro zobrazení dialogového okna se zprávou:

 

    Private Sub Button2_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles Button2.Click

        MessageBox.Show(číslo)

    End Sub

 

  1. V této chvíli je nutné učinit nejvýznamnější krok, a sice deklarovat proměnnou, oborem které bude třída formuláře. Přemístěte kurzor pod první dva řádky veškerého programového kódu formuláře, tedy pod tyto dva řádky:

 

Public Class Form1

    Inherits System.Windows.Forms.Form

    

a deklarujte proměnnou číslo zápisem:

 

Dim číslo As Integer

 

  1. Pohled na programový kód formuláře by měl mít tuto podobu:

 

Public Class Form1

    Inherits System.Windows.Forms.Form

    Dim číslo As Integer

 

"Windows Form Designer generated code"

 

    Private Sub Button1_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles Button1.Click

        číslo = 1000

        MessageBox.Show(číslo)

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles Button2.Click

        MessageBox.Show(číslo)

    End Sub

End Class

 

Když pustíte aplikaci a klepněte na první tlačítko, objeví se dialogové okno, který bude ukazovat numerickou hodnotu (1000) proměnné číslo. Po ukončení událostní procedury Button1_Click ovšem nedojde k likvidaci proměnné číslo, protože oborem této proměnné je v tomto případě celý formulář a ne jenom procedura. Klepnete-li na druhé tlačítko, zobrazí se aktuální stav proměnné číslo, tedy opět numerická hodnota 1000. Ptáte se, kdy je v tomto případě proměnná zlikvidována? K destrukci proměnné dochází ve chvíli likvidace formuláře (resp. odstranění formuláře z paměti počítače).  

 

 

Ján Hanák