Selasa, 27 Desember 2011

algoritma program harga tiket



Ide soal.

Ide soal ini didasarkan pada ide cerita berikut ini.

Harga tiket pertandingan sepak bola, Rp 50.000,-. Bila membeli dua tiket (seharga Rp 100.000,-), maka ada bonus 1 tiket gratis. Buatlah program untuk menghitung biaya yang harus dibayar untuk sejumlah tiket yang diperlukan (diinputkan).


Contoh:
Seandainya akan dibeli 10 tiket, maka:
10 tiket à 3 x 3 + 1 à 3 x (2 x Rp 50.000,-) + Rp 50.000,- = Rp 350.000,-

Seandainya akan dibeli 23 tiket, maka:
23 tiket à 7 x 3 + 2 à 7 x (2 x Rp 50.000,-) + 2 x Rp 50.000,- = Rp 800.000,-

Seandainya akan dibeli jmTiket buah tiket, maka:
Hitung jmTiket / 3 . Seandainya diperoleh hasil bagi jm3 dan sisa bagi sm3, maka biaya adalah:
jm3 x (2 x Rp 50.000,-) + sm3 x Rp 50.000,-


Soal - A.

  1. Buat flowchart dari pseudocode di bawah.
  2. Jalankan program/flowchart tersebut. Gunakan data di sebelahnya sebagai input jika diperlukan. Berapa / apa hasilnya (output-nya)?
  3. Jika baris b ß 0 diganti dengan   b ß 10, bagaimana hasilnya?

Program hitung
    1     input a
    2     b ß 0
    3     t ß 0
    4     while a > b
    5         input qty, price
    6         if qty > 5 then
    7              p ß (qty x price) - 1
    8         else
    9              p ß (qty x price) + 1
   10         endif
   11         b ß b + qty
   12         t ß t + p
   13     end while
   14     print b, t
Data input
10
6, 5
4, 2
5, 2
2, 3

Jawab-A
1.

b.

c. Nilai input a = 10; Karena b = 0, maka langkah-4, a > b memberi hasil salah (false). Langsung keluar dari loop ke langkah-14. Output: b,t yaitu 10,0



Soal - B.

  1. Gambarkan flowchart dari program di bawah ini.
  2. Jalankan program/flowchart tersebut. Gunakan data di sebelahnya sebagai input jika diperlukan. Berapa / apa hasilnya (output-nya)?
  3. Jika baris b ß 0 diganti dengan   b ß 10 , bagaimana hasilnya?

Program hitung
    1     b ß 0
    2     t ß 0
    3     input qty, price
    4     while qty > 0
    5         b ß b + qty
    6         t ß t + (qty x price)
    7         input qty, price
    8     end while
    9     if b > 0 then
   10         if t > 10 then
   11              print “berhadiah”
   12         endif
   13     endif
   14     print b, t
Data input
2, 5
4, 2
0, 2
3, 3

Jawab-B

1.

2.

3. Nilai b dimulai dari 10. Dengan input yang sama, outputnya menjadi 16, 18.

Soal - C
1.      Bagaimana / berapakah output jika diberikan input ini.
a.       4 ;  output è ….
b.      11;  output è ….
c.       99;  output è ….
2.      Pindahkan flowchart ke dalam pseudocode.
3.      Seandainya, “jm > 2” diganti dengan “jm < 2”, ceritakan apa yang terjadi dengan program ini. Apa hasilnya?


Jawab-C
1.a

1.b.

1.c. Pengulangan 3-4-5/6-3 : selama nilai jm lebih besar dari nol; setiap putaran, jm dikurangi 3. Dengan nilai awal jm=99 (dari input), maka akan terdapat 33 kali pengulangan dan nilai akhir jm=0. Setiap pengulangan, nilai b bertambah 20. Sebanyak 33 kali pengulangan, nilai b = 20 x 33 = 660.

2.
    1     b ß 0
          harga ß 10
    2     input jm
    3     while jm > 0
    4         if jm > 2 then
    5              b ß b + harga + harga
                   jm ß jm - 3
              else
    6              b ß b + harga
                   jm ß 0
          end while
    7     print “berhadiah”


3. Seandainya kondisi loop diganti dengan “jm < 0”. Ada dua kemungkinan:
a. Dengan nilai input jm lebih besar atau sama dengan nol, maka tidak masuk ke dalam pengulangan 3‑4‑5/6‑3. Output: 0.
b. Dengan nilai input jm kurang dari nol, maka masuk ke dalam pengulangan 3‑4‑5/6‑3.  Kondisi langkah-4 menghasilkan ‘No’, masuk langkah -6, kemudian jm = 0, dan keluar dari loop. Terjadi perubahan nilai b ß harga, output: 10.

Soal – D

1.      Bagaimana / berapakah output jika diberikan input ini.
a.       5 ; output è ….
b.      10; output è ….
c.       99; output è ….
2.      Seandainya, “j ß j - 3” diganti dengan “j ß j - jmTiket”, ceritakan apa yang terjadi dengan program ini. Apa hasilnya?
3.      Tulislah pseudocode flowchart ini.




Jawab-D
1.
a. input 5
 

b. input 10

c. input 99  .
Pengulangan 3-4-3 : selama nilai j > 2 ; setiap putaran nilai j dikurangi 3.
Dimulai dengan nilai j=99, maka terdapat 33 kali pengulangan.
Setiap pengulangan, nilai bertambah 10.
Setelah 33 kali pengulangan, nilai akhir b menjadi 330.
Langkah-5, karena nilai j hasil pengulangan nol, maka langsung ke langkah-7.
Jadi, output: 330.

2. Seandainya, “j ß j - 3” diganti dengan “j ß j - jmTiket”, maka pengulangan 3-4-3 paling banyak terjadi satu kali.
Kemungkinan:
a. Jika input jmTiket > 2, maka setelah pengulangan nilai akhir b=10 dan j=0.
Kondisi langkah-5 salah, maka output: 10.
b. Jika input jmTiket <= 0,
maka tidak ada pengulangan sehingga nilai b=0
Kondisi langkah-5 salah, output: 0.
c. Jika input jmTiket ada pada 0<jmTiket <= 2,
maka tidak ada pengulangan sehingga nilai b=0
Kondisi langkah-5 benar, langkah-6 dikerjakan
sehingga b=jmTiket x h / 2 = jmTiket x 5


1 komentar: