118
Gerhard Otte Einführung in LOGO mit LOGO für den PC und WIN-LOGO Informatik ITG Mathematik Messen-Steuern-Regeln © 2000 Gerhard Otte, K.-Adenauer-Allee 10, 64569 Nauheim

mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Gerhard Otte

Einführung in LOGO

mit LOGO für den PC und WIN-LOGO

•••• Informatik •••• ITG •••• Mathematik ••••Messen-Steuern-Regeln

© 2000 Gerhard Otte, K.-Adenauer-Allee 10, 64569 Nauheim

Page 2: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

.

Page 3: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Inhaltsverzeichnis

1 EINLEITUNG 5

2 DER DIREKTMODUS 9

2.1 ZEICHNEN 9 2.2 RECHNEN UND SCHREIBEN 15 2.3 LERNEN 20

3 PROGRAMMIEREN 23

3.1 WIEDERHOLUNGEN 23 3.2 VARIABLEN 23 3.3 STRUKTURIERTES PROGRAMMIEREN 28 3.4 REKURSIONEN 35 3.5 VERARBEITUNG VON ZAHLEN 38 3.6 VERARBEITUNG VON LISTEN 46 3.7 WAHRHEITSWERTE 59 3.8 MEHRFACHER SELBSTAUFRUF 64 3.9 BAUMSTRUKTUREN MIT LISTEN 73 3.10 EIGENSCHAFTSLISTEN 81

4 LERNUMGEBUNGEN IM MATHEMATIKUNTERRICHT 85

4.1 EINFÜHRUNG DER KREISZAHL ππππ 86 4.2 SATZGRUPPE DES PYTHAGORAS 88 4.3 EINFÜHRUNG DES ABLEITUNGSBEGRIFFS 89 4.4 EINFÜHRUNG DES INTEGRALBEGRIFFS 92

5 MESSEN, STEUERN, REGELN 95

5.1 DRUCKTASTENAMPEL 95 5.2 GEBLÄSE 99 5.3 KREUZUNG 102 5.4 SONNENNACHFÜHRUNG 105 5.5 TEACH-IN-ROBOTER 107

Page 4: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

6 ANHANG 112

6.1 AUFBAU DER FISCHER-TECHNIK-DRUCKTASTENAMPEL 112 6.2 BEZUGSQUELLEN FÜR MODELLE UND INTERFACES 114

7 LITERATUR 115

STICHWORTVERZEICHNIS 117

ANZEIGEN LOGO-MEDIEN 117

Page 5: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Einleitung 5

1 Einleitung Wer im Rahmen einer Einführung oder aus anderem Anlaß die Programmiersprache LOGO vorstellen möchte, der hat sich zuerst einmal mit einer ganzen Reihe von Voreinstellungen und Vorurteilen auseinanderzusetzen. Manche Leute sind beispielsweise der Ansicht, LOGO sei ein Programm, mit dem man Eingangsbilder für Computerprogramme erstellen oder Pikto-gramme drucken könne. Andere halten LOGO für eines der üblichen mausunterstützten Zei-chenprogramme.

Häufig anzutreffen ist auch die Meinung, LOGO sei ein grafikorientiertes Spielprogramm für Kinder.

Alle diejenigen, die bereits hinreichende Erfahrungen mit LOGO gesammelt haben und der Faszination des LOGO-Konzepts erlegen sind, wissen, daß in den beschriebenen Voreinstel-lungen ein klein wenig Wahrheit steckt.

Mit LOGO ist es wirklich möglich, Grafiken zu erstellen und auszudrucken. Sie werden in diesem Handbuch sogar Grafiken entdecken, die Sie kaum mit einem der gängigen Grafikpro-gramme erzeugen können. Bei Ihren ersten Experimenten mit LOGO werden Sie weiterhin feststellen, daß der Umgang mit LOGO wirklich 'kinderleicht' ist.

Das einfache Erstellen von Computergrafiken ist aber nicht das vordringliche Anliegen von LOGO. Es ist vielmehr ein nützlicher Begleiteffekt. Die Grafik dient eher dazu, ein wichtiges Ziel einfach und problemlos zu erreichen. Dieses Ziel besteht darin, die Schüler mit den we-sentlichen Grundelementen des Programmierens vertraut zu machen.

LOGO ist also eine echte Programmiersprache - insbesondere für den Schulunterricht. Neben dem Erzeugen von Grafiken können die Schüler mit LOGO eine Vielzahl weiterer Aufgaben bearbeiten. LOGO besitzt alle Elemente einer vollwertigen Programmiersprache und darüber hinaus einige weitere, für den Unterricht wichtige Vorzüge.

Neben den Vorteilen der koordinatenfreien Igel-Graphik besitzt LOGO noch weitere Eigen-schaften, die dem Anfänger einen problemlosen Zugang zur EDV erlauben. Daß LOGO selbst-verständlich eine moderne Benutzerführung mit Lichtbalkenmenü, Mausunterstützung und Hilfe-System besitzt, sei hier nur nebenbei bemerkt. Wichtiger ist die Tatsache, daß LOGO ausschließlich Befehlswörter in deutscher Sprache und mit deutschen Sonderzeichen ver-wendet. Das hat zur Folge, daß der Benutzer keine Befehlswörter und deren Übersetzung auswendig lernen muß, denn die LOGO-Anweisungen beschreiben sich selbst.

Neben der Informationstechnischen Grundbildung und der Informatik machen sich in den letz-ten Jahren auch andere Fächer die grafischen Möglichkeiten und die einfache Bedienung des LOGO-Systems zunutze. Seitdem LOGO mit Treibern zur Steuerung von Modellen ausgestat-tet wurde, erfreut sich LOGO in den Fächern Arbeitslehre, Technik und Physik wachsender Beliebtheit. Sie werden in dem Kapitel 4 dieses Buches einige Anregungen und Ideen für den Einsatz von LOGO in diesen Fächern finden. Dort werden Programme zur Steuerung einer Drucktastenampel, einer Ampelanlage, einer Solarnachführung, eines Gebläses und eines Ro-boters entwickelt.

Im Kapitel 3 dieses Buches wird das Konzept der Lernumgebungen vorgestellt. Dieses Kon-zept läßt sich in vielen Fächern verwirklichen; es wird in diesem Buch jedoch an einigen Bei-spielen aus dem Mathematikunterricht entwickelt. LOGO-Lernumgebungen im Mathematikunterricht bedeutet dabei, daß die Schüler einen festen Vorrat an Befehlen zur

Page 6: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

6 Einleitung

unterricht bedeutet dabei, daß die Schüler einen festen Vorrat an Befehlen zur Verfügung ge-stellt bekommen. Innerhalb dieser Umgebung erarbeiten sich die Schüler mit grafischer Unter-stützung selbständig Inhalte der Mathematik. Sie werden in diesem Kapitel Beispiele zu den folgenden Themen finden: Kreiszahl π, Satzgruppe des Pythagoras, Einführung in die Diffe-rential- und Integralrechnung.

Das Kapitel 2 dieses Buches beschäftigt sich intensiv mit den Möglichkeiten von LOGO im Rahmen der Informatik. LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na-he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers entwickelt, die auf jegliche technische Detailinformation verzichtet. In der Anfangsphase ist der Computer in den Köpfen der Schüler nichts anderes als ein Igel, der die eingegebenen Befehle ausführt. Die Vorzüge des Igels bestehen nun darin, daß man ihm neue Befehle beibringen kann. So ist auf natürliche Art und Weise ein Heranführen an die Programmierung möglich.

Wichtige Konzepte der Softwareerstellung, wie das strukturierte Programmieren oder das Prin-zip der Befehlserweiterung, werden bei LOGO genauso verwendet, wie bei den Programmier-sprachen, die im industriellen Bereich zum Einsatz kommen.

Die Nähe der Programmiersprache LOGO zur Alltagssprache hat einen weiteren Vorteil, der häufig erst bei anspruchsvolleren Programmieraufgaben zum Tragen kommt. Die Verwendung von Wörtern aus der Alltagssprache erlaubt es, die Lösung einer Programmieraufgabe über die sprachliche Beschreibung des Problems zu entwickeln. Häufig sind dann nur wenige Verände-rungen und Anpassungen notwendig, um bereits ein LOGO-Programm zu erhalten.

Für die Verwendung und das Zusammenfassen von Daten stellt LOGO einen 'Datenbehälter' zur Verfügung, der auf eine theoretisch beliebige Größe ausgedehnt und mit beliebigen Daten gefüllt werden kann. Dieser Datenbehälter trägt den Namen 'Liste'. Der Umgang mit solchen Listen ist nun wiederum auf natürliche Art und Weise möglich. Es gibt Anweisungen, um Da-ten an eine bestimmte Stelle in eine Liste einzufügen. Mit anderen Anweisungen kann man Daten aus einer Liste hervorholen.

Dabei spielt es keine Rolle, um welche Art von Daten es sich handelt. Man kann z.B. eine Zahl aus einer Liste herausnehmen und an deren Stelle eine Wort einfügen. Es ist sogar möglich, in eine Liste wiederum eine Liste einzufügen und so Baumstrukturen zu erzeugen. Das Listen-konzept ist so flexibel, daß LOGO-Programme als Listen dargestellt werden können. Damit kann man Programme schreiben, die LOGO-Programme bearbeiten und verändern.

Für Programmieraufgaben, die eine bestimmte Strukturierung der Daten erforderlich machen, stellt LOGO Eigenschaftslisten zur Verfügung. So kann man Objekten verschiedene Eigen-schaften zuordnen. Bei diesen Eigenschaften muß es sich nicht unbedingt um Daten handeln. Es ist auch möglich, Programme als Eigenschaften zu definieren und das Objekt damit in die Lage zu versetzen, bestimmte Operationen auszuführen.

Das Ziel dieses Handbuchs besteht darin, an ausführlich erläuterten Beispielen in die Grund-elemente und Einsatzmöglichkeiten der Programmiersprache LOGO einzuführen. Bei den Ausführungen wird darauf Wert gelegt, dem Leser die Arbeitsweise von LOGO und typische Vorgehensweisen bei der Arbeit mit LOGO nahe zu bringen. Dazu wird insbesondere im Ka-pitel 2 an sehr vielen Stellen die Methode der Ablaufbeschreibung verwendet. Mit dem schritt-weisen Nachvollziehen soll Verständnis dafür geweckt werden, wie LOGO Befehle und Pro-gramme abarbeitet.

Page 7: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Einleitung 7

Wo es aufgrund der Komplexität angebracht erscheint, wird dabei auf Modelle zurückgegrif-fen. Gerade diese Modelle haben sich im praktischen Unterrichtseinsatz als sehr wirksam er-wiesen. Soweit es möglich ist, wird an den jeweiligen Stellen auch auf typische Benutzerfehler und Stolpersteine hingewiesen.

Die Themen im Kapitel 2 sind so ausgewählt, daß sie das breite Spektrum der Einsatzmöglich-keiten von LOGO aufzeigen. Gerade die einfach zu bedienende Listenverarbeitung macht es möglich, mit LOGO auch nichtmathematische Problemstellungen zu bearbeiten. Sie werden in dem Kapitel 2 Anknüpfungspunkte zum Deutschunterricht (Zufallssätze), zum Gemein-schaftskundeunterricht (ELIZA), zum Mathematikunterricht (Aussagen, Zinseszinsrechnung), zum Physikunterricht (Messen, Steuern, Regeln), zur Kunsterziehung (Grafik) und zur Musik (Lied) finden. In den jeweiligen Kapiteln liegt der Schwerpunkt zwar auf der Entwicklung von Programmen, was eine Verwendung der jeweiligen Themen im Informatikunterricht nahelegt. LOGO ist jedoch gerade durch das versteckte Bereitstellen von Programmen und die einfache Bedienung besonders dazu geeignet, fertige Bausteine in den anderen Fächern einzusetzen. So kann den Schwerpunkt auf das Erreichen von Lernzielen gelegt werden, die nicht der Informa-tik zuzuordnen sind.

Ein Grundelement der LOGO-Philosophie ist das Programmieren von Rekursionen. Deshalb handelt es sich bei den in diesem Buch entwickelten Beispielen vorwiegend um rekursive Pro-gramme. In diesem Zusammenhang wird zunehmend von der schrittweisen Erläuterung des Ablaufs abgewichen. Der praktische Unterrichtseinsatz hat gezeigt, daß es gerade bei Rekursi-onen mit mehrfachem Selbstaufruf andere Methoden gibt, die die Verwendung der rekursiven Wiederholung erleichtern. Der Algorithmus wird dabei über eine Beschreibung der rekursiven Struktur der Aufgabenstellung gewonnen. Im Zusammenhang mit einer Fallunterscheidung wird damit eine Methode entwickelt, die zwar eine ungewohnte Vorgehensweise bei der Pro-grammerstellung darstellt, aber auch einen unterrichtsrelevanten Weg zum Behandeln von Re-kursionen im Informatikunterricht aufzeigen könnte.

Die Bedeutung der Programmiersprache LOGO liegt einerseits in der Möglichkeit, ein breites Spektrum von Problemstellungen für den Unterricht zugänglich zu machen. Hier werden An-forderungen der Informations- und Kommunikationstechnischen Grundbildung und des Infor-matikunterrichts in der Sekundarstufe I abgedeckt. Bei der Verwendung von LOGO werden jedoch auch Methoden und Fähigkeiten erworben, die einen Umstieg auf weiterführende Pro-grammiersprachen wie PASCAL oder Prolog vorbereiten und erleichtern. LOGO hat damit seinen Stellenwert in der Vorbereitung des Informatikunterrichts der Sekundarstufe II. Dies soll hier an einigen Beispielen aufgezeigt werden:

• In LOGO ist das Prozedurenkonzept vorhanden. Bei einem Umstieg auf PASCAL ist nur noch eine Erläuterung der neuen Syntax notwendig.

• Das Listenkonzept von LOGO läßt sich ab der Version 5.5 von Turbo-Pascal ansatzweise in den noch mächtigeren Kollektionen wiederfinden.

• Das Fehlen von Variablenparametern bei LOGO zwingt zum Verwenden von Funktionen und zeigt die Möglichkeiten und den Nutzen von Funktionen auf. Schüler mit Vorkenntnis-sen in LOGO werden in PASCAL häufiger und sicherer Funktionen einsetzen.

• Die Möglichkeit, in LOGO Wahrheitswerte ausdrucken zu können, legt ein grundlegendes Verständnis für logische Funktionen und deren Einsatzmöglichkeiten.

Page 8: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

8 Einleitung

• Mit den Eigenschaftslisten lassen sich zumindest ansatzweise Grundgedanken und Metho-den des objektorientierten Vorgehens aufzeigen. In diesem Punkt erscheint jedoch noch ei-ne Weiterentwicklung und Verbesserung der vorliegenden LOGO-Version sinnvoll zu sein.

• Das Erstellen von rekursiven Programmen auf dem in diesem Buch aufgezeigten Weg über eine Fallunterscheidung und eine Beschreibung der rekursiven Grundstruktur bereitet Vor-gehens- und Denkweisen vor, die eine Verwendung der Programmiersprache Prolog er-leichtern.

Dieses Buch ist als Einheit mit den Handbüchern zu den LOGO-Systemen 'LOGO für den PC' bzw. 'WIN-LOGO' anzusehen. In diesen beiden Handbüchern werden die Bedienung und die Besonderheiten dieser LOGO-Systeme für DOS und Windows ausführlich beschrieben, wäh-rend das vorliegende Buch in die Arbeit mit LOGO einführen möchte. Wesentliche Teile die-ses Buches wurden aus dem inzwischen vergriffenen Handbuch zu 'LOGO für den PC 2.0' übernommen. Alle LOGO-Programme aus dem vorliegenden Buch befinden sich auf den Sys-temdisketten der jeweiligen LOGO-Versionen.

Näheres über die für beide LOGO-Versionen (DOS und Windows ) verfügbaren Bücher und Disketten sowie ergänzende bzw. weiterführende Medien (Bücher, Disketten, Hardware) fin-den Sie in den Anzeigenseiten am Schluß des Buches ab Seite 117.

Page 9: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 9

2 Der Direktmodus

2.1 Zeichnen Nach dem Start von LOGO erscheint die LOGO-Grafikseite. Wenn Sie auf der Grafikseite arbeiten, stellen Sie sich am besten einen Igel vor, der in der Mitte des Bildschirms sitzt. Der Igel führt alle Befehle, die Sie über die Tastatur eingeben, aus. Sie dürfen selbstverständlich nur solche Befehlsworte verwenden, die der Igel auch wirklich versteht.

Um den Igel beispielsweise 100 Schritte vorwärts gehen zu lassen, schreiben Sie

VORWÄRTS 100

und betätigen die Eingabetaste ( ↵ ). Bei seiner Vorwärtsbewegung erzeugt der Igel eine Spur. Mit den zusätzlichen Anweisungen zur Richtungsänderung (RECHTS oder LINKS) können Sie nun Grafiken erzeugen. Am besten probieren Sie es sofort aus.

An dieser Stelle soll nun ein kurzer Überblick über die wichtigsten Igelbefehle sowie einige Hinweise und Tips zum Arbeiten auf der Grafikseite gegeben werden. Anregungen für das Erzeugen von Grafiken mit dem Igel finden Sie in der im Anhang aufgelisteten Literatur.

Um ein Quadrat auf dem Bildschirm zu zeichnen, gibt man z.B. die folgenden Anweisungen ein:

VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90

Das Gegenstück zur VORWÄRTS-Anweisung ist die RÜCKWÄRTS-Anweisung. Sie läßt den Igel um die entsprechende Anzahl von Schritten rückwärts laufen.

Die RECHTS-Anweisung dient dazu, die Laufrichtung des Igels zu verändern. Nach der Ein-gabe von RECHTS 90 dreht sich der Igel um 90 Grad nach rechts. Man kann dies an der Nei-gung des Igeldreiecks auf dem Bildschirm erkennen. Die nächste VORWÄRTS-Anweisung wird er in die neue Richtung ausführen. Das Gegenstück zur RECHTS-Anweisung ist die LINKS-Anweisung, die den Igel um den entsprechenden Winkel nach links dreht.

Anfänger verwenden manchmal die Anweisung RECHTS 90, um den Igel 90 Schritte nach rechts zu bewegen. Die richtige Angabe zur RECHTS-Anweisung ist jedoch der Winkel, mit dem der Igel sich nach rechts drehen soll. Eine Linie in eine neue Richtung erhält man also immer über zwei Anweisungen an den Igel:

• Der Igel wird mit der RECHTS- bzw. LINKS-Anweisung in die neue Richtung gedreht.

• Mit der VORWÄRTS- bzw. RÜCKWÄRTS-Anweisung zeichnet er dann eine Linie der gewünschten Länge in diese Richtung.

Manchmal möchte man den Igel vor dem Zeichnen zuerst an eine bestimmte Position des Bild-schirms bringen. Dazu ist es notwendig, daß sich der Igel ohne zu zeichnen bewegt. Die An-

Page 10: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

10 Der Direktmodus

weisung STIFTHOCH sorgt dafür, daß der Zeichenstift des Igels angehoben wird. Bei den nachfolgenden VORWÄRTS-Anweisungen wird der Igel keine Linie zeichnen. Wenn der Igel wieder eine Spur hinterlassen soll, befiehlt man STIFTAB. Der Zeichenstift sitzt nun wieder auf der Zeichenfläche auf.

Für eine neue Grafik benötigen Sie einen sauberen Bildschirm. Die Anweisung BILD löscht die vorhandene Grafik und bewegt den Igel wieder in seine Ausgangsposition. Er sitzt danach in der Mitte des Bildschirms, blickt senkrecht nach oben und hat den Stift auf das Papier ge-setzt.

Ein Quadrat der Seitenlänge 100 am unteren Bildschirmrand erhält man z.B. mit:

STIFTHOCH RÜCKWÄRTS 100 STIFTAB VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90

Es entsteht die folgende Figur:

Übrigens:

Als LOGO in den USA entwickelt wurde, hat man eine mechanische Schildkröte gebaut, die mit einem Sender gesteuert werden konnte. Die Schildkröte (Turtle) ist der amerikanische Vorfahre des deutschen LOGO-Igels. Auf der Unterseite dieser Schildkröte war ein Zeichen-stift montiert, so daß sie bei der Bewegung ihre Spur auf ein Blatt Papier zeichnen konnte.

Bei Ihren Experimenten mit dem Igel werden Ihnen nicht selten Tippfehler unterlaufen. Wir wollen nun im Einzelnen durchgehen, wie Sie sich im Falle eines Tippfehlers verhalten kön-

Page 11: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 11

nen. Nehmen wir dazu an, daß Sie statt der Anweisung STIFTAB das Wort STIFTUB einge-geben haben.

Wenn Sie den Tippfehler vor dem Betätigen der Enter-Taste bemerken:

In diesem Fall bewegen Sie den Blinker mit der Linkspfeil-Taste ( ← ) auf den falschen Buch-staben U und betätigt die DEL-Taste (ENTF-Taste). Das U wird gelöscht. Auf dem Bildschirm steht nun: STIFTB. Nun drückt man auf das 'A'. Der Buchstabe A wird vor dem B eingefügt.

Das Gleiche hätte man mit der Rückschritt-Taste erreichen können ( <-- ). Dazu bewegt man den Blinker mit der Linkspfeil-Taste ( ← )auf den Buchstaben rechts vom U, also auf das B und betätigt die Rückschritt-Taste. Das U verschwindet und man kann den richtigen Buchsta-ben einfügen.

Zum Bewegen des Blinkers in der Eingabezeile kann man natürlich auch die Rechtspfeil-Taste ( -> ) verwenden.

Wenn Sie die Enter-Taste betätigen ohne den Tippfehler zu bemerken erscheint eine LOGO-Fehlermeldung.

Es gibt einige typische Fehler, die bei den ersten Versuchen mit LOGO immer wieder auftre-ten. An einigen dieser Fehler sollen nun Besonderheiten von LOGO verdeutlicht werden:

Fehler 1: Das Leerzeichen zwischen Befehlswort und Eingabe wird weggelassen

Beispiel : VORWÄRTS100

Nach Eingabe der Enter-Taste erkennt man an der Fehlermeldung, wie LOGO diese Anwei-sung interpretiert. Für LOGO ist die Anweisung VORWÄRTS100 ein einziger Befehl, den es natürlich nicht kennt.

Genau wie im natürlichen Sprachgebrauch verwendet LOGO das Leerzeichen als Trennzei-chen zwischen einzelnen Wörtern oder Zahlen. Die Verwendung des Leerzeichens als Trenn-zeichen muß strikt eingehalten werden.

Wenn LOGO mit Enter ein Befehl übergeben wird, so erwartet LOGO, daß die Anweisungen in einer ganz bestimmten Form aufgeschrieben sind. Das erste (und manchmal das einzigste) Wort der Anweisung ist immer das Befehlswort.

An dem Befehlswort erkennt LOGO, was es tun soll. Bei dem Befehlswort VORWÄRTS weiß LOGO, daß der Igel vorwärts gehen soll. Das Befehlswort STIFTHOCH legt fest, daß der Igel den Stift hochziehen soll.

Für die wichtigsten Befehlsworte sind Abkürzungen aus 2 Buchstaben erlaubt:

SH für STIFTHOCH, SA für STIFTAB, VW für VORWÄRTS, RW für RÜCKWÄRTS, RE für RECHTS, LI für LINKS

Diese Abkürzungen können statt der Befehlsworte verwendet werden, um Tipparbeit zu spa-ren.

Bei manchen Anweisungen benötigt LOGO noch weitere Informationen, um die Anweisung ausführen zu können. Mit diesen zusätzlichen Eingaben teilt man LOGO mit, wie bzw. womit es die Anweisung ausführen soll. Es gibt LOGO-Befehle, die keine zusätzliche Eingabe benö-

Page 12: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

12 Der Direktmodus

tigen (z.B.: STIFTAB). Für andere Anweisungen sind mehr als 1 Eingabe notwendig (z.B.: AUFXY).

Wenn der Igel sich vorwärts bewegen soll, muß man ihm sagen, wie weit er gehen soll. Als weiterer Bestandteil der VORWÄRTS-Anweisung gibt man die Schrittzahl an. Man schreibt also beispielsweise: VORWÄRTS 100

Fehler 2: Nach RECHTS oder LINKS wird der falsche Winkel eingegeben

Häufig erhält man bei dem Versuch, ein gleichseitiges Drei-eck zu erzeugen, ein unerwartetes Ergebnis:

Unter der Annahme, daß die Summe der Winkel im Dreieck 180 Grad ergeben muß, wurden die folgenden Anweisungen eingetippt:

VORWÄRTS 100 RECHTS 60 VORWÄRTS 100 RECHTS 60 VORWÄRTS 100 RECHTS 60

Welcher Denkfehler ist dem Benutzer von LOGO hier unterlaufen?

Wenn man dem Igel RECHTS 60 befiehlt, so führt der Igel daraufhin eine Richtungsänderung aus. Ausgehend von der ursprünglichen Blickrichtung dreht sich der Igel um 60 Grad nach rechts. Dies ist selbstverständlich nicht der Innenwinkel des gesuchten gleichseitigen Dreiecks.

.

Um solche Denkfehler zu vermeiden gibt Seymore Papert, der Erfinder von LOGO, einen ganz wichtigen Ratschlag: „Spiele selbst Schildkröte“. Dieses Hineinversetzen in die Position des Igels ist eine wichtige Methode, um zu entscheiden, was der Igel als nächstes tun soll. Versu-chen Sie sich vorzustellen, Sie säßen an der Position des Igels und blickten in die Richtung, in die das Dreieck zeigt. Sie werden bemerken, daß es dann ganz einfach ist, die Drehung des Igels anzugeben. „Selbst Igel zu spielen“ kann auf mehrere Arten geschehen:

Page 13: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 13

• Verlassen Sie Ihren Arbeitsplatz und führen Sie durch Drehen und Herumlaufen die Igelbe-fehle praktisch aus.

oder

• Nehmen Sie ein Blatt Papier und einen Stift und führen Sie die Igelbefehle zuerst dort aus.

Die beschriebene Verwendung des Igelmodells ist der eigentliche Grund dafür, daß der Um-gang mit LOGO so leicht ist und sehr viel Spaß macht. Damit der Computer nach Ihren Wün-schen reagiert, müssen Sie keine technischen Kenntnisse über den Aufbau und die Arbeitswei-se von LOGO oder dem Computer besitzen. Es reicht aus, sich einen Igel vorzustellen, der die eingegebenen Anweisungen ausführt. Diese Metapher vom Igel wird ergänzt durch einen ab-geschlossenen Vorrat an Anweisungen, die der Igel versteht. Eine solche Mikrowelt, wie Pa-pert dies nennt, liefert dem Benutzer ein durchgängiges Modell für das Verhalten des Compu-ters. Welche vielfältigen und komplexen Problemstellungen man mit Hilfe des Igels lösen kann, werden Sie in den folgenden Kapiteln noch erfahren.

Fehler 3: Der Igel zeichnet eine unbeabsichtigte Linie

In diesem Fall gibt es einen aufwendigen Weg, um den Fehler zu beseitigen. Dieser besteht darin, den Bildschirm mit BILD zu säubern und alle korrekten Anweisungen erneut einzutip-pen.

Etwas einfacher geht es mit dem Befehl ZURÜCKNEHMEN. Diese Anweisung stellt den Zu-stand der Grafikseite vor der Ausführung der letzten Veränderung wieder her. Wenn Sie ZU-RÜCKNEHMEN mehrmals hintereinander eingeben, so können Sie Ihre Grafik bei ‘LOGO für den PC’ schrittweise 'abbauen'. Bei WIN-LOGO wird nur der letzte Zustand wiederherge-stellt.

Es gibt jedoch noch einen dritten Weg, wie man dieses Problem bewältigen kann. Dieser Weg hat den Vorteil, daß er Sie in Bezug auf das Kennenlernen von LOGO und den Umgang mit dem Computer ein großes Stück voranbringt. LOGO erlaubt es Ihnen nämlich, Befehle an den Igel zu einem neuen Befehl zusammenzufassen und zu speichern. Bei unerwünschten Effekten brauchen Sie dann nur den entsprechenden Befehl in der Befehlsliste zu ändern. Dieses Vor-gehen wird im Kapitel 'Programmieren' ausführlich erläutert.

Bei der Arbeit im Direktmodus von LOGO können die folgenden beiden Eingabeerleichterun-gen nützlich sein:

Tip 1: Mehrere Anweisungen in einer Zeile aufschreiben

Dabei dient das Leerzeichen wieder als Trennzeichen zwischen den Anweisungen. Die Einga-be der folgenden Befehlszeile ist möglich:

VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90

Nachdem die Enter-Taste betätigt wurde, führt LOGO diese Anweisungen von links nach rechts direkt hintereinander aus.

Auf diese Art und Weise kann man Anweisungszeilen erzeugen, die länger als die Breite des Bildschirms sind. Gelangt man mit dem Blinker an den rechten Bildschirmrand, so bewegt sich (scrollt) die Zeile nach links und man hat Platz für weitere Buchstaben. Eine Zeile darf jedoch höchstens 240 Buchstaben umfassen.

Tip 2: Wiederverwenden früherer Anweisungen

Page 14: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

14 Der Direktmodus

Es kommt häufig vor, daß man eine einmal eingetippte Anweisung erneut benötigt. Dies ist beispielsweise bei der folgenden Anweisungsfolge der Fall, bei der jede Zeile mit Enter abge-schlossen wird.

Beispiel:

VORWÄRTS 100 RECHTS 90 VORWÄRTS 100 RECHTS 90

Das erneute Eintippen von VORWÄRTS 100 und RECHTS 90 kann man sich ersparen.

‘LOGO für den PC’ z.B. legt jede Anweisungszeile in einem Eingabespeicher ab, der maximal 20 Zeilen aufnehmen kann. Ist dieser Speicher voll, so wird jeweils die 1. Anweisungszeile entfernt und die neueste hinten eingefügt, so daß immer die letzten 20 Eingabezeilen vorhan-den sind. Bei WIN-LOGO können Sie den Blinker auf der Textseite beliebig nach oben oder unten bewegen.

Um eine alte Anweisungszeile unter ‘LOGO für den PC’ wieder in das Eingabefenster zu ho-len, verwendet man die Hochpfeil-Taste. Das mehrmalige Betätigen der Hochpfeil-Taste zeigt die jeweils vorhergehende Zeile aus dem Eingabespeicher an. Befindet sich die gewünschte Anweisung im Eingabefenster, so bringt man sie mit der Enter-Taste zur Ausführung. Mit der Abpfeil-Taste blättert man in dem Eingabespeicher nach vorne.

Die Ausführung der obigen Befehlsfolge hätte man mit Hilfe des Eingabespeichers folgender-maßen erreichen können:

Beispiel:

VORWÄRTS 100 RECHTS 90 Hochpfeil-Taste Hochpfeil-Taste Enter-Taste Hochpfeil-Taste Hochpfeil-Taste Enter-Taste

Bei WIN-LOGO bewegen Sie den Blinker mit den Pfeiltasten an die Stelle, an der Sie den Befehl eingegeben hatten und betätigen die Eingabe-Taste.

Zum Abschluß dieses Kapitels soll noch auf zwei Besonderheiten der LOGO-Grafikseite hin-gewiesen werden:

Besonderheit 1: Die Höhe der Grafikseite unterscheidet sich von der senkrechten Auflö-sung des Bildschirms

Bei der Erforschung der Höhe der Grafikseite mit der VORWÄRTS-Anweisung werden Sie möglicherweise feststellen, daß es Abweichungen zu den Angaben des Herstellers Ihrer Gra-fikkarte bzw. Monitors gibt. Wenn Ihre Grafikkarte eine senkrechte Auflösung von 480 Pixel hat, so heißt das nicht unbedingt, daß die Höhe der Grafikseite 480 Igelschritte beträgt.

Page 15: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 15

Der Grund dafür liegt darin, daß LOGO die senkrechte Verzerrung automatisch so festsetzt, daß waagerechte und senkrechte Strecken mit gleicher Länge auf dem Bildschirm erscheinen. Die Höhe der Grafikseite kann sich deshalb von der Auflösung der Grafikkarte unterscheiden. Außerdem müssen Sie selbstverständlich die Höhe des Eingabefensters und der Leiste am obe-ren Rand subtrahieren.

Die von LOGO gesetzte Höhe und Breite der gesamten Grafikseite einschließlich Ränder und Eingabefenster erhält man durch das Einschalten der Textseite mit der F2-Taste und der Ein-gabe von:

DRUCKEZEILE MAXX DRUCKEZEILE MAXY

Die Tatsache, daß LOGO die senkrechte Verzerrung automatisch richtig setzt, hat auch zur Konsequenz, daß die Anweisung

VORWÄRTS 1

nicht unbedingt die Markierung eines einzelnen Pixels des Bildschirms nach sich ziehen muß.

Mit der SKALA-Anweisung kann die eingestellte senkrechte Verzerrung vom Benutzer verän-dert werden.

Besonderheit 2: Der Igel führt keinen Randsprung aus.

Man spricht von einem Randsprung, wenn der Igel beim Überschreiten des oberen Bildschirm-rands am unteren Rand des Bildschirms seine Zeichnung fortsetzt. Bei 'LOGO für den PC' und ‘WIN-LOGO’ ist dies nicht vorgesehen. Der Igel zeichnet vielmehr außerhalb des Bildschirms unsichtbar weiter.

Nach der Eingabe von RECHTS 20 und VORWÄRTS 1000 würde der Igel bei anderen LO-GO-Systemen möglicherweise den Bildschirm mit einer Schraffur versehen, weil beim Verlas-sen des oberen Bildschirmrands seine Vorwärtsbewegung am unteren Rand der Grafikseite fortgesetzt wird. Bei 'LOGO für den PC' und ‘WIN-LOGO’ erscheint auf dem Bildschirm le-diglich eine Linie zum oberen Bildschirmrand.

Mit RÜCKWÄRTS 1000 bringt man den Igel dann wieder zurück in seine ursprüngliche Posi-tion.

Mit dem Randsprung lassen sich zwar relativ leicht interessante Effekte erzeugen. Der Rand-sprung ist jedoch eigentlich keine natürliche Igelbewegung. Deshalb wurde er in dieser LOGO-Version nicht implementiert.

2.2 Rechnen und Schreiben Wenn Sie mit LOGO Zahlen und Text darstellen wollen, so verwenden Sie hierfür die LOGO-Textseite. Das Wechseln von der Grafik- zur Textseite und umgekehrt geschieht mit der F2-Taste.

An einem einfachen Beispiel soll nun gezeigt werden, welche Möglichkeiten es gibt, Zahlen und Text auf der Textseite darzustellen.

Um beispielsweise das Ergebnis der Aufgabe 6 + 2 angezeigt zu bekommen, schreibt man

DRUCKEZEILE 6 + 2

und betätigt die Enter-Taste. Auf dem Bildschirm erscheint das Ergebnis

8

Page 16: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

16 Der Direktmodus

Die DRUCKEZEILE-Anweisung sorgt also für einen Ausdruck auf der Textseite. Bei der Aus-führung dieser Anweisung geht LOGO folgendermaßen vor:

LOGO wertet das erste Wort der Zeile aus. Dieses sagt ihm, daß es etwas in einer Zeile aus-drucken soll. Um zu erfahren, was ausgedruckt werden soll, liest LOGO das nächste Wort. LOGO findet eine Zahl. In diesem Fall überprüft es auch noch das folgende Wort, ob dort ein Rechenzeichen steht. Wenn es, wie im vorliegenden Beispiel, ein Rechenzeichen findet, so führt LOGO zuerst die Rechnung aus und zeigt dann das Ergebnis an.

Rechenausdrücke können in LOGO so eingegeben werden, wie es in der Mathematik üblich ist. Auch verschachtelte Klammern sind erlaubt. Folgende Rechenzeichen dürfen verwendet werden:

+ : Addition - : Subtraktion * : Multiplikation / : Division ^ : Potenzieren

Sie dürfen lediglich Zahlen verwenden bzw. Ergebnisse erhalten, die kleiner als +1038 und größer als -1038 sind.

Bei der Anzeige von Zahlen auf dem Bildschirm geht LOGO nach folgenden Regeln vor:

• Alle ganzen Zahlen zwischen -2147483648 und 2147483647 werden unverändert ausge-druckt. Größere bzw. kleinere Zahlen erscheinen in der Exponentialdarstellung. Die Expo-nentialform einer Zahl erkennen Sie an dem Buchstaben E in der Zahldarstellung. Die Zahl 2,345E+23 ist eine andere Schreibweise für 2,345 ⋅ 1023.

• LOGO akzeptiert sowohl den Dezimalpunkt als auch das Dezimalkomma, druckt jedoch immer ein Komma.

Gebrochene Zahlen werden mit höchstens 11 Stellen angezeigt. Überflüssige Nullen im Nach-kommabereich entfernt LOGO automatisch. Gebrochene Zahlen, die kleiner als 10-10 sind, werden in der Exponentialform dargestellt.

Für die gemeinsame Anzeige von Text und Zahlen auf der Textseite stehen mehrere Möglich-keiten zur Verfügung. Dazu wollen wir dem Ergebnis der Rechnung den Satz 'Das Ergebnis lautet: ' voranstellen. Für das obige Beispiel entsteht dann der Ausdruck:

Das Ergebnis lautet: 8

Möglichkeit 1: Verwendung von mehreren DRUCKE-Anweisungen:

Den gewünschten Ausdruck kann man unter LOGO für den PC durch die Eingabe der Anwei-sungszeile

DRUCKE Das DRUCKE Ergebnis DRUCKE lautet: DRUCKEZEILE 6 + 2

erhalten.

Bei WIN-LOGO muß Text immer in Anführungsstrichen stehen. Man schreibt also:

DRUCKE "Das " DRUCKE "Ergebnis" DRUCKE " lautet: " DRUCKEZEILE 6 + 2

Dabei wird ausgenutzt, daß man mehrere Anweisungen in eine Zeile schreiben kann. Die ers-ten 3 Anweisungen lauten DRUCKE, die letzte DRUCKEZEILE. Nach der DRUCKE-Anweisung wird der Blinker im Unterschied zur DRUCKEZEILE-Anweisung nicht in die

Page 17: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 17

nächste Zeile gesetzt. Damit erreicht man, daß mehrere Wörter nebeneinander gedruckt wer-den.

Es mußte hier dreimal die DRUCKE-Anweisung verwendet werden, denn DRUCKE (Abkür-zung DR) bzw. DRUCKEZEILE (Abkürzung DZ) schreibt immer nur das direkt folgende E-lement oder das Ergebnis des direkt folgenden Rechenausdrucks auf den Bildschirm.

Die Eingabe von

DRUCKE Das Ergebnis lautet:

führt unter ‘LOGO für den PC’ zu einer Fehlermeldung, weil LOGO das Wort 'Das' ausdruckt und dann einen neuen LOGO-Befehl erwartet. Bei dem Wort 'Ergebnis' handelt es sich jedoch um keine LOGO-Anweisung. Dies ruft eine Fehlermeldung hervor. Das gleiche Resultat er-reicht man bei WIN-LOGO mit der Eingabe

DRUCKE "Das" " Ergebnis" " lautet:"

Es müßte also eine Möglichkeit geben, die Wörter 'Das' 'Ergebnis' und 'lautet' zu einem einzi-gen Element zusammenzufassen.

Möglichkeit 2: Zusammenfassen von mehreren Wörtern zu einer Liste:

Die Anweisungszeile

DRUCKE [ Das Ergebnis lautet: ] DZ 6 + 2

liefert ebenfalls den gewünschten Ausdruck.

Die eckigen Klammern sind das Symbol für den LOGO-Datentyp Liste. LOGO erlaubt es be-liebige Wörter zu einer Liste zusammenzufassen. Wichtig ist, daß die Elemente einer Liste immer in der richtigen Reihenfolge und durch Leerzeichen getrennt ausgedruckt werden. Sprachlich formuliert lautet die obige Anweisung an LOGO:

Drucke die Liste mit den Elementen 'Das' 'Ergebnis' 'lautet:' und drucke das Ergebnis von 6 + 2.

Auch unter WIN-LOGO sind für die einzelnen Wörter innerhalb der eckigen Klammer keine Anführungsstriche mehr notwendig.

Mit Hilfe der eckigen Klammern sorgt man dafür, daß die DRUCKE-Anweisung wiederum nur ein einziges Element ausdrucken muß, nämlich eine Liste. Daß diese Liste aus mehreren Elementen besteht, spielt dabei keine Rolle. Für LOGO ist die Liste [ Das Ergebnis lautet: ] ein einziges Element.

Nun könnte man natürlich auch auf die Idee kommen, den Rechenausdruck 2+6 mit in die Lis-te hineinzunehmen. Die Zeile

DZ [ Das Ergebnis lautet: 2 + 6 ]

liefert jedoch nicht das gewünschte Ergebnis. Auf dem Bildschirm erscheint:

Das Ergebnis lautet: 2 + 6

Rechenausdrücke in Listen werden von LOGO also offensichtlich nicht ausgewertet, sondern ohne Veränderung angezeigt.

Möglichkeit 3: Zusammenfassen von Wörtern durch Anführungsstriche

Man hätte den gewünschten Ausdruck auch mit der folgenden Anweisungszeile erreichen kön-nen:

Page 18: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

18 Der Direktmodus

DR "Das Ergebnis lautet: " DZ 6 + 2

Die Verwendung von Anführungsstrichen ist immer dann sinnvoll, wenn man mehr als ein Leerzeichen zwischen den Wörtern benötigt. In diesem Fall kann man keine Liste verwenden, denn LOGO löscht in Listen alle überzähligen Leerzeichen zwischen den Wörtern.

Wenn ein Text unverändert ausgedruckt werden soll, so schließt man den gewünschten Text mit Anführungsstrichen ein. Die Verwendung von Anführungsstrichen ist auch dann notwen-dig, wenn man Wörter mit mehr als 22 Zeichen verarbeiten will. Wörter ohne Anführungsstri-che dürfen bei ‘LOGO für den PC’ höchstens eine Länge von 22 Zeichen besitzen. Unter WIN-LOGO sind keine Wörter ohne Anführungsstriche erlaubt, außer es handelt sich um Pro-zedurnamen. Um beispielsweise eine Zeile mit 44 Sternchen auszudrucken, kann man die fol-gende Anweisungszeile eingeben:

DZ "********************************************"

Läßt man hier die Anführungsstriche weg, so druckt LOGO lediglich 22 Sternchen. Im folgen-den wird immer dann vom Datentyp Text gesprochen, wenn eine Zeichenfolge von Anfüh-rungsstrichen eingeschlossen ist.

Möglichkeit 4: Verwendung der runden Klammer zur Verarbeitung von Anweisungen mit mehr als einer Eingabe

Mit runden Klammern sieht die Anweisungszeile LOGO folgendermaßen aus:

( DZ "Das Ergebnis lautet: " 6 + 2 )

Die runden Klammern haben bei LOGO eine besondere Bedeutung. Durch sie werden die nachfolgenden Daten mit der Anweisung verbunden. Auf diese Art und Weise erreicht man, daß bestimmte LOGO-Befehle beliebig viele Daten verarbeiten können.

In unserem Beispiel druckt LOGO alle Elemente bis zu der schließenden runden Klammer aus. Beachten Sie, daß dabei gegebenenfalls auch eine Auswertung von Rechenausdrücken stattfin-det. Bei dem Beispiel wird wieder zuerst das Ergebnis von 6 + 2 berechnet und das Ergebnis ausgedruckt.

LOGO achtet sehr genau darauf, daß Sie Klammern und Anführungsstriche korrekt verwen-den. Sollten Sie einmal versehentlich eine Klammer oder einen Anführungsstrich vergessen, so werden Sie durch eine Fehlermeldung darauf hingewiesen.

Zum Abschluß dieses Kapitels werden wir einen besonderen Typ von LOGO-Anweisungen kennenlernen: die sogenannten Funktionen.

Um mit LOGO beispielsweise die Quadratwurzel der Zahl 9 zu berechnen, verwendet man die Anweisung QW.

Die Eingabe von

DZ QW 9

liefert das Ergebnis:

3

Die QW-Anweisung unterscheidet sich offensichtlich von den meisten der bisher verwendeten Befehlen dadurch, daß sie hinter der DRUCKEZEILE-Anweisung verwendet werden darf.

LOGO kennt zwei unterschiedliche Arten von Anweisungen:

Page 19: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 19

1. Anweisungsart: Bei diesen Anweisungen führt LOGO lediglich etwas aus. Die VW-Anweisung beispielsweise bewegt den Igel mit der entsprechenden Schrittzahl vorwärts. Bei der DZ-Anweisung werden Daten auf den Bildschirm geschrieben. Ob eine Anweisung dieser Art vorliegt, erkennen Sie an den Hilfe-Texten oder den Befehlslisten in diesem Handbuch. Ist dort 'Ohne Rückgabe' vermerkt, so handelt es sich um eine Anweisung diesen Typs.

2. Anweisungsart: Das Besondere dieser Anweisungen liegt darin, daß sie einen Wert zurück-gegeben. Anweisungen, die etwas zurückgeben, werden als Funktionen bezeichnet. Funkti-onen können nur hinter den Anweisungen des 1. Typs verwendet werden. Die QW-Anweisung ist eine Funktion, denn sie berechnet die Quadratwurzel der nachfolgenden Zahl und gibt das Ergebnis zurück. Bei der Verwendung von Funktionen hat der Benutzer dar-auf zu achten, daß der zurückgegebene Wert weiterverarbeitet wird. Ob eine Funktion vor-liegt, erkennen Sie an den Hilfe-Texten und den Befehlslisten dieses Handbuchs daran, daß dort der Vermerk 'Mit Rückgabe' notiert ist.

Die Anweisung

QW 9

allein gibt keinen Sinn, denn LOGO weiß nicht, was mit der berechneten Quadratwurzel aus 9 geschehen soll und gibt eine entsprechende Fehlermeldung aus.

Mit der Eingabe von

DZ QW 9

erfährt LOGO, daß das Ergebnis auf den Bildschirm geschrieben werden soll.

Einige weitere Beispiele für LOGO-Funktionen sind:

RUNDE: Gibt den nächsten ganzzahligen Teil der Zahl zurück.

IGELZUSTAND: Gibt eine Liste mit den augenblicklichen Einstellungen des Igels zurück.

*: Gibt das Ergebnis der Multiplikation aus der vorangestellten und nachfolgenden Zahl zurück.

REST: Gibt den Rest aus der Division der beiden Zahlen zurück.

Es gibt eine ganze Reihe von LOGO-Funktionen, die als Eingabe nur Zahlen zwischen -32768 und 32767 erhalten dürfen (z.B. REST oder DIV). Eine Fehlermeldung weist gegebenenfalls auf diesen Sachverhalt hin.

Die Rückgabe von Funktionen kann nicht nur auf dem Bildschirm ausgedruckt werden. Es ist auch möglich, den zurückgegebenen Wert in einen Rechenausdruck einzubinden.

Die Eingabe von

DZ 3 * QW 4

druckt die Zahl 6.

Welches Ergebnis liefert jedoch die Anweisung

DZ QW 4 * 4 ?

Ist es die Zahl 8 als Ergebnis von 4 4• oder die Zahl 4 als Ergebnis von 4 4• ?

Page 20: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

20 Der Direktmodus

Machen wir uns dazu klar, wie LOGO diese Anweisung abarbeitet:

1. LOGO wertet das erste Wort aus und erkennt, daß es etwas ausdrucken soll.

2. Es liest das nächste Wort, um die Daten, die es ausdrucken soll, zu erhalten. An dem Wort QW erkennt es, daß es die Quadratwurzel berechnen soll.

3. LOGO liest daraufhin das nächste Wort, um zu erfahren, aus welcher Zahl es die Wurzel berechnen soll.

4. Weil es sich um eine Zahl handelt, überprüft LOGO auch noch das nachfolgende Wort dar-aufhin, ob es sich um ein Rechenzeichen handelt. Da ein Rechenzeichen vorliegt, ermittelt LOGO zuerst den Wert des Rechenausdrucks, berechnet dann die Quadratwurzel daraus und druckt das Ergebnis aus.

Auf dem Bildschirm erscheint somit das Ergebnis 4. Wir erkennen an diesem Beispiel, daß LOGO einen Rechenausdruck immer von rechts nach links abarbeitet. Zuerst wird 4 • 4 be-rechnet, aus dem Ergebnis wird die Quadratwurzel ermittelt, die dann auf dem Bildschirm ausgedruckt wird.

Dies ist ein anderes Vorgehen, als Sie es von dem Taschenrechner gewohnt sind. Dort werden ja Funktionen grundsätzlich zuerst abgearbeitet. LOGO hingegen geht immer davon aus, daß das Befehlswort an erster Stelle steht (Präfix-Form). Bei der Ermittlung der Parameter für den Befehl arbeitet sich LOGO von links nach rechts vor. Die eigentliche Auswertung geschieht dann von rechts nach links.

Um das Ergebnis 8 zu erhalten, müssen wir LOGO mitteilen, daß es von dieser vorgegebenen Reihenfolge der Abarbeitung abweichen soll. Dazu verwendet man, wie in der Mathematik üblich, die runde Klammer.

Mit

DZ ( QW 4 ) * 4

teilen wir LOGO mit, daß es zuerst die Wurzel aus der Zahl 4 berechnen und dann erst das Ergebnis mit 4 multiplizieren soll.

Auf dem Bildschirm erscheint das Ergebnis 8.

2.3 Lernen Im vorangegangenen Kapitel hat der Igel nach der Eingabe der folgenden Anweisungsfolge ein Quadrat gezeichnet:

VW 100 RE 90 VW 100 RE 90 VW 100 RE 90 VW 100 RE 90

Wenn Sie eine Grafik aus mehreren Quadraten erstellen möchten, ist dieses Verfahren sehr aufwendig. Es liegt also nahe, einzelne Befehle zu einem neuen Befehl zusammenzufassen. Diesen neuen Befehl kann man sinnvollerweise QUADRAT nennen.

Im Igelmodell bedeutet das Erzeugen eines neuen Befehls, daß man dem Igel ein neues Be-fehlswort beibringt. Dazu schreibt man:

LERNE QUADRAT

Page 21: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Der Direktmodus 21

und gelangt auf die LOGO-Lernseite.

Auf der Lernseite werden nun alle Anweisungen eingetippt, die der Igel zum Zeichnen eines Quadrates ausführen soll. Das Besondere der Lernseite liegt darin, daß der Igel die Befehle nicht sofort ausführt, sondern sie zuerst lernt.

Nach der vollständigen Eingabe hat die Lernseite das folgende Aussehen:

PR QUADRAT VW 100 RE 90 VW 100 RE 90 VW 100 RE 90 VW 100 RE 90 ENDE

Über ‘Lernen’ verläßt man die Lernseite. An der Veränderung der Titelanzeige erkennt man, daß LOGO nun das neue Befehlswort QUADRAT gelernt hat.

Damit der Igel das Gelernte ausführt, schreibt man einfach das Wort

QUADRAT

und es wird das gewünschte Quadrat auf den Bildschirm gezeichnet.

An diesem Beispiel wird deutlich, daß Programme genauso verwendet werden wie die einge-bauten LOGO-Grundwörter. Damit unterstützt LOGO das Prinzip der Befehlserweiterung. Das Ziel des Programmierens besteht demnach darin, durch Hinzufügen neuer Befehle die vorhan-denen Fähigkeiten des Computers zu erweitern und zu verbessern.

Wie arbeitet LOGO den neuen Befehl QUADRAT ab?

1. LOGO überprüft, ob das eingetippte Befehlswort ein LOGO-Grundwort ist. Bei der Anwei-sung QUADRAT ist das nicht der Fall.

2. Daraufhin überprüft LOGO, ob ein Programm mit dem Namen QUADRAT vorhanden ist. Dazu wertet es die Kopfzeile des Programmtextes aus. Zur Erinnerung: Das ist die Zeile, die mit dem Wort PR beginnt.

3. Wurde ein entsprechendes Programm gefunden, so beginnt LOGO mit der Ausführung des Programms ab der zweiten Zeile. LOGO nimmt das 1. Wort dieser Zeile und führt die dort notierte Anweisung aus (VW 100). Enthält die Zeile weitere Anweisungen, so werden auch diese abgearbeitet. Das Gleiche geschieht für alle folgenden Programmzeilen.

4. Trifft LOGO auf die Zeile, die mit dem Wort ENDE beginnt, so weiß es, daß keine weite-ren Anweisungen mehr auszuführen sind. LOGO beendet das Programm und kehrt auf die Grafik- bzw. Textseite zurück. Der Blinker erscheint als Zeichen dafür, daß LOGO auf die Eingabe neuer Anweisungen wartet.

Wenn bei dem Programmablauf ein Fehler auftritt oder ein Programm verbessert werden soll, so muß der Text des Programms QUADRAT wieder auf die Lernseite geholt werden. Wäh-rend man mit der LERNE-Anweisung eine leere Lernseite zum Schreiben von neuen Pro-grammen erzeugt, kann man mit der EDIT-Anweisung bereits vorhandene LOGO-Programme verbessern. Zum Verlassen der Lernseite wählt man wieder ABBRECHEN oder LERNEN.

Selbstverständlich möchte man nach jeder LOGO-Arbeitssitzung die erstellten Programme auf Diskette speichern, um nicht beim nächsten Mal von vorne beginnen zu müssen.

Page 22: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

22 Der Direktmodus

Zum Abspeichern aller Programme aus dem Arbeitsspeicher verwendet man die Anweisung BEWAHRE. Auf Diskette oder Festplatte bewahrte Programme holt man mit der LADE-Anweisung wieder in den Arbeitsspeicher. Die VERGISS-Anweisung dient zum Entfernen nicht mehr benötigter Programme aus dem Arbeitsspeicher.

Beim Bewahren von Programmen sollten Sie jedoch beachten, daß LOGO immer alle Pro-gramme aus dem Arbeitsspeicher auf Diskette bzw. Festplatte abspeichert. Haben Sie die Pro-gramme QUADRAT und RECHTECK geschrieben, so führt die Anweisung BEWAHRE „Quadrat" nicht dazu, daß nur das Programm QUADRAT auf Diskette geschrieben wird. Viel-mehr werden die Programme QUADRAT und RECHTECK unter dem gemeinsamen Namen QUADRAT auf der Diskette abgelegt.

Bei der nächsten Arbeitssitzung können die gespeicherten Programme mit LADE "Quadrat" wieder eingelesen werden.

Wichtig dabei ist, daß LOGO vorhandene Dateien auf der Diskette überschreibt, wenn Sie den gleichen Dateinamen verwenden. Ein Warnung weist Sie jedoch auf diese Gefahr hin. LOGO legt beim Bewahren zwei Dateien an. In der einen Datei (Typ LOG) befindet sich der Pro-grammtext, in der anderen (Typ VRS) werden die globalen Variablen gespeichert.

Weiterhin ist zu beachten, daß vorhandene LOGO-Programme im Arbeitsspeicher ohne War-nung überschrieben werden, falls Sie Prozeduren mit gleichem Namen von der Diskette 'nachladen'.

Page 23: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 23

3 Programmieren

3.1 Wiederholungen Im vorangegangenen Kapitel haben wir das folgende Programm zum Zeichnen eines Quadrats entwickelt:

PR QUADRAT VW 100 RE 90 VW 100 RE 90 VW 100 RE 90 VW 100 RE 90 ENDE

Diese Version des Programms QUADRAT kann noch vereinfacht werden. Für das Quadrat mußten wir dabei viermal die Anweisungen VW 100 RE 90 eintippen. Wenn wir so ein 20-Eck oder eine 100-Eck erzeugen wollten, wäre die Eingabe der entsprechenden Anweisungen eine sehr mühselige Arbeit. Wir werden nun eine Anweisung kennenlernen, die den Igel dazu veranlaßt, bestimmte Befehlsfolgen wiederholt auszuführen.

Um den Igel bestimmte Anweisungen wiederholen zu lassen, stellt LOGO die WIEDERHO-LE-Anweisung zur Verfügung.

Für die WIEDERHOLE-Anweisung benötigt LOGO zwei zusätzliche Informationen. LOGO muß wissen, was wiederholt werden soll und wie oft es wiederholt werden soll. Mit der WIE-DERHOLE-Anweisung von LOGO gibt man also die Anzahl der Wiederholungen und die Anweisungen, die wiederholt werden sollen, an.

Die zu wiederholenden Anweisungen werden, wie in LOGO üblich, zu einer Liste zusammen-gefaßt und von eckigen Klammern eingeschlossen.

Das Programm QUADRAT kann damit folgendermaßen vereinfacht werden:

PR QUADRAT WIEDERHOLE 4 [ VW 100 RE 90 ] ENDE

Zum Zeichnen eines Quadrates soll der Igel viermal die Anweisungen VW 100 RE 90 wieder-holen.

3.2 Variablen Ein anderes Problem tritt auf, wenn ein Quadrat mit einer anderen Seitenlänge benötigt wird. Um Quadrate anderer Seitenlängen zu erstellen, müßten wir jeweils eine neues Programm QUADRAT schreiben, z.B.: das Programm QUADRAT50 für die Seitenlänge 50 oder QUADRAT10 für die Seitenlänge 10. Weniger aufwendig wäre es ,wenn man mit einem ein-zigen Programm QUADRAT Quadrate beliebiger Größe zeichnen könnte.

Zu dem Zeitpunkt, zu dem wir dem Igel dies lernen lassen, wissen wir jedoch noch nicht, mit welcher Seitenlänge er dieses Quadrat zeichnen soll. Die Seitenlänge des Quadrates ist zum Zeitpunkt der Programmerstellung unbekannt.

Unbekannte verwendet man auch in der Mathematik. Dort heißen Unbekannte Platzhalter oder Variablen.

Page 24: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

24 Programmieren

Beim Erstellen des Programms QUADRAT verwendet man eine Variable für die Seitenlänge, wobei man vor dem Namen der Variablen einen Doppelpunkt setzt:

PR QUADRAT WH 4 [ VW :LÄNGE RE 90 ] ENDE

Ein kleines Problem haben wir bei dieser Programmversion noch. Wie können wir dem Igel mitteilen, mit welcher Seitenlänge wir das Quadrat gerne hätten?

In der obigen Fassung wird nirgendwo die Seitenlänge festgelegt. Die Lösung wird klar, wenn wir uns eine schon häufiger verwendete Frage stellen. Welche Informationen muß ich dem Igel geben, wenn er ein Quadrat zeichnen soll? Wir erkennen daran, daß die Seitenlänge zu dem Wort QUADRAT gehört, also mit dem Befehlswort QUADRAT eingegeben werden muß.

Um beim Programmieren festzulegen, daß für die Anweisung QUADRAT noch weitere In-formationen verwendet werden, fügt man den Variablennamen mit vorangestelltem Doppel-punkt hinter dem Programmnamen ein.

PR QUADRAT :LÄNGE WH 4 [ VW :LÄNGE RE 90 ] ENDE

Damit teilen wir LOGO mit, daß es sich für die Ausführung des Programms QUADRAT nicht nur mit dem Befehlswort QUADRAT begnügen soll, sondern auch noch die Angabe der Sei-tenlänge des Quadrates notwendig ist.

Nachdem wir dem Igel den Befehl QUADRAT beigebracht und die Lernseite verlassen haben, können wir den Befehl QUADRAT verwenden. Wir haben dabei jedoch zu beachten, daß das Befehlswort QUADRAT nun nicht mehr ausreicht.

Mit dem Befehlswort QUADRAT muß nun immer die gewünschte Seitenlänge eingegeben werden.

Beispiele: QUADRAT 100 zum Zeichnen eines Quadrats der Seitenlänge 100. QUADRAT 50 zum Zeichnen eines Quadrats der Seitenlänge 50.

Wir haben damit ein Programm QUADRAT erstellt, mit dem man Quadrate in beliebiger Grö-ße zeichnen kann.

Machen wir uns dabei klar, daß wir bei dieser Version des Programms wiederum dem Prinzip der Befehlserweiterung gefolgt sind, denn die eingebauten LOGO-Befehle funktionieren auf die gleiche Art und Weise. Denken wir an den VORWÄRTS-Befehl und stellen wieder die Frage: Welche Informationen benötigt LOGO (der Igel), um den VORWÄRTS-Befehl ausfüh-ren zu können?

Die Antwort liegt auf der Hand. Benötigt wird die Schrittzahl. Die erste Zeile des internen LOGO-Programms VORWÄRTS hat wahrscheinlich das folgende Aussehen:

PR VORWÄRTS :SCHRITTZAHL

Das Gleiche gilt für die RECHTS-Anweisung:

PR RECHTS :WINKEL

Page 25: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 25

Wir erkennen daran, daß wir als Benutzer den Namen der Variablen innerhalb des Programms nicht kennen müssen. Ob die Variable im Programm VORWÄRTS nun SCHRITTZAHL heißt oder SCHRITTE oder nur X, braucht uns nicht zu interessieren. Dieser Sachverhalt gilt natür-lich auch für das Programm QUADRAT. Ob wir die Variable für die Seitenlänge nun LÄNGE oder SEITENLÄNGE oder L nennen, ist bei der Verwendung des Befehls QUADRAT nicht mehr von Bedeutung.

Für den Benutzer ist nur wichtig, daß hinter dem Befehlswort QUADRAT bzw. VORWÄRTS eine Zahl zur präzisen Festlegung der jeweiligen Anweisung eingegeben werden muß.

Der eingebaute Befehl VORWÄRTS und der selbsterstellte Befehl QUADRAT funktionieren genauso.

Die Verwendung von Variablen kann man sich mit Hilfe des Schachtelmodells gut verdeutli-chen. Danach stellt eine Variable eine Schachtel innerhalb des Computers dar. In diese Schachtel kann man einen Zettel mit einem Wert hineinlegen. Die Variable wird mit einem Wert belegt. Der Wert auf dem Zettel kann auch gelesen werden. Um unter mehreren Schach-teln die richtige finden zu können, gibt man der Schachtel einen Namen.

Beim Erstellen des Programms QUADRAT haben wir LOGO gesagt, daß es eine Schachtel mit dem Namen LÄNGE aufstellen soll. Dies geschieht mit der Anweisung:

LERNE QUADRAT :LÄNGE

Wir können uns vorstellen daß LOGO in diese Schachtel einen Zettel hineinlegt, auf dem eine Zahl notiert ist. Für ein Quadrat der Seitenlänge 100 legt LOGO einen Zettel mit der Zahl 100 in die Schachtel mit dem Namen LÄNGE. Dies geschieht bei der Anweisung

QUADRAT 100

Machen wir uns die Verwendung von Variablen am Schachtelmodell klar, indem wir den Ab-lauf des Programms QUADRAT schrittweise verfolgen:

Der Igel soll eine Quadrat der Seitenlänge 100 zeichnen. Dazu schreiben wir:

QUADRAT 100

1. LOGO sucht im Arbeitsspeicher nach dem Programm QUADRAT. An der ersten Zeile des Programms QUADRAT (PR QUADRAT :LÄNGE) erkennt LOGO, daß es sich für die Ausführung noch eine weitere Information holen muß, die unter dem Namen LÄNGE abge-legt werden soll.

2. LOGO richtet dazu im Arbeitsspeicher eine neue Schachtel ein und schreibt den Namen LÄNGE darauf.

3. LOGO liest dann im Eingabefenster die nächste Angabe hinter dem Wort QUADRAT. In unserem Fall liest LOGO die Zahl 100. Diese Zahl 100 schreibt LOGO auf einen Zettel und legt diesen Zettel in die Schachtel mit dem Namen LÄNGE hinein. Die Eingabe von QUAD-RAT 100 bewirkt also, daß LOGO eine neue Schachtel mit dem Na-men LÄNGE anlegt und einen Zettel mit der Zahl 100 hineinlegt.

4. Nun beginnt LOGO ganz normal mit der Abarbeitung der Befehle im Programm QUAD-RAT. Bei dem Versuch, VW :LÄNGE auszuführen, stößt LOGO auf den Variablennamen "LÄNGE" statt auf die erwartete Schrittzahl. LOGO erkennt daran, daß es die Schrittzahl

Page 26: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

26 Programmieren

aus der Schachtel mit dem Namen LÄNGE holen soll. LOGO liest den Zettel in der Schachtel "LÄNGE" und setzt statt :LÄNGE die Zahl 100 hinter der VW-Anweisung ein.

Zu erwähnen ist dabei, daß :LÄNGE eine Abkürzung für WERT "LÄNGE" ist. Statt VW :LÄNGE hätte man auch schreiben können:

VW WERT "LÄNGE"

Beginnt ein Wort in der ersten Zeile eines LOGO-Programms mit einem Doppelpunkt, so heißt das für LOGO, daß es eine neue Schachtel mit dem angegebenen Namen aufstellen und einen Zettel mit einem Wert hineinlegen soll. An dieser Stelle ist der Doppelpunkt keine Abkürzung für WERT. Beachten Sie dabei jedoch, daß die neue Schachtel erst bei der Ausführung und nicht beim Lernen eingerichtet wird.

Wir wollen nun versuchen, den Gebrauch von Variablen weiter zu erforschen. Dazu schreiben wir das folgende Programm:

PR FIGUR :LÄNGE QUADRAT :LÄNGE QUADRAT :LÄNGE + 10 QUADRAT :LÄNGE + 20 ENDE

Das Programm FIGUR benötigt die Prozedur QUADRAT im Arbeitsspeicher. Wir erkennen an diesem Programm: Genau wie nach der DRUCKEZEILE-Anweisung kann auch nach der Anweisung QUADRAT ein Rechenausdruck stehen.

Wenn wir das Programm FIGUR mit der Eingabe

FIGUR 50

starten, so zeichnet LOGO zuerst ein Quadrat der Seitenlänge 50, dann wird das Programm QUADRAT erneut aufgerufen, wobei zu der LÄNGE 10 addiert wird. In die Schachtel mit dem Namen "LÄNGE" wird nun nicht die Zahl 50, sondern die Zahl 60 hineingelegt.

Es ist unmittelbar klar, daß das Programm FIGUR drei ineinanderge-schachtelte Quadrate erzeugt.

Aber: In welcher Größe wird das letzte Quadrat gezeichnet?

Auch hier scheint die Antwort klar. In der Schachtel mit "LÄNGE" befindet sich nach dem Zeichnen des ersten Quadrats die Zahl 50 und nach dem zweiten Aufruf des Programms

Page 27: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 27

QUADRAT die Zahl 60. Es wird dann die Zahl 20 addiert und scheinbar die Zahl 80 in die Schachtel "LÄNGE" hineingelegt. Folglich müßte eigentlich zuletzt ein Quadrat der Seiten-länge 80 gezeichnet werden.

Wenn Sie das Programm FIGUR starten, werden Sie jedoch eine völlig andere Beobachtung machen. Zwischen den Seiten der drei Quadrate ist der Abstand gleich. Da das 2. Quadrat die Seitenlänge 60 hat, folgt daraus, daß das 3. Quadrat eine Seitenlänge von 70 haben muß.

Wie ist das zu erklären?

Bei unseren bisherigen Überlegungen haben wir einen ganz wichtigen Umstand außer acht gelassen. Bei jedem Programmaufruf richtet LOGO jeweils eine neue Schachtel mit dem an-gegebenen Namen ein.

Machen wir uns diesen Sachverhalt an der Beschreibung des Programmablaufs klar. Das Pro-gramm wird mit

FIGUR 50

gestartet.

1. LOGO richtet eine Schachtel mit dem Namen "LÄNGE" ein und legt die Zahl 50 hinein.

2. Bei der Ausführung der Anweisung QUADRAT :LÄNGE holt LOGO die Zahl aus der Schachtel "LÄNGE", richtet eine neue Schachtel mit dem Namen "LÄNGE" ein (wegen: PR QUADRAT :LÄNGE) und legt die Zahl 50 hinein. Im Arbeitsspeicher befinden sich nun 2 Schachteln mit dem Namen "LÄNGE“. Wie kann LOGO nun bei der Ausführung des Programms QUADRAT wissen, welche der beiden Schachteln es verwenden soll? Befinden sich mehrere Schachteln mit gleichem Namen im Arbeitsspeicher, so verwendet LOGO immer diejenige Schachtel, die zuletzt eingerichtet wurde.

3. Nachdem LOGO das Programm QUADRAT mit der Seitenlänge 50 ausgeführt hat, kehrt es in das Programm FIGUR zurück, um dort die nächste Anweisung zu bearbeiten. Die von dem Programm QUADRAT angelegte 2. Schachtel mit dem Namen LÄNGE wird nicht mehr benötigt. Nach Beendigung eines Programms räumt LOGO alle Schachteln wieder weg, die es beim Aufruf dieses Programms eingerichtet hat.

4. Der weitere Ablauf ist damit klar. Beim Aufruf von QUADRAT :LÄNGE + 10 befindet sich nur noch die ursprüngliche Schachtel "LÄNGE" im Arbeitsspeicher. LOGO holt daraus die Zahl 50, addiert 10 und legt die Zahl 60 in die neue Schachtel "LÄNGE", die beim Auf-ruf des Programms QUADRAT eingerichtet wird. Diese Schachtel "LÄNGE" mit dem In-halt 60 wird beim Beenden des Programms QUADRAT wieder aus dem Arbeitsspeicher entfernt.

5. Beim Aufruf von QUADRAT :LÄNGE + 20 befindet sich wiederum nur die ursprüngliche Schachtel "LÄNGE" im Arbeitsspeicher. LOGO holt daraus die Zahl 50, addiert 20 und legt die Zahl 70 in die neue Schachtel "LÄNGE" des Programms QUADRAT. Diese Schachtel wird beim Beenden des Programms QUADRAT entfernt.

6. Das Programm FIGUR ist nun ebenfalls abgearbeitet und LOGO räumt auch die ursprüng-liche Schachtel "LÄNGE" aus dem Arbeitsspeicher.

Variablen (Schachteln), die LOGO beim Aufruf eines Programms einrichtet, nennt man lokale Variablen. Lokale Variablen sind nur während der Ausführung des jeweiligen Programms gül-tig und werden danach aus dem Arbeitsspeicher entfernt. LOGO kennt auch globale Variablen.

Page 28: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

28 Programmieren

Globale Variablen sind in allen Programmen gültig und können nur mit einer besonderen An-weisung aus dem Arbeitsspeicher entfernt werden.

Das Konzept der lokalen Variablen ermöglicht es, unabhängige und selbständig lauffähige Prozeduren zu erstellen. Beim Aufruf einer Prozedur braucht sich der Benutzer keine Gedan-ken über die in der Prozedur verwendeten Variablennamen zu machen. Es wird intern automa-tisch immer eine neue Variable eingerichtet, die bei Beenden der Prozedur wieder entfernt wird. So hat die Veränderung einer Variablen innerhalb der Prozedur keinen Einfluß auf eine Variable gleichen Namens außerhalb.

3.3 Strukturiertes Programmieren Vergleichen Sie die folgenden beiden Programme miteinander. Beide Programme erzeugen die gleiche Figur.

PR FIGUR1 PR FIGUR2 RE 180 RE 180 LI 45 V 25 VW 25 LI 180 RW 25 VW 30 RE 90 V 25 VW 25 VW 20 RW 25 LI 135 LI 45 QUADRAT 20 LI 180 ENDE VW 30 LI 45 VW 25 RW 25 PR QUADRAT :LÄNGE RE 90 WH 4 [ RE 90 VW :LÄNGE ] VW 25 ENDE RW 25 LI 45 PR V :LÄNGE VW 20 LI 45 LI 45 STRICH :LÄNGE VW 20 RE 90 RE 90 STRICH :LÄNGE VW 20 LI 45 RE 90 ENDE VW 20 RE 90 PR STRICH :LÄNGE VW 20 VW :LÄNGE RE 90 RW :LÄNGE ENDE ENDE

Das Programm FIGUR1 besteht offensichtlich aus einem einzigen Programm, während FI-GUR2 mehrere Programme verwendet (STRICH, QUADRAT und V).

Page 29: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 29

Um zu verstehen, welche Figur das Programm FIGUR1 zeichnet, wird man versuchen, das Programm von oben nach unten zeilenweise nachzuvollziehen.

Genauso geht man bei FIGUR2 vor. Das Programm FIGUR2 ist je-doch sehr viel kürzer. Es besteht nur aus 10 Programmzeilen. In der 3. Programmzeile stößt man auf die Zeile

V 25.

Wer an dieser Stelle noch nicht erkennt, was die Prozedur V macht, dem genügt ein kurzer Blick auf den Text des zugehörigen Pro-gramms. Die Prozedur V zeichnet den Buchstaben V. Damit weiß man auch, was bei dem 2. Aufruf von V in Zeile 6 passiert. Die Prozedur QUADRAT in Zeile 9 kennen wir bereits.

Beide Programme erzeugen ein Strichmännchen:

Der Text des Programms FIGUR2 hat den Vorteil, daß man sehr viel schneller erkennen kann, welche Figur entsteht. Der entscheidende Grund dafür liegt darin, daß der Programmierer hier in Teilaufgaben zerlegt hat. Die Vorteile des Zerlegens in Teilaufgaben liegen auf der Hand:

• Der Programmtext ist übersichtlicher und leichter zu verstehen. Programmfehler sind leich-ter zu lokalisieren.

• Einzelne Teilprogramme lassen sich für andere Programmieraufgaben wiederverwenden. Das Programm QUADRAT hätte man beispielsweise nicht mehr neu erstellen müssen, da es ja bereits zur Verfügung stand.

Beim Erstellen von Programmen sollte man folglich versuchen, die Methode des strukturierten Programmierens einzusetzen. Dabei wird eine Programmieraufgabe schrittweise in Teilaufga-ben zerlegt. Läßt sich eine oder mehrere der Teilaufgaben weiter sinnvoll zerlegen, so wird der Prozeß des Zerlegens in Teilaufgaben fortgesetzt. Die so entstandenen Programme kann man zu Bibliotheken zusammenfassen und bei anderen Programmieraufgaben wiederverwen-den. Wir werden weiter unten noch sehen, wie man vorgehen kann, um das Programm FI-GUR2 mit der Methode des strukturierten Programmierens zu erstellen.

Zuerst wollen wir das Programm V ein wenig genauer betrachten. Sie werden sich sicherlich gewundert haben, warum in der letzten Zeile noch eine Drehung um 45 Grad nach links er-folgt. Das V ist ja eigentlich schon auf dem Bildschirm zu sehen.

Wenn Sie jedoch an eine mögliche Wiederverwendbarkeit des Programms V für andere Auf-gaben denken, wird die Bedeutung dieser Zeile klar. Bei einer erneuten Verwendung der Pro-zedur V nach einigen Wochen, können Sie sich mit Sicherheit nicht mehr daran erinnern, in welche Richtung der Igel nach dem Zeichnen des V blickt. Sie werden sich darüber wundern, in welche Richtung der Igel die nächste Vorwärtsbewegung ausführt.

Durch die Anweisung LI 45 in der letzten Zeile setzen Sie den Igel jedoch in einen wohldefi-nierten Zustand. Der Igel befindet sich in der gleichen Position und hat die gleiche Blickrich-tung wie zu Beginn des Programms V.

Es ist ratsam, beim Erstellen einzelner Programme immer auch eine Wiederverwendbarkeit für andere Programmieraufgaben im Auge haben. Dies hat arbeitsökonomische Gründe, denn dann braucht man 'das Rad nicht immer wieder neu zu erfinden'. Je größer Ihre Bibliothek von Prozeduren ist, um so schneller und einfacher können Sie Programme mit ähnlichen Aufga-benstellungen erstellen.

Page 30: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

30 Programmieren

Eine gute Wiederverwendbarkeit ist gewährleistet, wenn man auf die folgenden Regeln achtet:

• Namen von Programmen und Variablen sollten so gewählt werden, daß man aus dem Na-men deren Bedeutung erkennen kann. Im Programm QUADRAT wurde als Variablenna-men :LÄNGE gewählt. Bei einem Variablennamen wie :X oder :Y wäre nicht so leicht zu erkennen, daß über die Variable die Seitenlänge des Quadrat festgelegt wird.

• Programme sollten möglichst nur lokale Variablen enthalten.

• Man sollte das Programm möglichst mit der Fähigkeit ausstatten, verschiedene Daten ver-arbeiten zu können (z.B. Figuren unterschiedlicher Größe).

• Nach dem Beenden des Programms sollte sich LOGO in dem gleichen Zustand befinden wie beim Start. Beim Einsatz der Prozedur in einem anderen Zusammenhang ist damit ge-währleistet, daß keine unbeabsichtigten Effekte eintreten.

An der Aufgabe, ein Strichmännchen zu zeichnen, soll das Vorgehen beim strukturierten Pro-grammieren beschrieben werden.

Schritt 1: Zerlegen in Teilaufgaben

In der ersten Phase versucht man Antworten auf die folgenden Fragen zu finden: In welche Teilaufgaben kann die Aufgabe zerlegt werden? Ist eine oder mehrere der Teilaufgaben weiter sinnvoll zerlegbar?

Ein Strichmännchen besteht aus Armen, Beinen, einem Kopf und einem Körper. Der Kopf hat die Form eines Quadrats, Arme und Beine haben die Form des Buchstabens V. Für den Buch-staben V muß man im Winkel von 90 Grad jeweils einen Strich zeichnen.

Zur besseren Orientierung kann es hilfreich sein, die Zerlegung in Form eines Baumdia-gramms darzustellen:

MÄNNCHEN

V

STRICH

QUADRAT

Das Programm MÄNNCHEN verwendet die Programme V und QUADRAT. Das Programm V benötigt das Programm STRICH.

Aufgaben aus dem Bereich der Grafik eignen sich besonders zum Einüben des strukturierten Programmierens, weil sich die einzelnen Teilaufgaben meist aus den verschiedenen Teilen der Grafik ergeben.

Page 31: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 31

Schritt 2: Erstellen und Testen der einzelnen Prozeduren

Beim Erstellen der Programme arbeitet man das Baumdiagramm von unten nach oben ab. Man beginnt also mit der Prozedur STRICH und überlegt: Welche Informationen muß man LOGO geben, damit es einen beliebigen Strich zeichnen kann? Welche LOGO-Anweisungen sind zum Zeichnen eines Strichs notwendig? Dabei berücksichtigt man, daß der Igel am Ende den gleichen Zustand haben sollte wie am Anfang.

Es entsteht die folgende Prozedur:

PR STRICH :LÄNGE VW :LÄNGE RW :LÄNGE ENDE

Auf die gleiche Art und Weise erstellt man die Prozeduren V und QUADRAT.

Zum Schluß schreibt man das Programm MÄNNCHEN und überlegt wieder: Welche Informa-tionen muß man LOGO geben, damit es ein beliebiges Männchen zeichnen kann? Welche LOGO-Anweisungen sind zum Zeichnen eines Männchens notwendig?

Für die Beantwortung der ersten Frage gehen wir davon aus, daß Strichmännchen in unter-schiedlichen Größen erzeugt werden sollen. Die Größe wird dabei über einen Faktor festge-legt. Ein Faktor kleiner 1 bedeutet ein Verkleinern der Ausgangsfigur. Ein Faktor größer 1 ist eine Vergrößerung.

PR MÄNNCHEN :FAKTOR RE 180 V 25 * :FAKTOR LI 180 VW 30 * :FAKTOR V 25 * :FAKTOR VW 20 * :FAKTOR LI 135 QUADRAT 20 * :FAKTOR RE 135 RW 50 * :FAKTOR ENDE

Dieses Programm besitzt im Vergleich zum Programm FIGUR2 bereits einige zusätzliche Ei-genschaften. Ich überlasse es Ihnen, sich die Bedeutung der unterstrichenen Programmzeilen zu verdeutlichen. Das Programm befindet sich unter dem Namen MÄNNCHEN.LOG in Ihrem LOGO-Verzeichnis.

Mit dem Konzept des strukturierten Programmierens ist das Bibliothekskonzept verbunden. Einmal erstellte Programme werden zu Bibliotheken zusammengefaßt, um sie leicht für die Lösung anderer Aufgaben wiederverwenden zu können. Es wäre beispielsweise möglich, die Bibliothek FIGUREN zu erzeugen, in die man die Prozeduren QUADRAT, RECHTECK, DREIECK, KREIS und VIELECK abspeichert.

Zum Erstellen einer Bibliothek laden Sie alle Programme, die in die Bibliothek eingefügt wer-den sollen, in den Arbeitsspeicher. Mit VERGISS löschen Sie dann Prozeduren, die nicht zur Bibliothek gehören sollen, aus dem Arbeitsspeicher. Die verbleibenden Prozeduren werden

Page 32: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

32 Programmieren

unter dem Namen der Bibliothek (z.B. FIGUREN) auf Diskette bewahrt. Möglicherweise ist es ratsam, die Prozeduren zu verbergen, um später die Titelanzeige nicht zu überfüllen.

Nun können Sie diese Prozeduren jederzeit mit LADE "FIGUREN" in den Arbeitsspeicher einlesen, wenn Sie einen der Bausteine für die Lösung einer Aufgabe benötigen.

Einen letzten Gedanken möchte ich im Zusammenhang mit dem strukturierten Programmieren noch erläutern:

Beobachtungen im Unterricht zeigen, daß Schüler beim Programmieren mit LOGO sehr schnell einen ganz bestimmten Arbeitsstil entwickeln. Dieser Arbeitsstil besteht darin, daß sie in einer ständigen Wechselwirkung zwischen Ausprobieren und Korrektur zur Lösung der Aufgabe gelangen. Diese Methode ist im Zusammenhang mit der Igelgrafik sehr wirksam, weil man das Resultat seines Tuns direkt am Bildschirm erkennen kann.

Bei größeren Programmieraufgaben stoßen die Schüler mit dieser 'Versuch und Irrtum'- Me-thode sehr schnell an Grenzen, denn es besteht die Gefahr, daß sie sich in der Komplexität des Problems verlieren. An dieser Stelle kann man die Vorteile von Vorüberlegungen nach dem Konzept des strukturierten Programmierens gut verdeutlichen. Beim Erstellen und Testen der einzelnen Programme können die Schüler dann wieder das interaktive Verfahren praktizieren.

Das ideale Vorgehen beim Erstellen von LOGO-Programmen besteht wohl in einer Vorstruk-turierung der Aufgabe nach der Methode des strukturierten Programmierens und in dem inter-aktiven Erstellen der zugehörigen Programme.

An einem weiteren Beispiel soll der Vorteil von Vorüberlegungen im Vergleich zur 'Versuch und Irrtum'-Methode verdeutlicht werden. Es soll ein Programm erstellt werden, das ein Ted-dygesicht zeichnet. Die Prozeduren befinden sich unter dem Namen TEDDY.LOG in Ihrem LOGO-Verzeichnis.

Für diese Grafik benötigen Sie eine Prozedur KREIS. Die Entwicklung dieser Prozedur soll hier nur kurz an-gedeutet werden.

Für den Igel ist ein Kreis nichts anderes als die 360-fache Wiederholung von VORWÄRTS 1 RECHTS 1. Also:

WH 360 [ VW 1 RE 1 ]

Bei der vorhandenen Auflösung des Monitors wird der Kreis genauso gut mit:

WH 36 [ VW 10 RE 10 ]

Um Kreise unterschiedlicher Größe zu erhalten, muß man den Radius des Kreises in die zuge-hörige Schrittzahl für VW umrechnen. Dazu verwendet man die Formel für die Umrechnung vom Gradmaß ( α ) in das Bogenmaß ( s ):

sr2 360π

α=

Bei einem Winkel von 10 Grad ergibt sich

s r r r= ⋅ ⋅ = ⋅ ⋅ ≈α π π180

10180

0 174,

Die Prozedur KREIS sieht damit folgendermaßen aus:

Page 33: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 33

PR KREIS :RADIUS WH 36 [ VW 0,1745 * :RADIUS RE 10 ] ENDE

Mit unterschiedlichen großen Kreisen lassen sich nun die Umrisse für das Gesicht sowie Nase und Mund zeichnen.

Das Gleiche gilt natürlich für die Ohren, wobei Sie zuerst die richtige Position ermitteln müs-sen. Das linke Ohr werden Sie sicherlich noch durch Ausprobieren mit angehobenen Stift und einer Aneinanderreihung von VW-, RE- sowie LI-Anweisungen positionieren können. Das Problem besteht dann darin, das rechte Ohr auf die gleiche Art und Weise in die entsprechende Position der rechten Gesichtshälfte zu bringen. Nach meinen Beobachtungen wird dies durch Ausprobieren nur sehr schwer zu realisieren sein.

Dieses Problem läßt sich jedoch mit ein wenig Vorüberlegung lösen. Wir gehen davon aus, daß sich der Igel in der Bildschirmmitte mit Blick nach oben befindet und das Teddygesicht 'einen Radius von 100' hat.

Das linke Ohr liegt dann auf der Kreislinie. Der Winkel zwischen der Position des Ohres und der augenblicklichen Blickrichtung des Igels (senkrecht nach oben) soll 70° betragen.

Die folgenden Prozeduren zeichnen das linke Ohr und das rechte Ohr: PR OHRLINKS PR OHRRECHTS STIFTHOCH STIFTHOCH LI 70 RE 70 VW 100 VW 100 STIFTAB RE 180 KREIS 20 STIFTAB STIFTHOCH KREIS 20 RW 100 STIFTHOCH RE 70 LI 180 STIFTAB RW 100 ENDE LI 70 STIFTAB ENDE

Die wesentliche Idee bei diesen beiden Prozeduren besteht darin, den Igel nur auf ausgewiese-ne Stellen des Bildschirms zu positionieren. Solche Stellen sind der Mittelpunkt sowie die Kreislinie. Eine ausgewiesene Stelle auf dem Kreisbogen erreicht man vom Mittelpunkt aus, indem man den Igel um einen bestimmten Winkel dreht und ihn um den Radius vorwärts be-wegt. Bei einer durch Ausprobieren gewonnenen Position des Bildschirms wird es Ihnen nur sehr schwer gelingen, den Igel auf eine dazu symmetrischen Stelle des Bildschirms zu bewe-gen.

Man hätte dieses Problem selbstverständlich auch dadurch lösen können, daß man die Befehle zur absoluten Positionierung des Igels im Koordinatenssystem verwendet. Diese Befehle sind: AUFX, AUFY und AUFXY.

Die Verwendung dieser Befehle ist immer dann angezeigt, wenn der Igel auf eine bestimmte Stelle des Bildschirms gesetzt werden soll. Versuchen wir uns den Unterschied zwischen den beiden verschiedenen Arten der Igelbewegung zu verdeutlichen.

Page 34: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

34 Programmieren

Wenn Sie mit der AUFXY-Anweisung ein Quadrat zeichnen wollen, so erledigen Sie das mit den Anweisungen:

STIFTHOCH AUFXY 100 100 STIFTAB AUFXY 100 200 AUFXY 200 200 AUFXY 200 100 AUFXY 100 100

Bei der Verwendung der AUFXY-Anweisung stellt man sich den Bildschirm als ein Gitter aus waagerechten und senkrechten Linien vor. Jeder Schnittpunkt repräsentiert dabei einen Punkt auf dem Bildschirm. Der gemeinsame Bezugspunkt aller Punkte ist der Ursprung. Er hat die Koordinaten (0;0) und befindet sich in der linken, unteren Ecke des Bildschirms. Mit der UR-SPRUNG-Anweisung kann der Koordinatenursprung auf eine andere Stelle gesetzt werden.

Um einen Punkt auf dem Bildschirm anzusprechen, benötigt man zwei Werte. Die erste Zahl gibt die X-Koordinate des Punktes an; das ist der waagerechte Abstand des Punktes vom Ur-sprung. Die zweite Zahl, die Y-Koordinate, gibt den senkrechten Abstand vom Ursprung an.

Den Punkt (200;100) erhält man dadurch, daß man vom Ursprung 200 Einheiten (Gitterpunk-te) waagerecht nach rechts und 100 Einheiten (Gitterpunkte) senkrecht nach oben zählt.

Wir sehen an dieser Stelle das Besondere dieser Grafikbefehle. Um einen bestimmten Punkt zu setzen oder eine Linie zu zeichnen, haben wir immer den gesamten Bildschirm im Blick. Wir orientieren uns am Ursprung, um die Position des Punktes zu ermitteln. Jede Igelbewegung wird in Bezug auf den Koordinatenursprung ausgeführt. Man spricht in diesem Zusammen-hang auch von absoluten Igelbewegungen, weil es sich um Befehle handelt, die den Igel auf eine, auf den gesamten Bildschirm bezogene, absolute Position bringen.

Anders verhält es sich bei den Befehlen VORWÄRTS, RECHTS etc. Diese verändern zwar auch die Position des Igels auf dem Bildschirm. Bei der Verwendung dieser Befehle bezieht man sich jedoch nicht auf dem gesamten Bildschirm, sondern auf den augenblicklichen Zu-stand des Igels. Die Anweisung VORWÄRTS 100 führt der Igel von seiner Position in die momentane Blickrichtung aus. Die Befehle VORWÄRTS, RÜCKWÄRTS, RECHTS und LINKS nennt man auch relative Bewegungen, weil sie die Position des Igels relativ zu seinem augenblicklichen Zustand verändern. Genaugenommen handelt es sich um 'lokale' Igelbewe-gungen, weil sie unter den im Augenblick geltenden Bedingungen ausgeführt werden. Der Igel kennt nur seine momentane Position und Blickrichtung. Demgegenüber sind Befehle zur abso-luten Bewegung des Igels 'globale' Bewegungen, denn sie haben ein den gesamten Bildschirm umfassendes Bezugssystem.

Die Vorteile der 'lokalen' Sichtweise der Igelbewegungen werden dann besonders deutlich, wenn Sie ein geneigtes Quadrat zeichnen möchten. Für den Igel spielt es keine Rolle, in wel-che Richtung er ein Quadrat zeichnet, wenn man die Befehle VORWÄRTS und RECHTS verwendet. Man kann dazu das gleiche Programm verwenden.

Erst, wenn er diese Figur unter Verwendung der absoluten Bewegungen erzeugen soll, wird die Neigung des Quadrats zum Problem, denn nun müssen zuerst die absoluten Koordinaten der neuen Eckpunkte berechnet werden. Für Quadrate mit unterschiedlichen Neigungen benö-tigt man somit verschiedene Programme.

Page 35: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 35

Es bleibt festzuhalten, daß es für jede Igelbewegungsart besondere Aufgabenstellungen gibt, bei denen sie jeweils sinnvoll eingesetzt werden können. Die relativen Igelbewegungen haben den didaktischen Vorteil, daß ein Hineinversetzen in die Position des Igels und ein Nachspie-len sehr leicht möglich ist.

3.4 Rekursionen Wir wollen dem Igel nun beibringen, die nebenstehende Grafik zu erzeugen.

Die Beschreibung der Grafik liefert fast schon die Lösung des Prob-lems: Die Figur besteht aus ineinandergeschachtelten Quadraten. Jedes Quadrat enthält ein verkleinertes Quadrat.

Zum Zeichnen verschieden großer Figuren definieren wir eine Ein-gabevariable "LÄNGE". Die Gesamtfigur entsteht dadurch, daß der Igel jeweils ein Quadrat zeichnet, sich dann in die richtige Position für das nächste Quadrat bewegt, wiederum ein kleineres Quadrat zeichnet usw.

PR QUADRATE :LÄNGE QUADRAT :LÄNGE SH RE 45 VW 14 LI 45 SA QUADRAT :LÄNGE - 20 SH RE 45 VW 14 LI 45 SA QUADRAT :LÄNGE - 40 SH RE 45 VW 14 LI 45 SA QUADRAT :LÄNGE - 60 usw.

Bei dieser Version beobachten wir einen Sachverhalt, den wir bereits in einem anderen Zu-sammenhang kennengelernt haben. Das Programm enthält Anweisungen, die sich wiederholen.

Die WIEDERHOLE-Anweisung ist für diese Aufgabe mit dem bisherigen Kenntnisstand je-doch nicht verwendbar, weil die Seitenlänge des Quadrats bei jedem Aufruf verändert wird.

LOGO stellt eine weitere Form der Wiederholung bereit. Diese besteht darin, jeweils an den Anfang des Programms zu springen und dabei die Zahl 20 von der Seitenlänge zu subtrahie-ren.

PR QUADRATE :LÄNGE <

QUADRAT :LÄNGE :LÄNGE - 20

SH RE 45 VW 14 LI 45 SA

Vielleicht erkennen Sie schon, wie man diesen Sprung an den Programmanfang realisiert. Das Programm QUADRATE ruft sich in der letzten Programmzeile selbst auf und subtrahiert bei diesem Aufruf von LÄNGE die Zahl 20.

PR QUADRATE :LÄNGE QUADRAT :LÄNGE SH RE 45 VW 14 LI 45 SA QUADRATE :LÄNGE - 20 ENDE

Page 36: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

36 Programmieren

Ein Programm, das sich selbst aufruft, nennt man ein rekursives Programm.

Wie geht LOGO vor, wenn es das Programm QUADRATE bei einem Aufruf mit QUADRA-TE 100 abarbeitet?

1. LOGO richtet eine Schachtel mit dem Namen "LÄNGE" an und legt die Zahl 100 hinein.

2. LOGO zeichnet ein Quadrat und holt die benötigte Seitenlänge aus der Schachtel mit dem Namen "LÄNGE".

3. Der Igel bewegt sich in die richtige Position für das nächste Quadrat (SH RE 45 VW 14 LI 45 SA )

4. Das Programm QUADRATE ruft sich selbst auf. Dabei holt es die Zahl aus der Schachtel "LÄNGE", subtrahiert 20, richtet eine neue Schachtel "LÄNGE" ein und legt das Ergebnis (die Zahl 80) in diese Schachtel hinein.

5. LOGO zeichnet ein Quadrat und holt dazu die benötigte Seitenlänge aus der zuletzt ange-legten Schachtel "LÄNGE" (80).

6. Der Igel bewegt sich in die richtige Position für das nächste Quadrat.

7. Das Programm QUADRATE ruft sich selbst auf. Dabei holt es die Zahl aus der zuletzt an-gelegten Schachtel "LÄNGE", subtrahiert 20, richtet eine neue Schachtel "LÄNGE" ein und legt das Ergebnis der Subtraktion (die Zahl 60) in diese Schachtel hinein.

usw.

Das Programm in der vorliegenden Fassung hat noch einen kleinen Mangel. Es wird nie been-det. Da das Zeichnen eines Quadrats mit negativer Seitenlänge keinen Sinn mehr hat, ergänzt man die unterstrichene Programmzeile:

PR QUADRATE :LÄNGE WENN :LÄNGE < 20 DANN RÜCKKEHR QUADRAT :LÄNGE SH RE 45 VW 14 LI 45 SA QUADRATE :LÄNGE - 20 ENDE

Das Programm QUADRATE wird beendet, wenn die Zahl in der zuletzt angelegten Schachtel "LÄNGE" kleiner 20 ist.

Rekursive Prozeduren wird man immer dann erstellen, wenn bei jeder Wiederholung Daten verändert werden. Beim Erstellen eines rekursiven Programms ist es meist hilfreich, eine Fall-unterscheidung vorzunehmen.

Der erste Fall führt zur Beendigung des Programms. Es ist der einfachste Fall. Bei dem Pro-gramm QUADRATE tritt der einfachste Fall ein, wenn die "LÄNGE" kleiner 20 ist. Dann wird das Programm QUADRATE beendet. Daraus kann man die zweite Programmzeile ablei-ten:

WENN :LÄNGE < 20 DANN RÜCKKEHR

Nun versucht man zu beschreiben, was im anderen Falle geschehen soll. Ist die Seitenlänge größer oder gleich 20, so soll ein Quadrat gezeichnet und der Igel in die richtige Position für das nächste Quadrat gebracht werden. Dann soll das Gleiche noch einmal mit einer um 20 ver-kürzten Seitenlänge geschehen. Diese letze Formulierung: 'Mache das Gleiche noch einmal mit

Page 37: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 37

einem kleineren bzw. einfacheren Wert' ist der Schlüssel zum Verständnis der rekursiven Pro-grammierung.

In dieser Formulierung steckt der rekursive Aufruf ('Mache das Gleiche') und die Rückführung auf einen einfacheren Fall ('mit einem kleineren Wert'), so daß der einfachste Fall auch wirk-lich eintreten wird.

Die rekursive Struktur der Lösung dieser Aufgabe kann man eigentlich bereits aus der Be-schreibung des Bildes entwickeln. Wenn man erkannt hat, daß das obige Bild jeweils aus ei-nem Quadrat besteht, das sich selbst in verkleinerter Form enthält, so wird klar, daß sich das Programm QUADRATE selbst mit einer kleineren Seitenlänge aufrufen muß.

Die Befehle für den zweiten Fall haben damit die folgende Form. Zur Erläuterung wird hier am Ende jeder Zeile das LOGO-Kommentarzeichen ;* verwendet.

QUADRAT :LÄNGE ;* Quadrat zeichnen

SH RE 45 VW 14 LI 45 SA ;* Igel in die neue Position schieben

QUADRATE :LÄNGE - 20 ;* Selbstaufruf mit verkleinerter Länge

Das gesamte Programm entsteht dadurch, daß man die Programmzei-len aus beiden Fällen zusammenfügt.

Wir wollen nun versuchen, zu einer weiteren Aufgabe ein rekursives Programm zu entwickeln.

Auch diese Grafik enthält die gleiche immer kleiner werdende Grundfigur. Diese rekursive Grundfigur besteht aus einer Strecke und einer Drehung nach rechts um 90 Grad. v

Die erste Programmzeile hat folgendes Aussehen:

PR SPIRALECK :LÄNGE

Den ersten Fall formulieren wir wieder wie oben: Wenn die LÄNGE kleiner 20 ist dann soll das Programm beendet werden.

WENN :LÄNGE <= 20 DANN RÜCKKEHR

Der zweite Fall besteht in dem Erstellen der rekursiven Grundfigur und dem Selbstaufruf.

VW :LÄNGE ;* Vorwärtsbewegung um LÄNGE

RE 90 ;* Rechtsdrehung um 90 Grad

SPIRALECK :LÄNGE - 5 ;* Selbstaufruf mit verkleinerter LÄNGE

An diesen beiden Beispielen können Sie erkennen, daß die Verwendung von Rekursionen im-mer dann angezeigt ist, wenn eine Gesamtfigur mehrmals die gleiche Figur in verkleinerter Form enthält. Diese rekursive Grundstruktur ist bei grafischen Aufgaben häufig sehr leicht zu erkennen. Beide Prozeduren befinden sich unter dem Namen REKURSIO.LOG in Ihrem LO-GO-Verzeichnis.

Page 38: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

38 Programmieren

3.5 Verarbeitung von Zahlen In diesem Kapitel soll das Programmieren von Rekursionen an einem nichtgrafischen Beispiel dargestellt werden. Wir wechseln mit der F2-Taste auf die Textseite.

Zum Berechnen der Jahreszinsen bei einem Guthaben von 2000 DM und einem Zinssatz von 4% tippt man die folgende Zeile ein:

DZ 2000 * 0,04

Man erhält das Ergebnis

80.

Wenn man für mehrere Beträge die Zinsen ausrechnen möchte, ist es sinnvoll, den Zinssatz zu speichern. Dazu verwendet man die Zeile

SETZE "P" 0,04.

Bei der Ausführung dieser Anweisung geht LOGO genauso vor, wie bei dem Aufruf eines Programms mit einer Eingabevariablen. LOGO richtet eine Schachtel mit dem Namen "Z" ein und legt einen Zettel mit der Zahl 0,04 hinein. Mit der SETZE-Anweisung definiert man also eine Variable und belegt sie mit einem Wert.

Eine mit SETZE erzeugte Variable ist immer in allen Programmen gültig. Es ist eine globale Variable. Wird der Wert einer globalen Variablen in einer Prozedur verändert, so wirkt sich diese Veränderung auf alle weiteren Prozeduren aus, die diese Variable verwenden.

Betrachten wir dazu das folgende Beispiel:

Wir schreiben im Direktmodus:

SETZE "K" 100

Nun erstellen wir ein Programm TEST mit:

PR TEST SETZE "K" 200 ENDE

Diese Prozedur soll die Variable "K" auf den Wert 200 setzen.

Wir starten dieses Programm mit

TEST

und lassen und danach den Wert der Variablen "K" anzeigen.

DZ :K

Es erscheint die Zahl 200. Der ursprüngliche Wert der Variablen "K" wird von dem Programm TEST verändert. Diese Veränderung ist auch noch nach dem Ende der Prozedur TEST wirk-sam.

Um sich den Unterschied zwischen einer lokalen und einer globalen Variablen deutlich zu machen, empfehle ich die folgende Variation des obigen Beispiels auszuprobieren:

Page 39: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 39

Belegen Sie die Variable "K" wieder mit dem Wert 100, und starten Sie das Programms TEST2.

PR TEST2 :K DZ :K ENDE

Der Aufruf von

TEST2 200

zeigt die Zahl 200, denn es wurde eine weitere Variable mit dem Namen "K" eingerichtet. Die-se Variable wird mit dem Beenden der Prozedur TEST2 wieder aus dem Arbeitsspeicher ent-fernt. Man kann sich durch die Eingabe von

DZ :K

hiervon überzeugen, denn es wird die Zahl 100 gedruckt.

Manchmal möchte man innerhalb einer Prozedur mit SETZE eine lokale Variable erzeugen. Hierfür verwendet man die Anweisung LOKAL.

Kommen wir zurück zur Berechnung von Zinsen:

Die Variable "P" wird nun für die Berechnung der Zinsen bei einem Kapital von 3000 DM folgendermaßen verwendet:

DZ 3000 * :P

Es erscheint das Ergebnis 120.

Das Ergebnis eines Rechenausdrucks kann auch mit Hilfe eines Programms ermittelt werden. Sie können LOGO beibringen, die Zinsen zu berechnen.

Dazu überlegt man wieder zuerst, welche Informationen LOGO zum Berechnen beliebiger Zinsen benötigt. Es leuchtet ein, daß Informationen über die Höhe des Kapitals und des Zins-satzes notwendig sind.

Die erste Programmzeile lautet also:

PR ZINSEN :ZINSSATZ :KAPITAL

Das Programm besteht dann nur noch aus einer Zeile:

RÜCKGABE :KAPITAL * :ZINSSATZ / 100

Zur Berechnung der Zinsen multipliziert man das Kapital mit dem Zinssatz und dividiert das Ergebnis durch 100. Das Besondere dieses Programms liegt in dem Wort RÜCKGABE. Diese Anweisung sorgt dafür, daß das Ergebnis des Rechenausdrucks an das aufrufende Programm zurückgegeben wird.

Ein Programm, das Wort RÜCKGABE enthält, nennt man Funktion. Für eine selbsterstellte Funktion gilt genau das Gleiche, was bereits für die eingebauten LOGO-Funktionen gesagt wurde. Eine Funktion gibt etwas zurück und an der aufrufenden Stelle muß sichergestellt sein, was mit dem zurückgegebenen Wert geschieht.

Die Eingabe von

ZINSEN 4 2000

Page 40: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

40 Programmieren

ruft eine Fehlermeldung hervor, denn die Funktion ZINSEN gibt einen Wert zurück, der wei-terverarbeitet werden muß.

Die folgenden Möglichkeiten der Weiterverwendung wären denkbar:

Das Ergebnis soll auf dem Bildschirm angezeigt werden. DZ ZINSEN 4 2000

Das Ergebnis soll unter einem Variablennamen gespeichert werden.

SETZE "ZINS" ZINSEN 4 2000

Das Ergebnis soll in einen Rechenausdruck eingebunden wer-den.

DZ 10 * ZINSEN 4 2000

Bei dem Erstellen von Prozeduren mit mehreren Eingabevariablen, ist zu beachten, daß die Zuweisung der Werte in der Reihenfolge erfolgt, in der die Variablen in der Kopfzeile des Pro-grammtexts aufgeführt wurden.

Beispiel:

Die 1. Zeile des Programms ZINSEN hat das folgende Aussehen:

PR ZINSEN :ZINSSATZ :KAPITAL

Beim Aufruf erwartet das Programm ZINSEN an erster Stelle den Zinssatz und an zweiter Stelle das Kapital. Bei einem Aufruf von

ZINSEN 40000 5

würde LOGO einen Zinssatz von 40000 und ein Kapital von 5 einsetzen.

Wir wollen nun ein Programm erstellen, das bei Eingabe des Kapitals und der Jahre die Höhe des Kapital nach Ablauf der Jahre ausdruckt. Es handelt sich dabei um eine Zinseszinsaufgabe. Die Zinsen werden jährlich dem Kapital hinzugefügt. Wir nehmen eine Verzinsung von 5% als feste Größe an. Eine Erweiterung auf einen beliebigen Zinssatz ist leicht möglich. Die Proze-duren zur Zinseszinsrechnung befinden sich unter dem Namen ZINSESZI.LOG in Ihrem LO-GO-Verzeichnis.

Die Frage nach der Information, die für die Berechnung der Zinseszinsen notwendig ist, ist damit bereits beantwortet. Es ergibt sich die folgende erste Programmzeile:

PR ZINSESZINS :JAHRE :KAPITAL

An einem Zahlenbeispiel machen wir uns nun die Rechenvorschrift klar:

Ausgangsdaten: Kapital: 1000 Laufzeit: 3 Jahre

Offensichtlich liegt hier wiederum eine Wiederholung mit sich verändernden Eingabedaten vor. Aus dem Kapital wird das neue Kapital einschließlich Zinsen berechnet und aus diesem dann im nächsten Jahr wiederum das neue Kapital am Jahresende.

Zeit Berechnung allgemein

Nach 1 Jahr 1000 * 1,05 = 1050 Kapital*1,05

Nach 2 Jahren 1050 * 1,05 = 1102,50 Kapital*1,05

Nach 3 Jahren 1102,50 * 1,05 = 1157,625 Kapital*1,05

Page 41: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 41

Versuchen wir eine Fallunterscheidung zu treffen:

1. Fall (einfachster Fall):

Im Jahre 0 (also nach 3 Jahren) wird das Kapital ausgedruckt und das Programm beendet:

WENN :JAHRE = 0 DANN DZ :KAPITAL RÜCKKEHR

2. Fall:

Die Berechnung des neuen Kapitals geschieht, indem man das Kapital mit 1,05 multipliziert:

SETZE "NEUES.KAPITAL" :KAPITAL * 1,05

Um das Jahr 0 zu erreichen, muß die Variable "JAHRE" bei jedem Aufruf um 1 vermindert werden. Die Zinseszinsen für das nächste Jahr werden aus "NEUES.KAPITAL" berechnet. Der Selbstaufruf von ZINSESZINS hat damit die folgende Form:

ZINSESZINS :JAHRE-1 :NEUES.KAPITAL

Das Programm ZINSESZINS besteht lediglich aus 5 Zeilen:

PR ZINSESZINS :JAHRE :KAPITAL WENN :JAHRE = 0 DANN DZ :KAPITAL RÜCKKEHR SETZE "NEUES.KAPITAL" :KAPITAL * 1,05 ZINSESZINS :JAHRE - 1 :NEUES.KAPITAL ENDE

Bei einem Aufruf mit

ZINSESZINS 3 1000

wird das Ergebnis 1157,625 ausgedruckt.

Genau wie bei den letzten Aufgaben aus dem Bereich der Grafik liegt auch hier eine rekursive Struktur der Lösung vor. Diese besteht diesmal aus ineinandergeschachtelten Rechenausdrü-cken. Das Kapital am Ende eines Jahres erhält man aus dem Kapital des Vorjahres durch die Multiplikation mit 1,05.

Für das Vorjahr gilt wiederum das Gleiche usw. Auch hier ist eine Beschreibung mit 'Mache das Gleiche ...' möglich. Daraus resultiert die rekursive Lösung der Aufgabe.

Das obige Programm kann noch vereinfacht werden, wenn man die Berechnung des neuen Kapitals bei dem Selbstaufruf ausführen läßt:

ZINSESZINS :JAHRE - 1 :KAPITAL * 1,05

In diesem Fall werden die Variable "NEUES.KAPITAL" und die 3. Programmzeile überflüs-sig:

PR ZINSESZINS :JAHRE :KAPITAL WENN :JAHRE = 0 DANN DZ :KAPITAL ZINSESZINS :JAHRE - 1 :KAPITAL * 1,05 ENDE

Es wäre durchaus denkbar, daß man das obige Ergebnis der Zinseszinsrechnung nicht nur auf dem Bildschirm sehen möchte. Um beispielsweise die Durchschnittszinsen nach 3 Jahren zu erhalten, muß das Ergebnis in einem Rechenausdruck eingebunden werden. Dazu müßten wir bei der obigen Programmversion zuerst den Programmtext ändern.

Page 42: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

42 Programmieren

Eine andere Möglichkeit besteht darin, das Programm ZINSESZINS in eine rekursive Funkti-on umzuwandeln. Erinnern wir uns daran: Eine Funktion ist ein Programm, das etwas zurück-gibt. Die 2. Zeile wird damit abgeändert zu:

WENN :JAHRE = 0 DANN RÜCKGABE :KAPITAL

Im Jahr 0 wird das Kapital zurückgegeben.

Der Selbstaufruf mit ZINSESZINS :JAHRE - 1 :KAPITAL * 1,05 in der vorletzten Pro-grammzeile ist dann nicht mehr erlaubt, weil LOGO nicht weiß, was mit der Rückgabe aus dem 'einfachsten Fall' geschehen soll. Wir werden gleich sehen, daß auch hier eine RÜCK-GABE erfolgen muß. Als vorletzte Programmzeile schreiben wir also:

RÜCKGABE ZINSESZINS :JAHRE - 1 :KAPITAL * 1,05

Die Bedeutung der RÜCKGABE-Anweisung in dieser Programmzeile wollen wir uns verdeut-lichen, indem wir den Programmablauf bei einem Aufruf von DZ ZINSESZINS 3 1000 schrittweise verfolgen. Dabei werden wir ein weiteres Modell zu Hilfe nehmen.

Wir wollen uns vorstellen, daß bei jedem Selbstaufruf Daten von einer Etage eines Verwal-tungsgebäudes in die nächst niedrigere übergeben werden. Bei unserem Verwaltungsgebäude hat die oberste Ebene die Nummer 0. Die einzelnen Etagen befinden sich also im Keller des Gebäudes.

In der obersten Etage starten wir mit:

DZ ZINSESZINS 3 1000

In den Schachteln "KAPITAL" und "JAHRE" der Ebene 1 stehen nun die benötigten Zahlen zur Verfügung.

Page 43: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 43

Nachdem die neuen Werte von der Ebene 1 an die Ebene 2 übergeben wurden, stehen sie dort ebenfalls in den entsprechenden Schachteln zur Verfügung.

Dieser Vorgang wiederholt sich dann jeweils wieder von Ebene zu Ebene, wobei vor jeder Übergabe der Wert der Variablen "JAHRE" um 1 vermindert und der Wert der Variablen "KAPITAL" mit 1,05 multipliziert wird.

In der Ebene 4 erfolgt dann wiederum die Überprüfung, ob der Wert der Variablen "JAHRE" 0 ist. Nun trifft diese Bedingung zu und die Anweisung hinter dem Wort DANN wird ausge-führt. Dort steht RÜCKGABE :kapital.

Damit wird das Programm ZINSESZINS in der Ebene 4 ohne einen weiteren Selbstaufruf be-endet und der momentane Wert der Variablen "KAPITAL" in die Ebene 3 zurückgegeben.

An dieser Stelle sollte dann deutlich werden, warum die RÜCKGABE-Anweisung vor dem Wort ZINSESZINS unbedingt notwendig ist. Die Höhe des Kapitals nach 3 Jahren ist zwar berechnet, das Ergebnis befindet sich jedoch in der 4. Ebene. Die Berechnung des Endkapitals wurde aber in der Ebene 0 'in Auftrag gegeben'. Dorthin muß es zurücktransportiert werden. Diesen Rücktransport leistet die RÜCKGABE-Anweisung in der vorletzten Programmzeile.

Page 44: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

44 Programmieren

Die Rückgabe von der Ebene 4 in die Ebene 3 erfolgt durch die Programmzeile

WENN :JAHRE=0 DANN RÜCKGABE :KAPITAL

Die Rückgabe von der Ebene 3 in die Ebene 2 und von der Ebene 2 in die Ebene 1 und von der Ebene 1 in die Ebene 0 erfolgt aufgrund der Zeile

RÜCKGABE ZINSESZINS :JAHRE-1 :KAPITAL * 1,05.

Erst in der Ebene 0 wird mit der DZ-Anweisung das Ausdrucken des Ergebnisses geleistet.

Am Beispiel des Programms ZINSESZINS können wir uns einen wichtigen Sachverhalt be-züglich des Abarbeitens von Rekursionen deutlich machen.

Den rekursiven Aufruf eines Programms können wir uns als den Aufruf eines Programms mit demselben Namen vorstellen. Bei jedem Aufruf steigt das Programm sozusagen eine Ebene tiefer. Alle Mechanismen, wie das Anlegen von lokalen Schachteln, funktionieren genauso, als hätte man ein Programm mit einem anderen Namen aufgerufen. In irgendeiner Ebene sollte eine Bedingung eintreten, die zu keinem Selbstaufruf mehr führt. Dann werden einzeln, Ebene für Ebene, die gestarteten Programme beendet. Beim Beenden in jeder Ebene können durchaus noch Anweisungen ausgeführt werden (z.B. die Rückgabe von Daten).

An einer letzten Version des Programms ZINSESZINS werden wir eine weitere Möglichkeit der Rückkehr aus einer rekursiven Funktion kennenlernen:

PR ZINSESZINS :JAHRE :KAPITAL WENN :JAHRE = 0 DANN RÜCKGABE :KAPITAL RÜCKGABE 1,05 * ZINSESZINS :JAHRE-1 :KAPITAL ENDE

Wir erkennen, daß lediglich in der vorletzten Zeile eine Veränderung eingetreten ist. Machen wir uns den Ablauf wieder an der Schemazeichnung klar.

Page 45: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 45

Im Unterschied zur obigen Version der Funktion ZINSESZINS verändert sich das :KAPITAL hier bei dem Selbstaufruf nicht. Die eigentliche Berechnung des neuen Kapitals findet erst bei der Rückgabe (Rücklauf) in die höhere Ebene statt.

In der Ebene 4 wird das :KAPITAL von 1000 an die Ebene 3 zurückgegeben. Dort wird die Zahl 1000 mit 1,05 multipliziert und in die Ebene 2 zurückgegeben. Dort wird die Zahl 1050 wiederum mit 1,05 multipliziert und an die Ebene 1 zurückgegeben usw.

Um die Funktion ZINSESZINS in der letzten Fassung zu erstellen, muß man jedoch nicht un-bedingt darüber nachdenken, wie das Programm in jeder Rekursionsebene reagieren soll.

Eine einfache Beschreibung der Rechenvorschrift als Fallunterscheidung kann hier schon aus-reichen:

1. Fall: Im Jahre 0 ist das Endkapital gleich dem :KAPITAL

WENN :JAHRE = 0 DANN RG :KAPITAL

2. Fall: In den anderen Jahren multipliziert man das Ergebnis der Zinseszinsberechnung des Vorjahres mit 1,05. Man erhält dann das aktuelle Kapital. Die entsprechende Pro-grammzeile lautet:

RÜCKGABE 1,05 * ZINSESZINS :JAHRE-1 :KAPITAL

Das Wesentliche an dieser Art der Programmentwicklung liegt darin, daß der Algorithmus nicht dadurch gewonnen wird, daß man den Ablauf bis in die niedrigste Rekursionsebene nachvollzieht. Bei dem Vorgehen über die Fallunterscheidung formuliert man eine Beziehung zwischen den alten und den neuen Daten. Die Beschreibung dieser Beziehung ist bereits die Lösung der Programmieraufgabe.

Dieses Vorgehen soll noch an einem anderen Beispiel demonstriert werden: das Berechnen der Fakultät einer Zahl.

Unter der Fakultät einer Zahl versteht man das Produkt aller natürlichen Zahlen, die kleiner oder gleich dieser Zahl sind.

Page 46: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

46 Programmieren

Die Fakultät von 3 (kurz: 3!) ist also:

3 • 2 • 1 = 6.

oder :

6! = 6 • 5 • 4 • 3 • 2 • 1 = 720

An diesen Beispielen kann man bereits eine Vorschrift zur Berechnung der Fakultät einer Zahl erarbeiten.

Wenn man die Fakultät von 3 berechnet hat, so erhält man 4! indem man 3! mit 4 multipliziert.

4 • 3! = 4 • 6 = 24

Um die Fakultät einer Zahl zu berechnen, benötigt LOGO die Zahl, mit der die Berechnung ausgeführt werden soll. Also:

PR FAKULTÄT :ZAHL

1. Fall: Die Fakultät der Zahl 1 ist 1.

WENN :ZAHL = 1 DANN RÜCKGABE 1

2. Fall: Die Fakultät einer Zahl erhält man, wenn man die Fakultät der nächst kleineren natürli-chen Zahl mit der Zahl selbst multipliziert.

RÜCKGABE :ZAHL * FAKULTÄT :ZAHL - 1

Das Programm FAKULTÄT sieht damit folgendermaßen aus:

PR FAKULTÄT :ZAHL WENN :ZAHL = 1 DANN RÜCKGABE 1 RÜCKGABE :ZAHL * FAKULTÄT :ZAHL - 1 ENDE

Sie sehen an diesem Beispiel, wie leicht im Grunde die Entwicklung von rekursiven Pro-grammen ist, wenn man versucht, die Beziehung des Ergebnisses zu dem einfacheren Fall zu beschreiben. Rekursive Programme und besonders rekursive Funktionen sind häufig leichter zu verstehen und leichter zu erstellen, wenn man sie als Beschreibung von Beziehungen zwi-schen Daten interpretiert.

Damit ist möglich, eine Denk- und Vorgehensweise zu üben, die bei einer bestimmten Art von Programmiersprachen verwendet werden muß. Es handelt sich hier um die sogenannten de-skriptiven Sprachen (z.B.: Prolog).

3.6 Verarbeitung von Listen Neben der Verarbeitung von Zahlen und dem Erstellen von Grafiken ist die Textverarbeitung ein weiteres wichtiges Anwendungsfeld der EDV. LOGO stellt den Datentyp Liste und einige grundlegende Befehle zur Veränderung von Listen zur Verfügung. Damit wird die Verarbei-tung von Wörtern und Texten ähnlich einfach wie das Erstellen von Grafiken mit dem Igel.

Betrachten Sie dazu die folgenden Sätze: Mädchen schleichen Katzen rechnen Katzen stehen Tische tanzen Computer tanzen

Page 47: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 47

Tische schleichen Katzen rechnen Computer stehen

Sie werden den einfachen Aufbau der Sätze sofort erkennen. Es handelt sich um Sätze, die aus einem Subjekt und einem Verb bestehen.

Wir haben bereits gesehen, wie man Sätze auf dem Bildschirm ausdrucken kann.

DZ [ Mädchen schleichen ]

DZ [ Katzen rechnen ]

Gerade der letzte Satz macht aber deutlich, daß diese Sätze wohl auf eine andere Art und Wei-se entstanden sind. Denn kein Mensch würde auf die Idee kommen, den Satz 'Katzen rechnen' zu bilden.

Es liegt die Vermutung nahe, daß die Sätze zufällig vom Computer zusammengesetzt wurden. Die zur Auswahl stehenden Wörter stellen wir mit Hilfe des LOGO-Datentyps Liste zur Ver-fügung.

SETZE "SUBJEKTE" [ Mädchen Computer Katzen Tische ]

SETZE "VERBEN" [ tanzen rechnen schleichen stehen ]

Den Datentyp Liste haben wir schon häufiger verwendet. In diesem Kapitel soll nun eine ge-nauere Auseinandersetzung mit Listen erfolgen und die Befehle zur Verarbeitung von Listen vorgestellt werden.

Wir wissen bereits, daß man Listen immer dann verwendet, wenn bestimmte Daten zusam-mengefaßt werden sollen. Mit Hilfe des Schachtelmodells läßt sich die Anweisung

SETZE "SUBJEKTE" [ Mädchen Computer Katzen Tische ]

so darstellen:

LOGO legt eine neue Schachtel mit dem Namen "SUBJEKTE" an. In diese Schachtel wird diesmal nicht ein einziger Zettel hineingelegt, sondern ein Zettelstapel. Auf jedem der Zettel ist eines der Subjekte notiert.

Die Anweisung

SETZE "VERBEN" [ tanzen rechnen schleichen stehen ]

legt entsprechend eine Schachtel mit einem Zettelstapel für die Verben an.

Page 48: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

48 Programmieren

Es stellt sich als nächstes die Frage, wie LOGO einzelne Zettel des Stapel erreichen kann. Die Anweisung

DRUCKEZEILE :SUBJEKTE

druckt immer die vollständige Liste, also kein einzelnes Wort aus der Liste. Um einen Zettel aus dem Stapel hervorzuholen, verwendet man die ERSTES-Anweisung, die das erste Element aus der Liste zurückgibt.

Mit der Anweisung

DRUCKEZEILE ERSTES :SUBJEKTE

erhält man das erste Element der Liste angezeigt. Es ist das Wort

Mädchen.

Damit können wir das erste Element aus der Liste herausholen. Wie gelangt man aber an den 2. bzw. 3. Zettel des Stapels? Eine Anweisung ZWEITES oder DRITTES steht nicht zur Ver-fügung.

Hierfür verwendet man das LOGO-Wort OHNEERSTES, das die Liste ohne ihr erstes Ele-ment zurückgibt.

Durch das Hintereinanderausführen der ERSTES- und OHNEERSTES-Anweisung können wir auch das 2. bzw. 3. Element einer Liste hervorholen. Am Modell des Zettelstapels wird das Vorgehen unmittelbar klar:

Um den zweiten Zettel zu betrachten, entfernt man den 1. Zettel (OHNEERSTES :LISTE). Nun liegt der Zettel mit dem gesuchten zweiten Wort an erster Stelle auf dem Stapel.

DZ ERSTES OHNEERSTES :SUBJEKTE

schreibt das Wort

Computer

auf den Bildschirm.

Entsprechend geht man vor, um das 3. Element aus der Liste herauszuholen. Durch das zwei-malige Ausführen der OHNEERSTES-Anweisung werden die ersten beiden Zettel von dem Stapel entfernt. Der 3. Zettel liegt nun oben. Es ist der neue erste Zettel.

DRUCKEZEILE ERSTES OHNEERSTES OHNEERSTES :SUBJEKTE

Zum besseren Verständnis wollen wir LOGO bei der Abarbeitung dieser Anweisung verfol-gen.

1. An dem Wort DRUCKEZEILE erkennt LOGO, daß es etwas auf dem Bildschirm ausdru-cken soll. Um zu erfahren, was gedruckt werden soll, liest LOGO das nächste Wort.

Page 49: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 49

2. An dem Wort ERSTES erkennt LOGO, daß es sich um das 1. Element einer Liste handelt. Um zu erfahren, welche Liste dies ist, liest LOGO das nächste Wort.

3. An dem Wort OHNEERSTES erkennt LOGO, daß es zuerst das 1. Element aus einer Liste entfernen soll. Um zu erfahren, aus welcher Liste es das 1. Element entfernen soll, liest es erneut das nächste Wort.

4. An dem Wort OHNEERSTES erkennt LOGO, daß es wiederum zuerst das 1. Element aus einer Liste entfernen soll. Um diese Liste zu erhalten, liest LOGO das nächste Wort.

5. An dem Doppelpunkt erkennt LOGO, daß sich die gesuchte Liste in einer Schachtel mit dem Namen "SUBJEKTE" befindet. LOGO holt die Liste aus der Schachtel.

6. LOGO entfernt nun zweimal jeweils das erste Element aus der Liste (Ausführung der Schritte 4 und 3) und schreibt das 1. Element der Restliste auf den Bildschirm (Ausführung der Schritte 2 und 1).

An diesem Beispiel wird deutlich, wie LOGO ineinandergeschachtelte Funktionen abarbeitet. LOGO arbeitet sich dabei von links nach rechts soweit vor, bis es alle Informationen gefunden hat, die es zur Ausführung der gesamten Anweisung benötigt. Bei dem obigen Beispiel sind das die Schritte 1 bis 5.

In diesen Schritten versucht LOGO jeweils herauszufinden, was es tun soll. Oder genauer: LOGO versucht herauszufinden, womit es das Gewünschte tun soll. Im Schritt 5 stehen LOGO dann alle Informationen zur Verfügung.

Die eigentliche Ausführung geschieht erst in Schritt 6. In diesem Schritt arbeitet sich LOGO sozusagen wieder an den Ausgangspunkt zurück, wobei es nun jeweils die Anweisungen auch ausführt, die in den einzelnen Schritten 'begonnen' wurden. D.h.: Es wird die OHNEERSTES-Anweisung aus Schritt 4 ausgeführt, dann die OHNEERSTES-Anweisung aus Schritt 3, dann die ERSTES-Anweisung aus Schritt 2 und zuletzt die DRUCKEZEILE-Anweisung aus Schritt 1.

Zusammenfassend können wir festhalten, daß die Ausführung von ineinandergeschachtelten Funktionen bei LOGO immer von rechts nach links geschieht.

Auf den ersten Blick wird Ihnen das Vorgehen mit Hilfe der OHNEERSTES-Anweisung als reichlich umständlich erscheinen. Wir werden jedoch gleich sehen, daß dieses Vorgehen dem rekursiven Konzept von LOGO sehr stark entgegenkommt.

Wir wollen dazu eine kleine Prozedur entwickeln, die alle Elemente einer Liste untereinander auf dem Bildschirm ausdruckt. Der Aufruf von

DRUCKELISTE :SUBJEKTE

soll den folgenden Ausdruck erzeugen:

Mädchen Computer Katzen Tische

Die erste Zeile des Programms steht damit fest:

PR DRUCKELISTE :LISTE

Page 50: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

50 Programmieren

In der einfachsten, nicht-rekursiven Version hätte das Programm DRUCKELISTE das folgen-de Aussehen, wobei nun die Abkürzungen für DRUCKEZEILE verwendet wird:

PR DRUCKELISTE :LISTE DZ ERSTES :LISTE DZ ERSTES OHNEERSTES :LISTE DZ ERSTES OHNEERSTES OHNEERSTES :LISTE DZ ERSTES OHNEERSTES OHNEERSTES OHNEERSTES :LISTE ENDE

Dieses Beispiel macht klar, daß LOGO nach der vollständigen Ausführung einer Anweisung alle Zettel wieder auf den Stapel legt. Der ursprüngliche Zustand der Liste wird wiederherge-stellt. Wäre dies nicht der Fall, so könnte die Zeile DZ ERSTES OHNEERSTES OH-NEERSTES OHNEERSTES :LISTE nicht mehr ausgeführt werden, weil bereits alle Zettel vom Stapel genommen wurden.

Diese Version der Prozedur DRUCKELISTE verarbeitet lediglich Listen mit genau 4 Elemen-ten. Für Listen mit beliebigen vielen Elementen verwenden wir einen Selbstaufruf des Pro-gramms DRUCKELISTE. Versuchen wir wieder zwei Fälle zu unterschieden:

1. Fall (einfachster Fall):

Wenn die Liste leer ist, so ist das Programm DRUCKELISTE beendet.

WENN LEER? :LISTE DANN RÜCKKEHR

2. Fall (Zurückführen auf den einfacheren Fall):

Durch das Entfernen des jeweils ersten Elements aus der Liste mit der OHNEERSTES-Anweisung wird die Liste verkürzt, so daß der erster Fall irgendwann eintreten muß. Die Beschreibung 'Mache das Gleiche mit der um das 1. Element verkürzten Liste' ist möglich. Der Selbstaufruf geschieht mit

DRUCKELISTE OHNEERSTES :LISTE

Vorher soll das jeweils erste Element der Liste ausgedruckt werden. Die endgültige Version des Programms DRUCKELISTE hat damit die folgende Form. Es wird dabei die Abkürzung RK für RÜCKKEHR verwendet.

PR DRUCKELISTE :LISTE WENN LEER? :LISTE DANN RK DZ ERSTES :LISTE DRUCKELISTE OHNEERSTES :LISTE ENDE

Machen wir uns klar, wie sich die "LISTE" bei jedem Selbstaufruf von DRUCKELISTE ver-ändert.

Wir starten die Prozedur mit

DRUCKELISTE [ Mädchen Computer Katzen Tische].

Bei jedem Selbstaufruf wird das erste Element aus der "LISTE" herausgenommen:

1. Selbstaufruf DRUCKELISTE [ Computer Katzen Tische ]

2. Selbstaufruf DRUCKELISTE [ Katzen Tische ]

Page 51: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 51

3. Selbstaufruf DRUCKELISTE [ Tische ]

4. Selbstaufruf DRUCKELISTE [ ]

Im Unterschied zu der ersten Version der Prozedur DRUCKELISTE wird hier nicht der ur-sprüngliche Zustand der Liste wiederhergestellt. Erinnern wir uns: Bei jedem Aufruf einer Pro-zedur wird in unserem Fall eine neue Schachtel mit dem Namen "LISTE" erzeugt und eine Kopie der um das erste Element verkürzten "LISTE" hineingelegt.

Kommen wir nun zu unserem Ausgangsproblem zurück. Wir wollten LOGO dazu veranlassen, zufällig zusammengesetzte Sätze auf den Bildschirm zu schreiben.

Wir haben dazu eine Liste mit Subjekten und eine Liste mit Verben zur Verfügung gestellt. Damit verschiedene Sätze entstehen, soll LOGO aus der Liste zufällig ein Element auswählen. Hierfür benötigen wir eine Prozedur, die uns ein Wort von einer beliebigen Position der Liste zurückgibt.

Das Vorgehen über die explizite Angabe von ineinandergeschachtelten OHNEERSTES- und ERSTES-Anweisungen haben wir bereits kennengelernt. Dieses Verfahren ist ungeeignet, weil es nicht mit beliebig 'langen' Listen funktioniert.

Wir wollen nun eine Prozedur entwickeln, die aus einer Liste mit beliebig vielen Elementen ein Element von irgendeiner Stelle zurückgibt.

Nennen wir diese Prozedur HOLE. Der Aufruf von

HOLE 3 :SUBJEKTE

soll das 3. Element der Liste "SUBJEKTE" ausdrucken.

Der Aufruf von

HOLE 5 [ a b c d e f g h i ]

druckt das 5. Element der nachfolgenden Liste, also den Buchstaben „e“.

Die Prozedur HOLE erhält als Information die POSITION des gewünschten Elements in der LISTE sowie die LISTE selbst:

PR HOLE :POSITION :LISTE

Den Rest der Prozedur erhalten wir wieder über eine Fallunterscheidung.

1. Fall (einfachster Fall):

Dieser Fall tritt ein, wenn das gesuchte Element an erster Stelle der Liste steht, die Va-riable "POSITION" also den Wert 1 hat. Dann wird das 1. Element der Liste ausge-druckt und das Programm beendet.

WENN :POSITION = 1 DANN DZ ER :LISTE RK

2. Fall:

Wenn der Wert der Variablen "POSITION" den Wert 1 erreichen soll, so muß die Va-riable "POSITION" bei jedem Selbstaufruf um 1 vermindert werden. Dabei wird das jeweils 1. Element aus der Liste entfernt. Es wird hier die Abkürzung OE für OH-NEERSTES verwendet.

HOLE :POSITION - 1 OE :LISTE

In der vollständigen Prozedur steht ER als Abkürzung für die ERSTES-Anweisung.

Page 52: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

52 Programmieren

PR HOLE :POSITION :LISTE WENN :POSITION = 1 DANN DZ ER :LISTE RK HOLE :POSITION - 1 OE :LISTE ENDE

Diese Version des Programms HOLE sorgt lediglich für einen Ausdruck des gewünschten E-lements auf dem Bildschirm. Durch das Einsetzen der RÜCKGABE-Anweisung (RG) ver-wandeln wir die Prozedur in eine Funktion. Nun ist es dem Benutzer überlassen, wie er das gesuchte Element weiterverwendet.

PR HOLE :POSITION :LISTE WENN :POSITION = 1 DANN RG ER :LISTE RG HOLE :POSITION - 1 OE :LISTE ENDE

Die Eingabe von

DZ HOLE 3 :SUBJEKT

sorgt für den Ausdruck des Wortes

Katzen

Wenn Sie das Programm HOLE nicht selbst schreiben wollen, so können Sie das LOGO-Wort ELEMENT verwenden. Es liefert das gleiche Ergebnis wie das selbstgeschriebene Programm HOLE.

Um unterschiedliche Sätze zu erhalten, lassen wir die Position des Elements zufällig auswäh-len. Dazu verwenden wir das LOGO-Wort ZUFALLSZAHL, das eine Zufallszahl zurückgibt.

Eine zufällige Zahl von 1 bis 4 liefert die Anweisung

1 + ZUFALLSZAHL 4.

Für Listen mit unbekannter Anzahl von Elementen läßt man mit der ANZAHL-Anweisung zuerst die Anzahl der Elemente zählen.

Mit dem Rechenausdruck

1 + ZUFALLSZAHL ANZAHL :SUBJEKTE

erhält man dann eine Zufallszahl von 1 bis zu der Anzahl der Listenelemente für Listen von beliebiger Länge.

Die Abarbeitung des Terms nach dem '+'-Zeichen geschieht wiederum von rechts nach links:

LOGO holt die Liste aus der Schachtel mit dem Namen "SUBJEKTE", bestimmt dann die ANZAHL der Elemente und verwendet das Ergebnis davon als Höchstwert der zu bestimmen-den Zufallszahl. Weil der Befehl ZUFALLSZAHL immer eine Zufallszahl zwischen 0 und dem Höchstwert - 1 zurückgibt, wird die Zahl 1 addiert.

Wir können nun ein Prozedur HOLEZUFALL erstellen, die aus der eingegebenen Liste zufäl-lig ein Element zurückgibt:

PR HOLEZUFALL :LISTE RÜCKGABE HOLE 1 + ZUFALLSZAHL ANZAHL :LISTE :LISTE ENDE

Page 53: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 53

Die Funktion HOLEZUFALL verwenden wir dazu, Zufallssätze auf den Bildschirm zu schrei-ben:

DZ SATZ HOLEZUFALL :SUBJEKTE HOLEZUFALL :VERBEN

Das LOGO-Wort SATZ gibt einen Satz bzw. eine Liste aus den nachfolgenden Wörtern zu-rück.

Mehrere Sätze kann man mit dem Programm SÄTZE erzeugen:

PR SÄTZE WH 10 [ DZ SATZ HOLEZUFALL :SUBJEKTE HOLEZUFALL :VERBEN ] ENDE

Damit haben wir alle Prozeduren zum Erzeugen der anfangs dargestellten Zufallssätze fertig. Sie sind unter dem Namen SÄTZE.LOG in Ihrem LOGO-Verzeichnis zu finden. Sie können diese Prozeduren ohne Schwierigkeiten erweitern und LOGO so in die Lage versetzen, Com-putergedichte zu erzeugen. Sie benötigen dazu nur noch einige weitere Satzteile und Satz-schablonen. Das folgende Gedicht stammt aus dem Buch mit dem Titel 1‘LOGO Computer-sprache für Eltern und Kinder’ von Daniel Watt. Hier wird das Erzeugen von Computergedich-ten ausführlich erläutert.

HERBSTIGE SCHATTEN TRAURIG RENNEN LANGSAM SCHWIMMEN BLAUE, WIRBELNDE, HERBSTIGE PINIEN KOCHENDE GEWITTER QUIRLEN WEICH UND WEICH SCHNEEFLOCKEN DUNSTIGE BLAUE FORSTE SCHNELL SCHLAFEN

Unter den Beispielprogrammen auf der Diskette befindet sich weiterhin die Datei LIED. Die dort vorhandene Prozedur zeigt, wie man mit Hilfe des Listenkonzepts Lieder erzeugen kann. Weitere Anregungen hierzu finden Sie in dem Arbeitsbuch LOGO 2 von B. Grabinger.

Mit Hilfe des Listenkonzepts ist es aber auch möglich, die Eingaben des Benutzers auszuwer-ten. Auf diese Art und Weise kann man LOGO mit der Fähigkeit ausstatten, einen Dialog mit dem Benutzer zu führen. Dies soll an einer einfachen Version des bekannten Programms ELI-ZA demonstriert werden. Eine erste Version von ELIZA hat der spätere Computerkritiker Jo-seph Weizenbaum in den 60-iger Jahren entwickelt.

Bei dem Programm ELIZA übernimmt der Computer die Rolle eines Psychiaters, der ein Ge-spräch mit einem Patienten führt. Das vollständige Programm befindet sich unter dem Namen ELIZA.LOG in Ihrem LOGO-Verzeichnis. Ein mögliches Gespräch könnte folgendermaßen aussehen:

ELIZA : WAS HABEN SIE FÜR PROBLEME? PATIENT : ICH FÜHLE MICH UNWOHL. ELIZA: WAS SIE NICHT SAGEN, SIE FÜHLEN SICH UNWOHL. PATIENT : DIE PROBLEME WACHSEN MIR ÜBER DEN KOPF. ELIZA : ERZÄHLEN SIE WEITER. PATIENT : ICH KANN NUR SCHWER EINSCHLAFEN. ELIZA: SIE FÜHLEN ALSO, SIE KÖNNEN NUR SCHWER EINSCHLAFEN.

1 Daniel Watt:LOGO Computersprache für Eltern und Kinder. Te-Wi Verlag, 1983 2 B. Grabinger: Arbeitsbuch LOGO. Dümmler Verlag, 1992.

Page 54: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

54 Programmieren

PATIENT : KEINER HÖRT MIR RICHTIG ZU. ELIZA : VIELE LEUTE FÜHLEN WIE SIE.

Für die Entwicklung des Programms ELIZA ist es notwendig, die Antworten von ELIZA zu analysieren.

Es werden offensichtlich zwei Arten von Antworten verwendet. Bei dem einen Antworttyp handelt es sich um feste Antwortsätze. Hierzu gehören: 'Erzählen Sie weiter.' 'Viele Leute füh-len wie Sie.'

Bei dem zweiten Antworttyp baut ELIZA die Äußerung des Patienten in seinen Antwortsatz ein. Die Äußerung des Patienten 'Ich fühle mich unwohl' wird verwandelt in 'Was Sie nicht sagen, Sie fühlen sich unwohl.' Hierbei stellt ELIZA zuerst einen festen Satzanfang voran. Dieser lautet: 'Was Sie nicht sagen'. Ein weiterer möglicher Satzanfang ist: 'Sie fühlen also, ...' Weiterhin wird der Satzteil 'Ich fühle' ersetzt durch 'Sie fühlen'. Dabei wird das Verb konju-giert und das Wort 'Ich' durch das Wort 'Sie' ersetzt. Von der deutschen Grammatik wissen wir, daß die Konjugation des Verbs nur dann erfolgt, wenn der Patient das Wort 'Ich' verwendet. Auf die Äußerung 'Die Probleme wachsen mir über den Kopf.' würde ELIZA z.B. antworten: 'Sie fühlen also, die Probleme wachsen Ihnen über den Kopf.' Eine Veränderung des Verbs findet hier nicht statt.

Die dritte Veränderung besteht darin, daß jedes Pronomen von der ersten in die zweite Person zu verwandeln ist.

Wir benötigen somit zwei Prozeduren zum Ersetzen. Die Prozedur ERSETZE1 durchsucht die Äußerung des Patienten nach dem Wort 'Ich', ersetzt dieses durch 'Sie' und konjugiert das nachfolgende Verb. Die Prozedur ERSETZE2 durchsucht den Satz des Patienten nach einem Pronomen und ersetzt dieses durch die entsprechende Form der 2. Person.

Beginnen wir mit dem Programm ERSETZE2. Für dieses Programm erstellen wir eine Funkti-on PRONOMEN, die das eingegebene Wort daraufhin überprüft, ob es sich um ein Pronomen handelt. Wenn dies zutrifft wird das zu ersetzende Pronomen zurückgegeben, sonst das ur-sprüngliche Wort.

PR PRONOMEN :WORT WENN :WORT = „MIR“ DANN RG „IHNEN“ WENN :WORT = „MICH“ DANN RG „SICH“ WENN :WORT = „MEIN“ DANN RG „IHR“ WENN :WORT = „MEINE“ DANN RG „IHRE“ RG :WORT ENDE

Das Programm ERSETZE2 benötigt als Information die Liste mit der Äußerung des Patienten, also z.B. [ Ich fühle mich nicht wohl ]. In einer ersten Version werden wir dem Programm ERSETZE2 zum besseren Verständnis eine weitere Liste übergeben, die den neuen Satz auf-nehmen soll. Diese Liste ist beim ersten Aufruf leer.

PR ERSETZE2 :LISTE :NEUE.LISTE

Die beschriebene Aufgabe legt eine rekursive Lösung nahe, weil jedes Wort bei unterschied-lich langen Sätzen zu überprüfen ist. Es muß sich darüber hinaus um eine rekursive Funktion handeln, die den neuen Satz mit den veränderten Pronomen zurückgibt. Die Funktion ERSET-ZE2 liefert beispielsweise die Liste [ Ich fühle sich nicht wohl ]. Auf diese Liste muß dann

Page 55: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 55

selbstverständlich noch die Prozedur ERSETZE1 angewendet werden, um die korrekte Ant-wort zu erhalten.

Unterscheiden wir 2 Fälle:

1. Fall (einfachster Fall):

Wenn die "LISTE" leer ist, so wird die "NEUE.LISTE" zurückgegeben.

WENN LEER? :LISTE DANN RG :NEUE.LISTE

2. Fall:

Das jeweils erste Element der "LISTE" wird der Funktion PRONOMEN übergeben. Die Rückgabe von PRONOMEN wird an letzter Stelle in die "NEUE.LISTE" einge-fügt. Daraufhin ruft sich ERSETZE2 mit der erweiterten "NEUE.LISTE" erneut auf, wobei das erste Element aus der "LISTE" entfernt wird.

SETZE "NEUES.WORT" PRONOMEN ERSTES :LISTE SETZE "NEUE.LISTE" MITLETZTEM :NEUES.WORT :NEUE.LISTE ERSETZE2 OHNEERSTES :LISTE :NEUE.LISTE

Für das Einfügen in eine Liste verwenden wir das LOGO-Wort MITLETZTEM, das ein Ele-ment an letzter Stelle in die Liste einfügt und die entstandene Liste zurückgibt.

Die Version 1 des Programms ERSETZE2 sieht damit folgendermaßen aus:

PR ERSETZE2 :LISTE :NEUE.LISTE WENN LEER? :LISTE DANN RG :NEUE.LISTE SETZE "NEUES.WORT" PRONOMEN ERSTES :LISTE SETZE "NEUE.LISTE" MITLETZTEM :NEUES.WORT :NEUE.LISTE RG ERSETZE2 OHNEERSTES :LISTE :NEUE.LISTE ENDE

Der wesentliche Grundgedanke dieses Programms besteht darin, aus der "LISTE" jeweils das erste Element zu entfernen und das veränderte Wort in die "NEUE.LISTE" einzufügen. Die "LISTE" wird dabei immer kleiner und die "NEUE.LISTE" wächst. Ich überlasse es diesmal Ihnen, den Ablauf dieser Prozedur schrittweise nachzuvollziehen. Wenn Sie dies tun, wird Ihnen klar werden, daß nur durch das Einfügen des jeweils ersten Elements an die letzte Stelle der neuen Liste die richtige Reihenfolge der Wörter in dem Satz erhalten bleibt.

In dem Programm ERSETZE2 wurden zwei neue Variablen eingerichtet, die Variable "NEU-ES.WORT" und "NEUE.LISTE". Dieser Vorgang kostet Speicherplatz und verringert die Ge-schwindigkeit von LOGO. Zu einem guten Programmierstil gehört es deshalb, auf die SETZE-Anweisung zu verzichten, wenn es möglich ist. Wir wissen aus vorangegangenen Kapiteln, daß man bei der Übergabe von Werten an Programme bestimmte Operationen ausführen kann. Bei der Verwendung dieser Methode werden die beiden Variablen "NEUES.WORT" und "NEUE.LISTE" überflüssig.

Die Variable "NEUES.WORT" kann weggelassen werden, wenn wir bei dem Aufruf von MIT-LETZTEM die Funktion PRONOMEN einsetzen:

SETZE "NEUE.LISTE" MITLETZTEM PRONOMEN ER :LISTE :NEUE.LISTE

Die Variable "NEUE.LISTE" wird überflüssig, wenn wir bei dem Selbstaufruf von ERSET-ZE2 die Anweisung MITLETZTEM .... einsetzen:

Page 56: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

56 Programmieren

RG ERSETZE2 OE :LISTE MITLETZTEM PRONOMEN ER :LISTE :NEUE.LISTE

Zur besseren Übersicht kann man die beiden Eingaben von ERSETZE2 einklammern. Für den Ablauf des Programms ist dies jedoch nicht notwendig.

RG ERSETZE2 (OE :LISTE) (MITLETZTEM PRONOMEN ER :LISTE :NEUE.LISTE)

Machen wir uns noch einmal durch eine Ablaufbeschreibung klar, wie LOGO diese Pro-grammzeile abarbeitet:

1. LOGO liest das erste Wort. Für die Ausführung der Anweisung RÜCKGABE muß LOGO wissen, was es zurückgeben soll.

2. LOGO liest das nächste Wort (ERSETZE2) und erkennt daran, daß es für die Ausführung dieser Anweisung zwei Informationen holen muß.

3. Um die erste Information zu holen, liest LOGO das nächste Wort. An dem Wort OE er-kennt LOGO, daß es dafür das erste Element aus einer Liste entfernen soll. Das Doppel-punkt vor dem nächsten Wort ist eine Zeichen dafür, daß sich diese Liste in der Schachtel mit dem Namen "LISTE" befindet. Es stehen nun alle Daten für Ermittlung der ersten In-formation von ERSETZE2 zur Verfügung. LOGO kann die Anweisung OE :LISTE ausfüh-ren.

4. Um die 2. Information für das Programm ERSETZE2 zu erhalten, liest LOGO das nächste Wort.

5. An dem Wort MITLETZTEM erkennt LOGO, daß es für die Ausführung von MITLETZ-TEM wiederum zwei Informationen holen muß. Die erste Information ist das einzufügende Wort. Die zweite Information ist die Liste, in die eingefügt wird.

6. Um das einzufügende Wort zu ermitteln, liest LOGO das nächste Wort. LOGO erkennt, daß es für das Programm PRONOMEN ein Wort als Eingabe benötigt und liest dazu das nächs-te Wort. Auch das Wort ER liefert noch nicht die gewünschte Information, sondern sagt nur, daß es sich um das erste Wort aus einer Liste handelt. Erst mit dem nächsten Wort (:LISTE) ist LOGO dazu in der Lage, die unter dem Namen "LISTE" abgespeicherte Liste zu holen, das erste Element herauszunehmen und dieses Wort von der Funktion PRONO-MEN austauschen zu lassen.

7. Die Rückgabe von PRONOMEN ist das Wort, das in die "NEUE.LISTE" an letzter Stelle eingefügt wird.

Die Version 2 des Programms ERSETZE2 sieht damit folgendermaßen aus:

PR ERSETZE2 :LISTE :NEUE.LISTE WENN LEER? :LISTE DANN RG :NEUE.LISTE RG ERSETZE2 (OE :LISTE) (MITLETZTEM PRONOMEN ER :LISTE :NEUE.LISTE) ENDE

Eine weitere Verbesserung des Programms ERSETZE2 ist möglich, wenn man den Aufbau der neuen Liste nicht beim Selbstaufruf, sondern bei dem Rücklauf vornimmt. Das Programm wird dann noch ein wenig kürzer, weil die Variable "NEUE.LISTE" nicht mehr notwendig ist.

Bei der Entwicklung dieser Version führen wir wieder eine Fallunterscheidung durch:

Page 57: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 57

1. Fall:

Bei einer leeren "LISTE" wird die leere Liste zurückgegeben.

WENN LEER? :LISTE DANN RG [ ]

2. Fall:

In allen anderen Fällen entsteht die neue Liste dadurch, daß die Rückgabe von PRO-NOMEN ER :LISTE an erster Stelle in die Liste eingesetzt wird, die von ERSETZE2 zurückgegeben wird.

RG MITERSTEM (PRONOMEN ER :LISTE) (ERSETZE2 OE :LISTE)

Hier die Version 3 des Programms ERSETZE2:

PR ERSETZE2 :LISTE WENN LEER? :LISTE DANN RG [ ] RG MITERSTEM (PRONOMEN ER :LISTE) (ERSETZE2 OE :LISTE) ENDE

Zum besseren Verständnis soll die Funktionsweise dieser Funktion an der Liste [ ohne mich ] verfolgt werden. Wir verwenden dazu wieder das Modell von dem Verwaltungsgebäude.

Nach der Eingabe von

DZ ERSETZE2 [ ohne mich ]

wird in der obersten Etage ERSETZE2 [ ohne mich ] in Auftrag gegeben:

Ebene 1:

Die "LISTE" ist nicht leer.

PRONOMEN ER :LISTE liefert das Wort 'ohne'. Dieses Wort soll an erster Stelle in eine Liste eingefügt werden. Zur Ermittlung dieser Liste ruft sich ERSETZE2 mit OHNEERSTES :LISTE selbst auf.

Übergabe der Liste [ mich ] an Ebene 2.

Ebene 2:

Die "LISTE" ist nicht leer.

PRONOMEN ER :LISTE liefert nach dem Austausch das Wort 'sich'. Dieses Wort soll an ers-ter Stelle in eine Liste eingefügt werden. Zur Ermittlung dieser Liste ruft sich ERSETZE2 mit OHNEERSTES :LISTE selbst auf.

Übergabe der Liste [ ] an Ebene 3.

Ebene 3:

Die "LISTE" ist leer. Die leere Liste wird in die Ebene 2 zurückgegeben. Die Arbeit in Ebene 3 ist beendet.

In Ebene 2 ist nun die gesuchte Liste bekannt. Es ist die leere Liste [ ]. In sie wird an erster Stelle das Wort 'sich' eingefügt und die Liste [ sich ] in die Ebene 1 zurückgegeben.

In Ebene 1 ist nun ebenfalls die gesuchte Liste bekannt. Es ist die Liste [ sich ] aus Ebene 2. In sie wird an erster Stelle das Wort 'ohne' eingefügt. Die Liste [ ohne sich ] wird in die Ebene 0 zurückgegeben.

Page 58: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

58 Programmieren

In der Ebene 0 wird die zurückgegebene Liste [ ohne sich ] gedruckt.

Das neue Element muß diesmal an erster Stelle in die Liste eingefügt werden, weil die Liste erst bei der Rückkehr aufgebaut wird.

Sie erkennen an der Prozedur ERSETZE2, warum man von LOGO-Programmen behauptet, sie seien kürzer und eleganter als Programme in anderen Programmiersprachen. Mit der Pro-grammierung von LOGO verbunden ist das Bemühen, die Veränderung von Werten bei der Parameterübergabe vorzunehmen und damit auf die Verwendung von Variablen weitgehend zu verzichten. Nutzt man zusätzlich noch die Möglichkeit aus, bei der Rückkehr aus der Rekursi-on bestimmte Operationen auszuführen, so verringert sich die Anzahl der Variablen weiter.

Es wird aber auch deutlich, daß das Erstellen solcher Programme nur dann möglich ist, wenn man die Verwendung geschachtelter Funktionen und das Programmieren von Rekursionen sicher beherrscht. Gerade für den Anfänger ist das jedoch manchmal ein großes Problem.

Es soll hier kurz das Programm ERSETZE1 entwickelt werden. Auf die weiteren Bausteine für ELIZA gehe ich an dieser Stelle nicht näher ein. Das vollständige Programm befindet sich als Beispielprogramm auf der Diskette.

Erinnern wir uns: Das Programm ERSETZE1 hatte die Aufgabe, das Wort 'Ich' durch 'Sie' zu ersetzen und das nachfolgende Verb zu konjugieren. Wir benötigen zuerst eine Funktion KONJUGIERE, die das eingegebene Verb konjugiert.

Dabei sind zwei Fälle zu unterschieden.

Handelt es sich um eine unregelmäßiges Verb, so ist das Verb durch ein neues zu ersetzen. So wird beispielsweise 'kann' durch 'können' ersetzt. Wenn das Verb regelmäßig ist, so wird ledig-lich ein 'n' angehängt. Aus 'fühle' wird 'fühlen'.

PR KONJUGIERE :VERB WENN :VERB = "kann" DANN RG "können" WENN :VERB = "bin" DANN RG "sind" WENN :VERB = "war" DANN RG "waren" RG WORT :VERB "n" ENDE

Bei der Anweisung WORT in der vorletzten Zeile handelt es sich um eine LOGO-Anweisung, die nachfolgenden Wörter zu einem neuen Wort zusammenfügt und dieses zurückgibt. Die Fallunterscheidung für das Programm ERSETZE1 lautet:

1. Fall:

Bei einer leeren "LISTE" wird die leere Liste zurückgegeben.

WENN LEER? :LISTE DANN RG [ ]

2. Fall:

In allen anderen Fällen ist zu überprüfen, ob das erste Wort der "LISTE" das Wort 'ich' ist.

PRÜFE ERSTES :LISTE = 'ich'

Wenn dies nicht der Fall ist, so wird das erste Element der "LISTE" an die Rückgabe von ERSETZE1 an erster Stelle eingefügt.

WENNFALSCH RG MITERSTEM (ER :LISTE) (ERSETZE1 OE :LISTE)

Page 59: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 59

Wenn das erste Wort 'ich' ist, dann wird das Wort 'sie' und das konjugierte Verb an erster Stelle in die Rückgabe von ERSETZE1 eingefügt. Dabei sind diesmal die beiden ersten Elemente aus der "LISTE" zu entfernen.

WENNWAHR RG MITERSTEM 'SIE' MITERSTEM ( KONJUGIERE ER OE __ :LISTE ) ERSETZE1 OE OE :LISTE.

Durch den Strich am Ende der ersten Zeile wird ausgedrückt, daß es sich bei dieser und der nachfolgenden Zeile um eine einzige Programmzeile handelt, die hier aus drucktechnischen Gründen in zwei Zeilen aufgeteilt ist. Bei 'LOGO für den PC' ist es nicht erlaubt, eine Pro-grammzeilen auf mehrere Bildschirmzeilen zu verteilen.

Die LOGO-Anweisungen PRÜFE, WENNWAHR und WENNFALSCH bilden eine Einheit. Die Befehle hinter WENNWAHR werden ausgeführt, wenn der Ausdruck hinter der vorange-gangenen PRÜFE-Anweisung WAHR ist. Die Befehle hinter WENNFALSCH werden bei einer FALSCHen PRÜFE-Bedingung zur Ausführung gebracht. PRÜFE, WENNWAHR und WENNFALSCH verwendet man immer dann, wenn die entsprechende Anweisungszeile mit WENN-DANN-SONST zu lang wäre.

Das gesamte Programm ERSETZE1 besteht aus den folgenden 5 Zeilen:

PR ERSETZE1 :LISTE WENN LEER? :LISTE DANN RG [ ] PRÜFE ERSTES :LISTE = „ich“ WENNFALSCH RG MITERSTEM (ER :LISTE) (ERSETZE1 OE :LISTE) WENNWAHR RG MITERSTEM SIE MITERSTEM (KONJUGIERE ER OE __ :LISTE) ERSETZE1 OE OE :LISTE ENDE

Bei dem vorliegenden Programm ELIZA handelt es sich nur um eine einfache Version. Auf die Patientenäusserung 'Ich glaube, daß mich niemand mag' wird unsere ELIZA keine beson-ders schöne Antwort geben. Wenn Sie Spaß daran haben, so können Sie ELIZA dahingehend erweitern, daß es auf die unterschiedlichsten Äußerungen korrekt reagiert. In diesem Zusam-menhang sollten Sie jedoch auch einmal über den Sinn und die möglichen Auswirkungen einer solchen Perfektionierung nachdenken. Dies war eigentlich das Ziel, das Joseph Weizenbaum mit seinem ELIZA-Programm erreichen wollte.

3.7 Wahrheitswerte Im Mathematikunterricht lernen die Schüler Aussagen kennen. Aussagen werden dort als Sätze definiert, bei denen entschieden werden kann, ob sie wahr oder falsch sind.

Es ist möglich, sich das Ergebnis dieser Überprüfung von LOGO auf dem Bildschirm ausdru-cken zu lassen.

DZ 2 + 3 = 5

liefert auf dem Bildschirm das Ergebnis WAHR.

Bei

DZ 1 + 1 = 1

erscheint das Ergebnis FALSCH.

Page 60: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

60 Programmieren

LOGO erlaubt die folgenden Vergleichsoperationen:

= gleich < kleiner als > größer als <= kleiner gleich >= größer gleich

Diese Operationen sind bei Zahlen, Wörtern und Texten erlaubt. Bei Listen kann nur auf Gleichheit überprüft werden.

Eine Aussageform ist ein Satz mit einer Variablen, der nach Belegung der Variablen mit einem Wert in eine Aussage übergeht.

DZ 2 * ( :X + 4 ) + 7 = 29

ergibt eine Fehlermeldung, denn die Variable "X" hat noch keinen Wert.

Nach der Eingabe von

SETZE "X" 3 DZ 2 * ( :X + 4 ) + 7 = 29

erhalten wir den Ausdruck FALSCH. Man könnte nun verschiedene Werte für "X" einsetzen und würde sicherlich nach mehreren Versuchen das Ergebnis WAHR erhalten.

Wir wollen dieses Suchen jedoch von einem Programm ausführen lassen und schreiben:

LERNE SUCHE :X DR :X DZ 2 * ( :X + 4 ) + 7 = 29 WENN 2 * ( :X + 4 ) + 7 = 29 DANN DZ :X RÜCKKEHR SUCHE :X + 1 ENDE

Dieses rekursive Programm wird mit einem kleinen Wert gestartet. Es druckt den Wert von "X" und den Wahrheitswert der Aussageform für dieses "X". Wenn der Wahrheitswert WAHR ist, wird das Programm beendet und der gesuchte Wert von "X" ausgegeben.

Bei einem Aufruf von SUCHE 0 erhalten wir die folgenden Ausgabe auf dem Bildschirm:

0 FALSCH 1 FALSCH 2 FALSCH 3 FALSCH 4 FALSCH 5 FALSCH 6 FALSCH 7 WAHR 7

Wir erkennen an diesem Beispielprogramm, wie die WENN-Anweisung und die PRÜFE-Anweisung funktionieren. Die WENN-Anweisung ermittelt den Wahrheitswert der Aussage hinter WENN. Wir können uns dazu vorstellen, daß nach der Auswertung der Aussage der zugehörige Wahrheitswert an die Stelle der Aussage eingesetzt wird. In dem obigen Beispiel hätte die Zeile

Page 61: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 61

WENN 2 * ( :X + 4 ) + 7 = 29 DANN DZ :X RÜCKKEHR

nach der Auswertung für X = 0 das folgende Aussehen:

WENN FALSCH DANN DZ :x RÜCKKEHR

Ergibt sich der Wahrheitswert WAHR, so wird die Anweisung hinter DANN ausgeführt, sonst beginnt LOGO mit der nächsten Zeile oder arbeitet die Anweisungen hinter SONST ab.

Den Wahrheitswert hinter dem LOGO-Wort WENN könnte man auch über eine selbstge-schriebene Funktion zur Verfügung stellen.

PR WAHRHEITSWERT? :X PRÜFE 2 * ( :X + 4 ) + 7 = 29 WENNWAHR RG WAHR WENNFALSCH RG FALSCH ENDE

Eine Funktion, die das Wort „WAHR“ oder „FALSCH“ zurückgibt, nennt man boolesche Funktion.

Mit unserem obigen Programm WAHRHEITSWERT? hat das Programm SUCHE dann das folgende Aussehen:

PR SUCHE :X DR :X DZ WAHRHEITSWERT? :X WENN WAHRHEITSWERT? :X DANN DZ :X RK SUCHE :X + 1 ENDE

LOGO besitzt eine ganze Reihe eingebauter boolescher Funktionen. Hierzu gehören bei-spielsweise: TASTE?, RAND?, ZAHL?.

Wenn Sie selbst boolesche Funktionen programmieren, so sollten Sie wegen der Übersicht-lichkeit als letztes Zeichen des Befehlsworts ein Fragezeichen wählen.

Die Tatsache, daß LOGO den Wahrheitswert einer Aussageform explizit auf dem Bildschirm ausdruckt, kann man sich zunutze machen, um die Schüler auf experimentellem Wege die grundlegenden Regeln der Äquivalenzumformungen entdecken zu lassen.

Dazu belegt man die Variable "X" mit dem richtigen Wert. Nun nimmt man Veränderungen an der Gleichung vor und läßt sich jeweils den Wahrheitswert anzeigen.

Wenn man beispielsweise auf der linken Seite + 7 wegläßt, so liefert die Anweisung

DZ WAHRHEITSWERT? 7

das Ergebnis FALSCH.

So können Schüler herausfinden, welche Veränderungen man an einer Gleichung vornehmen darf, ohne den Wahrheitswert zu verändern.

Das beschriebene Vorgehen läßt sich auch auf lineare Gleichungssysteme erweitern.

Welche Lösung hat das lineare Gleichungssystem?

X + Y = 2 2 X + Y = 4

Page 62: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

62 Programmieren

Man benötigt zuerst wieder eine Belegung der Variablen:

SETZE "X" 1 SETZE "Y" 1

Nun macht man sich klar, daß bei einem linearen Gleichungssystem beide Gleichungen für die gesuchte Belegung von "X" und "Y" zusammen gültig, also WAHR, sein müssen.

Um zu überprüfen, ob beide Gleichungen zusammen WAHR sind, verwendet man die ALLE?-Anweisung. Es handelt sich dabei um eine logische UND-Verknüpfung. Für die ODER-Verknüpfung stellt LOGO die EINES?-Anweisung zur Verfügung.

DZ ALLE? ( 2 * :x + :y ) = 4 ( :x + :y ) = 2

liefert für die obige Belegung von "X" und "Y" das Wort FALSCH.

Auch hier scheint ein Programm SUCHE hilfreich zu sein.

PR SUCHE :X :Y DR :X DR :Y DR 2 * :X + :Y = 4 DR :X + :Y = 2 DZ WAHRHEITSWERT? :X :Y WENN :X>10 DANN RK WENN WAHRHEITSWERT? :X :Y DANN ( DZ :X :Y ) RK SUCHE :X + 1 :Y ENDE

Das Programm WAHRHEITSWERT? muß entsprechend geändert werden zu:

PR WAHRHEITSWERT? :X :Y PRÜFE ALLE? 2 * :X + :Y = 4 :X + :Y = 2 WENNWAHR RG WAHR WENNFALSCH RG FALSCH ENDE

Das Programm SUCHE druckt die Belegung von "X" und "Y" aus, sowie die Wahrheitswerte jeder der beiden Gleichungen und den Wahrheitswert des gesamten Gleichungssystems.

Das Programm SUCHE hat noch einen kleinen Mangel. Es verändert nur die Belegung der Variablen "X".

Für die Belegung der Variablen "Y" verwenden wir das Programm SUCHE2:

PR SUCHE2 :X :Y SUCHE :X :Y WENN WAHRHEITSWERT? :X :Y DANN RK SUCHE2 :X :Y + 1 ENDE

Das Programm SUCHE2 ruft das Programm SUCHE auf, das für feste "Y" alle "X" bis zur Zahl 10 überprüft. Das Programm SUCHE kann aus 2 Gründen beendet werden. Die gesuchte Belegung ist gefunden oder "X" ist größer 10. Wenn die gesuchte Belegung gefunden ist (also der WAHRHEITSWERT? :X :Y WAHR ist) dann wird das Programm SUCHE2 beendet. Im anderen Falle ruft sich SUCHE2 selbst auf, wobei "Y" um 1 erhöht wird.

Page 63: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 63

Auf den ersten Blick scheinen wir damit alle Programme fertiggestellt zu haben. Es gibt je-doch ein kleines Problem: Die Programme SUCHE und SUCHE2 funktionieren so nicht.

Vielleicht haben Sie schon eine Vermutung, an welcher Stelle der Fehler liegt. Das Problem tritt genau dann ein, wenn SUCHE die richtige Belegung gefunden hat. Dann kehrt das Pro-gramm SUCHE in das Programm SUCHE2 zurück, dort wird nochmals der WAHRHEITS-WERT? überprüft. Aber an dieser Stelle ist die richtige Belegung für "X" und "Y" bereits wie-der aus dem Speicher entfernt worden, denn beim Beenden eines Programms entfernt LOGO die beim Aufruf eingerichteten "Schachteln" wieder. Das Programm SUCHE2 wird also nor-malerweise nie ans Ende gelangen, wenn nicht der beim Aufruf von SUCHE2 verwendete Wert für "X" zufällig eine der Lösungen des linearen Gleichungssystems ist.

Das Programm SUCHE muß folglich zurückgeben, ob es den richtigen Wert gefunden hat oder nicht. Wir müssen das Programm SUCHE in eine Funktion verwandeln, die einen Wahrheits-wert zurückgibt (boolesche Funktion).

PR SUCHE? :X :Y DR :X DR :Y DR 2 * :X + :Y = 4 DR :X + :Y = 2 DZ WAHRHEITSWERT? :X :Y WENN :X>10 DANN RG FALSCH WENN WAHRHEITSWERT? :X :Y DANN ( DZ :X :Y ) RG WAHR RG SUCHE? :X + 1 :Y ENDE

Das Programm SUCHE2 hat dann die folgende Form:

PR SUCHE2 :X :Y WENN SUCHE? :X :Y DANN RK SUCHE2 :X :Y + 1 ENDE

Das Programm SUCHE? ruft sich in der letzten Zeile solange selbst auf, bis entweder "X" > 10 oder der WAHRHEITSWERT? WAHR ist. Wenn der WAHRHEITSWERT? WAHR ist, dann wird das Wort WAHR in die höhere Rekursionsebene zurückgegeben. In dem anderen Falle das Wort FALSCH.

Das Wort RG vor dem Wort SUCHE? in der letzten Programmzeile sorgt dann dafür, daß der jeweilige Wahrheitswert bis in die Ebene 0 zurückgereicht wird.

Im Programm SUCHE2 wird der Wahrheitswert hinter der WENN-Anweisung verwendet. Bei einer Rückgabe von WAHR wird das Programm SUCHE2 beendet, sonst ruft sich das Pro-gramm SUCHE2 mit einem größeren Wert für "Y" erneut auf.

Bei dem verwendeten Gleichungssystem wird das Programm SUCHE2 relativ schnell fündig:

0 0 FALSCH FALSCH FALSCH 1 0 FALSCH FALSCH FALSCH 2 0 WAHR WAHR WAHR 2 0

Page 64: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

64 Programmieren

Auch hier können wieder auf experimentellem Wege Operationen an linearen Gleichungssys-temen entdeckt werden, die den Wahrheitswert des Gleichungssystems nicht verändern. Die Prozeduren aus diesem Kapitel finden Sie unter dem Namen WAHRHW1.LOG und WAHRHW2.LOG in Ihrem LOGO-Verzeichnis.

3.8 Mehrfacher Selbstaufruf Alle bisherigen Beispiele haben gezeigt, wie man mit Hilfe von Rekursionen kurze und über-schaubare Algorithmen zur Lösung von nicht immer einfachen Aufgabenstellungen erhalten kann. Der Vorteil von Rekursionen kommt aber eigentlich erst richtig zum Tragen, wenn man mehrfache rekursive Aufrufe verwendet.

Als Einführung hierfür betrachten wir die folgende Grafik. Die Prozeduren zum ersten Teil dieses Kapitels befinden sich unter dem Namen KREISE.LOG in Ihrem LOGO-Verzeichnis.

Wir erkennen sofort, daß es sich bei der rechten und bei der linken Teilfigur um ineinanderge-schachtelte Kreise handelt. Setzt man voraus, daß das Programm KREIS sich im Arbeitsspei-cher befindet, so entsteht der rechte Teile der Grafik mit dem Programm KREISE1.

PR KREISE1 :RADIUS WENN :RADIUS < 20 DANN RK KREIS :RADIUS KREISE1 :RADIUS - 20 ENDE

Bei dem Aufruf mit KREISE1 100, wird jeweils ein Kreis gezeichnet und dann das Gleiche noch einmal mit einem um 20 verkleinerten Radius ausgeführt bis der Radius kleiner 20 ist.

Um die gesamte Figur zu erhalten, dreht man den Igel nun um 180 Grad und ruft KREISE1 100 erneut auf.

Für die obige Grafik ist jedoch noch eine andere Lösung möglich:

PR KREISE2 :RADIUS WENN :RADIUS < 20 DANN RECHTS 180 RK KREIS :RADIUS KREISE2 :RADIUS - 20 KREIS :RADIUS ENDE

Page 65: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 65

Was möglicherweise zuerst erstaunt, ist die Tatsache, daß hinter dem Selbstaufruf noch eine Programmzeile steht. Diese zusätzliche Programmzeile erzeugt offensichtlich den kompletten linken Teil der Grafik.

Machen wir uns den Ablauf des Programms bei einem Aufruf von KREISE2 60 deutlich. Stel-len wir uns dabei vor, daß LOGO bei jedem Aufruf des Programms KREISE2 eine Kopie des Programmtextes erzeugt und aus dieser Kopie jeweils die abgearbeiteten Befehle entfernt.

Ebene 1 KREISE2 60 Eine Kopie von dem Programm KREISE2 wird in Ebene 1 erzeugt.

WENN :RADIUS Zeile ausführen und entfernen

KREIS 60 Zeile ausführen und entfernen

KREISE2 40 Zeile ausführen

KREISE2 40 Zeile ist in Ebene 1 noch vorhanden

KREIS :RADIUS Zeile ist in Ebene 1 noch vorhanden

Ebene 2

KREISE2 40 Eine Kopie von dem Programm KREISE2 wird in Ebene 2 erzeugt.

WENN :RADIUS Zeile ausführen und entfernen

KREIS 40 Zeile ausführen und entfernen

KREISE2 20 Zeile ausführen

KREISE2 20 Zeile ist in Ebene 2 noch vorhanden

KREIS :RADIUS Zeile ist in Ebene 2 noch vorhanden

Ebene 3

KREISE2 20 Eine Kopie von dem Programm KREISE2 wird in Ebene 3 erzeugt.

WENN :RADIUS ... Zeile ausführen und entfernen

KREIS 20 Zeile ausführen und entfernen

KREISE2 0 Zeile ausführen

KREISE2 0 Zeile ist in Ebene 3 noch vorhanden

KREIS :RADIUS Zeile ist in Ebene 3 noch vorhanden

Ebene 4

KREISE2 0 Eine Kopie von dem Programm KREISE2 wird in Ebene 4 erzeugt.

WENN :RADIUS Zeile ausführen. Das die Bedingung WAHR ist, wird der Befehl RÜCKKEHR ausgeführt. Das Programm KREISE2 wird in Ebene 4 beendet und die Kopie entfernt.

Page 66: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

66 Programmieren

Ebene 3

KREISE2 0 Zeile entfernen

KREIS 20 „Radius“ hat in Ebene 3 den Wert 20. Zeile ausführen und entfernen.

ENDE Rückkehr in die Ebene 2 von KREISE2

Ebene 2

KREISE2 20 Zeile entfernen

KREIS 40 „Radius“ hat in Ebene 2 den Wert 40. Zeile ausführen und entfernen.

ENDE Rückkehr in die Ebene 1 von KREISE2

Ebene 1

KREISE2 40 Zeile entfernen

KREIS 60 „Radius“ hat in Ebene 1 den Wert 60. Zeile ausführen und entfernen.

ENDE Rückkehr auf die Textseite

Der Selbstaufruf einer Prozedur wird offensichtlich wie ein ganz normaler Prozeduraufruf be-handelt. Nach der Rückkehr in die aktuelle Ebene werden die Anweisungen, die in dem Pro-grammtext nach dem rekursiven Aufruf stehen, abgearbeitet.

Rekursionen, bei denen der Selbstaufruf die letzte Anweisung in der letzten Zeile ist, heißen Endzeilenrekursionen. Rekursionen, bei denen nach dem Selbstaufruf noch Anweisungen ste-hen, belegen bei jedem Selbstaufruf Speicherplatz, weil LOGO sich jeweils die noch abzuar-beitenden Befehle merken muß. Endzeilenrekursionen hingegen belegen beim Selbstaufruf keinen Speicherplatz, sie sind speicherplatzneutral.

Den Verbrauch an Speicherplatz können Sie beobachten, wenn Sie den Aufruf der folgenden kleinen Prozedur in zweite Zeile der Programme KREISE1 und KREISE2 einfügen.

PR ZEIGESPEICHER SETZE "X" XKO SETZE "Y" YKO SH AUFXY 30 50 SA SCHREIBE " " SH AUFXY 30 50 SA

Page 67: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 67

SCHREIBE FREI SH AUFXY :X :Y SA ENDE

Diese Prozedur zeigt in der linken unteren Ecke jeweils den freien Speicherplatz von LOGO an. Hierfür wird die LOGO-Anweisung FREI verwendet.

Die folgenden Werte ergaben sich bei einem Aufruf von KREISE1 100 und KREISE2 100. Die Prozedur KREISE1 ist endzeilenrekursiv.

Bei KREISE1: 276288, 276056, 276056, 276056, 276056

Bei KREISE2: 276288, 276112, 275936, 275760, 275584

Ohne weitere Kommentare sollen nun noch zwei nichtrekursive Lösungen für den linken Teil der obigen Figuren angegeben werden.

PR KREISE3 :RADIUS WH 5 [ KREIS :RADIUS SETZE "RADIUS" :RADIUS - 20 ] ENDE

Oder, wenn Sie die Anzahl der Wiederholung nicht berechnen möchten:

PR KREISE4 :RADIUS SOLANGE [ :RADIUS >= 20 ] [ KREIS :RADIUS SETZE "RADIUS" :RADIUS-20] ENDE

Bei der Verwendung der SOLANGE-Anweisung sollten Sie jedoch bedenken, daß die Ver-wendung iterativer Wiederholungen eigentlich nicht dem Konzept von LOGO entspricht. Vie-le andere LOGO-Systeme stellen eine SOLANGE-Anweisung nicht zur Verfügung.

Es soll nun der Versuch unternommen werden, den Unterschied zwischen iterativen und rekur-siven Wiederholungen herauszuarbeiten.

Iterative Wiederholungen zeichnen sich dadurch aus, daß die zu wiederholenden Anweisungen in einer Reihe hintereinander gesetzt und ausgeführt werden. Würde man dies einzeln auf-schreiben, so erhielt man folgenden Ablauf:

KREIS 100 SETZE "RADIUS" 100 - 20 KREIS 80 SETZE "RADIUS" 80 - 20 KREIS 60 SETZE "RADIUS" 60 - 20 KREIS 40 SETZE "RADIUS" 40 - 20 KREIS 20 SETZE "RADIUS" 20 - 20

Page 68: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

68 Programmieren

Bei rekursiven Wiederholungen in der Endzeilenform geschieht im Grunde genau das Gleiche. Die Anweisungen bis zum Selbstaufruf in der letzten Zeile werden jeweils in einer Folge re-gelmäßiger Wiederholungen hintereinander ausgeführt. Und da nach dem rekursiven Aufruf keine Anweisung mehr steht, entspricht dies der Abarbeitung bei der iterativen Wiederholung.

KREISE 100 KREIS 100 KREISE 100 - 20 KREIS 80 KREISE 80 - 20 KREIS 60 KREISE 60 - 20 KREIS 40 KREISE 40 - 20 KREIS 20 KREISE2 0 RÜCKKEHR

Das Konzept der rekursiven Wiederholung ist jedoch flexibler, weil es in der Nichtendzeilen-form ein Abweichen von der regelmäßig wiederholenden Hintereinanderausführung erlaubt. Solche Wiederholungen stellt man sich am besten als Wiederholung durch Einschachtelung vor. Beim Eindringen bis in die niedrigste Verschachtelungsebene werden die Anweisungen wie oben beschrieben regelmäßig hintereinandergesetzt. Bei der Rückkehr aus der niedrigsten Verschachtelungsebene können jedoch noch Anweisungen ausgeführt werden. Der rekursive Aufruf sorgt sozusagen für ein Einfügen von Anweisungen an dieser Stelle.

Im allgemeinen lassen sich rekursive Wiederholungen durch iterative Wiederholungen erset-zen. Rekursive Programme sind jedoch meist kürzer und eleganter. Bei dem obigen Beispiel hat in der rekursiven Form das Einfügen einer einzigen Programmzeile ausgereicht, um die gesamte Figur zu erzeugen. Bei der iterativen Form hätte man die gesamte rechte Teilfigur nach einer Drehung um 180° mit einem Aufruf von KREISE4 100 noch einmal erstellen müs-sen.

Für die oben abgebildete, einfache Kreisfigur ist eine iterative Lösung noch leicht zu entwi-ckeln. Bei der folgende Grafik haben Sie jedoch mit einem iterativen Lösungsversuch kaum eine Chance. Das zugehörige Programm finden Sie unter dem Namen PYTHAG.LOG in Ihrem LOGO-Verzeichnis. Ein anderes Beispiel finden Sie unter PEANO.LOG.

Page 69: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 69

Es handelt sich um den sogenannten Baum des Pythagoras. Bei genauerer Betrachtung fällt auf, daß in dieser Figur eine bestimmte Figur in verkleinerter Form immer wieder auftaucht. Dies ist die Pythagoras-Figur mit einem rechtwinkligem Dreieck und den Quadraten über den Katheten und dem Quadrat über der Hypotenuse. Diese Tatsache legt eine rekursive Lösung des Problems nahe.

Wir wollen uns zuerst überlegen, mit welchem Programm wir diese rekursive Grundfigur er-zeugen können. Als Informationen für das Programm PYTH1 geben wir die Seitenlänge des Quadrats ein. Wir legen fest, daß der Winkel α einen Wert von 30 Grad haben soll.

PR PYTH1 :LÄNGE

Spielen wir Igel und versuchen seinen Weg nachzuvollziehen. Es wird zuerst ein Quadrat der Seitenlänge :LÄNGE gezeichnet. Für das nächste Quadrat muß der Igel nun um :LÄNGE Schritte vorwärts gehen und sich um 30 Grad nach links drehen (Bild 1). Danach wird ein neu-es, verkleinertes Quadrat gezeichnet. Die Seitenlänge erhält man über den Kosinus (Bild 2).

Als nächstes erfolgt eine Rechtsdrehung um 90 Grad und eine Vorwärtsbewegung mit der neu-en Seitenlänge, um den Igel in die richtige Position für das nächste Quadrat zu bringen (Bild

Page 70: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

70 Programmieren

3). Nun wird das Quadrat über der Gegenkathete gezeichnet. Die Seitenlänge erhält man mit Hilfe des Sinus (Bild 4).

Wir richten bereits den Blick auf die Tatsache, daß wir ja den gesamten Baum des Pythagoras erzeugen wollen und bewegen den Igel in die richti-ge Position für das nächste Quadrat.

RE 90 VW :LÄNGE * SINUS 30 RE 30 VW :LÄNGE LI 90

Das Programm PYTH1 sieht damit folgendermaßen aus:

PR PYTH1 :LÄNGE QUADRAT :LÄNGE VW :LÄNGE LI 30 QUADRAT :LÄNGE * COS 30 RE 90 VW :LÄNGE * COS 30 QUADRAT :LÄNGE * SIN 30 RE 90 VW :LÄNGE * SIN 30 RE 30 VW :LÄNGE LI 90 ENDE

Wir haben damit den Aufbau des Baums des Pythagoras von der Struktur her erfaßt, in dem wir das Programm für die immer wiederkehrende Grundfigur entworfen haben. Für die Ge-samtfigur benötigen wir nur noch eine Fallunterscheidung und den Einsatz der Formulierung 'Mache das Gleiche ....'.

Page 71: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 71

1. Fall (einfachster Fall)

Bei einer bestimmten Mindestlänge soll die Wiederholung abbrechen. Nachdem der I-gel das Quadrat gezeichnet hat, soll er sich in die richtige Position zum Zeichnen des Quadrats über der Gegenkathete bewegen.

WENN :LÄNGE<20 DANN RE 90 VW :LÄNGE RK

Dies entspricht den Zeichnungen 2 und 3 oben.

2. Fall

Wenn die Mindestlänge nicht erreicht ist, so läßt sich an zwei Stellen die Formulierung 'Mache das Gleiche ...' anwenden. Das erste Mal bei dem Zeichnen der Quadrate über den Ankatheten. Das zweite Mal beim Zeichnen des Quadrats über der Gegenkathete. An dieser Stelle wird sozusagen jeweils der restliche Baum des Pythagoras eingesetzt.

Das Programm PYTH2 ruft sich beim ersten Mal mit der Seitenlänge :LÄNGE * COS 30 auf:

PYTH2 :LÄNGE * COS 30

Beim zweiten Mal erfolgt der Aufruf mit der Seitenlänge :LÄNGE * SIN 30:

PYTH2 :LÄNGE * SIN 30

Diese Selbstaufrufe ersetzen im Programm PYTH1 die Aufrufe des Programms QUADRAT. Das Quadrat wird in jedem Falle gezeichnet, so daß die Anweisung QUADRAT :LÄNGE nun am Anfang des Programms steht.

Damit haben wir das Programm PYTH2 bereits entwickelt:

PR PYTH2 :LÄNGE QUADRAT :LÄNGE WENN :LÄNGE < 20 DANN RE 90 VW :LÄNGE RK VW :LÄNGE LI 30 PYTH2 :LÄNGE * COS 30 PYTH2 :LÄNGE * SIN 30 RE 30 VW :LÄNGE LI 90 ENDE

Verdeutlichen wir uns noch einmal, was sich im Vergleich zum Programm PYTH1 verändert hat.

Die Anweisungen RE 90 VW :LÄNGE * COS 30 bzw. VW :LÄNGE * SIN 30 werden he-rausgenommen. Sie werden nur im einfachsten Fall ausgeführt, nämlich wenn die Mindestlän-ge erreicht ist. Die Aufrufe QUADRAT :LÄNGE * COS 30 und QUADRAT :LÄNGE * SIN 30 werden durch die rekursiven Aufrufe des Programms PYTH2 ersetzt, weil hier eine Be-schreibung mit 'Mache das Gleiche mit ...' anwendbar ist.

Zusammenfassend bleibt festzuhalten, daß zum Erstellen des Programms PYTH2 drei Schritte ausgeführt werden müssen:

1. Das Erkennen von mehreren ähnlichen Figuren legt eine rekursive Lösung nahe.

Page 72: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

72 Programmieren

2. Mit dem Programm zum Erzeugen einer einzigen Grundfigur wird die Struktur der Lösung erfaßt.

3. Durch einer Fallunterscheidung und der Beschreibung mit 'Mache das Gleiche mit ...' wer-den einzelne Teile des Programms aus Schritt 2 ersetzt und damit das endgültige Programm erstellt.

Das Besondere dieses Vorgehens liegt darin, daß der Algorithmus für das Programm nicht dadurch entstanden ist, daß man sich das Vorgehen zum Zeichnen des Baum des Pythagoras bis in den letzten Ast des Baumes überlegt hat. Vielmehr hat die Beschreibung der Grundfigur für das Auffinden des Algorithmus bereits ausgereicht.

Dieses Vorgehen soll an einem anderen Beispiel noch einmal durchgespielt werden: der Koch-Kurve. Die zugehörigen Prozeduren sind unter dem Namen KOCH.LOG in Ihrem LOGO-Verzeichnis abgespeichert.

Bei genauem Betrachten wird auch hier deutlich, daß die Koch-Kurve die folgende Grundfigur in verkleinerter Form immer wieder enthält. Daraus ergibt sich der rekursive Ansatz für das zugehörige Programm.

Versuchen wir nun wiederum zuerst das Programm für die obige Teilfigur zu erstellen. Aus der Sicht des Igels ist dies ein relativer einfacher Vorgang, wenn man davon ausgeht, daß die Längen der 4 Teilstrecken jeweils 1/3 der Gesamtstrecke betragen:

PR KOCH1 :LÄNGE VW :LÄNGE / 3 LI 60 VW :LÄNGE / 3 RE 120 VW :LÄNGE / 3 LI 60 VW :LÄNGE / 3 ENDE

Als nächstes soll eine Fallunterscheidung und eine Beschreibung mit 'Mache das Gleiche mit ...' erfolgen.

1. Fall (einfachster Fall)

Bei einer bestimmten Mindestlänge wird die Rekursion beendet. Vorher wird jedoch eine Strecke mit dieser Mindestlänge gezeichnet.

WENN :LÄNGE < 10 DANN VW :LÄNGE RK

Page 73: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 73

Die VW-Anweisung steht nun an dieser Stelle. Dies erkennt man daran, daß bei größe-rer Anfangslänge eine feinere Verästelung und eine Verkürzung der Teilstrecken er-folgt.

2. Fall:

Wenn die Mindestlänge nicht erreicht ist, so kann an 4 Stellen eine Beschreibung mit 'Mache das Gleiche mit einem Drittel der Seitenlänge' erfolgen. Dies ist jeweils an den Stellen, an dem im Programm KOCH1 ein Aufruf von VW :LÄNGE / 3 steht. Denn je-de dieser Teilstrecken soll gegebenenfalls durch eine entsprechend verkleinerte Grund-figur ersetzt werden.

PR KOCH2 :LÄNGE WENN :LÄNGE < 10 DANN VW :LÄNGE RK KOCH2 :LÄNGE / 3 LI 60 KOCH2 :LÄNGE / 3 RE 120 KOCH2 :LÄNGE / 3 LI 60 KOCH2 :LÄNGE / 3 ENDE

An dem Beispiel des Baum des Pythagoras und der Koch-Kurve werden die Vorteile des re-kursiven Vorgehens besonders gut deutlich. Über einen mehrfachen Selbstaufruf ist es einfach möglich, Programme zu schreiben, die solche selbstähnlichen Figuren erzeugen. Bei dem Ein-satz der rekursiven Methode muß man sich jedoch von dem gewohnten Programmierstil ablö-sen, den Algorithmus über eine sequentielle Beschreibung des Ablaufs zu erhalten. Die struk-turelle Beschreibung des Problems reicht für die Entwicklung des Algorithmus bereits aus. Zusammenfassend bleibt festzuhalten, daß dabei drei Schritte vollzogen werden müssen:

1. Erkennen von ähnlichen Strukturen

2. Beschreiben der ähnlichen Strukturen

3. Erweitern auf die gesamte Figur durch rekursive Aufrufe.

3.9 Baumstrukturen mit Listen Bei Problemen aus dem Bereich der Grafik ist die rekursive Struktur meist leicht zu erkennen, weil man hier nur nach ähnlichen Figuren suchen muß.

Etwas schwieriger ist die Verwendung dieser Methode bei nichtgraphischen Problemstellun-gen.

Wir werden sehen, daß beim Anordnen von Daten in Form von Bäumen eine Datenstruktur entsteht, die ebenfalls rekursiven Charakter hat. Das Listenkonzept von LOGO ist so flexibel, daß sich Bäume mit Hilfe von Listen darstellen lassen. Mit einfachen Befehlen zur Verarbei-tung von Listen und einem mehrfachen Selbstaufruf lassen sich solche rekursiven Datenstruk-tur einfach und elegant abarbeiten. Dies soll am Beispiel eines einfachen Expertensystems ge-zeigt werden. Die zugehörigen Prozeduren sind unter dem Namen EXPERTE.LOG in Ihrem

Page 74: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

74 Programmieren

LOGO-Verzeichnis abgespeichert. Ein ähnliches Beispiel finden Sie unter dem Namen TIE-RERAT.LOG.

Betrachten Sie hierzu den folgenden Dialog:

Ihr Auto ist defekt. Welche Probleme treten auf? Ich versuche Ihnen zu helfen, indem ich Fragen stelle. Läßt sich der Gang nicht einlegen? nein Kann es ein(e) defekte(r) Motor sein ? nein Ich habe noch keine Informationen über diesen Fehler. Versuchen Sie den Fehler herauszufinden. Beantworten Sie dann die folgenden Fragen. Welches Teil ist defekt? Batterie Geben Sie eine Frage ein, die JA für defekte(r) Kupplung und NEIN für defekte(r) Motor lautet. Hat die Batterie zu wenig Spannung? Geben Sie eine Reparaturanleitung für den Fehler defekte(r) Batterie ein. Batterie auswechseln. Auf eine Neues!

Ihr Auto ist defekt. Welche Probleme treten auf? Ich versuche Ihnen zu helfen, in dem ich Fragen stelle. Läßt sich der Gang nicht einlegen? nein Hat die Batterie zu wenig Spannung? ja Kann es ein(e) defekte(r) Batterie sein? ja Batterie auswechseln. Auf eine Neues!

Was wir an diesem Dialog sehen, ist ein einfaches Beispiel für das, was man ein Expertensys-tem nennt. Ein Expertensystem beruht auf einer Ansammlung von Informationen, einer soge-nannten Wissensbasis. Wie in unserem Beispiel versucht das Expertensystem den Benutzer durch Fragen an die gesuchte Information heranzuführen. Wenn die Wissensbasis groß genug ist, wird es dem Benutzer die erforderlichen Daten zur Verfügung stellen können.

Dabei kann es durchaus passieren, daß das Expertensystem für bestimmte Situationen noch keine ausreichenden Informationen enthält. In diesem Fall sollte es dazu in der Lage sein, neue Informationen aufzunehmen. Dies ist in unserem Beispiel ebenfalls geschehen.

In der Praxis wäre ein sinnvoller Einsatz eines solchen Expertensystems durchaus denkbar. Es könnte der Werkstatt oder dem Käufer von einem Autohersteller über eine Datenleitung oder auf einer Diskette zur Verfügung gestellt werden. Beim Auftreten eines Fehlers könnte der

Page 75: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 75

Benutzer von dem Expertensystem Hinweise für das weitere Vorgehen erhalten. In einer ech-ten Anwendung würde der Fehlerhinweis sicherlich sehr viel ausführlicher gestaltet sein und könnte sogar Grafiken enthalten. Das Recht zur Erweiterung des Wissensbasis hätten wahr-scheinlich nur die Fachleute der Autofirma.

Der wesentliche Vorteil eines Expertensystems liegt darin, daß es den Benutzer zu den benö-tigten Informationen hinführt. Die Daten sind dadurch besser zugänglich. Es sind weniger Vor-kenntnisse notwendig.

Wir wollen nun ein solches einfaches Expertensystem entwickeln. Dabei werden wir in zwei Schritten vorgehen.

Im ersten Schritt erstellen wir alle Programme, die zum Erteilen der gewünschten Auskunft notwendig sind. Im zweiten Schritt statten wir unser System dann mit der zusätzlichen Fähig-keit aus, die Wissensbasis zu erweitern.

Betrachten wir zuerst einmal, wie LOGO das vorhandene Wissen speichert. Der Inhalt des Expertensystems ist in der Variablen mit dem Namen "WISSEN" abgelegt.

DZ :WISSEN

liefert den folgenden Ausdruck:

[ Läßt sich der Gang nicht einlegen? ] [ Kupplung [ Bringen Sie das Auto in die Werkstatt ] ] [ Motor [ Bringen Sie das Auto in die Werkstatt ] ] ]

Um die nun zu entwickelnden Programme testen zu können, sollten Sie diese Liste zuerst mit der SETZE-Anweisung speichern:

SETZE "WISSEN" ...

In dieser Form sieht die Wissensbasis noch recht unübersichtlich aus. Aber durch eine kleine Umgruppierung wird die Struktur schon deutlicher:

[ Läßt sich der Gang nicht einlegen? ]

[ Kupplung [ Bringen Sie das Auto indie Werkstatt ] ]

[ Motor [ Bringen Sie das Auto indie Werkstatt ] ]

ja nein

Die Wissensbasis läßt sich offensichtlich als Baum darstellen. Machen wir uns klar, woraus ein solcher 'Wissensbaum' besteht:

In der Mitte oben befindet sich die Frage. Auf diese Frage sind zwei Antworten möglich: Ja oder Nein. Man erkennt, daß der linke Zweig die Ja-Antwort und der rechte Zweig die Nein-Antwort auf die Frage enthält. Der Wissensbaum hat damit den folgenden allgemeinen Auf-bau:

Page 76: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

76 Programmieren

Frage

Ja-Zweig Nein-Zweig

Die Antworten bestehen aus 2 Teilen. Der 1. Teil ist die eigentliche Antwort. Bei unserer Wis-sensbasis ist dies das defekte Teil des Autos. Im 2. Teil wird ein Hinweis zur Reparatur gege-ben.

[ Fehler [ Hinweis zur Reparatur ] ]

Aus Gründen der besseren Übersicht wird im folgenden jeweils der Hinweis zur Reparatur weggelassen, wo dieser nicht unbedingt benötigt wird.

Die Antwortliste

[ Motor [ Bringen Sie das Auto in die Werkstatt ] ]

wird beispielsweise vereinfacht dargestellt als

[ Motor [ .. ] ].

Wie ist es nun möglich, einen solchen Baum mit LOGO darzustellen?

An den eckigen Klammern erkennt man, daß hierfür der Datentyp Liste verwendet wird. Über die Position der einzelnen Elemente in der Liste ordnet man den einzelnen Teilen ihre Bedeu-tung zu.

Bei der obigen Wissensbasis ist das 1. Element der Liste die Frage.

[ [ Läßt sich der Gang nicht einlegen? ] [ Kupplung [..]] [ Motor [..]] ]

Das 2. Element enthält den Ja-Zweig:

[ [Läßt sich der Gang nicht einlegen?] [ Kupplung [..]] [Motor....] ]

Das 3. Element enthält den Nein-Zweig:

[ [Läßt sich der Gang nicht einlegen?] [Kupplung [..]] [Motor [..]] ]

Wir wollen uns nun zuerst überlegen, wie LOGO diesen Baum mit weiteren Informationen erweitern würde.

Nehmen wir an, es soll als defektes Teil das Wort Batterie und als Frage 'Hat die Batterie zu wenig Spannung?' hinzugefügt werden. An welcher Stelle des Baumes wird diese Information angehängt?

Es leuchtet ein, daß der Zweig mit dem Wort 'Motor' zu ersetzen ist, denn auf die Frage 'Läßt sich der Gang nicht einlegen?' wird man wohl noch mit NEIN antworten. An Stelle der Frage 'Kann es ein(e) defekte(r) Motor sein?' soll nun die Frage 'Hat die Batterie zu wenig Span-nung?' gestellt werden.

Page 77: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 77

Zu dieser Frage gibt es nun wiederum einen JA-Zweig und einen NEIN-Zweig. Der JA-Zweig ist das Wort Batterie der NEIN-Zweig das Wort Motor. Es entsteht also ein neuer Teilbaum mit folgendem Aussehen:

[ Hat die Batterie zu wenigSpannung? ]

[ Batterie [ .. ] ] [ Motor [ .. ] ]

Dieser Baum wird in den Baum an der Stelle eingehängt an der das Wort Motor stand.

[ Läßt sich der Gang nichteinlegen ? ]

[ Kupplung [ .. ] ][ Hat die Batterie zu wenig

Spannung? ]

[ Batterie [ .. ] ] [ Motor [ .. ] ]

Die vollständige Darstellung dieses Baums als Liste ist zwar wegen der vielen eckigen Klam-mern sehr unübersichtlich. Sie soll trotzdem an dieser Stelle einmal angegeben werden.

Die alte Wissensliste hatte die folgende Form:

[[ Läßt sich der Gang nicht einlegen? ] [ Kupplung [..] ] [ Motor [..] ] ]]

In diese Liste wird anstelle der Liste

[ Motor [..] ]

die Liste

[[ Hat die Batterie zu wenig Spannung? ] [ Batterie [..] ] [ Motor [..]] ]

eingefügt.

Die neue Liste hat damit das folgende Aussehen:

[ [ Läßt sich der Gang nicht einlegen? ] [ Kupplung [..] ] [ [ Hat die Batterie zu wenig Spannung? ] [ Batterie [..] ] [ Motor [..] ] ] ]

Page 78: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

78 Programmieren

Der NEIN-Zweig enthält nun wiederum eine Liste mit genau drei Elementen: Das 1. Element ist eine Liste mit einer Frage, das 2. Element enthält den JA-Zweig und das 3. Element den NEIN-Zweig. Die gesamte Wissensliste enthält somit wiederum eine Liste von gleicher Struk-tur.

Dieser Prozeß läßt sich nun beliebig erweitern. Sowohl der JA-Zweig als auch der NEIN-Zweig lassen sich durch eine Liste mit einer Frage, einem JA- und einem NEIN-Zweig erset-zen. Mit dieser Liste kann dann erneut das Gleiche geschehen usw.

Sie erkennen an dieser Beschreibung der Wissensliste bzw. des Wissensbaums, daß hier eine rekursive Struktur vorliegt. Die gesamte Wissensliste setzt sich aus mehreren Teillisten zu-sammen, die gleiche Struktur besitzen.

Untersuchen wir nun, wie LOGO den Wissensbaum durchläuft bis es zum letzten Teilbaum des Baums gelangt. Dabei wollen wir vorerst den Fall vernachlässigen, daß die Wissensbasis erweitert werden soll.

Erinnern wir uns. Die Endfrage lautete: "Kann es ein(e) defekte(r) ... sein?"

Um dorthin zu gelangen, muß mit jeder der gleich aufgebauten Teillisten der Wissensliste das Gleiche geschehen. Nennen wir unsere Prozedur AUSWAHL. Sie erhält als Informationen den aktuellen Teilbaum.

PR AUSWAHL :TEILBAUM

Versuchen wir wieder zuerst eine Fallunterscheidung:

1. Fall (einfachster Fall):

Wenn LOGO an einer der Enden des Baums angelangt ist, so soll es die Endfrage stel-len. Wenn wir uns den Baum genau betrachten, so können wir ein Kriterium für das Ende des Baums erkennen. Dort steht immer eine zweielementige Liste. Das 1. Ele-ment ist das defekte Teil, das 2. Element eine Liste mit der Reparaturanleitung. In die-sem Fall soll das Programm ENDFRAGE aufgerufen werden, das die Endfrage stellt und auswertet.

WENN (ANZAHL :TEILBAUM) = 2 DANN ENDFRAGE :TEILBAUM RK

2. Fall:

Im anderen Fall ist LOGO noch nicht am Ende des Wissensbaums angelangt. LOGO befindet sich an einem Teilbaum, der eine Frage enthält. Diese Frage muß LOGO aus-drucken. Bei der Antwort JA soll LOGO dann das Gleiche noch einmal mit dem JA-Zweig des aktuellen Teilbaums (2. Element der Liste) tun. Wenn die Antwort NEIN ist, dann geschieht das Gleiche mit dem NEIN-Zweig.

DZ ER :TEILBAUM SETZE "EIN" EINGABE PRÜFE :EIN = [ JA ] WENNWAHR AUSWAHL ELEMENT 2 :TEILBAUM WENNFALSCH AUSWAHL LETZTES :TEILBAUM ENDE

In diesem Programm wird die LOGO-Anweisung EINGABE verwendet, mit der man eine Tastatureingabe als Liste zur Verfügung stellen kann.

Page 79: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 79

Es steht nun noch das Programm ENDFRAGE aus. Es erhält als Information den aktuellen TEILBAUM. Es druckt die Endfrage und wertet die Antwort aus.

Wenn die Antwort JA ist, so wird die Reparaturanleitung ausgedruckt. Wenn die Antwort NEIN ist, geschieht im Moment noch gar nichts. Später wird hier der Programmteil eingefügt, der das Erweitern der Wissensbasis organisiert.

PR ENDFRAGE :TEILBAUM DZ ( SATZ "KANN ES EIN(E) " ER :TEILBAUM " SEIN ? " ) SETZE "EIN" EINGABE PRÜFE :EIN = [ JA ] WENNWAHR DZ LETZTES :TEILBAUM WENNFALSCH LERNPHASE :TEILBAUM ENDE

Das Programm LERNPHASE schreiben wir als Leerprogramm, um keine Fehlermeldung zu erhalten:

PR LERNPHASE ENDE

Wir benötigen nun noch das Programm EXPERTE, das die Vorinformationen gibt und das Programm AUSWAHL startet.

PR EXPERTE LÖSCHESCHIRM DZ [ WELCHE PROBLEME TRETEN AUF? ] DZ [ ICH VERSUCHE IHNEN ZU HELFEN, INDEM ICH FRAGEN STELLE. ] AUSWAHL :WISSEN DZ [ AUF EIN NEUES. ] ENDE

Mit unserer kleinen Wissensbasis macht das Testen dieses Programms noch nicht viel Spaß. Das Programm EXPERTE stellt ja lediglich eine einzige Frage und dann sofort die Endfrage.

Wir haben uns bereits überlegt, wie LOGO neue Informationen in den Wissensbaum einhängt. Es muß den alten Teilbaum durch einen neuen Teilbaum ersetzen. Das Programm ERSETZE erhält als Informationen also den aktuellen "BAUM", den Teilbaum, der zu ersetzen ist ("AL-TES") und den Teilbaum, der eingefügt wird ("ERSATZ").

PR ERSETZE :BAUM :ALTES :ERSATZ

Machen wir uns klar, daß das Programm ERSETZE eine Funktion ist. Sie gibt etwas zurück, nämlich die neue Wissensbasis mit dem eingefügten Teilbaum. Da der Wissensbaum rekursiv angelegt ist, wird das Ersetzen am besten mit einer rekursiven Funktion erreicht.

Auch hier wieder eine Fallunterscheidung:

1. Fall (einfachster Fall):

Das Programm ist zu Ende, wenn der zu ersetzende Teilbaum gefunden ist. In diesem Fall wird der ERSATZ zurückgegeben. Es gibt jedoch noch einen zweiten einfachsten Fall. Das Programm ist ebenfalls zu Ende, wenn LOGO an einem Endknoten angelangt ist. Dies ist der Fall, wenn in dem aktuellen Baum nur 2 Elemente enthalten sind, das defekte Teil sowie die Reparaturanleitung. Diese zweielementige Liste wird dann zurückgegeben.

Page 80: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

80 Programmieren

WENN ERSTES :BAUM = ERSTES :ALTES DANN RG :ERSATZ WENN (ANZAHL :BAUM) = 2 DANN RG :BAUM

2. Fall

Ist LOGO nicht am Ende des Baums angelangt, so soll es einen neuen Teilbaum zu-sammensetzen. Dieser besteht aus der FRAGE des aktuellen Baums, sowie aus der Rückgabe des ERSETZEns mit dem JA-ZWEIGs (ELEMENT 2 :BAUM) und aus der Rückgabe des Ersetzens mit dem NEIN-ZWEIGs (LETZTES :BAUM). Dieser 'neue' Teilbaum wird zurückgegeben.

RÜCKGABE ( LISTE (ER :BAUM ) ( ERSETZE ELEMENT 2 :BAUM :ALTES :ERSATZ ) ( ERSETZE LE :BAUM :ALTES :ERSATZ) )

Das Besondere dieser Programmzeile besteht darin, daß es einen zweifachen Selbstaufruf von ERSETZE enthält. Daran wird deutlich, daß sich auch Funktionen mehrfach selbst aufrufen können.

Die Entwicklung der zugehörigen Anweisungszeile kann so vorgenommen werden, wie es in dem Kapitel über mehrfache Selbstaufrufe beschrieben wurde.

Man überlegt sich zuerst, wie LOGO einen einfachen Teilbaum zusammensetzt.

Dies geschieht mit:

RÜCKGABE ( LISTE ER :BAUM ELEMENT 2 :BAUM LE :BAUM )

Aus dem ersten Element der Liste "BAUM" (Frage), dem zweiten Element (JA-Zweig) und dem letzten Element (NEIN-Zweig) wird mit Hilfe der LOGO-Anweisung LISTE eine Liste gebildet.

Wenn das Zusammensetzen eines Teilbaums an irgendeiner Stelle des gesamten Wissens-baums geschehen soll, so werden hierfür das Ergebnis des ERSETZEns aus der niedrigeren Ebene verwendet.

RÜCKGABE ( LISTE ER :BAUM ERSETZE ELEMENT 2 :BAUM :ALTES :ERSATZ ERSETZE LETZTES :BAUM :ALTES :ERSATZ )

Damit ist der Programmteil fertig, der in die Wissensbasis einen neuen Baum einhängt und auf diese Art und Weise die Wissensbasis erweitert.

Es hat das folgende Aussehen:

PR ERSETZE :BAUM :ALTES :ERSATZ WENN ERSTES :BAUM = ERSTES :ALTES DANN RG :ERSATZ WENN (ANZAHL :BAUM) = 2 DANN RG :BAUM RG ( LISTE ER :BAUM ERSETZE ELEMENT 2 :BAUM :ALTES :ERSATZ ERSETZE LETZTES :BAUM :ALTES :ERSATZ ) ENDE

Als Verbindungsstück zwischen dem Programm ENDFRAGE und dem Programm ERSETZE fehlt nur noch das Programm LERNPHASE, das bisher nur als Leerprogramm vorliegt.

PR LERNPHASE :TEILBAUM

Das Programm LERNPHASE hat die Aufgabe, die fehlenden Informationen zu erfragen (FRAGE, JA-Zweig) und daraus zusammen mit dem "TEILBAUM" einen Teilbaum zusam-

Page 81: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 81

menzufügen. Dieser neue Teilbaum wird dann mit Hilfe des Programms ERSETZE in die Wissensbasis eingefügt.

DZ [ Ich habe noch keine Informationen über diesen Fehler. ] DZ [ Versuchen Sie den Fehler herauszufinden. ] DZ [ Beantworten Sie dann die folgenden Fragen. ] DZ [ Welches Teil ist defekt? ] SETZE "NEUES" EINGABE ( DZ "Geben Sie eine Frage ein, die ja für defekte(r)" :NEUES ) ( DZ "und nein für defekte(r)" ERSTES :TEILBAUM [ lautet. ] ) SETZE "FRAGE" EINGABE ( DZ Geben Sie eine Reparaturanleitung für den Fehler defekte(r)" ER :NEUES " ein." ) SETZE "HILFE" EINGABE

Mit diesen Befehlszeilen erhält LOGO alle Informationen, die es für den neuen Teilbaum be-nötigt.

Zuerst wird das Ende des Baums mit der Reparaturanleitung erzeugt. Dazu wird "HILFE" in die Liste "NEUES" hinten eingefügt:

SETZE "NEUES" ML :HILFE :NEUES.

Nun wird ein neuer Baum mit einer Frage einem JA-Zweig und einem NEIN-Zweig als Liste erzeugt:

SETZE "NEUER_BAUM" ( LISTE :FRAGE :NEUES :TEILBAUM )

Der neue Baum wird in die Wissensbasis eingesetzt:

SETZE "WISSEN" ERSETZE :WISSEN :ALTES :NEUER_BAUM

Damit sind alle Bausteine zur Verwaltung des Expertensystems fertiggestellt.

3.10 Eigenschaftslisten Wie wir in den vorangegangenen Kapiteln gesehen haben, ist das Zusammenfassen von Daten mit dem Listenkonzept von LOGO kein Problem. Um zum Beispiel das Alter, die Haarfarbe und die Schwester des Kindes Suse zu erfassen, kann man die folgenden Anweisung verwen-den:

SETZE "Suse" [ [ Alter 7 ] [ Haarfarbe braun ] [ Schwester Lisa ] ]

Die verschiedenen Eigenschaften werden hier in Form von Paarlisten zusammengefaßt. Der Zugriff auf die einzelnen Elemente der Liste wird mit den vorhandenen Listenoperationen durchgeführt.

Häufig ist es jedoch so, daß man den einzelnen Elementen einer Liste einen Namen geben möchte, um damit leichter auf Sie zugreifen zu können. In diesem Fall verwendet man Eigen-schaftslisten.

Bei dem obigen Beispiel möchten wir dem Kind Suse die Eigenschaften Alter, Haarfarbe und Name der Schwester zuweisen. Für jede der Eigenschaften steht ein Wert zur Verfügung.

Um eine Eigenschaftsliste zu definieren, verwendet man die MITEG-Anweisung. Mit der An-weisung

Page 82: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

82 Programmieren

MITEG "Suse" "Alter" 7

weist man "Suse" als Eigenschaft das "Alter" 7 zu. Oder anders ausgedrückt: In die Eigen-schaftsliste mit dem Namen "Suse" wird die Eigenschaft "Alter" und der zugehörige Wert 7 eingefügt.

Mit der Anweisung:

DZ GIBEG "Suse" "Alter"

erhält man das Alter von Suse ausgedruckt. Um "Suse" die übrigen Eigenschaften zuzuweisen, gibt man die folgenden Zeilen ein:

MITEG "Suse" "Haarfarbe" "braun" MITEG "Suse" "Schwester" "Lisa"

Die derzeitige Belegung der Eigenschaftsliste "Suse" läßt sich an einer Grafik verdeutlichen:

Suse

Alter

Haarfarbe

Schwester

7

braun

Lisa

Eigenschaftsliste Eigenschaft Wert

Die Anweisung

EGLISTE <Name der Eigenschaftsliste>

gibt die gesamte Eigenschaftsliste als Liste zurück.

DZ EGLISTE "Suse"

liefert den folgenden Ausdruck:

Alter 7 Haarfarbe braun Schwester Lisa

Sie erkennen daran, daß die EGLISTE-Anweisung die Elemente der Eigenschaftsliste paarwei-se angeordnet zurückgibt. Zuerst steht die Eigenschaft, dann deren Wert, dann die nächste Ei-genschaft usw.

Für die Schwester Lisa läßt sich nun eine weitere Eigenschaftsliste einrichten:

MITEG "Lisa" "Alter" 4

MITEG "Lisa" "Haarfarbe" "blond"

MITEG "Lisa" "Schwester" "Suse"

Page 83: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Programmieren 83

mit der Anweisung ZEIGEEGLISTEN gewinnt man einen Überblick über alle vorhandenen Eigenschaftslisten. Im Augenblick bestehen die Eigenschaftslisten "Lisa" und "Suse".

Es ist nun auch möglich, über eine bestimmte Eigenschaft auf die Eigenschaft aus einer ande-ren Eigenschaftsliste zuzugreifen. Um beispielsweise das Alter der Schwester von Suse zu erfahren, schreibt man:

DZ GIBEG GIBEG "Suse" "Schwester" "Alter"

Dieses Anweisung liefert die Zahl 4. Die Abarbeitung geschieht wiederum wie gewohnt:

1. An der DZ-Anweisung erkennt LOGO, daß etwas ausgedruckt werden soll. LOGO holt die notwendigen Daten durch das Lesen des nächsten Wortes.

2. Um die Anweisung GIBEG ausführen zu können, benötigt LOGO 2 Werte, der Name der Eigenschaftsliste und die Eigenschaft. Um den Namen der Eigenschaftsliste zu erfahren, liest LOGO das nächste Wort.

3. An der Anweisung GIBEG erkennt LOGO, daß es den Namen der Eigenschaftsliste aus einer anderen Eigenschaftsliste holen soll.

4. LOGO liest die Wörter "Suse" und "Schwester" und holt die Eigenschaft "Schwester" aus der Eigenschaftsliste "Suse".

5. Das Wort "Lisa" ist der im Schritt 2 gesuchte der Name der Eigenschaftsliste. LOGO liest das nächste Wort und holt die Eigenschaft "Alter" aus der Eigenschaftsliste "Lisa". Es ist die Zahl 4.

6. Die Zahl 4 wird an die DZ-Anweisung übergeben und gedruckt.

Bei der Verwendung von Eigenschaftslisten ist zu beachten, daß es sich dabei um globale Va-riablen handelt. Es gibt keine Möglichkeit, Eigenschaftslisten als lokale Variablen beispiels-weise als Eingabe beim Aufruf einer Prozeduren zu definieren. Um eine Eigenschaft aus einer Eigenschaftsliste zu entfernen, verwendet man die VERGISSEG-Anweisung.

An einem anderen Beispiel soll nun gezeigt werden, daß Eigenschaften nicht nur Daten, son-dern auch 'Verhaltensweisen' sein können. Nehmen wir dafür eine einfache geometrische Fi-gur: ein Quadrat auf der Grafikseite. Der Figur QUADRAT auf der Grafikseite kann man die folgenden Eigenschaften zuweisen:

XPOS und YPOS für die waagerechte bzw. senkrechte Position auf dem Bildschirm und LÄNGE für die Seitenlänge. Weiter kann man nun überlegen, was die Figur QUADRAT 'können' soll. Eine sinnvolle Eigenschaft wäre es sicherlich, wenn sich das Quadrat auch auf dem Bildschirm darstellen könnte.

Wir definieren eine weitere Eigenschaft von QUADRAT mit dem Namen ZEICHNE und wei-sen ihr als Wert eine Liste mit den dazu notwendigen Anweisungen zu.

Insgesamt entsteht die folgende Prozedur

PR QUAD.BELEGE :X :Y :L MITEG "QUAD" "XPOS" :X MITEG "QUAD" "YPOS" :Y MITEG "QUAD" "LÄNGE" :L MITEG "QUAD" "ZEICHNE" [ SH AUFXY GIBEG "QUAD" "XPOS" GIBEG "QUAD" "YPOS" SA WH 4 [ VW GIBEG "QUAD" "LÄNGE" RE 90 ] ] ENDE

Page 84: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

84 Programmieren

Beachten Sie bitte, daß beim Zeichnen des Quadrats die Werte für die AUFXY-Anweisung aus der Eigenschaftsliste QUAD genommen werden. Das Gleiche gilt für Länge der Vorwärtsbe-wegung. Mit dem Aufruf von

QUAD.BELEGE 200 200 100

weisen Sie QUAD die notwendigen Werte zu. Der Wert der Eigenschaft ZEICHNE ist eine Liste mit Anweisungen zur Darstellung der Figur auf dem Bildschirm.

Damit sich die Figur QUAD wirklich auf dem Bildschirm darstellen kann, übergibt man der TUE-Anweisung von LOGO die entsprechende Befehlsliste. Die Eingabe von

TUE GIBEG "QUAD" "ZEICHNE"

führt dazu, daß die ZEICHNE-Eigenschaft von QUAD ausgeführt und ein Quadrat an der ge-wünschten Bildschirmposition gezeichnet wird. Das LOGO-Wort TUE funktioniert natürlich nicht nur bei Eigenschaftslisten. Die TUE-Anweisung führt die Anweisungen aus der Liste aus, die ihr übergeben wird. Die Prozeduren aus diesem Kapitel befinden sich unter dem Na-men EIGENSCH.LOG in Ihrem LOGO-Verzeichnis.

Sie werden sicherlich erkannt haben, daß man dieses Ergebnis auch weniger umständlich hätte erreichen können. Wichtig für das obige Verfahren ist das Vorgehen bei der Programm-erstellung. Ausgangspunkt der Überlegung war es, die Daten und 'Verhaltensweisen' eines Quadrats in einer Eigenschaftsliste zu erfassen. Dabei entstand keine unabhängige Prozedur zum Zeichnen des Quadrats, wie es bisher üblich war. Vielmehr wurde die Prozedur ZEICH-NE fest mit der Figur Quadrat verbunden. Der Aufruf zum Zeichnen geschieht dann über die entsprechende Eigenschaft von QUAD.

Page 85: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Lernumgebungen im Mathematikunterricht 85

4 Lernumgebungen im Mathematikunterricht In den letzten Jahren hat sich der Computer an vielfältigen Stellen als sinnvolles Hilfsmittel im Mathematikunterricht erwiesen.

Dabei hat eine Verschiebung des Akzents weg von dem Algorithmenentwurf hin zu der Verwendung von fertiger Software stattgefunden. Für den Einsatz von Software wie DERIVE, GEOLOG oder CABRI Géomètre finden sich in der didaktischen Lite-ratur eine Fülle von Ideen.

Ich möchte Ihnen nun zeigen, wie Sie die Programmierumgebung LOGO im Mathe-matikunterricht einsetzen können.

Ich denke bei dem Einsatz von LOGO im Mathematikunterricht jedoch nicht an die Möglichkeit, für bestimmte Rechenverfahren die zugehörigen Algorithmen zu entwer-fen. Der Entwurf von Algorithmen hat seinen Platz inzwischen zu Recht eher im In-formatik- als im Mathematikunterricht.

Bei der Verwendung von LOGO im Mathematikunterricht kommt es mir vielmehr darauf an, den Computer als ein Unterrichtsmedium einzusetzen, mit dem man be-stimmte Inhalte des Mathematikunterrichts besser und deutlicher veranschaulichen kann als mit einem anderen Unterrichtsmedium1.

Im Vergleich zu anderen Medien (wie Overheadfolie, Lehrfilm oder anderem) bietet der Computer mit geeigneter Software völlig neue Möglichkeiten. Mit ihm ist es mög-lich, zu bestimmten Themen eine besondere Lernumgebung zur Verfügung zu stellen. Innerhalb dieser Lernumgebung mit einem festen und überschaubaren Vorrat an Funk-tionen können die Schüler sich die Inhalte dann weitgehend selbständig aneignen. Das Besondere des Mediums Computer liegt bei diesem Konzept darin, daß er auf be-stimmte Aktionen des Schülers reagiert und darauf wiederum eine neue Reaktion des Schülers erfolgen kann. Lernen findet dabei in einer ständigen Interaktion mit dem Computer statt.

Schon der Erfinder von LOGO, Prof. Seymore Papert, hatte einen solchen Einsatz von LOGO im Mathematikunterricht im Auge. Er beschreibt in seinem Buch ‘Mindstorms’2 mehrere Beispiele für solche Mikrowelten als ‘Brutkästen für Wissen’.

Bei einem Einsatz von LOGO in diesem Sinne kommt es mir besonders darauf an, daß

• bestimmte mathematische Zusammenhänge visualisiert werden.

• der Computer aufwendige Rechenoperationen übernimmt und damit schnell sehr viele Beispiele zur Verfügung gestellt werden können.

• der Schüler selbständig innerhalb der vorgegebenen Umgebung agieren kann.

Es sei an dieser Stelle betont, daß die Schülerberechnungen nicht durch das Konzept der Lernumgebungen ersetzt werden sollen. Vielmehr ist es sicher sinnvoll, daß der 1 Otte, Gerhard:Lernumgebungen im Mathematikunterricht mit LOGO. PM 38/1996. S.29-32 2 Papert, Seymore: Kinder, Computer und neues Lernen. Birkhäuser Verlag 1985.

Page 86: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

86 Lernumgebungen im Mathematikunterricht

Schüler einige Berechnungen exemplarisch selbst ausführt. Das Konzept der Lernum-gebungen macht es jedoch möglich, daß diese aufwendigen Berechnungen nicht mehr unbedingt im Mittelpunkt des Unterrichts stehen müssen.

Die folgenden Beispiele sollen nur Anregungen für das dargestellte Konzept liefern. Es könnte sicher eine interessante Aufgabe sein, die Lehrpläne des Faches Mathema-tik daraufhin zu überprüfen, ob sich LOGO-Lernumgebungen hier sinnvoll einsetzen lassen.

4.1 Einführung der Kreiszahl ππππ Mein erstes Beispiel zeigt, wie man mit Hilfe der Igelgeometrie die Kreiszahl π ein-führen kann. Die Idee hierfür stammt von Herbert Löthe1. Es läßt sich so bereits in der Klasse 7 durchführen.

Um einen Zusammenhang zwischen dem Umfang eines Kreises und dessen Durch-messer zu entdecken, verwendet man den Igel. Der Igel ‘versteht’ die Befehle VOR-WÄRTS und RÜCKWÄRTS zur Bewegung auf der Grafikseite und die Befehle RECHTS und LINKS zur Richtungsänderung. Weiterhin verwendet man die WIE-DERHOLE-Anweisung, um den Igel bestimmte Befehle wiederholt ausführen zu las-sen.

Zum Zeichnen eines Quadrats der Seitenlänge 100 beispielsweise befiehlt man

WIEDERHOLE 4 [ VORWÄRTS 100 RECHTS 90 ]

Ein Quadrat der Seitenlänge 100 besteht aus der 4maligen Wiederholung der Anwei-sungen VORWÄRTS 100 RECHTS 90. Die eckigen Klammern begrenzen die Befeh-le, die wiederholt werden sollen.

Für den Igel ist der Kreis nun nichts anderes als die 360fache Wiederholung einer be-stimmter Vorwärtsbewegung und einer Rechtsdrehung um 1 Grad:

WIEDERHOLE 360 [ VORWÄRTS 2 RECHTS 1 ]

Was auf dem Bildschirm nahezu wie ein Kreis aussieht, ist natürlich in Wirklichkeit ein regelmäßiges 360-Eck. Hiervon kann man sich bei genauer Betrachtung des Bild-schirms leicht überzeugen. Die Länge des Weges, den der Igel bei einem ‘Rundlauf’ zurückgelegt, ist ein Näherungswert für den Umfang des Kreises. Er beträgt: 360 x 2 Igelschritte, also 720 Igelschritte.

Bei der Auflösungen der meisten Grafikkarten wird die Darstellung des regelmäßigen Vielecks genauso gut, wenn man nur 36 Mal wiederholt.

WIEDERHOLE 36 [ VORWÄRTS 20 RECHTS 10 ]

Der Umfang beträgt 36 x 20 Igelschritte, also 720 Igelschritte.

Mit diesen Kenntnissen kann man nun die Suche nach dem Zusammenhang zwischen dem Umfang des Kreises und dem Durchmesser beginnen.

1 Loethe, Herbert: Conceptually Defined Turtles. In: Hoyles,C., Noss,R: Learning Mathe-

matics and LOGO. The MIT Press 1992. S. 60/61

Page 87: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Lernumgebungen im Mathematikunterricht 87

Zuerst zeichnet man mit

LINKS 90 VORWÄRTS 100 RECHTS 90

den Durchmesser 100. Als nächstes geht es darum, durch Ausprobieren das passende regelmäßige 36-Eck zu diesem Durchmesser zu finden.

Das 36-Eck mit

WIEDERHOLE 36 [ VORWÄRTS 8 RECHTS 10 ]

gehört offensichtlich nicht zu diesem Durchmes-ser. Es ist zu klein.

Der 36-Eck aus

WIEDERHOLE 36 [ VORWÄRTS 9 RECHTS 10 ]

ist aber zu groß.

Nach einigen weiteren Versuchen wird man feststellen, daß bei einer Schrittzahl von 8,81 ein 36-Eck entsteht, das durch den Endpunkt des Durchmessers verläuft. Für die Berechung des Umfangs kann man LOGO verwenden.

DRUCKEZEILE 36 * 8,8

gibt das Ergebnis von 36 * 8,8 = 316,8 auf der Textseite aus.

Dieses erste Ergebnis wird im folgenden durch weitere Experimente überprüft. Dabei sind die folgenden Variationen möglich.

• Durch Erhöhung der Wiederholungen z.B. auf 360 erhält man eine nicht sicht-bare Verfeinerung und eine bessere Annäherung an einen Kreis. Der Umfang des 360-Ecks liegt näher an dem gesuchten Kreisumfang.

• Das regelmäßige Vieleck zu dem Durchmesser 1000 oder 2000 kann mit die-sem Verfahren ebenfalls gefunden werden, obwohl nur ein kleiner Teil des Vielecks und des Durchmessers zu sehen ist.. Dazu zeichnet man den Durch-messer so, daß sich der Endpunkt auf der Grafikseite befindet.

Dazu gibt man z.B. ein:

LINKS 90 RÜCKWÄRTS 1000 LINKS 90

Da der Endpunkt des Durchmessers auf der Grafikseite liegt, kann man beo-bachten, ob ihr Vieleck den Endpunkt trifft oder nicht.

Ich habe hier einige Werte aus Experimenten in einer Tabelle zusammengefaßt:

1 Der Igel führt auch gebrochene Schrittzahlen (z.B. 8,8 Schritte ) genau aus.

Durchmesser 100 200 300 300 1000 5000

Umfang 316,8 633,6 946,8 943,2 3142,8 15710,4

Wiederholungen 36 36 36 360 360 360

Umfang/Durchmesser 3,168 3,168 3,156 3,144 3,1428 3,14208

Page 88: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

88 Lernumgebungen im Mathematikunterricht

Wie man leicht erkennen kann, ist der Quotient aus Umfang und Durchmesser unge-fähr gleich 3,14, also näherungsweise die Kreiszahl π.

4.2 Satzgruppe des Pythagoras Die Satzgruppe des Pythagoras enthält 3 Sätze über den Zusammenhang zwischen Strecken im rechtwinkligen Dreieck. Der Satz des Pythagoras sagt aus, daß die Sum-me der Quadrate über den Katheten gleich dem Quadrat über der Hypotenuse ist.

Zur Einführung dieses Satzes stelle ich einige LOGO-Programme zur Verfügung. Sie befinden sich unter dem PYTH_S.LOG in Ihrem LOGO-Verzeichnis.

Der erste Befehl lautet ZEIGE_PYTHAGORAS. Der erste Parameter ist die Länge der senkrechten Kathete, der zweite Parameter die Länge der waagerechten Kathete. Auf dem Bild-schirm erscheint ein rechtwinkliges Dreieck, in das die Kathetenlängen und die Länge der Hypotenuse eingetragen sind.

Nach der Eingabe von

ZEIGE_PYTHAGORAS 30 120

wird die nebenstehende Grafik gezeichnet.

Nun kann man über die Zifferntasten auf dem Zif-fernblock der Tastatur die vorgegebenen Längen verändern. Das Dreieck wird mit den veränderten Katheten neu gezeichnet und die Länge der Hypotenuse berechnet. Betätigt man die Taste 6 so wird die waagerechte Kathete vergrößert, bei der 4 wird sie verkleinert. Entsprechend vergrößert man die senkrechte Kathete mit der Taste 8 und verkleinert sie mit der Taste 2.

Durch das Betätigen dieser Tasten erhält man auf einfache Art und Weise viele pythagoräische Zahlentripel. Auffallend ist, daß bei einigen dieser Kombinationen die Länge der Hypo-tenuse ganzzahlig ist. Dies sind z.B.: (120;50;130), (120; 90; 150), (120;160;200).

Das Programm ZEIGE_PYTHAGO-RAS_QUADRATE funktioniert ge-nauso wie der Befehl ZEI-GE_PYTHAGORAS. Er zeichnet zusätzlich jedoch die Quadrate über den Dreieckseiten ein und provoziert so die Vermutung über den Satz des

Pythagoras. Auch hier ist wieder eine Veränderung der Figur über die Zifferntasten möglich.

Page 89: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Lernumgebungen im Mathematikunterricht 89

Der dritte Befehl heißt BEWEIS. Das Programm wartet auf das Betätigen einer Taste und zeigt danach jeweils eine veränderte Pythagorasfigur. Bei der Begründung für die Veränderungen erfolgt die Beweisführung, die hier kurz skizziert werden soll. Am Ende steht die folgende Grafik. Sie entwickelt sich von links nach rechts.

Das Quadrat F1 und das Vieleck F2 sind kongruent. Beide haben den gleichen Flä-cheninhalt. Das Vieleck F2 wird aufgeteilt in das Parallelogramm F3 und das Paralle-logramm F5. Das Parallelogramm F3 und das Quadrat F4 sind wegen der gleichen Grundseite und Höhe kongruent. Das Gleiche gilt für das Parallelogramm F5 und das Quadrat F6. Damit hat man gezeigt, daß das Quadrat F1 den gleichen Flächeninhalt wie die Summe der Flächeninhalte von F4 und F6 hat.

Für den Kathetensatz befinden sich ähnliche Prozeduren unter dem Namen KATH_S.LOG in Ihrem LOGO-Verzeichnis. Der Befehl ZEIGE_KATHETENSATZ benötigt zwei Parameter und zeichnet die Grundfigur ohne Flächen. Die Figur kann über die Zifferntasten verändert werden. Der Befehl ZEI-GE_KATHETENSATZ_GRAFIK zeichnet die zugehörigen Flächen ein und mit der Anweisung BEWEIS erhält man wieder eine Bilderfolge, bei deren Begründung der Kathetensatz bewiesen werden kann.

Für den Höhensatz befinden sich die Programme in der Datei HOEH_S.LOG. Die Befehle lauten ZEIGE_HÖHENSATZ, ZEIGE_HÖHENSATZ_GRAFIK, BEWEIS, BEWEIS1.

4.3 Einführung des Ableitungsbegriffs In der Jahrgangsstufe 11 führt der klassische Weg zum Ableitungsbegriff über das Tangentenproblem.

Page 90: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

90 Lernumgebungen im Mathematikunterricht

Dieser Zugang ist jedoch im Grundkurs nicht unproblematisch, weil er den Grenz-wertbegriff voraussetzt. Der damit verbundene Rechenaufwand ist häufig nur unter großen Schwierigkeiten realisierbar.

Für die Lernumgebung zum Tangentenproblem reichen die Grundbefehle des LOGO-Systems nicht mehr aus. Ich habe deshalb 3 Programme geschrieben und stelle diese als zusätzliche Befehle zur Verfügung. Die Programme befinden sich unter dem Na-men ABLEITUNG.LOG auf der LOGO-Systemdiskette..

Der neue Befehl SETZE_FUNKTION dient der Definition einer Funktion. Mit

SETZE_FUNKTION [ :x ^ 2 ]

definiert man die Funktion f(x) = x2.

Der Befehl ZEICHNE zeichnet den Graphen der definierten Funktion in dem angege-benen Intervall. Mit

ZEICHNE 0 2

entsteht der Graph der Funktion in dem Intervall [ 0; 2 ].

Der Befehl SEKANTE zeichnet die Sekante durch die angegebenen Punkte des Gra-phen und druckt ihre Steigung aus. Die Eingabe von

SEKANTE 1 2

zeichnet die Sekante, die den Graphen an den Stellen 1 und 2 schneidet.

Das Tangentenproblem besteht nun darin, die Steigung einer Kurve an einer bestimm-ten Stelle zu finden. Diese Steigung erhält man dadurch, daß man mehrere Sekanten

Page 91: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Lernumgebungen im Mathematikunterricht 91

durch den Punkt der Kurve zeichnet und dabei den anderen Schnittpunkt auf diesen Punkt zu bewegt. Die Steigungen der Sekanten nähern sich der Steigung (der Tangen-te) an der Stelle um so besser an, je kleiner der Abstand zwischen den beiden Schnitt-punkten ist.

Die Abbildung zeigt den Graphen von f(x) = x2 und die Sekanten bei Annäherung von links an die Stelle 2. Die Steigungen können auf der Grafikseite abgelesen werden. Die Steigungen nähern sich offensichtlich immer mehr der Zahl 2 an. Auf dem Bild-schirm ist deutlich zu erkennen, daß sich die Lage der Sekante bei Annäherung an die Stelle 2 kaum noch verändert. Dies wird durch die Annäherung der Sekanten von rechts bestätigt.

Folgende Experimente können weiterhin in dieser Lernumgebung gemacht werden:

• Es werden die Steigungen für andere Punkte der Kurve ermittelt. Daraus erhält man die Funktionsgleichung der Tangentensteigungsfunktion.

• Mit dem gleichen Verfahren kann man z.B. auch die Ableitungsfunktionen von f(x) = x3, f(x) = x4 , f(x) = x5 ermitteln und die Potenzregel entdecken. Selbstverständ-lich lassen sich auch Exponentialfunktionen oder trigonometrische Funktionen be-handeln. Entsprechende Experimente mit f(x) = 2x2, f(x) = 3x2 , usw. und f(x) = x2 + x3 führen zur Faktor- und Summenregel.

• Das beschriebene Verfahren kann auch für die Einführung des Differenzierbar-keitsbegriffs verwendet werden. Für die Berechnung der Funktionswerte greifen die Befehle ZEICHNE und SEKANTE auf die selbstgeschriebene Funktion F zu-rück. EDIT F bringt diese Funktion in den Editor. Um die folgende Funktion

{f x x für xx für x

( ) = <− ≥

2 13 2 1

zu definieren, löscht man die zweite Programmzeile und fügt die folgende Zeile ein:

WENN :x < 1 DANN RÜCKGABE :x ^ 2 SONST RÜCKGABE 3 * :x - 2

Mit dem Befehle ZEICHNE läßt man den Graphen in dem Intervall [0;2] zeichnen. Mit der SEKANTE-Anweisung versucht man dann mit dem beschriebenen Verfahren die Steigung der Tangente an der Stelle 1 zu ermitteln.

Page 92: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

92 Lernumgebungen im Mathematikunterricht

4.4 Einführung des Integralbegriffs Auch bei der Einführung des Integrals versucht man den Flächeninhalt zwischen Kur-ve und x-Achse über dem Intervall zuerst näherungsweise zu berechnen. Dazu unter-teilt man das Intervall in N gleich große Teilintervalle. Jedes dieser Teilintervalle stellt die Breite eines Rechtecks dar, dessen Höhe die Kurve von unten berührt. Die Summe der Rechtecksinhalte nennt man Untersumme. Für beliebig kleine Teilinter-valle ist die Untersumme gleich dem Flächeninhalt zwischen Kurve und x-Achse. Entsprechend nennt man die Summe der Rechtecksinhalte, deren Höhe die Kurve von oben berührt, Obersumme.

Auch für die Annäherung des Flächen-inhalts über die Unter- und Obersumme stelle ich einige neue Befehle (LOGO-Pro-gramme) zur Verfügung. Diese befinden sich unter dem Namen IN-TEGRAL.LOG in Ihrem LOGO-Verzeichnis.

Der Befehl SETZE_FUNKTION wur-de aus den Programmen zur Ablei-tungsfunktion übernommen.

Der Befehl UNTERSUMME benötigt drei Parameter. Der 1. Parameter gibt die Anzahl der Teilintervalle an. Der 2. und 3. Parameter legt die Intervallgren-zen fest.

Nach dem Aufruf von

DZ UNTERSUMME 4 0 2

entsteht die nebenstehende Grafik. Man erkennt den Graph der Funktion f(x) = x2 auf dem Intervall [0;2] und die drei Rechtecke über den Teilintervallen. LOGO gibt den Wert 1,75 für die Untersumme auf der Textseite aus.

Page 93: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Lernumgebungen im Mathematikunterricht 93

Man wird nun versuchen, die Anzahl der Teilintervalle zu erhöhen, um einen besseren Wert für den gesuchten Flächeninhalt zu erhalten.

Nach

DZ UNTERSUMME 100 0 2

erhält man als Wert für die Untersumme 2,6268 und die nebenstehende Grafik.

Über den Befehl OBERSUMME kann man den Flächeninhalt von oben annä-hern. Für eine Unterteilung in 100 Teil-intervalle schreibt man

DZ OBERSUMME 100 0 2

und erhält als Summe 2,7068.

Bei einer größeren Anzahl von Teilinter-vallen unterscheidet sich die Grafik nicht mehr von der Grafik für n=100. Deshalb reicht es aus, die Berechnung ohne Grafik auszuführen.

Dazu verwendet man den Befehl UNTERSUMMEN_BERECHNUNG. Der erste Pa-rameter legt dies die Breite der Teilintervalle fest. Der 2. und 3. Parameter gibt wieder das Intervall an.

DZ UNTERSUMMEN_BERECHNUNG 0,01 0 2

druckt die Zahl 2,6467 als Wert für die Untersumme aus. Entsprechend steht auch der Befehl OBERSUMMEN_BERECHNUNG zur Verfügung.

Für sehr kleine Rechtecksbreiten dauert die Berechnung mit diesen beiden Befehlen eine gewisse Zeit. Ich habe deshalb ein weiteres Programm erstellt, das die Summen direkt über die Summenformel für Quadratzahlen berechnet. Dieser Befehl funktio-niert natürlich nur bei f(x) = x2 korrekt.

Der Befehl SUMMEN_TABELLE_DIREKT erstellt eine Tabelle mit den Unter- und Obersummen für eine bestimmte Anzahl an Teilintervallen. Als ersten Parameter gibt man den untersten Wert für die Anzahl der Teilintervalle an, als zweiten Parameter den obersten. Der 3. Parameter legt die rechte Intervallgrenze fest. Die linke Grenze ist immer 0.

Die Anweisung

SUMMEN_TABELLE_DIREKT 2000 2200 2

beginnt mit 2000 Teilintervallen, druckt die Unter- und Obersumme und erhöht die Anzahl der Intervalle um 10. Das Ganze wird solange wiederholt, bis die Ergebnisse für 2200 Teilintervalle ausgedruckt sind.

Es entsteht die folgende Tabelle:

Page 94: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

94 Lernumgebungen im Mathematikunterricht

2000 2,6646670005 2,6686670006 2010 2,6646769476 2,6686570469 2020 2,664686796 2,668647192 2030 2,6646965476 2,668637434 2040 2,6647062032 2,668627772 2050 2,6647157649 2,668618204 2060 2,6647252338 2,668608729 2070 2,6647346112 2,6685993456 2080 2,6647438986 2,6685900522 2090 2,6647530969 2,668580848 2100 2,6647622075 2,6685717316 2110 2,6647712319 2,6685627015 2120 2,6647801715 2,6685537563 2130 2,6647890268 2,6685448954 2140 2,6647977996 2,6685361171 2150 2,6648064904 2,6685274209 2160 2,664815101 2,668518805 2170 2,6648236324 2,6685102683 2180 2,6648320854 2,6685018102 2190 2,6648404612 2,6684934292 2200 2,6648487606 2,6684851248

Wie zu erkennen ist, erhält man bei dieser Anzahl der Unterteilungen eine gute Annä-

herung für den korrekten Wert 83

.

Page 95: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 95

5 Messen, Steuern, Regeln Versucht man die verschiedenen Einsatzmöglichkeiten des Computers in der Industrie zu erfas-sen, so stellt man fest, daß der Computer dort nicht nur für Verwaltungsaufgaben, sondern auch zur Steuerung von Anlagen und Robotern eingesetzt wird. Die Behandlung von Steuerungs- und Regelungsaufgaben im Informatik- oder Technikunterricht erfolgt meist unter dem übergeordne-ten Thema "Messen, Steuern, Regeln".

In diesem Kapitel soll keine umfassende Abhandlung der Einsatzmöglichkeiten von LOGO beim Thema "Messen, Steuern, Regeln" gegeben werden. Vielmehr wird an mehreren Beispielen auf-gezeigt, wie einfach es mit LOGO ist, solche Aufgabenstellungen anzugehen. Dies ist eher als Anregung zu verstehen, sich intensiver mit dem Thema zu beschäftigen.

Alle Programme, die in diesem Kapitel entwickelt werden, befinden sich in Ihrem LOGO-Verzeichnis. Wenn Sie 'LOGO für den PC' benutzen, müssen Sie das Interface nach dem Laden der Programme unbedingt neu initialisieren. Wie Sie dazu vorgehen, können Sie in dem Kapitel 3.3 des Handbuchs zu 'LOGO für den PC' nachlesen.

Wer an einer ausführlichen Lektüre mit einer Vielzahl von Beispielen interessiert ist, dem seien die Bücher von M.Weber zur PDV mit LOGO1 empfohlen.

5.1 Drucktastenampel Da die Steuerung einer echten Ampel im Unterricht nicht möglich ist, wird die Steuerung mit Hilfe von Modellen simuliert. In diesem Kapitel soll die Steue-rung eines Modells beschrieben werden, das mit Hil-fe des Fischer-Technik Computing-Bau-kastens aufgebaut wurde. Eine ausführliche Beschreibung des Aufbaus der Drucktastenampel mit dem Fischer-Technik-System finden Sie im Anhang D. In dem vorliegenden Kapitel soll nur die Programmierung des Modells dargestellt werden.

Die nebenstehende Abbildung2 zeigt das Modell. Im oberen Teil sind die drei Lampen (rot, gelb ,grün) zu erkennen. Im unteren Teil befindet sich ein Schalter, mit dem die Drucktaste an einer Fußgängerampel simuliert werden kann.

Um die Drucktastenampel in einen bestimmten Zu-stand zu versetzen (z.B. grünes Licht leuchtet), müs-sen die aus dem Computer kommenden Impulse um-gewandelt werden. Diese Umwandlung übernimmt ein besonderer Baustein, das Interface. Die Steue-rung der Fischer-Technik-Drucktastenampel soll für 1 Weber, Manfred: PDV unter WIN-LOGO. Dümmler Verlag 1995. Weber, Manfred: PDV unter LO-

GO für den PC. Dümmler Verlag, 1994. 2 Aus Fischer-Technik-Computing: Programming/Kit-Building Instructions. S.15

Page 96: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

96 Messen-Steuern-Regeln

das Multiface und das Fischer-Technik-Interface beschrieben werden.

In diesem Kapitel wird lediglich eine einfache Version einer Fußgängerampel beschrieben. Diese Ampel gibt dem Straßenverkehr normalerweise das Signal grün. Erst bei dem Betätigen eines Knopfes schaltet die Ampel auf rot, um dem Fußgänger das Überqueren der Straße zu ermögli-chen. Nach einiger Zeit kehrt sie wieder in den Ausgangszustand grün zurück. Auf eine Anzeige der entsprechenden Signalfarben für den Fußgänger soll in dieser Version verzichtet werden.

Wenn Sie die Drucktastenampel und das Interface wie in Anhang beschrieben aufgebaut haben, so müssen Sie LOGO zuerst auf die Benutzung des Interfaces vorbereiten.

Wenn Sie das Fischer-Technik-Interface unter LOGO für den PC benutzen:

Sorgen Sie dafür, daß sich die Dateien FISCHER.LOG und FISCHER.BIN im angemeldeten Verzeichnis bzw. Laufwerk befinden.

Starten Sie LOGO wie üblich.

Laden Sie die Programme der Datei FISCHER in den Arbeitsspeicher.

Starten Sie das Programm VORBEREITUNG, um die LOGO-Befehle zur Steuerung des Inter-faces benutzen zu können.

Vorsicht : Das Programm VORBEREITUNG muß vor dem Aufruf des ersten Pogramms aus der Datei FISCHER ausgeführt werden, sonst kann es zum Absturz des gesamten Systems kommen.

Wenn Sie das Multiface unter LOGO für den PC benutzen:

Sorgen Sie dafür, daß sich die Dateien MFACE.COM und MFACE.LOG im angemeldeten Ver-zeichnis bzw. Laufwerk befinden.

Starten Sie das Programm MFACE von der Betriebssystemebene.

Starten Sie LOGO wie gewohnt.

Laden Sie die Programme der Datei TREIBER in den Arbeitsspeicher.

Starten Sie das Programm VORBEREITUNG, um die LOGO-Befehle zur Steuerung des Inter-faces benutzen zu können.

Vorsicht: Das Programm VORBEREITUNG muß vor dem Aufruf des ersten Pogramms aus der Datei TREIBER ausgeführt werden, sonst kann es zum Absturz des gesamten Systems kommen.

Wenn Sie das Multiface oder Fischer-Technik-Interface unter WIN-LOGO benutzen:

Starten Sie LOGO wie gewohnt.

Geben Sie auf der Textseite LADETREIBER ein und wählen Sie den gewünschten Treiber aus. Die Ausführung des Befehls VORBEREITUNG ist nicht notwendig.

Wenn Sie diese Vorbereitungen korrekt ausgeführt haben, so stehen Ihnen eine ganze Reihe zu-sätzlicher Befehle zur Verfügung, mit denen Sie den Zustand der Fischer-Technik-Modelle ver-ändern könne. Eine vollständige Beschreibung der neuen Befehle finden Sie in den Handbü-

Page 97: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 97

chern zu LOGO für den PC bzw. WIN-LOGO. Unter WIN-LOGO sind die Befehle für alle Inter-faces gleich.

Die Prozeduren aus diesem Kapitel befinden sich unter dem Namen D_AMP.LOG im WIN-LOGO-Verzeichnis Ihrer Festplatte. Unter 'LOGO für den PC' sind die Programme unter dem Namen D_AMP_MF.LOG und D_AMP_FI.LOG abgespeichert.

Machen wir uns nun zuerst klar, wie eine einfache Phase einer Ampelschaltung aufgebaut ist. Der folgende Vorgang läuft dabei ab:

grünes Licht an grünes Licht aus gelbes Licht an gelbes Licht aus rotes Licht an gelbes Licht an rotes und gelbes Licht aus usw.

Wir benötigen also Befehle, um die einzelnen Lampen der Ampel ein- und ausschalten:

Unter LOGO für den PC Unter WIN-LOGO: für das Fischer- für das Multiface: Technik-Interface: PR GRÜN_EIN PR GRÜN_EIN PR GRÜN_EIN MOTOR 1 1 MOTOR 1 1 EINSCHALTEN 1 ENDE ENDE ENDE PR GRÜN_AUS PR GRÜN_AUS PR GRÜN_AUS MOTOR 1 2 MOTOR 1 0 AUSSCHALTEN 1 ENDE ENDE ENDE PR GELB_EIN PR GELB_EIN PR GELB_EIN MOTOR 2 1 MOTOR 2 1 EINSCHALTEN 3 ENDE ENDE ENDE PR GELB_AUS PR GELB_AUS PR GELB_AUS MOTOR 2 2 MOTOR 2 0 AUSSCHALTEN 3 ENDE ENDE ENDE PR ROT_EIN PR ROT_EIN PR ROT_EIN MOTOR 3 1 MOTOR 3 1 EINSCHALTEN 5 ENDE ENDE ENDE PR ROT_AUS PR ROT_AUS PR ROT_AUS MOTOR 3 2 MOTOR 3 0 AUSSCHALTEN 5 ENDE ENDE ENDE

Page 98: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

98 Messen-Steuern-Regeln

Diese Anweisungen werden in der beschriebenen Reihenfolge in das Programm PHASE ange-fügt. Eine unterschiedlich lange Brenndauer der Lichter erhält man bei dem Multiface mit der WIEDERHOLE-Anweisung und bei dem Fischer-Technik-Interface mit dem ZLOOP-Befehl. Unter WIN-LOGO verwendet man die PAUSE-Anweisung. Beachten Sie dabei bitte, daß unter LOGO für den PC die Dauer der Pause je nach Taktzahl des Prozessors Ihres Systems korrigiert werden muß. Unter WIN-LOGO wird die PAUSE-Anweisung rechnerunabhängig in Zehntelse-kunden ausgeführt.

Unter LOGO für den PC: Unter WIN-LOGO: für das Fischer- für das Multiface: Technik-Interface: PR PHASE PR PHASE PR PHASE GRÜN_EIN WH 5 [ GRÜN_EIN ] GRÜN_EIN ZLOOP 150 GRÜN_AUS PAUSE 50 GRÜN_AUS WH 2 [ GELB_EIN ] GRÜN_AUS GELB_EIN GELB_AUS GELB_EIN ZLOOP 30 WH 5 [ ROT_EIN ] PAUSE 10 GELB_AUS WH 2 [ ROT_EIN GELB_EIN ] GELB_AUS ROT_EIN ROT_AUS ROT_EIN ZLOOP 150 GELB_AUS PAUSE 50 GELB_EIN ENDE GELB_EIN ZLOOP 30 PAUSE 10 ROT_AUS ROT_AUS GELB_AUS GELB_AUS ENDE ENDE

Bei einer Fußgängerampel gibt es noch eine weitere Situation. Normalerweise zeigt sie dem Au-toverkehr grün. Erst wenn die Taste gedrückt wird, erfolgt ein Durchlauf der obigen Phase. Das zugehörige Programm AMPEL hat die folgende Form:

Unter LOGO für den PC: für das Fischer-Technik- für das Multiface: Interface: PR AMPEL PR AMPEL WENN SWITCH 1 DANN PHASE WENN TASTEN 1 DANN PHASE GRÜN_EIN GRÜN_EIN AMPEL AMPEL ENDE ENDE

Unter WIN-LOGO:

PR AMPEL WENN SCHALTER? 1 DANN PHASE GRÜN_EIN AMPEL ENDE

Das Programm AMPEL ruft sich selbst auf. Damit wird eine Wiederholung des gesamten Vor-gangs erreicht.

Page 99: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 99

Mit diesen kleinen Programmen haben Sie bereits eine vollständige Steuerung der Fischer-Technik Drucktastenampel erstellt.

5.2 Gebläse Das Gebläsemodell kann mit dem Messen-Steuern-Regeln Baukas-ten von Fischer-Technik aufge-baut werden. Es ist auch als sepa-rates Modell erhältlich. Sie erken-nen auf der Abbildung das Wind-rad, das für die Kühlung sorgen soll. Im Vordergrund ist vor ei-nem Temperaturfühler eine Lam-pe angebracht. Mit dieser Lampe kann der Temperaturanstieg in der Umgebung des Heißleiters be-schleunigt werden. Wir haben es hier mit einer typischen Rege-lungsaufgabe zu tun. Das System soll nicht automatisch ablaufen, sondern es soll auf die Verände-rung der Einflußfaktoren in der Umgebung des Systems reagieren.

Die Prozeduren aus diesem Kapi-tel befinden sich unter dem Na-men VENT.LOG in Ihrem WIN-LOGO-Verzeichnis. Unter 'LOGO für den PC' sind die Programme unter dem Namen VENT_MF.LOG und VENT_FI.LOG abgespeichert. Das hier abgedruckte Programmbeispiele wurde mit WIN-LOGO erstellt.

Die Beschreibung der Regelungsaufgabe ist leicht:

PR REGELKREIS WENN KALT? DANN BEENDE_ABKÜHLEN WENN HEISS? DANN STARTE_ABKÜHLEN REGELKREIS ENDE

Natürlich müssen wir dem System noch beibringen, was heiß und kalt ist. Dazu verwenden wir die Werte, die von dem Temperaturfühler zur Verfügung gestellt werden.

PR KALT? PR HEISS? RG (POTI 2) < 110 RG (POTI 2) > 130 ENDE ENDE

Die Poti-Werte, ab denen das System heiß oder kalt melden soll, hängen natürlich stark von der Umgebungstemperatur des Systems ab und müssen gegebenenfalls angepaßt werden.

Zum Ein- und Ausschalten des Windrades werden die digitalen Ausgänge des Systems benutzt. Um innerhalb kurzer Zeit den Zustand heiß zu erreichen, wird bei ausgeschaltetem Windrad ein

Page 100: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

100 Messen-Steuern-Regeln

Lämpchen eingeschaltet, das der Heißleiter aufwärmt. Dieses Lämpchen dient hier nur zur Simu-lation und wird in der realen Anwendung natürlich fehlen. Die Prozeduren zum Abkühlen sind:

PR STARTE_ABKÜHLEN PR BEENDE_ABKÜHLEN AUSSCHALTEN 5 AUSSCHALTEN 2 EINSCHALTEN 2 EINSCHALTEN 5 ENDE ENDE

Mit einer kleinen Veränderung der Prozedur REGELKREIS erhält man bereits eine Temperatur-kurve während des Aufwärmens und Abkühlens.

PR REGELKREIS_ANZEIGE :X WENN KALT? DANN BEENDE_ABKÜHLEN WENN HEISS? DANN STARTE_ABKÜHLEN AUFXY :X 5*(POTI 2) - 100 REGELKREIS :X+1 ENDE

Diese Prozedur wird über die Prozedur

START_REGELKREIS_ANZEIGE

ausgeführt. Möglicherweise müssen Sie noch die Verschiebung parallel zur y-Achse hinter der AUFXY-Anweisung verändern, damit die Temperaturkurve auf der Grafikseite erscheint. In die-sem Fall ist dort statt der Zahl 100 ein anderer Wert einzusetzen.

Wer eine perfekte grafische Darstellung der Temperaturveränderungen bei Aufwärm- und Ab-kühlvorgänge erhalten möchte, der benutzt am besten das PDV-Mini-Labor und die zugehörige Software von M. Weber.1 Die Abbildung zeigt das PDV-Mini-Labor.

1 Weber, Manfred: PDV unter WIN-LOGO. Dümmler Verlag, 1995. Weber, Manfred: PDV unter LO-

GO für den PC. Dümmler Verlag 1994.

Page 101: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 101

Das PDV-Mini-Labor ist aus Fischer-Technik-Bauteilen aufgebaut. Durch einfaches Umstecken können mit wenigen Handgriffen innerhalb kürzester Zeit eine Vielzahl von Versuchs-aufbauten erstellt werden. Eine Beschreibung erhält man in den genannten Büchern von M. Weber. Die zugehörigen LOGO-Programme stehen auf einer zusätzlichen Diskette zur Verfügung.

Mit dem PDV-Mini-Labor kann ebenfalls ein Gebläse aufgebaut werden. Die zugehörige Soft-ware befindet sich unter dem Namen REGDIA.LOG auf der Begleitdiskette zu dem Buch von M. Weber. Es ist empfehlenswert, zuerst die zugehörige Informationsdatei zu betrachten. Sie besitzt den gleichen Namen wie die Programmdatei, endet jedoch mit einem X. In unserem Fall laden wir also erst REGDIAX.LOG. Die Prozedur REGELX_INFO enthält die folgenden Hinweise:

PR REGDIAX_INFO * Regelungs-Einrichtung mit vielen Einstell-Optionen Start: SREGDIA * * Nach dem Start erscheint eine Eingabemaske. Es können dann frei gewählt werden: * Analog-Ausgang für Heißleiter (NTC-Widerstand) Ausgang für Ventilator (Kühlung) Ausgang für Heiz-Lampe (optional) Meßwert verkleinern oder vergrößern Meßwert anheben oder senken Schrittweite verändern * SOLL-Wert obere Grenze SOLL-Wert untere Grenze * IST-Wert-Anzeige (Eingabe 0 unterdrückt die Anzeige) ENDE

An dieser Informationsdatei können Sie bereits erkennen, welche vielfältige Einstellungsmög-lichkeiten Sie mit dieser Software haben.

Nachdem die einzelnen Bauteile über Kabel mit dem Interface verbunden sind, kann das Rege-lungsprogramm gestartet werden. Der Name des Startprogramms hat den gleichen Namen wie die Programmdatei, beginnt aber mit dem Buchstaben S. In unserem Fall schreiben wir

SREGDIA

auf der Textseite.

Page 102: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

102 Messen-Steuern-Regeln

5.3 Kreuzung

Die Abbildung zeigt die HIBS-Kreuzung1. Zu erkennen sind die wesentlichen Bestandteile wie Hauptstraße und Nebenstraße. An jeder der vier Seiten der Kreuzung befindet sich eine Ampel, an jeder Seite eines Fußgängerüberweges ist eine Fußgängerampel und eine Drucktaste für diese angebracht. Unter jeder Stopplinie sind weiterhin Reedkontakte installiert. Mit einem Magneten kann man so das Heranfahren eines PKW simulieren. Weiterhin besitzt die Kreuzung einen Lichtsensor, mit dem man die Ampel bei Dunkelheit in den Nachtbetrieb schalten kann.

Sie finden die Programme zur Steuerung dieser Ampelanlage unter dem Namen AMPEL.LOG in Ihrem WIN-LOGO-Verzeichnis. Unter 'LOGO für den PC' sind die Prozeduren unter dem Na-men AMPEL_MF.LOG und AMPEL_HI.LOG abgespeichert. Das hier abgedruckte Programm wurde mit WIN-LOGO erstellt.

Um ein Programm zur Steuerung dieser Ampelanlage zu schreiben, werden elementare Befehle zum Ein- und Ausschalten der einzelnen Lampen belegt. Welche Lampe mit welchem digitalen Ausgang verbunden ist, entnimmt man der Beschreibung der HIBS-Kreuzung.

Zum Einschalten der grünen Hauptstraßenampel verwendet man den Befehl HAUPT_GRÜN_EIN.

PR HAUPT_GRÜN_EIN. EINSCHALTEN 3 ENDE

Entsprechend sind die Befehle für die übrigen Lampen aufgebaut. Mit diesen Befehlen kann man eine Prozedur für einen Durchlauf einer Ampelphase erstellen.

PR PHASE HAUPT_GRÜN_EIN PAUSE 50 HAUPT_GRÜN_AUS HAUPT_GELB_EIN 1 Die Bezugsquelle entnehmen sie bitte dem Anhang dieses Buches.

Page 103: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 103

PAUSE 10 HAUPT_GELB_AUS HAUPT_ROT_EIN PAUSE 100 HAUPT_GELB_EIN PAUSE 10 HAUPT_ROT_AUS HAUPT_GELB_AUS HAUPT_GRÜN_EIN PHASE ENDE

Möchte man nun die Nebenstraßenampeln mit einbeziehen, so ist es günstiger, in zwei Teilpro-gramme aufzuteilen. In der Prozedur NEBEN_STRASSE_PHASE werden nur die Lampen der Nebenstraßenampeln einschließlich der Fußgängerampeln geschaltet. Diese Prozedur wird von dem Programm HAUPT_STRASSEN_PHASE aufgerufen, das die entsprechende Schaltung für die Hauptstraße übernimmt.

PR HAUPT_STRASSEN_PHASE PR NEBEN_STRASSEN_PHASE NEBEN_FUSS_AUS NEBEN_GELB_EIN HAUPT_GRÜN_AUS PAUSE 10 HAUPT_GELB_EIN NEBEN_GELB_AUS PAUSE 10 NEBEN_ROT_AUS HAUPT_GELB_AUS NEBEN_GRÜN_EIN HAUPT_ROT_EIN HAUPT_FUSS_EIN NEBEN_STRASSEN_PHASE PAUSE 50 HAUPT_GELB_EIN NEBEN_GRÜN_AUS PAUSE 10 HAUPT_FUSS_AUS HAUPT_GELB_AUS NEBEN_GELB_EIN HAUPT_ROT_AUS PAUSE 10 HAUPT_GRÜN_EIN NEBEN_GELB_AUS NEBEN_FUSS_EIN NEBEN_ROT_EIN ENDE ENDE

Bei einer verkehrsabhängigen Ampelanlagen wird der normale Durchlauf in bestimmten Situati-onen unterbrochen. Dies kann z.B. das Herannahen eines Autos sein oder ein Fußgänger, der den Druckknopf an der Ampel betätigt.

Das folgende kleine Programm schaltet die Ampelanlage in einen festen Ausgangszustand. Die Hauptstraßenampeln zeigt grün und die Nebenstraßenampeln rot. Erst wenn der Reed-Kontakt an der Nebenstraße mit einem Magnet geschaltet wird oder der Taster an der Fußgängerampel ge-drückt wird, startet ein Ampeldurchlauf.

PR ABHÄNGIGE_AMPEL ANFANGS_ZUSTAND WENN EINES? SCHALTER? 8 SCHALTER? 1 DANN HAUPT_STRASSEN_PHASE

Page 104: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

104 Messen-Steuern-Regeln

ABHÄNGIGE_AMPEL ENDE

Die Prozedur ANFANGS_ZUSTAND stellt den Ausgangszustand her:

PR ANFANGS_ZUSTAND HAUPT_GRÜN_EIN NEBEN_ROT_EIN HAUPT_FUSS_AUS NEBEN_FUSS_EIN ENDE

Mit einer einzigen weiteren Programmzeile kann die Kreuzung so programmiert werden, daß sie bei Dunkelheit in den Nachtbetrieb schaltet. Dazu verwendet man den Lichtsensor auf dem Kreuzungsmodell, der mit dem analogen Eingang des Interfaces verbunden wird.

In die dritte Zeile der Prozedur ABHÄNGIGE_AMPEL fügt man ein:

WENN (POTI 1) < 50 DANN NACHT_SCHALTUNG

Die Prozedur NACHTSCHALTUNG schaltet die Nebenstraßenampel auf blinkend.

PR NACHT_SCHALTUNG A WENN (POTI 1) > 50 DANN RK NEBEN_GELB_EIN PAUSE 10 NEBEN_GELB_AUS PAUSE 10 NACHT_SCHALTUNG ENDE

Das vorliegende Kreuzungsmodell enthält noch sehr viel mehr Aufgabenstellungen. Man kann das Programm HAUPT_STRASSEN_PHASE beispielsweise so verbessern, daß es in jeder Pha-se eines Durchlaufs auf das Schließen eines Schalters reagiert. Mit Hilfe weiterer Kontakte, die unter der Hauptstraße angebracht sind, kann man das Überqueren einer roten Ampel feststellen oder die Geschwindigkeit des Fahrzeuges messen.

Page 105: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 105

5.4 Sonnennachführung

Die Abbildung1 zeigt das Modell einer Sonnennachführung. Es wurde mit dem Lasy-Control-System aufgebaut. Das zugehörige Lasy-Interface wird an die serielle Schnittstelle angeschlos-sen.

Mit diesem Modell läßt sich das Lichtmaximum in der Umgebung des Modells ermitteln. Die zugehörigen Programme befinden sich unter dem Namen SONNE.LOG in dem LOGO-Verzeichnis Ihrer Festplatte. Die hier abgedruckten Prozeduren wurden mit ‘LOGO für den PC’ erstellt.

Das Programm wird mit der Eingabe von

STARTE_SONNE

gestartet. Man erkennt, daß das Modell das Rohr über dem Helligkeitssensor auf den hellsten Punkt in der Umgebung ausrichtet. Wären hier statt dessen Solarzellen eingebaut, so wäre diese Position für die Stromerzeugung optimal.

Eine Veränderung der Lichtquelle wird nach dem erneuten Aufruf mit

STARTE_SONNE

sofort erkannt.

Das Programm besteht im wesentlichen aus drei Teilen:

1 Aus Lasy-Control:Versuchsbeschreibungen. Begleitbuch zu den Bauteilen. S.52

Page 106: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

106 Messen-Steuern-Regeln

PR SONNE DREHE_ANFANGSSTELLUNG DREHE HELLSTE_STELLE 255 ENDE

Als erstes wird der Helligkeitssensor in die Anfangsstellung gebracht Dies geschieht in der Pro-zedur DREHE_ANFANGSSTELLUNG. Dazu wird der Meßarm so lange nach links gedreht bis die Anfangsstellung erreicht ist. Die Anfangsstellung ist erreicht, wenn der eingebaute Magnet den Magnetschalter geschaltet hat.

PR DREHE_ANFANGSSTELLUNG WENN ANFANGSSTELLUNG? DANN MOTOR_AUS RK MOTOR_LINKS DREHE_ANFANGSSTELLUNG ENDE

Die Überprüfung des Magnetschalters geschieht in der Funktion ANFANGSSTELLUNG?. Die Funktion gibt „WAHR“ zurück, wenn der Schalter geschlossen ist.

PR ANFANGSSTELLUNG? RG SCHALTER 1 FALSCH ENDE

Im zweiten Teil erfolgt eine komplette Rechtsdrehung des Meßarms, bis die Endstellung erreicht ist. Dabei werden laufend die Helligkeitswerte eingelesen und mit dem aktuellen Maximalwert verglichen. Dies geschieht in der Funktion HELLSTE_STELLE.

PR HELLSTE_STELLE :MAX LOKAL "AKTUELL" WENN ENDSTELLUNG? DANN MOTOR_AUS RG :MAX SETZE "AKTUELL" MESSWERT 1 WENN :AKTUELL < :MAX DANN SETZE "MAX" :AKTUELL MOTOR_RECHTS RG HELLSTE_STELLE :MAX ENDE

Die Endstellung wird über den zweiten Magnetschalter festgestellt und von der Funktion END-STELLUNG? gemeldet..

Die Rückgabe dieser Funktion wird an die Prozedur DREHE weitergegeben. Es ist der kleinste Meßwert, der bei diesem Sensor der größten Helligkeit entspricht. Im dritten Teil sorgt die Pro-zedur DREHE dann dafür, daß der Meßarm solange nach links gedreht wird bis die Position mit der größten Helligkeit oder die Anfangsposition erreicht ist. Eine Überprüfung der Anfangsposi-tion muß erfolgen, weil zwischenzeitlich eine Wolke die Sonne verfinstert haben könnte. Der Meßarm würde die hellste Stelle dann nicht finden und ohne Ende weiter drehen.

PR DREHE :MAX WENN EINES? ANFANGSSTELLUNG? :MAX >= ( MESSWERT 1 ) - 20 DANN MOTOR_AUS RK MOTOR_LINKS DREHE :MAX ENDE

Page 107: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 107

Die Prozeduren MOTOR_LINKS, MOTOR_RECHTS und MOTOR_AUS werden hier nicht abgedruckt. Sie schalten den digitalen Ausgang in den jeweiligen Zustand.

Bei diesem Modell sind noch Erweiterungen möglich. So könnten die gemessenen Helligkeits-werte in Lux umgerechnet werden. Wird dabei ein bestimmter Wert unterschritten, so könnte die Solaranlage in eine Ruhestellung für die Nacht gefahren werden.

Es wäre auch denkbar, daß das System automatisch ein Nachlassen oder Zunehmen der Hellig-keit erkennt und dann die Position des Arms ggf. korrigiert.

5.5 Teach-in-Roboter

Die Abbildung1 zeigt das Modell eines Teach-in-Roboters. Die Aufgabe des Roboters besteht darin, ein Werkstück von einer Position in die andere zu transportieren.

Dazu kann unser Robotermodell sich in horizontaler Richtung drehen, den Arm schräg vor- und zurückbewegen und das Werkstück mit Hilfe eines Magnets anziehen bzw. loslassen.

Es gibt zwei Methoden, mit denen der Roboter seine Aufgabe erfüllen kann. Bei der ersten Me-thode arbeitet er eine programmierte Folge von Arbeitsschritten ab. Das Problem dieses Verfah-rens besteht darin, daß bei veränderten Arbeitsabläufen eine Neuprogrammierung erfolgen muß. Deshalb wendet man häufiger das sogenannte Teach-In-Verfahren an. Die Programmierung er-folgt dabei in unserem Fall über Tasten auf dem Modell.

1 Fischer-Technik-Computing: Programming/Kit-Building Instructions. S.62.

Page 108: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

108 Messen-Steuern-Regeln

Es soll hier zuerst das Programm entworfen werden, mit dem der Roboter eine feste Abfolge von Arbeitsschritten ausführt. Die Prozeduren befinden sich unter dem Namen ROBOT.LOG in Ih-rem WIN-LOGO-Verzeichnis. Unter 'LOGO für den PC' sind die Prozeduren unter dem Namen ROBOT_MF.LOG und ROBOT_FI.LOG abgespeichert. Die hier abgedruckten Beispiele sind unter WIN-LOGO programmiert.

Um den Arm des Roboters zu bewegen, werden zuerst einmal elementare Befehle benötigt. Für die horizontale Bewegung des Arms ist der Motor M11 des Modells verantwortlich. Der Befehl ARM_LINKS dreht den Arm um einen bestimmten Winkel nach links.

PR ARM_LINKS :WINKEL ES 1 PAUSE :WINKEL AS 1 ENDE

Dabei wird der Ausgang 1 eingeschaltet. Dann wartet das Programm eine gewisse Zeit, die sich nach der Größe der Zahl richtet, die unter WINKEL eingegeben wurde. Zum Schluß wird der Ausgang 1 wieder ausgeschaltet.

Entsprechend funktionieren die Befehle ARM_RECHTS, ARM_HOCH, ARM_ABWÄRTS, MAGNET_AN, MAGNET_AUS.

Als Werkstück für den Transport wählt man bei unserem Modell am besten ein Geldstück. Ein 10-Pfennig-Stück wird von dem eingebauten Magneten gut angezogen und wieder abgeworfen.

Für den Durchlauf des Transports von einer Position zu einer anderen ist nun ein wenig Auspro-bieren notwendig. Am besten bringt man den Roboterarm mit Hilfe der obigen Befehle in eine feste Ausgangsposition über dem zu transportierenden Geldstück. Es ist auch ratsam, sich diese Position mit einem kleinen Strich auf dem Zahnkranz und dem Roboterarm festzuhalten. Bei meinen Experimenten habe ich die folgenden Parameter für einen Durchlauf notiert:

PR ABLAUF ARM_ABWÄRTS 10 MAGNET_AN ARM_HOCH 10 ARM_RECHTS 20 ARM_ABWÄRTS 3 MAGNET_AUS ARM_HOCH 3 ARM_LINKS 20 ENDE

Nachdem das Werkstück abgelegt wurde, wird der Arm wieder in die Ausgangsposition zurück bewegt.

Selbstverständlich können die Parameter bei anderen Aufbauten variieren. Damit das obige Pro-gramm mehrmals ablaufen kann, verwendet man die WIEDERHOLE-Anweisung. Denken Sie jedoch daran, den Arm vorher in die richtige Ausgangsposition zu bewegen.

WH 3 [ ABLAUF ]

1 Siehe Abbildung auf Seite 106.

Page 109: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 109

Sie werden bei Ihren Versuchen bemerken, daß das Robotermodell für eine gewisse Zeit seine Arbeit ordentlich verrichtet. Natürlich sind diese Modelle nicht so exakt gearbeitet, daß nicht nach einer bestimmten Zeit Abweichungen auftreten und das Werkstück neben seinem Zielort plaziert wird.

Betrachten wir nun das Teach-In-Verfahren etwas genauer. Die Prozeduren hierfür sind unter dem Namen ROBOTER2.LOG abgespeichert. Bei diesem Verfahren ‘lernt’ der Roboter das Werkstück von einer Position in die andere zu transportieren. Dazu werden die Taster E1 bis E81 verwendet. Die Bewegung des Roboters wird nun nicht mehr über Befehle ausgelöst, sondern durch das Betätigen eines der Taster.

Die elementaren Befehle zum Bewegen des Roboterarms müssen also neu programmiert werden. Für die Anweisung ARM_LINKS lautet das neue Programm:

PR ARM_LINKS_BIS ES 1 SOLANGE [ SCHALTER? 3 ] [ ] AS 1 ENDE

Entscheidend dabei ist, daß der Arm solange gedreht wird, bis der Taster losgelassen wird. Die übrigen Befehle ARM_RECHTS_BIS, ARM_HOCH_BIS und ARM_ABWÄRTS_BIS sind entsprechend aufgebaut.

Als nächstes erstellen wir eine Prozedur ROBOTER, die je nach gedrückter Taste die entspre-chende Aktion ausführt.

PR ROBOTER WENN SCHALTER? 4 DANN ARM_RECHTS WENN SCHALTER? 3 DANN ARM_LINKS WENN SCHALTER? 1 DANN ARM_HOCH WENN SCHALTER? 2 DANN ARM_ABWÄRTS WENN SCHALTER? 5 DANN SETZE "MAGNET_AN" "WAHR" ES 5 WENN SCHALTER? 6 DANN SETZE "MAGNET_AN" "FALSCH" AS 5 ROBOTER ENDE

Nach der Eingabe von

ROBOTER

kann man nun den Roboterarm durch das Drücken des jeweiligen Tasters auf die gewünschte Position bewegen. Es ist ratsam, die einzelnen Taster entsprechend zu beschriften.

Das Teach-In-Verfahren besteht nun darin, den Arm auf eine bestimmte Position zu bewegen und diese Position zu speichern. Später werden dann alle gespeicherten Positionen abgefahren und damit der gesamte Durchlauf ausgeführt.

Zum Speichern der Positionen verwendet man die Potentiometer EX und EY. Sie sind mit den analogen Eingängen des Interfaces verbunden. Je nach Position des Dreharms ist das Poten-

1 Siehe Abbildung auf Seite 106.

Page 110: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

110 Messen-Steuern-Regeln

tiometer weit ‘geöffnet’ oder ‘geschlossen’. Das Interface gibt dies als verschieden große Zahlen an das LOGO-System weiter.

Beim Betätigen des Tasters 7 soll LOGO die aktuelle Position speichern. In die Prozedur RO-BOTER ist die folgende Zeile einzufügen:

WENN SCHALTER? 7 DANN LERNEN

Die Prozedur LERNEN hat das folgende Aussehen:

PR LERNEN SETZE "LISTE" MITLETZTEM POTI 2 :LISTE SETZE "LISTE" MITLETZTEM POTI 1 :LISTE SETZE "LISTE" MITLETZTEM :MAGNET_AN :LISTE SOLANGE [ SCHALTER? 7 ] [ ] ENDE

In die LISTE mit den gespeicherten Positionen werden hinten die aktuellen Positionen eingefügt. Die Werte der Potentiometer erhält man über die Funktion POTI. In der Variablen MAG-NET_AN ist der Zustand des Magneten gespeichert. Dieser Befehl wird erst beendet, wenn der Taster 7 losgelassen wird.

Wichtig ist, daß zu Beginn die Variablen LISTE und MAGNET_AN mit den richtigen Werten vorbelegt werden. Am besten startet man die Prozedur ROBOTER über die folgende Prozedur START:

PR START SETZE "LISTE" [ ] SETZE "MAGNET_AN" "FALSCH" ROBOTER ENDE

Wenn nun alle Positionen angefahren und gespeichert wurden, kann der Roboter seine Arbeit beginnen und der Reihe nach die gespeicherten Positionen abfahren.. Dies geschieht mit dem Taster 8, der den automatischen Durchlauf auch wieder stoppt.

In die Prozedur ROBOTER ist einzufügen:

WENN SCHALTER? 8 DANN SETZE "FERTIG" "FALSCH" SOLANGE [ SCHALTER? 8 ] [ ] START_DURCHLAUF

An der Variablen FERTIG erkennt das Programm, daß ein automatischer Durchlauf abläuft und kann den Vorgang beim nochmaligen Betätigen dieses Tasters beenden.

Der eigentliche Start des Durchlaufs geschieht in der Prozedur START_DURCHLAUF:

PR START_DURCHLAUF WENN :FERTIG DANN SETZE "FERTIG" "FALSCH" RK DURCHLAUF :LISTE START_DURCHLAUF ENDE

Diese Prozedur ruft DURCHLAUF auf, die die einzelnen Positionen aus der Liste ansteuert.

PR DURCHLAUF :LISTE WENN LEER? :LISTE DANN RK WENN SCHALTER? 8 DANN SOLANGE [ SCHALTER? 8 ] [ ] SETZE "FERTIG"

Page 111: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Messen-Steuern-Regeln 111

"WAHR" RK SETZE "WAAG" ELEMENT 1 :LISTE SETZE "SENK" ELEMENT 2 :LISTE SETZE "MAG" ELEMENT 3 :LISTE WENN (ABS ( POTI 2 ) - :WAAG ) > 10 DANN DREHEN :WAAG WENN (ABS ( POTI 1 ) - :SENK ) > 10 DANN HEBEN :SENK WENN :MAG DANN ES 5 SONST AS 5 DURCHLAUF OHNEERSTES OHNEERSTES OHNEERSTES :LISTE ENDE

Der Durchlauf wird beendet, wenn die Liste leer ist oder der Schalter 8 betätigt wird. Dann wer-den die ersten drei Elemente aus der Liste Variablen zugewiesen. Bei der waagerechten und senkrechten Bewegung wird nur dann eine Veränderung ausgeführt, wenn die Abweichung der neuen von der aktuellen Position größer als 10 ist. Damit umgeht man Fehlfunktionen, die durch eine kleine Überschreitung der Zielposition beim Abschalten immer wieder entstehen können. Die Bewegungen werden von den Prozeduren DREHEN und HEBEN ausgeführt.

In der letzen Zeile des Programms werden die letzten drei Elemente aus der Liste entfernt und der nächste Schritt des Durchlauf ausgeführt.

Page 112: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

112 Anhang

6 Anhang

6.1 Aufbau der Fischer-Technik-Drucktastenampel Wenn Sie sich für die Verwendung der Fischer-Technik Modelle entscheiden, stehen Sie zu-nächst vor der Wahl, welches Interface Sie zur Steuerung der Modelle verwenden. Im folgen-den wird der Aufbau sowohl für das Interface der Firma Fischer-Technik als auch für das Multiface, das beim Dümmler-Verlag erhältlich ist, beschrieben.

Bevor Sie mit dem Aufbau der Drucktastenampel beginnen, müssen Sie zuerst das beiliegen-de Flachbandkabel vorbereiten, falls Sie den Computing-Baukasten bisher noch nicht benutzt haben. Dies ist das flache Kabel mit den 20 feinen, bunten Leitungen. Von diesen Leitungen behalten die drei am Rande nebeneinander liegenden Leitungen mit den Farben braun, rot und gelb die volle Länge. Alle anderen 17 Leitungen werden um 50 cm gekürzt. Eine genaue Be-schreibung des Vorgehens finden Sie auf Seite 4 der Programmieranleitung, die dem Fischer-Technik-Computing-Baukasten beigelegt ist.

Für den Aufbau der Drucktastenampel schlagen Sie die Seite 2 der Bauanleitung des Fischer-Technik-Computing-Baukastens auf. In der linken oberen Ecke sind alle Teile und die Anzahl aufgezeichnet, die Sie für den Aufbau der Ampel benötigen. Weiterhin suchen Sie sich noch einen Schalter (Abbildung in der Mitte).

Die fünf Bausteine werden einfach übereinander gesteckt und auf der Platte befestigt. Nun schieben Sie zuerst den Schalter von oben nach unten in eine der senkrechten Rillen, als nächstes dann die Halterungen für die 3 Lampen.

Zum Schluß befestigen Sie die Lämpchen in die dafür vorgesehene Öffnung der Halterungen und setzen die farbigen Abdeckungen darauf.

Beim Anschluß der Leitungen müssen Sie sorgfältig auf die Farben achten, um später keine Fehlfunktionen zu erhalten. An der rechten und linken Seite der Lampenhalterungen befinden sich je zwei runde Öffnungen. In die beiden Öffnungen auf einer der beiden Seiten werden die Stecker von je zwei Leitungen gesteckt. In der Halterung für die grüne Lampe wird die kurze gelbe und die danebenliegende orange Leitung befestigt. Dabei spielt es keine Rolle, welches Kabel sich oben bzw. unten befindet. Die danebenliegende blaue und grüne Leitung wird an der gelben Lampe und die danebenliegende graue und lila Leitung an der roten Lampe befes-tigt.

Für den Anschluß des Tasters benötigen Sie die braune lange und die rote kurze Leitung. Auf der Vorderseite des Tasters befinden sich 3 runde Öffnungen und darüber die Zahlen 1,2,3. Eine der beiden Leitungen wird in die Öffnung unter der Zahl 1, die andere Leitung wird in die Öffnung unter der Zahl 3 befestigt.

Der Aufbau der Ampel ist damit fertiggestellt. Nun erfolgt noch der Anschluß über das Inter-face an den Computer. Zur Stromversorgung des Interfaces benötigen Sie ein separates Netz-teil. Hier genügt ein in jedem Elektrohandel erhältliches Universalnetzteil mit einstellbarer Spannung und einer Leistung von mindestens 500 mA. Diese Netzteile sind meist mit mehre-ren Steckern ausgestattet. Der Anschluß für Blockbatterien läßt sich einfach entfernen und mit den Steckern aus dem Fischer-Technik-Baukasten ausstatten. An dieser Stelle sei jedoch dar-auf hingewiesen, daß durch eine solche Veränderung jeglicher Garantieanspruch für das Netz-teil verlorengeht.

Page 113: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Anhang 113

Im folgenden wird der Anschluß des Fischer-Technik-Interfaces und des Multifaces getrennt beschrieben.

Wenn Sie ein Fischer-Technik Interface benutzen:

Das Fischer-Technik-Interface wird in zwei verschiedenen Versionen angeboten. Für die vor-liegende Beschreibung wurde das einfache Fischer-Technik Interface verwendet. Das CVK-Fischer-Technik-Interface unterscheidet sich hiervon durch zusätzliche Leuchtdioden für die Ein- und Ausgänge.

Vergewissern Sie sich, daß der Adapter für den parallelen Anschluß des Computers vorhan-den ist und befestigen Sie den Adapter an dem freien Ende des grauen Flachbandkabels, das mit dem Fischer-Technik-Interface verbunden ist. Das Interface befindet sich in einem Kasten mit durchsichtiger Abdeckung, in dem Sie eine grüne Platine und elektronische Bauteile er-kennen können.

Stecken Sie nun den Adapter in den parallelen Anschluß Ihres Computers.

Verbinden Sie danach den Stecker des bunten Flachbandkabels mit der dafür vorgesehenen Öffnung auf der Oberseite des Interfaces. Durch eine Einkerbung wird sichergestellt, daß der Stecker nur in eine Position eingeschoben werden kann.

Stellen Sie nun die Stromversorgung für das Interface her. Auf der Oberseite des Interfaces befinden sich zwei Buchsenpaare, die jeweils mit dem Zeichen + und - versehen sind. Stecken Sie die Plusleitung des Netzgerätes in die entsprechende Öffnung des Interfaces und die Mi-nusleitung in die danebenliegende Öffnung mit der Aufschrift -. Das andere Buchsenpaar bleibt unbenutzt. Schalten Sie nun auf dem Netzteil die Spannung auf 8 Volt und verbin-den das Netzteil mit einer Steckdose. Sollten Sie versehentlich den - Anschluß des Netzteils mit der + Buchse verbunden haben, so bemerken Sie das bei dem Fischer-Technik-Interface zu-nächst nicht. Die Befehle zur Steuerung des Interfaces werden dann keine Reaktionen hervor-rufen. In diesem Fall ist die Position der beiden Stecker zu vertauschen.

Wenn Sie das Multiface benutzen:

Das Multiface wird in verschiedenen Versionen geliefert. Für die vorliegende Beschreibung wurde das Multiface 160 verwendet.

Die Verbindung des Computers mit dem Interface geschieht über das parallele Druckerkabel. Lösen Sie dazu das Druckerkabel vom Drucker und befestigen es in dem dafür vorgesehenen Anschluß des Interfaces.

Verbinden Sie danach den Stecker des bunten Flachbandkabels mit der über dem Drucke-ranschluß liegenden Öffnung des Interfaces. Achten Sie dabei darauf, daß der Stecker rechts-bündig eingesetzt wird.

Stellen Sie nun die Stromversorgung her. Verbinden Sie dazu die Plusleitung bzw. Minuslei-tung des Netzteils mit der entsprechenden Buchse des Interfaces. Stellen Sie auf dem Netzteil eine maximale Spannung ein, aber nicht mehr als 16 Volt, und verbinden Sie das Netzteil mit einer Steckdose. Nach dem Einschalten des Netzteils mit dem schwarzen Wippschalter muß die rote 'Ein'-Lampe auf der Oberseite des Interfaces aufleuchten. Ist dies nicht der Fall, so müssen Sie die Position des Plus- bzw. Minuskabels des Netzteils am Interface verändern. Laut Angaben des Herstellers kann ein Vertauschen der Polung das Netzteil nicht beschädi-gen.

Page 114: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

114 Anhang

Damit haben Sie alle Vorbereitungen getroffen, um die beschriebene Steuerung einer Druck-tastenampel zu programmieren.

Sollten Sie für weitere Anwendungen ein Potentiometer verwenden wollen, so ist zu beachten, daß für das Multiface ein zusätzliches Kabel an das Potentiometer anzulöten ist.

6.2 Bezugsquellen für Modelle und Interfaces Die folgende Auflistung soll einen Überblick über die Bezugsquellen der Interfaces und Modelle geben, die in diesem Buch beschrieben werden.

F. Dümmler Verlag Multiface Kaiserstr. 31-37 PDV-Mini-Labor 53113 Bonn

knobloch electronic Multiface Weedgasse 14a PDV-Mini-Labor 55234 Erbes-Büdesheim HIBS-Interface HIBS-Kreuzung

LASY-GmbH Lasy-Interface Benzstrasse 2 Lasy-Modelle 61381 Friedrichsdorf

Cornelsen Verlag Fischer-Technik-Interface Mecklenburgische Straße 53 Fischer-Technik-Modelle 14197 Berlin Computing Baukasten

LEGO GmbH LEGO-Interface Itzehoer Str. 31-33 LEGO-Modelle 24594 Hohenwestedt

Page 115: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Anhang 115

7 Literatur Abelson, H.: Einführung in LOGO. IWT-Verlag, 1985.

Baues, Hillebrand, Informatik erleben. Band 1. Dümmler Verlag, 1994. Hüster, Mersch:

Böcker, Fischer, Interaktives Problemlösen m. LOGO. IWT-Verlag, 1987.: Schollwöck Bd. 1: Einführung Bd. 2 : Praktische Projekte Teil 1 - Mathematik Praktische Projekte Teil 2 - Informatik Praktische Projekte Teil 3 - KI und Sprache Praktische Projekte Teil 4 - Spiele

Craemer/Löthe: Platonische Körper - Übungen zur Raumanschauung mit dem Raumigel. Didaktisches Zentrum - PH Ludwigsburg, 1990.

Grabinger, B.: LOGO-Prozeduren zur Analysis. SIL - Speyer, 1988.

Grabinger, B.: Arbeitsbuch LOGO. Dümmler-Verlag, 3.Auflage, 1994.

Haubensak, E.: Messen, Steuern, Regeln mit LOGO. Dümmler-Verlag, 1989.

Hoppe, H.U.: LOGO im Mathematikunterricht. IWT-Verlag, 1984.

Hoppe/Löthe: Problemlösen und Programmieren mit LOGO. Teubner Verlag, 1984.

Löthe/Wolpert: Informatische Grundprobleme - Einführung mit Funktionen. Didaktisches Zentrum - PH Ludwigsburg, 1989.

Otte, Gerhard WIN-LOGO Handbuch. Dümmler Verlag, 1994.

Otte, Gerhard Handbuch LOGO für den PC. Dümmler Verlag, 1996.

Papert, S.: Kinder, Computer und Neues Lernen. Birkhäuser Verlag, 1985.

Pyttlik, N.: Programmieren mit LOGO. HIBS, Reihe Materialien zum Pilot-projekt, 1989.

Schauer, H.: LOGO jenseits der Turtle. Springer Verlag, 1988.

Schuppar, B: LOGO Programmierkurs. Vieweg-Verlag, 1985.

Senftleben, D.: Programmieren mit LOGO. Vogel-Verlag, 1986.

Stowasser, R.J.K.: Materialien zum computerorientierten Mathematikunterricht mit LOGO. TU-Berlin. Fachbereich Mathematik, 1989.

Strick, H.K.: Strukturierte Programmierung in LOGO. Schroedel-Verlag, 1987.

Teiwes, E.: LOGO im Unterricht. Schroedel Verlag, 1986.

Watt, D.: LOGO - Computersprache für Eltern und Kinder. Te-Wi-Verlag, 1984.

Weber, M.: Prozeßdatenverarbeitung unter LOGO für den PC. Dümmler-Verlag, 1994.

Page 116: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

116 Anhang

Weber, M.: Prozeßdatenverarbeitung unter WIN-LOGO. Dümmler-Verlag, 1995.

Page 117: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

Anhang 117

Stichwortverzeichnis

A

Ableitungsbegriff 89 Ampel 94

Nachtbetrieb 103 verkehrsabhängig 102

Anführungsstriche 18

B

Baumstrukturen 73 Befehl

abarbeiten 21 neuer 20

Berechnung bei der Rückkehr 45

C

Computergedichte 53

D

Differenzierbarkeit 91 Drucke 16 Druckezeile 15

E

Eigenschaftslisten 81 Eingaben 23 Eliza 53 Expertensystem 73

F

Fehler 10 Fraktale 72 Funktion 19

abarbeiten 20 logische 61 rekursiv 42

Fußgängerampel 95

G

Gebläse 98 Gleichung

lösen 59 Gleichungssystem 62 Grafikseite 9

Breite 15 Höhe 14 Verzerrung einstellen 15

Grammatik 54

I

Igel 9 Integral 91 Interface

Bezugsquellen 113

K

Klammern runde 18

Koordinaten absolute 34

Kreis 32 Kreiszahl π 86 Kreuzung 101 Künstliche Intelligenz 59

L

Lernseite 21 Liste 17; 46

Element an einer Stelle 48 Listen 73

verarbeiten 48

M

Mathematik 85 Messen, Steuern, Regeln 94

O

Obersumme 91

P

Parameter 23 PDV-Mini-Labor 99 Präfix 20 Programm

mit Eingabe 23 schreiben 21 Teilaufgaben 28

Programme speichern und laden 22

Programmieren 21 Prozedur 19 Pythagoras

Baum des 69 Satz 88

Q

Quadratwurzel 20

R

Randsprung 15 Rechenausdrücke 16 Rechenoperationen 16 Regelungsaufgabe 98 Rekursion 35

abarbeiten 36 mehrfache 64 nichtgrafisch 38

Roboter 106 Teach-In 108

Rückgabe mit 19 ohne 19

Page 118: mit LOGO für den PC und WIN-LOGO · LOGO ist die ideale Einstiegssprache, denn die Igelgrafik legt es na- he, daß der Lernende eine Vorstellung von der Funktionsweise des Computers

118 Anhang

S

Schachtelmodell 25; 47 Selbstähnlichkeit 69 Sonnennachführung 104 Strukturiertes Programmieren

28

T

Text darstellen 15

Texte

verarbeiten 46 Textseite 15 Treiber

Steuerung von Modellen 95

Turtle 10

V

Variable global 38 lokal 25; 39

Variablen 23

Vergleichsoperationen 60

W

Wahrheitswerte 59 Wiederholung 23 Wörter

verarbeiten 46

Z

Zahlbereiche 16