250 likes | 549 Views
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ü
E N D
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-whiledöngüsü • fordöngüsü • foreachdö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
N ifade1 ifade2 ... koşul Y do whileifadesi • 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 durumlardado whiledöngüsü kullanılır. • Bu demek oluyor ki döngünün gövdesi en az bir kere çalışıyor. • Yazım Kuralı: 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"; stringsifre; Console.Write("Şifreyi girin:"); sifre=Console.ReadLine(); while (sifre!= SIFRE) { Console.Write("Şifreyi girin:"); sifre=Console.ReadLine(); } Console.Write("şifre OK"); • Burda şifreyi en az bir kere soruyoruz! • While döngüsü kullanmak ile Console.Write, Console.ReadLineifadelerini tekrarlıyoruz.
Şifre Sorma(2) • do-while ile aynı döngü /* do-while kullanarak …*/ string SIFRE ="123456"; stringsifre; 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 intsayi; do { Console.Write("Bir pozitif tam sayı gir: "); int.TryParse(Console.ReadLine(), outsayi); } 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ış"); Console.WriteLine("---------------------------"); opsiyon =Console.ReadLine(); if (opsiyon=="a") ... elseif (opsiyon =="b") ... elseif (opsiyon =="c") ... else... } while (opsiyon !="x");
forDö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; ... }
İlk değer koşul E H ifade1 ifade2 ... değiştir forakış diyagramı, ve whileeşiti for(ilk değer;koşul;değiştir) { ifade1; ifade2; ... } İlk değer; while(koşul) { ifade1; ifade2; ... değiştir; }
output: 1 2 3 4 5 6 7 8 9 10 forÖrneği • Problem: 1 den 10’a kadar sayıları yazdır Başla intsayı; for(sayı= 1;sayı<= 10;sayı++) { Console.Write(sayı); } sayı= 1 sayı<= 10 Y Sayıyı yazdır N sayı++ Bitir
forifadesinin 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
Başla “a” ve“n”değerlerini giriniz sayac = 0 sonuc= 1 sayac < n? E H sonuc*= a; sonuciyazdır sayac++; Bitir anHesaplamak 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);
Başla i= 1 i <= N E H sonuc*=a; i++ sonucu yazdır Bitir forÖrnek: anHesaplama sonuc n i a 3 5 1 1 sonuc= 1; for(i=1;i<=N;i++) { sonuc*= a; } 1 <= 5? True 2 3 2 <= 5? True 3 9 3 <= 5? True 4 27 4 <= 5? True 5 81 5 <= 5? True 6 243 6 <= 5? False
Başla “n” değerini giriniz i = 1 toplam = 0 i <= n? E H toplam += i; Toplamı yazdır i++; Bitir for döngüsü ile 1+2+3+..+NAkış Diyagramı ve Kod 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+..+Ntoplamını hesaplama - 2 int n, toplam; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(), out n); toplam =0; for(inti =1; i <= n; i++) toplam += i; Console.Write("Toplam = "+ toplam);
Başla n değerini giriniz Başlığı yazdır i = 1 i <= n? E H (i, i*i) yazdır Tablonun alt çizgisini yazdır i++; Bitir for döngüsü ile Kareler Tablosu int n; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(),outn); // tablo başlığı Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); Console.WriteLine("+-----+-----+"); 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 Console.WriteLine("+-----+-----+");
Kareler Tablosu Yazdırma +-----+-----+ | i | i*i | +-----+-----+ | 1| 1| | 2| 4| | 3| 9| | 4| 16| | 5| 25| | 6| 36| +-----+-----+ Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); Console.WriteLine("+-----+-----+"); for (int i =1; i <= n; i++) Console.WriteLine("|{0,5}|{1,5}|", i, i * i); Console.WriteLine("+-----+-----+"); n=6 için Sonuç
forkullanı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