Expression Evaluator (parser) dengan VB
Juli 2, 2008 at 3:05 pm 1 komentar
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 …
Entry filed under: Math Parser. Tags: Add new tag.
1 Komentar Add your own
Tinggalkan Balasan
Trackback this post | Subscribe to the comments via RSS Feed
1.
Rizal | Juli 3, 2008 pukul 1:29 pm
thanks