Zusammenfassung des Kapitel 6

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Ziele von EINI I + II Einführen in „Informatik“
ALP II: Objektorientierte Programmierung Sommersemester 2006
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
der Universität Oldenburg
Verteilte Software - Java - Prozedurale Programmierung 1
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
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 und Arbeitsspeicher
ARRAY oder FELD oder VEKTOR
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
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,
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Style Guidelines für Java und .NET
Dynamische Datentypen
Variablenkonzept Klassisch, in Java Basistyp
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP 5.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
MODULA-2.
PI Burgenland Java und JavaScript 1. Teil
Hochschule Fulda – FB ET Sommersemester 2014
Mittwoch Informatik II, 1. Teil
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Konstruktoren.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs - 4. Übung weitere Kontrollstrukturen
SS 04 Christiane Rauh Christian Hellinger
Implementieren von Klassen
 Präsentation transkript:

Zusammenfassung des Kapitel 6 Informatik I – Kapitel 6 „ Elementare Konzepte von Programmiersprachen“ Zusammenfassung des Kapitel 6 Küchlin, Weber, Einführung in die Informatik, 2.Auflage 16.1.2004

Datentypen Deklaration von elementare (primitive types) Begriffe Datentypen elementare (primitive types) schon eingebaut (char, short , long , int, float, double) strukturierte (structured types) array, String, eigene Klassen Deklaration von Konstanten public final static int MYPI=3.1415927; Variablen int kreisRadius;

Ausdrücke Anweisungen haben einen Wert Zuweisungen Begriffe Ausdrücke haben einen Wert sin(math.PI) wird zu 0 sin(kreisRadius) wird zur Laufzeit ausgewertet Anweisungen Zuweisungen kreisRadius = 2.67; Anweisungen zur Ablaufsteuerung elementare Verzweigungen if-then-else, switch, goto höhere Schleifenkonstrukte while, do-while, for

Unterprogramme Prozeduren Funktionen Begriffe Unterprogramme Prozeduren kein Rückgabewert public static void meineProzedur(..){ ... } Funktionen ein Rückgabewert public static int meineFunktion(..){ ... } dienen der Kapselung, also der Strukturierung in Java werden sie als Methoden einer Klasse realisiert

Syntax Semantik Schlüsselwörter und die zugehörige Grammatik Begriffe Syntax Schlüsselwörter und die zugehörige Grammatik meist in BNF (Backus-Naur-Form) if_statement ::= "if" "(" expression ")" statement [ "else" statement ] BNF Index of JAVA language grammar, http://cui.unige.ch/java/JAVAF/ Semantik Bedeutung/ Sinn des Codes

Schlüsselwörter in Java Begriffe Schlüsselwörter in Java abstract, finally, public, assert, float, return, boolean, for, short, break, goto, static, byte, if, strictfp, case, implements, super, catch, import, switch, char, instanceof, synchronized, class, int, this, const, interface, throw, continue, long, throws, default, native, transient, do, new, try, double, package, void, else, private, volatile, extends, protected, while, final Literale das Literal 12 hat z.B. die Bedeutung/ den Wert 12 “inhalt“ steht für einen String mit dem Wert inhalt Namen bezeichnen Variablen, Klassen, Methoden Namenskonvention beachten! (ichBinMethode, ichVariable, ICHKONSTANTE)

Variablen, Referenzen, Zuweisungen Deklaration: int x; Zuweisung: x=23; charakterisiert durch: <Typ, Name, Referenz, Wert> int x = 23; 23 x Speicher L-Wert R-Wert

Referenzvariable, Reihungsvariable Referenzvariable (Explizit in Java nicht möglich) „x ist Referenz darauf, wohin y zeigt“ (C++: int* x = &y;) Reihungsvariable x y 23 Stack 23 Heap 42 65 int[ ] a = new int[ ]{42, 23, 65}; a

Ganzzahl-Arithmketik Java-Arithmetik nach Typ der Operanden 3/ 2 = 1, weil Ganzzahlarithmetik (1 [Rest 1]) Überlauf schneidet zusätzliche Bits ab (231-1) + 1 = -231 (bei 32bit-Integer-Arithmetik) Grund: Zweierkomplementdarstellung: 01 11111 11111 11111 11111 11111 11111 [231-1] +00 00000 00000 00000 00000 00000 00001 [1] =10 00000 00000 00000 00000 00000 00000 [-231] dadurch „Ring“ und kein „out of range“

Gleitkomma-Arithmetik (+Infinity, ...) Stichpunkte Gleitkomma-Arithmetik (+Infinity, ...) Zuweisungsoperatoren (Wert des Ausdrucks) Arithmetische Operatoren Boolesche Operatoren Rechnen auf Bitmustern (&, |) Ausdrücke (Präfix, Postfix, Infix, Roundfix, Mixfix) (Präzedenz von Operatoren = Bindungskraft)

explizite Typkonversion (int) 13.6 ergibt ein Integer mit dem Wert 13 Java schneidet hier den Nachkommateil ab (= Runden zur 0) implizite Typkonversion Typverengung hin zu einem Typ mit ungenauerem Wertebereich (double -> int) Typaufweitung hin zu einem Typ mit genauerem Wertebereich (int -> double) z.B. <double> + <int> -> <double> 12.6 + 10 ergibt ein Double mit dem Wert 22.6

Blöcke, Gültigkeitsbereich, Lebensdauer Stichpunkte Anweisungen Blöcke, Gültigkeitsbereich, Lebensdauer Adressrechnung (dynamisch/ statisch) Bedingte Anweisungen Schleifenkonstrukte Marken break und continue

class Unterprogramme{ public static int plus(int x, int y){ return x+y; } public static void main(String[] args){ int a = 7; int b = 8; System.out.println( plus(a, b) ); } Kopf Rumpf Ergebnistyp Name formale Parameter Signatur aktuelle Parameter

public double plus(double x, double y){ ... } Unterprogramme Überladung von Methoden z.B. für generisches Programmieren mithilfe unterschiedlicher Signaturen class MyMath{ ... public double plus(double x, double y){ ... } public float plus(float x, float y){ ... } public int plus(int x, int y){ ... } }

Unterprogramme Parameteruebergabe Parameterübergabe call by value (Werteaufruf, JAVA) call by reference (Referenzaufruf) call by name (Namensaufruf)

Unterprogramme Parameteruebergabe call by value (Der einzige Übergabemechanismus in Java) Stack a=7; b=8; main x=7; y=8; plus  class CallByValue{ static int a = 7; static int b = 8; public static void main(String[ ] args){ System.out.println(“a+b: “+plus(a, b)); System.out.println(“a: “+a); System.out.println(“b: “+b); } public static int plus(int x, int y){ int res = x+y; x++; return res; Stack a=7; b=8; main x=8; y=8; plus ‚ ƒ  Stack a=7; b=8; main ƒ ‚ „es wird eine Kopie der Werte angelegt“

Unterprogramme Parameteruebergabe Call by value mit zusammengesetzten Typen (geschieht in Java bei Variablen vom Typ einer Klasse inkl. Arrays) a main x plus  Stack Heap 7 8 class PassReferenceByValue{ static int[ ] a = new int[ ]{7, 8}; public static void main(String[ ] args){ System.out.println(“a[0]+a[1]: “+plus(a)); System.out.println(“a[0]: “+a[0]); System.out.println(“a[1]: “+a[1]); } public static int plus(int[ ] x){ int res = x[0]+x[1]; x[0]++; return res; ‚ a main x plus Stack Heap 8 ƒ  ƒ a main Stack Heap 8 ‚ „es wird eine Kopie eines Zeigers auf die Werte übergeben“

Unterprogramme Parameteruebergabe call by reference (In Java nicht möglich, aber z.B. in C# (ref), C++ (&), Pascal (var)) public class CallByReference{ static int[ ] a = new int[ ]{7, 8}; public static void Main(String[ ] args) { Console.WriteLine("a[0]+a[1]: "+plus(ref a)); Console.WriteLine("a[0]: "+a[0]); Console.WriteLine("a[1]: "+a[1]); } public static int plus(ref int[ ] x){ int res = x[0] + x[1]; x[0]++; return res; a main x plus  Stack Heap 7 8 C# ! ƒ ‚ a main x plus Stack Heap 8  ‚ ƒ a main Stack Heap 8 „es wird eine Referenz, also ein Linkswert, übergeben, der formale Parameter wird zum Alias für den aktuellen Parameter“

Call by reference vs. Call by value ON REFERENCES static void Main(string[] args){ a = new int[ ]{7, 8}; change(a); bzw. change(ref a); } ƒ ƒ a main x change 8 2 3 ‚ Pass reference by value: a main x change Stack Heap 8  static void change(int[ ] x){ x[0]++; x = new int[ ]{2, 3}; }  a main 8 ƒ ‚ Call by reference: a main x change Stack Heap 8  a main x change 8 2 3 ‚ static void change(ref int[ ] x){ x[0]++; x = new int[ ]{2, 3}; }  ‚ a main 2 3 ƒ

Unterprogramme Parameteruebergabe call by name (gibt es in Java nicht, aber z.B. in VisualBasic) Da der Mechanismus der Namensübergabe in Java nicht direkt vorgesehen ist, gehen wir im folgenden Beispiel davon aus, dass wir eine Klasse „Assoziativspeicher“ haben, die die Methoden „int getValueByName(String name)“ und „setValueByName(String name, int value)“ enthält. class CallByNameSimulation{ static Assoziativspeicher A = new Assoziativspeicher(); public static void main(String[ ] args){ A. setValueByName( “a“, 7); A. setValueByName( “b“, 8); System.out.println(“a+b: “+plus(“a“, “b“)); System.out.println(“a: “+A. getValueByName( “a“)); System.out.println(“b: “+A. getValueByName( “b“)); } public static int plus(String n1, String n2){ int res = A. getValueByName(n1)+A. getValueByName(n2); A. setValueByName( n1, A. getValueByName(n1)+1) return res; Assoziativspeicher A Name a b Wert 7 8 int getValueByName(String Name); setValuebyName(String Name, int value); Name a b Wert 8 8 „es wird ein Name übergeben“

Endrekursion Rekursion Rekursion haben wir ausführlich auf früheren Folien im Tutorium behandelt! Siehe sum_in_java! (vor allem die Kontexte!) Endrekursion public static int sum_rek(int n){ if ( n == 0 ) return 0; return ( n + sum_rek( n-1 ) ); } public static int sum_endRek(int n){ return sum_endRekHelp( n, 0 ); } public static int sum_endRekHelp(int n, int res){ if ( n == 0 ) return res; return sum_endRekHelp( n-1, res+n ) ); „es wird nur leerer Kontext erzeugt“

endrekursiv -> iterativ public static int sum_rek(int n){ return sum_endRek( n, 0 ); } public static int sum_endRekHelp(int n, int res){ if ( n == 0 ) return res; return sum_endRekHelp( n-1, res+n ) ); public static int sum_iter(int n){ int k = n; int res = 0; while ( k >= 0) { res = k + res; k = k - 1; } return res;