Posts filed under ‘Pemrograman VB’

Expression Evaluator (2)

Untuk membuat parser dari pernyataan matematika (expression) yang memiliki lebih dari satu operator ada beberapa hal yang harus dilakukan yaitu:

  1. Tentukan panjang string dari expression.
  2. tentukan banyaknya operator yang terdapat dalam expression.
  3. tentukan operator apa saja yang terdapat didalam expression dan tentukan pula letak posisi operator dalam expression.
  4. tentukan bilangan-bilangan yang terdapat dalam expression.
  5. 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)
  6. yang dioperasikan dalam (5) adalah bilangan yang terletak sebelum operator dan bilangan yang terletak setelah operator.
  7. 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:

  1. fungsi untuk menentukan banyak operator, operator apa saja, dan posisinya dimana saja.
  2. fungsi untuk mengoperasikan bilangan-bilangan yang terdapat dalam expression.

to be continued …

 

Juli 3, 2008 at 1:14 pm Tinggalkan Komentar


Kalender

Juni 2012
S S R K J S M
« Okt    
 123
45678910
11121314151617
18192021222324
252627282930  

Pos Berdasarkan Bulan

Posts by Category


Ikuti

Get every new post delivered to your Inbox.