IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  digitalpanel

Etiketlenen Kullanıcılar

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 24 Nisan 2010, 01:48   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
C# Döngüler 2




[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet
Alt 23 Temmuz 2010, 21:35   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: C# Döngüler 2




dosyanız rapidshareden kaldırılmış yeniden yükleyebilir misiniz acaba?

 
Alıntı ile Cevapla

Alt 01 Ekim 2010, 11:14   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: C# Döngüler 2




Döngüler:



Yazdığımız programlarda kimi kod parçalarının defalarca tekrar etmesini isteriz. Örneğin dördüncü dersteki otuz öğrencinin notunu girme programında her öğrenci için ayrı ayrı kod mu yazacağız? Bu bir çözüm olabilir ama kesinlikle uzun ve sıkıcı bir çözüm. İstediğimiz kodun istediğimiz kadar tekrarlanmasını döngülerle sağlarız. C#'da "for" ve "while" olmak üzere iki döngü komutu vardır.



"for" Döngüsü:



Döngünün kaç kere tekrarlanacağının önceden bilindiği durumlarda "for" döngüsü kullanılır. Bizim otuz öğrencilik not girme sisteminde "for" komutu kullanılabilir. Çünkü döngünün otuz kere dönmesi gerektiğini biliyoruz. Ancak isterseniz bundan önce daha basit bir örnekle "for" döngüsünün yapısını anlayalım.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { for(int i=1;i<=10;i++) { Console.WriteLine("Merhaba"); } Console.Read(); } }

Yukarıdaki örnekle, ekrana alt alta on kez "Merhaba" yazdırıyoruz. Aslında "for" döngüsünün yapısını anlamak o kadar da güç değil. Öncelikle "for" komutunu yazıyoruz. Ardından parantez açıp bir değişken tanımlıyoruz ve ilk değerini veriyoruz. Değişken program içinde daha önce de tanımlanabilirdi. Önemli olan değişkene bir başlangıç değerinin verilmesidir. Ardından döngünün devam etmesi için gerekli olan koşulu yazıyoruz. Bu örnekteki koşulumuz, "i" değişkeninin değerinin 10'a eşit veya daha küçük olmasıydı. Son olarak da döngünün her dönüşünde "i" değişkeninin değerini arttıracak kodu yazıyoruz. Bu ifade "i=i+2" 'de olabilirdi ancak böyle bir durumda "i" değişkeninin değeri her seferinde 2 artacaktı ve 5 seferden sonra döngüden çıkılacaktı. Yani özet olarak "for" komutundan sonraki parantez içindeki işlemler sonucunda, koşul sağlandığı sürece küme parantezleri içindeki kodlar tekrar yürütülüyor. "for" komutunun bulunduğu satırda ";" işaretinin olmadığına dikkat edin. Bunun sebebi, "if" komutundaki sebeple aynıdır. Benzer şekilde "while" döngüsünde de ";" işaretinin kullanılmadığını göreceksiniz.

Bu basit örnekte belirli bir işlemi her seferinde aynı olacak şekilde on kez yeniden yürüttük. Ancak çoğu zaman döngü içindeki ifadelerde, döngü değişkeni de görev yapar. Aşağıdaki örneği inceleyelim.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { for(int i=1;i<=10;i++) { Console.WriteLine("Merhaba "+i); } Console.Read(); } }

Bu örneğin diğerinden tek farkı, ekrana yazdırma kısmındaki "+i" bölümüdür. Bunun manası, ekrana her "Merhaba" yazılışında yanına "i" değişkeninin değeri de yazacaktır. Bu değişkenin değeri, döngünün her dönüşünde değiştiği için yazdırılacak yazı da farklı olacaktır. Örnek çalıştırıldığında ekranda "Merhaba 1" 'den başlamak üzere, "Merhaba 10" 'a kadar ardışık olarak artan sayılar ve bir kelime yazdırılacaktır. Bu çok basit bir örnek gibi gelebilir ancak pek çok döngüsel kod, bu mantığa dayanarak yazılır. Şimdi de otuz öğrencinin notlarının tek tek girilip bir dizinin içine kayıt edildiği programımızı yapalım.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { int[] notlar = new int[30]; for(int i=1;i<=30;i++) { Console.Write("Lütfen "+i+". Notu Giriniz :"); string not=Console.ReadLine(); notlar[i-1]=Int32.Parse(not); } for(int i=1;i<=30;i++) { Console.WriteLine(i+". Öğr. Notu :"+notlar[i-1]); } Console.Read(); } }


Bu örnekle birlikte "for" döngüsünün gerçek kullanım şeklini görmüş oluyoruz. Programı çalıştırdığımızda bilgisayar bize sırayla otuz öğrencinin notlarını sorar ve girdiğimiz her notu, dizinin bir hücresine kaydeder. Sonunda da tüm notları ekrana yazdırır. Peki bunu nasıl yaptık? Öncelikle "notlar" isimli 30 hücreli ve tek boyutlu bir dizi tanımladık. Sonra da "for" döngüsü ile yazdığımız kodun otuz kez tekrarlanması sağladık. Birinci kodumuz ekrana "Lütfen n. Notu Giriniz :" yazıyor. Burada n yerine "i" değişkeninin değeri yazılıyor. Bu da o anki öğrencinin sıra numarası oluyor. Ardından girdiğimiz notu önce "not" isimli "string" değişkene, ardından da ilgili dizi hücresine yazıyor. Dizinin hücresini gösterirken "i-1" kodunun kullanıldığına dikkat edin. Hatırlarsanız, 30 hücreli bir dizinin hücreleri 0'dan başlayıp 29'a kadar gidiyordu. Tüm bu işlemler tamamlanıp notlar diziye yüklendiğinde, ikinci döngümüz işe başlıyor. Bu döngünün görevi de, ekrana otuz öğrencinin notlarını sırayla yazdırmak. Dikkat ederseniz iki döngüde de "i" isimli bir değişken kullanmamıza rağmen, değişkeni her seferinde yeniden tanımlamamız gerekti. Çünkü döngü içinde tanımlanan değişkenler sadece o döngü içinde geçerlidir. Döngünün dışına çıkıldığında değişkenin özelliği kaybolur. Başka bir deyişle değişken ölür.

Yukarıdaki örnek kısa olmakla birlikte döngülerin, programcılıkta ne kadar önemli olduğunu açıkça ortaya koyuyor. Aynı işlemi döngüleri kullanmadan ne kadar kod yazarak yapabileceğinizi düşünün. Ayrıca gördüğünüz gibi döngüler sadece belirli kodları aynen tekrarlamak için de kullanılmıyor. Döngü değişkeni kullanılarak, pek çok değişik işlem de yapılabiliyor.

Deminki örnekte, dizinin kaç elemanlı olduğunu biliyorduk. Ancak bazı durumlarda bunu bilemeyiz. Bilgisayarın bizim yerimize bunu kontrol etmesi ve döngüyü bu sayı kadar döndürmesi istenir. Böyle durumlarda "foreach" komutu kullanılır.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { int[] notlar = new int[5] {34,23,56,74,23}; foreach(int i in notlar) { Console.WriteLine("Not :"+i); } Console.Read(); } }

Gördüğünüz gibi örneğimizde öncelikle "notlar" isimli 5 hücreli, tek boyutlu bir dizi oluşturmuşuz ve değer atamışız. Hemen altında da "foreach" döngüsünün yapısı görülüyor. Parantez içinde, dizi ile aynı türde bir değişken tanımlanıyor ve "in" komutundan sonra da kaynak dizi gösteriliyor. Bunun manası, dizi eleman sayısı kadar döngünün devam edeceği ve her dönüşte, bir sonraki dizi elemanının okunup "i" değişkenine atanacağıdır. Böylece ekranda alt alta "Not : 34" 'den başlayıp "Not : 23" ile biten beş satırlık yazı yazdırılıyor. Görüldüğü gibi, dizilerin içindeki eleman sayısının ne olduğu önceden tahmin edilemeyen durumlarda "foreach" döngüsü oldukça kullanışlıdır. Şimdi, "Kendi tanımladığımız dizinin eleman sayısını nasıl bilmeyelim?" diye düşünebilirsiniz. Ancak dizi tanımlanırken kullanılan 5 sayısını direk yazmadığınızı, onun yerine bir değişken kullandığınızı ve programın akışı sırasında değişkenin aldığı değere göre farklı boyutta bir dizi tanımlandığını düşünün. Belki şimdi gereksiz gibi gelebilir ancak bu gibi durumlarla programcılıkta çok sık karşılaşılır.

"while" Döngüsü:



Bu dersin başında da söylediğimiz gibi "for" döngüsü, döngünün kaç kez tekrarlanacağının bilindiği durumlarda kullanılır("foreach" döngüsü hariç). Döngünün kaç kez döneceğini, belirli bir koşula bakarak programın akışına göre bilgisayarın belirlemesi gereken durumlarda ise "while" döngüsü kullanılır. Bu döngünün yapısını daha iyi anlamak için aşağıdaki örneği inceleyelim.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { int sayi=1; while(sayi<100) { sayi*=2; Console.WriteLine(sayi); } Console.Read(); } }

Örnekte önce "sayi" isimli "int" tipinde bir değişken oluşturmuşuz. Ardından "while" döngüsü görülüyor. Bu döngünün mantığı, parantez içindeki koşul doğru olduğu sürece döngünün devam etmesidir. Örneğimizdeki koşul, "sayi" değişkeninin değerinin 100'den küçük olmasıdır. İlk başta değişkenin değeri 1'dir ve koşul sağlandığı için döngüye girilir. Döngü içinde değişken her seferinde 2 ile çarpılarak ekrana yazdırılır. Örnek çalıştırıldığında ekrana alt alta "2, 4, 8, 16, 32, 64, 128" yazdırılır. Döngüye son girişte değişkenin değeri 64'dür ve koşul sağlandığı için döngüye girilir. Ardından değer 2 ile çarpılarak 128 sayısına ulaşır. Ancak döngüden hemen çıkılmaz. Koşul sadece döngüye girişte kontrol edilir. Bir sonraki kontrolde koşul sağlanmadığı için döngüye girilmez ve programa devam edilir.

Kimi durumlarda ne olursa olsun, döngüye en az bir kez girilmesi istenir. Yani önce döngüye girilmesi, koşul kontrolünün ise döngü çıkışında yapılması istenir. Böyle durumlarda da "do-while" döngüsü kullanılır.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { int i=110; do { i*=2; Console.WriteLine(i); } while(i<100); Console.Read(); } }


Yukarıdaki örnekte önce "sayi" isimli bir değişken tanımlamışız ve 110 değerini atamışız. Ardından da "do-while" döngüsünü görüyoruz. Koşul kontrolü döngünün sonunda yapıldığı için koşul sağlanmasa bile döngüye bir kez giriliyor. Ekrana 220 yazdırılıyor. Sonra koşul kontrol edilip doğrulanmadığı görülünce döngüden çıkılıyor. Buradaki "while" komutundan sonra ";" işaretinin kullanıldığına dikkat edin.

Gördüğünüz gibi "while" döngüsü, belirli bir koşul doğrulandığı sürece içeriğini sürekli tekrar eden döngü tipidir. Bazen yazdığımız programlarda sonsuz döngülere ihtiyaç duyarız. Böyle durumlarda koşul yerine "true" ifadesi kullanılarak döngünün sonsuza dek sürmesini sağlayabiliriz. Ancak böyle bir durumda döngüden çıkışı komutlar vasıtasıyla bizim sağlamamız gerekir. Bu tür komutlar sayesinde program denetiminde ekstra güce sahip oluruz. İsterseniz şimdi de bu komutlara bir göz atalım.



"break" Komutu:



Bu komutu daha önceki "switch" yapısını incelediğimiz derste görmüştük. Görevi koşulsuz olarak "switch", "while", "for" yapılarından çıkmaktır. Aşağıdaki örneği inceleyelim.




Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { int i=0; while(i<=100) { i++; Console.WriteLine("Merhaba"); if(i==5) { break; } } Console.Read(); } }


Eğer örneğimizde, içinde "break" komutunun bulunduğu "if" yapısı bulunmasaydı, ekrana 100 kez "Merhaba" yazdırılırdı. Ancak "if" yapısı ile "i" değişkeninin değerinin 5 olduğu zaman "break" komutunun çalışmasını sağlamışız. Böyle bir durumda döngü beş kez dönüp ekrana "Merhaba" yazdırıldıktan sonra döngüden çıkılacaktır. Özet olarak "break" komutu kullanıldığı zaman, içinde bulunulan "switch", "while", "for" yapılarından çıkılır.



"continue" Komutu:


"continue" komutu genellikle, "break" komutunun tersine döngünün devamlılığını sağlamak için kullanılır. Komutu daha iyi anlayabilmek için aşağıdaki örneğe bakalım.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { while(true) { Console.Write("Bir Sayı Giriniz :"); String sayi=Console.ReadLine(); if(Int32.Parse(sayi)>10) { continue; } break; } } }

Bu örnekte sonsuz bir döngü içinde kullanıcıdan bir sayı girmesi isteniyor. Eğer girilen sayı 10'dan büyükse "continue" komutu yürütülüyor ve döngünün başına dönülüyor. Böylece "break" komutunun etkisi yok olarak döngü devam ediyor. Ancak girilen sayı 10'dan küçükse "continue" komutu yürütülmüyor ve "break" komutu sayesinde döngüden çıkılıyor. Buradan da anlaşılacağı gibi "continue" komutu, döngünün başına dönülmesini sağlamaktadır.



"goto" Komutu:



"goto" komutunun görevi, koşulsuz dallanma sağlamaktır. Öncelikle gidilmesini istediğimiz yere bir etiket yerleştiririz. Ardından istediğimiz zaman "goto" komutuyla program akışını o etiketten itibaren devam ettirebiliriz.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
using System; class Class1 { public static void Main() { while(true) { Console.Write("Bir Sayı Giriniz :"); String sayi=Console.ReadLine(); if(Int32.Parse(sayi)>10) { goto yer; } } yer: Console.Read(); } }


Yine sonsuz bir döngümüz var ve kullanıcıdan sayı girmesi isteniyor. Girilen sayı 10 veya daha küçük olduğu sürece döngü tekrarlamaya devam ediyor. Eğer girilen sayı 10'dan büyükse, "goto" komutu ile "yer" isimli etikete gidilmesi isteniyor. Bu ismi biz seçtik. Yani aklımıza gelen herhangi bir isim de olabilirdi. Etiket tanımlaması da hemen altında görülüyor. Önce etiket ismini yazıyoruz ve ardından ":" işaretini kullanıyoruz. Burada ";" işaretinin kullanılmadığına dikkat edin.

"break" veya "goto" komutları ile program akışı değiştirilebilir. Ancak bunu yapmak pek tavsiye edilmez. Çünkü böyle bir durumda programınız yapısallığını kaybeder ve daha güç okunur hale gelir. Bunların yerine sınıflar ve metotları kullanarak alt prosedür yazmak daha iyi bir seçim olacaktır.

 
Alıntı ile Cevapla

Alt 04 Ekim 2010, 23:40   #4
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: C# Döngüler 2




C# ta döngü sayısı daha fazladır.
do while ,for ,while,foreach

 
Alıntı ile Cevapla

Cevapla

Etiketler
2, c#


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Döngüler YaRGuCi ASP/ASP.NET 3 26 Kasım 2011 12:04
Delphi'de Döngüler Slipknot Delphi 0 07 Temmuz 2010 20:44
C# Döngüler 3 Sunay C# 0 24 Nisan 2010 01:48
C# Döngüler 1 Sunay C# 0 24 Nisan 2010 01:48