Seçme Yapıları

Seçme Yapıları

Switch Çoklu Seçim

      Gerçekte bir algoritmada, bir değişken ya da ifadenin ayrı ayrı sabitlerle karşılaştırılması ve buna bağlı olarak farklı işlemlerin yapılması gibi bir dizi seçim yer alabilir. C, bu tarz seçim yapılarını switch çoklu seçim yapısıyla yapabilir.

  1. #include <stdio.h>
  2.  
  3. int main( )
  4. {
  5. int nat;
  6. int aSay = 0, bSay = 0, cSay = 0, dSay = 0, fSay = 0;
  7. printf( "Harf natlarni girin.\n" );
  8. printf( "Cikis icin EOF karakteri girin.\n" );
  9.  
  10. while ( ( nat = getchar())!= EOF )
  11. {
  12. switch ( nat )
  13. { /* while içine yuvalanmiş switch */
  14. case 'A': case 'a': /* nat büyük A */
  15. ++aSay; /* ya da küçük a iken*/
  16. break;
  17. case 'B': case 'b': /* nat büyük B */
  18. ++bSay; /* ya da küçük b iken*/
  19. break;
  20. case 'C': case 'c': /* nat büyük C */
  21. ++cSay; /* ya da küçük c iken */
  22. break;
  23. case 'D': case 'd': /* nat büyük D */
  24. ++dSay; /* ya da küçük d iken */
  25. break;
  26. case 'F': case 'f': /* nat büyük F */
  27. ++fSay; /* ya da küçük f iken */
  28. break;
  29. case '\n': case ' ': /* bunlari veri olarak kabul etme */
  30. break;
  31. default: /* diğer tüm karakterleri yakala*/
  32. printf( "Yanlis harf notu girildi." );
  33. printf( " Yeni bir not girin.\n" );
  34. break;
  35. }
  36. }
  37. printf( "\n Her harf notu için toplam:\n" );
  38. printf( "A: %d\n", aSay );
  39. printf( "B: %d\n", bSay );
  40. printf( "C: %d\n", cSay );
  41. printf( "D: %d\n", dSay );
  42. printf( "F: %d\n", fSay );
  43. return 0;
  44. }
  45.  

while ( ( not =getchar ( ) ) != EOF )

      ilk önce parantez içindeki atama ( not = getchar ( ) ) çalıştırılır. getchar fonksiyonu klavyeden bir karakter okur ve bu karakteri nat tamsayı değişkeni içinde depolar. Karakterler genellikle char tipiyle saklanırlar.

printf ( “ ( %c ) karakteri %d değerine sahiptir. \n” , ‘a’, ‘a’ ) ;

ifadesi, %c ve %d dönüşüm belirteçlerini kullanır ve sırasıyla a karakterini ve bu karakterin tamsayı değerini yazdırır. Yukarıdaki printf ifadesinin sonucu aşağıda gösterilmiştir:

a karakteri 97 değerine sahiptir.

97 tamsayısı, karakterin bilgisayardaki sayısal gösterimidir. Bugünkü çoğu bilgisayar, ASCII (American Standart Code for Information Interchange) karakter kümesini kullanır.

Atama ifadelerinin bütününün bir değeri vardır. Bu değer genellikle = operatörünün solundaki değişkene atanan değerdir. nat = getchar( ) atamasının değeri getchar fonksiyonunun döndürdüğü karakterdir ve bu değer nat değişkenine atanmıştır.

EOF

EOF, İngilizce “end of file” deyiminin kısaltmasıdır ve dosya sonuna gelindiğini belirten bir sayıdır. EOF genellikle –1 değerine sahiptir. EOF, içinde tanımlanmış sembolik bir sabittir.

EOF değerini girmek için gerekli olan tuş kombinasyonu, sistemlerde farklılık gösterebilir. CTRL-Z deneye bilirsiniz.

Kullanıcı notları klavyeden girmektedir. Girilen karakter EOF değerine eşit değilse, switch yapısı (satır 16) çalışır. switch anahtar kelimesinden sonra, nat değişkeni parantez içinde yazılır. Bu, kontrol deyimi olarak adlandırılır. Bu deyimin değeri, case kısımlarının her biriyle karşılaştırılır. Kullanıcının not değeri olarak C harfini girdiğini düşünelim.C otomatik olarak switch içindeki her case kısmıyla karşılaştırılır. Eğer eşleme gerçekleşirse (case ‘C’ : ), o case kısmındaki ifadeler çalıştırılır. C harfi girilmesi durumunda cSay değişkeni bir arttırılır ve break ifadesi sayesinde switch yapısından çıkılır.
break ifadesi, programın switch yapısından sonraki ilk ifadeyle devam etmesini sağlatır.
Eğer herhangi bir eşleme olmazsa, default kısmı çalıştırılır ve bir hata mesajı yazdırılır.

Break ve Continue İfadeleri

Break İfadesi

      break ve continue ifadeleri, kontrol akışını değiştirmek için kullanılır. break komutu while, for, do/while ve switch ile kullanıldığında o yapıdan çıkışı sağlar ve program yapıdan sonraki ilk ifadeyi çalıştırarak devam eder.

  1. #include <stdio.h>
  2.  
  3. int main( )
  4. {
  5. int x;
  6.  
  7. for ( x = 1; x <= 10; x++ )
  8. {
  9. if ( x == 5 )
  10. break; /* döngüden sadece x == 5 olduğunda çık*/
  11. printf( "%d ", x );
  12. }
  13. printf( "\n Donguden x == %d oldugunda cikildi.\n", x );
  14. return 0;
  15. }
Continue İfadesi

      continue ifadesi while, for ve do/while yapıları içinde çalıştığında döngü gövdesinin kalan kısmını atlar ve döngünün diğer tekrara geçmesini sağlar. while ve do/while yapılarında döngü devam koşulu, continue ifadesi çalıştırıldıktan hemen sonra kontrol edilir.

  1. #include <stdio.h>
  2.  
  3. int main( )
  4. {
  5. int x;
  6.  
  7. for ( x = 1; x <= 10; x++ )
  8. {
  9. if ( x == 5 )
  10. continue; /* sadece x == 5 olduğunda döngüyü atla */
  11. printf( "%d ", x );
  12. }
  13. printf( "\ncontinue, 5 degerinin atlanmasi icin kullanildi\n" );
  14. return 0;
  15. }

Kimler Neler Demiş?

  Abone ol  
Bildir