Bit WiSe 2013 | Basisinformationstechnologie I - 10: Programmiersprachen II

526 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
526
On SlideShare
0
From Embeds
0
Number of Embeds
126
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bit WiSe 2013 | Basisinformationstechnologie I - 10: Programmiersprachen II

  1. 1. Basisinformationstechnologie I Wintersemester 2013/14 15. Januar 2013 – Programmiersprachen II Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de
  2. 2. Themenüberblick „Programmiersprachen II“   Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte  Variablen  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung
  3. 3. Programmiersprachen – Charakteristika, Konzepte und Methoden    Interpretiert vs. compiliert Typisierung: statisch, dynamisch, etc. Paradigmen:     Funktional Imperativ Prozedural Objektorientiert  Grundlegende Konzepte: Variablen, Arrays, Kontrollstrukturen, Funktionen, Objekte  Das Rad nicht neu erfinden: Design Patterns / Entwurfsmuster, Strukturierungsmuster: MVC (u.a.)  Modellierung
  4. 4. Darstellung Logik Daten
  5. 5. Schichten-Architektur 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
  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:     Variablenname Wert (Datentyp) (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. 2. 3. var cellContent = gameBoard[ 0 ] [ 1 ]; var cellContent = gameBoard[ 2 ] [ 2 ]; 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. Kontrollstrukturen Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen ?  Wiederholungsanweisungen ?  Sprunganweisungen ?
  18. 18. Kontrollstrukturen Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue
  19. 19. WENN es heute NICHT regnet, DANN gehe ich joggen…
  20. 20. if (es regnet ist falsch) { ich gehe joggen; } WENN es heute NICHT regnet, DANN gehe ich joggen…
  21. 21. Auswahlanweisungen: if if (ausdruck) { anweisung1 anweisung2 anweisung3 ... } ausdruck  variable1 OPERATOR variable2
  22. 22. C++, JavaScript & Co.: (Vergleichs)Operatoren Operator <= Operation Größer als („ist Wert1 größer als Wert2?“) Kleiner als („ist Wert 1 kleiner als Wert2?“) Größer gleich („ist Wert1 kleiner oder gleich Wert2?“) Kleiner gleich („ist Wert1 kleiner oder gleich Wert2?“) == Auf Gleichheit prüfen variable1 == variable2 != variable1 != variable2 && Auf Ungleichheit prüfen Logisches UND: Zwei Bedingungen prüfen || Logisches ODER if( (a==b) || (b==c) ) > < >= Beispiel Wert1 > Wert2 Wert1 < Wert2 Wert1 >= Wert2 Wert1 <= Wert2 if( (a==b) && (b==c) )
  23. 23. if (es regnet == falsch) { ich gehe joggen; } WENN es heute NICHT regnet, DANN gehe ich joggen…
  24. 24. Auswahlanweisungen: if Beispiel: Zu prüfen ist, ob der Wert von variableZwei größer ist als der Wert von variableEins. Wenn ja, soll eine entsprechende Nachricht ausgegeben werden: var variableEins = 5; var variableZwei = 8; if(variableZwei > variableEins) alert(“Der in Variable Zwei gespeicherte Wert größer als der in Eins gespeicherte } { ist Variable Wert.“);
  25. 25. Auswahlanweisungen: if und else Beispiel: Zu prüfen ist, ob der Wert von variableZwei größer ist als der Wert von variableEins. Wenn ja, soll eine entsprechende Nachricht ausgegeben werden: var variableEins = 5; var variableZwei = 8; if(variableZwei > variableEins) { alert(“Der in Variable Zwei gespeicherte Wert ist größer als der in Variable Eins gespeicherte Wert.“); } else { alert(“Der in Variable Zwei gespeicherte Wert ist kleiner als der in Variable Eins gespeicherte Wert.“); }
  26. 26. 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
  27. 27. Übung 1 Interaktion  Prüfen I: Wurde ein leeres Spielfeld angeklickt? 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?
  28. 28. 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
  29. 29. Wiederholungsanweisungen
  30. 30. 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
  31. 31. Wiederholungsanweisungen: while while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“
  32. 32. Wiederholungsanweisungen: do while do { anweisung1 anweisung2 anweisung3 anweisung4 ... } while (ausdruck)
  33. 33. Wiederholungsanweisungen: for for(initialisierung; abbruchbedingung; inkrementierung) { anweisung1 anweisung2 anweisung3 anweisung4 ... }
  34. 34. Ü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
  35. 35. Themenüberblick „Programmiersprachen II“   Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte      Variablen Arrays Auswahlanweisungen Kontrollstrukturen Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung
  36. 36. Last, but not….: Objektorientierte Softwareentwicklung
  37. 37. Kapselung, Information Hiding, Geheimnisprinzip Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  38. 38. Objektorientierte Programmierung var game = { name : '', setName : function( gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] };
  39. 39. /

×