Pole
Jednorozmerné pole definujeme ako dátovú štruktúru, ktorá je tvorená dátovými prvkami rovnakého typu premennej. Niekde v pamäti pole tvorí istú pevnú časť pamäte počítača. Pomocou indexu vieme pracovať s jednotlivými prvkami. Index môžeme chápať ako rodné číslo prvku poľa. Na základe indexu vieme, s kým máme tu česť a môžeme napríklad zistiť, aká hodnota sa skrýva vo vybranom prvku.
Narozdiel od polí z iných programovacích jazykov, vo Visual Basic pre LibreOffice definujeme okrúhlymi zátvorkami. Spomeňme si ešte dvojrozmerné pole. Je to len ďalšie jednorozmerné pole k tomu prvému, avšak abstraktné ho môžeme využiť ako dvojrozmerné. Fajn, ukážme si deklarácie polí.
Dim pole(10) As Long REM vytvorí pole o veľkostí 11 s indexom od 0 do 10 Dim pole(10 To 20) As Integer REM vytvorí pole o veľkostí 11 s indexom od 10 (aj so samotnou 10! preto 11 prvkov) do 20 Dim pole(-10 To 10) As Integer REM nerobí mu problém ani záporný index Dim pole(10, 5 To 15) As Integer REM dvojrozmerné pole a to vďaka čiarke
Chcelo by to nejaké príklady že? Slním vaše želanie.
1. príklad:
Sub Makricko REM začiatok procedúry Dim pole(5) As Integer REM deklarácia premenných pole(0) = 5 REM priradenie hodnôt premenným pole(1) = 25 pole(2) = 44 pole(3) = 445 pole(4) = 10 pole(5) = 77 MsgBox "Nulty index pola: " & pole(0) & Chr(10) & "Prvy index pola: " & pole(1) & Chr(10) & "Druhy index pola: " & pole(2) & Chr(10) & "Treti index pola: " & pole(3) & Chr(10) & "Stvrty index pola: " & pole(4) & Chr(10) & "Piaty index pola: " & pole(5) REM výpis End Sub
Výsledok
2. príklad:
Sub Makricko Dim pole(5 To 10) As Integer pole(5) = 5 pole(6) = 25 pole(7) = 44 pole(8) = 445 pole(9) = 10 MsgBox "Nulty index pola: " & pole(5) & Chr(10) & "Prvy index pola: " & pole(6) & Chr(10) & "Druhy index pola: " & pole(7) & Chr(10) & "Treti index pola: " & pole(8) & Chr(10) & "Stvrty index pola: " & pole(9) & Chr(10) & "Piaty index pola: " & pole(10) End Sub
Výsledok
Rozbor makra: Všimli ste si posledný prvok s indexom 10, ktorému nebola priradená hodnota? Prvok tak automatický dostane hodnotu 0.
3. príklad: Poďme túto programátorskú idylku narušiť
Sub Makricko Dim pole(5 To 10) As Integer pole(5) = 5 pole(6) = 25 pole(7) = 44 pole(8) = 445 pole(9) = 10 pole(10) = 55 pole(11) = 11 MsgBox "Nulty index pola: " & pole(5) & Chr(10) & "Prvy index pola: " & pole(6) & Chr(10) & "Druhy index pola: " & pole(7) & Chr(10) & "Treti index pola: " & pole(8) & Chr(10) & "Stvrty index pola: " & pole(9) & Chr(10) & "Piaty index pola: " & pole(10) End Sub
Výsledok
Rozbor makra: Ups, zachádzame tam, kam nemáme. Pristúpili sme mimo definovaného bloku pamäte. Spadnutie programu nám to dá pocítiť, že sme zhrešili.
4. príklad: Dvojrozmerné pole
Sub Makricko Dim pole(2, 2) As Integer pole(1, 2) = 5 pole(2, 2) = 77 pole(1, 1) = 56 pole(0, 0) = 117 pole(2, 1) = 1454 MsgBox "Sektor 1,2: " & pole(1,2) & Chr(10) & "Sektor 2,2: " & pole(2,2) & Chr(10) & "Sektor 1,1: " & pole(1,1) & Chr(10) & "Sektor 0,0: " & pole(0,0) & Chr(10) & "Sektor 2,1: " & pole(2,1) & Chr(10) End Sub
5. príklad:
Sub Makricko Dim pole(2, 2) As Integer pole(1, 2) = 5 pole(2, 2) = 77 pole(1, 1) = 56 pole(0, 0) = 117 pole(2, 1) = 1454 MsgBox "Sektor 1,2: " & pole(1,2) & Chr(10) & "Sektor 2,2: " & pole(2,2) & Chr(10) & "Sektor 1,1: " & pole(1,1) & Chr(10) & "Sektor 0,0: " & pole(0,0) & Chr(10) & "Sektor 2,1: " & pole(2,1) & Chr(10) & "Sektor 3,1: " & pole(3,1) & Chr(10) End Sub
Výsledok
Rozbor makra: Upsik, opäť som prekročil svoje právomoci kodéra. Aspoň sa na mojich zámerných chybách poučíte.