Lektion 4 - Von Variablen und anderen Schubladen

Erstellt von Frithjof Mon, 26 Mar 2007 20:19:00 GMT

In Lektion 3 haben wir zwei Häuser untereinander (also vertikal) in die DOS-Box gemalt. Wir möchte aber eine ganze Häuserreihe nebeneinander malen (also horizontal). Bevor wir das aber mit Ruby hinbekommen, müssen wir uns über Variablen unterhalten. Variable bedeutet zu deutsch etwa die Veränderliche. In Variablen können wir Dinge speichern und sie später so oft wir wollen wiederverwenden. Am Anfang hilft es, sich eine Variable als eine Art Schublade vorzustellen. Was macht man mit einer Schublade? Man zieht sie auf, schmeißt was rein, und knallt sie wieder zu (wenn Mama in der Nähe ist, schiebt man sie natürlich sanft zu!). Irgendwann, wenn man die Dinge in der Schublade wieder braucht, sucht man die gewünschte Schublade aus – vielleicht ist vorn ein Aufkleber drauf – zieht sie auf und holt sich was passendes raus.

So ähnlich funktionieren auch Variablen in Ruby. Variablen in Ruby haben einen Namen (der Aufkleber an der Schublade) und einen Wert (das was in der Schublade drinnen ist). Stell dir vor, wir geben einer Variablen in Ruby einfach mal den Namen schublade. Wir möchten in dieser Variablen den Wert “alte Socken” speichern (d.h. in die Schublade reinschmeißen). Dann sieht das in Ruby so aus:


  schublade = "alte Socken" 

Immer, wenn wir in einer Ruby-Variablen einen Wert ablegen wollen, steht der Name der Variablen auf der linken Seite! Das ist immer so. Zusätzlich müssen wir Ruby noch ein Zeichen mitgeben, das angibt, wie wir den Wert in die Variable ablegen möchten. Daher nennt man dieses Zeichen auch Operator (zu deutsch etwa der, der das Zeug in die Schublade schmeißt). Oben haben wir das Gleichheitszeichen = verwendet. Es bedeutet hier etwas anderes als in der Mathematik. Das Gleichheitszeichen sagt: Ruby, bitte ersetze den aktuellen Wert der Variablen schublade auf der linken Seite durch den Wert rechts von mir! Rechts von diesem Gleichheitszeichen folgt dann der eigentliche Wert, den wir in der Variablen schublade speichern wollen. Der Wert, der in die Variable rein soll, muss immer auf der rechten Seite des Operators = stehen.

Nun kannst du dir bestimmt schon denken, wie es aussieht, wenn wir den Inhalt einer Variablen wieder herauslesen möchten. Genau, der Name der Variablen muss nun nicht auf der linken, sondern auf der rechten Seite stehen. So können wir den Wert der Variablen schublade wieder ausgeben:


  require 'rubykids'

  schublade = "alte Socken" 
  schreibe schublade

Hier noch ein etwas längeres Beispiel zum Umgang mit Variablen:


  # lektion_04.rb

  require 'rubykids'

  schublade1           = "Hemden" 
  anzahl_in_schublade1 = 5

  schublade2           = "Hosen" 
  anzahl_in_schublade2 = 7

  die_kleine_schublade = "Socken" 
  anzahl_in_kleinen    = 10

  RIESEN_SCHUBLADE     = "Mein Schrank" 

  rot                  = "rot" 
  text                 = " ist voll mit " 

  # Einen Satz während der Ausgabe bilden

  schreib  RIESEN_SCHUBLADE, text
  schreib           anzahl_in_schublade1, " ", schublade1
  schreib  " und ", anzahl_in_schublade2, " ", schublade2
  schreibe " und #{anzahl_in_kleinen} ", rot, "en ", die_kleine_schublade

  # Denselben Satz zunächst in einer Variablen speichern 
  # und erst danach ausgeben, diesmal noch einen Punkt anhängen.

  satz =  "#{RIESEN_SCHUBLADE}#{text}" 
  satz << "#{anzahl_in_schublade1} #{schublade1}" 
  satz << " und #{anzahl_in_schublade2} #{schublade2}" 
  satz << " und #{anzahl_in_kleinen} #{rot}en #{die_kleine_schublade}" 
  satz << "." 

  schreibe satz

Was ist neu?

  1. Der Unterschied zwischen den Befehlen schreib und schreibe ist, dass bei schreib der Cursor in derselben Zeile stehen bleibt und dort weitergeschrieben wird, während bei schreibe am Ende immer in die nächste Zeile gesprungen wird. Probier es aus!
  2. Wir können mehrere Variablen und Zeichenketten mit einem einzigen schreib oder schreibe Befehl ausgeben, wenn wir sie durch je ein Komma voneinander trennen. Vor der ersten und nach der letzten Variablen darf natürlich kein Komma stehen. Wenn du es nicht glaubst, probier es aus! Ruby wird’s dir schon zeigen!
  3. In der letzten Zeile ist etwas ganz neues. Wir geben hier den Wert der Variablen anzahl_in_kleinen innerhalb einer Zeichenkette aus! Das geht normalerweise gar nicht. Denn würden wir einfach schreiben schreibe ” und anzahl_in_kleinen “ dannn würde der Name der Variablen ausgegeben werden und nicht ihr Inhalt. Wir müssen daher den Namen der Variablen gut verpacken und zwar in geschweifte Klammern mit einem # Zeichen davor. Dieses Zeichen kennst du schon von Kommentaren, die Ruby überlesen soll. Hier hat das Zeichen zusammen mit den geschweiften Klammern aber die andere Bedeutung: _Ruby, gib den Wert der Variablen aus, deren Name in den geschweiften Klammern steht!_
  4. Wie du siehst, können wir in einer Variablen nicht nur Zeichenketten speichern, sondern auch Zahlen. Es gibt aber noch mehr Dinge, die wir in einer Variablen speichern können. In den nächsten Lektionen werden wir dazu noch einiges lernen.
  5. Im letzten Abschnitts des Programms verwenden wir einen neuen Operator! Zuerst verwenden wir den = Operator, um in der Variablen satz ein Anfangsstück des Satzes zu speichern. Danach verwenden wir aber den << Operator um die restlichen Stücke des Satzes an die Variable satz anzuhängen. Während der = Operator also den vorherigen Wert der Variablen immer löscht, behält der << Operator den Wert bei und fügt hinten den neuen Wert an. Der Inhalt der Variablen wird also immer größer. Wenn wir wieder an die Schublade denken: der = Operator zieht sie auf wirft das was drin ist weg und legt den neuen Inhalt in der Schublade ab. Der << Operator hingegen zieht die Schublade auch auf, schmeißt aber nur noch etwas dazu, lässt also alles was schon drin war auch drinnen.

- Änderungen
20.07.2007, Codelistings
22.09.2007, Unicodeproblem mit Umlauten