Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 4.96 KB

7-kontrol-program.md

File metadata and controls

112 lines (81 loc) · 4.96 KB

Kontrol Program

  • if
  • boolean logic
  • let

"Flow Control" atau kontrol program adalah istilah pemrograman untuk menentukan instruksi apa yang akan diberikan kepada komputer saat program bertemu pada kondisi tertentu. Kita membuat keputusan seperti ini setiap waktu. Jika hari ini hujan, maka kita akan membawa payung; selain hujan bawa topi. Jika jarak ke kantor lebih dari 2 km, maka naik angkot; selain itu jalan kaki.

Perangkat lunak juga penuh dengan pengambilan keputusan seperti itu. Jika data dari user valid, maka beri akses; selain itu kembalikan mereka ke halaman home. Pola yang umum di sini menggunakan boolean true atau false untuk mengecek apakah kondisi tertentu terjadi.

If

Di Clojure, operator yang paling dasar untuk melakukan pengecekan ini adalah dengan menggunakan if. Di bawah ini adalah contoh skenario:

(if (valid? data)
	(save! data)
	(error "Your data is invalid"))

Bentuk umum dari operator if adalah:

(if kondisi-yang-akan-dicek
	ekspresi-yang-dijalankan-jika-true
  ekspresi-yang-dijalankan-jika-false)

Saat mengecek kebenaran sebuah ekspresi, Clojure mempertimbangkan nil dan false menjadi salah dan selain itu sebagai benar. Ini beberapa contohnya:

(if (> 3 1)
	"3 lebih besar dari 1"
	"3 lebih kecil dari 1")
;=> "3 lebih besar dari 1"

(if (> 1 3)
	"1 lebih besar dari 3"
	"1 lebih kecil dari 3")
;=> "1 lebih kecil dari 3"

(if nil
	"nil berarti benar"
	"nil berarti salah")
;=> "nil berarti salah"

(if (get {:name "Asep"} :city)
	"Ini benar karena nil terpenuhi"
	"Ini salah karena kondisi nil selalu dianggap salah")
;=> "Ini salah karena kondisi nil selalu dianggap salah"

Boolean logic dengan menggunakan and, or, dan not

Pernyataan yang menggunakan if tidak terbatas hanya untuk mengecek satu hal. Anda dapat mengecek banyak kondisi menggunakan boolean logic. Boolean logic digunakan untuk mengombinasikan dan mengubah hasil dari fungsi predikat menggunakan and, or, dan not.

Jika Anda belum pernah melihat konsep ini sebelumnya dalam pemrograman, ingatlah bahwa ini mengikuti pola pikir yang umum. Apakah ini dan itu benar? Hanya jika keduanya benar. Apakah ini atau itu yang benar? Hanya jika salah satu atau keduanya yang benar. Apakah ini tidak benar? Ya, jika ini salah.

Lihat tabel kebenaran di bawah ini:

x y (and x y) (or x y) (not x) (not y)
false false false false true true
true false false true false true
true true true true false false
false true false true true false

and, or, dan not bekerja seperti fungsi-fungsi lainnya (mereka tepatnya bukan fungsi). Mereka adalah prefix notation, seperti yang kita lihat pada aritmetik.

and, or, dan not dapat dikombinasikan. Kode di bawah ini bisa jadi sulit dibaca. Contohnya:

(defn tahun-kabisat?
	"Setiap 4 tahun, kecuali tahun yang bisa dibagi 100, 
	tapi benar untuk tahun yang bisa dibagi oleh 400."
	[tahun]
	(and (zero? (mod tahun 4))
       (or (zero? (mod tahun 400))
	         (not (zero? (mod tahun 100))))))

let

Saat Anda membuat fungsi, Anda mungkin ingin memberikan nama kepada nilai supaya nilai tersebut bisa digunakan kembali, atau supaya kode Anda ingin lebih mudah dibaca. Di dalam fungsi, bagaimanapun juga Anda tidak boleh menggunakan def, seperti yang Anda lakukan di luar fungsi.

Anda seharusnya menggunakan bentuk spesial, yaitu let. Mari kita lihat contohnya:

(defn pemasukan-setelah-menikah
	"Menyatukan pemasukan Anda bersama pasangan yang Anda cintai."
	[asset-anda asset-pasangan]
	(let [pemasukan-anda (:pemasukan asset-anda)
          pemasukan-pasangan (:pemasukan asset-pasangan)
          total-pemasukan (+ pemasukan-anda pemasukan-pasangan)]
		(assoc {} :pemasukan-bersama total-pemasukan)))

; eksekusi fungsi di atas
(pemasukan-setelah-menikah {:pemasukan 5000000 :asset ["rumah"]} 
                           {:pemasukan 4500000 :asset ["mobil" "motor"]})
;=> {:pemasukan-bersama 9500000}

Mungkin fungsi di atas terlihat rumit. Mari kita bahas pelan-pelan.

Pertama, Anda membuat fungsi bernama pemasukan-setelah-menikah, lalu diikuti dengan teks dokumentasi fungsi, dan 2 buah argumen yang masing-masing menerima sebuah map.

Kemudian mari kita lihat let. let mengambil keyword :pemasukan dari map asset-anda dan hasilnya kita beri symbol pemasukan-anda. Begitu juga dengan pemasukan-pasangan. Lalu total-pemasukan adalah symbol dari operasi penjumlahan antara pemasukan-anda dan pemasukan-pasangan. Itu lah isi dari vector let.

Setelah Anda memberi symbol (nama) ke masing-masing ekspresi pemrograman, maka Anda bisa menggunakan symbol tadi di dalam badan fungsi.

Cukup sekian saja materi dasar tentang Clojure, karena dengan modal pengetahuan dasar ini Anda sudah bisa membuat aplikasi menggunakan Clojure.