BİL131 – DERS 4 // 28.10.2013

0 61
KONTROL İFADELERİ
C programları üç temel kontrol bileşeniyle yazılabilir:
1. Sıralama bir ifadenin diğerini izlemesi
2. Seçim en az iki alternatif arasından birini seçme
3. Öteleme kodun (programın) bir bölümün sıfır veya daha fazla kez tekrarlanması
Bazı C programlarında ifadeler program içindeki sıralarına göre işlenirler. Her bir komut yalnızca bir kez işlenir. Uyarlayıcı, noktalı virgülü programdaki bir ifadenin sonu olarak algılar. Bilgisayar, C ifadelerini arka arkaya, yazıldıkları sıraya göre çalıştırır. Herhangi bir mantıksal kontrol yapısı içermezler. Bu, sıra olarak bilinir. Sıralı yapılar şekil 3.1’deki gibi
gösterilebilir:

Şekil 3.1. Sıralı yapı
Çoğu programın belli noktalarında, mantıksal bir takım testlerin yapılması gerekir. Bu durum koşullu çalışma olarak bilinir. Çeşitli erişilebilir ifade grupları arasından birinin seçildiği özel bir koşullu çalışma şekli vardır. Bu durum bazen seçim olarak adlandırılır.
C’de seçim yapmanın iki yolu vardır:
l. if ifadesi
2. switch ifadesi
Çoğu programda belli bir mantıksal koşul sağlanana dek belli bir komut grubunun tekrar tekrar çalıştırılması gerekir. Bu durum, döngü oluşturmaolarak bilinir. Bazen, tekrarların sayısı önceden bilinemez. Bu da döngü oluşturmanın bir başka yoludur.
Döngü oluşturma üç farklı şekilde yapılabilir:
1. ‘for’ döngüsü
2. ‘while’ döngüsü
3. ‘do…while’ döngüsü
Bu ifadelerin kullanımı, programcılığın kapılarını açacaktır.
Seçim ve döngü oluşturma ifadelerinin yapıları üzerinde ilerideki alt bölümlerde durulacaktır.
3.1 if-else İFADESİ
if – else ifadesi, mantıksal testin sonucuna bağlı olarak, iki olası durumdan birinin seçilmesi için kullanılır. İki şekildedir. En basit halinde, şu şekilde yazılabilir:
if (koşul) ifade
ifade yalnızca ve yalnızca koşul’un sıfırdan farklı bir değeri varsa işlenir (yani koşul doğruysa). Eğer koşul’un değeri sıfırsa (yani koşul yanlışsa),ifade göz ardı edilir. Bu durumun akı şeması Şekil 3.2’de gösterilmiştir.

Şekil 3.2 İf ifadesinin akış seması
ifade basit veya bileşik (birden fazla ifade) olabilir. Genellikle, diğer kontrol ifadelerini de içeren bir ifadeler dizisidir.
Örnek 3.1.
if (x < 0) printf(“%f”, x);
if (x>=0)
{ y=sin(5*x); printf(“%f\n”, y); }
if ((vergi > 100.) || (status == ‘R’))
printf(“%f”, vergi);
Birinci ifadede, x’in değeri sıfırdan küçükse ekranda gösterilir. İkinci ifadede, x sıfırdan farklı bir değere sahipse bileşik bir ifade işlenir. Son olarak, üçüncü ifadede, belirtilen durumlardan biri doğruysa tax’ın değeri ekrana yazılır. if ifadesinin ikinci ve genel formu, else kelimesini de içerir.
if (koşul)1. ifade else 2. ifade
koşul doğruysa 1. ifade işlenir. Aksi takdirde (koşul yanlışsa), 2. ifade işlenir. Buradaki koşul mantıksal bir koşul, 1. ve 2. ifadeler ise basit veya bileşik ifadelerdir. if-else yapısının akı şeması Şekil 3.3’te gösterilmektedir.

Şekil 3.3 If-else akış şeması
Örnek 3.2.
if (status = = ‘S’) vergi = 0.20*para; else vergi = 0.14*para;
if(x>=0) y=sin(x); else y=cos(x);
if (kare)
{
scanf(“%f”, &taraf);
kare = taraf * taraf;
printf(“Karenin alanı = %f”, kare);
}
else
{
scanf(“%f %f “, &uzunluk, &en);
alan = uzunluk · en;
printf(“dikdörtgenin alanı = %f “, alan);
}
İlk örnekte, tax değeri için, status değişkenine atanan karaktere bağlı olarak, iki olasılıktan biri seçilmektedir. Bu durum aşağıdaki gibi de ifade edilebilir:
tax = (status = = ‘S’) ? (0.20*para) : (0.14 * para);
if – e1se ifadeleri iç içe de olabilirler. İç içe if-else ifadeleri çeşitli şekillerde olabilirler.  Çift kademeli iç içe ifadelerin en genel formu şöyledir:
if e1 if e2 s1
else s2
else if e3 s3
else s4
Burada e1e2 ve e3 koşulları, s1s2s3 ve s4 de ifadeleri göstermektedir. Bu durumda, e1 sıfırdan farklıysa (doğruysa)bütün bir if-else ifadesi, e1 sıfırsa (yanlışsa) başka bir bütün ifelse ifadesi işletilecektir. s1, s2, s3 ve s4’ün de başka if-else ifadelerini içermeleri olasıdır.
Çift kademeli iç içe ifadelerin başka şekilleri şöyledir:
if e1 s1
else if e2 s2
if e1 s1
else if e2 s2
else s3
if e1 if e2 s1
else s2
else s3
if e1 if e2 s1
else s2
İlk üç durumda else’lerle kendilerine karşılık gelen koşullar arasındaki bağlantı açıktır. Fakat, son durumda, else ile hangi koşulun (e1 ya da e2) bağlantılı olduğu açık değildir. Cevap e2’dir. else ifadesi her zaman, başka bir else ile eşleştirilmemiş, kendisinden bir önceki if ile eşleşir. Bu durum, else’in biraz içeride yazılmasıyla anlaşılır (eşleştiği if’le aynı hizada), fakat
böyle bir şey tek başına karar verme faktör değildir.  Bu yüzden, son ifade şu şekilde yazılır:
if e1 {
if e2 s1 else s2 }
Örnek 3.3. İki tam sayıdan büyük olanını bulma.
#include <stdio.h>
main()
{
int x,y,max;
printf(“İki integer verin \n”);
scanf(“%d %d”,&x,&y);
max=x;
if(max<y) max=y;
printf(“%d\n”, max);
}
Örnek 3.4. Aşağıdaki örnek için bir program yazalım.


#include <stdio.h>
#include <math.h>
main()
{
float x,y;
printf(“x değerini verin \n”);
scanf(“%f ”,&x);
if(x<=0) y=5*sin(x); else y=6*log(4*x);
printf(“\n y=%f “, y);
}
Örnek 3.5. İkinci dereceden bir denklemin köklerini bulan bir program yazalım.
#include <stdio.h>
#include <math.h>
main()
{
float x1,x2,d,a,b,c;
printf(“a, b, c –nin değerlerini verin a,b,c \n”);
scanf(“%f %f %f”,&a,&b,&c);
d = pow(b,2)-4*a*c;
if(d > 0)
{
x1 = (b-sqrt(d))/(2*a);
x2 = (b-sqrt(d))/(2*a);
printf(“Kökler: %f and %f”,x1,x2);
}
else if(d=0)
{
x1 = (b-sqrt(d))/(2*a);
printf(“Bir real kök %f”,x1);
}
else printf(“Real kökler yok”);
}
Örnek 3.6. Kullanıcı klavyeden bir tam sayı girsin. Girilen sayı, 100’den büyükse, ekrana yazdıralım:
#include<stdio.h>
int main( void )
{
                 int girilen_sayi;
                 printf(“Lütfen bir tam sayı giriniz> “);
                 scanf(“%d”,&girilen_sayi);
                 if( girilen_sayi > 100 )
                                  printf(“Girilen sayı 100’den büyüktür\n”);
                 return 0;
}
Örnek 3.7. Kullanıcı klavyeden bir tam sayı girsin. Girilen sayı, 100’den büyükse, büyüktür diye ekrana yazdıralım. 100’den küçükse, küçüktür diye ekrana yazdıralım.
#include<stdio.h>
int main( void )
{
                 int girilen_sayi;
                 printf(“Lütfen bir tam sayı giriniz> “);
                 scanf(“%d”,&girilen_sayi);
                 if( girilen_sayi > 100 )
                                  printf(“Girilen sayı 100’den büyüktür\n”);
                 else
                                  printf(“Girilen sayı 100’den küçüktür\n”);
                 return 0;
}
Örnek 3.8. Klavyeden bir yaş girelim. Bu yaşı, aralığına göre sınıflandıralım. İf yapısı ile programı yazalım.
#include<stdio.h>
int main( void )
{
                 int girilen_yas;
                 printf(“Lütfen yaşınızı giriniz> “);
                 scanf(“%d”,&girilen_yas);
                 if( girilen_yas < 18 )
                                  printf(“Daha çocuk yaştasınız.\n”);
                 if( girilen_yas >= 18 && girilen_yas <= 30 )
                                  printf(“Orta yaştasınız\n”);
                 if( girilen_yas > 30 && girilen_yas <= 50 )
                                  printf(“Olgunluk yaştasınız!\n”);
                 return 0;
}
Örnek 3.9. Klavyeden bir yaş girelim. Bu yaşı, aralığına göre sınıflandıralım. İf—else yapısı ile programı yazalım.
                 #include<stdio.h>
                 int main( void )
                 {
                 int girilen_yas;
                 printf(“Lütfen yaşınızı giriniz> “);
                 scanf(“%d”,&girilen_yas);
                 if( girilen_yas < 18 )
                 printf(“Daha çocuk yaştasınız, hayatın başındasınız.\n”);
                 else {
                 if( girilen_yas >= 18 && girilen_yas <= 30 )
                 printf(“Gençliğin, güzelliği bambaşka!\n”);
                 else {
                 if( girilen_yas > 30 && girilen_yas <= 50 )
                 printf(“Olgunluk ortayaşta başlar!\n”);
                 }
                 }
                 return 0;
                 }
Örnek 3.10. Klavyeden bir yaş girelim. Bu yaşı, aralığına göre sınıflandıralım. İf– else if yapısı ile programı yazalım.
                 #include<stdio.h>
                 int main( void )
                 {
                 int girilen_yas;
                 printf(“Lütfen yaşınızı giriniz> “);
                 scanf(“%d”,&girilen_yas);
                 if( girilen_yas < 18 )
                 printf(“Daha çocuk yaştasınız.\n”);
                 else if( girilen_yas >= 18 && girilen_yas <= 30 )
                 printf(“Orta yaştasınız\n”);
                 else if( girilen_yas > 30 && girilen_yas <= 50 )
                 printf(“Olgun yaştasınız\n”);
                 else
                 printf(“HATA:Girilen yaş tanımlı değil\n”);
                 return 0;
                 }

Senin bu konuya yorumun ne olacak?

Gerekli *

HAKKIMIZDA

facebook twitter youtube flickr ENOTLAR TV LOGOSU_Artboard 13 - ENOTLAR TV LOGO

Arşivler

KAREKOD-umuz

Lower-Third-(Enotlar)