From Test-Scratch-Wiki

दोहराएँ ()
repeat (10)
Category नियंत्रण
Type सी

दोहराएँ () ब्लॉक एक नियंत्रण ब्लॉक और एक सी ब्लॉक है। इस ब्लॉक के अंदर रखे गए ब्लॉक स्क्रिप्ट को जारी रखने की अनुमति देने से पहले एक निश्चित संख्या में लूप करेंगे।

अगर दशमलव डाला जाता है, तो संख्या को गोल किया जाता है। इसके अलावा, जब कोई ऋणात्मक संख्या या कोई गैर-संख्या इनपुट की जाती है, तो लूप नहीं चलता है, और अगर "इन्फिनिटी" इनपुट की जाती है, तो ब्लॉक हमेशा के लिए चलता है।

इस ब्लॉक में थोड़ी देरी होती है, इसलिए निष्पादन की इष्टतम गति के लिए, सिंगल फ़्रेम ब्लॉक स्टैक का उपयोग किया जाना चाहिए।

उदाहरण उपयोग

चूंकि यह ब्लॉक कोड के टुकड़ों को लूप करता है, इसलिए इसका उपयोग स्थान और समय बचाने के लिए व्यापक रूप से किया जाता है। कुछ सामान्य उपयोग हैं:

  • रिपीट () ब्लॉक (और दोहराओ जब तक () ब्लॉक) का उपयोग करके कोड

— को दोहराना बहुत सारी स्क्रिप्टिंग बचा सकता है।

repeat (10)
 change [variable v] by (1)
 next costume
 if <touching (Wall v)?> then
  erase all
  broadcast (Reload v)
 else
  stamp
 end
  • एनिमेशन

— में प्रत्येक पोशाक परिवर्तन और देरी को अलग-अलग कोड करने के बजाय, रिपीट () ब्लॉक (अगली पोशाक ब्लॉक के साथ) का उपयोग किया जा सकता है। इससे अनावश्यक स्क्रिप्टिंग कम हो सकती है।

repeat (8)
 wait (0.05) secs
 next costume
  • उदाहरण के लिए, सतत जांच

— एक स्प्राइट लगातार गति कर सकता है और समझ सकता है।

repeat (20)
 change y by (3)
 if <touching (edge v)?> then
  change [color v] effect by (75)
  • एक दोहराएँ () ब्लॉक को दूसरे के अंदर रखना "नेस्टिंग" कहलाता है। कुल दोहराव दो repeat () ब्लॉक इनपुट का गुणनफल होगा। इस मामले में, नेस्टेड लूप १० गुणा १०, या १०० डॉट्स बनाते हैं।
set pen size to (2)
go to x:(-100) y:(100)
repeat (10)
    repeat (10)
        pen down
        pen up
        change x by (20)
    end
    set x to (-100)
    change y by (-20)
end

पुनरावृत्ति

लूप अपने इनपुट स्लॉट में दी गई संख्या के अनुसार बार-बार दोहराएगा। यदि इनपुट पूर्ण संख्या नहीं है, तो इसे निकटतम संख्या में पूर्णांकित किया जाएगा। यदि इनपुट शून्य से कम या बराबर है, या कोई संख्या नहीं है, तो यह इसके अंदर कोई स्क्रिप्ट नहीं चलाएगा। यदि इनपुट अनंत है, तो यह हमेशा के लिए चलेगा।

विलंब

लूप के प्रत्येक पुनरावृत्ति के बाद, अगले पुनरावृत्ति के जारी रहने से पहले १/३० सेकंड या एक फ्रेम की देरी जोड़ी जाती है। इससे एनिमेशन को अधिक सुचारू रूप से चलाने की अनुमति मिलती है। यदि कोई इस देरी को नहीं चाहता है, तो उन्हें टर्बो मोड चालू करना होगा या इसे स्क्रीन रिफ्रेश के बिना चलाने के लिए सेट किए गए कस्टम ब्लॉक के अंदर रखना होगा।

समाधान

इस ब्लॉक को निम्नलिखित कोड के साथ दोहराया जा सकता है:

set [counter v] to (0)
set [number of times v] to (. . .::grey) //यह दोहराने की संख्या है
if <not<(number of times)<(0)>> then
 repeat until <(counter) = ([ceiling v] of (number of times)
  . . .
  change [counter v] by (1)
 end
end
Cookies help us deliver our services. By using our services, you agree to our use of cookies.