Sie sind auf Seite 1von 73

Einführung

Adrian Schüpbach
adrian_laurent.schuepbach@alumni.ethz.ch

c Adrian Schüpbach Programmieren und Problemlösen – FS16


Worum geht es?

I Was bedeutet programmieren?


I Konzepte
I Algorithmen
I Programmiersprachen
I Kleine Programme schreiben können
I Bildschirmausgaben
I Verzweigungen
I Schleifen

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 2


Programm

I Programm besteht aus


I Anweisungen
I Daten

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 3


Programm

I Programm besteht aus


I Anweisungen
I Daten

I Welche Anweisungen?

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 3


Programm

I Programm besteht aus


I Anweisungen
I Daten

I Welche Anweisungen?
I Braucht Lösungsstrategie → Algorithmus
I Bestimmt Anweisungen
I Reihenfolge der Anweisungen

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 3


Algorithmus

I Algorithmen unabhängig von Programmiersprachen


I Programmiersprache Werkzeug, um Algorithmus ausführbar
zu machen

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 4


Algorithmus

I Algorithmen unabhängig von Programmiersprachen


I Programmiersprache Werkzeug, um Algorithmus ausführbar
zu machen

I Algorithmen
I Finde Minimum
I Zähle Anzahl Datenpunkte mit gleichem y-Wert
I Bestimme nächstgelegene Pizzeria

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 4


Konzepte vs. Sprachen

I Konzepte
I Es gibt verschiedene Programmierkonzepte
I Objektorientierte Programmierung
I Imperative Programmierung
I Logische Programmierung
I Funktionale Programmierung

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 5


Konzepte vs. Sprachen

I Konzepte
I Es gibt verschiedene Programmierkonzepte
I Objektorientierte Programmierung
I Imperative Programmierung
I Logische Programmierung
I Funktionale Programmierung
I Programmiersprachen
I Konkrete Umsetzung eines Konzeptes
I Für jedes Konzept gibt es eine Anzahl Programmiersprachen
I Objektorientiert: Java, C++, ...
I Imperativ: C, Pascal, ...
I Logisch: Prolog
I Funktional: Haskell, SML, ...

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 5


Konzepte vs. Sprachen

I Konzepte
I Es gibt verschiedene Programmierkonzepte
I Objektorientierte Programmierung
I Imperative Programmierung
I Logische Programmierung
I Funktionale Programmierung
I Programmiersprachen
I Konkrete Umsetzung eines Konzeptes
I Für jedes Konzept gibt es eine Anzahl Programmiersprachen
I Objektorientiert: Java, C++, ...
I Imperativ: C, Pascal, ...
I Logisch: Prolog
I Funktional: Haskell, SML, ...
I Wir verwenden Java ⇒ Objektorientierte Programmierung

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 5


Programmieren
Zyklus

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
identi-
fizieren

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
identi-
fizieren

Algorithmus
finden

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
identi-
fizieren

Algorithmus
finden

Quellcode
schreiben

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
identi-
fizieren

Algorithmus
finden

Quellcode
kompilieren
schreiben

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
identi-
fizieren

Algorithmus
ausführen
finden

Quellcode
kompilieren
schreiben

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Programmieren
Zyklus

Problem
verbessern,
identi-
falls nötig
fizieren

Algorithmus
ausführen
finden

Quellcode
kompilieren
schreiben

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 6


Tools

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 7


Tools

I Für das Programmieren braucht man Werkzeuge (Tools)


I Entwicklungsumgebung oder Texteditor
I Compiler, Linker
I Erstellungswerkzeug (Build-Tool)
I Verionskontrollensystem (Repository)

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 7


Tools

I Für das Programmieren braucht man Werkzeuge (Tools)


I Entwicklungsumgebung oder Texteditor
I Compiler, Linker
I Erstellungswerkzeug (Build-Tool)
I Verionskontrollensystem (Repository)
I Um ein Programm auszuführen, braucht man auch
Werkzeuge
I Betriebssystem
I Laufzeitsystem

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 7


Tools

I Für das Programmieren braucht man Werkzeuge (Tools)


I Entwicklungsumgebung oder Texteditor
I Compiler, Linker
I Erstellungswerkzeug (Build-Tool)
I Verionskontrollensystem (Repository)
I Um ein Programm auszuführen, braucht man auch
Werkzeuge
I Betriebssystem
I Laufzeitsystem

I Man sollte sich die Programmierumgebung so angenehm wie


möglich einrichten

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 7


Tools
Entwicklungsumgebung

I Werkzeug, um Programm zu schreiben


I Hebt Schlüsselwörter hervor
I Hilft, ein grosses Projekt zu organisieren
I Hilft, Tipfehler zu finden
I Kann das Programm direkt dem Compiler übergeben
I Kann das Programm ausführen lassen

I Wir verwenden Eclipse-IDE

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 8


Tools
Compiler, Linker

I Compiler
I Übersetzt Quellcode in ausführbaren Maschinencode
I Linker
I Wir können bestehenden Programmcode wiederverwenden
I Unser Programm wird somit einfacher
I Linker verbindet unser Programm mit vorhandenem Code

I Wir verwenden javac aus dem JavaSDK

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 9


Tools
Erstellungswerkzeug (Build-Tool)

I Grosse Projekte sind in viele Dateien und Pakete aufgeteilt


I Aus Zeitgründen will man nicht immer alles neu kompilieren
I Build-Tool erkennt, welche Dateien geändert wurden
I Veranlasst Compiler, diese neu zu kompilieren
I Veranlasst Compiler, deren Abhängigkeiten zu kompilieren

I Oft verwendete Build-Tools


I Java: ant
I Sonst: make

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 10


Tools
Versionskontrolle

I Grössere Programme werden über längere Zeit entwickelt


I Einzelne Teile mehrerer Dateien erweitern/ändern
I Dateien hinzufügen, löschen, umbenennen, ...
I Mit der Zeit weiss man nicht mehr, wann man wo was
geändert hat
I Problematisch, wenn ein Fehler passiert
I Wo muss ich was rückgängig machen?

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 11


Tools
Versionskontrolle

I Versionskontrollensystem
I Speichert aktuellen Zustand aller Dateien
I Zeigt Änderung zur letzten Version an
I Kann frühere Version wiederherstellen (nützlich bei Fehlern)
I Weitere Vorteile
I Erlaubt Zusammenarbeit mehrerer Personen am gleichen
Projekt
I Kann Änderungen mehrerer Personen “mischen”

I Wir verwenden Subversion (svn) und ein Plugin für Eclipse

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 12


Tools
Programm ausführen

I Java-Compiler übersetzt Quellcode in sog. “Byte-Code”


I Ist nicht direkt Maschinencode
I Kann nicht direkt ausgeführt werden
I Byte-Code wird von der “Java Virtual Machine” ausgeführt

I Wir verwenden java aus dem JavaSDK

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 13


Programmstruktur
I Miniprogramm braucht:
I Klasse
public class Programm1 { }
(mehr dazu später)
I Startpunkt des Programms
public static void main(String[] args) { }

Programmstruktur eines Miniprogramms

public class Programm1 {


public static void main( String [] args) {
// ... Anweisungen ...
}
}

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 14


Bildschirmausgaben

I Erste Anweisung: Textausgabe auf den Bildschirm


I System.out verantwortlich für Bildschirmausgaben
I .print() Text ohne Zeilenumbruch

I .println() Text mit Zeilenumbruch

Bildschirmausgabe

public class Programm1 {


public static void main( String [] args) {
System .out. println (" Hallo !");
}
}

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 15


Daten

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 16


Daten

I Aneinanderkettung mehrerer binärer Werte


I Bit kann genau entweder 0 oder 1 sein

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 16


Daten

I Aneinanderkettung mehrerer binärer Werte


I Bit kann genau entweder 0 oder 1 sein
I Bsp.: 01001001
I 8 Bits
I Hexadezimaler Wert: 0x49
I Dezimaler Wert: 73
I Buchstabe: I

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 16


Daten

I Aneinanderkettung mehrerer binärer Werte


I Bit kann genau entweder 0 oder 1 sein
I Bsp.: 01001001
I 8 Bits
I Hexadezimaler Wert: 0x49
I Dezimaler Wert: 73
I Buchstabe: I
I Daten ohne Datentyp: Unklar, was Daten bedeuten
I Erst der Datentyp definiert, wie Daten zu interpretieren sind
I Dann klar, ob der Wert 73 oder der Buchstabe I gemeint ist

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 16


Variablen

I Speichern Daten
I Können abgefragt werden
I Können verändert werden
I Haben bestimmten Datentyp

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 17


Datentypen

I Man unterscheidet zw. elementaren Datentypen (“Primitive


Data Types”) und komplexen oder zusammengesetzten
Datentypen

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 18


Datentypen

I Man unterscheidet zw. elementaren Datentypen (“Primitive


Data Types”) und komplexen oder zusammengesetzten
Datentypen

I Elementare Datentypen
I Können bestimmten binären Wert annehmen
I Speichern im Wesentlichen eine Zahl
I Haben keine “interne Funktionalität”

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 18


Datentypen

I Man unterscheidet zw. elementaren Datentypen (“Primitive


Data Types”) und komplexen oder zusammengesetzten
Datentypen

I Elementare Datentypen
I Können bestimmten binären Wert annehmen
I Speichern im Wesentlichen eine Zahl
I Haben keine “interne Funktionalität”
I Komplexe/zusammengesetzte Datentypen
I Speichern mehr als nur Wert
I Können “interne Funktionalität” haben
I → mehr dazu später

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 18


Datentypen
Wertebereiche der Zahlen

Ganzzahlen: Wertebereich: −2Bits −1 bis 2Bits −1 − 1


Typ Bits Wertebereich
byte 8 -128 – 127
short 16 -32768 – 32767
int 32 -2147483648 – 2147483647
long 64 -9223372036854775808 – 9223372036854775807
char 16 00000 – 65535

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 19


Datentypen
Wertebereiche der Zahlen

Ganzzahlen: Wertebereich: −2Bits −1 bis 2Bits −1 − 1


Typ Bits Wertebereich
byte 8 -128 – 127
short 16 -32768 – 32767
int 32 -2147483648 – 2147483647
long 64 -9223372036854775808 – 9223372036854775807
char 16 00000 – 65535

Gleitkommazahlen:
Typ Bits Kleinste Zahl > 0 Grösste Zahl
float 32 1.40e-45f 3.4028235e38f
double 64 4.9e-324 1.7976931348623157e308

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 19


Datentypen
Wertebereiche der Zahlen

Wahrheitswert:

Typ Werte
boolean true oder false

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 20


Datentypen
Deklaration

I Variablen müssen deklariert werden, bevor sie benutzt


werden können
I int i;
I boolean b;
I float f;
I double sinnvoller_variablen_name;

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 21


Datentypen
Deklaration

I Variablen müssen deklariert werden, bevor sie benutzt


werden können
I int i;
I boolean b;
I float f;
I double sinnvoller_variablen_name;

I Variablen bei der Deklaration initialisieren


I byte value = 7;
I int value = -12314;

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 21


Datentypen
Deklaration

Variablendeklarationen
public class Programm2 {
public static void main( String [] args) {
int zahl1 = 3;
int zahl2 = 7;
int resultat ;

resultat = zahl1 + zahl2 ;

System .out. println (" Resultat = " + resultat );


}
}

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 22


Werte vergleichen
I Manchmal muss ein Programm Werte vergleichen
I Je nach Resultat werden andere Anweisungen ausgeführt
I Resultat eines Vergleichs ist ein boolean
I true, wenn der Vergleich stimmt
I false, wenn der Vergleich nicht stimmt

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 23


Werte vergleichen
I Manchmal muss ein Programm Werte vergleichen
I Je nach Resultat werden andere Anweisungen ausgeführt
I Resultat eines Vergleichs ist ein boolean
I true, wenn der Vergleich stimmt
I false, wenn der Vergleich nicht stimmt

Vergleichsoperatoren: int z1 = 3; int z2 = 7;


Operator Bsp Resultat Bedeutung
== z1 == z2 false Ist z1 gleich z2 ?
!= z1 != z2 true Ist z1 ungleich z2 ?
< z1 < z2 true Ist z1 kleiner als z2 ?
<= z1 <= z2 true Ist z1 kleiner oder gleich z2 ?
> z1 > z2 false Ist z1 grösser z2 ?
>= z1 >= z2 false Ist z1 grösser oder gleich z2 ?

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 23


Werte vergleichen
Beispiel

I Problem
I Speichere grössere der Zahlen z1 und
z2 in max

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 24


Werte vergleichen
Beispiel

I Problem
I Speichere grössere der Zahlen z1 und
z2 in max

I Algorithmus (Kochbuchrezept)
1. Zahlen mit > vergleichen
2. Falls true, linke Zahl in max speichern
3. Falls false, rechte Zahl in max
speichern

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 24


Werte vergleichen
Beispiel
Algorithmus
(Flussdiagramm)

I Problem int z1;


int z2;
int max;
I Speichere grössere der Zahlen z1 und
z2 in max
false
z1 > z2?
I Algorithmus (Kochbuchrezept)
1. Zahlen mit > vergleichen true

2. Falls true, linke Zahl in max speichern


max = z1; max = z2;
3. Falls false, rechte Zahl in max
speichern
max hat
grösseren
Wert

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 24


Werte vergleichen
Wie programmiert man das?

I Zahlen verglichen können → Konzept

I Spezielle Schlüsselwörter → Programmiersprache

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 25


Verzweigungen

I Zwei wichtige Arten der Verzweigung


I if(BEDINGUNG) { } else { }
I switch(VARIABLE) case FALL 1: ... FALL N:

I BEDINGUNG ist ein Test mit einem boolean als Resultat

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 26


Verzweigungen
if-Struktur

if( BEDINGUNG ) {
// fuehre diese nur Anweisungen aus ,
// falls BEDINGUNG == true
}
// Hier geht es weiter

if-else-Struktur

if( BEDINGUNG ) {
// fuehre diese nur Anweisungen aus ,
// falls BEDINGUNG == true
} else {
// ansonsten fuehre diese Anweisungen aus
}
// Hier geht es weiter
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 27
Verzweigungen

if-else-Verschachtelung

if( BEDINGUNG ) {
// fuehre aus , falls BEDINGUNG == true
if( BEDINGUNG_2 ) {
// fuehre aus , falls BEDINGUNG_2 == true
}
// hier weiter im aeusseren if
} else {
// ansonsten fuehre diese Anweisungen aus
}
// Hier geht es weiter

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 28


Verzweigungen

Mehrere if-else-Tests
if( BEDINGUNG ) {
// fuehre aus , falls BEDINGUNG == true
} else if( BEDINGUNG_2 ) {
// fuehre aus , falls BEDINGUNG_2 == true
} else if( BEDINGUNG_3 ) {
// fuehre aus , falls BEDINGUNG_3 == true
} else {
// ansonsten fuehre diese Anweisungen aus
}
// Hier geht es weiter

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 29


Verzweigungen
Beispielprogramm

public class Programm3 {


public static void main( String [] args) {
int zahl1 = 3;
int zahl2 = 7;

if ( zahl1 == zahl2 ) {
System .out. println (" Zahlen sind gleich ");
} else if ( zahl1 < zahl2 ) {
System .out. println ("Zahl 1 kleiner Zahl 2");
} else {
System .out. println ("Zahl 1 grosser Zahl 2");
}

System .out. println (" Programm fertig .");


}
}
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 30
Bedingungen verknüpfen

I Manchmal mehr als einen Wert vergleichen


I Etwas muss gelten UND etwas anderes auch
I Eine ODER die andere ODER beide Bedingungen müssen
gelten
I Bedingung soll NICHT gelten

Verknüpfungen
Verknüpfung Schreibweise Beispiel
UND && ((z1 < 5) && (z2 > 3))
ODER || ((z1 > 0) || (z2 > 0))
NICHT ! (!(z1 == z2))

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 31


Bedingungen verknüpfen
Beispielprogramm: Mehrere Bedingungen

public class Programm3 {


public static void main( String [] args) {
int zahl1 = 3;
int zahl2 = 7;

if (( zahl1 != 0) && (( zahl2 / zahl1 ) >= 3)) {


System .out. println ("Zahl 2 min. 3-fach der" +
"Zahl 1.");
} else {
System .out. println ("Zahl 2 weniger als" +
" 3-fach der Zahl 1.");
}
System .out. println (" Programm fertig .");
}
}
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 32
Klammerung resp. was bindet stärker?
I Klammerung optional, Operatoren binden verschieden stark
I Bindet stark !, &&, || bindet schwach

Beispielprogramm: Mehrere Bedingungen

public class Programm4 {


public static void main( String [] args) {
boolean b1 = true , b2 = true , b3 = true;

if (! b1 && b2) {
System .out. println ("b1 gilt NICHT UND b2" +
" gilt.");
}
if (b1 || b2 && b3) {
System .out. println ("b1 gilt ODER b2 UND " +
"b3 gelten .");
}
}
}
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 33
Klammerung resp. was bindet stärker?

I Tip: Klammerung schafft Klarheit!

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 34


Selektionen
Variable auf verschiedene Werte testen

I Manchmal je nach Variablenwert andere Aktion ausführen


I Möglichkeit: Verschachteltes if-else-Konstrukt
I Unübersichtlich
I Viel Schreibarbeit
I Alternative: Fallunterscheidung
I Übersichtlich
I Einfach zu schreiben
I Sprachkonstrukt: switch-case

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 35


Selektionen
Variable auf verschiedene Werte testen

switch-case-Konstrukt if-else-Konstrukt

int zahl1 ; int zahl1 ;

switch (zahl1 ) { if( zahl1 == 5){


case 5: // case 5
// Anweisungen // Anweisungen
break ; } else if( zahl1 == 17( {
case 17: // case 17
// Anweisungen // Anweisungen
break ; } else {
default : // default
// Anweisungen // Anweisungen
} }

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 36


Selektionen
Variable auf verschiedene Werte testen

I default optional
I break optional
I Ohne break wird nächster case-Block auch ausgeführt

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 37


Selektionen
Variable auf verschiedene Werte testen

switch-case-Konstrukt Verschachteltes if-Konstrukt


int zahl1; int zahl1 ;

switch (zahl1 ) { if( zahl1 == 5 || zahl1 == 17){


case 5: if( zahl1 == 5) {
// Anweisungen // case 5
case 17:
// Anweisungen }
break ; // case 5 UND case 17
} }

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 38


Schleifen

I Manchmal müssen Anweisungen mehrfach ausgeführt


werden

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 39


Schleifen

I Manchmal müssen Anweisungen mehrfach ausgeführt


werden
I Könnte Anweisungen mehrfach von Hand hinschreiben
I Mühsam, langweilig, ...
I Fehleranfällig
I Geht nur für fixe, bekannte Anzahl

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 39


Schleifen

I Manchmal müssen Anweisungen mehrfach ausgeführt


werden
I Könnte Anweisungen mehrfach von Hand hinschreiben
I Mühsam, langweilig, ...
I Fehleranfällig
I Geht nur für fixe, bekannte Anzahl
I Besser: Schleife
I Anweisungen, die wiederholt werden sollen, in Schleife
gruppieren
I Bedingung hinschreiben, wie oft Schleife wiederholt werden
soll

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 39


Schleifen

I Drei Typen
I while-Schleife (Abweisschleife)
I do-while-Schleife (Durchlaufschleife)
I for-Schleife (Zählschleife)

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 40


Schleifen
while-Schleife

I Teste Bedingung (wie bei if)


I Falls erfüllt
I Führe Anweisungsblock aus
I Gehe zurück nach oben
I Teste Bedingung
I Falls nicht erfüllt
I Lasse Anweisungsblock aus
I Führe Anweisungen unterhalb des Blocks aus

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 41


Schleifen
while-Schleife
while-Schleife

public class Programm5 {


public static void main( String [] args) {
int z1 = 10; int z2 = 20;

while (z1 < 20) {


System .out. println ("Zahl = " + z1 );
z1 = z1 + 1; // erhoehe Zahl um 1
}

while (z2 < 20) {


// wird nie ausgefuehrt
System .out. println ("Zahl = " + z2 );
z2 = z2 + 1; // erhoehe Zahl um 1
}
}
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 42
Schleifen
do-while-Schleife

I Führe zuerst Anweisungsblock aus


I Teste zuunterst Bedingung (wie bei if)
I Falls erfüllt
I Gehe nach oben
I Führe Anweisungsblock aus
I Falls nicht erfüllt
I Führe Anweisungen unterhalb des Blocks aus

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 43


Schleifen
do-while-Schleife
do-while-Schleife

public class Programm6 {


public static void main( String [] args) {
int z1 = 10; int z2 = 20;

do {
System .out. println ("Zahl = " + z1 );
z1 = z1 + 1; // erhoehe Zahl um 1
} while (z1 < 20);

do {
// wird EINMAL ausgefuehrt
System .out. println ("Zahl = " + z2 );
z2 = z2 + 1; // erhoehe Zahl um 1
} while (z2 < 20);
}
Programmieren und Problemlösen – FS16 c Adrian Schüpbach 44
Schleifen
for-Schleife

I Definiere Zähler mit Anfangswert


I Definiere Abbruchbedingung
I Definiere, wie Zähler modifiziert werden soll
I Z.Bsp. +1 oder -1 bei jedem Schleifendurchgang
I Anweisungsblock wird solange ausgeführt, wie Bedingung
stimmt

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 45


Schleifen
for-Schleife

for-Schleife

public class Programm7 {


public static void main( String [] args) {

// for ( Anfangswert ; Bedingung ; Zaehler +/ -) {


// Anweisungen
//}

for (int i = 0; i < 10; i = i + 1) {


System .out. println (" Zaehler = " + i);
}
}
}

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 46


Kurzschreibweisen

Kurzschreibweisen
Anweisung Kurzschreibweise
i = i + 1 i++;
i = i + 5 i+=5;
i = i - 1 i--;
i = i - 5 i-=5;
if (z1 > z2) {
max = z1;
} else {
max = z2; // (Bedingung ? falls ja : falls nein)
} max = (z1 > z2 ? z1 : z2);

Programmieren und Problemlösen – FS16 c Adrian Schüpbach 47

Das könnte Ihnen auch gefallen