İç Kontrol Daire Başkanı

MAK 1005 Bilgisayar Programlamaya Giriş
Karşılaştırma Komutları
(Switch ve ? Operatörü)
Doç. Dr. Necmettin Kaya
KARŞILAŞTIRMA KOMUTLARI - SWITCH
SWITCH: Program akışı bir çok seçenekten birine yönlendirilir. Genel yazım biçimi:
switch(değişken)
{
case sabit1:
...
komutlar;
...
case sabit2:
...
komutlar;
...
case sabitn:
...
komutlar;
...
default:
...
hata mesajları veya varsayılan komutlar;
...
}
case deyiminden sonra değişkenin durumu belirlenir ve takip eden gelen satırlar
işleme konur. Bütün durumların aksi söz konusu olduğunda gerçekleştirilmesi istenen
komutlar default deyiminden sonraki kısımda bildirilir.
KARŞILAŞTIRMA KOMUTLARI - SWITCH
Örnek 1:
Ekran Çıktısı:
#include <stdio.h>
#include <conio.h>
char kr;
main()
{
printf("Lutfen bir karakter girin\n");
kr = getchar(); /* tek bir karakterin okunması */
switch (kr)
{
case 'a':
printf("a harfine bastiniz\n");
case 'b':
printf("b harfine bastiniz\n");
default:
printf("a veya b ye basmadiniz\n");
}
getche();
}
İlk ekran çıktısında görüldüğü gibi kr değişkeni için a karakteri girildiğinde “b
harfine bastiniz” ve “a veya b ye basmadiniz” mesajlarıda yazılmıştır.
Bu durumu önlemek için break komutu kullanılmalıdır:
KARŞILAŞTIRMA KOMUTLARI - SWITCH
Ekran Çıktısı:
#include <stdio.h>
#include <conio.h>
char kr;
main()
{
printf("Lutfen bir karakter girin\n");
kr = getchar(); /* tek bir karakterin okunması */
switch (kr)
{
case 'a':
printf("a harfine bastiniz\n");
break;
case 'b':
printf("b harfine bastiniz\n");
break;
default:
printf("a veya b ye basmadiniz\n");
break;
}
getche();
}
KARŞILAŞTIRMA KOMUTLARI - SWITCH
Örnek 2:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
İnt secim;
float x,y,sonuc;
main()
{
printf("Iki sayi girin: ");
scanf("%f %f",&x,&y);
puts("*** Menu ***");
puts("[1] Toplama");
puts("[2] Cikarma");
puts("[3] Carpma");
puts("[4] Bolme");
printf("Seciminiz: ");
scanf("%d",&secim);
switch( secim )
{
case 1:
sonuc = x + y;
printf("Toplam = %f\n",sonuc);
break;
case 2:
sonuc = x-y;
printf("Fark = %f\n",sonuc);
break;
case 3:
sonuc = x * y;
printf("Carpim = %f\n",sonuc);
break;
case 4:
sonuc = x/y;
printf("Oran = %f\n",sonuc);
break;
default:
puts("Yanlis secim !\a");
}
getche();
}
Ekrana yazdırılacak ifade bir karakter topluluğu
ise, printf()'e alternatif olarak puts()
fonksiyonu kullanılabilir
Ekran Çıktısı:
KARŞILAŞTIRMA KOMUTLARI - SWITCH
? (Şart operatörü): Bir şartın gerçekleşip gerçekleşmemesine göre iki deyimden
birini seçer.
deyim1 ? deyim2 : deyim3
Burada öncelikle deyim1 değerlendirilir. Sonuç doğruysa deyim2 , yanlışsa deyim3
seçilir. Basit bir örnekle, iki sayıdan küçüğünü seçmek için şöyle bir kod kullanıabilir:
if (x < y)
z = x;
else
z = y;
yerine
z = x < y ? x : y;
kullanılabilir.
MAK 1005 Bilgisayar Programlamaya Giriş
ARA SINAV HAZIRLIK
SORU ve CEVAPLARI
Ara Sınav Hazırlık Soru ve Cevapları
Soru 1: Bir yerleşim bölgesinde bulunan 1250 abonenin ödeyecekleri elektrik
ücretlerini hesaplatmak için;
- Abonenin adı ve soyadı, elektrik kullanım yeri (1: Ev, 2: Ticarethane) ve
kullanılan elektrik miktarı (kw/saat) bilgileri verilmektedir.
Abonelerin ödeyecekleri ücretler:
- Ticari yerlerde 100 kw/saat’ten az ise her kw/saat için 0,5 TL, 100
kw/saat’ ten fazla olması durumunda her fazla kw/saat için 0,2 TL
-Evlerde 50 kw/saat’ ten az ise her kw/saat için 0,3 TL, 50 kw/saat’ ten
fazla olması durumunda her fazla kw/saat için 0,4 TL’ dır.
Buna göre, bilgileri okutup, her abonenin ödeyeceği ücreti, toplam ödenilen
ücreti ve en fazla ödeme yapan abonenin adı soyadını bulup ekrana yazan
programın algoritmasını yazınız, akış diyagramını çiziniz.
Ara Sınav Hazırlık Soru ve Cevapları
CEVAP 1: Algoritma (Akış diyagramları yazılan algoritmadan faydalanılarak çizilebilir. Cevap anahtarında
A0:
A1:
A2:
A3:
A4:
verilmemiştir)
Başla
TOPÜCRET 0, EB -9999
Döngü başlangıcı, I 1,1250
ADSOYAD’ı, EK ve KEM’ i gir.
Eğer EK=1 ise,
Eğer KEM<50 ise ÜCRET KEM*0.3
Eğer KEM≥50 ise ÜCRET 50*0.3+(KEM-50)*0.4
A5: Eğer EK=2 ise,
Eğer KEM<100 ise ÜCRET KEM*0.5
Eğer KEM≥100 ise ÜCRET 100*0.5+(KEM-100)*0.2
A6: TOPÜCRET  TOPÜCRET +ÜCRET
A7: Eğer ÜCRET>EB ise EBÜCRET, EBADSOYADADSOYAD
A8: ÜCRET’i yaz.
A9: Döngü sonu.
A10: TOPÜCRET’i ve EBADSOYAD’ı yaz.
A11: Dur.
Ara Sınav Hazırlık Soru ve Cevapları
Soru 2: 180 öğrencinin bulunduğu sınıfta Matematik ve Bilgisayar derslerinden
sınav yapılıyor. Sınava giren öğrencilerin, her iki dersten aldıkları notları
klavyeden girerek, aşağıdaki işlemleri yapan programın, algoritmasını
yazınız, akış diyagramını çiziniz.
• Her iki dersin en büyük ve en küçük notlarını hesaba katmadan
her iki dersin not ortalamasını hesaplayıp yazdırınız.
• Matematik dersi sınavından 0-40, 41-70 ve 71-100 puan arasında
not alanların yüzdesini bulup yazdırınız.
• Her iki dersten 60 puan üzerinde not alanların sayısını bulup
yazdırınız.
Ara Sınav Hazırlık Soru ve Cevapları
CEVAP 2: Algoritma
A0: Başla
A1: S10, S2 0, YS1 0, YS2 0, YS3 0
A2: MTOP 0, BTOP 0
A3: EBM-9999, EKM9999, EBB-9999, EKB9999
A4: Döngü başlangıcı, I 1,180
A5: MNOT ve BNOT’u gir.
A6: Eğer MNOT>EBM ise EBMMNOT
A7: Eğer MNOT<EKM ise EKMMNOT
A8: Eğer MNOT>60 ise S1S1+1
A9: Eğer MNOT>0 ve MNOT≤40 ise YS1  YS1+1
A10: Eğer MNOT≥41 ve MNOT≤70 ise YS2  YS2+1
A11: Eğer MNOT≥71 ve MNOT≤100 ise YS3  YS3+1
A12: MTOPMTOP+MNOT
A13: Eğer BNOT>EBB ise EBBBNOT
A14: Eğer BNOT<EKB ise EKBBNOT
A15: Eğer BNOT>60 ise S2S2+1
A16: BTOPBTOP+BNOT
A17: Döngü sonu
A18:
A19:
A20:
A21:
A22:
A23:
A24:
MORT (MTOP-EBM-EKM)/178
BORT (BTOP-EBB-EKB)/178
Y1YS1*100/180
Y2YS2*100/180
Y3YS3*100/180
MORT, BORT, Y1, Y2, Y3, S1 ve S2’yi yaz.
Dur.
Ara Sınav Hazırlık Soru ve Cevapları
Soru 3: Verilen x değerine karşılık y fonksiyon değerini hesaplayan C programını
yazınız.
x  x12
y
1
1
x 1
-10  x  0

1  x  10

y  1  4  3x 2  x 3
Bu aralıkların dışında

y 1
Ara Sınav Hazırlık Soru ve Cevapları
CEVAP 3:
#include <stdio.h>
#include <math.h>
#include <conio.h>
float x,y;
int main()
{
printf("x=");
scanf("%f",&x);
if (x>=-10 && x<=0) y=-(x-pow(x,12))/(1-(1/(x-1)));
else if (x>=1 && x<=10) y=1+sqrt(4+3*x*x)+pow(x,3);
else y=1;
printf("y=%8.1f",y);
getche();
}
Ekran Çıktısı:
Ara Sınav Hazırlık Soru ve Cevapları
Soru 4: Aşağıda verilen C programının çalışması sonucunda elde edilen çıktıları
yazınız. İşlem adımlarınızı (değişkenlerin aldıkları değerleri) gösteriniz.
#include <stdio.h>
#include <conio.h>
int a,b,c,d;
main()
{
a=5; b=a-2; c=2*a-4;
a=b+3; d=2*c+a-7;
if (b+c>d-1) { c=b-a+2; d=c-3;
b=a+b-4; } else { c=b+a-2; d=c+3;
b=a+b-c+3; }
if (c+3<a+2) b=a-2*c+d; else b=2*c+d+3;
a=b-c+5;
if (a+b>20) if (c>20) a=b-c+2; else {b=d-c+2;
c=a-d+3;} else {d=a+2*b-5;b=a-b+2;}
if (a+3>b-3 && c>d-1) { b=2*c-b+3;
a=3*d-6; } else b=2*a+c-7;
printf("a=%d\t b=%d\t c=%d\t d=%d", a,b,c,d);
getche();
}
Ara Sınav Hazırlık Soru ve Cevapları
CEVAP 4:
Ekran çıktısı:
A
B
C
D
5
6
25
24
3
5
27
5
34
6
7
18
11
10
LABORATUVAR UYGULAMASI
Uygulama 1: Seçime göre bir dairenin alanını ve bir çemberin çevresini
hesaplayan C programını yazınız.
Programda ilk önce daire veya çember seçimi yapılacak, seçime göre
daire için alan hesabı, çember için ise çevre hesabı yapılarak sonuç
ekrana yazdırılacaktır (switch yapısı).
Uygulama 2: Seçime göre bir dikdörtgenin alan ve çevresi ve bir dairenin
alan ve çevresini hesaplayan C programını yazınız.
Programda ilk önce dikdörtgen veya daire seçimi yapılacak, daha
sonra alan veya çevre seçimi yapılarak sonuç ekrana yazdırılacaktır
(iç içe switch yapısı).