Beispiel zur Navigation im Quelltext und Kommentar eines Programmes

Dieses Beipiel besteht im Mischen eines Kartenspiels mit 32 Karten. Diese fast triviale Aufgabe erfordert natürlich nicht die nun folgende, aufwendige Dokumentation. Es verdeutlicht aber das Konzept, Programme durch den Einsatz von Hypertext bequem zu dokumentieren, was die Wartbarkeit sehr stark beeinflussen könnte. Man kann dadurch einfach zwischen Kommentaren und Erläuterungen zu einem Programm und dessen Quelltext navigieren. Auch innerhalb des Quelltextes wird auf die Definition von Objekten und Prozeduren verwiesen. Dadurch entfällt ein mühsames Suchen nach Beschreibungen von Datenstrukturen und Unterroutinen oder nach Deklarationen von Variablen.

Datenstrukturen

Jede Karte besitzt einen Wert und eine Farbe. Dabei liegt der Wert im Bereich {Sieben, Acht, Neun, Zehn, Bube, Dame, König, As} und die Farbe im Bereich {Karo, Herz, Pik, Kreuz}. In der Implementierung spiegelt sich dies in den drei Klassen karten_farbe, karten_wert und karte wider:

Klasse Bestandteile Operationen Bemerkungen
karten_farbe int farbe void setze(int a) a aus {0,1,2,3}
char* name() Ausgabe aus {Karo, Herz, Pik, Kreuz}
karten_wert int wert void setze(int a) a aus {0,1,2,3,4,5,6,7}
char* name() Ausgabe aus {Sieben, Acht, ... , As}
karte karten_farbe kfarbe
karten_wert kwert
void setze(int a) a aus {0,1,2, ... , 31}
char* name() Ausgabe aus {Karo Sieben, ... , Kreuz As}

Vorgehensweise

Gesucht ist nun eine Routine mische_karten (Kommentar und Quelltext), die ein Spiel aus 32 Karten mischt. Zum Ausprobieren soll diese aus der Hauptroutine main (Kommentar und Quelltext) aufgerufen und die gemischten Karten danach ausgegeben werden.

Um ein Feld von n Karten zu mischen, wird die letzte Karte mit einer zufällig ausgewählten Karte j vertauscht. Dabei darf j auch durchaus den Wert n haben. Wendet man dies rekursiv auf die nun noch zu mischenden ersten n-1 Karten an, so hat man alle n Karten gemischt. Zum Vertauschen zweier Karten wird eine Hilfsroutine tausche_karten (Kommentar und Quelltext) benötigt.


Das Ergebnis eines Programmlaufs


Files

main.c

mischen.c

mischen.h

Schnittstellen in main.c und mischen.c