Decision on C++ Part 2
Hello Everyone,
Welcome to my site.
Kali ini saya akan melanjutkan tulisan saya tentang Decision,
3. Perintah IF dalam IF
Perintah if dalam if sering disebut nested-if. perintah ini mempunyai bentuk umum sebagai berikut:
if(kondisi1)
if(kondisi2)
pernyataan1;
else
pernyataan2;
else
pernyataan3;
Pernyataan if dalam if juga mempunyai bentuk yang majemuk yang sering disebut if bertingkat. Bentuk umumnya adalah sebagai berikut:
if(kondisi1)
pernyataan1;
else if(kondisi2)
pernyataan2;
else if(kondisi3)
pernyataan3;
else if(kondisi4)
pernyataan4;
...
...
...
else
pernyataan_n;
Sesusai dengan bentuk umum di atas, maka dalam hal ini jika kondisi 1 benar maka pernyataan 1 yang akan dikerjakan dan apabila kondisi 1 tidak benar maka kondisi2 yang akan dilihat. Jika kondisi 2 benar maka pernyataan 2 yang akan dikerjakan dan apabila kondisi 2 tidak benar maka kondisi3 yang akan dilihat. Jika kondisi3 benar maka pernyatan3 yang akan dikerjakan dan apabila kondisi3 tidak benar maka kondisi4 yang akan dilihat. Jika kondisi4 benar maka pernyataan 4 yang akan dikerjakan dan apabila kondisi4 tidak benar maka pernyataan terakhir yang akan dikerjakan (sesuai dengan bentuk diatas, pernyataan yang terakhir).
Misal ada suatu permasalahan, Anda diminta untuk membuat algoritma dan program untuk menentukan suatu bilangan yang dimasukkan apakah termasuk bilangan positif, negatif, atau nol. Katakanlah bilangan yang dimasukkan adalah x.
Algoritma dari permasalahan di atas adalah:
- Masukkan nilai x
- Jika x>0, maka x adalah bilangan positif
- Jika x<0, maka x adalah bilangan negatif
- Jika x=0, maka x adalah bilangan 0
Keterangan: Pada baris pertama, diminta untuk memasukkan sebuah bilangan (dalam hal ini adalah x). Proses pengujian dimulai dari baris kedua, apabila bilangan x yang dimasukkan tersebut lebih besar dari 0, dan jawabannya adalah ya, maka cetak bilangan x tersebut adalah bilangan positif. Jika bilangan yang dimasukkan kurang dari 0, dan jawabannya adalah ya maka cetak bilangan x adalah bilangan negatif. Dan pada baris ke empat, apabila bilangan yang dimasukkan sama dengan 0, maka bilangan tersebut adalah bilangan 0.
Penggalan program tersebut adalah sebagai berikut:
if(x>0)
cout << x << " adalah bilangan positif";
else if(x<0)
cout << x << " adalah bilangan negatif";
else
cout << x << " adalah bilangan nol";
Dari contoh penggalan program di atas, bisa dilihat x adalah suatu bilangan yang dimasukkan, apabila x yang dimasukkan lebih besar dari 0, misal : 5, maka pernyataan x adalah bilangan positf, karena kondisi pertama sudah benar maka kondisi kedua atau kondisi yang lain tidak akan dilihat. Sebaliknya, apabila x yang dimasukkan nilainya -5, maka kondisi pertama tidak akan dilihat karena kondisi x>0 tidak sesuai. oleh sebab itu, kondisi kedua kemudian dilihat dan ternyata sesuai yaitu x < 0 dan seterusnya tergantung dari x yang dimasukkan.
4. Perintah SWITCH
Perintah switch merupakan pernyataan yang dirancang untuk menangani pengambilan keputusan yang melibatkan sejumlah pilihan alternatif yang diantaranya untuk menggantikan pernyataan if bertingkat.
Bentuk umumnya adalah:
switch(expresi)
{
case konstanta1;
pernyataan1;
break;
case konstanta2:
pernyataan2;
break;
case konstanta3:
pernyataan3;
break;
case konstanta4:
pernyataan4;
break;
...
...
case konstanta_n:
pernyataan_n;
break;
default:
pernyataan_x;
}
Dari bentuk umum diatas, dapat dijelaskan bahwa ekspresi bisa berupa ungkapan yang bernilai integer atau bertipe karakter. Setiap konstanta1, konstanta2, konstanta3, konstanta4, samapai dengan konstanta_n dapat berupa konstanta integer atau konstanta karakter.
Setiap pernyataan1, pernyataan2, pernyataan3, pernyataan4, sampai pernyataan_n dapat berupa sebuah atau beberapa pernyataan.
Pengujian pada switch akan dimulai dari konstanta1. Apabila nilainya cocok dengan ekspresi maka pernyataan1 akan dijalankan. Kalau tidak cocok maka akan beralih ke pernyataan2 dan seterusnya sampai hasil yang diinginkan.
Perintah break
menyebabkan ekseskusi diarahkan ke akhir switch kalau nilai konstanta1 tidak sama dengan nilai ekspresi dan kemudian baru diteruskan pengujian dengan konstanta2 dan seterusnya. Jika sampai pada pengujian akhir tidak ada yang cocok maka default
akan dijalankan.
Jika pernyataan break
tidak diikutsertakan pada setiap case
maka walaupun konstantanya cocok dengan ekspresi, maka setelah pernyataan pada case
tersebut dikerjakan akan dilanjutkan ke case
berikutnya sampai ditemuai pernyataan break
pada akhir switch
.
Misalkan ada permasalahan lain, yaitu diminta untuk membuat lagoritma dan program untuk menentukan hari yang dimaksud berdasarkan kode yang dimasukkan. Adapun kode yang dimasukkan mulai dari 1, 2, 3, 4, 5, 6, dan 7. Input dari permaslahan di atas adalah kode dan keluarnnya berpua hari Senin, Selala, Rabu, Kamis, Jumat, Sabtu, dan Minggu. Ketentuan dari hari mengacu pada kode yang dimasukkan.
Jika kode = 1 maka hari = senin
Jika kode = 2 maka hari = selasa
jika kode = 3 maka hari = rabu
jika kode = 4 maka hari = kamis
jika kode = 5 maka hari = jumat
jika kode = 6 maka hari = sabtu
jika kode = 7 maka hari = minggu
JIka kode yang dimasukkan salah maka pilihannya tidak ada.
Algoritma:
- Masukkan kode
- jika kode = 1 maka hari = senin
- jika kode = 2 maka hari = selasa
- jika kode = 3 maka hari = rabu
- jika kode = 4 maka hari = kamis
- jika kode = 5 maka hari = jumat
- jika kode = 6 maka hari = sabtu
- jika kode = 8 maka hari = minggu
- jika kode yang dimasukkan salah maka pilihannya tidak ada
- tampilkan kode dan hari
Implementasi pada program
#include <iostream>
using namespace std;
int main()
{
int kdhari;
cout << "masukkan kode hari (1-7): ";
cin >> kdhari;
switch(kdhari)
{
case 1:
cout << "senin";
case 2:
cout << "selasa";
case 3:
cout << "rabu";
case 4:
cout << "kamis";
case 5:
cout << "jumat";
case 6:
cout << "sabtu";
case 7:
cout << "minggu";
default:
cout << "Kode tidak valid";
}
return 0;
}
Bila program diatas dijalankan maka hasilnya adalah sebagai berikut:
masukkan kode hari (1-7): 1
senin
Dari program diatas, apabila dimasukkan kode hari= 1, maka sesuai kondisi yang diterapkan di dalam program yaitu case 1, maka pernyatan pertama yang ada dalam case 1 yaitu mencetak hari Senin yang akan dikerjakan. Sebaliknya, apabila dimasukkan kode hari=2, maka sesuai dengan kondisi yang diterapkan di dlama program yaitucase 2, maka pernyataan kedua yang ada dalam case 2 mencetak hari = selasa yang akan dikerjakan. Dan seterusnya tergantung dari kode hari yang dimasukkan.
Dari program di atas bisa dilihat apabila kondisi benar maka pernyataan pertama yang akan dikerjakan, dan kalau kondisinya salah pernyataan kedua yang akan dilihat. Apabila kondisinya benar maka pernyataaan dibawahnya akan dikerjakan. Dan seterusnya sampai pernyataan terakhir.