Zusammenfassung Vorwoche

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Forschungszentrum caesar
Zusammenfassung der Vorwoche
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
SWITCH - Anweisung.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
FOR Anweisung.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Thema: Fibonacci-Zahlen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Rekursive Funktionen (Fakultät)
Einführung in die Programmiersprache C 1
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Unterprogramme in JAVA
Aufruf einer Methode eines Objektes vom Typ „Bruch“
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Tutorium Software-Engineering SS14 Florian Manghofer.
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
Implementieren von Klassen
 Präsentation transkript:

Zusammenfassung Vorwoche Weitere Konstrukte: for-Schleife if-else-Anweisung Weitere Typen: boolean byte, short, long, float, double char

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

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

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

Zuweisungsoperatoren Mit etwas komplexerer Semantik! statt kurz 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--

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;?

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!

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

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

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(“)“);

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(“)“);

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(“)“); }

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!

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(“)“); }

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.

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) {

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); } }

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.

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(“)“); }

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(“ 7552030 “); }

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; }

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

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.

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!

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!