0Pricing
Kotlin Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 範囲とコレクションを反復するforループ
  2. whileとdo-while:使い分け
  3. forEach、repeat、forEachIndexed
  4. break、continue、ラベル付きreturn
← Kotlin Academyに戻る