कि उपयोगकर्ता 42-सही दृष्टिकोण देखकर {
* "जबकि है"
* कोड तुल्यता "नहीं जब तक दोहराने" =:
do while (condition) # in other language
..statements..
endo
repeat{ # in R
..statements..
if(! condition){ break } # Negation is crucial here!
}
} किया दूसरों से पर्याप्त ध्यान नहीं मिलता है, मैं एक ठोस उदाहरण के माध्यम से जोर देता हूं और अपना दृष्टिकोण आगे बढ़ाता हूं। यदि कोई व्यक्ति समय-समय पर (!
या अस्वीकृति लेकर) की स्थिति को अस्वीकार नहीं करता है, तो कोड के पाठ्यक्रम के आधार पर विकृत स्थितियां (1. मूल्य दृढ़ता 2. अनंत लूप) मौजूद हैं।
गॉस में:
proc(0)=printvalues(y);
DO WHILE y < 5;
y+1;
y=y+1;
ENDO;
ENDP;
printvalues(0); @ run selected code via F4 to get the following @
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
आर में:
printvalues <- function(y) {
repeat {
y=y+1;
print(y)
if (! (y < 5)) {break} # Negation is crucial here!
}
}
printvalues(0)
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
मैं अभी भी जोर देते हैंdo-थोड़ी देर में हालत का निषेध के बिना, साल्सेडो के जवाब गलत है।कोई उपर्युक्त कोड में अस्वीकृति प्रतीक को हटाकर इसे देख सकता है।
स्रोत
2017-06-16 21:44:07
@ जेरिको और @ डीविन के उत्तरों के बीच का अंतर "बयान" मूल्यांकन के गीले में है। @ जेरिको के जवाब में, लूप कम से कम एक बार चलाया जाता है क्योंकि ब्रेक हालत "बयान" के बाद आता है। @ डीविन के जवाब में, यदि 'y' 5 से अधिक या बराबर से शुरू हुआ, तो लूप बिल्कुल नहीं चल पाएगा। जो आप पसंद करते हैं उस पर निर्भर करेगा कि क्या आप "कथन" को चलाने के लिए चाहते हैं या नहीं। –
निष्कर्ष में एक कथन कम से कम एक बार चलाता है तो बयानों पर वापस लूप करने से पहले स्थिति की जांच करता है। –
इसलिए, आप डू-लूप लूप के बजाए थोड़ी देर लूप का उपयोग कर सकते हैं, यदि आप सुनिश्चित करते हैं कि लूप (कथन) कम से कम एक बार लूप से पहले स्थिति को सत्य बनाकर चलाया जाता है (उदाहरण के लिए, एक टेम्पोरैरे चर के साथ और एक या कनेक्टिविटी या) जैसा कि डविन के जवाब में)। – Henrik