DiscoverProgrammieren, WS17/18, Vorlesung
Programmieren, WS17/18, Vorlesung
Claim Ownership

Programmieren, WS17/18, Vorlesung

Author: Karlsruher Institut für Technologie (KIT)

Subscribed: 95Played: 475
Share

Description

Inhalte und Lernziele:
Die Studierenden lernen grundlegende Strukturen der Programmiersprache Java kennen und anwenden, insbesondere Kontrollstrukturen, einfache Datenstrukturen, Umgang mit Objekten, und Implementierung elementarer Algorithmen. Sie erwerben grundlegende Kenntnisse in Programmiermethodik und die Fähigkeit zur autonomen Erstellung kleiner bis mittlerer, lauffähiger Java-Programme.

Objekte und Klassen | Typen, Werte und Variablen | Methoden | Kontrollstrukturen | Rekursion | Referenzen, Listen | Vererbung | Ein/-Ausgabe | Exceptions | Programmiermethodik | Implementierung elementarer Algorithmen (z.B. Sortierverfahren) in Java
Dozentin: Jun.-Prof. Dr. Anne Koziolek | Karlsruher Institut für Technologie (KIT), Institut für Programmstrukturen und Datenorgansiation
Vorlesungsaufzeichnung: KIT | WEBCAST: http://webcast.kit.edu
14 Episodes
Reverse
13 | 0:00:00 Starten 0:00:14 Bedingte Sprünge - Verzweigung 0:02:01 Laufzeitkeller 0:03:36 Adressierung durch 3 Basisadressen 0:06:16 Schritte beim Aufruf einer Methode 0:07:44 Schritte beim Verlassen der Methode 0:09:17 Zusammenfassung 0:13:28 Prinzip 1: Bevorzuge Polymorphie gegnüber instanceof 0:14:06 Beispiele für schlechten Entwurf 0:19:42 Prinzip 2: Unterscheidung zwischen == und equals () 0:26:13 Prinzip 3: Die Standardimplementierung von equals () überschreiben 0:29:49 Abhilfe durch eigene Implementierung 0:33:10 Prinzip 4: Vorsicht bei der Implementierung von equals () 0:35:50 Prinzip 5: super.equals () verwenden 0:42:53 Prinzip 6: Vorsicht bei der Verwendung von instanceof in equals () 0:45:14 Motivierenden Beispiel für Verhaltensänderung
12 | 0:00:00 Starten 0:01:45 Bubblesort 0:06:34 Selectionort 0:09:42 Insertionsort 0:15:17 Der Begriff ""Bug"" 0:19:02 Debugging 0:23:12 Debugging - Stabilisieren des Fehlers 0:26:13 Debugging - Lokalisieren der Fehlerursache 0:30:00 Tipps für die Fehlersuche 0:45:40 JUNIT 0:50:31 Parametrisierte Tests 0:57:06 Prinzip 1: Datenkapselung 1:00:30 Prinzip 2: Komposition 1:11:37 Prinzip 3: Programmieren gegen Schnittstellen und nicht gegen eine Implementierung 1:13:54 Prinzip 4: Open-Closed Principle 1:18:30 Ausgewählte Prinzipien für den Schnittstellentwurf
11 | 0:00:00 Starten 0:00:58 Lernziele Heute 0:05:28 Assertions 0:07:58 Zusicherungen 0:14:25 Assertions in Java 0:19:48 Vor- und Nachbedingungen, Invarianten 0:22:04 Beispiel Invarianten 0:27:06 assert oder if-Abfrage 0:29:49 Statische Analyse 0:32:43 Zusammenfassung 0:37:28 14 Zerteilen, Suchen und Sortieren 0:39:55 Überblick 0:40:22 Zerteilen 0:45:56 Beispiel: Taschenrechner 0:57:17 Top-Down Parsing 1:02:18 Rekursive Descent Parser: Hilfsfunktionen 1:06:27 Rekursiver Abstieg: Umsetzung Regeln 1:09:59 Zusammenfassung Parsen 1:11:28 Suchen 1:11:56 Lineare Suche 1:13:14 Lineare Suche - Implementierung 1:14:00 Lineare Suche - Visualisierung 1:15:20 Binäre Suche 1:16:42 Binäre Suche - Implementierung
– Objekte und Klassen – Typen, Werte und Variablen – Methoden – Kontrollstrukturen – Rekursion – Referenzen, Listen – Vererbung – Ein/-Ausgabe – Exceptions – Programmiermethodik – Implementierung elementarer Algorithmen (z.B. Sortierverfahren) in Java Literaturhinweise: P. Pepper, Programmieren Lernen, Springer, 3. Auflage 2007 Weiterführende Literatur: B. Eckels: Thinking in Java. Prentice Hall 2006 J. Bloch: Effective Java, Addison-Wesley 2008
10 | 0:00:00 Starten 0:04:09 Vorlesungsüberblick 0:05:38 Lernziele heute 0:07:00 Java API 0:09:35 Das Java Collections Framework 0:12:36 Das Interface Collection 0:16:47 Exkurs: Wildcards in generischen Typen 0:20:02 Exkurs: Kovarianz/ Invarianz 0:23:31 Nochmals: Das Interface Collection 0:24:22 Sub-Surfaces von Collection 0:25:20 Das Interface Map 0:27:21 Map 0:29:15 Die Klasse Collections 0:29:55 Das Paket java.io 0:30:48 Ein- und Ausgabe in Java 0:33:27 Java Puzzlers 0:34:45 Zusammenfassung 0:35:39 Literaturhinweis 0:37:41 Murphy's Law 0:39:03 Software Fehler 0:40:31 Berühmte Software-Fehler 0:52:08 Testen 0:53:28 Beispiel: Klassifikation Dreiecke 0:57:15 Testfälle 1:04:38 Kriterien für gute Testfälle 1:07:14 Was Testen ist 1:10:53 Failure vs. Fault. 1:12:32 Beispiel 1:14:46 Was Testen nicht ist 1:15:55 Warum Testen so schwierig ist 1:19:44 Testselektion 1:23:58 Teststrategien 1:25:46 Assertions 1:25:57 Zusammenfassung
09 | 0:00:00 Starten 0:00:11 Teil 1: Ausschnitt aus Vorlesung https://youtu.be/f9NoUhEmY2M 0:51:13 Teil 2: Ausschnitt aus Vorlesung https://youtu.be/EgOqH3gTLj8
08 | 0:00:00 Starten 0:02:42 Lernziele Heute 0:04:04 Einführendes Beispiel 0:06:50 Konzept der Vererbung 0:10:48 Vererbung in Java 0:14:29 Beziehung zwischen Ober- und Unterklasse 0:17:14 Beispiel Vererbung in Java 0:21:04 Jetzt sind wir gefragt: Vererbung 0:21:51 Lösung: Vererbung 0:22:59 Überschreiben von Methoden 0:25:51 Dynamische Bindung 0:41:09 Dynamische Bindung vs. Fallunterscheidung 0:42:49 Jetzt sind wir gefragt: Dynamische Bindung 0:46:10 Kapitel 15 0:47:10 Dynamische Bindung: Lösung 0:50:02 Überschreiben von Attributen 0:53:26 Das Schlüsselwort super 0:55:36 Konstrukturen 0:58:30 Sichtbarkeit und Modifier 0:59:55 Jetzt sind wir gefragt: Attribute und Methoden 1:02:28 Instanceof 1:04:10 Typ-Umwandlungen 1:06:45 Up- und Down-Casts 1:08:19 Die Klasse object 1:09:51 Auszug Java-Klassenhierarchie 1:11:16 Inhaltliche Gleichheit: equals 1:16:39 Grenzen der Vererbbarkeit 1:18:00 Abstrakte Klassen 1:20:37 Zusammenfassung 1:22:37 Debugging
07 | 0:00:00 Starten 0:00:10 Semesterplan 0:02:04 Lernziele Heute 0:03:11 Rekursive Datentypen 0:05:24 Einfach verkettete Listen - Idee 0:08:46 Erstellung einer Liste 0:11:53 Operation auf Listen 0:13:06 Einfugen von Listenelementen : addFirst 0:15:18 Einfugen von Listenelementen: AddLast 0:19:08 Löschen von Listenelementen: remove 0:25:15 Suche nach Listenelementen: contains 0:27:45 Listen als abstrakter Datentyp (ADT) - Prinzip 0:32:30 Iteratoren 0:36:17 Implementierung Iterator für Vector2DList 0:38:36 Exkurs: Command / Query-Separation 0:42:59 Gesamtstruktur Listenimplementierung in Java 0:43:52 Verwendung der Listenimplementierung 0:45:24 Vergleich Listen 0:50:00 Implementierung doppelt verkettete Liste 0:50:48 Einfügen von Listenelemente 0:52:09 Verwendung von Listen 0:53:18 Zusammenfassung 0:55:26 Rekursion 0:57:43 Motivation 1:02:20 Rekursice Methoden 1:03:50 Beispiel: Fakultätsfunktion 1:07:22 Binomialfunktion 1:09:41 Instanzen der Methode binom 1:12:01 Methoden im Aufrufstapel 1:15:56 Binomialfunktion mit Caching 1:16:18 Rekursion vs. Iteration 1:18:23 Die Kochsche Schneeflockenkurve 1:25:19 Rekursion- Zusammenfassung
05 | 0:00:00 Starten 0:00:07 Arrays und Schleifen: Weitere Beispiele 0:02:49 Mehrdimensionale Arrays 0:03:29 Matrizen 0:05:15 Mehrdimensionale Arrays 0:07:44 Beispiel: Sieb des Eratosthenes 0:31:13 Generelles zum Optimieren 0:33:44 Mehr zu Arrays 0:36:40 Mehr zu mehrdimensionalen Arrays 0:37:39 Quiz 0:42:37 Zusammenfassung 0:43:01 Vorlesungsüberblick 0:43:30 6. Konvertierung, Datenkapselung, Sichtbarkeit 0:43:55 Lernziele heute 0:45:11 Typ-Konvertierung 0:47:30 Widening Primitive Conversions 0:50:29 Narrowing Primitive Conversions 0:52:16 String Conversions 0:55:47 Casting Conversions 0:59:50 Datenkapselung 1:02:57 Datenkapselung: Zugriffsrechte 1:05:05 Zugriffsrechte: Beispiel 1:06:38 Gültigkeit, Lebensdauer von Variablen 1:08:47 Beispiel Gültigkeitsbereich (lokale Variablen) 1:10:22 Gültigkeit 1:10:48 Überschattung 1:13:32 Überschattung: Beispiel 1:14:43 Sichtbarkeit (Visiblity) 1:15:38 Pakete 1:18:14 Gleichheit von Objekten 1:20:56 Verwendungsbeispiel: Gleichheit von Objekten 1:21:59 Zusammenfassung
05 | 0:00:00 Starten 0:01:09 Vorlesungsüberblick 0:02:28 Lokale Variablen 0:04:10 Parameter als lokale Variablen 0:06:49 Methodenaufrufe und Objektreferenzen 0:12:10 Lokale Variablen vs. Attribute 0:16:36 Klassenvariablen (Statische Attribute) 0:23:11 Überladen von Methoden 0:27:14 Hilfsmethoden 0:31:45 Die Methode main 0:34:24 Methoden zur Ein- und Ausgabe 0:36:53 Typische Struktur eines Java-Programms 0:40:20 Jetzt sind Sie gefragt: Methodenrätsel 0:48:27 Zusammenfassung 0:50:08 5.1 Arrays 0:50:50 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java 0:52:19 Lernziele 0:53:08 Definition 0:54:54 Array-Deklaration 0:57:50 Deklaration und Initialisierung 0:59:28 Ansprechen von Elementen 1:02:07 Arrays und Schleifen: Beispiele 1:11:17 Polygone 1:15:02 Arrays und Schleifen: for-each 1:18:17 Matrizen 1:19:25 Mehrdimensionale Array 1:22:15 Quiz
04 | 0:00:00 Starten 0:00:47 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java 0:01:49 Lernziele Heute 0:02:41 Jetzt sind Sie gefragt: while-Schleife 0:03:24 (do-) while-Schleife: Syntax 0:06:26 Die for-Schleife 0:09:36 Die for-Schleife: Kontrollfluss 0:11:49 Jetzt sind Sie gefragt: Geschachtelte Schleife 0:18:15 Die Break-Anweisung 0:21:17 Die continue-Anweisung 0:24:31 Jetzt sind Sie gefragt 0:26:44 Schleifenorganisation 0:32:20 Zusammenfassung 0:33:26 Literaturhinweise 0:37:48 Konstruktoren 0:38:52 Parameter 0:40:29 Syntax von Konstruktoren 0:43:03 this-Referenz 0:44:58 Default-Konstruktor 0:46:41 Mehrere Konstruktoren 0:48:52 Jetzt sind Sie gefragt: Konstruktoren 0:52:54 Methoden 0:55:47 Methoden- Signatur 0:57:00 Methoden- Aufruf 0:58:00 Beispiel- Methoden 1:00:47 Der Rückgabetyp void 1:02:41 Zugriffsfunktionen (getter/setter) 1:07:47 Bezugsobjekt 1:10:38 Was passiert beim Aufruf einer Methode? 1:13:21 Jetzt sind Sie gefragt: Methoden 1:16:32 Statische Methoden 1:18:00 Klassen- vs. Objekt-Methode 1:21:05 Lokale Variablen
03 | 0:00:00 Starten 0:00:44 über die heutige Vorlesung 0:01:54 Ausdrücke 0:05:24 Weitere Ausdrücke in Java 0:10:28 Anweisungen 0:16:31 Ausdruck vs. Anweisung 0:18:16 Quiz 0:37:45 Eingaben über die Konsole 0:40:56 Zahlen über die Konsole eingeben 0:42:42 Kontrollfluss-Anweisungen (control-flow-statements) 0:45:35 Die if-Anweisung 0:49:22 Geschaltete if-Anweisungen 0:52:32 Übung 0:56:01 Die switch-Anweisung 1:08:28 Programmieren von Schleifen 1:15:19 Übung: while-Schleife
02 | 0:00:00 Starten 0:00:30 Vorlesungsüberblick: Objekt-orientiertes Programmieren in Java 0:06:25 Semesterplan - Übersicht 0:06:34 Lernziele heute 0:08:25 Datentypen 0:10:01 Die elementaren Datentypen in Java 0:10:54 Wertebereiche der elementaren Datentypen 0:13:21 Vordefinierte Operationen auf elementaren Datentypen 0:16:57 Präzedenz: Beispiele 0:18:14 Die Wahrheitswerte: boolean 0:20:06 Die ganze Zahlen: byte,short, int, long 0:25:36 Die Fließkommazahlen: float und double 0:31:56 IEEE 754 - Gleitkommazahlen 0:34:19 Nachteile IEEE 754 - Fleitkommazahlen 0:37:51 ASCII- und Unicode-Zeichen: char 0:40:23 Datentyp String 0:42:30 Aufzahlungs-Datentyp: enum 0:52:09 Variablen 0:55:02 Zuweisung 1:00:48 Initialisierung von Variablen 1:06:38 Zuweisung: Attribute setzen 1:08:21 Variablen und Speicher: Speicherabbild 1:09:56 Objekt-Variablen/Referenzen 1:15:23 Objekt-Identitäten und Zuweisung 1:18:17 null, Konstantendeklaration 1:19:49 Überprüfung der Datentypen 1:20:49 Zusammenfassung
01 | 0:00:00 Starten 0:01:25 Semesterplan 0:03:24 Lernziele 0:04:20 Was ist Programmierung? 0:05:05 War das nun ,,Programmieren''? 0:06:00 Bubblesort _ Implementierung 0:07:18 Einfaches Programm 0:09:19 Praxis: Übersetzen von Java-Klassen 0:10:25 Einfaches Programm 0:12:32 Praxis: Ausführen von Java-Programmen 0:13:25 Einfaches Programm 0:13:35 Wozu Compiler? 0:16:47 Compiler vs. Interpreter 0:18:00 Übersetzung in Maschinennahe Sprache 0:18:41 Interpretation nach Vorübersetzung 0:19:53 Übersetzung und Ausführung in Java 0:20:30 Just In Time Compilation 0:21:30 Einfaches Programm 0:27:39 Zusammenfassung 0:29:00 Dritte Teil der Vorlesung 0:29:54 Lernziele 0:30:36 Billard-Spiel 0:32:59 Objektorientierte Programmierung (OOP) 0:34:51 OOP am Beispiel ,,Billard-Spiel'' 0:36:08 Klassen: Der ,,Bauplan'' von Objekten 0:37:37 Definition: Objekte und Klassen 0:39:16 Ursprung Objektorientierter Programmierung 0:39:59 Klassen in Java 0:42:17 Ist die Klassendefinition gut so? 0:43:09 Abstraktion: Klasse für Koordinatenpaare 0:44:42 Wie erzeugt man Objekte? 0:46:19 Wir modelieren die Mensa 0:51:58 Frage 0:55:46 Zusammenfassung
Comments 
Download from Google Play
Download from App Store