Control Flow

Program komputer ditulis untuk menyelesaikan suatu tugas. Dalam prosesnya sebuah program akan menerima masukan selanjutnya melakukan perbandingan, pengujian,penerapan algoritma tertentu dan menampilkan hasil proses itu dalam bentuk informasi yang berguna(opsional). Untuk memahami proses itu kita perlu mengetahui bagaimana masing-masing sub-proses itu dilakukan. Secara umum program melakukan proses itu dengan mengikuti suatu alur(flow) tertentu. Pada bab ini akan dibahas bagaimana alur itu diikuti dengan mengenalkan kepada anda tentang komparasi dan iterasi atau perulangan.

Pengambilan Keputusan dengan if-else

Bentuk umumnya dapat ditulis dalam bentuk :

if (kondisi1)
       ekspresi1;
else if(kondisi2)
       ekspresi2;
else
       ekspresi3;

atau multibaris harus disertakan tanda kurung {} ,

if (kondisi1)
{
       ekspresi;
       …
}
else if(kondisi2)
{
       ekspresi;
       …
}
else
{
       ekspresi;
       …
}

Pengujian dilakukan mulai dari kondisi1 berlanjut ke kondisi2 dan seterusnya. Jika semua tidak dipenuhi maka ekspresi terakhir setelah else akan dijalankan.

Kesalahan yang sering terjadi adalah penulisan pernyataan if dengan diakhiri dengan semicolons (;) misalnya:

if (a > b);
       ekspresi1;

dengan adanya “;” setelah pengujian kondisi itu, maka akan dianggap sebagai akhir dari sebuah ekspresi sehingga baris ekspresi1 akan selalu dijalankan tanpa memandang hasil pengujian kondisi.

Pernyataan if-else juga dapat nested yaitu berada dalam pernyataan if-else yang lain.

Contoh :

int a = 100;
if (a > 0)
{
       if (a > 100)
              printf(“a adalah besar\n”);
       else
              printf(“a adalah sedang\n”);
}

Pengujian kondisi dengan switch

Jika pengujian melibakan banyak kondisi dengan  tipe integer (bilangan bulat), maka penggunaan if-else menjadi kurang efisien. C mempunyai kata kunci switch untuk melakukan pengujian dengan banyak kondisi dengan bentuk :

switch(nilai_integer)
{
       case nilai1:ekspresi1;
       break;
       case nilai2:ekspresi2;
       break;
       …
       default:ekspresi_default;
       break;
}

kata kunci break berguna untuk segera keluar dari blok switch sehingga begitu setiap ekspresi dijalankan, maka kontrol akan dipindahkan keluar switch atau dengan kata lain untuk menjamin hanya satu ekspresi saja yang dijalankan.

default berperan seperti else yaitu sebagai alternatif dari suatu kondisi yang tidak dipenuhi.

Namun ada saatnya dimana break tidak digunakan , misalnya untuk menjalankan ekspresi yang sama untuk beberapa kondisi.

Contoh penggunaan switch :

#include <stdio.h>
#include <stdlib.h>

///Kamus
       char n = ‘E’;
///Deskripsi
int main()
{
printf(“Masukkan Sebuah Nilai : “);  scanf(“%c”,&n);
printf(“%c\n”,n);
switch(n)
{
       case ‘A’:case ‘a’:
              printf(“Nilai antara 80-100\n”);
              break;
       case ‘B’:case ‘b’:
              printf(“Nilai antara 70-80\n”);
              break;
       case ‘C’:case ‘c’:
              printf(“Nilai antara 60-70\n”);
              break;
       case ‘D’:case ‘d’:
              printf(“Nilai kurang dari 60\n”);
              break;
       default : printf(“Kriteria nilai tidak ada\n”);
}

       return 0;
}

While

Seringkali dibutuhkan untuk melaksanakan tugas berulang sampai suatu kondisi tetentu tercapai. C memiliki tiga jenis loop  atau perulangan, tapi yang akan dibahas adalah while-do saja yang memiliki bentuk :

while (kondisi)
       ekspresi;

atau

while (kondisi)
{
       ekspresi;
}

selama kondisi bernilai benar, maka ekspresi akan dijalankan terus menerus. Biasanya ekspresi itu sendiri mengandung perintah untuk membuat kondisi menjadi false sehingga loop berhenti.

Contoh :

int a = 10;
printf(“Mulai\n”);
while (a > 0)
{
        printf(“a = %d\n”,a);
        a=a-1;
}
printf(“akhir\n”);

Program ini akan mencetak nilai a terus menerus sampai nilai a sama dengan 0 yang tidak akan ditampilkan.

Seperti hal lainnya dalam C, kesalahan umum dalam penulisan loop ini misalnya dengan meletakkan semicolon (;) setelah while :

while (kondisi);
{
       ekspresi;
}

yang menyebabkan program akan terjebak dalam menjalankan loop tak terhingga (infinite loop) karena kondisi tidak pernah diperbaharui untuk menghentikan loop.

Break

Kata kunci ini dapat anda gunakan untuk keluar dari suatu loop terdekat.

Contoh :

int a = 0;
for (;;)
{
        printf(“Masukkan Sebuah angka : “);
        if ((scanf(“%d”,&a)==1) && (a==0))
            break;
}

Continue

Berfungsi untuk menjalankan iterasi  berikutnya walaupun eksekusi program belum mencapai akhir sebuah iterasi. Misalnya program untuk melewati program untuk melewati bilangan dengan kelipatan 3 :

int a;
for (a=1;a<=10;a=a+1)
{
        if (a%3 == 0) continue;
        printf(“%d\n”,a);
}

akan menghasilkan 1,2,4,5,7,8,10.