Ausdrücke haben einen Wert sin(math.pi) wird zu 1 sin(kreisradius) wird zur Laufzeit ausgewertet. Informatik I Kapitel 6

Ähnliche Dokumente
3. Gültigkeit von Definitionen

Objektorientierte Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 7. Arrays

Grundlagen der Modellierung und Programmierung, Übung

c dl SPiC (Teil C, SS 11) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 1 Zeigervariable := Behälter für Verweise ( Adresse) Beispiel int x = 5;

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Elementare Konzepte von

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung

3 Module in C. 4 Gültigkeit von Namen. 5 Globale Variablen (2) Gültig im gesamten Programm

Java - Programmierung - Prozedurale Programmierung 1

3. Java - Sprachkonstrukte I

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

RO-Tutorien 15 und 16

Java-Schulung Grundlagen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

RO-Tutorien 3 / 6 / 12

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einführung in C. EDV1-04C-Einführung 1

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

SE2-6. Übung Johannes Bürdek

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Python 1. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2014

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Zentrale Fragestellung. Grundsätzliche Überlegungen über die Struktur eines Programms vor Beginn der Programmierung. Verschiedene Design-Methoden

Informatik II Prüfungsvorbereitungskurs

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

RWTH Aachen Lehrgebiet Theoretische Informatik Rossmanith Dreier Hark Kuinke. SS 2017 Blatt

Java Lexikalische Struktur

Wo sind wir? Übersicht lexikale Struktur von Java

2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module. 2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module

Mechanismus Aufrufer Funktion Funktion Aufrufer Parameter ja mit Hilfe von Zeigern Funktionswert nein ja globale Variablen ja ja

Grundlagen der Programmierung. Worum geht es? 1. Einführung. Grundlagen der Programmierung Prof. H. Mössenböck. Programm = Daten + Befehle.

Programmieren in Java

Vorkurs Informatik WiSe 16/17

RO-Tutorien 17 und 18

Objektorientierung. Marc Satkowski 20. November C# Kurs

2 Programmieren in Java I noch ohne Nachbearbeitung

Einführung in die Programmierung Wintersemester 2008/09

Fragenkatalog ESOP WS 16/17

3. Anweisungen und Kontrollstrukturen

Java für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel

Anweisungen zur Ablaufsteuerung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

System.out.println("TEXT");

Ein erstes Java-Programm

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Welche Informatik-Kenntnisse bringen Sie mit?

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Klausur. Informatik 1 Wintersemester 2005/2006 Prof. Dr. Wolfgang May 4. April 2006, Uhr Bearbeitungszeit: 90 Minuten

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014

Programmieren II Der Kellerspeicher. Programmieren II Der Kellerspeicher. Programmieren II Der Kellerspeicher. Programmieren II Der Kellerspeicher

Java Spickzettel von Panjutorials.de

Bisher haben wir keine Annahmen bzgl. der Sortierung der gegebenen Werte gemacht, d.h. sie durften in beliebiger Reihenfolge im Array a stehen

4.4 Imperative Algorithmen Prozeduren

Java Zusammenfassung. Basisdatentypen ganzzahlig: Byte, Short, Integer, Long Fließkomma: Float, Double Zeichen: Character Wahrheitswerte: Boolean

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Repetitorium Programmieren I + II

Programmierkurs. Manfred Jackel

Theorie zu Übung 8 Implementierung in Java

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

AuD-Tafelübung T-B5b

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Java I Vorlesung Imperatives Programmieren

Vorkurs Informatik WiSe 17/18

Lösungsvorschlag zur Klausur. Compilerbau vom 29. September Aufgabe 1 ( ) Prof. Dr. Michael Jäger. Punkte von 12

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Schleifen Datenfelder (Arrays) Verzweigungen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Programmierung in Java

Einführung in die Informatik

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

F Zeiger, Felder und Strukturen in C

Einstieg in die Informatik mit Java

Datenstrukturen und Algorithmen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Java für Anfänger Teil 7: Methoden. Programmierkurs Manfred Jackel

Tutorium Rechnerorganisation

Erste Java-Programme (Scopes und Rekursion)

Transkript:

Informtik I Kpitel 6 Ausdrücke hben einen Wert sin(mth.pi) wird zu 1 sin(kreisrdius) wird zur Lufzeit usgewertet Elementre Konzepte von Progrmmiersprchen Zusmmenfssung des Kpitel 6 Küchlin, Weber, Einführung in die Informtik, 2.Auflge 16.1.2004 Anweisungen Zuweisungen kreisrdius = 2.67; Anweisungen zur Ablufsteuerung elementre Verzweigungen» if-then-else, switch, goto höhere Schleifenkonstrukte» while, do-while, for Dtentypen elementre (primitive types) schon eingebut (chr, short, long, int, flot, double) strukturierte (structured types) rry, String, eigene Klssen Deklrtion von Konstnten public finl sttic int MYPI=3.1415927; Vriblen int kreisrdius; Unterprogrmme Prozeduren kein Rückgbewert public sttic void meineprozedur(..){... Funktionen ein Rückgbewert public sttic int meinefunktion(..){... dienen der Kpselung, lso der Strukturierung in Jv werden sie ls Methoden einer Klsse relisiert 1 2

Vriblen, Referenzen, Zuweisungen Synt Schlüsselwörter und die zugehörige Grmmtik meist in BNF (Bckus-Nur-Form) if_sttement ::= "if" "(" epression ")" sttement [ "else" sttement ] Vrible Deklrtion: int; Zuweisung: =23; BNF Inde of JAVA lnguge grmmr, http://cui.unige.ch/jv/javaf/ Semntik Bedeutung/ Sinn des Codes chrkterisiert durch: <Typ, Nme, Referenz, Wert> int = 23; Speicher 23 L-Wert R-Wert Referenzvrible, Reihungsvrible Schlüsselwörter in Jv bstrct, finlly, public, ssert, flot, return, boolen, for, short, brek, goto, sttic, byte, if, strictfp, cse, implements, super, ctch, import, switch, chr, instnceof, synchronized, clss, int, this, const, interfce, throw, continue, long, throws, defult, ntive, trnsient, do, new, try, double, pckge, void, else, privte, voltile, etends, protected, while, finl Literle ds Literl 12 ht z.b. die Bedeutung/ den Wert 12 inhlt steht für einen String mit dem Wert inhlt Nmen bezeichnen Vriblen, Klssen, Methoden Nmenskonvention bechten! (ichbinmethode, ichvrible, ICHKONSTANTE) Referenzvrible (Eplizit in Jv nicht möglich) Reihungsvrible int[ ] = new int[ ]{42, 23, 65; ist Referenz druf, wohin y zeigt (C++: int* = &y;) Stck Hep y 23 42 23 65 3 4

Gnzzhl-Arithmketik Typkonversion Jv-Arithmetik nch Typ der Opernden 3/ 2 = 1, weil Gnzzhlrithmetik (1 [Rest 1]) Überluf schneidet zusätzliche Bits b (2 31-1) + 1 = -2 31 (bei 32bit-Integer-Arithmetik) Grund: Zweierkomplementdrstellung: 01 11111 11111 11111 11111 11111 11111 [2 31-1] +00 00000 00000 00000 00000 00000 00001 [1] =10 00000 00000 00000 00000 00000 00000 [-2 31 ] ddurch Ring und kein out of rnge eplizite Typkonversion (int) 13.6 ergibt ein Integer mit dem Wert 13 Jv schneidet hier den Nchkommteil b (= Runden zur 0) implizite Typkonversion Typverengung hin zu einem Typ mit ungenuerem Wertebereich (double -> int) Typufweitung hin zu einem Typ mit genuerem Wertebereich (int -> double) z.b. <double> + <int> -> <double>» 12.6 + 10 ergibt ein Double mit dem Wert 22.6 Stichpunkte Stichpunkte Gleitkomm-Arithmetik (+Infinity,...) Anweisungen Zuweisungsopertoren (Wert des Ausdrucks) Arithmetische Opertoren Blöcke, Gültigkeitsbereich, Lebensduer Adressrechnung (dynmisch/ sttisch) Boolesche Opertoren Rechnen uf Bitmustern (&, ) Ausdrücke (Präfi, Postfi, Infi, Roundfi, Mifi) (Präzedenz von Opertoren = Bindungskrft) Bedingte Anweisungen Schleifenkonstrukte Mrken brek und continue 5 6

Unterprogrmme Unterprogrmme Prmeteruebergbe clss Unterprogrmme{ Kopf Rumpf Ergebnistyp Nme formle Prmeter public sttic int (int, int y){ return +y; Prmeterübergbe cll by vlue (Werteufruf, JAVA) Signtur public sttic void (String[] rgs){ int = 7; int b = 8; System.out.println( (, b) ); ktuelle Prmeter cll by reference (Referenzufruf) cll by nme (Nmensufruf) Unterprogrmme Unterprogrmme Prmeteruebergbe Überldung von Methoden z.b. für generisches Progrmmieren mithilfe unterschiedlicher Signturen clss MyMth{... public double (double, double y){... public flot (flot, flot y){... public int (int, int y){...... cll by vlue (Der einzige Übergbemechnismus in Jv) clss CllByVlue{ sttic int = 7; sttic int b = 8; public sttic void (String[ ] rgs){ System.out.println( +b: +(, b)); System.out.println( : +); System.out.println( b: +b); public sttic int (int, int y){ int res = +y; ++; es wird eine Kopie der Werte ngelegt =7; b=8; =7; y=8; =7; b=8; =8; y=8; =7; b=8; Stck Stck Stck 7 8

Unterprogrmme Prmeteruebergbe Cll by vlue mit zusmmengesetzten Typen (geschieht in Jv bei Vriblen vom Typ einer Klsse inkl. Arrys) clss PssReferenceByVlue{ sttic int[ ] = new int[ ]{7, 8; public sttic void (String[ ] rgs){ System.out.println( [0]+[1]: +()); System.out.println( [0]: +[0]); System.out.println( [1]: +[1]); public sttic int (int[ ] ){ int res = [0]+[1]; [0]++; es wird eine Kopie eines Zeigers uf die Werte übergeben Stck Hep 7 8 Stck Hep Stck Hep Cll by reference vs. Cll by vlue ON REFERENCES sttic void Min(string[] rgs){ = new int[ ]{7, 8; chnge(); bzw. chnge(ref ); Pss reference by vlue: sttic void chnge(int[ ] ){ [0]++; = new int[ ]{2, 3; Cll by reference: sttic void chnge(ref int[ ] ){ [0]++; = new int[ ]{2, 3; Stck chnge Stck chnge Hep Hep chnge chnge 2 3 2 3 2 3 Unterprogrmme Prmeteruebergbe Unterprogrmme Prmeteruebergbe cll by reference (In Jv nicht möglich, ber z.b. in C# (ref), C++ (&), Pscl (vr)) public clss CllByReference{ sttic int[ ] = new int[ ]{7, 8; public sttic void Min(String[ ] rgs) { Console.WriteLine("[0]+[1]: "+(ref )); Console.WriteLine("[0]: "+[0]); Console.WriteLine("[1]: "+[1]); public sttic int (ref int[ ] ){ int res = [0] + [1]; [0]++; C#! es wird eine Referenz, lso ein Linkswert, übergeben, der formle Prmeter wird zum Alis für den ktuellen Prmeter Stck Hep 7 8 Stck Hep Stck Hep cll by nme (gibt es in Jv nicht, ber z.b. in VisulBsic) D der Mechnismus der Nmensübergbe in Jv nicht direkt vorgesehen ist, gehen wir im folgenden Beispiel dvon us, dss wir eine Klsse Assozitivspeicher hben, die die Methoden int getvluebynme(string nme) und setvluebynme(string nme, int vlue) enthält. clss CllByNmeSimultion{ sttic Assozitivspeicher A = new Assozitivspeicher(); public sttic void (String[ ] rgs){ A. setvluebynme(, 7); A. setvluebynme( b, 8); System.out.println( +b: +(, b )); System.out.println( : +A. getvluebynme( )); System.out.println( b: +A. getvluebynme( b )); Assozitivspeicher A Nme b Wert 7 8 int getvluebynme(string Nme); setvluebynme(string Nme, int vlue); public sttic int (String n1, String n2){ int res = A. getvluebynme(n1)+a. getvluebynme(n2); A. setvluebynme( n1, A. getvluebynme(n1)+1) es wird ein Nme übergeben Nme b Wert 9 10

Rekursion Rekursion hben wir usführlich uf früheren Folien im Tutorium behndelt! Siehe sum_in_jv! (vor llem die Kontete!) Endrekursion public sttic int sum_rek(int n){ if ( n == 0 ) return 0; return ( n + sum_rek( n-1 ) ); public sttic int sum_endrek(int n){ return sum_endrekhelp( n, 0 ); public sttic int sum_endrekhelp(int n, int res){ if ( n == 0 ) return sum_endrekhelp( n-1, res+n ) ); es wird nur leerer Kontet erzeugt endrekursiv -> itertiv endrekursiv itertiv public sttic int sum_rek(int n){ return sum_endrek( n, 0 ); public sttic int sum_endrekhelp(int n, int res){ if ( n == 0 ) return sum_endrekhelp( n-1, res+n ) ); public sttic int sum_iter(int n){ int k = n; int res = 0; while ( k >= 0) { res = k + res; k = k - 1; 11