Kompaktkurs Einführung in die Programmierung - Summer 09

From Sccswiki
Jump to navigation Jump to search
Term
Summer 09
Lecturer
Dr. rer. nat. Stefan Zimmer
Time and Place
Montag, 2.3. bis Dienstag, 24.3.2009
Vormittags 9-12 Uhr Vorlesung (montags bis donnerstags)
Hörsaal MI HS1, Ausnahmen: Mi, 4.3., Mo, 9.3.: MW 1801; Di 17.3.: PH HS2
Achtung Änderungen: Mi, 18.3. und Do,19.3. sind wir im Hörsaal PH HS1 (nicht mehr MW1801)
Weitere Raumänderungen sind noch möglich - das wird dann hier bekannt gegeben
Nachmittags Programmieraufgaben (s.u.).
Audience
Für die Mathematik-Studiengänge ist das das "Praktikum Einführung in eine Programmiersprache" MA8001, vgl. Abschnitt A1.6 im Studienplan (bzw. für Studierende nach der alten Studienordnung die Veranstaltung "Einführung in die Programmierung").
Physiker können mit einem Schein dieser Veranstaltung den Schein "Einführung in die Programmierung" aus dem Wintersemester (Maple/Java) ersetzen.
Hörer anderer Fachrichtungen, die C lernen wollen, sind ebenfalls willkommen!
Tutorials
Der wesentliche Teil auch dieses Kurses besteht darin, dass man die Übungsfgaben bearbeitet, d.h., die dort verlangten Programme in der Regel erstmal mit Papier und Bleistift zu entwerfen und dann so lange auf den Rechner einzureden, bis der mit unserem Programm das Verlangte tut.
Das ist erfahrungsgemäß für viele ein relativ unangenehmer Prozess, aber notwendig. Zur Unterstützung gibt es an den Vorlesungstagen zwei begleitende Veranstaltungen:
  • Von 14-16 Uhr gibt es eine Programmierberatung im Raum MI 00.08.038 - für viele akute Probleme ist es einfach zweckmäßiger, einen Menschen (in diesem Fall den Tobias Lieber) zu fragen, als Folien oder Bücher zu studieren.
  • Um 16:00 gibt es dann ebenfalls im Raum MI 00.08.038 "The Übungsblatt explained", also eine Vorstellung der Lösung. Vor dieser Veranstaltung sei gleich dahingehend gewarnt, dass das Zuhören keinesfalls (genausowenig wie das Herunterladen der dann auch auf dieser Seite bereit gestellten Lösungen) das Selbermachen ersetzt...
So, jetzt steht "Selbermachen ist entscheidend" so oft da, dass keiner sagen kann, er hätte das nicht mitbekommen...
Exam
Wiederholungsklausur ist am Freitag, 10.7.09, um 12:00 im Hörsaal MW2050.
Anmeldung bis zum 30.6. über TUMonline (Prüfung "MA8001 Einführung in eine Programmiersprache", ggf. zu finden unter Fakultät Mathematik -> Fakultätsverwaltung -> Studiensekretariat)
Ablauf (Hilfsmittel etc.) ist wie bei der Klausur vom 23.3.
Semesterwochenstunden / ECTS Credits
4 SWS / 6 Credits
TUMonline
{{{tumonline}}}



Anmeldung

Zu der Veranstaltung muss man sich bis zum 15.2. im mytum-Portal anmelden: Veranstaltung "Kompaktkurs Einführung in die Programmierung (Studiengang Mathematik etc.) 2009"; zum Finden in der Liste am besten Bereich auf "Informatik" einschränken.

Diese Anmeldung ist für alle verpflichtend, die die Klausur mitschreiben wollen, also egal, ob man die Übungen besuchen will oder nicht. (Körperliche Anwesenheit ist nur bei der Klausur verlangt - wer also lieber daheim aus den Folien lernt, die Aufgaben am eigenen Rechner löst und nur zur Klausur erscheint, kann das gerne tun. Aber das Anmelden nicht vergessen!)

Vorbereitung

Zur Vorbereitung auf den Kurs kann man sich mit einem Ausdruck der Folien versehen (weiter unten findet man alle Folien des Kurses zusammen in kompakter Form); zusätzlich ist es hilfreich, wenn man sich schon vorab mit den technischen Dingen vertraut macht. Was man dazu macht, hängt davon ab, wo man die Programmieraufgaben lösen möchte:

  • Wenn man in der SUN-Halle arbeitet, sollte man dort mit den Grundfunktionen vertraut sein (Textdateien bearbeiten, WWW-Browser)
  • Wenn man auf seinem eigenen Rechner arbeiten will, kann man sich schonmal um einen C-Übersetzer kümmern (was der tut, ist im Moment nicht so wichtig, installieren kann man ihn auch so...). Für Windows-Systeme sind zwei (von vielen) kostenlosen Möglichkeiten Dev-C++ (mit schöner bunter Benutzeroberfläche) und Cygwin (enthält einen kommandozeilenbasierten C-Übersetzer)

Themen

Montag, 2.3.09: Einführung

  • Die Folien "Einführung" (Stand: 30.1.09)
    Erratum: auf Folie 25, dritter Punkt, sollte es heißen: "fast jedes C-Programm ist auch ein C++-Programm...", nicht umgekehrt.
  • Das Übungsblatt
  • Das Beispielprogramm prog0.cpp
  • Das Programm prog0.cpp soll übersetzt und ausgeführt werden. Hier die Anleitung für die Sunhalle, auf dem heimischen Rechner sieht's natürlich ggf. etwas anders aus.
    Vorausgesetzt wird, dass man sich soweit auskennt, dass man einen Webbrowser offen hat (und diese Seite liest :-) sowie ein Terminalfenster, um gleich die folgenden Kommandos eingeben zu können (am Anfang befinden wir uns dazu am besten in unserem Homeverzeichnis)
    • Ein neues Verzeichnis anlegen: mkdir EiPro
    • in dieses Verzeichnis wechseln: cd EiPro
    • Mittels des Browsers das Programm prog0.cpp in das neue Verzeichnis speichern
    • Wieder im Terminalfenster: Inhalt des Verzeichnisses anzeigen lassen: ls
      (sollte "prog0.cpp" ausgeben)
    • Übersetzen: g++ prog0.cpp
    • Inhalt des Verzeichnisses anzeigen lassen: ls
      (sollte "a.out" und "prog0.cpp" ausgeben)
    • Programm ausführen: ./a.out
      (sollte a: 37, b: 41, c: -4, d : 6, e: 156 ausgeben)
    • Programm bearbeiten: nedit prog0.cpp &
      Z.B. aus 37 eine andere Zahl machen, abspeichern, übersetzen, ausführen,...
  • Auf dem heimischen Rechner wird sich ein wenig Experimentieren nicht vermeiden lassen (oder jemand fragen, der sich mit sowas auskennt :-)
    Hier nur ein paar kurze Hinweise für die Benutzer von Windows & Dev-C++:
    • Das Programm kann man mit Dev-C++ öffnen (File -> Open Project or File), bearbeiten und übersetzen (Execute -> Compile), das ausführbare Programm heißt hier in der Voreinstellung nicht a.out, sondern so wie der Quelltext, in unserm Fall also prog0.exe
    • Zum Ausführen ist ein Terminalfenster (Windows-Sprechweise: Eingabeaufforderung) hilfreich (wenn man das Programm innerhalb von Dev-C++ ausführt, verschwindet die Ausgabe, bevor man sie lesen kann...)
      Das Navigieren in's richtige Verzeichnis mittels cd kann hier etwas komplizierter sein, je nachdem, in welchem Verzeichnis man am Anfang landet. Den Inhalt eines Verzeichnisses sehen wir hier mit dir; wenn wir im richtigen Verzeichnis sind, wird das Programm einfach mittels prog0 ausgeführt.
    • Naja, vielleicht ist es dann doch einfacher, im Programm vor der schließenden geschweiften Klammer noch eine Zeile std::cin.get(); einzufügen, dann wartet das Programm an dieser Stelle, bis man die Enter-Taste drückt und man kann das Programm auch innerhalb von Dev-C++ ausführen (Execute -> Run).

Dienstag, 3.3.09: Schnelldurchgang durch C

  • Die Folien "Schnelldurchgang durch C" (Stand: 30.1.09)
    Errata: auf Folie 17, Mitte, steht einmal a-b statt a+b und auf Folie 18 ist die Bahauptung Quatsch, dass std::cout << "Hallo"; eine neue Zeile anfängt, dazu braucht's schon ein std::cout << "Hallo" << '\n';
  • Das Übungsblatt
  • Die Programme blatt2.cpp und drucken.cpp

Mittwoch, 4.3.09: Fundamentale Datentypen, Ausdrücke

Donnerstag, 5.3.09: Kontrollstrukturen

Montag, 9.3.09: Funktionen

Dienstag, 10.3.09: Zeiger

  • Die Folien "Zeiger" (Stand: 30.1.09)
  • Das Übungsblatt, das Programm zeiger.cpp, mit dem man sehen kann, ob man Aufgabe 1 richtig gerechnet hat, und ein Lösungsvorschlag ggt2.cpp für Aufgabe 2

Mittwoch, 11.3.09: Felder

Donnerstag, 12.3.09: Felder, Teil 2; Strukturtypen

Montag, 16.3.09: Dynamische Datenstrukturen - Listen

Dienstag, 17.3.09: Binärbäume

  • Achtung: Vorlesung im Hörsaal PH HS2!
  • Die Folien "Binärbäume" (Stand: 30.1.09)
  • Das Binärbaumprogramm binbaum_folie.cpp
  • Das Übungsblatt (Erratum: bei Aufgabe 3, dritter Punkt, ist natürlich der rechte Teilbaum gemeint)

Mittwoch, 18.3.09: Ein- und Ausgabe

Donnerstag, 19.3.09: Vermischtes

Montag, 23.3.09: Klausur

  • Klausur,14-16 Uhr, Hörsäle
    • MW0001 (Nachnamen A-K) und
    • MW2001 (Nachnamen L-Z)
(Anmeldung notwendig, s.o.)
  • Erlaubte Hilfsmittel: ein Ausdruck der Vorlesungsfolien (handschriftliche Anmerkungen darin sind OK).
  • Die Angabe, auch mit Lösungen
  • Die Ergebnisse sind im mytum-Portal abrufbar - hier gibt es weitere Informationen dazu
  • Klausureinsicht am Donnerstag, 26.3., 10:00 in meinem Büro MI 02.05.057 - alternativ zu Beginn der Vorlesungszeit, in letzterem Fall bitte per Mail einen Termin ausmachen.
  • Es gibt eine Wiederholungsklausur am Ende des Sommersemesters, näheres dazu (Termin, Anmeldeverfahren...) wird noch bekannt gegeben.

Dienstag, 24.3.09: Objektorientierte Programmierung

Freitag, 10.7.09: Wiederholungsklausur

  • Wiederholungsklausur ist am Freitag, 10.7.09, um 12:00 im Hörsaal MW2050.
  • Anmeldung bis zum 30.6. über TUMonline (Prüfung "MA8001 Einführung in eine Programmiersprache", ggf. zu finden unter Fakultät Mathematik -> Fakultätsverwaltung -> Studiensekretariat)
  • Ablauf (Hilfsmittel etc.) ist wie bei der Klausur vom 23.3.
  • 13.7.: Die Noten sind im TUMonline eingetragen; Klausureinsicht nach Vereinbarung (per Mail). Viel Erfolg bei den restlichen Prüfungen und schöne Ferien!

Foliensammlung

Alte Klausuren

Klausuren voriger Jahre: