Decision on C++ Part 2

Hello Everyone,

Welcome to my site.

Kali ini saya akan melanjutkan tulisan saya tentang Decision,

Decision on C++ Part 1

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:

  1. Masukkan nilai x
  2. Jika x>0, maka x adalah bilangan positif
  3. Jika x<0, maka x adalah bilangan negatif
  4. 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:

  1. Masukkan kode
  2. jika kode = 1 maka hari = senin
  3. jika kode = 2 maka hari = selasa
  4. jika kode = 3 maka hari = rabu
  5. jika kode = 4 maka hari = kamis
  6. jika kode = 5 maka hari = jumat
  7. jika kode = 6 maka hari = sabtu
  8. jika kode = 8 maka hari = minggu
  9. jika kode yang dimasukkan salah maka pilihannya tidak ada
  10. 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.