Algoritma Pemrograman C/C++ 3

Struktur Kendali I

Adalah sebuah paradigma untuk mengendalikan alur program ke arah tertentu. Untuk meguasai materi struktur kendali pada pemrograman C/C++, ada beberapa hal yang diperlukan untuk dipahami

Struktur kendali terbagi menjadi 2, yaitu

  • Struktur Percabangan
  • Strutkur Perulangan

Struktur Percabangan (Conditional Statement)

Konstruksi Percabangan & Blok Program

Konstruksi Percabangan adalah sebuah program yang ketika dijalankan akan menimbulkan percabangan kedalam sub cabangnya yang berisi sebuah blok program sesuai dengan kondisi dan logika yang diminta. Umumnya konstruksi percabangan dalam Bahasa pemrograman C/C++ sendiri dapat dibuat dengan memanggil keyword if/else if/else ataupun dengan menggunakan switch case. Berikut tabelnya

Tabel IF/ELSE IF/ELSE

Keterangan Keyword
Terdapat 1 pilihan keputusan if
Terdapat 2 pilihan keputusan if/else
Terdapat lebih dari 2 pilihan keputusan if/else if/else

Tabel keyword SWITCH CASE

Keterangan Keyword
Opsi pemilihan keputusan switch
keputusan pilihan case
pilihan keputusan default default
memberhentikan keputusan dan mengakhiri pemilihan keputusan break

Blok program berisi sekumpulan ekpresi dan statement untuk dikerjakan oleh komputer. Dalam Bahasa pemrograman C/C++, blok program dapat diidentifikasikan dengan tanda kurung kurawal (“{}”) dan diberikan indentasi setelah pendeklarasian konstruksi if/else if/else, for, while ataupun ketika melakukan definisi fungsi.

Blok program yang terdapat pada kondisi if/switch case sendiri akan dijalankan jika kondisi yang diminta bernilai True.

Blok program yang terdapat pada kondisi kondisi else if memiliki arti jika tidak sesuai dengan kondisi sebelumnya maka akan disesuaikan dengan kondisi lainnya yang dapat bernilai true.

Blok program yang terdapat pada kondisi else/default akan dijalankan ketika nilai dari kondisi sebelumnya yaitu if/else if ataupun switch case bernilai False.

Berikut ini adalah contoh sederhana program konstruksi percabangan if/else if/else yang menggunakan operator perbandingan:

Code Editor:

int main() {

	int credits = 45;

	if (credits >= 120) {              // Memasuki Blok Program IF
	    printf("Senior");              // Didalam Blok Program IF
	} else if (credits >= 90) {        // Memasuki Blok Program ELIF
	    printf("Junior");              // Didalam Blok Program ELIF
	} else {                           // Memasuki Blok Program ELSE
	    printf("New College Student"); // Didalam Blok Program ELSE
	}

	return 0;
}

Berikut ini adalah contoh sederhana program konstruksi percabangan switch case:

Code Editor:

int main() {

	int status = 2;
	
	switch(status){			  // Memasuki Blok Program Switch Case
		
		case 0:			  // Memasuki Blok Program Case 0
		    printf("OFF\n");	  // Didalam Blok Program Case 0
		    break;		  // Berhenti dan mengakhiri Switch Case
	
		case 1:			  // Memasuki Blok Program Case 1
		    printf("ON\n");       // Didalam Blok Program Case 1
		    break;		  // Berhenti dan mengakhiri Switch Case
	
		case 2:			  // Memasuki Blok Program Case 2
		    printf("STAND BY\n"); // Didalam Blok Program Case 2
	
		case 3:			  // Memasuki Blok Program Case 3
		    printf("FINISH\n");   // Didalam Blok Program Case 3
		    break;		  // Berhenti dan mengakhiri Switch Case
	
		default:		  // Memasuki Blok Program Default
		    printf("UNKNOWN\n");  // Didalam blok program default
		    break;		  // Berhenti dan mengakhiri Switch Case
	
	}
	
	return 0;
}

Output:
STAND BY
FINISH

Nested Conditional/Percabangan Bersarang

Merupakan konsep atau paradigma dimana dalam suatu percabangan program terdapat percabangan lagi. Biasanya percabangan bersarang akan sering ditemui pada kode program yang cukup kompleks ataupun kode program yang terbilang rumit. berikut ini adalah contoh percabangan bersarang.

Code Editor:

int main(){

	int credits = 125;

	if (credits >= 120){               // Memasuki Blok Program IF
	    if (credit > 120){             // Memasuki Blok Program IF Bersarang didalam Blok program IF
	    	printf("Senior Tua");      // Didalam Blok Program IF Bersarang
	    } else {                       // Memasuki Blok Program ELSE Bersarang didalam Blok program IF
	    	printf("Senior Muda");     // Didalam Blok Program ELSE Bersarang
	    }                              // Mengakhiri Blok Program ELSE Bersarang
	} else if (credits >= 90) {        // Memasuki Blok Program ELSE IF
	    if (credit > 90) {             // Memasuki Blok Program IF Bersarang didalam Blok program ELSE IF
	    	printf("Junior Tua");      // Didalam Blok Program IF Bersarang
	    } else {                       // Memasuki Blok Program ELSE Bersarang didalam Blok program ELSE IF
	    	printf("Junior Muda");     // Didalam Blok Program ELSE Bersarang
            }                              // Mengakhiri Blok Program ELSE Bersarang
	} else {                           // Memasuki Blok Program ELSE
	    printf("New College Student"); // Didalam Blok Program ELSE
	}

	return 0;
}

Output:
Senior Tua

Complex Logical Conditional Statement

Merupakan sebuah paradigma percabangan dengan menambahkan logika tertentu untuk mendapatkan alur yang lebih terfilter dalam sebuah kode program. Umumnya untuk mendapatkan alur yang lebih tertuju biasanya programmer akan lebih mengutamakan complex logical conditional statement ketimbang menggunakan percabangan bersarang agar kode yang dibuat juga tidak terlalu panjang dan mudah untuk melakukan maintenance/perawatan kode nantinya. Untuk membuat Complex Logical Conditional Statement anda perlu menambahkan operator logika didalam if/else if seperti contoh yang akan kita terapkan pada program yang sebelumnya telah dibuat. Berikut ini contohnya:

Code Editor:

int main(){

	int credits = 95;

	if ( ( credits > 122 ) && ( credits <= 144 ) ) {
	    printf("Senior Tua");
	} else if ( ( credits >= 120 ) && ( credits <= 122 ) ) {
	    printf("Senior Muda");
	} else if ( ( credits > 90 ) && ( credits < 120 ) ) {
	    printf("Junior Tua");
	} else if ( ( credits <= 90 ) && ( credits > 24 ) ) {
	    printf("Junior Muda");
	} else {
	    printf("New College Student");
	}

	return 0;
}

Output:
Junior Tua

Latihan

Kerjakan Latihan Berikut ini untuk mengetes pemahamanmu tentang Struktur Kendali

Latihan 1

Buatlah sebuah program untuk menentukan angka ganjil dan genap dari nilai yang diinputkan oleh user.
Clue: Menggunakan Operator Aritmatika

INPUT
Angka bebas

PROSES
Melakukan filtering apakah angka itu ganjil atau genap

OUTPUT
Menampilkan hasil ganjil/genap

Latihan 2

Buatlah Program untuk mengkategorisasikan umur inputan bilangan yang dapat diinput oleh user (inputan umur tidak bisa negatif)

  • Bayi = 0 - 1
  • Batita = 1 - 3
  • Balita = 3 - 5
  • Anak - Anak = 5 - 12
  • Remaja = 13 - 17
  • ABG = 18 - 21
  • Pra Dewasa = 22 - 30
  • Dewasa = 31 - 50
  • Pra Lansia = 51 - 70
  • Lansia = 71 keatas

INPUT
Umur

PROSES
Melakukan Filtering untuk menentukan kategori umur

OUTPUT
Kategori hasil filtering

Latihan 3

Buatlah Program untuk melakukan konversi suhu

  • Celcius ke Fahrenheit
  • Celcius ke Kelvin
  • Fahrenheit ke Celcius
  • Fahrenheit ke Kelvin
  • Kelvin ke Celcius
  • Kelvin ke Fahrenheit

Cari rumus konversinya di internet lalu buatlah user memilih salah satu diantara keenam menu diatas dan tampilkan hasil konversinya

INPUT

  • Suhu (Derajat Celcius/Fahrenheit/Kelvin)
  • Menu yang dipilih

PROSES
Melakukan Konversi suhu dibawah ini:

  • Celcius ke Fahrenheit
  • Celcius ke Kelvin
  • Fahrenheit ke Celcius
  • Fahrenheit ke Kelvin
  • Kelvin ke Celcius
  • Kelvin ke Fahrenheit

OUTPUT
Suhu (Derajat Celcius/Fahrenheit/Kelvin)

Latihan 4

Buatlah Sebuah Program untuk Menentukan Jenis Segitiga. Ketiga Sisi yang didapat diinput oleh user. Lalu setelah user selesai menginput akan tercetak jenis segitiga apa.

  1. Sama Sisi
  2. Sama kaki
  3. Bukan Segitiga
  4. Sembarang
  5. Siku-siku (Clue: menggunakan besar sudut) –> ini dapat nilai bonus

Hati-hati dalam menetukan sebuah kondisi karena jika memasukkan 1 2 3 kedalam setiap sisi segitiga, ketiga inputan tersebut bukanlah merupakan segitiga

INPUT

  • Sisi A
  • Sisi B
  • Sisi C

PROSES
Melakukan filtering jenis segitiga berdasarkan ketiga sisi yang diinputkan

OUTPUT
Menampilkan hasil jenis segitiga (sama sisi/sama kaki/bukan segitiga/sembarang/siku siku)

Latihan 5

Buatlah Sebuah program percabangan untuk menentukan persamaan kuadrat menggunakan diskriminan

  • Jika diskriminan lebih besar dari 0 maka memiliki akar berbeda
  • Jika diskriminan lebih kecil dari 0 maka memiliki akar imajiner
  • Jika diskriminan sama dengan 0 maka merupakan akar kembar

hati-hati jika nilai a = 0 maka itu bukanlah merupakan akar persamaan kuadrat

INPUT

  • Nilai A
  • Nilai B
  • Nilai C

PROSES
Melakukan Filtering nilai A apakah 0, jika bukan 0 maka hitung diskriminan menggunakan rumus abc, hasil diskriminannya dapat digunakan untuk melakukan filtering jenis akar (akar berbeda/akar imajiner/akar kembar)

OUTPUT
Jika akar berbeda: Cetak “Merupakan Akar Berbeda” Cetak persamaan kuadratnya Cetak nilai diskriminannya Cetak nilai Akar x1nya Cetak nilai Akar x2nya

Jika akar imajiner: Cetak “Merupakan Akar imajiner” Cetak persamaan kuadratnya Cetak nilai diskriminannya Cetak nilai Akarnya (gunakan salah satu akar x1 atau x2)

Jika akar kembar: Cetak “Merupakan Akar kembar” Cetak persamaan kuadratnya Cetak nilai diskriminannya Cetak rumus Akar x1nya Cetak rumus Akar x2nya

Jika a = 0: Cetak “bukan merupakan akar persamaan kuadrat”

Written by

Azhar Rizki Zulma

I'm a Information System, Independent Developer, Publisher, Mountainer, Nature Lovers, Musician, Producer, and Blogger.