Pendahuluan


Suatu algoritma atau program sebenarnya hanya  terdiri dari tiga buah struktur dasar saja, yaitu :
Struktur Urut atau Runtunan (Sequence)
Struktur Keputusan atau Percabangan  (Decision)
Struktur Perulangan (Repetation/Looping)

Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma/program. Jadi, sebuah algoritma/program dapat dibangun dari tiga buah struktur dasar diatas.
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dikerjakan.
Struktur Keputusan , merupakan sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Tiap–tiap instruksi akan diseleksi oleh kondisi, apabila instruksi memenuhi kondisi yang diminta, maka instruksi akan dijalankan.
Sedangkan Perulangan adalah instruksi yang dapat mengulang sederetan Instruksi secara berulang-ulang sesuai persyaratan yang ditetapkan.
Pada Bab ini hanya akan dibahas tentang runtunan dan Keputusan saja.


Tujuan Instruksional Khusus


Mahasiswa dapat menerapkan  runtunan dan sintaks-sintaks pemilihan dalam menyelesaikan persoalan 


Runtunan


Ada beberapa hal yang perl;u diperhatikan dalam struktur Runtunan, yakni :
  •  Pada struktur Runtunan instruksi dikerjakan secara berurutan baris perbaris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan.
  • Tiap instruksi dikerjakan satu per satu.
  • Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang.
  • Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagai tertulis di dalam teks algoritma.
  •  Akhir dari instruksi terakhir merupakan akhir algoritma

Dibawah ini merupakan contoh dari algoritma dan program runtunan, dimana setiap langkah dikerjakan secara berurutan satu persatu, dimulai dari langkah pertama, kemudian langkah kedua dan seterusnya hingga berakhir langkahnya,


Algoritma secara umum

A ß  5
 B ß  4
 T ß A + B
 WRITE(T)


Algoritma dalam bahasa C

#include<stdio.h>
void main()
{
int A,B,T;
  A = 5;
  B = 4;
  T = A + B;
  printf(“%i”, T);
}  



Pada contoh Algoritma secara umum diatas terdiri dari 4 langkah, mula-mula dikerjakan langkah pertama nilai 5 disimpan di variabel A, kemudian setelah selesai dikerjakan langkah kedua yakni nilai 4 disimpan di variabel B setelah selesai dikerjakan langkah ke tiga yakni nilai variabel A ditambah dengan nilai variabel B disimpan ke dalam variabel T dan terakhir nilai yang ada dalam variabel T akan dicetak.  

Contoh algoritma runtunan yang lain, seperti ditunjukan dalam soal kasus berikut ini.



Susun program dalam bahasa C berikut Flowchartnya untuk menginput dua buah bilangan dan mencetak TOTALnya



#include <stdio.h>
void main()
{
   int A, B, T;
   scanf(“%i”, &A);
   scanf(“%i”, &B);
   T = A + B;
   printf(“%i”, T);
}


Seleksi atau Percabangan



Dalam kehidupan nyata, seringkali dihadapkan pada beberapa pilihan. Pada saat menghadapi pilihan, satu atau beberapa kondisi menjadi  bahan pertimbangan dalam memutuskan untuk melakukan aksi tertentu. Contoh:
Jika cuaca mendung, maka saya membawa payung.
Pada contoh tersebut, ‘cuaca mendung’ merupakan kondisi yang menjadi bahan pertimbangan untuk melakukan aksi ‘saya membawa payung’. Jika kondisi ‘cuaca mendung’ terpenuhi (bernilai benar), maka aksi ‘saya membawa payung’ dilakukan
Sebuah program komputer juga dapat mengenali situasi pemilihan. Pernyataan dalam contoh di atas dapat dituliskan dalam struktur pemilihan sebagai berikut:
IF cuaca mendung THEN
   saya membawa payung
END IF
Untuk selengkapnya penggunaan bentuk pemilihan akan dijelaskan berikut ini.

Bentuk Umum IF dan Variasinya    

   Bentuk IF yang juga dikenal dengan istilah IF Statement, memiliki bentuk umum sebagai berikut :

   If kondisi then
      Aksi-1
   [else
      Aksi-2]
   End if

   Kondisi adalah ekspresi boolean yang bernilai benar atau salah, bisa berupa:
       Sebuah nilai boolean: true atau false
       Sebuah variabel boolean
       Sebuah pembandingan data
       Dua pembandingan data atau lebih yang digabung
   Aksi berupa satu statement beberapa statement, dimana tiap statement
       dapat berupa:
           Statement pengisian nilai seperti a ß 5
           Statement input data
           Statement output data
           Statement pemilihan (If Statement atau Case Statement)
           Statement pengulangan (For, Repeat atau While Statement)
   [else Aksi-2], tanda [ ] menyatakan opsional (boleh ada/tidak ada),
       dimana kalau tidak ada, berarti setelah Aksi-1 langsung selesai.
   Dari bentuk umum yang telah dijelaskan, maka variasi bentuk IF ini banyak dan tidak berhingga. Di antaranya yang penting dapat disebutkan berikut:
   - if tanpa else (satu pilihan, mengerjakan atau tidak)
   - if dengan else (dua pilihan)
   - if bersarang dimana dalam if ada if lagi, karena Statement dapat berupa
     satu perintah pemilihan. Salah satu bentuk if bersarang adalah if untuk
     memilih salah satu dari banyak pilihan.

  Contoh-contoh variasi:
   1. Satu pilihan (tanpa ELSE) 

|If kondisi then
      |Statement
|End if


Pada variasi ini, apabila kondisi bernilai benar maka Statement dikerjakan dan apabila kondisi bernilai salah maka Statement tidak dikerjakan.

   2. Dua pilihan (dengan ELSE)


|If kondisi then
  |   Statement-1
  |else
  |   Statement-2
  |End if


Pada variasi ini, apabila kondisi bernilai benar maka Statement-1 yang dikerjakan dan apabila kondisi bernilai salah maka Statement-2 yang dikerjakan (tidak pernah 2 statement ini dikerjakan semua).

   3. Tiga pilihan atau lebih, misal Statement-1dan Statement-2 pada contoh-2
       dikembangkan menjadi bentuk if lagi sehingga jadi 4 pilihan:



|If kondisi-1 then
  |   |If kondisi-2 then
  |   |  Statement-a
  |   |Else
  |   |  Statement-b
  |   |End if
  |else
  |   |if kondisi-3 then
  |   |   Statement-c
  |   |Else
  |   |   Statement-d
  |   |End if
  |End if




Pada variasi ini, apabila kondisi-1 bernilai benar maka dilanjutkan memeriksa kondisi-2. Apabila kondisi-2 bernilai benar maka Statement-a yang dikerjakan dan apabila kondisi-2 bernilai salah maka Statement-b yang dikerjakan. Sedangkan apabila kondisi-1 salah maka dilanjutkan memeriksa kondisi-3. Apabila kondisi-3 bernilai benar maka Statement-c yang dikerjakan dan apabila kondisi-3 bernilai salah maka Statement-d yang dikerjakan. (dari 4 statement yang ada hanya salah satu yang dikerjakan.

   4. Tiga pilihan atau lebih, dengan mengembangkan Statement setelah ELSE

|If kondisi-1 then
  |   Statement-1
  |else
  |   |if kondisi-2 then
  |   |   Statement-2
  |   |Else
  |   |   |If kondisi-3 then
  |   |   |   Statement-3
  |   |   |Else
  |   |   |   Statement-4
  |   |   |End if
  |   |End if
  |End if



5. Penyederhanaan penulisan contoh-4 

      (posisi statement tidak semakin ke kanan, END IF hanya satu kali)

   |If kondisi-1 then
   |     Statement-1
   |Else if kondisi-2 then
   |     Statement-2
   |Else if kondisi-3 then
   |     Statement-3
   |Else
   |     Statement-4
   |End if




Pada variasi 4 dan 5 ini, apabila kondisi-1 bernilai benar maka Statement-I yang dikerjakan dan selesai, tetapi apabila kondisi-1 bernilai salah maka dilanjutkan memeriksa kondisi-2. Apabila kondisi-2 bernilai benar maka Statement-2 yang dikerjakan dan selesai, tetapi apabila kondisi-2 bernilai salah maka dilanjutkan memeriksa kondisi-3. Apabila kondisi-3 bernilai benar maka Statement-3 yang dikerjakan, tetapi apabila kondisi-3 bernilai salah maka Statement-4 yang dikerjakan. (dari 4 statement yang ada hanya salah satu yang dikerjakan. Penggunaan variasi 5 lebih baik, karena tulisan tidak makin ke kanan walaupun pilihan semakin banyak.


   6. Bentuk bebas (jumlahnya tak terhingga), salah satunya
       |If kondisi-1 then
       |   |Statement-a
       |   |If kondisi-2 then
       |   |   |If kondisi-3 then
       |   |   |   Statement-b
       |   |   |Else
       |   |   |   |If kondisi-4 then
       |   |   |   |   Statement-c
       |   |   |   |Else
       |   |   |   |   Statement-d
       |   |   |   |End if
       |   |   |End if
       |   |Else
       |   |  Statement-e
       |   |End if
       |   |Statement-f
       |Else
       |   |Statement-g
       |   |if kondisi-5 then
       |   |   Statement-h
       |   |End if
       |   |if kondisi-6 then
       |   |   Statement-i
       |   |End if
       |   |Statement-j
       |End if

Terapan bentuk-bentuk IF

   Sebuah masalah terkadang dapat diselesaikan dengan berbagai cara, seperti penggunaan “if tanpa else” dan “if dengan else”. Sebagai contoh dapat dilihat pada kasus berikut:

Kasus 5.1 : Menentukan apakah bilangan yang diinput positip atau negatip
Solusi : ada beberapa cara berikut 

Solusi-1
   |Input(bil)
   |If (bil>=0) then
   |   Output(‘positip’)
   |Else
   |   Output(‘negatip’)
   |End if




Solusi-2
   |Input(bil)
   |If (bil<0) then
   |   Output(‘negatip’)
   |Else
   |   Output(‘positip’)
   |End if



Solusi-3

   |Input(bil)

   |Ket ß ‘positip’
   |If (bil<0) then
   |   Ket ß ‘negatip’
   |End if
   |Output(Ket)


Solusi-4

   |Input(bil)

   |Ket ß ‘negatip’
   |If (bil>=0) then
   |   Ket ß ‘positip
   |End if
   |Output(Ket)


Solusi-5

   |Input(bil)

   |If (bil>=0) then
   |   Output(‘positip’)
   |End if
   |If (bil<0) then
   |   Output(‘negatip’)
   |End if


Solusi-6

   |Input(bil)

   |If (bil<0) then
   |   Output(‘negatip’)
   |End if
   |If (bil>=0) then
   |   Output(‘positip’)
   |End if


Solusi-7

   |Input(bil)

   |positip ß bil>=0
   |If (positip=true) then
   |   Output(‘positip’)
   |else
   |   Output(‘negatip’)
   |End if


Solusi-8

   |Input(bil)

   |positip ß bil>=0
   |If (positip) then
   |   Output(‘positip’)
   |else
   |   Output(‘negatip’)
   |End if


Ulasan dari beberapa solusi:

Solusi-1 dan Solusi-2 adalah solusi yang sama, digunakan kondisi berkebalikan sehingga posisi perintah tampilan ditukar.

Solusi-3 dan Solusi-4 juga sama, keduanya menggunakan “if tanpa else”, dengan cara variabel Ket diinisialisasi (diberi nilai awal) dengan salah satu kemungkinan hasilnya, kemudian diubah bila memenuhi kondisi.
Solusi-5 dan Solusi-6 juga sama, pada solusi ini dibuat 2 buah “if tanpa else” secara terpisah. Dengan cara ini, berarti akan dilakukan pemeriksaan kondisi 2 kali (padahal sebenarnya cukup satu kali).
Solusi-7 dan Solusi-8 keduanya menggunakan variabel bertipe boolean bernama positip untuk mencatat hasil pembandingan bil>=0. Penulisan         “if (positip=true)” sama saja dengan menuliskan “if (positip)” cara yang terakhir lebih cepat waktu eksekusinya.

Berikut beberapa kasus yang lain:
Kasus  :  Terbesar dari 3 bilangan          

Solusi-1

   |Input(A,B,C)  

   |If (A>B) then
   |   |If (A>C) then
   |   |  Output(‘terbesar =’,A)
   |   |Else
   |   |  Output(‘terbesar =’,C)
   |   |End if
   |else
   |   |if (B>C) then
   |   |  Output(‘terbesar =’,B)
   |   |Else
   |   |  Output(‘terbesar =’,C)
   |   |End if
   |End if


Solusi-2

   |Input(A,B,C)  

   |If (A<B) then
   |   |If (B<C) then
   |   |  Output(‘terbesar =’,C)
   |   |Else
   |   |  Output(‘terbesar =’,B)
   |   |End if
   |else
   |   |if (A<C) then
   |   |  Output(‘terbesar =’,C)
   |   |Else
   |   |  Output(‘terbesar =’,A)
   |   |End if
   |End if



Solusi-3

   |Input(A,B,C)  

   |If (A>B and A>C) then
   |   |Output(‘terbesar =’,A)
   |Else
   |   |if (B>A and B>C) then
   |   |   Output(‘terbesar =’,B)
   |   |Else
   |   |   if (C>A and C>B) then
   |   |       Output(‘terbesar =’,C)
   |   |   |End if
   |   |End if
   |End if


Solusi-4
   |Input(A,B,C)  
   |If (A>B and A>C) then
   |   |Output(‘terbesar =’,A)
   |Else if (B>A and B>C) then
   |   |Output(‘terbesar =’,B)
   |Else if (C>A and C>B) then
   |   |Output(‘terbesar =’,C)
   |End if


Solusi-5
   |Input(A,B,C)
   |Max ßA  
   |If (B>Max) then
   |   |Max ßB
   |End if
   |If (C>Max) then
   |   |Max ßC
   |End if
   |Output(‘terbesar = ‘,Max)



Solusi-6

   |Input(A,B,C)

   |If (A>B) then
   |   |Max ßA
   |else
   |   |Max ßB
   |End if
   |If (C>Max) then
   |   |Max ßC
   |End if
   |Output(‘terbesar = ‘,Max)



Ulasan dari beberapa solusi:

Solusi-1,Solusi-2 dan Solusi-3 mengguanakan 3 buah kondisi dan setiap hasil yang didapat akan melalui pemeriksaan 2 buah kodisi.

Solusi-4 menggunakan kondisi yang terdiri dari 2 pembandingan, dengan rata-rata melakukan pemeriksaan 2 kondisi (4 pembandingan)
Solusi-5 dan Solusi-6 digunakan 2 buah if yang terpisah, dimana hasil sementara nilai terbesar dicatat di tempat baru (Max), cara ini lebih praktis terutama kalau dikembangkan untuk mencari terbesar dari banyak bilangan.

Kasus 5.3 :  Pembayaran air minum PDAM
PDAM menerapkan pembayaran air minum perumahan dengan cara perhitungan sebagai berikut :
- Tarif per m3 untuk 10 m3 pertama (1-10) adalah 2.000
- Tarif per m3 untuk 10 m3 kedua (11-20) adalah 3.000
- Tarif per m3 untuk 10 m3 ketiga (21-30) adalah 4.000
- Tarif per m3 untuk 10 m3 selanjutnya (31 ke atas) adalah 5.000
- Pemakaian air dihitung minimal 10 m3 (kurang dari 10 m3 dianggap 10 m3)
- Biaya administrasi bulanan sebesar 10.000
Bagaimana membuat algoritma untuk menghitung biaya tersebut?
Contoh kasus
Penggunaan air 5 m3 dengan biaya 10 x 2.000 + 10.000 = 30.000
Penggunaan air 15 m3 dengan biaya 10 x 2.000 + 5 x 3.000 + 10.000 = 45.000
Penggunaan air 75 m3 dengan biaya 10 x 2.000 + 10 x 3.000 + 10 x 4.000 + 45 x 5.000 +10.000 = 325.000

Solusi    :
Pemakaian air dibagi menjadi 4 area pemakaian (misal area a,b,c,d), baru dihitung total biaya



Solusi-1

   |Input(pakai)

   |If (pakai>30) then
   |   |aß 10
   |   |bß 10
   |   |cß 10
   |   |dß pakai - 30 
   |Else If (pakai>20) then
   |   |aß 10
   |   |bß 10
   |   |cß pakai - 20
   |   |dß 0
   |Else If (pakai>10) then
   |   |aß 10
   |   |bß pakai - 10
   |   |cß 0
   |   |dß 0
   |Else
   |   |aß 10
   |   |bß 0
   |   |cß 0
   |   |dß 0
   |End if
   |biayaß a * 2000 + b * 3000 +
   |           c * 4000 + d * 5000 +
   |           10000
   |Output(‘biaya =’,biaya)



Solusi-2

   |Input(pakai)

   |aß10
   |bß 0
   |cß 0
   |dß
   |If (pakai>30) then
   |   |bß 10
   |   |cß 10
   |   |dß pakai - 30 
   |Else If (pakai>20) then
   |   |bß 10
   |   |cß pakai - 20
   |Else If (pakai>10) then
   |   |bß pakai - 10
   |End if
   |biayaß a * 2000 + b * 3000 +
   |           c * 4000 + d * 5000 +
   |           10000
   |Output(‘biaya =’,biaya)



Ulasan solusi :
Pada solusi-1, tiap aksi dari if , terdiri dari 4 statement mengisi a,b,c dan d. Bentuk solusi ini disederhanakan pada solusi-2 dengan cara memberikan nilai awal sebelum masuk if.

Kasus-5.4 :  Indeks Nilai Kuliah
Indeks nilai sebuah matakuliah didapat dengan cara menghitung nilai akhir berdasarkan prosentase komponen-komponennya kemudian ditentukan indeks nilainya. Misal digunakan ketentuan sebagai berikut:

- Nilai Akhir dihitung dari 30% UTS, 40%UAS, 20% Tugas dan 10% kehadiran
- Indeks Nilai ditentukan berdasarkan Nilai Akhir (NA),
  Bila NA >= 85 maka Indeksnya A
  Bila 85 > NA >= 70 maka Indeksnya B
  Bila 70 > NA >= 55 maka Indeksnya C
  Bila 55 > NA >= 40 maka Indeksnya D
  Bila NA < 40 maka Indeksnya E

Bagaimana membuat algoritma untuk menentukan Indeks Nilai tersebut?


Solusi-1
   |Input(UTS,UAS,Tugas,Abs)
   |NAS ß 0.3*UTS + 0.4*UAS +
   |            0.2*Tugas + 0.1*ABS
   |If (NAS>=85) then
   |   |Indeks ß ‘A’
   |Else If (NAS>=70 and NAS<85)
   |   |then
   |   |Indeks ß ‘B’
   |Else If (NAS>=55 and NAS<70)
   |   |then
   |   |Indeks ß ‘C’
   |Else If (NAS>=40 and NAS<55)
   |   |then
   |   |Indeks ß ‘D’
   |Else
   |   |Indeks ß ‘E’
   |End if
   |Output(‘Indeks Nilai =’,Indeks)


Solusi-2
   |Input(UTS,UAS,Tugas,Abs)
   |NAS ß 0.3*UTS + 0.4*UAS +
   |            0.2*Tugas + 0.1*ABS
   |If (NAS>=85) then
   |   |Indeks ß ‘A’
   |Else If (NAS>=70) then
   |   |Indeks ß ‘B’
   |Else If (NAS>=55) then
   |   |Indeks ß ‘C’
   |Else If (NAS>=40) then
   |   |Indeks ß ‘D’
   |Else
   |   |Indeks ß ‘E’
   |End if
   |Output(‘Indeks Nilai =’,Indeks)


Ulasan solusi :
Pada solusi-2 lebih baik dari solusi-1 karena pemeriksaan kondisi yang serupa tidak dilakukan dua kali. Pada solusi-1, pembandingan NAS dengan 85 dilakukan dua kali, yang pertama NAS>=85 dan yang kedua NAS<85 adalah pembandingan yang serupa.


 Bentuk Umum CASE dan variasinya

   Sebenarnya semua bentuk pemilihan dapat ditulis dengan IF, namun penulisan dengan IF untuk banyak pilihan terasa kurang praktis. Bentuk CASE adalah cara lain penulisan bentuk pemilihan yang lebih sederhana, namun bentuk ini hanya dapat menggantikan IF apabila memenuhi syarat:
    - kondisi berupa pembandingan kesamaan (dengan tanda “=” )
    - nilai yang dibandingkan bertipe ordinal (integer,char dan boolean)
Bentuk CASE yang juga dikenal dengan istilah CASE Statement, memiliki bentuk umum sebagai berikut :

   Case ekspresi
      Nilai-1: Aksi-1
      Nilai-2: Aksi-2
      ...
      Nilai-N: Aksi-N
      [Otherwise : Aksi-X]
   End Case

  Ekspresi bertipe ordinal, berupa:
       Sebuah nilai ordinal: boolean, integer, char (bukan string atau real)
       Sebuah variabel bertipe ordinal
       Operasi data (nilai atau variabel) yang menghasilkan sebuah nilai ordinal
   Nilai harus berupa nilai ordinal (tidak boleh variabel)
   Aksi berupa satu statement beberapa statement, dimana tiap statement dapat berupa:
           Statement pengisian nilai seperti a ß 5
           Statement input data
           Statement output data
           Statement pemilihan (If Statement atau Case Statement)
           Statement pengulangan (For, Repeat atau While Statement)
   [otherwise: Aksi-X], tanda [ ] menyatakan opsional (boleh ada/tidak ada),
       dimana kalau tidak ada, berarti setelah Aksi-1 langsung selesai. Fungsi Otherwise sama dengan ELSE pada IF Statement
   Dari bentuk umum yang telah dijelaskan, maka variasi bentuk CASE ini banyak dan tidak berhingga. Di antaranya yang penting dapat disebutkan berikut:
   - Case tanpa otherwise
   - Case dengan otherwise
   - Case dengan Aksi yang sama untuk beberapa Nilai
   - Case bersarang dimana dalam case ada case lagi, atau Statement lain
   Contoh-contoh variasi:
   1. Case tanpa otherwise
   Case ekspresi
      Nilai-1: Statement-1
      Nilai-2: Statement -2
      ...
      Nilai-N: Statement -N
   End Case
   2. Case dengan otherwise
   Case ekspresi
      Nilai-1: Statement -1
      Nilai-2: Statement -2
      ...
      Nilai-N: Statement -N
      [Otherwise : Aksi-X]
   End Case

3. Case dengan Aksi yang sama untuk beberapa Nilai
   Case ekspresi
      Nilai-1,Nilai-2,Nilai-3: Statement -1
      Nilai-4,Nilai-5,Nilai-6: Statement -2
      Nilai-7..Nilai-10:        Statement -3
      ...
      Nilai-N:                   Statement -N
      [Otherwise :             Statement -X]
   End Case
   4. Case bersarang, contohnya :
   Case ekspresi-1
      Nilai-1: Case ekspresi-2
                     Nilai-a: Statement -1
                     Nilai-b: Statement -2
                 End Case
      Nilai-2: if kondisi then
                    Statement-3
                 Else
                    Statement-4
                 End if
      Nilai-3:
      ...
      Nilai-N: Statement -N
   End Case

Terapan bentuk-bentuk CASE


Kasus  :  Menentukan nama hari dari nomor hari yang diinput
Dinput nomor hari, ditampilkan nama harinya, bagaimana algoritmanya?
Solusi dengan IF dan CASE

Solusi-If
   |Input(NoHari)
   |If (NoHari=1) then
   |   |NmHari ß ‘Senin’
   |Else If (NoHari=2) then
   |   |NmHari ß ‘Selasa’
   |Else If (NoHari=3) then
   |   |NmHari ß ‘Rabu’
   |Else If (NoHari=4) then
   |   |NmHari ß ‘Kamis’
   |Else If (NoHari=5) then
   |   |NmHari ß ‘Jumat’
   |Else If (NoHari=6) then
   |   |NmHari ß ‘Sabtu’
   |Else If (NoHari=7) then
   |   |NmHari ß ‘Minggu’
   |End if
   |Output(NmHari)



Solusi-Case

   |Input(NoHari)

   |Case NoHari

   |   |1: NmHari ß ‘Senin’
   |   |2: NmHari ß ‘Selasa’
   |   |3: NmHari ß ‘Rabu’
   |   |4: NmHari ß ‘Kamis’
   |   |5: NmHari ß ‘Jumat’
   |   |6: NmHari ß ‘Sabtu’
   |   |7: NmHari ß ‘Minggu’
   |End Case
   |Output(NmHari)



Pada solusi-2 terlihat lebih sederhana dan mudah dibaca dibanding dengan solusi-1.



Kasus :  Merubah angka menjadi kalimat
Dinput bilangan/angka (angka dibatasi 1-99), ditampilkan kata-kata/kalimat dari bilangan tersebut, bagaimana algoritmanya?
Solusi

Solusi-Case
   |Input(bil)
   |pul ß bil div 10
   |sat ß bil mod 10
   |Kalimat ß ‘’
   |Case sat
   |   |1: Kalimat ß ‘Satu’
   |   |2: Kalimat ß ‘Dua’
   |   |3: Kalimat ß ‘Tiga’
   |   |4: Kalimat ß ‘Empat’
   |   |5: Kalimat ß ‘Lima’
   |   |6: Kalimat ß ‘Enam’
   |   |7: Kalimat ß ‘Tujuh’
   |   |8: Kalimat ß ‘Delapan’
   |   |9: Kalimat ß ‘Sembilan’
   |End Case
   |Case pul
   |   |1: |Case sat
   |   |    |   0:            Kalimat ß‘Sepuluh’
   |   |    |   1:            Kalimat ß‘Sebelas’
   |   |    |  Otherwise: Kalimat ß Kalimat + ‘ belas’
   |   |    |End Case
   |   |2: |Kalimat ß ‘Dua Puluh’ + Kalimat
   |   |3: Kalimat ß ‘Tiga Puluh’ + Kalimat
   |   |4: Kalimat ß ‘Empat Puluh’ + Kalimat
   |   |5: Kalimat ß ‘Lima Puluh’ + Kalimat
   |   |6: Kalimat ß ‘Enam Puluh’ + Kalimat
   |   |7: Kalimat ß ‘Tujuh Puluh’ + Kalimat
   |   |8: Kalimat ß ‘Delapan Puluh’ + Kalimat
   |   |9: Kalimat ß ‘Sembilan Puluh’ + Kalimat
   |End Case
   |Output(Kalimat)      



Pada solusi di atas, satuan diproses dengan case pertama, selanjutnya puluhan diproses CASE kedua. Pada puluhan=1 (angka belasan) dibagi lagi manjadi 3 kemungkinan, karena bunyi kalimatnya ada 3 macam,

Konversi Struktur IF dan CASE ke Bahasa C



Berikut ini diberikan pedoman konversi dari algoritma ke dalam bahasa C untuk struktur IF dan CASE:

Algoritma

If kondisi then

   Aksi
End if


Bahasa C

if (kondisi) {

   Aksi;
}



If kondisi then

   Aksi1

Else
   Aksi2
End if

Bahasa C

If (kondisi) {

   Aksi1;

}
else {
   Aksi2;
}

Algoritma
If kondisi1 then

   Aksi1

Else if kondisi2

   Aksi2
Else
   Aksi3
End if


Bahasa C

if (kondisi1) {

   Aksi1;

}
else if (kondisi2){
   Aksi2;
}
else {
   Aksi3;
}


Algoritma
Case ekspresi

   Nilai1: Aksi1

   Nilai2: Aksi2

   Nilai3: Aksi3
End case


Bahasa C

switch (ekspresi) {

   case Nilai1: Aksi1;
                   Break;
   case Nilai2: Aksi2;
                    Break;
   case Nilai3: Aksi3;
   }


Algoritma

Case ekspresi

   Nilai1: Aksi1
   Nilai2: Aksi2
   Nilai3: Aksi3
   Otherwise: Aksi4
End case





Bahasa C
   switch (ekspresi) {
   case Nilai1: Aksi1;
                    Break;
   case Nilai2: Aksi2;
                    Break;
   case Nilai3: Aksi3;
                    Break;
   default: Aksi4;
}


Algoritma

Case ekspresi

   Nilai-1,Nilai-2,Nilai-3: Aksi1

   Nilai-4,Nilai-5:           Aksi2
   Nilai-6..Nilai-8:          Aksi3
   Otherwise:               Aksi4
End Case



Daftar Pustaka


1.     Algorithm Data Structures and Problem Solving with C++. 1997. Addison Wesley.
2.     Moh. Sjukani, Algoritma dan Struktur Data. Mitra Wacana Media
3.     Rinaldi Munir, Algoritma dan Pemrograman. Informatika Bandumg


Video Pembelajaran



Video Pembelajaran  Runtunan dan Percabangan

Kuis atau Latihan