📘 CodingMarble Learn

उपप्रोग्राम: फ़ंक्शन, पैरामीटर और तार्किक फ़ंक्शन

उपप्रोग्राम कोड का नाम वाला हिस्सा है जो एक काम करता है। आप उसे एक बार लिखते हैं और जितनी बार चाहें बुलाते हैं। वह पैरामीटर (इनपुट) ले सकता है। प्रक्रिया केवल काम करती है; फ़ंक्शन return से मान भी लौटाता है। तार्किक फ़ंक्शन True या False लौटाता है और उसे सीधे if या while में इस्तेमाल कर सकते हैं।

🎬 कदम-दर-कदम कहानी

  1. समस्या। वही 4 पंक्तियाँ तीन बार नक़ल की गईं। 12 पंक्तियाँ, और ग़लती तीन जगह सुधारनी पड़ेगी।
  2. हल। पंक्तियाँ एक बार लिखिए और उन्हें नाम दीजिए। फिर बुलाइए: square(2), square(5), square(7)।
  3. पैरामीटर। परिभाषा का नाम पैरामीटर है। कॉल का मान तर्क (आर्ग्युमेंट) है। स्लाइडर चलाइए।
  4. प्रक्रिया या फ़ंक्शन। प्रक्रिया केवल काम करती है। फ़ंक्शन कॉल करने वाले को मान लौटाता है।
  5. तार्किक फ़ंक्शन। यह केवल True या False लौटाता है। is_even(7) False है, is_even(8) True है।
  6. आपकी बारी। square, maximum या is_even चुनिए। a और b तय कीजिए। नतीजे का अनुमान लगाइए, फिर जाँचिए।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

पंक्तियों की दोबारा नक़ल क्यों न कर लें?

नक़लें हर जगह सुधारनी पड़ती हैं, और एक छूट जाना आसान है। तीन मीनारें देखिए: 12 पंक्तियाँ।

उपप्रोग्राम को कितनी बार बुला सकते हैं?

जितनी बार चाहें। एक परिभाषा, कई कॉल: एक मशीन में जाते तीन तीर देखिए।

x और 5 में क्या फ़र्क़ है?

x पैरामीटर है (परिभाषा का नाम); 5 तर्क है (मान)। तर्क बदलने के लिए स्लाइडर चलाइए।

लौटाया गया मान कहाँ जाता है?

कॉल की जगह वापस, ताकि अगली पंक्ति में इस्तेमाल हो सके। सुनहरे ब्लॉक को लौटते देखिए।

is_even(7) False क्यों देता है?

क्योंकि 7 ब्लॉकों के सब जोड़े नहीं बन सकते: एक अकेला बचता है और लैंप लाल हो जाता है।

maximum(a, b) का अपना उत्तर कैसे जाँचूँ?

खुद खेलिए चरण में maximum चुनिए और सुनहरी मीनार को अपने अनुमान से मिलाइए।

उपप्रोग्राम क्या है और क्यों?

उपप्रोग्राम प्रोग्राम का अपने नाम वाला हिस्सा है जो एक काम करता है। कुछ भाषाएँ इसे प्रक्रिया (procedure), कुछ फ़ंक्शन, कुछ मेथड कहती हैं। आप उसे एक बार परिभाषित करते हैं और जब चाहें कॉल (बुलाना) करते हैं।

उपप्रोग्राम क्यों?

परिभाषित करना और कॉल करना

Python में उपप्रोग्राम def से शुरू होता है, फिर नाम, कोष्ठक, कोलन और भीतर खिसका हुआ हिस्सा। इस्तेमाल करने के लिए नाम को कोष्ठक के साथ लिखिए: यह कॉल है।

def square(x):
    return x * x

print(square(5))   # 25

प्रोग्राम जब square(5) पर पहुँचता है, तो उपप्रोग्राम में कूदता है, उसकी पंक्तियाँ चलाता है और उसी जगह लौट आता है। उपप्रोग्राम उसे बुलाने वाली पंक्ति चलने से पहले परिभाषित होना चाहिए।

पैरामीटर और तर्क (आर्ग्युमेंट)

उपप्रोग्राम को अक्सर इनपुट चाहिए। परिभाषा में लिखे नाम उसके पैरामीटर हैं (जैसे def square(x) में x)। कॉल में आप जो मान देते हैं वे तर्क (आर्ग्युमेंट) हैं (जैसे square(5) में 5)। पहला तर्क पहले पैरामीटर में जाता है, दूसरा दूसरे में, और इसी तरह, इसलिए क्रम मायने रखता है।

उपप्रोग्राम के भीतर बने चर और उसके पैरामीटर स्थानीय (लोकल) होते हैं: वे केवल उपप्रोग्राम चलते समय जीवित रहते हैं। प्रोग्राम के दूसरे हिस्से उन्हें नहीं देख सकते। इसलिए दो अलग उपप्रोग्राम बिना टकराव के x जैसा नाम इस्तेमाल कर सकते हैं।

उपप्रोग्राम के कई पैरामीटर हो सकते हैं: def area(a, b): return a * b और area(3, 5) का उत्तर 15 है। उसके कोई पैरामीटर न भी हों: def hello(): print("Hi")।

प्रक्रिया और फ़ंक्शन: return

प्रक्रिया कोई क्रिया करती है (जैसे एक पंक्ति छापना) और कुछ वापस नहीं देती। फ़ंक्शन कुछ निकालता है और return से मान वापस देता है। लौटाए गए मान को सहेजा जा सकता है या व्यंजक में इस्तेमाल किया जा सकता है:

def add(a, b):
    return a + b

total = add(2, 3) + 1   # total = 6

Python को return मिलते ही उपप्रोग्राम तुरंत रुक जाता है और मान लौटा देता है। जिस उपप्रोग्राम में return नहीं होता, वह विशेष मान None लौटाता है। ध्यान दीजिए: print मान को स्क्रीन पर दिखाता है; return मान प्रोग्राम को सौंपता है। दोनों एक नहीं हैं।

तार्किक फ़ंक्शन

तार्किक (बूलियन) फ़ंक्शन केवल True या False लौटाता है। वह अपने तर्कों के बारे में हाँ/नहीं वाले प्रश्न का उत्तर देता है। अच्छे नाम is_ या has_ से शुरू होते हैं।

def is_even(n):
    return n % 2 == 0

if is_even(10):
    print("even")

कॉल को सीधे शर्त के भीतर इस्तेमाल कर सकते हैं: if is_even(n):। दो और उदाहरण:

def in_range(x, a, b):
    return a <= x <= b

def is_leap(y):
    return (y % 4 == 0 and y % 100 != 0) or y % 400 == 0

तार्किक फ़ंक्शन मुख्य प्रोग्राम को छोटा रखते हैं: कठिन जाँच साफ़ नाम के पीछे छिप जाती है और उसे दोबारा इस्तेमाल कर सकते हैं, जैसे सूची में कितनी संख्याएँ जाँच में पास होती हैं गिनने के लिए।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. def square(x): return x * x के साथ square(4) + square(3) क्या है?

square(4) = 16 और square(3) = 9। 16 + 9 = 25।

2. def area(a, b): return a * b। area(3, 5) क्या लौटाता है?

a = 3 और b = 5, इसलिए 3 × 5 = 15 लौटाता है।

3. def maximum(a, b): अगर a > b तो return a, नहीं तो return b। maximum(7, 12) क्या है?

7 > 12 False है, इसलिए else वाला भाग चलता है और 12 लौटता है।

4. is_even(n) n % 2 == 0 लौटाता है। is_even(9) और is_even(10) निकालिए।

9 % 2 = 1, इसलिए 1 == 0 False है। 10 % 2 = 0, इसलिए 0 == 0 True है। उत्तर: False और True।

5. (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 से is_leap(2100), is_leap(2000) और is_leap(2024) जाँचिए।

2100: 4 और 100 से विभाज्य, 400 से नहीं, इसलिए False। 2000: 400 से विभाज्य, इसलिए True। 2024: 4 से विभाज्य, 100 से नहीं, इसलिए True।

6. def f(x): return 2 * x + 1। f(f(2)) क्या है?

f(2) = 2 × 2 + 1 = 5। फिर f(5) = 2 × 5 + 1 = 11।

आम गलतियाँ

अभ्यास क्विज़

1. कॉल में दिए मान, जैसे square(5) का 5, को क्या कहते हैं?
2. तार्किक फ़ंक्शन क्या लौटाता है?
3. फ़ंक्शन से मान वापस देने वाला कीवर्ड कौन-सा है?
4. उपप्रोग्राम का क्या फ़ायदा है?
5. def f(x): return x + 2। f(5) क्या है?

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

पैरामीटर और तर्क में क्या अंतर है?

पैरामीटर परिभाषा का नाम है, जैसे def square(x) में x। तर्क वह असली मान है जो आप कॉल में देते हैं, जैसे square(5) में 5।

प्रक्रिया और फ़ंक्शन में क्या अंतर है?

प्रक्रिया कोई क्रिया करती है और कुछ नहीं लौटाती। फ़ंक्शन ऐसा मान लौटाता है जिसे प्रोग्राम इस्तेमाल कर सके। Python में दोनों def से लिखे जाते हैं; फ़ंक्शन में return की पंक्ति होती है।

तार्किक फ़ंक्शन किसलिए इस्तेमाल होता है?

वह हाँ/नहीं वाले प्रश्न का उत्तर देता है, जैसे is_even(n) या is_prime(n), और True या False लौटाता है। उसे सीधे if या while के भीतर इस्तेमाल कर सकते हैं।

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ