Copyright © 1992, 1997, 1999 by Axel T. Schreiner. All Rights Reserved.

Informatik B: Programmieren mit ANSI-C

Axel-Tobias Schreiner, Fachbereich Mathematik-Informatik, Universität Osnabrück.

Eine Einführung in die Programmierung mit ANSI-C, insbesondere auf UNIX-Systemen.

Vorlesung im Sommersemester 2000.

Von hier aus sind Kopien der OH-Folien des Skripts sowie die Programmbeispiele erreichbar, die teilweise in der Vorlesung verwendet werden. Die Texte sind kein komplettes Manuskript der Vorlesung. Zum Selbststudium müßte zusätzlich ein Buch über die Programmiersprache C nach dem ANSI-Standard konsultiert werden.

Die Folien beruhen auf Kernighan und Ritchie's The C Programming Language, Second Edition [Prentice-Hall 1988, deutsch bei Hanser 1990] und auf anderen Büchern über C und UNIX. Nicht alle hier enthaltenen Beispiele werden in der Vorlesung behandelt.

aufgaben

Jede Woche gibt es ein Aufgabenblatt. Da wir nicht genügend Tutoren finden konnten, folgt dann auch noch eine Klausur.

code

Die Programmbeispiele sind nach Themen in Katalogen zusammengefaßt, die auf Web-Seiten erklärt und erschlossen werden.

ftp

Archivierte Kopien der Programmbeispiele und OH-Folien sowie ein UNIX-ähnliches Entwicklungssystem für Windows, verschiedene Betrachter und ähnliche Werkzeuge können nur im Netz der Universität Osnabrück per File-Transfer-Protokoll abgeholt werden.

pdf

OH-Folien und Programmbeispiele wurden mit Adobe Acrobat in das Portable Document Format gewandelt, miteinander verbunden und durch einen Volltext-Index erschlossen. Sie können von hier aus betrachtet werden.

Je nach Plattform sind dafür spezielle Betrachter erforderlich, die zuvor installiert werden müssen.

skript

Ein Kapitel über B-Bäume.

Leistungsnachweise

Als Leistungsnachweis wird ein Übungsschein vergeben. Als Erfolg gelten 50% der möglichen Punkte bei jedem einzelnen Aufgabenblatt; ein Blatt darf entfallen. Findet eine Klausur statt, müssen auch dort 50% der möglichen Punkte erreicht werden.

Ausländische Student/inn/en sowie Hörer/innen aus dem Studiengang Cognitive Science müssten statt Übungsschein ECTS-Punkte erhalten. Deren Anzahl hängt leider vom jeweiligen Studiengang ab. Eine Note müßte durch die Punkte der Aufgabenblätter oder durch eine kurze mündliche Prüfung am Schluß der Vorlesung oder durch die Klausur ermittelt werden.

Termine 2000

Vorlesung Dienstag, 16:15 31/449a Schreiner
Donnerstag, 16:15
Übungen Freitag, 8:15 31/449a Ludwig
Freitag, 12:30 s.t.
Sprechstunde Donnerstag ab 15:00 n.V. 31/321 Schreiner
Dienstag, 14:00-16:00 31/326 Ludwig

Kalender 2000

April4 wird nachgeholt
6 Einführung, Organisation des Web-Servers, Literatur, erstes Programm 2, 6-7, 9 hallo0.c
11 erstes Programm, make, Schritte in der Übersetzung, Präprozessor, Datentypen und Konstanten, Operationen, et, quadratische Gleichung 10-12, 13 hallo1.c, qgl0.c
13 quadratische Gleichung: Konstanten, Variablen, Zuweisungen, mathematische Funktionen, printf(), scanf(), if 13-20 qgl[1-4].c*
18 quadratische Gleichung: Kommandozeile, atof(), stderr, fprintf(). Typ einer Zuweisung, getchar(), putchar(), Kopierprogramm; Kommandos cp, cmp, wc, Pipes. Newton Verfahren, do while. 15,18,20,22-25, 37 qgl[45].c, newton.c, cat0.c
20 Euklids Algorithmus: Schleifen, if, Rekursion. One-entry, one-exit Kontrollstrukturen, Struktogramme, Satz von Boehm&Jacopini. break und continue. Bit-Operationen: Wertebereich von int. 26-30 euklid?.c, int0.c
25 Zahlendarstellung, Wertebereiche der int-Typen, C-Preprozessor, Makros mit Parametern, Typen als Argumente. Implizite Umwandlungen bei int. 30-35 int[012].c
27 Umwandlungen , Wertebereiche der int-Typen, ?:, printf in Makros, C-Preprozessor, #parm, parm##wort. cat und die Shell: Umleitungen, Pipes, Datei-Muster. tr, wc, tar, uuencode, cmp. - für Standard-Ein- und -Ausgabe. 32, 36, 37 int3.c, cat0.c
Mai2 Eingabe und Ausgabe, Struktur der Filterprogramme. Hintergrund-Prozesse, Fifos. 37-43 cat[0-5].c
4 et: Code für Stack-Maschine. Demo: Integer-Typen auf 16-Bit Rechner. Wörter zählen, Verwendung im Kontext. 32, 44-47 wc[0-2].c
9 Wörter zählen, globale Zähler, MAIN, Vektoren, Matrizen. 48, 140, 52-55 wc3.c, max?.c. mat0.c
11 Matrizen multiplizieren, struct, Parameter-Übergabe und Zuweisungen. 49-52, 59 mat[0-2].c
16 Matrizen multiplizieren: dynamische Matrizen, Speicherverwaltung. 55-58 mat[03].c
18 struct, union, Bit-Felder, Zeiger auf Strukturen, Verwendung von Zeigern. 59-64 person.c, liste.c
23 modulare Programmierung: Sortierbaukasten, Verbindung durch include-Datei, nm, Random-Zahlen zum Test, time, int-Speicher mit Vektor und dynamisch, realloc(), Zeilenspeicher 78,80-81, 89-93, 96-101 bubble0.c, shell.c, sort[01]/*.[ch]
25 Sortierbaukasten: Dateien sortieren, verschiedene Reihenfolge, Zeiger auf Funktionen. 98-99, 102-103 sort[12]/*.[ch]
30 Deklaratoren: Zeiger, Vektoren, Funktionen und Kombinationen. 102-104, 115-120 stack*.[ch], machine.c
Juni1 Feiertag
6 Zeiger und Vektoren, Arithmetik mit Zeigern. 115, 121-123
8 Arithmetik mit Zeigern: Beispiele für Umwandlungen, Vektoren und Matrizen. String-Funktionen. 121-128, 129 cast.c, matrix.c
13 Pfingstferien
15 Pfingstferien
20 Implementierung der String-Funktionen, Bearbeitung der Kommandozeile. 129-133, 138-141 str?.c, main.h, any.c, cmd.c, opt.c
22 Variable Argumentlisten, rekursiv definierte Kurven, Zeichnen. 142-143, 153-160 hilbert?.c
27 plot: Zeichnen, Bibliotheken, PostScript. 160-161 hilbert?.c
29 Endliche Automaten: grep. 162-171 grep/*
Juli4 Endliche Automaten, Bowling Abrechnung, Bowling Spiel. 172-176 bowl/*
6 B-Bäume: Idee, Algorithmen, Methoden. skript btree/*
11 B-Bäume: Verpackung, OO-Begriffe, statische Initialisierung, visit, new. skript btree/*
13 UNIX Systemaufrufe: Dateien, Kataloge, Inodes, Transferieren. 197 cat[6-8].c