You are on page 1of 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Visual Studio Al Ekran

Visual Studio balatldnda bizi al sayfas karlar.

Al sayfas araclyla unlar yaplabilir : Sol st ksmda New Project linkine tkladnda alacak diyalog kutusu, istediin tipte .NET projesi amana yardmc olur. Express versiyonda, full versiyona gre daha az proje ablonu listelenecektir. Yeni proje oluturuken alt izilmesi gereken bir dier nokta udur : Alan proje, istenen .NET Framework versiyonuna ynelik kodlanabilir.

Buna gereke olarak yle bir rnek verilebilir : Uygulamann yazldktan sonra alaca gerek ortamda bir nceki framework versiyonunun bulunmas ve teknolojileri departman politikas uyarnca o anda ykseltilememesi. Bu ekilde ilgili framework versiyonunun sahip olduu yeteneklerle uygulama gelitirebilirsin.

2 / 45

Sol st ksmda Open Project linkine tklayarak nceden kayt attiin bir projenin sln dosyasn gstererek almaya devam etmene yardmc olur. Sol taraftaki Recent Projects ksmnda en son altn projeleri listeler. Projeleri hzlca yeniden aman ve almaya devam etmeni salar. Sa tarafta 3 tane tab vardr. o Get Started (Balang): Windows, Web, Oficce Uygulamalar Gelitirme gibi alt balklarda programlama yapmak iin yardmc olacak makale, video gibi kaynaklar bulunur. Bu kaynaklarn bir ouna erimek iin internet balantsna ihtiya olacaktr. o Guidance and Resources (Rehber ve Kaynaklar) : Yazlm gelitirme srecini dzenlemek iin yardmc kaynaklar ierir. Planlama, yazlm dizayn, gelitirme, test, yaynlama, ynetme alt balklar iin Visual Studioyu daha etkin nasl kullanacan konusunda makale ve videolar ierir. Buras ayn zaamnda MSDNdeki kaynaklar efektif kullanman iin sana yol gsterici olacaktr. o Latest News (Gncel Haberler) : Buraya bir rss kayt edebilirsin. Varsaylan olarak Microsoft uygulama gelitirme ile ilgili son haberleri ieren bir rss linki kaytldr. Bilgisayarnn internet balants olduunda en son gelimeleri buradan takip etmen mmkn.

3 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

4 / 45

Konu :

Visual Studio kullanrken btn ekranlarda grdn menler komut ve pencerelere eriim iin kolaylk salar.

Bu menler yardmyla Visual Studionun gcnden faydalanabilirsin. Menleri birka rnek ile inceleyelim : File : zerinde allan proje kayt edilebilir yada kapatlabilir, yeni proje alabilir. Edit : Solution Explorer, Server Explorer, Object Browser gibi gelitiricinin ihtiya duyaca pencereler alabilir. Project : Projeye yeni kod dosyalar eklenebilir, referans ktphane yada ser vis eklenebilir. Build : Projelerin derlenmesi iin kullanlr. Kod yazarken sk sk kodun derlenmesi ve varsa hatalarn incelenmesi iin faydaldr. Debug : Kesme iareti (breakpoint) koyulabilir, debug edilebilir. Programlarn satr satr ilerlenerek incelenmesi iin kullanlabilir. Lokal deikenlerin belli bir anda alma zamanndaki durumunu anlamak iin faydaldr. Data : Bir veri kaynana balanmak iin kullanlr. rnein bir sql veritabanndaki tablolar ve verileri incelenebilir, sorgu ekran olarak kullanlabilir. Tools : Visual Studionun grsel ayarlar yaplabilir. Window : Visual Studio ekrann blerek kullanmak, tab grnmn deitirmek iin kullanlr. Help : Geni MSDN (Microsoft Developer Network) kaynaklar ierisinde yardm aramak iin, Visual Studionuzun versiyonunu renmek iin kullanlabilir.

5 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Visual Studio Pencereleri

6 / 45

Visual Studio Pencereleri Visual Studionun gcn daha yakndan tanyabilmek adna yazlm gelitirici iin baz nemli pencereleri inceleyelim. Solution Explorer zerinde altn proje ile ilgili birok detaya Solution Explorer penceresinden eriebilirsin. Projeye dahil ettiin kod dosyalar Projeye dahil ettiin grsel arayzler(windows form, web sayfas gibi) Projeye referans olarak eklenmi assemblyler Projenin konfigrasyon dosyas

Proje ile ilgili btn dosyalar, projeyi olutururken senin belirlediin dizinde bir klasr ierisinde saklanr. Solution Explorer, bu klasr sana hiyerarik bir ekilde gsteren penceredir. Solution Explorer penceresini amak iin menden View Solution Explorer sekmelerini takip edebilirsin. Tek Solution erisinde Birden Fazla Proje le almak Bazen ayn zm iin birden fazla proje yazman gerekebilir. rnein bir ierik ynetim sistemi program iin windows uygulamas alabilir. Ardndan excel dosyalarndaki verileri veritabanna kayt etmek iin basit bir konsol uygulamasna ihtiya duyulabilir. Her proje bir solution olabilecei gibi, bir solution iinde birden fazla proje saklanabilir. Bu durumda 2.projeyi Solution Explorer zerinde amak gerekir. Bunun iin Solution Explorer iinde ilk satra sa tklayp Add New Project demek yeterlidir. Bylece tek bir sln dosyas ile birden fazla projeyi gruplayarak takip edebilirsin.

7 / 45

Projeye Referans Eklemek Projene .NET Framework ierisinde en sk kullanlan assemblylerin referanslar dahil edilmitir. Bunu Solution Explorer iindeki References klasrnde grebilirsin. Varsaylan olarak eklenen bu ktphanelerin listesi, atn proje eidine gre deiiklik gsterir.

.NET Framework ierisindeki dier ktphaneleri programnda kullanmak isteyebilirsin. rnein atn konsol uygulamasnn konfigrasyon dosyasna (App.config) erimesi iin gerekli tipleri ieren System.Configuration.dllini eklemek istedin. Bunun iin yapman gereken References klasrne sa tklamak ve Add Reference... men kalemini semektir. Alan pencerede birka tane sekme var.

8 / 45

.NET sekmesi, altn bilgisayarda kurulu olan frameworkn sahip olduu btn assemblyleri listeleler. Bunlardan istenen dll dosyas seilip OK butonuna baslr. Artk setiin assembly iindeki btn tiplerden faydalanabilirsin. Browse sekmesini kullanarak bir arkadann yazd yada internet gibi dier kaynaklardan bulduun ktphaneleri, projende kullanabilirsin. Bunun iin yapman gereken ey, dll dosyasnn dizindeki yerini gstermek ve ardndan OK butonuna basmak.

Server Explorer Server Explorer, Visual Studionun sunucu ynetim penceresidir. Bu pencere yardm ile, bir veri kaynana balanp oradaki veritabann incelenebilir. Balanlan veritaban altnda tablolar, fonksiyonlar listelenir. Dilenirse sql sorgular yazlabilir. Microsoft Sql Server yannda Access, Oracle gibi dier veri kaynaklarna da balanlabilir. Bunun yannda a zerindeki bir bilgisayara balanp sistem servislerinden bilgi almak iin kullanlabilir.

9 / 45

Server Explorer penceresini amak iin menden View Server Explorer sekmelerini takip edebilirsin. Object Browser Object Browser, projende yer alan btn tip ve yeleri incelemene izin veren bir aratr. Projeye varsaylan olarak dahil olan ktphaneler, kendi yazdn kodlar ve senin sonradan eklediin ktphaneleri burada bulabilirsin. Bu pencere sayesinde ilk defa kullanacan bir ktphaneyi yaknda inceleyebilir ve hangi yelerini kullanabilecein hakknda fikir sahibi olabilirsin. Projenin referans mimarisini bir baka gelitirici arkadana anlatrken Object Browser aracndan faydalabilirsin. Burada yakalaman gereken bir baka detay da udur : Solution Explorer penceresindeki referanslarda yer almayan ama Object Browser aracnda grlen : mscorlib. Bu assembly, varsaylan olarak btn .NET projelerine dahil edilir. erisinde int, double, Console vb. en temel veri tiplerini barndrr. Object Browser penceresini View Object Browser mensnden aabilirsin.

10 / 45

Object

Browser tane panelden meydana gelmektedir: Solda Nesne Paneli Sa stte ye Paneli Sa altta Aklama Paneli

Nesne panelinde yer alan ikonlar, .NET Framework ierisindeki hiyerarik yaplar aa grnmnde sunmaktadr. Bu aata isim alanlar (namespaces), assemblyler, arayzler (interface), snflar (classes) gibi bir program oluturan btn kavramlar gsterilir. Bu nesneleri panel zerinde geniletebilir ve kendisine bal yeleri sral olarak inceleyebilirsin. zellikler, metotlar, olaylar, deikenler ve dier tip yeleri ye Panelinde listelenir. Nesne ve ye panelinde seilen programlama nesnesinin detay Aklama Panelinde gsterilir.

11 / 45

Class View Class View, gelitirmekte olduun uygulamann iinde arlan, referans edilen ve tanmlanan programlama nesnelerini gsterir. Class View penceresini View Class View mensnden aabilirsin.

12 / 45

Class View penceresinin iki tane paneli vardr : Nesne Paneli ye Paneli

Bu pencere uygulama yazarken her zaman ak kalabilir; bylece uygulama iindeki hiyerariye srekli hakim olursun. konlar sana hiyerarik yapy gsterir; bu ekilde projendeki tiplerin ve o tiplere ait yelerin listesini grrsn. Ayn zamanda kendi yazdn tip yada yeye tklayarak projedeki kodun olduu yere gidebilirsin. .NET Frameworke ait bir tip yada yeye tkladnda ise daha detayl inceleyebilmek iin Object Browser aracna gei yapabilirsin.

Code Definition Code Definition, sen kod yazarken kullandn tip ve yelerin tanmlarn anlk olarak sana gsteren bir penceredir. Aktif projede senin yazdn yada referans edilmi ktphanelerin iindeki kod dosyalarnda yer alan tanmlar gsterir. Gsterdii tanmlar sadece-okunabilir olarak sunar.

13 / 45

Pencereyi View Code Definition Window mensnden ilk defa atnda, en son setiin nesnenin tanmn gsterir. Sadece okunabilir olmasna ramen birok adan fonskiyonel bir editrdr. rnein bu pencereden kod yada yorum satr kopyalayabilirsin. Penceredeki kod satrna kesme iareti (breakpoint) koyabilir; bu yolla programn o satra kadar alp o satrda duraksamasn salayabilirsin. Pencerede grdn ierii gncellemek istediinde ise pencere iinde sa tklayp Edit Definition alt mensn seerek ilgili koda gidebilirsin.

14 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Visual Studio le Uygulamalarn Debug Edilmesi

15 / 45

Yazmakta olduun C# program alrken lokal deikenlerin deerini grmek istedin. Bu, deerlerin doru olduundan emin olmak adna faydal olacaktr. Ayn ekilde program satr satr altrarak uygulamann davrann takip etmek ok iine yarayacak. te sana Visual Studio ortamnda deikenleri n debug edilmesi ile ilgili bir rnek ekran :

Lokal deikenlerin alma zamannda ieriklerine bakmak iin kod blounun uygun bir yerine kesme iareti (breakpoint) koymak gerekir. Bunu modellemek adna C# dili ile yazlm ve bir ok lokal deikene sahip ksa konsol programna gz atalm :

Lokal Deikenler Kullanan C# Program

using System; namespace DebugCsharpProgram { class Program { static void Main(string[] args) { //ndirim oran - Lokal deiken double oran = 0.15; //Aracn fiyat - Lokal deiken long fiyat = 25460; //ndirimli sat rakam - Lokal deiken double sonFiyat = fiyat - (fiyat * oran);
16 / 45

Console.WriteLine("Aracn {0}",sonFiyat); } } }

sat

rakam

17 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Kesme areti (Breakpoint) Eklemek

18 / 45

rnek programn sonuna doru bir kesme iareti ekliyoruz. Kaynak kodu yazdn ekrann en solunda dar gri bir erit greceksin. Debug etmek istediin satrda o erite tkla (F9 yada menden Debug Toogle Breakpoint). Visual Studio oray krmz bir daire ile iaretler. Kod zerinde oluan krmz blok ise debuggern alaca blou belirtir.

19 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Debug lemini Balatmak

20 / 45

Visual Studio ile program balatrken, ayn zamanda debuggern nasl balatlacan grelim. Bunu yapmak iin Visual Studioda st ksmdaki ara ubuunda yer alan yeil oka tklamak yeterlidir. Bu, klavyede F5 tuuna basmak ile ayn ilemi gerekleti rir.

Ayrca debug sreci ksayollar yerine, menden ynetilebilir. Visual Studio st mensnde Debug Start Debugging tklanarak hem uygulama altrlm olur, hem de kod ierisinde kesme iaretiniz (breakpoint) varsa program alp o satrda almay duraksatr ve bekler.

Programn Kesme aretine Gelmesi Program altrldnda kod dosyasna koyulan kesme iaretine gelir ve almas ilgili o satrda duraksar. Krmz kod blou, sarya dner. Sol eritteki krmz dairenin iinde sar ok belirir ve debuggern o anda hangi satr iletmekte olduunu sana gsterir. Visual Studio Call Stack, Immediate Window gibi birok panel aar ve alma zaman ile alakal gelitiriciye kullanl bilgiler sunar. Bu noktada Locals penceresini aarak, o anda bellekte yer alan lokal deikenleri inceleyelim. Visual Studiodaki birok ekran gibi Locals penceresini amann da birok yolu var. imdi Debug Windows Locals mensn kullan.

21 / 45

Buradaki kolonlarn ne ifade ettiklerine ksaca gz atalm: Name : Lokal deikene verilen isim Value : Lokal deikenin alma zamannda o andaki gncel deeri Type : Tanmlanan lokal deikenin veri tipi

Komut Satrlar Arasnda Adm Adm lerlemek Bazen kodu debug ederken bir sonraki satra ilerlemek isteyebilirsi n. Bunu yaparken sradaki metodun ierisine girip satr satr kodu iletmek ve oradaki deikenlerin ald deerleri grme ihtiyacn olabilir. Ayrca 3 satr aada baka bir kesme iareti (breakpoint) koymu olabilirsin ve satr satr ilerlemeden programn dorudan oraya kadar almasn ve orada yeniden duraksamasn isteyebilirsin. Bunun iin tekrar F5e basman yeterlidir. te dier seenekler : Step Into (F11) Bu hareket, programn bulunduu satr altrmasn ve ardndan bir sonraki satra gemesini salar. Eer debuggern o an zerinde bulunduu satr, metot aran bir kod ieriyorsa debugger metodun iine girer ve ilk satrnda duraksar. Bylece metot ierisindeki lokal deikenlerin durumu gzlenebilir. Menden Debug Step Into yada klavyeden F11 ile kullanlabilir. Step Over (F10) Bu hareket, programn bulunduu satr altrmasn ve ardndan bir sonraki satra gemesini salar. Ancak sradaki satrda bir metot varsa onun iine girmez ve metodu altrp devam eder. Menden Debug Step Over yada klavyeden F10 ile kullanlabilir. Step Out (Shift + F11) Bu hareket, o an debug edilen metodun geri kalanna satr satr devam etmeyip tek seferde altrr ve kendisini aran metoda geri dner. Adm adm almaya dardaki metottan devam eder. Menden Debug Step Out yada klavyeden Shift + F11 ile kullanlabilir.

22 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Debug lemini Sonlandrmak

23 / 45

Kodu Debug ederken istenen anda vazgeebilir ve program sonlandrabilirsin. Bunu yapmak iin Visual Studioda st ksmdaki ara ubuunda yer alan mavi kare iaretine tklaman yeterlidir. Alternatif olarak klavyeden Shift + F5 tularn kullanabilirsin.

Bir Uygulamay Debug Etmeden altrmak Yazdmz programn iinde breakpointler olsa da olmasa da adm adm ilerlemek yerine btn program tek seferde altrmak ve ortaya kan sonucu grmek istediinde Debug Start Without Debugging yada Ctrl + F5 tercih etmelisin.

Debug Seeneini Devre D Brakmak Yazdn program gerek ortamnda yaynlamadan nce debug etme seenei devre d braklmaldr. Bunun sebebi debuggern nemli lde performans yk getirmesidir. Debug seenei web.config dosyas zerinden kapatlm bir programn almas, ak olan programn almasna gre yaklak 2 kat daha hzldr. Bunun iin web uygulamasnda web.config dosyasnda compilation etiketinin debug niteliine false deer vermelisin. Konsol yada masast uygulamalarda ise menden Project ProjeAdin Properties Debug Configuration listesinde Release semelisin.

24 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Kontrol Yaplar

25 / 45

If Kontrol
ngilizce olarak Eer anlamna gelen if kontrol, aynen Trkedeki gibi kullanlr. Eer ile balayan cmlenin mantksal ifadesi doru (true deer dnerse) ise eer iin yazlm kod blou altrlr; aksi takdirde bu bloun atlanarak altrlmamasn salar. Bir uygulamann kod akn belli artlara bal olarak dallandrmak iin kullanlan if deyiminde kontrol her zaman ilikisel, koul veya eitlik operatrleri ile salan r. Genel sz dizimi aadaki gibidir : f (mantksal ifade) { //Yaplacak i blou } Bu rneimizde mantksal ifadenin doru olmas halinde Yaplacak i blou nun bulunduu blok alr; yanl olmas yani false deer dndrmesi halinde ise Yaplacak i blou nun bulunduu kod blou altrlmadan atlanr ve bloun bittii noktadaki satrdan itibaren normal kod ak devam eder. Ayrca, if blounu takiben, bir else blou kullandnda; eer mantksal ifadenin dndrd deer yanl olursa, if blou atlanp, else blou ierisindeki kod altrlacaktr. Yani, mantksal ifadenin sonucuna bal olarak, iki farkl kod bloundan sadece birini altrmak istediin durumlarda if deyimini else ile birlikte kullanabilirsin. htiya dahilinde if ve else bloklarn bir arada kullanmak istediinde, genel sz dizimi aadaki gibidir : if(mantksal ifade) { //Yaplacak i blou 1 } else { //Yaplacak i blou 2 } Bu rnekte mantksal ifadenin doru olmas halinde halinde Yaplacak i blou 1 in bulunduu ilk kod blou alr; mantksal ifadenin yanl olmas halinde halinde ise Yaplacak i blou 2 nin bulunduu kod blou alr. x>7 : x deikeninin ierisindeki deer 7den byk olursa mantksal ifade true dndrr, 7ye eit yada 7den kk olursa mantksal ifade false dndrr. ... int not1 = 80; int not2 = 90; int ortalama = (not1 + not2) / 2; if (ortalama < 50) { Console.WriteLine("Bu dersten kaldnz..."); } else

26 / 45

} Console.WriteLine("Bu dersten getiniz..."); } ... not1 ve not2 deikenlerinin ortalamas alnarak hesaplanan ortalama deikeninin deerine bal olarak uygulamada iki farkl kod bloundan biri si alr. Hangi kod blounun alacana if(...) deyiminin ierisindeki mantksal ifade nin deerlendirilmsi sonucunda karar verili r. ortalama, 85 olarak hesaplanarak if kontrolne girer; burada (85 < 50) eklindeki mantksal ifade deerlendirilir ve sonu yanl (false) olarak elde edilir. Bu noktada if, kontroln ilk bloktan m yoksa ikinci bloktan m devam edeceine karar verir ve elde edilen sonu yanl olduu iin kod ak else blouna ynlendirilir. if ve else anahtar kelimelerinin ardndan sadece tek bir komuttan oluan bir kod blou altrlacak ise blou kme parantezleri ierisine almaya gerek yoktur. rnein; if (ortalama < 50) Console.WriteLine("Bu dersten kaldnz..."); Fakat, birden fazla komut barndran bir kod blou kullanlaca zaman, kme parantezlerinin kullanlmas zorunludur. Aksi takdirde ifden sonra kullanlmayan kme parantezleri iin derleme zaman hatas oluma riski vardr. (eer arkasndan else kullanlm ise), elseden sonra kullanlmayan kme parantezleri derleme zamannda hata retmez fakat bloun ilk satrndan sonraki kodlar else bloundan bamsz olarak alr ve isteimiz dnda bir davran sergiler. Bu gibi olas hatalarn gereklemesinin nne gemek iin, kod bloumuz tek bir komuttan olusa dahi, if/else bloklarn kme parantezleri ierisinde yazmalyz. Benzer durum, ileriki konuda anlatlacak olan for dngs iin de geerlidir.

Yukardaki rnein kts yledir:

if blou kullanmna rnek olarak aadaki kodlar inceleyelim: ... if ((5 % 2) == 0) { Console.WriteLine("5, tek saydr..."); } else { Console.WriteLine("5, ift saydr..."); }

27 / 45

... 5in 2 ile blmnden kalan 1dir. Dolaysyla if deyimi false deer dndrr ve kontrol else bloundan akna devam eder. Bu aamalar debug edilerek ok daha salkl bir ekilde gzlemlenebilir. Debug ilemi, konunun anlalmasn da kolaylatracaktr. Operatr ncelikleri if parantezi ierisinde herhangi bir mantksal ifade olmas yeterlidir. Bu birden fazla ifadenin birleimi de olabilir, ok basit bir kontrol de olabilir. rnekte if blou ierisinde 7nin 2 ile blmnden kalan saynn 0a eit olup olmad kontrol edilmektedir. (7 % 2) ifadesi parantez ierisine alnmasa da kod salkl bir ekilde alr; nk aritmetik operatrlerin eitlik operatrne kar ncelii vardr. Ancak; hibir zaman ii nceliklere brakmayp, kendi nceliklerini aynen matematik kurallarnda olduu gibi- parantezlerle belirlemen tavsiye edilir. rnekte de bu tavsiyeye uyulmutur. Hibir zaman ii parantezlerle belirle. nceliklere brakma, kendi nceliklerini

if else if fadeleri if deyimleri birbirine bal olarak, arka arkaya kullanldnda, mantksal deyimler birbirlerine zincirlenir ve bir tanesi true deer dndrnceye kadar birbiri arkasna altrlr. rnein haftann gnlerini ele alalm. Kullancdan alnacak haftann gn says ile gnn ne olduunu ekrana yazdracamz dnelim: ... string gunAdi; Console.Write("1 ile 7 arasnda haftann bir gnn giriniz : "); string gun = Console.ReadLine(); if (gun == "1") gunAdi = "Pazartesi"; else if (gun == "2") gunAdi = "Sal"; else if (gun == "3") gunAdi = "aramba"; else if (gun == "4") gunAdi = "Perembe"; else if (gun == "5") gunAdi = "Cuma"; else if (gun == "6") gunAdi = "Cumartesi"; else if (gun == "7") gunAdi = "Pazar"; else gunAdi = "Doru gn says girilmedi"; Console.WriteLine(gunAdi); ... Bu rnekte kullancnn hatasz ekilde bir say girdii varsaylr. lk ifden itibaren girilen say ile karlatrma yaplarak ilerlenir. if ve else if kontrolleri birbirlerine bal ekilde almaktadr. Bu yzden if ya da else iflerden herhangi birinde doru deer
28 / 45

tutturulmusa kontrol bal bulunan dier bloklarn sonuna gider. Dier bloklar bouna kontrol edilmez. nk oradaki dizayn, bir tane dorunun olmas zerine kuruludur.

else/if yaps

else/ if bloklar doru bir ekilde alyor. if Blounda Koul Operatrleri if bloklarnda koul operatrleri de (&& , ||) kullanlabilir. zellikle birden fazla koulu tek bir if ierisinde test etmek istediimizde bu yola bavurabiliriz. Aadaki yzde kontrol buna iyi bir rnektir. int yuzde = 90; if ((yuzde >= 0) && (yuzde <= 100)) { Console.WriteLine("Yzde {0}",yuzde); } else { Console.WriteLine("Geersiz yzde..."); }

Switch Kontrol
if else ve/veya if else if deyimleri ile yaplabilen kontrollerin, baz durumlarda switch deyimi ile yaplmas tercih edilebilir. zellikle if else if deyimlerinin says arttka, switch deyiminin tercih edilmesi, hem daha etkili, hem de daha okunakl kod yazlmasn salar. Dikkat edilmesi gereken nokta, switch bloklarnn sadece sabit deerler zerinden koul denetimi yapyor olmasdr. switch bloklarnda eitlik denetimi yaplyor olmasna ramen, karlatrma veya eitlik operatrlerinden faydalanlamaz. Genel sz dizimi aadaki gibidir:
29 / 45

... int kararDegiskeni = 1; switch (kararDegiskeni) { case 1: Console.WriteLine("Karar 1"); break; case 2: Console.WriteLine("Karar 2"); break; default: Console.WriteLine("Varsaylan Karar"); break; } ... Burada kodun hareketini kontrol eden kararDegiskenidir. Onun deeri switch blou ierisindeki case anahtar kelimesinin nndeki deererle karlatrlr. Eer eleen bir deere rastlarsa bir alt satra geer ve kodu altrr. Aksi takdirder otomatik olarak bir sonraki case anahtar kelimesini kontrol etmeye geer. Eleen hibir case bulunamazsa, default anahtar kelimesinin altndaki kodlar alr. case lerin altnda herhangi bir ssl paranteze ihtiya duyulmaz. nk eleen bir case in kodlar aaya doru akar ve break anahtar kelimesini grene kadar alr. break, kod akn switch deyiminin sonuna gtrr. Bylece artlardan sadece bir tanesinin almas ve dierlerinin atlanmas garanti altna alnr. Switch blounda default bulunmak zorunda deildir. Eer default varsa ilgili bloun sonuna da break koyulmaldr. detault yoksa, en son case deyimi break ile bitmelidir. Zaten unutulursa derleyici, derleme zaman hatas vererek uygulama gelitiriciyi uyaracaktr.

Aadaki rnekte kullancdan saysal bir deer alnp, bu deere bal olarak kullancya basit cevap veren bir uygulama yer almaktadr. Kullancdan istenilen deerler dnda bir saysal deer girilmesi durumunda, if kontrolndeki else blounun benzeri ilevsellie sahip default blou alr.

30 / 45

... Console.WriteLine("1 [C#], 2 [VB]"); Console.Write("Ltfen dil seiminizi yapnz: "); string dilSecimi = Console.ReadLine(); int n = int.Parse(dilSecimi); switch (n) { case 1: Console.WriteLine("yi tercih. C#, .NETin gzdesidir..."); break; case 2: Console.WriteLine("VB .NET: in biraz zor ama imkansz deil..."); break; default: Console.WriteLine("Geersiz bir deer girdin. Sana iyi anslar..."); break; } ... switch deyimi kullanlarak kontrol edilecek deiken (Yukardaki rnekte dilSecimi deikeni) tipleri unlar olabilir: Btn tam say tipler, metinsel tipler, bool tipi veya her hangi bir numaralandrc (enum) tipi.

31 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Dngler

32 / 45

While Dngs
Mantksal bir ifade doru olduu srece belli bir kod blou nu, tekrar tekrar altrlmak istediinde bavurabilecein dng deyimlerinden biridir. Dnglerin alma mekanizmasn daha kolay kavrayabilmen iin, aadaki kod parasn, alma zamannda debug edip, adm adm ilerlemelisin.

... int a = 0; while (a <= 5) { Console.WriteLine("a'nn u anki deeri : {0}",a); a++; } ... nce a deikeni tanmlanr ve 0 deerini alr. Sonra while deyiminin ierisi kontrol edilir. Bu deyimin ii doru olduu srece, while blou (kme parantezleri aras) tekrar tekrar altrlr. Dolaysyla, deyim ierisinde kontrol edilen deikenin deeri, her dnte denetlenen art bozmaya ynelik olarak deitirilmelidir. Yani deyim ierisinde a<=5 ifadesini denetlerken, dng blou ierisinde ann deerini her seferinde azaltlrsak, bu dngden klmaz. klsa da salkl olarak uygulamaya geri dnlemez. Bu yzden a deikeninin deeri her seferinde 1 arttrlr. lk art salanp ekrana gerekli bilgilerin yazlmasnn hemen ardndan deikenin deeri arttrlr. Sonrasnda da dng deyiminin kontrol yeniden yaplr ve 1 deeri iin de ifade doru olduundan, bloa tekrar girilip kod altrlr. Dng deikeninin deeri tekrar arttrr ve bu dng a, 5 deerini alana kadar devam eder. Hatta 5 deeri de art salad iin dng ierisindeki kod blou bir kere daha alr. Fakat sonraki artta a deikeni 6 deerini ald iin koul false deer dndrr ve dng sonlanr. Kod ak, dng bloundan sonraki ilk satrdan devam eder. kt aadaki gibi ol ur:

While dngs rnei Burada dikkat edilmesi gereken nokta var. while dngsnde 3 ayr ok nemli parametre tamamen birbirinden ayr yerlerde ileniyor.

33 / 45

Dng deikeninin tanmland ve ilk deerinin verildii yer, dng blounun dndadr. Dngnn ne kadar sre ile devam edeceine karar verilen yer, dng deyiminin ierisindedir. Dng deikeninin deer arttrm ise dng blounun ierisinde yaplmaktadr.

zellikle arttrm ifadesinin unutulmamasna ve doru olarak verilmesine dikkat edilmelidir. Bu koordinasyon iyi kurulduu srece ihtiya duyulan yerlerde while dngsnden maksimum fayda salanr. While dngs iin yazlm aadaki rnekte kullancdan istenen iki kelimeden birisi olan yes girilmedii srece dng ierisinde kalnmaktadr. Kullancdan alnan deer doru olsa dahi byk harfli olmas durumunda eleme olmayacaktr. Her ihtimalde doru deerin kabul edilmesini garanti altna almak iin ToLower() metodu ile girilen deerin kk harfli temsili elde edilir. While dngsnde dng deyimi ierisindeki art, kod blou almadan nce kontrol edilir. Bundan dolay, deikene, dngnn devamn salayacak bir baang deeri verilir. ... string deger = "no"; while (deger.ToLower() != "yes") { Console.Write("Tamam m? [yes] [no]: "); deger = Console.ReadLine(); Console.WriteLine("*While dngsndesin*"); } Console.WriteLine("-While dngsnden ktn-"); ... Burada dngnn devamn kontrol eden ey ekrandan yes dnda herhangi bir ey girilmesidir. nk dng deyiminin ierisinde eit olmad srece kontrol yaplmaktadr. deger.ToLower() != "yes"

Do-While Dngs
Do-While dngs tamamen while dngs gibi alr. Aralarndaki tek fark udur. while dngsnde dng deyimi ierisindeki kontrol, dngye girilmeden nce yaplr. do-while dngsnde ise bu kontrol ilk dng bloundan kldktan sonra yaplmaya balanr. Yani dng blou iersinde yer alan kod, kaytsz -artsz ilk sefer iin altrlr. yleyse while dngsnde verilen 2. rnek aadaki gibi dzenlenebilir: ... string deger = ""; do { Console.WriteLine("*While dngsndesin*");
34 / 45

Console.Write("Tamam m? [yes] [no]: "); deger = Console.ReadLine(); } while (deger.ToLower() != "yes"); Console.WriteLine("-While dngsnden ktn-"); ... ncelikle bir do-while dngsnn yapsn inceleyelim. Dng blou nun ierisi, ilk sefer iin kontrol edilmeden alacandan while anahtar kelimesi ve dng deyimi, kod blounun sonunda yer alr. do-while sz dizimi noktal virgl ile biter. Kod blounun bana da do anahtar kelimesi gelir. Kod incelendiinde grlen en nemli deiiklik, bloun ilk altrlmada kontrole maruz kalmamasdr. kinci deiiklik ise, her art altnda dng bloundaki kod altrld iin (dng deyimi ierisindeki art salanmasa da) Console.WriteLine("*While dngsndesin*"); yazsnn dng blounun bana alnmasdr. Do-while dngs kullanmna rnek olarak kullanc ad ve ifreyi kullancdan minimum bir defa isteyen bir algoritma dnlebilir. Aadaki kodu inceleyelim: ... string kullaniciAdi = ""; string sifre = ""; do { Console.Write("Kullanc ad giriniz : "); kullaniciAdi = Console.ReadLine(); Console.Write("ifre giriniz : "); sifre = Console.ReadLine(); } while ((kullaniciAdi != "emrah") || (sifre != "1234")); Console.WriteLine("Siteye login oldunuz..."); ... do blou herhangi bir kontrol yaplmadan ilk sefer iin alr. Yanl deerler girilmesi durumunda kullancdan, kullaniciAdi ve sifre bilgileri alnp, ikinci sefer kontrol ettirilebilir. Kullanc ad ya da ifreden birinin bile yanl olmas durumunda login olmay engellemek iin kontrol aadaki ekilde yaplmtr: while ((kullaniciAdi != "emrah") || (sifre != "1234")); Bu deyim eer kullanc ad emrah deilse ya da sifre=1234 deilse dngye devam edilsin olarak yorumlanabilir.

35 / 45

For Dngs
For dngs, while dngs ile benzer bir fonksiyonellie sahiptir. Dng deikeninin tanmlanmas, deikenin dng ierisinde gncellenmesi ve dng koul deyiminin bildirilmesi for dngsnde tek bir yerde yaplr. Genel sz dizimi aada yer almaktadr: for (balang gncellenmesi) { //kod blou; } deeri; mantksal ifade ; kontrol deerinin

Bu 3 ilem, for dngsnn temellerini tekil eder. imdi, aadaki rnei inceleyelim: for (int i = 0; i != 10; i++) { Console.WriteLine(i); } 1. 2. 3. 4. 5. 6. Bataki i deikeni, sadece dngnn banda bir defa oluturulur. Eer ortadaki mantksal (boolean) ifade doru ise dng blou altrlr. Sondaki kontrol deikeni gncellenir ve mantksal ifade yeniden hesaplanr. Eer koul hala doruysa dng blou yeniden altrlr. Kontrol deikeni gncellenir ve mantksal ifade yeniden hesaplanr. Ortadaki koul (mantksal ifade) false dnene kadar bu sre devam eder.

Burada dikkat edilmesi gereken baz noktalar vardr: Deiken oluturma ve balan deeri verme sadece ilk dngde gerekleir. Dng blou her zaman konrol deikeninin (i) gncellenmesinden nce alr. Gncelleme her zaman mantksal koul ifadesinden nce alr.

For dngs rnei Baka bir rnek daha inceleyelim. For dngs kullanarak 1 ile 20 arasndaki tam saylarn toplamn bulan kod aada yer almaktadr: ...

36 / 45

int toplam = 0; for (int i = 1; i <= 20; i++) { toplam += i; } Console.WriteLine("1 ile 20 {0}",toplam);

arasndaki

deerlerin

toplam

... Bu kod altnda dngden nce balang deeri 0 olan toplam deikeni tanmlanr. Dng ierisinde her turda i deikeninin gncel deeri toplam deikenine eklenir. Bu sayede 1den 20ye kadar olan saylarn kmlatif toplam elde edilir.

For dngs kullanarak 1 ile 20 arasndaki saylarn toplam For dngsnde aralarna noktal virgl koyularak belirtilen bileenden herhangi biri, ikisi ya da birden belirtilmeyebilir. Bu bileenlerin uygun baka bir yerde belirtilmesi de mmkndr. htiya varsa oklu balang deeri ve gncelleme paras kullanlabilir. Ayrca dng iin oluturulan deikenlerle ilgili farknda olunmas gereken baz nemli noktalar vardr: Eer mantksal ifade yazlmazsa, varsaylan olarak dnecek deer true olacaktr. Dolaysyla aadaki for dngs sonsuza kadar alr:

... for (int i = 0; ; i++) { Console.WriteLine("Biri beni durdursun..."); } ...

Bir dier sonsuz dng eidi de aada yer almaktadr: for( ; ; ) {

}
Bu tarz sonsuz dnglere ok sk ihtiya duyulmaz. Genel olarak giri-k (I/O) ilemlerinde, ifreleme algoritmalarnda ve rnein kullanc doru deer girene kadar devam etmesi gereken durumlarda vb. kullanlabilir.

37 / 45

Deiken oluturup balang deerini verme ile deikeni gncelleme paralar for deyiminin ierisine yazlmasa dahi, doru satrlara yerletirilirse ortaya kan kod while dngsne benzemektedir.

... int i = 1; for ( ; i != 11 ;) { Console.WriteLine(i); i++; } ... For dngs iin birden fazla deiken tanmlanp ynetilebilir. oklu deiken tanmlama, balang deerlerini verme ve bu deikenleri gncelleme ifadeleri noktal virglle ayrlan para ierisinde yer alr ve kendi ilerinde virgl ile ayrlr. Ortadaki mantksal ifade ise her zaman tek olmaldr. Aadaki rnek bunu modellemektedir: ... for (int i = 0, j = 20 ; i != j; i += 2, j -= 2) { Console.WriteLine(i + " <---> " + j); } ... Dng Deikenleri For dngs kullanrken oluturulan deikenler, sadece dng blou ierisinde geerli deikenlerdir. Yani dng deyimi ierisindeki mantksal (boolean) ifadenin false deer dndrmesinin ardndan kod ak dng sonuna gelir ve deiken bellekten der. Dolaysyla dng sonunda deiken, kullanlmaya allrsa derleyici bizi uyarr: ... for (int i = 0; i < 10; i++) { // Hesaplamalar... }// i deikeni burada bellekten der. Console.WriteLine(i); //Derleme zaman hatas ... Yukardaki zellie bakarak u ifade rahatlkla sylenebilir: Ard arda gelen dngler ierisinde ayn isimli deiken ler kullanlabilir. Bunu salayan ey, her deikenin farkl bir kapsama alanna sahip olmasdr: ...
38 / 45

for (int i = 0; i <= 10; i++) { Console.WriteLine(i); } Console.WriteLine("******************"); for (int i = 10; i >= 0; i-- ) { Console.WriteLine(i); } ...

Son olarak for dngsnn daha iyi anlalmas adna aadaki kodu analiz etmekte fayda vardr: (Ancak dnglerin bu ekilde kullanlmas tavsiye edilmez) ... int i = 0; Console.WriteLine("*****Dng balad\n"); for(Console.WriteLine("Ben sadece ilk sefer alrm"); i < Console.WriteLine("Ben dng deyimi doru olduu srece alrm")) { Console.WriteLine(i); i++; } Console.WriteLine("\n*****Dng sona erdi..."); ... Bu dngnn kts aadaki gibi olacaktr :

6;

39 / 45

For dngsnde dng deyimi paralarnn alma sras.

40 / 45

ETM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DNGLER

Blm : Visual Studio Kullanm

Konu : Atlama Deyimleri (Jump Statements)

41 / 45

Atlama deyimleri (jump statements) kullanlarak, kod ak ynlendirilebilir ve akta dallanma(lar) salanabilir. Atlama deyimleri unlardr: break continue goto return throw

Bu atlama deyimlerinden return, daha sonraki konularda ilenecek olan metotlarda kullanlr. return ifadesi, bir metotun almasn sonlandrr. return kullanldnda, kod ak metot blounun sonuna gider. throw ise, program ak srasnda oluan allmn dnda bir durumu (alma zaman hatas -exception-) iaret etmek iin kullanlr. throw anahtar kelimesinin kullanmna daha sonraki konularda deinilecektir.

break Anahtar Kelimesi


break anahtar kelimesine daha nce switch kontrolnde deinilmiti. Orada yapt i, kontrol switch blounun sonuna transfer etmek ve akn oradan devam etmesini salamaktr. Bu anahtar kelime, bir dng ierisinde kullanldnda, yine switch rneindekine benzer bir davran gsterir. Kod akn bir daha dnmemek zere dng blounun sonuna gtrr. Bir baka deyile dng ierisinden bir koul nedeniyle klmak istendiinde kullanlabilir. Aadaki rnek bunu modellemektedir : ... for (int i = 0; i < 10; i++) { if (i == 4) { break; } Console.WriteLine(i); } //break alnca kontrol buraya transfer eder. Console.WriteLine("Dng sonu..."); ... Dng blou 0,1,2 ve 3 iin salkl bir ekilde alr. lk drt dn ierisinde yaplan if kontrolleri sonucunda false deer dner ve break komutu altrlmadan geilir. Dng deikeninin (i) deeri 4 olduunda if kontrol true deer dnecei iin break deyimi alr. Bunun sonucunda kod ak, for dng blounun sonuna gider. Dolaysyla 4 iin deer ekrana yazdrlamaz; sonraki saylar iin ise dng almaz.

42 / 45

break anahtar kelimesinin alma mekanizmas Eer i ie dng yaps kullanlyorsa; break, kod akn kendisini evreleyen en yakn dng blounun dna transfer eder. Yani kontrol dardaki dng iin almaya devam eder.

continue Anahtar Kelimesi


continue anahtar kelimesi, kod akn, kendisini evreleyen en yakn dngnn bana transfer eder. Grld noktadan sonrasn o tur iin altrmaz . Yani dngy bir turluuna erteler. Dng bir sonraki iterasyondan normal almasna devam eder. break iin yazlan kodu imdi de continue iin test edelim: ... for (int i = 0; i < 10; i++) { if (i == 3) { continue; //aadaki kod, 3 deeri iin almaz; ancak //4den itibaren normal almasna dner. } Console.WriteLine(i); } Console.WriteLine("Dng sonu..."); ...

continue anahtar kelimesinin alma mekanizmas

43 / 45

Yukardaki ekilden grld gibi dng sadece 3 deeri iin almasna ara verdi. Daha sonra ise normal almasna devam etti. break ve continue deyimlerinin kullanm sadece for dngs ile snrl deildir; while, do-while ve diziler konusunda incelenecek olan foreach dnglerinde de kullanlabilir.

goto Anahtar Kelimesi


Bu anahtar kelime, kod akn etiketlenmi bir noktaya transfer eder. ... Console.Write("Bir say giriniz : "); int a = int.Parse(Console.ReadLine()); if (a % 2 == 0) { goto cift; } Console.WriteLine("Girilen say tek"); goto Son; cift: Console.WriteLine("Girilen say ift"); Son: ... Yukardaki kod, kullancdan alnan saynn tek mi ift mi olduu kontroln doru bir ekilde yapar. Fakat, gerek buradaki kullanm, gerekse dier kullanlabilecei yerler dnldnde, olduka kark bir dzen oluturduu grlebilir. Ayrca, kodu, anlalmas g hale getirir. Bu yzden goto kullanmn sadece u iki senaryoda tercih etmek gerekir: 1. switch-case kontrolnde, ak belli bir casee ya da defaulta ynlendirmek sz konusu olduunda. 2. ie gemi for dnglerinde break ya da continue ile sadece bir kademe dar klabilir. En da klmak istendiinde, yani kod aknn en dtaki dngnn sonuna ynlendirmesi istendiinde. Bu iki senaryo iin goto kullanm anlamldr. Bu durumlar dnda, goto kullanmak spagetti kod (Anlalmas zor, i ie gemi kodlar) oluturur. ... Console.WriteLine("Kahve boyutu: 1=Kk 2=Orta 3=Byk"); Console.Write("Ltfen seiminizi yapnz : "); string secim = Console.ReadLine(); int n = int.Parse(secim); int fiyat = 0; switch (n) { case 1: fiyat += 25; //Fiyat : 25 break; case 2: fiyat += 25; //Fiyat = 25 + 25 = 50
44 / 45

goto case 1; case 3: fiyat += 25; //Fiyat 25 + 25 + 25 = 75 goto case 2; default: Console.WriteLine("Yanl seim"); break; } if (fiyat != 0) { Console.WriteLine("Ltfen makineye {0} kuru atnz.", fiyat); } Console.WriteLine("Teekkrler..."); ...

Burada doru hesaplamay yapmak iin caseler arasnda goto kullanm ile paslamalar yer almaktadr. Eer kullanc kk boy kahve istiyorsa 1 girer. n deikeninin deerine gre uygulamay ynlendirecek olan switch kontrolnn ierisinde case 1:den sonraki kod alr. Balang deeri 0 olan fiyat deikeninin deeri 25 olarak deitiril ir. Ardndan break, kod akn switch blounun sonuna gtrr ve ekrana fiyatla ilgili yazlar yazlr. Eer kullanc orta boy kahve istiyorsa 2 girer. switch kontrolnn ierisinde case 2:den sonraki kod alr ve fiyat deikeninin deeri yine 25 yaplr. Sonrasnda kod ak break ile switch blou sonuna gnderilmez. goto ile case 1e transfer edilir. Bir st maddedeki sre tekrar eder. Dolaysyla fiyat 25 + 25 = 50 kuru olarak elde edilip kulancya bildirilir. Eer kullanc byk boy kahve istiyorsa 3 girer. Bu sefer nce case 3n ierisindeki kod alr. Fiyat deikeninin deeri 25 yaplr. Kod ak, case 2ye transfer edilir. Burada fiyat 50ye tamamlanr. Son olarak case 2 kod akn case 1e devreder. Nihai fiyat 75 kuru olarak hesaplanr. Bu kullanmn avantaj, kk seimin caseindeki olas bir fiyat artnda, bu artn dier 2 boya otomatik olarak yansmasdr.

Bu ders notu, Ak Akademi projesi erevesinde TCM tarafndan Microsoft Trkiye iin hazrlanmtr. Tm haklar Microsoft Trkiye ye aittir. zinsiz oaltlamaz, para ile satlamaz.

45 / 45