SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Basisinformationstechnologie I
Wintersemester 2014/15
21. Januar 2015 – Programmiersprachen III. Algorithmen und Datenstrukturen
Abschlussklausur am 04.02.2015
von 12:15 (pünktlich) bis 13:45 in
Hörsaal XXX, Gyrhofstr. 15
 Drei-Schichten Architektur / MVC
 Programmiersprachen – Konzepte
 Variablen
 Auswahlanweisungen
 Kontrollstrukturen
 Objektorientierte Programmierung
 Objekt
 Kapselung / Information Hiding / Geheimnisprinzip
 Vererbung
Themenüberblick „Programmiersprachen II“
 Interpretiert vs. compiliert
 Typisierung: statisch, dynamisch, etc.
 Paradigmen:
 Funktional
 Objektorientiert
 Grundlegende Konzepte: Variablen, Arrays,
Kontrollstrukturen, Funktionen, Objekte
 Das Rad nicht neu erfinden: Design Patterns /
Entwurfsmuster, Strukturierungsmuster: MVC (u.a.)
 Modellierung
Programmiersprachen – Charakteristika, Konzepte und Methoden
Darstellung
Daten
Logik
Model!
Spielfeld: 3 x 3 Felder
Auf jedem Feld wird die ID des Spielers
abgelegt, der / die das Feld angeklickt hat
var gameBoard = [][];
Spielfluss und
Anwendungslogik
Präsentation und Interaktion – die Spielschleife
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE WIE FOLGEND:
WENN ein leeres Spielfeld angeklickt wurde:
lege die aktuelle SpielerID im
zweidimensionalen Array „gameGrid“ ab
und stelle das Spielersymbol dar
IM ANDEREN FALLE:
tue nichts
Prüfe die Gewinnbedingung
Gewinn- und Abbruchbedingung
Ein Spieler / eine Spielerin hat das Spiel gewonnen,
WENN:
der Spieler drei seiner Symbole in
(unmittelbarer) horizontaler Reihenfolge
abgelegt hat
ODER
der Spieler drei Symbole in diagonaler
Reihenfolge abgelegt hat
Kontrollstrukturen
Unterscheidung von Kontrollstrukturen in:
 Auswahlanweisungen
 ?
 Wiederholungsanweisungen
 ?
 Sprunganweisungen
 ?
Kontrollstrukturen
Unterscheidung von Kontrollstrukturen in:
 Auswahlanweisungen
 if
 if else
 (switch)
 Wiederholungsanweisungen
 while
 for
 do while
 Sprunganweisungen
 return
 break
 continue
Kontrollstrukturen
Gewinn- und Abbruchbedingung
Ein Spieler / eine Spielerin hat das Spiel gewonnen,
WENN (IF):
der Spieler drei seiner Symbole in
(unmittelbarer) horizontaler Reihenfolge
abgelegt hat
ODER (II)
der Spieler drei Symbole in diagonaler
Reihenfolge abgelegt hat
Übung 1
Gewinnbedingung
Prüfen I: Hat ein Spieler / eine Spielerin drei ihrer
Symbole in (unmittelbarer) horizontaler
Reihenfolge abgelegt?
Prüfen II: Finden sich drei Symbole eines Spielers
in diagonaler Folge?
// Test horizontale Felder
if (gameBoard[0][0] === 1 &&
gameBoard[1][0] === 1 &&
gameBoard[2][0] === 1) {
alert(“Spielerin mit der ID 1 hat
gewonnen!“);
}
Übung 1
// Test diagonale Felder
if (gameBoard[0][0] === 1 &&
gameBoard[1][1] === 1 &&
gameBoard[2][1] === 1) {
alert(“Spielerin mit der ID 1 hat
gewonnen!“);
}
Übung 1
Präsentation und Interaktion – die Spielschleife
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE WIE FOLGEND:
WENN ein leeres Spielfeld angeklickt wurde:
lege die aktuelle SpielerID im
zweidimensionalen Array „gameGrid“ ab
und stelle das Spielersymbol dar
IM ANDEREN FALLE:
tue nichts
Prüfe die Gewinnbedingung
while (ausdruck){
anweisung1
anweisung2
anweisung3
}
 „Führe anweisung1 und anweisung2 und
anweisung3 so lange aus, wie die Bedingung
„ausdruck“ WAHR (TRUE) ist.“
Wiederholungsanweisungen: while
do {
anweisung1
anweisung2
anweisung3
anweisung4
...
} while (ausdruck)
Wiederholungsanweisungen: do while
for(initialisierung;
abbruchbedingung;
inkrementierung) {
anweisung1
anweisung2
anweisung3
anweisung4
...
}
Wiederholungsanweisungen: for
Übung 2
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE WIE FOLGEND:
WENN ein leeres Spielfeld angeklickt wurde:
lege die aktuelle SpielerID im
zweidimensionalen Array „gameGrid“ ab
und stelle das Spielersymbol dar
IM ANDEREN FALLE:
tue nichts
Prüfe die Gewinnbedingung
 Drei-Schichten Architektur / MVC
 Programmiersprachen – Konzepte
 Variablen
 Arrays
 Auswahlanweisungen
 Kontrollstrukturen
 Objektorientierte Programmierung
 Objekt
 Kapselung / Information Hiding / Geheimnisprinzip
 Vererbung
Themenüberblick „Programmiersprachen II“
Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
var game = {
name : '',
setName : function( gameName ) {
this.name = gameName;
},
state : '',
getGameState : function() {
return this.state;
},
setGameState : function( gameState ) {
this.state = gameState;
},
[…]
};
Objektorientierte Programmierung
Algorithmen und
Datenstrukturen
Datenstrukturen
 Stack / Kellerspeicher
 Queue
 Liste
 Baum
 Traversierungsarten
 Preorder
 Inorder
 Postorder
 Levelorder
Such- und Sortieralgorithmen
Themenüberblick „Algorithmen und Datenstrukturen“
Datentyp:
 Bauplan für eine Variable (benannte Speicherstelle im
Arbeitsspeicher des Rechners)
 Legt fest, welche Operationen mit einer Variable möglich
sind
 Bestimmt die interne Darstellung (Repräsentation) der
Variablen im Rechner
 Z.B. bool, int, float, double, unsigned int, etc.
Algorithmen, Datenstrukturen
Datenstruktur = Daten + Funktionen
Datenstrukturen:
 Stacks (Stapel)
 Queues
 Listen
 Einfach verkettete Listen
 Doppelt verkettete Listen
 Bäume
 Binärbäume
Algorithmen, Datenstrukturen
Stack / Kellerspeicher
Datenstruktur „Stack“
 Auch: „Kellerspeicher“
 Abstrakter Datentyp, bei dem Elemente eingefügt und
wieder entfernt werden können
LIFO-Prinzip: Last In, First Out – bei der
Datenstruktur „Stack“ kann immer nur auf das Element
zugegriffen werden, das als letztes eingefügt, d.h. auf
den Stapel gelegt wurde
Typische Stackoperationen / Schnittstellen
 push(x, s)
legt ein Element x auf den Stack s
 top(s), peek(s)
liefert das zuletzt auf den Stack s gelegte Element (ohne das
entsprechende Element zu entfernen)
 pop(s)
entfernt das zuletzt auf den Stack s gelegte Element und gibt
es zurück
 isEmpty(s)
gibt an, ob der Stack s leer ist
Datenstruktur Stack
Queue
Queue / Warteschlange
Listen
Liste  Folge von Elementen; jedes Element = Teil
einer Kette
Jeder Eintrag in der Liste verfügt nicht nur über
seinen Inhalt, sondern darüber hinaus über einen
Zeiger auf das nächste Listenelement:
Einfach verkettete Liste
Um die Liste zu durchlaufen:
 Beginn beim ersten Element („Anker“ für den Beginn der
Liste)
 „next“ zeigt auf das nächste Listenelement
 Letztes Glied der Kette: next-Zeiger = NULL
 Um wieder auf das erste Element zugreifen zu können:
anfang-Zeiger auf das erste Element der Liste
 Hilfszeiger auf innere Elemente: cursor
Einfach verkettete Liste
Element Einfügen:
 Ursprüngliche Liste:
 Liste nach Einfügen von Element „mat“
Einfach verkettete Liste
bat cat sat vat NULLstart
bat cat sat vat NULLstart
mat
Element Löschen:
 Ursprüngliche Liste:
 Liste nach Entfernen des Elements „cat“
Einfach verkettete Liste
bat cat sat vat NULLstart
bat cat sat vat NULLstart
Vorteil:
 Elemente lassen sich sehr schnell am Anfang der einfach
verketteten Liste einfügen
Nachteil:
 Über jedes einzelne Element muss iteriert werden
Einfach verkettete Liste
bat cat sat vat NULLstart
Charakteristika: Jedes Element verfügt über
 Einen Inhalt
 Einen Zeiger auf das nachfolgende Element
 Einen Zeiger auf das vorhergehende Element
Vorteile
 Möglichkeit, vom Ende der Liste zum Beginn zu iterieren
 Schnelles Löschen und Einfügen von Elementen
Nachteil
 Speicherplatzbedarf durch zweiten Zeiger erhöht
Doppelt verkettete Liste
bat cat sat vat NULLstart
Datenstrukturen √
 Stack / Kellerspeicher √
 Queue √
 Liste √
 Baum
 Traversierungsarten
Themenüberblick „Algorithmen und Datenstrukturen“
Extensivform von Spielen (Tic Tac Toe)
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)
Der Minimax-Algorithmus
𝑥0
𝑥1 𝑥2
𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9 𝑥10 𝑥11 𝑥12
𝑥3
3 12 8 2 4 6 14 5 2
𝑠 𝑀𝐴𝑋1
𝑠 𝑀𝐴𝑋2
𝑠 𝑀𝐴𝑋3
MAX
MIN 3 2 2
3
min(3,12,8)=3
min(2,4,6)=2
max(3,2,2)=3
min(14,5,2)=2
Baum: Begrifflichkeiten
Bäume
Wurzel
Kante
Innerer Knoten / Kindknoten
Blatt
Binärbaum: Definiert als ein Baum, dessen Knoten
über höchstens zwei Kindknoten verfügen dürfen:
Binärbäume
Traversieren  Jeden Knoten des Baumes
besuchen
Reihenfolge, in der die Knoten besucht werden:
 Preorder, auch: „Hauptreihenfolge“ / Tiefensuche
 Inorder, auch: „symmetrische Reihenfolge“
 Postorder, auch: „Nebenreihenfolge“
 Levelorder, auch: „Breitensuche“
Traversierung
Rekursive Regel:
 besuche die Wurzel
 Besuche den linken
Unterbaum
 Besuche den rechten
Unterbaum
 WLR
Preorder Traversierung
Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Depth-First-Search.gif&filetimestamp=20090326120256 (MRE)
Preorder Traversierung – Schritt 0
P
M
S
A A
L
E
T
R
E
E
Preorder Traversierung – Schritt 1
P
M
S
A A
L
E
T
R
E
EAusgabe: P
Preorder Traversierung – Schritt 2
P
M
S
A A
L
E
T
R
E
EAusgabe: P M
Preorder Traversierung – Schritt 3
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S
Preorder Traversierung – Schritt 4
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A
Preorder Traversierung – Schritt 5
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A
Preorder Traversierung – Schritt 6
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L
Preorder Traversierung – Schritt 7
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L E
Preorder Traversierung – Schritt 8
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L E R
Preorder Traversierung – Schritt 9
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L E R T
Preorder Traversierung – Schritt 10
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L E R T E
Preorder Traversierung – Schritt 11
P
M
S
A A
L
E
T
R
E
EAusgabe: P M S A A L E R T E E
Datenstrukturen √
 Stack / Kellerspeicher √
 Queue √
 Liste √
 Baum √
 Traversierungsarten √
 Preorder √
 Inorder √
 Postorder √
 Levelorder √
Such- und Sortieralgorithmen
Themenüberblick „Algorithmen und Datenstrukturen“
Such- und
Sortieralgorithmen
Extensivform von Spielen (Tic Tac Toe)
Juul, Jesper: „255,168 ways of playing Tic Tac Toe”
(„http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)
Problemstellung: Wie finden wir eine gesuchte
Audio CD?
Umgebungsvariablen:
 CD-Sammlung ist unsortiert
ODER
 Sortierte CD-Sammlung
Problemstellung Suche
Sequenzielle / Lineare Suche in unsortierter Sammlung:
Anzahl Suchvorgänge bei n Elementen:
 minimal: 1(best case),
 maximal: n (worst case)
 Durchschnittlich müssen die Hälfte der Einträge
durchgesehen werden, um das gewünschte Element zu finden
(average case)
 Anzahl der Suchschritte steigt proportional mit der
Anzahl der Einträge
Lineare Suche
Quelle und Bildnachweis: http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo1.php
Sortierstrategien / -Verfahren:
 Insertionsort: Sortieren durch Einfügen
 Analog dem Vorgehen eines Kartenspielers: Neue
Karten werden einzeln einsortiert, bevor die nächste
Karte aufgenommen wird
 Bubblesort: Vergleichsbasierter Sortieralgorithmus
 Heapsort
 Quicksort (vgl. C.A.R. Hoare)
Sortieralgorithmen
Bubblesort
Bubblesort: Sortiert z.B. ein Array von Datensätzen durch wiederholtes
Vertauschen von Nachbarfeldern, die in falscher Reihenfolge stehen
Wird so lange wiederholt, bis das Array vollständig sortiert ist.
Dabei wird das Array in mehreren Durchgängen von links nach rechts
durchwandert.
Bei jedem Durchgang werden alle Nachbarfelder verglichen und ggf.
vertauscht. Nach dem 1. Durchgang hat man folgende Situation:
 Das größte Element ist ganz rechts.
 Alle anderen Elemente sind zwar zum Teil an besseren Positionen (also näher an
der endgültigen Position), im Allgemeinen aber noch unsortiert.
Wandern des größten Elementes nach rechts  Aufsteigen von
Luftblasen: Größte Luftblase steigt nach oben
Bubblesort
Zu sortieren ist die Zahlenfolge 55 07 78 12 42
(vgl. http://de.wikipedia.org/wiki/Bubblesort)
1. Durchlauf:
55 07 78 12 42
07 55 78 12 42
07 55 78 12 42
07 55 12 78 42
? ? ?
Bubblesort
Zu sortieren ist die Zahlenfolge 55 07 78 12 42
(vgl. http://de.wikipedia.org/wiki/Bubblesort)
2. Durchlauf:
07 55 12 42 78
07 55 12 42 78
07 12 55 42 78
07 12 42 55 78
07 12 42 55 78
3. Durchlauf:
07 12 42 55 78
07 12 42 55 78
07 12 42 55 78
07 12 42 55 78  Fertig sortiert.
Bubblesort
/
Abschlussklausur am 04.02.2015
von 12:15 (pünktlich) bis 13:45 in
Hörsaal XXX, Gyrhofstr. 15

Weitere ähnliche Inhalte

Andere mochten auch

Cap4
Cap4Cap4
Cap4
CJAO
 
Gymnasium bildungsplan gesamt
Gymnasium bildungsplan gesamtGymnasium bildungsplan gesamt
Gymnasium bildungsplan gesamt
Mirko
 

Andere mochten auch (10)

Jugendschutz
JugendschutzJugendschutz
Jugendschutz
 
Vortrag "Humanethologie goes Business" in Wien Geburtstag Prof. Dr. Karl Grammer
Vortrag "Humanethologie goes Business" in Wien Geburtstag Prof. Dr. Karl GrammerVortrag "Humanethologie goes Business" in Wien Geburtstag Prof. Dr. Karl Grammer
Vortrag "Humanethologie goes Business" in Wien Geburtstag Prof. Dr. Karl Grammer
 
Diseño de Juego
Diseño de JuegoDiseño de Juego
Diseño de Juego
 
PR-Trends 2008
PR-Trends 2008PR-Trends 2008
PR-Trends 2008
 
Seguridad de contenidos, Foro FAST, 2006
Seguridad de contenidos, Foro FAST, 2006Seguridad de contenidos, Foro FAST, 2006
Seguridad de contenidos, Foro FAST, 2006
 
Cap4
Cap4Cap4
Cap4
 
Cap1
Cap1Cap1
Cap1
 
Enterprise mashups - Remix the Web. Create your own workplace.
Enterprise mashups - Remix the Web. Create your own workplace.Enterprise mashups - Remix the Web. Create your own workplace.
Enterprise mashups - Remix the Web. Create your own workplace.
 
Gymnasium bildungsplan gesamt
Gymnasium bildungsplan gesamtGymnasium bildungsplan gesamt
Gymnasium bildungsplan gesamt
 
ASP.NET MVC a TDD
ASP.NET MVC a TDDASP.NET MVC a TDD
ASP.NET MVC a TDD
 

Ähnlich wie BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III

Ähnlich wie BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III (7)

Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstr...
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstr...Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstr...
Bit WiSe 2013 | Basisinformationstechnologie I - 12: Algorithmen und Datenstr...
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Messen mit LabVIEW- Block 3
Messen mit LabVIEW- Block 3Messen mit LabVIEW- Block 3
Messen mit LabVIEW- Block 3
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie IIBIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
 
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
 

Mehr von Institute for Digital Humanities, University of Cologne

Mehr von Institute for Digital Humanities, University of Cologne (20)

Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
 
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
 
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung IBit wisem 2015-wieners-sitzung-12_Zusammenfassung I
Bit wisem 2015-wieners-sitzung-12_Zusammenfassung I
 

Kürzlich hochgeladen

1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf
QucHHunhnh
 
1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf
QucHHunhnh
 

Kürzlich hochgeladen (8)

Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_EssenAngewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
 
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-EssenWirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
 
Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!
 
1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf
 
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdfLAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
 
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg EssenBetriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
 
1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf
 
Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.
 

BIT I WiSe 2014 | Basisinformationstechnologie I - 10: Programmiersprachen III

  • 1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de Basisinformationstechnologie I Wintersemester 2014/15 21. Januar 2015 – Programmiersprachen III. Algorithmen und Datenstrukturen
  • 2. Abschlussklausur am 04.02.2015 von 12:15 (pünktlich) bis 13:45 in Hörsaal XXX, Gyrhofstr. 15
  • 3.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte  Variablen  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung Themenüberblick „Programmiersprachen II“
  • 4.  Interpretiert vs. compiliert  Typisierung: statisch, dynamisch, etc.  Paradigmen:  Funktional  Objektorientiert  Grundlegende Konzepte: Variablen, Arrays, Kontrollstrukturen, Funktionen, Objekte  Das Rad nicht neu erfinden: Design Patterns / Entwurfsmuster, Strukturierungsmuster: MVC (u.a.)  Modellierung Programmiersprachen – Charakteristika, Konzepte und Methoden
  • 5.
  • 7. Model! Spielfeld: 3 x 3 Felder Auf jedem Feld wird die ID des Spielers abgelegt, der / die das Feld angeklickt hat var gameBoard = [][];
  • 9. Präsentation und Interaktion – die Spielschleife SOLANGE kein Spieler / keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  • 10. Gewinn- und Abbruchbedingung Ein Spieler / eine Spielerin hat das Spiel gewonnen, WENN: der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt hat ODER der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat
  • 12. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  ?  Wiederholungsanweisungen  ?  Sprunganweisungen  ? Kontrollstrukturen
  • 13. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue Kontrollstrukturen
  • 14. Gewinn- und Abbruchbedingung Ein Spieler / eine Spielerin hat das Spiel gewonnen, WENN (IF): der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt hat ODER (II) der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat
  • 15. Übung 1 Gewinnbedingung Prüfen I: Hat ein Spieler / eine Spielerin drei ihrer Symbole in (unmittelbarer) horizontaler Reihenfolge abgelegt? Prüfen II: Finden sich drei Symbole eines Spielers in diagonaler Folge?
  • 16. // Test horizontale Felder if (gameBoard[0][0] === 1 && gameBoard[1][0] === 1 && gameBoard[2][0] === 1) { alert(“Spielerin mit der ID 1 hat gewonnen!“); } Übung 1
  • 17. // Test diagonale Felder if (gameBoard[0][0] === 1 && gameBoard[1][1] === 1 && gameBoard[2][1] === 1) { alert(“Spielerin mit der ID 1 hat gewonnen!“); } Übung 1
  • 18. Präsentation und Interaktion – die Spielschleife SOLANGE kein Spieler / keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  • 19. while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“ Wiederholungsanweisungen: while
  • 20. do { anweisung1 anweisung2 anweisung3 anweisung4 ... } while (ausdruck) Wiederholungsanweisungen: do while
  • 22. Übung 2 SOLANGE kein Spieler / keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND: WENN ein leeres Spielfeld angeklickt wurde: lege die aktuelle SpielerID im zweidimensionalen Array „gameGrid“ ab und stelle das Spielersymbol dar IM ANDEREN FALLE: tue nichts Prüfe die Gewinnbedingung
  • 23.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte  Variablen  Arrays  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung Themenüberblick „Programmiersprachen II“
  • 24. Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  • 25. var game = { name : '', setName : function( gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] }; Objektorientierte Programmierung
  • 27. Datenstrukturen  Stack / Kellerspeicher  Queue  Liste  Baum  Traversierungsarten  Preorder  Inorder  Postorder  Levelorder Such- und Sortieralgorithmen Themenüberblick „Algorithmen und Datenstrukturen“
  • 28. Datentyp:  Bauplan für eine Variable (benannte Speicherstelle im Arbeitsspeicher des Rechners)  Legt fest, welche Operationen mit einer Variable möglich sind  Bestimmt die interne Darstellung (Repräsentation) der Variablen im Rechner  Z.B. bool, int, float, double, unsigned int, etc. Algorithmen, Datenstrukturen
  • 29. Datenstruktur = Daten + Funktionen Datenstrukturen:  Stacks (Stapel)  Queues  Listen  Einfach verkettete Listen  Doppelt verkettete Listen  Bäume  Binärbäume Algorithmen, Datenstrukturen
  • 31. Datenstruktur „Stack“  Auch: „Kellerspeicher“  Abstrakter Datentyp, bei dem Elemente eingefügt und wieder entfernt werden können LIFO-Prinzip: Last In, First Out – bei der Datenstruktur „Stack“ kann immer nur auf das Element zugegriffen werden, das als letztes eingefügt, d.h. auf den Stapel gelegt wurde
  • 32. Typische Stackoperationen / Schnittstellen  push(x, s) legt ein Element x auf den Stack s  top(s), peek(s) liefert das zuletzt auf den Stack s gelegte Element (ohne das entsprechende Element zu entfernen)  pop(s) entfernt das zuletzt auf den Stack s gelegte Element und gibt es zurück  isEmpty(s) gibt an, ob der Stack s leer ist Datenstruktur Stack
  • 33. Queue
  • 36. Liste  Folge von Elementen; jedes Element = Teil einer Kette Jeder Eintrag in der Liste verfügt nicht nur über seinen Inhalt, sondern darüber hinaus über einen Zeiger auf das nächste Listenelement: Einfach verkettete Liste
  • 37. Um die Liste zu durchlaufen:  Beginn beim ersten Element („Anker“ für den Beginn der Liste)  „next“ zeigt auf das nächste Listenelement  Letztes Glied der Kette: next-Zeiger = NULL  Um wieder auf das erste Element zugreifen zu können: anfang-Zeiger auf das erste Element der Liste  Hilfszeiger auf innere Elemente: cursor Einfach verkettete Liste
  • 38. Element Einfügen:  Ursprüngliche Liste:  Liste nach Einfügen von Element „mat“ Einfach verkettete Liste bat cat sat vat NULLstart bat cat sat vat NULLstart mat
  • 39. Element Löschen:  Ursprüngliche Liste:  Liste nach Entfernen des Elements „cat“ Einfach verkettete Liste bat cat sat vat NULLstart bat cat sat vat NULLstart
  • 40. Vorteil:  Elemente lassen sich sehr schnell am Anfang der einfach verketteten Liste einfügen Nachteil:  Über jedes einzelne Element muss iteriert werden Einfach verkettete Liste bat cat sat vat NULLstart
  • 41. Charakteristika: Jedes Element verfügt über  Einen Inhalt  Einen Zeiger auf das nachfolgende Element  Einen Zeiger auf das vorhergehende Element Vorteile  Möglichkeit, vom Ende der Liste zum Beginn zu iterieren  Schnelles Löschen und Einfügen von Elementen Nachteil  Speicherplatzbedarf durch zweiten Zeiger erhöht Doppelt verkettete Liste bat cat sat vat NULLstart
  • 42. Datenstrukturen √  Stack / Kellerspeicher √  Queue √  Liste √  Baum  Traversierungsarten Themenüberblick „Algorithmen und Datenstrukturen“
  • 43.
  • 44. Extensivform von Spielen (Tic Tac Toe) Juul, Jesper: „255,168 ways of playing Tic Tac Toe” („http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)
  • 45. Der Minimax-Algorithmus 𝑥0 𝑥1 𝑥2 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9 𝑥10 𝑥11 𝑥12 𝑥3 3 12 8 2 4 6 14 5 2 𝑠 𝑀𝐴𝑋1 𝑠 𝑀𝐴𝑋2 𝑠 𝑀𝐴𝑋3 MAX MIN 3 2 2 3 min(3,12,8)=3 min(2,4,6)=2 max(3,2,2)=3 min(14,5,2)=2
  • 47. Binärbaum: Definiert als ein Baum, dessen Knoten über höchstens zwei Kindknoten verfügen dürfen: Binärbäume
  • 48. Traversieren  Jeden Knoten des Baumes besuchen Reihenfolge, in der die Knoten besucht werden:  Preorder, auch: „Hauptreihenfolge“ / Tiefensuche  Inorder, auch: „symmetrische Reihenfolge“  Postorder, auch: „Nebenreihenfolge“  Levelorder, auch: „Breitensuche“ Traversierung
  • 49. Rekursive Regel:  besuche die Wurzel  Besuche den linken Unterbaum  Besuche den rechten Unterbaum  WLR Preorder Traversierung Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Depth-First-Search.gif&filetimestamp=20090326120256 (MRE)
  • 50. Preorder Traversierung – Schritt 0 P M S A A L E T R E E
  • 51. Preorder Traversierung – Schritt 1 P M S A A L E T R E EAusgabe: P
  • 52. Preorder Traversierung – Schritt 2 P M S A A L E T R E EAusgabe: P M
  • 53. Preorder Traversierung – Schritt 3 P M S A A L E T R E EAusgabe: P M S
  • 54. Preorder Traversierung – Schritt 4 P M S A A L E T R E EAusgabe: P M S A
  • 55. Preorder Traversierung – Schritt 5 P M S A A L E T R E EAusgabe: P M S A A
  • 56. Preorder Traversierung – Schritt 6 P M S A A L E T R E EAusgabe: P M S A A L
  • 57. Preorder Traversierung – Schritt 7 P M S A A L E T R E EAusgabe: P M S A A L E
  • 58. Preorder Traversierung – Schritt 8 P M S A A L E T R E EAusgabe: P M S A A L E R
  • 59. Preorder Traversierung – Schritt 9 P M S A A L E T R E EAusgabe: P M S A A L E R T
  • 60. Preorder Traversierung – Schritt 10 P M S A A L E T R E EAusgabe: P M S A A L E R T E
  • 61. Preorder Traversierung – Schritt 11 P M S A A L E T R E EAusgabe: P M S A A L E R T E E
  • 62. Datenstrukturen √  Stack / Kellerspeicher √  Queue √  Liste √  Baum √  Traversierungsarten √  Preorder √  Inorder √  Postorder √  Levelorder √ Such- und Sortieralgorithmen Themenüberblick „Algorithmen und Datenstrukturen“
  • 64. Extensivform von Spielen (Tic Tac Toe) Juul, Jesper: „255,168 ways of playing Tic Tac Toe” („http://www.jesperjuul.net/ludologist/255168-ways-of-playing-tic-tac-toe)
  • 65.
  • 66. Problemstellung: Wie finden wir eine gesuchte Audio CD? Umgebungsvariablen:  CD-Sammlung ist unsortiert ODER  Sortierte CD-Sammlung Problemstellung Suche
  • 67. Sequenzielle / Lineare Suche in unsortierter Sammlung: Anzahl Suchvorgänge bei n Elementen:  minimal: 1(best case),  maximal: n (worst case)  Durchschnittlich müssen die Hälfte der Einträge durchgesehen werden, um das gewünschte Element zu finden (average case)  Anzahl der Suchschritte steigt proportional mit der Anzahl der Einträge Lineare Suche Quelle und Bildnachweis: http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo1.php
  • 68. Sortierstrategien / -Verfahren:  Insertionsort: Sortieren durch Einfügen  Analog dem Vorgehen eines Kartenspielers: Neue Karten werden einzeln einsortiert, bevor die nächste Karte aufgenommen wird  Bubblesort: Vergleichsbasierter Sortieralgorithmus  Heapsort  Quicksort (vgl. C.A.R. Hoare) Sortieralgorithmen
  • 70. Bubblesort: Sortiert z.B. ein Array von Datensätzen durch wiederholtes Vertauschen von Nachbarfeldern, die in falscher Reihenfolge stehen Wird so lange wiederholt, bis das Array vollständig sortiert ist. Dabei wird das Array in mehreren Durchgängen von links nach rechts durchwandert. Bei jedem Durchgang werden alle Nachbarfelder verglichen und ggf. vertauscht. Nach dem 1. Durchgang hat man folgende Situation:  Das größte Element ist ganz rechts.  Alle anderen Elemente sind zwar zum Teil an besseren Positionen (also näher an der endgültigen Position), im Allgemeinen aber noch unsortiert. Wandern des größten Elementes nach rechts  Aufsteigen von Luftblasen: Größte Luftblase steigt nach oben Bubblesort
  • 71. Zu sortieren ist die Zahlenfolge 55 07 78 12 42 (vgl. http://de.wikipedia.org/wiki/Bubblesort) 1. Durchlauf: 55 07 78 12 42 07 55 78 12 42 07 55 78 12 42 07 55 12 78 42 ? ? ? Bubblesort
  • 72. Zu sortieren ist die Zahlenfolge 55 07 78 12 42 (vgl. http://de.wikipedia.org/wiki/Bubblesort) 2. Durchlauf: 07 55 12 42 78 07 55 12 42 78 07 12 55 42 78 07 12 42 55 78 07 12 42 55 78 3. Durchlauf: 07 12 42 55 78 07 12 42 55 78 07 12 42 55 78 07 12 42 55 78  Fertig sortiert. Bubblesort
  • 73. /
  • 74. Abschlussklausur am 04.02.2015 von 12:15 (pünktlich) bis 13:45 in Hörsaal XXX, Gyrhofstr. 15

Hinweis der Redaktion

  1. Gui-Schicht, Fachkonzeptschicht, Datenhaltungsschicht MVC
  2. Wie prüfen, ob ein Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat? Kontrollstrukturen
  3. Algorithmus: Eindeutige Beschreibung eines endlichen Verfahrens zur Lösung einer bestimmten Klasse von Problemen Komplexität eines Algorithmus: Bedarf an Ressourcen (i.e. Rechenzeit und Speicherplatz) Güte eines Algorithmus: Qualität der Ergebnisse Laufzeit / Rechenbedarf des Algorithmus
  4. FIFO  First In, First Out enQueue  Objekt hinzufügen deQueue  Objekt zurückgeben, anschließend entfernen
  5. Extensivform
  6. Knotenbeziehungen  Achsen: Elternknoten (parent) – Jedes Element verfügt über einen Elternknoten. Ausnahme: ??? Vorfahre (ancestor) – Elternknoten von Knoten Beispiel: Der Knoten „2“ ist Vorfahre des Knotens „3“. Kind (child) – Untergeordnete Knoten Beispiel: „3“ ist Kindknoten von „2“. Geschwister (siblings): Knoten mit gleichen Elternknoten sind Geschwisterknoten. Beispiel: Der Knoten „3“ ist Geschwisterknoten des Knotens „4“.
  7. Extensivform