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, EBADSOYADADSOYAD 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: S10, S2 0, YS1 0, YS2 0, YS3 0 A2: MTOP 0, BTOP 0 A3: EBM-9999, EKM9999, EBB-9999, EKB9999 A4: Döngü başlangıcı, I 1,180 A5: MNOT ve BNOT’u gir. A6: Eğer MNOT>EBM ise EBMMNOT A7: Eğer MNOT<EKM ise EKMMNOT A8: Eğer MNOT>60 ise S1S1+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: MTOPMTOP+MNOT A13: Eğer BNOT>EBB ise EBBBNOT A14: Eğer BNOT<EKB ise EKBBNOT A15: Eğer BNOT>60 ise S2S2+1 A16: BTOPBTOP+BNOT A17: Döngü sonu A18: A19: A20: A21: A22: A23: A24: MORT (MTOP-EBM-EKM)/178 BORT (BTOP-EBB-EKB)/178 Y1YS1*100/180 Y2YS2*100/180 Y3YS3*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ı).
© Copyright 2024 Paperzz