डौग लॉयड: आप शुरू के रूप में कार्यों के साथ काम कर रहा है, एक और बात बनने जा रहा है समझने के लिए वास्तव में महत्वपूर्ण है, जो चर गुंजाइश की अवधारणा है। तो गुंजाइश है एक एक चर की विशेषता कि जो कार्य से परिभाषित करता है उस चर पहुँचा जा सकता है। सी में दो प्राथमिक scopes कर रहे हैं, स्थानीय चर और वैश्विक चर। अब, स्थानीय चर कर सकते हैं केवल कार्यों के भीतर पहुँचा जा जिसमें वे पैदा कर रहे हैं। वे हर दूसरे से पहुँचा नहीं जा सकता अपने कार्यक्रम में मौजूद है कि समारोह, में केवल समारोह जो इसे बनाया गया था। पर वैश्विक चर, दूसरी ओर, पहुँचा जा सकता है कार्यक्रम में किसी भी समारोह से। और उस के लिए कारण है वे अंदर बनाया नहीं कर रहे हैं, क्योंकि किसी विशेष समारोह का। हम में से बाहर उन्हें घोषणा काम करता है, सभी के लिए जो हर समारोह जानता है, जहां इसका मतलब है कि यह है और उपयोग और इसे हेरफेर कर सकते हैं। अब तक पाठ्यक्रम में आप बहुत सुंदर है बहुत विशेष रूप से काम कर रहा स्थानीय चर के साथ। यहाँ एक का एक उदाहरण बहुत, बहुत है सरल मुख्य समारोह और एक बहुत ही सरल हम लिखा है कि अतिरिक्त कार्य करते हैं। इस मामले में, x जो मैं सिर्फ हरे रंग की है इलाके को उजागर करने के लिए या उस चर की गुंजाइश है, ट्रिपल समारोह के लिए स्थानीय है। मुख्य सब पर एक्स का उल्लेख नहीं कर सकते हैं। यह है कि यह क्या है पता नहीं है। कोई अन्य समारोह, वास्तव में, अगर हम यहाँ में अतिरिक्त कार्यों के लिए किया था एक्स का उल्लेख सकता है। इसी तरह, मैं जो परिणाम नीले रंग का है, केवल मुख्य करने के लिए स्थानीय है। केवल मुख्य जानता है कि क्या चर परिणाम है। ट्रिपल इसका इस्तेमाल नहीं कर सकते हैं। अब जैसा कि मैंने कहा, वैश्विक चर मौजूद है। आपको लगता है कि चर घोषित हैं किसी भी समारोह के बाहर, में कार्यों के सभी कार्यक्रम में यह उल्लेख कर सकते हैं। तो इस मामले में मैं में प्रकाश डाला है एक वैश्विक चर घोषणा हरे। इस मामले में, चर जा रहा घोषित बस के लिए, वैश्विक कहा जाता है इसके बारे में बहुत स्पष्ट है। यह प्रकार नाव की है। और मुझे लगता है कि यह मूल्य 0.5050 आवंटित। आप मुख्य में और में नोटिस हूँ कि ट्रिपल, मैं वैश्विक का उल्लेख करने में सक्षम हूँ। और वास्तव में, मैं इस कार्यक्रम के माध्यम से जाना है, तो , मुख्य पहली कॉल ट्रिपल संकेत के रूप में, 3 से वैश्विक ट्रिपल पलता, जो 1.5-कुछ करने के लिए अपने मूल्य निर्धारित करता है, 1.51 या ऐसा कुछ है, और तब मुख्य भी मूल्य बाहर प्रिंट के वैश्विक। 0.5050 बाहर मुद्रित नहीं होगा तो मुख्य, यह , 1.51 ग्लोबल टाइम्स 3 बाहर प्रिंट होगा। तो आप सावधान रहना है जब मिल गया है आप वैश्विक चर के साथ काम कर रहे हैं। वे में बहुत लचीला कर रहे हैं जानकारी पारित करने में सक्षम किया जा रहा है चारों ओर है, ताकि हर समारोह में इसका इस्तेमाल कर सकते हैं, यह भी कुछ हो सकता है खतरनाक परिणामों एक समारोह में परिवर्तन करता है, तो एक चर के मूल्य जैसा कि आप उम्मीद से पहले इसे परिवर्तित करने की। क्यों इस तरह के अंतर फर्क पड़ता है? हम क्यों परवाह करते हैं कुछ चर है कि क्या स्थानीय कर रहे हैं और दूसरों को वैश्विक हैं? खैर, सबसे अधिक भाग के लिए, स्थानीय चर सी में मूल्य द्वारा पारित क्या कहा जाता है कर रहे हैं हम एक समारोह फोन करना है। इसका क्या मतलब है? खैर, एक चर पारित हो जाता है जब मूल्य, कॉल प्राप्त करने वाला, द्वारा जो समारोह कहने का एक और तरीका है उस चर प्राप्त कर रहा है कि एक निवेश के रूप में पारित हो जाता है, यह वास्तव में उस चर में ही प्राप्त नहीं है। यह अपने आप ही प्राप्त करता है यह की नकल के साथ काम करने के लिए। यह एक बहुत महत्वपूर्ण अंतर है। हम सिर्फ एक दूसरे पहले देखा था वैश्विक चर के साथ कि, हम वैश्विक हेरफेर यदि एक समारोह में चर, प्रभाव उस में एक समारोह में किया जाता है हर दूसरे समारोह के माध्यम से। लेकिन स्थानीय चर के साथ, यह सच नहीं है। प्रत्येक समारोह जब यह इनपुट के रूप में चर प्राप्त करता है उन चर की प्रतियां प्राप्त करते हैं, नहीं चर खुद को। तो यह है कि के पक्ष प्रभाव क्या है? इसका मतलब है कि चर में फोन करने वाले, समारोह है कि समारोह कॉल कर रहा है, है अपरिवर्तित आप इसे ओवरराइड जब तक। उदाहरण के लिए, इस कोड में foo बिल्कुल नहीं बदला है। इंट foo 4 के बराबर होती है, ट्रिपल फोन foo की, ट्रिपल के अंदर, हम उस foo होगा उम्मीद करेंगे 3 से गुणा और वापस आ जाना, लेकिन वास्तव में कोई प्रभाव नहीं है। यहाँ हालांकि, एक बहुत ही सूक्ष्म अंतर। यह हम चाहते असर करता है। आप क्यों देखते हैं? हम मुख्य इस समय में Foo अधिभावी रहे हैं। तो पूर्णांक foo 4, foo के बराबर ट्रिपल Foo, हम उस फोन कर, ट्रिपल अपनी खुद की नकल हो जाता है Foo, 4 की अपनी खुद की नकल की। यह जो कुछ भी 4 गुना 3, या वापसी का कहना है चर बार 3 में पारित हो जाता है। और फिर हम वापसी आवंटित ट्रिपल का मूल्य फिर से foo करने के लिए। तो यह वास्तव में foo के ऊपर लिख होगा। यह करने के लिए एक ही रास्ता है स्थानीय चर के साथ इस। तो अब हम एक और जोड़ने अगर यहाँ कोड की लाइन मुख्य का अंत करने के लिए पर , foo के मूल्य प्रिंट आउट यह वास्तव में 12 से बाहर प्रिंट होगा। चर गुंजाइश आम तौर पर है एक समस्या की बहुत ज्यादा नहीं आप सभी का नाम है, तो आपके चर अलग अलग चीजें हैं। लेकिन यह बुरा की तरह मिल सकता है एक ही चर नाम यदि कई कार्यों में प्रकट होता है, जो बहुत कुछ नहीं होगा। क्या आपने कभी सोचा में काम करते हैं असली दुनिया जहां आप सहयोगात्मक पर काम कर रहे हैं अलग-अलग टीमों में कार्यक्रमों और लोग एक ही लिखने के लिए एक साथ काम कर रहे हैं कार्यक्रम या कार्यक्रमों के एक ही सेट, वे अक्सर चर का पुन: उपयोग करेंगे नाम, विशेष रूप से आम लोगों को इतने पर एक्स, वाई, मैं, जम्मू, और पसंद है। लेकिन जब चर है एक ही नाम, गुंजाइश मुद्दों थोड़ा पेचीदा मामला पार्स करने के लिए मिल सकता है। उदाहरण के लिए, क्या तुम जानते हो क्या बाहर मुद्रित किया जाएगा इस विशेष कार्यक्रम के अंत में? एक मिनट ले। वीडियो रोकें और पढ़ इस कार्यक्रम के माध्यम से। आप शीर्ष हम पर देख सकते हैं एक समारोह में घोषणा की है वेतन वृद्धि नामक एक समारोह के लिए। यही कारण है कि समारोह में एक ही लेता है पैरामीटर, हम एक्स फोन जो एक पूर्णांक। और यह एक पूर्णांक outputs। यही कारण है कि शुरुआत में वापसी प्रकार है। तो फिर हम लाइनों के मुख्य, एक जोड़ी है मुख्य में कोड है, जो की पिछले की एक प्रिंट बयान है। और कहा कि यहाँ सवाल है, याद है। क्या वास्तव में होने जा रहा है इस समारोह के अंत में मुद्रित? और फिर हम वास्तव में है नीचे दिए गए वेतन वृद्धि की परिभाषा। तो के माध्यम से कदम, एक मिनट ले कोड, चीजों को बाहर का पता लगा। आप पर मुद्रित किया जाएगा क्या जानते हैं इस विशेष कार्यक्रम के अंत में? ठीक है। उम्मीद है, आप कुछ ही सेकंड में ले लिया है कोशिश करते हैं और यह एक बाहर पार्स करने के लिए। आओ हम इसे साथ साथ करें। तो मैं वेतन वृद्धि के बाहर पार कर लिया है वहाँ शीर्ष पर घोषणा। यह एक व्याकुलता की तरह था। यह अपने आप ही चर नहीं है। यह अपने आप ही गुंजाइश नहीं है। यह सिर्फ एक समारोह घोषणा, इसलिए उद्देश्यों के लिए की क्या बाहर पार्स करने के लिए कोशिश कर रहा है इस कार्यक्रम में हो रहा है, हम के रूप में अच्छी तरह से सिर्फ इसे से बचने कर सकते हैं। अब हम इस मामले में है, इस समस्या मुश्किल है कारण हम में स्थानीय चर रहा है, क्योंकि मुख्य और वेतन वृद्धि, दोनों जिनमें से प्रत्येक की कहा जाता है एक्स। और निश्चित रूप से इस मुद्दे की जड़ है एक्स परिवर्तित हो जाता है जो बाहर suss करने की कोशिश और यह कैसे बदल प्राप्त करता है। इसलिए मैं हर उदाहरण रंग है एक्स के मुख्य लाल करने के लिए स्थानीय है कि। और मैं हर उदाहरण के रंग है एक्स कि नीले रंग की वेतन वृद्धि के लिए स्थानीय है। कि तीसरी लाइन में सूचना मुख्य रूप से, Y वेतन वृद्धि के बराबर होती है एक्स, कि वेतन वृद्धि नहीं किया जा रहा है पारित कर के मुख्य एक्स, या लाल एक्स। यह इसकी एक प्रति पारित कर दिया हो रही है। और यह केवल के साथ काम करने के लिए जा रहा है यह की है कि नकल, नीले एक्स। आप गणितीय रहे हैं झुका, तुम हो सकता है बजाय एक्स उप के रूप में इस बारे में सोचा है वेतन वृद्धि के लिए मुख्य और एक्स उप मैं के लिए मी। लेकिन यह एक ही विचार है। एक्स उप मीटर, या एक्स के लाल पिछली स्लाइड में, local-- हैं कि चर रहे हैं कि बजाय x का उदाहरण है मुख्य करने के लिए स्थानीय है, और एक्स उप मैं, या पिछली स्लाइड में नीले चर, एक्स के उदाहरण हैं कि वेतन वृद्धि के लिए स्थानीय कर रहे हैं। इसलिए, जब आप यह पता लगाने में सक्षम थे क्या अंत में मुद्रित इस समारोह? मैं डौग लॉयड हूँ, और इस CS50 है।