Beispiel zur Sichtbarkeit von Variablen
Aufgabe A81 (Wieder der Pythagoras)
Aufgabe A82 - Volumen des Kreiszylinders
Aufgabe A83 - Färben mit Funktionen
Aufgabe A84 - Färben mit Funktionen (2)
Aufgabe A85 - Folge den Buchstaben
Werden Programme größer oder müssen Teile eines Programms immer wieder bzw. von mehreren anderen Programmteilen benutzt werden, ist es sinnvoll, diese Teile in eigene Funktionen auszulagern. Im Gegensatz zur Mathematik, wo Funktionen meist mit Formeln gleichgesetzt werden, sind in Programmiersprachen Funktionen beliebige Teilprogramme bzw. Unterprogramme.
Funktionen werden mit dem Schlüsselwort function
oder kurz fun
eingeleitet.
function sageHallo(zu) { return "Hallo " + zu + "!"; } var s1 = sageHallo("Merle"); print(s1); print(sageHallo("Puschel")); var h = "Spot"; print(sageHallo(h));
Hallo Merle! Hallo Puschel! Hallo Spot!
Das Schlüsselwort function
leitet die Deklaration der Funktion ein. Danach folgt stets der Name der Funktion, hier sageHallo
.
In runden Klammern werden die Parameter der Funktion angegeben, hier: zu
. Die Parameter sind die Namen der Werte, die der Funktion übergeben werden. Gibt es mehrere Parameter, werden diese durch Komma getrennt. Hat die Funktion keine Parameter, müssen die Klammern als ()
dennoch angegeben werden.
Sowohl für den Funktionsnamen als auch für die Namen der Parameter gelten die gleichen Regeln wie für die Namen von Variablen.
Der sogenannte Körper der Funktion (engl. body) wird innerhalb von geschweiften Klammern angegeben. Hier können andere Anweisungen verwendet werden (z.B. Ausdrücke, if
und repeat
-Anweisungen).
Das Schlüsselwort return
dient dazu, Werte als Ergebnis der Funktion, den sogenannten Rückgabewert, zurückzugeben. Im obigen Beispiel ist dies die Verknüpfung von Strings.
Eine Funktion wird aufgerufen, indem man ihren Namen angibt und in runden Klammern die Werte, die der Funktion zur Abarbeitung übergeben werden, hier z.B. die Zeichenkette "Puschel"
. Die Funktion wird also durch sageHallo("Puschel")
aufgerufen. Besitzt die Funktion keine Parameter, sind die Klammern trotzdem zu schreiben.
Im Beispielcode verknüpft die Funktion sageHallo
die im Parameter zu
übergebene Zeichenkette mit der Zeichenkette "Hallo"
und einem Ausrufungszeichen zu einem Gruß.
Dann wird die Funktion mit den konkreten Werten "Merle"
, "Puschel"
und "Sppt"
aufgerufen und gibt die entsprechenden Grüße aus.
Das Beispiel demonstriert außerdem, dass Funktionen nicht auf das Arbeiten mit Zahlen beschränkt sind, sondern alle Datentypen als Parameter und Rückgabewerte auftreten können.
var x=5; fun f() { x=7; // Sichtbarkeit ändert sich mit var print ("in f: "+x); } f(); print ("draußen f: "+x);
Gegeben ist folgendes Puzzle:
>:)H4sIAAAAAAAACpWPy2rDQAxF9wL9g34gxmP3EQJaJ IEsS1bZy2PZHlrLMB7H5O8zpqV0252Qrg7nIhxa7RA8n yV9IAjXCA2/IDgWhIobhJo9wqGPoUUoXJUDJE2R5209a sq5NRgx3eSLanL0WpQlgsmofNw72tH1kQbppygzXRb7T GEyhG4xP+evcborRZWW1hiSZmawbkI4aVQ/2GI9mfjhL 2QM6RekllW+Swi/b/L7/9m6snjLqZ/bE0YeJTARAQAA
function quadrat(a) { return a * a; } function pythag(a, b) { // hier deinen Code ergänzen } var a = readNumber(); move("E"); var b = readNumber(); move("E"); var c = pythag(a, b); write(toFixed(c, 2));
Das Programm soll nach dem Satz des Pythagoras die Länge der Hypotenuse berechnen.
Ergänze die Funktion pythag
im Programm so, dass das Puzzle gelöst wird.
Warum wird der Inhalt von Variable x
quadriert, obwohl innerhalb der Funktion die Variable a
heißt?
Das Volumen eines Kreiszylinders wird mit der Formel berechnet.
Gegeben ist ein Puzzle und ein Programmfragment. Ergänze das Programm um die Funktion zylVolumen(r,h)
, die das Volumen berechnet und dessen Wert zurück gibt. Benutze wieder die Funktion quadrat
aus Aufgabe A81.
>:)H4sIAAAAAAAACpWPvWoDMQzHd4HeQS+QgH2BhoCGt tCl0PF256xLTO9kkO0c7dPXaUv3buL/hX4IpygzwsTPo b4hBB4QznxAcGwInq8IA48Ip4uliLB3vgconPf9nrq8S g0IW1JiGsNCAzlyrmc0rMKPR087GvPSVlGKUujVJJXPj yVpFCsIc9Op9O6ab0ImIdJmqUpfTjpnhCcxma7a9PJd/ 50q1LSK0Si2ica7e8tKL03fa8oq2t/7AQv8cAc6/pPAD /7P+gK4XmIiJAEAAA==
var r = readNumber(); move("E"); var h = readNumber(); move("E"); var c = zylVolumen(r, h); write(toFixed(c,0));
Verwende für die Aufgaben A83 und A84 Funktionen zum Zeichnen der Teilmuster.
>:)H4sIAAAAAAAACk2OUWrDMAyG3w2+gw7QBcY22Ap5a FPyMvbSG6ix3JjG8lDsDXKe3WQXm+KwMfiRQPr/T7Jm7 8hbM7QdZmukPZODU8CY2Fmzv0rQ1qgaEVUtqzTRiA630 kg17SNltOYzcNulKUmXCmc4ToV+kXD/tIN/O05MW3l8s YYxUnt4foA76L+/5EIMMWToC99yUBNb4wsPcxvTB0Euw vCOQTHDStT7gX2yZsuCCwRnLFkplwkLUGD98Uhc8qJbX OqI/vC7mnA4w1uZMwksFIaRKUPRx6X4ipwJIo3icRgBi 1eiNSfNveJK1dyYASMc2CNfV0c9EmEiEv2kp8lp5gddn wHNdwEAAA==
>:)H4sIAAAAAAAACm1OQWoDMQy8G/wHHVtI9xBSaAN7S DbspfSSHyhrOWuylovXbmHf05/0Y5UdWgopyJIZzYxGq 60hq9XQdpi0iu2RDBwc+sBGq+05OhmNVBOb6ystVqB8K hpL3XD+RYZbjpzxlFCrD8dtF6YQu5A5wX7K9BMF1psV/ NlxYLq250etGD21u6cNPED/9RlPxOBdgj7zJTkhMdyt7 7WymYe59eGdIOXI8IZOrIbiKhkc26DVVQ/GERwxJ5GeJ sxAjiXnnjinRba4VIh+T6yqwuAMr3lOFGEhN4xMCbKEj 9lWy5nA0xgtDiNgtuKo1UF0L1hcRTcmQA87tsjnwqhHP ExEUZL0NBnRfANaFzdEswEAAA==
Achtung: Die Katze kann nur die Werte von Felder vor ihr einlesen! Man muss sie also geschickt manövrieren.
>:)H4sIAAAAAAAACk2PT0vEMBTE7w/yHeYDrMIiihRyW P+sB8GDexC8ZdtpGmhSbBIrfnpfXYW9JI+8mcn8jDQde yOtvXfFiLdPM5lw+KhuJt4DRyPJvhihfTSS7cHIYt+Mf NnTrvFz6IwYAeAvNUfd+hpZnCpDWmN3BVfYao6LtLvba 1xgP42e6PSnu9oOubjjautrarON0ycx02lsE1I/GXkIP NPBcz1d2iAkLBzbgXgN7VBq8sg6oFPDsyvfxJELvapjz XmjjZiSSghX+1WVGbHn2CEXDkX7//EoDZl/76QBJ7CsF dfFP6DO54w32OIH9zUROk8BAAA=
Nutze Funktionen, um den Weg effektiv zu beschreiben!
>:)H4sIAAAAAAAACnWUzW6DMAzH75HyDn6ADYnusBUph 7XSdthtPVTaLQXzIdFUS2FIfZ49xm59sYUQiANtDpDYP 9v/OATOkgxzzjqxl3XNWSq2suGsEO8aUcHuu5UaOdPiE zPODmJTt2aZFLoyS84Aun7AvWG9BrPvu5zzeu4mOfmms rfIboGNxhlE1PUz7yGUN1pq8NpgO0ntymULIbCxgxOow UEuVaDYzKMl46JHZBA1Z2yqkXGyPeN1jyOaaQ5VmGfhL BFBSOfGslMDwy2FqnyJwUDj7WrsMwUd6bc0CAtyue5M5 3EHgQXiS/la4VGR7yDcHzneKfks2fwTClro2k4bSkVPO w5bPgeIe3EMQXpi6+9rcsRGmtteqf6evzawiiF+4kzJI 4qvlxgeYZeWBmpQ15UqOMtblZ7F8fSD0LRacVbKcynit Vzh+jlemV9HUqn8xNkGOywQsgrhQzYXBNnmkMkzFPr6p xDesM4e4FSaac/sr78qQ7i0cEADlBpV1Cv8BwEqVw+RB AAA
>:)H4sIAAAAAAAACm1RS07DMBDdjzR3mAuAYjtJq0pe8 BEsWLLrzk0niUXigu1QifP0DFygF2NchJAQs/Jo3nvz/ AZhs+ceobN3LiMM9jEyB3p+W1xkWiFUtkJQViFoqxGMN Qi1rREa2yC0tkVYWcGt7RphM0S/RyAyWoak6qZtBEDK6 HYQjlJaGZlUneiRCG9mzg7h6EPZf5OpIVkS3Mx2u9Z0R dtlpkf/2vOE0C+hS3Y+vDPlJQaK7PZ0jD6zCPnQHxDuP dOTyx9M85ISJd+N5OeZI7mlJ/aBaTx/jhw50QNP4jXwT v57Ae74yIM0O1+YTHuXCrobU+YLmjhGFmS+RrhlT8NUO hoPY2FxcN24czFLU9AsFl9cKOJMH0t/Pk2TH4qJJG7S8 XwaJw4i9X2BP9H/plmV0lpL8JKb0qauS5RVpXSttTyNM bVupOQol7qE/v1cDXKb9qf+CXxFQvsCndRNygYCAAA=
>:)H4sIAAAAAAAACoVRy2rDQAy8C/QP+oC2+G03sIe00 N4KTW65ubbsLMRrKq9ryLf11h+rbOcQSiGY9Wh3RxrtC GFTc4NQmefS7xFa8yrMjvafYylMKYKYHdeXPUJgAoTQh AiRiRBiEyMkJkFIjXIzkyHkJkcoTIGwacXWWlvLhnEWJ YKghx37EmGyzryN3UDh8lGkv4goVoiJEoWEKFXQiq7s2 ByKmO5p34u3LOwQmtFVg+n6LyY/iiPhsqZJrNc2N9Y1P cKTWNcy1ZbpUB5P+q7zZIfqqEGt64PtDO9jWUvpNbJu4 Yqtjt5q4o6tcpv+1PIDwnZsNK2jVn6+nbJf+FTT4Pnol 6ytO6uGMuQidrccD2vHniaWWW3oT3qn5Vbj/xiur71yr cizNAlv2aZGzbalq23ZaltOGoU0T+E/nVDHeCWU51Ecp Xka3xS7zEhhFtNRzWIKs5h2kK9QrB08rhAGMyIMVS9so iBQ8V8aSLbeeQIAAA==
Der Median kann auf folgende Weise bestimmt werden:
Nutze deinen Algorithmus aus Z83
>:)H4sIAAAAAAAACm2RzU7DMAyA75b8Dn4Bpv63muTDQ IITSDCJw26hcddIayrSlEl7Nm68GN7GYQxOcWL7i/UZY WmlQ2j5zsQ1wpYfgoin9ftsglCJEPhF7M8dIeEEIeUUI eMMIeccoeACoWStrbhCqLlGaLhBWG6Ds8pWbJpXWREQ9 HGQaBD2zvPTPExUUUoK8WYQ3jQF3dCjWGc8Qjf7duJh/ BCKc/AUxFjaBxd1jqXz3YhwK0Ha3gtZnfncp2Ggjel3+ nLYu6ntNTim38Qdj+fZ2GCi+AXCau40NdA2fH16zd3Lz tIUpY9kndDKH5RzAdQWhHXbB3Fvv/50+oWZKIxRThAtP Hu98ql6LqQ0dVUW6bWVV7OjWqWUCzX6LyXVHVxg6jrLs 7Iu8z+ok+A0VZhuaGrHIJwliXZ/A005wuj3AQAA
Schwerste Aufgabe im Kurs!
>:)H4sIAAAAAAAACnWSwW7bMAyG7wT4DjzL9RDbcRoE4 KEbth1XNMUOvSk24whNmI2W2z7cbnuxMi2w9LBAB4HCx 1+/fgph1csWoeMvMa8RBv5uIkrr31M0QTC+k/5fNeMZQ sUVQs01QsMNwpznCC23CAteIFzzNcKSlwgvzAgFFwgll wiBA8JqsNT7bY4UTbl4GRD88CA5Ijwn5Z9xTwuqyNU0H oQfli2VdB/Hbidq0u1UDGE7aTfy4fgklCdTMok9PVvKb nGVdHtEWHc7k7QRSkp9HGmwv39U6Jvs+7f6qw2y0TRSL 0Z3Liwap+0QN/IJ4bPEbpeFbid9zPR0NFpnSydFNzDp4 MjNfqQfv8RiTkf1vLJJ9k0no+LKLU/aUyCXdPY94Q9PL+ vQXHy653pGHSyqi6gnfUab4Kuch/+HWs2c92md+Sq4eJ iH9lJHfbqh9oGfe9qyLpui9tG1YXbBWHVy5h/hFRs97o laAgAA