Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


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

Yazar: Sem GÖKSU

Kategori: C#.NET & VB.NET

Eklenme Tarihi: 14.05.2007 09:19:11

Merhaba arkadaşlar bu makalemizde tüm programlama dillerinde kullanılan Karar yapilari ve döngülerin C# içinde nasıl kullanılacağını ögrenecegiz. Makalemize ilk olarak Karar yapilarindan basliyoruz.

C# da Karar Yapilari ve Döngüler 

Karar Yapilari Yapilari

IF

Program içinde karar vermek için kullanilan en basit yapidir. If..Else deyimi bir Boolean ifadeyi değerlendirerek program denetimi belirtilen deyim gruplarina geçirir. Bir örnekle açiklamak gerekirse;

Simdi kafanizda canlandirin. Tatil yapmak istiyorsunuz. Brosürlere baktiniz. Elinizde 4 seçenek var. Bodrum, Fethiye, Ayvalik, Uludag ve cebinizde 40 lira var. Fiyatlara baktiniz Ayvalik ve Uludag seçeneklerinin fiyatlari 90 lira. Bodrum 30, Fethiye 35. Kafadan bi kere 90 liklari elediniz. Eee bütün parayi oraya verirsek ne yicez ne içicez deyip acaba tüm masraflar dahilmi onada baktiniz. Fethiyede hersey dahil. Güzel Bodruma göre 5 lira fazla olmasina ragmen daha kârli. Evet Kararinizi verdiniz Fethiye ye gidiceksiniz.

işte karar yapilari böyle kurulur.

Tabi ki burada ki yapi çok kompleks bir yapidir. Yüzeyseldir. Programlamada her türlü olasilik bu yapilar içinde belirtilmek zorundadir. Meselâ tatilden dönünce ise gidicek parayi nerden bulacaginiz gibi. Burasi çok önemli bir noktadir gerçek hayatta bu hayati bir mesele olmamasina ragmen programlamada bu yapi çöker.

Operatörler 

C# içinde operatörleri asagidaki  gibi kullanacagiz. 

<                      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.

Yapisi:

if (Islem)

{

         Eger karsilastirma sonucu true ise execute edilir

Örnek 2:

if (saat = = 24) {

saat = 0;

gun++

}

Else

C# ayni zamanda daha complex bir yapi saglamak için else de kullanir. 

if (Islem)

{

         Eger karsilastirma sonucu true ise execute edilir

}

else if (Islem2)

{

         Islem karsilastirmasinin sonucu false ve

         Islem2 karsilastirmasinin sonucu true ise

         execute edilir

}

else

{

         Islem karsilastirmasinin sonucu false ve

         Islem2 karsilastirmasinin sonucu false ise

         execute edilir

         Asagidaki örnek kod ile true yada false durumlarinda programin akis degisimi bir sekli de gösterilmistir. 

 

using System;

public class IfExample

{

         public static int Main()

         {

         bool Islem =false;

         if (Islem)

         {

         Console.WriteLine("Islem 'in değeri true");

         }

         else

         {

         Console.WriteLine("Islem ‘in değeri false");

         }

         Console.ReadLine();

         return 0;

         }

}         

         Bu örnekte ise if'in farklı bir kullanimini görülebilir. 

if (a)

{

         int j=FunctionA();

}

else

{

         int j=FunctionB();

 

Asagidaki kod yukaridaki ile ayni işlemi yapar.

 

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

 

switch…case Deyimi 

 

Switch deyimi de if deyimi gibi programin kosullara gore yönlenmesini saglar. Özellikle bir degiskenin değerine gore degisik işlemler yapilacaksa o zaman Switch..Case yapisi uygun olur. Örnegin ücret değerinin belli kademelerde degisik oranlarda vergilenmesi gibi.

 

Yapisi:

 

Switch (degisken) {

 

Case kosul1:

 

            Islem1

 

Case kosul2:

 

            Islem2

 

Default:

 

            Islem3

 

 

 

}

 

Default etiketi, değerin herhangi bir case kosuluna uymadigi 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("Sayi 5'ten büyük");

         break;

         }

         }

         Console.ReadLine();

         return 0;

         }

}

         Yukaridaki kod incelendiginde açik olarak görüldügü gibi i degiskenin alabilecegi her değer göz önünde bulundurularak kosula göre gereken işlem yapilmistir. default tanimlamadan ‘yukarida belirtilen değerlerden herhangi birisine sahip degilse' anlami çikarilmalidir.  

         switch kullanirken dikkat edilmesi gereken case ile değer bildirildikten sonra yazilan kodun en sonuna yani diger kosula geçmeden once break kullanarak compiler'a kosul taniminin bittigini söylemektir. Aksi takdirde “Control cannot fall through from one case label (‘labelname:') to another” seklinde bir compiler hatasi ile karsilasiriz. 

 

Döngüler

 

Loops 

         Programlamanin diger önemli elemanlarindan biri de döngü kullanimidir. C# ile döngü kullanimi da diger programlama dillerinde oldugu gibi mantik olarak aynidir.  

 

while Döngüsü 

 

         Belirtilen kosul gerçeklesene kadar bir döngüye ihtiyacimiz oldugunda kullanacagimiz döngülerdir. Tek dikkat etmemiz gereken tanimlanan kosul gerçeklesmisse döngünün execute edilmesidir. Bunun nedeni kosulun döngü baslangicinda bildirilmesidir. 

using System;

public class whileExample

{

         public static int Main()

         {

         int i=0;

         i degiskenin değeri 7'den küçükse

         döngüye basla

         while (i<7)

         {

         i++;

         Console.WriteLine(i);

         }

         i degiskenin değeri 8'den büyükse

         döngüye basla değer 8'den büyük olmadigi

         için asagidaki 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 karsilastirmanin döngünün sonunda yapilmasidir. Bu durumda program akisi geregi döngü durum ne olursa olsun asagida 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 arasi değer girilene kadar ekrandan değer okuyacak program parçasini yazin.

 

Çözüm:

 

do {

 

Console.Write ("değeri girin");

 

değer = int.Parse (console.ReadLine());

 

} while (değer < 0 ½½değer >= 10);

 

For Deyimi

 

Bir grup deyimi belli sayida çalistirarak (tekrar ederek) bir döngü olusturur. Örnegin birden ona kadar (on kere) su işlemi yap seklinde. Özellikle bir döngü denetim degiskenin kullanildigi (sayaç) bu döngü yapisi iç içe döngülerin de yapilmasini saglar.

Yapisi:

 

for (ilk değer ; kosul ;  artirim )

 

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 kullaniminda önemli bir rol oynar. Kullanimlardan genellikle döngü degiskeni ile bir dizinin elemani ya da kayit sayisi gibi değerler 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 çikis yapmaya gereksinim duyulur. C#'da goto, break ve continue deyimleri atlama deyimleri olarak bilinir.

 

Goto deyimi program içinde belirtilen bir etikete atlamayi saglar. Ancak yapisal programlama açisinda kullanimi önerilmez.

 

Örnek:

 

..

 

atla:

 

..

 

goto atla;

 

 

Break ve continue deyimi

 

En yakin bloktan çikisi 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üşmek üzere. Herkese iyi çalismalar dilerim

Sem Göksu

Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2013 © Tüm Hakları Saklıdır.