Birleştirme
- Kotlin kursu
- Orta seviye
- Ders 46/116
- 6 dk
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
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
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
for (action in actions) {
____ (action) {
"quiz" -> runQuiz()
"score" -> println(score(listOf("Türkiye", "5")))
else -> println("Bilinmeyen")
}
}
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.