Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1
sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können unter diesem aufgerufen werden Syntax einer Methode: Modifikator - Return-Typ Name Parameter public static void hallo () return-type method-name (param-type1 param-name1,..., param-typen param-namen ){ // code aufruf: method-name (param1,..., paramn); Übungen Informatik 1 Folie 2
Zugriffsrechte Klassen, Attribute und können Zugriffsrechte erhalten. public: öffentliche Methode,d.h, die Methode kann in anderen Klassen verwendet werden. public static String hallo() private: Methode ist nur in der eigenen Klasse sichtbar, und kann nur dort verwendet werden. private static String hallo() final,protected: relevant bei einer Vererbung kommt im 2. Semester final String hallo() protected String hallo() ohne Modifikator: Methode ist in der Klasse und im Package sichtbar (wie protected) static: Klassenmethode d.h. sie kann aufgerufen werden, ohne eine Instanzen der Klasse erzeugen zu müssen, die Methode gehört zu einer Klasse, nicht zu einem Objekt static String hallo() void: die Methode liefert keinen Wert zurück public static void hallo() Übungen Informatik 1 Folie 3
Rückgabewerte, die keinen Rückgabewert liefern, sind mit void deklariert. fehlt das void liefert die Methode in der Anweisung return einen Rückgabewert. public class Methode1 { public static void main (String [] args ) { System.out.println ( hallo() ); static String hallo() { // String legt den Typ für den return "Hallo"; // Rückgabewert fest die Klasse Methode1 enthält Methode main() liefert keinen Rückgabewert, da vom Typ void Methode hallo() liefert einen Rückgabewert vom Typ String Übungen Informatik 1 Folie 4
Beispiel public class Druck{ public static void drucken (String satz) { System.out.println(satz); public static void main(string[] args) { System.out.print("\nMit 'print' und 'println' kann"); System.out.println(" man schreiben\nund rechnen:"); drucken ("6 * 7 = \t" + 6 * 7); Methode drucken kann direkt aufgerufen werden, d.h nur Name mit ( ); -ohne new- weil die Definition der Methode zur Klasse gehört, in der sie verwendet wird. Syntax für Aufruf der Methode drucken in anderen Klassen: Druck.drucken(..), vgl. System.out.println(); Übungen Informatik 1 Folie 5
formale Parameter können Werte als Parameter übernehmen. Parameter werden in der Deklaration als formale Parameter in runden Klammern festgelegt. - jeder formale Parameter muss separat als Variable mit Typ und Bezeichnung deklariert werden - formale Parameter sind innerhalb der Methode lokale Variablen static boolean gueltigesjahr (int minmumjahr, double maximumjahr) { if (minimumjahr>=1500 && maximumjahr<=2004) { return true; else { return false; Die Methode gueltigesjahr arbeitet mit dem integer-wert minimumjahr und dem double-wert maximumjahr minimumjahr und maximumjahr sind formale Parameter. Die Methode gueltigesjahr liefert einen boolschen Wert (Typ der Methode) zurück Das erfordert eine Zuweisung in der return-anweisung der Methode. der Rückgabewert der Methode steht hinter der return-anweisung gueltigesjahr (2,1800)? IO.print( ok ):IO.print( nein ); Übungen Informatik 1 Folie 6
Rückgabewerte Beispiel1: Berechne die Summe zweier Integer Werte public class Summe { static int summe (int a, int b) { // Klassenmethode (static) return a+b; // lokale Variablen public static void main (String [] args ) { System.out.println (" 1 + 1 ="+summe(1,1) ); System.out.println (" 1 + 2 ="+summe(1,2) ); System.out.println (" 11 + 23 ="+summe(11,23) ); Übungen Informatik 1 Folie 7
Rückgabewerte Beispiel2: Berechne die Mehrwertsteuer class Mehrwertsteuer{ public static double addmwst (double wert, double prozent){ double mwstbetrag; mwstbetrag = wert + wert / 100 * prozent; return mwstbetrag; public static void main(string[] args) { System.out.println( addmwst(150,16) ); andere Lösung der Methode addmwst: public static double addmwst(double wert,double prozent){ return wert / 100 * prozent + wert; Übungen Informatik 1 Folie 8
Regeln Zusammenfassung müssen innerhalb einer Klasse definiert werden Eine Methode kann an beliebiger Stelle mit Hilfe der Anweisung return verlassen werden. Ist keine return-anweisung vorhanden, wird die Methode an der schließenden geschweiften Klammer verlassen. Liefert die Methode einen Wert zurück, wird return-anweisung nötig. Rückgabewert: hinter der return-anweisung. Argumente einer Methode stehen in der in Parameterliste (Variablendeklaration mit Typ und Name - für jeden Parameter). Hat die Methode keine Parameter, ist die Parameterliste leer Übungen Informatik 1 Folie 9
Mathematische Berechnungen Klasse java.lang.math s. API: für Mathematische Berechnungen, für die kein Operator zur Verfügung steht z.b.: - Potenzrechnung - Bestimmung von Minimum und Maximum - Winkelfunktion - Quadratwurzelberechnung Übungen Informatik 1 Folie 10
mathematische Berechnung public class math { static double kreisflaeche(int radius) { double flaeche; return flaeche = Math.pow(radius, 2) * Math.PI; public static void main(string[] args) { double wurzel2; System.out.println("Kreisfläche mit radius 10 = " + kreisflaeche(10)); System.out.println(Math.min( 300, kreisflaeche(100) )); wurzel2 = Math.sqrt(2); System.out.println( "Wurzel von 2 = " + wurzel2); System.out.println( "Wurzel von 2 (abgeschn.) = " + Math.floor(wurzel2)); verwendete : Math.pow Quadrat des Radius (Math.pow(a,b) = a hoch b) Math.max,Math.min Maximum, Minimum von 2 Zahlen bestimmen Math.abs Absolutwert (ohne Vorzeichen) einer Zahl Math.sqrt Quadratwurzel Math.floor schneidet die Nachkommastellen ab. Math.PI gibt den Wert von PI = 3.141592653589793 zurück Übungen Informatik 1 Folie 11
Berechne Sinus im Bogenmass Objekt Math.sin braucht den Winkel im Bogenmass (s. APIs) (Bogenmass eines Winkels = Länge des Kreisbogens um den Winkel : Umrechnung Winkel => Bogenmass: x = PI / 180 * alpha) public class Sinus { public static void main (String argv[]) { final int MAX_GRAD = 360; int grad; double r; for (grad=0; grad <= MAX_GRAD; grad++) { r = Math.sin (grad * Math.PI / 180); switch (grad) { case 46: case 91: case 136: case 181: case 226: case 271: case 316: { char a = IO.readChar("Schluss jetzt? Dann bitte ein s eingeben: "); if (a == 's') grad = MAX_GRAD; // Ende switch IO.println("sin("+grad + "Grad) = " + r); // Ende for // Ende main // Ende class Übungen Informatik 1 Folie 12
Aufgabe n-te Wurzel von z f (x) = x n z f (x) = nx (n-1) entspricht der Steigung m y n x 0 z x 1 Tangente t(x) = mx + b t(x) = mx + ( f(x) x 0 *f (x) ) = n*x 0 (n-1) x + x 0n -z -x 0 nx 0 (n-1) = n*x (n-1) 0 x + x 0n -z-nx n 0! = n*x (n-1) 0 x + (1-n)x 0n - z = 0 f(x) f(x 0 ) -z b Tangente t(x) x 0 m 1 f'(x 0 )*x 0 x z + (n-1) x n x i+1 = i Iteration n x n-1 i Start: x 0 = 1, z und n einsetzten Ergebnis x 1 Fehler g x i x i-1 möglichst klein Übungen Informatik 1 Folie 13