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 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.
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" 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 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" Í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 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") 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 Szorzás Sub SzamitOsszead print 3 + 5 Osztás: Sub Osztas print 3 / 5 Az eredmény: 0,6 A maradékot a mod operátorral kérhetjük: Sub Maradék print 3 mod 5 Eredménye: 3 Hatványozást a hiányjellel (^) karakterrel lehetséges: Sub Hatvany print 3 ^ 5 Eredménye: 243 Változóhasználat
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 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 Bytes Integer -32768 32767 2 bytes Long -2147483648 to 2147483647 4 bytes Single 1.401298 x 10E-45 3.402823 x 10E38 4 bytes 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 Empty Null Variant változó (a definíció által megadott összes típust tartalmazhatja) A változó nincs inicializálva Nincs érvényes adat Nevesített állandó 8 bytes 8 bytes 64-bites Egyéb tudnivaló const MAX = 4
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, "#.####") Sub formazott a = 35.123 print format(a, "0000.00000") 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 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 Sub szinusz a = sin(1 * pi / 180) print format(a, "#.####") 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 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 Sub Veletlen2 '1-3 vel = int(rnd * 3) + 1 print vel 'A 10i kérésére Sub Lotto
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 = int(rnd * 90) + 1 r2 = int(rnd * 90) + 1 r3 = int(rnd * 90) + 1 r4 = int(rnd * 90) + 1 r5 = int(rnd * 90) + 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 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 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 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 LibreOffice Makró Basic if a>70 then print "Nagyobb" else print "Kisebb" End If 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 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 Iteráció for Sub Iteracio for i = 1 to 2 print "Meg van" next i while Sub Iteracio i= while(i<3) print i i = i + 1 wend
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 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)) 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 Sub KockaPoker v1 = int(rnd * 6) + 1 v2 = int(rnd * 6) + 1 v3 = int(rnd * 6) + 1 v4 = int(rnd * 6) + 1 v5 = int(rnd * 6) + 1 print v1, v2, v3, v4, v5 Sub KockaPoker2 v1 = int(rnd * 6) + 1 v2 = int(rnd * 6) + 1 v3 = int(rnd * 6) + 1 v4 = int(rnd * 6) + 1 v5 = int(rnd * 6) + 1 a = v1 & " " & v2 & " " & v3 & " " & v4 & " " & v5 InputBox(a) 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