Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL

Benzer bir sunumlar


... konulu sunumlar: "BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL"— Sunum transkripti:

1 BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL

2 2 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 Bugünkü Konular

3 3 Döngüleri bir biri içinde kullanabiliriz –Çoğu programlarda bu durum gerekiyor. Örnek: çarpım tablosu İç içe döngüler | *| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| | 1| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| | 2| 2| 4| 6| 8| 10| 12| 14| 16| 18| 20| | 3| 3| 6| 9| 12| 15| 18| 21| 24| 27| 30| | 4| 4| 8| 12| 16| 20| 24| 28| 32| 36| 40| | 5| 5| 10| 15| 20| 25| 30| 35| 40| 45| 50| Sütunlar Satırlar

4 4 Çarpım Tablosunu Ekrana Yazdırma /* tablo başlığı yazdıralım*/ Console.WriteLine(" "); Console.Write("| * |"); for (int i = 1; i <= 10; i++) Console.Write("{0,3}|", i); Console.WriteLine("\n "); /* Tabloda: i satırları, j sütunları ifade edecek */ for (int i = 1; i <= 10; i++) { Console.Write("|{0,3}|", i); /* i için tablonun bir satırını yazdır*/ for (int j = 1; j <= 10; j++) { Console.Write("{0,3}|", i * j); } Console.WriteLine(); // bir satır ekle } /* Tablonun alt çizgisini yazdır*/ Console.WriteLine(" ");

5 Faktöriyel hesaplama Klavyeden girilen n sayısına kadar olan sayıların faktöriyelini ekrana yazdıran bir program yazalım. –Örneğin n=6 için: 0!=1 => 1 1!=1 => 1 2!=2 => 1*2 3!=6 => 1*2*3 4!=24 => 1*2*3*4 5!=120 => 1*2*3*4*5 6!=720 => 1*2*3*4*5*6 … 5 n! = 1*2*3*.. *n int fakt = 1; for (int i = 1; i <= n; i++) fakt *= i;

6 Faktöriyel hesaplama 6 using System; class Program { static void Main() { int n, fakt = 1; Console.Write("n değeri:"); int.TryParse(Console.ReadLine(), out n); for (int i = 0; i <= n; i++) { fakt = 1; for (int j = 1; j <= i; j++) { fakt *= j; } Console.WriteLine("{0}! = {1}", i, fakt); } Console.ReadLine(); } n değeri:8 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = ! = n değeri:8 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = ! = 40320

7 İç içe döngüler devam Aşağıdaki şekli yapacak kod … 7 int n; Console.Write("n değeri:"); int.TryParse(Console.ReadLine(), out n); for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) Console.Write(j + " "); Console.WriteLine(); }

8 8 switch ifadesinde break kodunun bizi switch ifadesi dışına attığını görmüştük. Benzer bir şekilde, break döngü içinde kullanıldığın da bizi geçerli döngünün dışına atar. break Döngü içinde break kullanımı

9 break kullanımı Döngü deyimlerinin içerisindekiler çalıştırılırken, döngünün, koşuldan bağımsız kesin olarak bitirilmesi gerektiğinde break deyimi kullanılır. –Örneğin 1/x hesaplama: 9 double x; do { Console.Write("x değeri:"); double.TryParse(Console.ReadLine(), out x); if (x == 0) break; // girilen değer 0 ise çık! Console.WriteLine(1 / x); } while (true);

10 10 Bir sürü sayının toplamını hesaplama int sayı, toplam = 0; while (true) /* sonsuz döngü*/ { Console.Write("bir sayı gir (durmak için 0): "); int.TryParse(Console.ReadLine(), out sayı); if (sayı == 0) break; /* döngünün dışına çık */ toplam += sayı; } Console.Write("toplam=" + toplam); 0 girilene kadar girilen sayının toplama eklenmesi isteniyor. Normalde sonsuz döngü, ancak kullanıcı 0 girince döngü break tarafından sonlandırılacaktır.

11 11 Girilen n sayısının asal olup olmadığını kontrol etme int n, i; Console.Write("Bir sayı giriniz: "); int.TryParse(Console.ReadLine(), out n); for (i = 2; i < n; i++) { if (n % i == 0) break; } if (i < n) Console.Write("{0} sayısı {1} sayısına bölünüyor", n, i); else Console.Write("{0} sayısı asaldır!",n); - Kendisi ve 1’den başka böleni olmayan sayılar asal sayılardır.

12 12 Bazen döngüyü bitirme koşulu olarak ta kullanılır. –Girilen sayının küpünü hesaplama: break (devam) int n; while (true) { Console.Write("bir sayı girin veya bitirmek için 0: "); int.TryParse(Console.ReadLine(), out n); if (n == 0) break; Console.WriteLine("n=" + n + ", n*n*n*=" + n * n * n); }

13 13 Döngüler iç-içe kullanılmış ise break sadece içinde kullanılan döngünün kod bloğunun dışına çıkarır. break (devam) for (…) { … while(…) { … break; // while den çıkar ama hala for döngüsünde … } … }

14 14 continue döngünün gövdesinde kullanılan yerden sonraki kısmı atlar ve kontrolü döngünün koşul kısmına alır. continue int sayı, adet = 0, toplam = 0; while (adet < 10) { Console.Write("Sayı Gir:"); int.TryParse(Console.ReadLine(), out sayı); if (sayı <= 0) continue; // kalan kısmı atlar adet++; toplam += sayı; } Console.WriteLine("Toplam = " + toplam); Klavyeden girilen 10 tane pozitif tam sayının toplamını ekrana yazma: Girilen sayı sıfırdan küçük veya eşit ise adet bir arttırılmayacak ve sayı toplama eklenmeyecektir.

15 continue x ve y bir birinden farklı olmak şartıyla |x|+|y|=4 eşitliğini sağlayan tamsayı çiftlerini ekrana yazdıran program: 15 int x, y; for (x = -4; x <= 4; x++) { for (y = -4; y <= 4; y++) { if (x == y) continue; //x=y ise atla if (Math.Abs(x) + Math.Abs(y) == 4) Console.WriteLine(x + "," + y); } -4,0 -3,-1 -3,1 -2,2 -1,-3 -1,3 0,-4 0,4 1,-3 1,3 2,-2 3,-1 3,1 4,0 -4,0 -3,-1 -3,1 -2,2 -1,-3 -1,3 0,-4 0,4 1,-3 1,3 2,-2 3,-1 3,1 4,0

16 16 Kontrolü keyfi olarak kodun içinde işaretlenmiş (etiketlenmiş) bir yere aktarmak için kullanılır. –goto ifadesinin kullanımı katı bir şekilde istenmez. –Kodu anlaşılmaz ve bakımı zor hale getirir. goto while (…){ … switch(…){ … goto dongu_tamam; /* break burada bizi sadece*/ … /* switch ten çıkarabilir */ } /* switch-sonu */ } /*while-sonu */ dongu_tamam: …

17 goto goto ifadesi C# programlama dilinde iyileştirilmiştir. goto ifadesi ile etiketlere, switch içinde ki case ve default durumlarına geçilebilir. 17

18 goto örnek: 18 int a ;... switch (a) { case 4: Console.Write("case 4'e geldi."); string b = Console.ReadLine(); Console.Write(b); break; case 5: Console.Write("case 5'ten case 4'e git"); goto case 4; default: Console.Write("default kısmı"); break; }

19 using System; class Program { static void Main() { Random r = new Random(); int s = r.Next(1, 11); int i = 0, sayı; tekrarla: Console.Clear(); Console.Write("Kalan Tahmin sayısı: " + (5 - i)); Console.WriteLine("\n 1 ile 10 arasında bir sayı giriniz:"); int.TryParse(Console.ReadLine(), out sayı); i++; if (sayı == s) goto tebrikler; if (i == 5) goto bulamadınız; else goto tekrarla; tebrikler: Console.WriteLine("Tebrikler {0}. tahminde buldunuz.", i); goto son; bulamadınız: Console.WriteLine("Tahmin hakkınız bitti. Kaybettiniz!"); son: Console.WriteLine("Oyun Bitti!"); Console.ReadLine(); } goto ile oyun: Bilgisayarın 1 ile 10 aralığında rastgele tuttuğu bir sayıyı 5 tahminde bulmak için yazılmış kod: 19

20 20 Sonsuz Döngüler Sınırsız sayıda tekrar eden döngülerdir. Koşul sürekli olarak sağlanırsa döngü sonsuz döngü olmuş olur. while (true) { … } do { … } while (true); for (;;) { … } while (1 < 2) { … } do { … }while (1 == 1); for (;true;) { … }

21 Sonsuz döngülerden nasıl çıkılır? 21 Peki bu tür döngülerden nasıl çıkabiliriz? –Basitçe döngünün bir yerlerine “break” koyarak. int n; while (true) { Console.Write("bir sayı girin veya bitirmek için 0: "); int.TryParse(Console.ReadLine(), out n); if (n == 0) break; Console.WriteLine("n=" + n + ", n*n*n*=" + n * n * n); }

22 DINLEDIĞINIZ IÇIN TEŞEKKÜRLER… Öğr. Gör. Bayram AKGÜL22


"BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL" indir ppt

Benzer bir sunumlar


Google Reklamları