280 likes | 587 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 • whiledöngüsü • do-while döngüsü • for dö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
Neden Döngüler? • Programda bazı kodların tekrarlanmasını isteriz, bazen de koşul sağlandıkça bazı kodların tekrarlanmasını isteyebiliriz. • Aşağıdaki örnekleri düşünelim: • Klavyeden girilen bir sürü sayının toplamı • anifadesini hesaplama • 1 den N’ye kadar sayıların toplamı • 1 den N’ye kadar sayıların karelerini alma
Bir dizi sayının toplamını nasıl hesaplarız? • Klavyeden girilecek bir dizi sayının toplamını hesaplayacak bir algoritma yazalım. • Input • Bir sürü sayı (kaç tane olduğunu bilmiyoruz) • 0 sayı girişini bitirecek • Output • Girilen sayıların toplamı
Bir dizi sayının toplamını hesaplama:Algoritma • Başla • Toplamı 0 a eşitle • Kullanıcıdan sayı girmesini veya 0 ile durmasını iste. • Klavyeden girilen sayıyı oku • Eğersayı0 değil ise 5.1. toplam = toplam + sayi 5.2. 3. adıma git • Toplamı yazdır. • Bitir
Bir dizi sayının toplamını hesaplama: Akış Diyagramı Başla toplam = 0 Sayı gir veya 0 ile dur Klavyeden Girilen Sayıyı oku sayı!= 0? E toplam +=sayı H Toplamı ekrana yazdır Bitir
Bir dizi sayının toplamını hesaplama:Nasıl yapmalıyız? • Açıkçası biz kullanıcı 0 girene kadar 3, 4 ve 5. basamakların sürekli çalışmasını istiyoruz. • Bunun anlamı;3, 4 ve 5. adımları bir döngü içinde çalıştırmamız gerekiyor.
anyi nasıl hesaplarız? • “a” gerçek sayı, “n” tam sayı ve n>=0 olsun. • Örnek, 35 i hesapla. • 35 = 3*3*3*3*3 • sonuc değişkeni alalım ve ilk değeri 1 olsun. • sonuc = 1 (a0=1) • a sayısını kendisiyle çarp ve her çarpma işleminde bir say. • Sayacın ilk değeri = 0 • Sayaç “n” olunca “a” sayısını “n” defa kendisiyle çarpmışız demektir.
anHesaplama Algoritması • Başla • Kullanıcıdan “a” ve “n” girmelerini iste • Sayacı 0 a eşitle • Sonucu 1 e eşitle /* sonuc = a0 = 1 */ • (sayac < n) olduğu sürece tekrarla 5.1. sonuc = sonuc * a; /* şimdi sonuc = asayac */ 5.2. sayac++; • Sonucu yazdır • Bitir
Başla “a” ve“n”değerlerini giriniz sayac = 0 sonuc= 1 sayac < n? E H sonuc*= a; sonucu yazdır sayac++; Bitir anHesaplama Akış Diyagramı
anHesaplama – Nasıl Yapmalıyız? • “sayac” “n” değerine ulaşana kadar 5.1 ve 5.2 adımlarının tekrarlamalarını istiyoruz. • 5.1 ve 5.2 basamaklarını koşul sağlandıkça bir döngü içinde çalışmalarını istiyoruz.
C#’ta döngü yapıları • C# ta döngü tanımlama • whiledöngüleri • do-whiledöngüleri • fordöngüleri • foreach (listelerde ve koleksiyonlarda kullanılır) • Aşağıdaki yardımcı ifadeler döngülerin içerisinden çıkarmak için kullanılabilir. • break • continue • goto
H ifade1 koşul E ifade2 ... whileDöngüsü • While döngüsü koşul sağlandıkça çalışır; ta ki test edilen koşul false olursa döngü biter. • Döngünün kaç defa çalışacağı bilinmediği durumlarda kullanılır. • Kullanımı: while(koşul) { ifade1; ifade2; ... }
Y N Bir sürü sayının toplamını hesaplama:Akış diyagramı – kod int sayı, toplam =0; Console.Write("Bir sayı girin(durmak için 0):"); int.TryParse(Console.ReadLine(), out sayı); while (sayı !=0) { toplam += sayı; Console.Write("Sayı girin(durmak için 0):"); int.TryParse(Console.ReadLine(), out sayı); } Console.Write("Toplam ="+ toplam); Başla Bir sayi girin (n) n != 0 ? Toplam+=n Bir sayi girin (n) Toplamı yazdır Bitir
Başla “a” ve“n”değer lerini giriniz sayac = 0 sonuc= 1 sayac < n? E H sonuc*= a; sonucyazdır sayac++; Bitir anHesaplamak için Kod int n, a,sayac=0; intsonuc=1; // sonuc = a^0 Console.Write("a değerini gir:"); int.TryParse(Console.ReadLine(),out a); Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(), out n); while (sayac< n) { sonuc*= a; sayac++; } Console.Write("{0}^{1} = {2} ", a, n, sonuc);
a = 3 ve n = 5 için kod izlemesi int n, sayac=0; int a, sonuc=1; stringstr; Console.Write("a değerini gir:"); str=Console.ReadLine(); int.TryParse(str, out a); Console.Write("n değerini gir:"); str=Console.ReadLine(); int.TryParse(str, out n); while (sayac< n) { sonuc*= a; sayac++; } Console.Write("{0}^{1} = {2} ", a, n, sonuc); n sonuc sayac a 3 5 0 1 0 < 5? True 1 3 1 < 5? True 2 9 2 < 5? True 3 27 3 < 5? True 4 81 4 < 5? True 5 243 5 < 5? False
anHesaplama: AlternatifKod int n, sayac=0; 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); while (sayac< n) { sonuc*= a; sayac++; } Console.Write("{0}^{1} = {2} " , a, n, sonuc); while (sayac++< n) sonuc*= a;
1+2+3+..+N işlemini hesaplamaAlgoritma • Kullanıcıdan “n” sayısını iste • i = 1 /* İterasyon değişkeni*/ • toplam = 0 /* geçerli toplam*/ • (i <= n) olduğu sürece tekrarla 4.1. toplam += i; 4.2. i++; • Toplamı yazdır
Başla “n”değerini gir i = 1 toplam = 0 i <= n? E H toplam += i; Toplamı yazdır i++; Bitir 1+2+3+..+N Hesaplama:Akış Diyagramı ve Kod int n, i,toplam; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(),out n); i =1; toplam =0; while (i <= n) { toplam += i; i++; } Console.Write("Toplam = "+ toplam);
n=5 için Kod izleme n i top int n, i,toplam; stringstr; Console.Write("n değerini gir:"); str=Console.ReadLine(); int.TryParse(str, out n); i =1; toplam =0; while (i <= n) { toplam += i; i++; } Console.Write("Toplam = "+ toplam); 5 1 0 1 <= 5? True 2 1 2 <= 5? True 3 3 3 <= 5? True 4 6 4 <= 5? True 5 10 5 <= 5? True 6 15 6 <= 5? False
1+2+3+..+N: Alternatif Kod int n, i,toplam; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(), out n); i =1; toplam =0; while (i <= n) { toplam += i; i++; } Console.Write("Toplam = "+ toplam); while (i <= n) toplam += i++;
1 den N sayısına kadar Sayıların Kareleri Tablosunu Oluşturma • Girilen n sayısına kadar 1, 2, 3, 4, .., n sayıların karesini veren bir tablo oluşturalım. • n = 6 için görünüm aşağıdaki gibi olacak +-----+-----+ | i | i*i | +-----+-----+ | 1| 1| | 2| 4| | 3| 9| | 4| 16| | 5| 25| | 6| 36| +-----+-----+
Başla n değerini gir Başlığı yazdır i = 1 i <= n? E H (i, i*i) yazdır Tablonun alt çizgisini yazdır i++; Bitir Kareler Tablosu için Kod int i, n; Console.Write("n değerini gir:"); int.TryParse(Console.ReadLine(), out n); // tablo başlığı Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); Console.WriteLine("+-----+-----+"); i =1; while (i <= n) { // beş hanede sağa hizalayarak yazar Console.WriteLine("|{0,5}|{1,5}|", i, i * i); i++; } // tablonun alt çizgisi Console.WriteLine("+-----+-----+");
n=4 için kod izleme Console.WriteLine("+-----+-----+"); Console.WriteLine("| i | i*i |"); Console.WriteLine("+-----+-----+"); i =1; while (i <= n) { Console.WriteLine("|{0,5}|{1,5}|",i,i*i); i++; } // tablonun alt çizgisi Console.WriteLine("+-----+-----+"); n i 4 1 1 <= 4? True 2 2 <= 4? True 3 3 <= 4? True 4 +-----+-----+ | i | i*i | +-----+-----+ | 1| 1| | 2| 4| | 3| 9| | 4| 16| +-----+-----+ 4 <= 4? True 5 5 <= 4? False
whileÖrnek-1 int i =0; Console.WriteLine("C# programlamayı nasıl buldun"); while (i <10) { Console.WriteLine("C# Programlama çok zevkli!"); i++; } • 10 defa tekrarlar (0 dan 9’a kadar) • Aynı mesajı 10 defa yazar
whileÖrnek-2 int i =20; Console.WriteLine("C# programlamayı nasıl buldun"); while (i <10) { Console.WriteLine("C# Programlama çok zevkli!"); i++; } • 0 defa tekrarlar (i= 20, 10’dan küçük değil) • Hiç mesaj yazmayacak
Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL