Sem Göksu
Sem Göksu
Yazılım · Yolculuk · Fenerbahçe
C#

C# da Karar Yapıları ve Döngüler

C# da Karar Yapıları ve Döngüler

26 Kasım 2006 5 dk okuma 293 1
C# da Karar Yapıları ve Döngüler

Karar Yapıları

IF

Program içinde karar vermek için kullanılan en basit yapıdır. If..Else deyimi bir Boolean ifadeyi degerlendirerek program denetimi belirtilen deyim gruplarına geçirir. Bir örnekle açıklamak gerekirse;

Simdi kafanızda canlandırın. Tatil yapmak istiyorsunuz. Brosürlere baktınız. Elinizde 4 seçenek var. Bodrum, Fethiye, Ayvalık, Uludag ve cebinizde 40 lira var. Fiyatlara baktınız Ayvalık ve Uludag seçeneklerinin fiyatları 90 lira. Bodrum 30, Fethiye 35. Kafadan bi kere 90 lıkları elediniz. Eee bütün parayı oraya verirsek ne yicez ne içicez deyip acaba tüm masraflar dahilmi onada baktınız. Fethiyede hersey dahil. Güzel Bodruma göre 5 lira fazla olmasına ragmen daha kârlı. Evet Kararınızı verdiniz Fethiye ye gidiceksiniz.

Iste karar yapıları böyle kurulur.

 

Tabi ki burada ki yapı çok kompleks bir yapıdır. Yüzeyseldir. Programlamada her türlü olasılık bu yapılar içinde belirtilmek zorundadır. Meselâ tatilden dönünce ise gidicek parayı nerden bulacagınız gibi. Burası çok önemli bir noktadır gerçek hayatta bu hayati bir mesele olmamasına ragmen programlamada bu yapı çöker.

 

Operatörler  

C# içinde operatörleri asagıdaki  gibi kullanacagız. 

 

<                      Küçüktür

<=                    Küçük esittir

>                      Büyüktür

>=                    Büyük esittir

!=                     Esit degildir

= =                   Esittir

 

C#'taki if deyimi C ve C++ a benzer.  Eger parantez içerisindeki kosul dogru ise ilgili blokdaki program kodu execute edilir.

Yapısı:

 

if (Islem)

{

         //Eger karsılastırma sonucu true ise execute edilir

        

Örnek 2:

 

if (saat = = 24) {

 

saat = 0;

 

gun++

 

}

Else 

C# aynı zamanda daha complex bir yapı saglamak için else de kullanır. 

 

if (Islem)

{

         //Eger karsılastırma sonucu true ise execute edilir

}

else if (Islem2)

{

         //Islem karsılastırmasının sonucu false ve

         // Islem2 karsılastırmasının sonucu true ise

         //execute edilir

}

else

{

         // Islem karsılastırmasının sonucu false ve

         // Islem2 karsılastırmasının sonucu false ise

         //execute edilir

         Asagıdaki örnek kod ile true yada false durumlarında programın akıs degisimi bir sekli de gösterilmistir. 

 

using System;

public class IfExample

{

         public static int Main()

         {

         bool Islem =false;

         if (Islem)

         {

         Console.WriteLine("Islem ’in degeri true");

         }

         else

         {

         Console.WriteLine("Islem 'in degeri false");

         }

         Console.ReadLine();

         return 0;

         }

}         

         Bu örnekte ise if'in farklı bir kullanımını görülebilir. 

if (a)

{

         int j=FunctionA();

}

else

{

         int j=FunctionB();

 

//Asagıdaki kod yukarıdaki ile aynı islemi yapar.

 

int j=ExpressionA?FunctionA():FunctionB();  

switch.case Deyimi  

Switch deyimi de if deyimi gibi programın kosullara gore yönlenmesini saglar. Özellikle bir degiskenin degerine gore degisik islemler yapılacaksa o zaman Switch..Case yapısı uygun olur. Örnegin ücret degerinin belli kademelerde degisik oranlarda vergilenmesi gibi.

 Yapısı:

 Switch (degisken) {

 Case kosul1:

             Islem1

 Case kosul2:

             Islem2

 Default:

             Islem3

}

Default etiketi, degerin herhangi bir case kosuluna uymadıgı durumlarda gidilecek deyimi belirtir.

 

Örnek:

using System;

public class switchExample

{

         public static int Main()

         {

         for (int i=1;i<10;i++)

         {

         switch (i)

         {

         case 1:

         Console.WriteLine("Bir");

         break;

         case 2:

         Console.WriteLine("Iki");

         break;

         case 3:

         Console.WriteLine("Üç");

         break;

         case 4:

         Console.WriteLine("Dört");

         break;

         case 5:

         Console.WriteLine("Bes");

         break;

         default:

          Console.WriteLine("Sayı 5’ten büyük");

         break;

         }

         }

         Console.ReadLine();

         return 0;

         }

}

         Yukarıdaki kod incelendiginde açık olarak görüldügü gibi i degiskenin alabilecegi her deger göz önünde bulundurularak kosula göre gereken islem yapılmıstır. default tanımlamadan 'yukarıda belirtilen degerlerden herhangi birisine sahip degilse' anlamı çıkarılmalıdır.  

         switch kullanırken dikkat edilmesi gereken case ile deger bildirildikten sonra yazılan kodun en sonuna yani diger kosula geçmeden once break kullanarak compiler'a kosul tanımının bittigini söylemektir. Aksi takdirde "Control cannot fall through from one case label ('labelname:') to another" seklinde bir compiler hatası ile karsılasırız. 

 

Döngüler

 

Loops 

         Programlamanın diger önemli elemanlarından biri de döngü kullanımıdır. C# ile döngü kullanımı da diger programlama dillerinde oldugu gibi mantık olarak aynıdır.  

 while Döngüsü 

          Belirtilen kosul gerçeklesene kadar bir döngüye ihtiyacımız oldugunda kullanacagımız döngülerdir. Tek dikkat etmemiz gereken tanımlanan kosul gerçeklesmisse döngünün execute edilmesidir. Bunun nedeni kosulun döngü baslangıcında bildirilmesidir. 

using System;

public class whileExample

{

         public static int Main()

         {

         int i=0;

         //i degiskenin degeri 7’den küçükse

         //döngüye basla

         while (i<7)

         {

         i++;

         Console.WriteLine(i);

         }

         //i degiskenin degeri 8’den büyükse

         //döngüye basla deger 8’den büyük olmadıgı

         //için asagıdaki döngünün burada hiç bir islevi yoktur.

         while (i>8)

         {

         i++;

         Console.WriteLine(i);

         }

         Console.ReadLine();

         return 0;

         }

do.while Döngüsü 

While döngüsünden tek fark olarak karsılastırmanın döngünün sonunda yapılmasıdır. Bu durumda program akısı geregi döngü durum ne olursa olsun asagıda belirtilen kosul saglanana kadar yada break keyword'ü ile döngünün kesildigi söylenene kadar execute edilir. 

using System;

public class whileExample

{

         public static int Main()

         {

         int i=0;

         do

         {

         i++;

         Console.WriteLine(i);

         if (i==5)

         {

         break;

         }

         }while (i<8);

         Console.ReadLine();

         return 0;

         }

}  

Uygulama:

1 ile 10 arası deger girilene kadar ekrandan deger okuyacak program parçasını yazın.

Çözüm:

do { 

Console.Write ("degeri girin");

deger = int.Parse (console.ReadLine());

} while (deger < 0 ½½deger >= 10);

For Deyimi

Bir grup deyimi belli sayıda çalıstırarak (tekrar ederek) bir döngü olusturur. Örnegin birden ona kadar (on kere) su islemi yap seklinde. Özellikle bir döngü denetim degiskenin kullanıldıgı (sayaç) bu döngü yapısı iç içe döngülerin de yapılmasını saglar.

Yapısı: 

for (ilk deger ; kosul ;  artırım )

 

iç deyimler

 

Örnek:

 

for (int i = 0; i < 10; i ++) {

 

Console.WriteLine(i);        }

 

For...Next döngüsünde döngü degiskeni, döngünün kullanımında önemli bir rol oynar. Kullanımlardan genellikle döngü degiskeni ile bir dizinin elemanı ya da kayıt sayısı gibi degerler temsil edilir:

 

for (int i = 0; i < 7; i ++) {

 

Console.WriteLine(gunler[i]);        }

Jump Deyimleri

Döngüler ve karar deyimleri görevlerini yerine getirirken, bazen çıkıs yapmaya gereksinim duyulur. C#’da goto, break ve continue deyimleri atlama deyimleri olarak bilinir.

Goto deyimi program içinde belirtilen bir etikete atlamayı saglar. Ancak yapısal programlama açısında kullanımı önerilmez. 

Örnek: 

..

atla:

..

goto atla;

Break ve continue deyimi

En yakın bloktan çıkısı saglar. Continue deyimi ise yeni bir döngüye baslar.

int sayac = 1;

while (true) {

            Console.WriteLine(sayac);

 

            sayac++;

 

            if (sayac <= 10)

 

                        continue;

 

            else

 

                        break;

}

 

Bir sonraki makalede görüsmek üzere. Herkese iyi çalısmalar dilerim

Etiketler: #C# #.NET Framework
Paylaş:

Yorumlar (1)

A
alper ÇİÇEK 28 Mar 2013 17:44

hiç beğenmedim programlar yanlış

Yorum bırak

* Yorumlar moderasyon sonrası yayınlanır. E-posta gizli tutulur.