SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
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
 Drei-Schichten Architektur / MVC
 Programmiersprachen – Konzepte
 Variablen
 Auswahlanweisungen
 Kontrollstrukturen
 Objektorientierte Programmierung
 Objekt
 Kapselung / Information Hiding / Geheimnisprinzip
 Vererbung
Themenüberblick „Programmiersprachen II“
BIT I WiSe 2014 | Basisinformationstechnologie I - 09: 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
BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
Darstellung
Daten
Logik
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
MVC – Model View Controller (Modell, Präsentation, Steuerung)
1972 im Kontext von „Smalltalk“ (objektorientierte Programmiersprache) vorgestellt
Model / Datenhaltungsschicht
Model!
Spielfeld: 3 x 3 Felder
Auf jedem Feld wird die ID des Spielers
abgelegt, der / die das Feld angeklickt hat
var gameBoard = [][];
Arrays und Variablen
Variable: Benannte Speicherstelle
Charakteristika:
 Datentyp
 Variablenname
 Wert
 (Adresse der Speicherzelle)
JavaScript:
// Deklaration
var meineVariable;
// Initialisierung
meineVariable = 23;
C++:
// Deklaration
int meineVariable;
// Initialisierung
meineVariable = 23;
Arrays
Array  Sammlung von Datenwerten
Jeder Wert in einem Array wird über den Index adressiert; gezählt
wird ab 0: meinArray[index]
// Deklaration
var lottoZahlen = [];
// Initialisierung
lottoZahlen[0] = 23;
lottoZahlen[1] = 15;
lottoZahlen[2] = 3;
lottoZahlen[3] = 42; lottoZahlen[4] = 7; lottoZahlen[5] = 8;
// Ausgabe
document.write( lottoZahlen[0] + “, “ + lottoZahlen[1] );
Mehrdimensionale Arrays
Zugriff auf Werte in zweidimensionalen Arrays:
var cellContent = gameBoard[xCoord][yCoord]
???
1. var cellContent = gameBoard[ 0 ] [ 1 ];
2. var cellContent = gameBoard[ 2 ] [ 2 ];
3. var cellContent = gameBoard[ 3 ] [ 1 ];
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
WENN es heute NICHT regnet, DANN gehe ich joggen…
WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es_regnet ist falsch) {
ich gehe joggen;
}
if (ausdruck) {
anweisung1
anweisung2
anweisung3
...
}
ausdruck  variable1 OPERATOR variable2
Auswahlanweisungen: if
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) )
WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es_regnet == false) {
ich gehe joggen;
}
WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es_regnet == false) {
ich gehe joggen;
} else {
alert(“<3 PS4!“);
}
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
Wiederholungsanweisungen
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
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“
Last, but not….:
Objektorientierte
Softwareentwicklung
Kapselung, Information Hiding, Geheimnisprinzip
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
/

Más contenido relacionado

Andere mochten auch

Maria Esther
Maria EstherMaria Esther
Maria Estherecursocig
 
Papel Arrugado
Papel ArrugadoPapel Arrugado
Papel Arrugadoguestc6068
 
Cemcor präsentation verarbeitung_de
Cemcor präsentation verarbeitung_deCemcor präsentation verarbeitung_de
Cemcor präsentation verarbeitung_deJulija_RU
 
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...Axel Oppermann
 
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...Rainer Endl
 
Taller de Drupal
Taller de DrupalTaller de Drupal
Taller de DrupalSEAT, S.A.
 
Encargo 02 Vizualización de Datos MADA
Encargo 02 Vizualización de Datos MADAEncargo 02 Vizualización de Datos MADA
Encargo 02 Vizualización de Datos MADARodrigo Vera
 
Erasmus soest 2014
Erasmus soest 2014Erasmus soest 2014
Erasmus soest 2014Ewa Kowalska
 
Recruiting-to-go 2013 · Modul 14 · Dr. Henning Staar
Recruiting-to-go 2013 · Modul 14 · Dr. Henning StaarRecruiting-to-go 2013 · Modul 14 · Dr. Henning Staar
Recruiting-to-go 2013 · Modul 14 · Dr. Henning StaarMedia Consult Maier + Partner
 

Andere mochten auch (15)

Maria Esther
Maria EstherMaria Esther
Maria Esther
 
BIT II SoSem 2015 | Basisinformationstechnologie II - 08_Video und Audio
BIT II SoSem 2015 | Basisinformationstechnologie II - 08_Video und AudioBIT II SoSem 2015 | Basisinformationstechnologie II - 08_Video und Audio
BIT II SoSem 2015 | Basisinformationstechnologie II - 08_Video und Audio
 
Neumotorax
NeumotoraxNeumotorax
Neumotorax
 
Papel Arrugado
Papel ArrugadoPapel Arrugado
Papel Arrugado
 
Cemcor präsentation verarbeitung_de
Cemcor präsentation verarbeitung_deCemcor präsentation verarbeitung_de
Cemcor präsentation verarbeitung_de
 
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...
Dialogorientierter Meinungsführer - Entwicklung einer qualifizierten und wert...
 
Mazaricos
MazaricosMazaricos
Mazaricos
 
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...
Ich bin dann mal Off - Gedanken zu Erholung und Müssiggang im digitalen Zeita...
 
Taller de Drupal
Taller de DrupalTaller de Drupal
Taller de Drupal
 
Encargo 02 Vizualización de Datos MADA
Encargo 02 Vizualización de Datos MADAEncargo 02 Vizualización de Datos MADA
Encargo 02 Vizualización de Datos MADA
 
Stress
StressStress
Stress
 
Erasmus soest 2014
Erasmus soest 2014Erasmus soest 2014
Erasmus soest 2014
 
Future Goddess
Future GoddessFuture Goddess
Future Goddess
 
Recruiting-to-go 2013 · Modul 14 · Dr. Henning Staar
Recruiting-to-go 2013 · Modul 14 · Dr. Henning StaarRecruiting-to-go 2013 · Modul 14 · Dr. Henning Staar
Recruiting-to-go 2013 · Modul 14 · Dr. Henning Staar
 
Bestech Ananda | Ananda
Bestech Ananda |  AnandaBestech Ananda |  Ananda
Bestech Ananda | Ananda
 

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-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 
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 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
  • 2.  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
  • 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
  • 10. Model! Spielfeld: 3 x 3 Felder Auf jedem Feld wird die ID des Spielers abgelegt, der / die das Feld angeklickt hat var gameBoard = [][];
  • 11. Arrays und Variablen Variable: Benannte Speicherstelle Charakteristika:  Datentyp  Variablenname  Wert  (Adresse der Speicherzelle) JavaScript: // Deklaration var meineVariable; // Initialisierung meineVariable = 23; C++: // Deklaration int meineVariable; // Initialisierung meineVariable = 23;
  • 12. Arrays Array  Sammlung von Datenwerten Jeder Wert in einem Array wird über den Index adressiert; gezählt wird ab 0: meinArray[index] // Deklaration var lottoZahlen = []; // Initialisierung lottoZahlen[0] = 23; lottoZahlen[1] = 15; lottoZahlen[2] = 3; lottoZahlen[3] = 42; lottoZahlen[4] = 7; lottoZahlen[5] = 8; // Ausgabe document.write( lottoZahlen[0] + “, “ + lottoZahlen[1] );
  • 13. Mehrdimensionale Arrays Zugriff auf Werte in zweidimensionalen Arrays: var cellContent = gameBoard[xCoord][yCoord]
  • 14. ??? 1. var cellContent = gameBoard[ 0 ] [ 1 ]; 2. var cellContent = gameBoard[ 2 ] [ 2 ]; 3. var cellContent = gameBoard[ 3 ] [ 1 ];
  • 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
  • 19. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  ?  Wiederholungsanweisungen  ?  Sprunganweisungen  ? Kontrollstrukturen
  • 20. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue Kontrollstrukturen
  • 21. WENN es heute NICHT regnet, DANN gehe ich joggen…
  • 22. WENN es heute NICHT regnet, DANN gehe ich joggen… if (es_regnet ist falsch) { ich gehe joggen; }
  • 23. if (ausdruck) { anweisung1 anweisung2 anweisung3 ... } ausdruck  variable1 OPERATOR variable2 Auswahlanweisungen: if
  • 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
  • 34. while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“ Wiederholungsanweisungen: while
  • 35. do { anweisung1 anweisung2 anweisung3 anweisung4 ... } while (ausdruck) Wiederholungsanweisungen: do while
  • 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
  • 38.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte  Variablen  Arrays  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung Themenüberblick „Programmiersprachen II“
  • 40. Kapselung, Information Hiding, Geheimnisprinzip Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  • 41. var game = { name : '', setName : function( gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] }; Objektorientierte Programmierung
  • 42. /

Hinweis der Redaktion

  1. 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
  2. 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
  3. Wie prüfen, ob ein Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat? Kontrollstrukturen