Java-Kurs Java-Grundlagen Seite 1 Java – Kurs Quelle: Dr. E. Gutknecht, Einführung in die Programmierung mit Java Vorlesungs-Skriptum WS 2001/2002, FH Aargau (evtl.) erhältlich beim Autor: [email protected] Kapitel 1: Grundlagen 1.1 Das erste Java-Programm Quellcode: public class Hello { static public void main( String[] args ) { System.out.println("Hello World!"); System.out.println("Das erste Java-Programm"); } } Programm-Aufbau Jedes Programm (Applikation) ist ein eigene Klasse, deren Name beliebig gewählt werden kann: public class ProgrammName Die Angabe public (öffentlich) ist nötig, damit das Programm vom Java-Interpreter ausgeführt werden kann. Jede Java-Applikation hat eine Hauptmethode main . Sie wird bei der Ausführung des Programms aufgerufen. System.out.println("Text") System.out.print("Text") Ausgabe auf dem Bildschirm und Zeilenvorschub ohne Zeilenvorschub Schreibweise Gross/Kleinschrift ist wesentlich. Leerzeichen (mehrere wie eines) und Tabulatoren zwischen Wörtern (Befehle usw.). Return ist wie Leerzeichen. Strichpunkte trennen Befehle. Kommentare hinter // bis zum Zeilenende. Compilierung und Ausführung Text in Texteditor eingeben, Datei als Hello.java (Schreibweise!) speichern. Übersetzung mit dem Java-Compiler mit Befehl javac Hello.java; evtl. Syntaxfehler beheben. Bei erfolgreicher Compilation wird die Datei Hello.class erzeugt. Diese lässt sich mit dem Befehl java Hello ausführen. Evtl. sind Pfadangaben für Befehle (javac, java und Dateien nötig. TexPad: Extras – Java kompilieren Extras – Java-Programm starten Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 2 1.2 Variabeln, Konstanten und Ausdrücke Grundlegende Datentypen int double char boolean ganze Zahlen reelle zahlen einzelne Textzeichen false und true (für Entscheidungen) Definition Jede Variable muss mit Angabe des Datentyps definiert werden. int i; double xWert; int n , m; // definiert zwei Variablen Wertzuweisung Mit dem Operator ‘=’ wird einer Variabeln ein Wert zugewiesen: Variable = Wert i = 4; xWert = -3.45; Die Wertzuweisung kann mit der Definition erfolgen. int i = 4; Rechts kann ein Ausdruck stehen; dieser wird zuerst berechnet, dann erfolgt die Zuweisung: i = i + 1; i = i – 1; Abgekürzt: i++ Abgekürzt: i-- Wert von i um 1 erhöhen Wert von i um 1 vermindern Ausdrücke Für algebraische Ausdrücke (Terme) gelten die üblichen Regeln. c = a*b – a x = b / (2*a) Konstanten Konstanten werden wie Variablen definiert mit dem Zusatz final. final int i = 100; final double g = 9.81; Bildschirmausgabe int i = 12; System.out.println(i); Kant. FS-Tag 02 ICT // gibt 12 aus Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 3 1.3 Mathematische Funktionen Die mathematischen Funktionen werden in Java als Methoden des Objekts Math aufgerufen. Double w = Math.sqrt(2); Einige Funktionen: Wurzel Trigonometrische Funktionen Exponetioalfunktion ex natürlicher Logarithmus lnx Zufallszahl (double) zwischen 0 und 1 Konstante: Zahl sqrt(x) sin(x), cos(x), tan(x) (x im Bogenmass) exp(x) log(x) random(x) Math.PI 1.4 While-Schleife Struktur: while ( Bedingung ) { Anweisungen } Beispiel: Ausgabe von 100 Zufallszahlen public class ZufallsZahlen { static public void main(String[] arg) { int i = 1; while (i<=10) { System.out.println(Math.random()); i++; } } } Erklärungen: Zuerst wird die Bedingung geprüft, dann werden die Anweisung ausgeführt. Dies wiederholt sich, solange die Bedingung erfüllt ist. Die Bedingung ist ein Ausdruck, der true (wahr) oder false (falsch) ist, ein sogenannter Boolescher Ausdruck. Vergleichsoperatoren: Operator < <= == != >= > Bedeutung kleiner kleiner oder gleich gleich (Achtung: = für Zuweisung) ungleich grösser oder gleich grösser Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 4 1.5 Entscheidungen Struktur: if ( Bedingung ) { Anweisungen } else { Anweisungen } Bemerkungen: Wenn nur eine Anweisung, keine Klammer nötig. Der else-Teil kann weggelassen werden. Beispiel: 100 Münzenwürfe, Anzahl Kopf ? Anzahl Zahl? public class Muenze { static public void main(String[] arg) { final int nWuerfe = 100; int i = 0; int nKopf = 0; double x; while (i<=nWuerfe) { x = Math.random(); if (x<=0.5) nKopf++; i++; } System.out.print("Anzahl Wuerfe mit Kopf: "); System.out.println(nKopf); System.out.print("Anzahl Wuerfe mit Zahl: "); System.out.println(nWuerfe-nKopf); } } Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 5 1.6 Neue Methoden Das Geheimnis der Kunst der Programmentwicklung ist die Aufteilung einer Aufgabe in Teilaufgaben, die von Unterprogrammen ausgeführt werden. Unterprogramme heissen in Java Methoden. Man unterscheidet zwei Arten von Methoden: Funktionen und Prozeduren Funktionen sind Methoden, die einen Wert als Resultat abgeben. Das Resultat kann z.B. einer Variablen als Wert zugewiesen werden. z.B. y = Math.sqrt(x) Prozeduren sind Methoden, die eine bestimme Aufgabe erfüllen, aber keinen Wert ab geben. z.B. System.out.println("Hello World!"); Definition und Verwendung von Methoden: Funktion Beispiel: Münzenwurf mit Funktion werfeMuenze public class Muenze { static int werfeMuenze() { double x = Math.random(); if (x<=0.5) return 0; else return 1; } static public void main(String[] arg) { final int nWuerfe = 100; int i = 0; int nKopf = 0; while (i<=nWuerfe) { if (werfeMuenze()==0) nKopf++; i++; } System.out.print("Anzahl Wuerfe mit Kopf: "); System.out.println(nKopf); System.out.print("Anzahl Wuerfe mit Zahl: "); System.out.println(nWuerfe-nKopf); } } Erklärungen Definition der Funktion mit Attribut ‚static’ und Definition des Datentyps des Resultats. runde Klammern immer nötig (vgl. Parameter). Rückgabe des Funktionswerts mit return. Aufruf der Funktion in der main-Methode mit werfeMuenze(). Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 6 Lokale Variablen Die in einer Methode definierten Variablen sind nur innerhalb der betreffenden Methode bekannt, darum heissen sie lokale Variable. Parameter Mit Parametern können einer Methode beim Aufruf Werte übergeben werden. Ein Parameter ist eine lokale Variable der Methode, die beim Aufruf der Methode vom aufrufenden Programm einen Wert erhält. Beispiel: static double mittel(double a, double b) { return (a + b)/2; } Aufruf der Funktion z.B. mit double x = 10; double y = -5; double m = mittel(x,y); Prozeduren Bei der Definition einer Prozedur wird als Resultat-Typ das Schlüsselwort ‚void’ (leerer Datentyp) angegeben. Ein Return-Befehl ist nicht nötig. Beispiel: Wiederholte Ausgabe eine Charakters static void linie(char ch, int laenge) { int i=0; while (i<laenge) { System.out.print(ch); i++; } System.out.println(""); } Aufruf der Methode z.B. mit linie("*",20) Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 7 1.7 Eigene Input/Output-Methoden Die Standard-Methoden der Java Library (Sammlung der Java-Befehle) sind leider ungenügend. Daher verwenden wir selber (nicht E. Gutknecht) geschriebene Methoden, welche in der Datei InOut.java definiert sind. Die Datei muss im gleichen Verzeichnis sein. Bei der ersten Kompilation eines Programms, das eine Methode von InOut aufruft, wird das File InOut.java automatisch kompiliert. Input Einlese-Methode für numerische Werte: int n; double x; n = InOut.getInt(); x = InOut.geDouble(); // ganze Zahl einlesen // reelle Zahl einlesen Bei der Ausführung der Funktionen wartet das Programm, bis der Benutzer eine Eingabe gemacht hat, abgeschlossen mit der Return-Taste. Der Eingabewert wird der betreffenden Variable übergeben. Formatierte Bildschirmausgabe Ausgabe von Ganzzahlen für Tabellen int = 10; InOut.print(n,8); // rechtsbündig in Feld von 8 Stellen Werte mit Dezimalstellen double x = Math.PI; InOut.print(x,8,4); // 8 Stellen vor dem Dezimalpunkt, 4 Dezimalstellen Beispiel: Eingabe: Kreisradius r. Berechnung des Umfangs und der Fläche des Kreises. public class Kreis { static double umfang(double r) { return 2*r*Math.PI; } static double flaeche(double r) { return r*r*Math.PI; } static public void main(String[] arg) { double radius; System.out.print("Geben Sie den Radius ein: "); radius = InOut.getDouble(); System.out.print("Umfang: "); InOut.println(umfang(radius),4,2); System.out.print("Fläche: "); InOut.print(flaeche(radius),4,2); System.out.println(""); } } Kant. FS-Tag 02 ICT Christoph Arnold, KSL Java-Kurs Java-Grundlagen Seite 8 1.8 Aufgaben zu Java-Grundlagen zu 1.1: Aufgabe 1 a) Erstellen Sie das Programm Hello. b) Verändern Sie das Programm so, dass ein mehrzeiliger veränderter Text ausgegeben wird. zu 1.2: Aufgabe 2 Erstellen Sie ein Programm, das aus zwei Zahlen a und b (Variable) den Mittelwert berechnet und ausgibt. zu 1.3: Aufgabe 3 a) Erstellen Sie ein Programm, das eine Zahl (Variable) und ihre Wurzel ausgibt. b) Erstellen Sie ein Programm das aus dem Kreisradius r (Variable) den Umfang und die Fläche des Kreises berechnet und ausgibt. zu 1.4: Aufgabe 4 Erstellen Sie das Programm ZufallsZahlen. Aufgabe 5 Erstellen Sie ein Programm, das alle Quadratzahlen ausgibt, die kleiner als 200 sind. Aufgabe 6 Erstellen Sie ein Programm Potenzen, das die Potenzen von 2 für Hochzahlen von 1 bis 20 ausgibt. Hinweis: Verwende eine int-Variable potenz , die bei jedem Schritt verdoppelt wird. zu 1.5 und 1.6: Aufgabe 7 a) Erstellen Sie das Programm Muenze. b) Verändern Sie das Programm so, dass eine Funktion werfeMuenze verwendet wird. Aufgabe 8 Erstellen Sie ein Programm, das 100 Zufallszahlen erzeugt und dabei die kleinste und grösste bestimmt. Hinweis: Verwenden Sie zwei Variablen min und max, die während der Schleife laufend den bisher kleinsten bzw. grössten Wert enthalten. Aufgabe 9 a) Erstellen Sie ein Programm figur mit der Prozedur linie, das als Figur eine Linie von 20 Sternchen ausgibt. b) Verändern Sie das Programm so, dass ein ausgefülltes Rechteck von Sternchen ausgegeben wird. c) Verändern Sie das Programm so, dass ein nicht ausgefülltes Rechteck von Sternchen ausgegeben wird. d) Verändern Sie das Programm so, dass ein ausgefülltes Dreieck von Sternchen ausgegeben wird. e) Verändern Sie das Programm so, dass eine Figur eigener Wahl erzeugt wird. zu 1.7: Aufgabe 10 a) Verbessern Sie das Kreisberechnungsprogramm so, dass der Radius eingegeben werden kann und die Ausgabe 'schön' erfolgt. b) Ergänzen Sie das Programm mit einer Schleife, die es erlaubt, dass der Benutzer wählen kann, ob er noch eine Berechnung machen will. Aufgabe 11 Verbessern Sie alle gemachten Programme so, dass Eingaben gemacht werden können und die Ausgabe 'schön' gestaltet ist. Kant. FS-Tag 02 ICT Christoph Arnold, KSL