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

42
Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // [email protected] Basisinformationstechnologie I Wintersemester 2014/15 07. Januar 2015 – Programmiersprachen II

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

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

Universität zu Köln. Historisch-Kulturwissenschaftliche InformationsverarbeitungJan G. Wieners // [email protected]

Basisinformationstechnologie IWintersemester 2014/15

07. Januar 2015 – Programmiersprachen II

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

Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte

Variablen Auswahlanweisungen Kontrollstrukturen

Objektorientierte Programmierung Objekt Kapselung / Information Hiding / Geheimnisprinzip Vererbung

Themenüberblick „Programmiersprachen II“

Page 3: BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
Page 4: 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

Page 5: BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II
Page 6: BIT I WiSe 2014 | Basisinformationstechnologie I - 09: Programmiersprachen II

Darstellung

Daten

Logik

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

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

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

MVC – Model View Controller (Modell, Präsentation, Steuerung)1972 im Kontext von „Smalltalk“ (objektorientierte Programmiersprache) vorgestellt

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

Model / Datenhaltungsschicht?

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

Model!

Spielfeld: 3 x 3 FelderAuf jedem Feld wird die ID des Spielers abgelegt, der / die das Feld angeklickt hat

var gameBoard = [][];

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

Arrays und Variablen

Variable: Benannte SpeicherstelleCharakteristika:

Datentyp Variablenname Wert (Adresse der Speicherzelle)

JavaScript:// Deklarationvar meineVariable;

// InitialisierungmeineVariable = 23;

C++:// Deklarationint meineVariable;

// InitialisierungmeineVariable = 23;

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

Arrays

Array Sammlung von DatenwertenJeder Wert in einem Array wird über den Index adressiert; gezählt wird ab 0: meinArray[index]

// Deklarationvar lottoZahlen = [];

// InitialisierunglottoZahlen[0] = 23;lottoZahlen[1] = 15;lottoZahlen[2] = 3;lottoZahlen[3] = 42; lottoZahlen[4] = 7; lottoZahlen[5] = 8;

// Ausgabedocument.write( lottoZahlen[0] + “, “ + lottoZahlen[1] );

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

Mehrdimensionale Arrays

Zugriff auf Werte in zweidimensionalen Arrays:

var cellContent = gameBoard[xCoord][yCoord]

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

???

1. var cellContent = gameBoard[ 0 ] [ 1 ];2. var cellContent = gameBoard[ 2 ] [ 2 ];3. var cellContent = gameBoard[ 3 ] [ 1 ];

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

Spielfluss und Anwendungslogik

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

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 imzweidimensionalen Array „gameGrid“ abund stelle das Spielersymbol dar

IM ANDEREN FALLE:tue nichts

Prüfe die Gewinnbedingung

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

Gewinn- und Abbruchbedingung

Ein Spieler / eine Spielerin hat das Spiel gewonnen,WENN:

der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge

abgelegt hatODERder Spieler drei Symbole in diagonaler

Reihenfolge abgelegt hat

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

Kontrollstrukturen

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

Unterscheidung von Kontrollstrukturen in: Auswahlanweisungen ?

Wiederholungsanweisungen ?

Sprunganweisungen ?

Kontrollstrukturen

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

Unterscheidung von Kontrollstrukturen in: Auswahlanweisungen

if if else (switch)

Wiederholungsanweisungen while for do while

Sprunganweisungen return break continue

Kontrollstrukturen

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

WENN es heute NICHT regnet, DANN gehe ich joggen…

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

WENN es heute NICHT regnet, DANN gehe ich joggen…

if (es_regnet ist falsch) {ich gehe joggen;

}

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

if (ausdruck) {anweisung1anweisung2anweisung3...

}

ausdruck variable1 OPERATOR variable2

Auswahlanweisungen: if

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

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

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

WENN es heute NICHT regnet, DANN gehe ich joggen…

if (es_regnet == false) {ich gehe joggen;

}

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

WENN es heute NICHT regnet, DANN gehe ich joggen…

if (es_regnet == false) {ich gehe joggen;

} else {alert(“<3 PS4!“);

}

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

Gewinn- und Abbruchbedingung

Ein Spieler / eine Spielerin hat das Spiel gewonnen,WENN (IF):

der Spieler drei seiner Symbole in (unmittelbarer) horizontaler Reihenfolge

abgelegt hatODER (II)

der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat

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

Übung 1

GewinnbedingungPrü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?

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

// Test horizontale Felderif (gameBoard[0][0] === 1 &&

gameBoard[1][0] === 1 &&gameBoard[2][0] === 1) {

alert(“Spielerin mit der ID 1 hat gewonnen!“);}

Übung 1

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

// Test diagonale Felderif (gameBoard[0][0] === 1 &&

gameBoard[1][1] === 1 &&gameBoard[2][1] === 1) {

alert(“Spielerin mit der ID 1 hat gewonnen!“);}

Übung 1

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

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 imzweidimensionalen Array „gameGrid“ abund stelle das Spielersymbol dar

IM ANDEREN FALLE:tue nichts

Prüfe die Gewinnbedingung

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

Wiederholungsanweisungen

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

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

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

while (ausdruck){

anweisung1   anweisung2   anweisung3}

„Führe anweisung1 und anweisung2 und anweisung3 so lange aus, wie die Bedingung „ausdruck“ WAHR (TRUE) ist.“

Wiederholungsanweisungen: while

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

do {       anweisung1      anweisung2      anweisung3      anweisung4       ... } while (ausdruck)

Wiederholungsanweisungen: do while

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

for(initialisierung;abbruchbedingung;

inkrementierung) {         anweisung1        anweisung2        anweisung3        anweisung4        ...}

Wiederholungsanweisungen: for

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

Übung 2

SOLANGE kein Spieler / keine Spielerin das Spiel gewonnen hat, VERFAHRE WIE FOLGEND:

WENN ein leeres Spielfeld angeklickt wurde:lege die aktuelle SpielerID imzweidimensionalen Array „gameGrid“ abund stelle das Spielersymbol dar

IM ANDEREN FALLE:tue nichts

Prüfe die Gewinnbedingung

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

Drei-Schichten Architektur / MVC Programmiersprachen – Konzepte

Variablen Arrays Auswahlanweisungen Kontrollstrukturen

Objektorientierte Programmierung Objekt Kapselung / Information Hiding / Geheimnisprinzip Vererbung

Themenüberblick „Programmiersprachen II“

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

Last, but not….:

Objektorientierte Softwareentwicklung

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

Kapselung, Information Hiding, Geheimnisprinzip

Abb.: Balzert, Heide: Lehrbuch der Objektmodellierung. Heidelberg, 2005.

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

var game = {

name : '', setName : function( gameName ) { this.name = gameName; },

state : '', getGameState : function() { return this.state; }, setGameState : function( gameState ) { this.state = gameState; }, […]};

Objektorientierte Programmierung

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

/