9 Ocak 2014 Perşembe

Kontrol Deyimleri

                                                 KONTROL DEYİMLERİ
Program içerisinde bir işin olumlu veya olumsuz sonucuna göre yapılması gereken işlemler olabilir. Bu aşamada devreye kontrol deyimleri girer.
Kontrol deyimleri iki çeşittir:
If Else Deyimi
Switch-Case Deyimi

IF – ELSE DEYİMİ

If deyimi bir programın akışını kontrol etmek için kullanılır. If-Else deyiminde bir koşul belirtilir ve koşulun sonucu true ya da false değer alır.

Kullanımı

if (koşul)
{
    //koşul doğruysa yapılacaklar
}
else
{
    //koşul yanlışsa yapılacaklar
}

İf- Else Deyimi Akış Diyagramı


Bu koşul ifadesi true (Doğru) yada false (Yanlış) olmak üzere bir değer üretmektedir.
Şayet koşulumuz doğruysa (true) programımızın akışı mavi renkle gösterilen doğruysa kısmından devam edecek ve kırmızıyla gösterilen yanlışsa kısmına uğramayacaktır. Eğer koşulumuz yanlışsa (false) bu sefer programımız yanlışsa kısmından kırmızıyla belirtilen yoldan devam edecektir.





Not 1:
Eğer programımızın akışında sadece koşulun doğru olmasına bağlı işlem yapılması isteniyor, koşulun yanlış olduğu durumlarda işlem yapılması istenmiyorsa Else bloğu program içerisinde hiç kullanılmaz.
Kullanımı:

if(koşul)
{
Koşul doğruysa yapılacak işlemler;
}

Not 2:
Eğer If veya Else’den sonra sadece bir komut yazılacak ise küme parantezleri ({}) kullanılmayabilir.

Kullanımı:

if(koşul)
//Koşul doğruysa yapılacak işlemler;
else
//Koşul yanlışsa yapılacak işlemler;

Örnek:

if (not > 45)
    Console.Write("Dersi geçtiniz.");
else
    Console.Write("Dersten kaldınız.");


Not 3: 
Bazı programlama dilleri büyük/küçük harf duyarlı bir dil olduğu için “Ersoy”, “ersoy” veya “ERSOY” cevaplarından yalnızca “Ersoy” cevabını kabul edecektir.


If koşul deyimlerde zaman zaman birden fazla koşula bağlı bir takım işlemler yapmamız gerekebilir.

VE ( && ) Bağlacı

Kullanımı:
if((koşul1) && (koşul2))
{
//koşul1 ve koşul2 doğruysa yapılacak işlemler;
}
else
{
//koşullardan en az birisi veya her ikisi de yanlış ise yapılacak işlemler;
}
VEYA ( || ) Bağlacı

Kullanımı:

if((koşul1) || (koşul2))
{
\\koşul1 veya koşul2’den en az birisi veya her ikisi de doğruysa yapılacak işlemler;
}
else
{
//koşullardan her ikisi de yanlış ise yapılacak işlemler;
}

Örnek:

Klavyeden girilen sayının hem 3’e hem de 5’e kalansız bölünüp bölünemediğini ekrana yazan programı yazınız.

Console.Write("Bir sayı giriniz:");

int sayi = Convert.ToInt32(Console.ReadLine());

if((sayi % 3 == 0) && (sayi % 5 ==0))

Console.WriteLine("{0} sayısı hem 3'e hem de 5'e kalansız bölünebilir",sayi);

else

Console.WriteLine("{0} sayısı hem 3'e hem de 5'e kalansız bölünemez", sayi);

İÇ-İÇE IF İFADESİ

Birden fazla koşula ihtiyaç duyulan durumlarda iç-içe If ifadeleri kullanılır.

Kullanımı:

if(koşul1)
{
//koşul1 doğruysa yapılacak işlemler;
}
else if(koşul2)
{
//koşul1 yanlışsa ve koşul2 doğruysa yapılacak işlemler;
}
else
{
//her iki koşul da yanlışsa yapılacak işlemler;
}

İç-içe If ifadelerinin bir başka kullanımı da şu şekildedir.

Kullanımı:

if(koşul1)
{
       if(koşul2)
            {
                   // koşul2 doğruysa yapılacak işlemler;
             }
        else
             {
                   // koşul2 yanlışsa yapılacak işlemler;
             }
}
else
{
//koşul1 yanlışsa yapılacak işlemler;

}

İç-içe If Deyiminin Akış Diyagramı


















Switch-Case Deyimi

             Switch-Case deyimi de If-Else deyimleri gibi karar kontrol mekanizmalarında kullanılmaktadır. Switch-Case deyimi genellikle karmaşık if-else bloklarının yerine, daha okunabilir oldukları için tercih edilmektedir. Switch-Case ile yapabileceğimiz karşılaştırmaları if-else ile de yapabiliriz.

            Switch-Case yapısı şu şekilde çalışır; bir deyimin değeri, sabitlerden oluşan bir listede peş peşe test edilir. Deyimin değeri sabitlerden birisiyle eşleşince, bu eşleşmeyle ilgili işlemler gerçekleştirilir.

Kullanımı:

switch(ifade)
{
case sabit1:
//Yapılacak işlemler;
break;
case sabit2:
//Yapılacak işlemler;
break;
default:
//Yapılacak işlemler;
break;
}

-Önce switch parantezleri içerisindeki ifade hesaplanır.

-Programın akışı, hesaplanan ifade ile aynı case sabitinin bulunduğu satıra gelir.

-Eğer hesaplanan ifade, mevcut case sabitlerinden herhangi birisi ile

eşleşmiyorsa default default anahtar sözcüğünün bulunduğu yere gelir ve program
buradan devam eder.

Örnek: 

Ürün ismi verildiğinde fiyatını gösteren uygulama.

Console.Write("Almak istediğiniz ürünün adı: ");
string urunAdi = Console.ReadLine();
 
switch (urunAdi)
{
    case "bardak":
        Console.WriteLine("Bardak: 4 TL");
        break;
 
    case "şemsiye":
        Console.WriteLine("Şemsiye: 12 TL");
        break;
 
    case "kalem":
        Console.WriteLine("Kalem: 2 TL");
        break;
 
    case "silgi":
        Console.WriteLine("Bardak: 10 TL");
        break;
 
    default:
        Console.Write("Böyle bir ürün bulunamadı!");
        break;
}

Switch-Case Yapısı İle İlgili Önemli Kurallar:

- Case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadırlar. Bu
ifadeler içerisinde değişken bulunamaz.
- Case ifadeleri herhangi bir tam sayı sabiti, karakter veya string sabiti olabilir.
- Default durumunu istediğimiz yere yazabiliriz. Aynı şekilde case ifadelerini de
istediğimiz sırada yazabiliriz.

                                          DÖNGÜ DEYİMLERİ 

Döngüler bir program içerisinde belirli işlerin defalarca yapılmasını sağlayan komut
bloklarıdır. Sonsuz döngüler yapılabildiği gibi belirli kriterler sağlanana kadar devam eden
döngüler de yapılabilir.

For Döngüsü

Belirlenen başlangıç değerinden itibaren belirtilen koşul sağlanana kadar içine yazıldığı kod parçasını ardı ardına çalıştıran bir döngü çeşididir.

Kullanımı:

for(başlangıç;koşul;artım)
{
//yapılacak işler;
}

Başlangıç, döngü kontrol değişkeni olarak da ifade edilebilir. Döngü içerisinde bir
sayaç görevini görür.

Koşul, döngünün ne kadar çalışacağını denetleyen mekanizmadır. Koşul
sağlanıyorken döngü çalışmaya devam eder. Koşul sağlanmadığında ise döngü durur. Koşulda genellikle başlangıç değerinin durumu denetlenir.

Artım, başlangıç değerinin döngünün her adımda artma ya da azaltma miktarını
belirler. Eğer başlangıç değeri hiç değişmez ise sonsuz döngü oluşur.

Akış diyagramlarıyla for döngüsünün gösterimi de şu şekildedir.
















Örnek:

1’den 10’a kadar olan sayıları ekrana yazdıran uygulama.

byte i;
for(i=1;i<=10;i++)
{
Console.WriteLine(i);
}

Çıktısı








While Döngüsü 

While döngüsü bir koşul sağlanıyorken dönmeye devam eder. Koşul yanlış ( false ) sonucunu verdiği zaman ise sonlandırılır.

Kullanımı:

while(koşul)
{
//yapılacak işler;
}
Örnek:

0’dan 20’ye kadar olan çift sayıları ekrana yazdırın uygulama.                                                    
int i=0;
while (i <= 20)
{
Console.WriteLine(i);
i = i + 2; 
}

Çıktısı








Do…While Döngüsü 

For ve while döngülerinde döngü bloklarının koşul sağlanmadığı takdirde hiç çalıştırılmama ihtimali vardır. Ancak döngünün en az bir kere çalıştırılması istenilen durumlarda do-while döngüleri kullanılırlar. 

Kullanımı:

Do
{
//yapılacak işler;
}
while(koşul); 

Örnek:

1’den 20’ye kadar olan tek sayıları ekrana yazdıran uygulama.

int i=1;
do{
Console.WriteLine(i);
i = i + 2;
} while (i < 20); 

Çıktısı

 





Foreach Döngüsü 

Foreach, dizi (Array) ve koleksiyon ( collection ) tabanlı nesnelerin elemanları üzerinden ilerleyen bir döngüdür.

Kullanımı:

foreach(tip değişken in koleksiyon)
{
//yapılacak işler;

Tip: buradaki tip koleksiyonun veri tipi ile aynı veya uyumlu olmak zorundadır.

Değişken: foreach döngüsü içerisinde koleksiyonda bulunan sıradaki elemanı temsil eder.

Koleksiyon: ArrayList ya da dizi gibi aynı tip verileri barındıran koleksiyon. 

DİZİLER

Değişkenleri öğrenirken gördük ki her değişkene sadece bir değer atayabiliriz. Bazı durumlarda aynı tipteki değişkenleri bir arada tutma ihtiyacı duyabiliriz. C# bize aynı tipteki değişkenleri tek bir adla saklayabileceğimiz dizileri (Array) sunmaktadır.

Dizi (array), ortak isimle anılan aynı tipteki veriler topluluğudur. 

Dizi Oluşturma

Bir dizi, boş parantezler ve bir değişken ismi tarafından takip edilen dizi içindeki elemanların tipini tanımlayarak bildirilir;

Tanımlanması:

1.Yol:

tip[] dizi-ismi=new tip[eleman-sayısı]

2.Yol:

tip[] dizi -ismi;
dizi ismi=new tip[10]; 

3.Yol:

tip[] dizi ismi ={değerler};

Diziye Değer Girme 

Bir dizi tanımlandıktan sonra sıra o diziye değer girmeye gelir. Bir diziye değer girişleri tanımlama esnasında yapılabildiği gibi, programın akışı esnasında da gerçekleştirilebilir.

Dizi tanımlandıktan sonra, dizinin her bir elemanı için indeks değerleriyle elemana erişerek değer ataması şu şekildedir;

int[] notlar=new int[3];
notlar[0]=65;
notlar[1]=76;
notlar[2]=85; 

Diziyi Yazdırma 

Dizinin indeks numaraları vasıtasıyla erişip diziyi ekrana yazdırma işlemi yapabiliriz.
Erişilen değerlerinin ekrana yazdırılması işlemi şu şekilde gerçekleştirilir; 

int[] plakalar=new int[10];
plakalar[2] = 43;
plakalar[5] = 16;
plakalar[6] = 66;
plakalar[9] = 6;

Aşağıdaki işlemler yukarıda tanımlanmış olan diziye göre gerçekleştirilmektedir. 

Console.WriteLine(plakalar[2]);
Console.WriteLine(plakalar[3]);
Console.WriteLine(plakalar[4]);
Console.WriteLine(plakalar[5]);

Yukarıdaki kod parçası çalıştırıldığında ekrana

43
0
0
16

değerleri yazılır.

Bazı Dizi Özellikleri ve Metotları

Diziler, .NET Framework içinde tanımlı Array sınıfı temsil eder. Tüm diziler Array sınıfında tanımlı özellikleri ve metotları kullanırlar. Bu metotlardan ve özelliklerden en sık kullanılanları şunlardır;

1-Length
2-Clear
3-Reverse 

Length
Dizinin saklayabileceği toplam eleman sayısını veren ve int türünde bir değer veren özelliktir.

Kullanımı:

dizi-adi.Length; 

Clear(dizi,baslangic,adet)
Parametre olarak verilen dizinin, belirtilen indeks aralığındaki tüm değerlerini temizler. Temizleme işleminde atanan değer, dizi elemanlarının tiplerine göre değişir.

 Kullanımı:
Array.Clear(diziAdi,baslangicIndeksi,Adet); 

Reverse(Dizi)
Parametre olarak verilen dizinin eleman sırasını tersine çevirir. Dizinin tüm elemanlarının veya belirli indeks aralığındaki elemanlarının sırası tersine çevrilebilir.

 Kullanımı:
Array.Reverse(diziAdi); 

Sort(Dizi)
Parametre olarak verilen dizinin elemanlarını küçükten büyüğe sıralar. Eğer dizi numerik ise rakamların büyüklüğüne göre, yazı tiplerinde ise baş harflerine göre sıralanır. Reverse’ün tersidir.

Kullanımı:
Array.Sort(diziAdi); 

IndexOf(Dizi,arananDeger) 
İlk parametrede verilen dizide, ikinci parametrede verilen değeri arar. Aranan değer dizide bulunursa bulunan elemanın indeks değeri, bulunamazsa -1 döndürür.

 Kullanımı:
Array.IndexOf(diziAdi,arananDeger); 

Dinamik Diziler 
ArrayList yapısının, bu dinamik boyut dışında bizlere sunduğu bir diğer avantaj da bir dizi içerisinde saklanacak olan verilerin tür sınırlamasını ortadan kaldırmasıdır.

Tanımlanması:
ArrayList diziAdi=new ArrayList();

Capacity Özelliği:
ArrayList’in kapasitesini int türünde veren özelliktir.

Kullanımı:
int kapasite=liste.Capacity;

Count Özelliği:
ArrayList içerisinde bulunana eleman sayısını int türünde veren özelliktir.

 Kullanımı:
int elemanSayisi=liste.Count; 

Add Metodu:
Bir nesneyi ArrayList'in sonuna eklemeye yarar.

Kullanımı:
 ArrayList liste=new ArrayList();
liste.Add(123); //int türünde değer ekleme

Insert Metodu:
Parametre olarak belirtilen indeks değerine yine parametre olarak verilen nesneyi ekler.

Kullanımı:
liste.Insert(5,123); //5 nolu indekse 123 değerini ekler.

Remove Metodu:
Belirtilen nesne ArrayList içerisinde varsa siler.

Kullanımı:
liste.Remove(nesne); 

RemoveAt Metodu:
Parametre olarak verilen indeks konumundaki elemanı siler.

Kullanımı:
liste.RemoveAt(indeks); //indeks olarak verilen konumda bulunan elemanı siler. 

Sort Metodu:
ArrayList içerisindeki elemanları küçükten büyüğe sıralar.

Kullanımı:
liste.Sort();

Hiç yorum yok:

Yorum Gönder