Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:basic:basic_libreoffice:makro_basic

< Basic LibreOffice

LibreOffice Makró Basic

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.

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

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
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 Bytes Egyéb tudnivaló
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 8 bytes
Currency -922337203685477.5808 to +922337203685477.5807 8 bytes 64-bites
Boolean true, false
Date Day, Month, Year vagy the Hour, Minute, Second függvények értékei
Object Objektumváltozó
Variant Variant változó (a definíció által megadott összes típust tartalmazhatja)
Empty A változó nincs inicializálva
Null Nincs érvényes adat

Nevesített állandó

const MAX = 4

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

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

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

Szelekció

if

Sub Szelekcio
	a = 45
	if a>70 then
		print "Nagyobb"
 
	End If
End Sub

Két ágú szelekció:

Sub Szelekcio
	a = 45
	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 > 0 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=0
	while(i<3)
		print i
		i = i + 1	
	wend
End Sub

Sztringkezelés

Darabolás

Dim str As String
str = "joska:titok:Nagy József"
tomb = Split(str,":")
print tomb(0)

Tömbök

Vektor

'6 darab elem 0-tól 5-ig szomozva:
Dim tomb(5)
tomb(0) = 35
print tomb(0)

Mátrix

'6 darab elem 0-tól 5-ig szomozva:
Dim tomb(2, 3)
tomb(0) = 35
print tomb(0)

Kezdőérték

tomb = array("Péter", "János", "Tibor")
print tomb(0)

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
	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) + 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
End Sub
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)
 
End Sub

Párbeszédablak

  1. Eszközök → Makrók → Párbeszédablakok rendezése → Új
  2. Megadjuk a nevet → Ok
  3. Szerkesztés
  4. Megnyílik a Basic párbeszédablak-szerkesztő
  5. Vezérlőelemek eszköztár ha nem látszik
    1. A vezérlőelemek melletti nyílra kattintunk
oktatas/programozas/basic/basic_libreoffice/makro_basic.txt · Utolsó módosítás: 2023/08/24 20:31 szerkesztette: admin