Home | Lectures | Videos | Publications | Talks | About | Impressum, Datenschutzerklärung

Stand: 2016-04-08

Themen und Termine

Bitte die Grundlagenvideos vor dem jeweiligen Termin ansehen. Die Videos mit „A“, „B“, „C“ in der Nummer sind Zusätze aus vergangenen Durchgängen, die mit „D“ aus dem aktuellen Durchgang.



Beispiele aus Seminar und Praktikum:
P01 Fotowiderstand mit Servo nachführen
P02 Reaktionszeit messen
P03 Ein-Knopf-Taschenrechner
P04 Klangausgabe
P05 Infrarot-Fernbedienung
S03 Temperatursensor des MSP430
Praktikumsaufgaben WS 2011/2012
P1B Zahlenschloss mit Display und Joystick programmieren
P2B Tic tac toe mit Microcontroller als Gegner
P3B Quicksort, Selection Sort, Bubble Sort; Laufzeitkomplexität
P1 Küchentimer mit Embedded Controller 12:11
P2 Mini-Routenplaner mit Embedded Controller 8:41
P3 Datumsdifferenz in Tagen mit Embedded Controller 6:38
Informatik-Praktikum, Aufgaben WS 2014-2015 3:40


Mo, 29. Sep 14

1

Was ist ein Computer? Erste Schritte.
Skript

Grundlagen:
S01 TI LaunchPad, erstes Programm 10:45 (Achtung: ältere Version der Workbench)
01.01 Was ist ein Computer? 7:04
01.02 Binärsystem, Bit 5:17
01.03.1 Byte, Kilobyte 5:50
01.03.2 weiter Byte, Kilobyte 7:55
01.04 PC versus Embedded 10:04
01.05.1 C, Variablen, Typen 10:45
01.05.2 weiter C, Variablen, Typen 4:34
01.06.1 if-Verzweigung 10:22
01.06.2 weiter if-Verzweigung 1:47
01.07.1 while-Schleife 8:21
01.07.2 weiter while-Schleife, Endlosschleife 4:09

Ergänzungen:
01A.1 Terabyte und Tebibyte 9:18
01A.2 ein Zeichen gleich ein Byte, oder auch nicht 11:31
01A.3 Simulator, Debugger, Einzelschritt 14:56
01A.4 if-else-Verzweigung 17:55
Material
01B.1 Erste C-Programme, Zuweisung, Einzelschritt-Debugger, while, if 44:24
Material
S01B Wurzelberechnung in ganzen Zahlen; int, if, while 35:52
Material
01C.1 erste Schritte in C; Beispiele mit while-Schleifen 44:00
01C.1_Material.zip
01C.2 Geltungsbereich von Variablen; Blöcke
6:08
01C.3 verschachtelte if-Verzweigungen; ist Wert zwischen Grenzen 20:22
01C.4 verschachtelte if-Verzweigungen; kleinsten Wert finden 6:40
01C.5 prüfen, ob Zweierpotenz 8:21
01C.2,3,4,5_Material.zip
01D.1 Bit, Byte, Kilobyte, Beispielrechnungen
3:12
01D.2 Variable auf 0 bis 100 eingrenzen 8:03
01D.3 von drei Variablen den größen Wert 5:21
01D.4 Tarifberechnung mit Rabatt und Limit 6:21
01D.5 Summe 1 bis 100; Summe 1²-2²+3²-+...; Fakultät 11:53
01D.1_5_Material.zip


M0, 6. Okt 14

2

Operatoren, Programmiersprachen, Ablaufdiagramme
Skript

Grundlagen:
02.01 Zahlensysteme in C 8:51
02.02.1 Operatoren in C 10:13
02.02.2 Operatoren in C, Short Circuit, Präzedenz 10:12
02.03 Inkrement, Dekrement, Compound Assignment 4:57
02.04.1 Zoo der Programmiersprachen 8:42
02.04.2 JavaScript, PHP, BASIC, Assembler, MATLAB(R) 9:50
02.04.3 grafische Programmierung, Simulink, Datenflussdiagramm 3:33
02.04.4 Pseudocode 1:48
02.05 imperative Programmiersprachen, Skriptsprachen, dynamische Typisierung 9:26
02.06_7 Flussdiagramm, Struktogramm 9:56

Ergänzungen:
02A.1 Programmablaufplan, Flussdiagramm, Activity Diagram, Maximum bestimmen 27:44
02A.2 Flussdiagramm, Primzahltest 24:28
Material
02B.1 Operatoren, Präzedenz, Short-Circuit-Auswertung 22:08
02B.2 Flussdiagramm, Struktogramm, Eingabe in Schleife 24:04
02C.1 Reihenfolge von plus, mal, geteilt usw. in C 9:34
02C.2 Reihenfolge von und, oder, mal, geteilt usw. in C 8:30
02C.3 Hexadezimalzahlen; bitweise Operationen 13:05
02C.1,2,3_Material.zip
02C.4 stückweise lineare Formel programmieren
8:29
02C.5 Teiler zählen; Flussdiagramm; Struktogramm 16:05
02C.4,5_Material.zip
02C.6 nochmal Hexadezimalzahlen; bitweise Operationen
12:46
02C.7 Anwendung von bitweisen Operationen 10:02
02C.8 nochmal Reihenfolge von und, oder, mal, geteilt usw. in C 6:38
02C.9 drei Bereiche mit if else bilden 3:27
02C.6,7,8,9_Material.zip
02C.10 bitweise Operationen; testen, ob ungerade 9:37
02C.10_Material.zip
02D.1 fünf Arten, eine Variable um 2 zu verringern 2:27
02D.2 Beispiel für Präzedenzregeln 8:47
02D.3 weiteres Beispiel für Präzedenzregeln 6:42
02D.1_3_Material.zip
02D.4 Hexadezimalzahlen, bitweise Operationen
9:28
02D.5 ein einzelnes Bit setzen oder löschen mit bitweisen Operationen 8:32
02D.6 Bereich eingrenzen; Flussdiagramm und Struktogramm 4:19
02D.7 Fakultät berechnen; Flussdiagramm und Struktogramm 4:10
02D.8 auf Zweierpotenz prüfen; Flussdiagramm 3:42
02D.9 Präzedenz von Subtraktion und Vorzeichen-Minus, Negation 10:17
02D.9_K07_Material.zip


Mo, 13. Okt 14

3

for-Schleife, Unterprogramme, Funktionen
Skript
Material

Grundlagen:
03.01.1 while-, do...while-, for-Schleifen 12:11
03.01.2 Schleifen, Sichtbarkeit, break, continue 3:41
03.02 Unterprogramme, prozedurale Programmierung 12:32
03.03 Code Recycling, API 10:11
03.04.1 Funktionen in C, return 11:37
03.04.2 Funktionen, void, main 12:23
03.04.3 mehrere Parameter, return als GOTO 7:05
03.05 Call by Value, statische Variablen 6:01
03.06 Deklaration, Definition 3:18

Ergänzungen:
03.06a.1 nochmal Funktion, Deklaration, Definition 14:04
03.06a.2 nochmal Funktion 3:29
03A.1 Programmierbeispiel Teil 1, Top-Down-Entwicklung, MSP430-Projekt einrichten, C-Funktionen 33:10
03A.2 Programmierbeispiel Teil 2, Funktionsdefinition, Funktionsdeklaration, Header-Datei 40:40
03A.3 Programmierbeispiel Teil 3, Include-Guards, Präprozessor.avi 13:28
03A.4 break, continue, return in Schleifen
12:44
Material
S02B nächste Zweierpotenz, Schleifen, while, do, for 49:59
Material
03B.1 Funktionen in C, Deklaration, Definition; while, do, for 48:03
Material
S03B.1 Fibonacci-Folge, Rekursion, statische Variablen 28:08
S03B.2 C-Funktionen entrümpeln 14:31
Material
03C.1 Quersumme bestimmen; Funktionen in C; for-Schleife 33:10
03C.1,2_Material.zip
03D.1 Fakultät mit while-, for- und do...while-Schleife
7:57
03D.2 Schleife mit break und continue verändern 9:24
03D.3 Primzahlen bis 100 zählen; verschachtelte Schleifen 9:49
03D.4 Funktion, die bestimmt, ob eine Zahl zwischen 0 und 100 liegt 11:44
03D.5 Funktion, die andere Funktion aufruft; Binomialkoeffizienten ausrechnen 13:43
03D.6 Pseudozufallszahlengenerator mit Werten von 1 bis 6 5:20
03D.1_6_Material.zip
03D.7 eigener Pseudozufallszahlengenerator; statische Variable
20:41
03D.7_04D.2_Material.zip


Mo, 20. Okt 14

4

Präprozessor, Compiler, Linker
Skript
Material

Grundlagen:
04.01 Übersetzung, Compiler, Interpreter 9:29
04.02.1 Übersetzung von C und C++ 14:03
04.02.2 weiter Übersetzung von C und C++ 4:01
04.03.1 Präprozessor, #include, #define 14:50
04.03.2 weiter Präprozessor, #include-Guards 14:41
04.04 C-Compiler, Fehler, Warnungen 11:24
04.05 Linker, Funktionsnamen 8:07
04.06 Sichtbarkeit static, extern 14:23

Ergänzungen:
04A.1 Compiler, Linker; Funktionsweise, Fehler9:14
04A.2 static-Variablen in Funktionen 26:39
Material
04B.1 mehrere C-Dateien, Header-Dateien, #include, Include-Guards 55:26
Material
04B.2 extern; zwei Verwendungen von static; Linker-Fehlermeldungen 25:36
Material
04C.1 Quersumme in beliebigem Zahlensystem; eigene C-Datei mit Header 24:22
04C.1 kleine C-Funktionsbibliothek schreiben; ganze Zahlen potenzieren 22:11
04C.2 Funktionsbibliothek, die sich Zustand merkt; static 12:39
04C.1,2_Material.zip
04D.1 Funktion und Variable in eigene Datei auslagern; Header-Datei
27:51
04D.2 prüfen, ob Bit gesetzt; Funktion in eigener Datei 13:18
03D.7_04D.2_Material.zip
04D.3 Fehler in statischer Variable mitzählen
20:44
04D.3_05D.4_Material.zip


Mo, 27. Okt 14

5

Zahlentypen, mathematische Funktionen
Skript
Material

Grundlagen:
05.01.1 Ganzzahlige Typen, Zweierkomplement 14:10
05.01.2 weiter Zweierkomplement 6:11
05.02 signed und unsigned char, short, int, long, long long 13:39
05.03.1 Überlauf, Teilen durch Null 5:05
05.03.2 automatische Umwandlungen bei Ganzzahlen 11:50
05.03.3 weiter automatische Umwandlungen bei Ganzzahlen 4:42
05.04.1 Festkomma und Gleitkomma 13:59
05.04.2 float und double 13:01
05.04.3 keine FPU 4:09
05.05.1 eingebaute mathematische Funktionen 11:07
05.05.2 Division Gleitkomma und Integer, Casting 7:40
05.06 Rundungsfehler, Infinity (INF), Not a Number (NaN) 7:53

Ergänzungen:
05A.1 Beispiele Zweierkomplement, Überlauf, signed und unsigned 27:50
05A.2 Gleitkommazahlen, float, double, Rundungsfehler, INF, NaN
23:28
05B.1 bitweise logische Operationen; hexadezimal 11:23
05B.2 Beispiele Zweierkomplement; negative Binärzahlen 11:44
05C.1 Zweierkomplement und Überlauf 25:33
05C.2 Formel mit mathematischen Funktionen in C schreiben 7:23
05C.3 Gleitkommazahlen, Beispiel mit INF und NaN 5:10
05C.1,2,3_Material.zip
05C.4 Beispielrechnungen mit Zweierkomplement
13:30
05C.5 mathematische Formel in C schreiben 5:39
05C.5_Material.zip
05D.1 Rechnen mit Vorzeichen im Zweierkomplement
13:09
05D.2 kleinste und größte Zahl mit 64-Bit-Zweierkomplement 4:46
05D.3 Überlauf beim Rechnen mit int-Zahlen 9:40
05D.4 Gleitkommazahlen, Lösung einer quadratischen Gleichung 6:13
04D.3_05D.4_Material.zip
05D.5 Gleitkommzahlen, Zahl der Lösungen einer quadratischen Gleichung
9:48
05D.6 Sinus eines in Grad statt Radiant angegeben Winkels 3:53
05D.7 komische Effekte durch Rundungsfehler bei Gleitkommazahlen 9:28
05D.5_06D.3_Material.zip


Mo, 3. Nov 14

6

Arrays
Skript
Material

Grundlagen
06.01.1 Arrays 1D, 2D, 3D 10:34
06.01.2 weiter Arrays 12:07
06.02.1 Arrays initialisieren 10:34
06.02.2 Arrays kopieren, memcpy 9:46
06.03 Übergabe und Rückgabe von Arrays 12:27
06.03a Arrays in Aktion 6:11

Ergänzungen:
06A.1 größten Wert in Array bestimmen 9:43
06A.2 zweidimensionales Array, stückweise lineare Funktion, lineare Interpolation 23:41
Material
S04B Array; summieren; Maximum bestimmen 41:31
Material
S05B.1 Ist Eintrag zweimal in Array 12:12
Material
06C.1 Zahl aufeinanderfolgender großer Werte in Array 34:13
06C.1_Material.zip
06C.2 zentrierter gleitender Mittelwert in Array
28:39
06C.2_Material.zip
06D.1 Array mit E6-Reihe füllen
8:46
06D.2 Funktion, die den Mittelwert eines Arrays bestimmt 6:33
06D.3 Funktion, die mehrfache Einträge aus Array entfernt 10:08
05D.5_06D.3_Material.zip
06D.4 Sieb des Eratosthenes programmieren
18:31
06D.4_07D.1_Material.zip


Mo, 10. Nov 14

7

Zeichenketten
Skript
Material

Grundlagen:
07.01 Zeichenketten (Strings) 14:55
07.02.1 Strings verarbeiten: strlen, strcmp, strcpy 15:25
07.02.2 strcat, Strings anhängen 6:18
07.03.1 puts, printf, Zeichenketten ausgeben 10:54
07.03.2 atoi, sprintf, Umwandlung Zeichenketten, Zahlen 13:02

Ergänzungen:
07A.1 Suchen und Ersetzen in Zeichenketten in C, Teil 1 65:42
Material
07A.2 Suchen und Ersetzen in Zeichenketten in C, Teil 2, genaue Grenzen, Off-by-one-Fehler
32:42
Material
07B.1 Arrays und Zeichenketten; strlen 47:17
Material
S05B.2 Suche in Zeichenkette; UND mit short circuit
Material
07C.1 Zeichenkette füllen; Caesar-Verschlüsselung 18:39
07C.1_Material.zip
07C.2 Array von Zeichenketten durchsuchen
21:29
07C.3 Inhalt zwischen Tags in Zeichenkette kopieren 10:21
07C.2,3_Material.zip
07D.1 häufigster Buchstabe in Zeichenkette
17:51
06D.4_07D.1_Material.zip
07D.2 Buchstaben verwürfeln (Buabhtcbsen vrelüwrefn) 30:46
07D.2_Material.zip
07D.3 Zahlen zu ausgeschriebenen Wörtern machen
37:10
07D.3_Material.zip


Mo, 17. Nov 14

8

Strukturen, Aufzählungen
Skript
Material

Grundlagen:
08.01.1 struct, Initialisierung 13:39
08.01.2 struct zuweisen, übergeben, vergleichen 11:53
08.01.3 Array aus struct 4:53
08.02.1 enum, Aufzählungen 13:08
08.02.2 switch, weiter enum, Aufzählungen 12:55

Ergänzungen:
08A.1 struct und enum am Beispiel Katalog und Warenkorb 38:23
Material
08A.2 Kästchenroboter, Teil 1, 2D-Array, struct, enum 57:22
Material
08A.3 Kästchenroboter, Teil 2, switch, putchar 49:23
Material
08A.4 Kästchenroboter, Teil 3, Schleifen, struct verwenden 38:16
Material
08B.1 struct für Buch; ISBN-Nummer prüfen 50:24
Material
S06B struct für Massenpunkte; Schwerpunktsberechnung; Header 36:47
Material
08C.1 struct und enum für Telefonbuch 33:38
08C.1_Material.zip
08C.2 struct und enum für Baumdatenbank
36:57
08C.2_Material.zip
08D.1 maximaler Abstand vom Ursprung eines Arrays von Punkten
13:24
08D.2 Rechteck als struct; Fläche berechnen 6:54
08D.3 Schwerpunkt eines Rechtecks mit structs 6:16
08D.4 Rechteck aus Material; struct und enum 10:34
08D.1_4_Material.zip


Mo, 24. Nov 14

9

Zeiger, dynamischer Speicher
Skript
Material

Grundlagen:
09.01.1 Zeiger, Pointer 14:43
09.01.2 NULL, ungültige Zeiger 2:49
09.02.1 Zeigerarithmetik 10:50
09.02.2 weiter Zeigerarithmetik 10:13
09.03.1 Dynamischer Speicher, Variable Length Arrays 4:04
09.03.2 weiter dynamischer Speicher, malloc, free 14:23
09.03.3 weiter dynamischer Speicher, malloc, free 14:28
09.03.4 dynamischer Speicher für struct 11:25

Ergänzungen:
09A.1 Kästchenroboter, Teil 4, malloc, Zeiger wie Arrays24:59
Material
09B.1 Fingerübungen zu Zeigern und Arrays 19:28
Material
09B.2 Zeiger verwenden, Speicher reservieren 51:20
Material
09C.1 Beispiele für Adressen, Zeiger, Zeigerarithmetik 21:24
09C.2 Arbeit mit Zeigern, Speicherreservierung, malloc 24:06
09C.1,2_Material.zip
09C.3 Ergebnis mit vorher unbekannter Speichergröße; Punkte innerhalb Rechteck
30:16
09C.3_Material.zip
09D.1 Zeiger auf Strukturen an Funktionen übergeben
19:51
09D.1_Material.zip
09D.2 Beispiele für das Rechnen mit Pointern
15:08
09D.3 weitere Beispiele für das Rechnen mit Pointern 6:05
09D.4 gleiche Strings in Strukturen finden; Speicherreservierung für Rückgabe eines Arrays 33:07
09D.2_4_Material.zip
09D.5 weiter gleiche Strings in Strukturen finden; Zeiger auf Zeiger; Laufzeit
39:07
09D.5_Material.zip


Mo, 1. Dez 14

10

Zusammenfassung: die Sprache C
Skript
Material

Grundlagen:
10.01.1 Präprozessor, Compiler, Linker, include 10:43
10.01.2 weiter include, Header 7:00
10.01.3 static, extern 11:04
10.02.1 grundlegende Typen, char, short, int, long, bool, float, double 7:36
10.02.2 Operatoren, Präzedenz 20:34
10.02.3 enum, Arrays 10:48
10.02.4 Zeichenketten, struct 8:46
10.03 if, switch, while, for, Verzweigungen, Schleifen 15:05
10.04.1 Funktionen, Deklaration, Definition, return, mathematische Funktionen 15:32
10.04.2 Funktionen für Ausgabe, Strings, main 9:45
10.05 Zeiger, NULL, malloc, free 37:26

Ergänzungen:
S07B Binärzahl aus Zeichenkette in Integer wandeln 19:42
Material
10B.1 Morse-Code per Programm; Array von struct 38:48
Material
S08B Festkommazahlen; Wurzel selbstprogrammiert 41:50
Material
10C.1 Kreiszahl pi durch Zufallszahlen bestimmen 22:50
10C.2 Array am Platz umdrehen 10:47
10C.1,2_Material.zip
10D.1 Schleifen, Verzweigungen, Variablen, Zeiger in C
46:45
10D.1_Material.zip


Mo, 8. Dez 14

11

Was ist Informatik?
Skript

Grundlagen:
11.01 Theoretische, technische, praktische, angewandte Informatik 11:14
11.02 Computer Science, Software Engineering, Information Technology 10:09

Mo, 15. Dez 14

12

Datenstrukturen und Algorithmen
Skript

Grundlagen:
12.01.1 Datenstrukturen, Array, Queue, Stack 15:46
12.01.2 Baum als Datenstruktur 12:47
12.02 Algorithmen 12:27
12.02.1 Bubblesort, Quicksort, Laufzeit 29:23
12.02.2 Iteration und Rekursion 6:27
12.02.3 Komplexität, P und NP 6:45
12.02.4 Optimierung, Profiler 5:02

Ergänzungen:
12A.1 Informatik, Datenstrukturen, Array, struct, Warteschlange, Stack, Baum 15:02
12A.2 Datenstruktur Sparse Matrix, dünn besetzte Matrix; Implementierung in C; malloc 50:15
Material
12A.3 Algorithmen, Suchen und Sortieren, Bubble Sort, Quicksort, Laufzeit, O(n log(n)) 76:17
Material
12B.1 Warteschlange mit Array programmieren 36:29
Material
S09B Warteschlange mittels struct als Bibliotheksfunktion; Zeiger; malloc 45:12
Material
S10B Datumsberechnungen selbstprogrammiert 29:28
Material
S11B Weg aus Labyrinth programmieren 52:24
Material
S12B binäre Suche programmieren; Laufzeitkomplexität 38:51
Material
12C.1 eigenen Datentyp Menge implementieren 37:08
12C.1_Material.zip
12C.2 binäre Suche programmieren
32:49
12C.2_Material.zip
12C.3 Zeitkomplexität; Beispiele für Groß-O-Notation
35:02
12C.4 ähnliche klingende Wörter finden; Soundex-Algorithmus 26:58
12C.4_Material.zip
12C.5 Soundex-Algorithmus mit Speicherreservierung und Header-Datei
54:24
12C.5_Material.zip
12C.6 zweidimensionales Array mit dynamischem Speicher; Spalte einfügen
20:39
12C.6_Material.zip
12C.7 Laufzeitkomplexität O(n), O(log n) usw. 29:29
12D.1 einfach verkettete Liste programmieren, Teil 1
41:53
12D.1_Material.zip
12D.2 einfach verkette Liste programmieren, Teil 2
62:55
12D.2_Material.zip


Mo, 22. Dez 14

13

Automaten und formale Sprachen
Skript
Material

Grundlagen:
13.01 Endliche Automaten 35:16
13.02.1 Formale Sprachen, Syntaxdiagramm, akzeptierende Automaten 33:41
13.02.2 HTML, XML, JSON 14:31

Ergänzungen:
13A.1 Formale Sprachen, reguläre Ausdrücke, endliche Automaten, Pumping-Lemma 66:51
Material
13A.2 kontextfreie Sprachen, Syntaxdiagramme für C, Nichtterminalsymbole, Pumping-Lemma 37:25
13A.3 Parsen und Auswerten von arithmetischen Ausdrücken, Implementierung 31:36
Material
13B.1 Aufzugtür als endlicher Automat in C 35:31
Material
13C.1 Beispiel Syntaxdiagramm, Zustandsdiagramm, endlicher Automat 40:05
13C.1_Material.zip
13C.2 Zahlenlisten parsen mittels endlichem Automaten, Teil 1
18:49
13C.2_Material.zip
13C.3 Zahlenlisten parsen mittels endlichem Automaten, Teil 2
26:06
13C.3_Material.zip
13D.1 Simulation mit wandernden endlichen Automaten, Teil 1
27:07
13D.2 Simulation mit wandernden endlichen Automaten, Teil 2 37:35
13D.1_2_Material.zip
13D.3 Simulation mit wandernden endlichen Automaten, Teil 3 switch, Zeiger
46:17
13D.3_Material.zip


Mo, 5. Jan 15

14

Fehler vermeiden, Fehler finden
Skript
Material

Grundlagen:
14.01 Turings Halteproblem 29:29
14.02 Code Conventions, Styleguides, ungarische Notation, MISRA 29:02
14.03 defensive Programmierung, assert 18:09

Ergänzungen:
14B.1 Programmierfehler finden; Maximum bestimmen 2:56
14B.2 Programmierfehler finden; auf Quadratzahl prüfen 6:47
14B.3 Programmierfehler finden; auf Zehnerpotenz prüfen 9:30
14B.4 Programmierfehler finden; Binomialkoeffizienten berechnen 6:51
Material
14C.1 Beispiele zum Finden von logischen Programmierfehlern 10:35
14C.1_Material.zip


Mo, 12. Jan 15
Mo, 19. Jan 15


Klausurvorbereitung

Ergänzungen:
K01 Überlauf bei Multiplikation 6:18
K02 if zu switch umwandeln 8:31
K03 struct und Array verschachtelt 27:15
K04 Gleichzeichen in Flussdiagramm und Struktogramm 1:10
K05 Zeiger und Arrays 24:08
K06 statische Variable, Rekursion 2:53
K07 Binärzahl aus Zeichenkette in Integer wandeln 6:01
02D.9_K07_Material.zip