akış kontrol mekanizmaları¶lüm_3.pdf · c#'ta herhangi bir case'e ait komutların...

52
Akış Kontrol Mekanizmaları 1

Upload: others

Post on 14-Jul-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Akış Kontrol Mekanizmaları

1

Page 2: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Akış Kontrol Mekanizmaları

2

if else

switch

for döngüsü

for döngüsünün çalışma prensibi

for döngüsüyle ilgili örnekler

for döngüsüyle ilgili kurallar

while döngüsü

while döngüsünün çalışma prensibi

do while döngüsü

Kullanımı

do while döngüsünün çalışma prensibi

Döngülerde kullanılan anahtar sözcükler

break

continue

goto

Döngülerle ilgili karışık örnekler

Page 3: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

if else deyimi sayesinde belli bir koşul

sağlandığında söz konusu komutlar

çalıştırılır, o belli koşullar sağlanmadığında

çalıştırılmaz ya da başka komutlar

çalıştırılır.

3

Page 4: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

Kullanılışı şu şekildedir:

4

Page 5: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

Örneklerde eğer koşul sağlanırsa 1.

komutlar, sağlanmazsa 2. komutlar

çalıştırılır.

if veya else'in altında birden fazla komut

varsa bu komutları parantez içine almak

gerekir.

if veya else'in altında tek komut varsa bu

komutları parantez içine almak gerekmez.

5

Page 6: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 1:

6

Page 7: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

7

Page 8: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

if else yapılarında else kısmının bulunması

zorunlu değildir.

Bu durumda sadece koşul sağlandığında

bir şeyler yapılacak, koşul sağlanmadığında

bir şeyler yapılmayacaktır.

8

Page 9: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3:

9

Page 10: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 4:

10

Page 11: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

Bu program kullanıcıdan cinsiyetini girmesi istemekte, eğer kullanıcının girdiği harf e ise ekrana Erkeksiniz yazmakta, eğer girdiği harf e değilse ise bu sefer kullanıcının girdiği harfi k mı değil mi diye incelemekte, eğer k girmişse ekrana Kızsınız yazmakta, bunların dışında bir harf girdiğinde de ekrana Lütfen cinsiyetinizi doğru giriniz! yazmaktadır.

Bu şekilde bu bloklar daha da uzatılabilir. Yani else ifsatırının bir tane olması zorunlu değildir. Ancak tabii ki else satırının yalnızca bir tane olması gerekir.

11

Page 12: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

if else

C# iç içe if else kullanılmasına izin verir:

12

Page 13: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

switch deyimi bazı if else deyimlerinin

yaptığı işi daha az kodla yapar.

Genellikle bazı karmaşık if else bloklarını

kurmaktansa switch'i kullanmak

programın anlaşılırlığını artırır.

Ancak tabii ki basit if else bloklarında bu

komutun kullanılması gereksizdir.

13

Page 14: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

14

Page 15: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

switch deyimiyle ilgili bilmeniz gerekenler:

İfadenin ürettiği değer hangi case

sabitinde varsa o "case"deki komutlar

işletilir. Eğer ifadenin ürettiği değer hiçbir

case sabitinde yoksa default case’deki

komutlar işletilir.

Aynı değerde birden fazla case sabiti

olamaz.

15

Page 16: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 1:

16

Bu program hatalıdır.

Page 17: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

C#'ta herhangi bir case'e ait komutların

break; satırı ile sonlandırılması

gerekmektedir.

Eğer break; satırı ile sonlandırılmazsa

programımız hata verir.

17

Page 18: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

18

Page 19: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3:

19

Bu program hatalıdır.

Page 20: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 4:

Eğer programımızın bir case deyken farklı

bir case e gitmesini istiyorsak goto

anahtar sözcüğü kullanılır.

20

Page 21: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 5:

21

Page 22: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

goto satırı kullanılmışsa break; satırının

kullanılmasına gerek yoktur.

Eğer farklı case sabitlerinin aynı komutları

çalıştırmasını istiyorsak şöyle bir program

yazılabilir:

22

Page 23: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 5:

23

Page 24: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

switch

Bu programda a değişkeni 4 olsa da 5 olsa da aynı komutlar çalıştırılacaktır.

case anahtar sözcüğünün yanındaki ifade mutlaka ya sabit ya da sabitlerden oluşan bir ifade olmalıdır.

default durumunu istediğiniz yere yazabilirsiniz, aynı şekilde istediğiniz case i de istediğiniz yere yazabilirsiniz. Yani case lerin sırası önemli değildir.

Bir switch bloğunda default durumu bulunmak zorunda değildir.

switch 'in parantez içindeki ifadesi bir değişken olabileceği gibi, bir sabit ya da ifade de olabilir.

24

Page 25: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

for döngüsü

Eğer programda -belli koşulları sağladığı

sürece- birden fazla çalıştırılmasını

istediğimiz kodlar varsa döngüler

kullanılır.

C#‘ta en çok kullanılan döngü "for" dur.

Kullanımı:

25

Page 26: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Kullanımı

26

Page 27: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

for döngüsünün çalışma

prensibi

1. ifade1 çalıştırılır.

2. Koşula bakılır. Eğer koşul sağlanıyorsa;

1. küme parantezleri içindeki ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komut çalıştırılır.

2. ifade2 çalıştırılır.

3. 2. adıma dönülür.

3. Eğer koşul sağlanmıyorsa küme parantezleri dışına ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komuttan hemen sonraki satıra çıkılır. Dolayısıyla döngüden çıkılmış olur.

27

Page 28: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 1: Bu program 1'den 3'e kadar olan tam sayıları (1 ve 3 dâhil) toplayıp toplamı ekrana yazacaktır.

28

Page 29: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

Bu program girdiğimiz herhangi bir sayının faktöriyelini bulup ekrana yazar. Eğer

girdiğimizi sayı tam sayı değilse veya 1'den küçükse "Lütfen pozitif tam sayı girin."

diyerek tekrar veri girişi ister.

29

Page 30: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

30

Page 31: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

for döngüsüyle ilgili kurallar

for döngüsünün parantezleri içindeki "for(inti=0;i<5;i++)" iki ifade ve bir koşulun istenirse bir tanesi, istenirse bazıları, istenirse de tamamı boş bırakılabilir; ancak noktalı virgüller mutlaka yazılmalıdır.

Tahmin edebileceğiniz gibi for döngüsünün içinde veya "for(int i=0;i<5;i++)" kısmında tanımlanan herhangi bir değişken döngünün dışında kullanılamaz.

Bir değişkeni döngünün dışında kullanabilmemiz için o değişkenin döngüden önce tanımlanıp ilk değer verilmesi ve değişkeni kullanacağımız yerde de faaliyet alanının devam etmesi gerekmektedir. Bu bütün döngüler için geçerlidir.

31

Page 32: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3:

Bu program ekrana 5 yazacaktır

32

Page 33: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 4:

Bu program çalışmaz, çünkü a değişkeni döngüden önce tanımlanmasına

rağmen ilk değer verilmiyor.

33

Page 34: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

while döngüsü

Komut ya da komutların bir koşul sağlandığı sürece yapılmasını sağlar.

Kuruluşu:

34

Page 35: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

while döngüsünün çalışma

prensibi1. Koşula bakılır. Eğer koşul sağlanıyorsa;

a. küme parantezleri içindeki ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komut çalıştırılır.

b. 1. adıma dönülür.

2. Eğer koşul sağlanmıyorsa küme parantezleri dışına ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komuttan hemen sonraki satıra çıkılır. Dolayısıyla döngüden çıkılmış olur.

35

Page 36: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

while döngüsü

Aslında while döngüsü for döngüsünün

yalnızca koşuldan oluşan hâlidir. Yani for(;i<0;) ile while(i<0) aynı

döngüyü başlatır.

36

Page 37: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

do while döngüsü

Şimdiye kadar gördüğümüz döngülerde önce koşula bakılıyor, eğer koşul sağlanırsa döngü içindeki komutlar çalıştırılıyordu.

Ancak bazen döngüdeki komutların koşul sağlanmasa da en az bir kez çalıştırılmasını isteyebiliriz.

Bu gibi durumlar için C#'ta do whiledöngüsü vardır.

37

Page 38: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

do while döngüsü kullanımı

38

Page 39: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

do while döngüsünün

çalışma prensibi1. Döngüdeki komutlar bir kez çalıştırılır.

2. Koşula bakılır.

a. Eğer koşul sağlanıyorsa 1. adıma dönülür.

b. Eğer koşul sağlanmıyorsa döngüden çıkılır.

39

Page 40: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerde kullanılan

anahtar sözcükler break

◦ break komutunu switch teki case lerden

çıkmak için kullanmıştık.

◦ Benzer şekilde break komutu bütün

döngülerden çıkmak için kullanılabilir.

40

Page 41: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 1: Bu program, kullanıcı "q" harfini girene kadar kapanmamaktadır.

41

Page 42: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerde kullanılan

anahtar sözcükler continue

◦ break sözcüğüne benzer. Ancak break

sözcüğünden farklı olarak program continue

'u gördüğünde döngüden çıkmaz, sadece

döngünün o anki iterasyonu sonlanır.

◦ Döngünün başına dönülmesini sağlar.

42

Page 43: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

Bu program 0'dan 50'ye kadar (0 ve 50 dâhil) olan çift sayıları ekrana alt alta

yazmaktadır.

43

Page 44: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerde kullanılan

anahtar sözcükler goto

◦ Nesneye yönelik programlamada pek hoş görülmese de kullanabileceğiniz başka bir komut "goto“ dur.

◦ Aslında eskiden BASIC gibi dillerde her satırın bir numarası vardı ve bu sözcük satırlar arasında dolaşmayı sağlıyordu. Ancak böyle bir yöntem nesne yönelimli programlamaya terstir.

◦ O yüzden çok fazla kullanmamanız tavsiye edilir.

44

Page 45: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3:

45

Page 46: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerle ilgili karışık

örnekler Örnek 1:

◦ 1'den 1000'e (sınırlar dâhil) kadar olan sayılar

içerisinde 5'e tam bölünen, ancak 7'ye tam

bölünemeyen sayıları alt alta listeleyen, bu

sayıların kaç tane olduğunu ve toplamını yazan

bir program yazınız.

46

Page 47: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 1:

47

Page 48: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerle ilgili karışık

örnekler Örnek 2:

◦ Girilen pozitif herhangi bir tam sayıyı ikilik

düzene çeviren programı yazınız.

48

Page 49: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 2:

49

Page 50: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Döngülerle ilgili karışık

örnekler Örnek 3:

◦ Konsol ekranına girilen 0 ile 100 (sınırlar

dâhil) arasındaki 10 notun en büyüğünü, en

küçüğünü ve ortalamasını yazan programı

yazınız.

50

Page 51: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3:

51

Page 52: Akış Kontrol Mekanizmaları¶lüm_3.pdf · C#'ta herhangi bir case'e ait komutların break; satırı ile sonlandırılması gerekmektedir. ... istediğimiz kodlar varsa döngüler

Örnek 3 (devam):

52