<- Benutzereingaben verarbeiten
While-Schleifen ->

Konditionale

if Anweisungen erlauben es verschiedene Aktionen auszuführen, je nachdem welche Bedingung erfüllt wurde. Zum Beispiel:


if stadt == "Berlin"
   drinking_age = 18
else
   drinking_age = 21
end
                       

Das sagt aus:

  1. Wenn (if) die stadt gleich (==) "Berlin" ist, dann setze drinking_age auf 18.
  2. Andernfalls (else) setze drinking_age auf 21.

true (wahr) und false (falsch)

Ruby hat eine Notation für true und false. Dies wird am besten durch Beispiele aufgezeigt. Starten Sie irb und geben Sie das Folgende ein:

Die if Anweisung wertet aus, ob der Ausdruck (z.B. 'city == "Berlin") true (wahr) oder false (falsch) ist und handelt dementsprechend.

Warnung: Beachten Sie den Unterschied zwischen '=' und '=='.
'=' ist ein Zuweisungsoperator.
'==' ist ein Vergleichsoperator.

Häufig benutzte Konditionale

Hier eine Liste der am häufigsten verwendeten Konditionale:

== gleich
!= nicht gleich
> größer als
< weniger als
>= größer als oder gleich
<= weniger als oder gleich

Zeichenketten-Vergleiche

Wie verhalten sich diese Operatoren bei Strings? Nun, == prüft Zeichenketten auf Gleichheit und > und ähnliche werden bestimmt nach der Reihenfolge in der ASCII-Tabelle.

Die ASCII-Zeichentabelle enthält alle Zeichen der Tastatur. Die Tabelle listet die Zeichen in dieser Reihenfolge auf:

...012...789...ABC...XYZ...abc...xyz...

Starten Sie irb und geben Sie ein:

Anmerkung: Beachten Sie wie irb helfen kann, Dinge klarer zu machen. Sie sollten eine Gewohnheit drauß machen, Dinge zuerst in irb auszuprobieren. irb ist ein großartiges Werkzeug, also benutzen Sie es!

elsif

elsif erlaubt es Ihnen mehr als eine Bedingung einzufügen. Zum Beispiel:


if alter >= 60
    puts "Seniorenpreis"  
elsif alter >= 14
    puts "Erwachsenenpreis"
elsif alter > 2
    puts "Kinderpreis"
else
puts "Frei"
end
                       

Gehen wir das Beispiel durch:

  1. Wenn alter 60 ist oder mehr, geben wir Seniorenpreis zurück.
  2. Wenn das nicht wahr ist, aber alter 14 ist oder mehr, geben wir Erwachsenenpreis zurück.
  3. Wenn das wahr ist, aber alter mehr als 2 beträgt, geben wir Kinderpreis zurück.
  4. Andernfalls fahren wir umsonst.

Ruby geht diese Sequenz von Konditionalen eins nach dem anderen durch. Die erste Bedingung, die erfüllt wird, wird ausgeführt. Sie können soviele elsif's einfügen wie sie wollen.

Beispiel - preis_finder.rb

Um die Sachen besser klarzustellen, geben wir dies in ein Programm ein. Das Programm fragt nach dem Alter und gibt den entsprechenden Fahrpreis aus.

Geben Sie es ein und starten Sie es. Es sollte sich folgendermaßen verhalten:

Achtung: Seien Sie aufmerksam mit der Reihenfolge der elsif's. Nur die erste Bedingung, die wahr ist, wird ausgeführt. Dieses Beispiel demonstriert die Gefahr:


alter = 21

if alter > 5
  puts "Älter als 5"
elsif alter > 10
  puts "Älter als 10"
elsif alter > 20
  puts "Älter als 20"   
elsif alter > 30
  puts "Älter als  30"
end
                       

Dies würde ausgeben:


$ ./beispiel.rb
Älter als 5  
$
                       

In diesem Fall ist alter gleichzeitig größer als 10 und größer als 20. Nur die erste Anweisung, die wahr wird, wird ausgeführt.

Der richtige Weg, das Programm zu schreiben, wäre :


if alter > 30
   puts "&AUml;lter als 30"   
elsif alter > 20
   puts "Älter als 20"
elsif alter > 10
   puts "Älter als 10"
elsif alter > 5
   puts "Älter als 5"
end
                       

Übungen

  1. Ordnen Sie diese Zeichen nach der Ordnung in der ASCII-Zeichentabelle an:

     2, u, A, 4, w, f, R, y
    
  2. Dies ASCII-Tabelle enthält alle Zeichen der Tastatur. Benutzen Sie irb um herauszufinden, ob das Zeichen "?"

    1. vor der 0
    2. hinter der 9 aber vor A
    3. hinter Z aber vor a
    4. hinter z

    liegt.

  3. Schreiben Sie ein Programm, das ein Zeichen nimmt und Ihnen sagt, ob das Zeichen:

    1. vor der 0
    2. hinter der 9 aber vor A
    3. hinter Z aber vor a
    4. hinter z

    liegt.

    Dann versuchen Sie das Programm mit den folgenden Zeichen:

        $, +, ?, <, -, ~, :, %, ^, {, [
    

    Antworten:

<- Benutzereingaben verarbeiten
While-Schleifen ->