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

Preview:

Citation preview

Universität zu Köln. Historisch-Kulturwissenschaftliche InformationsverarbeitungJan G. Wieners // jan.wieners@uni-koeln.de

Basisinformationstechnologie IWintersemester 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“

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

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 FelderAuf jedem Feld wird die ID des Spielers abgelegt, der / die das Feld angeklickt hat

var gameBoard = [][];

Arrays und Variablen

Variable: Benannte SpeicherstelleCharakteristika:

Datentyp Variablenname Wert (Adresse der Speicherzelle)

JavaScript:// Deklarationvar meineVariable;

// InitialisierungmeineVariable = 23;

C++:// Deklarationint meineVariable;

// InitialisierungmeineVariable = 23;

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

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 imzweidimensionalen Array „gameGrid“ abund 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 hatODERder 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) {anweisung1anweisung2anweisung3...

}

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 hatODER (II)

der Spieler drei Symbole in diagonaler Reihenfolge abgelegt hat

Ü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?

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

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

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

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 imzweidimensionalen Array „gameGrid“ abund 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

/

Recommended