180 likes | 308 Views
debugging in Lua. Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke. Merkmale von Lua. Typenbindung ist dynamisch Variablen sind Typ-frei Werte von Daten hingegen sind Typ-behaftet
E N D
debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke
Merkmale von Lua • Typenbindung ist dynamisch • Variablen sind Typ-frei • Werte von Daten hingegen sind Typ-behaftet • Speicherverwaltung erfolgt automatisch • Nicht benötigter Speicher wird freigegeben • Möglichkeit der „Erweiterbaren Semantik“
Merkmale von Lua • Sprache Lua selbst nicht objektorrientiert • Durch Lua eigene Mittel lassen Mechanismen der Objektorientieren Programmierung einbauen (zB. Vererbung) • Ist als Erweiterungssprache gedacht (zB. für die Integration in C/C++) • Kann auch eigenständig genutzt werden
Konventionen zu Benennungen • Normale Variablen beginnen mit Kleinbuchstaben • Funktionen beginnen mit Großbuchstaben • Parameter beginnen mit einen Unterstrich
Syntax • Kommentare sind mit -- eingeleitet. • Mehrzeilige Kommentare sind mit -- [[ möglich. Kommentarende ist bei ]] • Anweisungen können mit einem ; geschlossen werden
Operatoren • "=" --> Zuweisungsoperator • "+" --> Additionsoperator • "-" --> Subtraktionsoperator oder auch Negationsoperator • "*" --> Multiplikationsoperator • "/" --> Divisionsoperator • ".." --> Verknüpfungsoperator
If-else • if (Bedingung) then(Anweisungsblock den Fall)else(Anweisungsblock für unbehandelte Fälle)end
If-ifelse • if (Bedingung A) then(Anweisungsblock für Fall A)elseif (Bedingung B) then(Anweisungsblock für Fall B)(optional: else(Anweisungsblock für unbehandelte Fälle))end
Do-while Schleife • while (Bedingung) do(Anweisung)end
Repeat-until • repeat(Anweisungen)until (Bedingung)
Reservierte Schlüsselwörter • and • break • do • else • elseif • end • false • for • function • if • in • local • nil • not • or • repeat • return • then • true • until • while
Fehlerquellen • Verwendete Schlüsselwörter als Name • Zeichen vergessen: • statt .. nur . / statt -- nur – • Funktion, Schleife, etc nicht mit „end“ beendet • Eingebundene Datei nicht im selben Ordner
Leere Werte • ““ oder 0 sind keine leeren Werte • Nur nil und false sind „nichts“. • Eine leere Tabele {} ist „nil“ • nil kann als Abfrage genutzt werden
Reihenfolge beachten! • Lokale Funktionen: • Erst definieren • Dann verwenden • Bei Verschachtelungen gilt das Zwiebelprinzip
Programmabstürze unterdrücken • Mit der Funktion „pcall“ lassen sich unerwünschte Programmabbrüche vermeiden • pcall = „protectedcall“ • Fehlerhafte Funktion führt nicht zu Programmabbruch • Syntax: pcall (f, arg1, ···)
Defensives Programmieren • Bevor mit Werten gearbeitet wird, erst überprüfen ob diese gegeben sind • Bsp. Ausgelagerte Datei • Nutzereingaben
Lua-Editor/Debugger • Löve Studio: http://bitbucket.org/kevinclancy/love-studio/ • LuaEdit: http://luaedit.sourceforge.net/download.html
Quellen: • http://www.andreas-rozek.de/Lua/ • http://lua.lickert.net/ • http://www.andreas-rozek.de/Lua/Modules/FunctionProtection.html • http://rail-sim.de/wiki/index.php/Das_Lua-Tutorial_-_1_Grundlagen • http://de.wikipedia.org/wiki/Hilfe:Lua/Programmierung