Vous êtes sur la page 1sur 6

Aplikasi Kalkulator Cerdas dengan PHP

Pada tulisan saya sebelumnya telah saya posting bagaimana membuat aplikasi konversi notasi
infix-prefix-postfix serta aplikasi kalkulator formula 1 digit, kemarin sebenarnya ada tugas
Struktur Data agar kalkulator formulanya bisa lebih dari 1 digit bahkan sampe sekian digit,
kemarin udah tak buat dengan VB.Net tapi nggak tak posting.
Nah barusan saya iseng-iseng untuk buat pake bahasa PHP coz biar gak lupa coz terakhir pake
PHP pas waktu Tugas Akhir SMK suruh buat Perpustakaan digital. Selama kuliah ini belum
pernah ada tugas pake PHP jadi ya gitu deh.. takut kelupaan .
Berikut screenshot dan sourcecodenya.

Kalkulator Cerdas PHP


view source
print?
001 <html>
002 <head><title>Aplikasi Kalkulator Formula PHP</title></head>
003 <form method="post" action="" name="form1">
004 <table width=400 border=0>
005 <tr>
006
007

<td>Ekspresi Matematika : </td>


<td><input width="50" type="text" name="ekspresi"></td>

008

<td><? echo $postfix; ?></td>

009

010 </tr>
011 <tr>
012
013

<td></td>
<td><input type="submit" name="submit" value="Hitung"></td>

014

<td></td>

015
016 </tr>
017
018 </table>
019 </form>
020
021 <?php
022 $ekspresi = $_POST['ekspresi'];
023 $jmleks = strlen($ekspresi);
024 $jmleks -= 1;
025
026 function derajat($tandaop)
027 {
028

if ($tandaop == '^')

029

030

$derajat = 3;

031

032

elseif ($tandaop == '*' || $tandaop == '/')

033

034

$derajat = 2;

035

036

elseif ($tandaop == '+' || $tandaop == '-')

037

038

$derajat = 1;

039

040

elseif ($tandaop == '(')

041

042
043

$derajat = 0;
}

044 return $derajat;


045 }

046
047 for ($i=0; $i<=$jmleks; $i++)
048 {
049

$data[$i]=substr($ekspresi, $i, 1);

050
051 }
052
053 $postfix = '';
054 $top1 = 0;
055 $top2 = 0;
056 for ($j=0; $j<=$jmleks; $j++)
057 {
058

$r = $data[$j];
if ($r != '*' && $r != '/' && $r != '+' && $r != '-' && $r != '^' && $r !=
059
'(' && $r != ')')
060

061

$postfix = $postfix . $r;

062

if ($j == $jmleks)

063

064
065

$top2 += 1;
$stack2[$top2] = $postfix;

066

$postfix = '';

067

068

069

elseif ($r == '(')

070

071

$top1 += 1;

072

$stack1[$top1] = $r;

073

074

elseif ($r == ')' )

075

076
077

$top2 += 1;
$stack2[$top2] = $postfix;

078

$postfix = '';

079
080

while ($stack1[$top1] != '(')

081

082
083

$top2 += 1;
$stack2[$top2] = $stack1[$top1];

084

$top1 -= 1;

085
086
087
088

}
$top1 -= 1;
}

089
090
091

elseif ($r == '*' || $r == '/' || $r == '+' || $r == '-' || $r == '^')


{

092
093

if ($data[$j-1] != ')')

094

095

$top2 += 1;

096
097

$stack2[$top2] = $postfix;
$postfix = '';

098

099

if ($top1 == 0 || derajat($r) > derajat($stack1[$top1]))

100

101

$top1 +=1;

102

$stack1[$top1] = $r;

103

104

else

105

106
107

$top2 +=1;
$stack2[$top2] =

108

$top1 -= 1;

109

if ($top1 == 0 || derajat($r) > derajat($stack1[$top1]))

110

111

$top1 +=1;

112
113

$stack1[$top1] = $r;
}

114
115
116 }

$stack1[$top1];

}
}

117
118 while ($top1 != 0)
119 {
120
121

$top2 += 1;
$stack2[$top2] = $stack1[$top1];

122

$top1 -= 1;

123 }
124
125 /*
126 for ($k = 1; $k <= $top2; $k++)
127 {
128 echo $stack2[$k]. "<br>". "" ;
129 }*/
130
131 $top3 = 0;
132 for ($k = 1; $k <= $top2; $k++)
133 {
134
135

$q = $stack2[$k];
if ($q != '+' && $q != '-' && $q != '*' && $q != '/' && $q != '^')

136

137

$top3 += 1;

138

$stack3[$top3] = $q;

139

140

if ($q == '+' || $q == '-' || $q == '*' || $q == '/' || $q == '^')

141

142

switch ($q)

143

144
145

case '+':
$temp = $stack3[$top3-1] + $stack3[$top3];

146

break;

147

case '-':

148

$temp = $stack3[$top3-1] - $stack3[$top3];

149

break;

150
151

case '*':
$temp = $stack3[$top3-1] * $stack3[$top3];

152

break;

153

case '/':

154

$temp = $stack3[$top3-1] / $stack3[$top3];

155

break;

156
157

case '^':
$temp = $stack3[$top3-1] ^ $stack3[$top3];

158

break;

159

160
161

$top3 -= 1;
$stack3[$top3] = $temp;

162
163

164 }
165
166 $hasilhitung = $stack3[$top3];
167
168

echo "Hasil Ekspresi Mat : <b>" . $_POST['ekspresi'] . "</b> = ".


$stack3[1] . "<br> ";

169 echo "<hr>";


170

echo "Created by : <b>Asadullohil Ghalib</b> <a


href='http://kubaat.wordpress.com'>http://kubaat.wordpress.com</a>";

171 ?>
172 </htm>

Bagi temen-temen yang pingin nyoba kalkulatornya bisa langsung copy sourcecode diatas dan
paste di notepad terus simpan dengan nama terserah misal : kalkulator.php
Atau langsung download di sini
terus letakkan di webserver lokal anda misal di /xampp/htdocs/kalkulator.php, Cara bukanya
adalah bukan Browser misal : Mozilla Firefox dan ketikkan http://localhost/kalkulator.php

Vous aimerez peut-être aussi