Einfache Ampelsteuerungen

Nachtbetrieb der Ampel

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


Die Ampelkreuzung

Vorarbeit:

Besuch einer Ampelkreuzung mit Arbeitsblättern. Die Blätter können ausgedruckt werden.

Arbeitsblatt zur Ampelsteuerung




Steuerung einer Ampel

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


Zusammenfassung

FarbeCodierung
rot00000001
rotgelb00000011
gelb00000010
grün00000100

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


Steuerung mit Prozeduren

Ü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.

rot1XXXX   XXAmpel 1
gelb1   X  X   
gruen1     X    
rot2  XXX XXXAmpel2
gelb2 X      X 
gruen2X         

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 UNIT AMPELPHA.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, Volker Ludwig
Burkhard John
29.6.1999