Kurzusok
/
Crystal
Crystal
/
Tanterv
/
While-ciklusok
Wh

While-ciklusok ebben a kurzusban: Crystal

1 feladat

A(z) While-ciklusok fogalomról

A ciklus egy vezérlési szerkezet, amellyel a kód egy adott feltétel alapján ismételten végrehajtható.

While-ciklusok

A while-ciklus egy vezérlési szerkezet, amellyel a kód egy adott feltétel alapján ismételten végrehajtható. A while-cikluson belüli kód addig hajtódik végre, amíg a feltétel igazra értékelődik. A while-ciklusokat gyakran akkor használjuk, amikor előre nem ismert az iterációk száma, de bármilyen helyzetben használhatók, ahol ciklusra van szükség.

A feltétel a cikluson belüli kód végrehajtása előtt értékelődik ki, ami azt jelenti, hogy ha a feltétel hamis, a cikluson belüli kód soha nem hajtódik végre.

i = 0
while i < 3
  puts i
  i += 1
end

# Output:
# 0
# 1
# 2

Ha egy stringen szeretnél iterálni, végigmehetsz a string hosszán.

str = "Hello"
i = 0
while i < str.size
  puts str[i]
  i += 1
end

# Output:
# H
# e
# l
# l
# o

Until-ciklusok

Az until-ciklusok ugyanúgy működnek, mint a while-ciklusok, azzal a különbséggel, hogy a cikluson belüli kód addig hajtódik végre, amíg a feltétel igazra nem értékelődik. Ez ugyanaz, mint az if és az unless közötti különbség.

i = 0
until i == 3
  puts i
  i += 1
end

Végtelen ciklusok

A while-ciklusokkal gyakori hiba, hogy végtelen ciklusba kerülünk, amely soha nem ér véget. Egy végtelen ciklust okozhat, ha egy feltétel soha nem értékelődik igazra vagy hamisra. Ez gyakran programozói hiba; például elfelejtjük léptetni a ciklusváltozót. Néha azonban a végtelen ciklus a legvilágosabb módja a program logikájának megvalósítására. Vagy létfontosságú a végtelen ismétlés; például egy HTTP-szerver vár egy bejövő kapcsolatra, kezeli azt, majd a következő kapcsolatra vár.

Break

A break kulcsszóval idő előtt kiléphetsz egy ciklusból. Ez kényelmes lehet, ha bizonyos feltételek mellett szeretnél idő előtt kilépni egy ciklusból.

i = 0
while i <= 3
  puts i
  i += 1
  if i == 2
    break
  end
end

# Output:
# 0
# 1

Next

A next kulcsszóval átugorhatsz egy ciklus következő iterációjára. Ez kényelmes lehet, ha egy ciklus bizonyos iterációit szeretnéd kihagyni.

i = 0
while i <= 3
  i += 1
  if i == 2
    next
  end
  puts i
end

# Output:
# 1
# 3

Típusok ciklus közben

A változó típusa a ciklus közben eltérő lehet. A következő példában az a típusa Int32 | String, mert a ciklus első részében Int32 vagy String lehet. Az a változó csak a ciklus első részében hordozza az Int32 | String típust, mivel amikor a ciklus elindul, Int32 értéket tartalmaz, a második iterációban pedig String értéket. Ezt a többtípusos rendszert később részletesen elmagyarázzuk. De mivel biztosak vagyunk benne, hogy a ciklus második része csak String értéket tartalmaz majd, az a típusa a ciklus második részében String. Futásidőben soha nem tartalmaz egyszerre Int32 és String értéket.

i = 0
a = 4
while i < 3
  p typeof(a)
  # => Int32 | String
  a = "4"
  p typeof(a)
  # => String
  i += 1
end

A while használata kifejezésként

A while kifejezésként is használható, ami azt jelenti, hogy egy változó értékeként is szerepelhet. A visszaadott érték a break kulcsszóval megadott érték. Nem a ciklus utolsó kifejezésének értékét adja vissza.

a = while true
  break 1
end

p a
# => 1

i = 0
a = while i == 0
  i += 1
  1
end

p a
# => nil
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) While-ciklusok fogalmat

A gyakorlás zárolva

Oldj fel még 10 feladatot, hogy gyakorolhasd a(z) While-ciklusok fogalmat