Kondii Algoritma AKA OK
Kondii Algoritma AKA OK
Seringkali suatu instruksi hanya bisa dikerjakan, jika ia dapat memenuhi suatu
persyaratan tertentu. Oleh karena itu, komputer tidak lagi mengerjakan instruksi
secara runtunan saja, tetapi berdasarkan syarat logika yang dipenuhi yaitu true atau
jika tidak dipenuhi maka logika tersebut adalah false.
1. Pendahuluan
Dalam menentukan pemilihan harus mempunyai syarat-syarat kondisi tertentu di
dalam pemilihan dengan cara membandingkan dua pernyataan tersebut. Hal yang
terpenting bagi kita, harus pandai menganalisa masalah yang ada, artinya menentukan
kondisi boolean (bernilai true atau false) dan menentukan suatu aksi/statement yang
dilakukan jika kondisi tersebut berlaku (memenuhi syarat).
2. Struktur if () then
Bentuk umum algoritma pemilihan yaitu:
if (kondisi) then
statement
end_if
benar salah
kondisi
Statement_1
stop
Misal untuk menentukan indeks prestasi dalam matakuliah algoritma, apakah seorang
mahasiswa akan mendapatkan indeks dengan mutu: A, B, C, D atau E tergantung
atau ketentuan dari kondisi nilainya.
Keterangan:
coba kita lihat persoalan di atas terdapat suatu syarat bahwa jika nilai>90 maka akan
mendapatkan indeks=A, tetapi jika nilai>85 maka mendapatkan indeks=B, tetapi
jika nilai>75 maka mendapatkan indeks=C, tetapi jika nilai>65 maka mendapatkan
indeks=D", tetapi jika nilai <54 maka mendapatkan indeks=E.
Jelaslah bahwa masalah, dalam menentukan suatu indeks di atas yang tergantung dari
ketentuan nilainya. Setelah kita melakukan analisis dengan suatu nilai dengan
kategori tertentu dan memenuhi syarat(kondisi true) tertentu. Dengan adanya suatu
syarat tersebut maka hal yang terpenting dari pemilihan ini yaitu suatu kondisi
terpenuhi atau benar alias true maka kondisi tersebut akan dikerjakan, tetapi jika
kondisi tersebut tidak terpenuhi salah atau false maka kondisi tersebut tidak bisa
dilaksanakan.
Catatan:
Untuk penulisan if, harus menggunakan guruf kecil.
dan seterusnya
Struktur penulisan else, yaitu if then else, dalam bahasa Indonesia bisa
diartikan sebagai berikut : jikamaka..selain itu.
Contoh:
if ( nilai=80 ) then
println(Anda Lulus Ujian)
else
println(Anda Gagal Ujian)
End_if
Keterangan:
Pada Anda Lulus Ujian akan dilaksanakan jika kondisi=true (nilai=80), tetapi jika
kondisi=false, maka secara otomatis akan menampilkan Anda Gagal Ujian.
Perhatikan bahwa else menyatakan ingkar(not) dari kondisi dalam pemilihan.
Bentuk umum pemilihan (if then else) dalam bahasa Java yaitu:
Contoh:
if (nilai==80) {
println(Anda Lulus Ujian);
} else {
println(Anda Gagal Ujian);
}
Bentuk umum pemilihan dengan bantuan else dalam algoritma flowchart, yaitu:
benar salah
kondisi
Statement_1 Statement_2
Stop
DEKLARASI
bil integer
DESKRIPSI
read(bil 2) //input data
if ( bil mod 2 = 0 ) then
println(bilangan genap)
else
println(bilangan ganjil)
end_if
End_algo
1, 2 , 3 , 4 ,5 ,6 ,7 ,8 ,9 ,10.
Tugas Anda sekarang adalah menampilkan mana yang termasuk bilangan bulat dan
mana yang termasuk bilangan ganjil, sesuai dengan data bilangan deret di atas!.
Dalam pemilihan atau kondisional ini, dibagi menjadi beberapa kasus pemilihan, hal
ini untuk bertujuan mempermudah dalam mempelajari algoritma pemilihan tersebut,
algoritma pemilihan dibagi menjadi beberapa kasus pemilihan, yaitu satu kondisi,
dua kondisi dan tiga kondisi atau lebih dari tiga kondisi.
if (nilai>=60)
keterangan ="lulus";
else
keterangan = "tidak lulus";
}
}
}
Hasil output
Nama : edi
Keterangan : lulus
Keterangan:
if, diartikan awal dari percabangan atau awal dari kondisi, yang diartikan dalam
bahasa Indonesia yaitu jika
( kondisi ), merupakan tempat dari kondisi suatu logika (true atau false) yang
berarti memenuhi logika atau tidak, tetapi kondisi ini akan dijalankan jika
kondisinya true atau benar
then, diartikan dalam bahasa Indonesia yaitu maka, artinya setelah kondisi
bernilai true atau benar, kemudian then akan kerjakan dan akan menuju statement.
Statement, merupakan tempat hasil kondisi jika benar, maka statement ini yang
akan dikerjakan, sebetulnya boleh lebih dari satu statement.
End_if, merupakan akhir atau batasan dari pernyataan if
Kalau kita gabungkan pernyataan dari if ( kondisi ) then yang berarti (jika maka).
Berikut algoritma pemilihan menggunakan flowchart.
Statement
stop
if ( x =50 ) then
x = x + 50
end_if
Bentuk umum pemilihan satu kondisi dalam bahasa Java, sebegai berikut:
if (kondisi==true) {
System.out.println(Statement_1);
}
DEKLARASI
a, b integer
DESKRIPSI
a 20
b 16
if ( b < a) then
println( b kurang dari a)
End_if
End_algo
Keterangan:
Algoritma di atas, yaitu membandingkan variabel a dan b, kemudian variabel a diisi
dengan 20, variabel b diisi dengan 16, setelah itu terdapat suatu kondisi, yang
bertujuan untuk menentukan apakah kondisi tersebut benar atau salah.
Dengan kondisi jika b kurang dari a atau ( b <a ) maka kondisi tersebut bernilai benar
dan akan mencetak kata b kurang dari a, tetapi sebaliknya jika yang dimasukan b
lebih besar dari a, maka tidak mencetak apa-apa.
DEKLARASI
ans char
DESKRIPSI
ans y;
If (ans=y) then //jika ans sama dengan y maka tampil Iya
println(benar)
end_if
End_algo
Keterangan:
Algoritma di atas, untuk membandingkan sebuah karakter yang disimpan di variabel
ans, jika ans diisi dengan y kecil, maka kata benar tetapi jika ans diisi dengan
selain y kecil, maka dianggap salah sehingga tidak adanya tampilan keluaran.
Coba algoritma di atas, kita terjemahkan dalam algoritma flowchart, seperti gambar
dibawah ini.
bil = 0
ya
bil = 0
variabel ini
tidak bernilai NOL
Stop
if (bil==0)
System.out.println("variabel ini bernilai NOL");
}
}
Hasil output
variabel ini bernilai NOL
Latihan-2
Penyelesaian bilangan genap dalam bahasa Java, yaitu:
public class Bil_Genap {
if (bil % 2 == 0) {
System.out.println(" bilangan genap");
System.out.print(bil);
}
}
}
Hasil Output
4 ini bilangan genap
Keterangan:
Maka akan menampilkan data pada alat keluaran, seperti hasil di atas. Ingat lambang
% merupakan mod yang artinya sisa bagi, misalnya 4 mod 2 = 0, maka pernyataan di
atas akan mencetak bilangan genap saja.
Bentuk umum pemilihan dua kondisi, dalam algoritma pseudo code, yaitu:
If ( kondisi1) then //kondisi pertama
Statemen_1
else if (kondisi2 ) then //kondisi kedua
Statement_2
end_if
end_if
Contoh:
If ( bilangan>0) then //kondisi pertama
println(Bilangan Positif)
end_if
Contoh:
if ( bilangan>0) { //kondisi pertama
System.out.println(Bilangan Positif);
} else if (bilangan<0 ) { //kondisi kedua
System.out.println(Bilangan Negatif);
}
salah
Kondisi1
benar
Kondisi2
benar salah
Statement1
Statement1
End
DEKLARASI
A, B integer
DESKRIPSI
read(A, B,)
if ( A > B ) then
println(Bilangan terbesar A)
End_if
End_algo
Belajar melalui latihan pemilihan dua kondisi dalam algoritm dan bahasa Java,
yaitu:
Latihan-1,
Menentukan bilangan nol dan bukan bilangan nol, penyelesaian dalam algoritma,
yaitu:
ALGORITMA BilanganlNol
{ menentukan suatu kondisi tertentu, jika kondisi tersebut memenuhinya
maka statement akan dijalankan }
DEKLARASI
bil integer
DESKRIPSI
bil 0
if (bil == 0 ) then
println(Variabel ini bernilai NOL)
else if ( bil > 0) then
println(Variabel ini bernilai lebih besar NOL)
end_if
end_if
End_algo
if ( bil==0 )
System.out.println("variabel ini bernilai NOL");
else if ( bil>0 )
System.out.println("variabel ini bukan bernilai NOL");
}
}
} else if ( a % 2 == 1){
System.out.println("Bilangan Ganjil = " + a );
}
} //akhir ari method Bilangan
}
}
else
Statement_5
end_if
end_if
end_if
end_if
Bentuk umum pemilihan flowchart (if then else if then else), yaitu:
Statement1
salah
Kondisi3
Statement2 benar
Statement3
stop
end_if
end_if
Untuk algoritma lebih dari empat kondisi maka Anda tinggal menambahkan else if dan
di akhiri dengan end_if pada baris selanjutnya.
DEKLARASI
bil integer
DESKRIPSI
End_algo
Pemilihan dalam Java ini bertujuan untuk memilih salah satu dari tiga kemungkinan
yang muncul, yaitu apakah bilangan tersebut termasuk bilangan nol, bilngan negatif
atau bilangan positif, sesuai dengan kondisi yang berlaku.
} else if (kondisi2) {
Statement_2
}else if (kondisi3) {
Statement_3
}
Keterangan:
Jika kondisi1 dievaluasi bernilai true/benar, maka Statement1 yang di eksekusi,
sedangkan jika kondisi1 dievaluasi bernilai false, maka ke kondisi2 berikutnya
berupa Statement2 yang dieksekusi, tetapi jika yang dievaluasi pada kondisi2 bernilai
salah/false maka berlanjut pada kondisi 3 dan jika kondisi 3 memenuhi kondisi maka
statement3 yang akan dieksekusi tetapi kalau tidak ada, maka tidak ada yang
ditampilkan satupun statement di atas.
DEKLARASI
bil integer
ket String
DESKRIPSI
read( bil ) { input dari keyboard }
if (bil > 0 ) { verifikasi kondisi 1 }
ket = bilangan positif
else if (bil <0 ) {verifikasi kondisi 2 }
ket = bilangan negatif
else
ket = bilangan nol
end_if
end_if
print( ket ) {menampilkan variabel ket }
End_algo
}
}
Contoh-2 ,
Matematika untuk menentukan rumus abc dalam algoritma, yaitu:
ALGORITMA Rumus_ABC
{menentukan dari persamaan kuadrat dengan ketentuan D<0 akar-akar
persamaan imaginer, D = akar-akar sama, D > dua akar berlainan}
DEKLARASI
a, b, c, d, x1, x2 double
DESKRIPSI
a=4, b=-13, c =-12
d = b*b (4*a*c)
if ( D<0 ) then
print("Akar-akar persamaan imaginer")
else if ( D=0 ) then
print("Akar-akar pers. nyata tetapi kembar.");
b D
x1 =
2*a
print("x1 = x2 = " + x1)
else
print("Akar-akar pers. nyata dan berbeda")
b D
x1 =
2*a
b D
x2 =
2*a
end_if
end_if
print(x1,x2)
End_algo
double a = 4;
double b = -13;
double c = -12;
double D = b*b (4*a*c);
double x1, x2;
System.out.println("Pers. kuadrat a*x^2+b*x+c=0, di mana");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("Menerapkan ABC diketahui bahwa : ");
}else if (D==0){
System.out.println("Akar-akar pers nyata tetapi kembar");
x1 = -b/(2*a);
System.out.println("x1 = x2 = " + x1);
}else{
System.out.println("Akar-akar pers. nyata dan berbeda.");
x1 = (-b+Math.sqrt(D))/(2*a);
x2 = (-b-Math.sqrt(D))/(2*a);
System.out.println("x1 = " + x1 + " x2 = " + x2);
}
}
}
}
}
Latihan-2
Dalam bahasa Java, Menentukan nilai dan predikat dari sebuah data tertentu, jika nilai
>=80 maka A, nilai >=60 maka B, dan seterusnya, yaitu:
public class NilaiUjian {
static int nilai; // pendefinisian variabel
static String ket;
end_if
end_if
end_if
Keterangan:
Kita perhatikan dalam menuliskan if bersarang di atas, tidak ada kata else melainkan
ditulis secara langsung dengan pernyataan if then lagi secara langsung, nah inilah
kenapa disebut pemilihan bersarang, dikarena dalam pemilihan terdapat pemilihan lagi
(dalam if then terdapat if then lagi).
false/salah true/benar
kondisi
Statement3 Statement2
Statement1
end
end
Keterangan:
Jika kita lihat bagan di atas hampir mirip, seperti susunan bagan pemilihan dua
kondisi, tetapi itu sangat berbeda, coba kita perhatikan. Untuk pemilihan dua kondisi,
yaitu pada saat ke arah kondisi ke dua maka kondisi sebelumnya harus bernilai
salah/false. Untuk pemilihan bersarang yaitu pada saat ke arah kondisi kedua maka
kondisi sebelumnya harus bernilai benar/true. Coba perhatikan baik-baik perbedaan
struktur bagan kondisi bersarang dengan kondisi pada pemilihan lebih dari dua.
Keduanya sangat berbeda dan tergantung pada syarat pemilihan dua kondisi tersebut.
DEKLARASI
harga, jml integer
tot float
anggota string
DESKRIPSI
tot 0
jml 0
harga 100000
if (anggota=yes) then
println("Anggota");
jml 4;
println("Diskon");
tot (harga*jml) - ((harga*jml*50)/100);
println("Harga di diskon 50%");
println("Harga diskon Rp "+ tot);
else
println("Bukan Anggota");
end_if
else
jml=4;
println("Tanpa di diskon");
tot= harga*jml;
println("Harga Rp "+ tot);
end_if
End_algo
if (harga>=100000) {
if (anggota=="yes") {
System.out.println("Anggota");
System.out.println("Diskon");
tot= (harga*jml)-((harga*jml*50)/100);
System.out.println("Harga di diskon 50%");
}else {
System.out.println("Bukan Anggota");
}
}else{
System.out.println("Tanpa di diskon");
tot= harga*jml;
}
}
Hasil output
harga = 400000
Diskon
Harga di diskon 50%
Harga diskon Rp 200000.0
Process completed.
Hasil output:
Umur = 23
Pendidikan = diploma
Diterima menjadi karyawan Gol C
Process completed.
Latihan-2, Bersarang untuk daftar menu buah-buahan dalam bahasa Java, yaitu:
import javax.swing.*;
class menu {
static int pilih; //variabel global
pilih=Integer.parseInt(pil);
}
}
}
Hasil output
DAFTAR HARGA BUAH-BUAHAN
1. Mangga
2. Apel
3. Nanas
4. Alpukat
-----------------------------------------
Anda pilih buah Apel
Harga 20000/kg
Process completed.
Pendahuluan
Penggunaan switch sebenarnya hampir sama dengan if()then bertingkat(kondisi
lebih dari tiga). Kapan kita menggunakan struktur switch? yaitu untuk percabangan
yang berjumlah lebih dari dua atau lebih dari tiga kondisi. Karena itu switch case bisa
dijadikan alternatif lain dalam menyelesaikan kasus pemilihan. Penggunaan switch
case lebih tepat dibandingkan menggunakan if()then ketika menghadapai pemilihan
bertingkat. Switch case mempunyai kelemahan karena hanya bisa dikerjakan ketika
memenuhi beberapa syarat yaitu pembatasan dalam penggunaan tipe data seperti:
byte, short, int, ataupun char. Itulah secara singkat mengenai struktur switch case.
Keterangan:
<kondisi 1>, <kondisi 2> dan seterusnya akan bernilai benar atau salah tergantung
dari nilai ekspresinya, setiap kondisi akan diperiksa satu demi satu untuk mencari
nilai kebenarannya, mulai dari kondisi pertama( <kondisi 1> ) sampai kondisi akhir (
<kondisi 3> ) untuk ditemukannya suatu kondisi yang bernilai benar. Jika tidak
ketemu maka secara otomatis pernyataan default yang akan di eksekusi atau
ditampilkan dalam alat keluaran seperti monitor.
Sekali lagi saya katakan bahwa struktur switch case untuk menyederhanakan dalam
penulisan if-then-else yang bertingkat - tingkat. Statement switch case berisi
ungkapan (pemilih) dan sederetan statement/aksi, yang masing-masing diawali satu
atau lebih konstanta.
Struktur switch case, yaitu mengevaluasi dan membandingkan ekspresi, untuk semua
konstanta case dan mengendalikan eksekusi program ke pernyataan case yang cocok.
Jika tidak ada konstanta case yang cocok dengan ekspresi maka program menuju ke
default statement jika program memberikan pernyataannya.
Hal yang perlu diperhatikan dalam analisa kasus dengan switch case adalah bahwa
ekspresi yang bisa ditangani dalam switch .. case hanya yang nilainya bisa
dienumerasi, yaitu integer (dan tipe range), boolean, dan tipe enum.
Berikut adalah tiga fitur penting dalam pernyataan switch, yaitu
1. Pernyataan switch berbeda dengan pernyataan if..then di mana switch hanya
dapat menguji kesamaan, sedangkan pernyataan if .. then dapat melakukan
evaluasi sembarang tipe ekspresi boolean. Dengan demikian, switch terlihat
seperti hanya mencocokan diantara nilai-nilai ekspresi dengan konstanta-
konstanta case.
2. Tidak ada konstanta case di blok case yang sama dapat mempunyai nilai identik.
Tentu saja untuk pernyataan switch bersarang (nested switch) yang diapit switch
luar dapat mempunyai konstanta yang sama dengan konstanta di switch luar
3. Pernyataan switch biasanya lebih efisien dibandingkan pernyataan if .. then
bersarang yang dalam.
DEKLARASI
a, b, c, pil Integer
DESKRIPSI
End_Algo
Contoh-2
Menentukan jenis bilangan tertentu, yaitu:
ALGORITMA PilihBilangan
{ untuk menentukan pilihan apakah bilangan nol, satu, dua dan harus sesuai
dengan statement case yang tepat}
DEKLARASI
a integer
DESKRIPSI
a=2 //variabel a dimasukan dengan angka 2
switch (a) //melakukan seleksi terhdp variabel a dan dicocokan dgn case
case 0 :
print ( Anda pilih bilangan nol)
case 1 :
print ( Anda pilih bilangan satu)
case 2 :
print ( Anda pilih dua)
case 3 :
print ( Anda pilih bilangan tiga)
default:
print ( Anda pilih bilangan default)
end_switch
End_algo
switch (a) {
case 0 :
System.out.println( Anda pilih bilangan nol); break;
case 1 :
System.out.println( Anda pilih bilangan satu); break;
case 2 :
System.out.println( Anda pilih bilangan dua); break;
case 3 :
System.out.println( Anda pilih bilangan tiga); break;
default:
System.out.println( Anda pilih bilangan default);
}
}
}
Hasil output
Keterangan:
Kenapa di dalam bahasa Java ketika di run akan muncul tiga pernyataan seperti hasil
run diatas bukan satu pernyataan saja. Sedangkan yang kita pilih a=2 dan seharusnya
yang muncul yaitu: Anda pilih bilangan dua. dikarenakan dalam bahasa Java akan
terus dilakukan sampai akhir case, untuk menanggulangi hal tersebut kita tambah
dengan pernyataan break;
Untuk setiap pernyataan diberi pernyataan break; seperti coding dibawah ini.
import javax.swing.*;
class PilihBilangan2 {
switch (a) {
case 0 :
System.out.println( Anda pilih bilangan nol); break;
case 1 :
System.out.println( Anda pilih bilangan satu); break;
case 2 :
System.out.println( Anda pilih bilangan dua); break;
case 3 :
System.out.println( Anda pilih bilangan tiga); break;
default:
System.out.println( Anda pilih bilangan default);
}
}
}
Hasil output
Process completed.
Hasil output
1. Penjumlahan
2. Pengurangan
3. Perkalian
Pilihan Anda ? 3
hasil perkalian = 15
//pengurangan
JJam=Jam1-Jam2;
JMenit=Menit1-Menit2;
JDetik=Detik1-Detik2;
//perhitungan
JWaktu=(JJam*3600)+(JMenit*60)+JDetik;
//merubah ke jam, menit dan detik
KonJam=JWaktu/3600;
KonMenit=JWaktu%3600;
KMenit=KonMenit/60;
KonDetik=KonMenit%60;
//pembayaran
System.out.println("Lama Berinternet :" +
Math.abs(KonJam) +" Jam : "+
Math.abs(KMenit) +" Menit :
"+Math.abs(KonDetik)+"Detik");
harganpk=Math.abs((KMenit*50)) +
Math.abs((KonJam*60*50));
System.out.println("Harga Durasi :" +harganpk);
String Pesan=JOptionPane.showInputDialog("Pembayaran Rp ? ");
int Byr=Integer.parseInt(Pesan);
System.out.println("Bayar Rp :" +Byr);
float bayar=Byr-harganpk;
System.out.println("Kembali Rp :" +bayar);
}
//mehod paket
static void Paket(){
System.out.println("ANDA PILIH PAKET");
System.out.println("-----------------");
System.out.println("1. 3 JAM");
System.out.println("2. 4 JAM");
String Pesan=JOptionPane.showInputDialog("Pilihan PAKET Anda ? ");
System.out.println("--------------------------");
int pil=Integer.parseInt(Pesan);
switch (pil){
case 1:
hargapk=50*180;
System.out.println("Harga Paket : "+ hargapk);
break;
case 2:
hargapk=50*240;
System.out.println("Harga Paket : "+ hargapk);
break;
default:System.out.println("Bukan Pilihan PAKET");
}
System.out.println("-----------------");
System.out.println("1. NON PAKET");
System.out.println("2. PAKET");
String Pesan=JOptionPane.showInputDialog("Pilihan Anda ? ");
System.out.println("--------------------------");
pilih=Integer.parseInt(Pesan);
switch (pilih){
case 1:NonPaket();break;
case 2:Paket();break;
default:System.out.println("Bukan Pilihan");
}
}
}
}
Kasus tambahan,
Marilah kita belajar switch case dengan menggunakan method, untuk menyelesaikan
persoalan pemilihan operasi penjumlahan, pengurangan dan perkalian, yaitu:
DEKLARASI
pil, a, b, hasil integer
DESKRIPSI
read( pil pilihan 1,2,3 ) //memasukan pil dari keyboard
read( a,b )
switch( pil)
case 1 : println"Anda Memilih Penjumlahan"
hasil a + b
case 2 : println"Anda Memilih Pengurangan
hasil a - b
case 3 : println"Anda Memilih Perkalian"
hasil a * b
default : println"Bukan Pilihan";
end_switch
println(hasil);
End_algo
Cobalah kita terjemahkan algoritma di atas, menggunakan method dalam bahasa Java,
yaitu:
import javax.swing.*;
public class OperasiSwitch {
public static int pil, hasil;
public static int d, e;
String angka1;
angka1 = JOptionPane.showInputDialog("Pilihan Anda ?");
pil = Integer.parseInt(angka1); //konversi string ke integer
keluar(); //pemanggilan method keluar
}
Keterangan:
Program di atas, membuat pogram pemilihan yaitu penjumlahan, pengurangan dan
perkalian, dengan dipecah menjadi beberapa method, seperti:
Method penjumlahan(), //berupa method integer
Untuk menghitung penjumlahan, yaitu a + b.
Method pengurangan(), //berupa method integer
Untuk menghitung pengurangan, yaitu a - b.
Method perkalian(), //berupa method integer
Untuk menghitung perkalian, yaitu a * b.
Method masuk(), //berupa method static
Untuk memasukan variabel d dan e, yang akan dikirim dalam method lain.
Method keluar(), //berupa method static
Untuk menampilkan sesuai dengan pilihan yang dipilih.
Method Pilihan(), //berupa method static
Untuk menampilkan keterangan, pengoperasian, seperti tampilan berikut:
Pilihan Anda ?
-----------------------
1. Penjumlahan
2. Pengurangan
3. Perkalian