|
Auf dieser Seite werden während des Semesters weiterführende
Informationen sowie die jeweiligen Aufgabenzettel bereitgestellt.
Eine Übersicht über Inhalte, Termine,... der Veranstaltung
findet sich in unserer
Liste der Lehrveranstaltungen.
Achtung:Die Übung am 19.12.2002 fällt aus. Dafür finden die Übungen am 9., 16. und 23.1.2003 von 12:00 - 13:00
statt (60 Minuten)!
Achtung:Am 4.2.2003 findet kein Praktikum mehr statt. Dafür gibt es im Praktikumsraum eine Fragestunde zum Fachgespräch, in der noch anstehende Fragen
geklärt werden können.
Inhalt dieser Seite:
Die kommentierten Lösungen der
Aufgaben werden von den Teilnehmern mit LaTeX formatiert. Hierzu gibt
es einfach zu handhabende Template-Dateien:
gdi1-muster.tex und das
Hilfsfile defs.tex.
Das im Praktikum verteilte
Einführungsblatt zu Emacs und LaTeX
ist auch online verfügbar.
(ps/gzip, 13,6 kB -
pdf, 73,4 kB)
Für die eingehendere
Beschäftigung mit diesem System zum anspruchsvollen Setzen von
Dokumenten ist als Einstieg Leslie Lamport: Das LaTeX
Handbuch. Addison-Wesley 1995 ebenso wie Helmut Kopka: LaTeX
Einführung, Band 1. Addison-Wesley 2000 zu empfehlen. Alles, was in
bezug auf LaTeX für die Abgabe der Aufgabenblätter notwendig ist,
findet man ebenfalls in der online verfügbaren
Kurzanleitung zu LaTeX.
Eine Einführung in die Grundlagen der Benutzung des UNIX-
bzw. Linux-Betriebssystems findet man in dem
SuSE-Linux
Handbuch im Kapitel 19. Interessant sind dabei insbesondere die
Abschnitte 19.5 bis 19.9.
Fachbegriffe lassen sich häufig sehr gut in der im WWW
verfügbaren Encyclopaedia Britannica nachschlagen:
http://www.britannica.com
Falls Ihr zuhause Software installieren wollt, sind die folgenden
Links vielleicht nützlich:
- Linux-Betriebssystem:
Bei Linux sind üblicherweise bereits alle nötigen
Werkzeuge dabei, z.B. LaTeX, Emacs und der Gnu-C-Compiler.
Linux darf kostenlos kopiert werden.
Man kann auch CDs mit Handbuch und Support von einem Distributor
kaufen, z.B. von:
Solche Pakete sind z.B. im Fachbuchhandel erhältlich.
- Für Windows-Plattformen sind die Werkzeuge ebenfalls
kostenlos erhältlich:
- LaTeX:
Hier ist z.B.
MiKTeX
zu empfehlen (zum Herunterladen)
- Die Gnu-Werkzeuge einschließlich
C-Compiler und Editor Emacs gibt es z.B. im
Cygwin-Projekt
(zum Herunterladen).
- MacOS:
- Übungszettel 1
- Übungszettel 2
- Übungszettel 3
- Übungszettel: ps/gzip, 8,3kB - pdf, 50,1kB
- Hintergrund Formale Spezifikation: ps/gzip, 10,2kB - pdf, 67kB
- Lösung: ps/gzip, 15,6kB - pdf, 68,6kB
- Übungszettel 4
- Übungszettel: ps/gzip, 7,6kB - pdf, 44,8kB
- Lösung Aufgaben 1-4: ps/gzip, 7,5kB - pdf, 39,4kB
- Lösung Aufgabe 5: ps/gzip, 6,3kB - pdf, 32,4kB
- Übungszettel 5
- Übungszettel 6
- Übungszettel: ps/gzip, 8,2kB - pdf, 43,2kB
- Hintergrund Erstellen von Bibliotheken: ps/gzip, 8,3kB - pdf, 51,8kB
- Hintergrund Vom Problem zum Programm: ps/gzip, 14,6kB - pdf, 52,4kB
- Lösung Aufgaben 1-4: ps/gzip, 8,4kB - pdf, 48,4kB
- Lösung Aufgabe 5: ps/gzip, 8,3kB - pdf, 44,3kB
- Praktikum 1
- Zugang zum Rechnerlabor: ps/gzip, 9,7kB - pdf, 57,8kB
- Einführung in Emacs, gcc und Latex: ps/gzip, 13,6 - pdf, 73,4
- Unix-Kommandos: ps/gzip, 7,8kB - pdf, 40,6kB
- Aufgabenblatt: ps/gzip, 6,7 kB - pdf, 43kB
- Praktikum 2
- Praktikum 3
- Praktikum 4
- Praktikum 5
- Praktikum 6
Auf vielfachen Wunsch wird eine Fragestunde eingerichtet, die sich besonders an diejenigen richtet, die keine oder nur wenig Erfahrung mit Computern und Programmierung haben.
Die folgende Liste von Lerninhalten wird im Laufe des Semesters
fortgeschrieben. Sie dient als Checkliste, mit welchen Themen und
Begriffen die Veranstaltungsteilnehmer vertraut werden sollten. Eine
"Session" entspricht einer zusammengehörigen
Lerneinheit, sie muß nicht notwendig in genau einer Vorlesung
abgehandelt werden.
- Die Hierarchie der Programmiersprachen (von "unten nach
oben", d.h. von hardwarenah bis anwendungsnah): (1) CPU
Mikrocode (2) Maschinencode (3) Assembler (4) Wide-spectrum
Languages, 3rd generation (C,C++,Java,Ada,...) (5) Domain-specific
Languages (anwendungsspezifische Sprachen)
- von-Neumann'sche Rechnerorganisation
(CPU, Datenbus und Adressbus, RAM und ROM, Ein-/Ausgabeeinheit)
- Rechnerarchitektur
- Bytes, Bits, Maschinenworte
- CPU und ihre Grundstruktur (MAR, PC, IR, Decodierer/Steuerwerk,
MBR, ALU, A, L, MR)
- Speicheradresse versus Speicherinhalt
- Assembler und Maschinensprache
- Eine einfache "fiktive" Assemblersprache mit
Load/Store/Jump/Integer-Befehlen
- Realisierung der Assemblerbefehle im (fiktiven) Mikrocode einer CPU
- fetch-/execute-Phasen (fetch = Befehl holen, execute = Befehl ausführen)
Literatur zu Session 1
Oberschelp und G. Vossen: Rechneraufbau und Rechnerstrukturen, Kapitel 8
Hintergrundinformationen zu Session 1
- Liste von Mikroinstruktionen:
ps/gzip, 6,7 kB -
pdf, 31,3 kB
- Folie Struktur eines von Neumann-Rechners:
ps/gzip, 25,8kB -
pdf, 24,6kB
- Folie Struktur einer CPU:
ps/gzip, 41,7kB -
pdf, 33,6kB
- Folie Speicherhierarchie:
ps/gzip, 21,1kB -
pdf, 22,7kB
- Folie Organisation einer I/O-Einheit:
ps/gzip, 20,5kB -
pdf, 20,8kB
- Das klassische Hello-World-Programm als einfachstes C-Programm
- Aufruf des C-Compilers
- Die Phasen des Übersetzens:
Präprozessor, Compiler, Assembler, Linker
- Die main()-Funktion
- Deklarationen und Anweisungen
(Eingabe-, Ausgabe-, leere, Kontrollfluß-, ...-Anweisungen)
- Variablentypen: short, int, long, float, double, char
- Variablen ohne Vorzeichen: unsigned short, unsigned int, unsigned long, unsigned char
- Zuweisungen: a = 5;
- Mehrfach-Zuweisungen: i = j = 1;
- Konstanten mit #define und const
- Arrays, Strukturen (struct) und Unions (union)
- Aufzählungstyp enum
- benannte Typedefinition mit typedef
- Arithmetische Operatoren: +, -, *, /, %
- Vergleichsoperatoren: ==, !=, <, >, <=, >=
- Logische Operatoren: &&, ||, !
- Post-Autoinkrement: i++;
- Post-Autodekrement: i--;
- Schleifen: while, do - while, for
- Bedingte Ausführung: if, if - else
- Bedingte Anweisung: ? :
- Erweiterte Konstrukte für Schleifen: continue, break
- Mehrfache Verzweigung mit switch - case - default
- Äquivalenz von switch und if-else
- Sprünge: goto und Label
- Ausgabe mit printf(), einige Formatparameter dazu (%i, %d, %f, %g, ...)
Literatur zu Session 2
Siehe das Online-Material zur Programmiersprache C
oben.
Hintergrundinformationen zu Session 2
- Funktionen, Rückgabewert, Parameter
- return
- Rekursiver Funktionsaufruf
- Forward-Deklaration von Funktionen
- Formale Bestimmung von Vor- und Nachbedingungen von Funktionen/Algorithmen
- Syntax von Zeigern in C: Typdefinition und Verwendung
- Call-by-Reference und Call-by-Value
- Eingabe mit scanf()
- 0-terminierter (char-)String
- Strings als Pointer or char-Arrays
- Strukturen und Zeiger: ->
- Funktionen und Zeiger: (*func)(int a, int b)
- Grenzen eines Arrays, und das Unheil bei ihrer Überschreitung
- Arithmetik mit Zeigern und Arrays: &(a[3]), a+3
- Globale/lokale Datendefinition in C
- Gültigkeitsbereich von Variablen
- Stackpointer
- Dynamischer Speicher: malloc()/free()
- Cast zwischen Datentypen
- void-Zeiger
- Bestimmung der Größe eines Datentyps mit sizeof()
- Headerdatei <string.h>:strcpy(), strcat(), strcmp(),strchr(), strstr(), strlen(), memcpy()
- Headerdatei <stdlib.h>:malloc(), free(), exit(), rand(), srand()
- Headerdatei <time.h>:time()
- Eigenes Erstellen von Headerdateien
- Im Praktikum: Headerdatei <stdlib.h>:qsort(), bsearch()
Literatur zu Session 3
- Zur Programmiersprache C siehe das Online-Material
oben.
- Formale Bestimmung von Vor- und Nachbedingungen eines Algorithmus
(ps/gzip, 10,2kB - pdf, 67kB)
- Erstellen von Bibliothekenps/gzip, 8,3kB - pdf, 51,8kB
Hintergrundinformationen zu Session 3
- Binäre Suche
- Quicksort
- im Praktikum: Bubblesort und Mergesort
Hintergrundinformationen zu Session 4
Literatur zu Session 4
- A. Aho, J. Hopcroft, J. Ullman: Data Structures and Algorithms,
Kap. 1.5 (über Komplexitätsberechnung)
- einfach verkettete Listen mit Datentypen und void-Pointern
- doppelt verkettete Listen
- allgemeine Vergleichfunktionen mit void-Pointern
- im Praktikum: Ringliste
- FIFO (First-In-First-Out)
- LIFO (Last-In-First-Out): Stacks
- Ringbuffer
- Hashing
Hintergrundinformationen zu Session 5
Literatur zu Session 5
- A. Aho, J. Hopcroft, J. Ullman: Data Strutctures and Algorithms, Kap. 2
- Virtuelle Maschine zwischen Software und Hardware
- Aufgaben des Betriebssystems(Sicherheit, Benutzerverwaltung, Prozessverwaltung, ...)
- Application User Interface (API), Schnittstelle zwischen BS und Software
- Treiber, Schnittstelle zwischen BS und Hardware
Hintergrundinformationen zu Session 6
Der Schein für die Veranstaltung kann entweder durch Vorrechnen
in der Übung erlangt werden, oder durch Bestehen eines
Fachgesprächs.
Prüfungsstoff:
- alle Stichworte in der obigen Liste
- alle Beispiele aus der Vorlesung
- alle sechs Übungsaufgaben
Ein Teilnehmer muß ein paar Zeilen in C programmieren
können (aber kein größeres Programm).
Termine:
Montag, 10.2.2003, 14:00 Uhr bis ca. 17:00 Uhr
Dienstag, 11.2.2003, 14:00 Uhr bis ca. 17:00 Uhr
Ort:
MZH 8055 (8. Ebene im MZH)
Dauer: 20 Minuten
Es werden Gruppen zu je ca. 3-4 Teilnehmern geprüft,.
Bitte vorher bei Kirsten Berkenkötter in die Liste eintragen (nach
Vorlesung/Seminar/Praktikum oder MZH 8120)!
Wer einen Schein haben möchte, besorgt sich diesen bitte bei
seiner Fachbereichsverwaltung, füllt ihn aus und bringt ihn am
besten gleich zum Fachgespräch mit.
Wer den Schein durch Vorrechnen bestanden hat, besorgt ihn sich
bitte ebenfalls selbst, füllt ihn aus und gibt ihn Jan Peleska
zum Unterschreiben (nach der letzten Vorlesung am 4.2.2003).
|
|