Programmierkurs "C und Computergrafik"

Aktuelle Projekete

Projekt 1 2005/2006: Gassimulation

Unser erstes Projekt in diesem Schuljahr beschäftigt sich mit der Simulation von Gasatomen in einem begrenzten Volumen. Das Executable, das ihr euch über den Link auf euren Rechner laden könnt, stellt eine erste einfache Lösung zu dieser Aufgabe dar. Sie beinhaltet die Reflektion der Gasteilchen an den Wänden des Kontainers und ermöglicht es dem Betrachter, mit den Tasten y/Y den Deckel zu senken/heben. Die Teilchen werden nach Lebensalter gefärbt. wird ein teilchen zu alt, so wird es entfernt und ein neues Teilchen erscheint zufällig.

Noch nicht berücksichtig werden:

Ich habe euch den Code für dieses Beispiel nicht zur Verfügung gestellt, um euch die Möglichkeit zu geben, eigene Vorstellungen zu realisieren ...

Projekt 2 2005/2006: Terrain-Visualisierung

In unserem zweiten Projekt wollen wir ein Programm zur Visualisierung allgemeiner Terraindaten schreiben. Wichtig ist hierbei ein modularer Aufbau auf Basis eines C++-Klassenkonzeptes, um die Auswertung der Geländedaten von der Darstellung des Gel&auuml;ndes vollständig zu entkoppeln.

Fernziel ist ein Visualisierer, der das Terrain abhängig vom gewählten Beobachterstandpunkt, der Varianz der Terraindaten und der Geschwindigkeit des Rechners mit optimal angepasster Detailtreue darstellt. Dabei ist der Unterschied im dargestellten Bild (z.B. die Pixeldifferenz) massgebliches Gütekrietrium für die Bewertung einer Deatilstufe.

Bisherige Ideen:


Verzeichnis der Übungsblätter

Übungsblätter 2003/2004

Übungsblätter 2004/2005

Übungsblätter 2005/2006

Eckdaten

Betreuung: Michael Winckler
Zielgruppe: ab Klasse 7
Termin: Montags, 16:00-17:15
Stand: andauernd seit 2001
Materialien: Kurswebseite mit Arbeitsblättern

Stichwortverzeichnis/Glossar

Bibliothek

Der Sprachumfang von C ist sehr schlank: nur etwas mehr als 30 reservierte Worte bilden den Kern dieser Programmiersprache. Die Macht von C entfaltet sich erst durch die Anwedung weiterer Bibliotheken, die dem Programmierer Befehle in Form von Routinen bereitstellen. Zum Standardumfang jedes Compilers gehört eine ganze Reihe von Grundbibilotheken, die Aufgaben wie Ein- und Ausgabe, mathematische Funktionen, Generierung von Zufallszahlen etc. übernehmen. Die Zusammenarbeit zwischen Programm und Bibliotheken wird zum einen über Headerfiles und zum anderen über den Linker realisiert.

Compiler

Der Compiler übersetzt den vom Programmierer verfasste Quelltext (Source) in mehreren Arbeitsschritten in ein auf dem jeweiligen Rechner lauffähiges Programm. Hierbei wird zuerst der Präprozessor angewendet, um textuelle Ersetzungsarbeiten zu verrichten. Danach werden die Befehle schritt für Schritt analysiert, assembliert und so Objectcode erzeugt. Schliesslich setzt der Linker aus verschiedenen Objectcodes sowie den verwendeten Bibliotheken das lauffähige Executable zusammen.

Executable

Mit Executable wird ein fertiges, lauffähiges Programm bezeichnet. Der C-Compiler stellt es her, indem er die Sourcen in Maschinensprache übersetzt und danach die einzelnen Objectcodes der Module und Bibliotheken zu einem Gesamtprogramm zusammensetzt. Dieser Vorgang ähnelt einem Puzzelspiel, bei dem, beginnend mit dem Hauptprogramm, alle Subroutineaufrufe durch Verweise auf den entsprechenden Subroutinecode ersetzt werden. Diese Arbeit übernimmt der Linker.

Header

Um die Trennung von Schnittstelle und Programmcode zu realisieren, existieren in C Headerfiles. Ein Modul besteht so neben dem Sourcecode aus einem zweiten Anteil, einem File, das sämtliche Schnittstelleninformationen enthät. Diese Zweiteilung ist sowohl bei der Modularisierung als auch für die verteilte Programmerstellung von Vorteil.

Linker

Der Linker erstellt aus den vorcompilierten Modulen und Bibliotheken ein lauffähiges Gesamtprogramm, das Executable. Dabei durchsucht er alle Binärcode auf Verweise auf andere Routinen und fügt diese Verweise zu einem Netzwerk zusammen. Nicht benötigte Routinen kann er dabei entfernen, um den resultierenden Code schlank zu halten.

Modul

Die Zerlegung eines Programmierprojektes in einzelne unabhängige Teile nennt man Modularisierung. In C besteht ein Modul aus zwei einzelnen Files. Der Header liefert dem Benutzer des Moduls die nötigen Schnittstelleninformationen, der Sourcecode enthält die eigentliche Implementierung. Zum Schutz von Programm-Know-How kann das Modul auch in der Kombination Header plus Objectcode an andere Programmierer weitergegeben werden.

Objectcode

Wird ein Modul vom Compiler verarbeitet, so erstellt dieser zunächst Objectcode, eine Maschinensprache-Version des Moduls, in dem noch die Verbindung zu anderen Modulen fehlen. Erst der Linker setzt aus allen Objectcodes und den vorcompilierten Bibliotheken das Fertige Executable zusammen.

Sourcecode

Als Sourcecode bezeichnet man in Compilersprachen den Teil des Programmes, der vom Programmierer unter Anwendung der durch die Sprache vorgegebene Syntax erstellt wird. In C ist der Sourcecode ein reines ASCII-File, das auf dem jeweiligen Rechner unter einem mit der Endung ".c" versehenen File gespeichert wird. Der Compiler wandelt den Sourcecode in mehreren Schritten in das lauffähige Programm um.

Rekursion

Von Rekursion spricht man, wenn eine Funktion sich selbst aufruft. Mit rekursiver Programmierung lassen sich viele algorithmische Aufgaben sehr elegant lösen. Kandidaten für rekursive Algorithemn sind beispielsweise Sortierfunktionen wie Mergesort.