From Test-Scratch-Wiki
| यदि () तो, अन्यथा | |
| Category | नियंत्रण |
| Type | सी |
| Introduced in | १६दिसंबर०५ |
यदि () तो, अन्यथा ब्लाक एक नियंत्रण ब्लॉक और एक सी ब्लॉक है। (इसे कभी-कभी "ई" ब्लॉक के रूप में भी जाना जाता है।) ब्लॉक अपनी बूलियन स्थिति की जाँच करता है; यदि स्थिति सत्य है, तो पहले सी (स्पेस) के अंदर रखा गया कोड सक्रिय हो जाएगा; यदि स्थिति गलत है, तो दूसरे सी के अंदर का कोड सक्रिय हो जाएगा।
स्क्रैच २.० से पहले, इस ब्लॉक को यदि () तो, अन्यथा या
if <>{
}else{
}::control
उदाहरण उपयोग
प्रोग्रामिंग में, एक बहुत ही महत्वपूर्ण हिस्सा शर्तों की जाँच करना है। स्क्रैच में, यह यदि () ब्लॉक के साथ किया जाता है। हालाँकि, "शर्तों की जाँच" का एक महत्वपूर्ण हिस्सा कोड का एक और टुकड़ा होना है जो शर्त गलत होने पर चलता है। हालाँकि इसे हल किया जा सकता है, लेकिन यदि () तो, अन्यथा ब्लॉक इसे सरल बनाता है। कुछ सामान्य उपयोग:
- यदि शर्त गलत है तो पहली क्रिया के विपरीत क्रिया करना
repeat until <touching (edge v)?>
if <(mouse x) > [0]> then
move (1) steps
else
move (-1) steps
end
end
- यदि किसी स्प्राइट का स्वास्थ्य एक निश्चित मात्रा से कम है, तो वह मर जाता है, अन्यथा वह कुछ और करता है
when green flag clicked
forever
if <(health) = [0]> then
play sound (Failure v) until done
stop [all v]
else
broadcast (attack v)
end
- आसान स्क्रिप्ट में परिवर्तन
— यदि कोई चर किसी निश्चित मान के बराबर है, तो एक बात होती है, और यदि चर मान के बराबर नहीं है, तो एक अलग बात होती है
if <(answer) = [5]> then
say [Correct!] for (2) seconds
else
play sound (failed task v) until done
stop [all v]
end
- स्क्रिप्ट जो परिस्थितियों में परिवर्तन के अनुकूल हो (जैसे कि कोई परिवर्तनशील चर)
if <touching color [#7092be]?> then
say [We found water!]
else
say [ ]
end
समाधान
इस ब्लॉक को निम्नलिखित कोड के साथ दोहराया जा सकता है:
if <. . .::grey> then . . . //शर्त=सत्य end if <not <. . .::grey> > then . . . //शर्त=झूठ end
or
if <. . .::grey> then
. . .::grey
broadcast (continue v)
stop [this script v]
end
. . .::grey
broadcast (continue v)
ध्यान दें कि यह अंतिम समाधान केवल तभी काम करता है जब शर्त को पहले यदि () ब्लॉक के मध्य में नकारा नहीं जाएगा।
सुझाव
स्क्रैचर्स ने एक ब्लॉक का सुझाव दिया है जो सत्य होने पर पहले इनपुट की रिपोर्ट करता है, अन्यथा असत्य होने पर दूसरे इनपुट की रिपोर्ट करता है।[1]
if <> then [] else []:: operators reporter
यह ब्लॉक कुछ स्क्रैच संशोधनों में मौजूद है, जैसे कि स्नैप!। हालाँकि, इसे निम्नलिखित कोड के साथ हल किया जा सकता है, जो केवल संख्याओं के लिए काम करता है:
((true::grey)*<boolean::grey>)+((false::grey)*<not<boolean::grey>>)
या यह, जो किसी भी तर्क प्रकार के लिए काम करता है:
if <boolean::grey> then set [report v] to (true::grey) else set [report v] to (false::grey) end