Praktikum ’Einführung in die Programmierung’ Login Das Einloggen in die Arbeitsplatzrechner erfolgt mit den folgenden Daten: Benutzername: jbuilder Kennwort: borland Erste Schritte Für das Erstellen und Übersetzen einfacher Java-Anwendungen ohne grafische Benutzeroberflächen wird in diesem Praktikum das MS-DOS EingabeaufforderungsFenster benutzt. Mit den folgenden Schritten wird der Rechner auf die zu erstellenden Programme vorbereitet: • Öffnen des MS-DOS Eingabeaufforderungs-Fensters Über ’Start->Programme->MS-DOS Eingabeaufforderung’ das Fenster öffnen • Anlegen eines Arbeitsverzeichnisses Mit dem Befehl ’mkdir’ innerhalb der Eingabeaufforderung ein leeres Arbeitsverzeichnis für die Praktikumsaufgaben erstellen: d: mkdir praktikum cd praktikum • <Enter> <Enter> <Enter> Prüfen der Umgebungsvariablen ’PATH’ Damit ein Übersetzen des Quelltextes möglich ist, muss die WindowsUmgebungsvariable ’PATH’ auf die ausführbaren Dateien des JDK zeigen. Die korrekte Einstellung kann über die Eingabe des Kommandos ’java’ im Eingabeaufforderungs-Fenster getestet werden: java <Enter> Bei fehlerfrei gesetzter Umgebungsvariablen erscheinen auf dem Bildschirm die möglichen Parameter des Befehls ’java’. Erscheint eine Fehlermeldung, muss die Umgebungsvariable ’PATH’ nachträglich auf das ’bin’-Verzeichnis des JDK gesetzt werden: set PATH=%PATH%;d:\java\bin 24. April 2004 1 <Enter> Praktikum ’Einführung in die Programmierung’ Compiler und Interpreter Die Übersetzung von Java-Programmen geschieht durch den kombinierten Einsatz von Compiler und Interpreter. Innerhalb der Windows-JDK werden diese durch die beiden Programme ’javac’ und ’java’ repräsentiert. ’javac’ kompiliert den Quelltext mit der Endung ’.java’ in einen maschinenunabhängigen Bytecode. Dieser kann auf verschiedene Rechnerarchitekturen(z.B. Windows, Linux, Mac…) verteilt werden, um dort interpretiert zu werden. Die Interpretation auf Windows-Rechnern wird von ’java’ übernommen. Erstellen einer einfachen Anwendung Mit den folgenden Schritten wird eine klassische ‚’Hallo Welt’ -Anwendung erstellt. • Erstellen der Java-Datei Innerhalb der Eingabeaufforderung eine Datei ’hallowelt.java’ erstellen notepad hallowelt.java <Enter> In die darauf erscheinende Notepad-Applikation den folgenden Quelltext einfügen und die Daten sichern: public class hallowelt { public static void main( String[] args ) { System.out.println( "Hallo Welt!" ); } } • Übersetzen Übersetzen der gespeicherten Datei ’hallowelt.java’ durch folgende Eingabe im MS-DOS Fenster: javac hallowelt.java • <Enter> Ausführen Ausführen des Bytecodes durch: java hallowelt <Enter> (!!!) Zur Behebung des evtl. auftretenden Fehlers ’Can’t find Class hallowelt’ muss die Umgebungsvariable ’CLASSPATH’ auf das aktuelle Verzeichnis gesetzt werden. set CLASSPATH=. 24. April 2004 <Enter> 2 Praktikum ’Einführung in die Programmierung’ MS-DOS Eingabeaufforderung Im Folgenden einige wichtige Befehle für die Navigation im MS-DOS Eingabeaufforderungs-Fenster: mkdir temp cd temp cd.. dir rename a.txt b.java notepad cls help xy /? javac hallo.java java hallo Legt ein Verzeichnis mit dem Namen “temp“ an Wechselt in das Verzeichnis “temp“ Wechselt in das übergeordnete Verzeichnis Gibt den Inhalt des aktuellen Verzeichnisses aus Benennt die Datei “a.txt“ in “b.java“ um Öffnet den Texteditor “Notepad“ Löscht den Bildschirminhalt Gibt eine Liste der möglichen Befehle aus Gibt eine Hilfe für den Befehl “xy“ aus Übersetzt den Quelltext der Datei “hallo.java“ in maschinenunabhängigen Bytecode Führt den übersetzten Bytecode aus Zur Behebung des evtl. auftretenden Fehlers ’Can’t find Class hallo’ muss die Umgebungsvariable ’CLASSPATH’ auf das aktuelle Verzeichnis gesetzt werden set CLASSPATH=. <Enter> Grundgerüst eines Java-Programmes public class SimpleClass { public static void main(String args[]) { // ...hier gehts los.... } } Der Begriff “class“ leitet eine Klassendefinition mit dem Namen “SimpleClass“ ein. Der Compiler ordnet den Inhalt zwischen dem ersten geschweiften Klammernpaar der Klasse “SimpleClass zu. Der Dateiname einer Java-Quelltextdatei muss immer denselben Namen tragen, wie die Klasse, die in ihr definiert wurde (hier: SimpleClass.java). Die Operation “main” wird als Startoperation für eine Java-Applikation automatisch ausgeführt (Und zwar vom Java-Byte-Code-Interpreter). Als Parameter werden die Kommandozeilenargumente des Aufrufs als Zeichenkette übergeben. Das Java-Programm bzw. die auszuführenden Klasse muss eine Operation “main“ enthalten. 24. April 2004 3 Praktikum ’Einführung in die Programmierung’ Quelltext-Ausschnitte • • Variablen int Hoehe; int Alter = 15; float pi = 3.14159 boolean Alarm = false // deklariert Variable Hoehe vom Typ int // deklariert Variable Alter vom Typ int und weist den Wert 15 zu. // Variable pi, Typ float // Variable Alarm, Typ boolean, Möglich: true/false Hoehe = Hoehe + 10; Hoehe += 10; // Addiert den Wert 10 auf den Ausgangswert der Variablen Hoehe Kontrollstrukturen (if / while / for) Ausführen, wenn Bedingung erfüllt 2 Bedingungen ODERVerknüpft 2 Bedingungen UND-Verknüpft if(Hoehe > 1000) { Alarm = true; } if(Hoehe > 1000 || Hoehe < 0) { Alarm = true; } if(Hoehe > 1000 && Alarm == false ) { Alarm = true; } Ausführen, solange Bedingung erfüllt 100 mal ausführen while(Zaehler < 100) { Zaehler +=1; } • for(int i = 0; i < 100; i++) { ….. } Operationen, Rückgabewerte und Parameter Operation mit Parameter vom Typ String Operation mit Rückgabetyp int und 2 übergebenen Parametern vom Typ int static void Ausgabe(String Text) { System.out.println(Text); } static int addiere(int a, int b) { int c = a + b; return c; } Operationsaufruf Operation mit Parameter-Array vom Typ int static void Ausgabe(int[] ZahlenFeld) { int Wert; for(int i = 0; i < ZahlenFeld.length; i ++) { Wert = ZahlenFeld[i]; System.out.println(Wert); } } 24. April 2004 int Ergebnis; Ergebnis = addiere(5, 20); 4 Praktikum ’Einführung in die Programmierung’ • Felder/Arrays Anlegen eines Feldes Alternatives Anlegen eines Feldes int[] ZahlenFeld; String[] ZeichenFeld; int ZahlenFeld[] = {4,3,2,99,17}; String ZeichenFeld[] = {“Karl“, “Peter“, “Udo“}; Zahlenfeld = new int[5]; ZeichenFeld = new String [8]; Auslesen und Zuweisen von Werten Ermitteln der Feldgröße int Wert; String Text; int Feldgroesse; Feldgroesse = ZahlenFeld.length; Feldgroesse = ZeichenFeld.length; Wert = ZahlenFeld[0]; Text = ZeichenFeld[0]; ZahlenFeld[1] = 15; ZeichenFeld[1] = “Hallo“; • Strings/Zeichenfolgen Auslesen eines einzelnen Buchstabens Ermitteln der Länge String Text; char Buchstabe; String Text; int Laenge; Text = “Hallo“; Text = “Hallo“; Buchstabe = Text.charAt(0); Laenge = Text.length(); Vergleich zweier Strings Ermitteln der Feldgröße String Text1 = “Ernie“; String Text2 = “Bert“; int Feldgroesse; Feldgroesse = ZahlenFeld.length; Feldgroesse = ZeichenFeld.length; if(Text1.equals(Text2) == true) { //....Vergleich trifft zu } 24. April 2004 5 Praktikum ’Einführung in die Programmierung’ • Einlesen von Werten import java.io.*; public class SimpleClass { public static void main(String args[]) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // Einlesen einer Zeichenfolge System.out.println(“Geben Sie Ihren Namen ein”); String Name = in.readLine(); // Einlesen einer Zahl. Komplizierter, da Zeichenkette umgewandelt werden muss System.out.println(“Geben Sie Ihr Alter ein”); String Eingabe = in.readLine(); Integer Hilfswert = new Integer(Eingabe); int Alter = Hilfswert.intValue(); System.out.println(Name); System.out.println(Alter); } } Aufgaben • Schreiben Sie eine Klasse, die eine Operation enthält, die die n-Fakultät einer übergebenen Zahl ermittelt und diese zurückgibt (z.B. bei 5: n! = 1*2*3*4*5) • Schreiben Sie eine Operation, die zu einem übergebenen Feld und einer übergebenen Zahl prüft, ob die Zahl im Feld enthalten ist. Rufen Sie diese in der main-Operation auf und benutzen Sie den Rückgabetyp boolean • Bestimmen Sie, wie oft ein bestimmtes Zeichen in einem Text vorkommt • Prüfen Sie, ob zwei gegebene Zeichenfolgen gleich sind • Schreiben Sie ein Programm, das eine Zeichenkette einliest und die einzelnen Zeichen in umgekehrter Reihenfolge wieder ausgibt 24. April 2004 6