Schleifen Hilfestellung SOLANGE

Werbung
Schleife mit SOLANGE. Hilfestellung
Aufgabe: Programmierung (LOGO)
Das Programm soll (auf dem Textbildschirm) den ggT zweier ganzer Zahlen
ermitteln. Nutze dazu die Kontrollstruktur SOLANGE.
1
114 : 21 = 5 Rest 9
2
21 : 9 =
2 Rest 3
3
9 : 3 =
3 Rest 0
4
3 ist der ggT von 114 und 21
Zur Anwendung komme das Verfahren nach Euklid, das hier am Beispiel erläutert wird. Zu
ermitteln sei z.B. der ggT von 114 und 21. Das Prinzip basiert auf einer schrittweisen
Zerlegung. Bei der Division von 114 durch 21 erhält man einen Rest: 9. War 21 zuerst
Divisor, wird 21 im zweiten Durchgang zum Dividend; der Rest der ersten Division wird
zum neuen Divisor. Dies betreibt man so lange, bis der Rest der Division gleich Null ist. Der
letzte Divisor ist der gesuchte ggT.
Erläuterungen
Zeile 1
Division der beiden Zahlen. Herausstellung des Rests.
Zeile 2
Division des Divisors aus Zeile 1 durch den Rest aus Zeile 1.
Zeile 3
Division des Divisors aus Zeile 2 durch den Rest aus Zeile 2.
Zeile 4
Der Rest ist 0. Somit ist der letzte Divisor der ggT der beiden Zahlen.
Hinweise zur Umsetzung in LOGO
Beim Programmstart ist :r (Variable für den Wert von REST) > 0 gesetzt. Mit Hilfe
von REST soll dann im Unterprogramm der tatsächliche Rest der Division der beiden
Ausgangszahlen gewonnen und :r zugewiesen werden. SOLANGE im
Hauptprogramm überprüft diesen Wert automatisch. Wenn er <>0 ist, muss eine
neue Division mit REST durchgeführt werden:
Bei der ersten Division mit REST (Zeile 1) konnte man einfach die beiden eingegebnen
Werte verwenden. Als wichtiges Ergebnis wurde der Restwert der Variablen :r
zugewiesen.
Beim zweiten Durchlauf des Divisionsvorgangs mit REST (Zeile 2) müssen wir den
alten Divisor aus Zeile 1 nun als Dividend benutzen. Dies geschieht, indem wir mit
SETZE den alten Variablenwert :w2 als :w1 setzen. Mit :r haben wir schon den neuen
Divisor. Wenn wir nun den Wert von :r als :w2 setzen, kann die gleiche Programmzeile genutzt werden, die schon zum Ergebnis von Zeile 1 führte.
Dies muss so oft wiederholt werden, bis :r den Wert 0 hat.
Herunterladen