Programovanie makier v LibreOffice: Pole

LO.png V tomto článku sa povenujeme poliam. Polia sú zaujímavou údajovou štruktúrou a uľahčí vám prácu s viacerými premennými rovnakého typu.  

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 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 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 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

Výsledok Výsledok

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 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.

(Jako ve škole) Průměr: 1,00 | Hodnotilo: 2
 

Komentáře

user avatar lp.
Odpovědět
Programovanie makier v LibreOffice: Pole
23. 12. 2016, 02:16:48
Drobná nepřesnost v úvodu ohledně dvourozměrného pole. Je rozdíl mezi dvourozměrným polem a jednorozměrným polem, jehož prvky jsou další pole.

pole(1,2) není pole(1)(2).

Odpovědět

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
EDU Trainings
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz