Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.d...
 Drei-Schichten Architektur / MVC
 Programmiersprachen – Konzepte
 Variablen
 Auswahlanweisungen
 Kontrollstrukturen
...
 Interpretiert vs. compiliert
 Typisierung: statisch, dynamisch, etc.
 Paradigmen:
 Funktional
 Objektorientiert
 Gr...
Darstellung
Daten
Logik
Drei-Schichten-Architektur
 GUI-Schicht
 Fachkonzeptschicht
 Datenhaltungsschicht
GUI-Schicht: Realisiert die
Benutzung...
MVC – Model View Controller (Modell, Präsentation, Steuerung)
1972 im Kontext von „Smalltalk“ (objektorientierte Programmi...
Model / Datenhaltungsschicht
Model!
Spielfeld: 3 x 3 Felder
Auf jedem Feld wird die ID des Spielers
abgelegt, der / die das Feld angeklickt hat
var gam...
Arrays und Variablen
Variable: Benannte Speicherstelle
Charakteristika:
 Datentyp
 Variablenname
 Wert
 (Adresse der S...
Arrays
Array  Sammlung von Datenwerten
Jeder Wert in einem Array wird über den Index adressiert; gezählt
wird ab 0: meinA...
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[ ...
Spielfluss und
Anwendungslogik
Präsentation und Interaktion – die Spielschleife
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE W...
Gewinn- und Abbruchbedingung
Ein Spieler / eine Spielerin hat das Spiel gewonnen,
WENN:
der Spieler drei seiner Symbole in...
Kontrollstrukturen
Unterscheidung von Kontrollstrukturen in:
 Auswahlanweisungen
 ?
 Wiederholungsanweisungen
 ?
 Sprunganweisungen
 ?
...
Unterscheidung von Kontrollstrukturen in:
 Auswahlanweisungen
 if
 if else
 (switch)
 Wiederholungsanweisungen
 whil...
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?“) Wer...
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 Symbo...
Übung 1
Gewinnbedingung
Prüfen I: Hat ein Spieler / eine Spielerin drei ihrer
Symbole in (unmittelbarer) horizontaler
Rei...
// Test horizontale Felder
if (gameBoard[0][0] === 1 &&
gameBoard[1][0] === 1 &&
gameBoard[2][0] === 1) {
alert(“Spielerin...
// Test diagonale Felder
if (gameBoard[0][0] === 1 &&
gameBoard[1][1] === 1 &&
gameBoard[2][1] === 1) {
alert(“Spielerin m...
Präsentation und Interaktion – die Spielschleife
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE W...
Wiederholungsanweisungen
Wiederholungsanweisungen (i.e. while, for, do
while) machen‘s möglich, bestimmte
Verarbeitungsschritte unter bestimmten Um...
while (ausdruck){
anweisung1
anweisung2
anweisung3
}
 „Führe anweisung1 und anweisung2 und
anweisung3 so lange aus, wie d...
do {
anweisung1
anweisung2
anweisung3
anweisung4
...
} while (ausdruck)
Wiederholungsanweisungen: do while
for(initialisierung;
abbruchbedingung;
inkrementierung) {
anweisung1
anweisung2
anweisung3
anweisung4
...
}
Wiederholungsa...
Übung 2
SOLANGE kein Spieler / keine Spielerin das Spiel
gewonnen hat, VERFAHRE WIE FOLGEND:
WENN ein leeres Spielfeld ang...
 Drei-Schichten Architektur / MVC
 Programmiersprachen – Konzepte
 Variablen
 Arrays
 Auswahlanweisungen
 Kontrollst...
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() {
...
/
BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
Nächste SlideShare
Wird geladen in …5
×

BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II

480 Aufrufe

Veröffentlicht am

BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II

Veröffentlicht in: Bildung
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II

  1. 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. 2.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte  Variablen  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung Themenüberblick „Programmiersprachen II“
  3. 3.  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
  4. 4. Darstellung Daten Logik
  5. 5. 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
  6. 6. MVC – Model View Controller (Modell, Präsentation, Steuerung) 1972 im Kontext von „Smalltalk“ (objektorientierte Programmiersprache) vorgestellt
  7. 7. Model / Datenhaltungsschicht
  8. 8. Model! Spielfeld: 3 x 3 Felder Auf jedem Feld wird die ID des Spielers abgelegt, der / die das Feld angeklickt hat var gameBoard = [][];
  9. 9. 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;
  10. 10. 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] );
  11. 11. Mehrdimensionale Arrays Zugriff auf Werte in zweidimensionalen Arrays: var cellContent = gameBoard[xCoord][yCoord]
  12. 12. ??? 1. var cellContent = gameBoard[ 0 ] [ 1 ]; 2. var cellContent = gameBoard[ 2 ] [ 2 ]; 3. var cellContent = gameBoard[ 3 ] [ 1 ];
  13. 13. Spielfluss und Anwendungslogik
  14. 14. 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
  15. 15. 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
  16. 16. Kontrollstrukturen
  17. 17. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  ?  Wiederholungsanweisungen  ?  Sprunganweisungen  ? Kontrollstrukturen
  18. 18. Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue Kontrollstrukturen
  19. 19. WENN es heute NICHT regnet, DANN gehe ich joggen…
  20. 20. WENN es heute NICHT regnet, DANN gehe ich joggen… if (es_regnet ist falsch) { ich gehe joggen; }
  21. 21. if (ausdruck) { anweisung1 anweisung2 anweisung3 ... } ausdruck  variable1 OPERATOR variable2 Auswahlanweisungen: if
  22. 22. 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) )
  23. 23. WENN es heute NICHT regnet, DANN gehe ich joggen… if (es_regnet == false) { ich gehe joggen; }
  24. 24. WENN es heute NICHT regnet, DANN gehe ich joggen… if (es_regnet == false) { ich gehe joggen; } else { alert(“<3 PS4!“); }
  25. 25. 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
  26. 26. Ü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?
  27. 27. // 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
  28. 28. // 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
  29. 29. 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
  30. 30. Wiederholungsanweisungen
  31. 31. 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
  32. 32. while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“ Wiederholungsanweisungen: while
  33. 33. do { anweisung1 anweisung2 anweisung3 anweisung4 ... } while (ausdruck) Wiederholungsanweisungen: do while
  34. 34. for(initialisierung; abbruchbedingung; inkrementierung) { anweisung1 anweisung2 anweisung3 anweisung4 ... } Wiederholungsanweisungen: for
  35. 35. Ü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
  36. 36.  Drei-Schichten Architektur / MVC  Programmiersprachen – Konzepte  Variablen  Arrays  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung Themenüberblick „Programmiersprachen II“
  37. 37. Last, but not….: Objektorientierte Softwareentwicklung
  38. 38. Kapselung, Information Hiding, Geheimnisprinzip Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  39. 39. var game = { name : '', setName : function( gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] }; Objektorientierte Programmierung
  40. 40. /

×