[TZI]  [Computer Science Department]  [University of Bremen] 

Vorlesungsfolien

Programme

Grundvorlesung
Praktische Informatik 1: Imperative Programmierung

Dozent

Stefan Edelkamp
         Am Fallturm 1, Raum 2.62 
         D-28357 Universität Bremen

Termine

(V) Do. 8:30-10, Raum MZH 1380/1400 MZH 1470

Modul

03-BA-700.01, 4+3 SWS, 8 ECTS

Thema

In diesem Vorlesung werden algorithmische Konzepte und lauffähige Implementierungen für den imperativen Programmiersprachenkern von Java vorgestellt.

Einheit 1. Didaktische Einführung

  1. Zur Geschichte der Programmierausbildung
  2. Die Welt vor 40 Jahren: Die Zeit der Maschinen und Hochsprachen
  3. Die Welt vor 30 Jahren: Die Zeit der imperativen Sprachen
  4. Die Welt vor 20 Jahren: Die Zeit der alternativen Sprachen
  5. Die Welt vor 10 Jahren: Die Zeit der Kompendien
  6. Objects First
  7. Die Qual der Wahl

Einheit 2. Einführung Rekursion

  1. Willkommen in Rekursien
  2. Achtung Rekursion!
  3. Fraktale
  4. Rekursion auf Zahlen
  5. Rekursion auf Strings

Einheit 3. Rekursive Funktionen

  1. Rekursive Funktionen: Einzeiler, die es in sich haben
  2. Fakultät
  3. Fibonacci-Zahlen
  4. Ackermann-Zahlen
  5. Ulam-Zahlen

Einheit 4. Mathematiknachhilfe

  1. Unter- und Oberstufenmathematik
  2. Quadratwurzel
  3. Erweitern und Kürzen
  4. Pascals Dreieck
  5. Primfaktorzerlegung
  6. Gauß-Elimination

Einheit 5. Auswählen und Sortieren

  1. Gleichzeitige Berechnung von Mini- und Maximum
  2. Schnelles Suchen
  3. Schnelles Sortieren
  4. Das Nimm-Spiel
  5. Kryptarithms

Einheit 6. Rekursive Suche

  1. Tower-of-Hanoi
  2. Labyrinth-Suche
  3. Dameprobleme
  4. Sudokus

Einheit 7. Der Nutzen von Heuristiken

  1. Number Partition
  2. Das 15-Puzzle
  3. Ranking und Unranking von Permutationen
  4. Hüpfen auf dem Solitärbrett
  5. Das Problem des Handlungsreisenden

Einheit 8. Randomisierte Suche

  1. Der Zufall spielt mit
  2. Randomisierter Primzahltest
  3. Mister X
  4. Mastermind
  5. Handlungsreisen mit Zeitfenstern
  6. Rechteckpackungen

Technische Vorüberlegungen

Jede Einheit wird eingeleitet durch Lernziele und abgeschlossen durch Merksätze sowie durch Fragen, die zum Weiterdenken anregen.

Der Vorlesungstext wird durch ausführbare Programme begleitet.

Hauptprogrammiersprache ist Java - die Programmierumgebung ist BlueJ (Im imperativen Kern sind Programmiersprachen oft verwandt: Viele Code-Fragmente lassen sich schnell übertragen.)

Erste Begegnungen mit

  • Variablen vom Typ char, int, long, float und double,
  • Schleifen, wie while(.){.}, for(.;.;.){.}, bzw. do {.} while(.);,
  • Verzweigungen, wie if (.){.} else {.}, bzw. (.)? {.} : {.},
  • Arrays, wie int a[..] und
  • Unterprogrammen
sind hilfreich, aber nicht zwingend erforderlich.

Die Funktionsweise der Programme erschließt sich schnell durch die vorgegebenen Quelltexte.

Praktische Informatik 1: Imperative Programmierung

Stefan Edelkamp (edelkamp@tzi.de)