Eine Ampelanlage soll in der Nacht als Warnsignal gelb blinken.
Die Anweisung Ampel_ein; schaltet die Kombiampel auf Ampelbetrieb.
PROGRAM Blinkampel;
USES Komampel;
BEGIN
Ampel_ein;
REPEAT
Binaus ('00000010');
Warte (1);
.
.
.
UNTIL Tastatur;
END.
BLINKAMP.PAS
Besuch einer Ampelkreuzung mit Arbeitsblättern. Die Blätter können ausgedruckt werden.
Arbeitsblatt zur Ampelsteuerung
Eine Ampel soll bei Tag die Ampelphasen ROT, GELB, GRÜN in der richtigen Reihenfolge und im richtigen Zeitablauf wiederholt durchlaufen.
Vervollständige dieses Programm.
PROGRAM Erste_Ampel;
USES Komampel;
BEGIN
Ampel_ein;
REPEAT
Binaus('00000001');
warte( ... );
.
.
.
UNTIL Tastatur;
END.
ERSTEAMP.PAS
| Farbe | Codierung |
|---|---|
| rot | 00000001 |
| rotgelb | 00000011 |
| gelb | 00000010 |
| grün | 00000100 |
Tabelle für die erste Ampel auf der Kombiampel
| Ampel | Farbe | Codierung |
|---|---|---|
| 1 | rot1 | 00000001 |
| 1 | rot1gelb1 | 00000011 |
| 1 | gelb1 | 00000010 |
| 1 | gruen1 | 00000100 |
Tabelle für die zweite Ampel auf der Kombiampel
| Ampel | Farbe | Codierung |
|---|---|---|
| 2 | rot2 | 00001000 |
| 2 | rot2gelb2 | 00011000 |
| 2 | gelb2 | 00010000 |
| 2 | gruen2 | 00100000 |
Übersichtlichere Art zu Programmieren
PROGAM Ampel_mit_Prozeduren; USES Komampel; BEGIN (* Hauptprogramm *) Ampel_ein; REPEAT rot1; warte(...); rot1gelb1; warte(...); gruen1; warte(...); gelb1; warte(...); UNTIL Tastatur; END.
PROZAMP1.PAS
Da der Rechner im Programm "Ampel_mit_Prozeduren" die
Anweisungen rot1; usw. noch nicht versteht, müssen sie ihm
in Form von Prozeduren erklärt werden.
Die Prozeduren müssen zwischen USES Komampel; und
dem Wort BEGIN des Hauptprogramms stehen.
PROGAM Ampel_mit_Prozeduren;
USES Komampel;
PROCEDURE rot1; (* Prozedur *)
BEGIN
Binaus ('00000001');
END;
PROCEDURE rot1gelb1; (* Prozedur *)
BEGIN
Binaus ('00000011');
END;
.
.
BEGIN (* Hauptprogramm *)
Ampel_ein;
REPEAT
rot1;
warte(...);
rot1gelb1;
warte(...);
gruen1;
warte(...);
gelb1;
warte(...);
UNTIL Tastatur;
END.
Im Gegensatz zum Hauptprogramm, das mit einem Punkt beendet wird, schließt eine Prozedur mit einem Semikolon.
Aufgabe 1: Vervollständige die fehlenden Prozeduren im
Programm "Ampel_mit_Prozduren" und speichere es
erneut.
Aufgabe 2: Schreibe ein entsprechendes Programm für die zweiteAmpel.
PROZAMP2.PAS
Aufgabe 3: Schreibe das Hauptprogramm "Doppelampel",
das beide Ampeln nach der Tabelle steuert.
| rot1 | X | X | X | X | X | X | Ampel 1 | ||
|---|---|---|---|---|---|---|---|---|---|
| gelb1 | X | X | |||||||
| gruen1 | X | ||||||||
| rot2 | X | X | X | X | X | X | Ampel2 | ||
| gelb2 | X | X | |||||||
| gruen2 | X |
Dazu sind acht Prozeduraufrufe nötig:
rot1gruen2 rot1gelb2 . . .
Ergänze die restlichen Namen.
Füge die entsprechenden Prozeduren in das Programm "Doppelampel" ein.
Die Prozedur rot1gruen2 sieht so aus.
PROCEDURE rot1gruen2;
BEGIN
Binaus ('00100001');
END;
Ergänze die restlichen sieben Prozeduren.
DOPPELAM.PAS
Die ganzen Prozeduren zu den Ampelphasen werden am besten in einer eigenen UNIT AMPELPHA.PAS für den späteren Gebrauch zusammengefaßt.
Um die Unit verwenden zu können, muß sie wie auch die Unit KOMAMPEL im Programmkopf angegeben werden. Die entsprechende Zeile heißt nun:
USES KOMAMPEL, AMPELPHA;
Eine UNIT in Turbo-Pascal besteht aus zwei Bereichen, dem Interface- und dem Implementation-Teil. Im Interface-Teil sind die Prozeduren mit ihrem Namen aufgeführt, im Implementation-Teil sind sie dann vollständig ausformuliert.
Die UNIT endet mit einem END mit einem Punkt.
Sie ist formal für den vorliegenden Zweck folgendermaßen aufgebaut.
UNIT Ampelpha;
INTERFACE
USES Komampel;
PROCEDURE Rot1;
PROCEDURE Gelb1;
.
.
IMPLEMENTATION
PROCEDURE Rot1;
BEGIN
Binaus('00000001');
END;
PROCEDURE Gelb1;
.
.
END.
Vervollständige die UNIT Ampelpha
um die restlichen Pozeduren für die Ampelphasen.
AMPELPHA.PAS
Schreibe das Programm DOPPELAMP.PAS um unter Verwendung der Unit AMPELPHA.
DOPPELA1.PAS
Zurück zur Hauptseite
Burkhard John
29.6.1999