Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Basisinformationstechnologie I
Wintersemester 2014/15
07. Januar 2015 – Programmiersprachen II
7. Drei-Schichten-Architektur
GUI-Schicht
Fachkonzeptschicht
Datenhaltungsschicht
GUI-Schicht: Realisiert die
Benutzungsoberfläche einer
Anwendung – Präsentation der Daten,
Interaktion mit Benutzer / Benutzerin
Fachkonzeptschicht: Modelliert den
funktionalen Kern der Anwendung;
Zugriff auf Datenhaltungsschicht
Datenhaltungsschicht: Form der
Datenspeicherung, z.B. relationale DB
Schichten-Architektur
8. MVC – Model View Controller (Modell, Präsentation, Steuerung)
1972 im Kontext von „Smalltalk“ (objektorientierte Programmiersprache) vorgestellt
16. 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
17. 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
20. Unterscheidung von Kontrollstrukturen in:
Auswahlanweisungen
if
if else
(switch)
Wiederholungsanweisungen
while
for
do while
Sprunganweisungen
return
break
continue
Kontrollstrukturen
24. C++, JavaScript & Co.: (Vergleichs)Operatoren
Operator Operation Beispiel
>
Größer als
(„ist Wert1 größer als Wert2?“) Wert1 > Wert2
<
Kleiner als
(„ist Wert 1 kleiner als Wert2?“) Wert1 < Wert2
>=
Größer gleich
(„ist Wert1 kleiner oder gleich Wert2?“) Wert1 >= Wert2
<=
Kleiner gleich
(„ist Wert1 kleiner oder gleich Wert2?“) Wert1 <= Wert2
== Auf Gleichheit prüfen variable1 == variable2
!= Auf Ungleichheit prüfen variable1 != variable2
&&
Logisches UND: Zwei Bedingungen
prüfen if( (a==b) && (b==c) )
|| Logisches ODER if( (a==b) || (b==c) )
25. WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es_regnet == false) {
ich gehe joggen;
}
26. WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es_regnet == false) {
ich gehe joggen;
} else {
alert(“<3 PS4!“);
}
27. 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
28. Ü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?
29. // 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
30. // 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
31. 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
33. Wiederholungsanweisungen (i.e. while, for, do
while) machen‘s möglich, bestimmte
Verarbeitungsschritte unter bestimmten Umständen
zu wiederholen
Beispiele:
while
for
do while
Wiederholungsanweisungen
37. Ü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
Sind wir aus dem Labyrinth gelangt?
Warum?
Terminierung von Algorithmen
Wir verlangen (zumeist) von Algorithmen, dass sie terminieren, d.h. dass sie in endlicher Zeit (und möglichst schnell Performance) ihre Arbeit erledigt haben
Performanz: Geschwindigkeit der Problemlösung
Einfache Datentypen in C++:
bool Wahrheitswerte
int ganze Zahlen
unsigned int Natürliche Zahlen
float Fließkommazahlen
double Fließkommazahlen, doppelte Genauigkeit
char Zeichen
Zusammengesetzte Datentypen (in C++):
String Zeichenketten
Array Sammlung von Daten eines Datentyps
Wie prüfen, ob ein Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat?
Kontrollstrukturen