Loading...
 

Scheifen


Schleifen im Programmablauf sind zum wiederholten Ausführen von Programmteilen gedacht.

times

# wiederhole 4 mal
4.times do |xi|
  p! xi
end


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3


Geht auch mit Variable

# wiederholen mit Variable
anzahl = 4

anzahl.times do |xi|
  p! xi
end


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3


while

xi = 0			# xi wird mit 0 belegt
 
while xi < 4	# solagen xi < 0, mach das was drunter eingerückt steht
  p! xi
  xi += 1		# zähle zu xi 1 dazu
end				# bis 'end' erreicht ist


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3


loop do

xi = 0
 
loop do				# wiederhole das eingerückte
  p! xi
  xi += 1
  break if xi > 3	# Wiederholschleife abbrechen und nach 'end' weitermachen
end


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3


until

xi = 0			# xi wird mit 0 belegt
 
until xi > 4	# bis xi > 4, mach das was drunter eingerückt steht
  p! xi
  xi += 1		# zähle zu xi 1 dazu
end				# bis 'end' erreicht ist


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3
xi # => 4


each do ||


Schleife mit einem Tuple.

ein_tuple = {1, 2, 5, 10}	# der Variable 'ein_tuple' werden die angegebenen Werte zugeordnet
							# so eine Zuordnung nennt man Tuple
 
ein_tuple.each do |x|		# alle Werte nacheinander in 'x' zwischenspeichern
  p! x						# der zwischengespeicherte Wert wird ausgegeben
end

# Kurzform
ein_tuple.each {|i| puts "Kurzform #{i}"}


Ausgabe:
x # => 1
x # => 2
x # => 5
x # => 10
Kurzform 1
Kurzform 2
Kurzform 5
Kurzform 10



Schleife mit einem Array

arr = [1, 3, 8, 2]

# Kurzform (Langform siehe Tuple)
arr.each { |i| puts "Element: #{i}"}


Ausgabe:
Element: 1
Element: 3
Element: 8
Element: 2


break, next

Schleife vorzeitig beenden mit break oder mit next den nächsten Druchlauf starten.
Bei 'next' bitte nicht vergessen, den Zähler weiterzuzählen, sonst kommts zu Endlosschleife.
Funktioniert auch mit 'until'

xi = 0
 
while xi < 10
  p! xi
  xi += 1
  if xi > 4 
    break
  end
end
  
puts "Ende bei xi = #{xi}"


Ausgabe:
xi # => 0
xi # => 1
xi # => 2
xi # => 3
xi # => 4
Ende bei xi = 5


step (oder sowas wie for next)

Klassische for next Schleifen wie man sie aus anderen Sprachen kennt, gibt es in Crystal nicht. Dafür gibts aber 'step':

# beginne bei 0
# geh bis 8
# in Schritten von 2
0.step(to: 8, by: 2) do |xi|
  p! xi
end


Ausgabe:
xi # => 0
xi # => 2
xi # => 4
xi # => 6
xi # => 8