kontrol yapilari

Kontrol Yapıları
if-else,
switch,
while,
for,
do-while
Kontrol Yapıları
Belirli koşullar gerçekleştiğinde belirli
işlemleri yapmak istenirse,
Belirli koşulun oluşması/oluşmaması
durumunda başka bir işlemin yapılmak
istenmesi durumunda,
if-else yapıları kullanılır.
if-else yapısı
if (<condition>)
{
<statement_true_1>;
...
<statement_true_N>;
}
else
{
<statement_false_1>;
...
<statement_false_N>;
}
 1. koşul doğru ise 1. ve 2.
ifadeler çağrılır,
 Koşul doğru değilse 3.ve4.
ifadeler çağrılır.
if (<condition>)
{
<statement_true_1>;
...
<statement_true_N>;
}
 Else koşulu zorunlu
değildir. Koşulun
tutmaması durumunda
herhangi bir şey yapılması
istenmezse yazılmasına
gerek yoktur.
 Koşul parantez
içinde yazılır.
Diğer bir kullanım (parantezsiz { })
if (<condition>)
<statement_true>;
else
<statement_false>;
if (<condition>)
<statement_true>;
•Tavsiye edilmez.
•Koşul sonrası sadece bir ifade varsa parantez
kullanılmayabilir.
Akış Diyagramı-if-else
Koşul
testi
Koşul doğru
Koşul yanlış
İfadeler(else)
İfadeler(if)
Sıradaki ifadeler
if-else örneği
Girilen iki sayının büyüğünü bulan programı
yazınız.
2 alternatif çözüm:
İf ve else ile(EnBuyuk1.cs)
Sadece if ile(EnBuyuk2.cs)
Boolean tipi ve ifadeler
 İf içerisindeki koşul boolean tipi olabilir.
Values are true or false
bool da int,double giib bir tiptir.
int
bool
“);
derece;
sicakMi= false;
Console.WriteLine(«Sıcaklık derecesini giriniz:
degrees = Convert.ToInt32(Console.ReadLine());
if (derece > 35)
{
sicakMi = true;
}
if-else kısaltma(?:)
 Örnek
Console.WriteLine( not >= 60 ? «Geçti" : «Kaldı" );
8
İçiçe if-else yapısı
 İçiçe if-else ifadeleri kullanılabilir
 Parantez kullanımı tavsiye edilir
Örnek
if ( not >= 90 )
Console.WriteLine( "A" );
else
if ( not >= 80 )
Console.WriteLine( "B" );
else
if ( not >= 70 )
Console.WriteLine( "C" );
else
if ( not >= 60 )
Console.WriteLine( "D" );
else
Console.WriteLine( "F" );
10
Örnek
if ( not >= 90 )
Console.WriteLine(
else if (not >= 80 )
Console.WriteLine(
else if (not >= 70 )
Console.WriteLine(
else if (not >= 60 )
Console.WriteLine(
else
Console.WriteLine(
"A" );
"B" );
"C" );
"D" );
"F" );
11
Havada kalan else
if ( x % 2 == 0)
if ( x < 0 )
Console.WriteLine("{0} negatif çift sayıdır“, x);
else
Console.WriteLine("{0} tek sayıdır“, x);
 Sorun nedir?
 Örnek x=4
Çözüm
if ( x % 2 == 0)
{
if ( x < 0 )
Console.WriteLine("{0} negatif çift sayıdır“, x);
}
else
{
Console.WriteLine("{0} tek sayıdır“, x);
}
Else kendisine en yakın if yapısına bağlanır. Parantez kullanımı
karışıklığı engeller.
switch ifadesi
Birden fazla seçim olduğunda kullanılır.
private void notHesaplayici( int not )
{
switch (not / 10 )
{
case 9:
// 90 notu
case 10:
// 100 notu
++aCount;
break;
case 8:
// Not 80-89 arası
++bCount;
break;
case 7:
++cCount;
break;
case 6:
++dCount;
break;
default:
//60dan az notlar F’dir
++fCount;
break;
}
} // metodun sonu
// çıkış
Akış Diyagramı-switch
While döngüsü
Console.WriteLine("Please enter a non-negative number");
inputnumber = Convert.ToInt32(Console.ReadLine());
if (inputnumber < 0)
{
Console.WriteLine(inputnumber + " is negative. Wrong Input");
}
 Belirli koşul devam ettiği müddetçe, içerideki ifadeleri çağırır.
 Negatif olmayan sayı isteyen ve koşul sağlanmadığında uyarı veren program.
Console.WriteLine("Please enter a non-negative number");
inputnumber = Convert.ToInt32(Console.ReadLine());
while (inputnumber < 0)
{
Console.WriteLine(inputnumber + " is negative! Try again");
inputnumber = Convert.ToInt32(Console.ReadLine());
}
Akış Diyagramı-while döngüsü
if (test)
{
ifadeler;
}
test
yanlış
while (test)
{
ifadeler;
}
doğru
İfadeler
Sıradaki ifadeler
test
yanlış
doğru
İfadeler
Sıradaki ifadeler
Niye döngüler?
 10 sayıyı toplamak
int
int
cin
sum
cin
sum
num1, num2, num3, num4, num5;
sum;
>> num1 >> num2 >> num3 >> num4 >> num5;
= num1 + num2 + num3 + num4 + num5;
>> num1 >> num2 >> num3 >> num4 >> num5;
+= num1 + num2 + num3 + num4 + num5;
Örnek düşünün:
100 ya da 1000 tane sayıyı toplama işlemi
döngülerle kolayca yapılabilir.
Örnek
 1 ile 10 arasındaki sayıları topla:
int toplam = 0;
int i = 1;
while (i <= 10)
{toplam = toplam + i;
i += 1;
}
Döngünün çalışması
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
Console.Write(sum);
i
1
2
sum
0
1
i<=10
true
false
sum=sum+i;
i=i+1;
Console.Write(sum);
Döngünün çalışması
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
Console.Write(sum);
i
2
3
sum
1
3
i<=10
true
false
sum=sum+i;
i=i+1;
Console.Write(sum);
Döngünün çalışması
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
Console.Write(sum);
i
3
4
sum
3
6
i<=10
true
false
sum=sum+i;
i=i+1;
Console.Write(sum);
cout<<sum;
Döngünün çalışması
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
Console.Write(sum);
i
10
11
sum
45
55
i<=10
true
false
sum=sum+i;
i=i+1;
Console.Write(sum);
cout<<sum;
while döngüsü kullanımı
<değer atama>
while (<test>)
{
<statement1>;
...
<statementN>;
<güncelleme>
}
while döngüsü örnek
 1-10 arası sayıların toplamı
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
Console.Write(sum);
İlk değerler
test
ifadeler
güncelleme
Örnek
total = 0;
gradeCounter = 1;
while ( gradeCounter <= 10 )
{
Console.Write( "Notu giriniz: " );
grade = Convert.ToInt32( Console.ReadLine() );
total = total + grade;
gradeCounter = gradeCounter + 1;
}
//
average = total / 10;
Sentinel
Belli koşul geldiğinde döngüden çıkılmak isteniyorsa,
sentinel değer kullanılır.
Genelde 0 ya da -1 sentinel değer olarak kullanılır.
Örnek
total = 0;
gradeCounter = 0;
Console.Write("Notları giriniz: Çıkmak için -1 giriniz");
grade = Convert.ToInt32(Console.ReadLine());
// sentinel değer=-1
while (grade != -1)
{
total = total + grade;
gradeCounter = gradeCounter + 1;
Console.Write("Notları giriniz: Çıkmak için -1 giriniz ");
grade = Convert.ToInt32(Console.ReadLine());
}
for ve while döngüleri
karşılatırması
<değer atama>
while (<test>)
{
<statement1>;
...
<statementN>;
<güncelleme>
}
for (<değer atama>;
<test>;
<güncelleme> )
{
<statement1>;
...
<statementN>;
}
Örnek
 1 ve10 arası sayıların toplamı(1 ve 10 dahil)
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
for döngüsü örneği
int sum = 0;
int i = 1;
while (i <= 10)
{
sum = sum + i;
i = i + 1;
}
int sum = 0;
for (int i=1; i <= 10; i=i+1)
{
sum = sum + i;
}
for döngüsü kullanımı
 Örnek
for ( int i = 2; i <= 20; total += i, i += 2 )
; // ifade
Hataları bulunuz
1. for (int i = 10; i < 5; i=i+1)
{
Console.WriteLine("Kaç kere basılır?");
}
2. for (int i = 10; i >= 1; i=i+1)
{
Console.WriteLine("Kaç kere basılır?");
}
1. int i = 1;
while (i < 20)
{
Console.WriteLine("Kaç kere basılır?");
}
Sonsuz Döngüler
 Problem nedir?num tek sayı olursa?
int num = Convert.ToInt32(Console.ReadLine());
int start = 0;
while (start != num)
{
start += 2;
Console.WriteLine(start);
}
 Çözüm:çift sayı olmasını kontrol etmek
if (num % 2 == 0)
{
while (start != num)
{ start += 2;
Console.WriteLine(start);
}
}
do-while döngüsü
 While gibi. Fark nedir?
<değer atama>
do
{
<statement1>;
...
<statementN>;
<update>
} while (<koşul>);
; unutma
 En az 1 kere ifade çalışır.
do
{
Console.WriteLine("[0..100] arası sayı girin");
num = Convert.ToInt32(Console.ReadLine());
} while (num < 0 || num > 100 );
foreach
Dizilerde anlatılacak.
break
• Döngüden çıkmak için
5 sayısında
döngüden çıkılır
39
continue
5'i atlamak için
40