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.

 
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

Jak si zabezpečit servery?

DNSSECPokud chce moderní člověk plně využívat to, co mu virtuální svět internetu nabízí, musí se stále více orientovat na bezpečnost. Musí činit kroky, jež ho ochrání před riziky, jež se právě na této síti skrývají a dnes a denně uživatele ohrožují.

Pokračování ...


 
 
woo jaw demo hz