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)))