Kotlin'de doğum günü mesajı oluşturun

Bu codelab'de, doğum günü pastası ve doğum günü banner'ı içeren kısa bir Kotlin programı oluşturacaksınız.

Ön koşullar

  • Tarayıcı tabanlı Kotlin programlama aracı https://try.kotlinlang.org/ adresinde kodu açma ve düzenleme
  • İlk Kotlin programı codelab'inden "Hello world!" programını öğrenin.
  • Online Kotlin kod düzenleyicinin konsoluna metin yazmak için println() nasıl kullanılır?

Öğrenecekleriniz

  • Programınızdan daha karmaşık metinleri yazdırma.
  • Kotlin'de temel matematik işlemleri yapma ve sonuçları daha sonra kullanmak üzere değişkenlerde depolama.
  • Aynı dizeyi birkaç kez yazdırmak için işlev oluşturma.
  • Bir metin snippet'ini birden çok kez yazdıran bir döngü nasıl oluşturulur?

Derlemeniz istenen nedir?

  • Doğum günü mesajlarını, pastanın metin tabanlı bir resmini ve bir banner'ı yazdırmak için kullanabileceğiniz kısa bir program oluşturacaksınız.

İhtiyacınız olanlar

  • İnternet erişimi ve Chrome'un en son sürümü gibi modern bir web tarayıcısı olan bir bilgisayar.

Başlangıç kodunuzu ayarlama

  1. Tarayıcınızda https://try.kotlinlang.org/ sayfasını açın. Bu işlem, tarayıcı tabanlı bir Kotlin programlama aracı açar.
  2. Dosya gezgininde Örnekler > Merhaba, dünya! > Basit sürüm > SimplestVersion.kt seçilir ve kod düzenleyici Hello world! programını gösterir.
  3. Kodu önceki değişikliklerinizle görüyorsanız sorun yok demektir. Dosya adının yanındaki Geri al okunu tıklayarak programın orijinal durumunu geri yükleyin.

  1. fun main() tanımında kullanmayacağınız için args: Array<String> bağımsız değişkenini kaldırın. Düzenleyicide varsayılan olarak sağlanan kodda sağlanır, ancak kullanılması zorunlu değildir. Programınızın ilk satırı artık aşağıdaki koda benzemelidir.
fun main(){
  1. fun main() işlevinin içindeki "Hello, world!" metnini "Happy Birthday, Rover!" ile değiştirin.
  2. Bunun altında, süslü ayraçların içinde, yazdırmak için iki satır daha ekleyin: "You are already 5!" ve "5 is the very best age to celebrate!".

Tamamlanan kodunuz bu şekilde görünmelidir.

fun main() {
    println("Happy Birthday, Rover!")
    println("You are already 5!")
    println("5 is the very best age to celebrate!")
}
  1. Kodunuzu çalıştırın.
  2. Konsol sekmesinde Doğum Günü Doğumu, Rover! değerinin göründüğünü ve onun altında Zaten 5 yaşındasınız! ve 5 yaşınızın en iyi yaşı! olduğunu doğrulayın.

Doğum günü pastası ekleyin

Doğum günü mesajının doğum günü temalı bir resmi olmalıdır. Yani pasta gibi. Klavyenizde ve println() harflerinde harf ve sembolleri kullanan ek satırlar yazdırarak doğum günü mesajınıza pasta ekleyebilirsiniz.

Yukarıdaki çözüm kodundan devam edin.

  1. Kodunuzda, Happy Birthday ve You are already 5 için iki println() ifadesi arasına aşağıdaki gösterildiği gibi yazdırma ifadesi satırları ekleyin. Pasta yaratılıyor. Son println() ifadesinde tırnak işaretleri arasında metin yoktur, bu da boş bir satır yazdırır.
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
    println("")

Diğer kullanıcıların kodunuzu anlamasına yardımcı olmak için pastayı yazdırmadan önce yorum ekleyebilirsiniz. Kodunuzu çalıştırırsanız yorumlar sisteme ait komutlar değil, yalnızca sizin ve diğer geliştiricilerin bilgileri olduğundan, farklı bir şekilde görünmez. Satır içi yorum, aşağıda gösterildiği gibi // ile başlar ve ardından metin gelir.

// This is a comment line
// This is another comment
  1. Pastayı yazdırmadan önce yorum ekleyin: // Let's print a cake!.
  2. Boş satırı yazdırmadan önce yorum ekleyin: // This prints an empty line.

Kodunuz aşağıdaki koda benzemelidir.

fun main() {
    println("Happy Birthday, Rover!")
    
    // Let's print a cake!
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
    
    // This prints an empty line.
    println("")

    println("You are already 5!")
    println("5 is the very best age to celebrate!")
}
  1. Kodunuzu çalıştırdığınızda çıkışın aşağıdaki ekran görüntüsüne benzemesi gerekir.

Bir değişkendeki Store Rover yaşı

  1. Şu ana kadarki kodda aynı yaş numarasını iki kez nasıl tekrarladığınıza dikkat edin.

Bu sayıyı tekrarlamak yerine, değişken olarak tek bir yerde depolayabilirsiniz. Numaranızı bir kutuya koymak ve ad vermektir. Ardından, değere ihtiyacınız olduğunda bu değişken adını kullanabilirsiniz. Ayrıca yaş değişirse programınızı tek bir yerden değiştirmeniz yeterli. Değişkeni değiştirdiğinizde, değişkenin kullanıldığı her yerde yaş için doğru değer yazdırılır.

  1. Programınızda, main( içindeki işlevin ilk kod satırı olarak, aşağıda gösterildiği gibi 5 değeriyle age adında bir değişken oluşturmak için aşağıdaki kodu ekleyin. (Bu satırı println() ifadelerinin önüne yerleştirmeniz gerekir).
val age = 5

Bu satır şu anlamlara gelir:

  • val, Kotlin tarafından kullanılan ve anahtar kelime olarak adlandırılan özel bir kelimedir. Buradaki ifade, değişkenin adıdır.
  • age, değişkenin adıdır.
  • =, age değerinin (soldaki) sağındaki değerle aynı olmasını sağlar. Matematikte her iki taraftaki değerlerin aynı olduğunu iddia etmek için tek bir eşittir işareti kullanılır. Kotlin yönteminin aksine, matematikte aksine sağ taraftaki değeri sol taraftaki adlandırılmış değişkene atamak için tek bir eşittir işareti kullanılır.

Geliştirici şöyle der: Bu satır age değerine sahip, atanmış değeri 5 olan bir değişken bildirir.

Yazdırma ifadesi içinde bir değişken kullanmak için, değişkeni sisteme izleyen metin ile değil değişkenle ilgili bazı simgelerle çevrelemeniz gerekir. Sistemin metin yazdırmak yerine değişkenin değerini yazdırması gerekir. Bunu, değişkeninizi aşağıdaki örnekte olduğu gibi, başında dolar işareti olan süslü ayraç içine alarak yapabilirsiniz.

${variable}
  1. Kodunuzda, her iki baskı ifadesinde de bulunan 5 sayısını aşağıda gösterildiği gibi age değişkeniyle değiştirin.
println("You are already ${age}!")
println("${age} is the very best age to celebrate!")
  1. Kodunuzu çalıştırdığınızda her iki mesaj da aynı yaşı göstermelidir.
  2. Değişkenin değerini farklı bir değerle değiştirin. Örneğin, Rover'ın yaşını yıl yerine gün olarak gösterebilirsiniz. Bunun için, artık yılları çıkararak yaşı 365 ile çarpın. Bu hesaplamayı, değişkeni oluştururken doğrudan aşağıda gösterildiği gibi yapabilirsiniz.
val age = 5 * 365
  1. Kodunuzu tekrar çalıştırın ve her iki iletinin de artık gün cinsinden yaşı gösterdiğini unutmayın.

  1. [İsteğe bağlı] Yazdırma iletilerinin metnini günlerle daha iyi çalışacak şekilde değiştirin. Örneğin, aşağıdakileri okunacak şekilde değiştirin:
You are already 1825 days old!
1825 days old is the very best age to celebrate!

Metni bir değişkene yerleştirme

Yalnızca değişkenleri değil, aynı zamanda metni de metne aktarabilirsiniz.

  1. age değişkeninin altında, doğum günü kişinin adı için name adlı bir değişken ekleyin ve değerini "Rover" olarak ayarlayın.
val name = "Rover"
  1. Doğum günü mesajındaki Rover adını, aşağıda gösterildiği gibi değişkenle değiştirin.
println("Happy Birthday, ${name}!")

Ayrıca, bir ifadede birden fazla değişken olabilir.

  1. Aşağıda gösterildiği gibi, name değişkenini kullanarak yaş mesajına Rover ekleyin.
println("You are already ${age} days old, ${name}!")

Tamamlanan kodunuz bu şekilde görünmelidir.

fun main() {
    
    val age = 5 * 365
    val name = "Rover"
    
    println("Happy Birthday, ${name}!")
    
    // Let's print a cake!
    println("   ,,,,,   ")
    println("   |||||   ")
    println(" =========")
    println("@@@@@@@@@@@")
    println("{~@~@~@~@~}")
    println("@@@@@@@@@@@")
    
    // This prints an empty line.
    println("")

    println("You are already ${age} days old, ${name}!")
    println("${age} days old is the very best age to celebrate!")
}

Tebrikler! Artık metinli simgeler oluşturabilir, simgelerden oluşturulan grafikler oluşturabilir, sayıları ve metinleri depolamak için değişkenler kullanabilir ve değişkenler kullanarak metin yazdırabilirsiniz.

Bu görevde bir doğum günü banner'ı oluşturacak ve ardından kodun tekrarlanması ve yeniden kullanılması için teknikler kullanarak bu kodu nasıl basitleştireceğinizi öğreneceksiniz.

Başlangıç doğum günü banner'ı oluşturma

  1. https://try.kotlinlang.org/ adresinde, imlecinizi kodun içinde bir yere getirin.
  2. İçerik menüsünü açmak için sağ tıklayın ve Tümünü Seç (Ctrl-A) seçeneğini belirleyin.
  3. Kodun tamamını silmek için geri veya delete tuşuna basın.
  4. Aşağıdaki kodu kopyalayıp düzenleyiciye yapıştırın.
fun main() {
    println("=======================")
    println("Happy Birthday, Jhansi!")
    println("=======================")
}
  1. Konsolda basılı olan bir banner görmek için programınızı çalıştırın.
=======================
Happy Birthday, Jhansi!
=======================

Kenarlığı yazdırmak için işlev oluşturma

Yapıştırdığınız ve çalıştırdığınız kod, üç yazdırma ifadesi içeren main() adlı bir işlevdir. Çalıştır düğmesine bastığınızda sistem, işlevi ve içindeki tüm kodu yürütür.

Kotlin programınızda her zaman bir main() işlevi olmalıdır. Ayrıca kendi işlevlerinizi de oluşturup kullanabilirsiniz. Değişkenler, işlerin yinelenmesini önlemeye yardımcı olabileceği gibi işlevler de aynı kodu birden çok kez yazmamanızı sağlayabilir. Kodunuzda, banner'ın üst ve alt kısmına ilişkin yazdırma ifadeleri tam olarak aynıdır. Şimdi, bu kenarlıkları yazdırmak için bir işlev oluşturup kullanalım.

  1. Düzenleyicide, size biraz çalışma alanı tanımak için main() işlevinin altına boş bir satır ekleyin. Sistem boş satırları yoksayar ve bu satırları, kodunuzu düzenlemeye yardımcı olacak her yere ekleyebilirsiniz.
  2. İşlev oluşturun. fun anahtar kelimesiyle başlayın. Ardından, aşağıda gösterildiği gibi bir ad, printBorder, çift parantez () ve çift kıvrık ayraç {} kullanın.
fun printBorder() {}

Adlandırma işlevleriyle ilgili bir kelime.

  • printBorder işlevinin adının küçük harf ve fiil ile başladığına dikkat edin. İşlev adları neredeyse her zaman küçük bir harfle ve bir fiille başlar. Adın işlevin işlevini açıklaması gerekir. Örneğin, print() veya burada, printBorder().
  • Adın içindeki ikinci kelimenin büyük harfle başladığına da dikkat edin. Bu tarz "büyük/küçük harf" olarak adlandırılır ve adların daha kolay okunabilmesini sağlar. İsimlere örnek olarak drawReallyCoolFancyBorder ve printBirthdayMessage verilebilir.
  1. Daha fazla kod eklemenize olanak tanımak için printBorder işlevinin kapanış küme ayracı } değerini yeni bir satıra ekleyin ve iki süslü ayraç arasına boş bir satır ekleyin. Kapanış ayracının } kendi satırında olması, işlevin nerede bittiğini görmeyi kolaylaştırır.
  2. main() işlevinin içinde, kenarlıkla ilgili yazdırma ifadesini kopyalayıp printBorder() işlevinin kıvrık ayraçları arasına yapıştırın.

Tamamladığınız printBorder() işlevi aşağıdaki gibi görünecektir.

fun printBorder() {
    println("=======================")
}

Bir işlevi kullanmak veya çağırmak için işlevini parantez içinde kullanın. println() aracını şu şekilde kullandığınıza dikkat edin. Dolayısıyla, printBorder işlevini kullanmak için kodunuzda ihtiyacınız olan her yere printBorder() çağırabilirsiniz.

  1. main() işlevinde, println() kullanarak kenarlık satırı yazdıran kod satırlarını printBorder() işlevine yapılan çağrılarla değiştirin. Tamamlanan kodunuz bu şekilde görünmelidir.
fun main() {
    printBorder()
    println("Happy Birthday, Jhansi!")
    printBorder()
}

fun printBorder() {
    println("=======================")
}
  1. Her şeyin eskisi gibi çalıştığından emin olmak için kodunuzu çalıştırın.

Çıkışı değiştirmeden daha iyi veya daha kolay çalışabilmek için koda geçiş yapmanın "yeniden düzenleme" olarak adlandırıldığını unutmayın.

Kenarlık kalıbını tekrarla

Sınır çizgisine baktığımızda aslında aynı simgenin baştan sona var olduğunu görüyoruz. Şunu söylemek yerine:

&"23 simgeden oluşan bu dizeyi yazdır"

derseniz

&"Bu 1 sembolü 23 kez yazdırın".

Kod olarak, bu işlemi repeat() ifadesi kullanarak yapabilirsiniz.

  1. printBorder() yönteminde, eşittir işaretini 23 kez yazdırmak için bir repeat() ifadesi kullanın.
  2. println() kullanmak yerine, her bir & sahip olduğu yazdırma işleminden sonra yeni bir satıra atlamamak için print() kodunu kullanın.

Kod aşağıda verilmiştir. Artık eşittir işaretini yazdırmak için tek bir talimatınız var ve bu talimatı 23 kez tekrarlamak için repeat() ifadesi kullanıyorsunuz.

fun printBorder() {
    repeat(23) {
        print("=")
    }
}
  • repeat() ifadesi repeat kelimesiyle başlar ve ardından () gelir. Bu tür ifadeler 'döngü&#39 olarak adlandırılır; çünkü aynı kodu defalarca tekrarlıyor ya da döngüye alıyorsunuz. Daha sonra döngü oluşturmanın diğer yolları hakkında bilgi edineceksiniz.
  • Parantez içinde () tekrar sayısıdır,
  • Ardından süslü ayraç {},
  • ve kıvrık ayraç {} içinde tekrarlanacak koddur.
  1. printBorder() yönteminde, repeat() ifadesindeki kapanış kıvrık ayraç } kapanışından sonra, yeni bir satır yazdırmak için println() ifadesi ekleyin.

Kodunuz böyle görünmelidir.

fun printBorder() {
    repeat(23) {
        print("=")
    }
    println()
}

main() işlevindeki kod değişmez ve programınızın tamamı şu şekilde görünmelidir.=

fun main() {
    printBorder()
    println("Happy Birthday, Jhansi!")
    printBorder()
}

fun printBorder() {
    repeat(23) {
        print("=")
    }
    println()
}
  1. Kodunuzu çalıştırın. Çıktı öncekiyle aynı olmalıdır. Ancak bu kez &&t;=" simgesini belirterek kenarlığı oluşturabildiniz!
=======================
Happy Birthday, Jhansi!
=======================

Kenarlığı değiştirmek için bağımsız değişkenler kullanın

Aşağıdaki gibi farklı simgeler kullanan sınırlar oluşturmak isterseniz ne olur?

%%%%%%%%%%%%

****************************************************

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Bu farklı simgelerin her biri için ayrı bir işlev tanımlayabilirsiniz. Ancak bu işlemi daha etkili bir şekilde yapabilirsiniz. Daha önce yazdığınız işlevi yeniden kullanıp daha esnek hale getirebilirsiniz. Böylece farklı simge türleri için kullanılabilir.

İşlevler hakkında en iyi şey, bağımsız değişkenleri kullanarak giriş için bilgi vermenizdir. main() ile tanıştığınızda, önceki codelab'de bu sorunla karşılaştınız. Bu adımda, printBorder() işlevine bir bağımsız değişken eklersiniz. Böylece, sağladığınız kenarlık kalıbı yazdırılabilir.

  1. main() üst kısımda kenarlık deseni için border adlı bir değişken oluşturun. Bu işlem, kenarlık boyunca metnin tekrarlanmasına neden olur.
val border = "%"
  1. Şimdi, border değişkenini her iki çağrıya da printBorder() işlevine bağımsız değişken olarak iletin. Bunun için, println() öğesini yazdırmak üzere metin sağladığınızdaki gibi border parantez içine () girersiniz.

main() fonksiyonunuz aşağıdaki koda benzemelidir.

fun main() {
    val border = "%"
    printBorder(border)
    println("Happy Birthday, Jhansi!")
    printBorder(border)
}

printBorder() işlevi, bu border değerini giriş olarak alır ve tam sınırı nasıl yazdıracağınızı belirler.

  1. Kodunuzu çalıştırın.Kodunuz çalışmaz ve bunun yerine kodunuzun yanında hata simgeleri görürsünüz.

  1. Sorunlar görünümüne baktığınızda bir hata mesajı görebilirsiniz.

Mesaj, daha önce olduğu gibi, hatanın nerede olduğunu belirtir ve sorunun ne olabileceğine dair ipucu verir. Önemli olan Too many arguments for public fun printBorder(). printBorder() işlevini çağırıyor ve giriş olarak bir sınır bildiriyorsunuz. Ancak printBorder() işlev tanımı şu anda herhangi bir girişi kabul etmemektedir.

  1. printBorder() hata tanımına kenarlık için bir bağımsız değişken ekleyerek bu hatayı düzeltin. Aşağıda gösterildiği gibi ilk kod satırına bakın.
fun printBorder(border: String) {
    repeat(23) {
        print("=")
    }
    println()
}
  • Bağımsız değişken adının border olduğuna dikkat edin.
  • Adın ardından iki nokta üst üste işareti :
  • Bu String bağımsız değişkenin türünü veya türünü belirten bir açıklama.

String, tırnak işaretlerinden oluşan karakterlerden oluşan bir metindir. Bunu, kolye oluşturmak için bir dizenin üzerine sıralanan boncuklar gibi düşünebilirsiniz. Karakterler, kelime ve metin oluşturmak için sıralanan karakterlerdir. Bağımsız değişkenin String olması gerektiğini belirtmesi, sistemin bağımsız değişkenin metin değil (örneğin, sayı) olmasını zorunlu kılmasına yardımcı olur.

  1. Kodunuzu çalıştırın. printBorder() işlevi artık giriş olarak bir String sınırı kabul ediyor. main() kodundaki bağımsız değişken, border öğesini printBorder(border) ile çağırır. Kodunuz hatasız olarak çalışmalıdır.
  2. Konsolda programınızın çıkışına baktığınızda öncekiyle aynı sınırın görünmesi hâlâ mümkün mü?
=======================
Happy Birthday, Jhansi!
=======================

Amaçlanan davranış bu değildir! "%" sembolü ile bir sınır oluşturmaya çalıştınız, ancak program hala "&" simgesiyle bir sınır yazdırıyor. Sonraki adımlarda bu durumun nedenini araştıracaksınız.

  1. Düzenleyicide gri renkli bir ünlem işareti görürsünüz. Bu simge bir uyarıyı gösterir. Uyarılar, kodunuzla ilgili dikkat etmeniz gereken sorunlarla ilgilidir ancak kodunuzun çalışmasını engellemez.

  1. Sorunlar görünümüne geçip uyarıyı okuyun. "Parameter 'border' is never used." Bu uyarının sonucuyla ilgili sorun açıklanmaktadır. Fonksiyona kenarlık için yeni bir dize iletiyorsunuz ancak bunu baskı için kullanmıyorsunuz.
  1. printBorder() fonksiyonunu, &&tt; işlevini yazdırmak yerine border içinde aktarılanı kullanacak şekilde değiştirin. Bu, border işleviyle aynı şekilde tanımladığınız bir değişkenle tam olarak aynı şekilde çalışır!
fun printBorder(border: String) {
    repeat(23) {
        print(border)
    }
    println()
}
  1. Kodunuzu tekrar çalıştırın. Sonuç aşağıdaki gibi olmalıdır.
%%%%%%%%%%%%%%%%%%%%%%%
Happy Birthday, Jhansi!
%%%%%%%%%%%%%%%%%%%%%%%

Tebrikler, sorunu düzelttiniz! Tamamlanan kodunuzu aşağıda bulabilirsiniz.

fun main() {
    val border = "%"
    printBorder(border)
    println("Happy Birthday, Jhansi!")
    printBorder(border)
}

fun printBorder(border: String) {
    repeat(23) {
        print(border)
    }
    println()
}

printBorder() işlevini çok fazla kod eklemeden çok daha esnek hale getirdiniz. Artık küçük bir değişiklikle birlikte farklı simgelerin kenarlıklarını yazdırabilirsiniz.

  1. [İsteğe bağlı] main() işlevinde yalnızca tek bir kod satırını değiştirerek doğum günü banner'larını nasıl yazdırabilirsiniz?
***********************
Happy Birthday, Jhansi!
***********************
:::::::::::::::::::::::
Happy Birthday, Jhansi!
:::::::::::::::::::::::

Bir işlevi, iki bağımsız değişken içerecek şekilde değiştirme

1 karakterden uzun olan farklı bir kalıp kullanmak isterseniz "`-._,-'" deyin. Çok uzun olacağından bu deseni 23 kez tekrar etmezsiniz. Belki 4 kez tekrarlayabilirsin. Bunu yapmak için printBorder() ifadesinin repeat() ifadesindeki tekrar sayısını değiştirebilirsiniz. Ancak, daha iyisini yapabilirsiniz.

İki unsura göre meraklı bir sınır tanımlayabilirsiniz:

  • Tekrarlanacak kalıp (önceden yapmıştınız)
  • Kalıbı tekrarlamak istediğiniz

Her biri için desen, tekrar ve tekrar sayısı değişkenleri oluşturabilir ve ardından her iki bilgi parçasını printBorder() işlevine aktarabilirsiniz.

  1. main() içinde kenarlığı "`-._,-'" kalıbı olarak değiştirin.
val border = "`-._,-'"
  1. Kodunuzu çalıştırın ve kalıbın çok uzun olduğunu fark edin.
  2. main() öğesinde border tanımının altında, tekrar sayısı için timesToRepeat adlı yeni bir değişken oluşturun. Değeri 4 olarak ayarlanır.
val timesToRepeat = 4
  1. main() içinde, printBorder() öğesini çağırırken tekrar sayısını ikinci bağımsız değişken olarak ekleyin. Bu iki bağımsız değişkeni virgülle ayırın.
printBorder(border, timesToRepeat)

main() işlevi artık şu şekilde görünmelidir:

fun main() {
    val border = "`-._,-'"
    val timesToRepeat = 4
    printBorder(border, timesToRepeat)
    println("Happy Birthday, Jhansi!")
    printBorder(border, timesToRepeat)
}

Daha önce olduğu gibi, printBorder() kodunu çağıran printBorder() tanımından daha fazla bağımsız değişkeniniz olduğundan bu hata size hata veriyor.

  1. Giriş olarak tekrar sayısını da kabul etmek için printBorder() değerini düzeltin. Bağımsız değişkenin sonuna virgül ekleyin ve ardından ek bağımsız değişkeni ekleyin: timesToRepeat: Int. İşlev tanımınızın ilk satırı artık aşağıda gösterilmiştir.
fun printBorder(border: String, timesToRepeat: Int) {

Bildirim:

  • Virgül, iki bağımsız değişkeni ayırır.
  • timesToRepeat, bağımsız değişkenin adıdır,
  • iki nokta üst üste işareti : sembolü,
  • Int. timesToRepeat türü bir sayıdır. Bu yüzden, String türünde yapmak yerine bir tam sayı olan tam sayı olan Int türünde yapmanız gerekir.
  1. printBorder() içinde repeat değerini kullanmak için timesToRepeat bağımsız değişkenini kullanın (23 sayısı yerine). printBorder() kodunuz şu şekilde görünmelidir.
fun printBorder(border: String, timesToRepeat: Int) {
    repeat(timesToRepeat) {
        print(border)
    }
    println()
}
  1. Kodunuzu çalıştırın. Çıkış aşağıda olduğu gibi görünür.
`-._,-'`-._,-'`-._,-'`-._,-'
Happy Birthday, Jhansi!
`-._,-'`-._,-'`-._,-'`-._,-'
  1. Bu çıkışı mükemmel hale getirmek için Doğum Günü mesajının başına iki boşluk ekleyin. Ardından, çıkışınız aşağıda gösterildiği gibi olur.
`-._,-'`-._,-'`-._,-'`-._,-'
  Happy Birthday, Jhansi!
`-._,-'`-._,-'`-._,-'`-._,-'

Banner'ınızın son kodu şöyledir:

fun main() {
    val border = "`-._,-'"
    val timesToRepeat = 4
    printBorder(border, timesToRepeat)
    println("  Happy Birthday, Jhansi!")
    printBorder(border, timesToRepeat)
}

fun printBorder(border: String, timesToRepeat: Int) {
    repeat(timesToRepeat) {
        print(border)
    }
    println()
}

Tebrikler! İşlevler, bağımsız değişkenler, değişkenler ve bir tekrarlama döngüsüyle, neredeyse tüm programlarda kullanılan temel yapı taşlarını öğrendiniz.

Ara verin, ardından daha fazla işlev ve döngü oluşturabileceğiniz bir sonraki görevi tamamlayın. Bu programda, doğru sayıda mumla doğru sayıda mumla devasa bir pasta hazırlamanıza olanak tanıyacaksınız.

Bu görevde doğum günü pastası kodunu, her yaş için doğru sayıda mumla her zaman doğru boyutta olacak şekilde yükselteceksiniz.

  • Mumlarla katmanlı bir pasta çizmek için toplam üç işlev oluşturacaksınız.
  • Başka bir repeat() içinde repeat() kullanacak ve "iç içe yerleştirilmiş döngü" denen bir şey oluşturacaksınız.
  • Büyük kodla başlayıp daha fazla ayrıntı ekleyerek her programı nasıl geliştirebileceğinizi bu kodla oluşturabilirsiniz. Buna "yukarıdan aşağıya geliştirme" denir.
  • Talimatlar bu uygulama için ayrıntılı değildir. Takıldığınız takdirde tamamlanmış koda başvurabilirsiniz.

Fırınlayacağınız pastanın bir resmi şu şekildedir:

Talimatları aşağıda bulabilirsiniz.

Ana işlevi oluşturma

  1. Düzenleyicideki kodunuzu Hello, world! programına sıfırlayın.
  2. Kullanmadığınız için main() bağımsız değişkenini kaldırabilirsiniz.
  3. main() öğesinde age değişkeni oluşturun ve bunu 24 olarak ayarlayın.
  4. main() içinde layers için ikinci bir değişken oluşturun ve bunu 5 olarak ayarlayın.
  5. main() içinde printCakeCandles() işlevini çağırın ve age komutunu iletin. Bu işlev henüz oluşturulmadığından hata verir.
  6. Benzer şekilde, bir printCakeTop() işlevini çağırıp age komutunu da iletin.
  7. Son olarak, bir printCakeBottom() işlevi çağırıp age sayısını ve layers sayısını iletin.
  8. Hatalardan kaçınmak için, aşağıda gösterildiği gibi her satırın başına // ekleyerek üç işlev çağrısını yorumlayın. Bu teknik, hataları tetiklemeden kodunuzu taslak olarak hazırlamanıza olanak tanır.
  9. Programınızı çalıştırdığınızda herhangi bir hata oluşmaz ve herhangi bir işlem yapılmaz.

main() fonksiyonunuz aşağıdaki koda benzemelidir.

fun main() {
    val age = 24
    val layers = 5
    // printCakeCandles(age)
    // printCakeTop(age)
    // printCakeBottom(age, layers)
}

printCakeTop() oluştur

Pastanın üst kısmını yazdırmak için kullanılan printCakeTop() işlevi, eşittir işaretinden oluşan bir satırdır. Bu codelab'de, daha önce oluşturduğunuz printBorder() işleviyle neredeyse aynıdır.

==========================
  1. main() işlevinin altında boş bir satır ekleyin ve printCakeTop() türünde Int bir bağımsız değişken alan age işlevini oluşturun.
  2. İçinde bir adet eşittir işareti age kez yazdırmak için repeat() ifadesi kullanın. Ekstra eşittir işareti, mumların pastanın yanından düşmemesi için görünür.
  3. Sonda, repeat() tamamlandığında boş bir satır yazdırın.
  4. İşlev artık mevcut olduğundan, main() içinde printCakeTop() satırının başındaki iki // simgesini kaldırın.
printCakeTop(age)

Tamamladığınız işlev aşağıda verilmiştir.

fun printCakeTop(age: Int) {
    repeat(age + 2) {
        print("=")
    }
    println()
}
  1. Pastanın üst kısmını görmek için kodunuzu çalıştırın.

PrintCakeCandles() oluşturun

Her mum iki simgeden oluşur. Alev için virgül , mum gövdesi için de dikey çizgi |

,,,,,,,,,,,,,,,,,

|||||||||||||||||||||||||

Bir görevde birine ulaşmak için biri alevler ve biri gövdeler için olmak üzere iki repeat() ifadesi yerleştirin.

  1. main() işlevinin ve printCakeTop() işlevinin altında, Int türünde bir bağımsız değişken olan age olan yeni bir işlev oluşturun: printCakeCandles().
  2. İçinde, alev için bir virgül , yazdırmak için bir repeat() ifadesi kullanın.
  3. Bu işlemi age kez tekrarlayın.
  4. En sonunda boş bir çizgi yazdırın.
  5. Mumları yerleştirmek için bir alan yazdırmak üzere print() ifadesi ekleyin.
  6. Mum gövdelerini dikey çizgiyle | | yazdırmak için ikinci bir repeat() ifadesi oluşturma adımlarını tekrar edin.
  7. main() içinde printCakeCandles() için kod satırının başındaki iki // simgesini kaldırın.
printCakeCandles(age)
  1. Pastanın üst kısmını ve mumları görmek için kodunuzu çalıştırın

Çözüm:

fun printCakeCandles(age: Int) {
    print (" ")
    repeat(age) {
        print(",")
    }    
    println() // Print an empty line   
 
    print(" ") // Print the inset of the candles on the cake
    repeat(age) {
        print("|")
    }    
    println()
}

PrintCakeAlt() oluşturma

Bu işlevde, age + 2 genişliğinde bir pasta çizersiniz ve bunu belirli sayıda katman yüksekliğine çizersiniz.

@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
  • Bu durumda işlevinizin, biri genişlik (age), diğeri yükseklik (layers) için olmak üzere iki bağımsız değişkene ihtiyacı vardır.
  • Pastanın altını yazdırmak için önce bir 'at' @ sembolünü age + 2 bir kez bastırın. Ardından, bir katmanı yazdırma işlemini layers kez tekrar edersiniz.

Çizim katmanlarını tekrarla

Bir katman oluşturmak için yaş simgesini +2 kez çizin

  1. Mevcut işlevlerin altında, Int ve age olmak üzere iki bağımsız değişkene sahip printCakeBottom() işlevi oluşturun.
  2. İşlevin içinde, bir katman 'at' @ sembollerini age + 2 kez yazdırmak için bir repeat() ifadesi kullanın. Aşağıdaki gibi boş bir satır yazdırarak işlemi tamamlayın.
fun printCakeBottom(age: Int, layers: Int) {
    repeat(age + 2) {
        print("@")
    }
    println()
}
  1. Alt kısımda bir pasta yazdırdığını doğrulamak için kodunuzu çalıştırın.
 ,,,,,,,,,,,,,,,,,,,,,,,,
 ||||||||||||||||||||||||
==========================
@@@@@@@@@@@@@@@@@@@@@@@@@@

İç içe geçmiş yinelenen() ifadeleri

Aynı anda birden fazla pasta katmanı yazdırmak için şunları söyleyebilirsiniz:

1. katman için, simgeyi 12 kez tekrarlayın: @@@@@@@@@@

2. katman için, simgeyi 12 kez tekrarlayın: @@@@@@@@@@@@@

3. katman için, simgeyi 12 kez tekrarlayın: @@@@@@@@@@

Dilerseniz bunu çok daha kısa ve öz bir şekilde söyleyebilirsiniz:

Bu işlemi üç katman için tekrarlayın:

Simgeyi 12 kez tekrarlayın.

@@@@@@@@@@

@@@@@@@@@@

@@@@@@@@@@

Artık repeat() ifadeleriyle bunu kolayca yapabilirsiniz. Bir repeat() ifadesini başka bir repeat() ifadesine yerleştirebilirsiniz. Dolayısıyla, belirli bir katman sayısı için simgeyi belirli sayıda yazdırmak için repeat() ifadesinde bir repeat() ifadesi oluşturabilirsiniz.

Pasta katmanlarını bastıralım.

  1. İşlev içindeki tüm kodun başına ikinci bir repeat() ifadesi yerleştirin. Bu döngüyü layers kez tekrarlayın.
  2. main() içinde printCakeBottom() için kod satırından yalnızca iki // öğesini kaldırın.
printCakeBottom(age, layers)
  1. Pastanın tamamını görmek için kodunuzu çalıştırın.

printCakeBottom() çözümü.

fun printCakeBottom(age: Int, layers: Int) {
    repeat(layers) {
        repeat(age + 2) {
            print("@")
        }
        println()
    }    
}

Tebrikler! Az sayıda işlev ve iç içe yerleştirilmiş bir repeat ifadesi ile oldukça karmaşık bir program tamamladınız. Pastalarınızda her zaman doğru sayıda mum bulunur.

Programınızın son çıkışı:

 ,,,,,,,,,,,,,,,,,,,,,,,,
 ||||||||||||||||||||||||
==========================
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@

Çözüm kodu

fun main() {
    val age = 24
    val layers = 5
    printCakeCandles(age)
    printCakeTop(age)
    printCakeBottom(age, layers)
}

fun printCakeCandles(age: Int) {
    print (" ")
    repeat(age) {
          print(",") // Print an empty line
    }    
    println()    

    print(" ") // Print the inset of the candles on the cake
    repeat(age) {
        print("|")
    }    
    println()
}

fun printCakeTop(age: Int) {
    repeat(age + 2) {
        print("=")
    }
    println()
}

fun printCakeBottom(age: Int, layers: Int) {
    repeat(layers) {
        repeat(age + 2) {
            print("@")
        }
        println()
    }    
}
  • Değişkenleri ve hesaplamaları baskı ifadeleri metnine eklemek için ${} öğesini kullanın. Örneğin ${age}, age bir değişkendir.
  • val anahtar kelimesini ve bir adı kullanarak değişken oluşturun. Bu değer ayarlandıktan sonra değiştirilemez. Eşittir işaretini kullanarak bir değişkene değer atayın. Değerlere örnek olarak metin ve sayılar verilebilir.
  • String, tırnak içine alınan metinlerdir ("Hello" gibi).
  • Int, 0, 23 veya -1024 gibi tam veya pozitif bir sayıdır.
  • İşlevin kullanacağı bir veya daha fazla bağımsız değişkeni işleve aktarabilirsiniz. Örneğin:
    fun printCakeBottom(age:Int, layers:Int) {}
  • Bir dizi talimatı birkaç kez tekrarlamak için repeat() {} ifadesi kullanın. Örneğin, repeat (23) { print('%") } veya repeat (layers) { print("@@@@@@@@@@") }
  • Döngü, talimatları birden çok kez tekrarlamaya yönelik bir talimattır. repeat() ifadesi döngüye örnektir.
  • Döngüleri iç içe yerleştirebilirsiniz. Döngülerin içine döngü yerleştirebilirsiniz. Örneğin, pasta katmanlarında yaptığınız gibi, birkaç satır boyunca bir simgenin birkaç kez yazdırılması için bir repeat() ifadesi içinde repeat() ifadesi oluşturabilirsiniz.

İşlev bağımsız değişkenlerini kullanma özeti: Bir işlevle bağımsız değişkenleri kullanmak için üç şey yapmanız gerekir:

  • İşlev tanımına bağımsız değişkeni ve türü ekleyin: printBorder(border: String)
  • İşlevin içindeki bağımsız değişkeni kullanın: println(border)
  • İşlevi çağırırken bağımsız değişkeni sağlayın: printBorder(border)

Bu codelab'de öğrendiğiniz Kotlin kavramlarıyla ilgili resmi dokümanları aşağıda bulabilirsiniz.

Tarayıcı tabanlı Kotlin programlama aracı kodunuzu çalıştırmıyorsa veya aşağıdakine benzer bir hata veriyorsa aşağıdakileri deneyebilirsiniz.

  • ÜST KARAKTER-Yeniden yükle seçeneğini kullanarak sayfayı yeniden yükleyin.
  • Bir dakika bekleyip tekrar deneyin.