# जावास्क्रिप्ट मूलभूत गोष्टी: निर्णय घेणे ![जावास्क्रिप्ट मूलभूत गोष्टी - निर्णय घेणे](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0b1cb2f8adaff3ed2a77c4f91db96d8a0594132a353fa189a.mr.png) > स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) यांनी तयार केले आहे तुम्ही कधी विचार केला आहे की अॅप्लिकेशन्स स्मार्ट निर्णय कसे घेतात? जसे की नेव्हिगेशन सिस्टम सर्वात जलद मार्ग कसा निवडतो, किंवा थर्मोस्टॅट उष्णता चालू करण्याचा निर्णय कसा घेतो? प्रोग्रामिंगमधील निर्णय घेण्याची ही मूलभूत संकल्पना आहे. जसे चार्ल्स बॅबेजच्या अॅनालिटिकल इंजिनला परिस्थितीनुसार वेगवेगळ्या ऑपरेशन्सच्या क्रमांचे अनुसरण करण्यासाठी डिझाइन केले गेले होते, आधुनिक जावास्क्रिप्ट प्रोग्राम्सना बदलत्या परिस्थितीनुसार निवडी करणे आवश्यक आहे. स्थिर कोडला प्रतिसाद देणाऱ्या, बुद्धिमान अॅप्लिकेशन्समध्ये बदलण्याची क्षमता म्हणजे निर्णय घेण्याची क्षमता. या धड्यात, तुम्ही तुमच्या प्रोग्राम्समध्ये सशर्त लॉजिक कसे अंमलात आणायचे ते शिकाल. आपण सशर्त स्टेटमेंट्स, तुलना ऑपरेटर आणि लॉजिकल एक्सप्रेशन्स एक्सप्लोर करू जे तुमच्या कोडला परिस्थितींचे मूल्यांकन करण्यास आणि योग्य प्रतिसाद देण्यास अनुमती देतात. ## पूर्व-व्याख्यान प्रश्नमंजुषा [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/web/quiz/11) निर्णय घेण्याची आणि प्रोग्राम फ्लो नियंत्रित करण्याची क्षमता ही प्रोग्रामिंगचा मूलभूत पैलू आहे. या विभागात Boolean मूल्ये आणि सशर्त लॉजिक वापरून तुमच्या जावास्क्रिप्ट प्रोग्राम्सचा अंमल मार्ग कसा नियंत्रित करायचा ते समाविष्ट आहे. [![निर्णय घेणे](https://img.youtube.com/vi/SxTp8j-fMMY/0.jpg)](https://youtube.com/watch?v=SxTp8j-fMMY "निर्णय घेणे") > 🎥 वरील प्रतिमेवर क्लिक करा निर्णय घेण्याबद्दल व्हिडिओसाठी. > तुम्ही [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101-if-else/?WT.mc_id=academic-77807-sagibbon) वर हा धडा घेऊ शकता! ## Boolean बद्दल थोडक्यात पुनरावलोकन निर्णय घेण्याचा अभ्यास करण्यापूर्वी, आपल्या मागील धड्यातील Boolean मूल्ये पुन्हा पाहूया. गणितज्ञ जॉर्ज बूल यांच्या नावावरून ठेवलेले, हे मूल्ये द्विआधारी स्थिती दर्शवतात – `true` किंवा `false`. यात कोणतीही अस्पष्टता नाही, कोणतेही मध्यम क्षेत्र नाही. हे द्विआधारी मूल्ये सर्व संगणकीय लॉजिकचा पाया बनवतात. तुमचा प्रोग्राम घेत असलेला प्रत्येक निर्णय शेवटी Boolean मूल्यांकनावर आधारित असतो. Boolean व्हेरिएबल्स तयार करणे सोपे आहे: ```javascript let myTrueBool = true; let myFalseBool = false; ``` हे दोन व्हेरिएबल्स स्पष्ट Boolean मूल्यांसह तयार करते. ✅ Boolean हे इंग्रजी गणितज्ञ, तत्त्वज्ञ आणि लॉजिशियन जॉर्ज बूल (1815–1864) यांच्या नावावरून ठेवले गेले आहेत. ## तुलना ऑपरेटर आणि Boolean प्रत्यक्षात, तुम्ही क्वचितच Boolean मूल्ये मॅन्युअली सेट कराल. त्याऐवजी, तुम्ही परिस्थितींचे मूल्यांकन करून ती तयार कराल: "हा नंबर त्या नंबरपेक्षा मोठा आहे का?" किंवा "ही मूल्ये समान आहेत का?" तुलना ऑपरेटर या मूल्यांकनांना सक्षम करतात. ते मूल्यांची तुलना करतात आणि ऑपरेण्ड्समधील संबंधाच्या आधारे Boolean परिणाम परत करतात. | चिन्ह | वर्णन | उदाहरण | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | | `<` | **कमी आहे**: दोन मूल्यांची तुलना करते आणि डाव्या बाजूचे मूल्य उजव्या बाजूच्या तुलनेत कमी असल्यास `true` Boolean डेटा प्रकार परत करते | `5 < 6 // true` | | `<=` | **कमी किंवा समान आहे**: दोन मूल्यांची तुलना करते आणि डाव्या बाजूचे मूल्य उजव्या बाजूच्या तुलनेत कमी किंवा समान असल्यास `true` Boolean डेटा प्रकार परत करते | `5 <= 6 // true` | | `>` | **मोठा आहे**: दोन मूल्यांची तुलना करते आणि डाव्या बाजूचे मूल्य उजव्या बाजूच्या तुलनेत मोठे असल्यास `true` Boolean डेटा प्रकार परत करते | `5 > 6 // false` | | `>=` | **मोठा किंवा समान आहे**: दोन मूल्यांची तुलना करते आणि डाव्या बाजूचे मूल्य उजव्या बाजूच्या तुलनेत मोठे किंवा समान असल्यास `true` Boolean डेटा प्रकार परत करते | `5 >= 6 // false` | | `===` | **कठोर समानता**: दोन मूल्यांची तुलना करते आणि डाव्या आणि उजव्या बाजूचे मूल्य समान आणि समान डेटा प्रकार असल्यास `true` Boolean डेटा प्रकार परत करते | `5 === 6 // false` | | `!==` | **असमानता**: दोन मूल्यांची तुलना करते आणि कठोर समानता ऑपरेटर परत करेल त्याच्या उलट Boolean मूल्य परत करते | `5 !== 6 // true` | ✅ तुमच्या ब्राउझरच्या कन्सोलमध्ये काही तुलना लिहून तुमचे ज्ञान तपासा. परत आलेल्या डेटाने तुम्हाला आश्चर्य वाटते का? ## If स्टेटमेंट `if` स्टेटमेंट म्हणजे तुमच्या कोडमध्ये प्रश्न विचारण्यासारखे आहे. "जर ही अट खरी असेल, तर हे काम करा." जावास्क्रिप्टमध्ये निर्णय घेण्यासाठी तुम्ही वापरणारे हे कदाचित सर्वात महत्त्वाचे साधन आहे. हे कसे कार्य करते: ```javascript if (condition) { // Condition is true. Code in this block will run. } ``` अट कंसात जाते आणि जर ती `true` असेल तर जावास्क्रिप्ट कर्ली ब्रेसेसच्या आत कोड चालवते. जर ती `false` असेल, तर जावास्क्रिप्ट संपूर्ण ब्लॉक वगळते. तुम्ही या अटी तयार करण्यासाठी तुलना ऑपरेटर वापराल. व्यावहारिक उदाहरण पाहूया: ```javascript let currentMoney = 1000; let laptopPrice = 800; if (currentMoney >= laptopPrice) { // Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } ``` `1000 >= 800` हे `true` म्हणून मूल्यांकन करते, त्यामुळे ब्लॉकच्या आत कोड चालतो आणि कन्सोलमध्ये "Getting a new laptop!" प्रदर्शित होते. ## If..Else स्टेटमेंट पण जर तुम्हाला तुमच्या प्रोग्रामने अट खोटी असल्यावर काहीतरी वेगळे करायचे असेल तर काय? तिथेच `else` येते – जणू तुमच्याकडे बॅकअप योजना आहे. `else` स्टेटमेंट तुम्हाला "जर ही अट खरी नसेल, तर त्याऐवजी हे दुसरे काम करा" असे म्हणण्याचा मार्ग देते. ```javascript let currentMoney = 500; let laptopPrice = 800; if (currentMoney >= laptopPrice) { // Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } else { // Condition is false. Code in this block will run. console.log("Can't afford a new laptop, yet!"); } ``` आता `500 >= 800` हे `false` असल्याने, जावास्क्रिप्ट पहिला ब्लॉक वगळते आणि त्याऐवजी `else` ब्लॉक चालवते. तुम्हाला कन्सोलमध्ये "Can't afford a new laptop, yet!" दिसेल. ✅ ब्राउझर कन्सोलमध्ये हे कोड चालवून या कोडची आणि खालील कोडची तुमची समज तपासा. `currentMoney` आणि `laptopPrice` व्हेरिएबल्सच्या मूल्यांमध्ये बदल करून परत आलेल्या `console.log()` बदल करा. ## Switch स्टेटमेंट कधी कधी तुम्हाला एक मूल्य अनेक पर्यायांशी तुलना करायचे असते. तुम्ही अनेक `if..else` स्टेटमेंट्स साखळी करू शकता, परंतु हा दृष्टिकोन अव्यवस्थित होतो. अनेक वेगवेगळ्या मूल्यांसाठी स्वच्छ संरचना प्रदान करण्यासाठी `switch` स्टेटमेंट उपयुक्त आहे. संकल्पना सुरुवातीच्या टेलिफोन एक्सचेंजमध्ये वापरल्या जाणाऱ्या यांत्रिक स्विचिंग सिस्टमसारखी आहे – एक इनपुट मूल्य ठरवते की अंमलबजावणी कोणत्या विशिष्ट मार्गाने जाते. ```javascript switch (expression) { case x: // code block break; case y: // code block break; default: // code block } ``` हे कसे संरचित आहे: - जावास्क्रिप्ट एकदा अभिव्यक्तीचे मूल्यांकन करते - प्रत्येक `case` पाहते आणि जुळणारे शोधते - जुळणारे सापडल्यावर, तो कोड ब्लॉक चालवतो - `break` जावास्क्रिप्टला थांबवते आणि switch मधून बाहेर पडते - जर कोणतेही केस जुळत नसतील, तर तो `default` ब्लॉक चालवतो (जर तुम्ही एक ठेवला असेल तर) ```javascript // Program using switch statement for day of week let dayNumber = 2; let dayName; switch (dayNumber) { case 1: dayName = "Monday"; break; case 2: dayName = "Tuesday"; break; case 3: dayName = "Wednesday"; break; default: dayName = "Unknown day"; break; } console.log(`Today is ${dayName}`); ``` या उदाहरणात, जावास्क्रिप्ट पाहते की `dayNumber` `2` आहे, जुळणारे `case 2` शोधते, `dayName` ला "Tuesday" सेट करते आणि नंतर switch मधून बाहेर पडते. परिणाम? "Today is Tuesday" कन्सोलमध्ये लॉग केले जाते. ✅ ब्राउझर कन्सोलमध्ये हे कोड चालवून या कोडची आणि खालील कोडची तुमची समज तपासा. `a` व्हेरिएबलच्या मूल्यांमध्ये बदल करून परत आलेल्या `console.log()` बदल करा. ## लॉजिकल ऑपरेटर आणि Boolean जटिल निर्णयांमध्ये अनेक अटी एकाच वेळी मूल्यांकन करणे आवश्यक असते. जसे Boolean बीजगणित गणितज्ञांना लॉजिकल अभिव्यक्ती एकत्रित करण्यास अनुमती देते, प्रोग्रामिंगमध्ये अनेक Boolean अटी जोडण्यासाठी लॉजिकल ऑपरेटर प्रदान केले जातात. हे ऑपरेटर साध्या true/false मूल्यांकन एकत्र करून प्रगत सशर्त लॉजिक सक्षम करतात. | चिन्ह | वर्णन | उदाहरण | | ------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | `&&` | **लॉजिकल AND**: दोन Boolean अभिव्यक्तींची तुलना करते. दोन्ही बाजू true असल्यासच true परत करते | `(5 > 3) && (5 < 10) // दोन्ही बाजू true आहेत. true परत करते` | | `\|\|` | **लॉजिकल OR**: दोन Boolean अभिव्यक्तींची तुलना करते. किमान एक बाजू true असल्यास true परत करते | `(5 > 10) \|\| (5 < 10) // एक बाजू false आहे, दुसरी true आहे. true परत करते` | | `!` | **लॉजिकल NOT**: Boolean अभिव्यक्तीचे उलट मूल्य परत करते | `!(5 > 10) // 5 10 पेक्षा मोठा नाही, त्यामुळे "!" true बनवते` | हे ऑपरेटर तुम्हाला उपयुक्त पद्धतीने अटी एकत्रित करण्यास अनुमती देतात: - AND (`&&`) म्हणजे दोन्ही अटी true असणे आवश्यक आहे - OR (`||`) म्हणजे किमान एक अट true असणे आवश्यक आहे - NOT (`!`) true ला false मध्ये बदलते (आणि उलट) ## लॉजिकल ऑपरेटरसह अटी आणि निर्णय चला या लॉजिकल ऑपरेटरचा वापर करून अधिक वास्तववादी उदाहरण पाहूया: ```javascript let currentMoney = 600; let laptopPrice = 800; let laptopDiscountPrice = laptopPrice - (laptopPrice * 0.2); // Laptop price at 20 percent off if (currentMoney >= laptopPrice || currentMoney >= laptopDiscountPrice) { // Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } else { // Condition is false. Code in this block will run. console.log("Can't afford a new laptop, yet!"); } ``` या उदाहरणात: आम्ही 20% डिस्काउंट किंमत (640) मोजतो, नंतर आमची उपलब्ध फंड्स पूर्ण किंमत किंवा सवलतीच्या किंमतीसाठी पुरेशी आहेत का ते मूल्यांकन करतो. 600 सवलतीच्या किंमतीच्या मर्यादेत (640) बसते, त्यामुळे अट true म्हणून मूल्यांकन करते. ### नकारात्मक ऑपरेटर कधी कधी काहीतरी true नाही ते विचारणे सोपे असते. जसे "वापरकर्ता लॉग इन आहे का?" विचारण्याऐवजी तुम्ही "वापरकर्ता लॉग इन नाही आहे का?" विचारू शकता. उद्गार चिन्ह (`!`) ऑपरेटर तुमच्यासाठी लॉजिक उलटवतो. ```javascript if (!condition) { // runs if condition is false } else { // runs if condition is true } ``` `!` ऑपरेटर म्हणजे "त्याच्या उलट..." असे म्हणण्यासारखे आहे – जर काहीतरी `true` असेल, तर `!` त्याला `false` बनवते आणि उलट. ### Ternary अभिव्यक्ती सोप्या सशर्त असाइनमेंटसाठी, जावास्क्रिप्ट **ternary ऑपरेटर** प्रदान करते. ही संक्षिप्त सिंटॅक्स तुम्हाला एक सशर्त अभिव्यक्ती एका ओळीत लिहिण्याची परवानगी देते, जेव्हा तुम्हाला अटीवर आधारित दोन मूल्यांपैकी एक असाइन करायचा असेल तेव्हा उपयुक्त. ```javascript let variable = condition ? returnThisIfTrue : returnThisIfFalse; ``` हे प्रश्नासारखे वाचते: "ही अट true आहे का? जर होय, तर हे मूल्य वापरा. जर नाही, तर ते मूल्य वापरा." खाली एक अधिक ठोस उदाहरण आहे: ```javascript let firstNumber = 20; let secondNumber = 10; let biggestNumber = firstNumber > secondNumber ? firstNumber : secondNumber; ``` ✅ या कोडला काही वेळा वाचा. तुम्हाला समजते का की हे ऑपरेटर कसे कार्य करत आहेत? या ओळीत काय सांगितले आहे: "`firstNumber` `secondNumber` पेक्षा मोठा आहे का? जर होय, तर `firstNumber` `biggestNumber` मध्ये ठेवा. जर नाही, तर `secondNumber` `biggestNumber` मध्ये ठेवा." Ternary ऑपरेटर हा पारंपरिक `if..else` स्टेटमेंट लिहिण्याचा फक्त एक छोटा मार्ग आहे: ```javascript let biggestNumber; if (firstNumber > secondNumber) { biggestNumber = firstNumber; } else { biggestNumber = secondNumber; } ``` दोन्ही दृष्टिकोन समान परिणाम तयार करतात. Ternary ऑपरेटर संक्षिप्तता प्रदान करतो, तर पारंपरिक if-else संरचना जटिल अटींसाठी अधिक वाचनीय असू शकते. --- ## 🚀 आव्हान एक प्रोग्राम तयार करा जो प्रथम लॉजिकल ऑपरेटरसह लिहिला जातो आणि नंतर Ternary अभिव्यक्ती वापरून पुन्हा लिहिला जातो. तुमची पसंतीची सिंटॅक्स कोणती आहे? --- ## GitHub Copilot Agent आव्हान 🚀 Agent मोड वापरून खालील आव्हान पूर्ण करा: **वर्णन:** या धड्याच्या अनेक निर्णय घेण्याच्या संकल्पना, जसे की if-else स्टेटमेंट्स, switch स्टेटमेंट्स, लॉजिकल ऑपरेटर आणि Ternary अभिव्यक्ती यांचा समावेश असलेला एक व्यापक ग्रेड कॅल्क्युलेटर तयार करा. **प्रॉम्प्ट:** एक जावास्क्रिप्ट प्रोग्राम लिहा जो विद्यार्थ्याच्या संख्यात्मक स्को (0-100) घेतो आणि खालील निकषांनुसार त्यांचा लेटर ग्रेड ठरवतो: - A: 90-100 - B: 80-89 - C: 70-79 - D: 60-69 - F: 60 च्या खाली आवश्यकता: 1. लेटर ग्रेड ठरवण्यासाठी if-else स्टेटमेंट वापरा 2. विद्यार्थी पास होतो का (grade >= 60) आणि त्याला सन्मान मिळतो का (grade >= 90) हे तपासण्यासाठी लॉजिकल ऑपरेटर वापरा 3. प्रत्येक लेटर ग्रेडसाठी विशिष्ट फीडबॅक प्रदान करण्यासाठी switch स्टेटमेंट वापरा 4. विद्यार्थी पुढच्या कोर्ससाठी पात्र आहे का (grade >= 70) हे ठरवण्यासाठी Ternary ऑपरेटर वापरा 5. स्को 0 ते 100 दरम्यान आहे याची खात्री करण्यासाठी इनपुट व्हॅलिडेशन समाविष्ट करा 59, 60, 89, 90 आणि अवैध इनपुट्स यासारख्या विविध स्कोर्ससह तुमचा प्रोग्राम तपासा. [Agent मोड](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) बद्दल अधिक जाणून घ्या. ## व्याख्यानानंतर प्रश्नमंजुषा [व्याख्यानानंतर प्रश्नमंजुषा](https://ff-quizzes.netlify.app/web/quiz/12) ## पुनरावलोकन आणि स्व-अभ्यास वापरकर्त्यासाठी उपलब्ध असलेल्या अनेक ऑपरेटरबद्दल अधिक वाचा [MDN वर](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators). Josh Comeau च्या अप्रतिम [ऑपरेटर लुकअप](https://joshwcomeau.com/operator-lookup/) वर जा! ## असाइनमेंट [ऑपरेटर](assignment.md) --- **अस्वीकरण**: हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपयास लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून उद्भवलेल्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.