Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 14.10.2002
Okunma Sayısı : 48306
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 26.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 26.4.2024
Turhal Temizer
Conda install environment.yml Package 26.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 26.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C# Kontrol yapıları ve seçme işlemleri.
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu derste C# dilindeki ifadeler,tipler ve değişkenler anlatılacaktır.  C# dilinde kullanılan seçme veya kontrol ifadelerini öğreneceksiniz.

Dersimizin hedefleri :

  • "İf" (eğer) ifadesinin kullanımı "
  • "switch" (çoktan-seç) ifadesini kullanımı "
  • "break" ifadesinin "switch" ifadesi içerisinde nasıl kullanıldığı
  • " "goto" ifadesinin yerinde ve etkili kullanılması
Önceki derslerimizde, her program belirli ifadeleri sırasıyla çalıştırıp bitiyordu. Program içinde inputlara veya program içinde yapılan hesaplara göre değişik işlemler yapılmıyordu. Bu derste öğrendiklerimiz de programlarımızın belirli şartlara göre değişik şekillerde çalışmasını sağlayacaktır. İlk seçme ifademiz "if". "if" kontrol yapısının 3 temel formu vardır.


Kod 1 : IF yapısının değişik formlarda kullanımı : IfSelection.cs

 using System;

class IfSelect

{
   public static void Main()
    {
       string myInput;
       int myInt;

       Console.Write("Please enter a number: ");
       myInput = Console.ReadLine();
       myInt = Int32.Parse(myInput);

        // Single Decision and Action with brackets
        if (myInt > 0)
           {
               Console.WriteLine("Your number {0} is greater than zero.", myInt);
           }

        // Single Decision and Action without brackets
        if (myInt < 0)
          Console.WriteLine("Your number {0} is less than zero.", myInt);

       // Either/Or Decision
        if (myInt != 0)
           {
              Console.WriteLine("Your number {0} is not equal to zero.", myInt);
           }
       else
          {
              Console.WriteLine("Your number {0} is equal to zero.", myInt);
           }

         // Multiple Case Decision
       if (myInt < 0 || myInt == 0)
            {
                Console.WriteLine("Your number {0} is less than or equal to zero.", myInt);
            }

       else if (myInt > 0 && myInt < = 10)
          {
              Console.WriteLine("Your number {0} is between 1 and 10.", myInt);
          }

      else if (myInt > 10 && myInt < = 20)
           {
               Console.WriteLine("Your number {0} is between 11 and 20.", myInt);
           }

     else if (myInt > 20 && myInt < = 30)
           {
               Console.WriteLine("Your number {0} is between 21 and 30.", myInt);
           }

    else
          {
              Console.WriteLine("Your number {0} is greater than 30.", myInt);
          }

    }

}

Kod 1'de tüm program boyunca tek bir değişkeni kullanıyoruz, "myInt". Kullanıcıdan etkileşimli olarak veri almak için önce "Lütfen bir sayı giriniz :" iletisini konsula yazdırıyoruz. "Console.Readline()" ifadesi ile program kullanıcıdan bir değer girmesini bekler. Bir rakam yazılınca ve enter tuşuna basılınca program yazılan değeri önce string tipinde olan myInput değişkenine atanıyor. String olarak alınan veriyi program tamsayı tipinde bir değişken olarak kullanmak istediği için "myInput" tamsayı tipine dönüştürülmeli. Bu dönüşüm için "Int32.Parse(myInput)" komutunu kullandık ( tip dönüşümleri ve Int32 gibi veri tipleri ileriki derslerde incelenecektir.) Daha sonra, dönüşümün sonucu "myInt" isimli değişkene aktarılıyor.

Artık istediğimiz tipte bir veriye sahibiz ve bunu "if" ifadesi içinde işleyebiliriz. "if" ifade bloğunun ilk formu şu şekildedir : if(mantıksal ifade) { "mantıksal ifade"nin doğru olası durumunda yapılması gerekenler }. Öncelikle "if" anahtar kelimesi ile başlamalıyız. Sonrası parantezler arasındaki mantıksal ifade. Bu mantıksal ifadenin doğru veya yanlış olması bulunur. Biz programımızda kullanıcıdan aldığımız sayının sıfırdan büyük olup olmadığını kontrol ediyoruz">0" ile. Eğer sayı sıfırdan büyükse, mantıksal ifadenin sonucu doğrudur ve { } parantezleri arasındaki kod bloğu çalıştırılır. Eğer mantıksal ifade yanlış bir sonuç üretirse { } arasındaki kon bloğu çalıştırılmadan bloktan sonraki ifadelere geçer.

İkinci "if" ifadesi aslında birincisi ile aynıdır, ikincisi sadece blok içinde değildir. Eğer boolean ifade doğru sonuç üretirse, bu ifadeden hemen sonraki çalışır. Boolena ifadenin yanlış olması durumunda ise bu ifadeden hemen sonraki ifade çalıştırılmadan bir sonraki ifadeye geçilir ve o ifade çalıştırılır. Bu şekildeki "if" yapısını, boolean ifadenin doğru olmasında sadece bir tane ifade çalıştırılacaksa yeterlidir. Buna karşın "if" ifadesinin sonucuna göre birden fazla ifade işleme konulacaksa blok olarak { } parentezleri arasında yazılır. Benim kişisel önerim "if" den sonra çalıştırılacak ifade sayısına bakmadan, bu ifade(leri) her durumda blok olarak yazmaktır. İleride yeni programın okunmasında ve yeni işlevler eklenmesinde size hatalardan kaçmanıza yardım eder.

Birçok zaman size eğer/değilse türünde çalışacak bir "if" yapısı gerekebilir. Üçüncü tip "if" ifadesi eğer doğru değer üretirse şunları yap, doğru değilse "else" anahtar sözcüğünden sonraki kodları çalıştır türünde bir yapısı olarak yazılmalıdır.

Birden fazla mantıksal ifadeyi işlememiz gerektiğinde ise, if/else if/else tipinde bir "if" yapısını kullanmak gerekir. Dördüncü örneğimizde bu tip bir if yapısını görebilirsiniz. Bu tip yapı yine "if" ve boolean ifadesi ile başlar. Boolean ifade doğru ise hemen alttaki bloktaki kodlar çalıştırılır. Bunun yanında, boolean ifadenin değişik durumlarına göre "else if" iç yapısı kullanılır. "else if" de aynı if gibi bir boolean ifadeyi alır ve sonucu doğru hemen sonraki bloktaki kodları çalıştırır.

Boolean ifadenin alabileceği tüm ihtimallere göre bu şekilde "else if" ifadeleri sıralanabilir fakat en sonda bir "else" ile yukarıdaki tüm şartların yanlış olması durumunda çalıştırılacak kodları belirleriz. Bu dördüncü "if" yapısında da yine sadece bir tane if/else blok yapısı çalıştırılır.

"switch" yapısı da "if/else if/else" yapısına çok benzer.

Kod 2 : Switch ifadeleri : SwitchSelection.cs

using System;

class SwitchSelect
{
    public static void Main()
      {
          tring myInput;
          int myInt;
          
      begin:        

         Console.Write("Please enter a number between 1 and 3: ");
           myInput = Console.ReadLine();
         myInt = Int32.Parse(myInput);

           // switch with integer type
          switch (myInt)
          {
             case 1:
                   Console.WriteLine("Your number is {0}.", myInt);
                   break;
             case 2:
                   Console.WriteLine("Your number is {0}.", myInt);
                   break;
             case 3:
                   Console.WriteLine("Your number is {0}.", myInt);
                   break;
            default:
                   Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
            break;
          }

       decide:


        Console.Write("Type \"continue\" to go on or \"quit\" to stop: ");
        myInput = Console.ReadLine();

        // switch with string type
       switch (myInput)
       {
          case "continue":
                   goto begin;
          case "quit": Console.WriteLine("Bye."); break;
        
         default:
                 Console.WriteLine("Your input {0} is incorrect.", myInput);
                 goto decide;
       }

   }

}

Kod 2'de birkaç tane "switch" yapısı örneğimiz var. "switch" yapısı yine "switch" anahtar kelimesi ile başlar ve sınanacak değişkeni parantez içinde belirtiriz. Switch yapısının çalışması için şu veri tiplerinden bir tanesini kullanmak gerekir : sbyte,short,ushort,int, long, ulong, char, string, or enum ( enum daha sonraki bir derste işlenecektir.)

Birinci örneğimizdeki "switch" yapısı int tipinde bir değer almaktadır. Tamsayı değişkenimizin alabileceği değerlere göre değişik işlemler yapabiliriz. "myInt" değişkenimizin herbir ihtimalini değerlendirirken "case" anahtar kelimesini, muhtemel değerini ve iki nokta üst üste ":" yapısında bir sınama yapıyoruz. Örneğimizde, "case 1 :", "case 2: ", ve "case 3:" şeklinde yazdık. Sınama sonuçlarından uygun olanın hemen altında kod bloku yer alır. Bu kod blokundan sonra ise "break" veya "goto" ifadelerini kullanmamız gerekir.

İsterseniz "default" seçeneğini de "switch" ifadesi ile birlikte kullanabilirsiniz. "default" ifadesinin altındaki kod bloku, "defult"'tan önceki "case"'lerin hiçbiri sınamayı geçemediği zaman çalışır ve tüm "case"'lerden sonra gelir.

Her "case" 'den sonra "break" ifadesinin zorunlu olduğunu tekrar hatırlatalım. "break" ifadesi "switch" yapısından dışarı çıkmayı ve alttaki kodlara geçmemizi sağlar. "default" anahtar kelimesinin kod blokundan hemen sonra "break" koymak programcının isteğine kalmıştır. Switch ifadesinde iki tane dikkat edilmesi gereken husus vardır.

Birincisi, farklı durumları (case'leri) ard arda aralarına hiç kod yazmadan sıralamaktır. Aslında burada yapılan iş, değişkenimizin birden fazla değeri için tek bir "case" kod bloku oluşturmaktır. Bir case ve hemen arkasına başka bir case yazdığımızda program otomatik olarak bir sonraki "case" 'e geçer. Aşağıdaki kodu incelediğimizde, "myInt" değişkeni 1,2, veya 3 değerlerinden herhangi birini alırsa kendi değerini ekrana yazdırıyoruz. Diğer durumda ise değişkenimizin değerinin 1 ve 3 arasında olmadığını ekrana yazdırıyoruz.

switch (myInt)
{
    case 1:
    case 2:
    case 3:
           Console.WriteLine("Your number is {0}.", myInt);
           break;
   default:
           Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
           break;
}

Kod 2'de yer alan ikinci "switch" yapısı ise "goto" ifadesinin nasıl kullanılacağını göstermek amacıyla yazılmıştır. "goto" , programın belirli bir kısmında yer alan, özel etiket (label) ile belirtilmiş kısmına atlamasına ve oradan itibaren çalışmaya devam etmesine yarar. Programımızda kullanıcı "continue" yazarsa "begin" olarak belirlenmiş etikete gider  ve oradan çalışmaya devam eder. Aslında bu şekilde "goto" kullanmak etkili bir döngü olur. Eğer kullanıcı "end" yazarsa program "bye" yazar ve döngüden programımız çıkar.

Açıkça görülüyor  ki "goto" kelimesini kullanmak bize programda belirli şartlar altında güç kazandırır. Yine de "goto" ifadesini programda sık bir şekilde kullanmak "sipagetti" kod olarak adlandırılan programlamaya yol açabilir ki, bu tür kodlama programı hem okurken hem de hataları ayıklarken büyük sorunlara sebep olabilir.

* Bu makale The C# Station Tutorial adresinde Joe Mayo tarafından yazılmıştır.

Makale:
C# Kontrol yapıları ve seçme işlemleri. C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor