BAB 6
St r u k t u r Kon t r ol
6 .1 Tu j u a n
Pada bab sebelum nya, kit a sudah m endapat kan cont ah dari program sequent ial, dim ana st at em ent dieksekusi set elah st at em ent sebelum nya dengan urut an t ert ent u. Pada bagian ini, kit a m em pelaj ari t ent ang st rukt ur kont rol yang bert uj uan agar kit a dapat m enent ukan urut an st at em ent yang akan dieksekusi.
Pada akhir bab, siswa diharapkan m am pu:
• Menggunakan st rukt ur kont rol keput usan ( if, else, sw it ch) yang digunakan unt uk
m em ilih blok kode yang akan dieksekusi
• Menggunakan st rukt ur kont rol pengulangan ( w hile, do- w hile, for) yang digunakan unt uk m elakukan pengulangan pada blok kode yang akan dieksekusi
• Menggunakan st at em ent percabangan ( break, cont inue, ret urn) yang digunakan
unt uk m engat ur redirect ion dari program
6 .2 St r u k t u r Kon t r ol Ke pu t u sa n
St rukt ur kont rol keput usan adalah st at em ent dari Java yang m engij inkan user unt uk m em ilih dan m engeksekusi blok kode dan m engabaikan blok kode yang lain.
Gam bar 1: Flow chart St at em ent I f
dim ana, boolean_expression adalah sebuah persyarat an boolean (boolean st at em ent) at au boolean variabel.
Berikut ini adalah cont oh code st at em ent if,
int grade = 68;
if( grade > 60 ) System.out.println("Congratulations!");
at au
int grade = 68;
if( grade > 60 ){
System.out.println("Congratulations!"); System.out.println("You passed!"); }
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Boole a n _ e x pr e ssion pada st at em ent harus m erupakan nilai boolean.Hal ini berart i persyarat an harus bernilai t r ue at au fa lse.
2. Masukkan st at em ent di dalam blok if. Cont ohnya, if( boolean_expression ) {
6 .2 .2 St a t e m e n t if- e lse
St at em ent if- else digunakan apabila kit a ingin m engeksekusi sebuah st at em ent dengan kondisi t rue dan st at em ent yang lain dengan kondisi false.
if( grade > 60 ) System.out.println("Congratulations!"); else System.out.println("Sorry you failed");
Gam bar 2: Flowchart St at em ent I f- Else
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Unt uk m enghindari kebingungan, selalu let akkan st at em ent di dalam blok if- else di dalam t anda { } ,
2. Anda dapat m em iliki blok if- else yang bersarang. I ni berart i anda dapat m em iliki blok if- else yang lain di dalam blok if- else. Cont ohnya,
if( boolean_expression ) {
if( boolean_expression ) {
. . .
} } else{
. . .
6 .2 .3 St a t e m e n t if- e lse - if
St at em ent pada bagian else dar i blok if- else dapat m enj adi st rukt ur if- else y ang lain. St rukt ur sepert i ini m engij inkan kit a unt uk m em buat seleksi persyarat an yang lebih kom pleks.
Bent uk st at em ent if- else if,
if( boolean_expression1 ) statement1;
else if( boolean_expression2 ) statement2;
else
statement3;
Bisa anda cat at anda dapat m em iliki banyak blok else- if sesudah st at em ent if. Blok else bersifat opt ional dan dapat dihilangkan. Pada cont oh di bawah at as, j ika boolean_ex pression1 bernilai t rue, m aka program akan m engeksekusi st at em ent 1 dan m elew at i st at em ent yang lain. Jika boolean_expression2 bernilai t rue, m aka progr am akan m engeksekusi st at em ent 2 dan m elewat i st at em ent 3.
Berikut ini cont oh code st at em ent if- else- if
1. Kondisi pada st at em ent if bukan m erupakan nilai boolean. Cont ohnya,
//BENAR
int number = 0; if( number ){
//some statements here }
Variabel num ber t idak m em iliki nilai Boolean.
2. Using = inst ead of = = for com parison. For exam ple,
3. Menggunakan = daripada = = unt uk operat or perbandingan. Cont ohnya,
//SALAH
int number = 0; if( number = 0 ){
//Statement Selanjutnya }
Seharusnya code t ersebut dit ulis,
6 .2 .5 Con t oh st a t e m e n t if- e lse - e lse if
public class Grade {
public static void main( String[] args ) {
double grade = 92.0;
if( grade >= 90 ){
System.out.println( "Excellent!" ); }
else if( (grade < 90) && (grade >= 80)){ System.out.println("Good job!" ); }
else if( (grade < 80) && (grade >= 60)){ System.out.println("Study harder!" ); }
else{
System.out.println("Sorry, you failed."); }
6 .2 .6 St a t e m e n t sw it ch
Cara lain unt uk m em buat percabangan adalah dengan m enggunakan kat a kunci sw it ch. Dengan m enggunakan sw it ch kit a bisa m elakukan percabangan dengan persyarat an yang beragam . case_select or1, case_select or2 dan set erusnya adalah konst ant a nilai int eger yang unique ( unik) .
Ket ika st at em ent swit ch dit em ukan, pert am a kali Java m em eriksa swit ch_expression, dan m eloncat ke case dan m encocokkan nilai yang sam a dengan persyarat annya. Program m engeksekusi st at em ent dari awal sam pai m enem ui st at em ent break, dan m elew at i st at em ent yang lain sam pai akhir st rukt ur sw it ch.
Jika t idak dit em ui case yang cocok, m aka program akan m engeksekusi blok default . Bisa anda cat at bahwa blok default adalah opt ional. Sebuah st at em ent swit ch bisa t idak m em iliki blok default .
CATATAN :
• Tidak sepert i st at em ent if, pada st rukt ur sw it ch st at em ent dieksekusi t anpa m em erlukan t anda kurung kuraw al ({ }) .
• Ket ika sebuah case pada st at em ent sw it ch m enem ui kecocokan, sem ua st at em ent pada case t ersebut akan dieksekusi. Tidak hanya dem ikian, st at em ent lain yang berada pada case yang cocok j uga dieksekusi.
Gam bar 4: Flow chart St at em ent Sw it ch
Pe t u n j u k Pe n u lisa n Pr ogr a m :
1. Menent ukan penggunaan st at em ent if at au st at em ent swit ch adalah sebuah keput usan. Anda dapat m enent ukan yang m ana yang akan dipakai berdasarkan kem udahan m em baca program dan fakt or- fakt or yang lain.
6 .2 .7 Con t oh st a t e m e n t sw it ch
public class Grade {
public static void main( String[] args ) {
int grade = 92;
switch(grade){
case 100:
System.out.println( "Excellent!" ); break;
case 90:
System.out.println("Good job!" ); break;
case 80:
System.out.println("Study harder!" ); break;
default:
System.out.println("Sorry, you failed."); }
6 .3 St r u k t u r Kon t r ol Pe r u la n ga n
St rukt ur kont rol pengulangan adalah st at em ent dari Java dim ana kit a bisa m engeksekusi blok code berulang- ulang dalam kurun nilai t ert ent u. Ada t iga m acam j enis st rukt ur kont rol pengulangan yait u while, do- w hile, dan for- loops.
6 .3 .1 w h ile loop
St at em ent while loop adalah st at em ent at au blok st at em ent yang diulang- ulang sam pai m encapai kondisi yang cocok.
Bent uk st at em ent while,
while( boolean_expression ){ statement1; statement2;
. . . }
St at em ent di dalam w hile loop akan dieksekusi berulang- ulang selam a
boolean_expression bernilai t rue. Cont oh, pada code dibawah ini,
int i = 4;
while ( i > 0 ){
System.out.print(i); i--;
}
Berikut ini adalah beberapa cont oh w hile loop,
Con t oh 1 :
int x = 0; while (x<10) {
System.out.println(x); x++;
}
Con t oh 2 :
//infinite loop while(true)
System.out.println(“hello”);
Con t oh 3 :
//no loops
// statement is not even executed while (false)
6 .3 .2 do- w h ile loop
Do- while loop m irip dengan w hile- loop. St at em ent di dalam do- while loop akan dieksekusi beberapa kali selam a k ondisi bernilai t rue.
Perbedaan ant ara while dan do- while loop adalah dim ana st at em ent di dalam do- while loop dieksekusi sedikit nya sa t u k a li.
St at em ent di dalam do- while loop akan dieksekusi pert am a kali, dan dilakukan pengecekan kondisi dari boolean_expression. Jika nilai t ersebut belum m encapai nilai yang diinginkan, st at em ent akan dieksekusi lagi.
Berikut ini beberapa cont oh do- w hile loop:
Cont oh ini akan m em berikan out put 0123456789 pada layar.
Con t oh 2 :
//infinite loop do{
System.out.println(“hello”); } while (true);
Cont oh di at as akan m elakukan pengulangan yang t idak berhent i unt uk m enulis “ hello” pada layar.
Con t oh 3 :
//one loop
// statement is executed once do
System.out.println(“hello”); while (false);
Pa n du a n pe m r ogr a m a n :
1. Kesalahan pem rogram an ket ika m enggunakan do- while loop adalah lupa unt uk m enulis t it ik kom a ( ; ) set elah ekspresi while.
Sepert i pada st rukt ur pengulangan sebelum nya yait u m elakukan pengulangan eksekusi code beberapa kali.
Bent uk dari for loop,
for (InitializationExpression; LoopCondition; StepExpression){ statement1;
Berikut ini adalah cont oh dari for loop,
int i;
for( i = 0; i < 10; i++ ){
System.out.print(i); }
Pada cont oh ini, st at em ent i= 0 m erupakan inisialisasi dari variabel. Selanj ut nya, kondisi i< 10 diperiksa. Jika kondisi bernilai t rue, st at em ent di dalam for loop diek sekusi. Kem udian, st at em ent i+ + dieksekusi, dan dilakukan pengecekan kondisi. Kondisi ini akan dilakukan berulang- ulang sam pai m encapai nilai yang salah ( false) .
6 .4 Br a n ch in g St a t e m e n t s
Branching st at em ent s m engij inkan kit a unt uk m engat ur j alannya eksekusi program . Java m em berikan t iga bent uk branching st at em ent s: break, cont inue dan ret urn.
6 .4 .1 br e a k st a t e m e n t
St at em ent break m em ilik i dua bent uk: unlabeled dan labeled.
6 .4 .1 .1 Un la be le d br e a k st a t e m e n t
Unlabeled m enghent ikan j alannya st at em ent swit ch. Anda bisa j uga m enggunakan bent uk unlabeled unt uk m enghent ikan for, w hile at au do- w hile loop.
Cont ohnya,
String names[] = {"Beah", "Bianca", "Lance", "Belle", "Nico", "Yza", "Gem", "Ethan"};
String searchName = "Yza"; boolean foundName = false;
for( int i=0; i< names.length; i++ ){ if( names[i].equals( searchName )){
foundName = true;
break;
} }
if( foundName ){
System.out.println( searchName + " found!" ); }
else{
System.out.println( searchName + " not found." ); }
6 .4 .1 .2 La be le d br e a k st a t e m e n t
Bent uk labeled form dari st at em ent break akan m enghent ikan st at em ent luar, dim ana diident ifikasikan berupa label pada st at em ent break. Program ber ikut ini akan m encari nilai dalam array dua dim ensi. Terdapat dua pengulangan bersarang ( nest ed loop) . Ket ika sebuah nilai dit em ukan, labeled break akan m enghent ikan st at em ent yang diberi label searchLabel, dim ana label ini berada di luar.
int[][] numbers = {{1, 2, 3},
for( int i=0; i<numbers.length; i++ ){
for( int j=0; j<numbers[i].length; j++ ){ if( searchNum == numbers[i][j] ){
foundNum = true;
System.out.println( searchNum + " found!" ); }
else{
System.out.println( searchNum + " not found!" ); }
6 .4 .2 Con t in u e st a t e m e n t
St at em ent cont inue m em iliki dua bent uk: unlabeled dan labeled. Anda dapat m enggunakan st at em ent cont inue unt uk m elew at i pengulangan dari for, while, at au do-w hile loop yang sedang berj alan.
6 .4 .2 .1 Un la be le d con t in ue st a t e m e n t
Bent uk unlabeled akan m elew at i akhir st at em ent pada bagian yang dalam dan m em eriksa boolean ex pression yang m engkont rol loop, pada dasarnya akan m elewat i bagian pengulangan pada loop.
Berikut ini adalah cont oh dari penghit ungan angka dari “ Beah” dalam suat u array.
String names[] = {"Beah", "Bianca", "Lance", "Beah"}; int count = 0;
for( int i=0; i<names.length; i++ ){
if( !names[i].equals("Beah") ){
continue; //skip next statement }
count++; }
System.out.println("There are " + count + " Beahs in the list");
6 .4 .2 .2 La be le d con t in u e st a t e m e n t
Bent uk labeled akan m elanj ut kan sebuah st at em ent dengan m elewat i pengulangan yang sedang berj alan dari loop t erluar yang diberi label ( t anda) .
6 .4 .3 Re t u r n st a t e m e n t
St at em ent ret urn digunakan unt uk keluar dari sebuah fungsi ( m et hod) . St at em ent ret urn m em ilik i dua bent uk: m enggunakan sebuah nilai, dan t idak m em berikan nilai.
Unt uk m em berikan sebuah nilai, cukup berikan nilai ( at au ekspresi yang m enghasilkan sebuah nilai) sesudah ret urn. Cont ohnya,
return ++count;
at au
return "Hello";
Tipe dat a dari nilai yang diberikan harus sam a dengan t ipe dari fungsi yang dideklarasik an. Ket ika sebuah m et hod void dideklariskan, gunakan bent uk ret urn yang t idak m em berikan nilai. Cont ohnya,
return;
6 .5 La t ih a n
6 .5 .1 N ila i
Am bil t iga nilai uj ian dari user dan hit ung nilai rat a- r at a dari nilai t ersebut . Ber ikan out put rat a- rat a dari t iga uj ian. Berikan j uga sm iley face pada out put j ika nilai rat a- rat a lebih besar at au sam a dengan 60, selain it u beri out put : - ( .
1. Gunakan BufferedReader unt uk m endapat input dari user, dan Syst em .out unt uk out put hasilnya.
2. Gunakan JOpt ionPane unt uk m endapat input dari user dan out put hasilnya.
6 .5 .2 M e m ba ca Bila n ga n
Am bil sebuah angka sebagai input dari user , dan out put nya berupa kat a yang sesuai dengan angka. Angka yang dim asukkan ant ara 1- 10. Jika user m em asukkan nilai yang t idak sesuai berikan out put “ I nvalid num ber” .
1. Gunakan st at em ent if- else unt uk m enyelesaikan 2. Gunakan st at em ent swit ch unt uk m enyelesaikan
6 .5 .3 Ce t a k Se r a t u s Ka li
Buat sebuah program yang m encet ak nam a Anda selam a serat us kali. Buat t iga versi program ini m enggunakan w hile loop, do w hile dan for- loop.