CodeBlanks Logo Icon CodeBlanks

Birleştirme

Quiz fonksiyonlarını menü döngüsüyle birleştirirsin.

Birleştirme

Beşinci ve son derste tüm parçaları bir menü döngüsüyle birleştiririz. runMenu fonksiyonu bir eylem listesi alır ve her eylemi sırayla işler.

Örnek: fun runMenu(actions: List<String>) { for (action in actions) { when (action) { "quiz" -> runQuiz(); "score" -> println(score(listOf("Türkiye", "5"))); else -> println("Bilinmeyen") } } }. when ile her eylem türü bir fonksiyon çağrısına bağlanır. main içinde sorular eklenir, sonra runMenu(listOf("quiz", "score")) çağrılır. Tüm fonksiyonlar (Question, addQuestion, runQuiz, score) önceki derslerden gelir.

Menü döngüsü

runMenu bir List<String> alır ve her eylemi sırayla işler. when ile eylem türüne göre ilgili fonksiyon çağrılır.

Örnek: runMenu(listOf("quiz", "score")) önce runQuiz() çağırır (tüm soruları yazdırır), sonra println(score(listOf("Türkiye", "5"))) çağırır (skor yazdırır). Bilinmeyen eylemler için else -> println("Bilinmeyen") dalı kullanılır. Menü döngüsü kullanıcı girişi yerine sabit bir eylem listesi kullanır; bu sayede çıktı deterministik olur.

Uygulama runMenu ile quiz'i birleştir

Önceki derslerin çözümünü temel al: data class Question(val text: String, val answer: String), val questions: MutableList<Question> = mutableListOf(), fun addQuestion(text: String, answer: String), fun runQuiz() ve fun score(answers: List<String>): Int tanımlı olsun. fun runMenu(actions: List<String>) fonksiyonu ekle; gövdesi for (action in actions) ile eylemleri gezsin ve when (action) ile "quiz" eylemi için runQuiz(), "score" eylemi için println(score(listOf("Türkiye", "5"))), else için println("Bilinmeyen") yapsın. main içinde iki soru ekle ve runMenu(listOf("quiz", "score")) çağır.

Başlangıç kodu

Main.kt
data class Question(val text: String, val answer: String)

val questions: MutableList<Question> = mutableListOf()

fun addQuestion(text: String, answer: String) {
    questions.add(Question(text, answer))
}

fun runQuiz() {
    for (q in questions) {
        println(q.text)
        println("Cevap: ${q.answer}")
    }
}

fun score(answers: List<String>): Int {
    var correct = 0
    for (i in questions.indices) {
        if (questions[i].answer == answers[i]) correct++
    }
    return correct
}

// runMenu fonksiyonunu ekle: actions al, for ile gez, when ile dallan

fun main() {
    // İki soru ekle ve runMenu çağır
}

Örnek çözüm

Main.kt
data class Question(val text: String, val answer: String)

val questions: MutableList<Question> = mutableListOf()

fun addQuestion(text: String, answer: String) {
    questions.add(Question(text, answer))
}

fun runQuiz() {
    for (q in questions) {
        println(q.text)
        println("Cevap: ${q.answer}")
    }
}

fun score(answers: List<String>): Int {
    var correct = 0
    for (i in questions.indices) {
        if (questions[i].answer == answers[i]) correct++
    }
    return correct
}

fun runMenu(actions: List<String>) {
    for (action in actions) {
        when (action) {
            "quiz" -> runQuiz()
            "score" -> println(score(listOf("Türkiye", "5")))
            else -> println("Bilinmeyen")
        }
    }
}

fun main() {
    addQuestion("Başkent hangi ülke?", "Türkiye")
    addQuestion("2+2 kaç?", "4")
    runMenu(listOf("quiz", "score"))
}

Beklenen çıktı

Başkent hangi ülke?
Cevap: Türkiye
2+2 kaç?
Cevap: 4
1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>runMenu</code> fonksiyonu eylemleri işlemek için ne kullanır?

  • if-else if
  • when (action) Doğru cevap
  • try-catch
  • recursion

Açıklama: when ile her eylem bir fonksiyona bağlanır.

2 runMenu parçalarını eşle

Kavram Anlamı
fun runMenu(actions) Fonksiyon imzası
for (action in actions) Eylem döngüsü
when (action) Dallanma
else -> println Bilinmeyen dalı

3 runMenu dallanmasını tamamla

Soru
for (action in actions) {
    ____ (action) {
        "quiz" -> runQuiz()
        "score" -> println(score(listOf("Türkiye", "5")))
        else -> println("Bilinmeyen")
    }
}
Cevap
for (action in actions) {
    when (action) {
        "quiz" -> runQuiz()
        "score" -> println(score(listOf("Türkiye", "5")))
        else -> println("Bilinmeyen")
    }
}

Açıklama: when ile eylem dallanması yapılır.

Orta seviye bölümündeki tüm dersler