From Test-Scratch-Wiki
| यदि () तो | |
if <> then
 | |
| Category | नियंत्रण | 
| Type | सी | 
यदि () तो ब्लॉक एक नियंत्रण ब्लॉक और एक सी ब्लॉक है। यदि इसकी बूलियन शर्त सत्य है, तो इसके अंदर के ब्लॉक चलेंगे। यदि शर्त झूठी है, तो ब्लॉक के अंदर के ब्लॉक को अनदेखा कर दिया जाएगा। शर्त की केवल एक बार जाँच की जाती है; यदि ब्लॉक के अंदर स्क्रिप्ट चलने के दौरान शर्त झूठी हो जाती है, तो यह तब तक चलती रहेगी जब तक यह समाप्त नहीं हो जाती।
स्क्रैच २.०  से पहले, इस ब्लॉक को यदि (), या if <>::control कहा जाता था।
उदाहरण उपयोग
प्रोग्रामिंग में सबसे बुनियादी अनिश्चितता शर्तों की जाँच करना है। यह ब्लॉक स्क्रैच का ऐसा करने का मुख्य तरीका है; इसलिए इसका उपयोग लगभग सभी प्रोजेक्ट में किया जाता है। कुछ सामान्य उपयोगों में शामिल हैं:
- मूल्यों की तुलना करना
 
if <(answer) = [5]> then
    say [Correct!]
end
- जाँच करना कि इनपुट दिया गया है या नहीं
 
if <<mouse down?> and <(amount) = [1]>> then
    stamp
end
- जाँच करना कि क्या स्प्राइट पर क्लिक किया गया है
 
if <<mouse down?> and <touching (mouse-pointer v)?>> then end
- वस्तुओं को नियंत्रित करना
 
if <key (space v) pressed?> then
    broadcast (jump v)
end
when I receive [jump v]
repeat (6)
    change y by (2)
end
repeat (6)
    change y by (-2)
end
- यह सुनिश्चित करना कि सूची में कोई विशिष्ट आइटम शामिल हो
 
if <[list v] contains [1]?> then
    stop [all v]
end
समाधान
इस ब्लॉक को If () Then, Else ब्लॉक में दूसरे फ़ील्ड का उपयोग न करके दोहराया जा सकता है:
if <. . . :: grey> then
    . . .
else
end
वैकल्पिक रूप से, इस ब्लॉक को बूलियन स्थिति को रिपीट () ब्लॉक में पास करके दोहराया जा सकता है:
repeat <. . . :: grey> ... end
यह काम करता है क्योंकि अगर बूलियन सत्य है, तो यह एक बार चलेगा क्योंकि बूलियन को नंबर रिपोर्टर में डालने पर 1 के बराबर होता है, लेकिन अगर बूलियन गलत है, तो यह शून्य बार दोहराएगा जिसका मतलब है कि स्क्रिप्ट नहीं चलेगी।
आम समस्या
कुछ उपयोगकर्ता इस बात को लेकर भ्रमित हैं कि ब्लॉक का उपयोग करते समय स्क्रिप्ट क्यों काम नहीं करती है। इसके बारे में सबसे आम गलतफहमी में से एक यह है कि यह बार-बार किसी शर्त की जाँच करता है, इसलिए कुछ उपयोगकर्ता यह नहीं समझ पाते हैं कि स्क्रिप्ट केवल if ब्लॉक के साथ काम क्यों नहीं कर रही है। इसे बार-बार किसी शर्त की जाँच करने के लिए, इसे बस फॉरएवर लूप या किसी अन्य प्रकार की पुनरावृत्ति में डालने की आवश्यकता है।
forever if <. . . ::grey> then ...
किसी स्थिति को दोहराने के लिए दोहराओ जब तक () और दोहराएँ () ब्लॉक का भी उपयोग किया जा सकता है, लेकिन केवल एक सीमित समय के लिए।
repeat(6) if <. . . ::grey> then ...