Die Skriptsprache Lua 17. 4. 2008 Softwaretechnologie II.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Forschungszentrum caesar
Einführung in die Programmierung Zusammenfassung
Game Development with Lua Kapitel 1-5
Zusammenfassung der Vorwoche
Kapselung , toString , equals , Java API
10. Grundlagen imperativer Programmiersprachen
4. Serverbasierte Programmierung: Perl 4.1Grundlagen 4.1.1HTTP-Server und CGI-Schnittstelle 4.1.2Formulare 4.1.3Ein einfaches Perl Programm 4.2Interaktion.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Das erste Programm (Folie 16)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Java und Eclipse.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Proseminar Programmiersprachen Python
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Style Guidelines für Java und .NET
PHP Basic.
Grundkonzepte des Programmierens (mit ActionScript)
Purga - Scriptengine Ein Einblick.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
EPROG Tutorium #6 Philipp Effenberger
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
Starten der Entwicklungsumgebung (IDE)
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
TypoScript.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
(Syntax, Strings/Zahlen, Variablen, Arrays)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
The Programming Language Pascal
Objektorientierte (OO) Programmierung
Java Programme nur ein bisschen objektorientiert.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
Hello World! Javakurs 2013 Arne Kappen
Aufgaben zu Rückgabewerten
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Die Skriptsprache Lua Softwaretechnologie II

1Überblick Entwicklung seit 1993 an der Pontifical Catholic University in Rio de Janeiro, Brasilien - freie Software (MIT-Lizenz) - Source-Code besteht aus ca Zeilen in C - Interpreter & Lua-Bibliotheken benötigen zusammen nur ca. 400 KB Speicherplatz - keine echte objektorientierte Sprache, stattdessen Meta-Mechanismen zur Implementierung von Klassen und Vererbung

2Anwendung - kann auf allen Plattformen, die einen ANSI/ISO C-Compiler besitzen, verwendet werden: Unix / Linux, Windows, Handybetriebssysteme... - laut Entwicklern extrem schnell, sowohl in Benchmarks als auch in komplexen Anwendungen - das API von Lua erlaubt es, Code in Lua in Anwendungen anderer Sprache (C++, Java, Perl...) zu integrieren - Lua kann andersherum auch mit Bibliotheken in anderen Sprachen erweitert werden - viele professionelle Programme und besonders Spiele verwenden Lua, z. B. um mehrere Ebenen der Software zu trennen

2 - Lua kann dann den Entwicklern oder den Kunden das Skripten vereinfachen - die Segmente in Lua sind dann vom eigentlichen Spiel abstrahiert und besitzen dafür eine hohe Wiederverwendbarkeit - z. B. können Spieler Konfigurationsdateien in Lua editieren oder simple Add-Ons für das Spiel schreiben, ohne einen tiefen Einblick in die Spiel- Engine zu haben - einige aktuelle Spiele, die Lua nutzen: Crysis, FarCry, World of Warcraft, Die Siedler V, Spellforce u. v. m.

2 - für unsere Zwecke ein mögliches Anwendungsgebiet: KI-Routinen in Lua verfassen - denkbar: Aussehen des Interfaces, Beschreibung der Spielwelt, Spielregeln... - Kernteile eines Spieles bestehen dennoch meistens aus C++ Code

3Editor - mehrere Editoren verfügbar, z. B. LuaEdit (

4Basics - case-sensitiv: meineVariable und meinevariable werden unterschieden - keywords: and break do else elseif end false for function if in localnil not or repeat return thentrue until while - tokens: + - * / % ^ # = = ~= = = ( ) { } [ ] ; :,......

5Variablen - dynamically typed language - Basistypen : nil, boolean, number, string, function, userdata, thread, table AnzahlEiskugeln = 3 AnzahlEiskugeln = 3.0 AnzahlEiskugeln = drei print ( AnzahlEiskugeln)

5 eins = Zwei Strings zwei = verbinden zusammen = eins.. zwei ein_string = bla eine_zahl = 50 ergebnis = ein_string + eine_zahl ichbineinbool = true

6Tabellen - ein aggregierter Datentyp, in Lua große Bedeutung - für Listen, Arrays, assoziative Arrays, geschachtelte Tabellen - werden auch zum Simulieren von Objekten benötigt tab = { value = 123, text = "hello" } print( x.value) print( x.text)

6 - geschachtelte Tabellen tab = { t_eins = { name="Pi", value= }, t_zwei = { name="light speed", value=3e8 } }

7Funktionen - analog zu C++ function meineFunktion( summand1, summand2) ausgabe = summand1 + summand2 print( ausgabe) return ausgabe end meine Funktion( summand1, summand2)

8Typen - zur Identifizierung eines Typs ichBinEinString = "123" print( type( ichBinEinString)) - viele nützliche vordefinierte Funktionen in der Lua-Bibiliothek (siehe Online-Dokumentation / mitgeliefertes Handbuch)

9Blöcke - Lua arbeitet den Code in Blöcken ab - Block beginnt immer mit einem Schlüsselwort und endet mit end - Ausnahme: repeat - Kennzeichnung eines Blockes mit { }, wie in C++, nicht nötig if Bedingung thenrepeat... Block Block... end until Bedingung

10Kontrollstrukturen - if / then / else / elseif, for, while, repeat for variable = anfang, ende, sprungWeite do... Block... end

11Metatables - Tabellen oder auch den userdata Objekten können Metatabellen zugeordnet werden - Beispiel: es wäre ohne Metatabelle nicht möglich, zwei Tabellen zu addieren vek1 = { x = 3, y = 0, z = 0 } vek2 = { x = 0, y = 1, z = 2 } neu = vek1 + vek2 wäre ohne zugehörige Metatabelle NICHT möglich (vek1 und vek2 würden jeweils nur eine globale Position der Tabelle zurückgeben)

11 metaTab = { } metaTab.__add = function( table1, table2 )... wie soll diese Methode aussehen... end - Metatabelle muss mit der Tabelle verknüpft werden setmetatable(Tabelle, metaTab)