Archive for Juli, 2008
ORANG-ORANG YANG AKAN AKAN BERPARTISIPASI UNTUK MEMBUAT STARTUP RPL
- Uzlifatul jannah (06510057)
- Siti Nurul Inayah (06510048)
- Siti lailatul Mubarakah (06510073)
- Moh. Zuhdi Kurniawan (06510046)
- Imam Fahrudin (06510004)
- Hindayani (06510034)
- M. David A.P (06510045)
- Abi Sufyan (06510063)
- Siti Faridah (06510069)
Expression Evaluator (2)
Untuk membuat parser dari pernyataan matematika (expression) yang memiliki lebih dari satu operator ada beberapa hal yang harus dilakukan yaitu:
- Tentukan panjang string dari expression.
- tentukan banyaknya operator yang terdapat dalam expression.
- tentukan operator apa saja yang terdapat didalam expression dan tentukan pula letak posisi operator dalam expression.
- tentukan bilangan-bilangan yang terdapat dalam expression.
- operasikan setiap bilangan menggunakan operator (dengan catatan operator “^” dioperasikan pertama kali, operator “*” atau operator “/” dioperasikan berdasarkan urutan yang paling depan didulukan, kemudian operator “+” atau operator “/” didulukan berdasarkan urutannya)
- yang dioperasikan dalam (5) adalah bilangan yang terletak sebelum operator dan bilangan yang terletak setelah operator.
- pengoperasian bilangan-bilangan dalam expression dilakukan secara berulang-ulang sampai operator yang ada didalam expression habis.
contoh:
expression = “2 + 4 * 5 / 6 ^ 3 – 20 * 3 / 10 + 2 ^ 3″
dari contoh tersebut dapat diperoleh informasi sebagai berikut:
- Panjang expression = 39
- banyaknya operator = 9
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “*” dan PosisiOperator(1) = 7
- operator(3) = “/” dan PosisiOperator(1) = 11
- operator(4) = “^” dan PosisiOperator(1) = 15
- operator(5) = “-” dan PosisiOperator(1) = 19
- operator(6) = “*” dan PosisiOperator(1) = 24
- operator(7) = “/” dan PosisiOperator(1) = 28
- operator(8) = “+” dan PosisiOperator(1) = 33
- operator(9) = “^” dan PosisiOperator(1) = 37
Untuk menyelesaikan pernyataan matematika yang terdapat dalam expression akan dilakukan langkah-langkah sebagai berikut (contoh penyelesaian yang dilakukan berdasarkan logika berpikir komputer):
(1) mengoperasikan operator “^” :
berdasarkan urutan dan mereplace bilangan sesudah dan sebelum operator serta operator yang telah dioperasikan sehingga expression akan berubah menjadi berikut:
expression = “2 + 4 * 5 / 6 ^ 3 – 20 * 3 / 10 + 2 ^ 3″
“^” dioperasikan:
expression = “2 + 4 * 5 / 46656 – 20 * 3 / 10 + 2 ^ 3″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 8
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “*” dan PosisiOperator(2) = 7
- operator(3) = “/” dan PosisiOperator(3) = 11
- operator(4) = “-” dan PosisiOperator(4) = 19
- operator(5) = “*” dan PosisiOperator(5) = 24
- operator(6) = “/” dan PosisiOperator(6) = 28
- operator(7) = “+” dan PosisiOperator(7) = 33
- operator(8) = “^” dan PosisiOperator(8) = 37
“^” dioperasikan:
expression = “2 + 4 * 5 / 46656 – 20 * 3 / 10 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 7
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “*” dan PosisiOperator(2) = 7
- operator(3) = “/” dan PosisiOperator(3) = 11
- operator(4) = “-” dan PosisiOperator(4) = 19
- operator(5) = “*” dan PosisiOperator(5) = 24
- operator(6) = “/” dan PosisiOperator(6) = 28
- operator(7) = “+” dan PosisiOperator(7) = 33
(2) mengoperasikan operator “*” atau “/” berdasarkan urutan posisi operator
“*” dioperasikan:
expression = “2 + 20 / 46656 – 20 * 3 / 10 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 6
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “/” dan PosisiOperator(2) = 8
- operator(3) = “-” dan PosisiOperator(3) = 16
- operator(4) = “*” dan PosisiOperator(4) = 21
- operator(5) = “/” dan PosisiOperator(5) = 25
- operator(6) = “+” dan PosisiOperator(6) = 30
“/” dioperasikan:
expression = “2 + 0.0004 – 20 * 3 / 10 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 5
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “-” dan PosisiOperator(2) = 12
- operator(3) = “*” dan PosisiOperator(3) = 17
- operator(4) = “/” dan PosisiOperator(4) = 21
- operator(5) = “+” dan PosisiOperator(5) = 36
“*” dioperasikan:
expression = “2 + 0.0004 - 60 / 10 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 4
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “-” dan PosisiOperator(2) = 12
- operator(3) = “/” dan PosisiOperator(3) = 17
- operator(4) = “+” dan PosisiOperator(4) = 22
“/” dioperasikan:
expression = “2 + 0.0004 - 6 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 3
- operator(1) = “+” dan PosisiOperator(1) = 3
- operator(2) = “-” dan PosisiOperator(2) = 12
- operator(3) = “+” dan PosisiOperator(3) = 16
(2) mengoperasikan operator “+” atau “-” berdasarkan urutan posisi operator
“+” dioperasikan:
expression = “2.0004 - 6 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 2
- operator(1) = “-” dan PosisiOperator(1) = 8
- operator(2) = “+” dan PosisiOperator(2) = 12
“-” dioperasikan:
expression = “-3.9996 + 8″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 1
- operator(1) = “+” dan PosisiOperator(1) = 12
“+” dioperasikan:
expression = “4.0004″
Selanjutnya informasi tentang banyak operator, operator, serta posisi operator di update, yaitu:
- banyak operator = 0
- SELESAI
dari model penyelesaian diatas, selanjutnya akan dibuat implementasinya dalam bentuk kode program yang secara garis besar akan dikelompokkan menjadi beberapa fungsi, yaitu:
- fungsi untuk menentukan banyak operator, operator apa saja, dan posisinya dimana saja.
- fungsi untuk mengoperasikan bilangan-bilangan yang terdapat dalam expression.
to be continued …
Expression Evaluator (parser) dengan VB
Dalam tulisan ini akan dibahas tentang cara untuk membuat parse yang dapat digunakan untuk mengevaluator pernyataan matematika yang berupa string untuk (1) satu operator dengan dua bilangan dan (2) multi operator dan multi bilangan. bahasa yang akan digunakan dalam hal ini adalah Visual Basic.
(1) Parser untuk satu operator
untuk membuat parser secara sederhana dapat dijelaskan sebagai berikut:
sebagai contoh: Expr = “2 * 3″
untuk membuat parsernya langkah-langkah yang harus dilakukan adalah sebagai berikut:
- Tentukan panjang karakter dari Expr: –> Gunakan fungsi Len(Expr)
- Baca setiap karakter dari Expr dan tentukan operator yang terdapat dalam Expr –> Gunakan fungsi Mid(Expr, Start, length) untuk mengambil setiap karakter.
- tentukan bilangan-bilangan yang terdapat dalam Expr serta masukkan bilangan pertama yang didapat kedalam variabel Bil1 dan bilangan kedua sebagai Bil2
- misalkan operator yang diperoleh dimasukkan dalam variabel Opr dan hasil dari pengoperasian bilangan dimasukkan dalam variabel Ans. selanjutnya jika Opr=”^” maka Ans = bil1 ^ bil2: jika Opr=”*” maka ans = bil1 * bil2: jika Opr=”/” maka ans = bil1 / bil2: dst …
Implementasi dalam kode program:
Function Parse(ByRef Expr As Variant) As Double
Dim panjang As Integer, i As Integer
Dim b As String, Operator As String, PosisiOperator As Integer
Dim ans As Double
Dim Bil1 As Single, Bil2 As Single
panjang = Len(Expr)
For i = 1 To panjang
b = Mid(Expr, i, 1) ‘membaca setiap karakter dalam expr
If b = “^” Or b = “*” Or b = “/” Or b = “+” Or b = “-” Then
Operator = b
PosisiOperator = i
End If
Next i
Bil1 = Mid(Expr, 1, PosisiOperator – 1)
Bil2 = Mid(Expr, PosisiOperator + 1, panjang – PosisiOperator)
Select Case Operator
Case “^”
ans = Bil1 ^ Bil2
Case “*”
ans = Bil1 * Bil2
Case “/”
ans = Bil1 / Bil2
Case “+”
ans = Bil1 + Bil2
Case “-”
ans = Bil1 – Bil2
End Select
Parse = ans
End Function
(2) Parser untuk jumlah operator lebih satu (multi operator)
akan segera ditulis …
Hello world!
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!