Skip to content Skip to sidebar Skip to footer

Belajar Java Mengontrol Loop Dengan Sentinel

Belajar Java Mengontrol Loop Dengan Sentinel

Belajar Java Mengontrol Loop Dengan Sentinel - Perulangan atau loop dalam program dapat dikontrol dengan menggunakan sentinel. Sentinel ini disebut juga dengan signal value atau dummy value atau flag value, dengan tujuan untuk memberitahu bahwa penggunaan sentinel tersebut adalah "akhir dari penginputan data".

Cara kerja sentinel ini adalah, user akan memasukkan data sesuai dengan kebutuhannya, dan setelah data tersebut semuanya diinput, kemudian user akan memasukkan nilai sentinel untuk mengindikasikan bahwa tidak ada lagi data yang dimasukkan.

Pengontrolan loop dengan sentinel disebut juga dengan loop yang tidak terhingga, karena jumlah perulangan tidak diketahui sebelum loop dieksekusi.

Tips Mengambil Nilai Yang Digunakan Sebagai Sentinel Pengontrol Loop


Untuk memilih nilai yang akan digunakan, ada dua hal yang harus diperhatikan :

  • Menggunakan nilai yang bukan termasuk data normal, misalnya untuk memasukkan umur, kita dapat menggunakan nilai sentinel -1, karena tidak mungkin umur seseorang adalah -1.
  • Akan lebih baik juga bila mengingatkan user dalam setiap perulangan, mengenai berapa nilai sentinel. Contoh : ("Masukkan tanggal lahir atau -1 untuk mengakhiri");

Banyak program memiliki 3 fase yaitu:

  • Inisialisasi variabel
  • Memproses data yang di input dan mengatur variabel-variabel program dengan tepat. 
  • Penghentian, yaitu perhitungan dan menampilkan hasil akhir.

Contoh di bawah ini adalah program untuk menghitung berat rata-rata siswa, dengan menggunakan loop dan juga digunakan sentinel, nilai sentinel adalah 0.

Pseudocode algoritmanya adalah :

  • Inisialisasi variabel total ke 0
  • Inisialisasi variabel counter ke 0

  • Membuat prompt untuk user menginput data berat badan
  • Input berat badan pertama (mungkin juga nilai sentinel diinput)

  • while user belum memasukkan nilai sentinel
  • Tambahkan berat badan tersebut ke total
  • Tambahkan 1 untuk counter
  • Prompt user untuk memasukkan berat badan selanjutnya
  • Input berat badan selanjutnya (mungkin jua nilai sentinel diinput)

  • If counter tidak sama dengan 0
  • Set nilai rata-rata adalah total dibagi dengan counter
  • Tampilkan nilai rata-rata
  • else
  • tampilkan "Tidak ada berat badan yang dimasukkan!"

class BeratRataRataSiswa2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.Scanner;
public class BeratRataRataSiswa2 {
 
 private String user;
 
 //konstruktor
 public BeratRataRataSiswa2(String nama){
  user = nama;
 }
 
 //set method
 public void setUser( String nama )
 {
 user = nama; // menyimpan nama user
 }
 
 //get method
 public String getUser()
 {
 return user;//mengembalikan nama user
 }
 
 // Menampilkan pesan selamat datang kepada user
 public void tampilkanPesan(){
  
  //Pernyataan ini memanggil method getUser untuk
  //mendapatkan nama dari pemilik user.
  System.out.printf( "Selamat datang \n%s!\n",
    getUser());

 } 
 
 //Method untuk menetapkan rata-rata berat badan siswa
 public void menetapkanRataRataBerat(){
  
  //Membuat objek Scanner untuk memperoleh input dari keyboard
  Scanner input = new Scanner( System.in );
  
  int total;//jumlah total berat badan yang dimasukkan oleh user
  int counterBeratBadan;//counter untuk berat badan yang dimasukkan
  int beratBadan;//angka berat badan yang dimasukkan oleh user
  double rataRata;//rata-rata berat badan
  
  //inisialisasi
  total = 0;//inisialisasi total
  counterBeratBadan = 0;//Menginisialisasi loop counter
  
  // prompt untuk input berat badan
  System.out.print( "Masukkan berat badan atau masukkan 0 untuk berhenti: " );
  beratBadan = input.nextInt();
  
  //loop sampai user memasukkan sentinel, nilai entinel adalah 0
  while(beratBadan != 0)
  {
   total = total + beratBadan;//menambahkan berat badan yang diinput ke total
   counterBeratBadan = counterBeratBadan + 1; //increment counter dengan 1
   
   // prompt untuk menginput berat badan
   System.out.print( "Masukkan berat badan atau masukkan 0 untuk berhenti: " );
   beratBadan = input.nextInt();
   
  }//Akhir while loop
  
  //Bila user memasukkan minimal satu berat badan
  if(counterBeratBadan != 0){
   
   //menghitung berat rata-rata dari pemilik Buku Angkatan 
   //Dilakukan juga casting int ke double
   rataRata = (double)total / counterBeratBadan;
   
   System.out.printf("\nTotal dari %d berat badan siswa "
     + "adalah: %d Kg\n", counterBeratBadan,total);
   System.out.printf("Berat rata-rata adalah %.2f Kg\n", rataRata );
  }
  
  else {
   System.out.print("Tidak ada berat badan yang dimasukkan!");
  }
 }
} 

class DemoBeratRataRataSiswa2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class DemoBeratRataRataSiswa2 {
 
public static void main( String args[] ){
  
 BeratRataRataSiswa2 rataRata = new BeratRataRataSiswa2("User");
  
  rataRata.tampilkanPesan();
  rataRata.menetapkanRataRataBerat();
  
 }

}

Contoh Output 1 :
Selamat datang 
User!
Masukkan berat badan atau masukkan 0 untuk berhenti: 67
Masukkan berat badan atau masukkan 0 untuk berhenti: 85
Masukkan berat badan atau masukkan 0 untuk berhenti: 69
Masukkan berat badan atau masukkan 0 untuk berhenti: 75
Masukkan berat badan atau masukkan 0 untuk berhenti: 74
Masukkan berat badan atau masukkan 0 untuk berhenti: 59
Masukkan berat badan atau masukkan 0 untuk berhenti: 60
Masukkan berat badan atau masukkan 0 untuk berhenti: 82
Masukkan berat badan atau masukkan 0 untuk berhenti: 77
Masukkan berat badan atau masukkan 0 untuk berhenti: 63
Masukkan berat badan atau masukkan 0 untuk berhenti: 65
Masukkan berat badan atau masukkan 0 untuk berhenti: 0

Total dari 11 berat badan siswa adalah: 776 Kg
Berat rata-rata adalah 70.55 Kg

Contoh output 2, bila user langsung memasukkan 0 :
Selamat datang 
User!
Masukkan berat badan atau masukkan 0 untuk berhenti: 0
Tidak ada berat badan yang dimasukkan!

Demikianlah pembahasan mengenai Belajar Java Mengontrol Loop Dengan Sentinel, diharapkan dapat memudahkan anda dalam mempelajari Java.

Mohon di share bila dirasa bermanfaat, thanks.

Post a Comment for "Belajar Java Mengontrol Loop Dengan Sentinel"