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:
- 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 …