Kompaktkurs Einführung in die Programmierung - Summer 10

From Sccswiki
Jump to navigation Jump to search
Term
Summer 10
Lecturer
Dr. rer. nat. Stefan Zimmer
Time and Place
Montag, 1.3. bis Freitag, 19.3.2010
Vom 1.3. bis einschließlich 16.3. gibt es montags bis freitags 9-12 Uhr Vorlesung im Hörsaal PH HS2
Am 19.3. ist dann die Klausur (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").
Hörer anderer Fachrichtungen, die C lernen wollen, sind ebenfalls willkommen!
Tutorials
Matous Sedlacek
Der wesentliche Teil dieses Kurses besteht darin, die Übungsaufgaben zu bearbeiten, d.h., die dort verlangten Programme in der Regel erst mit Papier und Bleistift zu entwerfen und dann so lange auf den Rechner "einzureden", bis das Verlangte passiert.
Das ist erfahrungsgemäß für viele ein relativ unangenehmer Prozess, aber notwendig. Zur Unterstützung gibt es an den Vorlesungstagen zwei begleitende Veranstaltungen:
  • Programmierberatung von 14:00-15:00 Uhr im Raum MI 00.13.054 für akute Probleme und Fragestellungen.
  • Vorstellung der aktuellen Lösung um 15:00 Uhr ebenfalls im Raum MI 00.13.054. Das Hören dieser Veranstaltung ersetzt keinesfalls das Selbermachen, genausowenig wie das Herunterladen der dann auch auf dieser Seite bereitgestellten Lösungen.
Exam
Klausur, am Freitag, 19.3.2010, 15:15-16:30 Uhr im Hörsaal MW 2001
Klausureinsicht am Mittwoch, 21.4., 17:00, im Raum MI 02.07.023.
Wiederholungsklausur am Freitag, 16.7., 14:15-15:30 im Hörsaal CH21010 (Hans-Fischer-Hörsaal im Chemie-Gebäude auf dem Campus Garching)
Anmeldung zur Wiederholungsklausur bis zum 30.6. über TUMonline
Semesterwochenstunden / ECTS Credits
4 SWS / 6 Credits
TUMonline
{{{tumonline}}}



Anmeldung

Zu der Veranstaltung muss man sich bis zum 5.3. in TUMonline anmelden.

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 drei (von vielen) kostenlosen Möglichkeiten Dev-C++ (mit schöner bunter Benutzeroberfläche) und Cygwin bzw. MinGW (enthalten beide einen kommandozeilenbasierten C-Übersetzer)
  • Hinweis für Windows Benutzer: Alternative zum üblichen "Editor" unter Windows, der manchmal Zeilenumbrüche von (unter Unix/Linux erstellten) Textdateien nicht korrekt wiedergibt, ist die "WordPad-MFC-Anwendung" die damit keine Probleme haben sollte.
  • Übersetzung und Ausführung von Programmen. Als Beispielprogramm kann das Programm prog0.cpp dienen.
    • 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).
  • Speicherlecks: Tools für die Überprüfung korrekter Freigabe des Freispeichers:


Vorlesungs- und Übungsmaterial

Tag Folien u. Programme zur Vorlesung Übungen und Programmschablonen Lösungsvorschläge zu den Übungsaufgaben
Montag 01.03.10 "Einführung"
prog0.cpp (Anleitung zur Ausführung s.o.)
blatt1.pdf
prog0.cpp
blatt1_lsg.pdf
teilersummeZusatz.cpp
Dienstag 02.03.10 "Schnelldurchgang durch C" blatt2.pdf
blatt2.cpp
drucken.cpp
blatt2_lsg.cpp
drucken_lsg.cpp
Korrektur in for-loop in vollkommenListe() : "zahl < n" -> "zahl <= n"
Mittwoch 03.03.10 "Fundamentale Datentypen, Ausdrücke"
bits.cpp
blatt3.pdf
collatz.cpp
ausdruecke.cpp
collatz_lsg.cpp
foo.cpp
lsg.txt
Donnerstag 04.03.10 "Kontrollstrukturen"
donnerstag.cpp
blatt4.pdf
max.c
max.cpp
fp_table.cpp

Für C++ Programmierer in Aufgabe 4) zur Benutzung von sqrt(): "#include <cmath>"

Für Verwendung von std::setprecision() muss der Header "#include <iomanip>" eingebunden sein.
blatt2_lsg_while.cpp
fp_table_lsg.cpp
max_fak.cpp
wurzel.cpp
Freitag 05.03.10 "Funktionen"
freitag.cpp
hanoi.cpp
blatt5.pdf primzahl.cpp
tannenwald.cpp
ggT.cpp
Montag 08.03.10 "Zeiger" blatt6.pdf zeiger.cpp
zeiger1_lsg.txt
zeiger2.cpp
zeiger2_lsg.txt
bezout.cpp
Dienstag 09.03.10 "Felder"
string.cpp
blatt7.pdf felder.cpp
lsg.txt
norm.cpp
palindrom.cpp
bubblesort.cpp
Mittwoch 10.03.10 "Felder, Teil 2; Strukturtypen"
mittwoch.cpp
blatt8.pdf
bzgl. Zusatzaufgabe: Freigabe des Freispeicher s.o. Vorbereitung
lsg.txt
copy.cpp
matrix.cpp
Donnerstag 11.03.10 "Dynamische Datenstrukturen: Listen"
zeigerlos.cpp
blatt9.pdf listezeiger.cpp
liste.cpp
Freitag 12.03.10 "Binärbäume"
binbaum_folie.cpp
blatt10.pdf binbaum.cpp
Montag 15.03.10 "Ein- und Ausgabe" blatt11.pdf
schnittpunkt.cpp
zeit.cpp
for.cpp
ziffern.cpp
collatz.cpp
schnittpunkt_lsg.cpp
Dienstag 16.03.10 "Vermischtes" blatt12.pdf concat.cpp
catalan.cpp
ausgabe.cpp
liste.cpp

Foliensammlung

Klausur

  • Datum: Freitag, 19.3.2010
  • Uhrzeit: 15:15-16:30 Uhr
  • Ort: Hörsaal MW 2001
  • Erlaubte Hilfsmittel: ein Ausdruck der Vorlesungsfolien (handschriftliche Anmerkungen darin sind OK). Aufgrund von Rückfragen: Es ist ALLES aber auch wirklich ALLES als handschriftliche Anmerkung erlaubt!
  • Wiederholungsklausur am Freitag, 16.7., 14:15-15:30 im Hörsaal CH21010 (Hans-Fischer-Hörsaal im Chemie-Gebäude auf dem Campus Garching)
  • Die Ergebnisse der Wiederholungsklausur sind im TUMonline eingetragen, Klausureinsicht nach Vereinbarung

Alte Klausuren

Klausuren voriger Jahre:

  • 2009: ohne Lösung
  • 2008: ohne Lösung
  • Wiederholungsklausur 2008: ohne Lösung
  • 2007: ohne Lösung
  • 2006: ohne Lösung