Home about IT Motivation Course Sales Project About Me

Saturday, December 05, 2009

SELECTION dalam bahasa C

adakalanya sebuah instruksi dikerjakan jika kondisi tertentu sudah dipenuhi. Contoh program:
- menentukan letak kuadran suatu titik (x,y) dalam bidang kartesian.
- membaca sebuah bilangan bulat dan menentukan genap/ganjil.
- membaca sebuah karakter dan menentukan vocal / konsonan
- membaca 2 buah bilangan dan menentukan bilangan terbesarnya.
- membaca angka tahun masehi dan menentukan kabisat/ tidak.
- membaca sebuah bilangan dan menentukan bilangan tersebut positif, nol atau negatif.
- membaca temperatur dan menentukan wujud benda dari temperaturnya.
- menentukan index nilai mahasiswa dari angka yang dimasukkan,
- membaca nama kota dan menentukan nama ibukotanya
- membaca suatu angka bulan dan menentukan nama bulannya.
- etc

Ada 3 type kontruksi untuk kontruksi SELECTION:
  1. IF - THEN
  2. IF - THEN - ELSE
  3. NESTED IF (IF THEN ELSE Bersarang)
  4. CASE
berikut penjelasannya:

================================================
IF - THEN (JIKA - MAKA)
================================================
digunakan untuk satu kasus, misal:
- membaca input bilangan dan menentukan statusnya ganjil
- membaca karakter huruf dan menentukan statusnya vocal

bentuk pernyataannya adalah sbb:

if kondisi then
aksi
endif

pernyataan diatas berarti: bahwa aksi hanya akan dilaksanakan bila kondisi bernilai benar (true). bila kondisi bernilai salah (false), tidak ada aksi apapun yang dikerjakan. Kata "endif" sengaja ditambahkan untuk mempertegas awal dan akhir struktur IF-THEN.

Flow untuk satu kasus (IF-THEN) adalah sbb:



::::contoh program 1::::
/* mencetak pesan GENAP */
#include <stdio.h>
int main()
{
int bil;
printf(" ketikkan sembarang bilangan bulat: ");
scanf("%d",&bil);
if (bil%2 == 0)
printf("genap");
/*endif*/
}

dari contoh program diatas
maka jika diinput bilangan bulat genap akan muncul pesan "GENAP"
tapi bila diinput bilangan bulat ganjil tidak akan muncul pesan "GANJIL" atau lainnya.

agar supaya muncul pesan lainnya (kondisi alternatif) jika suatu kondisi tidak terpenuhi,
maka digunakan struktur IF-THEN-ELSE


=====================================
IF - THEN - ELSE (JIKA - MAKA - KALAU TIDAK)
=====================================
- digunakan jika kita perlu memilih melakukan aksi alternatif jika suatu kondisi tidak terpenuhi.
- untuk dua kasus
- Notasi algoritmiknya adalah sbb:

if kondisi then
aksi1
else
aksi2
endif

dari pernyataan diatas berarti bahwa: aksi1 dikerjakan jika kondisi bernilai benar (true),
sebaliknya jika kondisi bernilai salah (false), maka aksi2 akan dilaksanakan.
- flow diagramnya sebagai berikut:



- contoh program antara lain sbb:
- membaca suatu bilangan bulat dan menentukan bilangan tersebut GENAP/GANJIL
- membaca suatu huruf dan menentukan huruf tersebut VOCAL/KONSONAN
- membaca 2 buah bilangan dan menentukan mana yang terbesar.

::: contoh program 2
/*
membaca suatu bilangan bulat
dan menentukan bilangan tersebut ganjil / genap
*/
#include <stdio.h>
int main()
{
int bil;
printf(" ketikkan sembarang bilangan bulat: ");
scanf("%d",&bil);
if (bil%2 == 0)
printf("genap");
else
printf("ganjil");
/*endif*/
}



============================================
NESTED IF (IF - THEN ELSE BERSARANG/ BERTINGKAT)
============================================
- digunakan untuk memecahkan masalah yang mempunyai 3 kasus atau lebih.
- algoritmiknya adalah sbb:

if kondisi1 then
aksi1
else
if kondisi2 then
aksi2
else
if kondisi3 then
aksi3
endif
endif
endif

- Flowchart adalah sbb

- contoh program yang menggunakan ini antara lain:
- membaca bilangan bulat dan menentukan bilangan tersebut +,- atau nol
- menentukan kuadran suatu titik (x,y) dalam bidang kartesius
- menetukan wujud suatu benda: cair, gas, padat



::: contoh program 3

/*
===========================================
program ibukota, dengan input ibukotanya
===========================================
*/
#include<stdio.h>
#include<string.h>

int main ()
{ /* declarasi*/
char ibk[10];
/*algoritma*/
printf(" masukkan nama ibukota di jawa:");scanf("%s",ibk);
if (strcmp(ibk,"serang")==0)
printf("banten \n");
else
if (strcmp(ibk,"jakarta")==0)
printf("DKI jakarta \n");
else
if (strcmp(ibk,"bandung")==0)
printf("jawa barat \n");
else
if (strcmp(ibk,"semarang")==0)
printf("jawa tengah \n");
else
if (strcmp(ibk,"yogyakarta")==0)
printf("DI yogyakarta \n");
else
if (strcmp(ibk,"surabaya")==0)
printf("jawa timur \n");
/*endif*/
/*endif*/
/*endif*/
/*endif*/
/*endif*/
/*endif*/
}

keteranga:
- typedata karakter adalah semua huruf abjad, semua tanda baca , angka dan
kharakter khusus ---> semua yg di keyboard deh.
- nilai konstanta ibukota yaitu ibk bertype string.
sehingga harus menggunakan library "string.h".
- fungsi strcmp digunakan untuk membandingkan kesamaan dua buah string.
Nilai strcmp(s1,s2) sama dengan nol jika s1=s2.
Dan tidak sama dengan nol jika s1 tidaksamadengan s2

====================================
CASE
====================================
- digunakan untuk menyederhanakan penulisan IF-THEN-ELSE yang bertingkat-tingkat
- kontruksi CASE adalah sebagai berikut
case ekspresi
nilai1 : aksi1
nilai2 : aksi2
nilai3 : aksi3
.
.
.
nilai n : aksi n
otherwise : aksi x
endcase

- flow chart CASE sebagai berikut:






:::contoh program 4
/*
==========================
mencetak nama bulan
========================
*/
#include<stdio.h>
int main()
{
/*deklarasi*/
int nomor_bulan;
/*algoritma*/
printf("masukkan angka bulan (1-12);");
scanf("%d",&nomor_bulan);
switch (nomor_bulan)
{
case 1 : printf("Januari \n");break;
case 2 : printf("February \n");break;
case 3 : printf("Maret \n");break;
case 4 : printf("April \n");break;
case 5 : printf("May \n");break;
case 6 : printf("June \n");break;
case 7 : printf("July \n");break;
case 8 : printf("Agustus \n");break;
case 9 : printf("September \n");break;
case 10 : printf("Oktober \n");break;
case 11 : printf("November \n");break;
case 12 : printf("Desember \n");break;
default : printf("bukan bulan yang benar \n");
}
}


:: perhatikan penggunaan BREAK dan bedakan dengan CONTINUE

Statemen break digunakan untuk menghentikan sebuah pengulangan dan program akan langsung meloncat ke statemen yang berada di bawah blok pengulangan. Biasanya ini dilakukan karena alasan efisiensi program, yaitu untuk menghindari proses pengulangan yang sebenarnya sudah tidak diperlukan lagi.

Sedangkan statemen continue digunakan untuk melanjutkan proses pengulangan. Statemen continue menyebabkan proses perulangan kembali ke awal mulainya perulangan dengan mengabaikan statemen-statemen berikutnya setelah statemen continue. Statemen continue dapat digunakan untuk perulangan for, while maupun perulangan do-while.

contoh penggunaan keduanya:

::contoh proram 5

#include<stdio.h>
int main()
{
int a;
while (1) /*true*/
{
printf("masukan bilangan bulat : ");
scanf("%d",&a);
if(a % 2 == 0)
{
int b;
b=a/2;
printf("%d : 2 = %d\n",a);
continue;
}
else if( a % 5 == 0)
{
int c;
c=a/5;
printf("%d : 5 = %d\n",a);
break;
printf("Lanjutkan loop berikutnya : ");
}
printf("akhiri loop\n");
}
}

No comments: