while 文
読了目安 約2分
条件が真の間ブロックを繰り返す while 文。無限ループの避け方も学ぶ。
この章の目次
同じ処理を 100 回書かずに、100 回繰り返させたい。 その最初の道具が while 文です。
while 文
while 文は、条件が true の間、ブロックを繰り返し実行します。
while 条件 {
繰り返す処理
}カウントダウンを書いてみます。
var count = 5
while count > 0 {
print(count)
count -= 1
}
print("リフトオフ!")流れは「条件を確かめる → true ならブロックを実行 → 条件に戻る」の繰り返しです。
count が 0 になると条件が false になり、while 文の次の行へ進みます。
最初から条件が false なら、ブロックは一度も実行されません。
無限ループ
条件がいつまでも false にならないと、繰り返しは永遠に終わりません。
これを無限ループと呼びます。
var count = 5
while count > 0 {
print(count)
// count -= 1 を書き忘れた!
}このプログラムは 5 を出力し続けて止まりません。
このサイトのエディタでは数秒で強制終了されますが、手元の環境では止まらないままです。
while 文を書いたら、条件を false に近づける更新がブロックの中にあるかを確かめてください。
カウンタと累積を組み合わせる
1 から N までの合計を while 文で計算します。
let n = Int(readLine()!)!
var i = 1
var sum = 0
while i <= n {
sum += i
i += 1
}
print(sum)10カウンタ i が 1 から N まで進み、そのたびに sum へ足し込まれます。
前章の 2 つの定型句が、繰り返しの中でつながりました。
試してみよう: 標準入力を 100 に変えて、出力が 5050 になることを確かめてください。
学びどころ
| 概念 | 一言まとめ |
|---|---|
| while 文 | 条件が true の間ブロックを繰り返す |
| 無限ループ | 条件が false にならず止まらない状態 |
| 更新の確認 | ブロック内に条件を変える処理があるかを必ず見る |
演習
整数 N が入力されます。
# でできた N 段の階段を出力してください。
上から i 行目には # を i 個並べます。
制約: 1 ≤ N ≤ 50
入力例:
3
出力例:
#
##
###模範解答
1 行進むたびに、文字列の末尾へ # を 1 個足してから出力します。
let n = Int(readLine()!)!
var line = ""
var i = 1
while i <= n {
line += "#"
print(line)
i += 1
}