Struktur pengambilan keputusan mengharuskan pemrogram menentukan satu kondisi atau lebih yang harus dievaluasi atau diuji oleh program. Hal ini harus disertai dengan pernyataan atau pernyataan yang akan dieksekusi jika kondisinya bernilai benar (true), atau pernyataan lain yang akan dieksekusi jika kondisinya dinyatakan bernilai salah (false).
Berikut ini adalah bentuk umum dari struktur pengambilan keputusan tipikal yang ditemukan di sebagian besar bahasa pemrograman.
Control Statement atau pernyataan kontrol adalah elemen dalam Kode Sumber yang mengontrol aliran pelaksanaan program. Berikut ini adalah jenis-jenis control statement yang digunakan dalam pemrograman Arduino.
Pernyataan if
Dalam Pernyataan if, dibutuhkan ekspresi dalam tanda kurung dan pernyataan atau blok pernyataan. Jika ekspresi itu benar maka pernyataan atau blok pernyataan dieksekusi kalau tidak, pernyataan ini dilewati.
Bentuk Sintak pernyataan IF ada dua jenis, yaitu :
Bentuk 1
if (ekspresi)
pernyataan;
Tanda kurung { } tidak digunakan jika hanya satu pernyataan.
Bentuk 2
if (ekspresi) {
Blok pernyataan;
}
Contoh
/* Definisi Variabel Global */
int a = 5 ;
int b = 9 ;
Void setup () {
}
Void loop () {
/* periksa kondisi boolean */
if (a > b) /* jika kondisi benar maka eksekusi pernyataan berikut ini */
a++;
/* periksa kondisi boolean */
If ( ( a < b ) && ( b != 0 )) /* jika kondisi benar maka eksekusi pernyataan berikut ini */ {
a += b;
b--;
}
}
Pernyataan if…else
Pernyataan if dapat diikuti oleh pernyataan opsional lain (else), yang dieksekusi ketika ekspresi bernilai salah.
Sintak pernyataan if … else adalah sebagi berikut
if (ekspresi) {
blok pernyataan;
}
else {
blok pernyataan;
}
Contoh
/* Definisi variabel global */
int A = 5 ;
int B = 9 ;
Void setup () {
}
Void loop () {
/* cek kondisi boolean */
if (A > B) /* jika kondisi benar maka jalankan pernyataan berikut ini*/ {
A++;
} else {
B -= A;
}
}
Pernyataan if…else if…else
Pernyataan IF dapat diikuti oleh pernyataan else if…else lain yang sangat berguna untuk menguji kondisi yang bervariasi menggunakan pernyataan if…else if tunggal.
Saat menggunakan pernyataan if … else if … else, perlu diingat hal-hal sebagai berikut.
- Suatu if boleh tidak memiliki atau memiliki satu else dan harus datang setelah beberapa else if nya.
- Suatu if dapat memiliki nol sampai banyak pernyataan else if dan harus datang sebelum else.
- Setelah else if sukses, maka tidak ada lagi sisa pernyataan else if atau else yang akan diuji.
Sintaks Pernyataan if … else if … else
if (pernyataan_1) {
blok pernyataan;
}
else if(ekspresi_2) {
blok pernyataan;
}
.
.
.
else {
blok pernyataan;
}
Contoh
/* Definisi variabel global*/
int A = 5 ;
int B = 9 ;
int c = 15;
Void setup () {
}
Void loop () {
/* cek kondisi boolean */
if (a > b) /* jika kondisi benar maka jalankan pernyataan berikut ini */ {
a++;
}
/* cek kondisi boolean */
else if ((a == b )||( b < c) ) /* jika kondisi benar maka jalankan pernyataan berikut ini*/ {
c = b * a;
}else
c++;
}
Peryataan switch case
Mirip dengan pernyataan if, switch … case juga mengontrol aliran program dengan memungkinkan pemrogram menentukan kode berbeda yang harus dijalankan dalam berbagai kondisi. Secara khusus, pernyataan switch membandingkan nilai variabel dengan nilai yang ditentukan dalam pernyataan case. Ketika pernyataan case ditemukan yang nilainya cocok dengan variabel, kode dalam pernyataan case dijalankan.
Kata kunci break membuat pernyataan switch keluar, dan biasanya digunakan pada akhir setiap case. Tanpa pernyataan break, pernyataan switch akan melanjutkan mengeksekusi ekspresi berikutnya sampai break, atau akhir dari pernyataan switch tercapai.
Sintaks Pernyataan Switch Case
switch (variable) {
case label:
// pernyataan
break;
}
case label: {
// pernyataan
break;
}
default: {
// pernyataan
break;
}
Contoh
Berikut adalah contoh sederhana tentang sakelar. Misalkan kita memiliki fase variabel dengan 3 keadaan yang berbeda (0, 1, atau 2) dan fungsi yang sesuai (event) untuk masing-masing keadaan ini.
switch (phase) {
case 0: Lo(); break;
case 1: Mid(); break;
case 2: Hi(); break;
default: Message("Invalid state!");
}
Operator Kondisional ? :
Operator kondisional atau operator bersyarat ? : merupakan satu-satunya operator ternary dalam pemrograman C.
Sintaks Operator Kondisional ? :
ekspresi1 ? ekspresi2 : ekspresi3
Ekspresi1 dievaluasi terlebih dahulu. Jika nilainya benar, maka ekspresi2 dievaluasi dan ekspresi3 diabaikan. Jika ekspresi1 dievaluasi sebagai salah, maka ekspresi3 dievaluasi dan ekspresi2 diabaikan. Hasilnya akan menjadi nilai ekspresi2 atau ekspresi3 tergantung pada dari mereka mengevaluasi sebagai Benar.
Operator kondisional berasosiasi dari kanan ke kiri
Contoh
/* Mencari niai max (a, b): */
max = ( a > b ) ? a : b;
/* Konversi hurup kecil ke besar: */
/* (sebenarnya tidak ada tanda kurung) */
c = ( c >= 'a' && c <= 'z' ) ? ( c - 32 ) : c;
Aturan Operator Kondisional
- ekspresi1 harus berupa ekspresi skalar; ekspresi2 dan ekspresi3 harus mematuhi salah satu aturan berikutnya.
- Kedua ekspresi harus bertipe aritmatika.
- ekspresi2 dan ekspresi3 mengalami konversi aritmatika biasa, yang menentukan jenis yang dihasilkan.
- Kedua ekspresi harus bertipe void. Jenis yang dihasilkan bertipe void.