GdI 2014-11-12
Zusammenfassung imperative Programmierung
Vorlesung JB auf Grundlage von Nazareth (2010) / überarbeitet Scholz (2011 – 2014): insbesondere Folien 111-129
GS Kap 2.1 - 2.8, Kenntnisse: Hat alles (!) verstanden, kann es erklären und in C selbst codieren; im Detail:
- Flussdiagramme und grundlegende Kontrollstrukuren; (GS Kap 2.3 - 2.3.1, Kap. 2.6; Scholz2014 114ff)
- Daten und Datenstrukturen (GS 2.4)
- strukturierte Datenypen (GS 2.10.3)
- Speicher, Variablen, Ausdrücke (GS 2.6)
- Der Kern imperativer Sprachen (GS Kap 2.6) Zuweisung | 3 grundlegende Kontrollstrukturen: Komposition; if..then, while | Funktionen sind Unterprogramme mit Rückgabewert
- syntactic sugar (GS Kap 2.8) switch | do | for
- Arrays (GS 2.8.6)
Wissensquelle:
- Primärquelle: Gumm, Sommer (GS): Einf. in die Informatik, 9. oder 10. Auflage
- auch: Veranstaltung Programmieren im 1. Semester
Fertigkeiten:
Rekursion
Rekursion ist die Brücke zur funktionalen Programmierung.
Heute die Grundlagen, ppt-Vortrag JB, auf Basis von GS Kap. 2.9 - dort auch nachlesen!
Übung für die Kalender-Doppelwoche KW 46 und KW 47
Überblick über Informatik-Begriffe gewinnen
Kennenlernen der wesentlichen Informatik-Begriffe: Aus GS Kap 2.1 - 2-8 eine besimmte Zeit (z.B. 45 Minuten lang) alle wichtigen Begriffe in eine mm kopieren und ordnen (muss kein Thesaurus sein): Damit hat man eine gute Übersicht, was man als Informatiker zu diesem Thema alles wissen (= erklären können) muss.
- Mit den Überschriften beginnen, dann aus dem Text wichtige Begriffe 'raussuchen
- Ggf. in der Übung ausprobieren und ein Gefühl für Wissens-"Volumen" bekommen: Wie viele MM-Nodes schafft man in 45 Minuten, wenn man die pdf-Version und freemind nebeneinander öffnet und mit paste & copy arbeitet? Abschätzen und Bewerten: Welchen Prozentsatz der relevanten Begriffe hat man in 45 Minuten erfasst?
- Beginnen mit Kap 2.1 - 2.8, erst dann GS Kap 2.9
Programmieren
Schreibe ein Programm mit einer Funktion, die ...
-
die Fakultät `n!` einer ganzen Zahl berechnet:
- iterativ, rekursiv
- mit einer while-Schlife; einer for-Schleife; atypisch: do-Schleife
- Wie reagiert Ihr Programm auf ein negatives `n`?
- für 2 natürliche Zahlen den größten gemeinsamen Teiler berechnet (Euklidscher Algorithmus)
- für ein Array von Zahlen die kleinste und die die größte Zahl incl. Position heraussucht / den Durchschnitt bildet
-
die Fibonacci-Zahlen der Reihe nach erzeugt
- naive rekursive Lösung
- iterative Lösung (einfach mit einer while-Schleife und den Variablen "letzerWert" und "vorletzerWert", die man geeignet aktualisiert)
- rekursiv mit akkumulierenden Parametern
Ergebnisform:
- mindestens als Pseudo-Code
- auch ok: auf Papier als C-Programm
- idealerweise am Rechner lauffähig
Abgabe: Bekanntlich ist in GdI ja keine Abgabe der Übungsblätter erforderlich. Ich empfehle Ihnen daher dringend, während der Übung sebstständig das Gespräch mit mir zu suchen, um Feedback zu Ihren Lösungsansätzen zu finden.