Überblick und Wiederholung

Ähnliche Dokumente
Überblick und Wiederholung

Überblick und Wiederholung

Überblick und Wiederholung

Überblick und Wiederholung

Überblick und Wiederholung

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Das Einsteigerseminar Objektorientierte Programmierung in Java

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Objektorientierte Programmierung in Java

Werkzeuge zur Programmentwicklung

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Fragenkatalog ESOP WS 16/17

Grafische Benutzeroberflächen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Grafische Benutzeroberflächen

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Grunddatentypen, Ausdrücke und Variablen

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grafische Benutzeroberflächen

AuD-Tafelübung T-B5b

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

2.2 Syntax, Semantik und Simulation

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

2 Programmieren in Java I noch ohne Nachbearbeitung

Kapitel 11: Wiederholung und Zusammenfassung

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Programmiervorkurs Einführung in Java Tag 1

Einstieg in die Informatik mit Java

Probeklausur: Programmierung WS04/05

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Probeklausur Name: (c)

Praxis der Programmierung

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

Software Entwicklung 1

Vorkurs Informatik WiSe 16/17

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 27.6.

Einstieg in die Informatik mit Java

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Gliederung der Folien

Effiziente verkettete Listen

Java-Grundkurs für Wirtschaftsinformatiker

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 16/17

Objektorientierte Programmierung Studiengang Medieninformatik

Effiziente verkettete Listen

Kapitel 2. Methoden zur Beschreibung von Syntax

Informatik II - Tutorium 4

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

3.4 Struktur von Programmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Nachholklausur (9 ECTS): Lösungsvorschlag Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname...

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

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

Ausnahmen. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Effiziente verkettete Listen

Statische Methoden, Vererbung, Benutzereingabe

Transkript:

Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-14-15/infoeinf WS14/15

Klausurinformationen 6 ECTS: Klausur 07.02.2015 10:15 12:15 Uhr (120 Minuten) Raum: B101, HGB, Geschw.-Scholl-Pl. 1 9 ECTS: Klausur 07.02.2015 10:15 12:45 Uhr (150 Minuten) Raum: B201, HGB, Geschw.-Scholl-Pl. 1 Keine Hilfsmittel (weder gedruckt noch elektronisch)! Eine Anmeldung per UniWorX ist zwingend nötig. Bitte seien Sie um 10:00 Uhr im jeweiligen Raum, damit wir pünktlich beginnen können! 2

Probeklausur Auf der Website steht eine Probeklausur mit Musterlösung für beiden Varianten der Vorlesung zu Verfügung. Im Zusatzkurs "Java für Anfänger" bei Laith Raed wird die Musterlösung der Probeklausur besprochen. Termin: Di 03.02.2015, 10-13 Uhr Raum B001, Oettingenstr. 67 3

Inhaltsverzeichnis der Vorlesung 1. Einführung und Grundbegriffe 2. Methoden zur Beschreibung von Syntax 3. Grunddatentypen, Ausdrücke und Variablen 4. Kontrollstrukturen 5. Objekte und Klassen 6. Vererbung 7. Grafische Benutzeroberflächen Einführung in die Informatik 8. Arrays 9. Komplexität von Algorithmen und Suchalgorithmen 10. Rekursion Ende für 6 ECTS 11. Ausnahmen 12. Listen 13. Bäume 14. Systemarchitektur 4

Kapitel 1: Java Übersicht Java ist eine imperative objekt-orientierte Programmiersprache. Die Programme sind plattformunabhängig, d.h. sie können ohne Änderungen z.b. unter Windows, OS X, Linux ausgeführt werden. Java-Programme werden mit dem Compiler javac in Bytecode übersetzt. Der Bytecode wird mit der Java Virtual Machine java ausgeführt. Geeignete Formatierung steigert die Verständlichkeit von Programmcode. Kommentare // KOMMENTAR für einzeilige Kommentare /* KOMMENTAR */ für mehrzeilige Kommentare /** JAVADOC */ für javadoc-kommentare 5

Kapitel 2: Syntax EBNF-Grammatik, Ableitung Die Backus-Naur-Form ist eine Notation für Grammatiken. Aufbau einer Grammatik: Startsymbol Regeln der Form Nichtterminal = Ausdruck, wobei Ausdruck eine Kombination aus Nichtterminalen, Terminalen und Operatoren ist E1 E2 E1 E2 [E1] {E1} Ableitung eines Worts: lang/kurz Ersetzung von Nichtterminalen durch die rechte Seite der Regel oder/und Ausführung von Operatoren 6

Kapitel 2: Syntax Syntaxdiagramm Einführung in die Informatik BNF-Grammatiken und Syntaxdiagramme sind äquivalent. Nichtterminale -> Rechtecke Terminale -> Ovale Operatoren -> Pfeile bzw. Verzweigungsstruktur E1 E2 E1 E2 E1 E1 E2 E2 [E1] Zusätzlich: {E1} E1 E1 7

Kapitel 3: Grunddatentypen Zahlen: Einführung in die Informatik Ganze Zahlen: byte (2 7-1) < short (2 15-1) < int (2 31-1) < long (2 63-1) Gleitkommazahlen: float (7 Stellen) < double (15 Stellen) Operationen: + - * / % (< <= > >= ==) Typecasting = Erzwingen einer Typkonversion zum Typ type durch Voranstellen von (type)! Automatische Typkonversion zum größeren Typ! Einzelne Zeichen: char z.b. 'a' (Zeichenketten: String) Wahrheitswerte: boolean mit Operationen!, &&, &,, 8

Kapitel 3: Korrektheit und Auswertung Einführung in die Informatik Syntaktische Korrektheit von Ausdrücken = Ableitbarkeit in der EBNF-Grammatik Typkorrektheit von Ausdrücken = Zuordbarkeit eines Typen! Achtung: Präzedenzen Operation Präzedenz!, unäres +- 14 (type) 13 *, /, % 12 binäres +, - 11 >, >=, <, <= 9 ==,!= 8 Auswertung von Ausdrücken Vollständige Klammerung gemäß Präzedenzen Auswertung unter Berücksichtigung der Klammern & 7 6 && 4 3 Der Wert von Variablen ist durch den Zustand (σ,h) bestimmt. Operationen, Methoden, Attributzugriff, Arrayzugriff sind auszuwerten. 9

Kapitel 4: Praktisches Programmieren main-methode Lokale Variablendeklaration z.b. int i = 1; Zuweisung z.b. i = 3; Block -> Gültigkeitsbereiche if-anweisung for-anweisung while-anweisung Übungsaufgaben anschauen und selbst programmieren! 10

Kapitel 5: Klassen Aufbau einer Klassendeklaration (UML-Notation) Attribute Konstruktoren Methoden Initialisierung und Verwendung von Objekten Unterschied Klasse-Objekt Objekte im Speicher (Stack und Heap) Statische Methoden vs. Instanzmethoden Übungsaufgaben anschauen und selbst programmieren! 11

Kapitel 6: Vererbung Subtyping: Oberklasse Unterklasse mit extends Vererbung von Attributen Achtung: auf geerbte private Attribute kein Zugriff mit. Keine Vererbung von Konstruktoren Aber Aufruf mit super( ) Vererbung von Methoden Überschreiben in der Unterklasse möglich (Aufruf der Methode in der Oberklasse mit super.<methode>( )) (Achtung: dynamische Bindung) Übungsaufgaben anschauen und selbst programmieren! (Abstrakte Klassen und) Interfaces (Benutzung siehe Grafische Benutzeroberflächen) 12

Kapitel 7: Grafische Benutzeroberflächen Grafische Benutzeroberflächen bieten eine benutzerfreundliche Kommunikationsmöglichkeit mit Programmen. Vorgehensweise: 1. Erstellung des strukturellen Aufbaus der GUI: Aufbau aus den Übungen (JFrame, JButton, JTextArea,JPanel ) 2. Verbindung der GUI mit den inhaltlichen Objekten der Anwendung: Stichwort "Modell einer GUI" 3. Ereignisgesteuerte Behandlung von Benutzereingaben (z.b. Knopfdruck): actionperformed(actionevent e) JOptionPane.showInputDialog( ) Parsing Ausgabe im Ausgabebereich 13

Kapitel 8: Arrays Ein Array ist ein Tupel von Elementen gleichen Typs z.b. Grunddatentyp, Klassentyp, Arraytyp. Feste Länge, d.h. Vergrößerung nur durch Kopieren möglich (O(n)) z.b. char[] chararray = new char[5]; z.b. int[] intarray = {1,2,3}; Direkter Zugriff in O(1) z.b. int a = intarray[1]; Veränderung über Index z.b. intarray[0] = 10; Arrays im Speicher (Stack und Heap) Algorithmen müssen meist durch das komplette Array laufen: for-schleife 14

Kapitel 9: Komplexität von Algorithmen Zeitbedarf und Speicherplatzbedarf: O-Notation Worst-case Average-case Best-case Algorithmen Binäre Suche in einem sortierten Array: Zeitkomplexität O(log n), Speicherplatzbedarf O(n) Bubble-Sort: Zeitkomplexität O(n 2 ), Speicherplatzbedarf O(n) Selection-Sort: Zeitkomplexität O(n 2 ), Speicherplatzbedarf O(n) ENDE 6 ECTS 15

Kapitel 10: Rekursion Eine Methode ist rekursiv, wenn in ihrem Rumpf die Methode selbst wieder aufgerufen wird. Implementierung mit Hilfe einer if-anweisung: Basisfall: sofortige Terminierung z.b. return 1; else -Fall: rekursiver Aufruf Meist geben Aufgaben ein rekursives Konzept vor! Jeder rekursive Algorithmus kann auch iterativ gelöst werden, aber rekursive Algorithmen sind oft schöner. z.b. Quicksort 16

Kapitel 11: Ausnahmen Ein Programm heißt robust, falls es für jede (auch fehlerhafte) Eingabe eine sinnvolle Reaktion produziert. checked exceptions unchecked exceptions erben von Exception müssen behandelt werden Ausnahmesituation erkennen Objekte: Methodenaufruf auf Objekt mit Wert null erben von RuntimeException müssen nicht behandelt werden Arrays/Listen: Arrayzugriff außerhalb der Länge des Arrays Ausnahme auslösen: throw-anweisung Achtung: throws-deklaration für checked exceptions nötig! Ausnahme behandeln: try-catch-finally-block 17

Kapitel 12: Listen Eine Liste ist eine endliche Folge von Elementen gleichen Typs. Dynamische Länge, d.h. Vergrößern möglich Zugriff je nach Implementierung Veränderung je nach Implementierung Implementierung: Einfach verkettete Liste Direkter Zugriff in O(n), da intern sequentiell durch die Liste gelaufen werden muss. Veränderung über Vorne-Anhängen bzw. über Index Implementierung: Doppelt verkettete Liste Hinzufügen/Löschen am Ende in konstanter Zeit möglich Praxis: LinkedList<E> und Iterator<E> 18

Kapitel 13: Bäume Ein Baum ist eine hierarchische Struktur von Elementen gleichen Typs. Knoten speichern Elemente. Knoten sind durch Kanten zu einer hierarchischen Struktur verbunden. Jeder Knoten kann mehrere Nachfolger haben. Implementierung: Analog zu verketteten Listen, aber mit zwei oder mehr nächsten Elementen (=Nachfolgern) Zugriff auf ein Element in O(log n) für binäre Suchebäume Einfügen eines neuen Elements in O(log n) für binäre Suchebäume Operationen auf Bäumen sind meist rekursiv! (siehe Tiefen- oder Breitendurchlauf) 19

Kapitel 14: Systemarchitektur Größere Software-Systeme sind in Paketen strukturiert Einführung in die Informatik bedürfen einer Gesamtarchitektur der beitragenden Klassen Viel Erfolg bei der Klausur! 20