From Test-Scratch-Wiki
() मॉड () ब्लॉक ("मॉड" "मॉड्यूलो" का संक्षिप्त रूप है) एक ऑपरेटर्स ब्लॉक और एक रिपोर्टर ब्लॉक है। यह शेष की रिपोर्ट करता है जब पहला इनपुट दूसरे से विभाजित होता है। उदाहरण के लिए, जब पहले इनपुट में १० और दूसरे में ३ डाला जाता है, तो ब्लॉक १ रिपोर्ट करेगा; १० को ३ से विभाजित करने पर १ शेष बचता है।
() मॉड () मानता है कि भागफल (विभाजन का परिणाम) को हमेशा पूर्णांकित किया जाता है, भले ही वह नकारात्मक हो। उदाहरण के लिए, -१० मॉड ३ = २, -१ नहीं, क्योंकि भागफल -१०/३ को -४ तक पूर्णांकित किया जाता है, जिससे सकारात्मक शेष बचता है। यह अधिकांश में शेष ऑपरेटर से भिन्न है प्रोग्रामिंग भाषाएं, जो नकारात्मक भागफल को ० तक पूर्णांकित करती हैं, लेकिन स्मॉलटॉक में "//" और "\\" संदेशों के अनुरूप होती हैं।
उदाहरण उपयोग
यदि कोई परियोजना विभाज्यता परीक्षण कर रही है, तो () मॉड () ब्लॉक उपयोगी हो सकता है।
() मॉड () ब्लॉक के लिए कुछ सामान्य उपयोग:
- जाँच करना कि क्या दो संख्याओं को बिना किसी शेषफल के विभाजित किया जाता है
if <((a) mod (b)) = [0]> then
say [a is divisible by b]
else
say [a is not divisible by b]
end
- यह जाँचना कि कोई संख्या पूर्ण संख्या है या नहीं
if <((a) mod (1)) = [0]> then
say [a is a whole number]
else
say [a is not a whole number]
end
- जाँच करना कि संख्याएँ विषम हैं या सम
if <((a) mod (2)) = [0]> then
say [a is an even number]
else
if <((a) mod (1)) = [0]> then
say [a is an odd number]
else
say [a is not an integer]
end
end
- किसी सूची को बार-बार दोहराना:
when gf clicked
set [x v] to [0]
forever
change [x v] by (1)
say (item (x) of [list v])
set [x v] to ((x) mod (length of [list v]))
end
- स्क्रॉल करते समय बैकग्राउंड-स्प्राइट्स का पुन: उपयोग करना
when gf clicked
forever
set x to (((x position) + (240)) mod (480))
end
समाधान
क्योंकि विभाजन का शेष भाग भागफल के भिन्नात्मक भाग से गुणा किया गया लाभांश है, ब्लॉक को निम्नलिखित कोड के साथ दोहराया जा सकता है (ए और बी इनपुट का प्रतिनिधित्व करते हैं):
((a) - ((b) * ([floor v] of ((a) / (b)))))
यदि वांछित परिणाम यह मानते हुए शेष है कि भागफल को ० की ओर पूर्णांकित किया गया है, तो एक स्क्रैचर या तो () मॉड () ब्लॉक का परिणाम ले सकता है और लाभांश को एक बार घटा सकता है, इस प्रकार:
if <((a) / (b)) < [0]> then
set [r v] to (((a) mod (b)) - (b))
else
set [r v] to ((a) mod (b))
end
या भागफल को ० तक पूर्णांकित करें और वहां से शेषफल की गणना करें:
set [q v] to ((a) / (b))
if <(q) > [0]> then
set [q v] to ([floor v] of (q))
else
set [q v] to ([ceiling v] of (q))
end
set [r v] to ((a) - ((b) * (q)))