jika
Dalam bentuknya yang paling sederhana, kondisi if dalam Scheme mengevaluasi pengujian dan, berdasarkan hasilnya, mengeksekusi salah satu dari dua kemungkinan blok kode. Bentuk paling sederhana terlihat seperti ini:
(if test-is-true
do-this)- Jika
testbernilai true (#t), blok kode pada konsekuensinya akan dieksekusi. Blok tersebut dapat mengembalikan nilai atau melakukan tindakan lain, seperti menetapkan variabel atau mencetak keluaran.
Contoh
(if (< 0 1)
(lumi-message "True!"))- Dalam hal ini,
testadalah(< 0 1)(memeriksa apakah 0 kurang dari 1). - Karena pengujian bernilai benar (
#t), blok kode(lumi-message "True!")dijalankan, yang mencetak"True!".
Menambahkan Cabang Alternatif: if-else
Saat menggunakan kondisional if dengan blok kode alternatif (kasus else), strukturnya terlihat seperti ini:
(if test
do-this
else-do-this)- Jika
testbernilai true (#t), blok kode konsekuen akan dieksekusi. - Jika
testbernilai false (#f), blok kode alternatif akan dijalankan.
(if test
consequent
alternative)Cara Kerjanya
Uji Ekspresi:
- Ekspresi
testdievaluasi terlebih dahulu.
- Ekspresi
Hasil Berdasarkan Tes:
- Jika
testbernilai benar (#t), blok kode konsekuensi akan dieksekusi. - Jika
testbernilai false (#f), blok kode alternatif akan dijalankan.
- Jika
Baik blok kode consequent dan alternative dapat melakukan operasi Scheme apa pun yang valid, termasuk mengembalikan nilai, memodifikasi variabel, atau menjalankan prosedur.
Contoh
Contoh 1: Mengembalikan Nilai
(if (< 0 1)
1
0)- Di sini,
testadalah(< 0 1)(memeriksa apakah 0 kurang dari 1). - Karena pengujian bernilai benar (
#t), blok konsekuen (1) dijalankan dan nilainya dikembalikan.
Hasil: 1
Contoh 2: Mengevaluasi Blok awal
Jika Anda perlu melakukan beberapa tindakan ketika kondisinya benar atau salah, Anda dapat menggunakan begin atau let untuk mengelompokkannya.
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))- Dalam contoh ini,
testadalah(= 0 1)(memeriksa apakah 0 sama dengan 1). - Karena pengujian bernilai false (
#f), blok alternatif dijalankan:- Pertama, mencetak
"False condition met, calculating...". - Kemudian menghitung
(* 3 4)dan mengembalikan12.
- Pertama, mencetak
Hasil: Mencetak “Kondisi salah terpenuhi, menghitung…” dan mengembalikan 12.
Contoh 3: Mengevaluasi Pernyataan let
Menggunakan let memungkinkan kita mendeklarasikan variabel cakupan lokal di dalam blok kode.
(if (= 1 1)
(let (x -1)
(lumi-message "True condition met, calculating...")
(* x 10))
(let (y 4)
(lumi-message "This won't run")
(* 3 y)))- Dalam contoh ini,
testadalah(= 1 1)(memeriksa apakah 1 sama dengan 1). - Karena pengujian bernilai true (
#t), blok consequent dijalankan:- Pertama, mencetak
"True condition met, calculating...". - Kemudian menghitung
(* -1 10)dan mengembalikan-10.
- Pertama, mencetak
Hasil: Mencetak “Kondisi sebenarnya terpenuhi, menghitung…” dan mengembalikan -10.
Ringkasan
Kondisional
ifadalah alat yang ampuh dalam Scheme untuk mengevaluasi pengujian dan mengeksekusi blok kode yang sesuai.Dapat menangani ekspresi sederhana dan blok kode kompleks yang mengembalikan nilai, mengubah variabel, atau melakukan efek samping.
Ingat: Jika tidak ada blok
elseyang eksplisit,ifhanya mengevaluasi dan mengeksekusi konsekuensi jika pengujiannya benar. Jika tidak, ia akan mengevaluasi dan mengeksekusi alternatif.