Melayani Dengan Nurani

IA

19 Agustus 2020

Menerapkan Struktur Kontrol Percabangan Dalam Bahasa Pemrograman dan Membuat Kode Programnya

IF dan Case

IF- Percabangan

1. Pengertian Algoritma Percabangan

Suatu pernyataan atau perintah yang dilakukan bila memenuhi suatu kondisi atau persyaratan tertentu. Algoritma ini kita sebut dengan algoritma seleksi kondisi atau juga percabangan.
Contoh. Misalnya kita ingin menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. Algoritmanya dapat kita jabarkan

  1. Mulai
  2. Masukkan satu bilangan (X)
  3. jika X habis dibagi dua maka lanjut ke 4. Jika tidak lanjut ke 5
  4. tulis ‘X bilangan genap’. Lanjut ke 6.
  5. tulis ‘X bilangan ganjil’
  6. Selesai

Perhatikan bahwa ada dua kemungkinan perintah yang akan dikerjakan setelah perintah ke-3 dikerjakan. Jika X habis dibagi dua maka selanjutnya perintah ke-4 yang dikerjakan, kemudian melompat ke 6 (perintah 5 tidak dikerjakan). Sebaliknya jika X tidak habis dibagi dua perintah selanjutnya melompat ke-5 (perintah 4 tidak dikerjakan) dan kemudian berakhir pada perintah ke-6.

 2.      Ekspresi Boolean

 Ada dua komponen utama dalam ekspresi percabangan yaitu kondisi dan pernyataan. Kondisi adalah syarat dilakukannya sebuah (atau sekelompok) pernyataan, sedangkan pernyataan dalam konteks ini adalah perintah yang berkaitan dengan suatu kondisi. Contoh umum pernyataan kondisi-pernyataan

            1.  Jika hari hujan, maka saya tidak jadi keluar rumah

                       kondisi                        pernyataan

          

            2.  Jika nilai ujian lebih besar atau sama dengan 60, maka ujian dinyatakan lulus

                                     kondisi 1                                                 pernyataan 1

                 Jika nilai ujian kurang dari 60, maka ujian dinyatakan gagal

                                     kondisi 2                         pernyataan 2

 

Sebagaimana contoh sebelumnya dapat dilihat bahwa adakalanya suatu perintah dilakukan jika kondisi yang mempersyaratkannya telah jelas nilai benar salahnya. Dalam hal pemrograman kondisi tersebut harus bisa dinyatakan dalam suatu ekspresi boolean.

Ekspresi boolean adalah ekspresi yang hasil ekspresinya bernilai boolean (true atau false).

Ekspresi boolean dapat diperoleh dengan menggunakan dua jenis operasi :


1.      Operasi Boolean.

 

Operasi boolean adalah operasi yang menggunakan operator boolean seperti and, or, not, xor.

 Contoh operasi relasional

 1. z1 ß x and y

2. z2 ß a=2 or b=10

3. z3 ß not(x)

4. z4 ß p+2=4 xor q=0

 

2.      Operasi Relasional (Operasi Perbandingan)

 

Operasi relasional adalah operasi yang membandingkan dua buah operan dengan menggunakan operator perbandingan (ingat, operator perbandingan : =, <>, <, ≤, >, ≥).

Contoh operasi relasional

             1. z1 ß x > y

2. z2 ß a <> 10

3. z3 ß x + y = 17

4. z4 ß p div q < r

5. z5 ß p mod 2 = 0

 

Hasil dari operasi perbandingan memiliki dua kemungkinan, yaitu true (benar) atau false (salah). Oleh karena itu tipe hasil (z1, z2, z3, z4, z5) dari setiap operasi di atas adalah boolean.

 

3.      Algoritma Teks dan Flowchart Percabangan

 

Ada dua tipe algoritma percabangan yang akan kita bahas berikut ini yaitu

 

-          Satu kondisi (if-then) : artinya hanya ada satu kondisi yang menjadi syarat untuk melakukan satu atau satu blok (sekelompok) pernyataan. Bentuk umum algoritma teks standar percabangan dengan satu kondisi :

 

if <kondisi> then

pernyataan

Jika <kondisi> bernilai benar maka pernyataan dikerjakan, sedangkan jika tidak, maka pernyataan tidak dikerjakan dan proses langsung keluar dari percabangan (begin).

Contoh.

if A>B then

write (A)

 Ekspresi di atas menunjukkan bahwa perintah menulis / menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar. Jika yang terjadi adalah sebaliknya, tidak ada pernyataan yang dilakukan atau proses langsung keluar dari percabangan (endif). Secara flowchart ekspresi itu dapat ditulis seperti berikut. 


Perhatikan bahwa pada kotak belah ketupat memiliki dua cabang arus data, yang satu untuk kondisi bernilai benar (y, artinya ya), sedang yang lain untuk kondisi bernilai salah (t, artinya tidak). Jika kondisi bernilai benar (y) maka perintah yang dikerjakan adalah write(A). Jika kondisi salah (t) maka arus data langsung menuju ke bawah tanpa mengerjakan pernyataan apapun. 

-          Dua kondisi (if-then-else) : artinya ada dua kondisi yang menjadi syarat untuk dikerjakannya dua jenis pernyataan. Bentuk umum percabangan dengan dua kondisi :

if <kondisi> then

pernyataan1

     else

pernyataan2

 Jika <kondisi> bernilai benar maka pernyataan1 dikerjakan. Sedangkan jika tidak (<kondisi> bernilai salah), maka pernyataan yang dikerjakan adalah pernyataan2. Berbeda dengan percabangan satu kondisi, pada percabangan dua kondisi ada dua pernyataan untuk dua keadaan kondisi, yaitu untuk <kondisi> yang bernilai benar dan <kondisi> yang bernilai salah. Contoh algoritma percabangan dua kondisi :

             if A>B then

                
                write (A)

         else

                 write (B)

Ekspresi di atas sedikit berbeda dengan sebelumnya. Perintah menulis/menampilkan A dikerjakan hanya jika kondisi A>B bernilai benar, sedangkan jika yang terjadi adalah sebaliknya maka pernyataan yang dilakukan adalah menulis B. Secara flowchart pernyataan di atas dapat ditulis sebagai berikut.














Berikut ini adalah beberapa contoh lainnya.

 a. If x > 0 then

        ket ß ‘bilangan positif’   

b.   if m = n

        i ß m*n

write(i)

 c. if bil>=0 then

          ket ß (‘bilangan positif’)

        else

          ket ß (‘bilangan negatif’)

    

d.   if m = n then

          i ß m*n

          j ß m-n  

    else

          i ß m/n  

          j ß m+n

write(i,j)

 

Latihan : Cobalah anda buat flowchart dari algoritma pada poin a-d di atas!

4.      Contoh soal

 1.      Buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil. Input algoritma adalah bilangan yang akan ditentukan jenisnya.

algoritma bilangan_genap

deklarasi

    bil : integer

    ket : string

deskripsi

    read (bil)

    ketß’ganjil’

if bil mod 2 = 0 then

            ketß‘genap’

       write (bil)

 

 Flow Chart Algoritma bilangan_genap


Penjelasan

Mula-mula inputkan variabel (bil), misalnya 3. Kemudian (ket) diberi nilai ‘ganjil’. Kemudian karena kondisi (bil mod 2 = 0) bernilai salah, maka (ket) tidak berubah dan tetap bernilai ‘ganjil’, sehingga ketika perintah write(ket), output yang muncul adalah ‘ganjil’. Untuk jelasnya perhatikan tabel penyimpanan data berikut.

  

Perintah

bil

ket

Output

read (bil)

3

 

 

ketß’ganjil’

 

‘ganjil’

 

if bil mod 2 = 0 then

            ketß‘genap’

 

 

 

write (bil)

 

 

‘ganjil’


Contoh lainnya
input variabel (bil), misalnya 6. Kemudian (ket) diberi nilai ‘ganjil’. Kemudian karena kondisi (bil mod 2 = 0) bernilai benar, maka (ket)  berubah menjadi bernilai ‘genap’, sehingga ketika perintah write(ket), output yang muncul adalah ‘genap’. Untuk jelasnya perhatikan tabel penyimpanan data berikut.

Perintah

bil

ket

Output

read (bil)

6

 

 

ketß’ganjil’

 

‘ganjil’

 

if bil mod 2 = 0 then

            ketß‘genap’

 

 
'genap'

 

write (bil)

 

 

‘genap’


2.      Buatlah algoritma menentukan gaji total pegawai. Diketahui pegawai dengan masa kerja lebih dari 3 tahun mendapat tunjangan sebesar 20% gaji pokok sedang yang kurang dari itu mendapat tunjangan 10%.
Input program adalah masa kerja dan gaji pokok.

 

algoritma gaji_pegawai 

deklarasi

    tjg, mk, gapok, gatot : real

deskripsi

    read (mk, gapok)

    if mk>3 then

          tjg ß 0.2*gapok

         else

          tjg ß 0.1*gapok

     gatot ß gapok+tjg

       write(‘Gaji total ’,gatot)

 Penjelasan

 Mula-mula dimasukkan data (mk) dan (gapok). Misalnya, masing-masing diberi nilai 2 dan 1000. Karena (mk>3) bernilai salah, maka perintah yang dikerjakan adalah (tjgß0.1*gapok). Kemudian gapok dan tjg dijumlahkan yang hasilnya disimpan sebagai gatot. Dengan demikian output yang keluar adalah 1100.

Perhatikan tabel penyimpanan data berikut


Perintah

mk

gapok

tjg

gatot

Output

read (mk, gapok)

2

1000

 

 

 

if mk>3 then

            tjg ß 0.2*gapok

  else

            tjg ß 0.1*gapok

endif

 

 

100

 

 

gatot ß gapok+tjg

2

1000

100

1100

 

write(gatot)

 

 

 

 

1100

 

Keluaran algoritma : 1100

  Flowchart Algoritma gaji_pegawai


5.      Percabangan Tersarang ( If di dalam If )

 Percabangan tersarang adalah percabangan di dalam percabangan. Banyak sekali bentuknya, namun salah satu contohnya adalah sebagai berikut.

If  <kondisi1> then

     if <kondisi2> then

          Pernyataan1

         else

          Pernyataan2

  else

     If <kondisi3>

          Pernyataan3

    else

          Pernyataan4

Misalnya, buatlah algoritma untuk menentukan apakah suatu bilangan merupakan bilangan kelipatan 2 saja, atau kelipatan 5 saja, atau kelipatan 2 dan 5, atau bukan kelipatan 2 dan 5.
Misalkan Bilangan Integer sebarang yang menjadi  input algoritmanya.




                                                                                            Algoritma Kelipatan2Keliptan5

 Deklarasi

     Bil : integer

     Ket  : string

Deskripsi

     read (bil)

     if bil mod 2 = 0 then

if bil mod 5 = 0 then

                Ket ß ‘ Kelipatan 2 dan Kelipatan 5’

    else

                Ket ß ‘ Kelipatan 2 tapi Bukan Kelipatan 5’

    else       

          if bil mod 5 = 0 then

Ket ß ‘Bukan Kelipatan 2 tapi Kelipatan 5’

    else

          Ket ß ‘Bukan Kelipatan 2 atau 5’)

     Write(Ket) 

6.      Menggunakan Operator Boolean

Kita dapat menyederhanakan persoalan percabangan dengan menggunanakan operator boolean (and, or, not, dan xor) untuk ekspresi boolean yang lebih dari satu. Misalnya, sebuah univeritas memberlakukan yudisium cumlaude untuk mahasiswa yang lulus dengan IPK lebih besar sama dengan 3.5 dan masa kuliah tidak lebih dari 4 tahun. Bagaimana algoritma penentuan yudisiumnya? (Input : IPK dan masa kuliah)

 Algoritma yudisium1

 Deklarasi

     IPK, MK   : real

     Ket      : string

 Deskripsi

     Read (IPK,MK)

     If (IPK>=3.5) and (MK<=4) then

        Ket ß ‘cum laude’

  else

   Ket ß ‘tidak cumlaude’

write (Ket)



Penjelasan



Mula mula IPK dan MK, misalnya, kita beri nilai 3.6 dan 4. Karena kondisi (IPK>=3.5) and (MK<=4) bernilai benar maka perintah berikutnya adalah Ket ß ‘cum laude’. Sehingga ketika perintah Write (Ket) menghasilkan output ‘cum laude’. Cobalah menganalisa soal ini dengan memberikan input yang lain.

Penggunaan operator logika sangat membantu untuk menyederhanakan algoritma. Jika tidak menggunakan operator logika maka algoritmanya dapat ditulis sebagai berikut.


                                                                                                                                                                                                                                                                                                                                                                                                                                            

Algoritma yudisium2

Deklarasi

     IPK, MK   : real

     Ket      : string

 Deskripsi

     read (IPK,MK)

     if IPK>=3.5 then

          if MK<=4 then

              Ket ß ‘cum laude’

              else

               Ket ß ‘tidak cumlaude’

    else

          Ket ß ‘Tidak cumlaude’

     write (Ket)

Di sini terlihat algoritmanya menjadi sedikit ruwet. Kerumitan bertambah karena kita harus membuat percabangan dalam percabangan (percabangan tersarang). Selain itu penulisan Ket =  ’Tidak cumlaude’ harus ditulis dua kali agar tujuan algoritma dapat dicapai. Dengan demikian penggunaan operator logika dalam hal ini jelas menyederhanakan algoritma di atas.

 

7.      Percabangan Tiga Kondisi Atau Lebih

 Percabangan dengan tiga kondisi atau lebih adalah bentuk pengembangan dari dua bentuk percabangan, secara umum ekspresi percabangannya dapat kita tuliskan sebagai berikut.

            If <kondisi1> then

           Pernyataan1

    else if <kondisi2> then

           Pernyataan2

           ...

    else if <kondisi(n-1)> then

Pernyataan(n)

    else

           Pernyataan(n)

 

Mula-mula <kondisi1> dicek nilai kebenarannya. Jika benar, maka dikerjakan pernyataan1. Jika salah, maka dicek nilai kebenaran <kondisi2>. Jika <kondisi2> benar, maka dikerjakan pernyataan2. Jika tidak algoritma akan mengecek ke kondisi berikutnya dengan cara yang sama dengan yang sebelumnya. Terakhir, jika semua kondisi bernilai salah, maka pernyataan yang dikerjakan adalah Pernyataan(n+1). Bentuk flowchartnya dapat dilihat di bawah ini.


                     Pada algoritma di atas proses kondisi 1 akan dikerjakan jika <kondisi1> bernilai benar, jika tidak pemeriksan dilanjutkan ke <kondisi2>. Jika <kondisi2> bernilai benar maka pernyataan2 dikerjakan. Jika tidak, pemeriksaan dilanjutkan pada kondisi-kondisi berikutnya. Pemeriksaan ini terus terhadap semua kondisi yang ada. Jika tidak ada kondisi yang benar maka pernyataan yang dikerjakan adalah pernyataan(n+1).


 Contoh soal

 Sebuah toko buku memberikan diskon pembelian buku dengan jumlah tertentu. Pembeli yang membeli 100 atau lebih mendapat diskon 40%, sedangkan pembelian sebanyak 50 hingga 99 diberi diskon 25%. Buat algoritma menghitung total transaksi dengan input harga satuan buku dan jumlah pembelian.

 

Algoritma pembelian

 Deklarasi

     Hrg,Disk,Ttr : real

     Jum : integer

 Deskripsi

     Read(hrg,jum)

     if jum >= 100 then

          Diskß0.4

         else if jum>=50 then

          Diskß0.25

         else

          Diskß0

     Ttrßhrg*(1-disk)

     Write(Ttr)

 

Latihan : Buatlah tabel penyimpanan data kemudian tentukan keluaran algoritma jika diberi input tertentu.

 

8.      Soal

 

Tuliskan algoritma penyelesaian dari soal-soal berikut

 

  1. Seseorang dinyatakan lulus dalam kuliah Algoritma jika nilai akhirnya lebih besar atau sama dengan 60. Buat algoritma menentukan kelulusan seseorang dalam kuliah algoritma. Input : nilai akhir. Output : keterangan.

 

  1. Sama dengan no 1, tetapi nilai akhirnya diperoleh dari nilai UTS (30%), UAS (40%) dan Tugas (30%). Input : nilai UTS, UAS dan Tugas. Output : nilai akhir dan keterangan.

 

  1. Buatlah algoritma untuk menentukan apakah suatu tahun merupakan tahun kabisat atau bukan. Input : tahun. Output : keterangan (‘kabisat ‘ atau ‘bukan kabisat’)

 

  1. Buatlah algoritma menentukan bilangan terbesar dari tiga buah bilangan. Input : tiga bilangan (A, B dan C). Ouput : bilangan terbesar dari ketiga input tersebut.

 

  1. Indeks nilai kuliah algoritma ditentukan oleh nilai akhir :

 

NA>=75          : A

60<=NA<75   : B

45<=NA<60   : C

30<=NA<45   : D

NA<30            : E

           

Nilai akhir diperoleh dari rumus : NA = 0.2*TU+0.3*UTS+0.5*UAS

Buat algoritma menentukan indeks nilai algoritma. Input : TU (tugas), UTS, UAS. Output : indeks.         

 

  1. Toko A mempunyai kebijakan dalam penjualan buku tulis. Jika pelanggan membeli lebih dari 100 eksemplar mendapat diskon 20%, sedangkan yang membeli antara 20 hingga 100 mendapat dikon 10%. Lainnya tidak mendapat diskon. Input : harga satuan buku, jumlah buku yang dibeli. Output : total harga

 

  1. Buat algoritma untuk menentukan apakah seseorang boleh ikut pemilu. Syarat ikut pemilu adalah telah menikah atau sudah berusia 17 tahun atau lebih. Input : usia dan status. Output : keterangan (‘ikut pemilu’ atau ‘tidak ikut pemilu’.)

 

  1. Buat algoritma menentukan apakah suatu akar suatu persamaan kuadrat bersifat real atau imaginer. Input : komponen persamaan kuadrat a, b, c. Output : keterangan (‘real’ atau ‘imaginer’).

 

  1. Buat algoritma menentukan akar-akar real suatu persamaan kuadrat yang akarnya bersifat real. Jika akarnya bersifat imaginer tampilkan pesan ‘akar imaginer’. Input : komponen a, b, c dari persamaan kuadrat yang dimaksud. Output : akar-akar persamaan kuadrat tersebut.

 

  1. Buatlah algoritma untuk menentukan apakah tiga buah titik dapat membentuk segitiga sama sisi, atau sama kaki, atau bukan keduanya. Input : koordinat dari ketiga titik yang dimaksud. Output : keterangan (‘segitiga sama sisi’, segitiga sama kaki’, ‘segitiga biasa’).

 

  1. Sebuah penyewaan kendaraan memberlakukan tarif sebagai berikut. Lama penyewaan minimal untuk dua jam dengan tarif 1000. Untuk jam berikutnya sampai dengan 12 jam tarif perjamnya adalah 400. Sedangkan untuk jam berikutnya sampai dengan 24 jam maka tarif perjamnya menjadi 300. Buatlah algoritma yang menentukan berapa yang harus dibayar konsumen untuk lama peminjaman tertentu. Input : lama peminjaman. Output : total pembayaran.








Reactions:

0 comments:

Posting Komentar

Nuhun sudah komentar