Inf Bac & PI Bac 1. & 2. Semester Programmieren
Übungen 1. Semester: C
- 1. Übung: "Hello, world" mit Erweiterungen.
Beispiel-Programme: hello1.c,
hello2.c,
hello3.c,
hello3-commented.c
Musterlösung:
hello3-123.c,
hello3-4.c,
hello3-5.c,
hello3-6.c,
hello3-7.c.
- 2. Übung: Potenzrechnen, größter gemeinsamer Teiler, Quersumme, Wurzel-Näherung.
Programm-Gerüst: power-vorgabe.c
Musterlösung Bsp. 1:
power.c,
power-komma.c.
Musterlösung Bsp. 2:
euklid.c,
kuerzen.c.
Musterlösung Bsp. 3:
qsum.c,
qqsum.c.
Musterlösung Bsp. 4:
root.c,
root-count.c.
- 3. Übung (Nur für Informatiker!): Rechnen mit Buchstaben und Bits:
Direkte Quersumme, Bytes umdrehen, Bin- und Hex-Ausgabe.
Musterlösung:
qsum-char.c,
endian.c,
endian-loop.c,
binhex.c.
- 4. Übung: Schleifen, switch, ...: Würfeln, Taschenrechner, rechtw. Dreiecke.
Musterlösung:
sechser1.c
(alternativ: sechser1b.c),
sechser2.c
(alternativ: sechser2b.c),
tr.c,
dreieck.c.
- 5. Übung: Funktionen, Rekursion: Dezimale Ausgabe, Binomialkoeffizienten.
Musterlösung:
recdec.c,
binom-fac.c,
binom-mul.c,
binom-rec.c,
pascal.c.
- 6. Übung: Arrays: Sieb des Eratosthenes, Bubblesort, Pascal'sches Dreieck, Nagelbrett.
Musterlösung:
erat.c,
bubblesort.c,
pascal-arr.c,
nagelbrett.c,
nagelbrett-ausg.c.
- 7. Übung: Pointer, zweidim. Arrays: Bubblesort, Permutationen, magisches Quadrat.
Programm-Gerüst für den grafischen Bubblesort: bubblesort-sdl-angabe.c
Download und
Installationsanleitung zur SDL
(siehe auch hier am Ende der Seite).
Musterlösung:
bubblesort-sdl.c,
perm.c,
magic.c.
Hinweise für Physiker:
- Den Bubblesort mit Pointern dürfen die Physiker auslassen
(aber man kann natürlich auch den normalen Bubblesort aus Ü 6
in das Grafik-Rahmenprogramm einbauen).
- Das Permutations-Programm mit Pointern ist auch nicht für Physiker,
hier gibt es dieselbe Angabe ohne Pointer.
Musterlösung:
perm-ohne-ptr.c
- 8. Übung (zweiter Teil nur für Informatiker):
Strings: Selbstgeschriebene Stringfunktionen.
Musterlösung:
strrepeat.c,
strtextcpy.c,
strappend.c,
strrev.c,
strmaxcpy.c,
strrevchr.c,
stranychr.c,
strsearch.c,
strtrim-1.c,
strtrim-2.c,
replace.c,
replace-direkt.c.
Musterlösung mit Index statt Pointer:
strrepeat-i.c,
strtextcpy-i.c,
strappend-i.c,
strrev-i.c,
strmaxcpy-i.c,
strrevchr-i.c,
stranychr-i.c,
strsearch-i.c,
strtrim-1-i.c,
strtrim-2-i.c.
Musterlösung mit malloc:
strrepeat-m.c,
strtextcpy-m.c,
strappend-m.c,
strrev-m.c,
strmaxcpy-m.c.
Und Denksport für zu Hause für die besonders Guten / Fleißigen (keine offizielle Übung):
Strings, mehrdim. Arrays: Mastermind.
Musterlösung:
mamind.c.
- 9. Übung: File-I/O zeilenweise, qsort: Textersetzung, File sortieren.
(das Sortieren ist schwieriger, aber vor allem für Informatiker wichtiger,
weil eine weitere Übung darauf aufbaut.
Also im Zweifelsfall das Sortieren programieren und nicht das Ersetzen!)
Musterlösung:
textsort.c,
subst.c.
- Weihnachtsübungen: ... stehen gesammelt bei den AIK 1.
(für Interessierte zum zu Hause Üben, wir haben heuer leider keine Zeit dafür...)
- 10. Übung: File-I/O zeichenweise: Klammernprüfung, unnötige Leerzeichen entfernen.
Musterlösung:
klammer.c
(alternativ klammer2.c),
klammer-rek.c,
unindent.c.
- 11. Übung (nur für Informatiker): Strukturen: File sortieren mit Zeilennummern, Directory Listing.
Musterlösung:
textsort-num.c,
files1.c,
files2.c,
files3.c.
- 12. Übung (nur für Informatiker!!!): Allumfassendes Abschlussbeispiel, Backtracking: Rucksack packen.
File mit Eingabedaten: ruck.txt.
Musterlösung:
rucksack.c,
rucksack-opt.c.
Extra-Übungsbeispiele für Physiker 1. Sem.
Folgende alte AIK-Übungsbeispiele passen gut zu den wichtigsten Stoff-Themen:
- Arrays:
- Ein ganz einfaches Beispiel ist das Lotto-Beispiel
(Musterlösung: array-lotto.c).
- Diese Übung
enthält ein leichtes und ein mittleres Beispiel für Arrays und Funktionen
(Musterlösung: array-minmax.c
und array-ins.c).
- Hier sind die einfachen Sortierverfahren im Detail beschrieben.
Man könnte versuchen, die Bubblesort-Funktion in unserer Übung oben
durch eine Selection- oder Insertion-Sort-Funktion zu ersetzen.
- Strings:
- Funktionen:
Übungen 2. Semester: C++
- 13. Übung: Erstes C++: Rangliste sortieren.
Musterlösung:
rangliste.cpp.
- 14. Übung: Erste Objektorientierung: Geometrische Objekte.
Beispiel-Programm: gra.cpp.
Wir verwenden für die grafische Anzeige
SDL
(siehe auch hier am Ende der Seite),
hier gibt es die Installationsanleitung
und hier den Download.
- 15. Übung: Rechtecke: Init-Liste, Copy-Konstr., dyn. Anlegen, ....
Musterlösung Punkt 1-4:
color.h,
rect.h,
rect.cpp,
main.cpp.
Musterlösung Punkt 5-7:
color.h,
rect.h,
rect.cpp,
main.cpp.
- 16. Übung: Statische Member & Methoden: Rechtecke mit Tiefenordnung.
Hauptprogramm zum Erweitern: main-ohne.cpp.
Musterlösung:
color.h,
rect.h,
rect.cpp,
main.cpp.
Alternative Lösung mit STL map statt selbstprogrammiertem Array
für die, die schon STL Container und Iteratoren können:
color.h,
rect-map.h,
rect-map.cpp,
main-map.cpp.
- 17. Übung: Ableitung: Rechtecke und Ellipsen.
Musterlösung:
color.h,
graobj.h,
graobj.cpp,
rect.h,
rect.cpp,
circ.h,
circ.cpp,
main.cpp.
- 18. Übung: Erste Operatoren: Bruchrechnen.
Musterlösung:
bruch.cpp.
- 19. Übung (einfacheres Beispiel): Objekte mit dyn. Arrays, Operatoren: Klasse mit bel. vielen Zählern.
Musterlösung:
lotto.cpp.
- 19. Übung (langes und schweres Beispiel, freiwillig!): Objekte mit dyn. Arrays: Zusammengesetzte grafische Objekte.
Mein Hauptprogramm: main.cpp
Musterlösung:
color.h,
graobj.h,
graobj.cpp,
rect.h,
rect.cpp,
circ.h,
circ.cpp,
comp.h,
comp.cpp,
main.cpp.
- 20. Übung (für Informatiker): GUI-Programmierung: File Viewer & Editor.
Musterlösung:
viewer-simple.cpp,
viewer.cpp,
editor.cpp.
- 21. Übung (freiwillig: Länger & nicht ganz einfach): GUI-Programmierung mit Grafik
15-Puzzle oder
TicTacToe.
Passende Bild-Datei für 15-Puzzle: driver.png
Musterlösung:
tictactoe.cpp,
puzzle.cpp.
- 22. Übung: Exceptions: Bruchrechner mit Fehlerprüfung.
Musterlösung:
bruch-xcpt.cpp.
- 23. Übung: Template-Klassen: Zeichen / Worte / Längen zählen.
Hauptprogramm zum Erweitern: textcnt-main.cpp.
Musterlösung:
textcnt.cpp,
textcnt-2.cpp.
- 24. Übung: STL-Klassen: Zeichen / Worte / Längen zählen mit STL-map.
Musterlösung:
textcnt-stl.cpp, mit Ableitung:
textcnt-stl-abl.cpp.
- 25. Übung: STL-Klassen & GUI: File-Viewer mit Wort-Index.
Musterlösung:
viewer-index.cpp,
viewer-combo.cpp.
Extra-Übungsbeispiele für Physiker 2. Sem.
Folgende alte AIK-Übungsbeispiele passen gut zu den wichtigsten Stoff-Themen:
- Abgeleitete Klassen:
Abgeleitete und abstrakte Klassen, statische Member: Inventarliste
(statische Member & Methoden kommen für Physiker nicht,
Aufteilung in Files auch nicht,
und so umfangreiche Beispiele ebenfalls nicht)
main.cpp
zum Testen der Klasse.
Musterlösung:
inventar.h,
inventar.cpp,
zubeh.h,
zubeh.cpp,
comp.h,
comp.cpp,
main.cpp.
- Fortsetzung davon:
Inventarliste (Abgeleitete und abstrakte Klassen): Copy-Konstruktor und clone
(der Copy-Konstruktor auch in abgeleiteten Klassen ist für Physiker Stoff,
clone nicht)
main.cpp
zum Testen der Klasse.
Musterlösung:
inventar.h,
inventar.cpp,
zubeh.h,
zubeh.cpp,
comp.h,
comp.cpp,
main.cpp.
-
Dynamische Daten, abgeleitete Klassen: Array-Klasse mit Statistiken
(Programm zum Vervollständigen: array-abgel-main.cpp,
Soll-Ausgabe: result.txt).
Musterlösung:
array-abgel.cpp.
- Operatoren, dynamische Daten: Operatoren: String-Klasse.
Rahmenprogramm zum Testen,
erwartete Ausgabe.
Musterlösung: strings.cpp.
-
Operatoren, dynamische Daten: Operatoren für Array-Klasse
(Programm zum Vervollständigen: array-main.cpp,
Soll-Ausgabe: result.txt).
Musterlösung: array.cpp.
-
Exceptions: Datumsrechnen mit Fehlerbehandlung
(nur Teil 1, für Teil 2 fehlen uns Stringstreams!)
(Programm zum Umbauen: datum-diff-xcpt-angabe.cpp).
Musterlösung:
datum-diff-xcpt-2.cpp.