Showing posts with label REBOL. Show all posts
Showing posts with label REBOL. Show all posts

Sunday 17 November 2013

My notes: REBOL language programming

Situs youtube:
http://musiclessonz.com/rebol_video_links.html

Rebol 3:
http://www.rebol.com/r3/docs/

Kemampuan Rebol
Rebol mampu untuk:
1. GUI
2. Baca dan tulis file
3. Bekerja dengan database
4. Memproses text
5. Transfer data accross network


Komponen Rebol:
1. Block
Singkatnya: Placeholder multi-value
Contoh-contoh blok:
1. x: [1 2 3] ; x adalah block
2. belanja: ["gula" "kopi" "susu"] ; belanja adalah block
3. prosedur1: [alert "Hello" request-text/title: "Siapa namamu?"]

1 adalah blok berisi angka sebagai datanya, 2 adalah blok berisi string sebagai datanya, 3 adalah blok yang berisi instruksi dalam perkenalan: mengucapkan salam (halo) dan bertanya siapa namamu.

Perbandingan: di PYTHON block disebut LIST. Block tidak bisa diisi instruksi. Berikut contohnya:

>>> a = [print "halo", print "siapa namamu?"]
SyntaxError: invalid syntax


Sekarang kamu sudah mengerti cara membuat block dalam REBOL. Selanjutnya, fungsi apa saja yang bisa diberlakukan pada block:

1. Fungsi sortir (sort x)
Fungsi sortir mengurutkan elemen-elemen dari blok berdasarkan alfabet huruf pertama.
Contoh: a = sort x
Setara python: x.sort

2. Fungsi Sequence
Kalimat kunci yang bisa kamu pakai: "item yang mana sequence berapa"
Contoh fungsi sequence dengan keyword first, second and third:
>> print first x
1
>> print second x
2
>> print third x
3

Contoh fungsi sequence dengan slash:
>> belanja/1
== "gula"
>> belanja/2
== "kopi"
>> belanja/3
== "susu"

3. Fungsi Find
Rebol mengembalikan (Return) item yg kamu cari dan semua item-item lainnya setelah/dibelakang item yang kamu cari itu.  Jadi Rebol tidak hanya mengembalikan item yang kamu cari tetapi juga item-item dibelakangnya. Memang REBOL alaminya seperti ini jadi jangan bingung.

Contoh:
>> belanja: ["gula" "kopi" "susu"]
>> find belanja "gula"
== ["gula" "kopi" "susu"] ; Rebol return bukan hanya "gula" tetapi juga "kopi" dan "susu".
>> find belanja "kopi"
== ["kopi" "susu"]
>> find belanja "susu"
== ["susu"]

 4. Fungsi Write
Kita akan menyalin isi dari blok ke dalam file text dan meletakkannya di dalam drive komputer.
Contoh:
>> belanja: ["kopi" "gula" "susu"]
>> write %/c/belanja.txt belanja
Sekarang, buka drive C kamu dan lihat file belanja.txt sudah ada disana. Isi blok belanja telah tersalin ke dalam file belanja.txt itu dengan tidak ada spasi dan tidak tanda kutip.

Dari keterangan diatas, kamu selanjutnya tahu bagaimana menyikapi hasil dari save-an syntax write diatas. Bagaimana jika kamu ingin menyimpan berspasi atau berkoma (seperti file CSV (comma seperated)?

5. Fungsi length
Menghitung jumlah item/elemen yang ada didalam suatu block.
Contoh:
>> belanja: ["gula" "kopi" "susu"]
== ["gula" "kopi" "susu"]
>> length? belanja
== 3

Contoh didalam PYTHON:
 >>> belanja = ['gula', 'kopi', 'susu']
>>> len(belanja)
3

2. Fungsi-fungsi
1. Do dan does
2. Func
3. Alert
4. join = concatenate strings
example:



3.  Conditional
3.1 If
If bisa digunakan untuk pemetaan 2 atau lebih variabel.

Misalnya kamu mempunyai usaha katring, kamu membutuhkan jadwal, hari dan jenis makanan. Jadwal terdiri dari perkawinan hari-hari yang ada dalam satu minggu dengan jenis makanan yang kamu mampu buat.

variabel hari memiliki nilai-nilai:
hari = {senin, selasa, rabu. kamis, jumat, sabtu, minggu}
jenis makanan = {nasi goreng, nasi kuning, nasi pecal, nasi rawon, nasi merah, nasi soto, nasi rames}

Jenis makanan (nasi goreng, ..., nasi rames) terpilih berdasarkan kondisi hari (senin, selasa, ..., minggu).

Jika hari senin, jenis masakan nasi goreng.
Jika hari selasa, jenis masakan nasi kuning.
Jika hari rabu, jenis masakan nasi pecal
Jika hari kamis, jenis masakan nasi liwet
Jika hari jumat, jenis masakan nasi rawon
Jika hari sabtu, jenis masakan nasi soto
Jika hari minggu, jenis masakan nasi rames.

Berikut salah satu contoh conditional-nya:
if [hari == senin] [print nasi goreng]
if [hari == selasa] [print nasi kuning]
if [hari == rabu] [print nasi pecal]
if [hari == kamis] [print nasi liwet]
if [hari == jumat] [print nasi rawon]
if [hari == sabtu] [print nasi soto]
if [hari == minggu][print nasi rames]

atau dengan tabel berikut hasil pemetaan antara hari dan jenis makanan:

Hari Jenis makanan
Senin nasi goreng
Selasa nasi kuning
Rabu nasi pecal
Kamis nasi liwet
Jumat nasi rawon
Sabtu nasi soto
Minggu nasi rames

3.2 Either
Either hanya digunakan untuk pemetaan variabel-variabel yang maksimum memiliki 2 buah nilai.

Variabel sendiri bisa diartikan sesuatu yang mempunyai lebih dari satu nilai.
 
Jadi kita cari contoh kasus dengan 2 variasi output. Sekeping mata uang logam memiliki 2 buah variasi, depan dan belakang.
Jika sisi mata uang yang keluar depan, tim yang kick-off duluan adalah Indonesia.
Jika sisi mata uang yang keluar belakang, tim yang kick-off duluan adalah Brazil.

Berikut pentabelan kondisi-kondisi diatas:
Sisi Mata Uang Tim yang kick-off
Depan Indonesia
Belakang Brazil

Berikut source code kondisi diatas menggunakan either:

rebol[ ]

sisi: request-text/title "tentukan sisi mata uang: "
either sisi == "depan"
[print "Tim yang kick off duluan adalah Indonesia" halt]
[print "Tim yang kick off duluan adalah Brazil" halt]


Berikut source code kondisi diatas munggunakan if:

rebol[]

sisi: request-text/title "tentukan sisi mata uang: "
if sisi = "depan" [print "Tim yang kick-off duluan adalah Indonesia" halt]
if sisi = "belakang" [print "Tim yang kick-off duluan adalah Brazil" halt]

Jika menggunakan either, kita menghemat beberapa baris instruksi program.

3.3 Switch
Berikut contoh kondisi contoh katring menggunakan conditional switch:

rebol [ ]

hari: request-text/title "Hari apa sekarang?"

switch/default hari [
"senin" [alert "Nasi Goreng"]
"selasa" [alert "Nasi Kuning"]
"rabu" [alert "Nasi Pecal"]
"kamis" [alert "Nasi Liwet"]
"jumat" [alert "Nasi Rawon"]
"sabtu" [alert "Nasi Soto"]
"minggu" [alert "Nasi Ramas"]
] [alert "nama hari yang kamu masukkan salah"]


Contoh kasus sepakbola dengan menggunakan switch:

Rebol [ ]

sisi: request-text

switch/default sisi [
"depan" [alert "Indonesia first kick-off"]
"belakang" [alert "Brazil first kick-off"]]
[alert "anda salah masukkan sisi"]


Python tidak mempunyai switch statement.

3.4 Case
Contoh kasus katring dengan menggunakan switch:

rebol [ ]

hari: request-text/title "Hari apa sekarang?"

case [
hari == "senin" [alert "Nasi Goreng"]
hari == "selasa" [alert "Nasi Kuning"]
hari == "rabu" [alert "Nasi Pecal"]
hari == "kamis" [alert "Nasi Liwet"]
hari == "jumat" [alert "Nasi Rawon"]
hari == "sabtu" [alert "Nasi Soto"]
hari == "minggu" [alert "Nasi Ramas"]
]

Contoh kasus sepakbola dengan menggunakan case:

rebol[]

sisi: request-text

case [
sisi == "depan" [alert "Indonesia first kick-off"]
sisi == "belakang" [alert "Brazil first kick-off"]
]

Python juga tidak mendukung case statement.

4. Converter/Parser
4.1 to-file


4.2 to-email


4.3 to-time

4.4 to-integer
USAGE:
    TO-INTEGER value
ARGUMENTS:
     value -- (Type: any)

5. Requester
Rebol menyediakan built-in GUI dialog dibawah ini untuk mempermudah pemasukan data pada saat program mu dijalankan.

Built-in dialog ini muncul pop-up di komputer kamu ketika kamu menjalankan program yang kamu buat.

Berikut pilihan-pilihan dialog yang telah tersedia pada REBOL:
5.1 request-dir 
Rebol meminta masukan alamat direktori.





5.2 request-download 

Rebol meminta masukan alamat situs yang hendak di-download

5.3 request-color 
Rebol meminta masukan warna
Data yang dimasukkan disimpan sebagai Tuple!


5.4 request-pass
Rebol meminta masukan kata kunci (password).

5.5 request-text 
Rebol meminta masukan text.
Data yang dimasukan disimpan sebagai data bertipe string (string!).

Text yang dimasukkan bisa dikonversikan ke tipe lain menggunakan perintah, seperti: to-file, to-email, to-time.


Refinement request-text yang sering digunakan:
1. /title
2. /

5.6 request-list 
Rebol meminta masukan daftar.


5.7 request-date
 Rebol meminta masukan tanggal.

5.8 request-file
Rebol meminta nama file yang akan diolah.

5.9 request-download
5.10 request-list


6. Loops
6.1 For
>> for angka 1 10 1 [print angka]
1
2
3
4
5
6
7
8
9
10

6.2 Forever
Mengevaluasi suatu blok terus menerus (endlessly).
General syntax: forever body
Contoh: