Calculator (Switch Case)
हम क्या बना रहे हैं
Calculator दो numbers और एक operator (+, -, *, /) लेकर result देता है। यह switch statement अभ्यास करने का बढ़िया छोटा project है, जो operator के आधार पर कई में से एक action चुनता है। हम इसे चरण-दर-चरण बनाएँगे और divide by zero सुरक्षित संभालेंगे।
switch logic
<?php
$a = 10; $b = 5; $op = "+";
switch ($op) {
case "+": echo $a + $b; break;
case "-": echo $a - $b; break;
case "*": echo $a * $b; break;
case "/": echo $a / $b; break;
default: echo "Invalid operator";
}
?>
switch $op को एक case से मिलाता है और वो operation चलाता है। हर case break पर ख़त्म होता है ताकि सिर्फ़ मेल खाता चले; default अनजान operators पकड़ता है।
पूरा calculator
<?php
function calculate($a, $b, $op) {
switch ($op) {
case "+": return $a + $b;
case "-": return $a - $b;
case "*": return $a * $b;
case "/":
if ($b == 0) return "Cannot divide by zero";
return $a / $b;
default: return "Invalid operator";
}
}
echo calculate(20, 4, "/"); // 5
?>
इसे function में लपेटना दोबारा-इस्तेमाल-योग्य बनाता है। ध्यान दीजिए divide case पहले zero जाँचता है, crash के बजाय message लौटाकर।
Form जोड़ना
<form method="post">
<input type="number" name="a">
<select name="op">
<option>+</option><option>-</option>
<option>*</option><option>/</option>
</select>
<input type="number" name="b">
<button>Calculate</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$a = (float)$_POST["a"];
$b = (float)$_POST["b"];
echo calculate($a, $b, $_POST["op"]);
}
?>
Form दो numbers और operator भेजता है। हम numbers को (float) से cast करते हैं और सब कुछ अपने calculate function में डालते हैं।
Divide by zero संभालना
शून्य से भाग संभालना ज़रूरी है वरना error आती है। हमारा function पहले if ($b == 0) जाँचता है। आधुनिक PHP में आप इसे catch भी कर सकते हैं:
<?php
try {
echo 10 / 0;
} catch (DivisionByZeroError $e) {
echo "Cannot divide by zero";
}
?>
दोनों तरीके crash बचाते हैं और user को साफ़ message दिखाते हैं।
आम गलतियाँ
breakभूलना। इसके बिना अगले cases भी चलते हैं (fall-through)।- Divide by zero न जाँचना। हमेशा भाग को guard कीजिए।
- Form values cast न करना। गणित से पहले
(float)या(int)में cast कीजिए। - कोई default case नहीं। अनजान operators को
defaultसे संभालिए।
सारांश
- Calculator operator के आधार पर operation चुनता है —
switchके लिए बढ़िया। - हर case एक operation करता है और
break(याreturn) पर ख़त्म होता है। - divide case को zero से guard कीजिए।
- Form से input लीजिए और गणना से पहले numbers cast कीजिए।
- Invalid operators को
defaultइस्तेमाल कीजिए।
आगे, concept दोहराइए if-else और switch में, या logic दोबारा इस्तेमाल कीजिए PHP functions से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Calculator के लिए switch क्यों इस्तेमाल करें?
switch operator को सही case से साफ़ मिलाता है, जो if-else की लंबी श्रृंखला से पढ़ने में आसान है।PHP में divide by zero कैसे संभालूँ?
हर case को break क्यों चाहिए?
break बिना PHP अगले cases भी चलाती रहती है (fall-through)। हर case के अंत में break जोड़ना पक्का करता है कि सिर्फ़ मेल खाता operation चले।User से operator कैसे लूँ?
$_POST["op"] से पढ़िए। वो value switch में डालकर operation चुनिए।switch में default क्या करता है?
default case तब चलता है जब operator किसी ज्ञात case से मेल न खाए — जैसे कोई invalid symbol। "invalid operator" message दिखाने की यह अच्छी जगह है।