Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BPR152 ALGORİTMA VE PROGRAMLAMA - II

Benzer bir sunumlar


... konulu sunumlar: "BPR152 ALGORİTMA VE PROGRAMLAMA - II"— Sunum transkripti:

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

2 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

3 İç içe döngüler Döngüleri bir biri içinde kullanabiliriz
Çoğu programlarda bu durum gerekiyor. Örnek: çarpım tablosu Sütunlar | *| 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| Satırlar

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 */ { 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*/

5 Faktöriyel hesaplama n! = 1*2*3* .. *n
int fakt = 1; for (int i = 1; i <= n; i++) fakt *= i; 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

6 Faktöriyel hesaplama n değeri:8 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24
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! = 5040 8! = 40320

7 İç içe döngüler devam Aşağıdaki şekli yapacak kod int n;
1 1 2 1 2 3 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 Döngü içinde break kullanımı
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.

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: 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 Bir sürü sayının toplamını hesaplama
0 girilene kadar girilen sayının toplama eklenmesi isteniyor. 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); Normalde sonsuz döngü, ancak kullanıcı 0 girince döngü break tarafından sonlandırılacaktır.

11 Girilen n sayısının asal olup olmadığını kontrol etme
- Kendisi ve 1’den başka böleni olmayan sayılar asal sayılardır. 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);

12 break (devam) Bazen döngüyü bitirme koşulu olarak ta kullanılır.
Girilen sayının küpünü hesaplama: 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 break (devam) 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. for (…) { while(…) break; // while den çıkar ama hala for döngüsünde }

14 continue 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. 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: -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 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); }

16 goto 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. 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.

18 goto örnek: 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ı"); }

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:

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?
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ÜL


"BPR152 ALGORİTMA VE PROGRAMLAMA - II" indir ppt

Benzer bir sunumlar


Google Reklamları