Prozeduren, Grundelemente der Programmierung

Prof. Dr. Dörte Haftendorn, Mathematik mit MuPAD 4.02, (ursprünglich 02 ex. in 3.11 Sept. 05) Feb.07

http://haftendorn.uni-lueneburg.de             www.mathematik-verstehen.de

####################################################################

Weiteres aus Hilfe,  Suche  mit den Stichworten

schleife,  verzweigung, prozedur

Da kann man sehen, dass das in einer beliebigen (funktionalen) Computersprache

Gelernte sofort umsetzbar ist.

f:=proc(n)

        begin n^2 end_proc:

f(5)

math

f'(n)

math

Man sieht, dass auch die üblichen Funktionen  auch

als Prozeduren geschrieben werden können.

ff:=n->n^2;

ff(5);

ff'(n);

math

math

math

Herausgreifen aus einer Liste

liste:=[]:

for i in [2,4,7] do  liste:=liste.[f(i)] end_for;

math

Für diesen Zweck geht es viel  einfacher mit dem "Folgenoperator $ "

f(i) $ i in [2,4,7];

[f(i) $ i in [2,4,7] ]

math

math

Rekursive Prozedur

g:=proc(n) begin

        if n=0 then 1

            else 2*g(n-1)

        end_if;

   end_proc:

g(n) $ n=1..10   //Erzeugung einer Liste

math

Prozedur mit einer repeat-Schleife

ida:=proc(i) begin

               repeat i:=i-1;print("Da sind noch ".i." Freunde");

               until i=0 end_repeat

             end_proc:

ida(4)

"Da sind noch 3 Freunde"

"Da sind noch 2 Freunde"

"Da sind noch 1 Freunde"

"Da sind noch 0 Freunde"

 

Prozeduren mit mehreren Parametern

potenzTafelabisb:=proc(a,b,m,n)

               local i,k;

               begin

                 print("1. bis ".n.". Potenzen modulo ".m);

                 matrix([i $ i=1..n]),

                 matrix([[k^i mod m $ k=a..b] $ i=1..n]);

               end_proc

math

potenzTafelabisb(2,9,17,8)

"1. bis 8. Potenzen modulo 17"

math

potenzTafelabisb(2,5,6,4)

"1. bis 4. Potenzen modulo 6"

math

potenzTafelListe:=proc(liste,m,n)

               local i,k;

               begin

                 print(liste, " Potenzen modulo ".m);

                 matrix([i $ i=1..n]),

                 matrix([[k^i mod m $ k in liste] $ i=1..n]);

               end_proc:

potenzTafelListe([3,7,9],10,8)

[3, 7, 9], " Potenzen modulo 10"

math

liste:=[3,7,9];

k^1 mod 10 $ k in liste

math

math

liste."das"

Error: Illegal argument [_concat]

 

#############################################

siehe auch  ggt-prg.mn, die Entwicklung einer Prozedur für Euklidischen Algorithmus.

Beispiele auch in zahltheo-prog4.mn