SlideShare une entreprise Scribd logo
1  sur  41
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
Themenüberblick „Programmiersprachen II“



Drei-Schichten Architektur / MVC
Programmiersprachen – Konzepte
 Variablen
 Auswahlanweisungen
 Kontrollstrukturen



Objektorientierte Programmierung
 Objekt
 Kapselung / Information Hiding / Geheimnisprinzip
 Vererbung
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
Darstellung

Logik

Daten
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
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:





Variablenname
Wert
(Datentyp)
(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.
2.
3.

var cellContent = gameBoard[ 0 ] [ 1 ];
var cellContent = gameBoard[ 2 ] [ 2 ];
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
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
WENN es heute NICHT regnet, DANN gehe ich joggen…
if (es regnet ist falsch) {
ich gehe joggen;
}

WENN es heute NICHT regnet, DANN gehe ich joggen…
Auswahlanweisungen: if
if (ausdruck) {
anweisung1
anweisung2
anweisung3
...
}
ausdruck  variable1 OPERATOR variable2
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) )
if (es regnet == falsch) {
ich gehe joggen;
}

WENN es heute NICHT regnet, DANN gehe ich joggen…
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.“);
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.“);
}
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
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?
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
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
while (ausdruck){

anweisung1
anweisung2
anweisung3
}

 „Führe anweisung1 und anweisung2 und
anweisung3 so lange aus, wie die Bedingung
„ausdruck“ WAHR (TRUE) ist.“
Wiederholungsanweisungen: do while
do {
anweisung1
anweisung2
anweisung3
anweisung4
...
} while (ausdruck)
Wiederholungsanweisungen: for
for(initialisierung;
abbruchbedingung;
inkrementierung) {
anweisung1
anweisung2
anweisung3
anweisung4
...
}
Ü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
Themenüberblick „Programmiersprachen II“



Drei-Schichten Architektur / MVC
Programmiersprachen – Konzepte







Variablen
Arrays
Auswahlanweisungen
Kontrollstrukturen

Objektorientierte Programmierung
 Objekt
 Kapselung / Information Hiding / Geheimnisprinzip
 Vererbung
Last, but not….:

Objektorientierte
Softwareentwicklung
Kapselung, Information Hiding, Geheimnisprinzip

Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
Objektorientierte Programmierung
var game = {
name : '',
setName : function( gameName ) {
this.name = gameName;
},
state : '',
getGameState : function() {
return this.state;
},
setGameState : function( gameState ) {
this.state = gameState;
},
[…]
};
/

Contenu connexe

En vedette

Kurznewsletter - neues Modul, neue Auszeichnungen, neues Format
Kurznewsletter - neues Modul, neue Auszeichnungen, neues FormatKurznewsletter - neues Modul, neue Auszeichnungen, neues Format
Kurznewsletter - neues Modul, neue Auszeichnungen, neues Format
emotion banking
 
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
 
Alte salzstraße 2
Alte salzstraße 2Alte salzstraße 2
Alte salzstraße 2
prilass
 
Die Inselwelt der Baleares, Lebe das Mittelmeer
Die Inselwelt der Baleares, Lebe das MittelmeerDie Inselwelt der Baleares, Lebe das Mittelmeer
Die Inselwelt der Baleares, Lebe das Mittelmeer
atb20
 
Tema 5. la gran guerra 1
Tema 5.  la gran guerra 1Tema 5.  la gran guerra 1
Tema 5. la gran guerra 1
jesus ortiz
 

En vedette (11)

Bit WiSe 2013 | Basisinformationstechnologie I - 05: Rechnertechnologie II: S...
Bit WiSe 2013 | Basisinformationstechnologie I - 05: Rechnertechnologie II: S...Bit WiSe 2013 | Basisinformationstechnologie I - 05: Rechnertechnologie II: S...
Bit WiSe 2013 | Basisinformationstechnologie I - 05: Rechnertechnologie II: S...
 
Kurznewsletter - neues Modul, neue Auszeichnungen, neues Format
Kurznewsletter - neues Modul, neue Auszeichnungen, neues FormatKurznewsletter - neues Modul, neue Auszeichnungen, neues Format
Kurznewsletter - neues Modul, neue Auszeichnungen, neues Format
 
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...
 
Avispador - so lautet die Antwort!
Avispador   - so lautet die Antwort!Avispador   - so lautet die Antwort!
Avispador - so lautet die Antwort!
 
Chem2Market Präsentation
Chem2Market PräsentationChem2Market Präsentation
Chem2Market Präsentation
 
Cáncer de hígado II
Cáncer de hígado IICáncer de hígado II
Cáncer de hígado II
 
Alte salzstraße 2
Alte salzstraße 2Alte salzstraße 2
Alte salzstraße 2
 
Die Inselwelt der Baleares, Lebe das Mittelmeer
Die Inselwelt der Baleares, Lebe das MittelmeerDie Inselwelt der Baleares, Lebe das Mittelmeer
Die Inselwelt der Baleares, Lebe das Mittelmeer
 
Der Customer Outplacement Prozess
Der Customer Outplacement Prozess Der Customer Outplacement Prozess
Der Customer Outplacement Prozess
 
Name
NameName
Name
 
Tema 5. la gran guerra 1
Tema 5.  la gran guerra 1Tema 5.  la gran guerra 1
Tema 5. la gran guerra 1
 

Plus de Institute for Digital Humanities, University of Cologne

Plus de 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
 

Dernier

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
 

Dernier (8)

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.
 
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
 
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
 
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
 
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
 
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
 
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
 

Bit WiSe 2013 | Basisinformationstechnologie I - 10: Programmiersprachen II

  • 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. Themenüberblick „Programmiersprachen II“   Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte  Variablen  Auswahlanweisungen  Kontrollstrukturen  Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung
  • 3.
  • 4. 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
  • 5.
  • 7. 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
  • 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:     Variablenname Wert (Datentyp) (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. 2. 3. var cellContent = gameBoard[ 0 ] [ 1 ]; var cellContent = gameBoard[ 2 ] [ 2 ]; 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. Kontrollstrukturen Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen ?  Wiederholungsanweisungen ?  Sprunganweisungen ?
  • 20. Kontrollstrukturen Unterscheidung von Kontrollstrukturen in:  Auswahlanweisungen  if  if else  (switch)  Wiederholungsanweisungen  while  for  do while  Sprunganweisungen  return  break  continue
  • 21. WENN es heute NICHT regnet, DANN gehe ich joggen…
  • 22. if (es regnet ist falsch) { ich gehe joggen; } WENN es heute NICHT regnet, DANN gehe ich joggen…
  • 23. Auswahlanweisungen: if if (ausdruck) { anweisung1 anweisung2 anweisung3 ... } ausdruck  variable1 OPERATOR variable2
  • 24. 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) )
  • 25. if (es regnet == falsch) { ich gehe joggen; } WENN es heute NICHT regnet, DANN gehe ich joggen…
  • 26. 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.“);
  • 27. 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.“); }
  • 28. 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
  • 29. Ü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?
  • 30. 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
  • 32. 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
  • 33. Wiederholungsanweisungen: while while (ausdruck){ anweisung1 anweisung2 anweisung3 }  „Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“
  • 34. Wiederholungsanweisungen: do while do { anweisung1 anweisung2 anweisung3 anweisung4 ... } while (ausdruck)
  • 36. Ü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
  • 37. Themenüberblick „Programmiersprachen II“   Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte      Variablen Arrays Auswahlanweisungen Kontrollstrukturen Objektorientierte Programmierung  Objekt  Kapselung / Information Hiding / Geheimnisprinzip  Vererbung
  • 39. Kapselung, Information Hiding, Geheimnisprinzip Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.
  • 40. Objektorientierte Programmierung var game = { name : '', setName : function( gameName ) { this.name = gameName; }, state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […] };
  • 41. /