Loading...
 

Verzweigungen


Unter Verzweigungen verstehen wir die Möglichkeit, Einfluß in den Ablauf einer Programmstruktur zu nehmen.

if

Eine der einfachsten Anweisungen ist 'if'

anzahl = 3

if anzahl == 3		# wenn die Variable anzahl den Wert 3 hat
  p "anzahl ist 3"	# mach das, was eingerückt ist (Einrückung mind. 2 Leerzeichen)
end					# abschließendes 'end'

#Ausgabe:
"anzahl ist 3"


if Kurzform

Für einfache Anweisungen kann man die "if"-Syntax auch abkürzen.

anzahl = 9
ergebnis = anzahl < 10 ? "kleiner 10" : "größer 10"
p! ergebnis

#Ausgabe:
ergebnis # => "kleiner 10"


Sowas geht auch:

anzahl = 9
ergebnis = 100
anzahl < 10 ? (ergebnis += 10) : (ergebnis -= 10)
p! ergebnis

# Ausgabe:
ergebnis # => 110


if ... else

Erweitern wir das Programm ein wenig:

anzahl = 22258

if anzahl == 3
  p "anzahl ist 3"
else						# wenn die Bedingung von if nicht erfüllt ist, dann mach das folgende
  p "anzahl ist nicht 3"
end

# Ausgabe:
"anzahl ist nicht 3"


if ... elsif ... else

Erweiterte Bedingung

anzahl = 555

if anzahl == 3
  p "anzahl ist 3"
elsif anzahl == 22258			# wenn nicht 3, dann vielleicht 22258?
  p "anzahl ist 22258"
else							# keine der Bedingungen wurden erfüllt
  p "anzahl ist nicht 3 und auch nicht 22258"
end

# Ausgabe
"anzahl ist nicht 3 und auch nicht 22258"


unless

Fast das gleich wie 'if' ist 'unless', nur, dass es andersrum auswertet:

anzahl = 555
 
unless anzahl == 3			# wenn Bedingung nicht erfüllt ist
  p "anzahl ist nicht 3"
end

# Ausgabe:
"anzahl ist nicht 3"


case when

Eine sehr interessante Version stellt auch 'case' mit 'when' dar.

ist = 8

case ist
  when 7
    puts "ist = 7"
  when 8
    puts "ist = 8"
  else
	puts "nix 7, 8"
end

# Ausgabe:
ist = 8


'case' kombiniert mit .even? und .odd?

zahl = 8
 
case zahl
  when .even?
    puts "gerade"
  when .odd?
    puts "ungerade"
end

# Ausgabe:
gerade