Anda di halaman 1dari 27

PRODI DIV PERKERETAAPIAN

JURUSAN TEKNIK
POLITEKNIK NEGERI MADIUN

PRAKTIKUM 4 :

Percabangan Switch Case

A. TUJUAN

1. Memahami konsep percabangan switch-case

2. Menjelaskan penggunaan percabangan switch - case

B. DASAR TEORI

Untuk keperluan pengambilan keputusan, C menyediakan beberapa jenis


percabangan, berupa

Percabangan if

Percabagann if-else, dan

Percabangan switch

Percabangan 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 3-1.

Tabel 3-1. Operasi relasi


PRODI DIV PERKERETAAPIAN
JURUSAN TEKNIK
POLITEKNIK NEGERI MADIUN

Operator Logika.

Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan


operator logika ditunjukkan pada tabel 3-2.
Tabel 3-2. Operator logika

Bentuk ini menyatakan : jika kondisi yang diseleksi adalah benar (bernilai logika =
1), maka pernyataan yang mengikutinya akan diproses. Sebaliknya, jika kondisi yang
diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang
mengikutinya tidak akan diproses. Mengenai kondisi harus ditulis diantara tanda
kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan
majemuk atau pernyataan kosong.

Percabangan switch - case


Diagram alir pernyataan switch-case dapat dilihat seperti gambar 3.1.

Start

tidak tidak tidak


Kondisi 1 Kondisi 2 Kondisi 3

ya ya ya

Pernyataan 1 Pernyataan 2 Pernyataan 3 Pernyataan default

End
Gambar 3.1. Diagram alir switch-case
PRODI DIV PERKERETAAPIAN
JURUSAN TEKNIK
POLITEKNIK NEGERI MADIUN

Pernyataan switch - case memiliki bentuk umum sebagai berikut:

switch (kondisi)
{
case konstanta-1:
pernyataan-1;
......
break;
case konstanta-2:
pernyataan-2;
......
break;
case konstanta-n:
pernyataan-n;
.......
break;
default:
pernyataan
.......
break;
}
Kondisi 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 :
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. Kalau ternyata pernyataan-1 tidak sama dengan nilai ekspresi,
pengujian dilanjutkan pada konstanta-2, dan
PRODI DIV PERKERETAAPIAN
JURUSAN TEKNIK
POLITEKNIK NEGERI MADIUN

berikutnya serupa dengan pengujian pada konstanta-1. 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.
Tanda kurung kurawal tutup ‘}’ menandakan akhir dari proses penyeleksian kondisi
case.

C. PERCOBAAN
1. Buatlah program untuk menghitung luas dan volume sebagai

berikut : Menu :

1. Menghitung luas lingkaran

2. Menghitung volume kubus

3. Menghitung volume silinder.

4. Menghitung volume limas. Input : pilihan user (1, 2, 3

atau 4)

Jika pilihan = 1, maka :

Input : jari – jari lingkaran

Output : luas lingkaran



Jika pilihan = 2, maka :

Input : panjang sisi kubus

Output : volume kubus .



Jika pilihan = 3, maka :

Input : panjang jari-jari lingkaran & tinggi silinder


Output : volume silinder
PRODI DIV PERKERETAAPIAN
JURUSAN TEKNIK
POLITEKNIK NEGERI MADIUN

Jika pilihan = 4, maka :

Input : alas segitiga, tinggi segitiga, & tinggi limas

Output : volume limas



Jika pilihan selain 1, 2, 3 dan 4 (default) : Tampilkan pesan kesalahan.

2. Buatlah program untuk perhitungan harga tiket kereta berikut :

No Jurusan Harga tiket hari Diskon tiket hari


Senin - Jumat Sabtu – Minggu
1 Madiun – Surabaya Rp. 200,000 5%
2 Madiun – Jogjakarta Rp. 225,000 10 %
3 Madiun – Semarang Rp. 250,000 15%
4 Madiun - Jakarta Rp. 300,000 20%
D. Laporan Resmi

Buatlah laporan resmi dengan membuat flowchart, analisa program dan output
program dari soal diatas.
1. Program Untuk Menghitumg Luas dan Volume Bangun Ruang
A. Flowchart

B. Program
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int a,opsi;
float lling,rl,s,vkub,ts,vsil,as,tlim,ls,vlim;
void bangun()
{
printf("|Pilih Bangun Ruang : |\n");
printf("| 1. Menghitung Luas Lingkaran
|\n");
printf("| 2. Menghitung Volume Kubus
|\n");
printf("| 3. Menghitung Volume Silinder
|\n");
printf("| 4. Menghitung Volume Limas Segitiga
|\n");

printf("==============================================
===\n");
printf("Masukkan Pilihan Bangun Ruang [1-4] : ");
scanf("%d",&a);
}
void program()
{
switch(a)
{
case(1) :

printf("==============================================
===\n");
printf("\n Menghitung Luas
Lingkaran \n");
printf(" - Rumus : 3.14 *
r^2 \n\n");
printf("Masukkan jari-jari (r):
"); scanf("%f",&rl);
lling=(3.14)*pow(rl,2);
printf(" Hasil Dari Luas
Lingkaran\n");
printf(" - Luas Lingkaran =
3.14 * r^2 \n");
printf(" = 3.14
* %.2f^2 \n",rl);
printf(" = %.2f
m^2\n",lling);
printf(" Jadi Luas Dari
Lingkaran Adalah %.2f m^2\n",lling);

printf("==============================================
===\n");
break;
case(2) :

printf("==============================================
===\n");
printf("\n Menghitung Volume
Kubus\n");
printf(" - Rumus : s^3 \n\n");
printf("Masukkan Panjang Sisi
Kubus : "); scanf("%f",&s);
vkub=pow(s,3);
printf(" Hasil Dari Volume
kubus\n");
printf(" - volume kubus =
s^3 \n");
printf(" = %.2f *
%.2f * %.2f \n",s,s,s);
printf(" = %.2f
m^3\n",vkub);
printf(" Jadi Volume Dari Kubus
Adalah %.2f m^3 \n",vkub);

printf("==============================================
===\n");
break;
case(3) :

printf("==============================================
===\n");
printf("\n Menghitung Volume
Silinder\n");
printf(" - Rumus : luas
lingkaran * tinggi silinder \n\n");
printf("Masukkan jari-jari
silinder : "); scanf("%f",&rl);
printf("Masukkan tinggi silinder
: "); scanf("%f",&ts);
lling=(3.14)*pow(rl,2);
printf(" *Hasil Dari Luas
Lingkaran\n");
printf(" - Luas Lingkaran =
3.14 * r^2 \n");
printf(" = 3.14
* %.2f^2 \n",rl);
printf(" =
%.2f \n",lling);
vsil=lling*ts;
printf(" *Hasil Dari Volume
Silinder\n");
printf(" - volume silinder =
luas lingkaran * tinggi silinder \n");
printf(" = %.2f
* %.2f \n",lling,ts);
printf(" = %.2f
m^3\n",vsil);
printf(" Jadi Volume Dari
Silinder Adalah %.2f m^3 \n",vsil);

printf("==============================================
===\n");
break;
case(4) :

printf("==============================================
===\n");
printf("\n Menghitung Volume
Limas Segitiga\n");
printf(" - Rumus : 1/3 *
luas alas * tinggi \n\n");
printf("Masukkan alas segitiga
: "); scanf("%f",&as);
printf("Masukkan tinggi segitiga
: "); scanf("%f",&ts);
printf("Masukkan tinggi limas
: "); scanf("%f",&tlim);
ls=0.5*as*ts;
printf(" - Luas Segitiga = 1/2
* alas * tinggi segitiga \n");
printf(" = 1/2 * %.2f
* %.2f \n",as,ts);
printf(" = %.2f
\n",ls);
vlim=(ls*tlim)/3;
printf(" - Volume Limas
Segitiga = 1/3 * luas alas * tinggi \n");
printf(" = 1/3 *
%.2f * %.2f \n",ls,tlim);
printf(" = %.2f
m^3\n",vlim);
printf(" Jadi Volume Dari Limas
Segitiga Adalah %.2f m^3 \n",vlim);

printf("==============================================
===\n");
break;
default : printf("\n\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n");
break;
}
}
int main(int argc, char *argv[])
{

printf("**********************************************
***\n");
printf("* PROGRAM MENGHITUNG BANGUN RUANG
*\n");

printf("**********************************************
***\n");
x : bangun();
program();
y :

printf("\n********************************************
*****\n");
printf("Tekan 1 untuk kembali atau 2 untuk keluar
\n");
printf("Pilihan : "); scanf("%d",&opsi);
switch(opsi)
{
case(1) : goto x;
break;
case(2) : system("pause");
return 0;
break;
default : printf("\n\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto y;
break;
}

}
C. Analisa
Program ini menggunakan percabangan switch – case. Proses penyelesaiannya
sebagai berikut : 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. Kalau ternyata pernyataan-1 tidak sama
dengan nilai ekspresi, pengujian dilanjutkan pada konstanta-2,
 int (Integer)
adalah tipe data untuk angka numerik yang tidak menggunakan koma untuk
membuat variabel i, x, angka, dan opsi dalam tipe data integer
 float
tipe data untuk menampung angka pecahan (desimal) atau bilangan yang
mengandung angka dibelakang koma
 pow
Digunakan sebagai fungsi pangkat

D. Output
1) Percobaan 1

 Analisa
Untuk menghitung luas lingkaran menggunakan rumus = π * r2 dalam
program ini menggunakan rumus = (3.14)*pow(rl,2)
Perhitumgan :
-
Luas lingkaran = 3.14 x r x r
-
= 3.14 x 2.5 x 2.5
-
= 3.14 x 6.25
-
= 19.625 = 19.63 m2

2) Percobaan 2

 Analisa
Untuk menghitung volume kubus menggunakan rumus = sisi x sisi x sisi.
Dalam program ini menggunakan rumus =pow(s,3).
Perhitungan :
-
Volume kubus = sisi x sisi x sisi
-
= 5.3 x 5.3 x 5.3
-
= 148.877 = 148.88 m3
3) Percobaan 3

 Analisa
Untuk menghitung volume silinder menggunakan rumus = Luas
lingkaran x Tinggi silinder. Maka kita harus cari dulu Luas lingkarannya
dengan rumus
= π * r2 . program ini menggunakan rumus =(3.14)*pow(rl,2) untuk luas
lingkaran dan = lling*ts untuk volume silinder.
Perhitungan :
-
Luas lingkaran = 3.14 x 4 x 4
-
= 3.14 x 16
-
= 50.24
-
Volume silinder = Luas lingkaran x tinggi silinder
-
= 50.24 x 2.5
-
= 125.6 m3

4) Percobaan 4
 Analisa
Untuk menghitung volume limas segitiga menggunakan rumus = 1/3 x
luas alas x tinggi.
Pertama harus mencari Luas Alas Segitiga menggunakan rumus = ½ x
alas x tinggi segitiga. Dalam program ini menggunakan rumus
=0.5*as*ts; untuk Luas Alas Segitiga dan rumus = ls*tlim)/3 untuk
Volume Limas Segitiga
Perhituntgan :
-
Luas segitiga = ½ x alas x tinggi segitiga
-
= ½ x 3 x 4.5
-
= ½ x 13.5
-
= 6.75
-
Volume Limas Segitiga = 1/3 x Luas alas segitiga x Tinggi
limas
-
= 1/3 x 6.75 x 6
-
= 1/3 x 40.5
-
= 13.5 m3
2. Program Untuk Menghitung Tiket Kereta Api
A. Flowchart

B. Program
#include <stdio.h>
#include <stdlib.h>

int jurusan,hari,htotal,diskon,opsi,a,b,c,d,e,jumlah,ht;
int harga1 = 200000, harga2 = 225000, harga3 = 250000,
harga4 = 300000;
int main(int argc, char *argv[])
{
x :

printf("\t************************************************
*\n");
printf("\t* PROGRAM MENGHITUNG TIKET KERETA API
*\n");

printf("\t************************************************
*\n");
printf(" Daftar Jurusan Kereta Api Harga
Tiket\n");
printf(" - 1. Madiun - Surabaya ->
200000\n");
printf(" - 2. Madiun - Jogjakarta ->
225000\n");
printf(" - 3. Madiun - Semarang ->
250000\n");
printf(" - 4. Madiun - Jakarta ->
300000\n");
printf("\n");
e : printf(" Piliih jurusan kereta no 1-4 : ");
scanf("%d",&jurusan);

printf("**************************************************
*********\n");
switch(jurusan)
{
case(1):
a : printf(" Pilihan Pembelian Tiket Kereta
Api\n");
printf(" 1. Senin - Jum'at\n");
printf(" 2. Sabtu - Minggu\n");
printf(" Pilih Hari Pembelian Tiket 1-2 :
"); scanf("%d",&hari);
printf(" Jumlah Tiket Yang Dibeli : ");
scanf("%d",&jumlah);

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~\n");
switch(hari){
case(1) : ht=harga1*jumlah;
printf("Kereta Jurusan Madiun -
Surabaya \n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga1);
printf(" -Diskon tiket wekend
: -\n");
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",harga1,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
case(2) :diskon=harga1*5/100;
htotal=harga1-diskon ; ht=htotal*jumlah;
printf("Kereta Jurusan Madiun -
Surabaya \n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga1);
printf(" -Diskon tiket wekend (5%
%) : Rp. %d,-\n",diskon);
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",htotal,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto a;
}
break;
case(2) :
b : printf(" Pilihan Pembelian Tiket Kereta
Api\n");
printf(" 1. Senin - Jum'at\n");
printf(" 2. Sabtu - Minggu\n");
printf(" Pilih Hari Pembelian Tiket 1-2 :
"); scanf("%d",&hari);
printf(" Jumlah Tiket Yang Dibeli : ");
scanf("%d",&jumlah);

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~\n");
switch(hari){
case(1) :ht=harga2*jumlah;
printf("Kereta Jurusan Madiun -
Jogja \n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga2);
printf(" -Diskon tiket wekend
: -\n");
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",harga2,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
case(2) :diskon =harga2 * 10/100; htotal
= harga2 - diskon; ht=htotal*jumlah;
printf("Kereta Jurusan Madiun -
Jogja \n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga2);
printf(" -Diskon tiket wekend
(10%%) : Rp. %d,-\n",diskon);
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",htotal,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto b;
}
break;
case(3) :
c : printf(" Pilihan Pembelian Tiket Kereta
Api\n");
printf(" 1. Senin - Jum'at\n");
printf(" 2. Sabtu - Minggu\n");
printf(" Pilih Hari Pembelian Tiket 1-2 :
"); scanf("%d",&hari);
printf(" Jumlah Tiket Yang Dibeli : ");
scanf("%d",&jumlah);

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~\n");
switch(hari){
case(1) : ht=harga3*jumlah;
printf("Kereta Jurusan Madiun -
Semarang\n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga3);
printf(" -Diskon tiket wekend
: -\n");
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",harga3,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
case(2) :diskon=harga3*15/100;
htotal=harga3-diskon; ht=htotal*jumlah;
printf("Kereta Jurusan Madiun -
Semarang\n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga3);
printf(" -Diskon tiket wekend
(15%%) : Rp. %d,-\n",diskon);
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",htotal,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto c;
}
break;
case(4) :
d : printf(" Pilihan Pembelian Tiket Kereta
Api\n");
printf(" 1. Senin - Jum'at\n");
printf(" 2. Sabtu - Minggu\n");
printf(" Pilih Hari Pembelian Tiket 1-2 :
"); scanf("%d",&hari);
printf(" Jumlah Tiket Yang Dibeli : ");
scanf("%d",&jumlah);

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~\n");
switch(hari){
case(1) :ht=harga4*jumlah;
printf("Kereta Jurusan Madiun -
Jakarta\n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga4);
printf(" -Diskon tiket wekend
: -\n");
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",harga4,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
case(2) :diskon=harga4*20/100;
htotal=harga4-diskon; ht=htotal*jumlah;
printf("Kereta Jurusan Madiun -
Jakarta\n");
printf(" -Harga tiket normal
: Rp. %d,-\n",harga4);
printf(" -Diskon tiket wekend
(20%%) : Rp. %d,-\n",diskon);
printf(" -Jumlah tiket yang
dibeli : %d \n",jumlah);
printf(" -Harga
: Rp. %d,- x %d \n",htotal,jumlah);
printf(" -Harga total
: Rp. %d,- \n",ht);

printf("==================================================
=========\n");
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto d;
}
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto e;
}
y :

printf("**************************************************
*********\n");
printf(" Tekan 1 untuk kembali atau 2 untuk keluar \n");
printf(" Pilihan : "); scanf("%d",&opsi);
switch(opsi)
{
case(1) : goto x;
break;
case(2) :system("pause");
return 0;
break;
default : printf("\t====ANGGKA YANG ANDA
MASUKKAN SALAH====\n"); goto y;
break;
}
}
C. Analisa
Program ini menggunakan percabangan switch – case. Proses
penyelesaiannya sebagai berikut : 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. Kalau ternyata
pernyataan-1 tidak sama dengan nilai ekspresi, pengujian dilanjutkan pada
konstanta-2, int untuk menyimpan data berbentuk bilangan bulat. Dan untuk
mengarahkan eksekusi kepernyataan yang di awal digunakan pernyataan goto
dan exit(0); : dari program diatas jika kita input karakter 1 maka program akan
kembali ke pernyataan dalam pemilihan “Jurusan Kereta yang Dituju” dan jika
input karakter 2 maka perintah yang akan dieksekusi adalah exit(0); yang akan
menghentikan program secara normal

D. Output
1) Percobaan 1

 Analisa
Pembuktian dari program diatas yang membeli tiket pada hari Sabtu – Minggu
dengan memilih perjalanan Madiun – Surabaya(1) menggunkan kereta api.
- Kereta Api Jurusan Madiun – Surabaya
- Hari pembelian Sabtu – Minggu dengan potongan harga 5% =
10.000
- Harga tiket kereta = Rp 200.000
- Jumlah tiket yang dibeli = 3
Perhitungan Manual
- Harga tiket + diskon = 200.000 – 10.000
- = 190.000
- Tiket yang dibeli x harga tiket = 3 x 190.000
- = 570.000
Jadi total pembayaran tiket Rp.570.000,-
2) Percobaan 2

 Analisa
Pembuktian dari program diatas yang membeli tiket pada hari Sabtu – Minggu
dengan memilih perjalanan Madiun – Jakarta(4) menggunkan kereta api.
- Kereta Api Jurusan Madiun – Jakarta
- Hari pembelian Sabtu – Minggu dengan potongan harga 20%
= 60.000
- Harga tiket kereta = Rp 300.000
- Jumlah tiket yang dibeli = 4
Perhitungan Manual
- Harga tiket + diskon = 300.000 – 60.000
- = 240.000
- Tiket yang dibeli x harga tiket = 4 x 240.000
- = 960.000
Jadi total pembayaran tiket Rp.960.000,-

Anda mungkin juga menyukai