BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul
Bugünkü Konular Döngüler ve Akış Diyagramları C# ‘ta Döngü Tanımlama while döngüsü do-while döngüsü for döngüsü foreach döngüsü (listelerde ve koleksiyonlarda kullanılır. Daha sonra işlenecektir.) İç içe döngüler Döngülerde kullanılan yardımcı ifadeler break continue goto Sonsuz döngüler
do while ifadesi While döngüsü, döngünün başında -başlamadan önce- karşılaştırma durumuna göre çalışır. Bazı durumlarda döngü bir kere çalıştıktan sonra devam edip etmemeye karar vermek isteriz. Bu durumlarda do while döngüsü kullanılır. Bu demek oluyor ki döngünün gövdesi en az bir kere çalışıyor. Yazım Kuralı: koşul Y N ifade1 ifade2 ... do { ifade1; ifade2; ... } while(koşul);
Şifre Sorma(1) Örneğin, kullanıcı doğru şifreyi girene kadar kullanıcıdan şifre girmesini isteyelim: /* while kullanarak ...*/ string SIFRE = "123456"; string sifre; Console.Write("Şifreyi girin:"); sifre = Console.ReadLine(); while (sifre != SIFRE) { } Console.Write("şifre OK"); Burda şifreyi en az bir kere soruyoruz! While döngüsü kullanmak ile Console.Write, Console.ReadLine ifadelerini tekrarlıyoruz.
Şifre Sorma(2) do-while ile aynı döngü Fark gayet açık… /* do-while kullanarak …*/ string SIFRE = "123456"; string sifre; do { Console.Write("Şifreyi girin:"); sifre = Console.ReadLine(); } while (sifre != SIFRE); Console.Write("şifre OK"); Fark gayet açık…
do while Örnek-1 Bir pozitif tam sayı iste int sayi; do { Console.Write("Bir pozitif tam sayı gir: "); int.TryParse(Console.ReadLine(), out sayi); } while (sayi <= 0); Sayı 0’dan küçük eşit olduğu sürece sayıyı tekrar tekrar isteyecek.
do while örnek-2: int i = 0; Console.Write("C# Programlamayı nasıl buldun?"); do { Console.Write("C# Programlama çok zevkli!"); i++; } while (i < 10); 10 defa tekrarlar (0 dan 9 a kadar) Aynı mesajı 10 defa tekrarlar
do while örnek-3: int i = 20; Console.Write("C# Programlamayı nasıl buldun?"); do { Console.Write("C# Programlama çok zevkli!"); i++; } while (i < 10); 1 kere tekrarlar (i = 20 için) Aynı mesajı bir kere yazar
do while örnek-4: string opsiyon = " "; do { Console.WriteLine("---------------------------"); Console.WriteLine("Opsiyonlardan birini seçin:"); Console.WriteLine("(a) Not hesapla"); Console.WriteLine("(b) Ortalama hesapla"); Console.WriteLine("(c) Notları yazdır"); Console.WriteLine("(x) çıkış"); opsiyon = Console.ReadLine(); if (opsiyon == "a") ... else if (opsiyon == "b") ... else if (opsiyon == "c") ... else ... } while (opsiyon != "x");
while ile do while arasındaki fark nedir? Döngüye koymak için kontrol eder Döngüden çıkarmak için kontrol eder. Döngü çalışabilir veya çalışmaz Döngü en az bir kere çalışır
for Döngüsü Daha sık kullanılır Döngünün belli bir sayıda çalışmasını istiyorsak kullanırız. Örneğin döngünün N defa çalışmasını istiyoruzdur. Yazım Kuralı: for(başlangıç değerleri; koşul; değiştirme listesi) { ifade1; ifade2; ... }
for akış diyagramı, ve while eşiti değiştir koşul E H İlk değer ifade1 ifade2 ... for(ilk değer;koşul;değiştir) { ifade1; ifade2; ... } İlk değer; while(koşul) { ifade1; ifade2; ... değiştir; }
for Örneği Problem: 1 den 10’a kadar sayıları yazdır output: Başla int sayı; for(sayı = 1; sayı <= 10; sayı++) { Console.Write(sayı); } sayı = 1 sayı <= 10 Y Sayıyı yazdır N 1 2 3 4 5 6 7 8 9 10 output: sayı++ Bitir
for ifadesinin kullanımı For ifadesi genellikle bir değişkeni artırmak veya azaltmak için en iyi tercihtir. for (i=0; i<N; i++) … 0 dan N-1 e kadar sayar for (i=1; i<=N; i++) … 1 den N e kadar sayar for (i=N-1; i>=0; i--) … N-1 den 0 a kadar sayar for (i=N; i>=1; i--) … N den 1 e kadar sayar
an Hesaplamak için Kod int n, sayac; double a, sonuc = 1; // sonuc = a^0 Console.Write("a değerini gir:"); double.TryParse(Console.ReadLine(),out a); Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(),out n); for (sayac = 0; sayac < n; sayac++) { sonuc *= a; } Console.Write("{0}^{1} = {2}",a,n,sonuc); sayac = 0 Başla sonuc = 1 sayac < n? “a” ve “n” değerlerini giriniz sonuci yazdır H Bitir E sonuc *= a; sayac++;
for Örnek: an Hesaplama i sonuc 3 5 1 1 sonuc = 1; for(i=1; i<=N; i++) { sonuc *= a; } 1 <= 5? True 2 3 2 <= 5? True Başla i++ Bitir sonucu yazdır i <= N E H i = 1 sonuc *=a; 3 9 3 <= 5? True 4 27 4 <= 5? True 5 81 5 <= 5? True 6 243 6 <= 5? False
for döngüsü ile 1+2+3+..+N Akış Diyagramı ve Kod Başla toplam = 0 i <= n? “n” değerini giriniz Toplamı yazdır H Bitir E toplam += i; i++; int n, i,toplam; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(),out n); toplam = 0; for (i = 1; i <= n; i++) { toplam += i; } Console.Write("Toplam = " + toplam);
Not for parantezleri içerisinde değişken tanımlaması yapılabilir. for (int i = 1; i <= n; i++) { toplam += i; } for döngü bloğunda sadece bir tek ifade varsa süslü parantezleri kullanmak zorunda değilsiniz. for (int i = 0; i <= n; i++) toplam += i;
for döngüsü ile 1+2+3+..+N toplamını hesaplama - 2 int n, toplam; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(), out n); toplam = 0; for (int i = 1; i <= n; i++) toplam += i; Console.Write("Toplam = " + toplam);
for döngüsü ile Kareler Tablosu int n; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(),out n); // tablo başlığı Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); for (int i = 1; i <= n; i++) { // beş hanede sağa hizalayarak yazar Console.WriteLine("|{0,5}|{1,5}|" , i, i * i); } // tablonun alt çizgisi i = 1 Başla i <= n? n değerini giriniz Tablonun alt çizgisini yazdır H Bitir E (i, i*i) yazdır i++; Başlığı yazdır
Kareler Tablosu Yazdırma Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); for (int i = 1; i <= n; i++) Console.WriteLine("|{0,5}|{1,5}|", i, i * i); +-----+-----+ | i | i*i | | 1| 1| | 2| 4| | 3| 9| | 4| 16| | 5| 25| | 6| 36| n=6 için Sonuç
for kullanım örnekleri Problem: 1+2+3+4+…+N işlemini hesapla toplam = 0; for(i=1; i<=N; i++) { toplam += i; } İlk değer (i=1), kontrol(i<=N) ve değiştir(i++) ifadelerin her biri opsiyoneldir ve yazılmayabilir. toplam=0; i=1; for(; i<=N; i++) { toplam += i; } toplam=0; for(i=1; i<=N;) { toplam += i++; } i=1; toplam=0; for(; i<=N;) { toplam += i++; }
Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL