Universität Bremen  
  Universität Bremen FB3 TZI BISS  
  AG BS > Lehre > WiSe 2002/03 > Deutsch
English
 

Grundlagen der Informatik 1 (für Studiengang E-Technik), WiSe 2002/03

 

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:


empfohlene Literatur


Material zur LaTeX

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

Material zur Programmiersprache C

Quellen für Software

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:

Aufgabenzettel

  • Übungszettel 1
  • Übungszettel 2
  • Übungszettel 3
  • Übungszettel 4
  • Ü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

Zettel im Praktikum


Fragestunde

Auf vielfachen Wunsch wird eine Fragestunde eingerichtet, die sich besonders an diejenigen richtet, die keine oder nur wenig Erfahrung mit Computern und Programmierung haben.


Veranstaltungsinhalte

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.

Session 1: von-Neumann'sche Rechnerorganisation

  • 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

Session 2: Erste Schritte in der Programmiersprache C

  • 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

Session 3: Zeiger, Funktionen und Headerdateien in C

  • 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

Session 4: Suchen und Sortieren

  • 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)

Session 5: Komplexe Datenstrukturen

  • 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

Session 6: Grundlagen von Betriebssystemen

  • 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


Fachgespräche (Prüfungen)

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)!

Scheine

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).

 
   
Autor: jp
 
  AG Betriebssysteme, Verteilte Systeme 
Zuletzt geändert am: 2. November 2022   Impressum