1. Evvelki: Muhteva
Kotlin: Resimli Bir Rehber • Bab 1

Değişenler, İbareler, ve Nev’ler

Chapter cover image
Arşimet, keşfettiği sabiti isimlendirirken...

Demek bir Kotlin programcısı olmak istiyorsun?

Ol vakit, doğru yerdesiniz!

İşbu silsile-i ders, seni Kotlin’in temellerinden alacak ve lisanın asli mefhumlarını nazikçe tanıtarak ehliyetli bir Kotlin geliştiricisi olma yolunda ilerletecektir. Görmüş geçirmiş bir gazi olsan bile, temelleri bilmen selim bir idrak için lazımdır ki kabiliyetlerini mümkün olan en iyi seviyeye çıkarabilesin.

Senin maceran işte tam burada, değişenleri, ibareleri, ve nev’leri izah ettiğimiz Bab 1’de başlıyor.

Haydi gayrete gelelim!


Değişenlerin Takdimi

Bu bir çemberdir.

bir çember

Binlerce sene evvelinde, Arşimet isimli bir Yunanlı, bir çemberin harici uzunluğunun, çevresi de denir, nasıl ölçüleceğini kabaca izah etti. Muhtemelen idadi tahsilinizdeki keyifli günlerinizden muadeleyi hatırlarsınız:

Çevre = 2 x pi x r Çevre = 2  r

“Bir çemberin çevresi 2 kere π kere yarıçap ibaresinin neticesine eşittir.”

Üstteki resimde r bir sayı değildir. Yarıçapa işaret eden bir harftir ki çemberin merkezinden çevresine olan mesafedir.

Çemberin çevresi ç e v r e r

Biz r’ye değişen deriz, çünkü yarıçap tebdil edilebilir, çemberin ebatının tebdiliyle o da değişir. Başka bir ifadeyle, değişen r kendisi bir sayı değildir, bir çeşit “sepettir” ki bir sayıyı ihtiva eder – herhangi bir sayıyı.

Boş bir sepet r

Değişenler sadece Cebir ve Hendese için değildir. Programlama da daima aynı maksadla kullanılırlar: kıymetleri ihtiva etmek. Kotlin’de, bir değişenin ibdası ve bir sayının o değişene tayini aşağıdaki gibidir:

var r = 5.2

Bu kod tek satırda iki iş yapmaktadır aslında.

Değişen ilanı ve tayini var r = 5.2 tayin ilan
  1. var r yazdığımızda r değişeninin varlığını ilan ediyoruz demektir. Bir değişeninin varlığını ilan etmeği bir sepetin ibdası olarak tahayyül edebilirsiniz.
  2. r = 5.2 yazdığımızda r değişenine 5.2 kıymetini tayin ediyor demektir. Bir başka deyişle, 5.2` sayısını sepete koyuyoruz demektir.
İçinde 5.2 kıymeti olan bir sepet r 5.2

Haydi aşağıdaki kodun 3 temel kısmını ele alalım:

Remiz, değişen ismi ve kıymet var r = 5.2 isim remiz kıymet

Üstteki kodda…

  • var bir remizdir ki Kotlin’e yeni bir değişen ibda eylemesini söyler.
  • r değişenin ismidir. Bazen bunu değişenin hüviyeti olarakta duyabilirsiniz.
  • 5.2 sayısı tayin edilen kıymettir.

var Kotlin tahsilimiz müddetince talim edeceğimiz bir çok remizden yalnızca bir tanesidir. Hatırda tutulması lazım gelen mühim mesele odur ki sana ait olan şeylerde remizleri kullanamazsın. Misalen, var remzini bir değişen ismi olarak kullanamazsın.

var var = 5
Hata

Bakı remizlere müstakbel bablarda şahit olacağız.

Değişenlerin Tekraren Tayini

Üstte şerh düştüğümüz üzere 2πr muadelesinde r değişeni faklı hallerde faklı sayıları temsil edebilir.

Muhtelif ebatlardaki çemberler 10.0 5.2 6.7

Kotlin’de r’nin farklı bir sayıyı temsil etmesini istersen, aşağıdaki gösterildiği gibi, tekrar tayin edebilirsin:

var r = 5.2
r = 6.7

Tekraren tayin etme halinde var remzini yazmamıza lüzum yoktur çünkü değişen evvelki satırda ilan edilmiştir.

Tekraren Tayin Edilemeyen Değişenler

Çevre muadelesine tekrar bakalım:

Çevre = 2 x pi x r Çevre = 2  r

Yunan harfi olan π (“pay” şeklinde telaffuz edilir) değişen olan r’den pek farklıdır. r herhangi bir sayıyı ihtiva edebileceği halde, π sadece muayyen bir sayıyı ihtiva edebilir ki 3.14 diye kısaltacağız.

Aynı şekilde, Kotlin ile programlarken, baz haller vardır ki bir değişenin hiçbir zaman değişmemesini isteriz.

İçinde sadece tek bir şey tutabilen bir sepet 3.14 6.28

İşbu hallerde, var remzi yerine val remzi ile ilan ederiz, misalen:

val π = 3.14

Şimdi, π‘yi tekrar tayin etmeğe teşebbüs edersek, bir hata ile karşılaşırız:

val π = 3.14
π = 1.23
Hata

Bu sepete bir kere bir şey koydun mu, bir daha başka bir şey ile değiştiremezsin!

Değişenlerini val ile ilan etmek istikbalde kazaen değişmemesi lazım gelen bir şeyi tebdil etmene mani olacak selim bir usuldür. Nitekim, val ile başlayıp zaruri hallerde var remzine tebdilen geçmek tercih edilmelidir.

Değişenlerin İsimlendirilmesi

Kodumuzda π harfini kullanmak eğlenceliydi lakin Yunanistan’da ikamet etmiyorsanız, işbu harf muhtemelen klavyenizde yoktur. Bu andan sonra, herkesin hayatını kolaylaştırıp pi diye isimlendireceğiz. İlaveten, r yerine, yariCap diye isimlendireceğiz, bu sayede sonradan projeye dahil olan geliştiriciler şüphesiz işbu değişenlerin ne olduğunu bilebilecekler – diğerlerini r harfinin neyi işaret ettiğini tahmin etmeğe mecbur etmek istemeyiz!

Baz hallerde bir değişenin tarifi için birden fazla harfe ihtiyaç olur. Kotlin’de, örfen takip edilen kaidedir ki ilk kelime küçük harfle, sonraki harfler büyük harfle başlatılır, misalen:

var cemberinYariCapi = 5.2

Şu halde değişenlerin ilanı ve tebdili temellerini talim ettiğinize göre, basit sayılardan fazlasını tayin etmeğe başlayabiliriz – müşkül hesapların neticelerini tayin etmeğe başlayabiliriz, çevre muadelemiz gibi! Haydi ibareleri talim edelim!

Kotlin’de İbareler ve İfadeler

Haydi şu muadeleye tekrar bakalım:

Çevre = 2 x pi x r Çevre = 2  r

Evvelden pi ve yariCap değişenlerini ibda etmiştik, şimdi Kotlin’in bizim yerimize hesap yapmasını sağlayacak ve herhangi bir çemberin çevresini elde edeceğiz, her ne kadar büyük bir daire olursa olsun.

Tek yapmamız gereken şunları çarpmaktır: 2, pi, ve yariCap. Kotlin’de, programlama lisanlarının ekserisinde olduğu gibi, çarpma x ile gösterilmez. Bir yıldız işareti ile gösterilir: *, ol sebeble kodumuz böyle görünebilir:

var yariCap = 5.2
val pi = 3.14

val cevre = 2 * pi * yariCap

Şimdiye kadar basit kıymetleri tayin ettik - 5.2 ve 3.14 gibi. İlk defa mûdil bir şeyin tayinini yapıyoruz: 2 * pi * yariCap.

Kotlin bunu gördüğünde, senin için neticeyi basitçe hesaplar - 2 kere pi kere yariCap hesabını yapar, ve sonra, elbette, neticeyi alır ve cevre değişenine tayin eder. İşbu meselede (yarıçapın 5.2 olduğu), cevre değişeni 32.656 olur.

Çevresi hesaplanmış bir çember 32.656 ç e v r e r

2 * pi * yariCap hesaplanabilir ve neticesi bir kıymet olduğu için işlenebilir olduğunu söyleriz. İşlenebilir olan koda ibare denilir. Aşağıda ibarelerin bir kaç misalini tedkik edelim:

  • 2 + 3
  • 2 * pi * r
  • pi * r * r

Değişenler kendileri de ibarelerdir - onlar işlenir ve netice taşıdıkları kıymettir:

  • yariCap
  • pi

Elinizle bir sayı yazdığınızda (değişen yazmayla karşılaştırıldığında), ona halis sayı denir. Halisler kendileri de ibarelerdir - onlar işlendiklerinde netice kendileridir! İşte bir kaç misal:

  • 2
  • 5.2
  • 3.14

İşbu misallerin hepsi bir kıymete işlenir. Eğer bir kıymete işlenemeyen bir kodunuz varsa, ol koda ifade denilir.

İbare ve ifade tefriki için kullanabileceğiniz temel bir kaide:

Kaide: Eğer bir parça kodu bir değişene tayin edebilirseniz ibaredir. Aksi halde ifadedir.

Haydi bu kaideyi üstteki üç listenin her birindeki ilk ibareye (2 + 3, yariCap, ve 2) tatbik edelim. Aşağıda işaretlenen kısımlar ibarelerdir:

val a = 2 + 3
val b = yariCap
val c = 2

Her birinin bir değişene tayini mümkün olduğundan bunlar birer ibaredirler.

Şimdiye kadar gördüğümüz tek ifade tayin ifadesidir, misal val pi = 3.14. Temel kaidemizi bir tayin ifadesine tatbik etmek zihin bulandırabilir, elbette, tayin üstüne tayin kullanıyoruz (cık cık!):

val a = val pi = 3.14
Hata

Eğer bunu denerseniz, Kotlin size faydalı bir hata mesajı verir, “Bir ibare bekleniyor”. Bu hatayı görürseniz bilin ki Kotlin’in bir ibare istediği yerde bir ifade kullanmışsınızdır.

İbareler ve ifadeler arasındaki tefrik Kotlin’i talim ettiğiniz vetire müddetince mühimdir ve işbu ıstılahları bu kitapta sıkça kullanacağız.

Şimdiye kadar, halisleri de tayin etsek, mûdil ibareleri de tayin etsek sadece sayıları değişenlere tayin ettik. Lakin değişenlerin tutabileceği ziyadesiyle şeyler var! Haydi şimdi bunların bazılarını keşf edelim.

Neviler: Kıymetlerin Muhtelif Türleri

Kotlin’de, farklı değişenler muhtelif türlerden kıymetleri tutabilirler. Bir değişenin tuttuğu kıymetin türü o değişenin nevisidir.

Haydi yariCap ve pi değişenlerine tekrar bir bakalım:

var yariCap = 5.2
val pi = 3.14

İşbu halde, yariCap ve pi‘nin her ikisi de noktalı sayıları temsil ederler ki o da bir nevidir ve Kotlin onu Double olarak isimlendirir. Eğer isterseniz, Kotlin’e değişenin nevini kendiniz de bildirebilirsiniz, işte böyle:

var yariCap: Double = 5.2
val pi: Double = 3.14

Yukarıdakini yaptığımızda, nevi zahiren belirtiyoruz.

Sıklıkla, bir değişenin nevini kendiniz belirtmeniz gerekmez. O halde, Kotlin elinden gelenin en iyisini yapıp değişene tayin ettiğiniz kıymetten nevi idrak etmeğe çalışacaktır. İşbu gayrete idrak-i nevi denilir.

Hülasa, bunu yazarsak…

var yariCap = 5.2

…Kotlin’de 5.2‘nin bir Double olduğunu anlayacaktır, bu sayede ihtiyaren yariCap‘un nevi olarak Double‘ı kullanacaktır.

Double‘a ilaveten, diğer temel neviler vardır ki bilinmeleri elzemdir! Haydi onların bazılarını inceleyelim şimdi de.

Tamsayılar

Şimdiye kadar kesirli sayıları kullandık, 5.2 ve 3.14 gibi. Fakat kesirsiz bir sayı da kullanabilirsiniz, 5 ya 3 gibi.

Böyle sayılara tamsayılar denilir, ve Kotlin’de tamsayıların nevi Int diye isimlendirilir. İşte tamsayı bir değişenin ibdasına misal:

val kopeklerinAdedi: Int = 3

Hükmiler

Bazı hallerde bir değişenin aktif ya pasif, evet ya hayır, doğru ya yanlış ilh. gibi kıymetleri tutmasını istersiniz.

Ol hallerde, Boolean nevisine haiz bir değişen istersiniz ki Boolean Kotlin’de hükmi nevilerinin ismidir.

val dunyaKuredir: Boolean = true
val dunyeLevhadir: Boolean = false

Neden Boolean diye isimlendirilmiştir?

İsmini bir İngiliz olan ve 1800’lerde yaşamış Goorge Boole adlı şahıstan almıştır ki kendisi cebirin sayılar yerine doğru ve yanlış hükmilerle çalışan bir dalını kurmuştur.

Mükemmel.

Metinler

Bir değişende yazı da saklayabilirsiniz. Programcıların işbu nevi için kullandığı süslü kelime metin‘dir, çünkü ol değişen bir takım harfler, sayılar ve alametler ihtiva eder.

Harfler dizisi... sanki bir ipe dizilmişler gibi i s i z i d r e l f r a H

Kotlin’de işbu nevinin ismi String‘dir, ve bir String değişenini aşağıdaki gibi ibda edebilirsiniz:

val metin: String = "Bu bir metindir"

Diğer Neviler

Zikr edilenler değişenlerin bazı âdi nevileridir. Bu kitap müddetince, kendi nevilerimizi - sınıflar - inşa etme usullerini öğreneceğiz ki onlar dahi işbu mezkur basit nevilerin üzerine bina edilirler.

Neviler ve Tekraren Tayin Edilmeleri

Kotlin’de bir değişenin nevisi kodu yazarken tesis edilir ve bir daha değişmez (kodu tekrar yazmadıkça). Ol sebeple, buna sabit yazma deriz. Bir kere bir değişenin nevisi ilan edildi mi, harici bir neviden bir kıymet ol değişene tayin edilemez. Misalen, eğer bir Int nevisinde değişen ibda edersek, sonradan ol değişene tekraren String nevisinde bir kıymet tayin edemeyiz.

var kopeklerinAdedi: Int = 5
kopeklerinAdedi = "beş"
Hata

İstikbalde, işbu sabit yazmanın değişenlerin tekraren tayininden başka hangi meselelere sebep olduğunu göreceğiz. İlaveten bazı nevilerin nasıl alt nevileri olabileceğini de göreceğiz.

Lakin lazım gelenden ileri gidiyoruz - şimdilik, işbu babı nihayetlendirelim!

Hülasa

İşbu babda, aşağıdakileri inceledik:

  • Değişenler
    • Tekraren tayin edilebilir değişenler için var kullanılması
    • Bitebdil değişenler için val kullanılması
  • İbareler ve İfadeler
    • İbareler işlenebilir ve bir kıymetle sonuçlanır.
    • İfadeler işlenmezler ve bir kıymetle sonuçlanmazlar.
    • Bir kod parçasını bir değişene tayin etmeği deneyebilir ve onun ifade mi ibare mi olduğunu görebilirsiniz.
  • Basit Neviler
    • Sayı nevileri Double ve Int gibi.
    • Hükmi kıymetler olan doğru ve yanlış için Boolean nevisi.
    • Metin kıymetleri için String nevisi.

Şimdi değişenleri iyice tedkik ettiğimize göre, heyecan verici şekillerde işbu değişenleri bir araya getirmenin vakti geldi. Bab 2 için beklemede kalın ki ol babda Kotlin’de amelleri öğreneceğiz!

İşbu makaleyi tedkik ettikleri için Matt McKenna‘ya, Jacob Rakidzich‘e, ve Doug Smith‘e teşekkür ederiz.

Share this article:

  • Share on Twitter
  • Share on Facebook
  • Share on Reddit