Percabangan algoritma dan struktur data
.DI KTAT MAT A KULIAH PEMROGR AMAN I
BAB V
PE RCABA NGAN
I F
Pendahuluan Percabangan
Tidak semua permasalahan yang dihadapi di dalam pemrograman bisa
diselesaikan dengan runtunan. Ada suatu kasus dimana seorang programmer
dihadapkan pada pemilihan atau percabangan. Percabangan yang dimaksud di sini
tidak lain adalah suatu pemilihan statemen yang akan dieksekusi. Pemilihan tersebut
didasarkan pada hasil kondisi yang dihasilkan. Di dalam bahasa C dan C++ ada dua
pernyataan yang bisa digunakan apabila kita dihadapkan pada kasus yang memiliki
percabangan. Dua pernyataan tersebut adalah if dan switch.
Statemen atau pernyataan yang terdapat dalam sebuag blok percabangan
akan dieksekusi apabila kondisi yang didefinisikan bernilai benar. Dan apabila kondisi
yang didefinisikan salah maka pernyataan di blok lain (yang kondisinya terpenuhi)
yang akan dijalankan.
Operator-Operator Logika
Untuk bisa membuat sebuah kondisi diperlukan adanya operator-operator
logika. Adapun operator-operator logika yang digunakan antara lain:
Op erator Contoh
== A ==B
!= A! =B
> A >B
< A <B
Tabel 5.1 Operator-O perator Lo gika
A rti
Apaka h isi variab el A sama dengan isi variabel B
Apaka h isi variab el A tidak s ama deng an isi varia bel B
Apaka h isi variab el A lebih b esar dari i si variabel B
Apaka h isi variab el A lebih k ecil dari is i variabel B
>= A>=B Apakah isi variabel A lebih besar atau sama dengan isi
variabel B
<= A<=B Apakah isi variabel A lebih kecil atau sama dengan isi
variab el B
DIKTAT PEMROGRAMAN I HAL 1
BAB V
Percabangan (if dan switch)
&& (A<=100)&& Apakah isi variabel A lebih kecil atau sama dengan 100
(A>=80) dan apakah isi variabel A lebih besar atau sama dengan
80
|| (A<=100)|| Apakah isi variabel A lebih kecil atau sama dengan 100
(A>=80) atau apakah isi variabel A lebih besar atau sama
dengan 80
! !(A==B) Apakah A tidak sama dengan B
Struktur IF Satu Kondisi
Struktur ini merupakan struktur yang paling sederhana karena hanya melibatkan satu buah kondisi yang akan diperiksa. Bentuk umum struktur ini adalah sebagai berikut:
if(kondisi) {
Pernyataan1; Pernyataan2; }
atau
if(kondisi)
Pernyataan;
Sebagai contoh adalah percabangan untuk menentukan seseorang boleh memiliki SIM atau tidak. Kondisi yang digunakan adalah seseorang boleh memiliki SIM kalau sudah berusia 17 tahun. Programnya sebagai berikut:
1 /*
2 Program 5.1
3 Nama File : Lat-5.1.c
4
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9
10 int main(int argc, char *argv[])
11 {
ALGORITMA DAN STRUKTUR DATA 1 HAL 2
12 int umur;
13 printf("Masukkan umur anda : ");scanf("%i",&umur);
14 if(umur<17)
15 printf("Anda tidak diperbolehkan memiliki
SIM.\n\n");
16
17 return 0;
18 }
1 /*
2 Program 5.1
3 Nama File : Lat-5.1.cpp
4
5 */
6
7 #include <cstdlib>
8 #include <iostream>
9
10 using namespace std;
11
12 int main(int argc, char *argv[])
13 {
14 int umur;
15 cout<<"Masukkan umur anda : ";
16 cin>>umur;
17 if(umur<17)
18 cout<<"Anda tidak diperbolehkan memiliki SIM."
<<endl<<endl;
19
20 return EXIT_SUCCESS;
21 }
Hasil eksekusi:
Gambar 5.1 Hasil eksekusi program Lat 5.1
ALGORITMA DAN STRUKTUR DATA 1 HAL 3
Terkadang ada struktur if ini yang memiliki lebih dari satu pernyataan. Sebagai contoh perhatikan contoh program di bawah ini”
1 /*
2 Program 5.2
3 Nama File : Lat-5.2.c
4
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9
10 int main(int argc, char *argv[])
11 {
12 float IP;
13 printf("Berapa IP anda : ");scanf("%f",&IP);
14 if(IP>=3.5)
15 {
16 printf("\nIP anda %.2f\n",IP);
17 printf("Anda cum laude!\n\n");
18 }
19
20 return 0;
21 }
1 /*
2 Program 5.2
3 Nama File : Lat-5.2.cpp
4
5 */
6
7 #include <cstdlib>
8 #include <iostream>
9 #include <iomanip>
10
11 using namespace std;
12
13 int main(int argc, char *argv[])
14 {
15 float IP;
16 cout<<"Berapa IP anda : ";
17 cin>>IP;
18 if(IP>=3.5)
19 {
20 cout<<setiosflags(ios::fixed);//supaya tidak
dibulatkan
ALGORITMA DAN STRUKTUR DATA 1 HAL 4
21 cout<<"\nIP anda "<<setprecision(2)<<IP<<endl;
22 cout<<"Anda cum laude!"<<endl<<endl;
23 }
24
25 return EXIT_SUCCESS;
26 }
Hasil eksekusi:
Gambar 5.2 Hasil eksekusi program Lat 5.2
Catatan Hati-hati untuk penggunaan tanda sama dengan dalam kondisi.
Tanda sama dengan yang digunakan dalam kondisi berjumlah dua (==). Apabila tanda sama dengan hanya berjumlah satu maka akan dianggap sebagai operator penugasan (assignment).
Struktur IF Dua Kondisi
Struktur ini memiliki kekompleksan yang lebih tinggi dibandingkan struktur if dengan satu kondisi. Struktur ini memiliki alternatif pilihan apabila kondisi yang pertama tidak terpenuhi. Adapun bentuk umum dari struktur ini adalah sebagai berikut:
ALGORITMA DAN STRUKTUR DATA 1 HAL 5
if(kondisi) {
Pernyataan_jika_kondisi_terpenuhi;
}
else {
Pernyataan_jika_kondisi_tidak_terpenuhi;
}
Sebagai contoh buatlah program untuk menentukan apakah bilangan yang
diinputkan merupakan positif atau negatif.
1 /*
2 Program 5.3
3 Nama File : Lat-5.3.c
4
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9
10 int main(int argc, char *argv[])
11 {
12 int bil;
13 printf("Masukkan bilangan bulat: ");scanf("%i",&bil);
14 if(bil>=0)
15 {
16 printf("\nBilangan yang dimasukkan adalah
%i\n",bil);
17 printf("Bilangan ini adalah bilangan
positif\n\n");
18 }
19 else
20 {
21 printf("\nBilangan yang dimasukkan adalah
%i\n",bil);
22 printf("Bilangan ini adalah bilangan
negatif\n\n");
23 }
24
25 return 0;
26 }
ALGORITMA DAN STRUKTUR DATA 1 HAL 6
1 /*
2 Program 5.3
3 Nama File : Lat-5.3.cpp
4
5 */
6
7 #include <cstdlib>
8 #include <iostream>
9
10 using namespace std;
11
12 int main(int argc, char *argv[])
13 {
14 int bil;
15 cout<<"Masukkan bilangan bulat: ";
16 cin>>bil;
17 if(bil>=0)
18 {
19 cout<<"\nBilangan yang dimasukkan adalah "
<<bil<<endl;
20 cout<<"Bilangan ini adalah bilangan positif"
<<endl<<endl;
21 }
22 else
23 {
24 cout<<"\nBilangan yang dimasukkan adalah "
<<bil<<endl;
25 cout<<"Bilangan ini adalah bilangan negatif"
<<endl<<endl;
26 }
27
28 return EXIT_SUCCESS;
29 }
ALGORITMA DAN STRUKTUR DATA 1 HAL 7
Hasil eksekusi:
Gambar 5.3 Hasil eksekusi program Lat 5.3
Struktur IF Tiga atau Lebih Kondisi
Struktur if inilah yang paling kompleks dalam penggunaannya. Hal ini dikarenakan kondisi yang harus diperiksa lebih dari dua kondisi. Terkadang hal ini jugalah yang membuat beberapa programmer mengalami kesulitan. Bentuk umum struktur ini adalah sebagai berikut:
ALGORITMA DAN STRUKTUR DATA 1 HAL 8
if(kondisi1)
{
Pernyataan_jika_kondisi1_terpenuhi;
}
else if(kondisi2) {
Pernyataan_jika_kondisi2_ terpenuhi;
}
else if(kondisi3) {
Pernyataan_jika_kondisi3_ terpenuhi;
}
…
else {
Pernyataan_kalau_semua_kondisi_tidak_terpenuhi;
}
Sebagai contoh buatlah program lampu lalu lintas dengan sintaks berikut ini.
1 /*
2 Program 5.4
3 Nama File : Lat-5.4.c
4
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <conio2.h>
10
11 int main(int argc, char *argv[])
12 {
13 int pilihan;
14 textbackground(WHITE);
15 clrscr();
16 textcolor(BLACK);printf("Pilihan Warna Lampu Lalu
Lintas\n");
17 printf("-------------------------------\n");
18 textcolor(LIGHTRED);printf("1. Merah\n");
19 textcolor(YELLOW);printf("2. Kuning\n");
ALGORITMA DAN STRUKTUR DATA 1 HAL 9
20 textcolor(LIGHTGREEN);printf("3. Hijau\n");
21 textcolor(BLACK);printf("-----------------------------
--\n\n");
22 textcolor(BLACK);
23 printf("Masukkan pilihan anda [1..3]: ");
scanf("%i",&pilihan);
24 printf("\n");
25 if(pilihan==1)
26 {
27 textcolor(LIGHTRED);
28 printf("Lampu merah artinya tidak boleh jalan!");
29 }
30 else
31 if(pilihan==2)
32 {
33 textcolor(YELLOW);
34 printf("Lampu kuning artinya siap-siap!");
35 }
36 else
37 if(pilihan==3)
38 {
39 textcolor(LIGHTGREEN);
40 printf("Lampu hijau artinya boleh jalan!");
41 }
42 else
43 printf("Pilihan yang dimasukkan salah!");
44 printf("\n\n");
45 textcolor(BLACK);
46
47 return 0;
48 }
1 /*
2 Program 5.4
3 Nama File : Lat-5.4.cpp
4
5 */
6
7 #include <cstdlib>
8 #include <iostream>
9 #include <conio2.h>
10
11 using namespace std;
12
13 int main(int argc, char *argv[])
14 {
15 int pilihan;
ALGORITMA DAN STRUKTUR DATA 1 HAL 10
16 textbackground(WHITE);
17 clrscr();
18 textcolor(BLACK);cout<<"Pilihan Warna Lampu Lalu
Lintas"<<endl;
19 cout<<"-------------------------------"<<endl;
20 textcolor(LIGHTRED);cout<<"1. Merah"<<endl;
21 textcolor(YELLOW);cout<<"2. Kuning"<<endl;
22 textcolor(LIGHTGREEN);cout<<"3. Hijau"<<endl;
23 textcolor(BLACK);cout<<"----------------------------
---"<<endl<<endl;
24 textcolor(BLACK);
25 cout<<"Masukkan pilihan anda [1..3]: ";cin>>pilihan;
26 cout<<endl;
27 if(pilihan==1)
28 {
29 textcolor(LIGHTRED);
30 cout<<"Lampu merah artinya tidak boleh jalan!";
31 }
32 else
33 if(pilihan==2)
34 {
35 textcolor(YELLOW);
36 cout<<"Lampu kuning artinya siap-siap!";
37 }
38 else
39 if(pilihan==3)
40 {
41 textcolor(LIGHTGREEN);
42 cout<<"Lampu hijau artinya boleh jalan!";
43 }
44 else
45 cout<<"Pilihan yang dimasukkan salah!";
46 cout<<endl<<endl;
47 textcolor(BLACK);
48
49 return EXIT_SUCCESS;
50 }
ALGORITMA DAN STRUKTUR DATA 1 HAL 11
Hasil eksekusi:
Gambar 5.4 Hasil eksekusi program Lat 5.4
Switch - Case - Default
Selain menggunakan fungsi if, percabangan bisa juga menggunakan sebuah perintah yaitu switch - case - default. Bentuk dasar dari perintah ini adalah sebagai berikut:
switch(ekspresi) {
case kondisi1 : perintah1;break; case kondisi2 : perintah2;break; default : perintah3;
}
Ada 2 hal yang harus diperhatikan apabila ingin menggunakan perintah ini, yaitu:
1. Kondisi harus diisi dengan data yang bertipe data ordinal (integer,char, dan boolean). Dengan kata lain ekspresinya harus memiliki nilai yang bertipe ordinal. Apabila tidak diisi dengan tipe data ordianal maka perintah ini tidak dapat memeriksa kondisinya.
ALGORITMA DAN STRUKTUR DATA 1 HAL 12
2. Perintah break digunakan untuk menghentikan eksekusi switch apabila ada satu kondisi yang terpenuhi. Apabila semua kondisi tidak terpenuhi maka perintah yang akan dijalankan adalah perintah yang berada di bagian default.
Untuk lebih jelasnya lihat penggalan program di bawah ini:
1 switch(juara)
2 {
3 case 1 : printf(“Anda juara 1!\n”);break;
4 case 2 : printf(“Anda juara 2!\n”);break;
5 case 3 : printf(“Anda juara 3!\n”);break;
6 default : printf(“Anda bukan juara! Coba lagi!\n”);
7 }
Keterangan:
Juara memiliki tipe data integer. Apabila juara diisi dengan nilai 1 maka akan
menghasilkan teks Anda juara 1! Begitu pun seterusnya. Apabila nilai inputan juara bukan antara 1 sampai 3 maka akan keluar teks Anda bukan juara! Coba lagi!
Struktur IF Dengan Banyak Kondisi
Maksud dari banyak kondisi di sini adalah adanya lebih satu kondisi yang dimiliki dalam satu kali pemeriksaan kondisi. Terkadang untuk menjalankan statement tertentu diperlukan banyak kondisi yang harus diperiksa. Ada 2 buah operator yang digunakan untuk if dengan banyak kondisi yaitu && (and) dan || (or).
Untuk lebih jelasnya perhatikan penggalan perintah di bawah ini:
1 if((index==’A’)||(index==’B’)||(index==’C’))
2 printf(“Selamat, Anda lulus!”);
3 else
4 if((index==’D’)||(index==”E”))
5 printf(“Anda tidak lulus. Coba lagi ya!”);
Kalau diperhatikan seksama maka untuk menampilkan string Selamat, Anda lulus!
Kondisi yang harus diperiksa ada tiga kondisi. Sedangkan untuk string Anda tidak
lulus. Coba lagi ya! Ada dua kondisi yang harus diperiksa.
Catatan Untuk operator AND, semua kondisi harus terpenuhi untuk
menghasilkan kondisi bernilai TRUE sedangkan untuk operator OR
cukup satu kondisi saja terpenuhi maka kondisi akan bernilai TRUE.
ALGORITMA DAN STRUKTUR DATA 1 HAL 13
Untuk lebih jelasnya buatlah program dengan kasus menu makanan seperti yang tertera pada tabel di bawah ini.
Tabel 5.2 Menu makanan
Porsi
Kecil (1) Sedang (2) Besar (3)
Cap Cay Goreng (1) 15000 20000 25000
Kakap Asam Manis (2) 30000 40000 50000
Puyung Hay (3) 10000 15000 20000
Ada beberapa aturan yang berlaku di restoran ini, antara lain:
1. Apabila makanan yang dipesan dimakan di tempat maka pembeli dikenakan pajak sebesar 10% dari total harga. Sedangkan apabila makanan dibungkus maka tidak dikenakan pajak.
2. Apabila memesan kakap asam manis dalam ukuran besar maka mendapat diskon 5% dari harga kakap asam manis porsi besar (perpotongnya).
3. Input:
a. Menu makanan
b. Porsi
c. Banyak pesanan
d. Status pesanan.
4. Output:
a. Diskon
b. Total harga
c. Pajak
d. Bayar.
Program untuk kasus di atas:
1 /*
2 Program 5.5
3 Nama File : Lat-5.5.c
4
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9
10 int main(int argc, char *argv[])
ALGORITMA DAN STRUKTUR DATA 1 HAL 14
11 {
12 int menu,porsi,banyak_pesanan,
status_pesanan,harga_makanan;
13 float pajak,diskon;
14 float total_harga_awal,total_harga_akhir;
15 //inisialisasi awal
16 diskon=0;
17 total_harga_awal=0;
18 total_harga_akhir=0;
19 //input
20 printf("Menu Makanan\n");
21 printf("---------------------------------\n");
22 printf("1. Cap Cay Goreng\n");
23 printf("2. Kakap Asam Manis\n");
24 printf("3. Puyung Hay\n");
25 printf("---------------------------------\n");
26 printf("Masukkan pilihan makanan : ");
scanf("%i",&menu);
27 printf("\n");
28 printf("Pilihan Porsi\n");
29 printf("---------------------------------\n");
30 printf("1. Kecil\n");
31 printf("2. Sedang\n");
32 printf("3. Besar\n");
33 printf("---------------------------------\n");
34 printf("Masukkan pilihan porsi : ");
scanf("%i",&porsi);
35 printf("\n");
36 printf("Masukkan banyak pesanan : ");
scanf("%i",&banyak_pesanan);
37 printf("\nStatus Pesanan\n");
38 printf("---------------------------------\n");
39 printf("1. Makan Ditempat\n");
40 printf("2. Dibungkus\n");
41 printf("---------------------------------\n");
42 printf("Masukkan status pesanan : ");
scanf("%i",&status_pesanan);
43 system("cls");
44 //proses
45 //if model ke-1
46 if((menu==1)&&(porsi==1))
47 harga_makanan=15000;
48 else
49 if((menu==1)&&(porsi==2))
50 harga_makanan=20000;
51 else
52 if((menu==1)&&(porsi==3))
ALGORITMA DAN STRUKTUR DATA 1 HAL 15
53 harga_makanan=25000;
54 //if model ke-2
55 if(menu==2)
56 {
57 if(porsi==1)
58 harga_makanan=30000;
59 else if(porsi==2)
60 harga_makanan=40000;
61 else
62 {
63 harga_makanan=50000;
64 diskon=0.05*harga_makanan*banyak_pesanan;
65 }
66 }
67 //if dengan gabungan switch (case)
68 if(menu==3)
69 {
70 switch (porsi)
71 {
72 case 1:harga_makanan=10000;break;
73 case 2:harga_makanan=15000;break;
74 default:harga_makanan=20000;
75 }
76 }
77 total_harga_awal=(harga_makanan*banyak_pesanan)-
diskon;
78 if (status_pesanan==1)
79 pajak=0.1*total_harga_awal;
80 else
81 pajak=0;
82 total_harga_akhir=total_harga_awal+pajak;
83 //output
84 printf("Hasil Perhitungan\n");
85 printf("----------------------------------------------
\n");
86 printf("Diskon : Rp. %10.2f\n",diskon);
87 printf("Total harga : Rp. %10.2f\n",
total_harga_awal);
88 printf("Pajak : Rp. %10.2f\n",pajak);
89 printf("Bayar : Rp. %10.2f\n",
total_harga_akhir);
90 printf("----------------------------------------------
\n");
91
92 return 0;
93 }
ALGORITMA DAN STRUKTUR DATA 1 HAL 16
1 /*
2 Program 5.5
3 Nama File : Lat-5.5.cpp
4
5 */
6
7 #include <cstdlib>
8 #include <iostream>
9 #include <iomanip>
10
11 using namespace std;
12
13 int main(int argc, char *argv[])
14 {
15 int menu,porsi,banyak_pesanan,
status_pesanan,harga_makanan;
16 float pajak,diskon;
17 float total_harga_awal,total_harga_akhir;
18 //inisialisasi awal
19 diskon=0;
20 total_harga_awal=0;
21 total_harga_akhir=0;
22 //input
23 cout<<"Menu Makanan"<<endl;
24 cout<<"---------------------------------"<<endl;
25 cout<<"1. Cap Cay Goreng"<<endl;
26 cout<<"2. Kakap Asam Manis"<<endl;
27 cout<<"3. Puyung Hay"<<endl;
28 cout<<"---------------------------------"<<endl;
29 cout<<"Masukkan pilihan makanan : ";cin>>menu;
30 cout<<endl;
31 cout<<"Pilihan Porsi"<<endl;
32 cout<<"---------------------------------"<<endl;
33 cout<<"1. Kecil"<<endl;
34 cout<<"2. Sedang"<<endl;
35 cout<<"3. Besar"<<endl;
36 cout<<"---------------------------------"<<endl;
37 cout<<"Masukkan pilihan porsi : ";cin>>porsi;
38 cout<<endl;
39 cout<<"Masukkan banyak pesanan : ";
cin>>banyak_pesanan;
40 cout<<endl<<"Status Pesanan"<<endl;
41 cout<<"---------------------------------"<<endl;
42 cout<<"1. Makan Ditempat"<<endl;
43 cout<<"2. Dibungkus"<<endl;
44 cout<<"---------------------------------"<<endl;
45 cout<<"Masukkan status pesanan : ";
ALGORITMA DAN STRUKTUR DATA 1 HAL 17
.
cin>>status_pesanan;
46 system("cls");
47 //proses
48 //if model ke-1
49 if((menu==1)&&(porsi==1))
50 harga_makanan=15000;
51 else
52 if((menu==1)&&(porsi==2))
53 harga_makanan=20000;
54 else
55 if((menu==1)&&(porsi==3))
56 harga_makanan=25000;
57 //if model ke-2
58 if(menu==2)
59 {
60 if(porsi==1)
61 harga_makanan=30000;
62 else if(porsi==2)
63 harga_makanan=40000;
64 else
65 {
66 harga_makanan=50000;
67 diskon=0.05*harga_makanan*banyak_pesanan;
68 }
69 }
70 //if dengan gabungan switch (case)
71 if(menu==3)
72 {
73 switch (porsi)
74 {
75 case 1:harga_makanan=10000;break;
76 case 2:harga_makanan=15000;break;
77 default:harga_makanan=20000;
78 }
79 }
80 total_harga_awal=(harga_makanan*banyak_pesanan)-
diskon;
81 if (status_pesanan==1)
82 pajak=0.1*total_harga_awal;
83 else
84 pajak=0;
85 total_harga_akhir=total_harga_awal+pajak;
86 //output
87 cout<<setiosflags(ios::fixed);
88 cout<<"Hasil Perhitungan"<<endl;
89 cout<<"---------------------------------------------
-"<<endl;
ALGORITMA DAN STRUKTUR DATA 1 HAL 18
90 cout<<"Diskon : Rp. "
<<setprecision(2)<<setw(10)<<diskon<<endl;
91 cout<<"Total harga : Rp. "<<setprecision(2)
<<setw(10)<<total_harga_awal<<endl;
92 cout<<"Pajak : Rp. "
<<setprecision(2)<<setw(10)<<pajak<<endl;
93 cout<<"Bayar : Rp. "<<setprecision(2)
<<setw(10)<<total_harga_akhir<<endl;
94 cout<<"---------------------------------------------
-"<<endl;
95
96 return EXIT_SUCCESS;
97 }
Hasil eksekusi:
Gambar 5.5 Hasil eksekusi program Lat 5.5
ALGORITMA DAN STRUKTUR DATA 1 HAL 19
0 komentar :
Posting Komentar