Archive for Juli 2, 2008

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:

  1. Tentukan panjang karakter dari Expr: –> Gunakan fungsi Len(Expr)
  2. Baca setiap karakter dari Expr dan tentukan operator yang terdapat dalam Expr –> Gunakan fungsi Mid(Expr, Start, length) untuk mengambil setiap karakter.
  3. tentukan bilangan-bilangan yang terdapat dalam Expr serta masukkan bilangan pertama yang didapat kedalam variabel Bil1 dan bilangan kedua sebagai Bil2
  4. 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 … :)

Juli 2, 2008 at 3:05 pm 1 komentar

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Juli 2, 2008 at 1:40 pm 1 komentar


Kalender

Juli 2008
S S R K J S M
    Sep »
 123456
78910111213
14151617181920
21222324252627
28293031  

Pos Berdasarkan Bulan

Posts by Category


Ikuti

Get every new post delivered to your Inbox.