akış konrol mekanizmaları - klupersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...c#...

30
Akış Konrol Mekanizmaları Akış Konrol Mekanizmaları 1 Programlama Dilleri 3

Upload: others

Post on 14-Jul-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Akış Konrol MekanizmalarıAkış Konrol Mekanizmaları

1Programlama Dilleri 3

Page 2: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Koşul İfadeleriKoşul İfadeleri

Programlar içersinde bazı durumlarda programıng ç p gakışının değişmesi ya da farklı işlemlerinyapılması gerekebilir. Bazen de seçimlerinyapılması ya da belirli işlemlerin belli sayıdatekrar edilmesi gerekebilir.

Bu gibi işlemleri gerçekleştirmek için koşulifadeleri ve döngü yapıları kullanılırifadeleri ve döngü yapıları kullanılır.

2Programlama Dilleri 3

Page 3: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

C# dilinde koşula bağlı olarak işlemlergerçekleştirmek için iki farklı deyimkullanılabilir:

– if deyimiy

– switch deyimi

3Programlama Dilleri 3

Page 4: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

If DeyimiIf Deyimi

Program akış kontrol deyimlerinin başında gelir.g ş y ş gKoşula göre değişik işlemlerin yapılmasını sağlar.Basit kullanımı:

• if (Koşul)Koşul_doğru_ise_yapılacaklar

elseKoşul yanlış ise yapılacaklarKoşul_yanlış_ise_yapılacaklar

4Programlama Dilleri 3

Page 5: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;using System;

class if_1class if_1{{

static void Main()static void Main(){{{{

int x, y;int x, y;

Console.Write("1. Sayıyı Girin:");Console.Write("1. Sayıyı Girin:");x = Convert.ToInt32(Console.ReadLine());x = Convert.ToInt32(Console.ReadLine());

Console.Write("2. Sayıyı Girin:");Console.Write("2. Sayıyı Girin:");y = Convert ToInt32(Console ReadLine());y = Convert ToInt32(Console ReadLine());y = Convert.ToInt32(Console.ReadLine());y = Convert.ToInt32(Console.ReadLine());

if (x > y)if (x > y)Console.WriteLine("Console.WriteLine("\\n1. Sayı Büyük");n1. Sayı Büyük");

elseelseConsole.WriteLine("Console.WriteLine("\\n2. Sayı Büyük");n2. Sayı Büyük");

}}}}}}

5Programlama Dilleri 3

Page 6: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

if deyimi else olmadan da kullanılabilirif deyimi else olmadan da kullanılabilir.

if d l if d l i d bi d f lif ya da else ifadelerinden sonra birden fazlaişlem yapılmak isteniyorsa blok kullanılabilir.

Programın akışı birden fazla koşula göredeğişecek ise “else if” ifadeleri eklenebilirdeğişecek ise else if ifadeleri eklenebilir.

Bi d f l if d i i i i k ll l k k kBirden fazla if deyimi iç içe kullanılarak karmaşıkkoşulların kontrol edilmesi sağlanabilir.

6Programlama Dilleri 3

Page 7: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

f d l k llif deyiminin en ayrıntılı kullanımı:

if (koşul)if (koşul){ İfadeler }

else if (koşul){ İfadeler }{ İfadeler }

else if (koşul){ İfadeler }

………else

{ İfadeler }

7Programlama Dilleri 3

Page 8: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class if_2{

static void Main(){

int not;

Console.Write("Notunuzu Girin (0-100) :");not = Convert.ToInt32(Console.ReadLine());

if (not >= 0 && not < 40)Console.WriteLine("FF");

else if (not >= 40 && not < 50)Console.WriteLine("FD");

else if (not >= 50 && not < 55)Console.WriteLine("DD");

else if (not >= 55 && not < 60)Console.WriteLine("DC");

else if (not >= 60 && not < 70)Console.WriteLine("CC");

else if (not >= 70 && not < 80)Console.WriteLine("CB");

else if (not >= 80 && not < 85)( )Console.WriteLine("BB");

else if (not >= 85 && not < 90)Console.WriteLine("BA");

else if (not >= 90 && not <= 100)Console.WriteLine("AA");( );

elseConsole.WriteLine("Geçersiz Not Girdiniz...");

}} 8Programlama Dilleri 3

Page 9: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;class if_3{

static void Main(){

string secim;gint s1, s2;

Console.Write("1.Sayıyı Girin:");s1 = Convert.ToInt32(Console.ReadLine());Console.Write("2.Sayıyı Girin:");s2 = Convert.ToInt32(Console.ReadLine());

İConsole.WriteLine("\nİşleminizi Seçin:\n=================");Console.WriteLine("Toplama (t)");Console.WriteLine("Çıkarma (ç)");Console.WriteLine("Çarpma (x)");Console.WriteLine("Bölme (b)");Console.WriteLine("Mod Alma (m)");secim = Console.ReadLine();

if (secim == "t")Console.WriteLine("Toplam = {0}", s1 + s2);

else if (secim == "ç")Console.WriteLine("Fark = {0}", s1 - s2);

else if (secim == "x")Console.WriteLine("Çarpım = {0}", s1 * s2);

l if ( i "b")else if (secim == "b"){

if (s2==0)Console.WriteLine("Bölen 0 olamaz...");

elseConsole.WriteLine("Bölüm = {0}",(float)s1 / (float)s2);

}else if (secim == "m")else if (secim == "m"){

if (s2 == 0)Console.WriteLine("Bölen 0 olamaz...");

elseConsole.WriteLine("Mod = {0}", s1 % s2);

}elseelse

Console.WriteLine("Yanlış İşlem Seçtiniz...");}

}

9Programlama Dilleri 3

Page 10: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Switch DeyimiSwitch DeyimiBir ifadenin alabileceği değişik değerlere göre işlemlergerçekleştirmek için kullanılan deyimdir Karmaşık if ifadelerini dahagerçekleştirmek için kullanılan deyimdir. Karmaşık if ifadelerini dahasade bir şekilde ifade etmeyi de sağlayabilir. Kullanımı:

switch (ifade){case sabit1 :

deyimler;b kbreak;

case sabit2 :deyimler;break;break;

……default :

deyimler;deyimler;break;

} 10Programlama Dilleri 3

Page 11: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Bir switch yapısında break, case, switch ve gotoanahtar sözcükleri kullanılır.

Switch bloğu bir ifadenin üreteceği değerleregöre programın akışını dallandırır.

11Programlama Dilleri 3

Page 12: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;using System;

class switch_1class switch_1{{{{

static void Main()static void Main(){{

Console.Write("Bir sayı girin:");Console.Write("Bir sayı girin:");int sayi = Convert.ToInt32(Console.ReadLine());int sayi = Convert.ToInt32(Console.ReadLine());

switch (sayi)switch (sayi){{

case 1:case 1:case 2:case 2:case 2:case 2:

Console.WriteLine("Case 1 ve 2");Console.WriteLine("Case 1 ve 2");break;break;

case 3:case 3:Console.WriteLine("Case 3");Console.WriteLine("Case 3");44case 4:case 4:

Console.WriteLine("Case 4");Console.WriteLine("Case 4");goto case 5;goto case 5;

case 5:case 5:Console.WriteLine("Case 5");Console.WriteLine("Case 5");( );( );break;break;

default:default:Console.WriteLine("Default");Console.WriteLine("Default");break;break;

}}}}}}

}}12Programlama Dilleri 3

Page 13: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

switch ifadesi kullanırken dikkat edilecek bazı kurallar vardır:– case sözcüğünden sonra gelen ifadeler sabit olmak

zorundadırzorundadır.– case ifadeleri tamsayı, karakter ya da string sabitler

olabilir.default ve case ifadeleri istenilen sırada yazılabilir– default ve case ifadeleri istenilen sırada yazılabilir.

– Aynı switch bloğu içersinden birden fazla aynı case ifadesibulunamaz.d f l k ll k l d ğildi– default kullanmak zorunlu değildir.

– Akışı bir case ifadesinden bir başka case ifadesineyönlendirmek için mutlaka goto anahtar sözcüğü kullanılır.

13Programlama Dilleri 3

Page 14: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

DöngülerDöngüler

Program içersinde belirli işleri tekrar tekrarProgram içersinde belirli işleri tekrar tekraryapılmasını sağlayan kod bloklarıdır. Döngülersonsuz olabileceği gibi belli bir koşul ile kontroletmek de mümkündür. C# dilinde dört tip döngüyapısı bulunur:– for

– while

do while– do while

– foreach

14Programlama Dilleri 3

Page 15: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

for Döngüsü

En çok kullanılan döngü deyimlerinden biridir Kullanımı:

for Döngüsü

En çok kullanılan döngü deyimlerinden biridir. Kullanımı:

• for (ifade1; ifade2; ifade3) işlem;

Ya da

• for (ifade1; ifade2; ifade3)

{{

işlemler…

}

15Programlama Dilleri 3

Page 16: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

for döngü tanımlamasında iki “;” ile ayrılmış üç ifadefor döngü tanımlamasında iki ; ile ayrılmış üç ifadebulunur. Bunlardan bazıları boş olabilir fakat mutlaka “;”işaretleri kullanılmalıdır.

İlk ifade bir defaya mahsus olmak üzere çalıştırılır.Genelde döngü değişkeninin tanımlanması ya da ilkd ğ t i i k ll ldeğer ataması için kullanılır.

İkinci ifade ise döngünün kontrol edildiği kısımdır.g ğBuradaki ifade “true” değer ürettiği sürece döngü devameder.

Son ifade ise genelde döngü değişkeninin değerinindeğiştirildiği kısımdır.

16Programlama Dilleri 3

Page 17: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;using System;

class for_1{{

static void Main(){

Console.Write("Bir sayı girin:");y gint n = Convert.ToInt32(Console.ReadLine());int toplam = 0;

for (int i = 1; i <= n; i++)toplam = toplam + i;

C l W it Li ("1\'d {0}\' k d lConsole.WriteLine("1\'den {0}\'e kadar olansayıların toplamı {1}\'dir.", n, toplam);

}}}

17Programlama Dilleri 3

Page 18: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class for 2class for_2{

static void Main(){

string s;

for (s = Console.ReadLine(); s != "Çıkış";s = Console.ReadLine())

Console.WriteLine(s);}}

}

18Programlama Dilleri 3

Page 19: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class for_3{

static void Main(){{

int i=0, a, n;

Console.Write("Bir Sayı Girin :");n = Convert.ToInt32(Console.ReadLine());

Console.Write("Artım Miktarı :");a = Convert ToInt32(Console ReadLine());a = Convert.ToInt32(Console.ReadLine());

for (; i < n; ){

Console.Write("{0} ", i);i += a;

}}}

}

19Programlama Dilleri 3

Page 20: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class for_4{{

static void Main(){

int k, t, toplam, n1, n2;

Console Write("Aralık başlangıcı :");Console.Write("Aralık başlangıcı :");n1 = Convert.ToInt32(Console.ReadLine());

Console.Write("Aralık Sonu :");n2 = Convert.ToInt32(Console.ReadLine());

if (n1 <= n2){

for (k = n1; k <= n2; k++){{

toplam = 0;for (t = 1; t <= k; t++) { if (k % t == 0) toplam = toplam + t; }if (toplam == k + 1) Console.WriteLine(k);

}}else{

Console.WriteLine("Geçerli bir aralık giriniz...");}}

}}

20Programlama Dilleri 3

Page 21: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class for_5{

static void Main()static void Main(){

int sayi;

Console.Write("Bir tamsayı giriniz :");sayi = Convert.ToInt32(Console.ReadLine());

for (int bit = 32; bit >= 1; bit--)( ; ; ){

Console.Write("{0}", (sayi >> bit - 1) & 1);}C l W it Li ()Console.WriteLine();

}}

21Programlama Dilleri 3

Page 22: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

while Döngüsü

Bir başka döngü deyimidir. Belirtilen koşul doğru olduğu 

while Döngüsü

sürece çalışmasına devam eder.• while (koşul) 

işlem;ş ;

veya

• while (koşul)

{{

işlemler…

}

22Programlama Dilleri 3

Page 23: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class while_1{{

static void Main(){

int i=0;

while (i < 1000){

i += 5;i + 5;Console.Write("{0,5}",i);if (i % 50 == 0) Console.WriteLine();

}}}

}

23Programlama Dilleri 3

Page 24: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

do-while Döngüsüfor ve while döngülerinde koşul sağlanmadığı durumlarda döngübloğu hiç çalıştırılmaz. Bazı durumlarda ise döngünün en az bir kez

do while Döngüsü

ğ ç ç ş gçalıştırılması gerekebilir. Bu durumda do while kullanılabilir.

• doişlemş

while (koşul);ya da• do{

işlemler…} while (koşul);} while (koşul);

24Programlama Dilleri 3

Page 25: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class do_while_1{

static void Main(){

int secim;

do {

Console.WriteLine("İşlemler\n========");Console.WriteLine("1 - Toplama");Console.WriteLine("2 - Çıkarma");C l W it Li ("3 Ç ")Console.WriteLine("3 - Çarpma");Console.WriteLine("4 - Bölme");Console.WriteLine("0 - Çıkış\n");Console.Write("İşleminizi Seçin:");secim = Convert.ToInt32(Console.ReadLine());switch (secim){

case 1: Console.WriteLine("Toplama işlemi seçildi."); break;case 2: Console.WriteLine("Çıkarma işlemi seçildi."); break;case 3: Console WriteLine("Çarpma işlemi seçildi "); break;case 3: Console.WriteLine( Çarpma işlemi seçildi. ); break;case 4: Console.WriteLine("Bölme işlemi seçildi."); break;case 0: Console.WriteLine("Çıkış seçildi."); break;default: Console.WriteLine("Yanlış seçim."); break;

}}while(secim != 0);

}} 25Programlama Dilleri 3

Page 26: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

foreach DöngüsüFarklı bir döngü yapısıdır. Koleksiyon tabanlı nesneler içersinde adım adım dolaşılmasını

foreach Döngüsü

nesneler içersinde adım adım dolaşılmasını sağlar.

Bu döngü elemanlara tek tek ulaşım sağlar fakat ulaşılan elemanlar sadece okunabilir özelliğe ş ğsahiptir.

26Programlama Dilleri 3

Page 27: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Break ve Continue Anahtar SözcükleriÇalışan bir döngüden “break” sözcüğükullanılarak çıkılabilir Program akışı döngüden

Break ve Continue Anahtar Sözcükleri

kullanılarak çıkılabilir. Program akışı döngüdensonraki satırlardan devam eder. break sözcüğüsadece döngü ve switch ifadelerindesadece döngü ve switch ifadelerindekullanılabilir.

continue sözcüğü ise döngünün bir sonrakitekrarına geçilmesini sağlar.

27Programlama Dilleri 3

Page 28: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

using System;

class break_continue_1{

static void Main(){

int sayi, t=0;

while (true){

Console.Write("Negatif bir sayı girin:");sayi = Convert.ToInt32(Console.ReadLine());if (sayi == 0) break;if (sayi > 0){

Console.WriteLine("Pozitif sayı girdiniz,tekrar deneyin...");

continue;}}t = t + sayi;

}Console.WriteLine("Toplam :{0}", t);

}}}

28Programlama Dilleri 3

Page 29: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Goto Anahtar Sözcüğü

Programın etiket ile belirlenmiş herhangi bir kısmına

Goto Anahtar Sözcüğü

atlamak için kullanılır. Nesneye yönelik programlamayauygun bir yapı değildir. Switch ifadesindeki kullanımıdışında mümkün olduğunca kullanılmaktandışında mümkün olduğunca kullanılmaktankaçınılmalıdır.

• Etiket:

Console.WriteLine(i++);

Goto Etiket:

29Programlama Dilleri 3

Page 30: Akış Konrol Mekanizmaları - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C# dilinde koşula bağlı olarak işlemler gerçekleştirmek için iki farklı deyim

Return Sözcüğüreturn Anahtar Sözcüğü

Return Sözcüğü

–Metotların herhangi bir anda sonlandırılmasıiçin kullanılır. Metot sonlandırıldıktan sonraprogramın akışı metodu çağıran fonksiyondanprogramın akışı metodu çağıran fonksiyondandevam eder.

30Programlama Dilleri 3