Struktur Kontrol Keputusan dalam Bahasa C - AP


Pernahkah kalian ingin pergi ke sebuah tempat tertentu dengan menggunakan moda transportasi? Keputusan menggunakan sebuah moda transportasi untuk bepergian biasanya tergantung pada sebuah keadaan tertentu. Misalnya, apabila kondisi hujan, maka kalian akan lebih memilih menggunakan mobil daripada menggunakan sepeda motor, namun apabila cuaca sedang cerah dan jarak yang ditempuh adalah dekat, maka kalian akan memilih menggunakan sepeda motor.

Komputer merupakan alat yang membantu banyak aktivitas manusia. Pada dasarnya, komputer menjalankan perintah dari manusia. Perintah-perintah tersebut dituangkan secara tertulis dalam sebuah aturan tertentu yang disebut sebagai kode program yang bertujuan untuk mengatur bagaimana komputer harus bertindak untuk menyelesaikan sebuah permasalahan tertentu. Hal ini termasuk juga dalam proses pengambilan keputusan, seperti halnya dalam contoh pemilihan moda transportasi di atas.

Pada bagian ini kita akan mempelajari bagaimana pengambilan keputusan dilakukan dalam sebuah program. Istilah yang sering digunakan untuk ini adalah kondisional. Apa itu kondisional? Secara sederhana, kondisional adalah sebuah bentuk pernyataan "jika ..., maka ...". Pernyataan ini dibuat untuk mengekspresikan sebuah aksi berdasarkan sebuah kondisi tertentu. Sebagai contoh, ketika kita diminta untuk mengklasifikasikan sebuah bilangan merupakan bilangan ganjil atau genap, maka dapat kita membuat sebuah aturan sebagai berikut:

  1. Jika bilangan tersebut habis dibagi 2, maka bilangan tersebut termasuk bilangan genap.
  2. Jika bilangan tersebut tidak habis dibagi 2, maka bilangan tersebut termasuk bilangan ganjil.

Proses tersebut merupakan salah satu ilustrasi dari sebuah pernyataan kondisional. Pada bahasa pemrograman C, ada beberapa jenis pernyataan kondisional, misalnya pernyataan if-else, pernyataan switch-case, dan pernyataan yang bersarang.

$ads={1}

Struktur Kontrol Keputusan If - Else

Ada beberapa variasi penggunaan struktur kontrol keputusan If - Else. Bentuk umum dari pernyataan if adalah sebagai berikut.

if (kondisi) {
  <pernyataan>;
  <pernyataan>;
 .... }

Bagian kondisi dapat diisi dengan ekspresi yang menghasilkan nilai benar atau salah. Apabila kondisi menghasilkan nilai benar, semua pernyataan yang berada di dalam struktur kontrol keputusan tersebut akan dieksekusi oleh program. Sekarang, perhatikan program berikut, dan lakukanlah penelusuran untuk memeriksa keluaran dari program tersebut.

/* Program Membandingkan Bilangan */
#include <stdio.h>
int main(){
  int a = 1, b = 1;
  if (a == b) {
    printf("a sama dengan b \n");
  }
  return 0;
}

Program tersebut menggunakan struktur keputusan pada baris 6-8. Ekspresi yang digunakan pada bagian kondisi ialah a==b, sedangkan pernyataan yang dieksekusi jika kondisi benar terdapat pada baris 7.

/* Program Membandingkan Bilangan */
#include <stdio.h>
int main(){
  int a = 1, b = 1;
  if (a == b)
    printf("a sama dengan b \n");
  return 0;
}

Struktur kontrol keputusan dapat menambahkan blok else yang akan dieksekusi apabila kondisi bernilai salah.

if (kondisi)
  <pernyataan>;
else
  <pernyataan>;

Misalnya, untuk mengecek apakah suatu bilangan merupakan bilangan ganjil atau genap, kalian dapat memanfaatkan struktur if-else sebagai berikut.

/* Program Cek Ganjil-Genap */
#include <stdio.h>
int main(){
  int bilangan;
  scanf("%d", &bilangan);
  if (bilangan % 2 == 0)
    printf("Bilangan Genap\n");
  else
    printf("Bilangan Ganjil\n");
  return 0;
}

Apabila kondisi makin kompleks, struktur if-else ini dapat dikembangkan kembali menjadi:

if (kondisi ke-1)
  <statement>
else if (kondisi ke-2)
  <statement>
  .....
else if (kondisi ke-n )
  <statement>
else
  <statement>

Struktur Kontrol Keputusan Switch-Case

Struktur kontrol keputusan yang memiliki cabang banyak dapat dibuat lebih sederhana menggunakan struktur switch-case. Bentuk umum dari struktur ini ialah sebagai berikut.

switch(switch_expr)
{
  case (constant expr1) :<statement>;
    <statement>;
    break;
  case (constant expr2) :<statement>;
    <statement>;
    break;
    .....
  default :
    <statement>;
    <statement>;
    break;
}

Sebagai contoh, perhatikan kode program berikut:

/* program switch-case */
#include <stdio.h>
int main() {
  int bilangan, sisaPembagian;
  scanf("%d", &bilangan);
  sisaPembagian = bilangan % 4;
  switch (sisaPembagian) {
    case 0: printf("Habis Dibagi\n"); break;
    case 1: printf("Sisa Satu\n"); break;
    case 2: printf("Sisa Dua\n"); break;
    case 3: printf("Sisa Tiga\n"); break;
  }
  return 0;
}

Pada program di atas, struktur switch-case memeriksa nilai yang ada pada variabel sisa pembagian. Karena nilai tersebut merupakan sisa pembagian sebuah bilangan dengan empat, hanya ada empat kemungkinan nilai, yaitu 0 sampai 3. Setiap kemungkinan nilai tersebut diperiksa melalui empat buah struktur case yang akan mencetak kalimat ke layar yang sesuai dengan sisa pembagian yang diperoleh.

Struktur Kontrol Keputusan Bersarang

Sebuah struktur kontrol dapat menjadi bagian dari suatu struktur kontrol lain. Hal ini disebut nested atau tersarang. Pada contoh berikut, diberikan sebuah kode program yang memiliki struktur kontrol keputusan bersarang. Telusurilah program tersebut jika program diberi masukan 1000 dan 10.

/* Program dengan IF tersarang */
#include <stdio.h>
int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if (b!=0)
        if (a/b>10)
            printf("1\n");
    else
        printf("-1\n");
    return 0;
}


Ayo, Kita Berlatih 5: Latihan Struktur Kontrol Keputusan

Problem 1: Membagi Bilangan (Tingkat Kesulitan: **)

Buatlah sebuah program dari Diagram Alir 3: Membagi bilangan yang tersedia pada bagian algoritma di awal unit ini.

Problem 2: Bilangan Bulat Positif (Tingkat Kesulitan: ** ) 

Deskripsi Soal:

Buatlah program untuk mengecek apakah sebuah bilangan bulat adalah bilangan bulat positif.

  1. Jika bilangan bulat tersebut merupakan bilangan bulat positif, maka cetaklah "Bilangan Bulat Positif".
  2. Jika bilangan bulat tersebut bukan merupakan bilangan bulat positif, maka jangan cetak apa pun.

Format Masukan:

Sebuah bilangan bulat n. Nilai n berada pada rentang -100 < n < 100. 

Format Keluaran:

Satu baris kalimat sesuai pada deskripsi soal

Contoh Kasus Uji

Masukan Keluaran
3 Bilangan Bulat Positif
-10

Problem 3: Jenis Bilangan Bulat (Tingkat Kesulitan: ***)

Deskripsi Soal:

Buatlah program untuk apakah sebuah bilangan bulat adalah bilangan termasuk bilangan bulat positif, negatif atau nol. Jika bilangan bulat tersebut merupakan bilangan bulat positif, cetak "Bilangan Bulat Positif". Jika bilangan bulat tersebut merupakan bilangan bulat negatif, cetak "Bilangan Bulat Negatif". Jika bilangan bulat tersebut merupakan bilangan bulat nol, cetak "Bilangan Bulat Nol".

Format Masukan:

Sebuah bilangan bulat n. Nilai n berada pada rentang -100 < n < 100.

Format Keluaran:

Satu baris kalimat sesuai pada deskripsi soal.

Contoh Kasus Uji

Masukan Keluaran
3 Bilangan Bulat Positif
-5 Bilangan Bulat Negatif

Problem 4: Nama Bulan (Tingkat Kesulitan: ***)

Deskripsi Soal:

Buatlah sebuah program yang menerima masukan bilangan bulat yang berada pada rentang 1 - 12, dan akan mencetak nama bulan yang sesuai dengan bilangan bulat tersebut. Apabila bilangan berada di luar rentang tersebut, cetak kalimat “Tidak ada bulan yang sesuai”. 

Format Masukan:

Sebuah bilangan bulat n. Nilai n berada pada rentang -100 < n < 100.

Format Keluaran:

Satu baris kalimat sesuai pada deskripsi soal.

Contoh Kasus Uji

Masukan Keluaran
1 Januari
3 Maret
13 Tidak ada bulan yang sesuai.

Problem 5: Mengecek Sisi Segitiga (Tingkat Kesulitan: **** )

Tahukah kalian bahwa sebuah segitiga hanya bisa dibangun apabila sisi terpanjangnya lebih kecil daripada total panjang kedua sisi lainnya? Jika syarat ini tidak dipenuhi, tidak ada segitiga yang terbentuk.

Agria sedang membuat program untuk menghitung luas segitiga yang menerima masukan berupa tiga buah bilangan bulat yang merupakan panjang sisi segitiga tersebut. Akan tetapi, Agria menyadari bahwa ia harus terlebih dahulu memastikan ketiga panjang sisi yang dimasukkan benar-benar dapat membentuk sebuah segitiga. Oleh karena itu, ia merancang sebuah algoritma dalam bentuk diagram alir berikut untuk mengecek apakah ketiga bilangan tersebut dapat membentuk segitiga. 


 

Tugas kalian adalah membantu Agria dengan membuat program berdasarkan diagram alir tersebut.

Problem 6: Belajar Membuat Kasus Uji (Tingkat Kesulitan: ***)

Perhatikan kembali diagram alir pada Problem 5. Diagram alir tersebut terlihat memiliki beberapa kemungkinan aliran, bergantung pada nilai masukan yang diberikan. Saat kalian mengecek program yang kalian buat dengan suatu kasus uji, kasus uji yang diberikan haruslah meliputi semua kemungkinan aliran tersebut. Sekarang, buatlah kasus uji sedemikian sehingga semua kemungkinan aliran pada diagram alir di atas dapat dicek.

Ayo Kita Renungkan

Jawablah pertanyaan berikut dalam Lembar Releksi pada Buku Kerja. Jangan lupa mencatat kegiatan dalam Jurnal.

  1. Pada bagian ini, kalian mendapatkan banyak konsep baru tentang program. Seperti apa perasaan kalian saat ini?
  2. Apakah kalian bereksperimen dengan contohcontoh yang diberikan di buku? Jika ya, pengetahuan paling menarik apa yang kalian temukan dari hasil eksperimen tersebut?
  3. Dari latihan yang telah kalian kerjakan, terutama dari problem 1 dan 5, apa salah satu contoh penggunaan dari struktur kontrol keputusan?
  4. Apakah kalian sudah memahami proses membuat kasus uji untuk menguji sebuah program, yang harus meliputi semua kemungkinan aliran pada diagram alir? Mengapa kalian harus memastikan semua kemungkinan aliran dicek?
  5. Kesalahan apa yang sering kalian lakukan saat menulis kode program dengan menggunakan struktur kontrol keputusan?

Apa Komentarmu?

Komentar yang dirasa merugikan situs ini akan dihapus. Terima kasih telah berkunjung

Lebih baru Lebih lama