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

Přidat názor

 

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.

 

Public Relations

IPv4 zastarává, i tak si však zaslouží kvalitní zabezpečení

Znáte souvislost mezi doménami a typickými IP adresami? Není od věci si uvědomit, že zatímco domény jsou určeny pro zjednodušení hledání webové stránky na internetu, IP adresy slouží primárně pro výpočetní techniku, konkrétně pro přesné vyhledání konkrétního serveru nebo počítače.

Pokračování ...


AIMTEC
SAM v kostce 2019
 
 
woo jaw demo hz