12
Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz Yarıyılı BİL 101-Bilgisayar Yazılımı I Arasınavı Sınav Tarihi : 11-11-2014 Sınav Başlama Saati : 09:15 Sınav Süresi : 100 Dakika Öğretim Elemanları : Kaya Kılan (Koordinatör), Erdem Çorapçıoğlu, Esma Ergüner Özkoç, Mehmet Dikmen, Muhammet Yorulmaz, Umut Tosun ÖĞRENCİ AD SOYAD : ............................................................................................. NUMARA : ............................................................................................. BÖLÜM : ............................................................................................. İMZA : ............................................................................................. SINAVDA DİKKAT EDİLECEK KURALLAR 1. Bu soru kitapçığı kapak sayfası dahil Beş (5 ) sayfadan oluşur. Eksik kağıt olması durumunda görevliyi uyarınız. Zımbalı kağıtları birbirinden ayırmayınız. 2. Cevaplarınızı ayrılan yerlere yazınız. Yerler yetmediği takdirde soru kağıtlarının arka yüzleri kullanılabilir. Düzgün ve okunaklı yazmaya özen gösteriniz. 3. Soru sormayınız.(Sorularda yanlışlık görüyorsanız yanlışın ne olduğunu yazıp soruyu ona göre çözünüz.) 4. Sınavın ilk yarım saatinden önce ve bitime onbeş dakika kala sınıfınızdan ayrılmayınız. 5. Bu sınav toplam 5 sorudan oluşmaktadır. SORU 1 SORU 2 SORU 3 SORU 4 SORU 5 TOPLAM Yer Sıra no

Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

Başkent Üniversitesi

Mühendislik Fakültesi

2014-2015 Güz Yarıyılı

BİL 101-Bilgisayar Yazılımı I

Arasınavı

Sınav Tarihi : 11-11-2014

Sınav Başlama Saati : 09:15

Sınav Süresi : 100 Dakika

Öğretim Elemanları : Kaya Kılan (Koordinatör), Erdem Çorapçıoğlu, Esma Ergüner Özkoç,

Mehmet Dikmen, Muhammet Yorulmaz, Umut Tosun

ÖĞRENCİ

AD SOYAD : .............................................................................................

NUMARA : .............................................................................................

BÖLÜM : .............................................................................................

İMZA : .............................................................................................

SINAVDA DİKKAT EDİLECEK KURALLAR

1. Bu soru kitapçığı kapak sayfası dahil Beş (5 ) sayfadan oluşur. Eksik kağıt olması durumunda görevliyi

uyarınız. Zımbalı kağıtları birbirinden ayırmayınız.

2. Cevaplarınızı ayrılan yerlere yazınız. Yerler yetmediği takdirde soru kağıtlarının arka yüzleri

kullanılabilir. Düzgün ve okunaklı yazmaya özen gösteriniz.

3. Soru sormayınız.(Sorularda yanlışlık görüyorsanız yanlışın ne olduğunu yazıp soruyu ona göre

çözünüz.)

4. Sınavın ilk yarım saatinden önce ve bitime onbeş dakika kala sınıfınızdan ayrılmayınız.

5. Bu sınav toplam 5 sorudan oluşmaktadır.

SORU 1 SORU 2 SORU 3 SORU 4 SORU 5 TOPLAM

Yer Sıra no

Page 2: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

2

SORU 1. Aşağıda verilen program parçalarının üreteceği ekran çıktısını, değişkenlerin değerlerini göstererek

belirtilen yere yazınız. (16 puan)

int a = 10,x = 3,y = 4,z = 2;

switch(a % 3) {

case 0:

if(y>5 || x<1)

printf("AAA\n");

else

printf("BBB\n");

break;

case 1:

if( x+y > 5 && z==1 )

printf("CCC\n");

else

printf("DDD\n");

z = (x+y) % 6;

printf("%d\n",z);

case 2:

printf("EEE\n");

}

a x y . z_ ÇIKTI:

int i = 1, x = 0;

do{

x = x + i * 2;

printf("%d, %d \n", i, x );

i = i + 2;

}while( i%7 > 0);

i x . ÇIKTI:

int a, b, n = 44;

while(n<65){

a = n % 10 ;

b = n / 10 ;

n += a;

if( a >= 0 && a-b > 3 )

printf(" %d \n", b);

else if( b%a == 0)

printf(" %d \n", b*a );

else

printf(" %d \n", n);

}

n a b . ÇIKTI:

Page 3: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

3

#include <stdio.h>

int main(){

int a = 10,x = 3,y = 4,z = 2;

switch(a % 3) {

case 0:

if(y>5 || x<1)

printf("AAA\n");

else

printf("BBB\n");

break;

case 1:

if( x+y > 5 && z==1 )

printf("CCC\n");

else

printf("DDD\n");

z = (x+y) % 6;

printf("%d\n",z);

case 2:

printf("EEE\n");

}

}

/**

DDD

1

EEE

*/

#include <stdio.h>

int main(){

int i = 1, x = 0;

do{

x = x + i * 2;

printf("%d, %d \n", i, x );

i = i + 2;

}while( i%7 > 0);

}

/**

1 2

3 8

5 18

*/

Page 4: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

4

#include <stdio.h>

int main(){

int a, b, n = 44;

printf("a =%f b=%f \n" ,a,b);

printf("--------------\n");

while(n<65){

a = n % 10 ;

b = n / 10 ;

n += a;

if( a >= 0 && a-b > 3 )

printf(" %d \n", b);

else if( b%a == 0)

printf(" %d \n", b*a );

else

printf(" %d \n", n);

}

}

/**

a=0.000000 b=0.000000

4

62

12

68

*/

Page 5: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

5

SORU 2. Aşağıda verilen akış diyagramının (flow chart) üreteceği ekran çıktı ya da çıktılarını, değişkenlerin

değerlerini göstererek belirtilen yere yazınız. (10 puan)

n k s ÇIKTI

s = 1

n%2==0

BAŞLA

s<4

E H

E H

k = n/2

k = (n+1)/2

k =(3*n+1)/2

s = s+1

k==1

k

H

E

DUR

n=k

n

n = 15

Page 6: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

6

2.SORU

Çözüm:

#include <stdio.h>

int main() {

int n=15, s=1, k;

do {

if (n % 2 == 0)

k = n/2;

else if (s<4)

k= (3*n+1)/2 ;

else

k = (n+1)/2;

s = s+1;

printf("\nk = %d" ,k);

n=k;

} while (k != 1);

printf("\nn = %d" ,n);

}

/**

k = 23

k = 35

k = 53

k = 27

k = 14

k = 7

k = 4

k = 2

k = 1

n = 1

*/

Page 7: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

7

SORU 3. Aşağıdaki programın amacı; klavyeden girilen sayı ve pozitif kuvvet değerine göre üssünü hesaplayıp

ekrana yazdırmaktır. Ancak verilen program bazı sözdizim(syntax) ve mantık hataları içermektedir. Sadece hatalı

olan satırların karşısına doğru biçimlerini örnekteki gibi yazınız. Yeni bir satır eklemeyiniz. (14 puan)

#include<studio.h> #include<stdio.h>

int main()

{

int sayac, sayi, kuvvet, sonuc ;

printf("Sayı ve kuvvet değerini giriniz : ")

scanf("%d%d", sayi, kuvvet );

if( kuvvet != 0 ){

printf("Yanlış!! Kuvveti pozitif giriniz:");

scanf("%d", kuvvet );

{

for( sayac=1 ; sayac<kuvvet ; sayac+1 )}

sonuc = sayi * sayi;

}

printf("---------\n Sonuç = ", sayi);

return 0;

}

ÖRNEK ÇALIŞMA : Sayı ve kuvvet değerini giriniz : 2 -5

Yanlış!! Kuvveti pozitif giriniz : -5

Yanlış!! Kuvveti pozitif giriniz : 5

---------

Sonuç = 16

Page 8: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

8

Çözüm:

/* Ara Sınav Soru 3 */

#include <stdio.h>

int main() {

int sayac, sayi, kuvvet, sonuc ;

printf("Sayı ve kuvvet değerini giriniz : ");

scanf("%d%d", &sayi, &kuvvet );

while( kuvvet <= 0 ) {

printf("Yanlış!! Kuvveti pozitif giriniz:");

scanf("%d", &kuvvet );

}

for( sayac=1 ; sayac < kuvvet ; sayac++ ) {

sonuc = sayac * sayac;

printf("---------\n Sonuc = %d --> %d \n" , sayac, sonuc);

}

return 0;

}

/**

Say² ve kuvvet de­erini giriniz : 2 -5

Yanl²¦!! Kuvveti pozitif giriniz:-5

Yanl²¦!! Kuvveti pozitif giriniz:5

---------

Sonuc = 1 --> 1

---------

Sonuc = 2 --> 4

---------

Sonuc = 3 --> 9

---------

Sonuc = 4 --> 16

*/

Page 9: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

9

SORU 4. Çocuklarda antibiyotik dozunun ayarlanması yaşamsal önem taşımaktadır. Bu nedenle aşağıda verilen

bilgilere göre antibiyotik dozu hesaplayan bir C programı yazmanız istenmektedir. Program, piyasada bulunan etken

maddeleri farklı iki antibiyotik türü (A,B) için çocuğun kilosuna göre doz hesabı yapmalıdır. Bu hesabı yaparken

aşağıdaki çizelge kullanılmaktadır. Çizelgede, 1 günde, 10 Kg dan küçük (10 dahil değil), 10-40Kg arası normal (10,

40 dahil) ve 40 Kg dan büyük çocuklara verilecek doz miktarı ve günlük uygulama adeti verilmiştir. Bu çizelgedeki

değerler ile kullanıcıdan alınan antibiyotik türü ve kilo bilgisine göre çocuğun her seferde alacağı doz miktarı

hesaplanmalıdır. (Örneğin, aşağıdaki Örnek Çalışma 1’de çocuğun kilosu normal aralıkta olduğu için günlük alması

gereken antibiyotik miktarı 16,3 X 150 = 2445 mg dır. A antibiyotiği 4 seferde alınacağından 4’e bölünür ve her

dozda 611,25mg olarak hesaplanır) (30 puan)

Antibiyotik Türü Günlük Doz Sayısı 10Kg’dan Küçük 10Kg-40Kg Arası

(Normal)

40Kg’dan Büyük

A 4 Normalin Yarısı 150mg/kg 4500mg

B 3 Normalin Yarısı 120mg/kg 3000mg

ÖRNEK ÇALIŞMA 1: Kullanılacak antibiyotik türünü giriniz ( A, a, B, b ): A

Çocuğun kilosunu giriniz(gr) giriniz: 16300

Çocuk, A türündeki antibiyotikten günde 4 defa 611.25 mglık dozlar halinde almalıdır.

ÖRNEK ÇALIŞMA 2: Kullanılacak antibiyotik türünü giriniz ( A, a, B, b ): b

Çocuğun kilosunu giriniz(gr) giriniz: 55000

Çocuk, b türündeki antibiyotikten günde 3 defa 1000.00 mglık dozlar halinde almalıdır.

Page 10: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

10

Çözüm:

/* Ara Sınav Soru 4 */

#include <stdio.h>

int main() {

char ch;

int gunluk_doz_sayisi ;

float doz;

float agirlik;

printf("Antibiyotik türünü giriniz (A,a,B,b)\n");

scanf("%c" , &ch) ;

printf("Çocuğun kilosunu (gr) giriniz\n");

scanf("%d" , &agirlik) ;

agirlik = (float) agirlik /1000;

switch(ch) {

case 'a':

case 'A':

if ((agirlik>0 && agirlik <10))

doz = 4*75*agirlik ;

else if ((10<= agirlik && agirlik <=40))

doz = 4*150*agirlik;

else if (agirlik >40)

doz = 4*4500*agirlik;

printf("%f" , doz);

break;

case 'b':

case 'B':

if ((agirlik>0 && agirlik <10))

doz = 3*60*agirlik ;

else if ((10<= agirlik && agirlik <=40))

doz = 3*120*agirlik;

else if (agirlik >40)

doz = 3*3000*agirlik;

printf("%f" , doz);

break;

}

return 0;

}

Page 11: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

11

SORU 5. Tavla oyununda kendi pullarını önce tamamlayan oyuncu o eli kazanır ve 1 puan alır. Kazanan oyuncu

rakibini mars ederek kazanmış ise 2 puan alır. Toplamda 5 puan ya da üstüne ulaşan ilk oyuncu oyunu kazanır.

Yukarıda verilen bilgiler ışığında; her eli kimin kazandığı (1 ya da 2 nolu oyuncu) ve mars edip etmediği bilgileri

klavyeden girildiğinde; her elin sonunda o anki puan durumunu ekranda görüntüleyen ve oyun bittiğinde de kazanan

oyuncuyu ekrana yazan bir C programı geliştiriniz. (30 puan)

ÖRNEK ÇALIŞMA 1: ÖRNEK ÇALIŞMA 2:

1. eli kazananı giriniz (1 ya da 2): 1

Mars etti mi (e/h): e

Puan durumu: 2 - 0

2. eli kazananı giriniz (1 ya da 2): 1

Mars etti mi (e/h): e

Puan durumu: 4 - 0

3. eli kazananı giriniz (1 ya da 2): 1

Mars etti mi (e/h): h

Puan durumu: 5 - 0

------------------------------------

3 EL SONUNDA

KAZANAN: 1. OYUNCUDUR

1. eli kazanan oyuncu (1 ya da 2): 2

Mars etti mi (e/h): h

Puan durumu: 0 - 1

2. eli kazanan oyuncu (1 ya da 2): 1

Mars etti mi (e/h): h

Puan durumu: 1 - 1

3. eli kazanan oyuncu (1 ya da 2): 2

Mars etti mi (e/h): e

Puan durumu: 1 - 3

4. eli kazanan oyuncu (1 ya da 2): 1

Mars etti mi (e/h): h

Puan durumu: 2 - 3

5. eli kazanan oyuncu (1 ya da 2): 2

Mars etti mi (e/h): e

Puan durumu: 2 - 5

------------------------------------

5 EL SONUNDA

KAZANAN: 2. OYUNCUDUR

Page 12: Başkent Üniversitesi Mühendislik Fakültesi 2014-2015 Güz ...baskent.edu.tr/~tkaracay/etudio/ders/prg/c/questions/h08/BIL101vize... · Başkent Üniversitesi Mühendislik Fakültesi

12

Çözüm:

/* Ara Sınav Soru 5 */

#include <stdio.h>

int main() {

char ch;

int i, puan1, puan2, oyuncu;

for (i=1; i<=5; i++) {

printf("%d eli kazananı giriniz\n" , i);

scanf("%d" , &oyuncu);

switch (oyuncu) {

case 1:

puan1++ ;

printf("Mars etti mi? (e/h)\n");

scanf("%c" ,&ch);

if (ch== 'e') puan1++;

printf("Puan durumu : %d\n" ,puan1);

break;

case 2:

puan2++ ;

printf("Mars etti mi? (e/h)\n");

scanf("%c" ,&ch);

if (ch== 'e') puan2++;

printf("Puan durumu : %d\n" ,puan1);

break;

}

}

return 0;

}