Dalam berbagai Bahasa pemrograman, terdapat beberapa bentuk dan variasi pernyataan untuk
menentukan alur control program. Berikut kita akan membahas berbagai bentuk algoritma dalam
pengambilan keputusan atau control alur program.
Pernyataan IF
Pernyataan IF digunakan untuk melakukan test terhadap suatu kondisi, apabila kondisinya benar
(true) maka satu blok pernyataan dalam tubuh IF tersebut akan dilaksanakan (bagian THEN),
sebaliknya, jika hasil pengujian kondisi tersebut bernilai salah (false), maka pernyataan dalam tubu IF
akan dilewati.
Apabila ekspresi terhadap ekspresi_boolean bernilai true, maka aksi (dapat terdiri dari sekumpulan
aksi) dilaksanakan, sebaliknya, maka aksi dilewati.
if(ekspresi_boolean)
{
Aksi-aksi;
}
Misal, kita ingin mengevaluasi apakah suatu variable bernilai 10 atau kurang, jika ya, maka
munculkan keterangan.
Algoritmanya berbentuk:
Pernyataan IF ELSE
Pernyataan IF ELSE digunakan apabila evaluasi terhadap suatu kondisi bernilai TRUE, maka aksi
dalam IF dilaksanakan, tetapi apabila hasil evaluasi terhadap kondisi tersebut bernilai FALSE, maka
pernyataan atau aksi dalam bagian ELSE yang akan dilaksanakan.
IF ekspresi_boolean
THEN aksi_1
ELSE
aksi_2
dalam C berbentuk:
if(ekspresi_boolean){
Aksi_1;
}
else{
Aksi_2;
}
Misalnya, kita ingin mengevaluasi apakah suatu nilai variable bernilai kurang atau sama dengan 10,
jika ya, maka munculkan keterangan, tetapi jika tidak, maka munculkan keterangan lain.
Penggunaan pernyataan IF dapat memiliki berbagai bentuk variasi yang sangat ditentukan oleh
permasalahan serta cara menyelesaikan permasalahan tersebut. Beberapa diantaranya adalah
sebagai berikut.
Flowchart:
Pseudocode:
Implementasi C:
if(kondisi_1) aksi_1;
else if(kondisi_2) aksi_2;
else if(kondisi_3) aksi_3
else aksi_4
Flowchart:
Pseudocode:
IF kondisi_1
THEN IF kondisi_2
THEN aksi_2
ELSE aksi_3
ELSE aksi_1
Implementasi C:
If(kondisi_1)
If(kondisi_2)
aksi_2
else aksi_3
else aksi_1
Variasi bentuk IF di atas disebut NESTED IF, dan dapat memiliki banyak bentuk lainnya.
Sebagai contoh, kita ingin membuat sebuah kode program untuk menampilkan nilai. User diminta
menginput sebuah huruf antara ‘A’ – ‘E’. Kemudian kode program akan menampilkan hasil tampilan
yang berbeda-beda untuk setiap huruf yang diinput, termasuk jika huruf tersebut di luar ‘A’ – ‘E’.
1#include <stdio.h>
2main()
3{
4 char nilai;
5
6 printf("Input Nilai Anda (A - E): ");
7 scanf("%c",&nilai);
8
9 if (nilai == 'A' ) {
10 printf("Pertahankan! \n");
11 }
12 else if (nilai == 'B' ) {
13 printf("Harus lebih baik lagi \n");
}
14
else if (nilai == 'C' ) {
15
printf("Perbanyak belajar \n");
16 }
17 else if (nilai == 'D' ) {
18 printf("Jangan keseringan main \n");
19 }
20 else if (nilai == 'E' ) {
21 printf("Kebanyakan bolos... \n");
22 }
23 else {
24 printf("Maaf, format nilai tidak sesuai \n");
25 }
26
27}
28
Mulai dari baris 10 hingga 27, terdapat 5 buah pemeriksaan kondisi, yakni satu untuk setiap block IF
ELSE. Dalam setiap kondisi, isi variabel nilai akan di diperiksa, apakah itu berupa karakter ‘A’, ‘B’,
hingga ‘E’. Jika salah satu kondisi ini terpenuhi, maka block kode program yang sesuai akan di
eksekusi.
Jika ternyata nilai inputan bukan salah satu dari karakter ‘A’ – ‘E’, maka block ELSE di baris 25 lah
yang akan dijalankan.
Setiap kondisi dari block IF ELSE IF ini bisa diisi dengan perbandingan yang lebih kompleks, seperti
contoh berikut:
1#include <stdio.h>
2
3main()
4{
5 int nilai;
6
7 printf("Input Nilai Anda (0 - 100): ");
8 scanf("%i",&nilai);
9
10 if (nilai >= 90 ) {
11 printf("Pertahankan! \n");
12 }
13 else if (nilai >= 80 && nilai < 90) {
14 printf("Harus lebih baik lagi \n");
}
15
else if (nilai >= 60 && nilai < 80) {
16
printf("Perbanyak belajar \n");
17 }
18 else if (nilai >= 40 && nilai < 60) {
19 printf("Jangan keseringan main \n");
20 }
21 else if (nilai < 40) {
22 printf("Kebanyakan bolos... \n");
23 }
24 else {
25 printf("Maaf, format nilai tidak sesuai \n");
26 }
27 return 0;
28}
29
Di sini kita memodifikasi sedikit kode program kita sebelumnya. Sekarang nilai inputan berupa angka
antara 0 hingga 100. Angka inputan ini ditampung ke dalam variabel nilai yang sekarang di set
sebagai tipe data integer di baris 5.
Di baris 10, isi dari variabel nilai di periksa apakah berisi angka yang lebih dari 90. Jika iya, tampilkan
teks “Pertahankan!”.
Jika kondisi di baris 10 tidak terpenuhi (yang artinya isi variabel nilai kurang dari 90), maka kode
program akan lanjut ke kondisi ELSE IF berikutnya di baris 13. Di sini kita menggabungkan dua buah
kondisi menggunakan operator logika && (yakni operator AND). Kondisi if(nilai >= 80 && nilai <
90) hanya akan terpenuhi jika isi variabel nilai berada dalam rentang 80 sampai 89.
Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan tanda, apakah ingin
menggunakan tanda lebih besar saja (>) atau tanda lebih besar sama dengan (>=) karena bisa
mempengaruhi hasil akhir.
Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari 80), program akan
lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 16, yakni apakah nilai berada dalam rentang 60 –
79. Demikian seterusnya hingga kondisi terakhir if(nilai < 40) di baris 22.
Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan tetap ditangkap oleh
kondisi IF di baris 10 atau di baris 22:
Ini terjadi karena nilai 200 tetap memenuhi syarat if (nilai >= 90), dan nilai -1000 juga tetap
memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode program di atas agar jika diinput
angka di luar dari rentang 0 -100, akan tampil teks “Maaf, format nilai tidak sesuai”. Untuk hal ini
kita cuma perlu mengubah / menambah 2 kondisi saja.
Contoh-contoh Kasus
Rancang suatu algoritma dan implementasinya dalam C untuk kasus-kasus berikut.
1. Menghitung Total biaya foto kopi sesuai status ‘pelanggan’ atau ‘bukan pelanggan’ dan
jumlah lembar.
Penjelasan: Diasumsikan bahwa jika statusnya pelanggan, maka ybs mendapatkan potongan
biaya sebesar 10%. Dan jika lembar foto kopi diatas 100 lembar, maka ybs juga mendapat
potongan sebesar 5%. Biaya foto kopi perlembar ditetapkan Rp. 100.0
Untuk mengetahui status ‘pelanggan’ atau ‘bukan pelanggan’, kita dapat mengajukan
pertanyaan yang hanya dijawab ya dengan menekan tombol ‘Y’ atau tidak, dengan menekan
tombol ‘T’.
Langkah-langkah
- Menanyakan berapa jumlah lembar fotokopi
- Menanyakan status, apakah pelanggan atau bukan (Y/T)
- Hitung total biaya fotokopi, dengan formula
Total biaya <- jumlah lembar * harga per lembar
- Jika status adalah pelanggan, maka
Total biaya <- total biaya – (total biaya * DISKON PELANGGAN)
Jika lembar fotokopi >= 100, maka
Total biaya <- total biaya – (total biaya * DISKON LEMBAR)
Tampilkan total biaya
Jika tidak
Tampilkan total biaya
Jika tidak, maka
Jika jumlah lembar >= 100, maka
Total biaya <- total biaya – (total biaya * DISKON LEMBAR)
Tampilkan total biaya
Jika tidak, maka
Tampilan total biaya
Analisis Kebutuhan
- Kebutuhan output:
Menampilkan nilai total biaya, missal
Total Biaya fotokopi adalah Rp. XXXX
- Kebutuhan input:
Meminta masukan berupa jumlah lembar fotokopi dan status pelanggan atau bukan,
missal:
Ketikan jumlah lembar fotokopi: ????
Apakah statusnya pelanggan (Y/T): ?
- Kebutuhan konstanta:
o Untuk menyimpan tetapan diskon lembar konstanta diberi nama DISKON_LBR
dengan nilai 0.05
o Untuk menyimpan tetapan diskon status pelanggan, konstanta diberi nama
DISKON_PLG dengan nilai 0.05
o Untuk menyimpan tetapan harga, tetapan diberi nama HARGA dengan nilai
100.0
- Kebutuhan variable:
o Untuk menyimpan variable jumlah lembar fotokopi, variable diberi nama lembar
bertipe real atau double
o Untuk menyimpan variable total biaya, variable diberi nama total bertipe real
atau double
o Untuk menyimpan variable status diberi nama status bertipe karakter
- Kebutuhan proses:
o Untuk menghitung total biaya normal
Total <- lembar * HARGA
o Untuk menghitung total biaya jika statusnya pelanggan dgn lembar < 100 lembar
Total yang baru <- total – (total * STATUS_PLG)
o Untuk menghitung total biaya jika statusnya pelanggan dgn lembar >= 100
lembar
Total yang baru <- total – (total * STATUS_LBR)
o Untuk menghitung total biaya jika statusnya bukan pelanggan dgn jumlah
lembar >= 100 lembar
Total yang baru <- total – (total * DISKON_LBR)
o Untuk menghitung total biaya jika statusnya bukan pelanggan dgn jumlah
lembar < 100 lembar
Total <- total * HARGA atau biaya normal
Variable:
Lembar, total: real
Status: karakter
Deskripsi
Start
Write(‘MENGHITUNG TOTAL BIAYA FOTOKOPI’)
Wrte(‘Ketikkan jumlah lembar fotokopi: ‘)
Read(lembar)
Write(‘Apakah statusnya pelanggan (Y/T): ‘)
Read(status)
//hitung dulu biaya normalnya
Total <- lembar * HARGA
IF status == ‘Y’
THEN
Total <- total – (total * DISKON_PLG)
IF lembar >= 100
THEN
Total <- total – (total * DISKON_LBR)
Write(‘Total biaya adalah: ‘ + total)
ELSE
Write(‘Total biaya adalah: ‘ + total)
ELSE IF lembar >= 100
THEN
Total <- total – (total * DISKON_LBR)
Write(‘Total biaya adalah: Rp. ‘ + total)
ELSE
Write(‘Total baiaya adalah: Rp. ‘ + total)
stop
Implementasi dalam C
/*
Program menghitung total biaya fotokopi berdasarkan jumlah lembar
fotokopi dan status pelanggan
Nama File: fotokp2.c
Programmer: Anu
*/
#include <stdio.h>
#include <stdlib.h>
//konstanta
#define DISKON_LBR 0.05
#define DISKON_PLG 0.05
#define HARGA 100.0
main(){
double lembar, total=0.0;
char status;
Penjelasan: Menghitung suatu operasi atau ekspresi aritmatik dapat dilakukan berdasarkan
tanda operator yang digunakan, missal tanda ‘+’, ‘-‘, ‘*’, ’/’, atau tanda ‘^’, selain tanda
tersebut, maka operasi tidak dapat dilakukan. Oleh karena itu, jika operator dan persyaratan
lainnya sesuai maka harus operasi tersebut harus ditandai sebagai ‘operasi yang bisa
dilakukan’ (dapat menggunakan tanda berupa variable bernilai tertentu). Selain itu, khusus
operasi pembagian (tanda ‘/’), maka harus dilakukan pengecekan terlebih dahulu terhadap
nilai operan_2, dimana operasi perhitungan hanya dapat dilakukan apabila nilai operan_2
bukan 0.
Langkah-langkah
- User diminta mengetikkan operasi, missal 5 * 2.5
- Hitung operasi jika tanda operator dan nilai sesuai persyaratan
- Tampilkan hasil perhitungan
Analisis Kebutuhan
- Kebutuhan output
Menampilkan hasil perhitungan kalkulator, misal:
Hasilnya = XXXX
- Kebutuhan input
Meminta masukan dalam format operan_1 operator operan_2, misalnya user
mengetikkan 5 * 2.5
Ketikkan operasi: ??? ? ???
- Kebutuhan operasi
Perhitungan berdasarkan operasi, sbb:
o Beri penanda pada operasi yang bisa dilakukan, misal tanda OKE yang bersifat
Boolean, nilai TRUE jika operasi bisa dilakukan dan nilai FALSE jika sebailknya
o Jika operatornya ‘+’, maka
Hasil <- operan_1 + operan_2
o Jika operatornya ‘-’, maka
Hasil <- operan_1 - operan_2
o Jika operatornya ‘*’, maka
Hasil <- operan_1 * operan_2
o Jika operatornya ‘/’, maka
Jika nilai operan_2 bukan nol, maka
Hasil <- operan_1 / operan_2
Jika nilai operan_2 == 0, maka
Operasi tidak dilakukan, tampilkan keterangan ‘Tidak bisa dihitung’
o Jika operatornya ‘^’, maka
Hasil <- power(operan_1, operan_2), dimana power() adalah fungsi untuk
menghitung nilai operan_1 pangkat operan_2
- Kebutuhan variable
o Untuk menyimpan nilai operan_1 diberi nama opn1 bertipe real
o Untuk menyimpan nilai operan_2 diberi nama opn2 bertipe real
o Untuk menyimpan nilai hasil operasi, diberi nama hasil bertipe real
o Untuk menyimpan tanda operator, diberi nama op bertipe karakter
o Untuk menyimpan tanda bahwa operasi bisa dilakukan beri nama oke, bertipe
Boolean (dalam C menggunakan tipe int, dimana nilai1 bernilai TRUE dan nilai 0
bernilai FLASE
Deklarasi
Variable
Opn1, opn2, hasil: real
Op: karakter
Deskripsi
Start
Write(‘KALKULATOR TUKANG BAREH’)
Write(‘Ketikan operasi, misal 5 * 2.5: ‘)
Read(opn1, op, opn2)
Oke <- FALSE //dianggap bahwa operasi tidak dapat dilakukan
IF op == ‘+’
THEN
Oke <- TRUE
Hasil <- opn1 + opn2
ELSE IF op == ‘-‘
THEN
Oke <- TRUE
Hasil <- opn1 - opn2
ELSE IF op == ‘*‘
THEN
Oke <- TRUE
Hasil <- opn1 * opn2
ELSE IF op == ‘/‘
THEN
IF opn2 != 0
THEN
Oke <- TRUE
Hasil <- opn1 / opn2
ELSE
Oke <- FALSE
ELSE IF op == ‘^’
THEN
Oke <- TRUE
Hasil <- power(opn1, opn2)
ELSE
Write(‘Operator tidak dikenal!’)
IF oke == TRUE
THEN
Write(‘Hasil = ‘ + hasil)
ELSE write(‘Operasi tidak dapat dilakukan!’)
Stop
Implementasi dalam C
/*
Menghitung hasil operasi kalkulator
Nama File: kalkulator.c
Programmer: Anu
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(){
double opn1, opn2, hasil=0.0;
char op;
int oke;
3. Menentukan Nilai Mata Kuliah dalam Huruf berdasarkan nilai UTS, UAS, TUGAS, PRAKTEK
Penjelasan: Diasumsikan bahwa nilai akhir diperoleh berdasarkan nilai uts(20%), uas (30%),
tugas (20%) dan nilai praktek (30%).
Ketentuan nilai Huruf:
Nilai A: 81.0<=nilai akhir<=100.0
Nilai B: 66.0<=nilai akhir<81.0
Nilai C: 55.0<=nilai akhir<66.0
Nilai D: 45.0<=nilai akhir<55.0
Nilai E: nilai akhir<45.0
Langkah-langkah
- Meminta masukan berupa nilai mata kuliah
- Periksa, apakah nilai tersebut berada dalam batas penilaian yang ditetapkan
Jika nilai berada dalam batas 81.0<=nilai akhir<=100.0, maka nilai huruf adalah ‘A’
Jika nilai berada dalam batas 66.0<=nilai akhir<81.0, maka nilai huruf adalah ‘B’
Jika nilai berada dalam batas 55.0<=nilai akhir<66.0, maka nilai huruf adalah ‘C’
Jika nilai berada dalam batas 45.0<=nilai akhir<55.0, maka nilai huruf adalah ‘D’
Selain itu (nilai akhir<45.0), maka nilai huruf adalah ‘E’
- Tampilkan nilai total dan nilai hururf
Analisis Kebutuhan
- Kebutuhan output:
Menampilkan nilai akhir dan nilai huruf, misal
Nilai akhir: XX.X dan Nilai huruf X
- Kebutuhan input:
Meminta masukan nilai untuk unsur nilai UTS, UAS, TUGAS dan nilai PRAKTEK, misal
Ketikkan nilai UTS : ??
Ketikkan nilai UAS : ??
Ketikkan nilai TUGAS : ??
Letikkan nilai PRAKTEK : ??
Deklarasi
Konstanta
PUTS = 0.20
PUAS = 0.30
PTGS = 0.20
PTEK = 0.30
Variable
uts, uas, tugas, praktek, akhir: real
huruf: karakter
Deskripsi
Start
Write(‘PENILAIAN MATA KULIAH’)
Write(‘Ketikkan nilai UTS : ‘)
Read(uts)
Write(‘Ketikkan nilai UAS : ‘)
Read(uas)
Write(‘Ketikkan nilai Tugas : ‘)
Read(tugas)
Write(‘Ketikkan nilai praktek : ‘)
Read(praktek)
//menghitung nilai akhir
Akhir <- uts * PUTS + uas * PUAS + tugas * PTGS + praktek * PTEK
//konversi ke nilai huruf
IF akhir>=81.0 AND akhir<=100
THEN huruf <- ‘A’
ELSE IF akhir>=66.0 AND akhir< 81.0
THEN huruf <- ‘B’
ELSE IF akhir>=55.0 AND akhir< 66.0
THEN huruf <- ‘C’
ELSE IF akhir>=45.0 AND akhir< 55.0
THEN huruf <- ‘D’
ELSE huruf <- ‘E’
//tampilkan informasi
Write(‘Nilai Akhir : ‘ + akhir)
Write(‘Nilai Huruf : ‘ + huruf)
Stop
Implementasi dalam C
#include <stdio.h>
#include <stdlib.h>
//deklarasi konstanta
#define PUTS 0.20
#define PUAS 0.30
#define PTGS 0.20
#define PTEK 0.30
main(){
double uts, uas, tugas, praktek, akhir;
char huruf;
Pernyataan Switch
Perhatikan diagram alir yang dapat menggambarkan pernyataan switch berikut ini.
Flowchart:
Suatu variable atau ekspresi ditempatkan pada bagian switch untuk dievaluasi. Hasil evaluasi akan
dibandingkan dengan sejumlah nilai yang ditetapkan hingga ditemukan nilai yang sama. Jika hasil
evaluasi sama dengan salah satu dari sejumlah nilai tersebut, maka bagian aksi (block) akan
dieksekusi. Apabila tidak ad satupun nilai yang cocok, maka bagian default yang akan dieksekusi.
Switch ekspresi
Case nilai_1: aksi_1
Case nilai_2: aksi_2
Case nilai_3: aksi_3
Case nilai_n: aksi_n
Default : aksi_default
Endswitch
Perlu diketahui, algoritma pseudocode terkait pernyataan switch sering menggunakan istilah
pernyataan Depend On, sehingga bentuk algoritma pseudocode berupa:
Depend On ekspresi
Case nilai_1: aksi_1
Case nilai_2: aksi_2
Case nilai_3: aksi_3
Case nilai_n: aksi_n
Default : aksi_default
endDependOn
Kita bisa melihat, implementasi pernyataan switch dalam C memiliki ciri dan aturan tersendiri. Nilai
yang dievaluasi harus bertipe integer atau memiliki hasil evaluasi bernilai integer (seperti char)
sedangkan tipe real atau floating point, seperti float dan double tidak dapat digunakan dalam
pernyataan switch dalam C.
Perhatikan, bahwa stiap blok pernyataan untuk masing-masing nilai case, diakhiri dengan
pernyataan break yang berarti bahwa, apabila suatu nilai cocok, maka pencarian nilai lainnya tidak
perlu dilakukan. Break memaksa program untuk menghentikan pencarian nilai yang lain dan alur
control keluar dari badan switch.
Sebagai contoh, misalnya pada kasus membuat kalkulator yang sebelumnya menggunakan
pernyataan IF, kita implementasikan dengan menggunakan pernyataan switch. Perhatikan
implementasinya dalam C berikut ini:
/*
Menghitung hasil operasi kalkulator menggunakan switch
Nama File: kalkswitch.c
Programmer: Anu
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(){
double opn1, opn2, hasil=0.0;
char op;
int oke;