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