4.1 Definition und Wertezuweisung
Aufgabe A41 - Einfache Differenz
Aufgabe A42 - Struktogramm mit Variablen
Aufgabe A43 - Gültige Variablennamen erkennen
Aufgabe A45 - Puschel ist 1 Kater
Aufgabe A46 - Summe berechnen (Variable Länge)
Aufgabe A48 - Vertauschen von Variablen
Aufgabe Z41 - Färben auf Abstand
Aufgabe Z44 - Zahlenquadrat addieren
Variablen sind Platzhalter für Werte und ohne diese undefiniert. Sie werden mit einer var
-Anweisung deklariert.
var a; // Deklarieren einer Variablen print(a); // nil bedeutet, dass die Variablen keinen Wert hat a = 2; // der Variablen einen Wert zuweisen print(a); // den Wert der Variablen ausgeben a = a + 1; // den Wert der Variablen um 1 erhöhen print(a); // Gibt jetzt 3 aus
Variablen werden mit der var
-Anweisung deklariert/ vereinbart.
Werte werden mit dem =
-Operator zugewiesen, und können sowohl Zeichenketten als auch Zahlen sein. Dabei kann der Wert gleich bei der Deklaration zugewiesen werden oder auch später.
Stolperfalle:
=
ist nicht die Gleicheheit im mathematischen Sinn
var a = 7; // Vereinbaren einer Variable a mit dem Wert 7 print(a); // Die Variable bekommt als Wert die Zeichenkette Puschel und wird ausgegben a = "Puschel"; print(a); // print(A); //erzeugt Fehler
Bei Variablennamen wird zwischen Klein- und Großschreibung unterschieden. print(A)
im obigen Beispiel erzeugt eine Fehlermeldung.
Werden Variablen verwendet, bevor sie mit var
vereinbart wurden, erzeugt dies eine Fehlermeldung:
b=8; // Fehler
Wird im gleichen Kontext eine Variable mit dem gleichen Namen deklariert, ist dies ein Fehler.
var c; print(c); // gibt nil aus var c=3; // Fehler, korrekt: c=3
Nicht jeder beliebige Bezeichner ist ein gültiger Variablenname. Es gelten u.a. die folgenden Regeln:
repeat
, var
, while
, if
, else
, true
, false
, nil
usw. können nicht als Variablennamen verwendet werden.Der Wert einer Variablen kann ebenfalls einer weiteren Variablen zugewiesen werden. Dabei ändert sich der Wert der ursprünglichen Variable nicht. Ändert man diesen bleibt aber der Wert der zweiten Variable erhalten. Es werden also stets die Werte zugewiesen, nicht eine Referenz auf die Variable.
var x = 7; var y = x; print("x = " + x + " und y = " + y); x = 3; print("x = " + x + " und y = " + y);
Geschweifte Klammern bilden einen Block.
Variablen sind nur in dem Block gültig, in dem sie deklariert wurden. Dies sind normalerweise die innersten geschweiften Klammern. Variablen, die außerhalb eines Blocks deklariert werden, heißen globale Variablen und sind überall gültig. Sie können jedoch von Variablen in Blöcken mit demselben Namen überschrieben werden.
Siehe dazu das folgende Beispiel.
var x = 1; print ("x-Wert vor dem Block : " + x); { var x = 77; //neue Variable mit dem gleichen Namen // nur gültig innerhalb der geschweiften Klammern var y = 999; print ("x-Wert im Block : " + x); print ("y-Wert im Block : " + y); } print ("x-Wert nach dem Block: " + x); // Die folgende print-Anweiung erzeugt einen Fehler, // denn y gibt es nur in der repeat-Schleife print ("x-Wert nach dem Block: " + y);
>:)H4sIAAAAAAAACiWOQWoDMQxF9wLdQRdoIVAIDMwit KGLQggUunfG366h1jSy3YGcpzfpxSKoJP7mPx5imiIS0 zI/h35iyvOrASrv1xEMTFO2EpkencgeflNFD0xbUZnlI 3zJzncv/8OkocKLw9NOHuRYNIXlE/JSUoJBb0xp6NKcq OsPZLPSIX2Yutjhlelo+e9Xb5AYmpQqb8OaZGRcoJCzr dlCrQLt7dvgco0SYXLQDaUNzVD/8g4KnNsm2AAAAA==
// Variablen x,y deklarieren x=13; y=6; // Werte zuweisen // Katze zum grünen Feld drehen. // Differenz von x und y in das Feld schreiben
Setze das angegebene Struktogramm 1:1 in ein Programm um und ergänze Kommentare.
Überprüfe, welche der folgenden Bezeichner gültige Variablennamen sind.
"Puschel"
Puschel
3v
v3
vari
for
a b
_v_
ungültig
Die folgenden Aufgaben können mehrere Tests enthalten. Stelle sicher, dass dein Programm für alle Testfälle funktioniert!
Die Funktion
read
gibt immer einen String zurück. Mit der FunktionreadNumber
kannst du direkt eine Zahl auslesen.
Andernfalls benötigst du parseNumber
um den String in eine Zahl umzuwandeln.
In allen Puzzles in denen read
erlaubt ist, ist auch readNumber
erlaubt.
>:)H4sIAAAAAAAACn1QQWrDQAy8C/QHfSDBdg0Bwx5Ko bnklltvG+/YXog3VOttPtdbP1Y57qGXVqy0iBmhGTF1A QNT7178wjS6owJJzu/FK5gyEFzDpE5TkFrqJ6Zu1BiY9 jakKqP99roZi2e6xyROzmVeudJYtpZbMCU/w+DntpXdS rLuAkU/JSSmoaQ+GzzfPiAKH+SucYEsRQ3tYhpuTKeIL CFC3vx0NaGwhcWk5X5SxAvE+uCzjPr1mSCvuIYHfdsWo D+Dq+SH8c3ZQZrqL2e/aLu6qqz8f4NvutU6rlMBAAA=
var a = "ist "; var x = 6 - 5; var y = 1; var kater = "Puschel "; //hier deine Zeile einfügen print(kater + a + x + y );
Erkläre die Ausgabe des obigen Programms. Füge an der angegebenen Stelle eine Zeile mit einer Variablenzuweisung ein, sodass Puschel ist 1 Kater ausgegeben wird.
Hinweis: Weise dazu einer Variablen einen neuen Wert zu.
>:)H4sIAAAAAAAACoVQwUoDMRC9B/IPc9SDYq1VupBDF RSht4IHb9nN22wgm+JsYsHv8TO89cec7pYiejBkIDPz3 pvJ06pyaLVqzIPNWnnzxECizVuxDK1qcx8LjinNtRoAZ 661YsPJ0YxmUqs8B6fVpajUxMzk5Sm36pGtVruQyNCm9 DQXwkLiTmI6WiXbQ9qrm1u6OIAkq8FouiRrnL1YDraOo PX+M3mca9WW1AxC6LfvIIZ1tOOQQblwkpEhtVut1gEDu QB6tV0UHcgKRfYdmo4RapDkzg7kef+VQI+IboRP8x34S JRPPPdUR1tEZEQNGV0esav0IZgf4LHabqMfeZOtJ5uuf nu5+OvbP84dXFtKnNrfWEZkmbwBAAA=
Studiere das folgende Programm, wenn du Schwierigkeiten beim Lösen von A46 hast:
// Berechnen der Summe der Zahlen von 1 bis 10 var zahl = 1; //Anfangszahl var summe = 0; //Anfangssumme repeat(10) { // Zur Summe wird die aktuelle Zahl addiert summe = summe + zahl; // Die aktuelle Zahl wird um Eins erhöht zahl = zahl + 1; print("Zahl: "+ zahl+" Summe: "+summe); } print("Die Summe der Zahlen von 1 bis 10 beträgt: " + summe);
>:)H4sIAAAAAAAACpWPwUoDQQyG74G8Qx7ACmJBWNiDC koPhYLQe3Ynux06m2J2xoLP42N464uZrluE3mQCE/78+ cmHUAXpENr6mTNCX7+aiNLbe2ET2pSx3UlCaOqnVOQir 8WSIFS9xYBwi0BN2/vnVQ2SGeEYlWracqI7f3PMzSTcu zAHKA/itsflAy1ok05f+VMo8+RWhK5oO/p8OHwImXCgo 8XsjmI+raJ2B4St2LxBwQ9f6Y5T9nakJnFxpWig3k7f6 v2LpDCer5yYr2BXnmeLa9aBc9z/g/U35Q/1sn/2EiH8A HhqojBxAQAA
Im folgenden Codestück sind den Variablen x
und y
die Zeichenketten Puschel und Merle zugewiesen. Ergänze den Code so, dass der Inhalt von x
und y
vertauscht wird.
Hinweis: Du benötigst dafür eine weitere Variable.
x = "Merle"; y = "Puschel";
ist keine Lösung!
// Vertauschen von Variablen var x = "Puschel"; var y = "Merle"; print("Vorher x = " + x + " und y = " + y); // hier Ergänzen print("Nachher x = " + x + " und y = " + y);
Maximal zwei
repeat
-Anweisungen erlaubt!
>:)H4sIAAAAAAAAClWQwUrEMBCG74G8w7yAAaUqW8ihK +hBPO3B89hMs8EmXdPEiM/mzRdzUrFbf8gMf76fYRIpW kODFL2+wyTFq36a8kxSHPV+KqMURT/jyN3qh0gU4PCWM TJvbXSG8VZse1hV7VnV8p1SCvgUVW1tVWqlhWmtf1QV+ 48u4TNdRq30VwuFsl2Dy3bJ1lNCXs6F+uYuwS3cSBHQk +6aHVzA4eQijvUTcD7ql2Zn8LIx170UQw79rP30TpByD DzLhWGSYk+FLIFxBI+YPgkwD2BwBhu/vwLBPY1G1VjIl Xr8cB5HuIJIJ8IEXSjk5hwsBY79AMZ6CqKUAQAA
Verwendet stets eine
repeat
-Anweisung, wenn ihr eine Anweisungsfolge mehr als zweimal wiederholt!
>:)H4sIAAAAAAAACp1RzUoDMRC+B/IO8wA1WF0sFnrQF s9SPPU228xug5uJ5KeFPo+P4c0Xc8JaLeJBDCGTTL7vm 8wXreaWOq22iyVmreJiTRZWDn1gq9W8j06CkfvrxhgTZ chB5txTRq0OjmEByyXcD4VOPGgmNcWBaVyubrVi9CTQT TOFC3h4f40tMWDp4K5NGWuxrvA2CcSHPcELOs4QCS3kE lkKOu6CViMTrCNYY8mi0Q5YgBwb0GolaYopE2xwN0Dv2 gzIEzhI/kAun/P2gcFKrEgJxLmjKDWTY2tGqWPl/Ka1d zR8CR0LdJ/9nLjyHHiMoY/oPfiSkiDeIuAgrCdKWfB1K x0/ZxfYUSSupn7bPW1Gs80/7T6TupxVpb/93Oyn1I1WH y0LGVwjAgAA
>:)H4sIAAAAAAAACo2QzUoDMRDH74F5hzkqqND9KFjIx e3Rg1RB8JbdnV1DNxNJsvpCfQxvfTEnWqmIiiGEfzJf/ /xArXoaQHW6MQlUqzfU49oa57kHVeoSVKUrULWuQS31E tRqDFZCF1JTyhtim5dcf1KyV46SAfViGTU2fvKh8TMnv Jpm+pyEi/oMmwbZM30cpQxm40hqHqoCz3FD3WOibovDf hdaYjy5o5hwcQpqmLmLkuj8M+GTsdI8kOkxzYFlvuXBg 7qmSNhbwnsKiZDETm/isa2zKYejdL4lm4in/Y5HYvnBO iffBD8G4xy6OUYx8RrQTBNhdiGWshQf22Q9WwrvdQdSm FFVQu6A5Quh3+UR3H8oFELhb8BF9R3wJag3FiMZWf0BA AA=
>:)H4sIAAAAAAAACo1RwUrDQBC9D8w/zFFBS5KmrRb2Y qonD6KC4G2bTMpiMiubjf5QP8Nbf8xJta16kMIy89jZe e/xFmFecY1QmsJGhKW554oWzrZeKoTUpAhjM0bITY4wM ROEqZkizMwMYb4KTh+NdFvviZaKtO7avh/AgPTMW44W4 d0JGSp840Phe4l01fS8E6d0ckZFQeKFv0p+iSC2Zd15z sd0TovAjssXqjfrsGShk0fuIqWnCF3pA5ssSRKEupey0 53WvzG9Wqc6gW1FsQ+iVpzUHuGWO6ZKOZ44RGInI7oO5 JSuckwP7CJLs1nLiochdzvtbkQ3W3WqrIiW/WRLgrDQR nfBr4JtW+p800RWwx+BbNMwDY7V/gCtsgwyQz6HYDXmY 4P9Rj/h77yPCC/T8P7/luziz7fMMoRPAiYB5UYCAAA=
>:)H4sIAAAAAAAACj1Ry27CMBC8W/I/zL0UKU6AgJRLU dtL20O5cXPiJVhynNaOQerXd0MCvuysdmb2YSl2hk5SN NVeD1K01Xsg8jj8Jh1Iirp6cYke6a4N1kixZD7yIlcZW sbAKlcjHqEqi3U+wWKjsmKCWb5R2xEuMb365rLraNBSX K1Hha/URZTImIwlnu5BzVk5ZeoWyu0Cn9Z/kzb7PvkBa iWF1x2xz7Eo8IyjPjvyPLcJeoA2xlLgxaQ4Jd9EpnX9h RDYANdgB8KQgueJrD/1UnxYimDJbINLzzf50Y55CrWNW OOPLFeuZCOBrF+w9dwFkYXJG8TmHMjWBKMjXkNLtWcpL ztblXyCw4PDokPqeAXtHIV7Z2aP6tpp/oc3coY1/4fIA nW1AQAA