Konsep Dasar pada Struktur Seleksi
Struktur seleksi atau kadang dinamakan struktur keputusan, struktur berkondisi, atau struktur pengambilan keputusan adalah struktur logika dalam program yang menentukan suatu perintah dieksekusi atau tidak bergantung pada suatu kondisi atau memilih satu perintah dari sejumlah perintah berdasarkan suatu kondisi.
Secara prinsip, struktur ini dapat dibagi menjadi tiga jenis, yaitu struktur seleksi satu alternatif, struktur seleksi dua alternatif, dan struktur seleksi banyak alternatif.
Struktur seleksi satu alternatif terdiri atas satu bagian yang akan dieksekusi hanya jika kondisi penentu keputusan terpenuhi. Dua kemungkinan pada struktur seleksi satu alternatif diperlihatkan pada diagram berikut. Diagram sebelah kiri menyatakan pengeksekusi pada suatu bagian perintah hanya dilakukan kalau kondisi penentu keputusan bernilai benar. Adapun diagram sebelah kanan menyatakan pengeksekusi pada suatu bagian perintah hanya dilakukan justru kalau kondisi penentu keputusan bernilai salah.
Struktur seleksi dua alternatif terdiri dari dua bagian, tetapi hanya satu bagian yang akan dieksekusi, bergantung pada kondisi penentu keputusan. Contoh struktur seperti ini ditunjukkan pada Diagram di bawah ini. Pada contoh ini, A dijalankan hanya jika kondisi bernilai benar. Sebaliknya, ketika kondisi bernilai salah, B yang akan dijalankan.
Struktur seleksi banyak alternatif melibatkan lebih dari dua alternatif. Struktur seperti ini terkadang dinyatakan dalam bentuk seperti terlihat pada Diagram berikut. Namun, umumnya bentuk ini dinyatakan dalam bentuk struktur seleksi dua alternatif yang bertingkat, seperti terlihat pada Diagram kedua.
Struktur Seleksi Satu Alternatif dengan Pernyataan if
Struktur seleksi satu alternatif dapat dipecahkan menggunakan pernyataan If. Susunannya seperti berikut:
if (kondisi)
pernyataan;
atau
if (kondisi){
pernyataan1;
pernyataan2;
...
pernyataanN;
}
Dalam hal ini,
- kondisi digunakan untuk menentukan pengambilan keputusan;
- Bagian pernyataan atau pernyataan1 hingga pernyataanN dijalankan hanya jika kondisi bernilai benar.
Diagram alir pernyataan
if dapat dilihat pada diagram berikut.
Dua hal penting yang perlu diperhatikan ketika menggunakan if adalah 1) indentasi dan 2) penempatan titik-koma yang salah. Walaupun bagi komputer indentasi terhadap pernyataan pada if tidak penting, bagi orang merupakan keharusan. Indentasi terhadap pernyataan yang bergantung pada if memudahkan orang untuk memahaminya.
Contoh - Penentuan bilangan genap atau ganjil
Bagaimana cara menentukan suatu bilangan bulat sebagai bilangangenap atau bilangan ganjil?
Solusi:
Suatu bilangan bulat dapat diuji dengan dibagi 2. Apabila sisa pembagiannya berupa 0, bilangan tersebut pasti bilangan genap. Untuk keadaan sebaliknya, bilangan tersebut adalah bilangan ganjil. Melalui fakta ini, maka penentuan bilangan bulat yang dinyatakan dengan
variabel bilangan sebagai bilangan genap atau ganjil bisa ditulis dalam bentuk pseudokode berikut:
kategori "bilangan ganjil"
JIKA sisa pembagian bilangan dengan 2 sama dengan 0
kategori "bilangan genap"
AKHIR-JIKA
Pertama-tama, diasumsikan bahwa bilangan yang diuji tergolong sebagai bilangan ganjil. Hal ini dinyatakan dengan:
kategori "bilangan ganjil"
Kemudian, melalui pernyataan JIKA, nilai kategori diubah menjadi "Bilangan genap" hanya kalau bilangan habis dibagi dengan 2. Dengan demikian, isi kategori bisa berupa "bilangan ganjil" atau "bilangan genap" tergantung pada nilai pada bilangan.
Perwujudan dalam program C++ adalah seperti berikut:
// Penentuan bilangan genap atau ganjil
#include <iostream>
using namespace std;
int main()
{
cout << "Penentuan bilangan genap/ganjil" << endl;
cout << "-------------------------------" << endl;
int bilangan;
string kategori;
cout << "Bilangan = " cin >> bilangan;
// Penentuan bilangan genap atau ganjil
kategori = "bilangan ganjil";
if (bilangan % 2 == 0)
kategori = "bilangan genap";
// Tampilkan hasilnya
cout << "Bilangan " << bilangan << " merupakan " << kategori << endl;
return (0);
}
Dua contoh hasil pengujian program dapat dilihat berikut ini:
Penentuan bilangan genap/ganjil
-------------------------------
Bilangan = 27
Bilangan 27 merupakan bilangan ganjil
Penentuan bilangan genap/ganjil
-------------------------------
Bilangan 24
Bilangan 24 merupakan bilangan genap
Struktur Seleksi Dua Alternatif dengan Pernyataan if
Bentuk if untuk menangani seleksi dua alternatif berupa:
if (kondisi)
pernyataan_1;
else
pernyataan_2;
Pada bentuk ini, pernyataan_1 dijalankan jika kondisi bernilai benar. Adapun pernyataan_2 hanya dieksekusi untuk keadaan sebaliknya, yaitu saat kondisi bernilai salah. Diagram alir pernyataan if-else ditunjukkan pada diagram berikut.
Contoh - Bilangan terbesar di antara dua bilangan
Contoh ini merupakan cara menyelesaikan penentuan bilangan terbesar di antara dua bilangan menggunakan if-else.
// Penentuan bilangan terbesar
// di antara dua bilangan
// menggunakan if-else
#include <iostream>
using namespace std;
int main()
{
cout << "Penentuan bilangan terbesar" << endl;
cout << "di antara dua bilangan" << endl;
cout << "---------------------------" << endl;
int bilanganX, bilanganY, terbesar;
cout << "Bilangan pertama = ";
cin >> bilanganX;
cout << "Bilangan kedua = ";
cin >> bilanganY;
// Penentuan bilangan terbesar
if (bilanganX > bilanganY)
terbesar = bilanganX;
else
terbesar = bilanganY;
// Tampilkan hasilnya
cout << "Bilangan terbesar = " << terbesar << endl;
return(0);
}
Pada program ini,
if (bilanganX > bilangany)
terbesar = bilanganX;
else
terbesar = bilanganY;
akan membuat terbesar diisi dengan bilanganX sekiranya bilanganX bernilai lebih besar daripada bilanganY. Untuk keadaan sebaliknya, bilanganY berarti lebih besar daripada bilanganX, tetapi juga bisa sama. Maka, pada keadaan seperti ini, terbesar diisi dengan bilanganY.
Dua contoh hasil pengujian program dapat dilihat berikut ini:
Penentuan bilangan terbesar
di antara dua bilangan
---------------------------
Bilangan pertama = 76
Bilangan kedua = 43
Bilangan terbesar = 76
Penentuan bilangan terbesar
di antara dua bilangan
---------------------------
Bilangan pertama = 43
Bilangan kedua = 76
Bilangan terbesar = 76
Struktur Seleksi Banyak Alternatif dengan Pernyataan switch
Selain menggunakan if, persoalan seleksi dengan banyak alternatif dapat ditangani menggunakan pernyataan switch. Bentuk penggunaan pernyataan ini seperti berikut:
switch (ekspresi) {
case konstan_1:
pernyataan_1;
...
break;
case konstan_2:
pernyataan 2;
break;
default:
pernyataan_x;
Diagram alir pernyataan switch diperlihatkan pada diagram berikut.
Bagian yang berada di dalam tanda () yang terletak sesudah kata swicth umumnya berupa variabel yang nilainya hendak dievaluasi Akan tetapi, suatu ekspresi juga diperkenankan. Adapun konstan_1. konstan_2 dan seterusnya dapat berupa sebarang konstanta bertipe int atau char.
Evaluasi pencocokan nilai ekspresi terhadap konstan_1, konstan_2, dan seterusnya dilakukan secara berurutan, dimulai yang pertama. Sekiranya terdapat yang cocok, pernyataan yang mengikuti case bersangkutan dijalankan. Kalau berikutnya terdapat pernyataan break, eksekusi pernyataan switch berakhir.
Apabila switch mengandung bagian default, bagian ini hanya dijalankan kalau tidak ada konstan_1 dan seterusnya yang bernilai sama dengan nilai ekspresi.
Contoh berikut menunjukkan penggunaan switch untuk menentukan nama hari berdasarkan kode hari yang di depan diselesaikan dengan if bertingkat:
// Penentuan nama hari
// menggunakan switch
#include <iostream>
using namespace std;
int main()
{
cout << "Penentuan nama hari" <<< endl;
cout << " 0 = Minggu 1 = Senin" << endl;
cout << " 2 = Selasa 3 = Rabu" << endl;
cout << " 4 = Kamis 5 Jumat" << endl;
cout << " 6 = Sabtu" << endl;
cout << "------------------------" << endl
int kodeHari;
cout << "Kode hari = ";
cin >> kodeHari;
// Penentuan nama hari
switch(kodeHari) {
case 0:
cout << "Minggu" << endl;
break;
case 1:
cout << "Senin" << endl;
break;
case 2:
cout << "Selasa" << endl;
break;
case 3:
cout << "Rabu" << endl;
break;
case 4:
cout << "Kamis" << endl;
break;
case 5:
cout << "Jumat" << endl;
break;
case 6:
cout << "Sabtu" << endl;
break;
default:
cout << "Kode salah" << endl;
}
return(0);
}
Dua contoh hasil pengujian program dapat dilihat berikut ini:
Penentuan nama hari
0 = Minggu 1 = Senin
2 = Selasa 3 = Rabu
4 = Kamis 5 = Jumat
6 = Sabtu
------------------------
Kode hari = 4
Kamis
Penentuan nama hari
0 = Minggu 1 = Senin
2 = Selasa 3 = Rabu
4 = Kamis 5 = Jumat
6 = Sabtu
------------------------
Kode hari = 7
Kode salah
Komentar
Posting Komentar