Beruflich Dokumente
Kultur Dokumente
Adrian Schüpbach
adrian_laurent.schuepbach@alumni.ethz.ch
I Welche Anweisungen?
I Welche Anweisungen?
I Braucht Lösungsstrategie → Algorithmus
I Bestimmt Anweisungen
I Reihenfolge der Anweisungen
I Algorithmen
I Finde Minimum
I Zähle Anzahl Datenpunkte mit gleichem y-Wert
I Bestimme nächstgelegene Pizzeria
I Konzepte
I Es gibt verschiedene Programmierkonzepte
I Objektorientierte Programmierung
I Imperative Programmierung
I Logische Programmierung
I Funktionale Programmierung
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 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
Problem
identi-
fizieren
Problem
identi-
fizieren
Algorithmus
finden
Problem
identi-
fizieren
Algorithmus
finden
Quellcode
schreiben
Problem
identi-
fizieren
Algorithmus
finden
Quellcode
kompilieren
schreiben
Problem
identi-
fizieren
Algorithmus
ausführen
finden
Quellcode
kompilieren
schreiben
Problem
verbessern,
identi-
falls nötig
fizieren
Algorithmus
ausführen
finden
Quellcode
kompilieren
schreiben
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 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”
Bildschirmausgabe
I Speichern Daten
I Können abgefragt werden
I Können verändert werden
I Haben bestimmten Datentyp
I Elementare Datentypen
I Können bestimmten binären Wert annehmen
I Speichern im Wesentlichen eine Zahl
I Haben keine “interne Funktionalität”
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
Gleitkommazahlen:
Typ Bits Kleinste Zahl > 0 Grösste Zahl
float 32 1.40e-45f 3.4028235e38f
double 64 4.9e-324 1.7976931348623157e308
Wahrheitswert:
Typ Werte
boolean true oder false
Variablendeklarationen
public class Programm2 {
public static void main( String [] args) {
int zahl1 = 3;
int zahl2 = 7;
int resultat ;
I Problem
I Speichere grössere der Zahlen z1 und
z2 in max
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
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
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
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");
}
Verknüpfungen
Verknüpfung Schreibweise Beispiel
UND && ((z1 < 5) && (z2 > 3))
ODER || ((z1 > 0) || (z2 > 0))
NICHT ! (!(z1 == z2))
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?
switch-case-Konstrukt if-else-Konstrukt
I default optional
I break optional
I Ohne break wird nächster case-Block auch ausgeführt
I Drei Typen
I while-Schleife (Abweisschleife)
I do-while-Schleife (Durchlaufschleife)
I for-Schleife (Zählschleife)
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
for-Schleife
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);