2017/01/12 13:05
1/11
LibreOffice Makró Basic
< Basic LibreOffice
LibreOffice Makró Basic Szerző: Sallai András Copyright © Sallai András, 2013 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu
Bevezetés Ehhez a fejezethez a programozás elmélet ismerete ajánlott.
Indulás Új makró létrehozása: Indítsuk el egy LibreOfficet Indítsuk el például a Writert Mentsük el a dokumentumot Eszközök menü → Makrók → Makrók rendezése → LibreOffice Basic … Új A LibreOffice Basic szerkesztő betűmérete: Eszközök menü -> Beállítások -> Betűkészletek -> Méret
Első Ha kattintottunk az „Új” gombra, akkor a Basic szerkesztő ablaka ugrik elénk, amelyben a következő kódot látjuk: REM
*****
BASIC
*****
SUB Main END SUB A „REM”-el kezdődő sor csak megjegyzés, amelyet a Basic értelmező nem vesz figyelembe. Az adott ablakban több makrót is írhatunk, mindegyiket a Sub Makrónév és End Sub kulcsszavak közzé írjuk. Ezek jelzik a makró elejét és végét. Az első név amit felkínál a szerkesztő a „Main”. Ezt természetesen átírhatjuk.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:makró_basic http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic 2014/12/06 01:52
A programírás során legalapvetőbb tevékenység a kiíratás. A következő példánkban ezt egy egyszerű párbeszédablakban fogjuk megtenni: Sub Main print "Helló Világ" End Sub A print utasítás egy kis párbeszédablakot dob fel, amely kiírja a paraméterként megadott értékeket, amely esetünkben egy „Helló Világ” nevű szöveg. Írjuk be a szerkesztőbe a Sub nyitó és záró részek közzé, majd futtassuk a makrót. A makró futtatását az „F5” billentyűvel tehetjük meg. A makrószerkesztő mindig azt a makrót futtatja, amelyben a kurzor áll. Ha kurzor makrokon kívül áll, akkor feldob egy makróválasztó párbeszédablakot. Mint az fentebb láttuk megjegyzéseket tehetünk egy programkódba a „REM” kulcsszó segítségével. Ugyanerre használható az aposztróf (') karakter is. 'Megyjezés Sub Main 'Megjegyzés print "Helló Világ" REM Megjegyzés End Sub A Basic nem kis és nagybetűérzékeny.
Kivitel Írjunk a Main makró után egy másik makrót, amelynek neve „Tobb”: Sub Tobb print "Helló Világ" print "BASIC nyelven programozok" End Sub Írjon most két print utasítást a makróba. Utána teszteljük az „F5” billentyűvel. A print utasítás számok kiíratásához is használható: Sub Tobb print 35 End Sub Vegyük észre, hogy most nem tettük idézőjelbe. A számokat nem kötelező idézőjelbe tenni. Bekéréshez használt dobozzal is tudunk üzeneteket kiírni, ennek használatát később részletezzük. Sub Beker http://www.szit.hu/
Printed on 2017/01/12 13:05
2017/01/12 13:05
3/11
LibreOffice Makró Basic
InputBox("Szám") End Sub
Számítások Ha szeretnénk kiíratni egy számot, azt megtehetjük idézőjelek nélkül és idézőjelekkel is, mint azt fentebb láttuk. A számokkal műveleteket is végezhetünk. Ekkor a számokat nem tehetjük idézőjelek közzé, mert úgy szövegként (Sztring) lesznek értelmezve. A következő példában 3 és 5 szorzatára vagyunk kíváncsiak: Sub SzamitSzoroz print 3 * 5 End Sub Szorzás Sub SzamitOsszead print 3 + 5 End Sub Osztás: Sub Osztas print 3 / 5 End Sub Az eredmény: 0,6 A maradékot a „mod” operátorral kérhetjük: Sub Maradék print 3 mod 5 End Sub Eredménye: 3 Hatványozást a hiányjellel (^) karakterrel lehetséges: Sub Hatvany print 3 ^ 5 End Sub Eredménye: 243
Változóhasználat
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:makró_basic http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic 2014/12/06 01:52
Csak használjuk Az adatokat néha szeretnénk a memóriában tárolni. A memóriahelynek adunk egy nevet, és ezek után változóként beszélünk róla. A változókat egyszerűen csak elkezdjük használni. Például az „a” nevű váltózóba a 3-as értéket szeretném eltárolni, akkor: a = 3 A változóknak lehet hosszabb neve is: szam = 3 Ha több számot szeretnénk eltárolni, például: szam1 = 3 szam2 = 5 A változónevek persze úgy a jók, ha beszédesek, azaz elárulják mit tárolunk bennük. A következő példában egy háromszög alapját és magasságát tároljuk el: alap = 30 magassag = 35 A változókkal ezek után műveleteket végezhetünk. Például: alap * magassag vagy: (alap * magassag)/2 Az ilyen számításokat kifejezésként szokás emlegetni. A kifejezés tulajdonképpen operandusok és operátorok felváltva. (Operandus például egy szám vagy egy változó, az operátor pedig egy művelet, mint szorzás, osztás, stb.) A szabály tehát egyszerű. Egy egyenlőség jel baloldalára írjuk a változónevet, jobboldalra a milyen értéket vegyen fel. Az egyenlőségjel jobboldalán persze állhat kifejezés is. Kifejezés például 3 * 5. Ha leírom: a = 3 * 5 Akkor az „a” változóban a 3 * 5 kifejezés értéke tárolódik. A kifejezésben változókkal: a = 3 b = 5 http://www.szit.hu/
Printed on 2017/01/12 13:05
2017/01/12 13:05
5/11
LibreOffice Makró Basic
c = 3 * 5 A „c” változóban az „a” és „b” változók szorzata tárolódik. Írjunk programot, amely ezt ki is írja: Sub Valtozo a = 5 b = 7 c = a * b print c End Sub
Deklarálás A deklarálás, azt jelenti, előre megmondjuk mit szeretnénk tárolni a változóban. Például egész számokat szeretnénk tárolni. Dim a As Integer Ha Integer típus használunk a legkisebb tárolható érték -32768, a legnagyob pedig 32767. Ha ezeknél kisebb vagy nagyobb számot írunk akkor végrehajtáskor túlcsordulási hibaüzenetet kapunk. Típus
Tartomány
Integer -32768 – 32767 Long -2147483648 to 2147483647 Single 1.401298 x 10E-45 – 3.402823 x 10E38 Double 4.94065645841247 x 10E-324 – 1.79769313486232 x 10E308 Currency -922337203685477.5808 to +922337203685477.5807 Boolean true, false Date Day, Month, Year vagy the Hour, Minute, Second függvények értékei Object Objektumváltozó Variant változó (a definíció által megadott összes típust Variant tartalmazhatja) Empty A változó nincs inicializálva Null Nincs érvényes adat
Nevesített állandó const MAX = 4
SzitWiki - http://www.szit.hu/
Bytes
Egyéb tudnivaló
2 bytes 4 bytes 4 bytes 8 bytes 8 bytes 64-bites
Last update: oktatas:programozás:basic:basic_libreoffice:makró_basic http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic 2014/12/06 01:52
Formázott kimenet Sub formazott a = 35.1234567 print format(a, "#.####") End Sub Sub formazott a = 35.123 print format(a, "0000.00000") End Sub
Operátorok Aritmetikai műveletek + összeadás kivonás * szorzás / osztás mod maradék
Matematikai függvények Gyökvonás Sub Gyokvonas a = sqr(9) print a End Sub Ebben a nyelven a hatványozáshoz nem tartozik külön függvény, mivel mint az korábban tanultuk van hatványozó operátor: Sub Hatvanyozas a = 3^2 print a End Sub Sub szinusz a = sin(1 * pi / 180) print format(a, "#.####") End Sub
http://www.szit.hu/
Printed on 2017/01/12 13:05
2017/01/12 13:05
7/11
LibreOffice Makró Basic
Dátumkezelés Date - Az aktuális dátumot adja Time - Az aktuális időt adja Now - Az aktuális dátumot és időt adja egyszerre a = date print a Az „a” változó Date típus lesz. Az „a” változó lehet String típus is: Dim a As String Ekkor viszont lehet nem végezhetünk számításokat. Ha megadjuk milyen típus legyen ajánlott a Date típus: Sub Datum Dim a As Date a = date print a - 2 End Sub A program 2 nappal kevesebbet mutat. További információ: https://help.libreoffice.org/3.3/Basic/Date_and_Time_Functions
Véletlen számok A programozásban gyakran szeretnénk véletlen számokat kapni. Erre az rnd függvény alkalmas. Sub Veletlen 'Véletlenszám generálása; 0 és 1 között kapok vel = rnd print vel End Sub Sub Veletlen2 '1-3 vel = int(rnd * 3) + 1 print vel End Sub 'A 10i kérésére Sub Lotto SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:makró_basic http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic 2014/12/06 01:52
r1 r2 r3 r4 r5
= = = = =
int(rnd int(rnd int(rnd int(rnd int(rnd
* * * * *
90) 90) 90) 90) 90)
+ + + + +
1 1 1 1 1
dim str as string str = format(r1, "0.####") & " " str = str & format(r2, "0.####") & " " str = str & format(r3, "0.####") & " " str = str & format(r4, "0.####") & " " str = str & format(r5, "0.####") print str End Sub
Bevitel A programozás harmadik elemi tevékenysége a bevitel, amikor adatokat kérünk a billentyűzetről. Ez megtehetjük az InputBox() függvény segítségével: Sub ErtekBe Dim a as double a = InputBox("Szám") b = a * 2 print b End Sub https://help.libreoffice.org/3.3/Basic/InputBox_Function_Runtime/hu
Szelekció if Sub Szelekcio a = 45 if a>70 then print "Nagyobb" End If End Sub Két ágú szelekció: Sub Szelekcio a = 45 http://www.szit.hu/
Printed on 2017/01/12 13:05
2017/01/12 13:05
9/11
if a>70 then print "Nagyobb" else print "Kisebb" End If End Sub Többágú szelekció: Sub Szelekcio a = 3 if a>5 then print "Nagyobb" elseif a=10 then print "Egyenlő" else print "Akkor kisebb" End If End Sub Sub Logikai a = 3 if a > and a < 10 then print "Egyjegyű pozitív" else print "Negatív, vagy nem egyjegyű pozitív" end if End Sub
Iteráció for Sub Iteracio for i = 1 to 2 print "Meg van" next i End Sub
while Sub Iteracio i= while(i<3) print i i = i + 1 wend SzitWiki - http://www.szit.hu/
LibreOffice Makró Basic
Last update: oktatas:programozás:basic:basic_libreoffice:makró_basic http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic 2014/12/06 01:52
End Sub
Sztringkezelés Darabolás Dim str As String str = "joska:titok:Nagy József" tomb = Split(str,":") print tomb()
Tömbök Vektor '6 darab elem 0-tól 5-ig szomozva: Dim tomb(5) tomb() = 35 print tomb()
Mátrix '6 darab elem 0-tól 5-ig szomozva: Dim tomb(2, 3) tomb() = 35 print tomb()
Kezdőérték tomb = array("Péter", "János", "Tibor") print tomb()
Feladatok Sub Feladat067 print "Gyártó: Sallai András" & chr(13) & (((3^7)/27)*2)/sqr(10*(3^5)) End Sub Sub Feladat071 Dim r as double http://www.szit.hu/
Printed on 2017/01/12 13:05
2017/01/12 13:05
11/11
LibreOffice Makró Basic
Dim h as double r = InputBox("Sugár") h = InputBox("Magasság") v = (1/3)*(r^2)*pi*h print "Térfogat: ", v End Sub Sub KockaPoker v1 = int(rnd * 6) v2 = int(rnd * 6) v3 = int(rnd * 6) v4 = int(rnd * 6) v5 = int(rnd * 6) print v1, v2, v3, End Sub Sub KockaPoker2 v1 = int(rnd v2 = int(rnd v3 = int(rnd v4 = int(rnd v5 = int(rnd
* * * * *
6) 6) 6) 6) 6)
+ 1 + 1 + 1 + 1 + 1 v4, v5
+ + + + +
1 1 1 1 1
a = v1 & " " & v2 & " " & v3 & " " & v4 & " " & v5 InputBox(a) End Sub
Párbeszédablak 1. 2. 3. 4. 5.
Eszközök → Makrók → Párbeszédablakok rendezése → Új Megadjuk a nevet → Ok Szerkesztés Megnyílik a Basic párbeszédablak-szerkesztő Vezérlőelemek eszköztár ha nem látszik 1. A vezérlőelemek melletti nyílra kattintunk
From: http://www.szit.hu/ - SzitWiki Permanent link: http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:makr%C3%B3_basic Last update: 2014/12/06 01:52
SzitWiki - http://www.szit.hu/