<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Kotlin ile Android programlama dersleri &#8211; axisting</title>
	<atom:link href="https://axisting.com/kategori/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/feed/" rel="self" type="application/rss+xml" />
	<link>https://axisting.com</link>
	<description>Future Developer ..</description>
	<lastBuildDate>Wed, 11 Jan 2023 07:30:54 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://axisting.com/wp-content/uploads/2019/12/cropped-axisting-logooo-32x32.png</url>
	<title>Kotlin ile Android programlama dersleri &#8211; axisting</title>
	<link>https://axisting.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">155372506</site>	<item>
		<title>Kotlin Aktiviteler (Activities) &#8211; Ders 9</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-aktiviteler-activities-ders-9/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-aktiviteler-activities-ders-9/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 30 Nov 2020 13:15:42 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[aktiviteler]]></category>
		<category><![CDATA[android studio hataları düzeltme]]></category>
		<category><![CDATA[clean project rebuild project]]></category>
		<category><![CDATA[context nedir android]]></category>
		<category><![CDATA[intent nedir kotlin]]></category>
		<category><![CDATA[kotlin aktiviteler yaşam döngüsü]]></category>
		<category><![CDATA[kotlin ders 9]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=743</guid>

					<description><![CDATA[AKTİVİTE YAŞAM DÖNGÜSÜ Uygulama componentleri şu şekildedir. Activities (Aktiviteler) Services (Servisler, GPS servisler vs. ) Broadcast Receivers (Bir uygulamanın başka bir uygulamaya veya bir aktiviteden başkasına yayın yapması) Content Provider (İçerik sağlayıcılar , Uygulamadan başka bir uygulamaya veri aktarımı, Rehberden köklere erişim vb. ) Kısaca bahsettiğimiz bu componentlerden biz aktiviteleri ele alacağız. Android’in temelini oluşturan [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>AKTİVİTE YAŞAM DÖNGÜSÜ</strong></h2>



<p>Uygulama componentleri şu şekildedir.</p>



<ol class="wp-block-list" type="1"><li>Activities (Aktiviteler)</li><li>Services (Servisler, GPS servisler vs. )</li><li>Broadcast Receivers (Bir uygulamanın başka bir uygulamaya veya bir aktiviteden başkasına yayın yapması)</li><li>Content Provider (İçerik sağlayıcılar , Uygulamadan başka bir uygulamaya veri aktarımı, Rehberden köklere erişim vb. )</li></ol>



<p>Kısaca bahsettiğimiz bu componentlerden biz aktiviteleri ele alacağız. Android’in temelini oluşturan aktivitelerin işleyiş ağacı aşağıdaki gibidir.</p>



<p>Aktivite çalıştığı anda onCreate methodu harekete geçiyor. Zaten hatırlarsınız bir aktivite oluşturduğumuzda bu ister main activity ister başka bir aktivite olsun android studio önce onCreate methodunu oluşturuyor. Hatırlarsınız gerekli tüm setlemeleri burada yapıyorduk. SharedPreferences, değişkenler, initialize işlemleri… Önce bu method çalıştığı için uygulama hata vermeden burada bu işlemleri yapmak isteriz.</p>



<p>Daha sonra onStart() geliyor. Artık uygulama başladı.</p>



<p>Sonrasında onResume() var. Kullanımında onCreate() gibi kullanabiliyoruz. Bir sayfadan diğerine gittik geri döndüğümüzde eğer biz aktiviteyi sonlandırmamış isek onCreate tekrar çalışmaz. Bu gibi durumlarda onResume() içinde sayfayı yenile, tekrar yükle gibi komutlar vererek uygulamanın aksamadan yenilenmiş bir şekilde sürmesini sağlayabiliriz.</p>



<p>Aynı şekilde onDestroy()’da onCreate’ı tekrar çalışmasını sağlayabilir. Uygulamada başka bir aktiviteye geçildi veya uygulama alta alındı bu durumda biz finish() işlemini yapmamış isek uygulama kapanmaz ve döndüğünde onResume() ile çalışmaya devam eder. Bu da örneğin bir uygulamada onResume()’da bir tanımlama yapılmamışsa akış ekranının yenilenmemesi gibi sorunlara yol açabilir.</p>



<p>Bu sebeplerden ötürü bu aktivite yaşam ağacı programı kodlayan kişiler tarafından düşünülmeli&nbsp; ve ona göre hareket edilmelidir.</p>



<h2 class="wp-block-heading"><strong>CONTEXT</strong></h2>



<p>Kısaca : Android projeler içinde ne olup ne bittiğini takip etmek için bir yapıdır. Her şey birbiriyle context sayesinde haberdar olurlar. Context’leri kullanırlen uygulama hangi durumda işlem yapacak iyi anlaşılmalıdır.</p>



<p>ActivityContext’e ulaşmak için genellikle this veya ActivityContext</p>



<p>AppContext için applicationContext</p>



<p>Tabi this’in çalışması için( ActivityContext olarak) farklı bir obje içinde çalışmadığına da dikkat edilmelidir.</p>



<h2 class="wp-block-heading"><strong>INTENT İŞLEMİ</strong></h2>



<p>Intent methodu en basit haliyle anlatmak istersek kamyon görevi görmektedir. Sen kamyona bir şeyler yüklersin o bu kasasındaki elementleri başka bir yere götürür. Mesela bir aktivite başlatmak için intent kullanabiliriz. Galeriden bir resim getirmek veya başka bir uygulamadan bir şey getirmek için intent kullanabiliriz. Bu çok fazla çeşitlenebilir. Şimdi kısaca intent üzerinden diğer aktivitelere veri aktarımı üzerine konuşalım.</p>



<p>Bir buton atayalım ve bu buton diğer aktiviteye geçiş yapsın</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    fun next (view : View ) {
        var intent = Intent (applicationContext,NextActivity::class.java)
        startActivity(intent)
    }</pre>



<p>Bu haliyle diğer aktiviteye geçebiliriz. Ama içerisine veriler eklediğimizde ise şu şekilde oluyor</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    fun next (view : View ) {
        var intent = Intent (applicationContext,MainActivity::class.java)
        intent.putExtra("name" , name)
        intent.putExtra("age", age)
        startActivity(intent)
    }
</pre>



<p>NextActivity’de ise bu verileri şu şekilde alıyoruz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        val intent = intent 
        val name = intent.getStringExtra ("name")
        val age = intent.getIntExtra ("age")</pre>



<p>&nbsp;Yani mevzu bu şekilde bu daha fazla çeşitlendirilebilir. Bundan sonrası sizin hayal gücünüze bağlı olarak çeşitlenebilecek çok önemli bilgilerdir.</p>



<p>NOT : Burada intent ile aktardığımız şeyleri SharedPreference ile de aktarabilirdik. Yani doğrudan başka bir aktiviteye geçildiği gibi durumlarda intent bu görevi üstlenir sadece bu iş için özelleşmiştir. Ama uygulama genelinde mesela username ve şifre her zaman kayıt olması ve her sayfada aynı olması gerekir bu gibi durumlarda sharedpreference ile de verileri çekmek daha mantıklı olur.&nbsp; Şuan basit bir şekilde küçükte olsa işlevsel bir uygulama yapabilir duruma geldik. Bu bilgilerle şifreli bir günlük uygulaması bile yapılabilir. Girişinde kayıt olunan sonrasında şifre ile kayıtları görebildiğin bir günlük uygulaması bu ilk aklıma gelen şekli. Konular derinleştikçe çok daha fazlasını yapabileceksiniz. </p>



<h2 class="wp-block-heading"><strong>UYGULAMADA İSTENMEYEN BİR HATA ALIYORUM</strong></h2>



<p>Uygulamaya bakıyorsunuz her şey düzgün fakat bir hata alıyorsunuz. Bu benim özellikle harddiskimin arızalı oluduğunu bilmediğim zamanlarda başıma çok geliyordu. Fakat başka sebeplerden ötürü de başımıza gelir. Yapmamız gereken yukarı panelden şu adımları izlemek :</p>



<p>Build &#8211; &gt; Clean Project</p>



<p>Build &#8211; &gt; Rebuild Project</p>



<p>Eğer bu ikisi ile çözülmedi ve hala bazı kütüphaneleri falan görmediğinden kaynaklı hatalar veriyorsa</p>



<p>File -&gt; Invalidate Cache / Restart</p>



<p>Bu adımı takip etmemiz gerekir. Bu artık tamamen önbelleği silip uygulamayı tekrar başlatmak manasına gelmektedir ve çoğu zaman işe yarar. Bazen hala hatalar vermeye devam edebilir. Bazen internet bağlı olmadığından bazen ise farklı sebeplerden olabilir bu hatalar. Ama bir problem olmadığını düşünüyorsanız yukarıdaki adımlar yüzde 90 oranında hata almamanızı sağlayacaktır.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color">Sıradaki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-aktiviteler-activities-ders-9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">743</post-id>	</item>
		<item>
		<title>KOTLİN ÇEVRİMDIŞI KAYIT OLMA UYGULAMASI (OFFLİNE REGİSTER APP) &#8211; Ders 8</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-cevrimdisi-kayit-olma-uygulamasi-offline-register-app-ders-8/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-cevrimdisi-kayit-olma-uygulamasi-offline-register-app-ders-8/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Sun, 29 Nov 2020 12:18:23 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[android çevrimdışı kayıt olma uygulaması]]></category>
		<category><![CDATA[kod üzerinden kotlin anlatım]]></category>
		<category><![CDATA[kotlin ders 8]]></category>
		<category><![CDATA[kotlin ile android programlama dersleri]]></category>
		<category><![CDATA[kotlin lateinit]]></category>
		<category><![CDATA[kotlin scope]]></category>
		<category><![CDATA[kotlin sharedpreferences]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[register app kotlin]]></category>
		<category><![CDATA[sharedpreferences veri kaydetmek]]></category>
		<category><![CDATA[sharedpreferences veri okumak]]></category>
		<category><![CDATA[sharedpreferences veri silmek]]></category>
		<category><![CDATA[veri saklamak]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=738</guid>

					<description><![CDATA[Şimdi edindiğimiz bilgilerle bir kayıt işlemi yapalım. Kişiden isim, soyisim, yaş, email ve şifre değerlerini aldığımız bir yapı oluşturalım. Bunun için öncelikle layout’unu oluşturmamız lazım. EditText’ler ve buton ile yapımızı oluşturduk. Button için bir onClick methodu oluşturduk ve makePerson() ismini verdik. Bu şekilde button’a tıklandığında ekrana toast mesajı gösteren bir uygulama yapmış olduk. Eğer buraya [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Şimdi edindiğimiz bilgilerle bir kayıt işlemi yapalım. Kişiden isim, soyisim, yaş, email ve şifre değerlerini aldığımız bir yapı oluşturalım. Bunun için öncelikle layout’unu oluşturmamız lazım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?xml version="1.0" encoding="utf-8"?>
&lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    &lt;EditText
        android:id="@+id/emailText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="36dp"
        android:ems="10"
        android:hint="Email"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/ageText" />

    &lt;EditText
        android:id="@+id/passwordText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="36dp"
        android:ems="10"
        android:hint="Şifre"
        android:inputType="textPersonName|textPassword"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/emailText" />

    &lt;EditText
        android:id="@+id/ageText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="36dp"
        android:ems="10"
        android:hint="Yaşınız"
        android:inputType="number|textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/surnameText" />

    &lt;EditText
        android:id="@+id/surnameText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="36dp"
        android:ems="10"
        android:hint="Soyisminiz"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/nameText" />

    &lt;EditText
        android:id="@+id/nameText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="36dp"
        android:ems="10"
        android:hint="İsminiz"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    &lt;Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="48dp"
        android:text="KAYIT OL"
        android:onClick="makePerson"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/passwordText" />
&lt;/androidx.constraintlayout.widget.ConstraintLayout></pre>



<p>EditText’ler ve buton ile yapımızı oluşturduk. Button için bir onClick methodu oluşturduk ve makePerson() ismini verdik.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    fun makePerson(view : View) {
        val name = nameText.text.toString()
        val surname = surnameText.text.toString()
        val age : Int? = ageText.text.toString().toIntOrNull()  //kişi burada yazı girebilir. Aslında ageText’i xml dosyasında tanımlarken number tipinde de tanımlayabilirdik. Veya bu yöntemi kullanarak kotlin dosyasında da güvenliğini sağlayabiliriz.
        val email = emailText.text.toString()
        val password = passwordText.text.toString()
        if (name.equals("") || surname.equals("") || age == null || email.equals("") || password.equals("")){
            Toast.makeText (applicationContext, "Tüm alanları doldurmalısın" , Toast.LENGTH_SHORT).show()
        }else
        {
            Toast.makeText (applicationContext, "İsim : $name Soyad : $surname Yaş : $age Email : $email Şifre : $password" , Toast.LENGTH_LONG).show()
        }

    }</pre>



<p>Bu şekilde button’a tıklandığında ekrana toast mesajı gösteren bir uygulama yapmış olduk. Eğer buraya kadar hatasız yaptıysak devam edebiliriz.</p>



<p>Şimdi hem bu uygulamaya devam ederken hem de örneksiz çok anlatılamayacak scope ve sharedpreferences konularını bu uygulama ile işleyelim.</p>



<h2 class="wp-block-heading">Scope</h2>



<p>Scope java’da kotlin’de veya başka bir dilde hep benzer şekilde çalışır. İki scope arasındaki kodlara, değişkenlere başka scope içinden doğrudan erişilemez.</p>



<p>Alt scope&#8217;ta ise erişilibilir</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
/*
Kod, Değişkenler… 
*/
{
/*
ALT SCOPE
Erişim var 
*/
}
}
{
/*
FARKLI SCOPE
Erişim yok
*/
}
</pre>



<h2 class="wp-block-heading">Kotlin Lateinit</h2>



<p>Önceki derste de kullanmıştım. Lateinit bir değişkeni şimdi tanımlıyorum değer atamasını sonra yapacağım demek oluyor. Yani mesela</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Var myString : String = “”</pre>



<p>yapmak yerine </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">lateinit var myString : String</pre>



<p>İkisinin farkı ortada aslında. Yukarıdaki boşlukta olsa bir string değer atıyorsun. Hafızada o boşluk değerini string halde tutuyor. Alttaki laneinit ile kullanılan örnekte bunu daha sonradan tanımlayacağını söylüyorsun. Bu dışarıdan bir bilgi olabilir , veritabınından alınacak bir bilgi olabilir veya herhangi bir değişken veya sabit olabilir ama bunu sonradan tanımlayacağını şimdi initialize etmeyeceğini belirtiyorsun. Lateinit kotlini javadan ayıran ve güvenli kod yazılmasını sağlayan en önemli yapılardan biridir.</p>



<h2 class="wp-block-heading">Kotlin Veri Kaydetmek, Silmek ve Getirmek (<strong>SharedPreferences</strong>)</h2>



<p>Yukarıdaki çevrimdışı kayıt örneğinde tamam verileri aldık ve ekrana Toast mesajı olarak bastırdık. Ama uygulamadan çıkıp tekrar girdiğimizde bu veriler bir yerde gösterilmiyor veya bir yere kaydedilmedi aslında. Bu tarz uygulamalarda kullanıcı bilgilerini tuttuğumuz bir yapı olan sharedPreferences’e gelin yakından bakalım</p>



<h2 class="wp-block-heading">Verileri Saklamak (SharedPreferences)</h2>



<p>SharedPreferences aslında bir sınıf. Sınıf olduğu içinde öncelikle sharedPref objesi oluşturmamız lazım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">private lateinit var sharedPref : SharedPreferences // MainActivity altında
sharedPref = this.getSharedPreferences("com.axisting.offlineregisterapp", Context.MODE_PRIVATE) // onCreate altında</pre>



<p><strong>NOT :</strong> Burada MODE_PRIVATE ile bu uygulamada sharedPref ile kaydedilecek verilere sadece bu uygulamadan erişileceğini söylüyoruz. Erişimini kısıtlıyoruz. Kısıtlamadığımız durumda ise aynı cihazdan diğer uygulamalardan dahi erişilebilir veriler ekleyebiliriz. Şuan için bunu istemiyoruz.</p>



<p>Nesneyi oluşturduk. Artık cihazda &#8220;com.axisting.offlineregisterapp&#8221; altında bu bilgiler saklanabilir hale geldi.(Uygulama ismiyle kayıt etmek kodun okunurluğunu çoğu zaman için artırır.)</p>



<p>Şimdi örneğimiz doğrultusunda buttona tıklanıldığında gelişecek aksiyonlar içerisine bunları sharedpref içinde kayıt edelim.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">            sharedPref.edit().putString ("name", name).apply()
            sharedPref.edit().putString("surname", surname).apply()
            sharedPref.edit().putInt("age", age).apply()
            sharedPref.edit().putString("email", email).apply()
            sharedPref.edit().putString("password", password).apply()</pre>



<p>Şekildeki gibi önce anahtar değer sonrasında ise kayıt edilecek girdi değeri ekliyoruz. Yani cihaz hafızasında örnek verecek olursak şu şekilde kayıt oluyor</p>



<p>Name : volkan</p>



<p>Surname : demir</p>



<p>Age : 26</p>



<p>Email : <a href="mailto:info@axisting.com">info@axisting.com</a></p>



<p>Password : 123456</p>



<h2 class="wp-block-heading"><strong>Verileri Okumak, Verileri Getirmek</strong> (SharedPreferences)</h2>



<p>Verileri istediğimiz zaman okuyabiliriz artık. Bunun için uygulamanın her yerinden erişmek adına sharedPreferencesi önce global tanımlayalım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">private lateinit var sharedPref : SharedPreferences // mainactivity altı
sharedPref = this.getSharedPreferences("com.axisting.offlineregisterapp", Context.MODE_PRIVATE) // oncreate altı</pre>



<p>Verileri getirirken uygulamanın hangi konumunda olursak olalım önce SharedPreferences nesnesi oluşturmamız lazım. </p>



<p>Bu kısımları eksiksiz yaptığımız durumda istediğimiz aktiviteden veya classtan artık verileri okuyabiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">            val sharedName = sharedPref.getString("name","-1000")
            System.out.println(sharedName)
</pre>



<p>Bu şekilde kolaylıkla verileri okuyabiliriz. Bunu kontrollerle zenginleştirmek artık size kalmış. </p>



<h2 class="wp-block-heading">Verileri Silmek (SharedPreferences)</h2>



<p>Örneğin uygulamada kaydettiğimiz bu verileri bir delete butonu aracılığıyla silelim. Delete isminde bir button oluşturup delete isminde bir onClick methodu tanımlayalım. Bu delete() methodu şu şekilde olurdu.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> fun deletePerson(view : View) {
        val sharedName = sharedPref.getString("name","-100")
        val sharedSurname = sharedPref.getString("surname","-100")
        val sharedAge = sharedPref.getInt("age",-100)
        val sharedEmail = sharedPref.getString("email","-100")
        val sharedPassword = sharedPref.getString("password","-100")
        if (!sharedName.equals("-100")){
            sharedPref.edit().remove("name").apply()
        }
        if (!sharedSurname.equals("-100")){
            sharedPref.edit().remove("surname").apply()
        }
        if (sharedAge != -100){
            sharedPref.edit().remove("age").apply()
        }
        if (!sharedEmail.equals("-100")){
            sharedPref.edit().remove("email").apply()
        }
        if (!sharedPassword.equals("-100")){
            sharedPref.edit().remove("password").apply()
        }

        Toast.makeText(applicationContext, "Paylaşılan Veriler Silindi..", Toast.LENGTH_SHORT).show()



    }</pre>



<p><strong>Not :</strong> Bu şekilde offline kayıt olma uygulamasının tamamını doldurabiliriz. Ben tam halini github hesabımda da paylaşacağım.</p>



<p>Bir sonraki derste aktiviteler ve yaşam döngülerinden bahsedelim.</p>



<p><strong>Github :</strong><a href=" https://github.com/axisting/OfflineRegisterProjec"><strong> </strong>https://github.com/axisting/OfflineRegisterProjec</a>t</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-aktiviteler-activities-ders-9/">Sıradaki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-cevrimdisi-kayit-olma-uygulamasi-offline-register-app-ders-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">738</post-id>	</item>
		<item>
		<title>Kotlin Sınıflarda Yapıcı Method (Constructor) &#8211; Ders 7</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Sat, 28 Nov 2020 12:37:59 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[internal]]></category>
		<category><![CDATA[kotlin class]]></category>
		<category><![CDATA[kotlin class parametre istemek]]></category>
		<category><![CDATA[kotlin constructor]]></category>
		<category><![CDATA[Kotlin erişilebilirlik seviyeleri]]></category>
		<category><![CDATA[kotlin güvenli kod yazma]]></category>
		<category><![CDATA[kotlin nullability]]></category>
		<category><![CDATA[kotlin sınıflar]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[protected]]></category>
		<category><![CDATA[public]]></category>
		<category><![CDATA[visibility modifiers]]></category>
		<category><![CDATA[yapıcı method]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=732</guid>

					<description><![CDATA[Geçen ders classların yalın halini ele aldık. Şimdi biraz daha iç yapısından, daha farklı kullanımlarından bahsedeceğiz. Parametre İstemek Parametre isteme durumu Java programlama dilinden biraz daha farklı. Java’da class ile aynı isimde bir constructor sınıfı oluşturmak zorunlu idi. Yani siz oluşturmasanız bile java kendiliğinden arka planda bu fonksiyonu oluşturuyordu. Kotlin de bu durum hem biraz [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Geçen ders classların yalın halini ele aldık. Şimdi biraz daha iç yapısından, daha farklı kullanımlarından bahsedeceğiz.</p>



<h2 class="wp-block-heading">Parametre İstemek</h2>



<p>Parametre isteme durumu Java programlama dilinden biraz daha farklı. Java’da class ile aynı isimde bir constructor sınıfı oluşturmak zorunlu idi. Yani siz oluşturmasanız bile java kendiliğinden arka planda bu fonksiyonu oluşturuyordu. Kotlin de bu durum hem biraz farklı hem de aynı aslında. Kotlinde constructor isminde bir constructor sınıfı oluşturuyoruz. Ve içerisinde aynı javadaki gibi atamalarını yapıyoruz. Örneğin yeni bir person classı oluşturalım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Person {

    var age  : Int
    var name : String
    var job : String

    constructor (ageInput : Int , nameInput : String , jobInput : String  ) {
        this.age = ageInput
        this.name = nameInput
        this.job = jobInput
    }
}</pre>



<p>Şimdi oncreate içinde parametreleriyle birlikte çağıralım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val volkan : Person = Person (20 , "Volkan", "Bilgisayar Mühendisi")
        System.out.println(volkan.name)
    }</pre>



<p>Logcat&#8217;te göründüğü üzere &#8220;Volkan&#8221; yazacaktır. Person sınıfının bir nesnesi olan volkan nesnesinin name parametresini çağırmış olduk. (volkan.name ile)</p>



<p>Class tarafında ayrıca şöyle bir kolaylıkta mevcut. Class constructor methodunu direk classın yanında parantezde de oluşturabiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Class Person ( var age : Int , var name : String , var job : String) {}</pre>



<p>Görüldüğü gibi bir class’ı böyle tek satırda yazabildik. Yani constructor’ını class parantezleri içerisinde tanımladık.</p>



<h2 class="wp-block-heading">Kotlin Erişilebilirlik Seviyeleri (Visibility Modifiers)</h2>



<p><strong>Private : </strong>Sadece tanımlandığı sınıfta kullanılabilir</p>



<p><strong>Protected : </strong>private + kalıtım aldığı sınıfta kullanılabilir.</p>



<p><strong>İnternal :</strong> Bütün projeden ulaşılır. Ekstra kütüphanelerden vs. ulaşılamaz.</p>



<p><strong>Public : </strong>Her yerden ulaşılabilir. Ayrıca default değerdir. &nbsp;Herhangi bir tanımlama yapıldığında derleyici otomatik public atar.</p>



<p>Bu şekilde javada 3 olan erişilebilirlik seviyesi kotlinde 4 olarak karşımıza çıkmaktadır. Private&#8217;ın kendi class&#8217;ına özel olduğunu göstermek için küçük bir örnek yapalım. Person class içerisine </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">private  var hairColor : String = ""</pre>



<p>onCreate içerisinde bunu setlemeye çalıştığımızda </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">volkan.hairColor = "Black"</pre>



<p>HATA alacağız yani direkt olarak haircolor&#8217;u görmeyecek ve kırmızı olarak hatalı görünecektir. Ama başında eklediğimiz erişilebilirlik seviyesi olan private kaldırırsak public olacağından erişime açık olacaktır ve hata vermeyecektir.</p>



<p><strong>NOT : </strong>Şimdi o zaman ben neden private kullanayım ki diyenler olabilir. Bir değişkeni private yaparak diğer classlardan doğrudan erişimini kaldırmış oluruz. Ama dolaylı olarak setter getter fonksiyonları ile erişim sağlayabiliriz ve kodumuz hem daha okunabilir hem de daha güvenli kod haline getirmiş oluruz.</p>



<h2 class="wp-block-heading">Kotlin <strong>Nullability</strong></h2>



<p>Güvenli kod yazmak programlama dillerinde son derece önemlidir. Bir uygulama yazdığınızda bunun kullanıcaya herhangi bir crash , kesinti gibi problemler vermesini istemeyiz. Örnek verecek olursak bir değişken veya sabit initialize edilmez ise uygulama hata verip kendini kapatabilir.</p>



<p>Nullable veya non-null tipler vardır. Herhangi bir şeyi nullable yapmak için (?) kullanılır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        var myString : String? = null
        System.out.println (myString)
</pre>



<p>Ekranda manalı bir şey yazdırmaz. Boş manasına gelen null değerini döndürür. Ama hata da vermez. Kullanıcı uygulamayı kullanmaya rahatlıkla devam edebilir. ? kullanmasaydık hata verebilir. ? sayesinde myString hem null değer alabilir hem de String değer alabileceğini belirtmiş olduk.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> var myAge : Int? = null

 System.out.println(myAge!! * 20)</pre>



<p>Burada uygulama bize myAge’in değerinin null olabileceğini söylüyor. Bunu tekrar düzenlemem konusunda beni uyarıyor. Eğer ben kesin olarak değer geleceğinden eminsem (!!) ekleyerek kesinliği belirtiyorum. Tabi bunun kötü bir yanı var eğer değer gelmez ise yani null bir değer gelirse uygulama hata verir. Uygulama crash olur. Şimdi daha güvenli kod yazmak üzerinde biraz daha derine inelim.</p>



<h2 class="wp-block-heading"><strong>Kotlin Güvenli Kod Yazma</strong></h2>



<p>Kotlin’de güvenli kod yazmanın anahtarı nasıl olacaktır. Eğer null değer kullanırsak null harici zorunlu bir değer isteyen işlemde uygulamamız patlıyordu. Null vermezsekte bir değer tanımlamadığımız için uygulama patlayabiliyordu. Güvenli kod yazmanın anahtarı kontrol etmektir. Bunu değer var mı yok mu şeklinde düşünebiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        var myNumber : Int? = null
        if (myNumber != null) {
            System.out.println (myNumber*10)
        }else {
            System.out.println("myNumber is null")
        }</pre>



<p>Bir diğer yöntem ise safe call yöntemidir. Yukarıdaki ile benzer mantıkta</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">System.out.println(myNumber?.compareTo(2))</pre>



<p>Burada ise eğer denerseniz myNumber null&#8217;a eşitlendiği durumda işlem sonucunun null döndürdüğünü ama uygulamanın hata vermediğini görürsünüz.</p>



<p>3. yöntem ise <strong>Elvis</strong> yöntemidir. Bu yöntem ise tek satırda bu işlemi yap ya da belirlenen anlamsız bir değere ata mantığıdır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        val myResult =myNumber?.compareTo(2)?: -100
        System.out.println(myResult)
</pre>



<p>Elvis işleminde de ben null dönsün istemiyorum yerine başka bir şey dönsün istiyorsam (bu örnek için -100)  elvis kullanmış oluyorum.</p>



<p>Bu kodda da görüldüğü gibi kodun derleme hatası alma olasılığını ortadan kaldırıyoruz. Böylelikle güvenli bir kod yazmış oluyoruz.</p>



<p>Tüm sonuçların ekran görüntüsü bu şekilde  </p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="983" height="274" data-attachment-id="734" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/attachment/kotlin-classlar-2-ciktilar/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" data-orig-size="983,274" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kotlin-classlar-2-çıktılar" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-300x84.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" src="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" alt="" class="wp-image-734" srcset="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png 983w, https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-300x84.png 300w, https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-768x214.png 768w" sizes="(max-width: 983px) 100vw, 983px" /></figure>



<p><strong>Github :</strong> <a href="https://github.com/axisting/KotlinSiniflar">https://github.com/axisting/KotlinSiniflar</a></p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-cevrimdisi-kayit-olma-uygulamasi-offline-register-app-ders-8/">Sonraki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">732</post-id>	</item>
		<item>
		<title>Kotlin Sınıflar (Class) &#8211; Ders 6</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 16 Nov 2020 15:24:48 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[axisting kotlin dersleri]]></category>
		<category><![CDATA[kotlin class oluşturma]]></category>
		<category><![CDATA[kotlin classlar]]></category>
		<category><![CDATA[kotlin dersi 6]]></category>
		<category><![CDATA[kotlin şarkıcı sınıfı oluşturma]]></category>
		<category><![CDATA[kotlin sınıflar]]></category>
		<category><![CDATA[örnek]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=726</guid>

					<description><![CDATA[Sınıf değişkenleri, sabitleri, fonksiyonları içinde bulunduran bir yapıdır. Kotlinde de Java&#8217;daki gibi bütün yazılan kodlar bir sınıf içinde bulunmalıdır. Classların bir çok farklı kullanımı var fakat şu an en temel şeklinde anlatmaya çalışacağım. Android Studio&#8217;da bir proje oluşturduğumuzda ilk olarak MainActivity&#8217;nin oluştuğunu görmüştük. MainActivity burada bir sınıf görevindedir. Yanında : (iki nokta ile birlikte) AppCompatActivity [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Sınıf değişkenleri, sabitleri, fonksiyonları içinde bulunduran bir yapıdır. Kotlinde de Java&#8217;daki gibi bütün yazılan kodlar bir sınıf içinde bulunmalıdır. Classların bir çok farklı kullanımı var fakat şu an en temel şeklinde anlatmaya çalışacağım. </p>



<p>Android Studio&#8217;da bir proje oluşturduğumuzda ilk olarak MainActivity&#8217;nin oluştuğunu görmüştük. MainActivity burada bir sınıf görevindedir. Yanında  : (iki nokta ile birlikte) AppCompatActivity ise başka bir class&#8217;tır. Fakat arada 2 nokta olduğu için bu class&#8217;tan miras alındığını göstermektedir. Yani AppCompatActivity&#8217;nin kullanılmaya uygun fonksiyon ve değişkenlerini bu yeni class&#8217;ta kullanabilir demektir.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class MainActivity : AppCompatActivity() { /*.....*/}</pre>



<p><strong>NOT :</strong> AppCompactActivity&#8217;i miras almasından dolayı MainActivity class olduğu gibi android dilinde artık bir Activity özelliği de taşımış olmaktadır. </p>



<h2 class="wp-block-heading">Class Oluşturma</h2>



<p>Class oluştururken android studio&#8217;da File &#8211; New- Kotlin File/Class yolunu izleyerek oluşturabiliriz. Oluştururken ismini yazmamız gerekiyor. Burası örnek yapmak adına Singer() olsun. Şarkıcıların bilgilerini içeren basit bir class yapalım. </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Singer {

    var name  = ""
    var age = 0
    var type = ""
}</pre>



<p>Böyle bir class oluşturduk. Şarkıcının adını yaşını ve hangi türde söylediğini  yazacağız. Fakat buraları boş bırakmadık. Şuan için buralara bir değer yazmamız gerekiyor. Ama daha sonradan tamamen sonradan tanımlı şekilde nasıl olacak onu da gösteririz. Şimdi bunu MainActivity class&#8217;ı bir nesne olarak çağırıp nesnenin değerlerini tanımlayalım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var tarkan = Singer()
        tarkan.name = "Tarkan"
        tarkan.age = 48
        tarkan.type = "Pop"

        System.out.println(tarkan.name + "/" + tarkan.age + "/" + tarkan.type)
        val sagopa = Singer()
        sagopa.name = "Sagopa Kajmer"
        sagopa.age = 40
        sagopa.type = "Rap"

        System.out.println( sagopa.name + "/" + sagopa.age + "/" + sagopa.type)



    }
}</pre>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="151" data-attachment-id="727" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/attachment/logcat-classlar/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar.png" data-orig-size="1311,193" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="logcat-classlar" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-300x44.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png" src="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png" alt="" class="wp-image-727" srcset="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png 1024w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-300x44.png 300w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-768x113.png 768w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar.png 1311w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Göründüğü gibi bir class&#8217;ın bir den çok nesnesinin kullanımı da bu şekilde oluyor.</p>



<p>Şimdilik burada bırakalım bir sonraki derste constructor (yapıcı fonksiyon) ve class&#8217;tan parametre isteme konularına değinelim</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/">Sonraki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">726</post-id>	</item>
		<item>
		<title>Kotlin Fonksiyonlar (Functions) &#8211; Ders 5</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Wed, 04 Nov 2020 14:17:55 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[kotlin çarpma işlemi]]></category>
		<category><![CDATA[kotlin değer döndürmek]]></category>
		<category><![CDATA[kotlin ders 5]]></category>
		<category><![CDATA[kotlin fonksiyonlar]]></category>
		<category><![CDATA[kotlin fonksiyonlar ve android görünümler]]></category>
		<category><![CDATA[kotlin girdi almak]]></category>
		<category><![CDATA[kotlin input]]></category>
		<category><![CDATA[kotlin return]]></category>
		<category><![CDATA[kotlin toplama işlemi]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=717</guid>

					<description><![CDATA[Fonksiyonların kullanılması için temelde 3 sebep vardır. 1 &#8211; Yeniden kullanılabilirlik 2- Düzenli kod yazmak (Okunabilirlik) 3- İstenilen her yerden çağırılabilmek Bu her programlama dilinde aynıdır. Kullanım şekilleri (syntax) farklı olabilir ama her zaman bu 3 sebep temelinde tüm programlarda fonksiyonlar ile bir çok kez karşılaşırız. Fonksiyonun kotlinde kullanımı ise aşağıdaki şekildedir. Uygulamanın herhangi bir [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Fonksiyonların kullanılması için temelde 3 sebep vardır.</p>



<p>1 &#8211; Yeniden kullanılabilirlik</p>



<p>2- Düzenli kod yazmak (Okunabilirlik)</p>



<p>3- İstenilen her yerden çağırılabilmek</p>



<p>Bu her programlama dilinde aynıdır. Kullanım şekilleri (syntax) farklı olabilir ama her zaman bu 3 sebep temelinde tüm programlarda fonksiyonlar ile bir çok kez karşılaşırız. Fonksiyonun kotlinde kullanımı ise aşağıdaki şekildedir.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">fun test(){
   println("Merhaba")
}</pre>



<p>Uygulamanın herhangi bir yerinden artık test fonksiyonu çağırıldığında içinde yazılan kodu çalıştırır. Yani bu örnek için terminale &#8216;Merhaba&#8217; yazdırır.</p>



<h2 class="wp-block-heading">Fonksiyonlarda Girdi Almak (input)</h2>



<p>Fonksiyonların kullanımında genellikle fonksiyon değer veya değerler ister. Örneğin uygulamada birden fazla kez toplama yapmak istiyorsunuz her seferinde bu tanımlamayı yapmadan tek bir fonksiyon tanımlaması ve bu fonksiyonun çağırımıyla bu yapılabilir. Şöyle ki :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">fun main() {
    mySum(5,4)
}

fun mySum ( a: Int , b: Int){
   println (a + b)
}</pre>



<p>Main fonksiyonu uygulama derlenirken ilk bakılan kısmıydı. Uygulama derlenirken main içine geliyor ve mySum() fonksiyonunu görüyor. Hemen oraya dallanıyor uygulama ve mySum()&#8217;un içi çalıştırılıyor bu sefer.Orada ise girdi olarak alınan a ve b değerlerinin toplanıldığı belirtilmiş. Bu örnek için 5 ve 4 ü topluyor ve sonuç olarak terminale 9 yazdırıyor.</p>



<p><strong>NOT :</strong> Fonksiyonların tipleri vardır. Buradaki fonksiyonların tipleri aksi belirtilmediği için Unit tipindedir. (java&#8217;daki kullanımı ise void şeklindeydi) Yani boş bir şey döndürmeyen tiptir. </p>



<h2 class="wp-block-heading">Fonksiyonlarda Değer Döndürmek (return)</h2>



<p>Şimdi ise fonksiyonların değer döndürdüğü kısımları düşünelim. Değer döndürmek bir işlem yaptın ve bir sonuç almak istiyorsun. Ama uygulamada bu sonucu aldıktan sonra bunun üzerinde işlem yapmak istiyorsun. O zaman return kullanmamız gerekir. Bir çarpma örneği yapacak olursak : </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">fun main() {
    var result = myMultiply(5,4)
    println ("result:  $result")
}

fun myMultiply ( x: Int , y: Int) : Int{
   return x*y
}</pre>



<p>Burada myMultiply fonksiyonu parantezden sonra int tanımlaması ile aslında bu fonksiyonun int döndürdüğünü belirtiyoruz. Sonucu 20 olarak döndürmüşüz bunu da bir değere yazdırdık. Artık bu değeri main fonksiyonda her yerde kullanabiliriz. Burada ekrana yazdırmışız ve 5*4 ün çarpımını 20 olarak bulduk.</p>



<p> Bu diğerine göre biraz daha uzun duruyor olabilir ama bunu birden fazla kullanma ihtimaliniz olduğu için her zaman en kısa ve sade yoldur.</p>



<h2 class="wp-block-heading">Fonksiyonlar ve Android&#8217;de Görünümler</h2>



<p>Android&#8217;de proje oluşturduğumuzda java klasörü altında bir MainActivity oluşur. Bununla birlikte layout altında activity_main xml dosyası da oluşur.  Layout tarafı görünümleri tasarladığımız xml kodlarının yer aldığı yer iken,  java klasörü altında oluşan kısım ise kotlin kodlarımızın yer aldığı kısımdır ve arka planda çalışma biçimlerinin yazıldığı kısımdır.</p>



<p>Şimdi activity main altında bir button oluşturuyoruz ve içine bir onclick methodu tanımlayacağımızı belirtiyoruz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?xml version="1.0" encoding="utf-8"?>
&lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    &lt;Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="buttonClicked"
        android:text="TIKLA"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
&lt;/androidx.constraintlayout.widget.ConstraintLayout></pre>



<p>Burada sadece eklediğimiz kısım button kısmı aslında. Daha sonrasında MainActivity&#8217;de onClick fonksiyonunu tanımlıyoruz. Böylece button tıklanıldığında bu fonksiyon çalıştırılacak.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">package com.axisting.functions

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun buttonClicked (view : View){
        Toast.makeText(applicationContext, "BUTON TIKLANDI " , Toast.LENGTH_LONG).show()
    }
}
</pre>



<p>Bu şekilde tanımlamasını yapıyoruz. </p>



<p><strong>NOT : </strong>Burada yazılan kodun tamamını attım ama bir dahaki kısımlarda böyle yapmayacağım. İlk kez gösterdiğim için öyle yaptım. Kodun tamamını merak edenler içinde Github&#8217;a bunları yükleyeceğim yine oradan erişebilirsiniz.</p>



<p>Velhasılıkelam sonucunda butona tıkladığımızda şöyle bir görüntü ortaya çıkıyor. </p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-fonksiyonlar-functions-ders-5\/"}' class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img decoding="async" width="391" height="601" data-attachment-id="720" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/attachment/tikla-button-kotlin/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin.png" data-orig-size="391,601" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="tıkla-button-kotlin" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin-195x300.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin.png" src="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin.png" alt="" data-id="720" data-full-url="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin.png" data-link="https://axisting.com/?attachment_id=720" class="wp-image-720" srcset="https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin.png 391w, https://axisting.com/wp-content/uploads/2020/11/tıkla-button-kotlin-195x300.png 195w" sizes="(max-width: 391px) 100vw, 391px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="387" height="609" data-attachment-id="721" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/attachment/tiklanmis-button-kotlin/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin.png" data-orig-size="387,609" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="tıklanmış-button-kotlin" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin-191x300.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin.png" src="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin.png" alt="" data-id="721" data-full-url="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin.png" data-link="https://axisting.com/?attachment_id=721" class="wp-image-721" srcset="https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin.png 387w, https://axisting.com/wp-content/uploads/2020/11/tıklanmış-button-kotlin-191x300.png 191w" sizes="auto, (max-width: 387px) 100vw, 387px" /></figure></li></ul></figure>



<p>Bir sonraki ders class&#8217;lar. Görüşmek üzere</p>



<p><strong>Github : </strong>https://github.com/axisting/Functions</p>



<div data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-fonksiyonlar-functions-ders-5\/"}' class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-fonksiyonlar-functions-ders-5\/"}' class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/">Sonraki Ders</a></div>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">717</post-id>	</item>
		<item>
		<title>Kotlin Döngüler (Loops) &#8211; Ders 4</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 14 Sep 2020 19:44:02 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[continue ve break kullanımı]]></category>
		<category><![CDATA[kotlin asal sayıları bulma]]></category>
		<category><![CDATA[kotlin break kullanımı]]></category>
		<category><![CDATA[kotlin continue kullanımı]]></category>
		<category><![CDATA[kotlin ders 4]]></category>
		<category><![CDATA[kotlin döngüler]]></category>
		<category><![CDATA[kotlin for döngüsü]]></category>
		<category><![CDATA[kotlin for kullanım şekilleri]]></category>
		<category><![CDATA[kotlin while döngüsü]]></category>
		<category><![CDATA[ücretsiz kotlin dersleri 4]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=705</guid>

					<description><![CDATA[Kotlin döngüleri hemen hemen diğer programlama dillerindeki döngülere benzer. Esasen ise kendisi gibi yüksek seviye programlama dillerinden olan Python&#8216;a benzer. Döngüler, genel itibariyle tekrar eden işlemleri gerçekleştirmek üzere vardırlar. Örneğin; 1&#8217;den 10&#8217;a kadar programa yazdırmak için döngüleri kullanırız. Döngüleri iyi kavramak programlama dillerinin temelini iyi anlama konusunda son derece önemlidir. for Döngüsü for&#8216;un kullanımı Burada [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>Kotlin</strong> döngüleri hemen hemen diğer programlama dillerindeki döngülere benzer. Esasen ise kendisi gibi yüksek seviye programlama dillerinden olan <strong>Python</strong>&#8216;a benzer. </p>



<p>Döngüler, genel itibariyle tekrar eden işlemleri gerçekleştirmek üzere vardırlar. <strong>Örneğin</strong>; 1&#8217;den 10&#8217;a kadar programa yazdırmak için döngüleri kullanırız. Döngüleri iyi kavramak programlama dillerinin temelini iyi anlama konusunda son derece önemlidir.</p>



<h2 class="wp-block-heading">for Döngüsü</h2>



<p><strong>for</strong>&#8216;un kullanımı </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myArrayOfNumbers = arrayOf (12, 15 , 18, 21)
for (k in myArrayOfNumbers)  {
    val z = k /3*5
    println(z)
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="796" height="125" data-attachment-id="706" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/for-dongusu-cikti/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı.png" data-orig-size="796,125" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="for-döngüsü-çıktı" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı-300x47.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı.png" src="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı.png" alt="" class="wp-image-706" srcset="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı.png 796w, https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı-300x47.png 300w, https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-çıktı-768x121.png 768w" sizes="auto, (max-width: 796px) 100vw, 796px" /></figure>



<p>Burada <strong>for</strong> döngüsünün bir dizi içinde sırayla geziniyor. Tek tek kendisi arama yapıyor. Çok daha az kod yazıyoruz. <strong>Java, C++</strong> gibi dillere kıyasla <strong>for</strong> içinde tanımlamalarımız vs. çok daha az. </p>



<p><strong>for</strong> burada ilk elemandan son elemana kadar her bir elemanı k içerisine koyuyor. Sonrasında her bir iterasyonda k &#8216; üzerinde işlemler yapılarak z&#8217;ye atanıyor ve z ekrana yazdırılıyor.</p>



<p>Eğer indisler üzerinden işlem yapmak isteseydik (eski usül ama lazım olabilir);</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myArrayOfNumbers = arrayOf (12, 15 , 18, 21)

for (i in myArrayOfNumbers.indices) {
    val qz = myArrayOfNumbers[i] /3*5
    println(qz)
}</pre>



<p>Sonuç yukarıdaki ile aynı olacaktır. </p>



<p><strong>Kotlin</strong>&#8216;in bir diğer güzelliği ise bazı işlemleri çok daha kısaltabiliyor olmamız.</p>



<p>Örneğin b değişkenine 0-9 arası sayıları yazdırdığımız bir uygulamayı yapmak için </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (b in 0..9) {
    println(b)
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="893" height="251" data-attachment-id="707" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/for-dongusu-0dan-9-a-yazdirma/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma.png" data-orig-size="893,251" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="for-döngüsü-0dan-9-a-yazdırma" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma-300x84.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma.png" src="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma.png" alt="" class="wp-image-707" srcset="https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma.png 893w, https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma-300x84.png 300w, https://axisting.com/wp-content/uploads/2020/09/for-döngüsü-0dan-9-a-yazdırma-768x216.png 768w" sizes="auto, (max-width: 893px) 100vw, 893px" /></figure>



<ul class="wp-block-list"><li>Eğer 0&#8217;dan 9&#8217;a 9 dahil olmadan yazdırmak isteseydik </li><li>0,1,2,3,4,5,6,7,8</li></ul>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (b in 0 until 9) {
println(b)
}</pre>



<ul class="wp-block-list"><li>Eğer 0&#8217;dan 9 a kadar ikişer ikişer saymasını isteseydik </li><li>0,2,4,6,8</li></ul>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (b in 0 until 9 step 2 ) {
println(b)
}</pre>



<ul class="wp-block-list"><li>9&#8217;dan geriye 3&#8217;er 3&#8217;er saysaydık </li><li>9,6,3,0</li></ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (b in 9 downTo 0 step 3 ) {
println(b)
}</pre>



<p>Bu örnekler bu şekilde çoğaltılabilir ben son olarak foreach&#8217;i göstermek istiyorum</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myArrayOfNumbers = arrayOf (12, 15 , 18, 21)

myArrayOfNumbers. forEach  {
	println(it/3*5)
}</pre>



<p>Bu da yine ilk işlemimizle aynı sonucu verecektir. Burada sonucu herhangi bir değişkene atamıyoruz. Otomatik olarak &#8220;it&#8221; nesnesinin içinde tutuluyor. Bizde böylece kullanabiliyoruz.</p>



<h2 class="wp-block-heading">while Döngüsü</h2>



<p><strong>While</strong>&#8216;da <strong>for</strong>&#8216;dan çok farklı bir şey yapmıyor esasında. Fakat for&#8217;un aksine tek bir syntax düzeni var.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var j = 0

while (j &lt;3 ) {
    println(j)
    j++
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="875" height="122" data-attachment-id="708" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/while-dongusu-saydirma-ciktisi/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı.png" data-orig-size="875,122" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="while-döngüsü-saydırma-çıktısı" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı-300x42.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı.png" src="https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı.png" alt="" class="wp-image-708" srcset="https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı.png 875w, https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı-300x42.png 300w, https://axisting.com/wp-content/uploads/2020/09/while-döngüsü-saydırma-çıktısı-768x107.png 768w" sizes="auto, (max-width: 875px) 100vw, 875px" /></figure>



<p>Burada da 0&#8217;dan 3&#8217;e kadar 3 dahil olmayacak şekilde yazdırdık.</p>



<h3 class="wp-block-heading">continue ve break</h3>



<p><strong>continue </strong>ve <strong>break</strong> döngü değiller fakat döngüler ile doğrudan alakalı anahtar kelimelerdir. <strong>continue</strong> döngünün iterasyonunu bir sonrakine geçirirken, <strong>break </strong>döngüyü tamamen sonlandırır. Yani 1&#8217;den 10 a kadar saydığımızı düşünürsek 5&#8217;te bir karşılaştırma yapıp continue kullanırsak 5 hariç tüm sayıları yazdırır.(1,2,3,4,6,7,8,9,10) break kullanırsak 5 ve sonrasını yazdırmaz. (1,2,3,4)</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (x in 0..10) {
    if (x == 5 ) {
        continue
    }
    println(x)
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="866" height="240" data-attachment-id="709" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/continue-kotlin/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/continue-kotlin.png" data-orig-size="866,240" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="continue-kotlin" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/continue-kotlin-300x83.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/continue-kotlin.png" src="https://axisting.com/wp-content/uploads/2020/09/continue-kotlin.png" alt="" class="wp-image-709" srcset="https://axisting.com/wp-content/uploads/2020/09/continue-kotlin.png 866w, https://axisting.com/wp-content/uploads/2020/09/continue-kotlin-300x83.png 300w, https://axisting.com/wp-content/uploads/2020/09/continue-kotlin-768x213.png 768w" sizes="auto, (max-width: 866px) 100vw, 866px" /></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">for (x in 0..10) {
    if (x == 5 ) {
        break
    }
    println(x)
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="732" height="136" data-attachment-id="710" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/break-kotlin/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/break-kotlin.png" data-orig-size="732,136" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="break-kotlin" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/break-kotlin-300x56.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/break-kotlin.png" src="https://axisting.com/wp-content/uploads/2020/09/break-kotlin.png" alt="" class="wp-image-710" srcset="https://axisting.com/wp-content/uploads/2020/09/break-kotlin.png 732w, https://axisting.com/wp-content/uploads/2020/09/break-kotlin-300x56.png 300w" sizes="auto, (max-width: 732px) 100vw, 732px" /></figure>



<p><strong>break </strong>ve <strong>continue </strong>kullanımını da öğrendik. Son bir detay var continue ile ilgili. <strong>@ </strong>kullanımı. <strong>@</strong>  <strong>continue</strong> ile kullanıldığında döngüyü istediğimiz bir yerden devam ettirmemizi sağlıyor.</p>



<p>Asal sayıları yazdırmakla ilgili şuana kadar öğrendiklerimizle güzel bir örnek yapalım. Bu örnekte <strong>2&#8217;den 100&#8217;e kadar asal sayıları</strong> <strong>yazdıran kotlin programını</strong> kodlayalım </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">outer@ for (n in 2..100) {
    for (d in 2 until n) {
        if (n % d == 0) continue@outer
    }
    println("$n asaldır")
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="853" height="533" data-attachment-id="711" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/attachment/2den-100-e-kadar-asal-sayilar-kotlin/" data-orig-file="https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin.png" data-orig-size="853,533" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2den-100-e-kadar-asal-sayılar-kotlin" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin-300x187.png" data-large-file="https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin.png" src="https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin.png" alt="" class="wp-image-711" srcset="https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin.png 853w, https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin-300x187.png 300w, https://axisting.com/wp-content/uploads/2020/09/2den-100-e-kadar-asal-sayılar-kotlin-768x480.png 768w" sizes="auto, (max-width: 853px) 100vw, 853px" /></figure>



<p>Kod&#8217;da <strong>outer </strong>yerine istediğiniz bir zıplama noktası yazabilirsiniz. Evrensel olarak <strong>outer </strong>kullanmak ve <strong>ingilizce </strong>kullanmak kodun okunabilirliği açısından olumlu olacaktır.</p>



<p>Evet şimdilik bu kadar.  Bir sonraki derste görüşmek üzere.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-fonksiyonlar-functions-ders-5/">Sonraki Ders</a></div>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">705</post-id>	</item>
		<item>
		<title>Kotlin Kontroller ve Operatörler &#8211; Ders 3</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 20 Apr 2020 22:13:34 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[kotlin ders 3]]></category>
		<category><![CDATA[kotlin dersleri]]></category>
		<category><![CDATA[kotlin if kontrolleri]]></category>
		<category><![CDATA[kotlin ile android programlama]]></category>
		<category><![CDATA[kotlin operatörler]]></category>
		<category><![CDATA[kotlin türkçe ders anlatımı 3]]></category>
		<category><![CDATA[kotlin when kontrolü]]></category>
		<category><![CDATA[kotlinde güvenli kod yazma]]></category>
		<category><![CDATA[kotlinde operatörler ve kontroller]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=689</guid>

					<description><![CDATA[Bu bölümde kontrolleri işleyeceğiz. Tabi öncesinde kısa bir operatörlere değinmek lazım. Operatörler Toplama, çıkarma, çarpma, bölme işlemlerini yapmak için matematikte herkesin bildiği operatörler vardır (+,-,*,/). Bunların haricinde kıyaslama yapmak ve eşitlikleri göstermek için de operatörler vardır. Kontrolleri yaparken özellikle bunları kullanıyoruz. &#8220;Hava güneşli mi?&#8221; veya &#8220;Hız sabit mi?&#8221; gibi kıyaslamalar günlük hayatta yapabiliyoruz. Bunları programlamaya [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Bu bölümde kontrolleri işleyeceğiz. Tabi öncesinde kısa bir operatörlere değinmek lazım. </p>



<h2 class="wp-block-heading">Operatörler</h2>



<p>Toplama, çıkarma, çarpma, bölme işlemlerini yapmak için matematikte herkesin bildiği operatörler vardır (+,-,*,/). Bunların haricinde kıyaslama yapmak ve eşitlikleri göstermek için de operatörler vardır. Kontrolleri yaparken özellikle bunları kullanıyoruz. &#8220;Hava güneşli mi?&#8221; veya &#8220;Hız sabit mi?&#8221; gibi kıyaslamalar günlük hayatta yapabiliyoruz. Bunları programlamaya dökmek için de aşağıdaki operatörleri kullanıyoruz.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex"><ul data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-kontroller-ve-operatorler-ders-3\/"}' class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="283" height="469" data-attachment-id="690" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/attachment/kotlin-operator-axisting/" data-orig-file="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting.png" data-orig-size="283,469" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kotlin-operator-axisting" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting-181x300.png" data-large-file="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting.png" src="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting.png" alt="" data-id="690" data-full-url="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting.png" data-link="https://axisting.com/?attachment_id=690" class="wp-image-690" srcset="https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting.png 283w, https://axisting.com/wp-content/uploads/2020/04/kotlin-operator-axisting-181x300.png 181w" sizes="auto, (max-width: 283px) 100vw, 283px" /></figure></li></ul></figure>



<p>Kotlinde toplama (+), çıkarma (-), çarpma (*) ve bölme (/) normal matematik operatörleri ile aynı işlevde kullanılıyor. Eşittir işareti eşitlik göstergesi. Büyüktür (&gt;) ve küçüktür (&lt;) işlemleri ise sayılar için büyüktür küçüktür işlemine denk gelmektedir. </p>



<p>(!) işareti ise değil anlamına gelmektedir. a != b işlemi : a eşit değildir b  anlamına gelmektedir.</p>



<p>En önemli operatörler başlangıç için bunlar. İstisna birkaç kullanımda ise </p>



<p>a++ -&gt; a&#8217;yı 1 artır</p>



<p>++a -&gt; a&#8217;yı 1 artır</p>



<p>a&#8211; -&gt; a&#8217;yı 1 azalt</p>



<p>&#8211;a -&gt; a&#8217;yı 1 azalt</p>



<p>(+)&#8217;nın önce gelmesi ve sonra gelmesi farketmeksizin aynı sonuçları verdiğini yazdık. ( (-)&#8217;de kendi özelinde aynı şekilde). Şimdi durum şu. Eğer o satırda o an bir işlem yapılacaksa, örneğin, ekrana bir şey yazdırılacak ve bunun artırılmış şekilde yazılmasını istiyorsak ++a kullanıyoruz. Eğer o satırda değil sonraki satırda artırılmasını ekranda ise o anki sayıyı görmek istiyorsak a++ kullanıyoruz. (-) içinde benzer işlemler geçerli. Biraz kafa karıştırıcı hemen bir örnekle üzerinden geçelim</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    var a = 5
    System.out.println(a++)
    System.out.println (a)
    System.out.println ("------------------")
    var b = 5
    System.out.println(++b)
    System.out.println (b)
    System.out.println ("------------------")
    var c = 5
    c++
    System.out.println(c)
    var d = 5
    System.out.println ("------------------")
    ++c
    System.out.println(d)
    System.out.println ("------------------")
    </pre>



<p>Bu kodun çıktısını sizde dikkatlice incelerseniz ne anlatmak istediğimi anlayacaksınız.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="697" height="235" data-attachment-id="691" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/attachment/cikti-operatorler/" data-orig-file="https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler.png" data-orig-size="697,235" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Çıktı-operatörler" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler-300x101.png" data-large-file="https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler.png" src="https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler.png" alt="" class="wp-image-691" srcset="https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler.png 697w, https://axisting.com/wp-content/uploads/2020/04/Çıktı-operatörler-300x101.png 300w" sizes="auto, (max-width: 697px) 100vw, 697px" /></figure>



<p>Sizde aynı mantıkla çıkarma işlemini (-) değerlendirebilirsiniz.</p>



<h2 class="wp-block-heading">Kontroller</h2>



<h3 class="wp-block-heading">if Kontrolleri</h3>



<p><strong>if</strong> İngilizce&#8217;den Türkçe&#8217;ye <strong>eğer</strong> olarak çevirilebilir. Eğer doğruysa bunu yap. Değilse şunu yap mantığı var. Önemli bir işin varsa dışarı çık. Değilse #evdekal gibi 🙂 </p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var work : Boolean = false

fun main() {
	// work = true ise işim var false ise işim yok
    work = true 

    workControl()
    System.out.println("-------------------")
    workControl()

    
}
fun workControl() {
   	if(work ==true) {
        System.out.println ("İşimi halletmek için dışarı çıktım")
        work = false // işimi hallettim artık work = false
    }else {
        System.out.println("Dışarıda işim yok #evdekal ")
    }
}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="720" height="145" data-attachment-id="692" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/attachment/if-kontrol-axisting/" data-orig-file="https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting.png" data-orig-size="720,145" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="if-kontrol-axisting" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting-300x60.png" data-large-file="https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting.png" src="https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting.png" alt="" class="wp-image-692" srcset="https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting.png 720w, https://axisting.com/wp-content/uploads/2020/04/if-kontrol-axisting-300x60.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /></figure>



<p>Bu kotlin kod satırlarında anlatılan şudur. İlk olarak main&#8217;e bakıyoruz. Mainde work değişkeni true olarak setleniyor. Kişinin dışarıda işi var. İşi var mı? kontrolü için workControl() fonksiyonuna yönlendiriyor. Burada work kontrol ediliyor işi olduğu için dışarı çıkıyor. Ve işini hallettiğini belirtmek için work değişkeni false&#8217;a setleniyor. Tekrar control çalıştırıldığında ise bu sefer #evdekal mesajı görünüyor. </p>



<p><strong>if &#8211; else if &#8211; else</strong> olarak if kontrolleri çoğaltılabilir. Daha fazla dallanma,  ayrıştırma işlemi yapılabilir. Fakat bu tip durumlar için gayet basit bir kontrole geçelim.</p>



<h3 class="wp-block-heading">Switch &#8211; When Kontrolleri</h3>



<p>Çok fazla if else durumları olduğunda <strong>when </strong>kullanılabilir. Daha düzenli ve daha anlaşılır bir görünüm sağlayabilir. </p>



<p>When kontrolünü anlatmak içinde ayların kaçıncı aya karşılık geldiğini anlamamızı sağlayan bir kotlin programı yazalım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">fun main() {
    val monthNumber = 10
    var mountString : String? = null
    //var mountString = ""
    when (monthNumber){
        1 -> mountString = "Ocak"
        2 -> mountString = "Şubat"
        3 -> mountString = "Mart"
        4 -> mountString = "Nisan"
        5 -> mountString = "Mayıs"
        6 -> mountString = "Haziran"
        7 -> mountString = "Temmuz"
        8 -> mountString = "Ağustos"
        9 -> mountString = "Eylül"
        10 -> mountString = "Ekim"
        11 -> mountString = "Kasım"
        12 -> mountString = "Aralık"
        else ->  mountString = "Miladi takvim 12 tane ay ile sınırlıdır."       
    }
    System.out.println(mountString)
}
</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="675" height="94" data-attachment-id="693" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/attachment/ekim-kotlin-cikti-axisting/" data-orig-file="https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting.png" data-orig-size="675,94" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ekim-kotlin-çıktı-axisting" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting-300x42.png" data-large-file="https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting.png" src="https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting.png" alt="" class="wp-image-693" srcset="https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting.png 675w, https://axisting.com/wp-content/uploads/2020/04/ekim-kotlin-çıktı-axisting-300x42.png 300w" sizes="auto, (max-width: 675px) 100vw, 675px" /></figure>



<p>When ile görüldüğü üzere birçok kontrolü içeren düzenli bir yapı elde ettik.  Mount number kullanıcıdan istenilerek hangi aya denk geldiği kolaylıkla bulunabilir. mountNumber&#8217;in kontrolünü when ile yaparak istenilen ay mountString&#8217;e setleniyor. Sonunda da ekrana yazdırılıyor</p>



<p>Bu kotlin kodlarında;</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    var mountString : String? = null
    //var mountString = ""</pre>



<p>görüldüğü üzere alttaki satırı kullanmadık üstteki olanı kullandık. Bunun sebebi güvenli kod yazmaktan ötürü gelmektedir. Ben burada anlatırken kolay olması açısından alttakini kullabilirdim. Ama bu sisteme alışmak açısından güvenli kod yazmaya, sonradan tanımlamaya, initialize etmeye alışmak için bunları yavaş yavaş yazmaya başlayalım.</p>



<p></p>



<p>Kaynaklar : <a href="https://kotlinlang.org/">https://kotlinlang.org/</a></p>



<p></p>



<div data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-kontroller-ve-operatorler-ders-3\/"}' class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/axisting.com\/bilgisayar\/yazilim\/android\/kotlin\/kotlin-ile-android-programlama-dersleri\/kotlin-kontroller-ve-operatorler-ders-3\/"}' class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-donguler-loops-ders-4/">Sıradaki Ders</a></div>
</div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">689</post-id>	</item>
		<item>
		<title>Kotlin Koleksiyonlar (Collections) &#8211; Ders 2</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-koleksiyonlar-collections-ders-2/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-koleksiyonlar-collections-ders-2/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Sat, 15 Feb 2020 21:47:43 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[kotlin array list set map]]></category>
		<category><![CDATA[kotlin collections]]></category>
		<category><![CDATA[kotlin diziler]]></category>
		<category><![CDATA[kotlin diziler ve listeler nedir]]></category>
		<category><![CDATA[kotlin hashmap nedir]]></category>
		<category><![CDATA[kotlin hashset]]></category>
		<category><![CDATA[kotlin koleksiyonlar]]></category>
		<category><![CDATA[kotlin koleksiyonlar hakkında]]></category>
		<category><![CDATA[kotlin listeler]]></category>
		<category><![CDATA[kotlin map]]></category>
		<category><![CDATA[kotlin örneklerle anlatım]]></category>
		<category><![CDATA[kotlin set]]></category>
		<category><![CDATA[kotlin statik ve dinamik diziler]]></category>
		<guid isPermaLink="false">http://axisting.com/?p=592</guid>

					<description><![CDATA[Bu bölümde veri gruplarını yani koleksiyonları inceleyeceğiz. Diziler (arrays), listeler (list), tekrarlı olmayan listeler &#8220;set&#8221;, bir tanımlayıcı ve değerin olduğu listeler &#8220;map&#8221; inceleyeceğiz. Diziler (Arrays) Kotlinde diziler, statik yani büyüklüğü baştan belirlenmiş veri topluluklarına denir. Boyutunun 3 olduğunu görürsünüz ekranda. Şimdi burada 0. (sıfırıncı) indis &#8220;Volkan&#8221;, 1. &#8220;Oguzhan&#8221; , 2. &#8220;Hasan&#8221; &#8216;dır. Burada indislerin sıfırdan [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Bu bölümde veri gruplarını yani koleksiyonları inceleyeceğiz. Diziler (arrays), listeler (list), tekrarlı olmayan listeler &#8220;set&#8221;, bir tanımlayıcı ve değerin olduğu listeler &#8220;map&#8221; inceleyeceğiz. </p>



<h2 class="wp-block-heading">Diziler (Arrays)</h2>



<p>Kotlinde diziler, statik yani büyüklüğü baştan belirlenmiş veri topluluklarına denir. </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myBrothers = arrayOf ("Volkan", "Oguzhan", "Hasan" )
println(myBrothers.size())</pre>



<p>Boyutunun 3 olduğunu görürsünüz ekranda. Şimdi burada 0. (sıfırıncı) indis &#8220;Volkan&#8221;, 1. &#8220;Oguzhan&#8221; , 2. &#8220;Hasan&#8221; &#8216;dır. Burada indislerin sıfırdan başlanıldığı unutulmamalıdır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">myBrothers.set(0, Furkan) //0. indisi furkan yapar
myBrothers.sort()  //sıralama yapar
println(myBrothers[1]) </pre>



<p>Bunu yaptığımda ekranda &#8220;Hasan&#8221;&#8216;ı gösterir. Çünkü alfabetik olarak sıralandığında dizinin 1. indisindeki eleman (yani 2. elemanı) &#8220;Hasan&#8221; olur.</p>



<p>Peki diziye olmayan bir sıralamayı eklemeye çalışsaydım ne olacaktı ? </p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">myBrothers[3] = "Ümit"
println(myBrothers[3])</pre>



<p>hata mesajı alırdım. Çünkü bu statik başlangıçta boyutu belirlenen bir dizi. Ben buna sondan ekleme yapamam. Yapacağım eklemelerde bir önceki değeri silip üzerine yazılacaktır. Eğer deneyenler olursa : ArrayIndexOutOfBoundsException hatası alındığını görecektir. Uygulama çökecektir. Bu tamamen istenmeyen bir durumdur. Bu sebepten boyutu bilinen dizilerde boyutunca işlem yapılmalıdır.</p>



<h2 class="wp-block-heading">Listeler (Lists)</h2>



<p>Dinamik bir dizi yapısıdır diyebiliriz. Sonradan eklemeler, baştan ekleme vs. yapılabilir. Hadi bir anime listesi yapalım ve bu animeler stringlerden oluşacağı için tanımlamasını yaparak atama işlemi yapalım bu sefer.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    val myAnime = arrayListOf &lt;String>()
    myAnime.add("One Piece")
    myAnime.add("Shokugeki no Souma")
    myAnime.add("Bleach")
    myAnime.add("Fairy Tail")
    
    println("first anime : ${myAnime[0]}")
</pre>



<p>Şimdi burada görüldüğü gibi en baştan bir atama yapmamıza gerek yok dizilerdeki gibi. Bu bize fazla fazla esneklik kazandırıyor zaten. İstersek başta da tanımlamalar yapabilirdik. Fakat yine ekleme, çıkarma her türlü yapardık. Bu bize bir esneklik, dinamiklik kazandırıyor. Örneğin, bir veritabanından verileri çekiyorsun ve ne kadar veri geldiğini bilmiyorsun. Bu durumda arrayList kullanmamız gerektiği çok açıktır.</p>



<p><strong>NOT : </strong>Ayrıca burada listelerden bağımsız bir detay daha var. Son satıra bakarsanız tırnak işareti içerisinde 0. elemanı çağırma işlemi yapmışız. Java&#8217;dan farklı olarak Kotlin&#8217;de String kısmın içine ${} ile istediğimiz kodları yazabiliriz. $ kendinden sonraki {} içindeki kısımı tırnak içerisinin dışındaymış gibi çalıştıracaktır.</p>



<h2 class="wp-block-heading">SET</h2>



<p>Set ise kısaca tekrarlı olmayan liste diyebiliriz. Küme mantığı vardır. Hani siz nasıl bir kümeye aynı değerden eklemezsiniz. Set de aynı şekildedir. Kısa bir tanımlama yapalım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val citiesList = setOf ("Ankara","Ankara","İstanbul" ,"Antalya","Çorum" )
println(citiesList.size())</pre>



<p>4 sonucunu verecektir. Tamamen büyük-küçük ayrımı yaparak aynı olan değerleri 1 değer olarak tutar. Bu durumda 1. indis doğal olarak &#8220;İstanbul &#8221; olacaktır.</p>



<h3 class="wp-block-heading">HashSet</h3>



<p>HashSet Set ile aynı aslında. HashSet Setin özelliklerini taşır. Bunu çağırırken bir nesne olarak değil de doğrudan bir sınıf olarak çağırıp oluşturuyoruz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myNumbers = HashSet &lt;Int> (1,2,3,1,4,5,3)
println(myNumbers.size())</pre>



<p>5 değerini ekranda yazdıracaktır.</p>



<h2 class="wp-block-heading">MAP</h2>



<p>Bir anahtar ve bir değerin olduğu topluluklardır diyebiliriz. Mesela bir öğrenci listesi yapıyorsun. Bu listede ise öğrenci no ve öğrenci adını tutmak istiyorsun. Bu tam sana göre. Öğrenci numarası yani anahtar tamamen benzersiz olmalıdır. Map içinde aynısı geçerlidir. Anahtar kısmı tamamen diğerlerinden her zaman farklı olmalıdır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val studentMap = mapOf&lt;Int, String>(19 to "Volkan")
println(studentMap[19])
</pre>



<p>Ekranda &#8220;Volkan&#8221; yazdırır. Aynı dizideki gibi sonradan veri eklenmez. Eklemek için hashmap oluşturmalıyız.</p>



<h3 class="wp-block-heading">HashMap</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var studentHashMap = hashMapOf &lt;Int, String>() 
studentHashMap.put (1, "Ceyda")
studentHashMap.put (2, "Selim")
println (studentHashMap[1])</pre>



<p>ekranda &#8220;Ceyda&#8221; yazdıracaktır. Aynı tanımlama şu şekildede yapılabilirdi.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var studentHashMap = hashMapOf  &lt;Int, String>(1 to "Ceyda", 2 to "Selim") 
println(studentHashMap[1])
</pre>



<p>Koleksiyonlarda bu kadardı. İyi Çalışmalar </p>



<p></p>



<p>Kaynaklar : <a href="https://kotlinlang.org/docs/tutorials/">https://kotlinlang.org/docs/tutorials/</a></p>



<p>Medium : https://medium.com/@dvolkan2001/kotlin-koleksiyonlar-collections-ders-2-3ab74e3f3444</p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-kontroller-ve-operatorler-ders-3/">Sıradaki Ders</a></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-koleksiyonlar-collections-ders-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">592</post-id>	</item>
		<item>
		<title>Kotlin Veri Tipleri &#8211; Ders 1</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Thu, 13 Feb 2020 20:20:27 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[kotlin boolean veri tipi]]></category>
		<category><![CDATA[kotlin byte short int long veri tipleri]]></category>
		<category><![CDATA[kotlin defining ve initialize]]></category>
		<category><![CDATA[kotlin değişkenler]]></category>
		<category><![CDATA[kotlin dersleri 1]]></category>
		<category><![CDATA[kotlin ile android programlama]]></category>
		<category><![CDATA[kotlin kesirli sayılar float ve double]]></category>
		<category><![CDATA[kotlin sabitler]]></category>
		<category><![CDATA[kotlin string veri tipi]]></category>
		<category><![CDATA[kotlin tam sayılar integer]]></category>
		<category><![CDATA[kotlin veri tipi dönüşümleri]]></category>
		<category><![CDATA[kotlin veri tipleri]]></category>
		<guid isPermaLink="false">http://axisting.com/?p=575</guid>

					<description><![CDATA[Değişkenler ve sabitler, programlama dillerinin en temelleridir. Bunlara esasında veri tipleri denir. Değişkenler (Variables) Değişkenler adı üzerinde sonradan değişebilen veri tipleridir. Örnek: yazıldığında 6 sonucunu verir. Görüldüğü gibi x başlangıçta 5 değeriydi sonrasında ise bu değer 6 olarak değiştirilebildi. Sabitler (Constants) Sabitler ise adı üzerinde sonradan değiştirilemeyen veri tipleridir. Uygulamamızda hiç değişmesini istemediğimiz veriler var [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Değişkenler ve sabitler, programlama dillerinin en temelleridir. Bunlara esasında veri tipleri denir.</p>



<h2 class="wp-block-heading">Değişkenler (Variables)</h2>



<p>Değişkenler adı üzerinde sonradan değişebilen veri tipleridir. Örnek:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var x = 5
x = 6 
println(x)</pre>



<p>yazıldığında 6 sonucunu verir. Görüldüğü gibi x başlangıçta 5 değeriydi sonrasında ise bu değer 6 olarak değiştirilebildi. </p>



<h2 class="wp-block-heading">Sabitler (Constants)</h2>



<p>Sabitler ise adı üzerinde  sonradan değiştirilemeyen veri tipleridir. Uygulamamızda hiç değişmesini istemediğimiz veriler var ise sabitler kullanılır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val name = "Volkan Demir"
name = "Hasan"</pre>



<p>şeklinde name&#8217;i değiştirmeye çalışırsam hata gösterir ve bunu yapamayacağımız konusunda bizi uyarır. Eğer hala kullanmak istersek &#8220;val&#8221; tanımlamısını &#8220;var&#8221; olarak değiştirmemiz gerekir.</p>



<h2 class="wp-block-heading">Kotlin Veri Tipleri 2:</h2>



<p>Bu kısım ise değişken ve sabitler ile birlikte kullanılan veri tiplerini içerecektir.</p>



<h3 class="wp-block-heading">Tam Sayılar (Integer)</h3>



<p>Sadece tam sayı tipi olan değişken veya sabitleri temsil eder. Sasece tam sayılar !</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myNumber : Int      //Defining : tanımlama kısmı
myNumber = 3   //Initialize : atama kısmı </pre>



<p>myNumber sabitini 3 olarak atadık. bunu tek satırda 2 farklı gösterimle de tanımlayabilirdik.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myNumber : Int = 3    </pre>



<p>şeklinde tanımlama ve atama kısmını tek bir satırda yazabilirdim veya </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myNumber = 3</pre>



<p>şeklinde tanımlama yapmadan atama yaparsam da Kotlin bunun Int olduğunu anlayacaktır. Örnek: </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var number : Int = 19
println(number / 2)</pre>



<p>9 yazdırır. Tam sayılar da işlem yaptığı için gerçekte 9.5 olan sonuç kesirli kısmı almayarak 9 yazdırır.</p>



<h3 class="wp-block-heading">Kesirli Sayılar (Float, Double)</h3>



<p>Burada ise işin içine kesirli sayılar da girer. Bir önceki örnekteki gibi durumlar ile karşılaşıldığında double veya float kullanmak mantıklıdır. Gelin pi sayısını tanımlayalım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val pi  = 3.14 </pre>



<p>veya </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val pi : Double = 3.14</pre>



<p>&#8220;pi&#8221; sayısı her zaman sabittir mesela bu sebepten val kullanırız. Bunun haricinde bu tanımlamayı yaptığımızda pi artık double bir sabittir. Float için : </p>



<p>val pi : Float = 3.14f</p>



<p>sonuna &#8220;f&#8221; karekteri eklenerek sayının float olduğu belirtilebilir.</p>



<h3 class="wp-block-heading">String</h3>



<p>Text olarak saklanmak istenildiğinde veriler String kullanılır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myName : String = "Volkan Demir"
val myNick = "Axisting"</pre>



<p>şeklindedir. Tabi Stringler üzerinde birçok farklı method kullanabilirsiniz. bunları yapmak için değişkenin ismi sonra nokta (.) kullanılarak işimize yarayan methodları kullanabiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val myNick = "axisting"
myNick.captalize()
println(myNick)</pre>



<p>captalize methodu ilk karakteri büyük yapmaya yarar. Burada logcat ekranında &#8220;Axisting&#8221; yazısını görürüz.</p>



<h3 class="wp-block-heading">Boolean</h3>



<p>Sadece 2 farklı değer içerir. Bunlar &#8220;doğru&#8221; veya &#8220;yanlış&#8221;a karşılık gelen &#8220;true&#8221; ve &#8220;false&#8221;&#8216;dur</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var myBoolean : Boolean = false
myBoolean = true</pre>



<h3 class="wp-block-heading">Dönüştürmek (Conversion)</h3>



<p>Bu verileri birbirine dönüştürmek isteyebiliriz. Mesela veritabanından bir öğrenci no&#8217;yu çekerken bu değer String olarak çekiyor olabiliriz. Bunu integer&#8217;a dönüştürmek isteyebiliriz. Bir başka örnekte yine int olarak aldığımız bir işlemde matematiksel işlemler yaptırmak isteyebiliriz ve kesirli sayılarla uğraşmamız gerekebilir. O zaman da integer değişkeni double&#8217;a çevirmemiz gerekir.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var x = 23
var y = 4
println (x/y)
println (x.toDouble()/y)</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="958" height="120" data-attachment-id="588" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/attachment/kotlin-dersleri-veri-tipleri/" data-orig-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri-.png" data-orig-size="958,120" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kotlin-dersleri-veri-tipleri-" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri--300x38.png" data-large-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri-.png" src="http://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri-.png" alt="" class="wp-image-588" srcset="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri-.png 958w, https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri--300x38.png 300w, https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-veri-tipleri--768x96.png 768w" sizes="auto, (max-width: 958px) 100vw, 958px" /></figure>



<p>Görüldüğü üzere ilk yazdırma da 5, ikinci yazdırmada 5.75 çıktı sonuç. Bunun sebebi x&#8217;i double yapıp işleme koyduğumuzda double ve integer işleme girdiğinde sonuç daha kapsamlı olan double&#8217;ın tipinde yazdırıldı. </p>



<p>Şimdi de String bir değişkeni integer bir sayıya çevirelim.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">val a = "19"
val aInteger = a.toInt()
println(aInteger)</pre>



<p>sonuç &#8220;19&#8221; olacaktır. Bu özellikte ayrıca veritabanından çekilen verilerde oldukça kullanışlıdır. Yalnız eğer içerde rakamlar harici dönüştürülemeyecek karakterler bulunursa (a,b,c, &gt;, ? vb.) o zaman uygulama hata verecektir.</p>



<p>Şimdi bunların haricinde long, byte, short gibi veri tipleri de vardır. Bunların int ile kıyaslamasının verildiği tabloyu aşağıda vererek dersi bitirelim. Farkları tablo üzerinden incelenebilir.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="655" height="160" data-attachment-id="589" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/attachment/kotlin-dersleri-int-short-long-byte/" data-orig-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte.png" data-orig-size="655,160" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kotlin-dersleri-int-short-long-byte" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte-300x73.png" data-large-file="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte.png" src="http://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte.png" alt="" class="wp-image-589" srcset="https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte.png 655w, https://axisting.com/wp-content/uploads/2020/02/kotlin-dersleri-int-short-long-byte-300x73.png 300w" sizes="auto, (max-width: 655px) 100vw, 655px" /></figure>



<p>kısaca kullanımları ise :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    val a : Long = 12131312
    val b : Short = 12
    val myByte : Byte = 7
    
    println(a)
    println(b)
    println(myByte)</pre>



<p>Kaynaklar 1: <a href="https://developer.android.com/kotlin/learn">https://developer.android.com/kotlin/learn</a></p>



<p>Kaynaklar 2: <a href="https://kotlinlang.org/docs/reference/basic-types.html">https://kotlinlang.org/docs/reference/basic-types.html</a></p>



<p>Kodlarınızı test etmek için Kotlin IDE :  Android Studio veya <a href="https://kotlinlang.org/">https://kotlinlang.org/</a></p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="http://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-koleksiyonlar-collections-ders-2/">Sonraki Ders</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">575</post-id>	</item>
		<item>
		<title>Kotlin Dersleri &#8211; Kotlin ile Android Programlama</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-dersleri-kotlin-ile-android-programlama/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-dersleri-kotlin-ile-android-programlama/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Thu, 13 Feb 2020 20:20:07 +0000</pubDate>
				<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[giriş merhaba kotlin]]></category>
		<category><![CDATA[kotlin camel case yazımı]]></category>
		<category><![CDATA[kotlin dersleri]]></category>
		<category><![CDATA[kotlin ile android programlama]]></category>
		<category><![CDATA[kotlin kodlama standartları]]></category>
		<category><![CDATA[kotlin merhaba dünya]]></category>
		<category><![CDATA[kotlin println kod satırı]]></category>
		<category><![CDATA[kotlin snake case yazımı]]></category>
		<category><![CDATA[kotlin yazım kuralları]]></category>
		<category><![CDATA[kotlin yorum satırı]]></category>
		<guid isPermaLink="false">http://axisting.com/?p=569</guid>

					<description><![CDATA[Giriş : Merhaba Kotlin Bu kısımda Kotlin derslerimi ve çalışmalarımı kayıt alıp kamuya açık bir alanda paylaşmak istedim. Normalde deftere not alarak ve kod çalışmalarımı kendi harddisk&#8217;imde depoluyordum. Eskiden beri aslında çalışmalarımı hep blogumda paylaşmak istemiştim fakat bilirsiniz üşengeçlik vs. bunu hep erteliyordum ve geleneksel yöntemlerimden şaşmıyordum. Artık bu çalışmaların hem insanlara faydalı olması açısından, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Giriş : Merhaba Kotlin </h2>



<p>Bu kısımda Kotlin derslerimi ve çalışmalarımı kayıt alıp kamuya açık bir alanda paylaşmak istedim. Normalde deftere not alarak ve kod çalışmalarımı kendi harddisk&#8217;imde depoluyordum. Eskiden beri aslında çalışmalarımı hep blogumda paylaşmak istemiştim fakat bilirsiniz üşengeçlik vs. bunu hep erteliyordum ve geleneksel yöntemlerimden şaşmıyordum. Artık bu çalışmaların hem insanlara faydalı olması açısından, hem de internet ortamında bunları ölümsüzleştirmek ve kolayca ulaşılabilir olmasını istediğimden ötürü paylaşıyorum. </p>



<h3 class="wp-block-heading">Kotlin Yazım Kuralları ve Kodlama Standartları</h3>



<p>Burada kısaca değineceğim konu bir kodlama standardı aslında. Öncelikle Kotlin&#8217;de Java&#8217;dan farklı olarak &#8220;;&#8221; (noktalı virgül) yok. Bu beni çok mutlu etti. Eğer &#8220;Enter&#8221; &#8216;e basıp bir sonraki satıra geçiyorsanız o satır bitmiş oluyor. (isterseniz ; kullanabilirsiniz fakat alt satıra geçiyorsanız buna gerek yok)</p>



<p>Kodlama standardı temelde 2&#8217;ye ayrılır. Camel Case ve Snake Case. Yazım standartları şirketten şirkete, yazılımcıdan yazılımcıya farklılık gösterir.</p>



<p><strong>Camel Case</strong> yazım şekli değişkenler üzerinden örnek verecek olursak:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var sayfaninSonuNumarasi = 11</pre>



<p>şeklindedir.</p>



<p><strong>Snake Case</strong> ise :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var sayfanin_sonu_numarasi = 11</pre>



<p>şeklindedir. Bir kodlama standardı ortaya koymak her proje için tekrar kullanılabilirlik, anlaşılırlık, kolaylık gibi faydalar sağlamaktadır.</p>



<p>Ayrıca yine açıklayıcı yorum satırı kullanmak projeye anlaşılırlık katacaktır. Yorum satırının kullanımı ise &#8220;//&#8221; iki slash sonrasında yazılan yazılarla gerçekleşir</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var name = "Volkan"  //isim tanımlaması</pre>



<h3 class="wp-block-heading">Kotlin : Merhaba Dünya</h3>



<p>Gelin ekrana yorum satırı ile birlikte yazılmış bir &#8220;Merhaba Dünya&#8221; yazdıralım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">println("Merhaba Dünya")
//logcat'e Merhaba Dünya yazdırır</pre>



<p>logcat yazılımcıların gördüğü fakat uygulama kullanıcılarının görmediği bir alandır. Burada uygulama derlenirken olan tüm işlemler sıralanır. Burada şuan için aradığımızı bulabilmek için logcat ekranındaki arama kısmına System.out.println yazmamız test amaçlı yeterlidir. </p>



<p>logcat, uygulamanın testinde, runtime hatalarında veya herhangi merak edilen işlemin incelenmesi için bakılan penceredir.</p>



<h2 class="wp-block-heading">Kotlin kodlarını nasıl test ederim? </h2>



<p>&#8220;Tamam, ben bu kodları yazdım ama nasıl test edeceğim?&#8221; bunun için Google&#8217;ın kendi geliştirmiş olduğu bir uygulama olan Android Studio var. Android Studio ile hem test edebilir hem de simülasyon telefon üzerinden bakabilirsin. Çok fazla güzel özelliği bulunan Android Studio&#8217;yu kullanamayabilir çünkü çok fazla RAM isteyen bir uygulama. Bunun için Google&#8217;ın yine kendisinin geliştirmiş olduğu Kotlin IDE&#8217;yi tavsiye edebilirim. Kotlin IDE üzerinden, Android Studio&#8217;da logcat üzerinden incelediğimiz sonuçları kolaylıkla inceleyebilirsiniz.</p>



<p>Kotlin IDE : <a href="https://kotlinlang.org/">https://kotlinlang.org/</a></p>



<p>Kaynaklar : <a href="https://developer.android.com/kotlin/learn">https://developer.android.com/kotlin/learn</a></p>



<p>Medium : <a href="https://medium.com/@dvolkan2001/kotlin-dersleri-kotlin-ile-android-programlama-19493b25a3e5">https://medium.com/@dvolkan2001/kotlin-dersleri-kotlin-ile-android-programlama-19493b25a3e5</a></p>



<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-cyan-blue-background-color" href="http://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-veri-tipleri-ders-1/">Sonraki Ders</a></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-dersleri-kotlin-ile-android-programlama/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">569</post-id>	</item>
	</channel>
</rss>
