Selasa, 04 Desember 2012

Algoritma Pemilihan (Selection)


            Review - Type Data Boolean
Adalah mengembalikan nilai True (Benar) atau False (Salah)

Dik x = 2

x > 3 à False
x < 3 à True

Table Kebenaran
X
Y
AND
OR
T
T
T
T
T
F
F
T
F
T
F
T
F
F
F
F

Dik x = true, y = false
Tentukan nilai (x and y) or x

(T and F) or T
F or T à T

  1. Ilustrasi PEMILIHAN
Misalnya akan dibuat sebuah program sebagai berikut

Keterangan : Jika yang dipilih oleh user adalah menu ‘1’, maka program akan menampilkan harga sebesar 7.000. Jika yang dipilih oleh user adalah menu ‘2’, maka program akan menampilkan harga sebesar 8.000. Perhatikan, apabila yang dipilih adalah menu yang lain, maka programpun akan menampilkan daftar yang berbeda pula.


Diperlukan suatu mekanisme pemilihan agar program mampu merespon dengan baik  inputan dari user.

Algoritma diatas apabila di terjemahkan dalam bahasa natural adalah sebagai berikut

Jika input menu adalah 1, maka tuliskan ‘Harga : 7.000’
Selain itu, Jika input menu adalah 2, maka tuliskan ‘Harga : 8.000’
Selain itu, Jika input menu adalah 3, maka tuliskan ‘Harga : 9.000’
Selain itu, Jika input menu adalah 4, maka tuliskan ‘Harga : 6.000’
Selain itu, tuliskan ‘Menu yang anda inputkan salah’

  1. Seleksi menggunakan IF Then Else

Format umum dari IF Then Else adalah sbb

If Kondisi_1 terpenuhi Then Statement_1
Else If Kondisi_2 terpenuhi Then Statement_2
Else If Kondisi_3 terpenuhi Then Statement_3
Else If Kondisi_4 terpenuhi Then Statement_4
Else (Selain dari Kondisi diatas)
Statement Else
            Apa Itu Kondisi?
Dalam contoh kasus diatas (program pemilihan menu) terdapat 5 buah Kondisi, yaitu :
            Kondisi apabila yang dipilih adalah menu 1
            Kondisi apabila yang dipilih adalah menu 2
            Kondisi apabila yang dipilih adalah menu 3
            Kondisi apabila yang dipilih adalah menu 4
            Dan 1 buah Kondisi Else
            Yaitu kondisi dimana menu yang dipilih selain menu 1,2,3 dan empat

Apa itu Statement ?
Dalam contoh kasus diatas (program pemilihan menu) terdapat sebuah statement untuk setiap kondisinya, yaitu :
            Kondisi  menu 1 à statemennya adalah : harga 7.000
            Kondisi  menu 2 à statemennya adalah : harga 8.000
            Kondisi  menu 3 à statemennya adalah : harga 9.000
            Kondisi  menu 4 à statemennya adalah : harga 6.000
            Kondisi Else à statementnya adalah : menu yang anda inputkan salah

            Dengan demikian contoh aplikasi diatas dapat dituliskan program utuhnya sbb

Program PilihMenu ;
Uses
 wincrt;
var
 Menu : char;

Begin
     clrscr;
     writeln('MENU :');
     writeln('1. Bakso');
     writeln('2. Mie Ayam');
     writeln('3. Siomay');
     writeln('4. Bubur Ayam');
     writeln;

     
     write('Pilih Menu : ') ;
     readln(Menu);








Kondisi 1
 





 
     If Menu = '1' then
Statement 1
 
     Begin
      write('Harga = 7.000');
Kondisi 2
 
     End
     Else  If Menu = '2' then
Statement 2
 
     Begin
      write('Harga = 8.000');
Kondisi 3
 
     End
     Else  If Menu = '3' then
Statement 3
 
     Begin
      write('Harga = 9.000');
Kondisi 4
 
     End
     Else  If Menu = '4' then
Statement 4
 
     Begin
      write('Harga = 6.000');
Kondisi Else
 
     End
     else
Statement Else
 
     Begin
      write('Menu yang anda inputkan salah');
     End;
End.
     




  1. Contoh Program - Operasi Matematis

program PemilihanOperasi;
uses
  wincrt;
var
  Bil1 : integer;
  Bil2 : integer;
  Hasil  : Real;
  Operasi : Char;
begin
write('Masukan Bilangan Pertama : ');
readln(Bil1);
write('Masukan Bilangan Kedua : ');
readln(Bil2);
writeln;
writeln('Operasi Matematika :');
Writeln('1. Penjumlahan');
Writeln('2. Pengurangan');
Writeln('3. Perkalian');
Writeln('4. Pembagian');
write('Operasi yang diinginkan : ');
readln(Operasi);

If Operasi = '1' Then
Begin
 Hasil := Bil1 + Bil2 ;
 write(Bil1, ' + ', Bil2, ' = ', Hasil:2:2);
End
Else If Operasi = '2' then
Begin
 Hasil := Bil1 - Bil2;
 write(Bil1, ' - ', Bil2, ' = ', Hasil:2:2);
End
Else If Operasi = '3' then
Begin
 Hasil := Bil1 * Bil2;
 write(Bil1, ' x ', Bil2, ' = ', Hasil:2:2);
End
Else If Operasi = '4' then
Begin
 Hasil := Bil1 / Bil2;
 write(Bil1, ' / ', Bil2, ' = ', Hasil:2:2);
End
Else
Begin
 write('Pilihan Anda Salah');
End;

end.






  1. Contoh Program Penentuan Nilai

program PenentuanNilai;
uses
  wincrt;
var
  Score : integer;
  Nilai : Char;
begin
write('Inputkan Score Ujian Anda : ');
readln(Score);

If (Score > 80) and (Score <= 100) Then
Begin
 Write('Nilai A') ;
End
Else If (Score > 70) and (Score <= 80) Then
Begin
 Write('Nilai B') ;
End
Else If (Score > 60) and (Score <= 70) Then
Begin
Write('Nilai C') ;
End
Else If (Score > 50) and (Score <= 60) Then
Begin
 Write('Nilai D') ;
End
Else If Score <= 50 Then
Begin
Write('Nilai E') ;
End
Else
Begin
 Write('Score diluar range yang diperbolehkan')
End;

end.


Keterangan Range Nilai :
A : 81 – 100
B : 71 – 80
C : 61 – 70
D : 51 – 60
E : 0 – 50








  1. Contoh Program Penentuan GENAP_GANJIL

Program
  GENAP_GANJIL;
Uses
  Wincrt;
Var
  Bilangan : integer;
Begin
  Repeat
  clrscr;

  write('Inputkan Sebuah Bilangan : ');
  readln(Bilangan);

  If Bilangan mod 2 = 0 then
  Begin
    write('GENAP');
  End
  Else
  Begin
    write('GANJIL');
  End;

  readln;
  until keypressed;

End.i

  1. Contoh Program Penentuan Tahun Kabisat

Program
  Penentu_Kabisat;
Uses
  Wincrt;
Var
  Tahun : integer;
Begin
  Repeat
  clrscr;

  write('Inputkan Tahun : ');
  readln(Tahun);

  If Tahun mod 4 = 0 then
  Begin
    write('KABISAT');
  End
  Else
  Begin
    write('BUKAN KABISAT');
  End;

  readln;
  until keypressed;
End.
  1. Seleksi Menggunakan Case Of

Format Umum Case Of

Case variable Of
      Kondisi_1 : Begin
                        Statemen_1;
                   End;
      Kondisi_2 : Begin
                        Statemen_2;
                   End;
      Kondisi_3 : Begin
                        Statemen_3;
                   End;
      .
      .
      Kondisi_N : Begin
                        Statemen_N;
                   End;
     
      Else
      Begin
       Statement Else ;
      End;
End;


Yang perlu diperhatikan adalah, variable yang digunakan dalam pernyataan kondisi, haruslah variable yang memiliki tingkat ordinalitas, integer dan char . Sedangkan type data String tidak dapat dipergunakan dalam Case Of


Contoh 1,  Mencari Jumlah Hari – Case Of

Program
  JumlahHari;
Uses
  Wincrt;
Var
  Tahun : Integer;
  DigitBulan : integer;
Begin
  Write('Inputkan Tahun = ');
  Readln(Tahun);
  Repeat
  Write('Inputkan Digit Bulan : ');
  Readln(DigitBulan);
  case DigitBulan Of
       1,3,5,7,8,10,12 : Begin
                           Write('Jumlah hari = 31 hari');
                         End;
       4,6,9,11        : Begin
                            Write('Jumlah hari = 30 hari');
                         End;
       2               : Begin
                              If Tahun mod 4 = 0 then
                              Begin
                                   Write('Jumlah hari = 29 hari')
                              End
                              Else
                              Begin
                                   Write('Jumlah hari = 28 hari')
                              End;
                         End;
       Else
       Begin
            Write('Inputan salah!!!');
       End;
  End;
  readln;
  until Keypressed;
End


Contoh 2,  Menentukan Nilai – Case Of


program PenentuanNilai;
uses
  wincrt;
var
  Score : integer;
  Nilai : Char;
begin
Repeat
write('Inputkan Score Ujian Anda : ');
readln(Score);

Case Score Of
     81..100 : Begin
                    Nilai := 'A' ;
                    Write('Nilainya = ', Nilai);
               End;
     71..80 : Begin
                    Nilai := 'B' ;
                    Write('Nilainya = ', Nilai);
              End;
     61..70 : Begin
                    Nilai := 'C';
                    Write('Nilainya = ', Nilai);
              End;
     51..60 : Begin
                    Nilai := 'D';
                    Write('Nilainya = ', Nilai);
              End;
     0..50  : Begin
                    Nilai := 'E' ;
                    Write('Nilainya = ', Nilai);
              End
     Else
     Begin
          Write('Nilai yang anda inputkan tidak terdapat dalam jangkauan') ;
     End;
End;
readln;
until keypressed;
end.


Contoh 3,  Menentukan Upah Mingguan – Case Of


Program
 UpahMingguan;
Uses
 wincrt;
Var
 Golongan : Char;
 UpahNormal, UpahLembur, UpahTotal : LongInt;
 Jam_kerja : LongInt;
Begin
 Repeat
 clrscr;
 write('Inputkan Golongan Anda : ');
 Readln(Golongan);
 write('Inputkan Jumlah Jam Kerja : ');
 Readln(Jam_Kerja) ;
 if jam_kerja >= 40 Then
 Begin
      Case Golongan of
           'A'  : Begin
                   UpahNormal := 40 * 5000; 
                  End;
           'B'  : Begin
                   UpahNormal := 40 * 6000;
                  End;
           'C'  : Begin
                   UpahNormal := 40 * 7000;
                  End;
      End;
 End
 else
 Begin
       Case Golongan of
           'A'  : Begin
                   UpahNormal := Jam_Kerja * 5000;
                  End;
           'B'  : Begin
                   UpahNormal := Jam_Kerja * 6000;
                  End;
           'C'  : Begin
                   UpahNormal := Jam_Kerja * 7000;
                  End;
      End;
 End;

 If Jam_Kerja > 40 then
 Begin
  Case Golongan of
    'A' : Begin
            UpahLembur := (Jam_Kerja - 40) * 7000;
          End;
    'B' : Begin
            UpahLembur := (Jam_Kerja - 40) * 8000;
          End;
    'C' : Begin
            UpahLembur := (Jam_Kerja - 40) * 9000;
          End;
  End;
 End;

 UpahTotal := UpahNormal + UpahLembur;

 Writeln('Upah Normal = ', UpahNormal);
 Writeln('Upah Lembur = ', UpahLembur);
 Writeln('Upah Total = ', UpahTotal);

 readln;
 until keypressed;
End.

1 komentar:

Posting Komentar

 
;