Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.

Benzer bir sunumlar


... konulu sunumlar: "PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği."— Sunum transkripti:

1 PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği

2 Döngüler Belirli bir sayıda ya da belirli bir koşul sağlanana kadar arka arkaya yapılması gereken işlemler için döngüler kullanılır. Böylece bilgisayarın sürekli yapacağı işlemler için aynı komutları tekrar tekrar yazmak zorunda kalmayız. IF ve GOTO komutlarının birlikte kullanımı ile de döngü kurulabilir, fakat en doğru yol belirli bir sayıda işlem yapmak için FOR, belirli bir koşul sağlanana kadar işleme devam etmek için ise WHILE döngülerini kullanmaktır.

3 FOR Döngüsü for ( int i = A ; i <= B ; i = i + C ) {... } Örn: 1 ile 100 arasındaki tam sayıları görüntüleme: for ( int i = 1 ; i <= 100 ; i = i + 1 ) { Console.WriteLine(i) } Döngüde kontrol amaçlı kullanılan değişken Başlangıç Değeri Bitiş Değeri Artım Değeri 100’den 1’e görüntüleme: for (i = 100 ; i >= 1 ; i--) i++ yada i+=1 yazılabilir. i değişkeni döngü dışında geçerli olmayacaktır

4 1 ile 100 arasındaki sayıların toplamını bulan program static void Main(string[] args) { int i, toplam = 0; for (i = 1; i <= 100; i += 1) { toplam += i; } Console.WriteLine("Toplam = " + toplam); } Döngüde tek komut yer aldığı için { ve } (blok başı ve sonu simgeleri) kullanılmayabilirdi. i değişkeni for döngüsü öncesinde tanımlandığı için for döngüsüne ait bloğun dışında da kullanılabilir.

5 Faktöriyel Hesabı Programı static void Main(string[] args) { int sayi, f = 1, i; Console.Write("Faktöriyeli bulunacak sayı? "); sayi = Convert.ToInt32(Console.ReadLine()); for (i = 2; i <= sayi; i++) f = f * i; Console.WriteLine(sayi + "! = " + f); } Döngüde tek komut yer aldığı için { ve } (blok başı ve sonu simgeleri) kullanılmadı.

6 i, 2, sayı, 1 Faktöriyel Hesabının Akış Şeması Döngü sayısı belli ise akış şemalarında for döngüsü kullanımına benzer bir içerik yazıyoruz: Başla i,2,sayı,1 i f Dur sayı f=1 f=f*i Döngü Değişkeni Başlangıç değeri Bitiş değeri Artım değeri for (i = 2; i <= sayi; i++)

7 WHILE Döngüsü while ( koşul ) {... if ( koşul ) break;... } Verilen koşul doğru olduğu sürece döngü devam eder. Döngüden çıkmak için döngü içinde break ifadesi kullanılabilir (hem FOR hem de WHILE için geçerli). Eğer break bir if koşulu içinde kullanılmadıysa döngü bloğu içinde o satırın altındaki tüm satırlar gereksiz olacaktır.

8 WHILE’da koşulu döngü sonunda vermek Eğer döngüye koşul aranmadan girilmesi istenirse, döngünün sonunda da koşul kontrolü yapılabilir: do { … } while ( koşul );

9 Kullanıcı hatalı giriş yaptığı sürece tekrar giriş istenmesi döngüsü char i; Console.WriteLine("1) Toplama, 2) Çıkarma, 3) Çarpma, 4) Bölme, 5) Çıkış"); do { Console.Write("İşlemi seçin [1-5]: "); i = Console.ReadKey().KeyChar; Console.WriteLine(); if (i == '5') Environment.Exit(0); } while (i '5'); NOT: Geçen hafta 4 işlem programında GoTo kullanmak yerine bu kodu kullanabilirdik. ReadKey alt satıra almadığı için gerekli

10 i,2,sayı-1,1 i Başla sayı sayi%i=0 Evet Hayır Dur sayi=i Evet Sayı asal Sayı asal değil Hayır Girilen sayının asal olup olmadığını bulan akış şeması Döngü içinde verdiğimiz sayi%i=0 (sayi mod i = 0) koşulu sağlandı ise asal olmadığı kesinleştiğinden, diğer sayılar için kontrol yapılmadan döngüden çıkılır. Bu döngünün daha az adımda çalışması sağlanabilir mi? Bir sayı yarısından büyük bir sayıya tam bölünemeyeceği için sayi-1 yerine sayi/2 ye kadar döngü daha mantıklı olacaktır. Kullanıcının girdiği sayının 2’den büyük ve sayı-1’den küçük olan tüm sayılara tam bölünüp bölünmediği kontrol edilir. Eğer i değişkeni sayi-1'i geçip sayi değerine ulaştıysa döngü sonuna kadar gidilmiş ve hiç bölen bulunamamış, yani sayı asal anlamına gelir.

11 WHILE ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i = 2; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); while (i <= sayi/2) { if (sayi % i == 0) break; // bölen bulundu i++; } if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n"); } Döngü sayısı belli olduğuna göre FOR döngüsü kullanmak daha mantıklı olur

12 FOR ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); for (i = 2; i <= sayi/2; i++) { if (sayi % i == 0) break; // bölen bulundu } if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n"); }

13 GOTO ile Asal Sayı Bulma static void Main(string[] args) { int sayi, i = 2; Console.Write("Sayıyı giriniz : "); sayi = Convert.ToInt32(Console.ReadLine()); döngü: if (sayi % i == 0) goto son; // bölen bulundu if (i <= sayi/2) { i++; goto döngü; } son: if (i >= sayi/2) Console.Write("Sayı asal\n"); else Console.Write("Sayı asal değil\n"); } Görüldüğü gibi GOTO ile de döngü kurulabilir ama yapılmaması tavsiye edilir

14 Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen akış şemaları IF…GOTO FOR Döngüsü i<15 Evet Başla adet Dur sayı adet=adet+1 i=1, adet = 0 i=i+1 Başla sayı i,1,15,1 i sayı>=0 Hayır Evet adet=adet+1 sayı>=0 Hayır Evet adet Dur adet = 0

15 Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen program static void Main(string[] args) { int sayi, adet = 0; for (int i = 1; i <= 15; i++) { Console.Write(i + ". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi >= 0) adet++; } Console.Write("Pozitif adedi = " + adet); }

16 Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen program static void Main(string[] args) { int sayi, i = 1, adet = 0; döngü: Console.Write(i + ". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi >= 0) adet++; if (i < 15) { i++; goto döngü; } Console.Write("Pozitif adedi = " + adet); } Sonraki derslerimizde tekrar etmesi gereken işlemleri bu şekilde IF…GOTO ile değil, FOR ve WHILE döngü ifadeleri ile yapacağız.

17 Girilen 10 sayıdan en büyüğünü bulan ve görüntüleyen akış şeması Kontrol İfadesiyleDöngü İfadesiyle i<10 Evet Başla eb Dur sayı eb=sayı i=1, eb=0 i=i+1 Başla sayı i,1,10,1 i sayı>eb Hayır Evet eb=sayı sayı>eb Hayır Evet eb Dur Programı ödev olarak verilmişti Programı sonraki slaytta

18 Girilen 10 sayıdan en büyüğünü bulan ve görüntüleyen program static void Main(string[] args) { int sayi, eb = 0; for (int i = 1; i <= 10; i++) { Console.Write(i +". sayı : "); sayi = Int32.Parse(Console.ReadLine()); if (sayi > eb) eb = sayi; } Console.Write("En büyük sayı = " + eb); } Kullanıcı tüm sayıları negatif girerse ne olur?

19 50 öğrencinin notlarının ortalamasını bulan akış şeması Başla not i,1,50,1 i toplam=toplam+not ortalama Dur ortalama=toplam/50 toplam = 0

20 50 öğrencinin notlarının ortalamasını hesaplayıp görüntüleyen program static void Main(string[] args) { int notu, ortalama, toplam = 0; for (int i = 1; i <= 50; i++) { Console.Write(i + ". not : "); notu = Convert.ToInt32(Console.ReadLine()); toplam += notu; } ortalama = toplam / 50; Console.Write("Notların ortalaması = " + ortalama); } ortalama değişkeni olmasaydı: Console.Write("Notların ortalaması = " + toplam/50);

21 Ödevler 1.Sayının yarısına kadar değil, daha da az sayıda döngü adımı ile asal sayı bulabilen bir yöntem bulun. 2.1 ile 1000 arasındaki asal ve mükemmel sayıları bulan ve ekranda görüntüleyen programı yazın. (Mükemmel sayı: bölenlerinin toplamı kendisine eşit olan sayı = ).

22 3.Kullanıcıdan 2 sayı alıp bu sayıların en büyük ortak bölenini ve en küçük ortak katını bulan programı yazın. 4.Fibonacci serisi 0 ve 1 ile başlayıp, bir elemanın değerinin kendisinden önceki iki elemanın toplanması ile oluşturulduğu bir seridir: Kullanıcının klavyeden girdiği sayıda Fibonacci serisi elemanını gösteren programı yazın. Ödevler


"PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği." indir ppt

Benzer bir sunumlar


Google Reklamları