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.
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:
“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.
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ı.
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.
var r
yazdığımızdar
değişeninin varlığını ilan ediyoruz demektir. Bir değişeninin varlığını ilan etmeği bir sepetin ibdası olarak tahayyül edebilirsiniz.r = 5.2
yazdığımızdar
değişenine5.2
kıymetini tayin ediyor demektir. Bir başka deyişle, 5.2` sayısını sepete koyuyoruz demektir.Haydi aşağıdaki kodun 3 temel kısmını ele alalım:
Ü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
HataBakı 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.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:
Yunan harfi olan
π
(“pay” şeklinde telaffuz edilir) değişen olanr
’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.
İşbu hallerde,
var
remzi yerineval
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
HataBu 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 hallerdevar
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ıppi
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ğerlerinir
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:
Evvelden
pi
veyariCap
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
, veyariCap
. Kotlin’de, programlama lisanlarının ekserisinde olduğu gibi, çarpmax
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
ve3.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
kerepi
kereyariCap
hesabını yapar, ve sonra, elbette, neticeyi alır vecevre
değişenine tayin eder. İşbu meselede (yarıçapın5.2
olduğu),cevre
değişeni32.656
olur.
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
, ve2
) 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
HataEğ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
vepi
değişenlerine tekrar bir bakalım:var yariCap = 5.2 val pi = 3.14
İşbu halde,
yariCap
vepi
‘nin her ikisi de noktalı sayıları temsil ederler ki o da bir nevidir ve Kotlin onuDouble
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 birDouble
olduğunu anlayacaktır, bu sayede ihtiyarenyariCap
‘un nevi olarakDouble
‘ı 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
ve3.14
gibi. Fakat kesirsiz bir sayı da kullanabilirsiniz,5
ya3
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 kiBoolean
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.
Kotlin’de işbu nevinin ismi
String
‘dir, ve birString
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 tekrarenString
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
veInt
gibi.- Hükmi kıymetler olan
doğru
veyanlış
içinBoolean
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.