Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float,

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float,"—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float, double char

2 PKJ 2005/2 Stefan Dissmann Typumwandlung Aus der letzten Vorlesung Umwandlung von Zeichen zu und aus int implizit: int i = ' a ' ; i=97, Unicode-Position von a char c = 97+1; c= ' b ', Zeichen 98 in Unicode char c = 'a'+2; c= ' c ', Zeichen 99 in Unicode Geht, weil passende Größe des zugewiesen Wertes garantiert ist: Alle zugewiesenen Werte sind Konstanten => Compiler berechnet Wert und bestimmt das zuzuweisende Zeichen

3 PKJ 2005/3 Stefan Dissmann Typumwandlung Aus der letzten Vorlesung Umwandlung von Zeichen Aber: int i = 97 ; i=97 (Unicode-Position von a) char c = i+1; i ist Variable => der Compiler kann nicht im Voraus rechnen, sondern vermutet Unheil Lösung: char c = (char)(i+1); Type Cast

4 PKJ 2005/4 Stefan Dissmann Zuweisungsoperatoren Sind Kurzformen für häufige Formen der Zuweisung. Bieten nichts, was nicht auch anders geht! stattkurz summe = summe + zähler; summe += zähler; produkt = produkt * zähler; produkt*=zähler; Analog: -= /= %= Vorsicht: Der Berechnungsoperator wird gerne übersehen!

5 PKJ 2005/5 Stefan Dissmann Zuweisungsoperatoren Mit etwas komplexerer Semantik! stattkurz zähler = zähler + 1;zähler++; oder ++zähler; aber: zähler++ und ++zähler ändern zähler in gleicher Weise, liefern aber als Operator unterschiedliche Ergebnisse Analog: --zähler und zähler--

6 PKJ 2005/6 Stefan Dissmann Zuweisungsoperatoren i++ erhöht i um 1 und liefert den Wert von i vor der Erhöhung ++i erhöht i um 1 und liefert den Wert von i nach der Erhöhung Beispiel: int i=1, j=1; System.out.println(i++); druckt 1 System.out.println(++j); druckt 2 System.out.println(i + + j); druckt 2 2 Daher unbedingt vermeiden: i = --i - ++i + i++; Was ergibt diese Zeile für int i=5; ?

7 PKJ 2005/7 Stefan Dissmann Sichtbarkeit von Variablen Variablen sind immer sichtbar nach ihrer Vereinbarung, in dem Block, in dem sie vereinbart wurden, in allen darin geschachtelten Blöcken, in der for-Schleife, in deren Kopf sie vereinbart wurden. Variablen können in ihrem Sichtbarkeitsbereich nicht erneut vereinbart werden!

8 PKJ 2005/8 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit Gleichheit aller Vorkommen Änderungsfreundlichkeit Programmverkürzung

9 PKJ 2005/9 Stefan Dissmann Methoden (Motivation) Beispiel Ausgabe eines Rechnungsbetrags in folgender Form: Gesamtbetrag Eurocent 2235 (enthält 16% MwSt.: Eurocent 304) Fester Anteil (Text): Gesamtbetrag Eurocent 2235 (enthält 16% MwSt.: Eurocent 304) Variabler Anteil (zwei ganzzahlige Werte): Gesamtbetrag Euro 2235 (enthält 16% MwSt.: Euro 304)

10 PKJ 2005/10 Stefan Dissmann Methoden (Motivation) Gesamtbetrag Eurocent 2235 (enthält 16% MwSt.: Eurocent 304) Programmcode für festen Anteil: System.out.println(Gesamtbetrag); System.out.print(Eurocent ); // Ausgabe Betrag System.out.print( (enthält 16% MwSt.: Eurocent ); // Ausgabe Betrag der MwSt. System.out.println());

11 PKJ 2005/11 Stefan Dissmann Methoden (Motivation) Gesamtbetrag Eurocent 2235 (enthält 16% MwSt.: Eurocent 304) Programmcode für variablen Anteil: int betrag = ???? System.out.println(Gesamtbetrag); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(betrag/116*16); System.out.println());

12 PKJ 2005/12 Stefan Dissmann Methoden (Beispiel) Und nun als Methode: public static void rechnung(int betrag) { System.out.println(Gesamtbetrag); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(betrag/116*16); System.out.println()); }

13 PKJ 2005/13 Stefan Dissmann Methoden (Beispiel) Bisher bekannt von main : public static void rechnung(int betrag) { System.out.println(Gesamtbetrag); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(betrag/116*16); System.out.println()); } Also: main ist auch eine Methode!

14 PKJ 2005/14 Stefan Dissmann Methoden (Beispiel) Neu ist der selbst gewählte Parameter: public static void rechnung(int betrag) { System.out.println(Gesamtbetrag); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(betrag/116*16); System.out.println()); }

15 PKJ 2005/15 Stefan Dissmann Methoden (Beispiel) public static void rechnung(int betrag) { … } Zusammenfassung: Die Vereinbarung einer Methode besteht aus - einem Kopf mit - Schlüsselwörtern, - einem Namen und - einer Parameterliste und aus einem Rumpf mit Programmtext in einem Block, in dem die Parameter verwendet werden können.

16 PKJ 2005/16 Stefan Dissmann Methoden (Vereinbarung) Methoden werden direkt in Klassen vereinbart! Also zum Beispiel: public class testRechnung { public static void rechnung(int betrag) { … } public static void main(String[] args) { … }

17 PKJ 2005/17 Stefan Dissmann Methoden (Aufruf) Methoden werden in Methoden aufgerufen! Also zum Beispiel druckt folgendes Programm 6 Zeilen: public class testRechnung { public static void rechnung(int betrag) { … } public static void main(String[] args) { rechnung(7580); rechnung(5699); rechnung(10250);}

18 PKJ 2005/18 Stefan Dissmann Methoden (Aufruf) Beim Aufruf einer Methode wird dem Parameter mit ein Wert übergeben! rechnung(7580); ist im Prinzip vergleichbar mit: betrag = 7580; System.out.print(betrag); … System.out.print(betrag/116*16); Parameter sind Variable, die nur in der Methode sichtbar sind, aber über den Aufruf gesetzt werden können.

19 PKJ 2005/19 Stefan Dissmann Methoden (weitere Beispiele) 2 Parameter (Parameterliste) public static void rechMitNr(int betrag,int nr) { System.out.println(Gesamtbetrag für + nr); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(betrag/116*16); System.out.println()); }

20 PKJ 2005/20 Stefan Dissmann Methoden (weitere Beispiele) ohne Parameter (leere Parameterliste) public static void rechnungKonto() { System.out.print(Bitte überweisen Sie den ); System.out.print( Betrag auf das Konto: ); System.out.println( ); }

21 PKJ 2005/21 Stefan Dissmann Methoden (Wertrückgabe) Methoden für Programm bisher ein Schwarzes Loch Parameter verschwinden, aber nichts kommt zurück Jetzt: Methode liefert genau einen Wert zurück in das Programm! Beispiel: Berechnung der MwSt. aus Endbetrag public static int mwstVonBetrag(int betrag) { return betrag/116*16; }

22 PKJ 2005/22 Stefan Dissmann Methoden (Wertrückgabe) public static int mwstVonBetrag(int betrag) { return betrag/116*16; } Typangabe vor dem Namen bestimmt den Typ des zurückgegebenen Wertes Es ist nur eine Typangabe erlaubt! Sprechweisen: Rückgabetyp, Rückgabewert

23 PKJ 2005/23 Stefan Dissmann Methoden (Wertrückgabe) public static int mwstVonBetrag(int betrag) { return betrag/116*16; } Das Schlüsselwort return bestimmt den zurückgegebenen Wert. Der zurückgegebene Wert muss zum Typangabe passen! Nach der Ausführung der return -Anweisung wird die Ausführung der Methode abgebrochen. Mehrere return -Anweisungen sind daher möglich.

24 PKJ 2005/24 Stefan Dissmann Methoden (weitere Beispiele) public static int prozVonBetrag(int betrag, int p) { return betrag/(100+p)*p; } Und neu vereinbart: public static int mwstVonBetrag(int betrag) { return prozVonBetrag(betrag,16); } Ganz wichtig: Jede der beiden Methoden hat ihre eigene Variable mit dem Namen betrag!

25 PKJ 2005/25 Stefan Dissmann Methoden (weitere Beispiele) Und als Abschluss: public static void rechnung(int betrag) { System.out.println(Gesamtbetrag); System.out.print(Eurocent ); System.out.print(betrag); System.out.print( (enthält 16% MwSt.: Eurocent ); System.out.print(mwstVonBetrag(betrag)); System.out.println()); } Übrigens: print und println sind auch Methoden!


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float,"

Ähnliche Präsentationen


Google-Anzeigen