Kotlin
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.
Örnek çözümü göster
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"))
}
Kendini test et
-
<code>runMenu</code> fonksiyonu eylemleri işlemek için ne kullanır?
- if-else if
- when (action)
- try-catch
- recursion
Cevabı göster
when (action) — when ile her eylem bir fonksiyona bağlanır.
-
runMenu parçalarını eşle
- fun runMenu(actions)
- Fonksiyon imzası
- for (action in actions)
- Eylem döngüsü
- when (action)
- Dallanma
- else -> println
- Bilinmeyen dalı
-
runMenu dallanmasını tamamla
for (action in actions) {
____ (action) {
"quiz" -> runQuiz()
"score" -> println(score(listOf("Türkiye", "5")))
else -> println("Bilinmeyen")
}
}
Cevabı göster
for (action in actions) {
when (action) {
"quiz" -> runQuiz()
"score" -> println(score(listOf("Türkiye", "5")))
else -> println("Bilinmeyen")
}
}
Sıradaki ders: Generic sınıf