whileとdo-while:使い分け
whileとdo-whileループを記述し、それぞれの使用場面を理解します。
「whileとdo-while:使い分け」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
2種類のwhileループ
Kotlinにはwhile(前判定)とdo-while(後判定)の両方があります。違いは、do-whileは必ず少なくとも1回は本体を実行することです。
基本的なwhileループ
whileは各反復の前に条件を確認します。最初から条件がfalseの場合、本体は一度も実行されません。
fun main() {
var count = 0
while (count < 3) {
println("count = $count")
count++
}
}基本的なdo-whileループ
do-whileは本体を実行してから条件を確認します。本体は必ず少なくとも1回実行されます。
fun main() {
var n = 10
do {
println("n = $n")
n--
} while (n > 7)
}センチネル値まで読み取る
必要な反復回数がわからない場合、whileループが適しています。たとえば、センチネル値が現れるまで読み取る場合です。
fun main() {
val data = listOf(3, 7, 0, 9)
var i = 0
while (i < data.size && data[i] != 0) {
println("got ${data[i]}")
i++
}
println("stopped at index $i")
}リストの検索
条件を満たした時点ですぐに停止する早期終了の検索には、whileを使います。
fun main() {
val nums = listOf(2, 4, 7, 8, 10)
var i = 0
while (i < nums.size && nums[i] % 2 == 0) i++
println("first odd at index $i = ${nums[i]}") // 2 = 7
}入力検証にdo-whileを使う
成功したかどうかをテストする前に、必ずアクション(プロンプトの表示、読み取り、試行など)を実行する必要がある場合は、do-whileを使います。
fun main() {
val validInputs = listOf("y", "n", "y")
var idx = 0
var input: String
do {
input = validInputs[idx++]
println("user typed: $input")
} while (input != "n" && idx < validInputs.size)
}デクリメントするカウンター
whileループは、カウンターを0までデクリメントする処理を簡潔に記述できます。
fun main() {
var lives = 3
while (lives > 0) {
println("Lives left: $lives")
lives--
}
println("Game over")
}breakを使った無限ループ
終了条件が複雑なイベントループ形式のコードには、while (true)とbreakを使います。
fun main() {
val items = listOf(1, 2, 3, -1, 4)
var i = 0
while (true) {
if (i >= items.size || items[i] < 0) break
println("ok: ${items[i]}")
i++
}
}whileとforの比較
反復回数があらかじめわかっている場合は、forを優先します。反復回数が実行時の状態に依存する場合は、whileを使います。
fun main() {
// for: known bounds
for (i in 1..3) print("$i ")
println()
// while: state-driven
var n = 1
while (n <= 3) { print("$n "); n++ }
println()
}2つの変数を使ったループ
whileループでは複数の変数を追跡できるため、フィボナッチ数列のようなアルゴリズムに役立ちます。
fun main() {
var a = 0
var b = 1
while (b < 50) {
print("$b ")
val next = a + b
a = b
b = next
}
println() // 1 1 2 3 5 8 13 21 34
}do-whileは必ず1回実行される
最初から条件がfalseであっても、do-whileの本体は1回実行されます。これがまさに必要な動作である場合もあれば、バグになる場合もあります。
fun main() {
var x = 100
do {
println("x = $x") // prints once
x--
} while (x > 1000) // false immediately
}クイックチェック
条件に関係なく、本体が少なくとも1回実行されることを保証するループはどれですか。
まとめ
反復回数が実行時の条件に依存する場合はwhileを使います。本体を少なくとも1回実行する必要がある場合(検証や再試行など)はdo-whileを使います。反復回数がわかっている場合はforを優先します。
よくある質問
「whileとdo-while:使い分け」レッスンは無料ですか?
はい。「whileとdo-while:使い分け」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「whileとdo-while:使い分け」で何を学びますか?
whileとdo-whileループを記述し、それぞれの使用場面を理解します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「whileとdo-while:使い分け」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 範囲とコレクションを反復するforループ
- whileとdo-while:使い分け
- forEach、repeat、forEachIndexed
- break、continue、ラベル付きreturn