Upload
roana
View
61
Download
3
Embed Size (px)
DESCRIPTION
BPR152 ALGORİTMA VE PROGRAMLAMA - II. Öğr . Gör. Bayram AKGÜL [email protected] 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ü - PowerPoint PPT Presentation
Citation preview
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Öğr. Gör. Bayram AKGÜ[email protected]
http://myo.bartin.edu.tr/akgul
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
• 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ı– an ifadesini hesaplama– 1 den N’ye kadar sayıların toplamı – 1 den N’ye kadar sayıların karelerini alma
Neden Döngüler?
4
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ı
5
1. Başla2. Toplamı 0 a eşitle3. Kullanıcıdan sayı girmesini veya 0 ile
durmasını iste. 4. Klavyeden girilen sayıyı oku5. Eğer sayı 0 değil ise
5.1. toplam = toplam + sayi5.2. 3. adıma git
6. Toplamı yazdır.7. Bitir
Bir dizi sayının toplamını hesaplama:Algoritma
6
Bir dizi sayının toplamını hesaplama:
Akış Diyagramı
Sayı gir veya 0 ile dur
Toplamı ekrana yazdır
sayı != 0?
H
Klavyeden Girilen Sayıyı oku
toplam = 0
toplam +=sayıE
Başla
Bitir
7
• 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.
Bir dizi sayının toplamını hesaplama:
Nasıl yapmalıyız?
8
• “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.
an yi nasıl hesaplarız?
9
1. Başla2. Kullanıcıdan “a” ve “n” girmelerini iste3. Sayacı 0 a eşitle 4. Sonucu 1 e eşitle /* sonuc = a0 = 1 */
5. (sayac < n) olduğu sürece tekrarla5.1. sonuc = sonuc * a; /* şimdi sonuc = asayac
*/5.2. sayac++;
6. Sonucu yazdır7. Bitir
an Hesaplama Algoritması
10
an Hesaplama Akış Diyagramı
sayac = 0
Başla
sonuc = 1
sayac < n?
“a” ve “n” değerlerini giriniz
sonucu yazdır
H
Bitir
E
sonuc *= a;
sayac++;
11
• “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.
an Hesaplama – Nasıl Yapmalıyız?
12
• C# ta döngü tanımlama– while döngüleri– do-while döngüleri– for dö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
C#’ta döngü yapıları
13
while Dö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;...
}
koşulE
Hifade1
ifade2
...
14
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);
Toplam+=n
Bitir
Toplamı yazdır
Bir sayi girin(n)
n != 0 ?
N
Y
Bir sayi girin(n)
Başla
an Hesaplamak için Kodint n, a, sayac = 0;int sonuc = 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);
sayac = 0
Başla
sonuc = 1
sayac < n?
“a” ve “n” değerlerini giriniz
sonuc yazdır
H
Bitir
E
sonuc *= a;
sayac++;
15
16
a = 3 ve n = 5 için kod izlemesiint n, sayac = 0;int a, sonuc = 1; string str;
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);
0 1
sayac sonuc3 5a n
0 < 5? True1 3
1 < 5? True2 9
2 < 5? True3 27
3 < 5? True4 81
5 < 5? False
4 < 5? True5 243
an Hesaplama: Alternatif Kod
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;
17
18
1. Kullanıcıdan “n” sayısını iste2. i = 1 /* İterasyon değişkeni*/ 3. toplam = 0 /* geçerli toplam*/
4. (i <= n) olduğu sürece tekrarla4.1. toplam += i;4.2. i++;
5. Toplamı yazdır
1+2+3+..+N işlemini hesaplamaAlgoritma
19
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);
i = 1
Başla
toplam = 0
i <= n?
“n” değerini gir
Toplamı yazdır
H
Bitir
E
toplam += i;
i++;
20
n=5 için Kod izleme
int n, i,toplam;string str;
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);
1 0
i top
1 <= 5? True2 1
2 <= 5? True3 3
3 <= 5? True4 6
4 <= 5? True5 10
6 <= 5? False
5 <= 5? True6 15
5
n
21
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++;
22
1 den N sayısına kadar Sayıların Kareleri Tablosunu
Oluşturma
+-----+-----+| i | i*i |+-----+-----+| 1| 1|| 2| 4|| 3| 9|| 4| 16|| 5| 25|| 6| 36|+-----+-----+
• 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
23
Kareler Tablosu için Kodint 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 çizgisiConsole.WriteLine("+-----+-----+");
i = 1
Başla
i <= n?
n değerini gir
Tablonun alt çizgisiniyazdır
H
Bitir
E
(i, i*i) yazdır
i++;
Başlığı yazdır
24
n=4 için kod izlemeConsole.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 çizgisiConsole.WriteLine("+-----+-----+");
1
i4
n
1 <= 4? True
+-----+-----+| i | i*i |+-----+-----+| 1| 1|| 2| 4|| 3| 9|| 4| 16|+-----+-----+
2
2 <= 4? True3
3 <= 4? True4
4 <= 4? True5
5 <= 4? False
25
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
26
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
DİNLEDİĞİNİZ İÇİN TEŞEKKÜRLER…
Öğr. Gör. Bayram AKGÜL 27