Thursday 13 March 2014

Membuat Percabangan Program dengan Switch Case dan If-Else

Sebelumnya kan saya udah share teori tentang operasi dasar yang bisa dilakukan komputer (kalo belom baca, silahkan kunjungi link ini). Sekarang ayo kita coba terapkan ke kodingan. Yuk langsung capcus. Ngoengg!!!

Membuat Percabangan Program

Kalo bicara tentang percabangan program, paling enak sih bikin menu. Jadi program akan tampilin menu dan si user tinggal pilih. Okeh langsung aja kita terapkan ke program penjualan kue di sebuah toko, sebut saja namanya Mawar Aguchan Cake Shop.
Jadi begini skenarionya:

Pertama, saat program dijalankan akan menampilkan menu yang nantinya akan dipilih oleh user.
Spoiler for Screenshot:

Jika user memilih menu 1, maka akan ditampilkan daftar kue yang dijual di toko tsb beserta harganya.
Spoiler for Screenshot:

Kemudian, jika user memilih menu 2, user akan diminta untuk menginput jumlah masing2 kue yang akan dibelinya. Jika user membeli lebih dari 10 kue, maka user akan mendapatkan diskon sebesar Rp. 20000. Setelah itu user akan diminta untuk mengisi jumlah uang yang akan dibayarkan. Komputer akan memprosesnya, lalu menampilkan keterangan bahwa transaksi telah berhasil dan menunjukkan jumlah kembalian.
Spoiler for Screenshot:

Di menu 2 terdapat percabangan, yaitu saat user akan diminta untuk menginput jumlah masing2 kue yang akan dibelinya. Jika user membeli kurang dari 10 kue, maka user tidak akan mendapatkan diskon. Setelah itu user akan diminta untuk mengisi jumlah uang yang akan dibayarkan. Komputer akan memprosesnya, lalu menampilkan keterangan bahwa transaksi telah berhasil dan menunjukkan jumlah kembalian.
Spoiler for Screenshot:

Lets move on to the coding
Spoiler for Kodingan:
#include <stdio.h>
#include <stdlib.h>

void clear()
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
}

void daftar_kue()
{
clear();
printf("Kue yang tersedia adalah: \n");
printf("1. Cupcake Special @Rp. 15.000\n");
printf("2. Cake Cokelat @Rp. 50.000\n");
printf("3. Cake Buah Vanilla @Rp. 60.000\n");
printf("Tekan enter untuk kembali ke menu utama\n");
getchar();
}

void pembelian()
{
int cupcake, cokelat, vanilla, jumlah;
int total, diskon, bayar;

clear();
printf("Jumlah Cupcake Special yang ingin anda beli: ");
scanf("%d", &cupcake);fflush(stdin);
printf("Jumlah Cake Cokelat yang ingin anda beli: ");
scanf("%d", &cokelat);fflush(stdin);
printf("Jumlah Cake Buah Vanilla yang ingin anda beli: ");
scanf("%d", &vanilla);fflush(stdin);

jumlah = cupcake+cokelat+vanilla;
printf("Anda telah memesan sebanyak %d kue\n", jumlah);
total = (cupcake*15000)+(cokelat*50000)+(vanilla*60000);

if(jumlah>10)
{
diskon = 20000;
printf("Total harga sebesar Rp. %d\n\n", total);
printf("Karena anda membeli lebih dari 10 kue, maka anda berhak mendapatkan diskon sebesar Rp. %d\n", diskon);

printf("Silahkan masukkan jumlah uang yang akan anda bayarkan: Rp. ");
scanf("%d", &bayar);fflush(stdin);
printf("Terima kasih, pesanan anda sedang kami proses...\n\n");
printf("Silahkan tekan enter untuk melanjutkan\n");
getchar();

clear();
printf("Pesanan anda sudah kami proses. Kembalian anda adalah sebesar Rp. %d\n", bayar-(total-diskon));
}
else
{
printf("Total harga sebesar Rp. %d\n\n", total);
printf("Silahkan masukkan jumlah uang yang akan anda bayarkan: Rp. ");
scanf("%d", &bayar);fflush(stdin);
printf("Terima kasih, pesanan anda sedang kami proses...\n\n");
printf("Silahkan tekan enter untuk melanjutkan\n");
getchar();

clear();
printf("Pesanan anda sudah kami proses. Kembalian anda adalah sebesar Rp. %d\n", bayar-total);

}

printf("Tekan enter untuk kembali ke menu utama\n");
getchar();
}

void main()
{
int pilih;

do{
clear();
printf("+=================+\n");
printf("|Aguchan Cake Shop|\n");
printf("+=================+\n\n");

printf("Menu:\n");
printf("1. Lihat daftar kue\n");
printf("2. Pembelian\n");
printf("3. Keluar\n");

do{
printf("Silahkan pilih menu yang anda inginkan: ");
scanf("%d", &pilih);fflush(stdin);
if(pilih<1 || pilih>3)
{
printf("Pilihan anda tidak tersedia\n");
}
}while(pilih<1 || pilih>3);

switch(pilih)
{
case 1:
daftar_kue();
break;
case 2:
pembelian();
break;
}
printf("\n\n");
}while(pilih!=3);
printf("Terima kasih sudah berbelanja di Aguchan Cake Shop");

getchar();
}
Nah lo, kenapa banyak modul void di sana? Apa maksudnya?
Jadi begini, seperti yang udah kamu ketahui, kodingan dalam bahasa C akan dijalankan secara berurutan dari atas ke bawah. Untuk menyingkat metode yang digunakan dalam modul utama, kita bisa memasukkannya ke modul yang khusus dibuat untuk metode tsb. Modul khusus itu harus dibuat sebelum modul utama. Lalu kita tinggal melakukan passing modul ke dalam modul utama dengan hanya menuliskan nama dari modul tsb. Ini sebenernya udah teknik C++ karena kita membuat program berdasarkan object.

Untuk membuat menu di modul utama, kita membutuhkan metode switch-case. Apakah itu?
Metode switch-case adalah metode yang mempassing parameter inputan untuk kemudian menjalankan metode yang sesuai dengan jenis kasus inputannya (warning: ini cuma pemahaman sederhananya aja dan bukan arti resminya). Syntax dasar dari switch case adalah:
switch (nama_parameter_inputan)
{
case 1: metode; break;
case 2: metode; break;
//dan seterusnya
}
Penulisan case ga mutlak harus angka 1 2 3 tapi bisa juga berupa huruf asalkan kamu memasukkan huruf tsb ke dalam tanda kutip 1 (tanda ' ' ) untuk menandakan bahwa itu adalah character. Setiap case harus diberikan tanda break; agar metode dalam case lain tidak ikut dijalankan. Ga lucu dong kalo misalnya kita pilihnya menu 1 dari total 5 menu, tapi yang di tampilin 5 metode. Udah gitu panjang2 pulak metodenya

Metode percabangan dengan if-else sederhana aja. Kalau syarat programnya cocok dengan syarat if, maka metode di dalam scope if akan dijalankan. Sebaliknya, kalo ga cocok maka metode di dalam scope else atau else if akan dijalankan. Metode di dalam scope else biasanya akan berjalan secara default. Syntax dasar dari if-else adalah:
if(kondisi)
{
metode;
}
else if(kondisi)
{
metode;
}
else
{
metode;
}

Kemudian yang terakhir adalah do-while. Itu sebenernya teknik pengulangan yang ga ada hubungannya sama percabangan program. Cara kerjanya yaitu program akan mengulang metode di dalam scope do-while selama kondisi di dalam while terpenuhi. Mungkin besok2 saya akan bahas tentang iteration alias pengulangan dalam program. Syntax dasar do-while adalah:
do{
metode;
}while(kondisi);

Mission Possible 2: Buat program yang sama tapi dengan bahasa C++
Selamat mencoba dan bereksperimen! Kalo kamu ada pertanyaan, jangan ragu untuk menuliskannya di kotak komentar di bawah ya. 

No comments:

Post a Comment