<?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>Bilgisayar &#8211; axisting</title>
	<atom:link href="https://axisting.com/kategori/bilgisayar/feed/" rel="self" type="application/rss+xml" />
	<link>https://axisting.com</link>
	<description>Future Developer ..</description>
	<lastBuildDate>Mon, 24 Jul 2023 13:10:08 +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>Bilgisayar &#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>MAC OS Üzerine Sophos VPN Kurulumu ve Uzak Masaüstü Bağlantısı</title>
		<link>https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/</link>
					<comments>https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 24 Jul 2023 12:35:44 +0000</pubDate>
				<category><![CDATA[Bilgisayar]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[microsoft remote desktop]]></category>
		<category><![CDATA[sophos]]></category>
		<category><![CDATA[uzak masaüstü]]></category>
		<category><![CDATA[vpn kurulumu]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=802</guid>

					<description><![CDATA[Bu yazımızda Macbook üzerine Sophos VPN kurmak üzerine konuşacağız. Windows üzerine kurulum hakkında bir çok kaynak olmasına karşın Mac üzerine kurulumda fazla kaynak olmaması ve Sophos&#8217;un da Mac üzerinde bir arayüzü olmamasından kaynaklı bu yazıyı hem gelecekte tekrar karşıma gelebilir diye kendim için not almak için hem de siz değerli okuyucularla paylaşmak için yazıyorum. Buradaki [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Bu yazımızda <strong>Macbook </strong>üzerine <strong>Sophos VPN </strong>kurmak üzerine konuşacağız. Windows üzerine kurulum hakkında bir çok kaynak olmasına karşın<strong> Mac</strong> üzerine kurulumda fazla kaynak olmaması ve Sophos&#8217;un da Mac üzerinde bir arayüzü olmamasından kaynaklı bu yazıyı hem gelecekte tekrar karşıma gelebilir diye kendim için not almak için hem de siz değerli okuyucularla paylaşmak için yazıyorum. </p>



<p>Buradaki amacımız şirket serverlarına bağlanmak olabilir, ilgili ortak dosyalara erişmek olabilir veya sadece bir PC bilgisayar Microsoft uzaktan masaüstü ile bağlanma söz konusu olabilir. Bu yazıyı okuduğunuzda ve uyguladığınızda aslında hepsi için çözüm üretebilmiş olacaksınız. Çünkü en özel uygulanışı olan <strong>Uzak Masaüstü</strong> işlemini deneyeceğiz.</p>



<h3 class="wp-block-heading">Sophos Firewall Üzerinde VPN Oluşturma </h3>



<p>Bu konu hakkında çok değinmeyeceğim. Zaten internet üzerinde çok fazla kaynak var. Ama yine de VPN kurulumu için kısaca yapmanız gerekenler Sophos VPN üzerinde <strong>Authentication</strong> -&gt; <strong>Users</strong> &#8216;e giderek kişi adına bir kullanıcı oluşturun. Daha özel bir kullanıcı oluşturmanız veya birden fazla kişinin kullanacağı bir genel bir kullanıcı da oluşturabilirsiniz. Sadece bir kişi belli bir IP&#8217;ye uzak masaüstü bağlantısı yapması gerekiyorsa o halde kişiye özel açabilirsiniz. Sonrasında <strong>Remote Access VPN</strong> -&gt; <strong>SSL VPN</strong> ile bir VPN oluşturun. Bu VPN&#8217;i de bu kullanıcı ile ilişkilendirin. Bu konu özelinde, VPN oluştururken sadece bir kişi belli bir özel IP&#8217;ye ulaşmasını istediğimiz için uzaktan bağlanacağımız bilgisayarın IP&#8217;sini buraya tanımlayalım. Kısaca bu kısım bu şekilde. </p>



<p></p>



<h3 class="wp-block-heading">Macbook Üzerinde Sophos Configuration Dosyasını İndirme</h3>



<p>Firewall&#8217;unuzun <strong>User Portal</strong>&#8216;ına gidin ve ilgili kullanıcı bilgileri ile giriş yapın.<strong> VPN</strong> sekmesinin altına gelin. Burada <strong>Download for macOS</strong> dosyasını indirin. Ardından <strong>Download for Windows, macOS, Linux</strong> SSL VPN configuration dosyasını da indirin. </p>



<figure class="wp-block-gallery columns-1 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\/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi\/"}' class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img fetchpriority="high" decoding="async" width="875" height="588" data-attachment-id="809" data-permalink="https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/attachment/sophos-vpn-user-portal-client-arayuzu/" data-orig-file="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü.png" data-orig-size="875,588" 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="Sophos-VPN-User-Portal-Client-Arayüzü" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü-300x202.png" data-large-file="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü.png" src="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü.png" alt="" data-id="809" data-full-url="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü.png" data-link="https://axisting.com/?attachment_id=809" class="wp-image-809" srcset="https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü.png 875w, https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü-300x202.png 300w, https://axisting.com/wp-content/uploads/2023/07/Sophos-VPN-User-Portal-Client-Arayüzü-768x516.png 768w" sizes="(max-width: 875px) 100vw, 875px" /></figure></li></ul></figure>



<p><strong>.pkg</strong> uzantılı olan ilk indirdiğiniz dosyayı çalıştırın ve yönelgeleri takip ederek kurun. Kurduktan sonra<strong> Sophos</strong> ile ilgili bir şey yapmanız gerekmiyor.</p>



<p></p>



<h3 class="wp-block-heading">TunnelBlick kurulumu</h3>



<p>Sophos macOS üzerinde bir uygulama arayüzü sunmadığı için bu açığı TunnelBlick ile kapatacağız. Tamamen açık kaynaklı ve güvenilir bir programdır. App Store&#8217;da <strong>bulunmadığı </strong>için <a href="https://tunnelblick.net/downloads.html">buradan</a> orjinal web sitesinden indirebilirsiniz. </p>



<p>Mevcut stable sürümü seçin ve indirin. <strong>.dmg</strong> uzantılı bir dosya inecek. Bunu tıklayıp yönelgeleri takip ederek çalıştırın. </p>



<p>Ardından <strong>Sophos user portal</strong>dan indirdiğimiz <strong>.ovpn</strong> uzantılı dosyaya tıklayın ve açılan pencerede sağ üstte <strong>TunnelBlick uygulaması ile aç</strong> seçeneğini seçin.</p>



<p>Böylece <strong>SSL VPN Configuration</strong> dosyamız artık açılmış oldu. <strong>TunnelBlick</strong> uygulaması üzerinden sağ altta <strong>bağlan</strong> seçeneğini seçelim. Önümüze gelen pencerede <strong>VPN kullanıcı bilgisi</strong> ve <strong>şifresini</strong> girelim. <strong>Hatırla</strong> seçeneğini seçerek tekrar tekrar şifre girmenin önüne de geçebilirsiniz. Böylece VPN ile bağlantı olmuş oldu. Şimdi <strong>uzak masaüstüne</strong> nasıl bağlanırız ona geçelim.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="522" data-attachment-id="810" data-permalink="https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/attachment/tunnelblick-configurasyon-ekrani/" data-orig-file="https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı.png" data-orig-size="1339,682" 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="TunnelBlick-configürasyon-ekranı" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-300x153.png" data-large-file="https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-1024x522.png" src="https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-1024x522.png" alt="" class="wp-image-810" srcset="https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-1024x522.png 1024w, https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-300x153.png 300w, https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı-768x391.png 768w, https://axisting.com/wp-content/uploads/2023/07/TunnelBlick-configürasyon-ekranı.png 1339w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Microsoft Uzak Masaüstü Kurulumu</h3>



<p>Uzak masaüstü Windows bilgisayarlarda hali hazırda olduğu için kurmamız gerekmiyordu. Ama macOS bilgisayarlarda bu durum tabii ki farklı. Bunun için <strong>App Store</strong> üzerinden <strong>Microsoft Remote Desktop</strong> uygulamasını indirin. </p>



<p>Ardından uygulamaya girin ve uzaktan bağlanacağınız bilgisayarın IP&#8217;sini girerek kaydedin. Devamlı girmek istemiyorsanız oturum adı ve şifresini tek seferlik girip kaydederek uzak masaüstüne bağlanabilirsiniz. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="640" data-attachment-id="811" data-permalink="https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/attachment/microsoft-uzak-masaustu/" data-orig-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü-.png" data-orig-size="1280,800" 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="microsoft-uzak-masaüstü-" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--300x188.png" data-large-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--1024x640.png" src="https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--1024x640.png" alt="" class="wp-image-811" srcset="https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--1024x640.png 1024w, https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--300x188.png 300w, https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü--768x480.png 768w, https://axisting.com/wp-content/uploads/2023/07/microsoft-uzak-masaüstü-.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sonrasında aşağıdaki gibi bir ekran karşınıza çıkacak. İlgili uzak masaüstüne çift tıklayarak bağlanabilirsiniz. User account&#8217;u kaydettiyseniz sizden username ve password isteyecektir. Bağlanacağınız bilgisayarda uzak masaüstüne izin verdiyseniz sorunsuz bağlanacaktır.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-attachment-id="812" data-permalink="https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/attachment/microsoft-remote-desktop-connect/" data-orig-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect.jpg" data-orig-size="1280,720" 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="microsoft-remote-desktop-connect" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-300x169.jpg" data-large-file="https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-1024x576.jpg" src="https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-1024x576.jpg" alt="" class="wp-image-812" srcset="https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-1024x576.jpg 1024w, https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-300x169.jpg 300w, https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect-768x432.jpg 768w, https://axisting.com/wp-content/uploads/2023/07/microsoft-remote-desktop-connect.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>Eğer uzak masaüstüne bağlanılacak bilgisayarda izin vermediyseniz <strong>Bilgisayarım</strong> -&gt; <strong>Bilgisayarıma sağ tık ve Özellikler</strong> -&gt; <strong>Gelişmiş sistem ayarları</strong> -&gt; <strong>Uzak</strong> -&gt; <strong>Bu bilgisayara uzaktan bağlanılmasına izin ver</strong> -&gt; <strong>Kullanıcıları Seç</strong> -&gt; <strong>Ekle</strong> -&gt; Seçilecek nesnenin adlarını girin kısmına hangi oturuma bağlanacaksa oturum ismini yazıp adları denetle deyin tekrardan. Böylece bu bilgisayarda bu oturuma izin vermiş olursunuz.</p>



<p>Ve macOS bilgisayarınızla tekrar bağlanmayı denediğinizde sorunsuz bir şekilde bağlanabileceksiniz.</p>



<p></p>



<p>Umarım anlaşılır bir çalışma olmuştur ve sorunsuz kurulum gerçekleştirebilmişsinizdir. Herkese iyi çalışmalar dilerim. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1880" height="1253" data-attachment-id="813" data-permalink="https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/attachment/pexels-photo-1595388/" data-orig-file="https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388.jpeg" data-orig-size="1880,1253" 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;Photo by Fox on &lt;a href=\&quot;https:\/\/www.pexels.com\/photo\/people-looking-at-laptop-1595388\/\&quot; rel=\&quot;nofollow\&quot;&gt;Pexels.com&lt;\/a&gt;&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;people looking at laptop&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pexels-photo-1595388" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-300x200.jpeg" data-large-file="https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-1024x682.jpeg" src="https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388.jpeg" alt="people looking at laptop" class="wp-image-813" srcset="https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388.jpeg 1880w, https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-300x200.jpeg 300w, https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-1024x682.jpeg 1024w, https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-768x512.jpeg 768w, https://axisting.com/wp-content/uploads/2023/07/pexels-photo-1595388-1536x1024.jpeg 1536w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/mac-os-uzerine-sophos-vpn-kurulumu-ve-uzak-masaustu-baglantisi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">802</post-id>	</item>
		<item>
		<title>Excel&#8217;de seçili hücre yana geçmiyor hatası &#8211; Scroll Lock</title>
		<link>https://axisting.com/bilgisayar/excelde-secili-hucre-yana-gecmiyor-hatasi-scroll-lock/</link>
					<comments>https://axisting.com/bilgisayar/excelde-secili-hucre-yana-gecmiyor-hatasi-scroll-lock/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 12 Jun 2023 14:31:00 +0000</pubDate>
				<category><![CDATA[Bilgisayar]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[excel kaydırma]]></category>
		<category><![CDATA[excelde seçili hücre yana geçmiyor]]></category>
		<category><![CDATA[fn c]]></category>
		<category><![CDATA[kaydırma kilidi]]></category>
		<category><![CDATA[scroll lock]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=781</guid>

					<description><![CDATA[Eğer Excel kullanırken, Google tablolarda veya kaydırmanın kullanıldığı herhangi bir yerde istenmeyen sonuçlarla karşılaşmış olabilirsin. Örneğin yön tuşlarıyla hücreyi yana kaydırmak istiyor olabilirsin. Ama kaydırmayı başaramıyorsun veya hücrenin değil de ekranın yana kaydığını görüyorsun. Bunu düzeltmek için Scroll tuşunu açıp kapatman gerekir. Bunun için klavyende yön tuşlarının üstünde scroll lock tuşuna basıp açıp kapatmayı deneyebilirsin. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Eğer Excel kullanırken, Google tablolarda veya kaydırmanın kullanıldığı herhangi bir yerde istenmeyen sonuçlarla karşılaşmış olabilirsin. Örneğin yön tuşlarıyla hücreyi yana kaydırmak istiyor olabilirsin. Ama kaydırmayı başaramıyorsun veya hücrenin değil de ekranın yana kaydığını görüyorsun. Bunu düzeltmek için Scroll tuşunu açıp kapatman gerekir. </p>



<p>Bunun için klavyende yön tuşlarının üstünde <strong>scroll lock</strong> tuşuna basıp açıp kapatmayı deneyebilirsin. Ve istediğin sonuca ulaşabildin mi bu şekilde kontrol et. </p>



<p>Ama bazı HP gibi laptop klavyelerinde bu tuş olmayabiliyor. Alanı optimum kullanmak adına laptoplar bu yola gidebiliyor. Bu klavyelerde <strong>Fn &#8211; C</strong> kombinasyonu ile yine scroll lock yani kaydırma kilidini açıp kapayabilirsin. </p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/excelde-secili-hucre-yana-gecmiyor-hatasi-scroll-lock/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">781</post-id>	</item>
		<item>
		<title>Bilgisayarda Yüksek Performans ve Nihai Performans görünmüyor sorunu</title>
		<link>https://axisting.com/bilgisayar/bilgisayarda-yuksek-performans-ve-nihai-performans-gorunmuyor-sorunu/</link>
					<comments>https://axisting.com/bilgisayar/bilgisayarda-yuksek-performans-ve-nihai-performans-gorunmuyor-sorunu/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Wed, 11 Jan 2023 07:49:30 +0000</pubDate>
				<category><![CDATA[Bilgisayar]]></category>
		<category><![CDATA[IT]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=766</guid>

					<description><![CDATA[Bilgisayarlarda yeni alımlarda veya bazı güncellemelerden sonra yüksek performansın görünmediği durumlar olabilir. Bu sorunun çözümünü en kısa şekilde buraya yazacağım. Yüksek performans ve Nihai Performansın kullanım amacı bilgisayarı olabildiğince performanslı şekilde çalışmasını sağlamaktır. Dengeli performans ise bilgisayarın daha dengeli güç tüketimi kullanmasını sağlar. Gücü az tüketmeye çalıştığı için de performanstan ödün verir. Yüksek performans ve [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Bilgisayarlarda yeni alımlarda veya bazı güncellemelerden sonra yüksek performansın görünmediği durumlar olabilir. Bu sorunun çözümünü en kısa şekilde buraya yazacağım. Yüksek performans ve Nihai Performansın kullanım amacı bilgisayarı olabildiğince performanslı şekilde çalışmasını sağlamaktır. Dengeli performans ise bilgisayarın daha dengeli güç tüketimi kullanmasını sağlar. Gücü az tüketmeye çalıştığı için de performanstan ödün verir. Yüksek performans ve Nihai Performans ile bu performans sorunlarının önüne geçebiliriz.&nbsp;</p>
<h2>CMD Komut Satırı Üzerinden Yüksek Performans Açma</h2>
<p>Eğer tüm oturumlarda <strong>Yüksek Performans</strong>ı açmak istiyorsan arama kısmına cmd yazın ve yönetici olarak başlatın</p>
<h4><strong>Powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c</strong></h4>
<h2>CMD Komut Satırı Üzerinden Nihai Performans açma</h2>
<p>Eğer tüm oturumlarda <strong>Nihai Performans</strong>ı açmak istiyorsan arama kısmına cmd yazın ve yönetici olarak başlatın.&nbsp;</p>
<p>Not : Burada Yüksek Performans ayarlarından farklı olarak <strong>2 aşamalı</strong> bir işlem yapıyoruz.</p>
<h4>powercfg /DUPLICATESCHEME e9a42b02-d5df-448d-aa00-03f14749eb61</h4>
<p>Sonra karşımıza her bilgisayarda farklı olan bir ID değeri verecek.&nbsp;</p>
<p>Power Scheme GUID: <b>3845709a-a9fd-48c2-b947-723456a4942d</b>&nbsp; (Nihai Performans)</p>
<p>Böyle bir ID veriyor. Bu ID değerini de kullanarak aşağıdaki gibi değiştirebilirsiniz. Aynı pencereyi kapatmadan aşağıdaki işlemi yapmalısınız kendi ID değeriniz ile.</p>
<h4>powercfg /s 3845709a-a9fd-48c2-b947-723456a4942d</h4>
<p>Yani aslında <strong>powercfg /s &lt;SENINBILGISAYARID&gt;</strong> şeklinde de kısaltabiliriz.</p>
<p></p>


<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/bilgisayarda-yuksek-performans-ve-nihai-performans-gorunmuyor-sorunu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">766</post-id>	</item>
		<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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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-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-fonksiyonlar-functions-ders-5\/"}' class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" 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="auto, (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-3 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>
	</channel>
</rss>
