Zum weiteren Üben der Steuerung von Programmabläufen mit Hilfe von Kontrollstrukturen sollen zwei Klassen TAuto und TAmpel entworfen werden. Es soll sich hierbei um 'dumme' Klassen handeln, die aber alle Dienste (Aufträge und Anfragen) zur Verfügung stellen, die wir benötigen, um einfache aber auch schwierigere und interessante Verkehrssituationen simulieren zu können. (Fußgängerampel, Kreuzung, Baustelle, Abbiegungen ...).
Durch Gruppenarbeit und nachherige Abstimmung wurden die folgenden Dienste für die beiden Klassen festgelegt:
Für die weitere Arbeit benötigen wir noch die Stift und Maus Basisklasse Tastatur
Zum Lesen von
pdf-Dateien benötigt Ihr den Acrobat Reader:
Nun beginnt die eigentliche Arbeit! Es soll eine ganze Reihe von Aufgaben mit Autos und Ampeln bearbeitet werden.
Zum Verständnis der Arbeitsweise des Muster bzw. Aufgabenprogramms hier ein Struktogramm des Ablaufes:
Und hier der kommentierte Quellcode:
Hier stehen die benötigten Klassen-Units Objekte erzeugen und mit Anfangswerten belegen (initialisieren) Zuerst ein wenig Information für die Benutzerin / den Benutzer Wenn irgendeine Taste gedrückt wurde ist diese Bedingung erfüllt Wichtig, dies löscht das erste Zeichen im Tastaturspeicher Sonst rast das Auto irre schnell flackernd über den Bildschirm |
program Verwaltung; uses mSuM, mUhr, mTAuto, mTAmpel; // Namen für Objekte festlegen var meinStift: Stift; derBildschirm : Bildschirm; dieTastatur : Tastatur; dieMaus : Maus; dieUhr : Uhr; Ampel1 : TAmpel; Auto1 : TAuto; begin {----- Objekte erzeugen und initialisieren ----- } derBildschirm := Bildschirm.init; meinStift := Stift.init; dieTastatur := Tastatur.init; dieMaus := Maus.init; dieUhr := Uhr.init; Ampel1 := TAmpel.init; Ampel1.setzePosition(450,330); Ampel1.setzeWinkel(270); Auto1 := TAuto.init; Auto1.setzePosition(20,300); {----- Objekte arbeiten lassen -----} meinStift.bewegeBis(10,10); meinStift.schreibeText('Ampel Umschalten ---> Leertaste'); meinStift.bewegeBis(10,30); meinStift.schreibeText('Ende ------------------------> linke Maustaste'); repeat Auto1.fahre(1); if dieTastatur.wurdegedrueckt then begin Ampel1.schalte; dieTastatur.weiter; end; dieUhr.warte(1); until dieMaus.istGedrueckt; {----- Objekte auflösen -----} meinStift.gibFrei; dieMaus.gibFrei; dieTastatur.gibFrei; Ampel1.gibfrei; Auto1.GibFrei; derBildschirm.gibFrei; end. |
Es folgen die ersten Lösungen
![]() |
|
![]() |
|
![]() |
Zur
nächsten Seite ![]() |
© 2004 GK 11 If und G. Kubitz Hannah-Arendt-Gymnasium, Lengerich Letztes Update: 17.11.04 |