Topic outline
General
Das Konzept = Niki der Roboter=
Niki der Roboter ist eine geschlossene Programmierumgebung mit eigenem Compiler und Editor für den Anfangsunterricht in PASCAL.
NIKI ist das Modell eines programmierbaren Roboters, der sich auf einem Arbeitsfeld der Größe 10 x 15 bewegen und dort Gegenstände aufnehmen und ablegen kann.Topic 2
Was kann dieser Roboter Niki? Zugegeben, es ist noch nicht sehr viel. Ganze 4 Anweisungen kann er abarbeiten:
vor ... geht einen Schritt nach vorn drehe_links ... dreht sich um 90° nach links gib_ab ... legt einen Gegenstand ab nimm_auf ... hebt einen Gegenstand auf Topic 3
1. Erweiterung: Prozedurkonzept
Das Prozedurkonzept erlaubt es uns, den Quellcode des Programms in nützliche Prozeduren (Bausteine) zu zerlegen. Den Prozeduren gibt man aussagekräftige Bezeichner (Namen), die man dann wie neue Niki-Anweisungen benutzen darf.
Syntax: procedurdeklaration
Beispiel:
PROGRAM neue_prozedur;
PROCEDURE drehe_rechts; {hier wird die Prozedur deklariert}
BEGINdrehe_links;drehe_links;
drehe_links
END;
BEGIN {hier beginnt das Hauptprogramm}
drehe_rechts {Aufruf der Prozedur}
END .
Topic 4
2. Erweiterung: Sensoren Um Niki auch in unbekannten Arbeitsfeldern einsetzen zu können, wurde er mit Sensoren ausgestattet. Das sind logische Ausdrücke in Form von Bedingungen, die er prüft und die ihm die Rückmeldung WAHR oder FALSCH liefern.
Hindernis-Sensor vorne_frei - rechts_frei - links_frei Material-Sensor hat_Vorrat - platz_belegt Richtungs-Sensor nordwaerts - ostwaerts - westwaerts - suedwaerts
Nun fehlen noch Anweisungen, die diese Bedingungen (Sensoren) abfragen, damit Niki darauf reagieren kann. Näheres folgt im Block Kontrollstruktur Schleife.
Topic 5
Kontrollstruktur Schleife 1: WIEDERHOLE-BIS
Niki soll nun selbständig das Material finden und aufnehmen. Die Anzahl der Schritte und die Stückzahl des Materials müssen durch seine Sensoren erkannt werden. Die Anweisungen vor und nimm_auf müssen wiederholt ausgeführt werden.
Syntax: repeat-until-schleife
Teste folgenden Code in einem Programm mit dem beschriebenen Arbeitsfeld.
REPEAT
vor;
UNTIL platz_belegt;
REPEAT
nimm_auf;
UNTIL not platz_belegt
Mit Schleife und Prozedur lassen sich nun nützliche Bausteine programmieren:
Procedure Gehe_bis_zur_Wand; Procedure Nimm_alle_auf; Procedure Gib_alle_ab; Begin
Repeat
vor
Until not vorne_frei
end;Begin
Repeat
nimm_auf
Until not platz_belegt
end;Begin
Repeat
gib_ab
Until not hat_Vorrat
end;
Schreibe nun ein Programm zur Lösung des folgenden Problems und unter Nutzung der besprochenen Prozeduren:
Niki soll alle Steine in die gegenüberliegende Grube legen und zum Ausgangspunkt zurückkehren.
Niki soll nun selbständig das Material finden und aufnehmen. Die Anzahl der Schritte und die Stückzahl des Materials müssen durch seine Sensoren erkannt werden. Die Anweisungen vor und nimm_auf müssen wiederholt ausgeführt werden.
Syntax: repeat-until-schleife
Teste folgenden Code in einem Programm mit dem beschriebenen Arbeitsfeld.
REPEAT
vor;
UNTIL platz_belegt;
REPEAT
nimm_auf;
UNTIL not platz_belegt
Mit Schleife und Prozedur lassen sich nun nützliche Bausteine programmieren:
Procedure Gehe_bis_zur_Wand; Procedure Nimm_alle_auf; Procedure Gib_alle_ab; Begin
Repeat
vor
Until not vorne_frei
end;Begin
Repeat
nimm_auf
Until not platz_belegt
end;Begin
Repeat
gib_ab
Until not hat_Vorrat
end;
Schreibe nun ein Programm zur Lösung des folgenden Problems und unter Nutzung der besprochenen Prozeduren:
Niki soll alle Steine in die gegenüberliegende Grube legen und zum Ausgangspunkt zurückkehren.
Topic 6
Kontrollstruktur Schleife 2: SOLANGE-TUE
Repeat vorUntil not vorne_frei
Hier klappt es!Hier versagt es!
Syntax: while-do-schleife
Die WIEDERHOLE-BIS-Schleife führt erst die Anweisung aus und
prüft anschließend die Bedingung. Niki rennt gegen die Wand
WHILE vorne_frei DO vor
Die SOLANGE-TUE-Schleife prüft erst die Bedingung und
führt anschließend die Anweisung aus. Niki bleibt stehenAuf dem Arbeitsfeld befinden sich mehrere Wände unterschiedlicher Höhe und mit unterschiedlichen Abständen. Niki soll bei der Markierung hinter der letzten Wand stehen bleiben.Das Hauptprogramm soll lauten:
BEGIN
WHILE not platz_belegt DO
Begin
Gehe_zu_Wand;
Umgehe_die_Wand
End;
END.Topic 7
Kontrollstruktur Verzweigung: WENN-DANN-SONST
Niki befindet sich in einem dunklen Gang, der irgendwo nach rechts oder nach links abzweigen wird. Wie findet er diese Abzweigung?
Er benötigt also eine Abfrage von deren Ergebnis der weitere Verlauf des Programms abhängt. Dies nennt man eine Verzweigung. Es kann also sooo oder sooo weitergehen.
WENN Abzweigung rechts DANN gehe nach rechts SONST gehe nach links
Pseudo-Code Struktogramm WENN bedingung erfüllt
DANN anweisung1SONST anweisung2
Syntax: if-then-else-anweisungHinweis: Der ELSE-Zweig kann entfallenLösung:Niki muss nach jedem Schritt die IF-THEN-ELSE-anweisung ausführen.
IF rechts_frei THEN
BEGINdrehe_rechts; vorEND
ELSE
BEGINdrehe_links_frei; vor
END; ...
7-1 Schreibe ein Programm zur Lösung des beschriebenen Problems. Bedenke, dass die Gänge verschlossen sind.
7-2 Niki soll alle Gegenstände aufsammeln und in die Grube legen. Schreiben ein Programm mit Schleife und Verzweigung!
7-3 Niki wird als Rohrleitungsreiniger eingesetzt und soll die Verstopfung beseitigen. Er sucht sich den Weg durch die Rohrleitung, findet die Verstopfung, beseitigt diese und kehrt an den Ausgangspunkt zurück. Das Hauptprogramm soll so lauten:
beginarbeitsfeld(rohr);Suche_die_Verstopfung;Beseitige_die_Verstopfung;Gehe_zurueck;end.Topic 8
Komplexe Aufgaben mit allen Kontrollstrukturen Am Ende eines spiralförmigen Ganges liegt ein Gegenstand, den Niki holen soll und am Ausgang ablegt.
Niki soll die Durchbrüche in den Schichten finden und den Gegenstand aufnehmen.
Niki soll den Hauptgang entlanglaufen und in den jeweils rechten Seitengang einbiegen. Dem Vorratsplatz links entnimmt Niki alle Waren und füllt damit die rechts und links vom Seitengang befindlichen Regale auf. Die restlichen Waren legt er wieder auf den Vorratsplatz. Auf dem Rückweg bearbeitet Niki die andere Seite.
Program Kaufhaus; (* weitere Prozeduren *) PROCEDURE EHE_DEN_HAUPTGANG_ENTLANG; BEGIN WHILE VORNE_FREI DO BEGIN IF RECHTS_FREI THEN BEGIN { ARBEITE_IM_SEITENGANG } GEHE_ZUM_VORRATSPLATZ; NIMM_VORRAT_MIT; FUELLE_DIE_REGALE_AUF; LEGE_DEN_REST_ZURUECK; GEHE_ZUM_HAUPTGANG_ZURUECK; END; { ARBEITE_IM_SEITENGANG } VOR; END; END;
BEGIN { KAUFHAUS } ARBEITSFELD(KAUFHAUS); GEHE_DEN_HAUPTGANG_ENTLANG; DREHE_UM; GEHE_DEN_HAUPTGANG_ENTLANG; DREHE_UM; END
Niki soll die Durchbrüche in den Schichten finden und den Gegenstand aufnehmen.
Niki soll den Hauptgang entlanglaufen und in den jeweils rechten Seitengang einbiegen. Dem Vorratsplatz links entnimmt Niki alle Waren und füllt damit die rechts und links vom Seitengang befindlichen Regale auf. Die restlichen Waren legt er wieder auf den Vorratsplatz. Auf dem Rückweg bearbeitet Niki die andere Seite.
Program Kaufhaus; (* weitere Prozeduren *) PROCEDURE EHE_DEN_HAUPTGANG_ENTLANG; BEGIN WHILE VORNE_FREI DO BEGIN IF RECHTS_FREI THEN BEGIN { ARBEITE_IM_SEITENGANG } GEHE_ZUM_VORRATSPLATZ; NIMM_VORRAT_MIT; FUELLE_DIE_REGALE_AUF; LEGE_DEN_REST_ZURUECK; GEHE_ZUM_HAUPTGANG_ZURUECK; END; { ARBEITE_IM_SEITENGANG } VOR; END; END;
BEGIN { KAUFHAUS } ARBEITSFELD(KAUFHAUS); GEHE_DEN_HAUPTGANG_ENTLANG; DREHE_UM; GEHE_DEN_HAUPTGANG_ENTLANG; DREHE_UM; END
Topic 9
Programmier-Praktikum Zeitraum:
Bearbeite folgende Aufgaben und lade die Arbeitsergebnisse auf den Server (siehe unten)! Die Dateinemen sollen deinen Familiennamen tragen.
Aufgabe-1 (Keine Gruppenarbeit!)
Entwickelt eine Aufgabenstellung für Niki und stellt ein passendes Arbeitsfeld zur Verfügung. Schreibt dazu einen Lösungsvorschlag als Struktogramm und Quelltext in (Niki-)Pascal.
Alles muss in ein Dokument (z.B. Word-Datei) eingebunden werden. Diese Datei muss dann auf den Server geladen werden.
Aufgabe-2
Niki soll die Straße vor der Schule von Kippen befreien. Der hebt alles auf und legt den Unrat in den Behälter.
Schreibe den Quelltext, speichere ihn unter deinem Namen ab und lade die Datei auf den Server.
Topic 10
Dieser Kurs enthält 9 Einheiten, die entsprechend der Behandlung im Unterricht sichtbar gemacht werden!