PRAKTIKUM 5 Decission : if & if … else
A.
Dasar Teori Untuk keperluan pengambilan keputusan, C menyediakan beberapa jenis pernyataan,
berupa if, if-else, dan switch. Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan salah. Operator Relasi
Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada C ditunjukkan pada tabel disamping.
Operator Logika. Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika ditunjukkan pada tabel berikut.
Bentuk pemakaian operator && dan || adalah :
Operand1 operator Operand1
Pernyataan if Pernyataan if mempunyai bentuk umum : if(kondisi) pernyataan; Bentuk ini menyatakan :
Jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses. 1
Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses.
Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat di disamping.
Pernyataan if-else Pernyataan if-else memiliki bentuk : if (kondisi) pernyataan-1; else pernyataan-2; Arti dari pernyataan if-else :
Jika kondisi benar, maka pernyataan-1 dijalankan.
Sedangkan bila kondisi bernilai salah, maka pernyataaan-2 yang dijalankan.
Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Contoh penggunaan pernyataan if-else adalah untuk menyeleksi nilai suatu bilangan pembagi. Jika nilai bilangan pembagi adalah nol, maka hasil pembagian dengan nilai nol akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses pembagian tidak akan dilakukan.
2
B.
Tugas Pendahuluan 1. Buat program yang membaca nilai integer dan menuliskan “Nilai a positif” jika a >= 0 dan “Nilai a negatif” jika a < 0. a. Algoritma
b.
Deklarasikan bil sebagai bilangan bulat
START
1. Baca bilangan, dan tampung di variabel bil 2. Jika bilangan tersebut lebih dari atau sama dengan 0, maka lakukan langkah 3 3. Tampilkan “bil adalah bilangan positif”. 4. Jika bilagan tersebut kurang dari 0, maka lakukan langkah 5 5. Tampilkan “bil adalah bilangan negatif”
2.
Flowchart
READ bil
Y
IF bil >= 0
PRINT “bilangan positif”
N PRINT “bilangan negatif”
END
Buat program untuk menginputkan sebuah bilangan, kemudian cetak ke layar bilangan tersebut dan beri komentar apakah bilangan tersebut ganjil atau genap. a. Algoritma Deklarasikan bil sebagai bilangn bulat. 1. Baca bilangan, dan tampung di variabel bil 2. Modulus bil dengan angka 2 3. Jika hasil sisa bagi(modulus) bilangan tersebut sama dengan 0, lakukan langkah 4 4. Tampilkan “bil adalah bilangan genap”. 5. Jika tidak maka lakukan langkah 6 6. Tampilkan “bil adalah bilangan postitif”
b.
Flowchart START
READ bil
sisa = bil % 2
IF sisa == 0
Y
PRINT “bilangan genap”
N PRINT “bilangan ganjil”
END
3
3. Buat program menggunaan pernyataan if adalah untuk menentukan besarnya potongan harga yang diterima oleh seorang pembeli, berdasarkan kriteria : tidak ada potongan harga jika total pembelian kurang dari Rp. 100.000 (dalam hal ini potongan harga diinisialisasi dengan nol). bila total pembelian lebih dari atau sama dengan Rp. 100.000, potongan harga yang diterima diubah menjadi sebesar 5% dari total pembelian. a.
Algoritma Penentu Diskon Deklarasikan bayar dan diskon sebagai variabel bilangan pecahan float sekaligus berikan nilai 0 pada diskon 1. Baca total pembayaran, tampung di variabel bayar 2. Jika bayar lebih dari atau sama dengan 100000 maka kerjakan langkah 5, jika tidak maka langsung kerjakan langkah 6 3. Hitung diskon, dengan cara mengalikan bayar dengan 0.05(5%) 4. Hitung bayar kembali dengan cara mengurangi bayar dengan diskon. 5. Tampilkan uang yang harus dibayar di layar.
4.
Flowchart Penentu Diskon START
READ bayar
IF bayar >= 100000
N
Y
diskon = bayar * 0.5
bayar = bayar-diskon
PRINT bayar
END
Buat program yang menerima dua buah bilangan. Output dari program adalah “Bilangan pertama adalah kelipatan persekutuan bilangan kedua” jika bilangan pertama habis dibagi bilangan kedua atau “Bilangan pertama bukan kelipatan persekutuan bilangan kedua” jika tidak habis dibagi.
1.
a.
Algoritma Pengecek Kelipatan 1. 2. 3. 4. 5. 6. 7. 8.
Deklarasikan bil1 dan bil2 sebagai bilangn bulat. Baca bilangan pertama, dan tampung di variabel bil1 Baca bilangan kedua, dan tampung di variabel bil2 Modulus bil1 dengan bil2 Jika hasil sisa bagi(modulus) bilangan tersebut sama dengan 0, lakukan langkah 4 Tampilkan “bil1 adalah kelipatan bil2 ”. Jika tidak maka lakukan langkah 6 Tampilkan “bil1 bukan kelipatan bil2”
4
a.
Flowchart Pengecek Kelipatan START
READ bil1, bil2
sisa = bil1 % bil2
IF sisa == 0
Y
PRINT Bil1 “adalah kelipatann” bil2
N PRINT Bil1 “bukan kelipatann” bil2
END
5. Gunakan pernyataan if…else untuk membuat program yang menerima 2 buah bilangan bulat masukan. Tampilkan hasil dari pembagian bilangan pertama dengan bilangan kedua, dengan ketelitian 3 desimal. a. Algoritma Deklarasikan bil1 dan bil2 sebagai bilangan bulat. 1. Baca bilangan pertama, dan tampung di variabel bil1 2. Baca bilangan kedua, dan tampung di variabel bil2 3. Jika bil2 adalah 0(nol) maka lakukan langkah 4, bila bukan lakukan langkah 5-6 4. Tampilkan kalimat “Bilangan pembagi tidak boleh nol”” 5. Bagi bil1 dengan bil2, simpan hasilnya di hasil 6. Tampilkan hasil pembagian
b.
Flowchart START
READ bil1, bil2
IF bil2 == 0
N
hasil = bil1 / bil2
Y PRINT
PRINT
“Bilangan pembagi tidak boleh nol”
hasil
END
5
C.
Percobaan 1. Penentu bilangan bulat positif atau negatif a. Listing program #include main() { int bil; printf("PRAKTIKUM 5 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PENENTU BILANGAN POSITIF DAN NEGATIF\n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan : "); scanf("%d",&bil); if(bil>=0) printf("\n%d adalah bilangan positif",bil); else printf("\n%d adalah bilangan negatif",bil); printf("\n\n"); }
b. Capture program
c. Analisis Bilangan positif ialah bilangan yang lebih dari nol sedangkan bilangan negatif adalah bilangan kurang dari nol. Untuk menyeleksi kondisi ini diperlukan pertintah if dimana apabila bilangan yang diinputkan user kurang dari nol maka sistem akan menampilkan informasi bahwa bilangan tersebut adalah bilangan positif sedangakan bila tidak maka bilangan tersebut sudah pasti bilangan adalah bilangan negatif. 2. Penentu bilangan ganjil atau genap a. Listing program #include main() { int bil; printf("PRAKTIKUM 5 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n");
6
printf("PENENTU BILANGAN GANJIL ATAU GENAP\n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan : "); scanf("%d",&bil); printf("\nBilangan yang anda inputkan adalah : %d",bil); if(bil % 2 == 0) printf("\nBilangan tersebut adalah bilangan genap",bil); else printf("\nBilangan tersebut adalah bilangan ganjil",bil); printf("\n\n"); }
b. Capture program
c. Analisis Bilangan ganjil ialah bilangan yang habis dibagi 2 sedangkan bilangan genap adalah bilangan yang tidak habis dibagi 2, Untuk menyeleksi kedua pernyataan tersebut diperlukan perintah if-else. Untuk mencari apakah bilangan tersebut habis dibagi 2 atau tidak, kita memerlukan operator modulus. Setelah tahu sisa baginya baru diseleksi menggunakan if-else. 3. Program Penghitung Diskon a. Listing program #include main() { float bayar,diskon = 0.0f; printf("PRAKTIKUM 5 SOAL 3\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENGHITUNG DISKON SEDERHANA\n"); printf("\n======================================== \n\n"); printf("Masukkan total pembelian: Rp. "); scanf("%f",&harga); if(harga >= 100000) { diskon = bayar * 0.05; bayar = bayar - diskon; }
7
printf("\nTotal pembelian anda \t: Rp. %0.2f",bayar); printf("\n\n"); }
b. Capture program
c. Analisis Diskon akan diberikan ketika total pembelian lebih dari Rp. 100.000. Untuk menyeleksi diskon tersebut maka kita bisa menggunakan perintah if saja untuk kondisi total pembelian lebih dari 100000. Jika kondisi tersebut terpenuhi, maka program akan menghitung diskon yang diberikan kemudian mengurangi total pembelian. Sedangkan apabila tidak terpenuhi, maka total pembelian akan tetap, tidak dikurangi diskon. 4. Pengecek kelipatan bilangan a. Listing program #include main() { int bil1,bil2; printf("PRAKTIKUM 5 SOAL 4\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PENGECEK KELIPATAN BILANGAN\n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan pertama \t: "); scanf("%d",&bil1); printf("Masukkan bilangan kedua \t: "); scanf("%d",&bil2); if(bil2 % bil1 == 0) printf("\nBilangan pertama[%d] ADALAH kelipatan persekutuan bilangan kedua[%d]",bil1,bil2); else printf("\nBilangan pertama[%d] BUKAN kelipatan persekutuan bilangan kedua[%d]",bil1,bil2); }
8
b. Capture program
c. Analisis Untuk mengetahui suatu bilangan apakah kelipatan dari bilangan lainnya, kita dapat menggunakan operator modulus kemudian kondisinya kita tentukan dengan pernyataan if-else. Suatu bilangan merupakan kelipatannya apabila bilangan tersebut habis dengan bilangan lain, dan bukan kelipatannya bila tidak habis dibagi. 5. Program pembagi 2 bilangan a. Listing program #include main() { float bil1,bil2,hasil; printf("PRAKTIKUM 5 SOAL 5\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PEMBAGI BILANGAN \n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan pertama \t: "); scanf("%f",&bil1); printf("Masukkan bilangan kedua \t: "); scanf("%f",&bil2); if(bil2 == 0) printf("\nBilangan kedua tidak boleh nol!"); else { hasil = bil1 / bil2; printf("\nHasil bagi %f dan %f adalah %.3f",bil1,bil2,hasil); } printf("\n\n"); }
9
b. Capture program
c. Analisis Dalam ilmu matematika, tidak dikenal pembagian dengan bilangan nol. Apabila hal ini dilakukan di komputer atau bahasa pemrograman maka akan menghasilkan error pula. Oleh karena itu kita bisa membuat semacam error handling dimana apabila bilangan pembagi atau bilangan kedua adalah bilangn nol maka langsung berikan peringatan “Bilangan kedua tidak boleh nol” tanpa perlu melakukan proses permbagian terlebih dahulu.
D.
Soal Tambahan 1) Program penentu bilangan absolut a. Listing program #include main() { int bil,abs; printf("PRAKTIKUM 5 Tambahan 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENGHITUNG NILAI ABSOLUT \n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan \t: "); scanf("%d",&bil); if(bil < 0) abs = bil * -1; else abs = bil; printf("\nNilai absolute dari bilangan %d adalah %d.",bil,abs); printf("\n\n"); }
10
b. Capture program
c. Analisis Bilangan absolut adalah bilangan yang nilainya selalu positif walaupun inputannya berupa bilangan negatif. Untuk mencari bilangan positif tersebut kita bisa menggunkan perintah if dimana apabila bilangan yang diinputkan adalah bilangan negatif(kurang dari nol) bilangan tersebut harus dikalikan -1 dahulu sehingga menjadi bilangan positif. 2) Untuk 3 flow chart di bawah ini lakukan tracing flow chart untuk menemukan outputnya, jika input yang diberikan adalah : (1) bil = 10 (2) bil = -10 (3) bil = 0
1) Kategori A 2) (kosong) 3) (kosong)
1) Kategori A 2) Kategori B 3) Kategori B
1) Kategori A 2) Kategori B Kategori A 3) Kategori B Kategori A
E. Kesimpulan 1. Di dalam bahasa permrograman terdapat 3 cara yang biasanya digunakan untuk melakukan perintah sesuai kondisi yaitu if, if else dan switch-case. 2. Suatu blok if akan dijalankan apabila memenuhi kondisi sesuai kriteria. 3. Untuk menentukan kondisi kita dapat menggunakan operator kondisi seperti ==,<, > <= dan >=. 4. Selain itu kita juga dapat menggunakan operator logika untuk menggabungkan 2 kondisi atau lebih. 11
PRAKTIKUM 6 Decission : Nested if & else if A.
Dasar Teori
Pernyataan if di dalam if Di dalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau ifelse) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk dari pernyataan ini adalah sebagai berikut :
Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (kondisi-1). Jika kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan if yang bersangkutan) yang akan diproses. Jika else (pasangannya tsb) tidak ditulis, maka penyeleksian kondisi akan dihentikan. Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam (kondisi-2) akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen else pasangan dari if yang bersangkutan yang akan diproses. Jika else (untuk kondisi-2) tidak ditulis, maka penyeleksian kondisi akan dihentikan. Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisi-n, jika kondisi-kondisi sebelumnya bernilai benar.
12
B.
Tugas Pendahuluan 1. Buatlah program yang menerima masukan berupa suhu dari sebuah benda. Keluaran dari program ini adalah “Benda berbentuk padat” jika suhu di bawah 0 derajat, “Benda berbentuk cair” jika suhu antara 0-100 dan “Benda berbentuk gas” jika suhu di atas 100 derajat. a. Algoritma Deklarasikan suhu sebagai bilangan pecahan float. 1. Masukkan suhu 2. Jika suhu kurang dari nol kerjakan langkah 3 bila tidak kerjakan langkah 4 dan seterusnya 3. Tampilkan “Benda tersebut adalah benda padat”. 4. Jika suhu kurang dari seratus kerjakan langkah 5 bila tidak kerjakan langkah 6 5. Tampilkan “Benda tersebut adalah benda cair”. 6. Tampilkan “Benda tersebut adalah benda gas”. b. Flowchart START
READ suhu
IF suhu < 0
N
Y PRINT “Benda Padat”
IF suhu <= 100
N
Y PRINT
PRINT
“Benda Cair”
“Benda Padat”
END
2. Pada sebuah perusahaan didapatkan Rekruitmen Karyawan berdasarkan Test Akademik, tes Ketrampilan dan Test Psikologi. Dari hasil tersebut peserta yang dinyatakan lulus adalah yang mendapatkan nilai dari ketiga test tersebut minimal rata-rata 13
75. Sementara untuk penempatan pada 3 Departemen, jika nilai tes Akademik lebih bagus (lebih besar) dari nilai tes Ketrampilan atau nilai tes Psikologi maka karyawan akan ditempatkan pada bagian administrasi. Jika nilai tes Ketrampilan lebih baik dari kedua tes tersebut maka karyawan akan ditempatkan pada bagian Produksi, selain itu ditempatkan pada bagian Pemasaran. a.
Algoritma Penerimaan Tenaga Kerja
Deklarasikan ak(akademik), kt(ketrampilan) dan ps(psikologi) sebagai bilangan pecahan. 1. Masukkan ak, kt, dan ps. 2. Hitung rata-rata dengan menjumlahkan ak , kt dan ps kemudia bagi dengan angka 3 3. Jika rata-rata kurang dari 75 maka lakukan langkah 3, bila tidak maka lakukan langkah 4 dan selanjutnya. 4. Tampilkan “Maaf anda tidak lolos!”. 5. Jika ak lebih dari ps dan ak lebih dari kt maka lakukan langkah 5, bila tidak lakukan langkah 6 dan selanjutnya. 6. Tampilkan “Anda lolos di bagian administrasi”. 7. Jika kt lebih dari ak dan kt lebih dari ps maka lakukan langkah 7, bila tidak lakukan langkah 8. 8. Tampilkan “Anda lolos di bagian produksi”. 9. Tampilkan “Anda lolos di bagian pemasaran”. b. Flowchart Penerimaan Tenaga Kerja rata = (ak + kt + ps) / 3
READ ak,kt,ps
START
N
IF kt > ak AND kt > ps
Y
N
IF ak > ps AND ak > kt
Y
N
IF rata < 75
Y
PRINT
PRINT
PRINT
PRINT
“Anda lolos di bagian Pemasaran”
“Anda lolos di bagian Produksi”
“Anda lolos di bagian Administrasi ”
“Maaf, Anda Tidak Lolos”
END
3. Dengan menggunakan pernyataan else..if , buatlah program kalkulator sederhana! a. Algoritma kalkulator sederhana
14
Deklarasikan bil1,bil2,hasil sebagai bilangan pecahan dan juga op sebagai bilangan bulat. 1. Baca bil1, bil2 dan op 2. Jika op sama dengan 1 lakukan langkah 3, jika tidak lakukan langkah 5 3. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 4. Tampilkan hasil 5. Jika op sama dengan 2 lakukan langkah 6, jika tidak lakukan langkah 8 6. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 7. Tampilkan hasil 8. Jika op sama dengan 3 lakukan langkah 9, jika tidak lakukan langkah 11 9. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 10. Tampilkan hasil 11. Jika op sama dengan 4 lakukan langkah 12, jika tidak lakukan langkah 14 12. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 13. Tampilkan hasil 14. Tampilkan peringatan “Operator yang anda masukkan salah” b. Flowchart kalkulator sederhana READ bil1,bil2
START
N
IF Op == 4 //Perkalian
Y hasil = bil1 * bil2
N
PRINT “Pilih menu…”
IF Op == 3 //Pembagian
N
READ op
IF Op == 2 //Pengurangan
Y hasil = bil1 / bil2
N
IF Op == 1 //Penjumlahan
Y hasil = bil1 - bil2
Y hasil = bil1 + bil2
PRINT “Operator Salah”
PRINT
PRINT
PRINT
PRINT
hasil
hasil
hasil
hasil
END
4. Buat program untuk mengkonversikan nilai angka ke nilai huruf a. Algoritma Program konversi nilai ke huruf Deklarasikan nilai sebagai bilangan pecahan 1. Masukkan bilangan 2. Jika bilangan lebih dari/sama dengan 0 dan kurang dari/sama dengan 40 maka lakukan langkah 3, bila tidak, lakukan langkah 4 dan seterusnya 3. Tampilkan “Nilai anda E” di layar. 15
4. Jika bilangan lebih dari 40 dan kurang dari/sama dengan 55 langkah 5, bila tidak, lakukan langkah 6 dan seterusnya 5. Tampilkan “Nilai anda D” di layar. 6. Jika bilangan lebih dari 55 dan kurang dari/sama dengan 60 langkah 7, bila tidak, lakukan langkah 8 dan seterusnya 7. Tampilkan “Nilai anda C” di layar. 8. Jika bilangan lebih dari 60 dan kurang dari/sama dengan 80 langkah 9, bila tidak, lakukan langkah 10 dan seterusnya 9. Tampilkan “Nilai anda B” di layar. 10. Jika bilangan lebih dari 80 dan kurang dari/sama dengan 100 langkah 11, bila tidak, lakukan langkah 12 11. Tampilkan “Nilai anda A” di layar. 12. Tampilkan “Nilai yang anda masukkan salah!” di layar.
maka lakukan
maka lakukan
maka lakukan
maka lakukan
b. Flowchart Program konversi nilai ke huruf
READ n
START
N
//nilai
IF n > 80 AND n <= 100
N
IF n > 60 AND n <= 80
N
IF n > 55 AND n <=60
N
IF n > 40 AND n <= 55
N
IF n >= 0 AND n <= 40
Y
Y
Y
Y
PRINT
PRINT
PRINT
PRINT
PRINT
“B”
“C”
“D”
“E”
“A”
PRINT
Y
END
“Nilai Salah”
5. Buatlah program simulasi penerimaan kerja. a.
Algoritma program simulasi penerimaan kerja.
Deklarasikan kacamata,ipk,status,umur sebagai bilangan pecahan 1. Masukkan umur 2. Jika umur lebih dari 35 lakukan langkah 3, bila tidak, langkah 4 dan seterusnya 3. Tampilkan “Umur anda kurang muda”. 4. Masukkan nilai kacamata(1/0) 5. Jika kacamata sama dengan 0 lakukan langkah 6, bila tidak, lakukan langkah 7 dan seterusnya 6. Tampilkan “Tidak menerima karyawan berkacamata”. 7. Masukkan nilai status(1/0) 8. Jika status sama dengan 0 lakukan langkah 9, bila tidak, lakukan langkah 10 dan seterusnya 16
9. Tampilkan “Anda harus lajang untuk diterima”. 10. Masukkan ipk 11. Jika ipk lebih dari/sama dengan 3 lakukan langkah 12, bila tidak, lakukan langkah 13 dan seterusnya 12. Tampilkan “Belajar lagi saja” 13. Tampilkan “Selamat anda lolos seleksi!” b. Flowchart penerimaan tenaga kerja START
READ umur
IF umur < 35
N
IF kacamata == 0
N
IF status == 0
N
IF ipk >= 3,0
N
PRINT “Anda kurang muda”
Y
READ kacamata
PRINT “Tidak boleh kacamata”
Y
READ status
PRINT “Harus Lajang”
Y
READ ipk
PRINT “Belajar lagi saja”
Y
PRINT “Anda Lolos”
END
17
C. Percobaan 1. Program penentu wujud benda a. Listing program #include main() { int suhu; printf("PRAKTIKUM 6 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENENTU WUJUD BENDA\n"); printf("\n======================================== \n\n"); printf("Masukkan suhu benda (Celcius): "); scanf("%d",&suhu); if(suhu < 0) printf("\nSuhu benda padat",suhu); else if(suhu < 100) printf("\nSuhu benda cair",suhu); else printf("\nSuhu benda gas",suhu); }
benda
%d
celcius,
Benda
tersebut
adalah
benda
%d
celcius,
Benda
tersebut
adalah
benda
%d
celcius,
Benda
tersebut
adalah
b. Capture program
c. Analisis Di dalam program ini membutuhkan 3 kondisi berbeda untuk menentukan suatu benda berwujud apa sesuai suhunya. Oleh karena itu diperlukanlah perintah if-else untuk menyeleksi masing-masing kondisi dari suhu yang telah diinputkan oleh user. Ketika suhu yang diinputkan sesuai kriteria pada kondisi, maka program akan langsung menampilkan wujud dari benda tersebut.
18
2. Program penerimaan karyawan a. Listing program #include main() { float akademik,psikologi,ketrampilan,rata; printf("PRAKTIKUM 6 SOAL 2\nRENDRA | 2110131036 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENERIMAAN KARYAWAN\n"); printf("\n======================================== \n\n"); printf("Masukkan suhu benda (Celcius): "); scanf("%d",&suhu);
|
printf("Masukkan Nilai Tes Akademik : "); scanf("%f",&akademik); printf("Masukkan Nilai Tes Psikologi : "); scanf("%f",&psikologi); printf("Masukkan Nilai Tes Ketrampilan : "); scanf("%f",&ketrampilan); rata = (akademik + psikologi + ketrampilan) / 3; if(rata > 7.5) { printf("\nSelamat anda telah diterima bekerja!"); if(akademik > ketrampilan && akademik > psikologi) printf("\nAnda ditempatkan di bagian ADMINISTRASI"); else if(ketrampilan > akademik && ketrampilan > psikologi) printf("\nAnda ditempatkan di bagian PRODUKSI"); else printf("\nAnda ditempatkan di bagian PEMASARAN"); } else printf("\nMaaf anda kurang beruntung!"); }
b. Capture program
19
c. Analisis Untuk menyeleksi kondisi seperti pada program penerimaan karyawan ini, diperlukanlah nested-if yaitu perintah if bersarang, atau if di dalam if. Blok if pertama digunakan untuk mengcek apakah peserta seleksi memilki nilain yang cukup atau tidak sedangkan blok if kedua yang berada di dalam if pertama berguna melakukan penempatan kerja sesuai kriteria nilai yang ditentukan. 3. Program kalkulator sederhana a. Listing program #include main() { float bil1, bil2, hasil, opmenu; printf("PRAKTIKUM 6 SOAL 3\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM Kalkulator Sederhana\n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan pertama \t: "); scanf("%f",&bil1); printf("Masukkan bilangan kedua \t: "); scanf("%f",&bil2); printf("\nMENU MATEMATIKA\n"); printf("\n[1] Penjumlahan"); printf("\n[2] Pengurangan"); printf("\n[3] Pembagian"); printf("\n[4] Perkalian"); printf("\nMasukkan pilihan anda \t: "); scanf("%f",&opmenu); if(opmenu == 1) hasil = bil1 + else if(opmenu == 2) hasil = bil1 else if(opmenu == 3) hasil = bil1 / else hasil = bil1 *
bil2; bil2; bil2; bil2;
printf("Hasil Operasi Tersebut \t= %.f",hasil); }
20
c. Capture program
d. Analisis Pada program kalkulator sederhana ini diperlukan fungsi if untuk menyeleksi operasi aritmatika yang akan dijalankan. Oleh karena itu diperlukanlah operator atau pilihan menu yang dapat dipilih oleh user dengan cara memasukkan nomor menu terlebih dahulu kemudian baru program menjalankan operasi sesuai operator yang dimasukkan. 4.
Program konversi nilai ke huruf a. Listing program #include main() { int nilai; printf("PRAKTIKUM 6 SOAL 3\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM KONVERSI NILAI KE HURUF\n"); printf("\n======================================== \n\n"); printf("Masukkan nilai angka : "); scanf("%d",&nilai); if(nilai <= 40) printf("\nNilai else if(nilai <= 55) printf("\nNilai else if(nilai <= 60) printf("\nNilai else if(nilai <= 80) printf("\nNilai else if(nilai <= 100) printf("\nNilai else printf("\nNilai
anda adalah E"); anda adalah D"); anda adalah C"); anda adalah B"); anda adalah A"); yang anda inputkan tidak valid!");
21
}
b. Capture program
c. Analisis Program konversi nilai ke angka ini menggunakan perintah if else karena memiliki kondisi yang cukup banyak. Setelah user menginputkan nilai, program akan menyeleksi nilai tersebut, apakah sesuai kondisi atau tidak. Bila iya maka langsung tampilkan nilai huruf sesuai kondisi tadi. Bila angka tidak ada yang sesuai kriteria, program akan menampilkan informasi error. 5. Program penerimaan karyawan a. Listing Program #include #include main() { int umur,kacamata,status; float ipk; char coba; printf("PRAKTIKUM 6 SOAL 5\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENERIMAAN KARYAWAN 2\n"); printf("\n======================================== \n\n"); printf("Berapa umur anda sekarang?"); scanf("%d",&umur); if(umur > 35) { printf("\nMaaf sepertinya anda terlalu tua, silakan edit KTP anda!"); } else { printf("\nApakah anda berkacamata (1/0)? "); scanf("%d",&kacamata); if(kacamata) { printf("\nMaaf kami tidak bisa menerima orang berkacamata, silakan lepas kacamata anda!");
22
} else { printf("\nApakah anda sudah menikah (1/0)?"); scanf("%d",&status); if(status) { printf("\nMaaf kami tidak bisa menerima orang yang telah menikah!"); } else { printf("\nBerapa nilai IPK anda?"); scanf("%f",&ipk); if(ipk < 2.75) { printf("\nWah, sepertinya IPK anda terlalu kecil untuk masuk sini."); } else { printf("\nSelamat! Anda berhasil menempuh semua tahapan dari test ini!"); } } } } }
b. Capture program
c. Analisis Di program penerimaan karyawan ini, digunakan nested-if dimana apabila suatu kriteria dari karyawan tidak terpenuhi, program dapat langsung memberikan informasi tidak diterimanya karyawan tanpa harus bertele-tele menanyakan hal lain.
23
D.
Soal Tambahan
1.
Program konversi angka ke hari #include main() { int bil; printf("PRAKTIKUM 6 SOAL TAMBAHAN \nRENDRA | 2110131036 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM KONVERSI ANGKA KE HARI\n"); printf("\n======================================== \n\n");
|
printf("Masukkan bilangan : "); scanf("%d",&bil); printf("\n"); if(bil == 1) puts("Hari Minggu"); else if(bil == 2) puts("Hari Senin"); else if(bil == 3) puts("Hari Selasa"); else if(bil == 4) puts("Hari Rabu"); else if(bil == 5) puts("Hari Kamis"); else if(bil == 6) puts("Hari Ju7at"); else if(bil == 7) puts("Hari Sabtu"); else puts("Angka tidak valid!"); printf("\n\n"); }
E. Kesimpulan Nested-if atau if bersarang lazimnya digunakan untuk kondisi dimana apabila suatu kondisi tidak terpenuhi akan langsung menjalankan perintah lainnya tanpa memperdulikan pernyataan lain di dalam if tersebut.
else-if digunakan apabila terdapat kriteria kondisi lagi setelah kondisi pertama sehingga menyebabkan pernyataan if bertingkat.
24
PRAKTIKUM 7 Decission : Switch
F.
Dasar Teori Pernyataan switch Pernyataan switch merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah alternatif, misalnya untuk menggantikan pernyataan if bertingkat. Bentuk umum pernyataan switch adalah : dengan ekspresi dapat berupa ekspresi bertipe integer atau bertipe karakter. Demikian juga konstanta-1, konstanta-2, …, konstanta-n dapat berupa konstanta integer atau karakter. Setiap pernyataan-i (pernyataan-1, … , pernyataan-n) dapat berupa pernyataan tunggal ataupun pernyataan jamak. Dalam hal ini urutan penulisan pernyataan case tidak berpengaruh. Proses penyeleksian berlangsung sebagai berikut :
1. pengujian pada switch akan dimulai dari konstanta-1. Kalau nilai konstanta-1 cocok dengan ekspresi maka pernyataan-1 dijalankan. Kata kunci break harus disertakan di bagian akhir setiap pernyataan case, yang akan mengarahkan eksekusi ke akhir switch. 2. Kalau ternyata pernyataan-1 tidak sama dengan nilai ekspresi, pengujian dilanjutkan pada konstanta-2, dan berikutnya serupa dengan pengujian pada konstanta-1. 3. Jika sampai pada pengujian case yang terakhir ternyata tidak ada kecocokan, maka pernyataan yang mengikuti kata kunci default yang akan dieksekusi. Kata kunci default ini bersifat opsional. 4. Tanda kurung kurawal tutup (}) menandakan akhir dari proses penyeleksian kondisi case.
25
G. Tugas Pendahuluan 1. Dengan menggunakan switch case, buat program yang meminta masukan bilangan bulat dari pengguna. Jika pengguna memasukkan 1, program menampilkan ’Minggu’; jika pengguna memasukkan 2, program menampilkan ’Senin’, dan seterusnya sampai dengan ’Sabtu’. Jika pengguna memasukkan nilai di luar jangkauan 1 sampai dengan, program menuliskan ’Hari tidak Valid’. a. Algroitma mengubah angka menjadi hari Deklarasikan bil sebagai sebuah bilang bulat 1. Masukkan bil 2. Jika bil sama dengan 1 maka tampilkan “Minggu”, bila tidak ke langkah 3 3. Jika bil sama dengan 2 maka tampilkan “Senin”, bila tidak ke langkah 4 4. Jika bil sama dengan 3 maka tampilkan “Selasa”, bila tidak ke langkah 5 5. Jika bil sama dengan 4 maka tampilkan “Rabu”, bila tidak ke langkah 6 6. Jika bil sama dengan 6 maka tampilkan “Jumat”, bila tidak ke langkah 7 7. Jika bil sama dengan 7 maka tampilkan “Sabtu”, bila tidak ke langkah 8 8. Tampilkan “Bilangan yang dimasukkan tidak valid”
b. Flowchart READ
START
bil
N
IF bil==7
N
IF bil==6 N
Y PRINT “Sabtu”
Y PRINT “Jumat”
N
IF bil==5 Y PRINT “Kamis”
N
IF bil==4
Y PRINT “Rabu”
N
IF bil==3 Y PRINT “Selasa”
N
IF bil==2
N
IF bil==1
Y PRINT “Senin”
Y PRINT “Minggu”
PRINT
END
“Invalid”
2. Kalkulator sederhana a. Algoritma Kalkulator Sederhana Deklarasikan bil1,bil2,hasil sebagai bilangan pecahan dan juga op sebagai bilangan bulat. 1. Baca bil1, bil2 dan op 2. Jika op sama dengan 1 lakukan langkah 3, jika tidak lakukan langkah 5 3. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 26
4. Tampilkan hasil 5. Jika op sama dengan 2 lakukan langkah 6, jika tidak lakukan langkah 8 6. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 7. Tampilkan hasil 8. Jika op sama dengan 3 lakukan langkah 9, jika tidak lakukan langkah 11 9. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 10. Tampilkan hasil 11. Jika op sama dengan 4 lakukan langkah 12, jika tidak lakukan langkah 14 12. Hitung hasil dengan menjumlahkan bil1 dengan bil2, tampung hasilnya di hasil. 13. Tampilkan hasil 14. Tampilkan peringatan “Operator yang anda masukkan salah” b. Flowchart Kalkulator Sederhana PRINT
READ bil1,bil2
START
IF Op == 4
N
N
//Perkalian
hasil = bil1
PRINT “Operator Salah”
PRINT hasil
IF Op == 3 //Pembagian
Y
Y bil2
READ op
“Pilih menu…”
hasil = bil1 / bil2
PRINT hasil
N
IF Op == 2 //Pengurangan
N
IF Op == 1 //Penjumlahan
Y hasil = bil1 bil2
PRINT hasil
Y hasil = bil1 + bil2
PRINT hasil
END
3. Buatlah program untuk menampilkan menu dan melakukan proses sbb : Menu : 1. Menghitung volume kubus 2. Menghitung luas lingkaran 3. Menghitung volume silinder. Input : pilihan user (1, 2 atau 3) a. Algoritma Deklarasikan menu sebagai bilangan bula, dan s,r dan t sebagai bilangan pecahan 1. Masukkan pilihan menu 2. Jika menu yang dimasukkan adalah 1 maka ke langkah 3 bila tidak, ke langkah 6 3. Masukkan r(radius) dan t(tinggi) 4. Kalikan variable diatas sesuai rumus 3.14 * r * r * t 5. Tampilkan hasilnya di layar 6. Jika menu yang dimasukkan adalah 2 maka ke langkah 7 bila tidak, ke langkah 10 27
7. Masukkan r(radius) 8. Kalikan variable diatas sesuai rumus 3.14 * r * r 9. Tampilkan hasilnya di layar 10. Jika menu yang dimasukkan adalah 3 maka ke langkah 12 bila tidak, ke langkah 14 11. Masukkan r(radius) 12. Kalikan variable diatas sesuai rumus s * s * s 13. Tampilkan hasilnya di layar 14. Tampilkan “Menu yang dimasukkan tidak tersedia” b. Flowchart READ menu
START
N
IF menu == 3
IF menu == 2
N
//v tabung
//l lingkar
Y
PRINT “Menu tidak tersedia”
IF menu == 1 //v kubus
Y
READ s
hasil = s*s*s
N
READ r
hasil = 3.14*r*r
PRINT hasil
PRINT hasil
Y READ r,t
hasil = 3.14*r*r*t
PRINT hasil
END
H. Percobaan 1. Program Konversi Angka ke Hari a. Listing program #include main() { int bil; printf("PRAKTIKUM 7 SOAL 1\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM KONVERSI ANGKA KE HARI\n"); printf("\n======================================== \n\n"); printf("Masukkan bilangan : "); scanf("%d",&bil); printf("\n"); switch(bil)
28
{ case 1 : puts("Minggu"); break; case 2 : puts("Senin"); break; case 3 : puts("Selasa"); break; case 4 : puts("Rabu"); break; case 5 : puts("Kamis"); break; case 6 : puts("Jum\'at"); break; case 7 : puts("Sabtu"); break; default : puts("Hari tidak valid!"); break; } printf("\n\n"); }
b. Capture program
c. Analisis Untuk konversi angka ke hari, perintah switch-case memanglah yang paling cocok karena pada program ini memiliki kondisi/pilihan-pilihan yang cukup banyak dan berstruktur. Pernyataan switch-case akan menyeleksi bilangan bulat yang dijadikan sebagai patokan hari. Setiap kondisi atau case harus diakhiri dengan break agar jalannnya program tidak berlanjut ke case selanjutnya. 2. Program kalkulator sederhana a. Listing program 29
#include main() { int valid_op = 1; char op; float number1, number2, result; printf("PRAKTIKUM 7 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM KALKULATOR SEDERHANA \n"); printf("\n======================================== \n\n"); printf("Masukkan 2 buah bilangan & sebuah op\n"); printf("dengan format : number1 op number2\n\n"); scanf("%f %c %f", &number1, &op, &number2); switch(op) { case '*': result = break; case '/': result = break; case '+': result = break; case '-': result = break; default: valid_op break; }
number1 * number2; number1 / number2; number1 + number2; number1 - number2; = 0;
if(valid_op) printf("\n%g %c %g adalah result ); else printf("Invalid op!\n"); }
%g\n",
number1,
op,
number2,
b. Capture program
30
c. Analisis Program kalkulator sederhana yang menggunakan switch-case ini melakukan penyeleksian terhadap operator yang dimasukkan oleh user. Setelah operator tersebut sesuai dengan kondisi / case maka program akan melakukan operasi aritmtika yang sesuai dengan operator. 3. Program penghitung berbagai bangun a. Listing program #include main() { int opmenu; float sisi_kubus,volume_kubus,radius_lingkaran,luas_lingkaran,tinggi_tabung,v olume_tabung; printf("PRAKTIKUM 7 SOAL 2\nRENDRA | 2110131036 | 1D4ITB\n"); printf("\n======================================== \n\n"); printf("PROGRAM PENGHITUNG BERBAGAI BANGUN\n"); printf("\n======================================== \n\n"); printf("=== MENU ===\n"); printf("[1] Menghitung volume kubus\n"); printf("[2] Menghitung luas lingkaran\n"); printf("[3] Menghitung volume tabung\n"); printf("Masukkan pilihan anda : "); scanf("%d",&opmenu); printf("\n"); switch(opmenu) { case 1: printf("==== Menghitung volume kubus ==="); printf("\nMasukkan panjang sisi \t = "); scanf("%f",&sisi_kubus); volume_kubus = sisi_kubus * sisi_kubus * sisi_kubus; printf("\nLuas kubus tersebut adalah %.2f",volume_kubus); break; case 2: printf("==== Menghitung luas lingkaran ==="); printf("\nMasukkan panjang radius \t = "); scanf("%f",&radius_lingkaran); luas_lingkaran = 3.14 * radius_lingkaran * radius_lingkaran; printf("\nLuas lingkaran tersebut adalah %.2f",luas_lingkaran); break; case 3: printf("==== Menghitung volume tabung ==="); printf("\nMasukkan panjang radius alas \t = "); scanf("%f",&radius_lingkaran); printf("\nMasukkan tinggi tabung \t\t = ");
31
scanf("%f",&tinggi_tabung); volume_tabung = 3.14 * radius_lingkaran * radius_lingkaran * tinggi_tabung; printf("\nVolume tabung tersebut adalah %.2f",volume_tabung); break; default: printf("Menu yang anda masukkan salah!"); break; } }
b. Capture program
c. Analisis Untuk program penghitung bangun ini, perintah switch-case digunakan sebagai penyeleksi sub program yang dijalankan, apakah program penghitung luas lingkaran atau penghitung volume kubus serta tabung.
I. Soal Tambahan 1. Perbedaan else-if dan switch-case : A. Penggunaan else-if biasanya digunakkan ketika menjumpai kondisi yang tidak terlalu banyak pilihan, sedangkan switch case biasanya digunakkan ketika menjumpai kondisi yang memiliki banyak pilihan. B. Pada else-if kita bisa menggunakan operator kondisi dan tipe data apa saja, sedangkan pada switch-case tipe data haruslah berupa bilangan bulat(int) atau character(char) dan tidak bisa menggunakan operator kondisi seperti <,>,>= serta <=. C. Pada else-if program akan mengecek setiap kondisi dari atas ke bawah satu persatu kemudia baru menjalankan isi dari statemen di blok if yang benar, sedangkan dalam 32
switch-case program akan langsung menuju kondisi yang benar tanpa mengecek case satu persatu. D. Pada switch case, memerlukan keyword break yang berfungsi mengakhiri perintah ketika kondisi benar, sedangkan dalam else-if tidak perlu.
E. Kesimpulan
Pernyataan switch-case digunakan apabila kita menemui kondisi dimana terdapat banyak pilihan/pilihan atau cases. Pernyataan switch-case hanya bisa digunakn untuk menyeleksi bilangan bulat(int) dan karakter(char) Setiap case di dalam switch perlu diakhiri dengan pernyataan break apabila menginginkan tiap case dilakukan sesuai kondisinya. Untuk memberikan error handling, bisa menggunakan pernyataan default.
33