Beispiel: Schriftliche Addition

Werbung
Beispiel: Schriftliche Addition
1
1
1
0
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
Zwischen
werte
Ausgabe
12037
Eingabe
5892
6145
WS 09/10
18
2. Grundlagen der Programmierung
2.1 Einfache Programme
Der lange Weg von der Idee zum Programm
Spezifikation
Algorithmus
Rainer Feldmann
Universität Paderborn
Computer
Ausführung
Compiler
Computerprogramm
Maschinenprogramm
• Am Anfang steht die Idee, etwas berechnen zu wollen.
• Überlegen sie ganz genau, was Sie berechnen wollen: Was ist die
Eingabe und was ist die Ausgabe ?
• Entwerfen Sie einen Algorithmus für ihr Problem.
Entwicklungsumgebung
Eclipse
Programm
Mensch
Idee
• Schreiben Sie ein Java-Programm, das Ihren Algorithmus implementiert.
• Lassen Sie das Java-Programm von einem Compiler (=Übersetzer)
in ein maschinenlesbares Programm übersetzen.
• Führen Sie das maschinenlesbare Programm auf einem Computer
aus. Testen Sie Ihr Programm ausgiebig, insbesondere auf Eingaben,
zu denen Sie das korrekte Ergebnis kennen.
Technische Informatik für Ingenieure (TIFI)
WS 09/10
19
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
1: berechne n!
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
1: berechne n!
Qn
2: berechne i=1 i
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
1: berechne n!
Qn
2: berechne i=1 i
3: berechne 1 · 2 · 3 · . . . · n
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
4: Multipliziere alle Zahlen von 1 bis n miteinander.
1: berechne n!
Qn
2: berechne i=1 i
3: berechne 1 · 2 · 3 · . . . · n
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
4: Multipliziere alle Zahlen von 1 bis n miteinander.
5: Multipliziere alle Zahlen von 1 bis n in aufsteigender
Reihenfolge miteinander.
1: berechne n!
Qn
2: berechne i=1 i
3: berechne 1 · 2 · 3 · . . . · n
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
4: Multipliziere alle Zahlen von 1 bis n miteinander.
5: Multipliziere alle Zahlen von 1 bis n in aufsteigender
Reihenfolge miteinander.
6:
1: berechne n!
Qn
2: berechne i=1 i
3: berechne 1 · 2 · 3 · . . . · n
Rainer Feldmann
Universität Paderborn
Faculty() {
input(n);
/* lese Zahl n ein */
i = 1;
/* init Laufvariable */
x = 1;
/* init Ausgabewert */
solange i nicht größer ist als n
x = x · i;
/* multipl.mit i */
i = i + 1;
/* nächstes i */
output(x);
/* gebe x = n! aus */
}
Technische Informatik für Ingenieure (TIFI)
WS 09/10
20
Beispiel: Fakultätsberechnung
Problem Factorial:
geg: n ∈ N
ges: die Fakultät von n
4: Multipliziere alle Zahlen von 1 bis n miteinander.
5: Multipliziere alle Zahlen von 1 bis n in aufsteigender
Reihenfolge miteinander.
6:
1: berechne n!
Qn
2: berechne i=1 i
3: berechne 1 · 2 · 3 · . . . · n
Faculty() {
input(n);
/* lese Zahl n ein */
i = 1;
/* init Laufvariable */
x = 1;
/* init Ausgabewert */
solange i nicht größer ist als n
x = x · i;
/* multipl.mit i */
i = i + 1;
/* nächstes i */
output(x);
/* gebe x = n! aus */
}
»
¾
Wir haben uns langsam eine immer genauere Vorstellung von dem Algorithmus gemacht,
den wir benutzen wollen.
½
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
¼
20
Beispiel: Fakultätsberechnung in Java
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Das Programm liest n, berechnet n! in der Variable erg und gibt n! aus.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
21
Beispiel: Fakultätsberechnung in Java mit Kommentaren
public class Fakultaet {
public static void main (String[] args) {
// Eingabeaufforderung
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
/* Eingabewert von Tastatur */
int erg = 1;
/* Initialisierung des Ergebnisses */
while (n > 0) {
erg = erg * n;
n = n - 1;
}
/* solange n noch nicht 0 ist ... */
/* multipliziere Ergebnis mit n */
/* erniedrige n um 1 */
Out.println("Das Ergebnis ist "+ erg +".");
} // end of main
} // end of Fakultaet
Kommentare sind rot markiert. Beachten Sie die zwei verschiedenen Kommentararten.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
21
Beispiel: Fakultätsberechnung in Java: Programmname
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Das Programm hat einen Namen.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
22
Beispiel: Fakultätsberechnung in Java: Klassendeklaration und Main-Methode
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Die orange markierten Anweisungen sind notwendig. Wir erläutern sie aber erst viel später.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
23
Beispiel: Fakultätsberechnung in Java: Eingabe und Ausgabe
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Eingabe und Ausgabe des Programms Fakultaet ist orange markiert.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
24
Beispiel: Fakultätsberechnung in Java: Rechnung
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Die Rechnung ist orange markiert. Sie transferiert die Eingabe n in die Ausgabe n!
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
25
Beispiel: Fakultätsberechnung in Java: Konstanten
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Numerische Konstanten und Textkonstanten sind orange markiert.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
26
Beispiel: Fakultätsberechnung in Java: Variablen
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Variablen sind orange markiert. Variablen sind Behälter“ für Werte!
”
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
27
Beispiel: Fakultätsberechnung in Java: Variablendeklarationen
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Variablen müssen vor Benutzung definiert werden! Sie bekommen Namen und Wertebereich.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
28
Beispiel: Fakultätsberechnung in Java: Ausdrücke
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt(); /* spezieller Ausdruck. Später! */
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Ausdrücke sind Berechnungsvorschriften, die Operatoren (Zahlen, Texte) miteinander verknüpfen.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
29
Beispiel: Fakultätsberechnung in Java: Zuweisungen
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Zuweisungen legen das Ergebnis der Auswertung eines Ausdrucks in einer Variablen ab.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
30
Beispiel: Fakultätsberechnung in Java: Ablaufsteuerung
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Ablaufsteuerung bestimmt, ob und in welcher Reihenfolge Anweisungen durchlaufen werden.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
31
Beispiel: Fakultätsberechnung in Java: Schlüsselwörter
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Schlüsselwörter dürfen nicht als Namen für Variablen verwendet werden.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
32
Beispiel: Fakultätsberechnung in Java: Trennzeichen
public class Fakultaet {
public static void main (String[] args) {
Out.print("Geben Sie eine natuerliche Zahl ein: ");
int n = In.readInt();
int erg = 1;
while (n > 0) {
erg = erg * n;
n = n - 1;
}
Out.println("Das Ergebnis ist "+ erg +".");
}
}
Das Trennzeichen ; trennt Anweisungen voneinander.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
33
Zusammenfassung
• Das Programm kann numerische Konstanten und Textkonstanten verwenden. Ihre Werte
können sich nicht ändern.
• Variablen sind Behälter für Werte. Ihre Inhalte können sich ändern.
• Variablen müssen vor Benutzung definiert werden. Sie bekommen Namen und Wertebereich.
• Ausdrücke sind Berechnungsvorschriften, die Operatoren (Zahlen, Texte) miteinander verknüpfen.
• Zuweisungen legen das Ergebnis der Auswertung eines Ausdrucks in einer Variablen ab.
• Die Ablaufsteuerung bestimmt, ob und in welcher Reihenfolge Anweisungen durchlaufen
werden.
• Schlüsselwörter dürfen nicht als Namen für Variablen verwendet werden.
• Anweisungen werden durch ; voneinander getrennt.
Rainer Feldmann
Universität Paderborn
Technische Informatik für Ingenieure (TIFI)
WS 09/10
34
Herunterladen