Ana içeriğe atla

(C#) Ders 3 - Kosul Ifadeleri (if else, switch case) ve Döngüler(for, do while, while)

Bu dersimizde C# programlama dilinde kosul ifadeleri, akis kontrol ve döngü yapisi üzerinde duracagiz.
Kosul Ifadeleri ve Akis Kontrolü
Kosul ifadeleri ve akis kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadir. Yazdigimiz uygulamanin hangi kosulda nasil davranacagini belirterek bir akis kontrolü olusturabilmek için kosul ifadelerini iyi bilmemiz gerekir. Tüm programlama dillerinde oldugu gibi en temel kosul ifadesi if else bloklaridir.
if…else Blogu
if…else yapisi uygulamalarimizda sik sik kullandigimiz ve kullanmak zorunda oldugumuz bir yapidir. Programlamayi if…else bloklari olmadan düsünmek imkansizdir. Kosul ifadeleri uygulamalarimizda bir karar verme mekanizmasi gibi davranir.
if(bool bir ifade)
   Dogru ise
else
   Yanlis ise

if…else ifadesinin yapisi yukaridaki gibidir. Bir durum if içerisinde karsilastirilir eger kosul dogru ise if altina yazdigimiz blok kod veya tek bir satir kod çalisir, kosul yanlis ise else bloguna tanimladigimiz kod kismi çalisir. Else kismini yazmak zorunda degiliz. Eger yazmaksak ve kosulda yanlis ise if blogu içine giremeyecegi için herhangi bir islem yapilmadan bir sonraki kisma geçerek kodumuz akmaya devam eder.
if (ad == "Sabri")
    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun...");

Yukarida göründügü gibi else yazmadan da karsilastirma yapabiliriz. Eger ad Sabri ise if içindeki kod çalisir degilse bir sonraki asamaya geçerek kodumuz çalismaya devam eder. Yukaridaki kodun else ile kullanimi ise asagidaki gibidir.
if (ad == "Sabri")
    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun...");
else
    Console.WriteLine("Sende Kimsin...");

Eger if ve else bloklari içinde birden fazla satir kod yazmak istiyorsaniz { }ifadelerini kullanmaniz gerekir.
if (ad == "Sabri")
{
    gelenKisi = ad;
    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun...");
}
else
{
    gelenKisi = "Izinsiz";
}

Her zaman {} parantezlerini kullanmanizi tavsiye ederim. Kodunuzun okunurlulugunu arttirdigi gibi hata yapmanizi da engeller.
if ifadesini isterseniz else bloklarinda da kullanabilirsiniz. Böylece karsilastirma kriterinizi genisletmis olursunuz.
if (ad == "Sabri")
{
    gelenKisi = ad;
    Console.WriteLine("Merhaba Sabri. Ne zamandir gözükmüyodun...");
}
else if (ad == "Metin")
{
    gelenKisi = ad;
    Console.WriteLine("Vaaaay Sen Ha...");
}
else
{
    gelenKisi = "Izinsiz";
    Console.WriteLine("Sende Kimsin...");
}

if… else bloklarini iç içe de kullanabilirsiniz.
if (yas > 25)
{
    if (yas == 26)
    {
        Console.WriteLine("Sinirda Geziyosun...");
    }
    else
    {
        Console.WriteLine("Yas Kemale Ermis Gibi...");
    }              
   
}
else
{
    Console.WriteLine("Daha Gençsin Ya...");
}

if içerisine C/C++ dan farkli olarak sadece kosul ifadesi olarak boolean ifadeler yazilabilir. Asagidaki gibi bir ifade yanlistir. Eger j esit midir 4 demek istiyorsaniz iki esittir kullanarak yazmaniz gerekir. Bir önceki dersimizdeki operatörlere bakmanizi tavsiye ederim.
if (j = 4)
{
    // Hata Verir. j=4 ifadesi j degiskenine 4 sayisini atamak demektir.
    // yani boolean bir ifade degildir. j==4 ise j 4’ esitmi demektir.
}

switch…case Ifadesi
Karsilastirma yapacaginiz ifadenin alabilecegi degerler fazla ise çok fazla if else if ifadesi yazmak yerine karsilastirmamizi swtich…case yapisini kullanarak olusturmamiz hem kodumuzun okunurlulugu arttirir hem de daha hizli kod yazmamizi saglar.
switch (degisken)
{
    case sabit deger : kod blogu;
        break;
    case sabit deger : kod blogu;
    break;
    default:
        kod blogu;
}

swich…case kullanimi ard arda yazilacak if..else bloklarini kullanmaktan daha kolaydir. Basit bir örnekle daha iyi anlayabiliriz.
Console.WriteLine("Lütfen Yasinizi Giriniz");
int yas;
yas = Convert.ToInt32(Console.ReadLine());
switch (yas)
{
    case 20: Console.WriteLine("Genç Adam Merhaba");
        break;
    case 25: Console.WriteLine("Merhaba Deli Kanli");
        break;
    case 35: Console.WriteLine("Merhaba Dayi");
        break;
    default:
        Console.WriteLine("Merhaba");
        break;
}

Yukaridaki kodu inceleyecek olursak;  switch() içerisine karsilastirma yapacagimiz degiskeni koyuyoruz. Kontrol edecegimiz tüm degerleri için farkli bir case blogu yaziyoruz. Her case blogunun break le bittigine dikkat edin. C# break kullanmadan swtch case yazmaniza izin vermez. break; çalistigi zaman bulundugu kod blogundan çikis yapilmasini saglar. Case bloklarindan hiç birisi çalismazsa örnegin örnekte yas 20,25 veya 35 den hiç biri degilse default satirina yazdigimiz kod çalisir.
C# da Döngülerin Kullanimi
Bir kod blogunun belirli sartlara bagli veya bagimsiz olarak ardisik olarak çalistirilmasi için döngüler kullanilir.
for  Döngüsü
En temel döngü yapisi for döngüsüdür. C# da for döngüsü kullanimi C/C++ ve Javada ki gibidir. Basit bir for döngüsünün yapisi asagidaki gibidir.
for (baslangiç; kosul; artim / azalim)
{
    //kod blogu
}


Sifirdan dokuza kadar olan sayilari konsol ekranina yazan basit bir for döngüsü yapalim.
for (int i = 0; i < 10; i++)
{
    Console.WriteLine("Döngüde i degeri suan : {0}",i);
}

Yukaridaki for döngüsü sonucu ekran çiktisi asagidaki gibi olur.
Döngüde i degeri suan : 0
Döngüde i degeri suan : 1
Döngüde i degeri suan : 2
Döngüde i degeri suan : 3
Döngüde i degeri suan : 4
Döngüde i degeri suan : 5
Döngüde i degeri suan : 6
Döngüde i degeri suan : 7
Döngüde i degeri suan : 8
Döngüde i degeri suan : 9
Devam etmek için bir tusa basin . . .

Örnekte i degeri ilk olarak 0’dan baslar ve i++ ifadesine göre her döngüde bir deger artar. i<10 ifadesi i degerinin 10’dan küçük olup olmadigini kontrol eder. Eger 10’dan küçük ise döngü içine yazilan Console.WriteLine("Döngüde i degeri suan : {0}",i);kismi çalisir. i degeri 10 oldugu zaman i<10 kosulu false deger üreterek döngümüzün sonlanmasina sebep olur.
for Döngüsü Hakkinda Önemli Noktalar
for döngüsünde baslangiç, kosul ve artim/azalim olarak isimlendirdigimiz kisimlarin üçü de opsiyoneldir.  Istersek kullanmaya biliriz. Baslangiç degerini for döngüsünden önce setleyerek döngü içinde belirli kontrolleri yapabilir, istedigimiz zamanda break komutu ile döngüyü sonlandirabiliriz. Bu kontrolleri döngü içinde de yapmazsak sonsuz bir döngümüz olur. For döngüsü asagidaki gibi kullanilabilir.
for (; ; )
for (; i < 10; i++)
for (int i = 3; ; i--)
for (; i < 5; )

for döngüsünü süslü parantez {} ler ile kullanmazsak for ifadesinden sonraki ilk satir döngü içinde çalistirilir. Eger döngü içinde birden fazla satir kod çalistirmak istiyorsan { } parantezlerini kullanmak zorundayiz. Döngü içinde tek bir satir kod bile çalistiracak olsaniz süslü parantezleri kullanmanizi tavsiye ederim.
Döngümüzü belli bir kosul altinda sonlandirmak istiyorsak break komutunu kullaniriz.
for (int i = 0; i < 10; i++)
{
    if (i > 5)
    {
        break;
    }
    Console.WriteLine("Döngüde i degeri suan : {0}", i);
}

Yukaridaki kodda i degeri 5 den büyük oldugunda break komutu çalisarak döngünün sonlanmasina sebep olur. Ekran çiktisi asagidaki gibi olur.
Döngüde i degeri suan : 0
Döngüde i degeri suan : 1
Döngüde i degeri suan : 2
Döngüde i degeri suan : 3
Döngüde i degeri suan : 4
Döngüde i degeri suan : 5
Devam etmek için bir tusa basin . . .

Belli bir kosul altinda döngü içine yazdigimiz kodlarin çalismayarak bir sonraki döngü adimina geçmek istiyorsak continue komutunu kullaniriz.
for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        continue;
    }
    Console.WriteLine("Döngüde i degeri suan : {0}", i);
}

i degeri 5 oldugu zaman continue komutu çalisarak döngüyü bir sonraki adima tasir, bunun sonucu asagidaki ekran çiktisi olusur.
Döngüde i degeri suan : 0
Döngüde i degeri suan : 1
Döngüde i degeri suan : 2
Döngüde i degeri suan : 3
Döngüde i degeri suan : 4
Döngüde i degeri suan : 6
Döngüde i degeri suan : 7
Döngüde i degeri suan : 8
Döngüde i degeri suan : 9
Devam etmek için bir tusa basin . . .

do… while Döngüsü
do…while döngüsünün temel yapisi asagidaki gibidir.
do
{
    // çalisacak kod
}
while(kosul);

Döngü içine yazilan kod ilk olarak çalisir daha sonra while kismindaki kosul kontrol edilir, burada bulunan kosul true deger döndürdügü sürece döngü tekrar tekrar çalisir.
int i = 0;
do
{
    Console.WriteLine("do while döngüsü içinde i degeri suan: {0}", i);
    i++;
}
while (i<10);

Ekran görüntüsü;
do while döngüsü içinde i degeri suan: 0
do while döngüsü içinde i degeri suan: 1
do while döngüsü içinde i degeri suan: 2
do while döngüsü içinde i degeri suan: 3
do while döngüsü içinde i degeri suan: 4
do while döngüsü içinde i degeri suan: 5
do while döngüsü içinde i degeri suan: 6
do while döngüsü içinde i degeri suan: 7
do while döngüsü içinde i degeri suan: 8
do while döngüsü içinde i degeri suan: 9
Devam etmek için bir tusa basin . . .

·         do…while döngüsü içine yazilan kod blogu her zaman ilk seferde çalisir.
·         while ifadesinden sonra noktali virgül kullanilir.
while Döngüsü
Hemen hemen do…while döngüsü ile ayni özellikleri tasir. Sadece ilk çalisma mantiklari farklidir.
do…while döngüsü ilk olarak kod bloguna girer daha sonra kosul kontrol edilir, böylece kosul dogru olsada olmasada kod blogu bir kez çalisir.
while döngüsü ise kod bloguna girmeden önce kosul durumunu kontrol eder, eger kosul dogru degilse kod blogu asla çalismaz. Bu küçük ama çok önemli bir farktir.
while döngüsünün yapisi
while (kosul)
{
    //kod blogu
}

Kosul ifadesi dogru ise while içinde yazilan kod blogu çalisir. kosul yanlis oldugu anda döngü sona erer.
int sayac = 0;
while (sayac<10)
{
    Console.WriteLine("Sayac Degeri: {0}",sayac);
    sayac++;
}

Döngüleri kullanarak basit bir örnek yapalim. Örnegin Ekrandan kullanici adini alalim. Kullanici adi bizim istedigimiz deger olana kadar kullanici adini istemeye devam edelim. Bizim istedigimiz kullanici adi yazildigi zaman bir mesaj vererek döngüden çikalim. Bu örnegimizi do…while veya while döngüsü ile yapabiliriz. Biz örnegimize while döngüsü ile nasil yapilacagini anlatacagiz.
string kullaniciAdi = "";
while (kullaniciAdi != "Sabri")
{
    Console.WriteLine("Lütfen Kullanici Adini Yaziniz.");
    kullaniciAdi = Console.ReadLine();
}
Console.WriteLine("Hosgeldin Sabri.");

while içindeki kosul sarti kullaniciAdi Sabri olmadigi sürece dogru degeri döndürür. Bu yüzdende Sabri ismi girilene kadar döngü sonlanmaz. Ayni islemi asagidaki gibide yapabiliriz.
string kullaniciAdi = "";
while (true)
{
    Console.WriteLine("Lütfen Kullanici Adini Yaziniz.");
    kullaniciAdi = Console.ReadLine();
    if (kullaniciAdi == "Sabri")
    {
        Console.WriteLine("Hosgeldin Sabri.");
        break;
    }
}

Yukaridaki kod örneginde while içine direk olarak true degeri yazdik, böylece döngünün asla sonlanmamasini sagladik fakat döngü içinde if kosulu ile kullaniciAdi kontrol ediliyor ve eger Sabri olarak girilmisse break komutu ile döngüyü sonlandiriyoruz.

Yorumlar

Bu blogdaki popüler yayınlar

Linux En Az Sistem Gereksinimi İsteyen Dağıtımları Değerlendirilmesi

Linux İşletim Sisteminin Dağıtımlarının En az sistem gereksinimi isteyen sürümleri, değerlendirilmesi aşağıdadır, Değerlendirilen dağıtımlar şunlardır: Ubuntu Xubuntu Lubuntu Damn Small Linux Linux Mint Fedora Opensuse Debian Rat Hat Suse Linux Suse Linux Sistem Gereksinimleri: Pentium 1-4 ya da Xeon; AMD Duron, Athlon (XP, MP ya da 64), Sempron ya da Opteron 256MB RAM 500MB boş disk alanı 800x600 yada üstü resolution Rat Hat Memory Gerekli: 4 GB of memory Önerilen: 8 GB of memory CPU Gerekli: Intel Core processor, 2.4GHz, 512K cache or equivalent Önerilen: Intel multi-core processor, 2.4GHz dual processor, 512K cache or equivalent Storage 5 GB alan temel kurulum için. 40 GB alan Channel başına. 10 GB alan Cache dizini için(/var/cache/rhn) Disk yapılandırması olarak Raid 5 tavsiye edilir. Database İlk kurulum için 12 GB alan önerilir. Client ve channel hesaplamaları ise, 250 KB alan client system başına, 500 KB alan çhannel başına, ayrıca 230 KB channel da

( C#) Ders 4 - Diziler, Çok Boyutlu Diziler, Düzenli ve Düzensiz Çok Boyutlu Diziler Nasil Kullanilir. foreach Döngüsünün Kullanimi.

C# da Diziler Diziler için ayni tipteki verilerin tutuldugu bir koleksiyon diyebiliriz. Örnegin integer verinin bir yigin seklinde tutulmasi için dizileri kullaniriz. C# da diziler referans tipinde degiskenlerdendir. C# da tanimlanan tüm diziler System.Array sinifindan türemis bir nesnedir. C# da diziler asagidaki gibi tanimlanir. ? 1 <veri tipi>[] <degisken ismi> = new <veri tipi>[<dizinin boyutu>]; 10 adet integer veri tutan bir dizinin tanim ise ? 1 int [] integerDizi = new int [10]; Bir dizinin boyutlari sabittir ve kullanilmadan önce belirlenmelidir. Dizi boyutunu belirlemek için baska bir degiskende kullanabilirsiniz. ? 1 2 int boyut = 10; int [] integerDizi = new int [boyut]; Diziyi tanimlama ve baslangiç degerlerini atama islemini ayri satirlardada yapabilirsiniz. ? 1 2 int [] integerDizi; integerDizi = new int [10]; Ayrica dizileri tanimlarken, dizi içine atmak istedigin

JavaScript ile Popup Pencereleri

Popup pencereleri bir sayfa içinde ek bir pencere açma islemidir. Popup pencereler JavaScript kullanarak açilirlar. Popup pencereler yaygin olarak reklam göstermek amaciyla kullanilir. Diger bir kullanim amaci ise yardim sayfalari tasarlamak içindir. Ihtiyaciniz dogrultusunda farkli amaçlar için kullanilabilirler. Popup pencereler; Sayfa yüklenmesinde,Sayfadan çikildiginda,Kullanici bir linki tikladiginda açilabilir. Sayfa yüklenirken veya kapatilirken bir popup açmak için body etiketi içine asagidaki kodu yazmaniz yeterlidir. Sayfa yüklenirken ? 1 <body onload= "javascript: alert(Load islemi!')" > Sayfa Kapatilirken ? 1 <body onunload= "javascript: alert('UnLoad islemi!')" Link tiklandiginda ? 1 <a href= "javascript: alert('link Tiklandi!')" >Popup Aç!</a> Popup olarak yeni bir pencere açmak istiyorsak window.open() metodunu kullaniriz. Window.open metodun