Schleifen und Blöcke


Schleifen gehören ebenso zu den Dingen, um die man in LUA nie herumkommen wird, sind aber sowieso recht einfach. Zu den Schleifen & Blocks in LUA gehören die if-Blocks, die for-Schleifen, die while-Schleifen und die repeat-until-Schleifen. Ich werde hier nur näher auf die if-Blocks eingehen, aber trotzdem kurz erklären, welche Schleife was bedeutet:

	for a=1,5 do
		screen:print(0,0,"a ist kleinergleich 5 und groeßergleich 1 !", farbe)
	end

->für z.B eine Zahl a von 1 bis 5 tue blablabla...

	while a==2 do
		screen:print(0,0"a ist 2",farbe)
	end

->während a gleich 2 ist, tue blablabla...(der Unterschied zu den if-blocks: die while-schleife wird mehr als einmaldurchlaufen, sie kann sogar dauerhaft wiederholt werden. Die if-blocks gelten außerhalb von Schleifen nur einmal)

	repeat a = a + 1 until a = 5 end

->wiederhole a ist a + 1 bis a gleich 5 ist...

Das waren ein paar kleine Beispiele. Jetzt zum if-Block, den man am häufigsten braucht:

	farbe = Color.new(255,255,255)
	a=5b=3c=a*b
	
	while true do
		if a*b+c == 30 then
			screen:print(1,1,a*b+c, farbe)
		end
		if a*b+c > 30 then
			screen:print(1,1,"da stimmt was nicht", farbe)
		end
		
		screen.flip()
		screen.waitVblankStart()
	end

Die Bedeutung ist denkbar einfach: Falls a*b+c gleich 30 ist, wird das Ergebnis 30 auf dem PSP-Bildschirm ausgegeben. Falls a*b+c > 30 sein sollte, was aber nicht der Fall ist, erscheint der Text "da stimmt was nicht"... Es gibt noch andere Wege, das auszudrücken, man kann das alles in eine if-schleife packen:

	if a*b+c == 30 then
		screen:print(1,1,a*b+c, farbe)
	else
		screen:print(1,1,"da stimmt was nicht", farbe)
	end

Hier wird für alle Werte ungleich 30 der Text ausgegeben "da stimmt was nicht". Es gibt aber noch eine andere Methode:

	if a*b+c == 30 then
		screen:print(1,1,a*b+c, farbe)
	elseif a*b+c > 30 then
		screen:print(1,1,"da stimmt was nicht", farbe)
	end

..."elseif" ermöglicht sogar mehrere Alternativen innerhalb eines Blocks.