MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: for-Schleifen in MuPAD

Kategorie.: Handwerkskasten

Mathematik: Programmierung

MuPAD.....: 3.0.0

Datum.....: 2002-08-14

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: for, from, to, downto, in, random

________________________________________________________________________________

 

Elementare MuPAD-Funktionen:

for-Schleifen in MuPAD

 

Zu den elementarsten Konzepten der imperativen Programmierung gehören die for-Schleifen. Der

Umgang mit for-Schleifen in MuPAD soll im folgenden beschrieben werden.

 

Die Syntax von for-Schleifen und ihre Verwendung in MuPAD wollen wir nicht

allgemein auf technische Weise beschreiben (eine solche Beschreibung findet

sich in dem offiziellen MuPAD Tutorium, welches durch einen Maus-Klick auf

das Buchsymbol in der obigen Befehlsleiste einsehbar ist), sondern an Beispielen

kennenlernen.

 

Als erstes wollen wir die Summe der Zahlen von 1 bis 1000 berechnen. Diese

Aufgabe könnten wir natürlich mit Hilfe der Funktion sum sehr leicht lösen. Hier

versuchen wir die Summe jedoch mit Hilfe einer for-Schleife zu berechnen.

 

Zunächst benötigen wir eine Variable, nennen wir sie Summe, in der wir die

jeweiligen Teilsummen von 1 bis j für 1 <= j <= n zwischenspeichern. Sie sollte

am Anfang den Wert 0 haben (wir haben ja zu Beginn noch keine Zahlen addiert).

 

Summe:= 0:

 

Jetzt schreiben wir die for-Schleife, mit deren Hilfe wir die ersten 1000 Zahlen

aufsummieren.

 

for i from 1 to 1000 do

  Summe:= Summe + i:

end_for:

 

Schauen wir uns den Wert der Variablen Summe an:

 

Summe

math

 

Das Ergebnis ist korrekt (wie man mit Hilfe der Funktion sum leicht überprüfen

kann).

 

Bei der Programmierung von for-Schleifen ist zu beachten, dass wir stets

eine Laufvariable, in unserem Beispiel oben ist das die Variable i, verwenden,

die nach und nach jeden Wert eines festen Bereichs, in unserem Beispiel

die Zahlen von 1 bis 1000, annimmt. Dabei ist es möglich, den Bereich, den

die Variable i durchlaufen soll, mit Hilfe des "from Anfangswert to Endwert"

Konstruktes anzugeben. In unserem Fall ist der Anfangswert die Zahl 1, der

Endwert die Zahl 1000. Nachdem wir diese Formalität erledigt haben, können

wir im Schleifenkörper (der Bereich zwischen der Zeile "for i from 1 to 1000 do"

und der Zeile "end_for") beliebige Berechnungen ausführen. In unserem Fall

addieren wir in jedem Schleifendurchlauf den derzeitigen Wert von i zu dem

aktuellen Wert von Summe, d.h. Summe wird in jedem Durchlauf genau

um den Wert von i erhöht. Der Wert, der in der Variablen Summe gespeichert

ist, nachdem i alle Werte von 1 bis 1000 durchlaufen hat, ist also in der Tat

die Summe der Zahlen von 1 bis 1000. Abschließend bemerken wir noch,

dass wir eine for-Schleife immer mit Hilfe der Zeile "end_for" abschließen

müssen, um MuPAD mitzuteilen, dass die for-Schleife zuende ist.

 

Statt "end_for" können wir auch einfach "end" schreiben.

 

Nun wollen wir einige Varianten der obigen for-Schleife betrachten, die

alle auch die Summe der Zahlen von 1 bis 1000 berechnen.

 

In der ersten Variante wollen wir bei der Summation mit 1000 beginnen

und bei 1 enden, also die Summe der Zahlen von 1000 bis 1 berechnen.

 

Dazu müssen wir in der obigen for-Schleife nur die Rollen von 1 und 1000

vertauschen und to durch ein downto ("herunter bis") ersetzen - zuvor

muss natürlich der Wert von Summe wieder auf 0 gesetzt werden, denn

sonst erhalten wir kein korrektes Ergebnis:

 

Summe:= 0:

for i from 1000 downto 1 do

  Summe:= Summe + i:

end_for:

 

Wir schauen uns den Wert erneut an:

 

Summe

math

 

Dies ist der gleiche Wert, den wir schon oben berechnet haben.

 

Anstatt die Laufvariable explizit von 1 bis 1000 oder von 1000 bis 1

laufen zu lassen, können wir uns auch die Zahlen von 1 bis 1000

zuvor in eine Menge schreiben und die Laufvariable i dann alle

Werte der Menge durchlaufen lassen.

 

Die Menge aller Zahlen von 1 bis 1000 erzeugen wir mit Hilfe des

Sequenzoperators $:

 

ZahlenMenge:= {i $ i = 1..1000}:

 

Hier ist der Doppelpunkt als Abschluß der Eingabezeile wichtig, denn

wir sind natürlich nicht daran interessiert, dass uns MuPAD diese

Menge tatsächlich ausgibt.

 

Die for-Schleife zur Berechnung der Summe der Zahlen von 1 bis

1000 können wir jetzt auch wie folgt schreiben:

 

Summe:= 0:

for i in ZahlenMenge do

  Summe:= Summe + i:

end_for:

Summe

math

 

Im Unterschied zu den ersten beiden for-Schleifen haben wir hier den

MuPAD Befehl in verwendet: "Für alle Zahlen in Zahlenmenge . . ."

 

Anstatt alle Zahlen in einer Menge zu speichern und diese von der

Laufvariable durchlaufen zu lassen, können wir die Zahlen auch in

eine Liste schreiben. Die for-Schleife können wir für diese Situation

unverändert übernehmen:

 

ZahlenListe:= [i $ i = 1..1000]:

Summe:= 0:

for i in ZahlenMenge do

  Summe:= Summe + i:

end_for:

Summe

math

 

Im Kontext unserer mehr oder weniger trivialen Summation scheint es

natürlich wenig Sinn zu machen, die Zahlen von 1 bis 1000 zuvor in

einer Menge oder in einer Liste zu speichern.

 

Diese Möglichkeit wird aber umso nützlicher, wenn wir z.B. 1000

Zufallszahlen aus dem Bereich von 1 bis 1000 aufaddieren möchten.

Die Zufallszahlen können wir uns dann zuvor bequem erzeugen und

in eine Liste schreiben und anschließend alle Elemente der Liste

aufaddieren.

 

Zufall:= random(1..1000):

ZufallsListe:= [Zufall() $ i = 1..1000]:

Summe:= 0:

for i in ZufallsListe do

  Summe:= Summe + i:

end_for:

Summe

math

 

Das Mengenkonstrukt bietet sich dann an, wenn wir doppelt auftauchende

Zahlen nicht mehrmals aufaddieren wollen. In einer Menge sind alle

Elemente verschieden und werden Elemente mehrfach in eine Menge

geschrieben, so werden mehrfache Vorkommen ignoriert und zu einem

einzelnen Vorkommen der Zahl zusammengestrichen.

 

ZufallsMenge:= {Zufall() $ i = 1..1000}:

Summe:= 0:

for i in ZufallsMenge do

  Summe:= Summe + i:

end_for:

Summe

math

 

_______________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe

     wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die

     Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden. 

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.