<?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/"
	>

<channel>
	<title>Yigit Kiran</title>
	<atom:link href="http://blog.yigitkiran.net/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.yigitkiran.net</link>
	<description>&#34;speculative execution&#34;</description>
	<lastBuildDate>Sun, 21 Feb 2010 21:09:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dikkat &#8220;Domain Mafyasi&#8221; !</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dikkat-domain-mafyasi</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 21:07:24 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[çakal]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[domain mafyası]]></category>
		<category><![CDATA[mafya]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=238</guid>
		<description><![CDATA[Sitenin adresinden ötürü ironi yapıcam ama internette adımı soyadımı kullanmayı pek sevmeyen bir insanım! Belki bu gecemi gündüzümü internetin nasıl çalıştığını anlamaya ya da internet uygulamalarındaki açıkları bulmaya (ve bazen değerlendirmeye!) çalıştığım zamanlarımdan kalan gizlilik içgüdüsü (uzun süre devamlı proxy kullanmam gibidir), belkide google&#8217;da aratınca &#8220;bakınız bu yiğit kıran ruslar konusunda bunu bunu demiş&#8221; tarzında [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/The_Godfather_1972_Marlon_Brando_Al_Pacino_James_Caan.jpg" rel="lightbox[238]"><img class="aligncenter size-full wp-image-239" title="The_Godfather,_1972,_Marlon_Brando,_Al_Pacino,_James_Caan" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/The_Godfather_1972_Marlon_Brando_Al_Pacino_James_Caan.jpg" alt="" width="560" height="448" /></a>Sitenin adresinden ötürü ironi yapıcam ama internette adımı soyadımı kullanmayı pek sevmeyen bir insanım! Belki bu gecemi gündüzümü internetin nasıl çalıştığını anlamaya ya da internet uygulamalarındaki açıkları bulmaya (ve bazen değerlendirmeye!) çalıştığım zamanlarımdan kalan gizlilik içgüdüsü (uzun süre devamlı proxy kullanmam gibidir), belkide google&#8217;da aratınca &#8220;bakınız bu yiğit kıran ruslar konusunda bunu bunu demiş&#8221; tarzında olayların başıma gelmesini istemememden kaynaklanıyordur. Çeşitli sitelerde ismimi soran birçok nazik text kutucuuna hep &#8220;osman&#8221; yada &#8220;asdsdsd&#8221; yazmam da bundandır. Kişisel şeyler için üzerinde uğraştığım veya uğraşmayı düşündüğüm projeler konusunda domainler alıp, oralarda fikirlerimi aktarmayı seçmişimdir hep. Ancak bu projeler bitince domaini başkasına verdikten yada artık parasını ödemedikten sonra uçup giden adresler (işletim sistemi projesi: yigos.com gibi :) nedeniyle de sadece kendime özel bir sitenin ihtiyacını hissederken yine kesinlikle ad-soyad kullanmayı düşünmüyordum.</p>
<p>Böyle zor geçen gençlik yıllarımdan sonra (!), kendime özel sayfaları bu işi 4 saniyede gerçekleştirebileceğim msn space, blogger gibi dahiyane servisleri kullanarak oluşturuyor, hatta msn space sayesinde yeni birşey yazdığımda messenger nickimin yanında bir yıldız zapırdatabiliyordum (bu fiili şuan icat ettim :). <span id="more-238"></span>Messengerdeki 400 küsur arkadaşımın arasında nickinin yanında ilk yıldız zıpırdatan insanken herşey güzeldi :) Tabi kısa bir süre sonra onlarca yıldız ve birçok space sahibi arkadaşımın olması daha da güzeldi. Blogumda örneğin ruslarla ilgili birşey yazsam ekrana gelen terbiyesiz arkadaşlık siteleri reklamları da olsa güzeldi. Koyabileceğim resimler x mb ile sınırlı da olsa güzeldi. Özellikle internette hazır şeylerden pek hoşlanmadığımdan, hazır şablona uymak ve fazla dışına çıkamamak ta olsa güzeldi (sonradan html kod eklemenin yöntemini bulmuştum amaa :P)..</p>
<p>Genelde yurtdışındaki donanım bloglarında ingilizcemi geliştiriyordum ve bazılarının alan adı yazarların isim yada soyadlarına sahipti. &#8220;adsoyad.com&#8221; halindeki bu sitelerle ilk karşılaştığımda &#8220;öeh niye ki?&#8221; tepkisini verdiğimi hatırlıyorum. Tamam .com her zaman ticari olmayan sayfalar için kullanılmıyor ancak kendini niye böyle ifşa ediyosun ki be adam! Kısa süre sonra Türkiyede birçok insan soyadlarına alan adı alıp kullanmaya başlamışlardı ve ben hala saf saf &#8220;niye, niyeee?&#8221; diye söyleniyordum. Üniversite yıllarının başlangıcında biraz daha ufuk genişlemesi oldu galiba ve &#8220;kıran&#8221; adını bi kere arattığımı hatırlıyorum. Kiran.org adresini almayı düşünyorken sadece .net uzantısı boştaydı o zamanlar. Uzantılara önem veren nadir saf insanlardan biri olarak, ayrıca gizlilik isteyen prensipli geek tavrımla bu adres acayip warez-crack arşivi sitesi ismi uyandırdı bende ve vazgectim almaktan. Zaten 1. sınıftan sonra blog tutmaya vakit bulamayan (neden oldugunu size bırakıyorum ben karışmıyorum :) biri olarak yıllık ekstra 9$ ödemeye niyetim yoktu (ne cimrilik bea:).</p>
<p>Sonrasında tüketim canavarı bir türk toplumu olarak birçok insanın hazır ya da el yapımı bloglarını kendi alan adlarındaki sitelere taşımasına şahit oldum. Evet oldum, tanıdığım sevdiğim birçok insanın kendi alan adı vardı. Artık olay trendleşmeye başlarken bu iş ilerde daha da büyür diyerek 2006 senesinde kendi ismime domain alıp, ilerde bu işin ticaretini yapan olur, ismimi kullanan olur savunması yapmış bulundum. Kullanmadığım, sadece çakallık amaçlı bir adresti yigitkiran.net ..</p>
<p><strong>Tek çakal ben değilim..</strong></p>
<p>Yine 5+ yıl önceye dönersek, ixir reklamlarında (hatırlatma: ixir diye servis sağlayıcı vardı o yıllarda) &#8220;site&#8221; yapacağını ifşa eden Banu Alkan, kestaneci, kokoreççi, futbolcular ve sanatçılar gibi &#8220;iyi para verable&#8221; kişilerin adlarına domainler, ince zekalı &#8211; ileri görüşlü çakallar tarafından celb edildi, istendiğinde güzide dolarlara satıldılar. İnternet yaygınlaştıkça, 56K -&gt; ADSL oldukça daha da ivmelenen bir ortamda, genelde şirketleri vuran bu tarz çakallar bütün ünlülerin isminde domain sahibi olmuştu. Madalyonun öbür yüzü şu ki, örneğimizde kullandığımız Banu Alkan ismine müntasır birçok insan bulunabilirdi ve gerçekten kendileri için almış olabilirlerde domaini. O zaman onları çakal olarak niteleyemezdik ama istedikleri fiyatlar ortadayken o domaini alanlar Banu değil Alkan değil afrodit hiç değil sadece &#8220;çakal&#8221;dılar benim için.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/banu-e1266786362931.jpg" rel="lightbox[238]"><img class="aligncenter size-full wp-image-240" title="banu" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/banu-e1266786362931.jpg" alt="" width="400" height="299" /></a></p>
<p>Konuya bi türlü giremedim ama madalyonun 3. yüzüne de (o nası bi madalyonsa :) bakmak istiyorum hemen: İsimler unique olmadıkça, insanlar unique olan tc kimlik no yada telefon numaralarına falan da domain almadıkça tabiki alınan her alan adı diğer insanları etkileyecektir. Mesela ülkemizde tahminimce 3 milyon kişinin ismi olan Mehmet Öztürk (yaklaşık olarak salladım sayıyı :) kişilerinden sadece bir tanesi bu ayrıcalığa sahiptir (farklı uzantılar bu sayıyı biraz artırabilirler belki ama yinede madur olanlar olacaktır ve zaten bu uzantı işinin de tadı kaçtı ki buna değineceğim). Bu ne yazıkki -özellikle ülkemizde- 0532li hat sahibi olmanın algısı gibi algılanıp, mevcut uzantılar hat sayısından çok çok çok az olduğu için internet popülasyonu arttıkça daha daha daha büyük problemlere yol açacak gibi. (Sakıp Sabancı konuşması gibi oldu evet)</p>
<p>Şimdi günümüze dönecek olalım. İnternet kullanımı exponential olarak artınca, daha çok insan yayılıp serpişince kendi isminde domain almak gerçekten trend oldu (bkz. 4. paragraf, 2006 senesindeki düşüncem). Birçok arkadaşımın ismini, kartvizitlerinde yada mail imzalarındaki url kısmında aynen görmeye alıştım ben. Zaten bilişim alanında çalışan arkadaşlarımın -ve artık benim- böyle bir trendin parçası olması, tuttuğu blogları önemseyen özverili insanların kendi alan adlarını almasına şaşırmamak gerektiğini de geçen zaman öğretti bana. Sadece 11 yaşındaki kardeşimin aylardır kendi isminde domain almak istemesi, ne kadar reddetsem ve alternatifler önersem de sonunda kendi başına kendi ismine domain alması (bkz. www.uygurkiran.net) biraz ürküttü, biraz &#8220;nolacak gelecekte halimiz&#8221; diye sordurttu ama hem genlerimizin aynı olması hem de benim gibi bir örneği olması nedeniyle onu istisna görüp durumu kabullendim.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/hc.jpg" rel="lightbox[238]"><img class="size-full wp-image-241 aligncenter" style="margin-top: 15px; margin-bottom: 15px;" title="hc" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/hc.jpg" alt="" width="384" height="288" /></a></p>
<p>Genç sivillerin adlarına domain kaydettirdiği günümüzde, yukarıda bahsettiğim çakalların piyasayı farketmesi de uzun sürmedi tabi. Bir kısım aşmış çakal piyasayı farketti ve kendi ismine tek bir domaini olan bulduğu herkesin adına diğer domainleri kapatmaya başladı. Örneğin osman.net sahibi bir vatandaşı farkeden bu çakal türü, osman.com.org.info vs ne varsa kapatıp osmana &#8220;siteniz çok güzelmiş .com, .org alanlarını da istermisin sadece 2000 dolarcık hehe?&#8221; tarzı serbest meslekçiliğe girişmeye başladılar. Bu durumdan para kazanan vardır elbet. Durumu sineğe çekip (sinek?) çaktırmayanları da tanıyorum. Ancak bu meslek türü giderek genişliyor ve tanıdığım birçok arkadaşımın isimlerine sahip alan adları alakasız kişilerce alınıp bu tarz hadiseler yaşanabiliyor. Bu durumlarda para vermeyip çakalları doğal seleksiyona havale edenleri, ya da Deniz Oktar gibi kendilerini sayfanın üst kısımlarında eleştirenleri (“some bastards take .com” mu yazıordu?) tüm gücümlen takdir etmekten, ve bu yazıları okuyanlar arasında böyle bir durum arasında gıcık olacaklar varsa (ki olunur) mevcut adreslerinin diğer uzantılarınıda almaktan başka seçenekleri olmadığını hatırlatmaktan fazla elimden birşey gelmiyor ne yazık ki. Cidden şu sıralar bu tarz olaylar arttı, çakal başına 800-900 domain&#8217;in düşebildiği gnümüzde, abartıp &#8220;mafya&#8221; diye tabir ettiğim bu gençlere karşı dikkatli olmanızı tavsiye ederim..</p>
<p>p.s. Bu yazı taa Haziran 8, 2008 tarihinde 20:38&#8242;te yazılmıştır..</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;t=Dikkat+%22Domain+Mafyasi%22+%21" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Dikkat+%22Domain+Mafyasi%22+%21+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Dikkat+%22Domain+Mafyasi%22+%21&amp;link=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;title=Dikkat+%22Domain+Mafyasi%22+%21&amp;summary=Sitenin%20adresinden%20%C3%B6t%C3%BCr%C3%BC%20ironi%20yap%C4%B1cam%20ama%20internette%20ad%C4%B1m%C4%B1%20soyad%C4%B1m%C4%B1%20kullanmay%C4%B1%20pek%20sevmeyen%20bir%20insan%C4%B1m%21%20Belki%20bu%20gecemi%20g%C3%BCnd%C3%BCz%C3%BCm%C3%BC%20internetin%20nas%C4%B1l%20%C3%A7al%C4%B1%C5%9Ft%C4%B1%C4%9F%C4%B1n%C4%B1%20anlamaya%20ya%20da%20internet%20uygulamalar%C4%B1ndaki%20a%C3%A7%C4%B1klar%C4%B1%20bulmaya%20%28ve%20bazen%20de%C4%9Ferlendirmeye%21%29%20%C3%A7al%C4%B1%C5%9Ft%C4%B1%C4%9F%C4%B1m%20zamanlar&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;title=Dikkat+%22Domain+Mafyasi%22+%21" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;title=Dikkat+%22Domain+Mafyasi%22+%21" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;title=Dikkat+%22Domain+Mafyasi%22+%21&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;srcTitle=Dikkat+%22Domain+Mafyasi%22+%21&amp;snippet=Sitenin%20adresinden%20%C3%B6t%C3%BCr%C3%BC%20ironi%20yap%C4%B1cam%20ama%20internette%20ad%C4%B1m%C4%B1%20soyad%C4%B1m%C4%B1%20kullanmay%C4%B1%20pek%20sevmeyen%20bir%20insan%C4%B1m%21%20Belki%20bu%20gecemi%20g%C3%BCnd%C3%BCz%C3%BCm%C3%BC%20internetin%20nas%C4%B1l%20%C3%A7al%C4%B1%C5%9Ft%C4%B1%C4%9F%C4%B1n%C4%B1%20anlamaya%20ya%20da%20internet%20uygulamalar%C4%B1ndaki%20a%C3%A7%C4%B1klar%C4%B1%20bulmaya%20%28ve%20bazen%20de%C4%9Ferlendirmeye%21%29%20%C3%A7al%C4%B1%C5%9Ft%C4%B1%C4%9F%C4%B1m%20zamanlar" rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/&amp;title=Dikkat+%22Domain+Mafyasi%22+%21" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/dikkat-domain-mafyasi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2008 yilindan MSP yazisi buldum!</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hazir-msp-yazisi</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 18:15:52 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[microsoft student partners]]></category>
		<category><![CDATA[microsoft student partners 2007-2008]]></category>
		<category><![CDATA[msp]]></category>
		<category><![CDATA[msp kosesi]]></category>
		<category><![CDATA[onur simsek]]></category>
		<category><![CDATA[student partners]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=218</guid>
		<description><![CDATA[Bugün eski belgeleri karıştırırken MSP Dergi\MSP Yazısı.doc adlı bir döküman dikkatimi çekti! 2008 yılında MSP'ler (Microsoft Student Partner) olarak dergi çıkaracaktık ve Onur Şimşek ile bana "MSP Köşesi" bölümünü hazırlama görevi verilmişti :) Biz yazıyı hazırlamıştık ancak o yıl dergiyi çıkarmak kısmet olmamıştı.. İşte o yazıyı yıllar sonra (2 yıl :) okuyunca biraz duygulandım :) Ayrıca şu da var; halen akademik dönem başlangıcı ve sonlarında, ayrıca MSP başvuruları öncesinde bu program hakkında sorular alıyorum ve aslında bu belge tam da bu sorulara yanıt vermek amacıyla oluşturulmuştu! 27 kişi olduğumuz zamanları hatırlatan bu belgeyi hem nostalji olsun hem de bu programa başvurmak isteyen arkadaşlar'a yardımcı olur düşüncesiyle blogumda yayımlamaya karar verdim. Hem bu vesileyle Onur'a haber verip hal hatır sormuş olacağım.. Bi yazıyla 8-10 kuş vuruyorum arkadaşlar! :)


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSCF1491_big-e1266603075973.jpg" rel="lightbox[218]"><img class="aligncenter size-full wp-image-222" title="DSCF1491_big" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSCF1491_big-e1266603075973.jpg" alt="" width="600" height="450" /></a>Bugün eski belgeleri karıştırırken MSP Dergi\MSP Yazısı.doc adlı bir döküman dikkatimi çekti! 2008 yılında MSP&#8217;ler (Microsoft Student Partner) olarak dergi çıkaracaktık ve Onur Şimşek ile bana &#8220;MSP Köşesi&#8221; bölümünü hazırlama görevi verilmişti :) Biz yazıyı hazırlamıştık ancak o yıl dergiyi çıkarmak kısmet olmamıştı.. İşte o yazıyı yıllar sonra (2 yıl :) okuyunca biraz duygulandım :) Ayrıca şu da var; halen akademik dönem başlangıcı ve sonlarında, ayrıca MSP başvuruları öncesinde bu program hakkında sorular alıyorum ve aslında bu belge tam da bu sorulara yanıt vermek amacıyla oluşturulmuştu! 27 kişi olduğumuz zamanları hatırlatan bu belgeyi hem nostalji olsun hem de bu programa başvurmak isteyen arkadaşlar&#8217;a yardımcı olur düşüncesiyle blogumda yayımlamaya karar verdim. Hem bu vesileyle Onur&#8217;a haber verip hal hatır sormuş olacağım.. Bir yazıyla 8-10 kuş vuruyorum arkadaşlar! :) <span id="more-218"></span>Buyrun direk copy-paste:</p>
<p><strong><a href="http://www.onursimsek.com/">Onur Şimşek</a></strong><strong> / </strong><a href="mailto:onur.simsek@msakademik.net"><strong>onur.simsek@msakademik.net</strong></a><strong> </strong></p>
<p><strong>Yiğit Kıran / </strong><a href="mailto:yigit.kiran@msakademik.net"><strong>yigit.kiran@msakademik.net</strong></a><strong> </strong></p>
<p><strong>MSP Köşesi!</strong></p>
<p>***spot***</p>
<p>Aktiviteler düzenliyorlar, teknolojiyi yakından takip ediyorlar, hiçbir etkinliği kaçırmıyorlar ve bunları yaparken çok eğleniyorlar.. Microsoft Stundent Partners programına dahil olan öğrencilerin dünyasını incelemeye ne dersiniz?</p>
<p>***spot bitti***</p>
<p>Öncelikle MSP nedir, dilerseniz bu tanımı açalım: Microsoft Student Partners (MSP) programı,  başarılı ve yetenekli bilgisayar bilimleri ve benzeri BT alanlarında eğitimlerine devam eden öğrencilerin, iletişim ve pazarlama yeteneklerini güçlü yanı olarak gören ve bu özelliklerini geliştirmek arzusunda olan öğrencilerin ortaya çıkarılmasına yardımcı olmayı amaçlayan bir program. Bu ünvana sahip olan öğrencinin, teknolojik bilgi ve becerilerini geliştirebilmesine imkan sağlanarak, programa katılım yeterliliği ve teknoloji tutkunlarına yardımcı olma isteği göz önünde bulundurulur.</p>
<p>Bu program, Microsoft yazılım geliştirme teknolojilerinin üniversitelerdeki tanınırlık ve kullanılırlığının artırılmasına yönelik olarak Microsoft&#8217;un dünya çapında yürüttüğü çalışmalar kapsamındadır. Akademik dünyanın Microsoft yazılımları sayesinde kişisel potansiyellerini keşfedebilmelerine olanak sağlanmaktadır.</p>
<p>Program, bilişimle ilgili başarılı öğrencileri ön plana çıkarılarak yüksek öğrenimdeki bilgi teknolojileriyle ilgili, meraklı topluluğa yönelik çalışmaları geliştirmek suretiyle katkıda bulunmalarına olanak sağlamak amacıyla oluşturulmuştur. Bu ünvan, teknolojiye meraklı, bu alandaki gelişmelerin yakın takipçisi olan, Microsoft ile yakın çalışmalar yürütmeye istekli ve bu çalışmalara zaman ayırabilecek gönüllü öğrencilere verilmektedir.</p>
<p>Microsoft’un akademik dünya içerisindeki öğrencilerle aktif çalışması, ilk olarak 2003 yılında ingilterede başlayan Most Valuable Student (MVS) programı ile gerçekleşti. Bir yıl sonra Türkiye’de Danışman Öğrenci programı (MDÖ) başlamıştı. Daha sonra farklı isimlerle bütün ülkelerde başlatılan çalışma 2006 yılında küresel bir program altında toplanarak Student Partners organizasyonu haline geldi ve örnek bir model oluşturdu.</p>
<p>Tüm tanımları özetle ifade etmek gerekirse MSP; Microsoft teknolojileriyle ilgili bilgi ve becerileri bilgi paylaşım ilkesiyle yürütebilecek,  akademik dünyadan teknoloji tutkunu üniversite öğrencilerine gönüllü çalışmalarından dolayı verilen bir ünvandır. Bilginin paylaştıkça çoğaldığı ilkesini savunan öğrencilerle, üniversitelerin sahip olduğu potansiyeli gerçeğe dönüştürmek maksadıyla hayata geçirilen bir proje olmuştur.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSC02464-e1266603121928.jpg" rel="lightbox[218]"><img class="aligncenter size-full wp-image-221" title="DSC02464" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSC02464-e1266603121928.jpg" alt="" width="600" height="450" /></a></p>
<p><strong>Nasıl MSP olunur?</strong></p>
<p>Başladığı ilk sene akademik yıl başında mülakatla alınan MSP’ler, bu yıldan itibaren yaz ayları sonunda çektikleri bir video ile msakademik.net üzerinden kayıt yaptırarak seçiliyorlar.</p>
<p>Programa katılım kesin bir çerçeve ile sınırlanmamakla birlikte, adayların değerlendirilme sürecinde dikkate alınacak başlıca özellikler:</p>
<ul>
<li>Microsoft teknolojileri ile tanışıklık ve aktif kullanıcısı olmak</li>
<li>Imagine Cup başta olmak üzere, Microsoft teknolojileriyle ilgili düzenlenen yarışmalar katılmış olmak</li>
<li>Kullanıcı gruplarında aktif ve etkin olmak: Online ve offline sosysal aktivite</li>
<li>Microsoft teknolojileri ile yazılım geliştirme deneyimi ve Microsoft ürünleriyle yaratıcılığını geliştirmiş olmak</li>
<li>Teknoloji tutkunluğu</li>
<li>Dışa dönük kişilik özellikleri</li>
<li>Bilgi paylaşımına istekli olunması</li>
<li>Akademik başarısı yüksek: Üniversite/bölüm ile iyi ilişkiler içerisinde olunması</li>
<li>Ayda, belirli bir zamanını bu program için ayıracak olması</li>
<li>İletişim yeteneğinin gelişmiş/güçlü olması</li>
<li>Üniversitede, üyesi ya da lideri olduğu öğrenci kulübü, sosyal aktivite organizasyonu gibi oluşumlarda ve online gruplarda/forumlarda aktif, sevilen/popüler bir öğrenci olması</li>
<li>Liderlik özellikleri taşıması</li>
<li>İngilizce bilgisi: Online içerik takibi, seminer/eğitim katılımcısı olarak aktif olabilecek ve edindiği bilgileri aktarabilecek seviyede olmalı</li>
<li>Tercihen üniversite 3. veya son sınıf olması</li>
</ul>
<p><strong>MSP  Neler Yapar?</strong></p>
<p>Microsoft&#8217;un akademik dünyaya yönelik yürüttüğü çalışmaların öğrencilere akatarılabilmesine katkıda bulunmak; MSP olarak kendisine yöneltilen yazılı ve sözlü soruları, gerekiyorsa araştırma yaparak, doğru ve etkin şekilde yanıtlamak; Microsoft teknolojilerinin ve akademik programların bilinirliğinin artmasına yönelik seminer, eğitim, çalıştay vb. etkinlikler düzenleyerek öğrencilerin aktif katılımının sağlanması için gerekli alt çalışmaları planlamak, organize etmek ve gerçekleştirmek; bölüm derslerinde Microsoft ve akademisyenlerle ilgili olası işbirliği çalışmalarına yardımcı/yönlendirici olmak; öğrenci kulüpleriyle iletişim halinde olarak çift taraflı koordinasyona katkıda bulunmak; www.msakademik.net Akademik Yazılım Geliştiriciler topluluk sitesine makale, içerik sağlamak ve/veya sağlayabilecek kişileri belirleyerek gerekli yönlendirmeyi yapmak; kişisel websitesi/blog tutarak bilgi paylaşımına aktif katkı sağlamak; bu ve benzeri çalışmalar için belirli bir zamanını gönüllü olarak ayırmak.</p>
<p><strong>2007-2008 Dönemi MSP lerinin Yaptığı Çalışmalar</strong></p>
<p>Seçildiğimiz dönem itibari ile ülkemizdeki birçok üniversitede, teknolojik gelişmeleri ve Microsoft’ un bunun neresinde olduğunu anlatmaya çalıştık. Gittiğimiz her üniversitede büyük bir ilgiyle karşılaştık. Her MSP kendi okulunda, öğrenci arkadaşlarımızın bilişim sektörünü daha iyi takip edebilmeleri, değişen teknolojiye ayak uydurabilmeleri ve kendilerini geliştirebilmeleri için çeşitli aktiviteler düzenledi. Bazı okullarımıza çevre okullardan MSP ler geldi ve kendi uzman oldukları konularda seminer verdiler. Çok büyük bir bilgi paylaşımı gerçekleşti.</p>
<p>Microsoft yetkilileri bizleri belli bir kalıba sokmak istemiyordu. Her MSP kendi yaratıcılığı ile farklı organizasyonları, Microsoft bilgisi dahilinde gerçekleştirebiliyordu. Bu da gerçekten bazı yaratıcı ve sosyal çevresi geniş olan arkadaşlarımızın okullarında olağanüstü işler yapmasını sağlıyordu.  Öğrencilerin neye ihtiyacı olduğunu  yine en iyi öğrenciler anlayabilirdi. Planladığımız etkinliklerin birçoğu bu sebeple çok beğenildi ve tam isabet olarak değerlendirildi. Okuldaki ihtiyaca göre bazı MSP arkadaşlarımız, konuştukları MVP lerden eğitim desteği aldılar ve okullarında çeşitli konularda eğitim seminerleri gerçekleştirdiler.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/n10344095491_8372.jpg" rel="lightbox[218]"><img class="aligncenter size-full wp-image-223" title="n10344095491_8372" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/n10344095491_8372.jpg" alt="" width="200" height="128" /></a></p>
<p>Birçok MSP’nin ilk tanışması, okullar başlamadan önce İstanbulda gerçekleştirilen Photosynth çalışması oldu. İstanbulda bulunan 13 kişilik bir grup toplanarak Ayasofya’ya gittiler ve mekanın 3 boyutlu modellemesinin yapılabilmesi için binlerce fotoğraf çektiler! Daha ilk günden binlerce fotoğrafımızın olması (aslında fotoğrafların çoğunda Ayasofya  vardı  J) çok güzel bir seneye başladığımızın habercisi gibiydi. Bu etkinlikten bir hafta sonra bütün Türkiye MSP’leri İstanbulda bir yemekte biraraya gelerek tanışma fırsatı buldu. Son derece sıcak bir ortamda geçen tanışma süreci, eğlenceli sunumlar ve bir su baskınıyla unutulmaz bir anıya dönüştü. Ayrıca bu dönemde Microsort İstanbul ofisinde gerçekleştirilen şirket ve ürünler hakkındaki bilgilendirme seminerleri sırasında yine çok eğlendiğimizi söyleyebiliriz.</p>
<p>Dönem arasında yaptığımız pizza dolu video konferanslar, çeşitli şehirlerde düzenlenen aktivitelerden haberdar olmamızı sağladı. Microsoft, Student Partner topluluğunun sömestr döneminde tekrar toplanmasını sağladı ve birçok şehirden gelen arkadaşlarla tekrar buluştuk. Bir haftalık bu süreçte dönemin bütün yorgunluğunu attığımızı söyleyebilirim. Akşama kadar devam eden eğitimler ile yeni ürünlerin eğitimini alırken, her akşam ayrı bir organizasyonda biraraya gelme fırsatı bulduk. Microsoft İstanbul ofisi ve Bilge adam’da gerçekleştirilen eğitimler sırasında grubumuzda bilardo, dart, bowling konusunda çok başarılı arkadaşlar olduğunuz farkına vardık (ne yazık ki oynadığımız xbox oyunlarında böyle bir performans göremedik J). Özellikle MVP ve MSP’lerin katılımıyla gerçekleştirilen bowling turnuvası, sektörün en başarılı isimleriyle tanışmamıza neden oldu (bowlingde de başarılılar evet J).</p>
<p>Yıl boyunca sadece eğitimler için biraraya gelmedik tabii ki. Çeşitli şehirlerdeki fuar, seminer ve lansman etkinliklerine yoğun bir MSP katılımı vardı. Ülkenin dört bir yanındaki üniversitelerde gerçekleştirilen etkinliklere diğer şehirlerden arkadaşlarımız giderek yardımcı olmaya çalıştılar. Teknik konularda uzmanlaşmış arkadaşlarımızı, çeşitli lansmanlarda meraklı insanların sorularını yanıtlarken bulabilirsiniz. Öte yandan Imagine Cup gibi yarışmalarda büyük başarılar elde etmiş bazı arkadaşlarımız birçok üniversiteye giderek, bu sene yarışmaya katılmak isteyen öğrencilerle deneyimlerini paylaşarak yardımcı oldular.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSC02418-e1266603176381.jpg" rel="lightbox[218]"><img class="aligncenter size-full wp-image-220" title="DSC02418" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/DSC02418-e1266603176381.jpg" alt="" width="600" height="450" /></a></p>
<p><strong>Bilişimin Geleceğine Katkı</strong></p>
<p><strong> </strong>Microsoft, “Türkiye Bilişimle Kalkınıyor” sloganıyla çıktığı yolda ülkemizdeki genç nüfusun bilişim sektöründe daha aktif bir rol almasını ve Türkiye’nin bu sektörde üretken bir toplum olmasını destekliyor. Bilişim sektöründeki yeniliklerin ve imkanların gençlere anlatılması için üniversite öğrencileriyle ortaklaşa gerçekleştirdiği Student Partners programına verilen önem de bunun göstergesi. Türkiye’nin değişik bölgelerinden birçok farklı zevkleri ve yaşam biçimi olan bizlerin ortak paydası, uzun yıllardır yakından takip ettiğimiz bu sektördeki gelişmeleri diğer arkadaşlarımıza en iyi bir biçimde aktarabilmek. Bir üniversite öğrencisi olarak bu program altında çalışarak fark yaratmak,  daha çok arkadaşımızı aydınlatarak Türkiye’de bilişime verilen önemi arttırmak en büyük amacımız.</p>
<p>Yazının son kaydedilme tarihi: ‎Friday, ‎September ‎12, ‎2008, ‏‎11:45:12 PM sanırım update edilme zamanı gelmiş :)</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;t=2008+yilindan+MSP+yazisi+buldum%21" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=2008+yilindan+MSP+yazisi+buldum%21+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=2008+yilindan+MSP+yazisi+buldum%21&amp;link=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;title=2008+yilindan+MSP+yazisi+buldum%21&amp;summary=Bug%C3%BCn%20eski%20belgeleri%20kar%C4%B1%C5%9Ft%C4%B1r%C4%B1rken%20MSP%20Dergi%5CMSP%20Yaz%C4%B1s%C4%B1.doc%20adl%C4%B1%20bir%20d%C3%B6k%C3%BCman%20dikkatimi%20%C3%A7ekti%21%202008%20y%C4%B1l%C4%B1nda%20MSP%27ler%20%28Microsoft%20Student%20Partner%29%20olarak%20dergi%20%C3%A7%C4%B1karacakt%C4%B1k%20ve%20Onur%20%C5%9Eim%C5%9Fek%20ile%20bana%20%22MSP%20K%C3%B6%C5%9Fesi%22%20b%C3%B6l%C3%BCm%C3%BCn%C3%BC%20haz%C4%B1rlama%20g%C3%B6revi%20verilmi%C5%9Fti%20%3A%29%20Biz%20yaz%C4%B1y%C4%B1%20haz%C4%B1rlam%C4%B1%C5%9Ft%C4%B1k%20ancak%20o%20y%C4%B1l%20dergiyi%20%C3%A7%C4%B1karmak%20k%C4%B1smet%20olmam%C4%B1%C5%9Ft%C4%B1..%20%C4%B0%C5%9Fte%20o%20yaz%C4%B1y%C4%B1%20y%C4%B1llar%20sonra%20%282%20y%C4%B1l%20%3A%29%20okuyunca%20biraz%20duyguland%C4%B1m%20%3A%29%20Ayr%C4%B1ca%20%C5%9Fu%20da%20var%3B%20halen%20akademik%20d%C3%B6nem%20ba%C5%9Flang%C4%B1c%C4%B1%20ve%20sonlar%C4%B1nda%2C%20ayr%C4%B1ca%20MSP%20ba%C5%9Fvurular%C4%B1%20%C3%B6ncesinde%20bu%20program%20hakk%C4%B1nda%20sorular%20al%C4%B1yorum%20ve%20asl%C4%B1nda%20bu%20belge%20tam%20da%20bu%20sorulara%20yan%C4%B1t%20vermek%20amac%C4%B1yla%20olu%C5%9Fturulmu%C5%9Ftu%21%2027%20ki%C5%9Fi%20oldu%C4%9Fumuz%20zamanlar%C4%B1%20hat%C4%B1rlatan%20bu%20belgeyi%20hem%20nostalji%20olsun%20hem%20de%20bu%20programa%20ba%C5%9Fvurmak%20isteyen%20arkada%C5%9Flar%27a%20yard%C4%B1mc%C4%B1%20olur%20d%C3%BC%C5%9F%C3%BCncesiyle%20blogumda%20yay%C4%B1mlamaya%20karar%20verdim.%20Hem%20bu%20vesileyle%20Onur%27a%20haber%20verip%20hal%20hat%C4%B1r%20sormu%C5%9F%20olaca%C4%9F%C4%B1m..%20Bi%20yaz%C4%B1yla%208-10%20ku%C5%9F%20vuruyorum%20arkada%C5%9Flar%21%20%3A%29&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;title=2008+yilindan+MSP+yazisi+buldum%21" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;title=2008+yilindan+MSP+yazisi+buldum%21" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;title=2008+yilindan+MSP+yazisi+buldum%21&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;srcTitle=2008+yilindan+MSP+yazisi+buldum%21&amp;snippet=Bug%C3%BCn%20eski%20belgeleri%20kar%C4%B1%C5%9Ft%C4%B1r%C4%B1rken%20MSP%20Dergi%5CMSP%20Yaz%C4%B1s%C4%B1.doc%20adl%C4%B1%20bir%20d%C3%B6k%C3%BCman%20dikkatimi%20%C3%A7ekti%21%202008%20y%C4%B1l%C4%B1nda%20MSP%27ler%20%28Microsoft%20Student%20Partner%29%20olarak%20dergi%20%C3%A7%C4%B1karacakt%C4%B1k%20ve%20Onur%20%C5%9Eim%C5%9Fek%20ile%20bana%20%22MSP%20K%C3%B6%C5%9Fesi%22%20b%C3%B6l%C3%BCm%C3%BCn%C3%BC%20haz%C4%B1rlama%20g%C3%B6revi%20verilmi%C5%9Fti%20%3A%29%20Biz%20yaz%C4%B1y%C4%B1%20haz%C4%B1rlam%C4%B1%C5%9Ft%C4%B1k%20ancak%20o%20y%C4%B1l%20dergiyi%20%C3%A7%C4%B1karmak%20k%C4%B1smet%20olmam%C4%B1%C5%9Ft%C4%B1..%20%C4%B0%C5%9Fte%20o%20yaz%C4%B1y%C4%B1%20y%C4%B1llar%20sonra%20%282%20y%C4%B1l%20%3A%29%20okuyunca%20biraz%20duyguland%C4%B1m%20%3A%29%20Ayr%C4%B1ca%20%C5%9Fu%20da%20var%3B%20halen%20akademik%20d%C3%B6nem%20ba%C5%9Flang%C4%B1c%C4%B1%20ve%20sonlar%C4%B1nda%2C%20ayr%C4%B1ca%20MSP%20ba%C5%9Fvurular%C4%B1%20%C3%B6ncesinde%20bu%20program%20hakk%C4%B1nda%20sorular%20al%C4%B1yorum%20ve%20asl%C4%B1nda%20bu%20belge%20tam%20da%20bu%20sorulara%20yan%C4%B1t%20vermek%20amac%C4%B1yla%20olu%C5%9Fturulmu%C5%9Ftu%21%2027%20ki%C5%9Fi%20oldu%C4%9Fumuz%20zamanlar%C4%B1%20hat%C4%B1rlatan%20bu%20belgeyi%20hem%20nostalji%20olsun%20hem%20de%20bu%20programa%20ba%C5%9Fvurmak%20isteyen%20arkada%C5%9Flar%27a%20yard%C4%B1mc%C4%B1%20olur%20d%C3%BC%C5%9F%C3%BCncesiyle%20blogumda%20yay%C4%B1mlamaya%20karar%20verdim.%20Hem%20bu%20vesileyle%20Onur%27a%20haber%20verip%20hal%20hat%C4%B1r%20sormu%C5%9F%20olaca%C4%9F%C4%B1m..%20Bi%20yaz%C4%B1yla%208-10%20ku%C5%9F%20vuruyorum%20arkada%C5%9Flar%21%20%3A%29" rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/&amp;title=2008+yilindan+MSP+yazisi+buldum%21" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/hazir-msp-yazisi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=c-dersleri-7-windows-forms-uygulamalari</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:47:12 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersleri]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dersleri]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[dongu]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[program kontrolleri]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[win forms]]></category>
		<category><![CDATA[windows forms]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=207</guid>
		<description><![CDATA[Uzun süredir devam eden C# derslerimizde geçtiğimiz yazida temel programlama konularını geride bıraktık ve artık siyah beyaz konsol pencerelerinden kurtulup Windows Forms uygulamalarının renkli dünyasına adım atmaya hazırız. Grafiksel kullanıcı arabirimi (GUI) diye tabir edilen arayüzler farklı programlama dillerinin işletim sistemleriyle entegre olarak kullanıcıları metin tabanlı programların sıkıcı ve monoton yapısından kurtarırlar. Özellikle konsol uygulamaları için Visual Studio kullanmayı tercih etmemiş olabilirsiniz ancak Windows Forms tarafında uygulama geliştirmek istiyorsanız bu alışkanlığınızdan hemen vazgeçmenizi öneririm. Windows Forms uygulamaları geliştirmek için yine Visual Studio’nun ücretsiz Express sürümlerini kullanabilirsiniz.

GUI kütüphanelerinin desteklediği farklı öğeleri kullanarak uygulamalarımıza farklı özellikler kazandırmak da oldukça kolaydır. Butonlar, metin kutuları, ikon ve sekmeler gibi kullanıcıların aşina olduğu bu öğeler ile C# uygulamalarımız hem göze hitap edecek hem de daha işlevsel olacaklar. Yazının başında Windows Forms konusuna değineceğimizi belirtsek de burada yapacağımız örnekleri Linux altında Mono kullanarak da yapabilmeniz mümkün. Bildiğiniz gibi platformdan bağımsız olarak çalışan .NET uygulamaları Linux altında Mono Projesi kapsamında çalışıyor ve Mono çok güçlü GUI araçlarına sahip.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/114420037_f08201d9b8.jpg" rel="lightbox[207]"><img class="aligncenter size-full wp-image-214" title="114420037_f08201d9b8" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/114420037_f08201d9b8.jpg" alt="" width="500" height="375" /></a>Uzun süredir devam eden C# derslerimizde geçtiğimiz yazida temel programlama konularını geride bıraktık ve artık siyah beyaz konsol pencerelerinden kurtulup Windows Forms uygulamalarının renkli dünyasına adım atmaya hazırız. Grafiksel kullanıcı arabirimi (GUI) diye tabir edilen arayüzler farklı programlama dillerinin işletim sistemleriyle entegre olarak kullanıcıları metin tabanlı programların sıkıcı ve monoton yapısından kurtarırlar. Özellikle konsol uygulamaları için Visual Studio kullanmayı tercih etmemiş olabilirsiniz ancak Windows Forms tarafında uygulama geliştirmek istiyorsanız bu alışkanlığınızdan hemen vazgeçmenizi öneririm. Windows Forms uygulamaları geliştirmek için yine Visual Studio’nun ücretsiz Express sürümlerini kullanabilirsiniz.</p>
<p>GUI kütüphanelerinin desteklediği farklı öğeleri kullanarak uygulamalarımıza farklı özellikler kazandırmak da oldukça kolaydır. Butonlar, metin kutuları, ikon ve sekmeler gibi kullanıcıların aşina olduğu bu öğeler ile C# uygulamalarımız hem göze hitap edecek hem de daha işlevsel olacaklar. Yazının başında Windows Forms konusuna değineceğimizi belirtsek de burada yapacağımız örnekleri Linux altında Mono kullanarak da yapabilmeniz mümkün. Bildiğiniz gibi platformdan bağımsız olarak çalışan .NET uygulamaları Linux altında Mono Projesi kapsamında çalışıyor ve Mono çok güçlü GUI araçlarına sahip.</p>
<p><span id="more-207"></span></p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim56.png" rel="lightbox[207]"><img class="aligncenter size-medium wp-image-212" title="Resim5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim56-300x173.png" alt="" width="300" height="173" /></a>Visual Studio GUI konusunda çok güçlü araçlara sahip.</p>
<p>Yakın zamana kadar konu arayüz tasarımı olduğunda deneyimli programcılar bile temkinli davranır, uygulama dizaynının yanında programda kullanılacak arayüz araçlarının kullanımı hakkından uzun bir ön çalışma yaparlardı. Ancak Visual Studio, Windows Forms uygulamaları hazırlamak için çok kapsamlı yardımcılara sahip ve GUI araçlarının farklı pencerelerde kullanımını gerçekten oldukça kolaylaştırıyor. Farklı araçların sahip olduğu birçok özellik sağ tarafta bulunan bölmeden fare tıklamalarıyla değiştirilebilirken, öğelere ait olaylar yine çok kolay bir şekilde görülebiliyor ve programlanabiliyor. Formlar üzerine öğeler eklemek, boyutunu değiştirmek, bu öğeleri konumlandırmak, aksiyonlarını ayarlamak ve olayları tanımlamak gibi birçok ince detayı sadece farenizi kullanarak yapabilmek bizlere gerçekten önemli miktarda hız kazandırıyor.</p>
<p><strong>İlk Uygulamamız</strong></p>
<p>Sanırım en iyisi bir “Merhaba Dünya” uygulaması hazırlayarak anlattıklarımızın ne kadar kolay olduğunu deneyerek görmek. Visual Studio’yu açtıktan sonra New Project tuşuna tıklıyor ve artık “Windows Forms Application” öğesini seçiyoruz. Bu aşamadan sonra gri bir tual şeklinde boş formumuz karşımıza çıkacaktır. Dikkat ettiyseniz Formların ve üzerine eklediğiniz birçok aracın köşelerinde ve kenarlarının ortalarında bulunan daireler bu öğelerin yeniden boyutlandırılabilmesine olanak tanır. Kullanabileceğimiz bütün forms araçları ise solda bulunan araç kutusu (Toolbox)  içerisinde çeşitli kategorilere ayrılmış bir şekilde bizi beklemekte. Dilerseniz burada bütün öğelerin bulunduğu ilk sekmeyi açın ve buradan bir düğme (button) öğesini fareniz ile formun üzerinde istediğiniz yere taşıyın. Bu şekilde araçları taşırken çıkan kılavuz çizgileri ile doğru hizalama yapabildiğimizi ve birçok aracın düzenli bir şekilde yerleştirilebildiğini de hatırlatalım.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/resim17.png" rel="lightbox[207]"><img class="aligncenter size-full wp-image-208" title="resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/resim17.png" alt="" width="366" height="358" /></a>Çoğunlukla faremizi kullanarak bir Forms uygulaması hazırladık!</p>
<p>Dizayn ekranında bulunan her türlü öğenin sahip olduğu stil, fonksiyon ve değişkenleri değiştirmeye yönelik birçok özelliği bulunmaktadır. Bu özellikleri görebilmek ve değiştirebilmek için bu öğelere sağ tuşla tıklayıp özellikler (Properties) seçeneğini seçerseniz, ekranın sağ tarafında ilgili bölmesi açılacaktır. Örneğin yeni yerleştirdiğimiz butonu düşünecek olursanız burada fare ile değiştirebildiğimiz konum ve boyut özelliklerinden, butonun rengi, biçimi, üzerindeki yazı ve bu yazının stili gibi birçok ince ayara ulaşabilmemiz mümkün.</p>
<p>Dilerseniz ilk örneğimizi tamamlamak için butonun üzerine bir tane metin kutusu (TextBox) aracını da araç kutusundan seçerek formumuza yerleştirelim. Uygulamamız buraya yazacağımız değeri alarak bir mesaj kutusu içerisinde gösterebilen temel bir uygulama olacak. Ancak yine de metin kutusunun başına bir açıklama koymak isteyebiliriz ve bunun için tek yapmamız gereken araç kutusundan bir etiket (Label) nesnesini faremiz ile forma eklemek olacaktır. Özellikler bölmesinde bulunan Text değerlerini değiştirerek bu öğelerin metin değerlerini istediğimiz gibi ayarlayabiliriz. Yeni eklediğimiz Label ve Button nesnesinin bu değerini de ayarladıktan sonra sıra geldi butona basıldığında nelerin olacağını ayarlamaya.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim27.png" rel="lightbox[207]"><img class="aligncenter size-full wp-image-209" title="Resim2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim27.png" alt="" width="261" height="602" /></a>ToolBox içerisinde birçok araç mevcut.</p>
<p><strong>Events </strong></p>
<p><strong> </strong>Dilimize “olaylar” olarak çevirebileceğimiz events, bir öğenin belirli şartlar altında yapacağı aksiyonları belirleyen fonksiyonları uygulamaya ekler. Uygulamanın çalışması esnasında farenin bir öğenin üzerine gelmesi, belirli bir tuşa basılması veya seçili duruma gelmesi gibi kullanıcı tarafından meydana getirilen bu olaylar, programda bulunan belirli bir fonksiyonu tetikleyerek istediğimiz aksiyonun gerçekleşmesini sağlar. Birçok araç için en çok kullanılan olayların fonksiyonları, o aracı bir formun üzerine sürükledikten sonra üzerine fare ile çift tıklarsanız otomatik olarak kod sayfasına eklenecektir. Ancak bunlardan farklı bir olay için fonksiyon tanımlamak isterseniz, bunu Properties bölmesinde bulunan Event butonuna tıklayarak çıkan olay listesinden ilgili olaya çift tıklayarak gerçekleştirebilirsiniz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim65.png" rel="lightbox[207]"><img class="aligncenter size-full wp-image-213" title="Resim6" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim65.png" alt="" width="283" height="605" /></a>Araçlar değişik olaylara yanıt verebiliyorlar.</p>
<p>Bizde ilk örneğimizde eklediğimiz düğmeye tıklandığında bir mesaj kutusu ile kullanıcılarımıza selam vermek istiyoruz. Bunun için dizayn ekranında eklediğimiz butona çift tıklayarak onun olay fonksiyonunun (button1_Click) yaratılmasını sağlıyoruz. Daha sonra bu fonksiyona bir mesaj kutusu içerisinde önceden eklediğimiz metin kutusundan alacağımız değerle birlikte bir mesajı aşağıdaki kod ile yazdırabiliriz:</p>
<pre class="brush: c#; ">

private void button1_Click(object sender, EventArgs e)

{

MessageBox.Show(&quot;Merhaba, &quot; + textBox1.Text + &quot;!&quot;);

}
</pre>
<p>Burada MessageBox, Windows Forms kütüphanesi altında bulunan mesaj kutularına ait nesnedir. İçerisine aldığı string tipindeki değişken değerini göstermeye yarar ve konsol uygulamalarında sıkça kullandığımız Console.WriteLine() fonksiyonu gibi kullanıcıya mesaj vermekte kullanılır. Burada dikkat etmemiz gereken diğer bir nokta textBox1 ismindeki değişkendir. Formumuza ekleyeceğiniz bütün araçlar, isminin küçük harfle başlayan ve sonunda bir numara görebileceğiniz değişkenler yardımıyla kod içerisinde kontrol edilebilir.  İlk örneğimizi bitirdikten sonra diğer araçların kullanımını öğrenmeye devam edebiliriz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim37.png" rel="lightbox[207]"><img class="aligncenter size-full wp-image-210" title="Resim3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim37.png" alt="" width="287" height="604" /></a>Button aracının özellikleri.</p>
<p>En önemli GUI nesneleri arasında sayabileceklerimizden biri hiç şüphesiz diğer araçları içinde bulunduran panellerdir. .NET içerisinde bulunan panel araçlarından biri olan sekmeler ise programcılar tarafından en çok sevilenlerden biridir. Dilerseniz ikinci örneğimize geçmeden önce formumuza bir sekme kontrolü (TabControl)  aracı ekleyerek ikinci örneğimizi farklı bir sekmede hazırlayalım. Sekmeler tabPage adı verilen yapraklardan oluşur ve sekme kontrol nesnesine sağ tuşla tıklayınca menüden  “Add Tab” seçeneği ile bu yaprakların yenilerini eklemek mümkündür. Biz ikinci örneğimizde doğumumuzdan itibaren kaç gün geçtiğini hesaplayan küçük bir uygulama hazırlayacağız ve bunun bütün bileşenlerini ikinci sekmemizde bulunduracağız.</p>
<p>Dizayn ekranında formda bulunan ikinci sekmeye tıkladığınızda boş bir panel elde etmiş olacağız. Bu alana doğum günümüzü girmemiz için bir metin kutusu ekleyebilirdik ancak bu tür tarih konularında kullanıcılara daha kolay bir arayüz sağlayan DateTimePicker aracı işimize daha çok yarayacaktır. Bu aracı formumuza ekledikten sonra altına bir buton yerleştirerek şimdiki zamanla seçilen tarih arasında kaç gün geçtiğini hesaplayan fonksiyonu çalıştıracak bir tetikleyici bulundurabiliriz. C# içerisinde geçerli tarih ve saat  değerlerini tutmak için hazırlanmış bir veri tipi bulunur. DateTime ismindeki bu veri tipleri 1970 yılı Ocak ayından beri artan bir değere sahiptir ve bu değere göre zamanı saklar. Sakladığı değer long tipinde bir sayı olsa da, tarihsel bir değer istediğimiz zaman bize yıl, hafta, gün ve saat gibi farklı aralıklarda istediğimiz türden veri döndürebilen fonksiyonları bulunmaktadır. DateTime nesnelerinin bir diğer kullanım alanı da Now isimli özelliğinin “çağırıldığı zamanı” döndürerek zaman aralığı hesaplamalarında bize yardımcı olabilmesidir.</p>
<pre class="brush: c#; ">

private void button2_Click(object sender, EventArgs e)

{

//Örnek 2

DateTime dt = dateTimePicker1.Value;

DateTime simdikiZaman = DateTime.Now;

TimeSpan zaman = simdikiZaman - dt;

MessageBox.Show(&quot;Siz dogduktan sonra &quot; + zaman.Days +&quot; gün geçmis. &quot;);

}
</pre>
<p>Ancak iki zaman arasında matematiksel işlem yapmak kolay olmayacağı için TimeSpan isimli başka bir nesneden de yardım almamız gerekebilir. Biz de örneğimizde butonumuzun tıklanma olayına önce DateTimePicker nesnesinin sahip olduğu değeri ve şimdiki zamanı saklayan iki adet DateTime nesnesi oluşturarak başlıyoruz. Daha sonra eklediğimiz bir TimeSpan objesi bu öğelerin arasındaki zamanı saklamak için kullanılıyor. En son yaptığımız işlem ise ortaya bir mesaj kutusu çıkararak bu iki tarih arasında kaç gün olduğunu kullanıcıya bildirmek oluyor.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim48.png" rel="lightbox[207]"><img class="aligncenter size-full wp-image-211" title="Resim4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim48.png" alt="" width="313" height="327" /></a>İkinci örneğimizin dizayn görüntüsü.</p>
<p>Windows Forms uygulamalarına giriş yapmamızı sağlayan örneklerimizde bazı kullanıcı arayüzü araçlarını tanıtma fırsatımız oldu. Aralarında renk seçmeye yarayan ColorDialog gibi aşina olduklarımızdan, seri porttan veri gönderip almaya yarayan araçlara kadar birçok çeşit bulunan bu araçları, sahip olduğu özellikleri ve olayları boş zamanlarınızda incelemenizi tavsiye ederim. C# ve .NET ile geliştirilmesi çok kolay bir hal alan Forms uygulamaları, internet tabanlı uygulamalar ne kadar gelişse de günümüzde hala oldukça yoğun kullanıma sahip olan ve kullanıcıya gerçekten birçok kolaylık sağlayan bir yapıya sahip. Hazırladığınız uygulamayı kullanıma açmadan önce farklı bilgisayarlarda, çözünürlüklerde ve farklı sürüm Windows işletim sistemlerinde denemeniz de önemli. Örneğin bir takım araçların stil ve görünüm özellikleri farklı Windows temaları altında bile değişiklik gösterebilir.</p>
<p>Bu yazıyla birlikte blogumdaki C# dersleri serisinin sonuna geliyorum..  Dersler hakkındaki görüşlerinizi benimle paylaşırsanız çok sevinirim, umarım bu yazılar bazılarına yardımcı olabilmiştir! :) Sizden gelen görüşlere göre derslere devam edebilir yada farklı konularda buna benzer yazılar hazırlayabilirim, yeter ki fikirlerinizi belirtin :)</p>
<p>p.s. Bu yazı Ocak 2009 tarihinde yazılmıstır.</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;t=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari&amp;link=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari&amp;summary=Uzun%20s%C3%BCredir%20devam%20eden%20C%23%20derslerimizde%20ge%C3%A7ti%C4%9Fimiz%20yazida%20temel%20programlama%20konular%C4%B1n%C4%B1%20geride%20b%C4%B1rakt%C4%B1k%20ve%20art%C4%B1k%20siyah%20beyaz%20konsol%20pencerelerinden%20kurtulup%20Windows%20Forms%20uygulamalar%C4%B1n%C4%B1n%20renkli%20d%C3%BCnyas%C4%B1na%20ad%C4%B1m%20atmaya%20haz%C4%B1r%C4%B1z.%20Grafiksel%20kullan%C4%B1c%C4%B1%20arabirimi%20%28GUI%29%20diye%20tabir%20edilen%20aray%C3%BCzler%20farkl%C4%B1%20programlama%20dillerinin%20i%C5%9Fletim%20sistemleriyle%20entegre%20olarak%20kullan%C4%B1c%C4%B1lar%C4%B1%20metin%20tabanl%C4%B1%20programlar%C4%B1n%20s%C4%B1k%C4%B1c%C4%B1%20ve%20monoton%20yap%C4%B1s%C4%B1ndan%20kurtar%C4%B1rlar.%20%C3%96zellikle%20konsol%20uygulamalar%C4%B1%20i%C3%A7in%20Visual%20Studio%20kullanmay%C4%B1%20tercih%20etmemi%C5%9F%20olabilirsiniz%20ancak%20Windows%20Forms%20taraf%C4%B1nda%20uygulama%20geli%C5%9Ftirmek%20istiyorsan%C4%B1z%20bu%20al%C4%B1%C5%9Fkanl%C4%B1%C4%9F%C4%B1n%C4%B1zdan%20hemen%20vazge%C3%A7menizi%20%C3%B6neririm.%20Windows%20Forms%20uygulamalar%C4%B1%20geli%C5%9Ftirmek%20i%C3%A7in%20yine%20Visual%20Studio%E2%80%99nun%20%C3%BCcretsiz%20Express%20s%C3%BCr%C3%BCmlerini%20kullanabilirsiniz.%0D%0A%0D%0AGUI%20k%C3%BCt%C3%BCphanelerinin%20destekledi%C4%9Fi%20farkl%C4%B1%20%C3%B6%C4%9Feleri%20kullanarak%20uygulamalar%C4%B1m%C4%B1za%20farkl%C4%B1%20%C3%B6zellikler%20kazand%C4%B1rmak%20da%20olduk%C3%A7a%20kolayd%C4%B1r.%20Butonlar%2C%20metin%20kutular%C4%B1%2C%20ikon%20ve%20sekmeler%20gibi%20kullan%C4%B1c%C4%B1lar%C4%B1n%20a%C5%9Fina%20oldu%C4%9Fu%20bu%20%C3%B6%C4%9Feler%20ile%20C%23%20uygulamalar%C4%B1m%C4%B1z%20hem%20g%C3%B6ze%20hitap%20edecek%20hem%20de%20daha%20i%C5%9Flevsel%20olacaklar.%20Yaz%C4%B1n%C4%B1n%20ba%C5%9F%C4%B1nda%20Windows%20Forms%20konusuna%20de%C4%9Finece%C4%9Fimizi%20belirtsek%20de%20burada%20yapaca%C4%9F%C4%B1m%C4%B1z%20%C3%B6rnekleri%20Linux%20alt%C4%B1nda%20Mono%20kullanarak%20da%20yapabilmeniz%20m%C3%BCmk%C3%BCn.%20Bildi%C4%9Finiz%20gibi%20platformdan%20ba%C4%9F%C4%B1ms%C4%B1z%20olarak%20%C3%A7al%C4%B1%C5%9Fan%20.NET%20uygulamalar%C4%B1%20Linux%20alt%C4%B1nda%20Mono%20Projesi%20kapsam%C4%B1nda%20%C3%A7al%C4%B1%C5%9F%C4%B1yor%20ve%20Mono%20%C3%A7ok%20g%C3%BC%C3%A7l%C3%BC%20GUI%20ara%C3%A7lar%C4%B1na%20sahip.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;srcTitle=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari&amp;snippet=Uzun%20s%C3%BCredir%20devam%20eden%20C%23%20derslerimizde%20ge%C3%A7ti%C4%9Fimiz%20yazida%20temel%20programlama%20konular%C4%B1n%C4%B1%20geride%20b%C4%B1rakt%C4%B1k%20ve%20art%C4%B1k%20siyah%20beyaz%20konsol%20pencerelerinden%20kurtulup%20Windows%20Forms%20uygulamalar%C4%B1n%C4%B1n%20renkli%20d%C3%BCnyas%C4%B1na%20ad%C4%B1m%20atmaya%20haz%C4%B1r%C4%B1z.%20Grafiksel%20kullan%C4%B1c%C4%B1%20arabirimi%20%28GUI%29%20diye%20tabir%20edilen%20aray%C3%BCzler%20farkl%C4%B1%20programlama%20dillerinin%20i%C5%9Fletim%20sistemleriyle%20entegre%20olarak%20kullan%C4%B1c%C4%B1lar%C4%B1%20metin%20tabanl%C4%B1%20programlar%C4%B1n%20s%C4%B1k%C4%B1c%C4%B1%20ve%20monoton%20yap%C4%B1s%C4%B1ndan%20kurtar%C4%B1rlar.%20%C3%96zellikle%20konsol%20uygulamalar%C4%B1%20i%C3%A7in%20Visual%20Studio%20kullanmay%C4%B1%20tercih%20etmemi%C5%9F%20olabilirsiniz%20ancak%20Windows%20Forms%20taraf%C4%B1nda%20uygulama%20geli%C5%9Ftirmek%20istiyorsan%C4%B1z%20bu%20al%C4%B1%C5%9Fkanl%C4%B1%C4%9F%C4%B1n%C4%B1zdan%20hemen%20vazge%C3%A7menizi%20%C3%B6neririm.%20Windows%20Forms%20uygulamalar%C4%B1%20geli%C5%9Ftirmek%20i%C3%A7in%20yine%20Visual%20Studio%E2%80%99nun%20%C3%BCcretsiz%20Express%20s%C3%BCr%C3%BCmlerini%20kullanabilirsiniz.%0D%0A%0D%0AGUI%20k%C3%BCt%C3%BCphanelerinin%20destekledi%C4%9Fi%20farkl%C4%B1%20%C3%B6%C4%9Feleri%20kullanarak%20uygulamalar%C4%B1m%C4%B1za%20farkl%C4%B1%20%C3%B6zellikler%20kazand%C4%B1rmak%20da%20olduk%C3%A7a%20kolayd%C4%B1r.%20Butonlar%2C%20metin%20kutular%C4%B1%2C%20ikon%20ve%20sekmeler%20gibi%20kullan%C4%B1c%C4%B1lar%C4%B1n%20a%C5%9Fina%20oldu%C4%9Fu%20bu%20%C3%B6%C4%9Feler%20ile%20C%23%20uygulamalar%C4%B1m%C4%B1z%20hem%20g%C3%B6ze%20hitap%20edecek%20hem%20de%20daha%20i%C5%9Flevsel%20olacaklar.%20Yaz%C4%B1n%C4%B1n%20ba%C5%9F%C4%B1nda%20Windows%20Forms%20konusuna%20de%C4%9Finece%C4%9Fimizi%20belirtsek%20de%20burada%20yapaca%C4%9F%C4%B1m%C4%B1z%20%C3%B6rnekleri%20Linux%20alt%C4%B1nda%20Mono%20kullanarak%20da%20yapabilmeniz%20m%C3%BCmk%C3%BCn.%20Bildi%C4%9Finiz%20gibi%20platformdan%20ba%C4%9F%C4%B1ms%C4%B1z%20olarak%20%C3%A7al%C4%B1%C5%9Fan%20.NET%20uygulamalar%C4%B1%20Linux%20alt%C4%B1nda%20Mono%20Projesi%20kapsam%C4%B1nda%20%C3%A7al%C4%B1%C5%9F%C4%B1yor%20ve%20Mono%20%C3%A7ok%20g%C3%BC%C3%A7l%C3%BC%20GUI%20ara%C3%A7lar%C4%B1na%20sahip." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/&amp;title=C%23+Dersleri+-+7%3A+Windows+Forms+Uygulamalari" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=c-dersleri-6-fonksiyonlar-ve-siniflar</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:35:59 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersleri]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[command promt]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dersleri]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[dongu]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[fonksiyon]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[program kontrolleri]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[sinif]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=195</guid>
		<description><![CDATA[İlk derslerimizden itibaren hazırladığımız konsol uygulamaları ile C# temel yapılarını inceliyoruz. Bu dersimizde daha önce değinme fırsatı bulamadığımız fonksiyon, sınıf ve obje yapılarını inceleyerek eğitimimizin C# temellerine dair bölümünü tamamlayacağız. Önümüzdeki eğitimler içerisinde Visual Studio altında Windows Forms uygulamaları geliştirerek her ay farklı bir alanda uygulama geliştirme fırsatı yakalayacağız ve siyah komut satırı ekranına veda edeceğiz.

Veri yönetim biçimleri her programlama dilinde farklıdır. Nesne tabanlı programlama dillerinde ise çalışma sırasında bütün veriler nesnelere dönüşür ve referans ya da doğrudan bağlantıyla program akışı içerisinde kullanılırlar. C# altında da bütün veri tipleri ikiye ayrılır: temel tipteki nesneler ve sınıf referansı nesneleri. Temel tipteki nesneler önceki örneklerimizde bolca kullandığımız, byte, sayı, karakter veya metin değeri alan int, char veya string gibi C# içerisindeki dahili tiplerdir. Diğer veri tipleri ise bizim yazdığımız sınıflar (class) kullanılarak üretilen nesnelerdir.. Sınıflar nesne yönelimli programlamanın çekirdeğini oluşturan en küçük yapılar olarak projenizin sürdürülebilirliği, geliştirilebilir ve güvenliğine katkıda bulunur.

Ancak sınıf yapısına geçmeden önce, sınıfları oluşturan diğer bir önemli unsur olan fonksiyonlara değinmeliyiz. Programlama dillerinin en çok kullanılan özelliklerinden biri olan fonksiyonlar, belirli parametreler alarak çalışan ve kendi içinde belirlenen hesaplamayı yaparak cevabı çağrıldığı yere döndürebilen yapılardır. Özellikle uygulamamızın kodlarında birbirini tekrar eden yerler olduğunda veya birçok yerde kullanacağımız bir fonksiyonu defalarca yazmamız gerektiğinde fonksiyonlar yardımımıza koşar. ayrıca fonksiyon kullanmak, bu çok tekrar eden kodlarda herhangi bir değişiklik yapmamız gerekirse tek yerden bu değişikliği bütün uygulama çerçevesinde gerçekleştirmemize olanak verir.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik3.jpg" rel="lightbox[195]"><img class="aligncenter size-full wp-image-196" title="baslik" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik3.jpg" alt="" width="500" height="375" /></a>İlk derslerimizden itibaren hazırladığımız konsol uygulamaları ile C# temel yapılarını inceliyoruz. Bu dersimizde daha önce değinme fırsatı bulamadığımız fonksiyon, sınıf ve obje yapılarını inceleyerek eğitimimizin C# temellerine dair bölümünü tamamlayacağız. Önümüzdeki eğitimler içerisinde Visual Studio altında Windows Forms uygulamaları geliştirerek her ay farklı bir alanda uygulama geliştirme fırsatı yakalayacağız ve siyah komut satırı ekranına veda edeceğiz.</p>
<p>Veri yönetim biçimleri her programlama dilinde farklıdır. Nesne tabanlı programlama dillerinde ise çalışma sırasında bütün veriler nesnelere dönüşür ve referans ya da doğrudan bağlantıyla program akışı içerisinde kullanılırlar. C# altında da bütün veri tipleri ikiye ayrılır: temel tipteki nesneler ve sınıf referansı nesneleri. Temel tipteki nesneler önceki örneklerimizde bolca kullandığımız, byte, sayı, karakter veya metin değeri alan int, char veya string gibi C# içerisindeki dahili tiplerdir. Diğer veri tipleri ise bizim yazdığımız sınıflar (class) kullanılarak üretilen nesnelerdir.. Sınıflar nesne yönelimli programlamanın çekirdeğini oluşturan en küçük yapılar olarak projenizin sürdürülebilirliği, geliştirilebilir ve güvenliğine katkıda bulunur.</p>
<p>Ancak sınıf yapısına geçmeden önce, sınıfları oluşturan diğer bir önemli unsur olan fonksiyonlara değinmeliyiz. Programlama dillerinin en çok kullanılan özelliklerinden biri olan fonksiyonlar, belirli parametreler alarak çalışan ve kendi içinde belirlenen hesaplamayı yaparak cevabı çağrıldığı yere döndürebilen yapılardır. Özellikle uygulamamızın kodlarında birbirini tekrar eden yerler olduğunda veya birçok yerde kullanacağımız bir fonksiyonu defalarca yazmamız gerektiğinde fonksiyonlar yardımımıza koşar. ayrıca fonksiyon kullanmak, bu çok tekrar eden kodlarda herhangi bir değişiklik yapmamız gerekirse tek yerden bu değişikliği bütün uygulama çerçevesinde gerçekleştirmemize olanak verir.</p>
<p><span id="more-195"></span></p>
<p><strong>Fonksiyon Kullanımı </strong></p>
<p>Bütün fonksiyonlar stabil bir yapı içerisinde tanımlanır ve fonksiyona ait kodlar geçmiş eğitimlerde gördüğümüz döngülerde olduğu gibi süslü parantezler { ve } arasına yazılır. Yine burada önemli olan, bu parantezler ile kod blokları oluşturduğumuz için parantezi kapattıktan sonra noktalı virgül kullanmamamız gerektiği. Kodumuzu yer aldığı alandan önce fonksiyonun erişim parametreleri, döndüreceği değer, ismi ve varsa aldığı parametreler yazılmalıdır. Fonksiyonlar amaçlarına göre kendi yazıldığı sınıf içerisinde kullanıldığı gibi, başka sınıflar tarafından da ilgili sınıfın bir nesnesi yaratılarak kullanılabilirler. Bir fonksiyonu çağırmak için, eğer aynı sınıf içerisinde ise fonksiyon(parametreler) şeklinde çağırabilir, farklı bir sınıf içerisinde tanımlıysa ileride değineceğimiz şekilde o sınıftan bir nesne yaratarak çağırabiliriz. Bu sayede birçok sınıf birlikte çalışabilir ancak bazı fonksiyonlar sadece o sınıfın kendi iç işleyişi için gereklidir ve o dışarıdan çağırılmaması hatalara neden olmaması adına önemlidir. Bu yüzden fonksiyon tanımlamalarına başlarken ilk önce bir erişim denetliyici parametre kullanarak ilgili fonksiyonun hangi sınıflar tarafından görülebileceğini belirtebiliriz. Kullanabileceğimiz farklı değişkenlerden en önemlileri “public” ve “private”’dir. Eğer bir fonksiyonun uygulamanın bütün sınıfları tarafından çağrılmasında bir sakınca yoksa onu ortak yani “public” olarak tanımlamalıyız. Ancak tersi bir durum içi gizli (private) bir fonksiyon olarak tanımlayarak ilgili sınıf dışından kullanılmasını engelleyebiliriz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-3.png" rel="lightbox[195]"><img class="aligncenter size-full wp-image-201" title="Resim 3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-3.png" alt="" width="445" height="106" /></a>Örnek fonksiyon deklerasyonu</p>
<p>İkinci adım olarak fonksiyonumuzun dönüş parametresini belirlemeliyiz.  Hesap yapmakla görevli bazı fonksiyonlar, hesaplamaları yapacakları değerleri parametre olarak aldıktan sonra, ilgili işlemleri kendi içinde yapar ve yaptığı hesabın sonucunu geri döndürebilir. Biz bu dönen değeri başka bir değişkene atayabilir ya da ekranda yazdırabiliriz. İlk örneğimizde konsolda çalışan basit bir hesap makinesi hazırladık. Burada gördüğünüz gibi Islemler isminde bir sınıfımız bulunmakta ve bu sınıfın içerisinde Topla ve Carp adında iki fonksiyon mevcut. Ondalık sayı değerini ifade eden double türünden değerleri toplayabilen ve çarpabilen bu fonksiyonlar başka sınıflardan da çağırılabildiği için public olarak erişilebilir kılınmış ve sonuç olarak bir ondalık değer döndürebileceğinden double türünden bir dönüş değeri tanımlanmış.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-1.png" rel="lightbox[195]"><img class="aligncenter size-full wp-image-199" title="Resim 1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-1.png" alt="" width="352" height="223" /></a>İlk örneğimizin ekran çıktısı</p>
<p>Ancak fonksiyonların her zaman bir değer döndürmeleri zorunlu değildir. Örneğin ekrana yazı yazdıran veya veritabanına girdiler ekleyen bir fonksiyonun çağrıldığı yere bir değer döndürmesi gereksizdir. Böyle durumlarda döndürülecek değerin olmadığını belirten void ifadesi yazarak fonksiyonumuzu tanımlıyoruz. Fonksiyonların döndürmesi gereken değerler olduğunda ise, bu değeri hesaplandıktan sonra return anahtar sözcüğünü kullanılarak çağrıldığı noktaya iletebiliriz. Örneğimizdeki Topla ve Carp fonksiyonları da aldığı değerleri basit olarak matematiksel bir işlem yaptığı için bunları direk return ifadesinin yanında gerçekleştirebiliyoruz. Burada dikkat etmemiz gereken nokta, return ifadesinin fonksiyonu sonlandırdığını bilmek. Bu ifadeden sonra fonksiyondan çıkılacağı için “return”’ü bütün işlemlerini bitirdikten sonra ya da bazı koşullar sağlandığında çıkmak isterseniz if gibi ifadelerin içerisinde kullanmamız gerekiyor.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim64.png" rel="lightbox[195]"><img class="aligncenter size-full wp-image-197" title="Resim6" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim64.png" alt="" width="358" height="270" /></a>IntelliSense programcılara çok büyük kolaylı sağlıyor.</p>
<p>Dönüş tipini belirledikten sonra fonksiyonumuza bir isim verip, parantezler içerisinde fonksiyonun alacağı ifadeleri tanımlıyoruz. Fonksiyon içinde kullanılacak parametreler burada vereceğimiz isimler ile anılan lokal değişkenler haline gelirler. Ayrıca parametre isimlerinden önce mutlaka veri tiplerini de belirmemiz gerekmekte.</p>
<p><strong>Sınıf ve Nesneler</strong></p>
<p>Daha önce bahsettiğimiz gibi, belirli fonksiyonların sınıflar altında gruplanarak uygulama içerisinde belirli bir işlevi yürütmeye çalışırlar. Geçtiğimiz eğitimlerden hatırlayacak olursanız, C# ta uygulamalar, Main ismindeki özel bir fonksiyon ile başlar. Yani programımız çalışırken bu Main fonksiyonu aranır ve bütün işlemler bu fonksiyon ile başlatılır. Önemli olan bir nokta, bütün program içerisinde sadece bir adet Main fonksiyonunun olması gerektiğidir. Programımız sahip olduğu nesneleri kullanarak işlevlerini yerine getirir ve sınıflar bu nesnelerin yaratılması için gerekli bir kalıp görevi görür.</p>
<p>Yaratılan nesneler kendi isimleriyle çağırılırlar ve bağlı bulunduğu sınıfın fonksiyonlarını çalıştırmamıza imkân verirler. Bir sınıftan yeni bir nesne yaratmak için ise yeni anlamına gelen “new” anahtar sözcüğünden yararlanıyoruz.</p>
<p>Ornek nesneİsmi = new Ornek();</p>
<p>Şeklinde örnek bir sınıfa dair yeni bir nesne yaratabiliriz. Daha sonra nesneİsmi bu nesnenin referansı haline gelecek ve kodun ilerleyen kısmında bu nesneyi temsil edecektir. Herhangi bir nesnenin içerdiği fonksiyonlara, o nesnenin yanına bir nokta koyarak ulaşabiliriz. Bu gibi durumlarda noktadan sonra ilgili fonksiyonun ismini yazmamız gerekse de Visual Studio’nun IntelliSense adı verilen özelliği, siz nokta işaretini koyduğunuz anda kullanabileceğiniz fonksiyonları imlecin sonunda size listeliyor. Bütün geçerli değişkenleri, fonksiyonları ve aldığı parametreleri görebileceğimiz bu liste gerçekten çok büyük bir zaman avantajı sağlamakta.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-4.png" rel="lightbox[195]"><img class="aligncenter size-full wp-image-202" title="Resim 4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-4.png" alt="" width="448" height="431" /></a>Örnek sınıf ve isim uzayı kullanımı</p>
<p>Yeni bir sınıf yaratmak için sağ tarafta bulunan Solution Explorer içerisinde projemize sağ tuşla tıklayıp, New Item -&gt; Class seçeneğini seçebiliriz. Burada görebileceğimiz gibi sınıf (class) ismi otomatik olarak atanacaktır. Burada class anahtar sözcüğünden sonra sınıfımızın ismini yazıyor ve sonraki kod blokları içerisine ilgili kodlarımızı yazıyoruz. Burada dikkat çekici diğer bir ifade ise namespace ifadesiyle tanımlanan isim uzaylarıdır. İsim uzayları c# içerisindeki sınıfların gruplandığı, içerisine toplanan belirli gruptaki sınıfların bir katman olarak kullanılabildiği üst yapıdır. Aynı gruptaki bütün sınıflar, aynı isim uzayı içerisinde çalışmalıdır ve bu isim uzaylarının isimleri namespace ifadesinin yanında belirtilir.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-5.png" rel="lightbox[195]"><img class="aligncenter size-medium wp-image-203" title="Resim 5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-5-300x136.png" alt="" width="300" height="136" /></a>Bütün uygulamalar Main fonksiyonu ile başlarlar..</p>
<p>Sınıflar içerisinde bütün fonksiyonların ve diğer sınıfların görebileceği değişkenler oluşturmak ta mümkündür. Global değişken denilen bu tipler, başına yazılan bir erişim denetleyicisi sayesinde diğer sınıflar tarafından görünebilirliğini değiştirebilir. Fonksiyonlar içerisindeki lokal veriler ile çakışmaması için bu değişkenlere farklı bir isim atamak doğru bir karar. Yine de bir fonksiyon içinde this.GlobalDeğişkenAdı biçiminde bu değişkenlere ulaşmak mümkündür.</p>
<p>Sınıflar için oldukça önemli olan bu global değişkenlerin ilk atamalarının yapılması ise diğer bir önemli konu. Nesneleri oluşturmak için bir kalıp olarak kullandığımız sınıflar, bu değişkenlerin aldığı değerler ile birbirinden farklı nesneler üretebilirler. Bu değişkenlere değer veren fonksiyonlar oluşturabileceğimiz gibi, direk nesne oluşumunda da bu değişkenlere değerini atayabiliriz. Yapılandırıcı (constructor) denilen özel yapılar bir nesne oluşturulmadan bu atamaları ve varsa farklı işlemleri yapmamıza olanak verir.  Yapılandırıcı oluşturmak için herhangi bir dönüş tipi olmayan ve sınıfla aynı isimdeki fonksiyonları kullanırız. Örneğin Arac isimli bir sınıfımız varsa;</p>
<p>public Arac(int hiz, string renk)  { … }</p>
<p>Şeklinde bu sınıfa örnek bir yapılandırıcı oluşturabiliriz. Buradaki “hiz” ve “renk” değerleri, Arac sınıfının ilgili global değişkenlerini atamakta kullanılabilirler. Bu aşamadan sonra yapılandırıcı kullanılarak oluşturulan nesneler gerekli başlangıç değerlerini alarak oluşmuş olurlar. Bir örnek vermek gerekirse, aynı Arac sınıfından bu şekilde yeni nesne yaratabiliriz:</p>
<p>Arac yeniArac = new Arac(180, “mavi”);</p>
<p>Burada new ifadesinin yanında Arac sınıfının yapılandırıcısı doğrultusunda değerler vererek sınıfı başlangıç değerleriyle yaratabiliyoruz. Son olarak ikinci örneğimize bakacak olursak, yarattığımız bir Saat sınıfının saat, dakika ve saniye olmak üzere 3 global değişkeni bulunmakta. Bu değişkenler bir yapılandırıcı sayesinde nesne yaratıldığında değer alıyor ve SaatiGoster fonksiyonu ile ekrana yazdırılıyorlar. Saati gösteren fonksiyonumuzu döneceği bir değer bulunmadığı için void ifadesi ile yaratıyoruz. Konsol uygulamalarında göstereceğimiz bu son örnek ile C# derslerinin bu bölümünü tamamlıyoruz.. Bir sonraki yazıda görüşmek üzere ;)</p>
<p>p.s. Bu yazı Aralık 2008 tarihinde hazırlanmıştır.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-2.png" rel="lightbox[195]"><img class="aligncenter size-medium wp-image-200" title="Resim 2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim-2-300x144.png" alt="" width="300" height="144" /></a>İkinci örneğimizin sonuç ekranı</p>
<p>Örnek Kod 1:</p>
<pre class="brush: c#; ">

//1. Örnek

class Islemler

{

public double Topla(double a, double b)

{

return a + b;

}

public double Carp(double a, double b)

{

return a * b;

}

public static void Main()

{

//Once sınıfımızdan bir nesne yaratıyoruz.

Islemler hm = new Islemler();

//Örnek olarak 10 ve 20 sayısını kullanıyoruz.

Console.WriteLine(“Toplam: ” + hm.Topla(10, 20) + “\nÇarpım: ” + hm.Carp(10, 20));

}

}
</pre>
<p>Örnek Kod 2:</p>
<pre class="brush: c#; ">

//2. Örnek

class Saat

{

public int saat;

public int dakika;

public int saniye;

public Saat(int yeniSaat, int yeniDakika, int yeniSaniye)

{

saat = yeniSaat;

dakika = yeniDakika;

saniye = yeniSaniye;

}

public void SaatiGoster()

{

Console.WriteLine(&quot;Saatimiz: &quot; + saat + &quot;:&quot; + dakika + &quot;:&quot; + saniye);

}

static void Main(string[] args)

{

//Saat sınıfından yapılandırıcıyı kullanarak bir nesne yaratıyoruz.

Saat saatim = new Saat(22, 10, 56);

//SaatiGoster fonksiyonunu cagiriyoruz.

saatim.SaatiGoster();

}

}
</pre>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;t=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari&amp;link=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari&amp;summary=%C4%B0lk%20derslerimizden%20itibaren%20haz%C4%B1rlad%C4%B1%C4%9F%C4%B1m%C4%B1z%20konsol%20uygulamalar%C4%B1%20ile%20C%23%20temel%20yap%C4%B1lar%C4%B1n%C4%B1%20inceliyoruz.%20Bu%20dersimizde%20daha%20%C3%B6nce%20de%C4%9Finme%20f%C4%B1rsat%C4%B1%20bulamad%C4%B1%C4%9F%C4%B1m%C4%B1z%20fonksiyon%2C%20s%C4%B1n%C4%B1f%20ve%20obje%20yap%C4%B1lar%C4%B1n%C4%B1%20inceleyerek%20e%C4%9Fitimimizin%20C%23%20temellerine%20dair%20b%C3%B6l%C3%BCm%C3%BCn%C3%BC%20tamamlayaca%C4%9F%C4%B1z.%20%C3%96n%C3%BCm%C3%BCzdeki%20e%C4%9Fitimler%20i%C3%A7erisinde%20Visual%20Studio%20alt%C4%B1nda%20Windows%20Forms%20uygulamalar%C4%B1%20geli%C5%9Ftirerek%20her%20ay%20farkl%C4%B1%20bir%20alanda%20uygulama%20geli%C5%9Ftirme%20f%C4%B1rsat%C4%B1%20yakalayaca%C4%9F%C4%B1z%20ve%20siyah%20komut%20sat%C4%B1r%C4%B1%20ekran%C4%B1na%20veda%20edece%C4%9Fiz.%0D%0A%0D%0AVeri%20y%C3%B6netim%20bi%C3%A7imleri%20her%20programlama%20dilinde%20farkl%C4%B1d%C4%B1r.%20Nesne%20tabanl%C4%B1%20programlama%20dillerinde%20ise%20%C3%A7al%C4%B1%C5%9Fma%20s%C4%B1ras%C4%B1nda%20b%C3%BCt%C3%BCn%20veriler%20nesnelere%20d%C3%B6n%C3%BC%C5%9F%C3%BCr%20ve%20referans%20ya%20da%20do%C4%9Frudan%20ba%C4%9Flant%C4%B1yla%20program%20ak%C4%B1%C5%9F%C4%B1%20i%C3%A7erisinde%20kullan%C4%B1l%C4%B1rlar.%20C%23%20alt%C4%B1nda%20da%20b%C3%BCt%C3%BCn%20veri%20tipleri%20ikiye%20ayr%C4%B1l%C4%B1r%3A%20temel%20tipteki%20nesneler%20ve%20s%C4%B1n%C4%B1f%20referans%C4%B1%20nesneleri.%20Temel%20tipteki%20nesneler%20%C3%B6nceki%20%C3%B6rneklerimizde%20bolca%20kulland%C4%B1%C4%9F%C4%B1m%C4%B1z%2C%20byte%2C%20say%C4%B1%2C%20karakter%20veya%20metin%20de%C4%9Feri%20alan%20int%2C%20char%20veya%20string%20gibi%20C%23%20i%C3%A7erisindeki%20dahili%20tiplerdir.%20Di%C4%9Fer%20veri%20tipleri%20ise%20bizim%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20s%C4%B1n%C4%B1flar%20%28class%29%20kullan%C4%B1larak%20%C3%BCretilen%20nesnelerdir..%20S%C4%B1n%C4%B1flar%20nesne%20y%C3%B6nelimli%20programlaman%C4%B1n%20%C3%A7ekirde%C4%9Fini%20olu%C5%9Fturan%20en%20k%C3%BC%C3%A7%C3%BCk%20yap%C4%B1lar%20olarak%20projenizin%20s%C3%BCrd%C3%BCr%C3%BClebilirli%C4%9Fi%2C%20geli%C5%9Ftirilebilir%20ve%20g%C3%BCvenli%C4%9Fine%20katk%C4%B1da%20bulunur.%0D%0A%0D%0AAncak%20s%C4%B1n%C4%B1f%20yap%C4%B1s%C4%B1na%20ge%C3%A7meden%20%C3%B6nce%2C%20s%C4%B1n%C4%B1flar%C4%B1%20olu%C5%9Fturan%20di%C4%9Fer%20bir%20%C3%B6nemli%20unsur%20olan%20fonksiyonlara%20de%C4%9Finmeliyiz.%20Programlama%20dillerinin%20en%20%C3%A7ok%20kullan%C4%B1lan%20%C3%B6zelliklerinden%20biri%20olan%20fonksiyonlar%2C%20belirli%20parametreler%20alarak%20%C3%A7al%C4%B1%C5%9Fan%20ve%20kendi%20i%C3%A7inde%20belirlenen%20hesaplamay%C4%B1%20yaparak%20cevab%C4%B1%20%C3%A7a%C4%9Fr%C4%B1ld%C4%B1%C4%9F%C4%B1%20yere%20d%C3%B6nd%C3%BCrebilen%20yap%C4%B1lard%C4%B1r.%20%C3%96zellikle%20uygulamam%C4%B1z%C4%B1n%20kodlar%C4%B1nda%20birbirini%20tekrar%20eden%20yerler%20oldu%C4%9Funda%20veya%20bir%C3%A7ok%20yerde%20kullanaca%C4%9F%C4%B1m%C4%B1z%20bir%20fonksiyonu%20defalarca%20yazmam%C4%B1z%20gerekti%C4%9Finde%20fonksiyonlar%20yard%C4%B1m%C4%B1m%C4%B1za%20ko%C5%9Far.%20ayr%C4%B1ca%20fonksiyon%20kullanmak%2C%20bu%20%C3%A7ok%20tekrar%20eden%20kodlarda%20herhangi%20bir%20de%C4%9Fi%C5%9Fiklik%20yapmam%C4%B1z%20gerekirse%20tek%20yerden%20bu%20de%C4%9Fi%C5%9Fikli%C4%9Fi%20b%C3%BCt%C3%BCn%20uygulama%20%C3%A7er%C3%A7evesinde%20ger%C3%A7ekle%C5%9Ftirmemize%20olanak%20verir.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;srcTitle=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari&amp;snippet=%C4%B0lk%20derslerimizden%20itibaren%20haz%C4%B1rlad%C4%B1%C4%9F%C4%B1m%C4%B1z%20konsol%20uygulamalar%C4%B1%20ile%20C%23%20temel%20yap%C4%B1lar%C4%B1n%C4%B1%20inceliyoruz.%20Bu%20dersimizde%20daha%20%C3%B6nce%20de%C4%9Finme%20f%C4%B1rsat%C4%B1%20bulamad%C4%B1%C4%9F%C4%B1m%C4%B1z%20fonksiyon%2C%20s%C4%B1n%C4%B1f%20ve%20obje%20yap%C4%B1lar%C4%B1n%C4%B1%20inceleyerek%20e%C4%9Fitimimizin%20C%23%20temellerine%20dair%20b%C3%B6l%C3%BCm%C3%BCn%C3%BC%20tamamlayaca%C4%9F%C4%B1z.%20%C3%96n%C3%BCm%C3%BCzdeki%20e%C4%9Fitimler%20i%C3%A7erisinde%20Visual%20Studio%20alt%C4%B1nda%20Windows%20Forms%20uygulamalar%C4%B1%20geli%C5%9Ftirerek%20her%20ay%20farkl%C4%B1%20bir%20alanda%20uygulama%20geli%C5%9Ftirme%20f%C4%B1rsat%C4%B1%20yakalayaca%C4%9F%C4%B1z%20ve%20siyah%20komut%20sat%C4%B1r%C4%B1%20ekran%C4%B1na%20veda%20edece%C4%9Fiz.%0D%0A%0D%0AVeri%20y%C3%B6netim%20bi%C3%A7imleri%20her%20programlama%20dilinde%20farkl%C4%B1d%C4%B1r.%20Nesne%20tabanl%C4%B1%20programlama%20dillerinde%20ise%20%C3%A7al%C4%B1%C5%9Fma%20s%C4%B1ras%C4%B1nda%20b%C3%BCt%C3%BCn%20veriler%20nesnelere%20d%C3%B6n%C3%BC%C5%9F%C3%BCr%20ve%20referans%20ya%20da%20do%C4%9Frudan%20ba%C4%9Flant%C4%B1yla%20program%20ak%C4%B1%C5%9F%C4%B1%20i%C3%A7erisinde%20kullan%C4%B1l%C4%B1rlar.%20C%23%20alt%C4%B1nda%20da%20b%C3%BCt%C3%BCn%20veri%20tipleri%20ikiye%20ayr%C4%B1l%C4%B1r%3A%20temel%20tipteki%20nesneler%20ve%20s%C4%B1n%C4%B1f%20referans%C4%B1%20nesneleri.%20Temel%20tipteki%20nesneler%20%C3%B6nceki%20%C3%B6rneklerimizde%20bolca%20kulland%C4%B1%C4%9F%C4%B1m%C4%B1z%2C%20byte%2C%20say%C4%B1%2C%20karakter%20veya%20metin%20de%C4%9Feri%20alan%20int%2C%20char%20veya%20string%20gibi%20C%23%20i%C3%A7erisindeki%20dahili%20tiplerdir.%20Di%C4%9Fer%20veri%20tipleri%20ise%20bizim%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20s%C4%B1n%C4%B1flar%20%28class%29%20kullan%C4%B1larak%20%C3%BCretilen%20nesnelerdir..%20S%C4%B1n%C4%B1flar%20nesne%20y%C3%B6nelimli%20programlaman%C4%B1n%20%C3%A7ekirde%C4%9Fini%20olu%C5%9Fturan%20en%20k%C3%BC%C3%A7%C3%BCk%20yap%C4%B1lar%20olarak%20projenizin%20s%C3%BCrd%C3%BCr%C3%BClebilirli%C4%9Fi%2C%20geli%C5%9Ftirilebilir%20ve%20g%C3%BCvenli%C4%9Fine%20katk%C4%B1da%20bulunur.%0D%0A%0D%0AAncak%20s%C4%B1n%C4%B1f%20yap%C4%B1s%C4%B1na%20ge%C3%A7meden%20%C3%B6nce%2C%20s%C4%B1n%C4%B1flar%C4%B1%20olu%C5%9Fturan%20di%C4%9Fer%20bir%20%C3%B6nemli%20unsur%20olan%20fonksiyonlara%20de%C4%9Finmeliyiz.%20Programlama%20dillerinin%20en%20%C3%A7ok%20kullan%C4%B1lan%20%C3%B6zelliklerinden%20biri%20olan%20fonksiyonlar%2C%20belirli%20parametreler%20alarak%20%C3%A7al%C4%B1%C5%9Fan%20ve%20kendi%20i%C3%A7inde%20belirlenen%20hesaplamay%C4%B1%20yaparak%20cevab%C4%B1%20%C3%A7a%C4%9Fr%C4%B1ld%C4%B1%C4%9F%C4%B1%20yere%20d%C3%B6nd%C3%BCrebilen%20yap%C4%B1lard%C4%B1r.%20%C3%96zellikle%20uygulamam%C4%B1z%C4%B1n%20kodlar%C4%B1nda%20birbirini%20tekrar%20eden%20yerler%20oldu%C4%9Funda%20veya%20bir%C3%A7ok%20yerde%20kullanaca%C4%9F%C4%B1m%C4%B1z%20bir%20fonksiyonu%20defalarca%20yazmam%C4%B1z%20gerekti%C4%9Finde%20fonksiyonlar%20yard%C4%B1m%C4%B1m%C4%B1za%20ko%C5%9Far.%20ayr%C4%B1ca%20fonksiyon%20kullanmak%2C%20bu%20%C3%A7ok%20tekrar%20eden%20kodlarda%20herhangi%20bir%20de%C4%9Fi%C5%9Fiklik%20yapmam%C4%B1z%20gerekirse%20tek%20yerden%20bu%20de%C4%9Fi%C5%9Fikli%C4%9Fi%20b%C3%BCt%C3%BCn%20uygulama%20%C3%A7er%C3%A7evesinde%20ger%C3%A7ekle%C5%9Ftirmemize%20olanak%20verir." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/&amp;title=C%23+Dersleri+-+6%3A+Fonksiyonlar+ve+Sinif+Yapilari" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 5: Diziler</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=c-dersleri-5-diziler</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:39:02 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersleri]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[cok boyutlu diziler]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dersleri]]></category>
		<category><![CDATA[dizi]]></category>
		<category><![CDATA[diziler]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[dongu]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[program kontrolleri]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[tek boyutlu diziler]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=185</guid>
		<description><![CDATA[Derslerimizin ilk konularından biri olan değişkenlerin programlarımızın bazı değerleri hafızasında tutmak istediği zaman kullanıldığını biliyoruz. Farklı tiplerde String, int gibi sayı veya metin değerleriyle oluşturduğumuz değişkenlerin yanı sıra, kendi yarattığımız nesnelerin de değişkenler vasıtasıyla bellekte saklanabildiğine de önceki aylarda şahit olmuştuk. Ancak hazırladığımız uygulamalardaki verileri tek tek işlemek genel olarak uzun zaman alan ve bu verilerin sayısı arttığında kontrol etmesi güç bir görev. Bu yazımda temel programcılık öğelerinden biri olan diziler konusuna değinerek birçok değeri bir değişken içerisinde kullanabilmeye değineceğim.

Programlama dillerinde dizileri kullanmak bizi birçok satırda yazacağımız kod satırlarından ve birçok değişkenin yarattığı karışıklıktan kurtararırken, aynı işlemleri tek satır bir koda dönüştürerek daha basite indirgenmiş anlaşılır bir hale getirir. Örneğin 10 tane değişkenle işlem yapabilen bir uygulamayı yazmak çok zor değildir, ancak binlerce sayı kullanarak hesaplama yapmamız gerektiğinde bütün değerler için yeni bir isim bularak yeni değişkenler yaratmamız tamamen bir vakit kaybıdır. Dizilerin kullanımı bize zamandan kazanç sağlar ve daha sağlıklı kodlar üretmemize olanak tanır. Temelde sıralı olmayan elemanların bir araya gelmesiyle oluşan diziler, belirli bir sayıda veriyi bir değişkene bağlar ve bu değişken üzerinden döngü yapılarıyla bütün verilere çok hızlı bir biçimde arama, sıralama, değiştirme gibi işlemleri uygulamanıza imkân verir. Dizi tipindeki bir değişken içerisinde istediğimiz kadar veri tutmamız mümkündür, ancak burada önemli nokta bütün verilerin tiplerinin aynı olması gerektiğidir.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code2.jpg" rel="lightbox[185]"><img class="aligncenter size-full wp-image-186" title="code2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code2.jpg" alt="" width="450" height="351" /></a>Derslerimizin ilk konularından biri olan değişkenlerin programlarımızın bazı değerleri hafızasında tutmak istediği zaman kullanıldığını biliyoruz. Farklı tiplerde String, int gibi sayı veya metin değerleriyle oluşturduğumuz değişkenlerin yanı sıra, kendi yarattığımız nesnelerin de değişkenler vasıtasıyla bellekte saklanabildiğine de önceki aylarda şahit olmuştuk. Ancak hazırladığımız uygulamalardaki verileri tek tek işlemek genel olarak uzun zaman alan ve bu verilerin sayısı arttığında kontrol etmesi güç bir görev. Bu yazımda temel programcılık öğelerinden biri olan diziler konusuna değinerek birçok değeri bir değişken içerisinde kullanabilmeye değineceğim.</p>
<p>Programlama dillerinde dizileri kullanmak bizi birçok satırda yazacağımız kod satırlarından ve birçok değişkenin yarattığı karışıklıktan kurtararırken, aynı işlemleri tek satır bir koda dönüştürerek daha basite indirgenmiş anlaşılır bir hale getirir. Örneğin 10 tane değişkenle işlem yapabilen bir uygulamayı yazmak çok zor değildir, ancak binlerce sayı kullanarak hesaplama yapmamız gerektiğinde bütün değerler için yeni bir isim bularak yeni değişkenler yaratmamız tamamen bir vakit kaybıdır. Dizilerin kullanımı bize zamandan kazanç sağlar ve daha sağlıklı kodlar üretmemize olanak tanır. Temelde sıralı olmayan elemanların bir araya gelmesiyle oluşan diziler, belirli bir sayıda veriyi bir değişkene bağlar ve bu değişken üzerinden döngü yapılarıyla bütün verilere çok hızlı bir biçimde arama, sıralama, değiştirme gibi işlemleri uygulamanıza imkân verir. Dizi tipindeki bir değişken içerisinde istediğimiz kadar veri tutmamız mümkündür, ancak burada önemli nokta bütün verilerin tiplerinin aynı olması gerektiğidir.</p>
<p><span id="more-185"></span></p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim47.png" rel="lightbox[185]"><img class="aligncenter size-full wp-image-190" title="Resim4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim47.png" alt="" width="286" height="342" /></a>Diziler birçok değişkeni bünyesinde barındırırlar..</p>
<p><strong>Dizilerin Kullanımı</strong></p>
<p>Tanımlandıktan sonra bilgisayarınızın belleğine yazılan bu diziler, 0’dan başlayan indekslere (indis olarak da adlandırılır) sahiptir ve dizi içerisinde belirli bir sıradaki elemana erişim bu indeks ile gerçekleştirilir. Programlama diline göre farklılık gösteren başlangıç indeksinin 0 olması, örneğin 5. elemanı getirmek için indeksi 4 olan öğeyi çalıştıracağınız anlamına geldiği için dikkatli olmamızı gerektirir. Yeni bir dizi yaratma işlemi 2 adımda gerçekleşir. Primitif değişkenler yaratırken yaptığımız gibi diziyi tanımlarız ve bundan sonra bir nesne yaratırken kullandığımız “new” anahtar sözcüğü ile dizimizi oluşturabiliriz. Bu iki adımda değişkenlerden farklı olarak kare parantezler kullanarak yarattığımız şeyin bir dizi olduğunu belirtiyoruz. Örneğin 5 elemanı olan bir int dizisi yaratmak için:</p>
<p>int[] ornek = new int[5];</p>
<p>ifadesini kullanmamız yeterli. Böylece “ornek” isminde 5 adet sayıyı barındıran bir dizi değişkeni yaratmış oluyoruz. Dizimizin barındırdığı elemanlara erişmek için indeks sayıları kullanıldığından yukarıda bahsetmiştik. Değişken ismine bitişik yazdığımız kare parantezleri kullanarak bu indeks sayılarını belirtebilir ve istediğimiz elemana erişebiliriz. Örneğin yukarıda yarattığımız 5 elemanlı dizinin son elemanını değiştirmek için</p>
<p>ornek[4] = 100;</p>
<p>yazmamız yeterli. Eğer bu elemanı daha sonra bir işlem içerisinde kullanmak veya yazdırmak istiyorsak yine indeksini belirterek kullanmamız mümkün. Aşağıdaki kod ile aynı elemanımızı konsola yazdırabiliriz:</p>
<p>Console.WriteLine(ornek[4]);</p>
<p>Dizilerin kullanımında aklımızda bulundurmamız gereken en önemli husus ise, her dizinin yaratılırken boyunun belirlenmesi gerektiğidir. Hatırlarsanız “ornek” isimli dizimizi yaratırken kullandığımız new int[5] ifadesindeki 5 bu dizinin boyutunu belirler. Belirlediğimiz boyut kadar bilgisayarın belleğinde (RAM) yer ayrıldığı için dizileri oluştururken mutlaka boyutunu belirlememiz gerekir ve bu boyutu daha sonradan değiştirmemiz mümkün değildir. Varolan bir dizinin boyutunu değiştirmenin tek yolu yeni bir dizi oluşturup mevcut dizinin bütün elemanlarının bir döngü içerisinde yeni diziye aktarılmasıdır. Eğer dizi yapınızın boyutunun dinamik olarak artması önemli ise, daha farklı bir veri yapısı (ör: ArrayList) da kullanabilirsiniz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim63.png" rel="lightbox[185]"><img class="aligncenter size-full wp-image-192" title="Resim6" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim63.png" alt="" width="421" height="458" /></a> İlk örneğimizin ekran görüntüsü..</p>
<p>Aslında değişkenlerin bir kümeyi oluşturduğu veri yapıları olan dizilerin bir diğer özellikleri ise boyutlarıdır. Yukarıda bahsettiğimiz tek bir indeks sayısı olan diziler gibi olanlar tek boyutlu, satır ve sütun olarak veri depolayabilenlere çift boyutlu diziler denir. Günümüzde bazı dillerde bulunan ikiden fazla boyut destekleyen çok boyutlu dizileri C# içerisinde oluşturmamız mümkündür ancak bunların kullanım alanları kısıtlıdır.</p>
<p><strong>Tek Boyutlu Diziler</strong></p>
<p>Daha önce nasıl oluşturabileceğimizi gördüğümüz bu diziler ile ilgili olarak asıl bilmemiz gereken, onların döngüler içerisinde kullanımıdır. Geçtiğimiz ay değindiğimiz for veya while döngüleri ile dizilere eleman atamak, mevcut elemanları görüntülemek veya değiştirmek gerçekten çok fazla kullanılan ve çok hızlı yapıldığı için bir nevi hayatımızı kolaylaştıran işlemlerdir. Dizinin eleman sayısı kadar çalışan döngüleri özellikle tek boyutlu dizilerde kullanmak zor değildir. Yapmamız gereken tek şey dizilerin boyutunu döndüren “Length”  özelliğini kullanarak geçtiğimiz ay öğrendiğimiz sayaç kullanılan döngüler oluşturmak. İsterseniz ilk örneğimizde 100 elemanlı double tipinde bir dizi yaratalım ve 1’den 100’e kadar olan sayıları bu diziye dolduralım. Elemanları görüntüledikten sonra bütün hepsini ikiye bölerek tekrar konsolda görüntüleyelim. Cümleleri takip ettiyseniz burada yaptığımız dört farklı işlem bulunmakta. Önce diziyi dolduruyor, ekranda gösteriyor, sonra ikiye bölüp en sonunda tekrar görüntülüyoruz. Bütün bu işlemlerin bir for döngüsü içerisinde yapıldığı ilk örneğimizi Örnek Kod 1 içerisinde (yazının altında) bulabilirsiniz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim3.gif" rel="lightbox[185]"><img class="aligncenter size-full wp-image-189" title="Resim3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim3.gif" alt="" width="407" height="337" /></a> C# çok boyutlu dizilere de destek veriyor..</p>
<p>Hazırladığımız döngüleri inceleyecek olursak, hepsinde bir “i” sayaç değişkenimiz bulunmakta ve bu değişken 0’dan başlayarak dizi boyutuna gelmeden durmaktadır. İşte dizilerin döngü ile etkileşime geçebilmesi bu değişken sayesinde gerçekleşiyor. Sayacı dizimizin indeks sayısı olarak kullanabiliyoruz ve sayaç her döngüde değiştiği için bizde sürekli dizimizin farklı bir elemanına varolan işlemi uygulamış oluyoruz. Örneğimizde dikkat edeceğimiz diğer bir nokta ise, bizim dizi elemanlarını eşitlemek istediğimiz sayı değerleri 1’den başlıyordu ancak biz sayacımızı yine de 0’dan başlattık. Dizilerin indeks sayısı 0 olduğundan ve döngü sayacını dizimizin indeksi olarak kullandığımızdan “i” değişkenini bu değerler ile tanımlamak zorunda kaldık.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim55.png" rel="lightbox[185]"><img class="aligncenter size-full wp-image-191" title="Resim5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim55.png" alt="" width="514" height="417" /></a> İki boyutlu diziler tablo yapısındadır.</p>
<p><strong>Çok Boyutlu Diziler</strong></p>
<p>Dizilerin birçok farklı alanlardaki kullanımı, onun tek düze gidişatını bozmamızı gerektirebilir. Sakladığımız değerler ile ilişkili başka değerleri de bu verinin bulunduğu satırda bir tablo gibi tutmamızı gerektiren pek çok uygulama vardır. Örneğin matris işlemleri, birçok oyundaki veriler genelde iki boyutlu diziler ile çalışırlar. Excel gibi çizim tablolarından alışık olduğumuz satır ve sütun mantığı burada da geçerli olmakla beraber, bu dizileri kontrol edebilmek için boyut sayısı kadar iç içe döngüye de ihtiyaç duyarız. Çok boyutlu dizilerin C# içerisindeki söz diziminin mevcut diğer programlama dillerinden farklı olduğunu da söylemekte fayda var. Yine 2 adımda oluşturduğumuz dizilerimizi tanımlama sırasında yazdığımız köşeli parantezlerin içerisine virgül koyarak bir boyut daha artmasını sağlıyoruz. Yani buraya iki adet virgül koyarsanız diziniz üç boyutlu olacaktır. Bundan sonra oluşturma sırasında aynı şekilde boyut değerlerini, araya bu virgüller gelecek şekilde yazmanız yeterli.</p>
<p>double [,] ikiBoyutlu = new double[10,30];<br />
int[, ,] ucBoyutlu = new int[3, 5, 8];</p>
<p>Şeklinde çok boyutlu dizilerinizi oluşturabilirsiniz. İsterseniz konuyu daha iyi anlayabilmek için Tablo 2 içerisinde verdiğimiz örneği inceleyelim. Bu uygulamamıza 10’a 30’luk iki boyutlu dizi oluşturarak başlıyoruz. Bu tanımlamadan sonra gördüğünüz iç içe for döngüleri aslında çok boyutlu dizinin bütün elemanlarına giden aynı döngüler. Sadece ilkinde bütün dizi elemanları doldurulurken ikinci döngüde bu elemanlar konsola yazdırılıyor.  İç içe döngülere dair bilmemiz gereken tek şey dışarıdaki döngünün satırlar, içerideki döngünün sütunları kontrol ettiği.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim16.png" rel="lightbox[185]"><img class="aligncenter size-full wp-image-187" title="Resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim16.png" alt="" width="381" height="372" /></a>İkinci örneğimizin ekran görüntüsü..</p>
<p>Döngüler ile dışarıdan içeriye doğru tablo şeklindeki veri yapımızın bütün elemanlarını seçerken tek boyutlu dizilerden farklı olan diğer bir nokta da, Length özelliğinin bu tür dizilerde kullanımının çok tehlikeli olması!  Satırlar arasında ilerleyen dışarıdaki for döngüsü için sadece satır sayısı, sütunlar arasında gezen içerideki for döngüsü için sadece sütun sayısı önemlidir. Bir dizinin bütün elemanlarının sayısını döndüren “Length” özelliği ise satır ve sütun kavramlarını gözetmediğinden for döngülerinde indeks sayısının taşması sonucu birçok hatanın ortaya çıkmasına yol açabiliyor. Bunun çözümü ise örneğimizde görebileceğimiz gibi, dizilerin getLength(boyut) fonksiyonu ile istediğimiz boyutun uzunluğunu for döngümüzün içerisinde kullanmak. Fakat boyutların da 0’dan başlayan bir indeksi var ve bu yüzden satırlar için getLength(0), sütunlar için getLength(1)  yazarak kullandık.</p>
<p><strong>Son Sözler</strong></p>
<p><strong> </strong>İkinci örneğimizin bir tablo gibi görünmesini ise içerideki for döngüsünden sonra bir satır atlayıp elemanları konsola yan yana yazdırarak sağladık. Özellikle çok boyutlu dizilerin kullanımına alışmak maalesef önceki eğitimlerimizin konularına göre daha zor. İç içe for döngülerinin yapısını anlamak özellikle ilk görüşte bunu başarmak gerçekten çok zor. Ancak uygulama geliştirirken gerçekten fazla kullanılan temel konular olduğu için dizilere hükmetmeye çalışmanızın ilerideki projelerimiz açısından çok faydalı olacağını düşünüyorum. Bu yüzden diziler ile ilgili örneklerimizi geliştirerek değişik uygulamalar tasarlamanızı tavsiye ederim.</p>
<p>p.s. Bu yazı Kasım 2008&#8242;de yayımlanmıştır.</p>
<p>Örnek Kod 1:</p>
<pre class="brush: c#; ">

//Örnek 1

//double tipinde elemanlar içeren dizimizi oluşturuyoruz.
double[] ornek = new double[100];

//Dizimizi 1-100 arası sayılar ile dolduruyoruz.

for (int i = 0; i &lt; ornek.Length; i++)

{

ornek[i] = i + 1;

}

//Bütün dizimizin elamanlarını ekranda gösteriyoruz.

for (int i = 0; i &lt; ornek.Length; i++)

{

Console.WriteLine(ornek[i]);

}

//Bütün elemanları 2&#039;ye bölüyoruz.

for (int i = 0; i &lt; ornek.Length; i++)

{

ornek[i] = ornek[i] / 2;

}

//Elemanların son değerini tekrar ekranda görüntülüyoruz.

for (int i = 0; i &lt; ornek.Length; i++)

{

Console.WriteLine(ornek[i]);

}
</pre>
<p><strong> </strong></p>
<p>Örnek Kod 2:</p>
<pre class="brush: c#; ">

//Örnek 2

double [,] ornek = new double[10,30];

for (int i = 0; i &lt; ornek.GetLength(0); i++)

{

for (int k = 0; k &lt; ornek.GetLength(1); k++)

{

ornek[i, k] = i;

}

}

for (int i = 0; i &lt; ornek.GetLength(0); i++)

{

for (int k = 0; k &lt; ornek.GetLength(1); k++)

{

Console.Write(ornek[i, k]);

}

Console.WriteLine(&quot;&quot;);

}
</pre>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;t=C%23+Dersleri+-+5%3A+Diziler" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+5%3A+Diziler+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+5%3A+Diziler&amp;link=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;title=C%23+Dersleri+-+5%3A+Diziler&amp;summary=Derslerimizin%20ilk%20konular%C4%B1ndan%20biri%20olan%20de%C4%9Fi%C5%9Fkenlerin%20programlar%C4%B1m%C4%B1z%C4%B1n%20baz%C4%B1%20de%C4%9Ferleri%20haf%C4%B1zas%C4%B1nda%20tutmak%20istedi%C4%9Fi%20zaman%20kullan%C4%B1ld%C4%B1%C4%9F%C4%B1n%C4%B1%20biliyoruz.%20Farkl%C4%B1%20tiplerde%20String%2C%20int%20gibi%20say%C4%B1%20veya%20metin%20de%C4%9Ferleriyle%20olu%C5%9Fturdu%C4%9Fumuz%20de%C4%9Fi%C5%9Fkenlerin%20yan%C4%B1%20s%C4%B1ra%2C%20kendi%20yaratt%C4%B1%C4%9F%C4%B1m%C4%B1z%20nesnelerin%20de%20de%C4%9Fi%C5%9Fkenler%20vas%C4%B1tas%C4%B1yla%20bellekte%20saklanabildi%C4%9Fine%20de%20%C3%B6nceki%20aylarda%20%C5%9Fahit%20olmu%C5%9Ftuk.%20Ancak%20haz%C4%B1rlad%C4%B1%C4%9F%C4%B1m%C4%B1z%20uygulamalardaki%20verileri%20tek%20tek%20i%C5%9Flemek%20genel%20olarak%20uzun%20zaman%20alan%20ve%20bu%20verilerin%20say%C4%B1s%C4%B1%20artt%C4%B1%C4%9F%C4%B1nda%20kontrol%20etmesi%20g%C3%BC%C3%A7%20bir%20g%C3%B6rev.%20Bu%20yaz%C4%B1mda%20temel%20programc%C4%B1l%C4%B1k%20%C3%B6%C4%9Felerinden%20biri%20olan%20diziler%20konusuna%20de%C4%9Finerek%20bir%C3%A7ok%20de%C4%9Feri%20bir%20de%C4%9Fi%C5%9Fken%20i%C3%A7erisinde%20kullanabilmeye%20de%C4%9Finece%C4%9Fim.%0D%0A%0D%0AProgramlama%20dillerinde%20dizileri%20kullanmak%20bizi%20bir%C3%A7ok%20sat%C4%B1rda%20yazaca%C4%9F%C4%B1m%C4%B1z%20kod%20sat%C4%B1rlar%C4%B1ndan%20ve%20bir%C3%A7ok%20de%C4%9Fi%C5%9Fkenin%20yaratt%C4%B1%C4%9F%C4%B1%20kar%C4%B1%C5%9F%C4%B1kl%C4%B1ktan%20kurtarar%C4%B1rken%2C%20ayn%C4%B1%20i%C5%9Flemleri%20tek%20sat%C4%B1r%20bir%20koda%20d%C3%B6n%C3%BC%C5%9Ft%C3%BCrerek%20daha%20basite%20indirgenmi%C5%9F%20anla%C5%9F%C4%B1l%C4%B1r%20bir%20hale%20getirir.%20%C3%96rne%C4%9Fin%2010%20tane%20de%C4%9Fi%C5%9Fkenle%20i%C5%9Flem%20yapabilen%20bir%20uygulamay%C4%B1%20yazmak%20%C3%A7ok%20zor%20de%C4%9Fildir%2C%20ancak%20binlerce%20say%C4%B1%20kullanarak%20hesaplama%20yapmam%C4%B1z%20gerekti%C4%9Finde%20b%C3%BCt%C3%BCn%20de%C4%9Ferler%20i%C3%A7in%20yeni%20bir%20isim%20bularak%20yeni%20de%C4%9Fi%C5%9Fkenler%20yaratmam%C4%B1z%20tamamen%20bir%20vakit%20kayb%C4%B1d%C4%B1r.%20Dizilerin%20kullan%C4%B1m%C4%B1%20bize%20zamandan%20kazan%C3%A7%20sa%C4%9Flar%20ve%20daha%20sa%C4%9Fl%C4%B1kl%C4%B1%20kodlar%20%C3%BCretmemize%20olanak%20tan%C4%B1r.%20Temelde%20s%C4%B1ral%C4%B1%20olmayan%20elemanlar%C4%B1n%20bir%20araya%20gelmesiyle%20olu%C5%9Fan%20diziler%2C%20belirli%20bir%20say%C4%B1da%20veriyi%20bir%20de%C4%9Fi%C5%9Fkene%20ba%C4%9Flar%20ve%20bu%20de%C4%9Fi%C5%9Fken%20%C3%BCzerinden%20d%C3%B6ng%C3%BC%20yap%C4%B1lar%C4%B1yla%20b%C3%BCt%C3%BCn%20verilere%20%C3%A7ok%20h%C4%B1zl%C4%B1%20bir%20bi%C3%A7imde%20arama%2C%20s%C4%B1ralama%2C%20de%C4%9Fi%C5%9Ftirme%20gibi%20i%C5%9Flemleri%20uygulaman%C4%B1za%20imk%C3%A2n%20verir.%20Dizi%20tipindeki%20bir%20de%C4%9Fi%C5%9Fken%20i%C3%A7erisinde%20istedi%C4%9Fimiz%20kadar%20veri%20tutmam%C4%B1z%20m%C3%BCmk%C3%BCnd%C3%BCr%2C%20ancak%20burada%20%C3%B6nemli%20nokta%20b%C3%BCt%C3%BCn%20verilerin%20tiplerinin%20ayn%C4%B1%20olmas%C4%B1%20gerekti%C4%9Fidir.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;title=C%23+Dersleri+-+5%3A+Diziler" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;title=C%23+Dersleri+-+5%3A+Diziler" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;title=C%23+Dersleri+-+5%3A+Diziler&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;srcTitle=C%23+Dersleri+-+5%3A+Diziler&amp;snippet=Derslerimizin%20ilk%20konular%C4%B1ndan%20biri%20olan%20de%C4%9Fi%C5%9Fkenlerin%20programlar%C4%B1m%C4%B1z%C4%B1n%20baz%C4%B1%20de%C4%9Ferleri%20haf%C4%B1zas%C4%B1nda%20tutmak%20istedi%C4%9Fi%20zaman%20kullan%C4%B1ld%C4%B1%C4%9F%C4%B1n%C4%B1%20biliyoruz.%20Farkl%C4%B1%20tiplerde%20String%2C%20int%20gibi%20say%C4%B1%20veya%20metin%20de%C4%9Ferleriyle%20olu%C5%9Fturdu%C4%9Fumuz%20de%C4%9Fi%C5%9Fkenlerin%20yan%C4%B1%20s%C4%B1ra%2C%20kendi%20yaratt%C4%B1%C4%9F%C4%B1m%C4%B1z%20nesnelerin%20de%20de%C4%9Fi%C5%9Fkenler%20vas%C4%B1tas%C4%B1yla%20bellekte%20saklanabildi%C4%9Fine%20de%20%C3%B6nceki%20aylarda%20%C5%9Fahit%20olmu%C5%9Ftuk.%20Ancak%20haz%C4%B1rlad%C4%B1%C4%9F%C4%B1m%C4%B1z%20uygulamalardaki%20verileri%20tek%20tek%20i%C5%9Flemek%20genel%20olarak%20uzun%20zaman%20alan%20ve%20bu%20verilerin%20say%C4%B1s%C4%B1%20artt%C4%B1%C4%9F%C4%B1nda%20kontrol%20etmesi%20g%C3%BC%C3%A7%20bir%20g%C3%B6rev.%20Bu%20yaz%C4%B1mda%20temel%20programc%C4%B1l%C4%B1k%20%C3%B6%C4%9Felerinden%20biri%20olan%20diziler%20konusuna%20de%C4%9Finerek%20bir%C3%A7ok%20de%C4%9Feri%20bir%20de%C4%9Fi%C5%9Fken%20i%C3%A7erisinde%20kullanabilmeye%20de%C4%9Finece%C4%9Fim.%0D%0A%0D%0AProgramlama%20dillerinde%20dizileri%20kullanmak%20bizi%20bir%C3%A7ok%20sat%C4%B1rda%20yazaca%C4%9F%C4%B1m%C4%B1z%20kod%20sat%C4%B1rlar%C4%B1ndan%20ve%20bir%C3%A7ok%20de%C4%9Fi%C5%9Fkenin%20yaratt%C4%B1%C4%9F%C4%B1%20kar%C4%B1%C5%9F%C4%B1kl%C4%B1ktan%20kurtarar%C4%B1rken%2C%20ayn%C4%B1%20i%C5%9Flemleri%20tek%20sat%C4%B1r%20bir%20koda%20d%C3%B6n%C3%BC%C5%9Ft%C3%BCrerek%20daha%20basite%20indirgenmi%C5%9F%20anla%C5%9F%C4%B1l%C4%B1r%20bir%20hale%20getirir.%20%C3%96rne%C4%9Fin%2010%20tane%20de%C4%9Fi%C5%9Fkenle%20i%C5%9Flem%20yapabilen%20bir%20uygulamay%C4%B1%20yazmak%20%C3%A7ok%20zor%20de%C4%9Fildir%2C%20ancak%20binlerce%20say%C4%B1%20kullanarak%20hesaplama%20yapmam%C4%B1z%20gerekti%C4%9Finde%20b%C3%BCt%C3%BCn%20de%C4%9Ferler%20i%C3%A7in%20yeni%20bir%20isim%20bularak%20yeni%20de%C4%9Fi%C5%9Fkenler%20yaratmam%C4%B1z%20tamamen%20bir%20vakit%20kayb%C4%B1d%C4%B1r.%20Dizilerin%20kullan%C4%B1m%C4%B1%20bize%20zamandan%20kazan%C3%A7%20sa%C4%9Flar%20ve%20daha%20sa%C4%9Fl%C4%B1kl%C4%B1%20kodlar%20%C3%BCretmemize%20olanak%20tan%C4%B1r.%20Temelde%20s%C4%B1ral%C4%B1%20olmayan%20elemanlar%C4%B1n%20bir%20araya%20gelmesiyle%20olu%C5%9Fan%20diziler%2C%20belirli%20bir%20say%C4%B1da%20veriyi%20bir%20de%C4%9Fi%C5%9Fkene%20ba%C4%9Flar%20ve%20bu%20de%C4%9Fi%C5%9Fken%20%C3%BCzerinden%20d%C3%B6ng%C3%BC%20yap%C4%B1lar%C4%B1yla%20b%C3%BCt%C3%BCn%20verilere%20%C3%A7ok%20h%C4%B1zl%C4%B1%20bir%20bi%C3%A7imde%20arama%2C%20s%C4%B1ralama%2C%20de%C4%9Fi%C5%9Ftirme%20gibi%20i%C5%9Flemleri%20uygulaman%C4%B1za%20imk%C3%A2n%20verir.%20Dizi%20tipindeki%20bir%20de%C4%9Fi%C5%9Fken%20i%C3%A7erisinde%20istedi%C4%9Fimiz%20kadar%20veri%20tutmam%C4%B1z%20m%C3%BCmk%C3%BCnd%C3%BCr%2C%20ancak%20burada%20%C3%B6nemli%20nokta%20b%C3%BCt%C3%BCn%20verilerin%20tiplerinin%20ayn%C4%B1%20olmas%C4%B1%20gerekti%C4%9Fidir." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/&amp;title=C%23+Dersleri+-+5%3A+Diziler" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 4: Döngü Yapilari</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=c-dersleri-4-dongu-yapilari</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:19:51 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersleri]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dersleri]]></category>
		<category><![CDATA[do]]></category>
		<category><![CDATA[dongu]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[program kontrolleri]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=170</guid>
		<description><![CDATA[Programlamanın temellerini oluşturan if/else kontrol yapısını önceki yazımızda incelemiştik. Buraya kadar öğrendiklerimizle artık yazdığımız programın istediğimiz akışı takip edebilmesini ve belirlediğimiz koşullara göre farklı işlemler yapabilmesini sağlayabiliriz. Ancak bu koşullar bazen gerçekten fazla olabilir ve biz aynı kodu birçok kez çalıştırmak zorunda kalabiliriz. Bunun yanında birden fazla yapılacak işlem olduğunda aynı kod bloğunu sürekli tekrar yazmak programcıların çok tercih ettiği bir yöntem değildir. Tekrar edilen kodlar yazdığınız programı ileride modifiye etmenizi zorlaştırırken, karışık bir görüntü oluşturarak kodların okunaklığını azaltır. Örneğin 30 kişilik bir sınıfın notlarını girdiğiniz ve size not ortalamasını çıkaran bir programda, kullanıcıdan her notu almak için kod tekrarı yapmamız oldukça büyük zaman kaybına neden olur.

Üstelik karekök hesaplayan algoritmalarda olduğu gibi bazı durumlarda yapmamız gereken işin ne zaman tamamlanacağını önceden kestirmemiz de imkansızdır. İşte bu tip uzun tekrarlar ya da iştediğimiz şart oluşana kadar aynı işlemin yapılmasını istediğimiz durumlarda döngüleri kullanıyoruz. Önceki yazılarımızda bahsettiğimiz gibi, normalde uygulamamız çalışırken kodlar yukarıdan aşağıya satır satır işlenir ve son satır işlendikten sonra program sonlandırılır. Bizim kullanacağımız döngüler ise süslü parantezler kullanarak oluşturduğumuz kod bloğunun, belirli bir koşul sağlanmışken sürekli kendini başa alarak tekrar işlenmesine imkan tanıyor. C# içerisinde farklı tip döngüler olsa da bunların hepsi barındırdığı koşul sağlandıkça içerisindeki kod bloğunu çalıştırırlar ve koşul yanlış olduğunda sonlanırlar. Şimdi isterseniz bu döngü tiplerinin kullanımını örnekler ile inceleyelim.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code-vortex.jpg" rel="lightbox[170]"><img class="aligncenter size-full wp-image-179" title="code-vortex" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code-vortex.jpg" alt="" width="320" height="320" /></a>Programlamanın temellerini oluşturan if/else kontrol yapısını önceki yazımızda incelemiştik. Buraya kadar öğrendiklerimizle artık yazdığımız programın istediğimiz akışı takip edebilmesini ve belirlediğimiz koşullara göre farklı işlemler yapabilmesini sağlayabiliriz. Ancak bu koşullar bazen gerçekten fazla olabilir ve biz aynı kodu birçok kez çalıştırmak zorunda kalabiliriz. Bunun yanında birden fazla yapılacak işlem olduğunda aynı kod bloğunu sürekli tekrar yazmak programcıların çok tercih ettiği bir yöntem değildir. Tekrar edilen kodlar yazdığınız programı ileride modifiye etmenizi zorlaştırırken, karışık bir görüntü oluşturarak kodların okunaklığını azaltır. Örneğin 30 kişilik bir sınıfın notlarını girdiğiniz ve size not ortalamasını çıkaran bir programda, kullanıcıdan her notu almak için kod tekrarı yapmamız oldukça büyük zaman kaybına neden olur.</p>
<p>Üstelik karekök hesaplayan algoritmalarda olduğu gibi bazı durumlarda yapmamız gereken işin ne zaman tamamlanacağını önceden kestirmemiz de imkansızdır. İşte bu tip uzun tekrarlar ya da iştediğimiz şart oluşana kadar aynı işlemin yapılmasını istediğimiz durumlarda döngüleri kullanıyoruz. Önceki yazılarımızda bahsettiğimiz gibi, normalde uygulamamız çalışırken kodlar yukarıdan aşağıya satır satır işlenir ve son satır işlendikten sonra program sonlandırılır. Bizim kullanacağımız döngüler ise süslü parantezler kullanarak oluşturduğumuz kod bloğunun, belirli bir koşul sağlanmışken sürekli kendini başa alarak tekrar işlenmesine imkan tanıyor. C# içerisinde farklı tip döngüler olsa da bunların hepsi barındırdığı koşul sağlandıkça içerisindeki kod bloğunu çalıştırırlar ve koşul yanlış olduğunda sonlanırlar. Şimdi isterseniz bu döngü tiplerinin kullanımını örnekler ile inceleyelim.<span id="more-170"></span></p>
<p><strong>While Döngüsü</strong></p>
<p>Türkçe’ye  “sırasında” veya “-iken” olarak çevirebileceğimiz “while” anahtar sözcüğü, while(koşul) {kod} biçiminde döngü yaratmamızı sağlar. While yanında bulunan parantezler içerisinde yazılan koşul doğru olduğu sürece koşul parantezlerinden sonra gelen süslü parantezler içerisindeki kod bloğunu çalıştırılır. Bu döngü tipinin çalışma biçimini kafanızda canlandırmanız için hemen gerçek hayattan bir örnek verebiliriz. Örneğin su dolu bir sürahiyi bir bardak kullanarak başka bir kaba boşaltmak istiyoruz. Burada yapacağımız iş, sürahiden su dökerek bardağı doldurmak, sonra bardak içerisindeki suyu kaba dökmek olacaktır. Programlama mantığında düşünecek olursak, “sürahide su bulunması”nı koşul olarak seçersek istediğimizi gerçekleştirebiliriz. Şimdi bir while döngüsü kuracak olursak; sürahide su bulunması koşulu doğru olduğu sürece, yapacağımız işi tekrarlamış olacağız. Başlangıçta sürahide su varsa, bardağı suyla doldurup kaba boşalttıktan sonra koşulumuz hala doğru mu diye sürahiye bakıyoruz. Eğer sürahide hala su varsa bardağı tekrar dolduruyoruz ve bu sürahide su kalmayana kadar böyle devam ediyor. Sanırım döngünün çalışma mantığını bu şekilde aklımızda tutabiliriz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim15.png" rel="lightbox[170]"><img class="aligncenter size-full wp-image-172" title="Resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim15.png" alt="" width="362" height="261" /></a>While ile oluşturduğumuz sayısal döngü kalıbı for döngülerinde geçerlidir.</p>
<p>İlk örneğimiz, önceden tanımladığımız “sayı” ismindeki bir değişkenin değerinin tek ya da çift sayı olduğunu bulan bir program. Burada while döngüsü içerisindeki kod bloğunda sayıdan sürekli 2 çıkarıyoruz. Koşulda yazdığımız tanım gereği sayı 1 veya 0’a eşitlenmedikçe buradaki kod bloğu çalışıyor ve çıkarma işlemlerine devam ediliyor. Sayı değişkenimiz bu 0 yada 1 değerine ulaşırsa artık koşul doğru olmayacağından döngü sonlandırılıyor, ardından yazdığımız if kontrolü ile kalan sayı eğer 1 ise sayının tek, 0 ise çift olduğunu belirliyoruz.</p>
<p>Belirli koşullar altında işlem yapan döngülerin diğer bir kullanımının da, biz programcıları uzun ve kendini tekrar eden kod yazmaktan kurtarması için olduğunu söylemiştik. Çok basit olarak ekrana bir yazıyı bin kere yazdırmak isterseniz bunu yapabilen bir kod oluşturmanız, kodu kopyalayıp yapıştırarak hazırlasanız bile çok uzun zamanınızı alabilir. İşte böyle durumlarda, bir sayaç değişkeni yardımıyla while döngüleri ile bir işlemin istediğimiz sayıda gerçekleşmesini sağlayabiliriz. İlk yapmamız gereken, int tipinde bir değişken oluşturmak. Bu değişkene döngüye girmeden önce bir sayı değeri atıyoruz, while döngüsünün kod bloğunun sonunda değerini değiştirerek, döngü koşulunda bu değeri kontrol ediyoruz ve bu şekilde işlemlerin istediğimiz kadar tekrar edebilmesini sağlıyoruz.</p>
<p>İkinci örneğimizde bu senaryoyu işleyen bir program yazdık. Sayac isimli int tipinde değişkenimize 0 değerini atıyoruz. While döngüsünün kod bloğunda ekrana yazı yazdıran satırda işlemi bitirdikten sonra, bu sayac değişkenimizin değerini bir artırıyoruz. Önceki yazılarımızdan hatırlayacak olursak, bir değişkenin sonuna eklenen ++ ifadesi, onun değerini bir arttırmak anlamına geliyor. Döngümüzün koşul bölümüne de, işlemin kaç kere tekrarlanacağını belirlediğimiz boolean (doğru ya da yanlış değer döndüren) ifadeyi yazıyoruz. Örneğimizde kullandığımız “sayac &lt; 1000” ifadesi sayac 1000’den küçük olduğu sürece doğru (true) değerinde dönecek ve yazıyı bin defa ekrana yazdırmamızı sağlayacak. Keşke ilkokulda öğretmenimizin verdiği tahta doluncaya kadar aynı cümleyi yazdığımız cezalar için de böyle bir sistem olabilseydi J.</p>
<p><strong>For Döngüsü </strong></p>
<p>Yukarda örneğini verdiğimiz, sayaç kullanarak oluşturduğumuz sayısal döngüler programlamada çok sık kullanılır. Bu nedenle bu döngü kalıbını daha hızlı bir şekilde oluşturmaya yarayan for döngü tipi türetilmiştir. Kullanım şekli for(sayac oluşturma; koşul; artırım değeri) {kod} şeklinde olan bu komut ile daha hızlı sayısal döngü oluşturabiliyor ve ileride değineceğimiz sonsuz döngü oluşturma gibi hataların önüne geçmiş oluyoruz.</p>
<p>Üçüncü örneğimizi inceleyecek olursak, for ifadesi yanındaki parantezin içerisinin noktalı virgül “;” karakteriyle 3 farklı bölüme ayrılmış olduğunu görebiliriz. Sayaç değişkenimizi burada oluştururken dikkat etmemiz gereken başındaki tip ifadesini (genelde int kullanılır) unutmamamız gerektiği. İkinci bölümde yazdığımız koşul, while döngüsündeki koşul parantezinde olduğu gibi döngünün hangi koşulda devam edeceğini belirliyor. Son bölümde ise artırım değerimizi yazıyoruz. Burada yine sayac++ gibi bir ifade yazarak koşuldaki değere birer birer ulaşmaya çalışacağımızı belirtiriz. Ancak sayac+=2 gibi farklı ifadelerle değeri artırmak veya azaltmak mümkündür. Döngüye dair bütün işlemleri bu parantez içerisinde hallettikten sonra süslü parantezler ile oluşturacağımız kod bloğunda yapmak istediğimz işlemi yazabiliriz.</p>
<p><strong>Sonsuz Döngü</strong></p>
<p>Buraya kadar döngülerin belirli bir koşul doğru olduğu sürece kod bloğunu tekrar çalıştırdığını gördük. Peki ya bu koşul hiçbir zaman yanlış çıkmazsa? İşte böyle durumlarda program kodlarında ilerlemek mümkün olmaz ve programımız olduğu yerde takılı kalır. Programın ilerlememesinin ötesinde, sürekli yeni bellek kullandığınız bir döngüde böyle bir durum gerçekleşirse bu programın belirli bir süre çalıştıktan sonra yanıt vermemesine hatta bilgisayarda çalışan diğer programları yavaşlatmasına kadar giden kötü sonuçlar doğurabilir. Yinede sonsuz ya da kısır döngü denilen bu tür döngüleri bir hata olarak nitelendiremeyiz, bu döngülerin kullanıcı arabirimleri ve ağ uygulamaları gibi birçok alanda işlevsel kullanımları bulunmaktadır.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim46.png" rel="lightbox[170]"><img class="aligncenter size-full wp-image-173" title="Resim4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim46.png" alt="" width="227" height="443" /></a>Döngüyü oluşrurken yapacağımız bir hata sonsuz döngüye sebep olabilir..</p>
<p>Ancak şu aşamada arka planda çalışmayan bir sonsuz döngü hazırladığımız uygulamaların takılmasına neden olacaktır ve çalışma zamanında ortaya çıktığı için Visual Studio tarafından uyarılmamız da söz konusu değil. Sonsuz döngülerin önüne geçebilmek için yazdığımız döngülerin koşul alanlarına oldukça dikkat etmeli, gerekirse sonsuz döngüye yol açabilecek farklı durumlar için ve (&amp;&amp;), veya (||) gibi bağlaçlardan yararlanarak koşulu genişletmeliyiz. Ayrıca bir sayaç değişkeni kullanarak hazırladığımız sayısal döngülerde, sayaç değişkenine başlangıç değerini yanlış atamak veya kod bloğunun sonunda bu değeri değiştirmeyi unutmakta uygulamanın sonsuz döngüye girmesine sebep olacaktır.</p>
<p>Dilerseniz sizde dördüncü örneğimizde olduğu gibi bir sayı sayan program yazarak sonsuz döngü kullanabilirsiniz. Burada dikkat etmeniz gereken while(true) ifadesinin sonsuz döngü oluşturmak için kullanılabileceğidir. Son bir hatırlatma yapmak gerekirse, sonsuz döngüye giren bir konsol uygulamasını Ctrl+C tuşlarına basarak kapatabilirsiniz.</p>
<p><strong>Döngülerden Acil Çıkış</strong></p>
<p>Birbirinden farklı birçok kullanım alanı olan döngüleri istersek kendimiz de sonlandırabiliriz. Örneğin bir listede bir elemanı aramak için bütün öğeleri bir döngü ile inceliyorsak, eğer bu elemanı liste bitmeden bulursak listenin kalanında arama işlemine devam etmek sadece zaman kaybı olacaktır. Ya da bir sayının karekökünü sırayla deneme yoluyla arıyorsak, sayıyı bulduğumuzda daha fazla sayı denememize gerek yoktur. İşte böyle durumlarda programın içinde bulunduğu döngüden çıkması için “break” anahtar sözcüğünü kullanabiliriz. Döngüyü sonlandırdığımızda, program döngü kod bloğunun bittiği yerden çalışmasına devam edecektir.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim54.png" rel="lightbox[170]"><img class="aligncenter size-full wp-image-174" title="Resim5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim54.png" alt="" width="308" height="200" /></a>Beşinci örneğin sonuç ekranı.</p>
<p>Beşinci örneğimizi incelersek, döngü koşuluna göre ekrana 100’e kadar sayı değerlerini yazması gerekirken, sayı değişkeni 10’a eşitlenince break komutuyla döngüyü sonlandırdığımız için uygulama sadece 0-10 arası sayıları ekranda gösterecektir.</p>
<p>Döngülerin çalışmasına müdahale eden diğer komutumuz ise Türkçe’de “devam etmek” anlamına gelen “continue”. Break kadar çok kullanılmayan bu anahtar sözcük, döngünün sadece mevcut iterasyonuna son vererek koşul hala doğruysa kod bloğunun baştan çalışmasını sağlar. Altıncı örneğimizde continue kullanarak 0-100 arası tek sayıları ekrana yazdırıyoruz. Kod bloğunun başında mevcut sayının çift sayı olduğunu kontrol ediyor, eğer çiftse iterasyonu continue ile sonlandırarak ekrana yazılmamasını sağlıyoruz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim62.png" rel="lightbox[170]"><img class="aligncenter size-full wp-image-175" title="Resim6" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim62.png" alt="" width="296" height="359" /></a>continue kullanarak hazırladığımız örneğin sonuç ekranı.</p>
<p><strong>Do-While Döngüsü</strong></p>
<p>Son olarak bahsedeceğimiz döngü çeşidi ise Do-While. Bu  döngü biçiminin while döngüsünden tek farkı, ilk işlemi gerçekleştirmek için koşula bakmaması. Yani kod bloğu ilk seferde mutlaka çalıştırılır, ondan sonra yazılan koşul değerlendirilir ve eğer doğruysa kod bloğu tekrar baştan çalıştırılır. Yazılış biçimi ise do {kod} while(koşul) şeklindedir. Son örneğimizdeki uygulamamız ise basit bir şekilde kullanıcının ismini öğrenmek istiyor. Eğer kullanıcı ismini girmeden giriş tuşuna basarsa soru tekrarlanıyor ve kullanıcı isim girene kadar program devam etmiyor. Burada kullanıcıdan veri almak için Console.Readline() komutunu kullanıyoruz. Eğer kullanıcı herhangi bir isim yazmadan giriş tuşuna basarsa, “yazi” ismindeki string değişkenimiz boş bir değere sahip olacağı için, while yanındaki koşul doğru olacak ve program kod bloğunu tekrar çalıştıracaktır.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim7.png" rel="lightbox[170]"><img class="aligncenter size-full wp-image-176" title="Resim7" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim7.png" alt="" width="319" height="177" /></a>do-while kullanarak kullanıcıdan isim bilgisini istiyoruz.</p>
<p>Do-while döngüsüne de değindikten sonra C# ile temel programlama konusunda önemli bir aşama kaydetmiş bulunuyoruz. Son olarak, döngü içerisinde elde ettiğiniz değerler ile yeni işlemler gerçekleştirmek için birden fazla döngüyü iç içe kullanabilmenizin mümkün olduğunu da söyleyelim. Özellikle matris uygulamaları gibi birden fazla boyutu olan dizilerle ilgileneceğimiz ileriki yazılarımızda iç içe döngülerin kullanımı konusuna detaylı olarak değineceğiz. Farklı örneklerle anlatmaya çalıştığımız döngülere hakim olmanız programlama konusunda ilerlemeniz için gerçekten çok önemli. Bu yüzden verdiğimiz örnekleri kendi yaratıcılığınızla geliştirerek yeni örnekler oluşturmanızı kesinlikle tavsiye ederim. Bir sonraki yazıda görüşmek üzere :)</p>
<p>p.s. Bu yazı Ekim 2008&#8242;de yazılmıştır.</p>
<p>Örnek Kod 1:</p>
<pre class="brush: c#; ">

//örnek 1

int sayi = 876528;

while (sayi != 0 &amp;amp;amp;amp;&amp;amp;amp;amp; sayi != 1)

{

sayi = sayi - 2;

}

if (sayi == 1)

Console.WriteLine(&quot;Tek sayı.&quot;);

else

Console.WriteLine(&quot;Çift sayı.&quot;);
</pre>
<p>Örnek Kod 2:</p>
<pre class="brush: c#; ">

//örnek 2

int sayac = 0;

while (sayac &lt; 1000)

{

Console.WriteLine(&quot;While Döngüsü&quot;);

sayac++;

}
</pre>
<p>Örnek Kod 3:</p>
<pre class="brush: c#; ">

//örnek 3

for (int sayac = 0; sayac &lt; 1000; sayac++)

{

Console.WriteLine(&quot;For Döngüsü&quot;);

}
</pre>
<p>Örnek Kod 4:</p>
<pre class="brush: c#; ">

//örnek 4

int sayi = 0;

while (true)

{

Console.WriteLine(sayi++);

}
</pre>
<p>Örnek Kod 5:</p>
<pre class="brush: c#; ">

//örnek 5

for (int sayi = 0; sayi &lt; 100; sayi++ )

{

Console.WriteLine(sayi);

if (sayi == 10)

break;

}
</pre>
<p>Örnek Kod 6:</p>
<pre class="brush: c#; ">

//örnek 6

for (int sayi = 0; sayi &lt; 100; sayi++ )

{

if (sayi % 2 == 0)

continue;

Console.WriteLine(sayi);

}
</pre>
<p>Örnek Kod 7:</p>
<pre class="brush: c#; ">

//örnek 7

string yazi;

do

{

Console.WriteLine(&quot;İsim: &quot;);

yazi = Console.ReadLine();

}

while (yazi == &quot;&quot;);

Console.WriteLine(&quot;İsminiz: &quot; + yazi);
</pre>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;t=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari&amp;link=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari&amp;summary=Programlaman%C4%B1n%20temellerini%20olu%C5%9Fturan%20if%2Felse%20kontrol%20yap%C4%B1s%C4%B1n%C4%B1%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20incelemi%C5%9Ftik.%20Buraya%20kadar%20%C3%B6%C4%9Frendiklerimizle%20art%C4%B1k%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20program%C4%B1n%20istedi%C4%9Fimiz%20ak%C4%B1%C5%9F%C4%B1%20takip%20edebilmesini%20ve%20belirledi%C4%9Fimiz%20ko%C5%9Fullara%20g%C3%B6re%20farkl%C4%B1%20i%C5%9Flemler%20yapabilmesini%20sa%C4%9Flayabiliriz.%20Ancak%20bu%20ko%C5%9Fullar%20bazen%20ger%C3%A7ekten%20fazla%20olabilir%20ve%20biz%20ayn%C4%B1%20kodu%20bir%C3%A7ok%20kez%20%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak%20zorunda%20kalabiliriz.%20Bunun%20yan%C4%B1nda%20birden%20fazla%20yap%C4%B1lacak%20i%C5%9Flem%20oldu%C4%9Funda%20ayn%C4%B1%20kod%20blo%C4%9Funu%20s%C3%BCrekli%20tekrar%20yazmak%20programc%C4%B1lar%C4%B1n%20%C3%A7ok%20tercih%20etti%C4%9Fi%20bir%20y%C3%B6ntem%20de%C4%9Fildir.%20Tekrar%20edilen%20kodlar%20yazd%C4%B1%C4%9F%C4%B1n%C4%B1z%20program%C4%B1%20ileride%20modifiye%20etmenizi%20zorla%C5%9Ft%C4%B1r%C4%B1rken%2C%20kar%C4%B1%C5%9F%C4%B1k%20bir%20g%C3%B6r%C3%BCnt%C3%BC%20olu%C5%9Fturarak%20kodlar%C4%B1n%20okunakl%C4%B1%C4%9F%C4%B1n%C4%B1%20azalt%C4%B1r.%20%C3%96rne%C4%9Fin%2030%20ki%C5%9Filik%20bir%20s%C4%B1n%C4%B1f%C4%B1n%20notlar%C4%B1n%C4%B1%20girdi%C4%9Finiz%20ve%20size%20not%20ortalamas%C4%B1n%C4%B1%20%C3%A7%C4%B1karan%20bir%20programda%2C%20kullan%C4%B1c%C4%B1dan%20her%20notu%20almak%20i%C3%A7in%20kod%20tekrar%C4%B1%20yapmam%C4%B1z%20olduk%C3%A7a%20b%C3%BCy%C3%BCk%20zaman%20kayb%C4%B1na%20neden%20olur.%0D%0A%0D%0A%C3%9Cstelik%20karek%C3%B6k%20hesaplayan%20algoritmalarda%20oldu%C4%9Fu%20gibi%20baz%C4%B1%20durumlarda%20yapmam%C4%B1z%20gereken%20i%C5%9Fin%20ne%20zaman%20tamamlanaca%C4%9F%C4%B1n%C4%B1%20%C3%B6nceden%20kestirmemiz%20de%20imkans%C4%B1zd%C4%B1r.%20%C4%B0%C5%9Fte%20bu%20tip%20uzun%20tekrarlar%20ya%20da%20i%C5%9Ftedi%C4%9Fimiz%20%C5%9Fart%20olu%C5%9Fana%20kadar%20ayn%C4%B1%20i%C5%9Flemin%20yap%C4%B1lmas%C4%B1n%C4%B1%20istedi%C4%9Fimiz%20durumlarda%20d%C3%B6ng%C3%BCleri%20kullan%C4%B1yoruz.%20%C3%96nceki%20yaz%C4%B1lar%C4%B1m%C4%B1zda%20bahsetti%C4%9Fimiz%20gibi%2C%20normalde%20uygulamam%C4%B1z%20%C3%A7al%C4%B1%C5%9F%C4%B1rken%20kodlar%20yukar%C4%B1dan%20a%C5%9Fa%C4%9F%C4%B1ya%20sat%C4%B1r%20sat%C4%B1r%20i%C5%9Flenir%20ve%20son%20sat%C4%B1r%20i%C5%9Flendikten%20sonra%20program%20sonland%C4%B1r%C4%B1l%C4%B1r.%20Bizim%20kullanaca%C4%9F%C4%B1m%C4%B1z%20d%C3%B6ng%C3%BCler%20ise%20s%C3%BCsl%C3%BC%20parantezler%20kullanarak%20olu%C5%9Fturdu%C4%9Fumuz%20kod%20blo%C4%9Funun%2C%20belirli%20bir%20ko%C5%9Ful%20sa%C4%9Flanm%C4%B1%C5%9Fken%20s%C3%BCrekli%20kendini%20ba%C5%9Fa%20alarak%20tekrar%20i%C5%9Flenmesine%20imkan%20tan%C4%B1yor.%20C%23%20i%C3%A7erisinde%20farkl%C4%B1%20tip%20d%C3%B6ng%C3%BCler%20olsa%20da%20bunlar%C4%B1n%20hepsi%20bar%C4%B1nd%C4%B1rd%C4%B1%C4%9F%C4%B1%20ko%C5%9Ful%20sa%C4%9Fland%C4%B1k%C3%A7a%20i%C3%A7erisindeki%20kod%20blo%C4%9Funu%20%C3%A7al%C4%B1%C5%9Ft%C4%B1r%C4%B1rlar%20ve%20ko%C5%9Ful%20yanl%C4%B1%C5%9F%20oldu%C4%9Funda%20sonlan%C4%B1rlar.%20%C5%9Eimdi%20isterseniz%20bu%20d%C3%B6ng%C3%BC%20tiplerinin%20kullan%C4%B1m%C4%B1n%C4%B1%20%C3%B6rnekler%20ile%20inceleyelim.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;srcTitle=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari&amp;snippet=Programlaman%C4%B1n%20temellerini%20olu%C5%9Fturan%20if%2Felse%20kontrol%20yap%C4%B1s%C4%B1n%C4%B1%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20incelemi%C5%9Ftik.%20Buraya%20kadar%20%C3%B6%C4%9Frendiklerimizle%20art%C4%B1k%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20program%C4%B1n%20istedi%C4%9Fimiz%20ak%C4%B1%C5%9F%C4%B1%20takip%20edebilmesini%20ve%20belirledi%C4%9Fimiz%20ko%C5%9Fullara%20g%C3%B6re%20farkl%C4%B1%20i%C5%9Flemler%20yapabilmesini%20sa%C4%9Flayabiliriz.%20Ancak%20bu%20ko%C5%9Fullar%20bazen%20ger%C3%A7ekten%20fazla%20olabilir%20ve%20biz%20ayn%C4%B1%20kodu%20bir%C3%A7ok%20kez%20%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak%20zorunda%20kalabiliriz.%20Bunun%20yan%C4%B1nda%20birden%20fazla%20yap%C4%B1lacak%20i%C5%9Flem%20oldu%C4%9Funda%20ayn%C4%B1%20kod%20blo%C4%9Funu%20s%C3%BCrekli%20tekrar%20yazmak%20programc%C4%B1lar%C4%B1n%20%C3%A7ok%20tercih%20etti%C4%9Fi%20bir%20y%C3%B6ntem%20de%C4%9Fildir.%20Tekrar%20edilen%20kodlar%20yazd%C4%B1%C4%9F%C4%B1n%C4%B1z%20program%C4%B1%20ileride%20modifiye%20etmenizi%20zorla%C5%9Ft%C4%B1r%C4%B1rken%2C%20kar%C4%B1%C5%9F%C4%B1k%20bir%20g%C3%B6r%C3%BCnt%C3%BC%20olu%C5%9Fturarak%20kodlar%C4%B1n%20okunakl%C4%B1%C4%9F%C4%B1n%C4%B1%20azalt%C4%B1r.%20%C3%96rne%C4%9Fin%2030%20ki%C5%9Filik%20bir%20s%C4%B1n%C4%B1f%C4%B1n%20notlar%C4%B1n%C4%B1%20girdi%C4%9Finiz%20ve%20size%20not%20ortalamas%C4%B1n%C4%B1%20%C3%A7%C4%B1karan%20bir%20programda%2C%20kullan%C4%B1c%C4%B1dan%20her%20notu%20almak%20i%C3%A7in%20kod%20tekrar%C4%B1%20yapmam%C4%B1z%20olduk%C3%A7a%20b%C3%BCy%C3%BCk%20zaman%20kayb%C4%B1na%20neden%20olur.%0D%0A%0D%0A%C3%9Cstelik%20karek%C3%B6k%20hesaplayan%20algoritmalarda%20oldu%C4%9Fu%20gibi%20baz%C4%B1%20durumlarda%20yapmam%C4%B1z%20gereken%20i%C5%9Fin%20ne%20zaman%20tamamlanaca%C4%9F%C4%B1n%C4%B1%20%C3%B6nceden%20kestirmemiz%20de%20imkans%C4%B1zd%C4%B1r.%20%C4%B0%C5%9Fte%20bu%20tip%20uzun%20tekrarlar%20ya%20da%20i%C5%9Ftedi%C4%9Fimiz%20%C5%9Fart%20olu%C5%9Fana%20kadar%20ayn%C4%B1%20i%C5%9Flemin%20yap%C4%B1lmas%C4%B1n%C4%B1%20istedi%C4%9Fimiz%20durumlarda%20d%C3%B6ng%C3%BCleri%20kullan%C4%B1yoruz.%20%C3%96nceki%20yaz%C4%B1lar%C4%B1m%C4%B1zda%20bahsetti%C4%9Fimiz%20gibi%2C%20normalde%20uygulamam%C4%B1z%20%C3%A7al%C4%B1%C5%9F%C4%B1rken%20kodlar%20yukar%C4%B1dan%20a%C5%9Fa%C4%9F%C4%B1ya%20sat%C4%B1r%20sat%C4%B1r%20i%C5%9Flenir%20ve%20son%20sat%C4%B1r%20i%C5%9Flendikten%20sonra%20program%20sonland%C4%B1r%C4%B1l%C4%B1r.%20Bizim%20kullanaca%C4%9F%C4%B1m%C4%B1z%20d%C3%B6ng%C3%BCler%20ise%20s%C3%BCsl%C3%BC%20parantezler%20kullanarak%20olu%C5%9Fturdu%C4%9Fumuz%20kod%20blo%C4%9Funun%2C%20belirli%20bir%20ko%C5%9Ful%20sa%C4%9Flanm%C4%B1%C5%9Fken%20s%C3%BCrekli%20kendini%20ba%C5%9Fa%20alarak%20tekrar%20i%C5%9Flenmesine%20imkan%20tan%C4%B1yor.%20C%23%20i%C3%A7erisinde%20farkl%C4%B1%20tip%20d%C3%B6ng%C3%BCler%20olsa%20da%20bunlar%C4%B1n%20hepsi%20bar%C4%B1nd%C4%B1rd%C4%B1%C4%9F%C4%B1%20ko%C5%9Ful%20sa%C4%9Fland%C4%B1k%C3%A7a%20i%C3%A7erisindeki%20kod%20blo%C4%9Funu%20%C3%A7al%C4%B1%C5%9Ft%C4%B1r%C4%B1rlar%20ve%20ko%C5%9Ful%20yanl%C4%B1%C5%9F%20oldu%C4%9Funda%20sonlan%C4%B1rlar.%20%C5%9Eimdi%20isterseniz%20bu%20d%C3%B6ng%C3%BC%20tiplerinin%20kullan%C4%B1m%C4%B1n%C4%B1%20%C3%B6rnekler%20ile%20inceleyelim." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/&amp;title=C%23+Dersleri+-+4%3A+D%C3%B6ng%C3%BC+Yapilari" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 3: Program Kontrolleri</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cdersleri-3-program-kontrolleri</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:02:38 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersleri]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dersleri]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[program kontrolleri]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=153</guid>
		<description><![CDATA[C# dilinin yapıtaşlarından sayılan değişkenlere önceki yazımızda değinmiştik. Farklı kullanımlar için çeşitli tipleri bulunan değişkenleri inceledikten sonra, yazdığımız programın akışına yön verecek karar verme mekanizmalarından bahsetmenin zamanı geldi. Program kodları yorumlanmaya başladıktan sonra düz bir akışı takip ederek satır satır işlenirler. Ancak programın gerektirdiği bazı kararlar, girdiler ve mantıksal nedenlerden ötürü bu akışın dallara ayrılarak farklı yönlere gitmesini sağlamak isteyebiliriz. Bu durumda program yürütülürken önceki satırlara geri dönebilir veya ilerideki kod parçalarını çalıştırabilir.

Öncelikle şunu söylemek gerekir ki program akışının yön değiştirmesini sağlayan karar ve kontrol mekanizmaları olmasaydı, bilgisayarların pahalı bir metal yığınından farkı kalmazdı. Programların çeşitli koşullara göre farklı işlemler yapabilmesi, insanların gerçek hayatta farklı koşullar altında farklı davranışlar göstermesi gibidir. Gerçekleştireceği bir eylemde birçok seçenek arasından bulunduğu koşula uygun olanını seçerek tamamlamasına neden olur. Örneğin sabah uyandığınızda nasıl kıyafet seçtiğimizi düşünelim. Dolabımızda birçok çeşit kıyafet olabilir, ancak biz dışarıdaki hava durumuna bakıp karar verir, güneşli ve sıcak bir günde kazak ya da yağmurluk yerine ince bir t-shirt giymeyi tercih ederiz. Bilgisayar programları da amacı doğrultusunda değişik koşulları göz önünde bulundurarak çalışmasını sürdürür.

Karar verme mekanizmalarının çalışması, belli bir koşulun mantık değeri olarak doğru veya yanlış olarak değerlendirilmesiyle ilgili kod bloğunun işlenmesine dayanır. Mantıksal ifadelerin koşul içerisinde değerlendirilmesi, önceki yazımızda bahsettiğimiz mantıksal (boolean) değişkenler kullanılarak yapılır. Hatırlatmak gerekirse, doğru (true) veya yanlış (false) olabilen bu ifade türleri, koşullarını durumunu belirlemek için kullanılır. Bir ifadenin doğru veya yanlış olduğu, programcılar tarafından tanımlanan boolean değişkenler ile belirlenebildiği gibi, mantık öğeleri veya ilişkisel operatörler kullanılarak da belirlenebilir


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik2-e1266454579851.jpg" rel="lightbox[153]"><img class="aligncenter size-full wp-image-154" title="baslik" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik2-e1266454579851.jpg" alt="" width="480" height="360" /></a>C# dilinin yapıtaşlarından sayılan değişkenlere önceki yazımızda değinmiştik. Farklı kullanımlar için çeşitli tipleri bulunan değişkenleri inceledikten sonra, yazdığımız programın akışına yön verecek karar verme mekanizmalarından bahsetmenin zamanı geldi. Program kodları yorumlanmaya başladıktan sonra düz bir akışı takip ederek satır satır işlenirler. Ancak programın gerektirdiği bazı kararlar, girdiler ve mantıksal nedenlerden ötürü bu akışın dallara ayrılarak farklı yönlere gitmesini sağlamak isteyebiliriz. Bu durumda program yürütülürken önceki satırlara geri dönebilir veya ilerideki kod parçalarını çalıştırabilir.</p>
<p>Öncelikle şunu söylemek gerekir ki program akışının yön değiştirmesini sağlayan karar ve kontrol mekanizmaları olmasaydı, bilgisayarların pahalı bir metal yığınından farkı kalmazdı. Programların çeşitli koşullara göre farklı işlemler yapabilmesi, insanların gerçek hayatta farklı koşullar altında farklı davranışlar göstermesi gibidir. Gerçekleştireceği bir eylemde birçok seçenek arasından bulunduğu koşula uygun olanını seçerek tamamlamasına neden olur. Örneğin sabah uyandığınızda nasıl kıyafet seçtiğimizi düşünelim. Dolabımızda birçok çeşit kıyafet olabilir, ancak biz dışarıdaki hava durumuna bakıp karar verir, güneşli ve sıcak bir günde kazak ya da yağmurluk yerine ince bir t-shirt giymeyi tercih ederiz. Bilgisayar programları da amacı doğrultusunda değişik koşulları göz önünde bulundurarak çalışmasını sürdürür.</p>
<p>Karar verme mekanizmalarının çalışması, belli bir koşulun mantık değeri olarak doğru veya yanlış olarak değerlendirilmesiyle ilgili kod bloğunun işlenmesine dayanır. Mantıksal ifadelerin koşul içerisinde değerlendirilmesi, önceki yazımızda bahsettiğimiz mantıksal (boolean) değişkenler kullanılarak yapılır. Hatırlatmak gerekirse, doğru (true) veya yanlış (false) olabilen bu ifade türleri, koşullarını durumunu belirlemek için kullanılır. Bir ifadenin doğru veya yanlış olduğu, programcılar tarafından tanımlanan boolean değişkenler ile belirlenebildiği gibi, mantık öğeleri veya ilişkisel operatörler kullanılarak da belirlenebilir.<span id="more-153"></span></p>
<p><strong>Mantıksal İfadeler</strong></p>
<p>Belirli koşulların sağlanması için, sonucu doğru ya da yanlış olan ifadeler kullanırız. Bu ifadelerin doğru ya da yanlış olması ilişkisel operatörler ve mantık öğeleri ile belirlenir. İlişkisel operatörler rakam, harf gibi temel değişkenleri veya nesneleri karşılaştırmaya yarayan, karşılaşma sonucunda bir mantık değeri (true veya false) döndüren operatörlerdir. Tablo 1 de (yazının hemen altında) inceleyebileceğiniz bu operatörler, sağda yazılan değeri soldaki ile karşılaştırarak bir sonuç verirler. Bir değerin diğerine göre büyüklüğü veya eşit olması, program kontrollerinde ve ileride değineceğimiz iterasyon (yenileme) kontrolleri içerisinde sürekli kullanacağımız karşılaştırma yapılarıyla belirlenir.</p>
<p>Koşullar içerisinde birden fazla mantıksal ifade kullanmamız gerekebilir. Bu gibi durumlarda “VE operatörü” olan “&amp;&amp;” ile “VEYA operatörü” olan “||” kullanarak mantıksal değerleri bağlayabiliyoruz. Bir şartın gerçekleşebilmesi için bütün mantıksal değerlerin doğru olması gereken durumlarda VE operatörünü kullanarak bu doğruluğu sınayabiliriz. Şartlardan birinin doğru olması koşulun doğru olması için yeterli ise VEYA operatörü kullanarak bu koşulun doğru sonuç vermesini sağlayabiliriz. Ayrıca mantıksal bir değeri (boolean) tam tersine çevirmek için değil (NOT)  operatörü olan ünlem “!” işaretini ifadenin başına yazmamız yeterlidir. Örneğin iki sayı değişkeninin 10 ile 100 arasında olup olmadığını kontrol etmek istiyoruz. Bu durumda aşağıdaki gibi bir ifade kullanarak iki karşılaştırma ifadesiyle istediğimizi gerçekleştirebiliriz:</p>
<p>int sayi = 30;</p>
<p>Boolean sonuc = (sayi &gt; 10) &amp;&amp; (sayi &lt; 100);</p>
<p>Buradaki sonuç değişkeni, üst satırda girilen sayı değişkeninin hem 10’dan büyük hem de 100’den küçük olması koşulunun doğruluğunu bir arada arayacaktır. Bizlere boolean değer döndüren son mantıksal öğemiz ise, değişkenlerin türünü kontrol etmemize yarayan “is” anahtar sözcüğü. Diğer anlattığımız mantıksal ifadeler kadar çok kullanmayacağımız bu komut ile, tanımlı olan değişkenlerin hangi nesne türüne veya sınıfına dahil olduğunu anlayabiliriz. Küçük bir örnek vermek gerekirse:</p>
<p>int sayi = 30;<br />
Console.WriteLine(sayi is int);</p>
<p>şeklinde basit bir ifade yazarsak, “sayi” isimli değişken int tipinde olduğu için konsola doğru (True) değerini yazdırdığını görebiliriz.</p>
<p><strong>IF &amp; ELSE Kontrolleri</strong></p>
<p>Buraya kadar program kontrol elemanlarından bahsettikten sonra, sıra geldi bu kontrollerin nasıl yapıldığını görmeye. İngilizcede “eğer” anlamına gelen if kelimesi, birçok programlama dilinde olduğu gibi C# içerisinde de en çok kullanılan kontrol söz dizimi olarak karşımıza çıkıyor. Kullanımı if(koşul) şeklinde olan bu yapı, “eğer” parantez içerisindeki koşul doğru ise önünde bulunduğu kod bloğunu çalıştırıyor. Süslü parantezler ile oluşturduğumuz kod bloğu, eğer koşul sağlanamazsa es geçiliyor ve içerisindeki komut satırları çalıştırılmıyor. Hemen ilk örneğimize bakarsanız (Kod 1) burada tanımladığımız “hava” ismindeki string değişken, if içerisinde ilişkisel operatörler kullanılarak kontrol ediliyor ve eğer değeri koşul içinde belirtilen değere eşit ise altındaki kod bloğunun çalıştırılması sağlanıyor.</p>
<p>Oldukça basit hazırladığımız ilk örneğimizde değişkenimizin değeri koşul içerisinde belirtilen ile aynı olursa ekrana bir satır yazı yazdırıyoruz. <span style="color: #ff9900;">(Yazının altında örnek kodları bulabilirsiniz.)</span></p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc1.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-160" title="Sonuc1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc1.png" alt="" width="336" height="106" /></a></p>
<p>İkinci örneğimize bakacak olursak, birbirini tamamlayan iki if kontrolünün iç içe kullanıldığını görebiliriz. Dışarıdaki if, cinsiyet değişkenini kontrol ederken, içerideki if kontrolleri yaşın 18’in üzerinde olup olmadığını kontrol ediyor. Eğer üzerinde ise ilk if içerisindeki kod bloğu çalışıyor ve askere gitmek için uygun olduğunuz mesajını alıyorsunuz. Yaş değişkeninin 18’in altında olması durumda ise diğer kod bloğu içerisindeki komut satırı çalışıyor. Buradaki sorun, bizim farklı koşullar için farklı if kontrolleri yazarak gereksiz yere işlem yapıyor olmamız. Elinizde yapacak birden çok seçeneğiniz olduğunda, hepsi için bir if kontrolü yazmadan tek bir ifade ile bu koşulları değerlendirmemiz için, Türkçeye “aksi halde” olarak çevirebileceğimiz “else” komutu yardımımıza koşuyor.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc2.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-161" title="Sonuc2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc2.png" alt="" width="323" height="98" /></a></p>
<p>Kontrol ifadesinin koşulu olarak verdiğimiz boolean ifade yanlış (false) bir değer döndürdüğünde, yani aradığımız koşul olmadığında else ifadesinin ardından yazdığımız bir kod bloğunun çalıştırılması mümkün Üçüncü örneğimizde bir sayı değişkeninin % operatörüyle 2’ye bölümünden kalan sayıyı buluyoruz ve bu sayıyı 1’e eşitleyerek tek ya da çift sayı olduğunu belirliyoruz. Üstelik iki eylem için tek bir if kontrolü kullanarak işlem zamanını da azaltmış oluyoruz.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc3.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-162" title="Sonuc3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc3.png" alt="" width="319" height="83" /></a></p>
<p>Programımızda yapılan işlem sayısını azaltmak için birbiri ile ilişkili koşulları yine else komutu ile birbirine bağlamamız mümkün. Yazılan ilk if bölümünden sonra “eğer böyle değil ise” anlamında “else if(koşul)” yapısında kontrolü bir zincir halinde uzatmamız mümkün. Bu tür zincirlerde gerekli koşul sağlandığında zincirin alt elemanları değerlendirmeye alınmayacağından işlemden tasarruf edebiliyoruz. Lise yıllarımızdaki not sistemini hatırlayabildiğim kadarıyla dördüncü örneğimizde kullanmaya çalıştım. Burada not isimli bir sayı değişkeni ile not baremimizi bulmaya yarayan bir if zinciri oluşturduk. Mantıksal bağlayıcı VE operatörü (&amp;&amp;) ile not aralıklarını belirlediğimiz koşullar çalışacak kod bloğunu belirliyor ve buradaki yazının konsola yazılması sağlanıyor. Eğer not değeri else if ile oluşturduğumuz bloklara giremeyecek kadar düşük ise en sona yazdığımız else ifadesindeki kod çalışıyor.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc4.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-163" title="Sonuc4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc4.png" alt="" width="326" height="86" /></a></p>
<p>Kontrollerin işlem sayısını önemli ölçüde azaltan zincirleme koşullar yapısına değinmişken, bu yapıyı daha kolay bir biçimde kullanmamıza imkân veren switch yapısından da bahsedelim. Tek bir değişkeninize bağlı birden fazla koşul olduğu ve bu koşulların hepsinde bir eşitliğin arandığı durumlarda switch kontrolü yazdığınız kodu oldukça kısaltacaktır. Switch(değişken) yapısıyla koşulların bağlı olduğu değişkenin ismini alır ve süslü parantezler arasına değişkenin alabileceği değerler “case DEĞER:” şeklinde yeni bir durum olarak ifade edilir. Farklı değerler için yeni “case”ler oluşturmalı ve çalışacak kod bloğunu bu sefer süslü parantezler kullanmadan “case”lerin altına yazmalısınız. Süslü parantez olmadığı için gereken kodları yazdıktan sonra bitirdiğinizi en sona yazacağınız “break” komutu ile belirtiyoruz.</p>
<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc5.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-164" title="Sonuc5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Sonuc5.png" alt="" width="328" height="89" /></a></p>
<p>Switch kullanarak her yeni durum (case) oluşturduğunuzda ilk dikkat etmeniz gereken, yazdığınız değerlerin türleri olacaktır. Tipi int olan bir değeri direkt yazabiliyorken, char tipler için tek tırnak (‘’), string tipindeki değerler için çift tırnak  (“”) kullanmamız gerektiğini unutmamalıyız. Son kod örneğimizi incelerseniz, burada string tipindeki il değerlerinin switch komutuyla eşini bulmasını sağlıyoruz. Öncelikle bahsetmemiz gereken, zincirleme else-if serilerinde verdiğiniz değer hiçbir koşula uymuyorsa geçerli olan koşulu belirlemek için en sona yazdığımız else ifadesi, switch yapısı içerisinde “default” anahtar sözcüğüyle aynen kullanılabiliyor. Kullanımı zorunlu olmayan default komutunu kullanırsanız, verdiğiniz değer mevcut “case”ler içerisinde bulunamazsa çalıştırılacak bölümü belirlemekte. Ayrıca aynı kod bloğuna birden fazla koşulda erişilebilmesi gibi durumlarda, birden fazla case başlığını üst üste yazarak kullanabilirsiniz. Bizde örneğimizde küçük harf ve büyük harf yazılan şehir isimleri de aynı değeri verdiği için bu tür bir yol izledik.</p>
<p>Bütün kontrol yapılarına değindikten sonra artık C# ile kendi kararlarını verebilen işlevsel programlar yazmaya başlayabileceğinizi rahatlıkla söyleyebiliriz. Mevcut örneklerimizi değiştirip geliştirerek ilk etapta denetimlerin nasıl çalıştığı konusunda tecrübe edinmenizi tavsiye ederim. İyi çalışmalar!</p>
<p>p.s. Bu makale Eylül 2008 tarihinde yazılmıştır.</p>
<p>Tablo 1:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="154">Karşılaştırma Türü</td>
<td width="154">Operatör</td>
<td width="154">Örnek</td>
<td width="154">Sonuç</td>
</tr>
<tr>
<td width="154">Eşittir</td>
<td width="154">==</td>
<td width="154">1 == 2</td>
<td width="154">Yanlış</td>
</tr>
<tr>
<td width="154">Eşit Değildir</td>
<td width="154">!=</td>
<td width="154">1 != 2</td>
<td width="154">Doğru</td>
</tr>
<tr>
<td width="154">Büyüktür</td>
<td width="154">&gt;</td>
<td width="154">1 &gt; 2</td>
<td width="154">Yanlış</td>
</tr>
<tr>
<td width="154">Küçüktür</td>
<td width="154">&lt;</td>
<td width="154">1 &lt; 2</td>
<td width="154">Doğru</td>
</tr>
<tr>
<td width="154">Büyük Eşittir</td>
<td width="154">&gt;=</td>
<td width="154">1 &gt;= 2</td>
<td width="154">Yanlış</td>
</tr>
<tr>
<td width="154">Küçük Eşittir</td>
<td width="154">&lt;=</td>
<td width="154">1 &lt;= 2</td>
<td width="154">Doğru</td>
</tr>
</tbody>
</table>
<p>Örnek Kod 1:</p>
<pre class="brush: c#; ">

static void Main(string[] args)

{

string hava = &quot;GÜNEŞLİ&quot;;

if (hava == &quot;GÜNEŞLİ&quot;)

{

Console.WriteLine(&quot;Bugün t-shirt giyeceğim.&quot;);

}

}
</pre>
<p>Örnek Kod 2:</p>
<pre class="brush: c#; ">

string cinsiyet = &quot;ERKEK&quot;;

int yas = 21;

if (cinsiyet == &quot;ERKEK&quot;)

{

if (yas &gt;= 18)

{

Console.WriteLine(&quot;Askere gitme vaktiniz gelmiş.&quot;);

}

if (yas &lt; 18)

{

Console.WriteLine(&quot;Askerlik için henüz erken.&quot;);

}

}
</pre>
<p>Örnek Kod 3:</p>
<pre class="brush: c#; ">

static void Main(string[] args)

{

int sayi = 30;

if (sayi % 2 == 1)

{

Console.WriteLine(&quot;Tek Sayı!&quot;);

}

else

{

Console.WriteLine(&quot;Çift Sayı!&quot;);

}

}
</pre>
<p>Örnek Kod 4:</p>
<pre class="brush: c#; ">

int not = 71;

if (not &lt;= 100 &amp;amp;amp;amp;&amp;amp;amp;amp; not &gt;= 85)

{

Console.WriteLine(&quot;5 Pekiyi&quot;);

}

else if (not &lt; 85 &amp;amp;amp;amp;&amp;amp;amp;amp; not &gt;= 70)

{

Console.WriteLine(&quot;4 İyi&quot;);

}

else if (not &lt; 70 &amp;amp;amp;amp;&amp;amp;amp;amp; not &gt;= 60)

{

Console.WriteLine(&quot;3 Orta&quot;);

}

else if (not &lt; 60 &amp;amp;amp;amp;&amp;amp;amp;amp; not &gt;= 50)

{

Console.WriteLine(&quot;2 Zayıf&quot;);

}

else

{

Console.WriteLine(&quot;1 Geçmez&quot;);

}
</pre>
<p>Örnek Kod 5:</p>
<pre class="brush: c#; ">

string il = &quot;İSTANBUL&quot;;

switch (il)

{

case &quot;ANKARA&quot;:

case &quot;ankara&quot;:

Console.WriteLine(&quot;Plaka: 06&quot;);

break;

case &quot;İSTANBUL&quot;:

case &quot;istanbul&quot;:

Console.WriteLine(&quot;Plaka: 34&quot;);

break;

case &quot;İZMİR&quot;:

case &quot;izmir&quot;:

Console.WriteLine(&quot;Plaka: 35&quot;);

break;

default:

Console.WriteLine(&quot;Hatalı giriş.&quot;);

break;

}
</pre>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Kod5.png" rel="lightbox[153]"><img class="aligncenter size-full wp-image-155" title="Kod5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Kod5.png" alt="" width="496" height="644" /></a>Kodlar tam olarak buna benzemeli! :))</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;t=C%23+Dersleri+-+3%3A+Program+Kontrolleri" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+3%3A+Program+Kontrolleri+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+3%3A+Program+Kontrolleri&amp;link=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;title=C%23+Dersleri+-+3%3A+Program+Kontrolleri&amp;summary=C%23%20dilinin%20yap%C4%B1ta%C5%9Flar%C4%B1ndan%20say%C4%B1lan%20de%C4%9Fi%C5%9Fkenlere%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20de%C4%9Finmi%C5%9Ftik.%20Farkl%C4%B1%20kullan%C4%B1mlar%20i%C3%A7in%20%C3%A7e%C5%9Fitli%20tipleri%20bulunan%20de%C4%9Fi%C5%9Fkenleri%20inceledikten%20sonra%2C%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20program%C4%B1n%20ak%C4%B1%C5%9F%C4%B1na%20y%C3%B6n%20verecek%20karar%20verme%20mekanizmalar%C4%B1ndan%20bahsetmenin%20zaman%C4%B1%20geldi.%20Program%20kodlar%C4%B1%20yorumlanmaya%20ba%C5%9Flad%C4%B1ktan%20sonra%20d%C3%BCz%20bir%20ak%C4%B1%C5%9F%C4%B1%20takip%20ederek%20sat%C4%B1r%20sat%C4%B1r%20i%C5%9Flenirler.%20Ancak%20program%C4%B1n%20gerektirdi%C4%9Fi%20baz%C4%B1%20kararlar%2C%20girdiler%20ve%20mant%C4%B1ksal%20nedenlerden%20%C3%B6t%C3%BCr%C3%BC%20bu%20ak%C4%B1%C5%9F%C4%B1n%20dallara%20ayr%C4%B1larak%20farkl%C4%B1%20y%C3%B6nlere%20gitmesini%20sa%C4%9Flamak%20isteyebiliriz.%20Bu%20durumda%20program%20y%C3%BCr%C3%BCt%C3%BCl%C3%BCrken%20%C3%B6nceki%20sat%C4%B1rlara%20geri%20d%C3%B6nebilir%20veya%20ilerideki%20kod%20par%C3%A7alar%C4%B1n%C4%B1%20%C3%A7al%C4%B1%C5%9Ft%C4%B1rabilir.%0D%0A%0D%0A%C3%96ncelikle%20%C5%9Funu%20s%C3%B6ylemek%20gerekir%20ki%20program%20ak%C4%B1%C5%9F%C4%B1n%C4%B1n%20y%C3%B6n%20de%C4%9Fi%C5%9Ftirmesini%20sa%C4%9Flayan%20karar%20ve%20kontrol%20mekanizmalar%C4%B1%20olmasayd%C4%B1%2C%20bilgisayarlar%C4%B1n%20pahal%C4%B1%20bir%20metal%20y%C4%B1%C4%9F%C4%B1n%C4%B1ndan%20fark%C4%B1%20kalmazd%C4%B1.%20Programlar%C4%B1n%20%C3%A7e%C5%9Fitli%20ko%C5%9Fullara%20g%C3%B6re%20farkl%C4%B1%20i%C5%9Flemler%20yapabilmesi%2C%20insanlar%C4%B1n%20ger%C3%A7ek%20hayatta%20farkl%C4%B1%20ko%C5%9Fullar%20alt%C4%B1nda%20farkl%C4%B1%20davran%C4%B1%C5%9Flar%20g%C3%B6stermesi%20gibidir.%20Ger%C3%A7ekle%C5%9Ftirece%C4%9Fi%20bir%20eylemde%20bir%C3%A7ok%20se%C3%A7enek%20aras%C4%B1ndan%20bulundu%C4%9Fu%20ko%C5%9Fula%20uygun%20olan%C4%B1n%C4%B1%20se%C3%A7erek%20tamamlamas%C4%B1na%20neden%20olur.%20%C3%96rne%C4%9Fin%20sabah%20uyand%C4%B1%C4%9F%C4%B1n%C4%B1zda%20nas%C4%B1l%20k%C4%B1yafet%20se%C3%A7ti%C4%9Fimizi%20d%C3%BC%C5%9F%C3%BCnelim.%20Dolab%C4%B1m%C4%B1zda%20bir%C3%A7ok%20%C3%A7e%C5%9Fit%20k%C4%B1yafet%20olabilir%2C%20ancak%20biz%20d%C4%B1%C5%9Far%C4%B1daki%20hava%20durumuna%20bak%C4%B1p%20karar%20verir%2C%20g%C3%BCne%C5%9Fli%20ve%20s%C4%B1cak%20bir%20g%C3%BCnde%20kazak%20ya%20da%20ya%C4%9Fmurluk%20yerine%20ince%20bir%20t-shirt%20giymeyi%20tercih%20ederiz.%20Bilgisayar%20programlar%C4%B1%20da%20amac%C4%B1%20do%C4%9Frultusunda%20de%C4%9Fi%C5%9Fik%20ko%C5%9Fullar%C4%B1%20g%C3%B6z%20%C3%B6n%C3%BCnde%20bulundurarak%20%C3%A7al%C4%B1%C5%9Fmas%C4%B1n%C4%B1%20s%C3%BCrd%C3%BCr%C3%BCr.%0D%0A%0D%0AKarar%20verme%20mekanizmalar%C4%B1n%C4%B1n%20%C3%A7al%C4%B1%C5%9Fmas%C4%B1%2C%20belli%20bir%20ko%C5%9Fulun%20mant%C4%B1k%20de%C4%9Feri%20olarak%20do%C4%9Fru%20veya%20yanl%C4%B1%C5%9F%20olarak%20de%C4%9Ferlendirilmesiyle%20ilgili%20kod%20blo%C4%9Funun%20i%C5%9Flenmesine%20dayan%C4%B1r.%20Mant%C4%B1ksal%20ifadelerin%20ko%C5%9Ful%20i%C3%A7erisinde%20de%C4%9Ferlendirilmesi%2C%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20bahsetti%C4%9Fimiz%20mant%C4%B1ksal%20%28boolean%29%20de%C4%9Fi%C5%9Fkenler%20kullan%C4%B1larak%20yap%C4%B1l%C4%B1r.%20Hat%C4%B1rlatmak%20gerekirse%2C%20do%C4%9Fru%20%28true%29%20veya%20yanl%C4%B1%C5%9F%20%28false%29%20olabilen%20bu%20ifade%20t%C3%BCrleri%2C%20ko%C5%9Fullar%C4%B1n%C4%B1%20durumunu%20belirlemek%20i%C3%A7in%20kullan%C4%B1l%C4%B1r.%20Bir%20ifadenin%20do%C4%9Fru%20veya%20yanl%C4%B1%C5%9F%20oldu%C4%9Fu%2C%20programc%C4%B1lar%20taraf%C4%B1ndan%20tan%C4%B1mlanan%20boolean%20de%C4%9Fi%C5%9Fkenler%20ile%20belirlenebildi%C4%9Fi%20gibi%2C%20mant%C4%B1k%20%C3%B6%C4%9Feleri%20veya%20ili%C5%9Fkisel%20operat%C3%B6rler%20kullan%C4%B1larak%20da%20belirlenebilir&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;title=C%23+Dersleri+-+3%3A+Program+Kontrolleri" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;title=C%23+Dersleri+-+3%3A+Program+Kontrolleri" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;title=C%23+Dersleri+-+3%3A+Program+Kontrolleri&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;srcTitle=C%23+Dersleri+-+3%3A+Program+Kontrolleri&amp;snippet=C%23%20dilinin%20yap%C4%B1ta%C5%9Flar%C4%B1ndan%20say%C4%B1lan%20de%C4%9Fi%C5%9Fkenlere%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20de%C4%9Finmi%C5%9Ftik.%20Farkl%C4%B1%20kullan%C4%B1mlar%20i%C3%A7in%20%C3%A7e%C5%9Fitli%20tipleri%20bulunan%20de%C4%9Fi%C5%9Fkenleri%20inceledikten%20sonra%2C%20yazd%C4%B1%C4%9F%C4%B1m%C4%B1z%20program%C4%B1n%20ak%C4%B1%C5%9F%C4%B1na%20y%C3%B6n%20verecek%20karar%20verme%20mekanizmalar%C4%B1ndan%20bahsetmenin%20zaman%C4%B1%20geldi.%20Program%20kodlar%C4%B1%20yorumlanmaya%20ba%C5%9Flad%C4%B1ktan%20sonra%20d%C3%BCz%20bir%20ak%C4%B1%C5%9F%C4%B1%20takip%20ederek%20sat%C4%B1r%20sat%C4%B1r%20i%C5%9Flenirler.%20Ancak%20program%C4%B1n%20gerektirdi%C4%9Fi%20baz%C4%B1%20kararlar%2C%20girdiler%20ve%20mant%C4%B1ksal%20nedenlerden%20%C3%B6t%C3%BCr%C3%BC%20bu%20ak%C4%B1%C5%9F%C4%B1n%20dallara%20ayr%C4%B1larak%20farkl%C4%B1%20y%C3%B6nlere%20gitmesini%20sa%C4%9Flamak%20isteyebiliriz.%20Bu%20durumda%20program%20y%C3%BCr%C3%BCt%C3%BCl%C3%BCrken%20%C3%B6nceki%20sat%C4%B1rlara%20geri%20d%C3%B6nebilir%20veya%20ilerideki%20kod%20par%C3%A7alar%C4%B1n%C4%B1%20%C3%A7al%C4%B1%C5%9Ft%C4%B1rabilir.%0D%0A%0D%0A%C3%96ncelikle%20%C5%9Funu%20s%C3%B6ylemek%20gerekir%20ki%20program%20ak%C4%B1%C5%9F%C4%B1n%C4%B1n%20y%C3%B6n%20de%C4%9Fi%C5%9Ftirmesini%20sa%C4%9Flayan%20karar%20ve%20kontrol%20mekanizmalar%C4%B1%20olmasayd%C4%B1%2C%20bilgisayarlar%C4%B1n%20pahal%C4%B1%20bir%20metal%20y%C4%B1%C4%9F%C4%B1n%C4%B1ndan%20fark%C4%B1%20kalmazd%C4%B1.%20Programlar%C4%B1n%20%C3%A7e%C5%9Fitli%20ko%C5%9Fullara%20g%C3%B6re%20farkl%C4%B1%20i%C5%9Flemler%20yapabilmesi%2C%20insanlar%C4%B1n%20ger%C3%A7ek%20hayatta%20farkl%C4%B1%20ko%C5%9Fullar%20alt%C4%B1nda%20farkl%C4%B1%20davran%C4%B1%C5%9Flar%20g%C3%B6stermesi%20gibidir.%20Ger%C3%A7ekle%C5%9Ftirece%C4%9Fi%20bir%20eylemde%20bir%C3%A7ok%20se%C3%A7enek%20aras%C4%B1ndan%20bulundu%C4%9Fu%20ko%C5%9Fula%20uygun%20olan%C4%B1n%C4%B1%20se%C3%A7erek%20tamamlamas%C4%B1na%20neden%20olur.%20%C3%96rne%C4%9Fin%20sabah%20uyand%C4%B1%C4%9F%C4%B1n%C4%B1zda%20nas%C4%B1l%20k%C4%B1yafet%20se%C3%A7ti%C4%9Fimizi%20d%C3%BC%C5%9F%C3%BCnelim.%20Dolab%C4%B1m%C4%B1zda%20bir%C3%A7ok%20%C3%A7e%C5%9Fit%20k%C4%B1yafet%20olabilir%2C%20ancak%20biz%20d%C4%B1%C5%9Far%C4%B1daki%20hava%20durumuna%20bak%C4%B1p%20karar%20verir%2C%20g%C3%BCne%C5%9Fli%20ve%20s%C4%B1cak%20bir%20g%C3%BCnde%20kazak%20ya%20da%20ya%C4%9Fmurluk%20yerine%20ince%20bir%20t-shirt%20giymeyi%20tercih%20ederiz.%20Bilgisayar%20programlar%C4%B1%20da%20amac%C4%B1%20do%C4%9Frultusunda%20de%C4%9Fi%C5%9Fik%20ko%C5%9Fullar%C4%B1%20g%C3%B6z%20%C3%B6n%C3%BCnde%20bulundurarak%20%C3%A7al%C4%B1%C5%9Fmas%C4%B1n%C4%B1%20s%C3%BCrd%C3%BCr%C3%BCr.%0D%0A%0D%0AKarar%20verme%20mekanizmalar%C4%B1n%C4%B1n%20%C3%A7al%C4%B1%C5%9Fmas%C4%B1%2C%20belli%20bir%20ko%C5%9Fulun%20mant%C4%B1k%20de%C4%9Feri%20olarak%20do%C4%9Fru%20veya%20yanl%C4%B1%C5%9F%20olarak%20de%C4%9Ferlendirilmesiyle%20ilgili%20kod%20blo%C4%9Funun%20i%C5%9Flenmesine%20dayan%C4%B1r.%20Mant%C4%B1ksal%20ifadelerin%20ko%C5%9Ful%20i%C3%A7erisinde%20de%C4%9Ferlendirilmesi%2C%20%C3%B6nceki%20yaz%C4%B1m%C4%B1zda%20bahsetti%C4%9Fimiz%20mant%C4%B1ksal%20%28boolean%29%20de%C4%9Fi%C5%9Fkenler%20kullan%C4%B1larak%20yap%C4%B1l%C4%B1r.%20Hat%C4%B1rlatmak%20gerekirse%2C%20do%C4%9Fru%20%28true%29%20veya%20yanl%C4%B1%C5%9F%20%28false%29%20olabilen%20bu%20ifade%20t%C3%BCrleri%2C%20ko%C5%9Fullar%C4%B1n%C4%B1%20durumunu%20belirlemek%20i%C3%A7in%20kullan%C4%B1l%C4%B1r.%20Bir%20ifadenin%20do%C4%9Fru%20veya%20yanl%C4%B1%C5%9F%20oldu%C4%9Fu%2C%20programc%C4%B1lar%20taraf%C4%B1ndan%20tan%C4%B1mlanan%20boolean%20de%C4%9Fi%C5%9Fkenler%20ile%20belirlenebildi%C4%9Fi%20gibi%2C%20mant%C4%B1k%20%C3%B6%C4%9Feleri%20veya%20ili%C5%9Fkisel%20operat%C3%B6rler%20kullan%C4%B1larak%20da%20belirlenebilir" rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/&amp;title=C%23+Dersleri+-+3%3A+Program+Kontrolleri" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 2: Programciliga Giris</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cdersleri-2-programciliga-giris</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 09:01:26 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net 3.5]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersi]]></category>
		<category><![CDATA[c# eğitimi]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[cs]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[programlamaya giris]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=138</guid>
		<description><![CDATA[Önceki yazımda C# dilinin temelinde yer alan .NET çatısının yapısını incelemiş, 2000’li yıllardan sonraki tarihi süreci sizlere aktarmıştım. Söz dizimi C/C++ dillerine benzeyen C# özellikle bu dillerden birini veya JAVA kullanmış deneyimli programcılar için alışması çok kolay bir dil. Bu sebeple daha önceden farklı dillerde program yazmış okurlarımız söz dizimine alıştıktan sonra .NET çatısının bizlere sunduğu kütüphaneleri kullanarak farklı uygulamalar geliştirmeye kolayca başlayabilirler. Ancak biz yazı dizimizde programlama dünyasına yeni adım atacak okurlarımızı da düşünerek sayfalarımızda programlama dilinin detaylarına da değinmeye çalışacağız.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 3: Program Kontrolleri'>C# Dersleri &#8211; 3: Program Kontrolleri</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code-small.jpg" rel="lightbox[138]"><img class="aligncenter size-full wp-image-143" title="code small" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/code-small.jpg" alt="" width="520" height="390" /></a></p>
<p>Önceki yazımda C# dilinin temelinde yer alan .NET çatısının yapısını incelemiş, 2000’li yıllardan sonraki tarihi süreci sizlere aktarmıştım. Söz dizimi C/C++ dillerine benzeyen C# özellikle bu dillerden birini veya JAVA kullanmış deneyimli programcılar için alışması çok kolay bir dil. Bu sebeple daha önceden farklı dillerde program yazmış okurlarımız söz dizimine alıştıktan sonra .NET çatısının bizlere sunduğu kütüphaneleri kullanarak farklı uygulamalar geliştirmeye kolayca başlayabilirler. Ancak biz yazı dizimizde programlama dünyasına yeni adım atacak okurlarımızı da düşünerek sayfalarımızda programlama dilinin detaylarına da değinmeye çalışacağız.</p>
<p><span id="more-138"></span></p>
<p>İlerideki eğitimlerimizde Windows Forms uygulamaları geliştirerek grafik arayüze sahip (GUI &#8211; Graphical User Interface) programların C# kullanarak ne kadar kolay hazırlayabileceğimize şahit olacağız. Ancak bu safhaya gelmeden önce temel programlama içeriğini işlerken genelde konsol uygulamaları üzerinden örnekler geliştireceğiz. DOS işletim sistemine aşina okurlarımızı eski zamanlara götürecek bu tür uygulamalar Windows Komut İstemi altında çalışan temel projeler. Eğitimlerimizi takip edenlerin hatırlayacağı gibi, Visual Studio altında yeni proje oluştururken “Console Application”’u seçerek bu türde uygulama hazırlamaya başlayabiliriz. Uygulamamızı derlemeden önce Ctrl+F5 tuşlarına basarak çalıştırabiliyoruz. Geliştirme ortamımızı anlattıktan sonra C# ile program yazmaya hazırız demektir.</p>
<p>İlk yazımızda C#’ın bir süslü parantez ( { } )  dili olduğundan bahsetmiştik. Aslında söylemek istediğimiz bu parantezler arasında kod blokları oluşması, fonksiyon ve kontrollerin içerisindeki kodların yine bu parantezler arasında yer almasıdır. Bu kod blokları arasında gerçekleştireceğimiz bütün eylemlerin sonuna noktalı virgül “;” koyarak komutu tamamlamayı unutmamalıyız. Yazdığımız her program çalışmak için “Main” olarak isimlendirilen ana fonksiyona başvurur. Yeni proje açtığınızda oluşturulan Program.cs dosyası içerisindeki Main fonksiyonu altındaki kod bloğunun sahip olduğu süslü parantezler ( { } ) arasına hazırladığımız örnek kodları yazabilirsiniz. Bunun yanında, derleyici tarafından dikkate alınmayan, sadece not tutmak için kullanılan yorum satırları oluşturmak için tek satırlık // karakterlerini kullanabilir, ya da satır sınırlaması olmayan yorum bölümlerini /* ve */ arasına metin yazarak oluşturabilirisiniz.</p>
<p><strong>DEĞİŞKENLER</strong></p>
<p><strong> </strong>Matematik derslerinde denklemler ile hayatımıza giren değişken ifadesi, programlamada en çok kullandığımız yapıların başında geliyor. Belirli bir değeri bilgisayarın belleğinde (Random Access Memory &#8211; RAM) tutmak istediğimizde bir değişken tanımlıyor ve yeri geldiğinde tanımladığımız bu değişkenin değerini istediğimiz gibi değiştirebiliyoruz. Mantıksal, sayısal ve karaktersel değerler alan değişkenler için bellekte sabit bir yer ayrılmakta. Ancak bir değişken kullanıldığı yere göre daha az veya fazla bellek alanına ihtiyaç duyabilir. Örneğin bellekte tutulan sayısal değerleri düşünün. İkili sistem ile bellekte tutulan sayı değerleri, sayının büyüklüğüne göre farklı bellek alanı işgal edecektir. Bu durumda bir basamaklı bir sayı için en fazla 5 bitlik bir alan ayrılması yeterliyken, basamak sayısı arttıkça ihtiyaç duyulan bellek miktarı da artmakta. Eğer biz bir değişkende tek basamaklı bir sayı tutacaksak, o sayı için bellekte 32 bitlik bir alan ayırmamız halinde belleği etkin kullanmamış oluruz. Etkin bellek kullanımını sağlamak amacıyla programlama dilleri içerisinde farklı boyutlarda değişken türleri mevcuttur.</p>
<p>Tablo 1’de (yazının sonunda) görebileceğiniz değişken türleri arasında sayı değeri tutan tiplere bakacak olursanız “short” tipi bir değişken 16 bit olup en fazla 5 basamaklı bir sayı tutabilirken, “integer” 10, “long” 19 basamaklı sayılara kadar veri saklayabilir. Bu sayılar negatif değer alabiliyorken, işareti olmayan “unsigned” tipler sadece pozitif değer alabilmekte, böylelikle daha fazla basamaklı sayıları aynı miktarda bellek harcayarak tutabilmektedir (uint, ulong gibi). Sayılar konusunda diğer bir önemli nokta, ondalık değerlere dikkat etmenizin gerekmesi. Ondalık değerleri bellekte tutmak için, boyutları değişen “float” ve “double” tipi değişkenler kullanıyoruz.</p>
<p>Mantıksal değişkenler ise, sadece doğru (True)  ya da yanlış (False) değerini tutabilen 1-bit boyutunda veri tipleridir. Yine ortaöğrenim sırasında mantık derslerinden aşina olduğunuzu düşündüğüm bu yapılar, Boolean değişkenler olarak adlandırılır. Tutulan bu mantıksal değerler, program akışında gidilen yolu değiştiren koşullar içerisinde kullanılır. Diğer dillerden farklı olarak bu değişkenleri tanımlamak için kısaca “bool” yazıyoruz. Ayrıca true ve talse değerlerinin baş harflerinin küçük olması önemli.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim14.png" rel="lightbox[138]"><img class="aligncenter size-full wp-image-139" title="Resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim14.png" alt="" width="455" height="550" /></a> İlk örneğimizin kodları</p>
<p><strong>CHAR  vs. STRING</strong></p>
<p>Karakter tutan “char” veri tipi, C/C++ zamanından günümüzü yapısını bozmadan gelmeyi başarmış. Öncelikle sadece ikili tabanda sayı saklayabilen bilgisayar belleklerinin karakterleri nasıl hafızasında tutabildiğinden bahsedelim. Noktalama işaretleri, rakamlar ve harflerden oluşan karakter dizisi elemanları, ASCII kodu adı verilen bir sayıya eşitlenmiştir. Büyük ve küçük harfler için farklı olmak üzere bütün bu elemanların <a href="http://en.wikipedia.org/wiki/Ascii_table">http://en.wikipedia.org/wiki/Ascii_table</a> adresinde inceleyebileceğiniz gibi bir sayı değeri vardır. İşte char veri tipi, programcının kendine atadığı bir karakteri bu sayı değerine eşitleyerek bellekte saklar. Burada programcı olarak sizin yapmanız gereken, kod içerisinde tanımladığınız değişkenin karakter olduğunu belirtmek için onu tek tırnak ( ‘’ ) içerisine almanız.</p>
<p>Ancak tek karakterin bellekte saklanması her zaman sizin için yeterli değildir. Bir kelime ya da cümleyi değişken içerisinde saklamak istediğinizde eski programlama dillerinde karakter dizileri oluşturmanız gerekmekteydi. Ancak C# gibi yeni nesil programlama dillerinde bu işi string adı verilen ikincil değişken tipleri kendiliğinden yapıyorlar. Böylelikle belirli bir metni tırnak işaretleri (“”) arasına yazarak değişken içerisinde saklayabiliyorsunuz. Aklınıza bu metin içerisinde tırnak işareti kullanmak geldiyse, onun için kaçış işlemi uygulamanız gerekmekte. String değişkenlerine özgü bu işlemde kullanmanız sakıncalı olan karakterlerin başına “\” işareti koyarak metnin içerisinde bulunmasını sağlayabilirsiniz. Mevcut kaçış işlemlerinin yapılabildiği karakterler: ‘ (tek tırnak), “(çirt tırnak), \(ters eğik çizgi), n (yeni satır), t (sekme). Aslında birçok char değişkeninin birleşiminden oluşan string, değişken gibi kullanılsa da bir veri yapısından ibarettir. Bu yüzden string değişkenlerinin bellekte kaplayacağı sabit bir boyut bulunmaz.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim24.png" rel="lightbox[138]"><img class="aligncenter size-full wp-image-140" title="Resim2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim24.png" alt="" width="336" height="174" /></a> İlk programımızı çalıştırdık.</p>
<p><strong>OPERATOR KULLANIMI</strong></p>
<p>Farklı değişken tiplerini anlattıktan sonra, bu değişkenleri kod içerisinde nasıl kullanacağımızdan bahsetmemiz gerek. Tablo 2 içerisinde gördüğünüz programımızda farklı değişken tipleri tanımladık ve bu değişkenleri  Console.WriteLine() fonksiyonunu kullanarak konsolda yazdırıyoruz. Bu programı incelersek, önce kullanacağımız değişkenin tipini yazıyor, sonra ona bir isim veriyoruz.  Bu andan itibaren program kodunun içerisinde bu ismi kullanarak değişkeni çağırmamız mümkün. Değişkenlere değer atamak için eşittir “=” karakterini kullanıyoruz. Bir değişkene değerini onu tanımladığınız satırda ya da farklı bir satır içerisinde atayabilirsiniz, istediğiniz yerde değiştirebilirsiniz.</p>
<p>Eğer tipleri aynı ise, bir değişkenin değerini başka bir değişkene atamanız mümkün.  Ancak sayısal değişkenlerde işler biraz karışıyor;  bellekte kapladığı alandan daha büyük boyuta sahip olanların atamasına izin verilmiyor. Yani bir int değerini long’a atayabilirsiniz, ancak bunun tersi mümkün değil. Bu atamalar sırasında aritmetik işlemler yapmaya ihtiyaç duyduğunuzda C# operatörleri yardımınıza yetişecektir. Tablo 3 içerisinde görebileceğiniz örneğimizdeki gibi kullanabileceğiniz toplama (+), çıkarma (-), çarpma (*), bölme (/) ve mod (%) operatörleri ile değişkenleri ve rakamları sayısal işlemlere tabi tutabilirsiniz. Bunun dışında + operatörünü string ifadeleri birleştirmek için de kullanabiliyorsunuz. Aritmetik işlemler arasında bir sıra olması gerektiğinde işlem içinde parantezler kullanabiliriniz. Matematik kurallarından bildiğimiz gibi, parantez olmadığı zaman önce / ve * operatörleri, daha sonra + ve – operatörleri işletilir.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim35.png" rel="lightbox[138]"><img class="aligncenter size-full wp-image-141" title="Resim3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim35.png" alt="" width="328" height="140" /></a> Bu örneğimizde değer ataması yaparken operatörleri kullanıyoruz.</p>
<p><strong>İSİMLENDİRME SANATI</strong></p>
<p>Değişkenlere vereceğiniz isim konusunda özgür olmakla beraber, kod uzadıkça kafanızın karışmaması ya da yıllar sonra koda baktığınızda neler olup bittiğini anlayabilmeniz için anlaşılır isimler seçmenizi tavsiye ederim. Özellikle başka insanların da yazılan kodu çözebilmesi için yorumlara önem vermek, fonksiyon ve değişken isimlerini anlaşılır yapmak oldukça önemlidir. Bu konuda her programcının kendine özgü bir stili olsa da, kelimelerin baş harfini büyük yapmak (ör: int piSayisi; ) ya da alt çizgi kullanmak (pi_sayisi) gibi bir yöntem benimsemeniz iyi olacaktır. Bunların dışında Türkçe karakter kullanmaktan ve rakam ile başlayan değişken isimlerinden kaçının.</p>
<p>Hazır değişken tiplerini anlatmışken, C# 3.0 sürümü ile birlikte gelen bir yenilikten bahsetmeden geçmeyelim. Yeni sürüm beraberinde tip ayrımı gözetmeyen ortak bir değişken getiriyor. Tablo 4’te ki örnekte görebileceğiniz üzere “var” anahtar sözcüğü ile tanımlanan değişkenler, atanan ilk değerin tipine dönüşerek program içerisinde kullanılıyorlar. Özellikle farklı tipte verilerin gelebildiği veritabanı uygulamaları için kullanışlı bir özellik olduğunu söyleyebiliriz. Değişken ve operatörlere ait eğitimimizi burada bitirirken, yaptığımız örnekleri deneyip değişik varyasyonlar deneyerek çalışmanızı tavsiye ederim.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim44.png" rel="lightbox[138]"><img class="aligncenter size-full wp-image-142" title="Resim4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim44.png" alt="" width="337" height="154" /></a> Ortak veri tipi ile değişkenlerinizin tipi ilk değer atamasında belirlenir.</p>
<p>Tablo 1:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="98"><strong>Değişken Tipi</strong></td>
<td width="98"><strong>Boyut</strong></td>
</tr>
<tr>
<td width="98">sbyte</td>
<td width="98">8-bit (1-byte)</td>
</tr>
<tr>
<td width="98">short</td>
<td width="98">16-bit (2-byte)</td>
</tr>
<tr>
<td width="98">int</td>
<td width="98">32-bit (4-byte)</td>
</tr>
<tr>
<td width="98">long</td>
<td width="98">64-bit (8-byte)</td>
</tr>
<tr>
<td width="98">byte</td>
<td width="98">8-bit (1-byte)</td>
</tr>
<tr>
<td width="98">ushort</td>
<td width="98">16-bit (2-byte)</td>
</tr>
<tr>
<td width="98">uint</td>
<td width="98">32-bit (4-byte)</td>
</tr>
<tr>
<td width="98">ulong</td>
<td width="98">64-bit (8-byte)</td>
</tr>
<tr>
<td width="98">decimal</td>
<td width="98">128-bit (16-byte)</td>
</tr>
<tr>
<td width="98">float</td>
<td width="98">32-bit (4-byte)</td>
</tr>
<tr>
<td width="98">double</td>
<td width="98">64-bit (8-byte)</td>
</tr>
<tr>
<td width="98">object</td>
<td width="98">sınırsız</td>
</tr>
<tr>
<td width="98">bool</td>
<td width="98">8-bit (1-byte)</td>
</tr>
<tr>
<td width="98">char</td>
<td width="98">16-bit (2-byte)</td>
</tr>
<tr>
<td width="98">string</td>
<td width="98">sınırsız</td>
</tr>
</tbody>
</table>
<p>Tablo 2:</p>
<pre class="brush: c#; ">

static void Main(string[] args)

{

//Tek satır yorum

/* Çoklu satır yorum */

int sayi1;

sayi1 = 1;

int sayi2 = 10;

Console.WriteLine(sayi1);

Console.WriteLine(sayi2);

double sayi3 = 10.5;

double sayi4 = sayi3;

Console.WriteLine(sayi3);

Console.WriteLine(sayi4);

bool b = true;

Console.WriteLine(b);

string isim1;

isim1 = &quot;Merhaba, &quot;;

string isim2 = &quot;PC Magazine&quot;;

Console.WriteLine(isim1);

Console.WriteLine(isim2);

isim2 = &quot;yigit&quot;;

Console.WriteLine(&quot;yeni isim: &quot; + isim2);

}
</pre>
<p>Tablo 3:</p>
<pre class="brush: c#; ">

static void Main(string[] args)

{

int a = 5;

int b = 10;

int c = ((a * 2 - 2) - 1) + ((b * 3) % 5) / 3 ;

Console.WriteLine(c);

string s1 = &quot;PC Magazine.&quot;;

string s2 = &quot;Merhaba, &quot;;

string s3 = s2 + s1;

Console.WriteLine(s3);

Console.WriteLine(&quot;Yigit\n\n\nKiran&quot;);

}
</pre>
<p>Tablo 4:</p>
<pre class="brush: c#; ">

static void Main(string[] args)

{

var metin = &quot;Merhaba, PC Magazine&quot;;

var sayi = 4;

var ondalikSayi = 4.5;

var boolean = true;

Console.WriteLine(metin);

Console.WriteLine(sayi);

Console.WriteLine(ondalikSayi);

Console.WriteLine(boolean);

}
</pre>
<p>p.s. Bu yazı Ağustos 2008 PC Magazine dergisindeki makalemden derlenmiştir.</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;t=C%23+Dersleri+-+2%3A+Programciliga+Giris" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+2%3A+Programciliga+Giris+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+2%3A+Programciliga+Giris&amp;link=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;title=C%23+Dersleri+-+2%3A+Programciliga+Giris&amp;summary=%C3%96nceki%20yaz%C4%B1mda%20C%23%20dilinin%20temelinde%20yer%20alan%20.NET%20%C3%A7at%C4%B1s%C4%B1n%C4%B1n%20yap%C4%B1s%C4%B1n%C4%B1%20incelemi%C5%9F%2C%202000%E2%80%99li%20y%C4%B1llardan%20sonraki%20tarihi%20s%C3%BCreci%20sizlere%20aktarm%C4%B1%C5%9Ft%C4%B1m.%20S%C3%B6z%20dizimi%20C%2FC%2B%2B%20dillerine%20benzeyen%20C%23%20%C3%B6zellikle%20bu%20dillerden%20birini%20veya%20JAVA%20kullanm%C4%B1%C5%9F%20deneyimli%20programc%C4%B1lar%20i%C3%A7in%20al%C4%B1%C5%9Fmas%C4%B1%20%C3%A7ok%20kolay%20bir%20dil.%20Bu%20sebeple%20daha%20%C3%B6nceden%20farkl%C4%B1%20dillerde%20program%20yazm%C4%B1%C5%9F%20okurlar%C4%B1m%C4%B1z%20s%C3%B6z%20dizimine%20al%C4%B1%C5%9Ft%C4%B1ktan%20sonra%20.NET%20%C3%A7at%C4%B1s%C4%B1n%C4%B1n%20bizlere%20sundu%C4%9Fu%20k%C3%BCt%C3%BCphaneleri%20kullanarak%20farkl%C4%B1%20uygulamalar%20geli%C5%9Ftirmeye%20kolayca%20ba%C5%9Flayabilirler.%20Ancak%20biz%20yaz%C4%B1%20dizimizde%20programlama%20d%C3%BCnyas%C4%B1na%20yeni%20ad%C4%B1m%20atacak%20okurlar%C4%B1m%C4%B1z%C4%B1%20da%20d%C3%BC%C5%9F%C3%BCnerek%20sayfalar%C4%B1m%C4%B1zda%20programlama%20dilinin%20detaylar%C4%B1na%20da%20de%C4%9Finmeye%20%C3%A7al%C4%B1%C5%9Faca%C4%9F%C4%B1z.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;title=C%23+Dersleri+-+2%3A+Programciliga+Giris" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;title=C%23+Dersleri+-+2%3A+Programciliga+Giris" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;title=C%23+Dersleri+-+2%3A+Programciliga+Giris&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;srcTitle=C%23+Dersleri+-+2%3A+Programciliga+Giris&amp;snippet=%C3%96nceki%20yaz%C4%B1mda%20C%23%20dilinin%20temelinde%20yer%20alan%20.NET%20%C3%A7at%C4%B1s%C4%B1n%C4%B1n%20yap%C4%B1s%C4%B1n%C4%B1%20incelemi%C5%9F%2C%202000%E2%80%99li%20y%C4%B1llardan%20sonraki%20tarihi%20s%C3%BCreci%20sizlere%20aktarm%C4%B1%C5%9Ft%C4%B1m.%20S%C3%B6z%20dizimi%20C%2FC%2B%2B%20dillerine%20benzeyen%20C%23%20%C3%B6zellikle%20bu%20dillerden%20birini%20veya%20JAVA%20kullanm%C4%B1%C5%9F%20deneyimli%20programc%C4%B1lar%20i%C3%A7in%20al%C4%B1%C5%9Fmas%C4%B1%20%C3%A7ok%20kolay%20bir%20dil.%20Bu%20sebeple%20daha%20%C3%B6nceden%20farkl%C4%B1%20dillerde%20program%20yazm%C4%B1%C5%9F%20okurlar%C4%B1m%C4%B1z%20s%C3%B6z%20dizimine%20al%C4%B1%C5%9Ft%C4%B1ktan%20sonra%20.NET%20%C3%A7at%C4%B1s%C4%B1n%C4%B1n%20bizlere%20sundu%C4%9Fu%20k%C3%BCt%C3%BCphaneleri%20kullanarak%20farkl%C4%B1%20uygulamalar%20geli%C5%9Ftirmeye%20kolayca%20ba%C5%9Flayabilirler.%20Ancak%20biz%20yaz%C4%B1%20dizimizde%20programlama%20d%C3%BCnyas%C4%B1na%20yeni%20ad%C4%B1m%20atacak%20okurlar%C4%B1m%C4%B1z%C4%B1%20da%20d%C3%BC%C5%9F%C3%BCnerek%20sayfalar%C4%B1m%C4%B1zda%20programlama%20dilinin%20detaylar%C4%B1na%20da%20de%C4%9Finmeye%20%C3%A7al%C4%B1%C5%9Faca%C4%9F%C4%B1z." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/&amp;title=C%23+Dersleri+-+2%3A+Programciliga+Giris" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/cdersleri-3-program-kontrolleri/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 3: Program Kontrolleri'>C# Dersleri &#8211; 3: Program Kontrolleri</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-4-dongu-yapilari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 4: Döngü Yapilari'>C# Dersleri &#8211; 4: Döngü Yapilari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-5-diziler/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 5: Diziler'>C# Dersleri &#8211; 5: Diziler</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Dersleri &#8211; 1: .Net Framework</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=c-dersleri-1-net-framework</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:00:26 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# dersi]]></category>
		<category><![CDATA[c# egitim]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[cs]]></category>
		<category><![CDATA[ders]]></category>
		<category><![CDATA[dot]]></category>
		<category><![CDATA[egitim]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[sharp]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=122</guid>
		<description><![CDATA[Bill Gates, yaklaşık 20 yıl önce vizyonunu açıkladığında sektörün içinden ve dışından birçok insanın tepkisiyle karşılaşmıştı. Her eve bir bilgisayar gireceği ve kişisel bilgisayarların insan hayatında çok önemli bir yere sahip olacağını söyleyen bu genç girişimcinin sözleri, laptop bilgisayarların yaklaşık 1.5 ton civarı olduğu o yıllarda (!) fazla gerçekçi durmuyordu. Ancak geçen zaman, özellikle 90’lı yıllarda kişisel bilgisayarların atağa geçmesi, bu vizyonun ne kadar gerçekçi olduğunu ortaya koydu. Microsoft’un Windows işletim sistemleriyle katkıda bulunduğu bu vizyon, 2000’li yıllara gelindiğinde artık her evde birden fazla bilgisayar görülmeye başlanınca miyadını doldurmuş oldu. Kişisel bilgisayarların yayılması internetin kullanımını da arttırırken bilgi çağının başlangıcına da öncülük ettiler. Yeni milenyuma girdiğimizde artık internet hayatımızın bir parçası haline geldi ve bu gelişmeler esnasında, 2002 yılında gerçekleştirilen Microsoft’un lansmanında artık başarısını kanıtlayarak genç girişimci yıllarını geride bırakmış Gates kendisinin ve firmasının yeni vizyonunu açıkladı: Her zaman, her yerden, her cihazdan bilgiye ulaşmak! Kişisel bilgisayarların yayılmasında Windows işletim sistemleri büyük pay sahibi olarak karşımıza çıkarken, lansmanda bu yeni vizyonu gerçekleştirmek için daha dinamik bir altyapı bizleri karşılıyordu: “.NET”.

Bu yeni vizyon, beraberinde yepyeni bir programlama dilini birlikte getirdi. Okunuşunun kolay olmadığını kabul ediyorum, ancak C# (C Sharp: §İ - ∫a¦rp)  adını duyurduktan kısa bir süre sonra dünyada en çok kullanılan diller arasına girmeyi başardı. En köklü programlama dillerinden C/C++ yada Java gibi “süslü parantez” dilleri ailesinden gelen söz dizimi (syntax), nesne &#038; bileşen tabanlı yapısı ve Visual Studio gibi başarılı bir geliştirme ortamında yazılması kolay öğrenilmesine neden oldu. Ayrıca ASP.NET ile web tabanlı uygulama geliştirmek için de kullanılması kolayca yayılmasını sağladı. Geliştirme ekibinin başında bulunan Anders Hejlsberg, zamanında Turbo Pascal gibi devrim yaratmış bir IDE’nin geliştiricisi ve Borland firmasında programlama dilleri üzerine uzun yıllar çalışmış biri olarak 1999 yılında çalışmalarına başladığı C#’ı birçok dilin avantajlarına sahip kapsamlı bir dil olarak geliştirdi. Günümüzde Java ve PHP ile kullanımı yükselen 3 dil arasında bulunan C# aslında bu dillerin en yenisi. Ülkemizdeki bilgisayar sektöründe de geniş kullanım alanı bulunan bu dili blogdaki yazılardan takip ederek, en başından başlayıp öğrenebilirsiniz! Eğitimimizde temel programcılık mantığını anlatırken bol bol örnek uygulamalar yapıp kendinizi geliştirmenize yardımcı olmayı amaçlıyoruz.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 2: Programciliga Giris'>C# Dersleri &#8211; 2: Programciliga Giris</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik1-e1266353590731.jpg" rel="lightbox[122]"><img class="aligncenter size-full wp-image-123" title="baslik" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik1-e1266353590731.jpg" alt="" width="490" height="368" /></a></p>
<p>Bill Gates, yaklaşık 20 yıl önce vizyonunu açıkladığında sektörün içinden ve dışından birçok insanın tepkisiyle karşılaşmıştı. Her eve bir bilgisayar gireceği ve kişisel bilgisayarların insan hayatında çok önemli bir yere sahip olacağını söyleyen bu genç girişimcinin sözleri, laptop bilgisayarların yaklaşık 1.5 ton civarı olduğu o yıllarda (!) fazla gerçekçi durmuyordu. Ancak geçen zaman, özellikle 90’lı yıllarda kişisel bilgisayarların atağa geçmesi, bu vizyonun ne kadar gerçekçi olduğunu ortaya koydu. Microsoft’un Windows işletim sistemleriyle katkıda bulunduğu bu vizyon, 2000’li yıllara gelindiğinde artık her evde birden fazla bilgisayar görülmeye başlanınca miyadını doldurmuş oldu. Kişisel bilgisayarların yayılması internetin kullanımını da arttırırken bilgi çağının başlangıcına da öncülük ettiler. Yeni milenyuma girdiğimizde artık internet hayatımızın bir parçası haline geldi ve bu gelişmeler esnasında, 2002 yılında gerçekleştirilen Microsoft’un lansmanında artık başarısını kanıtlayarak genç girişimci yıllarını geride bırakmış Gates kendisinin ve firmasının yeni vizyonunu açıkladı: Her zaman, her yerden, her cihazdan bilgiye ulaşmak! Kişisel bilgisayarların yayılmasında Windows işletim sistemleri büyük pay sahibi olarak karşımıza çıkarken, lansmanda bu yeni vizyonu gerçekleştirmek için daha dinamik bir altyapı bizleri karşılıyordu: “.NET”.</p>
<p>Bu yeni vizyon, beraberinde yepyeni bir programlama dilini birlikte getirdi. Okunuşunun kolay olmadığını kabul ediyorum, ancak C# (C Sharp: <em>§İ &#8211; ∫a¦rp</em>)  adını duyurduktan kısa bir süre sonra dünyada en çok kullanılan diller arasına girmeyi başardı. En köklü programlama dillerinden C/C++ yada Java gibi “süslü parantez” dilleri ailesinden gelen söz dizimi (syntax), nesne &amp; bileşen tabanlı yapısı ve Visual Studio gibi başarılı bir geliştirme ortamında yazılması kolay öğrenilmesine neden oldu. Ayrıca ASP.NET ile web tabanlı uygulama geliştirmek için de kullanılması kolayca yayılmasını sağladı. Geliştirme ekibinin başında bulunan Anders Hejlsberg, zamanında Turbo Pascal gibi devrim yaratmış bir IDE’nin geliştiricisi ve Borland firmasında programlama dilleri üzerine uzun yıllar çalışmış biri olarak 1999 yılında çalışmalarına başladığı C#’ı birçok dilin avantajlarına sahip kapsamlı bir dil olarak geliştirdi. Günümüzde Java ve PHP ile kullanımı yükselen 3 dil arasında bulunan C# aslında bu dillerin en yenisi. Ülkemizdeki bilgisayar sektöründe de geniş kullanım alanı bulunan bu dili blogdaki yazılardan takip ederek, en başından başlayıp öğrenebilirsiniz! Eğitimimizde temel programcılık mantığını anlatırken bol bol örnek uygulamalar yapıp kendinizi geliştirmenize yardımcı olmayı amaçlıyoruz.<span id="more-122"></span></p>
<div id="attachment_130" class="wp-caption aligncenter" style="width: 281px"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/big.png" rel="lightbox[122]"><img class="size-full wp-image-130" title="big" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/big.png" alt="" width="271" height="100" /></a><p class="wp-caption-text">.NET yeni logosu</p></div>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim6.jpg" rel="lightbox[122]"><img class="aligncenter size-full wp-image-129" title="Resim6" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim6.jpg" alt="" width="400" height="300" /></a><br />
Danimarkalı mühendis Anders Hejlsberg C# geliştirme ekibinin başında <strong> </strong></p>
<p>Bu ayki konumuz, programcılığa başlmadan önce biraz ısınmak; C# uygulamalarını üzerinde geliştireceğimiz .NET Framework’ün yapısını ve amaçlarını sizlere aktarmak. Bütün programlarımızın temelinde yer alacak bu altyapının çalışma tarzı diğer dillerin çalışma biçiminden farklı olduğu için basit mantığını anlamak gerçekten önemli. Yukarıda .NET’i dinamik bir altyapı olarak nitelendirmemizin başlıca nedeni, birden çok platformda çalışarak bu platformları birbirine bağlayacak olan bir çatı’ya (framework) sahip olması. Katmanlı yapıda olan bu çatı, çeşitli ihtiyaçlara cevap vermek üzere hazırlanmış birçok hizmeti içeren sınıf kütüphanelerini programcıların hizmetine sunarak, eskiden çok uzun zaman alan birçok işlevin yönetilebilir (managed) kodlar sayesinde kolayca uygulama içerisinde kullanılmasına imkan veriyor. C# eğitimlerinde sık sık kullanacağımız bu kütüphanelerin detaylarına girmeden önce .NET Framework felsefesini ve çalışma şeklini inceleyelim.</p>
<p><strong>.NET Framework’ün Yetenekleri</strong></p>
<p>Bilgiye her yerden ulaşabilmek için .NET Framework, uygulamalarının platform bağımsız çalışmasını amaçlar. Yazdığınız uygulama Windows, Linux gibi farklı işletim sistemleri altında bir değişiklik yapmanıza gerek kalmadan çalışabildiği gibi, PDA, Smartphone, XBOX yada akıllı ev araçları (embedded donanımlar) gibi farklı istemciler ile kolayca iletişim kurabilmeli ve belirli bir çözümün içerisinde yer alabilmelidirler. Hazır gelen sınıflar arasında bulunan temel kütüphanelerin yanı sıra, güvenlik, ağ, veritabanı erişimi gibi özelleşmiş alanlardaki kütüphaneler bizlere uygulama geliştirmek için önemli zaman tasarrufu sağlar. Örneğin bir XML dökümanını okumak için temel sınıf kütüphanesinden ilgili sınıfı çağırıp, birkaç satır kod yazarak istediğimiz işlevi yerine getirebiliriz. Bu şekilde hazır kod kullanımı, ilk zamanlarda herşeyi kendi elleriyle yazmayı seven eski programcılar tarafından yadırgansada, karmaşık uygulamaların yükünü hafifleterek daha büyük uygulamalar geliştirmek için bizlere büyük bir fırsat sunuyor.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim43.png" rel="lightbox[122]"><img class="aligncenter size-full wp-image-127" title="Resim4" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim43.png" alt="" width="530" height="350" /></a><br />
Temel Sınıf Kütüphanesinin içeriği<strong> </strong></p>
<p>.NET Framework’ün ilk versiyonundan itibaren hayatımıza giren C#, bu yeni altyapıyı en rahat biçimde kullanabilmek için tasarlandı, ancak .NET üzerinde uygulama geliştirmenin tek yolu değil! Sevdiği programlama dilinden vazgeçmek istemeyen programcılar için VB, C++, Delphi, Java gibi tanıdık dillerden ADA, Eiffel, Scheme gibi farklı 40’tan fazla dil destekleniyor (desteklenen dillerin listesine buradan ulaşabilirsiniz: <a href="http://en.wikipedia.org/wiki/CLI_Languages">http://en.wikipedia.org/wiki/CLI_Languages</a>). Bütün bu diller, ortak aradile çevrilerek bir sanal çalışma zamanı uygulaması tarafından işlenerek çalıştırılıyorlar.</p>
<p>Farklı platformlar üzerinde çalışan CLR (Common Language Runtime) uygulaması, farklı dillerden çevrilmiş ortak aradili (CIL) Just-In-Time compiler adı verilen eşzamanlı derleyici ile bulunduğu platformun diline çevirir. Bu sayede aynı kodun farklı platformlar üzerinde çalışması sağlanırken, farklı dillerin kullanımına imkan tanınıyor. Bunun yanında çalışan kodun güvenliği, bellek yönetimi, hata denetimi, uyumluluk ve birlikte çalıştırılabilmesi gibi zorlu görevler CLR tarafından denetlenerek uygulamanın stabil çalışması, performansı ve güvenliği üst seviyede tutuluyor. Üstelik önceden yazılımcının sorumluluğunda bulunan bu işlevler artık otomatik olarak kontrol edilerek zamandan tasarruf ediliyor ve hatalar en aza indirgeniyor.</p>
<p>Platform bağımlı sistemlerden kodlar derlendikten sonra ortaya yürütülebilir bir dosya (.exe uzantılı) çıkmasını ve işletim sisteminin direk bu dosyayı çalıştırabilmesine alışığız. Ancak çalışma prensibini yukarıda anlattığımız .NET Framework CLR servisi, bir sanal makine gibi çalışarak, .NET uygulamaları ve işletim sistemi arasında iletişimi sağlıyor. Uygulamalar bu sanal makinede derlenerek bulunduğu platformun anlayacağı kodlara çevriliyorlar. Aslında .NET üzerinde geliştirdiğimiz programları yayınladıktan sonras yine .exe uzantılı bir dosya elde ediyoruz, fakat bu diğer yürütülebilir dosyalar gibi makine dili içermiyor. Assembly olarak adlandırılan bu dosya türleri, ortak dile çevrilmiş kod, doğrulama, güvenlik, referans ve yansıma bilgilerini içinde bulunduran özel bir yapıya sahiptir. Bu yüzden programlar çalışmak için .NET Framework’ün bilgisayarda yüklü olmasına ihtiyaç duyuyorlar (indirmek için: <a href="http://msdn.microsoft.com/en-us/netframework/aa569263.aspx">http://msdn.microsoft.com/en-us/netframework/aa569263.aspx</a>).</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim53.png" rel="lightbox[122]"><img class="aligncenter size-medium wp-image-128" title="Resim5" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim53-300x253.png" alt="" width="300" height="253" /></a><br />
C# ile farklı platformlara yazılım geliştirmek mümkün.<strong> </strong></p>
<p><strong>.NET Çalışma Ortamı</strong></p>
<p><strong> </strong>Farklı diller için hazırlanmış birçok ortamda uygulama geliştirmek mümkün olsa da, MS Visual Studio kullanarak C#, VB.NET, C++ ile windows forms, konsol, mobil uygulamalar geliştirebilir, ASP.NET web siteleri, web servisleri gibi bir çok değişik projede çalışabilirsiniz. Bütün bu uygulamaları ve daha fazlasını bünyesinde barındıran Visual Studio ücretli bir uygulama olsa da, özelleşmiş Express versiyonları tamamen ücretsiz. Biz eğitimimizde C# ile çalışacağımız için VS 2008 C# Express Edition’u (<a href="http://www.microsoft.com/express/vcsharp/">http://www.microsoft.com/express/vcsharp/</a>) kullanacağız. Veritabanı ve web servisleriyle çalışabilme desteği olan, IntelliSense adı verilen otomatik kod tamamlayıcı yardımcıları bünyesinde bulunduran bu program eğitimimiz boyunca yoldaşımız olacak J.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim13.png" rel="lightbox[122]"><img class="aligncenter size-medium wp-image-124" title="Resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim13-300x294.png" alt="" width="300" height="294" /></a><br />
.NET Framework sürümlerinin içerikleri<strong> </strong></p>
<p><strong> </strong></p>
<p>Kabul etmek gerekir ki, .NET Framework’ün 2002 yılında çıkan ilk versiyonunda herşey bu kadar parlak değildi. Altyapıda bulunan hatalar ve performans problemleri, uygulamaların temelini zayıflattığı için birçok soruna neden oluyordu. Ancak Microsoft çalışanları bir yıl boyunca özverili bir çalışma gösterip birçok açığı kapattı ve stabil 1.1 sürümünü yayınladılar. Daha sonra 2005 yılında 2.0 sürümü hatalarından iyice arınmış, generics, 64 bit uyumluluğu, ADO.NET 2.0, ASP.NET 2.0 gibi yeniliklerle karşımıza çıktı. Windows Vista ile birlikte gelen 3.0 versiyonunda ayrıntılarına ileride değineceğimiz WPF, WCF, WF gibi iletişim, görsellik, iş akışları ve erişim üzerine eklentiler dahil edilirken; geçtiğimiz aylarda çıkan en son 3.5 sürümü LINQ ve AJAX desteği ile yayınlandı. Özellikle 3.0 sürümünden sonra eski versiyonlarla geri uyumluluk tamamen sağlanırken, Windows 98, 2000 ve ME işletim sistemlerine verilen desteğe son verildi.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim23.png" rel="lightbox[122]"><img class="aligncenter size-medium wp-image-125" title="Resim2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim23-300x229.png" alt="" width="300" height="229" /></a><br />
Visual Studio 2008 C# Express açılış ekranı<strong> </strong></p>
<p><strong>Merhaba Dünya!</strong></p>
<p><strong> </strong>Ne yazık ki uygulama geliştirme araçlarının Türkçe desteği bulunmaması, bazı okurlarımızın sorunlarını çözebilmek için daha çok çaba sarfetmesini gerektiriyor. Kullanacağımız Visual Studio 2008 C# Express Edition’un kurulum aşamasında size MSDN Express ve SQL Server Express programlarını kurmanızın da faydalı olabileceği hatırlatılıyor. Microsoft Geliştiriciler Ağı (MSDN) dökümanları,  C# hakkında birçok makaleye ulaşabilmeniz ve karşılaştığınız sorunlara cevap bulabilmeniz açısından önemli fakat maalesef Türkçe içeriği bulunmuyor. Microsoft’un ücretsiz veritabanı uygulaması olan SQL Server Express’i önümüzdeki aylarda değineceğimiz konular için yüklemenizi tavsiye ederim.</p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim34.png" rel="lightbox[122]"><img class="aligncenter size-medium wp-image-126" title="Resim3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim34-300x182.png" alt="" width="300" height="182" /></a><br />
C# Express ile oluşturabileceğiniz proje çeşitleri</p>
<p>Yükleme işlemini tamamlayıp geliştirme ortamını açtığınızda, güncel MSDN haberlerinin yer aldığı başlangıç ekranıyla karşılaşacaksınız. Proje oluşturmak için File&gt;New Project seçeneğini işaretleyin. Açılacak diyalogdaki seçeneklerden “Console Application”, komut sisteminde çalışan konsol uygulamaları için kullanacağımız seçenek. Programcılık mantığına değineceğimiz eğitimlerde bu tarz projeler hazırlayacağız. “Windows Forms Application” ise windows arayüzünü kullanarak pencereler tasarlayacağımız form uygulamaları yapmamızı sağlıyor. Yeni Visual Studio serisinin  arayüz tasarlama konusundaki en başarılı programlardan biri olduğunu belirtmeliyim. Yeni proje oluşturduktan sonra ilgili dosyalar Belgelerim&gt;Visual Studio 2008&gt;Projects altında projenizin ismine ait klasörün içinde saklanmakta ve Express versiyonlarda bunu değiştiremiyoruz. Uygulamanın sağ tarafındaki “Solution Explorer” bölmesi programın sahip olduğu dosya ve klasörleri yönetmek için kullanacağımız alan. Son olarak proje yarattıktan sonra, üst kısımda bulunan yeşil “Run” butonuyla yazdığınız programı çalıştırabildiğinizi hatırlatalım. Bu ay anlatacaklarımızın sonuna geldik ama ilk programımızı yazmadan Visual Studio’yu kapatamayız. O zaman hemen bir konsol  uygulaması yarattıktan sonra ortadaki süslü parantezler “{}” arasına aşağıdaki kodu yazıp “Run” butonuna basarak ilk programımızı tamamlayabiliriz.</p>
<p>İlk C# Programımız:</p>
<pre class="brush: c#; ">

Console.WriteLine(&quot;Merhaba C#!&quot;);
</pre>
<p><em><span style="font-style: normal;">update: Haziran 2008 tarihinde yazdıgım bu yazıdan sonra çıkan VS 2010 sürümünü yüklemenizi tavsiye ederim.</span></em></p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;t=C%23+Dersleri+-+1%3A+.Net+Framework" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=C%23+Dersleri+-+1%3A+.Net+Framework+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=C%23+Dersleri+-+1%3A+.Net+Framework&amp;link=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;title=C%23+Dersleri+-+1%3A+.Net+Framework&amp;summary=Bill%20Gates%2C%20yakla%C5%9F%C4%B1k%2020%20y%C4%B1l%20%C3%B6nce%20vizyonunu%20a%C3%A7%C4%B1klad%C4%B1%C4%9F%C4%B1nda%20sekt%C3%B6r%C3%BCn%20i%C3%A7inden%20ve%20d%C4%B1%C5%9F%C4%B1ndan%20bir%C3%A7ok%20insan%C4%B1n%20tepkisiyle%20kar%C5%9F%C4%B1la%C5%9Fm%C4%B1%C5%9Ft%C4%B1.%20Her%20eve%20bir%20bilgisayar%20girece%C4%9Fi%20ve%20ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20insan%20hayat%C4%B1nda%20%C3%A7ok%20%C3%B6nemli%20bir%20yere%20sahip%20olaca%C4%9F%C4%B1n%C4%B1%20s%C3%B6yleyen%20bu%20gen%C3%A7%20giri%C5%9Fimcinin%20s%C3%B6zleri%2C%20laptop%20bilgisayarlar%C4%B1n%20yakla%C5%9F%C4%B1k%201.5%20ton%20civar%C4%B1%20oldu%C4%9Fu%20o%20y%C4%B1llarda%20%28%21%29%20fazla%20ger%C3%A7ek%C3%A7i%20durmuyordu.%20Ancak%20ge%C3%A7en%20zaman%2C%20%C3%B6zellikle%2090%E2%80%99l%C4%B1%20y%C4%B1llarda%20ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20ata%C4%9Fa%20ge%C3%A7mesi%2C%20bu%20vizyonun%20ne%20kadar%20ger%C3%A7ek%C3%A7i%20oldu%C4%9Funu%20ortaya%20koydu.%20Microsoft%E2%80%99un%20Windows%20i%C5%9Fletim%20sistemleriyle%20katk%C4%B1da%20bulundu%C4%9Fu%20bu%20vizyon%2C%202000%E2%80%99li%20y%C4%B1llara%20gelindi%C4%9Finde%20art%C4%B1k%20her%20evde%20birden%20fazla%20bilgisayar%20g%C3%B6r%C3%BClmeye%20ba%C5%9Flan%C4%B1nca%20miyad%C4%B1n%C4%B1%20doldurmu%C5%9F%20oldu.%20Ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20yay%C4%B1lmas%C4%B1%20internetin%20kullan%C4%B1m%C4%B1n%C4%B1%20da%20artt%C4%B1r%C4%B1rken%20bilgi%20%C3%A7a%C4%9F%C4%B1n%C4%B1n%20ba%C5%9Flang%C4%B1c%C4%B1na%20da%20%C3%B6nc%C3%BCl%C3%BCk%20ettiler.%20Yeni%20milenyuma%20girdi%C4%9Fimizde%20art%C4%B1k%20internet%20hayat%C4%B1m%C4%B1z%C4%B1n%20bir%20par%C3%A7as%C4%B1%20haline%20geldi%20ve%20bu%20geli%C5%9Fmeler%20esnas%C4%B1nda%2C%202002%20y%C4%B1l%C4%B1nda%20ger%C3%A7ekle%C5%9Ftirilen%20Microsoft%E2%80%99un%20lansman%C4%B1nda%20art%C4%B1k%20ba%C5%9Far%C4%B1s%C4%B1n%C4%B1%20kan%C4%B1tlayarak%20gen%C3%A7%20giri%C5%9Fimci%20y%C4%B1llar%C4%B1n%C4%B1%20geride%20b%C4%B1rakm%C4%B1%C5%9F%20Gates%20kendisinin%20ve%20firmas%C4%B1n%C4%B1n%20yeni%20vizyonunu%20a%C3%A7%C4%B1klad%C4%B1%3A%20Her%20zaman%2C%20her%20yerden%2C%20her%20cihazdan%20bilgiye%20ula%C5%9Fmak%21%20Ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20yay%C4%B1lmas%C4%B1nda%20Windows%20i%C5%9Fletim%20sistemleri%20b%C3%BCy%C3%BCk%20pay%20sahibi%20olarak%20kar%C5%9F%C4%B1m%C4%B1za%20%C3%A7%C4%B1karken%2C%20lansmanda%20bu%20yeni%20vizyonu%20ger%C3%A7ekle%C5%9Ftirmek%20i%C3%A7in%20daha%20dinamik%20bir%20altyap%C4%B1%20bizleri%20kar%C5%9F%C4%B1l%C4%B1yordu%3A%20%E2%80%9C.NET%E2%80%9D.%0D%0A%0D%0ABu%20yeni%20vizyon%2C%20beraberinde%20yepyeni%20bir%20programlama%20dilini%20birlikte%20getirdi.%20Okunu%C5%9Funun%20kolay%20olmad%C4%B1%C4%9F%C4%B1n%C4%B1%20kabul%20ediyorum%2C%20ancak%20C%23%20%28C%20Sharp%3A%20%C2%A7%C4%B0%20-%20%E2%88%ABa%C2%A6rp%29%20%20ad%C4%B1n%C4%B1%20duyurduktan%20k%C4%B1sa%20bir%20s%C3%BCre%20sonra%20d%C3%BCnyada%20en%20%C3%A7ok%20kullan%C4%B1lan%20diller%20aras%C4%B1na%20girmeyi%20ba%C5%9Fard%C4%B1.%20En%20k%C3%B6kl%C3%BC%20programlama%20dillerinden%20C%2FC%2B%2B%20yada%20Java%20gibi%20%E2%80%9Cs%C3%BCsl%C3%BC%20parantez%E2%80%9D%20dilleri%20ailesinden%20gelen%20s%C3%B6z%20dizimi%20%28syntax%29%2C%20nesne%20%26%20bile%C5%9Fen%20tabanl%C4%B1%20yap%C4%B1s%C4%B1%20ve%20Visual%20Studio%20gibi%20ba%C5%9Far%C4%B1l%C4%B1%20bir%20geli%C5%9Ftirme%20ortam%C4%B1nda%20yaz%C4%B1lmas%C4%B1%20kolay%20%C3%B6%C4%9Frenilmesine%20neden%20oldu.%20Ayr%C4%B1ca%20ASP.NET%20ile%20web%20tabanl%C4%B1%20uygulama%20geli%C5%9Ftirmek%20i%C3%A7in%20de%20kullan%C4%B1lmas%C4%B1%20kolayca%20yay%C4%B1lmas%C4%B1n%C4%B1%20sa%C4%9Flad%C4%B1.%20Geli%C5%9Ftirme%20ekibinin%20ba%C5%9F%C4%B1nda%20bulunan%20Anders%20Hejlsberg%2C%20zaman%C4%B1nda%20Turbo%20Pascal%20gibi%20devrim%20yaratm%C4%B1%C5%9F%20bir%20IDE%E2%80%99nin%20geli%C5%9Ftiricisi%20ve%20Borland%20firmas%C4%B1nda%20programlama%20dilleri%20%C3%BCzerine%20uzun%20y%C4%B1llar%20%C3%A7al%C4%B1%C5%9Fm%C4%B1%C5%9F%20biri%20olarak%201999%20y%C4%B1l%C4%B1nda%20%C3%A7al%C4%B1%C5%9Fmalar%C4%B1na%20ba%C5%9Flad%C4%B1%C4%9F%C4%B1%20C%23%E2%80%99%C4%B1%20bir%C3%A7ok%20dilin%20avantajlar%C4%B1na%20sahip%20kapsaml%C4%B1%20bir%20dil%20olarak%20geli%C5%9Ftirdi.%20G%C3%BCn%C3%BCm%C3%BCzde%20Java%20ve%20PHP%20ile%20kullan%C4%B1m%C4%B1%20y%C3%BCkselen%203%20dil%20aras%C4%B1nda%20bulunan%20C%23%20asl%C4%B1nda%20bu%20dillerin%20en%20yenisi.%20%C3%9Clkemizdeki%20bilgisayar%20sekt%C3%B6r%C3%BCnde%20de%20geni%C5%9F%20kullan%C4%B1m%20alan%C4%B1%20bulunan%20bu%20dili%20blogdaki%20yaz%C4%B1lardan%20takip%20ederek%2C%20en%20ba%C5%9F%C4%B1ndan%20ba%C5%9Flay%C4%B1p%20%C3%B6%C4%9Frenebilirsiniz%21%20E%C4%9Fitimimizde%20temel%20programc%C4%B1l%C4%B1k%20mant%C4%B1%C4%9F%C4%B1n%C4%B1%20anlat%C4%B1rken%20bol%20bol%20%C3%B6rnek%20uygulamalar%20yap%C4%B1p%20kendinizi%20geli%C5%9Ftirmenize%20yard%C4%B1mc%C4%B1%20olmay%C4%B1%20ama%C3%A7l%C4%B1yoruz.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;title=C%23+Dersleri+-+1%3A+.Net+Framework" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;title=C%23+Dersleri+-+1%3A+.Net+Framework" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;title=C%23+Dersleri+-+1%3A+.Net+Framework&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;srcTitle=C%23+Dersleri+-+1%3A+.Net+Framework&amp;snippet=Bill%20Gates%2C%20yakla%C5%9F%C4%B1k%2020%20y%C4%B1l%20%C3%B6nce%20vizyonunu%20a%C3%A7%C4%B1klad%C4%B1%C4%9F%C4%B1nda%20sekt%C3%B6r%C3%BCn%20i%C3%A7inden%20ve%20d%C4%B1%C5%9F%C4%B1ndan%20bir%C3%A7ok%20insan%C4%B1n%20tepkisiyle%20kar%C5%9F%C4%B1la%C5%9Fm%C4%B1%C5%9Ft%C4%B1.%20Her%20eve%20bir%20bilgisayar%20girece%C4%9Fi%20ve%20ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20insan%20hayat%C4%B1nda%20%C3%A7ok%20%C3%B6nemli%20bir%20yere%20sahip%20olaca%C4%9F%C4%B1n%C4%B1%20s%C3%B6yleyen%20bu%20gen%C3%A7%20giri%C5%9Fimcinin%20s%C3%B6zleri%2C%20laptop%20bilgisayarlar%C4%B1n%20yakla%C5%9F%C4%B1k%201.5%20ton%20civar%C4%B1%20oldu%C4%9Fu%20o%20y%C4%B1llarda%20%28%21%29%20fazla%20ger%C3%A7ek%C3%A7i%20durmuyordu.%20Ancak%20ge%C3%A7en%20zaman%2C%20%C3%B6zellikle%2090%E2%80%99l%C4%B1%20y%C4%B1llarda%20ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20ata%C4%9Fa%20ge%C3%A7mesi%2C%20bu%20vizyonun%20ne%20kadar%20ger%C3%A7ek%C3%A7i%20oldu%C4%9Funu%20ortaya%20koydu.%20Microsoft%E2%80%99un%20Windows%20i%C5%9Fletim%20sistemleriyle%20katk%C4%B1da%20bulundu%C4%9Fu%20bu%20vizyon%2C%202000%E2%80%99li%20y%C4%B1llara%20gelindi%C4%9Finde%20art%C4%B1k%20her%20evde%20birden%20fazla%20bilgisayar%20g%C3%B6r%C3%BClmeye%20ba%C5%9Flan%C4%B1nca%20miyad%C4%B1n%C4%B1%20doldurmu%C5%9F%20oldu.%20Ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20yay%C4%B1lmas%C4%B1%20internetin%20kullan%C4%B1m%C4%B1n%C4%B1%20da%20artt%C4%B1r%C4%B1rken%20bilgi%20%C3%A7a%C4%9F%C4%B1n%C4%B1n%20ba%C5%9Flang%C4%B1c%C4%B1na%20da%20%C3%B6nc%C3%BCl%C3%BCk%20ettiler.%20Yeni%20milenyuma%20girdi%C4%9Fimizde%20art%C4%B1k%20internet%20hayat%C4%B1m%C4%B1z%C4%B1n%20bir%20par%C3%A7as%C4%B1%20haline%20geldi%20ve%20bu%20geli%C5%9Fmeler%20esnas%C4%B1nda%2C%202002%20y%C4%B1l%C4%B1nda%20ger%C3%A7ekle%C5%9Ftirilen%20Microsoft%E2%80%99un%20lansman%C4%B1nda%20art%C4%B1k%20ba%C5%9Far%C4%B1s%C4%B1n%C4%B1%20kan%C4%B1tlayarak%20gen%C3%A7%20giri%C5%9Fimci%20y%C4%B1llar%C4%B1n%C4%B1%20geride%20b%C4%B1rakm%C4%B1%C5%9F%20Gates%20kendisinin%20ve%20firmas%C4%B1n%C4%B1n%20yeni%20vizyonunu%20a%C3%A7%C4%B1klad%C4%B1%3A%20Her%20zaman%2C%20her%20yerden%2C%20her%20cihazdan%20bilgiye%20ula%C5%9Fmak%21%20Ki%C5%9Fisel%20bilgisayarlar%C4%B1n%20yay%C4%B1lmas%C4%B1nda%20Windows%20i%C5%9Fletim%20sistemleri%20b%C3%BCy%C3%BCk%20pay%20sahibi%20olarak%20kar%C5%9F%C4%B1m%C4%B1za%20%C3%A7%C4%B1karken%2C%20lansmanda%20bu%20yeni%20vizyonu%20ger%C3%A7ekle%C5%9Ftirmek%20i%C3%A7in%20daha%20dinamik%20bir%20altyap%C4%B1%20bizleri%20kar%C5%9F%C4%B1l%C4%B1yordu%3A%20%E2%80%9C.NET%E2%80%9D.%0D%0A%0D%0ABu%20yeni%20vizyon%2C%20beraberinde%20yepyeni%20bir%20programlama%20dilini%20birlikte%20getirdi.%20Okunu%C5%9Funun%20kolay%20olmad%C4%B1%C4%9F%C4%B1n%C4%B1%20kabul%20ediyorum%2C%20ancak%20C%23%20%28C%20Sharp%3A%20%C2%A7%C4%B0%20-%20%E2%88%ABa%C2%A6rp%29%20%20ad%C4%B1n%C4%B1%20duyurduktan%20k%C4%B1sa%20bir%20s%C3%BCre%20sonra%20d%C3%BCnyada%20en%20%C3%A7ok%20kullan%C4%B1lan%20diller%20aras%C4%B1na%20girmeyi%20ba%C5%9Fard%C4%B1.%20En%20k%C3%B6kl%C3%BC%20programlama%20dillerinden%20C%2FC%2B%2B%20yada%20Java%20gibi%20%E2%80%9Cs%C3%BCsl%C3%BC%20parantez%E2%80%9D%20dilleri%20ailesinden%20gelen%20s%C3%B6z%20dizimi%20%28syntax%29%2C%20nesne%20%26%20bile%C5%9Fen%20tabanl%C4%B1%20yap%C4%B1s%C4%B1%20ve%20Visual%20Studio%20gibi%20ba%C5%9Far%C4%B1l%C4%B1%20bir%20geli%C5%9Ftirme%20ortam%C4%B1nda%20yaz%C4%B1lmas%C4%B1%20kolay%20%C3%B6%C4%9Frenilmesine%20neden%20oldu.%20Ayr%C4%B1ca%20ASP.NET%20ile%20web%20tabanl%C4%B1%20uygulama%20geli%C5%9Ftirmek%20i%C3%A7in%20de%20kullan%C4%B1lmas%C4%B1%20kolayca%20yay%C4%B1lmas%C4%B1n%C4%B1%20sa%C4%9Flad%C4%B1.%20Geli%C5%9Ftirme%20ekibinin%20ba%C5%9F%C4%B1nda%20bulunan%20Anders%20Hejlsberg%2C%20zaman%C4%B1nda%20Turbo%20Pascal%20gibi%20devrim%20yaratm%C4%B1%C5%9F%20bir%20IDE%E2%80%99nin%20geli%C5%9Ftiricisi%20ve%20Borland%20firmas%C4%B1nda%20programlama%20dilleri%20%C3%BCzerine%20uzun%20y%C4%B1llar%20%C3%A7al%C4%B1%C5%9Fm%C4%B1%C5%9F%20biri%20olarak%201999%20y%C4%B1l%C4%B1nda%20%C3%A7al%C4%B1%C5%9Fmalar%C4%B1na%20ba%C5%9Flad%C4%B1%C4%9F%C4%B1%20C%23%E2%80%99%C4%B1%20bir%C3%A7ok%20dilin%20avantajlar%C4%B1na%20sahip%20kapsaml%C4%B1%20bir%20dil%20olarak%20geli%C5%9Ftirdi.%20G%C3%BCn%C3%BCm%C3%BCzde%20Java%20ve%20PHP%20ile%20kullan%C4%B1m%C4%B1%20y%C3%BCkselen%203%20dil%20aras%C4%B1nda%20bulunan%20C%23%20asl%C4%B1nda%20bu%20dillerin%20en%20yenisi.%20%C3%9Clkemizdeki%20bilgisayar%20sekt%C3%B6r%C3%BCnde%20de%20geni%C5%9F%20kullan%C4%B1m%20alan%C4%B1%20bulunan%20bu%20dili%20blogdaki%20yaz%C4%B1lardan%20takip%20ederek%2C%20en%20ba%C5%9F%C4%B1ndan%20ba%C5%9Flay%C4%B1p%20%C3%B6%C4%9Frenebilirsiniz%21%20E%C4%9Fitimimizde%20temel%20programc%C4%B1l%C4%B1k%20mant%C4%B1%C4%9F%C4%B1n%C4%B1%20anlat%C4%B1rken%20bol%20bol%20%C3%B6rnek%20uygulamalar%20yap%C4%B1p%20kendinizi%20geli%C5%9Ftirmenize%20yard%C4%B1mc%C4%B1%20olmay%C4%B1%20ama%C3%A7l%C4%B1yoruz." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/&amp;title=C%23+Dersleri+-+1%3A+.Net+Framework" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/cdersleri-2-programciliga-giris/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 2: Programciliga Giris'>C# Dersleri &#8211; 2: Programciliga Giris</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-7-windows-forms-uygulamalari/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 7: Windows Forms Uygulamalari'>C# Dersleri &#8211; 7: Windows Forms Uygulamalari</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-6-fonksiyonlar-ve-siniflar/' rel='bookmark' title='Permanent Link: C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari'>C# Dersleri &#8211; 6: Fonksiyonlar ve Sinif Yapilari</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/c-dersleri-1-net-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web Sayfaniza Virtual Earth Haritalari Ekleyin</title>
		<link>http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=web-sayfaniza-virtual-earth-haritalari-ekleyin</link>
		<comments>http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 08:50:01 +0000</pubDate>
		<dc:creator>Yigit</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[pc magazine]]></category>
		<category><![CDATA[virtual earth]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.yigitkiran.net/?p=111</guid>
		<description><![CDATA[Günümüzde yoğun ilgi gören harita uygulamaları artık üç boyutlu görüntülenebilen, trafik yoğunluğunu bildiren, afet bölgelerindeki hasarı gösterebilen, Microsoft Live Local gibi servislerle bazı şehirlerde gezinmeye imkan veren özelliklere kavuştular. Hatta Dünya’da dolaşmaktan sıkıldıysanız, Google Sky veya bu ay incelediğimiz Microsoft Virtual Telescope gibi uygulamalar ile uzayı keşfetmeye başlayabilirsiniz. Gelişim süreci devam ederken firmalar web programcılarını da unutmuyor; SDK ve API’leri sürekli güncelleyerek uygulamaların başka sayfalara kolayca entegre edilebilmesi için uğraş veriyorlar. Bizde şimdi kullanımı giderek artan Microsoft Virtual Earth kütüphanelerinin yardımıyla web sitemiz için bir harita uygulaması hazırlayacağız.


Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/ajax-extender-nesnelerinin-kullanimi/' rel='bookmark' title='Permanent Link: Ajax Extender nesnelerinin kullanimi'>Ajax Extender nesnelerinin kullanimi</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/asp-net-ajax-kullanarak-iletisim-formu-hazirlamak/' rel='bookmark' title='Permanent Link: ASP.NET Ajax kullanarak iletisim formu hazirlamak'>ASP.NET Ajax kullanarak iletisim formu hazirlamak</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/aspnet-ajax-kullanarak-facebook-uygulamasi-gelistirmek/' rel='bookmark' title='Permanent Link: ASP.NET Ajax Kullanarak Facebook Uygulamasi Gelistirmek'>ASP.NET Ajax Kullanarak Facebook Uygulamasi Gelistirmek</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik.png" rel="lightbox[111]"><img class="aligncenter size-large wp-image-112" title="baslik" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/baslik-1024x589.png" alt="" width="491" height="282" /></a></p>
<p>Eskiden sadece büyük atlaslarda veya belgesellerde görebildiğimiz uydu fotoğrafları, gelişen teknoloji ve internet sayesinde artık her bilgisayardan erişilebilir hale geldi. Yaklaşık üç yıl önce ücretsiz bir şekilde hayata geçen Google Maps, coğrafi bilgi sistemlerini hayatımızın bir parçası haline getirmekle kalmadı, tarayıcımızda bir masaüstü uygulaması gibi çalışarak belkide AJAX teknolojisinin bu kadar yayılmasında en büyük etkenlerden biri oldu. Özellikle büyük şehirlerin yüksek çözünürlüklü fotoğraflarını kullanıcıların hizmetine sunan Google ve Microsoft gibi firmalar, bilmediğimiz bir adrese giderken bizi kaybolmaktan kurtarıyorlar.</p>
<p>Günümüzde yoğun ilgi gören harita uygulamaları artık üç boyutlu görüntülenebilen, trafik yoğunluğunu bildiren, afet bölgelerindeki hasarı gösterebilen, Microsoft Live Local gibi servislerle bazı şehirlerde gezinmeye imkan veren özelliklere kavuştular. Hatta Dünya’da dolaşmaktan sıkıldıysanız, Google Sky veya bu ay incelediğimiz Microsoft Virtual Telescope gibi uygulamalar ile uzayı keşfetmeye başlayabilirsiniz. Gelişim süreci devam ederken firmalar web programcılarını da unutmuyor; SDK ve API’leri sürekli güncelleyerek uygulamaların başka sayfalara kolayca entegre edilebilmesi için uğraş veriyorlar. Bizde şimdi kullanımı giderek artan Microsoft Virtual Earth kütüphanelerinin yardımıyla web sitemiz için bir harita uygulaması hazırlayacağız.</p>
<p><span id="more-111"></span></p>
<p>Google Maps ve Microsoft Virtual Earth’ı diğer harita uygulamalarından farklı kılan en büyük özellik, iki platformun da kütüphanelerinin tamamen AJAX teknolojisiyle çalışmasıdır. Ayrıca katmanlı yapıda oluşturulan görüntüler, harita üzerine harici öğeler eklenmesine ve bu öğeler üzerinden işlem yapılmasına imkan sağlıyor. Gerekli javascript kütüphanesini sayfamıza ekledikten sonra haritayı oluşturmak, koordinatları değiştirmek ya da yeni öğe eklemeye dair bütün metodlara ulaşabiliyoruz. Bu noktada önümüze çıkan iki seçenek var. Birincisi, kullandığımız metodları javascript ile yazarak uygulamanın kullanıcı tarafında (client-side) çalıştırılması. Diğer seçeneğimiz ise yazdığımız sınıfların sunucu tarafında (server-side) saklanması, oluşturacağımız sınıflar ve metodların ajax yada javascript ile sunucudan çağrılarak kullanıcıya ulaştırılması. Sunucu tarafında çalıştıracağımız uygulamalar için bir web servisi hazırlamamız ve harita üzerinde işlemleri buradan gerçekleştirmemiz de mümkün.</p>
<p><strong>HARİTANIN KURULUMU</strong></p>
<p>Virtual Earth ile hazırlayacağımız projemizde, Microsoft’un uygulama geliştirme arayüzlerini (API) kullanacağımızdan bahsetmiştik. Bu noktada <a href="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6">http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6</a> adresindeki en yeni  kütüphaneyi referans olarak sayfamıza ekleyerek programlamaya başlayabileceğiniz gibi, bu kütüphaneyi kullanarak hazırlanan bazı paket uygulamaları kullanarak da harita uygulamanızı geliştirebilirsiniz. Buna örnek olarak açık kaynaklı PietschSoft.VE projesini  (<a href="http://www.codeplex.com/PietschSoftVE3/Release/ProjectReleases.aspx?ReleaseId=2200">http://www.codeplex.com/PietschSoftVE3/Release/ProjectReleases.aspx?ReleaseId=2200</a>) ve bu projenin gelişmiş lisanslı sürümü olan Simplovation.Web.Maps.VE (<a href="http://simplovation.com/">http://simplovation.com/</a>) paket uygulamalarını inceleyebilirsiniz. Ancak biz hazırlayacağımız uygulamada temel VE kütüphanesini kullanarak haritaları nasıl oluşturabileceğimizi göreceğiz.</p>
<p>Öncelikle javascript ile kullanıcı tarafında haritaların nasıl yaratılabileceğinden bahsedelim. Sınıf kütüphanesini sayfaya referans olarak ekledikten sonra, sayfa açıldığında yüklenecek bir fonksiyon içerisinde haritanın temeli olan VEMap nesnesi yaratarak işlemlere başlayabiliriz. VEMap nesnesi  yaratırken haritayı oluşturacağı bir DIV objesinin ID değerini parametre olarak girmemiz gerekiyor. Daha sonra yaratılan nesnenin haritayı yüklemesi için LoadMap metodunu kullanıyoruz. Tamamen opsiyonel 7 parametresi bulunan bu fonksiyon ile haritanın belirlenen DIV kontrolünde çalışmasını sağlayabiliriz. Örneğimizde parametre kullanmayıp önemli VEMap metodlarını tek tek inceleyelim. SetCenter metodu ile haritanın merkez koordinatını değiştirebiliyoruz. Enlem (latitude) ve boylam (longitude) değerleri ile yaratılan VELatLong nesnelerini alan SetCenter metodu haritada istediğimiz bölgeyi merkezde görüntülememize imkan veriyor.</p>
<p>Harita Tipleri Tablosu</p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>Road</td>
<td>Yol haritası.</td>
</tr>
<tr>
<td>Shaded</td>
<td>Bölge kenarları gölgelendirilmiş yol haritası.</td>
</tr>
<tr>
<td>Aerial</td>
<td>Coğrafi harita.</td>
</tr>
<tr>
<td>Hybrid</td>
<td>Bölge isimlerine sahip coğrafi harita.</td>
</tr>
<tr>
<td>Oblique</td>
<td>Eğik açılı harita.</td>
</tr>
<tr>
<td>Birdseye</td>
<td>Kuşbakışı harita, yatık açılı.</td>
</tr>
<tr>
<td>BirdseyeHybrid</td>
<td>Bölge isimlerine sahip kuşbakışı harita.</td>
</tr>
</tbody>
</table>
<p>Sık kullanılan bir diğer metod olan SetZoomLevel ile harita üzerinde 1-19 değerleri arasında bir zoom seviyesi belirleyebiliyoruz. Haritamıza başlangıç ayarları yaparken en son kullandığımız method ise harita tipi ayarlamaya yarayan SetMapType. Parametre olarak VEMapStyle nesneleri alan bu fonksiyon ile coğrafi ya da yol haritası gibi görünüm seçenekleri belirleyebilirsiniz (bkz. Tablo 1). Örneğimizde Türkiyenin koordinatlarını girerek hazırladığımız web sayfası şu şekilde:</p>
<p>Açıklama: Harita Kurulumu</p>
<pre class="brush: xml; ">

&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6&quot;&gt;

&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;

var harita = null;

function HaritayiYukle()

{

harita = new VEMap(&#039;HaritaAlani&#039;);

harita.LoadMap();

harita.SetCenter(new VELatLong(39.28, 35.20));

harita.SetZoomLevel(4);

harita.SetMapStyle(VEMapStyle.Aerial);

}

&lt;/script&gt;&lt;/head&gt;&lt;body onload=&quot;HaritayiYukle();&quot;&gt;

&lt;div id=&#039;HaritaAlani&#039; style=&quot; width:400px; height:400px;&quot;&gt;&lt;/body&gt;&lt;/html&gt;
</pre>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim33.png" rel="lightbox[111]"><img class="aligncenter size-medium wp-image-115" title="Resim3" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim33-300x252.png" alt="" width="300" height="252" /></a><br />
Merkezini ayarladığımız haritanın ilk görünümü<strong> </strong></p>
<p>Haritanızı oluşturmayı başardıysanız, uygulamamızın bir sonraki aşamasına geçebiliriz. Harita üzerinde belirli koordinatları merkezde görüntülemek için, yukarıda bahsettiğimiz SetCenter fonksiyonunu kullanarak kullanıcımızı yönlendirebiliyoruz. Yapmanız gereken, merkeze yerleştireceğiniz koordinatları belirledikten sonra, bu değerden bir VELatLong nesnesi yaratmak ve SetCenter metodunu çağırmak. Bu çağırma işlemini javascriptle yaparsanız, harita kütüphanesinin sınıfları AJAX tabanlı çalıştığı için sayfamızda herhangi bir yenilenme (postback) işlemi gerçekleşmeyecektir. Örneğimize İstanbul ve Ankara’nın koordinatlarını döndüren iki küçük fonksiyon ile başlıyoruz. Daha sonra bir koordinat alarak harita objemizin SetCenter methodunu çağıran MerkezBelirle fonksiyonu ile işlemi tamamlıyoruz. Dizayn alanında sayfanıza ekleyeceğiniz buton, resim veya köprü (hyperlink) nesneleri ile ilgili metodları çağırabilirsiniz. Burada dikkat etmeniz gereken nokta, köprü kullanımında adres (href) değerini anchor karakteri olan “#” ile doldurarak sayfada bir yenilenme işlemini engellemenizin gerekmesi. Hazırladığımız kodları aşağıda inceleyebilirsiniz:</p>
<p>JS Fonksiyonları:</p>
<pre class="brush: javascript; ">

function istanbulKoord()

{

var koord = new VELatLong(41.20, 29);

return koord;

}

function ankaraKoord()

{ return new VELatLong(40.02, 32.61); }

function MerkezBelirle(koord)

{ harita.SetCenter(koord); }
</pre>
<p>HTML Kodlar:</p>
<pre class="brush: xml; ">

&lt;a href=&#039;#&#039; onclick=&#039;MerkezBelirle(istanbulKoord());&#039;&gt;İstanbul&lt;/a&gt;&lt;br /&gt;

&lt;a href=&#039;#&#039; onclick=&#039;MerkezBelirle(ankaraKoord());&#039;&gt;Ankara&lt;/a&gt;&lt;br /&gt;
</pre>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim12.png" rel="lightbox[111]"><img class="aligncenter size-medium wp-image-113" title="Resim1" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim12-300x186.png" alt="" width="300" height="186" /></a><br />
Haritamız DIV alanı içerisine yüklenecek.<strong> </strong></p>
<p><strong>ŞEKİL EKLEMEK</strong></p>
<p><strong></strong>Virtual Earth’ün kütüphanesinde hazır bulundurduğu bir diğer sınıf da şekiller. Harita üzerine şekil eklemek, çizim yapmak veya bir alanı seçmek için VEShape nesnelerini kullanabilirsiniz. Raptiye (PushPin), çizgi (PolyLine) ve poligon (Polygon) olarak çeşitlendirilen bu eklentilerden kullanmak istediğimizi nesne yaratırken belirliyoruz.Farklı bir katmanda oluşturulan şekil nesnelerini yaratabilmek için bir şekil tipi (VEShapeType) ve eklenecek bölgenin koordinatlarını girmemiz yeterli. Resmi değiştirilebilen şekil objeleri, kullanıcıya istediğimiz mesajı göstermek için başlık ve açıklama bilgilerine de sahip. Örneğimizde harita üzerinde belirli bir noktayı raptiye (PushPin) şekli ile işaretleyip, SetTitle ve SetDescription metodlarını kullanarak bir açıklama ekleyeceğiz. Şekil üzerinde düzenlemeleri bitirdiğimiz zaman harita nesnesinin AddShape fonksiyonu ile ekleme işlemini gerçekleştiriyoruz. Örneğimizde hazırladığımız PushPinEkle fonksiyonu ve kullanılışını aşağıda görebilirsiniz:</p>
<p>Açıklama: Şekil Eklemek</p>
<pre class="brush: javascript; ">

function PushPinEkle(koord, baslik, aciklama)

{ var sekil = new VEShape(VEShapeType.Pushpin, koord);

sekil.SetTitle(baslik);

sekil.SetDescription(aciklama);

harita.AddShape(sekil);

}
&lt;a href=&#039;#&#039; onclick=&#039;PushPinEkle(istanbulKoord(), &quot;Sariyer&quot;, &quot;Kilyos plajı&quot;);&#039;&gt;Sariyer&lt;/a&gt;&lt;br /&gt;

&lt;a href=&#039;#&#039; onclick=&#039;PushPinEkle(ankaraKoord(), &quot;TBMM&quot;, &quot;Turkiye Buyuk Millet Meclisi&quot;);&#039;&gt;TBMM&lt;/a&gt;
</pre>
<p><strong></strong></p>
<p style="text-align: center;"><a href="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim2.jpg" rel="lightbox[111]"><img class="aligncenter size-medium wp-image-114" title="Resim2" src="http://yigitkiran.net/wp/wp-content/uploads/2010/02/Resim2-300x203.jpg" alt="" width="300" height="203" /></a><br />
PushPin gibi eklentiler kullanıcı deneyimini arttırıyor.<strong> </strong></p>
<p><strong></strong></p>
<p><strong>SUNUCU KONTROLLERİ</strong></p>
<p><strong></strong></p>
<p><strong></strong>Dahili Virtual Earth sınıfları AJAX tabanlı çalıştığı için javascript ile kullanıcı tarafında interaktif bir uygulama çalıştırmayı başardık. Ancak ekleyeceğiniz sınıflar ya da geliştirmek isteyeceğiniz özellikler için kodları sunucu tarafında çalıştırmak isteyebilirsiniz. Bu durumda ilk yapmamız gereken Ajax Extensions altındaki ScriptManager objesini sayfamıza taşımak. Sonraki adım kullanacağımız .js dosyalarını ScriptReference nesnesi ile sayfaya eklemek. Sistemin çalışma mantığını aşağıdaki kodlar üzerinde inceleyebilirsiniz:</p>
<p>Açıklama: Şekil Eklemek</p>
<pre class="brush: javascript; ">

&lt;script type=&quot;text/javascript&quot;&gt;

var harita = null;

function HaritaYukle()

{

harita = new VEMap(&quot;myMap&quot;);

harita.LoadMap(new VELatLong(39.2, 35.2),6);

}

Sys.Application.add_load(HaritaYukle);

&lt;/script&gt;

&lt;body&gt;

&lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;

&lt;div&gt;

&lt;asp:ScriptManager runat=&quot;server&quot; ID=&quot;ScriptManager1&quot;&gt;

&lt;Scripts&gt;

&lt;asp:ScriptReference Path=&quot;http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6&quot; /&gt;

&lt;/Scripts&gt;

&lt;/asp:ScriptManager&gt;

&lt;div id=&quot;myMap&quot; style=&quot;position:relative; width:600px; height:400px;&quot;&gt;&lt;/div&gt;
</pre>
<p><strong></strong></p>
<p><strong>DÜNYA TURU</strong></p>
<p>Gelişimi devam eden coğrafi bilgi sistemlerinin kullanımı da gün geçtikçe artıyor. İnternette birçok firmanın yararlandığı bu uygulamalar artık sadece adres göstermek için değil, emlak, arsa tanıtımı yapmak, filo takibi gerçekleştirmek gibi değişik alanlarda kullanılıyor. Örneğin bu yıl Microsoft’un düzenlediği Imagine Cup yarışmasında sürdürülebilir çevre için harita uygulamalarının yazılımcılıar tarafından yoğunlukla kullanıldığına şahit olduk. Bunların yanında CV’sini harita üzerinde hazırlayanlar gibi kişisel amaçlara yönelik yaratıcı uygulamalar da internette yerini almakta. Bu olanaklardan yaralanmanız, sitenizi takip edenler açısından kesinlikle faydalı olacaktır.</p>
<p>p.s. Bu yazı Haziran 2008 tarihli PC Magazine dergisi makalemden derlenmiş olup, kullandığım IDE, API ve toolkitlerin yeni versiyonunu indirmenizi tavsiye ederim ;)</p>


<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;t=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin+-+&amp;source=shareaholic" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin&amp;link=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin&amp;summary=G%C3%BCn%C3%BCm%C3%BCzde%20yo%C4%9Fun%20ilgi%20g%C3%B6ren%20harita%20uygulamalar%C4%B1%20art%C4%B1k%20%C3%BC%C3%A7%20boyutlu%20g%C3%B6r%C3%BCnt%C3%BClenebilen%2C%20trafik%20yo%C4%9Funlu%C4%9Funu%20bildiren%2C%20afet%20b%C3%B6lgelerindeki%20hasar%C4%B1%20g%C3%B6sterebilen%2C%20Microsoft%20Live%20Local%20gibi%20servislerle%20baz%C4%B1%20%C5%9Fehirlerde%20gezinmeye%20imkan%20veren%20%C3%B6zelliklere%20kavu%C5%9Ftular.%20Hatta%20D%C3%BCnya%E2%80%99da%20dola%C5%9Fmaktan%20s%C4%B1k%C4%B1ld%C4%B1ysan%C4%B1z%2C%20Google%20Sky%20veya%20bu%20ay%20inceledi%C4%9Fimiz%20Microsoft%20Virtual%20Telescope%20gibi%20uygulamalar%20ile%20uzay%C4%B1%20ke%C5%9Ffetmeye%20ba%C5%9Flayabilirsiniz.%20Geli%C5%9Fim%20s%C3%BCreci%20devam%20ederken%20firmalar%20web%20programc%C4%B1lar%C4%B1n%C4%B1%20da%20unutmuyor%3B%20SDK%20ve%20API%E2%80%99leri%20s%C3%BCrekli%20g%C3%BCncelleyerek%20uygulamalar%C4%B1n%20ba%C5%9Fka%20sayfalara%20kolayca%20entegre%20edilebilmesi%20i%C3%A7in%20u%C4%9Fra%C5%9F%20veriyorlar.%20Bizde%20%C5%9Fimdi%20kullan%C4%B1m%C4%B1%20giderek%20artan%20Microsoft%20Virtual%20Earth%20k%C3%BCt%C3%BCphanelerinin%20yard%C4%B1m%C4%B1yla%20web%20sitemiz%20i%C3%A7in%20bir%20harita%20uygulamas%C4%B1%20haz%C4%B1rlayaca%C4%9F%C4%B1z.&amp;source=Yigit Kiran" rel="nofollow" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;imageurl=" rel="nofollow" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin&amp;srcUrl=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;srcTitle=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin&amp;snippet=G%C3%BCn%C3%BCm%C3%BCzde%20yo%C4%9Fun%20ilgi%20g%C3%B6ren%20harita%20uygulamalar%C4%B1%20art%C4%B1k%20%C3%BC%C3%A7%20boyutlu%20g%C3%B6r%C3%BCnt%C3%BClenebilen%2C%20trafik%20yo%C4%9Funlu%C4%9Funu%20bildiren%2C%20afet%20b%C3%B6lgelerindeki%20hasar%C4%B1%20g%C3%B6sterebilen%2C%20Microsoft%20Live%20Local%20gibi%20servislerle%20baz%C4%B1%20%C5%9Fehirlerde%20gezinmeye%20imkan%20veren%20%C3%B6zelliklere%20kavu%C5%9Ftular.%20Hatta%20D%C3%BCnya%E2%80%99da%20dola%C5%9Fmaktan%20s%C4%B1k%C4%B1ld%C4%B1ysan%C4%B1z%2C%20Google%20Sky%20veya%20bu%20ay%20inceledi%C4%9Fimiz%20Microsoft%20Virtual%20Telescope%20gibi%20uygulamalar%20ile%20uzay%C4%B1%20ke%C5%9Ffetmeye%20ba%C5%9Flayabilirsiniz.%20Geli%C5%9Fim%20s%C3%BCreci%20devam%20ederken%20firmalar%20web%20programc%C4%B1lar%C4%B1n%C4%B1%20da%20unutmuyor%3B%20SDK%20ve%20API%E2%80%99leri%20s%C3%BCrekli%20g%C3%BCncelleyerek%20uygulamalar%C4%B1n%20ba%C5%9Fka%20sayfalara%20kolayca%20entegre%20edilebilmesi%20i%C3%A7in%20u%C4%9Fra%C5%9F%20veriyorlar.%20Bizde%20%C5%9Fimdi%20kullan%C4%B1m%C4%B1%20giderek%20artan%20Microsoft%20Virtual%20Earth%20k%C3%BCt%C3%BCphanelerinin%20yard%C4%B1m%C4%B1yla%20web%20sitemiz%20i%C3%A7in%20bir%20harita%20uygulamas%C4%B1%20haz%C4%B1rlayaca%C4%9F%C4%B1z." rel="nofollow" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/&amp;title=Web+Sayfaniza+Virtual+Earth+Haritalari+Ekleyin" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/feed" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>



<p>Related posts:<ol><li><a href='http://blog.yigitkiran.net/index.php/2010/02/ajax-extender-nesnelerinin-kullanimi/' rel='bookmark' title='Permanent Link: Ajax Extender nesnelerinin kullanimi'>Ajax Extender nesnelerinin kullanimi</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/asp-net-ajax-kullanarak-iletisim-formu-hazirlamak/' rel='bookmark' title='Permanent Link: ASP.NET Ajax kullanarak iletisim formu hazirlamak'>ASP.NET Ajax kullanarak iletisim formu hazirlamak</a></li>
<li><a href='http://blog.yigitkiran.net/index.php/2010/02/aspnet-ajax-kullanarak-facebook-uygulamasi-gelistirmek/' rel='bookmark' title='Permanent Link: ASP.NET Ajax Kullanarak Facebook Uygulamasi Gelistirmek'>ASP.NET Ajax Kullanarak Facebook Uygulamasi Gelistirmek</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.yigitkiran.net/index.php/2010/02/web-sayfaniza-virtual-earth-haritalari-ekleyin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
