Döngü Yapıları-2

Download Report

Transcript Döngü Yapıları-2

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ü
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
2
do while ifadesi
• While döngüsü, döngünün başında -başlamadan öncekarşılaştırma durumuna göre çalışır.
• Bazı durumlarda döngü bir kere çalıştıktan sonra
devam edip etmemeye karar vermek isteriz. Bu
durumlarda do while döngüsü kullanılır.
– Bu demek oluyor ki döngünün gövdesi en az bir kere
çalışıyor.
• Yazım Kuralı:
ifade1
do
{
ifade1;
ifade2;
...
} while(koşul);
ifade2
...
koşul
Y
N
3
Şifre Sorma(1)
• Örneğin, kullanıcı doğru şifreyi girene kadar
kullanıcıdan şifre girmesini isteyelim:
/* while kullanarak ...*/
string SIFRE = "123456";
string sifre;
Console.Write("Şifreyi girin:");
sifre = Console.ReadLine();
while (sifre != SIFRE)
{
Console.Write("Şifreyi girin:");
sifre = Console.ReadLine();
}
• Burda şifreyi en
az bir kere
soruyoruz!
– While döngüsü
kullanmak ile
Console.Write,
Console.ReadLine
ifadelerini
tekrarlıyoruz.
Console.Write("şifre OK");
4
Şifre Sorma(2)
• do-while ile aynı döngü
/* do-while kullanarak …*/
string SIFRE = "123456";
string sifre;
do
{
Console.Write("Şifreyi girin:");
sifre = Console.ReadLine();
} while (sifre != SIFRE);
Console.Write("şifre OK");
• Fark gayet açık…
5
do while Örnek-1
• Bir pozitif tam sayı iste
int sayi;
do
{
Console.Write("Bir pozitif tam sayı gir: ");
int.TryParse(Console.ReadLine(), out sayi);
} while (sayi <= 0);
Sayı 0’dan küçük eşit olduğu sürece sayıyı tekrar tekrar isteyecek.
6
do while örnek-2:
int i = 0;
Console.Write("C# Programlamayı nasıl buldun?");
do
{
Console.Write("C# Programlama çok zevkli!");
i++;
} while (i < 10);
• 10 defa tekrarlar (0 dan 9 a kadar)
• Aynı mesajı 10 defa tekrarlar
7
do while örnek-3:
int i = 20;
Console.Write("C# Programlamayı nasıl buldun?");
do
{
Console.Write("C# Programlama çok zevkli!");
i++;
} while (i < 10);
• 1 kere tekrarlar (i = 20 için)
• Aynı mesajı bir kere yazar
8
do while örnek-4:
string opsiyon = " ";
do
{
Console.WriteLine("---------------------------");
Console.WriteLine("Opsiyonlardan birini seçin:");
Console.WriteLine("(a) Not hesapla");
Console.WriteLine("(b) Ortalama hesapla");
Console.WriteLine("(c) Notları yazdır");
Console.WriteLine("(x) çıkış");
Console.WriteLine("---------------------------");
opsiyon = Console.ReadLine();
if (opsiyon == "a") ...
else if (opsiyon == "b") ...
else if (opsiyon == "c") ...
else ...
} while (opsiyon != "x");
9
while ile do while
arasındaki fark nedir?
while
do while
Döngüye koymak için kontrol eder
Döngüden çıkarmak için kontrol eder.
Döngü çalışabilir veya çalışmaz
Döngü en az bir kere çalışır
10
for Döngüsü
• Daha sık kullanılır
• Döngünün belli bir sayıda çalışmasını istiyorsak
kullanırız.
– Örneğin döngünün N defa çalışmasını istiyoruzdur.
• Yazım Kuralı:
for(başlangıç değerleri; koşul; değiştirme listesi)
{
ifade1;
ifade2;
...
}
11
for akış diyagramı, ve while eşiti
for(ilk değer;koşul;değiştir)
{
ifade1;
ifade2;
...
}
İlk değer;
while(koşul)
{
ifade1;
ifade2;
...
değiştir;
}
İlk değer
koşul
H
E
ifade1
ifade2
...
değiştir
12
for Örneği
• Problem: 1 den 10’a kadar sayıları yazdır
Başla
int sayı;
for(sayı = 1; sayı <= 10; sayı++)
{
Console.Write(sayı);
}
sayı = 1
sayı <= 10
output:
N
1 2 3 4 5 6 7 8 9 10
Y
Sayıyı
yazdır
sayı++
Bitir
13
for ifadesinin kullanımı
• For ifadesi genellikle bir değişkeni artırmak veya
azaltmak için en iyi tercihtir.
for (i=0; i<N; i++) …
• 0 dan N-1 e kadar sayar
for (i=1; i<=N; i++) …
• 1 den N e kadar sayar
for (i=N-1; i>=0; i--) …
• N-1 den 0 a kadar sayar
for (i=N; i>=1; i--) …
• N den 1 e kadar sayar
14
an Hesaplamak için Kod
int n, sayac;
double a, sonuc = 1; // sonuc = a^0
Başla
“a” ve “n” değerlerini
giriniz
Console.Write("a değerini gir:");
double.TryParse(Console.ReadLine(),out a);
sayac = 0
Console.Write("n değerini gir:");
int.TryParse(Console.ReadLine(),out n);
sonuc = 1
sayac < n?
H
sonuci yazdır
E
sonuc *= a;
sayac++;
for (sayac = 0; sayac < n; sayac++)
{
sonuc *= a;
}
Console.Write("{0}^{1} = {2}",a,n,sonuc);
Bitir
15
for Örnek: an Hesaplama
sonuc = 1;
for(i=1; i<=N; i++)
{
sonuc *= a;
}
Başla
a
3
n
5
1 <= 5?  True
2 <= 5?  True
i
1
sonuc
1
2
3
3
9
4
27
5
81
6
243
i=1
3 <= 5?  True
i <= N
H
sonucu
yazdır
E
sonuc *=a;
i++
4 <= 5?  True
5 <= 5?  True
Bitir
6 <= 5?  False
16
for döngüsü ile 1+2+3+..+N
Akış Diyagramı ve Kod
Başla
int n, i,toplam;
“n” değerini giriniz
Console.Write("n değerini gir:");
int.TryParse(Console.ReadLine(),out n);
i=1
toplam = 0
i <= n?
H
Toplamı yazdır
E
toplam += i;
toplam = 0;
for (i = 1; i <= n; i++)
{
toplam += i;
}
Console.Write("Toplam = " + toplam);
i++;
Bitir
17
Not
• for parantezleri içerisinde değişken
tanımlaması yapılabilir.
for (int i = 1; i <= n; i++)
{
toplam += i;
}
• for döngü bloğunda sadece bir tek ifade
varsa süslü parantezleri kullanmak zorunda
değilsiniz.
for (int i = 0; i <= n; i++)
toplam += i;
18
for döngüsü ile 1+2+3+..+N
toplamını hesaplama - 2
int n, toplam;
Console.Write("n değerini gir:");
int.TryParse(Console.ReadLine(), out n);
toplam = 0;
for (int i = 1; i <= n; i++)
toplam += i;
Console.Write("Toplam = " + toplam);
19
for döngüsü ile Kareler Tablosu
Başla
int n;
Console.Write("n değerini gir:");
int.TryParse(Console.ReadLine(),out n);
n değerini giriniz
// tablo başlığı
Console.WriteLine("+-----+-----+");
Console.WriteLine("| i | i*i |");
Console.WriteLine("+-----+-----+");
Başlığı yazdır
i=1
i <= n?
E
H
Tablonun alt çizgisini
yazdır
(i, i*i) yazdır
i++;
for (int i = 1; i <= n; i++)
{
// beş hanede sağa hizalayarak yazar
Console.WriteLine("|{0,5}|{1,5}|"
, i, i * i);
}
// tablonun alt çizgisi
Console.WriteLine("+-----+-----+");
Bitir
20
Kareler Tablosu Yazdırma
Console.WriteLine("+-----+-----+");
Console.WriteLine("| i | i*i |");
Console.WriteLine("+-----+-----+");
for (int i = 1; i <= n; i++)
Console.WriteLine("|{0,5}|{1,5}|", i, i * i);
Console.WriteLine("+-----+-----+");
+-----+-----+
| i | i*i |
+-----+-----+
|
1|
1|
|
2|
4|
|
3|
9|
|
4|
16|
|
5|
25|
|
6|
36|
+-----+-----+
n=6 için Sonuç
21
for kullanım örnekleri
• Problem: 1+2+3+4+…+N işlemini hesapla
toplam = 0;
for(i=1; i<=N; i++)
{
toplam += i;
}
• İlk değer (i=1), kontrol(i<=N) ve değiştir(i++)
ifadelerin her biri opsiyoneldir ve yazılmayabilir.
toplam=0;
i=1;
for(; i<=N; i++)
{
toplam += i;
}
toplam=0;
for(i=1; i<=N;)
{
toplam += i++;
}
i=1;
toplam=0;
for(; i<=N;)
{
toplam += i++;
}
22
DINLEDIĞINIZ IÇIN
TEŞEKKÜRLER…
Öğr. Gör. Bayram AKGÜL
23