mantıksal operatörler ve denetim yapıları

Post on 23-Jan-2016

79 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Mantıksal Operatörler ve Denetim Yapıları. Boolean. Boolean, doğru ya da yanlış sonuçlarını alabilen bir değişken türüdür. Durumları belirlemek için kullanılır. Özellikle, duruma göre kod çalıştırma ve döngülerde kullanılır. - PowerPoint PPT Presentation

TRANSCRIPT

Mantıksal Operatörler ve Denetim Yapıları

Boolean Boolean, doğru ya da yanlış sonuçlarını

alabilen bir değişken türüdür. Durumları belirlemek için kullanılır. Özellikle, duruma göre kod çalıştırma ve

döngülerde kullanılır. mantıksal ifadeler doğru veya yanlış

değerini alan mantıksal "formüllerdir". “bool” anahtar kelimesi ile tanımlanır.

bool bVal = true;

Örnek

Boolean İşleçler Boolean ifadeler kurmak için kullanılır. Diğer isimleri de mantıksal işleçlerdir.

Ve && Veya || Değil ! Eşitlik == Eşitsizlik != Karşılaştırma <, >, <=, >=

Ve (&&)

Bütün değerlerin, “true” olmasını gerektirir.

true && true = true false && true = false true && false = false false && false = false

Veya (||)

En az bir değerin, “true” olmasını gerektirir.

true || true = true false || true = true true || false = true false || false = false

Değil (!)

Değeri tersine çevirir.

!true = false

! false = true

Eşitlik (==)

Her iki tarafın değeri, birbirine eşitse doğru değerini döndürür.

1 == 21 == 2 1 == 01 == 0 42 == 4242 == 42 degisken1degisken1 == == digeridigeri

Eşitsizlik

Her iki tarafın değeri, birbirinden farklıysa doğru değerini döndürür.

1 != 21 != 2 1 != 01 != 0 42 != 4242 != 42 aa != != degisken degisken

Karşılaştırma (>,<,>=,<=)

Eşitsizliğin tutması durumunda doğru döndürür.

1 < 21 < 2 0 > 10 > 1 42 <= 4242 <= 42 yasyas >= 18 >= 18

İşleç Önceliği

Parantezler Değil (!) Karşılaştırma (<, >, <=, >=) Eşitlik (==) Eşitsizlik (!=) Ve (&&) Veya (||)

En YüksekEn Yüksek

En DüşükEn Düşük

Örnek

Yaygın Hatalar

Mantıksal işlemlerde en önemli hatalardan biri, öncelik sıralarına dikkat edilmeden mantıksal ifadelerin yazılmasıdır.

Diğer bir sıkıntı, = = (eşittir – eşittir ) yazılması yerine tek bir eşittir yazılmadır.

Denetim Yapıları

if – else Seçme yapısı, mantıksal ifadelerin

sonucuna göre alternatif komutların çalışmasını sağlar.

Mantıksal ifadeler doğru veya yanlış döndürür. İfade doğru değeri döndürdüğünde, if bölümü içindeki komutlar çalışırken, yanlışken else bölümü çalışır.

if – else Basit if yapısına, tekli seçme yapısı adı

verilir, çünkü, doğru değer geldiğinde seçilen komutu çalıştırır ya da göz önüne almaz.

if ve else'den oluşan yapıya, çiftli seçme yapısı adı verilir, çünkü, iki farklı duruma göre iki değişik komut grubunu çalıştırır.

İç içe geçmiş if/else yapısı, birden fazla durumu kontrol eder.

Tekli Seçim Yapısı Tekli seçme yapısının formu şöyledir:

if ( ifade ) {komutlar;

}

veya

if ( ifade ) komut;

Örnek

if – else if – else

if genellikle şöyle yazılır:

if – else yapısı da söyle yazılabilir:

if ( ifade ) if ( ifade ) deyim;deyim;

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

if ( ifade ) if ( ifade ) deyim1;deyim1;

else else deyim2;deyim2;

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

noktalı virgül noktalı virgül gelmeyecek!!!gelmeyecek!!!!!

if – else if – else

if yapısının genel formu şöyledir:

if ( if ( mantıksal ifade doğruysamantıksal ifade doğruysa ) ) deyimdeyim ; ;

else if (else if (mantıksal ifade doğruysamantıksal ifade doğruysa))deyimdeyim ; ;

elseelsedeyim deyim ;;

Çoklu if – else if – else Birden fazla else – if yapısı, tek satırlık

komutlar olduğunda şöyle kurulabilir:

if (if ( bu bu mantıksal ifade doğruysa ) mantıksal ifade doğruysa ) deyimdeyim ; ;

else if (else if (bu bu mantıksal ifade doğruysamantıksal ifade doğruysa )) deyim deyim ; ;

else if (else if (bu bu mantıksal ifade doğruysamantıksal ifade doğruysa )) deyim deyim ;;

elseelse deyim deyim ;;

Bloklu if – else if – else

if (if ( bu mantıksal ifade doğruysa )bu mantıksal ifade doğruysa ){{ bu bloktaki komutları çalıştırbu bloktaki komutları çalıştır;;}}else if (bu mantıksal ifade doğruysa )else if (bu mantıksal ifade doğruysa ){{ bu bloktaki komutları çalıştır; bu bloktaki komutları çalıştır; }}elseelse{{ bu bloktaki komutları çalıştır;bu bloktaki komutları çalıştır;} }

Örnek: Sayı Karşılaştırma

Sınıf Çalışması Meteoroloji Müdürlüğü, hava durumu raporlarının daha

anlaşılabilir olması için, nem oranı değerlerinin insanların anlayabileceği hale getirmek için bir program istemektedir.

Kullanıcın girdiği 0 ve 100 arasındaki tamsayı nem oranı değerleri için ekrana şunları yazacaktır.

%20 veya aşağısı "Çok Kuru" %21 - %40: "Kuru" %41 - %60: "Biraz Kuru" %61 - %80: "Biraz Nemli" %81 veya fazla: "Nemli“

Kullanıcıya nem derecesi soran ve if/else yapısı içeren programı yazınız.

Birleşik if deyimleri C# derleyicisi else deyimini en yakın if deyimiyle eşler. Bu

nedenle, program mantığını doğru kurmak ve {} parantezlerini kullanmak daha doğru olur.

if (nem < 20) if (nem < 20) if (sicaklik <= 0)if (sicaklik <= 0) Console.WriteLine("Soğuk ve kuru bir gün.")Console.WriteLine("Soğuk ve kuru bir gün.") if (ruzgar < 10) if (ruzgar < 10) Console.WriteLine("Ne güzel, rüzgar yok");Console.WriteLine("Ne güzel, rüzgar yok"); else else Console.WriteLine("nem düşük ve 0 dereceden yüksek");Console.WriteLine("nem düşük ve 0 dereceden yüksek"); else if (nem < 60)else if (nem < 60) if (sicaklik <= 0)if (sicaklik <= 0) Console.WriteLine("soguk ve orta nemli.");Console.WriteLine("soguk ve orta nemli."); elseelse Console.WriteLine("0'dan büyük, orta nem oranı.");Console.WriteLine("0'dan büyük, orta nem oranı.");

????

Birleşik if Deyimleriif (nem < 20) {if (nem < 20) { if (sicaklik <= 0) {if (sicaklik <= 0) { Console.WriteLine("Soğuk ve kuru bir gün.") Console.WriteLine("Soğuk ve kuru bir gün.") if (ruzgar < 10) {if (ruzgar < 10) { Console.WriteLine("Ne güzel ki rüzgar yok");Console.WriteLine("Ne güzel ki rüzgar yok"); } } }} else {else { Console.WriteLine("nem düşük ve 0 dan yüksek");Console.WriteLine("nem düşük ve 0 dan yüksek"); }}}}else if (nem < 60) {else if (nem < 60) { if (sicaklik <= 0) {if (sicaklik <= 0) { Console.WriteLine("soguk ve orta nemli.");Console.WriteLine("soguk ve orta nemli."); }} elseelse Console.WriteLine("0'dan büyük, orta nem oranı.");Console.WriteLine("0'dan büyük, orta nem oranı.");}}

switch – case yapısı

Çok durumlu seçme yapısı

switch - case Bir algoritmada bir dizi işlem, bir değişkenin

farklı değerlerine göre yapılacaksa, çoklu seçme yapısı kullanışlıdır.

Algoritmada, değişkenin alabileceği her farklı değer için farklı komut dizileri çalıştırılabilir.

C# dili, switch-case yapısı adı altında böyle bir yapı sunar.

Yazım

switchswitch ( (sınama değeri sınama değeri )){{ casecase sabit_değer1sabit_değer1 : : işlemlerişlemler ; ;

breakbreak;; casecase sabit_değer2sabit_değer2 : : işlemlerişlemler ; ;

breakbreak;; casecase sabit_değer3 : sabit_değer3 : işlemlerişlemler ; ;

breakbreak;; defaultdefault : : işlemler işlemler ;;

breakbreak;;}}

switch - case switch kelimesi, yapının başlangıcını belirler.

switch bölümünden sonra bir değişken yazılmalıdır.

Değişkenin tipi karakter veya numerik olabilir.

case bölümünde, sabit değerler olmalıdır. Burada ifade bulunmaz.

case bölümleri break ifadesi ile bitirilmelidir.

case'den sonra { } işaretlerine gerek yoktur.

Sınıf Alıştırması Ekrandan, öğrencinin aldığı harf

notunu (tek harf) okuyan bir program yazınız. Eğer A: "Çok güzel" B: "Güzel" C: "Fena Değil" D: "İyi değil" F: "Çok kötü"

Alıştırma Meteoroloji Müdürlüğü, hava durumu raporlarının daha Meteoroloji Müdürlüğü, hava durumu raporlarının daha

anlaşılabilir olması için, nem oranı değerlerinin anlaşılabilir olması için, nem oranı değerlerinin insanların anlayabileceği hale getirmek için bir program insanların anlayabileceği hale getirmek için bir program istemektedir. istemektedir.

Kullanıcın girdiği 0 ve 100 arasındaki tamsayı nem oranı Kullanıcın girdiği 0 ve 100 arasındaki tamsayı nem oranı değerleri için ekrana şunları yazacaktır.değerleri için ekrana şunları yazacaktır.

%20 veya aşağısı %20 veya aşağısı "Çok Kuru""Çok Kuru" %21 - %40:%21 - %40: "Kuru""Kuru" %41 - %60:%41 - %60: "Biraz Kuru""Biraz Kuru" %61 - %80:%61 - %80: "Biraz Nemli""Biraz Nemli" %81 veya fazla:%81 veya fazla: "Nemli“"Nemli“

Kullanıcıya nem derecesi soran ve Kullanıcıya nem derecesi soran ve switchswitch / / casecase yapısı yapısı içeren programı yazınız.içeren programı yazınız.

Switch – Case Hakkında Notlar switch parantezleri içinde double,decimal tipinde

değişken kullanılmaz.

case etiketinden sonra istenen sayıda deyim satırı bulunabilir.

Her zaman default: bölümünü kullanmanız program yazarken hataları bulabilmenizi sağlar.

En çok rastlanan hata break; deyiminin unutulmasıdır. Switch yapısı kurulduktan sonra break'lerin doğru yerlerde olup olmadığını kontrol ediniz.

Döngüler

while, do-while, for döngüleri

Tekrar Yapıları Tekrar yapıları, kod bloklarının tekrar

işletilmesini sağlar.

Tekrar yapısı içindeki kod bloğunun tekrar edilip edilmeyeceği mantıksal bir ifadenin sonucuna göre karar verilir. Eğer yanlışsa, kod bloğu tekrar edilmez.

Kodun belirli bir sayıda tekrar edilmesini sağlayan for döngüsü gibi, belirsiz sayıda tekrar edilmesini sağlayan while veya do-while döngüleri de bulunur.

Tekrar Yapıları for ve while döngüleri, mantıksal

ifadenin en başta sınandığı yapılardır. Mantıksal ifade doğruysa, döngüye girilir yoksa döngüden çıkılır.

do-while döngüsü, tekrar bloğunun en sonunda sınamanın yapıldığı yapılardır. Kod bloğunu bir kez işletir ve bir kez daha tekrarlanabileceği konusunda mantıksal ifadenin sonucuna bakılır.

while döngüsü

Kullanımı iki türlüdür:

while ( while ( mantıksal ifade doğrumantıksal ifade doğru ) ) ifadeifade ; ;

while (while (mantıksal ifade doğrumantıksal ifade doğru)){{ ifade ifade ;; ifade ifade ;;}}

Örnek

do-while döngüsü

do statement; while ( mantıksal ifade doğru );

dodo{{ ifade ;ifade ; ifade ;ifade ;} } while ( mantıksal ifade doğru) ;while ( mantıksal ifade doğru) ;

Örnek

for Döngüsü

başlatma deyimleri döngü başlamadan önce çalışan komutlardır. Birden fazla sayıda olabilir. Bu durumda, her deyim arasına "," (virgül) konulur.

düzeltmeler, döngünün sonunda çalıştırılan işlemlerdir. Birden fazla olabilir ve aralarına "," (virgül) konulur. İşletim sırası soldan sağadır.

Döngünün sonunda düzeltmeler yapıldıktan sonra, mantıksal deyim true değerini verirse, döngüye devam edilir. Yoksa döngüden çıkılır.

for( for( başlatma deyimleribaşlatma deyimleri;;mantıksal deyimmantıksal deyim;;düzeltmelerdüzeltmeler)){{

deyim;deyim;}}

for Döngüsü

for (for (deyim1deyim1 ; ; deyim2deyim2 ; ; deyim3deyim3)){{

ifadelerifadeler ; ; } }

deyim1, for döngüsünün en başındaki ilk durumu belirler. Matematiksel bir işlem olabildiği gibi birbirinden virgüllerle ayrılmış pek çok işlem de olabilir. Döngüişletilmeden önce bir kez çalıştırılır.

for Döngüsü

for (for (deyim1deyim1 ; ; deyim2deyim2 ; ; deyim3deyim3)){{

ifadelerifadeler ; ; } }

deyim2, doğru yada yanlış değerini döndüren mantıksal bir işlemdir. deyim1 içinde değişen değişkenlerden biri olmasına gerek yoktur.

for Döngüsü

for (for (deyim1deyim1 ; ; deyim2deyim2 ; ; deyim3deyim3)){{

ifadelerifadeler ; ; } }

deyim3, durumdaki değişikliği sağlayan işlemdir. Birden fazla işlem birbirinden virgülle ayrılabilir. deyim1 ve deyim2'de kullanılan değişkenlerle ilgisi olmayabilir.

Örnekler

for (int sayac = 1 ; sayac <= 10; sayac++){

Console.WriteLine(sayac.ToString());}

Örneklerint sayac = 1;for ( ; sayac <= 10; ){

Console.WriteLine(sayac.ToString());sayac++;

}

int sayac = 1;for ( ; ; ){

Console.WriteLine(sayac.ToString());sayac++;if (sayac >10) break;

}

Notlar

for yapısı içindeki deyim1, deyim2, ve deyim3 boş bırakılabilir. Ama noktalı virgüllerin tutulması gereklidir.

deyim1'in ve deyim3'ün yazılmaması for döngüsünün while döngüsü olarak davranmasını sağlar.

deyim2'yi yazmadan, döngünün ne zaman biteceği bulunamaz. Bu durumda, break komutuyla döngünün dışına çıkılabilir.

Döngüde deyim1 ve deyim3 birden fazla ifade içerebilir. Bunlar kullanılarak program basitleştirilebilir.

for while

deyim1 ;deyim1 ;while ( deyim2 )while ( deyim2 ){ {

ifadeler ;ifadeler ; deyim3 ;deyim3 ;}}

for ( deyim1 ; deyim2; deyim3 )for ( deyim1 ; deyim2; deyim3 ){{

ifadeler ; ifadeler ; }}

Her iki örnek de birbirinin aynısı şekilde

çalışır.

Her iki örnek de birbirinin aynısı şekilde

çalışır.

Örnek

int int sayacsayac ; ;

sayacsayac = 1 ; = 1 ;while ( while ( sayacsayac <= 10 ) <= 10 ){ { Console.WriteLine(“Sayaç değeri:”+sayac.ToString()Console.WriteLine(“Sayaç değeri:”+sayac.ToString());); sayacsayac++ ;++ ;

}}

int int sayacsayac ; ;

for(sayac = 0 ; sayac <= 10 ; sayac++) {for(sayac = 0 ; sayac <= 10 ; sayac++) { Console.WriteLine(“Sayaç değeri:”+sayac.ToString()Console.WriteLine(“Sayaç değeri:”+sayac.ToString()););}}

Örnek

static static void main ( )void main ( ){{ int k, n ;int k, n ; for(for( k = 1, n = 12k = 1, n = 12 ;; k<9 && n>6 ;k<9 && n>6 ; k++, n--)k++, n--) {{ Console.WriteLineConsole.WriteLine ( (""k=k= ““ + k + + k + ““ n=n= ““ + + n) ;n) ; }}}}

Birbirinden virgülle Birbirinden virgülle ayrılmış ifadeler, her ayrılmış ifadeler, her bölümde yer alabilir.bölümde yer alabilir.

Birbirinden virgülle Birbirinden virgülle ayrılmış ifadeler, her ayrılmış ifadeler, her bölümde yer alabilir.bölümde yer alabilir.

Birbirinden virgülle Birbirinden virgülle ayrılmış ifadeler, her ayrılmış ifadeler, her bölümde yer alabilir.bölümde yer alabilir.

Birbirinden virgülle Birbirinden virgülle ayrılmış ifadeler, her ayrılmış ifadeler, her bölümde yer alabilir.bölümde yer alabilir.

Alıştırma 0'dan 100'e kadar rassal sayı tutan ve

bu sayıyı kullanıcının tahmin edeceği bir program yazınız.

Kullanıcı, bir sayı girdikten sonra, bu sayının, tutulan sayıdan küçük yada büyük olduğunu söyleyecektir.

Eğer girilen ve tutulan sayı eşitse, program tebrikler diyerek döngüden çıkacaktır.

Algoritma

tutulan = 0 ve 100 arası rassal bir sayı tuttutulan = 0 ve 100 arası rassal bir sayı tut

while(true)while(true){{

yaz "Tahmininizi, yazınız"yaz "Tahmininizi, yazınız"oku tahminoku tahmin

if (tahmin eşittir tutulan) if (tahmin eşittir tutulan) döngüden çıkdöngüden çık

else if(tahmin küçüktür tutulan) else if(tahmin küçüktür tutulan) yaz "küçük"yaz "küçük"

else else yaz "büyük"yaz "büyük"

}}

Çözüm

Döngüden Çıkış break anahtar kelimesi döngü

yapısından çıkış için kullanılabilir. break iç taraftaki döngüden çıkış için kullanılabilir.

continue, bulunulan yerden döngünün sonuna gitmek için kullanılır.

Her iki anahtar kelime, algoritmaların uygulanmasında çokça kullanılır.

break: döngüden çıkış Aşağıdaki programda, x'in değeri 5 olduğunda

döngüden çıkılmaktadır.

int x = 0;int x = 0;

for( ; ; ) { /* sonsuz döngü */for( ; ; ) { /* sonsuz döngü */

if(x == 5) if(x == 5) breakbreak;;Console.WriteLine(x.ToString());Console.WriteLine(x.ToString());x++;x++;

}}

continue: döngüye devam Aşağıdaki program, 5 dışında 0'dan 9'a kadar

olan bütün sayıları yazmaktadır.

int x;int x;

for( x = 0; x < 10 ; x++) {for( x = 0; x < 10 ; x++) {

if(x == 5) if(x == 5) continuecontinue;;Console.WriteLine(Console.WriteLine(““X = “+ x);X = “+ x);

}}

continue

for( x = 0; x < 10 ; x++) {for( x = 0; x < 10 ; x++) {

if(x == 5) if(x == 5) continuecontinue;; Console.WriteLine(x.ToString());Console.WriteLine(x.ToString());

}}

for( x = 0; x < 10 ; x++) {for( x = 0; x < 10 ; x++) {

if(x != 5) {if(x != 5) { Console.WriteLine(x.ToString());Console.WriteLine(x.ToString());}}

}}

Her iki program daHer iki program daaynı şekilde aynı şekilde

çalışmaktadır.çalışmaktadır.

Her iki program daHer iki program daaynı şekilde aynı şekilde

çalışmaktadır.çalışmaktadır.

Örnek: İç İçe For Döngüleri

top related