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.