Aufgabe 2

Werbung
Zentralübung
Grundlagen der Programmierung
Bastian Cramer
Bastian Cramer - ZÜ 01 GP 08/09
Agenda
Java Übersetzungsprozess
Aufgabe 1:
Programm verstehen
Programmkonstrukte benennen
Programmfehler produzieren
Aufgabe 2:
Programmfehler erkennen
Aufgabe 3:
Programm schreiben
Bastian Cramer - ZÜ 01 GP 08/09
2
Java Übersetzungsprozess
Java Programm
(HelloWorld.java)
übersetzen, erzeugt Java
Bytecode in HelloWorld.class
Java Compiler
(javac HelloWorld.java)
Bytecode ausführen mit
der JVM
Java Interpreter JVM
(java HelloWorld)
Bastian Cramer - ZÜ 01 GP 08/09
3
Java Bytecode
class HelloWorld extends java.lang.Object{
HelloWorld();
Code:
0: aload_0
1: invokespecial#1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic#2; //Field java/lang/System.out:Ljava/io/
PrintStream;
3: ldc#3; //String Hello World
5: invokevirtual#4; //Method java/io/PrintStream.println:(Ljava/
lang/String;)V
8: return
}
javap -c HelloWorld
Bastian Cramer - ZÜ 01 GP 08/09
4
Aufgabe 1: Programm verstehen
class Subtraktion {
// Name der Klasse
public static void main (String [] args) {
// hier startet das Programm
int zahl1 = 18;
int zahl2 = 10;
// zahl1 ist vom Typ int und zuerst 18
// zahl2 ist vom Typ int und zuerst 10
}
}
System.out.println(zahl1 - zahl2);
// Ausgabe
Allgemein:
•auf Groß-/Kleinschreibung achten
•sinnvolle Bezeichner verwenden
•Einrückung beachen
Bastian Cramer - ZÜ 01 GP 08/09
5
Aufgabe 1: Programmkonstrukte benennen
class Subtraktion {
public static void main (String [] args) {
int zahl1 = 18;
int zahl2 = 10;
}
}
System.out.println(zahl1 - zahl2);
// Name der Klasse
// hier startet das Programm
// zahl1 ist vom Typ int und zuerst 18
// zahl2 ist vom Typ int und zuerst 10
// Ausgabe
Zuweisung
Bastian Cramer - ZÜ 01 GP 08/09
6
Aufgabe 1: Programmkonstrukte benennen
class Subtraktion {
public static void main (String [] args) {
int zahl1 = 18;
int zahl2 = 10;
}
}
System.out.println(zahl1 - zahl2);
Zuweisung
// Name der Klasse
// hier startet das Programm
// zahl1 ist vom Typ int und zuerst 18
// zahl2 ist vom Typ int und zuerst 10
// Ausgabe
Bezeichner
Bastian Cramer - ZÜ 01 GP 08/09
7
Aufgabe 1: Programmkonstrukte benennen
class Subtraktion {
public static void main (String [] args) {
int zahl1 = 18;
int zahl2 = 10;
}
}
System.out.println(zahl1 - zahl2);
Zuweisung
Bezeichner
// Name der Klasse
// hier startet das Programm
// zahl1 ist vom Typ int und zuerst 18
// zahl2 ist vom Typ int und zuerst 10
// Ausgabe
Parameter (formal/aktuell)
Bastian Cramer - ZÜ 01 GP 08/09
8
Aufgabe 1: Programmkonstrukte benennen
class Subtraktion {
public static void main (String [] args) {
int zahl1 = 18;
int zahl2 = 10;
}
}
System.out.println(zahl1 - zahl2);
Zuweisung
Bezeichner
// Name der Klasse
// hier startet das Programm
// zahl1 ist vom Typ int und zuerst 18
// zahl2 ist vom Typ int und zuerst 10
// Ausgabe
Parameter Methodenaufruf
Bastian Cramer - ZÜ 01 GP 08/09
9
Aufgabe 1: Programm umbenennen
übersetzt
wird ausgeführt
übersetzt
Laufzeitfehler!!
Bastian Cramer - ZÜ 01 GP 08/09
10
Aufgabe 1: Programm umbenennen
übersetzt
wird ausgeführt
übersetzt
Laufzeitfehler!!
Klassenname und Dateiname müssen identisch sein!
Bastian Cramer - ZÜ 01 GP 08/09
11
Aufgabe 1: Programmfehler erkennen
Zeilennummer
public zu Public ändern führt zu einem Syntaxfehler:
Java unterscheidet zwischen Groß - und Kleinschreibung
Anweisungsfolgen müssen durch ein Semikolon beendet
werden!
Bastian Cramer - ZÜ 01 GP 08/09
12
Aufgabe 1: Initialisierung
Variablen müssen initialisiert werden!
Bastian Cramer - ZÜ 01 GP 08/09
13
Aufgabe 1: Ersetzen von println durch print
Bastian Cramer - ZÜ 01 GP 08/09
14
print / println
Bastian Cramer - ZÜ 01 GP 08/09
15
Aufgabe 1d/e
1.class Subtraktion { // Name der Klasse
2. public static void main (String [] args) { // hier startet das Programm
3. 4. int zahl1=20; 5. int zahl2 = 30; 6. 7. int differenz = zahl1 - zahl2;
8. System.out.print(zahl1 + "-"+ zahl2 + "=" + differenz); // Ausgabe
9. }
10.}
Konkatenation
Bastian Cramer - ZÜ 01 GP 08/09
16
Aufgabe 2: Programmfehler erkennen
1.Class Semesterende {
2. Public static void main (String [] args {
3. int tag;
4. int monat;
5. jahr;
6. 7. tag = 8;
8. monat = 2;
9. jar = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
Bastian Cramer - ZÜ 01 GP 08/09
17
Aufgabe 2: Programmfehler erkennen
1.Class Semesterende {
2. Public static void main (String [] args {
3. int tag;
4. int monat;
5. jahr;
6. 7. tag = 8;
8. monat = 2;
9. jar = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
Syntaxfehler: Schlüsselwörter public/class falsch geschrieben
Bastian Cramer - ZÜ 01 GP 08/09
18
Aufgabe 2: Programmfehler erkennen
1.class Semesterende {
2. public static void main (String [] args {
3. int tag;
4. int monat;
5. jahr;
6. 7. tag = 8;
8. monat = 2;
9. jar = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
Syntaxfehler: schließende Klammer fehlt
Bastian Cramer - ZÜ 01 GP 08/09
19
Aufgabe 2: Programmfehler erkennen
1.class Semesterende {
2. public static void main (String [] args ){
3. int tag;
4. int monat;
5. jahr;
6. 7. tag = 8;
8. monat = 2;
9. jar = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
unzulässige Deklaration
Bastian Cramer - ZÜ 01 GP 08/09
20
Aufgabe 2: Programmfehler erkennen
1.class Semesterende {
2. public static void main (String [] args ){
3. int tag;
4. int monat;
5. int jahr;
6. 7. tag = 8;
8. monat = 2;
9. jar = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
semantischer Fehler: „jar“ ist unbekannt!
Bastian Cramer - ZÜ 01 GP 08/09
21
Aufgabe 2: Programmfehler erkennen
1.class Semesterende {
2. public static void main (String [] args ){
3. int tag;
4. int monat;
5. int jahr;
6. 7. tag = 8;
8. monat = 2;
9. jahr = 2009;
10.
System.out.print("Semesterende: ",tag,monat,jahr);
11.
}
Zeichenketten müssen durch „+“ verknüpft werden
Bastian Cramer - ZÜ 01 GP 08/09
22
Aufgabe 2: Programmfehler erkennen
1.class Semesterende {
2. public static void main (String [] args) {
3. int tag;
4. int monat;
5. int jahr;
6. 7. tag = 8;
8. monat = 2;
9. jahr = 2009;
10.
System.out.print("Semesterende: "+tag+"."+monat+"."+jahr);
11.
}
12.
}
Der Klasse Semesterende fehlt die schließende Klammer
Bastian Cramer - ZÜ 01 GP 08/09
23
Aufgabe 3: Programm schreiben
1.class Produkt { 2. public static void main (String [] args) {
3. 4. // Deklaration der Variablen zahl1 bis zahl 4 vom Typ int
5. int zahl1, zahl2, zahl3, zahl4;
6. // Intialisierung der Variablen
7. zahl1 = 42;
8. zahl2 = 25;
9. zahl3 = 36;
10.
zahl4 = 6;
11.
// Deklarierung der Variablen produkt vom Typ int
12.
// und Initialisierung mittels Zuweisung des Produktes
13.
int produkt = zahl1 * zahl2 * zahl3 * zahl4;
14.
System.out.println("Produkt: " + produkt); 15.
}
16. }
Bastian Cramer - ZÜ 01 GP 08/09
24
Herunterladen