4. Arbeit mit Variablen

Inhalt

4.1 Definition und Wertezuweisung

4.2 Erlaubte Variablennamen

4.3 Zuweisungsänderungen

4.4 Sichtbarkeit

Aufgaben

  Aufgabe A41 - Einfache Differenz

  Aufgabe A42 - Struktogramm mit Variablen

  Aufgabe A43 - Gültige Variablennamen erkennen

  Aufgabe A44 - Summe berechnen

  Aufgabe A45 - Puschel ist 1 Kater

  Aufgabe A46 - Summe berechnen (Variable Länge)

  Aufgabe A47 - Plätze tauschen

  Aufgabe A48 - Vertauschen von Variablen

  Aufgabe A49 - Spirale

Zusatzaufgaben

  Aufgabe Z41 - Färben auf Abstand

  Aufgabe Z42 - Rechteck färben

  Aufgabe Z43 - Dreieck färben

  Aufgabe Z44 - Zahlenquadrat addieren

4.1 Definition und Wertezuweisung

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

4.2 Erlaubte Variablennamen

Nicht jeder beliebige Bezeichner ist ein gültiger Variablenname. Es gelten u.a. die folgenden Regeln:

4.3 Zuweisungsänderungen

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);

4.4 Sichtbarkeit

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);

Aufgaben

Aufgabe A41 - Einfache Differenz

>:)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

Aufgabe A42 - Struktogramm mit Variablen

Setze das angegebene Struktogramm 1:1 in ein Programm um und ergänze Kommentare.

Aufgabe A43 - Gültige Variablennamen erkennen

Überprüfe, welche der folgenden Bezeichner gültige Variablennamen sind.

  1. "Puschel"
  2. Puschel
  3. 3v
  4. v3
  5. vari
  6. for
  7. a b
  8. _v_
  9. ungültig

Aufgabe A44 - Summe berechnen

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 Funktion readNumber 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=

Aufgabe A45 - Puschel ist 1 Kater

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.

Aufgabe A46 - Summe berechnen (Variable Länge)

>:)H4sIAAAAAAAACoVQwUoDMRC9B/IPc9SDYq1VupBDF
RSht4IHb9nN22wgm+JsYsHv8TO89cec7pYiejBkIDPz3
pvJ06pyaLVqzIPNWnnzxECizVuxDK1qcx8LjinNtRoAZ
661YsPJ0YxmUqs8B6fVpajUxMzk5Sm36pGtVruQyNCm9
DQXwkLiTmI6WiXbQ9qrm1u6OIAkq8FouiRrnL1YDraOo
PX+M3mca9WW1AxC6LfvIIZ1tOOQQblwkpEhtVut1gEDu
QB6tV0UHcgKRfYdmo4RapDkzg7kef+VQI+IboRP8x34S
JRPPPdUR1tEZEQNGV0esav0IZgf4LHabqMfeZOtJ5uuf
nu5+OvbP84dXFtKnNrfWEZkmbwBAAA=

Hilfestellung zu A46

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); 

Aufgabe A47 - Plätze tauschen

>:)H4sIAAAAAAAACpWPwUoDQQyG74G8Qx7ACmJBWNiDC
koPhYLQe3Ynux06m2J2xoLP42N464uZrluE3mQCE/78+
cmHUAXpENr6mTNCX7+aiNLbe2ET2pSx3UlCaOqnVOQir
8WSIFS9xYBwi0BN2/vnVQ2SGeEYlWracqI7f3PMzSTcu
zAHKA/itsflAy1ok05f+VMo8+RWhK5oO/p8OHwImXCgo
8XsjmI+raJ2B4St2LxBwQ9f6Y5T9nakJnFxpWig3k7f6
v2LpDCer5yYr2BXnmeLa9aBc9z/g/U35Q/1sn/2EiH8A
HhqojBxAQAA

Aufgabe A48 - Vertauschen von Variablen

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);

Aufgabe A49 - Spirale

Maximal zwei repeat-Anweisungen erlaubt!

>:)H4sIAAAAAAAAClWQwUrEMBCG74G8w7yAAaUqW8ihK
+hBPO3B89hMs8EmXdPEiM/mzRdzUrFbf8gMf76fYRIpW
kODFL2+wyTFq36a8kxSHPV+KqMURT/jyN3qh0gU4PCWM
TJvbXSG8VZse1hV7VnV8p1SCvgUVW1tVWqlhWmtf1QV+
48u4TNdRq30VwuFsl2Dy3bJ1lNCXs6F+uYuwS3cSBHQk
+6aHVzA4eQijvUTcD7ql2Zn8LIx170UQw79rP30TpByD
DzLhWGSYk+FLIFxBI+YPgkwD2BwBhu/vwLBPY1G1VjIl
Xr8cB5HuIJIJ8IEXSjk5hwsBY79AMZ6CqKUAQAA

Zusatzaufgaben

Verwendet stets eine repeat-Anweisung, wenn ihr eine Anweisungsfolge mehr als zweimal wiederholt!

Aufgabe Z41 - Färben auf Abstand

>:)H4sIAAAAAAAACp1RzUoDMRC+B/IO8wA1WF0sFnrQF
s9SPPU228xug5uJ5KeFPo+P4c0Xc8JaLeJBDCGTTL7vm
8wXreaWOq22iyVmreJiTRZWDn1gq9W8j06CkfvrxhgTZ
chB5txTRq0OjmEByyXcD4VOPGgmNcWBaVyubrVi9CTQT
TOFC3h4f40tMWDp4K5NGWuxrvA2CcSHPcELOs4QCS3kE
lkKOu6CViMTrCNYY8mi0Q5YgBwb0GolaYopE2xwN0Dv2
gzIEzhI/kAun/P2gcFKrEgJxLmjKDWTY2tGqWPl/Ka1d
zR8CR0LdJ/9nLjyHHiMoY/oPfiSkiDeIuAgrCdKWfB1K
x0/ZxfYUSSupn7bPW1Gs80/7T6TupxVpb/93Oyn1I1WH
y0LGVwjAgAA

Aufgabe Z42 - Rechteck färben

>:)H4sIAAAAAAAACo2QzUoDMRDH74F5hzkqqND9KFjIx
e3Rg1RB8JbdnV1DNxNJsvpCfQxvfTEnWqmIiiGEfzJf/
/xArXoaQHW6MQlUqzfU49oa57kHVeoSVKUrULWuQS31E
tRqDFZCF1JTyhtim5dcf1KyV46SAfViGTU2fvKh8TMnv
Jpm+pyEi/oMmwbZM30cpQxm40hqHqoCz3FD3WOibovDf
hdaYjy5o5hwcQpqmLmLkuj8M+GTsdI8kOkxzYFlvuXBg
7qmSNhbwnsKiZDETm/isa2zKYejdL4lm4in/Y5HYvnBO
iffBD8G4xy6OUYx8RrQTBNhdiGWshQf22Q9WwrvdQdSm
FFVQu6A5Quh3+UR3H8oFELhb8BF9R3wJag3FiMZWf0BA
AA=

Aufgabe Z43 - Dreieck färben

>:)H4sIAAAAAAAACo1RwUrDQBC9D8w/zFFBS5KmrRb2Y
qonD6KC4G2bTMpiMiubjf5QP8Nbf8xJta16kMIy89jZe
e/xFmFecY1QmsJGhKW554oWzrZeKoTUpAhjM0bITY4wM
ROEqZkizMwMYb4KTh+NdFvviZaKtO7avh/AgPTMW44W4
d0JGSp840Phe4l01fS8E6d0ckZFQeKFv0p+iSC2Zd15z
sd0TovAjssXqjfrsGShk0fuIqWnCF3pA5ssSRKEupey0
53WvzG9Wqc6gW1FsQ+iVpzUHuGWO6ZKOZ44RGInI7oO5
JSuckwP7CJLs1nLiochdzvtbkQ3W3WqrIiW/WRLgrDQR
nfBr4JtW+p800RWwx+BbNMwDY7V/gCtsgwyQz6HYDXmY
4P9Rj/h77yPCC/T8P7/luziz7fMMoRPAiYB5UYCAAA=

Aufgabe Z44 - Zahlenquadrat addieren

>:)H4sIAAAAAAAACj1Ry27CMBC8W/I/zL0UKU6AgJRLU
dtL20O5cXPiJVhynNaOQerXd0MCvuysdmb2YSl2hk5SN
NVeD1K01Xsg8jj8Jh1Iirp6cYke6a4N1kixZD7yIlcZW
sbAKlcjHqEqi3U+wWKjsmKCWb5R2xEuMb365rLraNBSX
K1Hha/URZTImIwlnu5BzVk5ZeoWyu0Cn9Z/kzb7PvkBa
iWF1x2xz7Eo8IyjPjvyPLcJeoA2xlLgxaQ4Jd9EpnX9h
RDYANdgB8KQgueJrD/1UnxYimDJbINLzzf50Y55CrWNW
OOPLFeuZCOBrF+w9dwFkYXJG8TmHMjWBKMjXkNLtWcpL
ztblXyCw4PDokPqeAXtHIV7Z2aP6tpp/oc3coY1/4fIA
nW1AQAA