Computer und Sport
Dieses Programm wurde zur Auswertung von Deutschen Mannschafts-Meisterschaften entwickelt. Denkbar ist aber auch, daß man es bei der Vereinsmeisterschaft im eigenen Ort einsetzt. Notwendig ist dabei nur der Commodore 64 mit Peripherie.
Meine Arbeit mit dem Computer begann im Juli 1982. Ich war in der 12. Klasse und besuchte einen Informatik Grundkurs. Die dort erworbenen, jedoch relativ geringen Grundlagen der Basic-Programmierung führten durch eigene Versuche an Spielen und an einem NGO-Verwaltungsprogramm, im Teamwork, relativ schnell zu einer guten Kenntnis der Basic-Programmiersprache und teilweise auch schon zu Maschinensprachekenntnissen. Diese wurden durch den Kauf eines C 64 im April 1983 ausgebaut und bildeten so die Basis zur Erstellung sinnvoller Programme. Der Einsatz des Computers im Sport lag also nicht fern, zumal mein Vater Leichtathletiksportfeste organisiert. So war er es auch, der mich fragte, ob der Computer bei einem DMM-Wettkampf nicht gute Dienste leisten könnte. Die Programmidee war damit geboren.
Eine Idee, eine Herausforderung und der Commodore 64
Die nähere Problematik soll nun für alle erläutert werden, die mit dem Ablauf von Leichtathletikwettkämpfen weniger vertraut sind. Das Kürzel DMM steht für Deutsche Mannschafts-Meisterschaften. Diese werden in verschiedenen Leistungsklassen und auf unterschiedlichen Ebenen durchgeführt. Bei dem Wettkampf, für den das Programm ursprünglich geschrieben wurde, handelte es sich um den Endkampf um die badische Mannschaftsmeisterschaft für Männer und Frauen in jeweils drei Klassen. Es waren Bezirksliga, Landesliga und Bundesliga vertreten. Diese drei Gruppen unterscheiden sich untereinander durch eine unterschiedliche Anzahl an Disziplinen, wobei die Disziplinen bei den Männern sich von denen bei den Frauen nochmals unterscheiden. (Man denke beispielsweise an die unterschiedlichen Gewichte beim Kugelstoßen etc.)
Ein MByte für das DLV-Punktebuch
Jede der teilnehmenden Mannschaften, deren Anzahl in den einzelnen Gruppen nochmals recht unterschiedlich ausfällt, kann nun pro Disziplin maximal drei Teilnehmer stellen. Die Ergebnisse, die von diesen erzielt werden, werden anhand eines DLV-Punktebuches in die entsprechenden Punktezahlen umgesetzt. Da diese Punkte leider recht wahllos und nicht durch irgendeine Formel bestimmbar sind, ist an eine Auswertung mit dem Computer an dieser Stelle noch nicht zu denken. Das DLV-Punktebuch enthält nämlich zirka 83000 unterschiedliche Leistungen und zugeordnete Punktezahlen. Der Speicheraufwand in Basic läge also schätzungsweise bei einem MByte, was den Speicherbereich des C 64 selbst mit angeschlossenen Floppy-Laufwerken erheblich übersteigt. Also mußte ich mir etwas anderes überlegen: Der Rechenvorgang, der, nachdem die Punkte festgestellt sind, vollzogen werden muß, ist jedoch sehr gut mit einem Computer zu realisieren. Die drei Teilergebnisse einer Mannschaft in einer Disziplin müssen sortiert werden. Die beiden besten Ergebnisse werden nun zum Gesamtergebnis hinzuaddiert. Dies ist wohl ein Vorgang, dessen Einfachheit besticht, der aber gleichzeitig die Frage aufwirft, wozu dann ein Programm benötigt wird. Die Antwort auf diese Frage ist recht einfach. Es geht um die Geschwindigkeit und die Zuverlässigkeit. Hinzu kommt noch die Möglichkeit einer schnellen Gegenkontrolle, da alle Einzelergebnisse gespeichert bleiben und schnell abrufbar sind. Das Wichtigste ist jedoch das schnelle Herstellen von Zwischenergebnissen, wozu im Wettkampfbüro keine Zeit vorhanden ist. Diese Zwischenergebnisse können nun ohne großen Aufwand, nur durch wenige Tastendrücke zu jedem beliebigen Zeitpunkt abgerufen werden.
Im Folgenden soll nun beschrieben werden, wie der Ablauf in der Praxis vor sich ging. Die Wettkampfkarten mit den Ergebnissen kamen ins Wettkampfbüro und dort wurden dann die entsprechenden Punkteergebnisse herausgesucht. Der Zettel mit den Punkteergebnissen kam zum Computer und die Ergebnisse wurden eingegeben. Der Computer wählte die beiden besten Ergebnisse einer Mannschaft aus und addierte sie zum Gesamtergebnis. War eine Disziplin einer Gruppe abgeschlossen, so wurde das Zwischenergebnis mit Uhrzeit ausgedruckt und dem Stadionsprecher weitergeleitet, um diesem immer die aktuellsten Informationen zu sichern. Danach ging eine Kopie der Zwischenergebnisse an das Wettkampfbüro zurück, das dann eine Vergleichsmöglichkeit hatte, wenn es später zu seinem handgerechneten Zwischenergebnis kam. Dies war immer erst wesentlich später der Fall, da die Ergebnisse immer noch in mehrere andere Listen übertragen werden mußten, bevor sie addiert wurden. Die Möglichkeiten einer schnellen Kontrolle aller Einzelergebnisse durch den Computer, ohne einen Berg von Wettkampfkarten durchsuchen zu müssen, erwies sich als äußerst praktisch bei der Fehlersuche. Die Fehler, die auftraten und durch das Zwischenergebnis des Computers aufgedeckt wurden, waren meist Schreib- oder Lesefehler, Übertragungsfehler von einer Liste auf die nächste oder schlichte Rechenfehler, die sich leicht einschleichen, wenn man in der Hektik eines Wettkampfbüros auch noch schnell per Kopf oder Taschenrechner rechnen soll. So war die Fehlerquelle mit Hilfe des Computers schnell entdeckt und der Fehler wurde beseitigt. Ein Schritt zu einer besseren und fehlerfreien Ergebnisliste, die sich sehen lassen kann.
Der Computer hilft Fehler vermeiden
Das Programm selbst entstand in zirka fünfstündiger Arbeit an einem Sonntagnachmittag und wurde, nach seinem Einsatz, den praktischen Erfahrungen gemäß, die damit gemacht wurden, erweitert und verbessert, es gibt schließlich viele Dinge, auf die man rein theoretisch niemals kommt, die in der Praxis aber wünschenswert sind. Der Peripheriemangel, der zur Entstehungszeit des Programmes herrschte ist dafür verantwortlich, daß im ursprünglichen Programm die Datenspeicherung nicht gleich auf Diskette erfolgte. Diese Ergänzungen kamen erst später hinzu. Das hatte jedoch auch einen guten Nebeneffekt, nämlich den, daß das Programm mit praktisch allen Peripheriekonfigurationen sinnvoll arbeiten kann. Das beginnt bei Kassettenstation und Zentraleinheit und endet bei Zentraleinheit, Floppy und Drucker. Die einzelnen Bildschirmmasken nutzen die farblichen Möglichkeiten des C 64 zur übersichtlichen Darstellung der Daten. POKE-Befehle wurden weitgehend vermieden, um das Programm möglichst leicht auch auf andere Computer übertragen zu können. POKE-Befehle wurden nur zur Erzeugung der Hintergrundfarben und des Tones verwendet und können an diesen Stellen des Programmes durchaus entfernt werden. Auf die Verwendung von REM-Zeilen wurde verzichtet, da der durch sie verbrauchte, unnötige Speicherplatz das Programm verlangsamt und unnötig verlängert. Zusätzlich würde die verwendbare Datenmenge auch noch eingeschränkt.
Das Programm ist im Menü-System aufgebaut, so daß es recht einfach benutzt werden kann. Die einzelnen Möglichkeiten, die der Benutzer jetzt hat sind meist alle auf dem Bildschirm dargestellt. Das Programm soll nun einmal von Anfang an theoretisch durchlaufen werden. Wird das Programm gestartet, so erfolgt als Erstes die Eingabe der Zeit. Wurde das Programm vorher bereits einmal gestartet, so kann einfach nur »RETURN« eingegeben werden. Die vorher eingegebene Zeit bleibt dann erhalten, da die interne Computeruhr, die ja ständig mitläuft, vom Programm aus benutzt wird. Die Eingabe der Zeit erfolgt im »HHMMSS«-Format. Das bedeutet, daß zum Beispiel 12 Uhr 23 und 15 Sekunden als 122315 eingegeben wird. Nach dieser Eingabe befindet man sich im Hauptmenü (Bild 1), das zunächst sechs gleichwertige Untermenüs anbietet, die den einzelnen Gruppen Landesliga, Bundesliga und Bezirksliga Männer bzw. Frauen zugeordnet sind. Diese Untermenüs sind alle auf dem gleichen Unterprogramm aufgebaut. Der Unterschied liegt nur in den Daten, also den Namen der Mannschaften, der Anzahl der Disziplinen und der Art der Disziplinen. Wird nun eines der Untermenüs (Bild 2), angewählt, so erscheint eine Liste der Mannschaften, mit der jeweils fortlaufenden Mannschaftsnummer. Das Untermenü bietet nun die Möglichkeit der Dateneingabe bei den einzelnen Mannschaften, der Kontrolle aller Einzelergebnisse einer Mannschaft, der Ausgabe der Zwischenergebnisse und des Rücksprunges in das Hauptmenü. Für den Aussprung zurück ins Hauptmenü gibt man »A« ein. Zu den Eingaben ist grundsätzlich noch folgendes zu sagen: Blinkt der Cursor so muß nach der Eingabe »RETURN« gedrückt werden, ist er jedoch nicht zu sehen, so ist dies nicht notwendig.
Menütechnik sorgt für Übersichtlichkeit
Entscheidet man sich in diesem Untermenü für die Dateneingabe, so muß einfach die Nummer der Mannschaft eingegeben werden, bei der Daten eingegeben werden sollen. Darauf erscheint eine Liste der in dieser Gruppe vorhandenen Disziplinen (Bild 3), geordnet nach Lauf, Sprung und Wurf. Wird nun die Nummer der Disziplin eingegeben, so überprüft das Programm zunächst, ob diese Ergebnisse nicht vielleicht schon eingegeben wurden.
Sicherung gegen Fehleingabe ist ein Muß
Ist dies der Fall, so wird, um eine fehlerhafte Eingabe zu verhindern auf dem Bildschirm eine entsprechende Fehlermeldung ausgegeben. Diese wird von einem akustischen Signal begleitet, da man die Meldung auf dem Bildschirm leicht übersieht, wenn man sich auf die Tastatur konzentriert. Das Programm versichert sich nun, ob die Daten wirklich neu eingegeben werden sollen. Dies geschieht durch eine einfache Ja/Nein-Abfrage. So ist gewährleistet, daß versehentlich gemachte Eingaben auf einfachstem Wege immer wieder gelöscht werden können, daß auf der anderen Seite aber die bereits vorhandenen Daten geschützt sind. Gibt man nun die Punkteergebnisse ein (Bild 4) und drückt nur »RETURN«, so nimmt das Programm als Punktezahl nur einfach eine Null an. Die Punkteergebnisse werden nun sortiert und auf dem Bildschirm übersichtlich ausgegeben. Die beiden besten Ergebnisse stehen oben und sind grün gefärbt (Bild 5), weil sie zum Gesamtergebnis addiert werden. Das dritte Ergebnis wird etwas darunter rot eingefärbt ausgegeben, da es nicht in die Wertung kommt.
Alle Ergebnisse werden zur Kontrolle gespeichert
Dieses Ergebnis wird jedoch trotzdem so wie die beiden anderen gespeichert, da es bei Rückfragen zur Kontrolle manchmal doch eine Rolle spielt. Ist die Dateneingabe abgeschlossen, kehrt man wieder in das Untermenü mit der Liste der Mannschaften zurück.
Wird in diesem Untermenü »Z« für Zwischenergebnisse eingegeben, so erscheint eine Liste der Mannschaften in Reihenfolge der von ihnen erzielten Punktezahlen (Bild 6). Ferner erscheint eine Liste der von ihnen bereits durchgeführten Disziplinen. Hier spielt nun auch die beim Start des Programmes eingegebene Zeit eine Rolle, da sie auf dem Ausdruck mit angegeben wird. Die Zeit, zu der ein bestimmtes Zwischenergebnis vorlag ist rein statistisch interessant und kann später zur Optimierung des Zeitplanes verwendet werden. Unter der Liste der Mannschaften wird noch angegeben wieviele Disziplinen bereits ausgeführt sind, wobei nur Disziplinen gezählt werden, die alle Mannschaften bereits durchgeführt haben. Diese Meldung ist nicht nur stur errechnet, das heißt, daß nicht etwa auf dem Bildschirm erscheint: »Stand nach 0 Disziplinen« oder »Stand nach 1 Disziplinen«.
»Kleinigkeiten« werden beachtet
In diesen beiden Sonderfällen wird stattdessen »Noch keine Disziplin komplett« bzw. »Stand nach der ersten Disziplin« ausgegeben. Zurück ins Untermenü kommt man nun wenn eine beliebige Taste gedrückt wird. Soll die Liste vorher noch auf dem Drucker ausgegeben werden, so drückt man einfach »D«. Nach dem Druckvorgang kommt man ebenfalls in das Untermenü mit der Liste der Mannschaften.
Wird in diesem Untermenü »K« für Kontrolle gedrückt, so erfolgt der Zugriff auf die konkreten Daten wieder über die Vereinsnummer und die Nummer der Disziplin. Auf dem Bildschirm erscheinen dann Gruppe, Verein, Disziplin und die drei Ergebnisse (Bild 7). Das Programm wartet nun wieder auf einen Tastendruck. Wird entweder l, 2 oder 3 gedrückt, so kann das entsprechende Ergebnis neu eingegeben werden. Bei anderen Tasten erfolgt ein Rücksprung ins Untermenü.
Soll korrigiert werden, so werden die alten Ergebnisse vom Gesamtergebnis subtrahiert. Das neue Ergebnis wird eingegeben, die Ergebnisse werden sortiert und auf dem Bildschirm ausgegeben. Die beiden besten Ergebnisse werden nun wieder zum Gesamtergebnis hinzuaddiert.
Korrekturen ohne weiteres möglich
Diese Untermenümöglichkeiten bestehen für alle sechs Gruppen. Ein Ausstieg aus dem gewählten Programmschritt ist meistens möglich, falls er einmal unbeabsichtigt aufgerufen wird. Die Eingaben werden, so wie das möglich ist, auf Korrektheit überprüft. Im Falle einer festgestellten Unkorrektheit wird der Cursor rot gefärbt und die Eingabe wird ignoriert.
Alle Peripheriegeräte können angesprochen werden
Die weiteren Programmschritte, die vom Hauptprogramm aus angewählt werden können, sind Einlesen von Daten, Abspeichern von Daten und Programmende. Die Datenspeicherung (Bild 10) kann sowohl auf Kassette als auch auf Diskette erfolgen. Die Möglichkeit einer solchen Speicherung trägt dazu bei, die Daten vor einem Stromausfall zu schützen und die Ergebnisse zu späteren Zeitpunkten wieder rekonstruieren zu können.
Um die Daten der Mannschaften zu ändern, muß zunächst die Variable A in Zeile 130 an die neue Gesamtanzahl der Mannschaften angepaßt werden. Die neuen Namen müssen in den DATA-Zeilen von 150 bis 220 geändert werden. Die dort vertretenen »..........« erklären sich dadurch, daß am Veranstaltungstag noch in letzter Minute bereits gemeldete Mannschaften ausfielen. Ihre Namen wurden dann einfach durch diese Striche ersetzt und ihre Ergebnisse wurden immer mit 0 eingegeben. Die Reihenfolge, in der die Mannschaften in den DATA-Zeilen stehen, entscheidet über die Reihenfolge der Mannschaftsnummern. Es ist hierbei darauf zu achten, daß Mannschaften, die in derselben Gruppe starten auch in der Reihenfolge der Nummern direkt nacheinander kommen. Die schließlich letzten Änderungen beziehen sich auf die Zeilen 1050, 1110, 1170, 1220 und 1350. In diesen Zeilen wird festgelegt, welche Mannschaften zu welcher Gruppe gehören und wieviele Disziplinen zu dieser Gruppe gehören. Die Anzahl der Disziplinen ist einfach dadurch zu ändern, daß man der Variable H einen anderen Wert zuweist. Die Namen selbst werden in den darauffolgenden Zeilen definiert, indem sie dem Feld der B$(x)-Variablen zugewiesen werden. Die höchstmögliche Anzahl an Disziplinen muß dann noch in Zeile 130 bei der Zuweisung zu der Variablen B geändert werden. In den oben genannten Zeilen wird z.B. in der Zeile 1050 durch die Zuweisung F=1 und G=5 festgelegt, daß die Mannschaften 1 bis 5 einschließlich zur Bundesliga Männer gehören. In der Zeile 1110 bedeutet F=6:G=10, daß die Mannschaften 6 bis 10 zur Landesliga Männer gehören. Dies gilt ähnlich für die übrigen, oben genannten Zeilen. Die Reihenfolge der Gruppen ist hierbei die gleiche wie die im Hauptmenü verwendete.
(Volker Ritzhaupt)100-140 | Ausgabe der Copyrights auf dem Bildschirm, setzen der Hintergrundfarben und Eingabe der gegenwärtigen Zeit. Der WAIT-Befehl wartet auf einen Tastendruck und muß bei der Anpassung an andere Computer so wie die beiden POKE-Befehle entfernt werden |
150-240 | Festlegung der Mannschaften in DATAs, Bestimmung der Arrays durch die DIM-Anweisung und Einlesen der Mannschaften |
250-390 | Aufbau der Bildschirmmaske für das Hauptmenü |
400-440 | Auswahl des Unterprogramms, das angewählt wurde |
450-510 | Aufbau der Untermenübildschirmmaske und Verzweigung zu den jeweiligen Unterprogrammen, die von diesem angesprungen werden können |
520-570 | Auswahl der Disziplin und Ausgabe der Liste aller Disziplinen einer Gruppe |
580-690 | Eingabe der Ergebnisse, Sortieren der Ergebnisse und Ausgabe der sortierten Ergebnisse. Außerdem Addition zum Gesamtergebnis und Ausgabe des Gesamtergebnisses |
700-840 | Ausgabe des Zwischenergebnisses auf dem Bildschirm |
850-860 | Anschalten des Tones |
870-940 | Ausgabe der Fehlermeldung und des Tones im Falle einer Falscheingabe. Vorbereitung auf die Neueingabe der Ergebnisse |
950-1020 | Auslisten der Einzelergebnisse zur Kontrolle |
1030-1040 | Ändern des konkreten Ergebnisses |
1050-1390 | Unterprogramm zur Definition der Disziplinen und der Mannschaftsanzahl einer Gruppe |
1510-1570 | Schreiben der Daten auf Kassette |
1580-1640 | Lesen der Daten von Kassette |
1680-1730 | Unterprogramm zur Vorbereitung auf die Datenspeicheroperationen |
1740-1820 | Schreiben der Daten auf die Diskette in eine sequentielle Datei, die den Namen DMM-Daten trägt |
1830-1870 | Lesen der Daten von Diskette |
1880-1890 | Eröffnen einer Pseudo-Datei auf der Diskette, falls noch keine Datei angelegt war |
3000-3100 | Ausgabe der Zwischenergebnisse auf dem Drucker |
4000-4010 | Unterprogramm zum Drucken der Überschrift |
A$(x) | Name der Vereine |
A(x) | Gesamtergebnis eines Vereins |
A | Anzahl der Mannschaften |
B$(x) | Namen der Disziplinen einer Gruppe |
B | Maximale Anzahl an Disziplinen |
C(x,y,z) | Einzelergebnis, wobei x die Mannschaftsnummer ist y die Disziplin repräsentiert und z die Nummer des Einzelergebnisses ist (von 1-3) |
C$ | Variable für 4 Cursorbewegungen nach unten |
E$(x) | Ergebniszeichenkette, die sich aus Gesamtpunktzahl und Mannschaftsnamen zusammensetzt |
E(x,y) | Flag zur Überprüfung, ob eine Disziplin bereits eingegeben wurde x steht für die Mannschaftsnummer und y für die Disziplin |
E1$ | Zwischenspeicherstring zur Formatierung der Ergebnisse |
F | Untere Grenze der Mannschaftsnummer einer Gruppe |
G | Obere Grenze der Mannschaftsnummern einer Gruppe |
F$ | Variable für Bildschirm löschen und 3 Cursorbewegungen nach unten |
G$(x) | Namen der unterschiedlichen Gruppen |
G1 | Anzahl der Mannschaften einer Gruppe |
H | Anzahl der Disziplinen einer Gruppe |
S1 | Basisadresse des SID im C 64 (Sound Controller) |
T | Wellenform des Tones |
TI$ | Interne Uhr des C 64 |
T1$ | Stunden |
T2$ | Minuten |
T3$ | Sekunden |
V | Anzahl der durchgeführten Disziplinen |
V1 | Zählvariable |
X1 | Angewähltes Unterprogramm beziehungsweise angewählte Gruppe |
P0,K0 | Flag für bestimmten Programmodus |
X$,Y$,D$,P$,RI$ | Stringvarible ohne bleibenden Wert. (Ja/Nein-Entscheidungen etc.) |
I,X,D,J,RI | Numerische Variable ohne bleibenden Wert (Laufvariable etc.) |