खोज…


वाक्य - विन्यास

  • अगर अभिव्यक्ति ... अंत
  • अगर अभिव्यक्ति ... और ... अंत
  • अगर अभिव्यक्ति ... अन्य अभिव्यक्ति ... अंत
  • अगर अभिव्यक्ति ... और अभिव्यक्ति ... और ... अंत

पैरामीटर

पैरामीटर विवरण
अभिव्यक्ति एक अभिव्यक्ति जिसका तार्किक अर्थ है

अगर हालत

स्थितियां कोड के लगभग किसी भी हिस्से का एक मूलभूत हिस्सा हैं। उनका उपयोग कोड के कुछ हिस्सों को केवल कुछ स्थितियों में निष्पादित करने के लिए किया जाता है, लेकिन अन्य नहीं। आइए मूल वाक्य रचना को देखें:

a = 5;
if a > 10    % this condition is not fulfilled, so nothing will happen
    disp('OK')
end

if a < 10    % this condition is fulfilled, so the statements between the if...end are executed
    disp('Not OK')
end

आउटपुट:

Not OK

इस उदाहरण में हम देखते हैं कि if 2 भाग होते हैं: शर्त, और शर्त सही होने पर चलाने के लिए कोड। कोड सब कुछ शर्त के बाद और उसके end से पहले लिखा जाता है if । पहली शर्त पूरी नहीं हुई थी और इसलिए इसके भीतर कोड निष्पादित नहीं किया गया था।

यहाँ एक और उदाहरण है:

a = 5;
if a ~= a+1        % "~=" means "not equal to"
    disp('It''s true!') % we use two apostrophes to tell MATLAB that the ' is part of the string
end

ऊपर दी गई शर्त हमेशा सत्य होगी, और आउटपुट प्रदर्शित करेगा It's true!

हम यह भी लिख सकते हैं:

a = 5;
if a == a+1    % "==" means "is equal to", it is NOT the assignment ("=") operator
    disp('Equal')
end

इस बार हालत हमेशा गलत है, इसलिए हम आउटपुट प्राप्त कभी नहीं होगा Equal

ऐसी स्थितियों के लिए बहुत अधिक उपयोग नहीं किया जाता है जो हमेशा सही या गलत होती हैं, क्योंकि यदि वे हमेशा झूठी होती हैं तो हम कोड के इस हिस्से को हटा सकते हैं, और यदि वे हमेशा सही होते हैं तो शर्त की आवश्यकता नहीं है।

IF-ELSE स्थिति

कुछ मामलों में हम अगर हालत झूठी है किसी वैकल्पिक कोड, को चलाने के लिए इस हम वैकल्पिक उपयोग करना चाहते हैं else हिस्सा:

a = 20;
if a < 10
    disp('a smaller than 10')
else
    disp('a bigger than 10')
end

यहाँ हम देखते हैं कि क्योंकि a से छोटा नहीं है 10 कोड के दूसरे भाग, के बाद else को मार डाला है और हम आउटपुट प्राप्त a bigger than 10 । अब आइए एक और कोशिश देखें:

a = 10;
if a > 10
    disp('a bigger than 10')
else
    disp('a smaller than 10')
end

इस उदाहरण अगर शो है कि हम जाँच नहीं किया a 10 से वास्तव में छोटा होता है, और क्योंकि हालत केवल अभिव्यक्ति की जाँच के रूप में यह है कि हम एक गलत संदेश मिलता है, और किसी भी मामले जो ऐसा नहीं करता सच के बराबर होती है ( a = 10 ) का कारण होगा दूसरा भाग निष्पादित किया जाएगा।

इस तरह की त्रुटि शुरुआती और अनुभवी प्रोग्रामर दोनों के लिए एक बहुत ही सामान्य नुकसान है, खासकर जब स्थिति जटिल हो जाती है, और इसे हमेशा ध्यान में रखा जाना चाहिए

IF-ELSEIF स्थिति

का उपयोग करते हुए else हम कुछ कार्य कर सकते हैं जब हालत संतुष्ट नहीं है। लेकिन क्या होगा अगर हम मामले में दूसरी शर्त की जांच करना चाहते हैं कि पहला झूठ था। हम इसे इस तरह से कर सकते हैं:

a = 9;
if mod(a,2)==0   % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
else
    if mod(a,3)==0
        disp('3 is a divisor of a')
    end
end

OUTPUT:
3 is a divisor of a

इसे "नेस्टेड कंडीशन" भी कहा जाता है, लेकिन यहां हमारे पास एक विशिष्ट मामला है जो कोड पठनीयता में सुधार कर सकता है, और एर त्रुटि के लिए मौका कम कर सकता है - हम लिख सकते हैं:

a = 9;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

elseif का उपयोग करके हम उसी स्थिति के भीतर एक और अभिव्यक्ति की जांच करने में सक्षम हैं, और यह एक कोशिश तक सीमित नहीं है:

a = 25;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
5 is a divisor of a

अतिरिक्त देखभाल जब उपयोग करने के लिए चुनने के लिए लिया जाना चाहिए elseif लगातार, क्योंकि उनमें से केवल एक सब से निष्पादित किया जाएगा if करने के लिए end ब्लॉक। इसलिए, हमारे उदाहरण में, यदि हम a सभी भाजक प्रदर्शित करना चाहते हैं (उन लोगों से जो हम स्पष्ट रूप से जांचते हैं) ऊपर का उदाहरण अच्छा नहीं होगा:

a = 15;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

न केवल 3, बल्कि 5 भी 15 का विभाजक है, लेकिन जो भाग 5 से विभाजन की जांच करता है, वह नहीं पहुंचता है यदि इसके ऊपर का कोई भी भाव सत्य था।

अंत में, हम एक जोड़ सकते हैं else सब के बाद (और केवल एक) elseif की स्थिति एक कोड जब स्थिति से कोई भी ऊपर से मुलाकात कर रहे निष्पादित करने के लिए:

a = 11;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
else
    disp('2, 3 and 5 are not divisors of a')
end

OUTPUT:
2, 3 and 5 are not divisors of a

घोंसले की स्थिति

जब हम किसी अन्य शर्त के भीतर एक स्थिति का उपयोग करते हैं तो हम कहते हैं कि स्थितियां "नेस्टेड" हैं। नेस्टेड शर्तों में से एक विशेष मामले के द्वारा दिया जाता है elseif विकल्प है, लेकिन वहाँ नेस्टेड शर्तों को उपयोग करने के लिए कई अन्य तरीके हैं। आइए निम्नलिखित कोड की जांच करें:

a = 2;
if mod(a,2)==0    % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
    if mod(a,3)==0
        disp('3 is a divisor of a')
        if mod(a,5)==0
            disp('5 is a divisor of a')
        end
    end
else
    disp('a is odd')
end 

के लिए a=2 , उत्पादन होगा a is even , जो सही है। A a=3 , आउटपुट a is odd , जो सही भी है, लेकिन 3 के a का भाजक होने पर चेक से चूक जाता a । ऐसा इसलिए होता है क्योंकि स्थितियां नेस्टेड होती हैं, इसलिए केवल अगर पहला true , तो हम भीतर तक चले जाते हैं, और यदि a विषम है, तो आंतरिक स्थितियों में से कोई भी जाँच नहीं की जाती है। यह कुछ हद तक elseif के उपयोग के विपरीत है जहां केवल अगर पहली स्थिति false तो हम अगले एक की जांच करते हैं। 5 द्वारा विभाजन की जाँच के बारे में क्या? केवल एक संख्या जो एक भाजक के रूप में 6 है (2 और 3 दोनों) 5 द्वारा विभाजन के लिए जाँच की जाएगी, और हम परीक्षण कर सकते हैं और देख सकते हैं कि a=30 लिए आउटपुट है:

a is even
3 is a divisor of a
5 is a divisor of a

हमें दो बातों पर भी ध्यान देना चाहिए:

  1. प्रत्येक के लिए सही स्थान पर end की स्थिति if अपेक्षित परिस्थितियों के सेट के लिए महत्वपूर्ण है, तो यहां इंडेंटेशन एक अच्छी सिफारिश से अधिक है।
  2. else कथन की स्थिति भी महत्वपूर्ण है, क्योंकि हमें यह जानना होगा कि if (और उनमें से कई हो सकते हैं) तो हम अभिव्यक्ति के मामले में कुछ करना चाहते हैं यदि false

आइए एक और उदाहरण देखें:

for a = 5:10    % the FOR loop execute all the code within it for every a from 5 to 10
    ch = num2str(a);    % NUM2STR converts the integer a to a character
    if mod(a,2)==0
        if mod(a,3)==0
            disp(['3 is a divisor of ' ch])
        elseif  mod(a,4)==0
            disp(['4 is a divisor of ' ch])
        else
            disp([ch ' is even'])
        end
    elseif mod(a,3)==0
        disp(['3 is a divisor of ' ch])
        
    else
        disp([ch ' is odd'])
    end
end

और उत्पादन होगा:

5 is odd
3 is a divisor of 6
7 is odd
4 is a divisor of 8
3 is a divisor of 9
10 is even

हम देखते हैं कि हमें 6 नंबरों के लिए केवल 6 लाइनें मिलीं, क्योंकि स्थितियां इस तरह से नेस्टेड हैं, जो प्रति नंबर केवल एक प्रिंट सुनिश्चित करती हैं, और यह भी (हालांकि आउटपुट से सीधे नहीं देखा जा सकता है) कोई अतिरिक्त चेक प्रीफ़ॉर्म नहीं किया जाता है, इसलिए यदि एक संख्या यह भी नहीं है कि यह जांचने का कोई मतलब नहीं है कि 4 इसमें से एक है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow