= 1 ; i--) i++ yada i+=1 yazılabilir. i değişkeni döngü dışında geçerli olmayacaktır">

Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.

Benzer bir sunumlar


... konulu sunumlar: "BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği."— Sunum transkripti:

1 BİLGİSAYAR PROGRAMLAMA Ders 5: 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 ) { printf("%d\n", 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ı hesaplayıp görüntüleyen program main() { int toplam = 0; for (int i = 1; i <= 100; i += 1) { toplam += i; } printf("Toplam = %d", toplam); } Döngüde tek komut yer aldığı için { ve } (blok başı ve sonu simgeleri) kullanılmayabilirdi. i değişkeninin for döngüsü içinde tanımlanması C++ dilinde mümkündür. Program kodunuz cpp değil de c uzantılı kaydedildi ise derleme C dilinde yapılacak ve hata verecektir.

5 Girilen 15 sayıdan pozitif olanların adedini bulup görüntüleyen program main() // AKIŞ ŞEMASI: HAFTA 2, ÖRNEK 7 { int sayi, adet = 0; for (int i = 1; i <= 15; i++) { printf("%d. sayi : ", i); scanf("%d", &sayi); if (sayi >= 0) adet++; } printf("Pozitif adedi = %d", adet); }

6 Girilen 10 sayıdan en büyüğünü bulan ve görüntüleyen program main() // AKIŞ ŞEMASI: HAFTA 2, ÖRNEK 14 { int sayi, eb = 0; for (int i = 1; i <= 10; i++) { printf("%d. sayi : ", i); scanf("%d", &sayi); if (sayi > eb) eb = sayi; } printf("En buyuk sayi = %d", eb); } Kullanıcı tüm sayıları negatif girerse ne olur?

7 50 öğrencinin notlarının ortalamasını hesaplayıp görüntüleyen program main() // AKIŞ ŞEMASI: HAFTA 2, ÖRNEK 8 { int notu, ort, toplam = 0; for (int i = 1; i <= 50; i++) { printf("%d. not : ", i); scanf("%d", ¬u); toplam += notu; } ort = toplam / 50; printf("Notlarin ortalamasi = %d", ort); } "ort" değişkeni olmasaydı: printf("Notlarin ortalamasi = %d", toplam / 50);

8 Faktöriyel Programı main() // AKIŞ ŞEMASI: HAFTA 2, ÖRNEK 9 { int sayi, fakt, i; printf("Faktoriyeli bulunacak sayi:"); scanf("%d", &sayi); fakt = 1; for (i = 2; i <= sayi; i++) fakt = fakt * i; printf("%d! = %d", sayi, fakt); }

9 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.

10 WHILE ile Faktöriyel Programı main() // AKIŞ ŞEMASI: HAFTA 2, ÖRNEK 9 { int sayi, fakt = 1, i = 2; printf("Faktoriyeli bulunacak sayi:"); scanf("%d", &sayi); while (i <= sayi) { fakt = fakt * i; i++; } printf("%d! = %d", sayi, fakt); } Döngü sayısı belli olduğuna göre FOR döngüsü kullanmak daha mantıklıydı. for (i = 2; i <= sayi; i++)

11 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 );

12 Kullanıcı hatalı giriş yaptığı sürece tekrar giriş istenmesi döngüsü char i; printf("1) Toplama, 2) Cikarma, "); printf("3) Carpma, 4) Bolme, 5) Cikis"); do { printf("Islemi seçin [1-5]: "); i = getchar(); if (i == '5') exit(0); } while (i '5'); NOT: Geçen hafta 4 işlem programında GoTo kullanmak yerine bu kodu kullanabilirdik.

13 WHILE ile Asal Sayı Bulma main() { int sayi, i = 2; printf("Sayiyi giriniz : "); scanf("%d", &sayi); while (i <= sayi/2) { if (sayi % i == 0) break; // bölen bulundu i++; } if (i > sayi/2) printf("Sayi asal\n"); else printf("Sayi asal degil\n"); } Bu programda kullanıcının girdiği sayının 2’den büyük ve sayı/2’den küçük olan tüm sayılara tam bölünüp bölünmediği kontrol edilir.

14 FOR ile Asal Sayı Bulma main() { int sayi, i; printf("Sayiyi giriniz : "); scanf("%d", &sayi); for (i = 2; i <= sayi/2; i++) { if (sayi % i == 0) break; // bölen bulundu } if (i > sayi/2) printf("Sayi asal\n"); else printf("Sayi asal degil\n"); }

15 GOTO ile Asal Sayı Bulma main() { int sayi, i = 2; printf("Sayiyi giriniz : "); scanf("%d", &sayi); dongu: if (sayi % i == 0) goto son; // bölen bulundu if (i <= sayi/2) { i++; goto dongu; } son: if (i > sayi/2) printf("Sayi asal\n"); else printf("Sayi asal degil\n"); } 2. hafta "Kontrol İfadesiyle" ibaresi ile verilen akış şemaları GOTO ile döngü kurmanın örnekleriydi. Fakat GOTO yerine FOR yada WHILE kullanmak daha geçerli çözümdür.

16 Ödevler 1.Daha az sayıda döngü adımı ile asal sayı bulabilen bir algoritma geliştiriniz. 2.1 ile 1000 arasındaki asal ve mükemmel sayıları bulan ve ekranda görüntüleyen programı yazınız. (Mükemmel sayı: bölenlerinin toplamı kendisine eşit olan sayı = ).

17 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ız. 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ız. Ödevler


"BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği." indir ppt

Benzer bir sunumlar


Google Reklamları