Tip:
Highlight text to annotate it
X
>> स्पीकर 1: हाय सब लोग.
हम शुरू करने जा रहे हैं.
मैं लोगों को अभी भी जा रहे हैं अंदर छानने होने के लिए
लेकिन समय के हित में है, तो हम कर सकते हैं समय पर यहाँ से बाहर तुम लोगों को मिलता है,
हम शुरू करने जा रहे हैं.
CS50 क्विज 0 समीक्षा के लिए तो आपका स्वागत है.
एहसास नहीं है जो आप उन लोगों के लिए अभी तक, आप ने बुधवार को एक सवाल है.
वू हू.
>> आप शुरू कर दिया है और अभी तक का अध्ययन या नहीं किया है यह अभी तक मौजूद है कि महसूस नहीं किया है,
पिछले परीक्षाएँ और के बारे में सभी जानकारी अपनी प्रश्नोत्तरी cs50.net/quizzes पर हैं.
वहाँ पर कुछ बहुत अच्छी चीजें, वहाँ पिछले 10 से अतीत परीक्षाएँ
साल के रूप में अच्छी तरह से जानकारी इस प्रश्नोत्तरी और विषयों के बारे में
कि कवर किया जाएगा.
तो चलो शुरू हो जाओ.
>> तो तुम लोग, पहले याद कर सकते हैं वर्ग दाऊद के दिन उन लैंप पर था.
तो अनिवार्य रूप से चला जाता है कि सब कुछ एक कंप्यूटर के हुड है अधीन पर
बाइनरी में किया.
बाइनरी यह लग रहा है क्या मतलब है जैसे, 0 और 1.
यह दो मूल्यों है कि प्रतिनिधित्व किया जा सकता है.
>> तो सिर्फ अनुभाग के पहले दिन में जैसे दाऊद एक रोशनी पर बदल गया जब
पर प्रतिनिधित्व करने के लिए बल्ब, या 1, हमारे कंप्यूटर 0 और बाइनरी समझता
1 की, पर या बंद.
बाइनरी की मूल बातें.
हर जगह प्रतिनिधित्व किया है बेस दो में.
तो आप को 2-0 जोड़ सभी तरह से ऊपर 1-2.
>> अपने बाइनरी है क्या गणना करने के लिए दशमलव, तुम सिर्फ इस समीकरण का पालन करें
बात लिखें.
आप उन स्थानों में से किसी में एक 1 है, आप जो कुछ भी से गुणा
, उस में के बेस इसे जोड़ने के लिए, और आप दशमलव मिलता है.
तो यह आप भरोसा कैसे है बाइनरी में से 5.
बस हम पर क्या कर रहे थे जैसे पिछले स्लाइड, यह है कि तुम कैसे होगा
1 से 5 का प्रतिनिधित्व करते हैं.
>> इसी तरह, बस आप जोड़ सकते हैं और कर सकते हैं पसंद दशमलव या 10 आधार में घटाना, या
जोड़ सकते हैं पर वास्तव में किसी भी आधार, और बाइनरी में घटाना.
जब आप आप उम्मीद करेंगे कि क्या वास्तव में यह अधिक से अधिक के बराबर है, तो दो को जोड़
1 से, आप एक 1, यह एक 0 कर ले और बस, इसके अलावा उस तरह से करते हैं
जैसे आप नियमित रूप से उम्मीद करेंगे दशमलव या किसी भी अन्य आधार.
कूल.
>> जैसा कि मैंने पहले कहा, इस तरह सब कुछ है कि हमारे कंप्यूटर के हुड के नीचे चला जाता है
0 और 1, या बाइनरी में किया जाता है.
तो कैसे हम उदाहरण के लिए, व्यक्त करते हैं, पत्र या संख्याओं, या वर्ण?
और जवाब है कि ASCII है.
>> ASCII वर्ण के बीच एक मानचित्रण है हम सामान्य रूप में देखना होगा कि
एक के हजारों की तरह अंग्रेजी भाषा, सी,, डैश को रेखांकित, और
ऐसा कुछ.
और यह एक ASCII मूल्य के लिए नक्शे है कि.
एक ASCII मूल्य सिर्फ एक संख्या है कि आपके कंप्यूटर से समझा जा सकता है.
और बस की तरह आप के अलावा क्या कर सकते हैं संख्या के साथ घटाव, आप कर सकते हैं
ASCII मूल्यों के साथ उन्हें.
>> तो इस उदाहरण में, क्या इस बाहर प्रिंट होगा?
हाँ, तो सिर्फ एक अंतरिक्ष बी अंतरिक्ष सी अंतरिक्ष डी. जहाँ मेरे माउस जाना था?
आप 65 पर एक पूर्णांक परिभाषित कर सकते हैं नोटिस.
और आप का उपयोग कि बाहर मुद्रित करते हैं प्रतिशत सी, यह एक के रूप में है कि व्याख्या करेंगे
चरित्र और ए बाहर प्रिंट होगा
>> इसी तरह, आप घोषणा कर सकते हैं यह एक चार के रूप में.
और तुम प्रतिशत का उपयोग कर इसे बाहर प्रिंट जब सी, के रूप में यह है कि व्याख्या करेंगे
प्रतिशत डी. और सिर्फ तुम एक जोड़ सकते हैं जैसे संख्या, तुम अक्षर हैं जोड़ सकते हैं
इस मामले में ASCII मूल्यों,.
>> इसलिए हर किसी के लिए एक छोटी सी सूचक.
5, एक स्ट्रिंग के रूप में, नहीं करता वास्तव में 5 बराबर.
तो हम कैसे परिवर्तित हो सकता है पूर्णांक से 5 स्ट्रिंग 5?
किसी भी विचार?
हाँ.
>> तो हम एक स्ट्रिंग के रूप में 5 है, हम 0 घटाना कर सकते हैं.
और कहा कि हमें 5 देता हूँ.
और इसी तरह, हम एक के रूप में 5 है अगर पूर्णांक, स्ट्रिंग 0 करने के लिए कि जोड़ें.
और कहा कि हमें स्ट्रिंग 5 देता है.
कूल.
>> अब, एक जहां व्याख्यान करने के लिए वापस याद हम एल्गोरिदम के बारे में बात की थी.
तो कैसे हम वास्तव में एक कंप्यूटर चाहते हैं दिलचस्प बातें करते हैं?
तुम बस जोड़ने और घटाकर, पता संख्या और मुद्रण बातें बाहर नहीं है
उस रोमांचक.
आमतौर पर, हम अपने कंप्यूटर करना चाहते हैं एल्गोरिथ्म किसी तरह का प्रदर्शन करते हैं.
कुछ एक छोटे से अधिक जटिल सिर्फ साधारण अंकगणित से.
>> एक एल्गोरिथ्म कदम सेट से सिर्फ एक कदम है कैसे प्रदर्शन करने के लिए निर्देश की
एक निश्चित कार्य -
सिर्फ एक नुस्खा की तरह.
आप का पहला दिन याद कर सकते हैं दाऊद हमें एक कमरे में गिनती की थी, जहां क्लास
लोगों को और कितने लोगों की कमरे में थे.
आप गिनती करने के लिए इस्तेमाल किया जा सकता है एक के बाद एक.
1, 2, 3, 4.
उस मामले में, एक रेखीय समय एल्गोरिथ्म.
>> लेकिन दाऊद के लिए एक एल्गोरिथ्म शुरू की आप कमरे में लोगों की गिनती करने के लिए
हर कोई खड़ा है, जहां आप कहते हैं आपके किसी अन्य व्यक्ति के लिए नंबर, कि जोड़
संख्या ऊपर, और एक व्यक्ति नीचे बैठता है.
और तुम उस दोहराएँ.
कि एल्गोरिथ्म का एक प्रकार है.
हम विश्लेषण कर सकते हैं कि कैसे एक कुशल यह समय की दौड़ पर एल्गोरिथ्म आधारित है.
लेकिन हम एक छोटा सा बात करेंगे बाद में उस के बारे में अधिक.
>> इतना सब एल्गोरिदम भी कर सकते हैं pseudocode में लिखा जा.
Pseudocode सिर्फ एक अंग्रेजी की तरह है प्रतिनिधित्व करने के लिए प्रयोग किया जाता वाक्यविन्यास
एक प्रोग्रामिंग भाषा.
उदाहरण के लिए, हम एक उपयोगकर्ता पूछना चाहता था अगर मेरी पसंदीदा संख्या अनुमान करने के लिए, हम
जैसे pseudocode हो सकता है.
>> एक उपयोगकर्ताओं को लगता है कि हो जाओ.
अनुमान सही है, तो उन्हें बताना वे सही कर रहे हैं, और उन्हें बता
वे सही नहीं कर रहे हैं.
और pseudocode आसानी से करने का एक तरीका है एक विचार या एक एल्गोरिथ्म का प्रतिनिधित्व.
तो अब हम वास्तव में लिखने के लिए चाहते हो सकता है इस भाषा में है कि कंप्यूटर
समझ सकता है.
इसलिए हम अपने pseudocode लिखने के लिए और कर सकता है स्रोत कोड में है कि व्याख्या.
>> अब तक, स्रोत कोड का पालन करना होगा की एक निश्चित वाक्यविन्यास के लिए
एक प्रोग्रामिंग भाषा.
और अब तक, CS50 में, हम है ज्यादातर सी का उपयोग किया गया.
इसलिए इस सी के लिए स्रोत कोड हो सकता है.
बाद में पाठ्यक्रम में, तुम रात में आ गए अन्य प्रोग्रामिंग के साथ संपर्क में
PHP जैसी भाषाओं.
या फिर आप भी अन्य वर्गों, यदि आप ले जावा, अजगर, या भी OCML कर सकता है.
लेकिन हमारे ग प्रोग्राम भाषा में, यह है हम के लिए स्रोत कोड लिख सकते हैं कैसे
pseudocode एल्गोरिथ्म कि मैं सिर्फ पहले बताया.
>> तो कैसे अपने कंप्यूटर वास्तव में करता है कि समझ में आया?
जैसे मैं यह केवल वास्तव में, पहले कहा शून्य और लोगों को समझता है.
तो कैसे यह स्रोत से प्राप्त करता है हो सकता है कि कुछ करने के लिए कोड
समझ में आया?
ठीक है, हम कुछ है एक संकलक कहा जाता है.
>> आप अपने से ज्यादातर में वापस से याद करते हैं psets, आप प्रोग्राम को किसी तरह का था
एक डॉट सी फाइल में लिखा है.
और फिर तुम बनाने टाइप करेंगे.
तो क्या कर रही है?
>> आप संकलन के लिए make टाइप कर सकते हैं अपने कार्यक्रम किसी वजह से -
जो कोई भी अपने पी सेट लिखा था; शायद दाऊद -
एक मेकअप फ़ाइल बनाया.
और उस को चलाने के लिए पता करने के लिए करना बताता है आपका संकलक, कहा जाता बजना, कि वसीयत
तो इस उद्देश्य के लिए अपने स्रोत कोड संकलन शून्य और लोगों है जो कोड,
आपके कंप्यूटर समझता है.
लेकिन एक छोटे से बाद में, हम जायेंगे compilers के बारे में और अधिक गहराई में.
>> , हां - तो कहाँ, pset 0 याद आप में एक सवाल है?
>> दर्शक: [सुनाई]?
>> स्पीकर 1: हाँ.
मुझे लगता है कि वे वास्तव में ऑनलाइन होना चाहिए.
हाँ.
>> दर्शक: यह [सुनाई] की तरह है?
>> स्पीकर 1: यह नहीं है.
Cs50.net/quizzes पर हैं.
>> दर्शक: 2013 स्लेश, परीक्षाएँ स्लैश 0 स्लेश, और बस के माध्यम से क्लिक करें
परीक्षाएँ 2013 और प्रश्नोत्तरी 0, अनुभाग स्लाइड की समीक्षा.
>> स्पीकर 1: हाँ, तो तुम लोगों को करना चाहते हैं यह पुल और पर इसे देखो तुम्हारी
खुद के कंप्यूटर, वह भी ठीक है.
फिर से कहो.
>> दर्शक: [सुनाई].
>> स्पीकर 1: हाँ, [सुनाई] डमी चर रहा है.
हाँ, ओह?
>> दर्शक: [सुनाई]?
>> स्पीकर 1: नहीं, हड़ताल परीक्षा पर नहीं हैं.
क्षमा करें, उसके सवाल था था परीक्षा पर हमले.
और ऐसा नहीं है.
तो pset 0, तुम लोग सब होना चाहिए खरोंच का उपयोग कर कुछ लागू किया है.
और हम कुछ बुनियादी प्रोग्रामिंग सीखा इमारत ब्लॉकों खरोंच का उपयोग कर.
>> तो चलो कुछ पर एक नज़र रखना इन ब्लॉक का निर्माण
एक प्रोग्राम है कि मेकअप.
सबसे पहले बूलियन अभिव्यक्ति है.
बूलियन अभिव्यक्ति वाले हैं और 0 या कुछ भी है कि
दो संभव मूल्यों.
इस मामले में, सही है या गलत पर या बंद है, और हाँ या ना.
एक साधारण का एक उदाहरण है, बहुत आसान है, एक बूलियन का उपयोग करता है कि कार्यक्रम
यहाँ अभिव्यक्ति.
>> तो करने के लिए बूलियन अभिव्यक्ति के लिए आदेश में उपयोगी हो सकता है, हम बूलियन ऑपरेटर्स है.
ये इस्तेमाल किया जा सकता है कि ऑपरेटरों रहे कुछ मूल्यों की तुलना करने के लिए.
इसलिए हम कम करने के लिए बराबर है और या नहीं की तुलना में या अधिक से अधिक या बराबर
के बराबर है, और से भी कम या अधिक से अधिक.
लेकिन इन ऑपरेटरों बहुत उपयोगी नहीं हैं हम उन्हें गठजोड़ कर सकते हैं जब तक
शर्तों.
>> तो तुम लोग खरोंच से याद कर सकते हैं और अपने पी से सेट कि हम
स्थिति थी.
वे में कांटे की तरह, अनिवार्य रूप से कर रहे हैं, अपने कार्यक्रम का तर्क है कि
आधार पर कि क्या कार्यान्वित एक शर्त पूरी कर रहा है.
इसलिए हम था कि शर्तों में से एक इस पाठ्यक्रम में कई बार इस्तेमाल किया है
और, अगर, अगर, और कुछ स्थितियों.
>> यहाँ का एक उदाहरण है आप उसका इस्तेमाल हो सकता है.
किसी के बीच फर्क पता है बस का उपयोग अगर बयानों सभी
रास्ते नीचे छंद हैं, बाकी, अगर, और कुछ संयुक्त?
हाँ?
>> दर्शक: [सुनाई].
>> स्पीकर 1: बिल्कुल.
मैं था तो अगर सभी तरह यह नीचे अगर जिस तरह से, यहां तक कि इस हालत देता है
सच है, यह अभी भी जारी रहेगा अगले दो परीक्षण.
एक और को अगर, एक और के साथ, जबकि बयान, एक सच रिटर्न अगर,
दूसरों का परीक्षण नहीं कर रहे हैं.
उस के बारे में कोई सवाल?
कूल.
>> तो आप एक बाकी के एक अगर किसी और का उपयोग आपको लगता है कि यह केवल पता कर सकते हैं अगर बयान
इन मामलों में से एक हो.
तो हम एक्स 0 से कम है, तो यह पता है निश्चित रूप से नहीं किया जा रहा
0 से अधिक.
>> इसके बाद, एक और बिल्डिंग ब्लॉक सीखा हम छोरों हैं.
हम छोरों के तीन प्रकार हैं.
छोरों के लिए, जबकि छोरों, और छोरों जबकि करते हैं.
और आम तौर पर, आप नीचे बैठने के लिए जब कुछ लिखना, आपको फैसला करना है
आप उपयोग करना चाहते हैं तीन की जो.
तो कैसे हम जो एक तय करते हैं?
>> हम जानते हैं कि अगर हम आम तौर पर पाश के लिए एक का उपयोग करें हम पुनरावृति करना चाहते हैं कितनी बार
कुछ या कितने समय के माध्यम से हम कोई कार्य करना चाहते हैं.
हम कुछ की जरूरत है अगर हम थोड़ी देर के छोरों का उपयोग चालू रखने के लिए सच करने के लिए शर्त.
और हम क्या उपयोग है, जबकि बहुत सी समानताएँ जबकि, लेकिन हम अपने कोड में चलाना चाहते हैं
कम से कम एक बार.
>> तो, जबकि, जो कुछ भी है क्या करेंगे हमेशा कम से कम एक बार चलाते हैं.
जबकि साथ, जबकि, यह बिलकुल नहीं चल सकता है अगर
हालत से संतुष्ट नहीं है.
उस के साथ कोई सवाल?
>> पाश के लिए एक का तो संरचना.
तुम लोग यह सब देखा है.
आप यह इनिशियलाइज़.
आप हालत किसी तरह का है.
तो, उदाहरण के लिए, हम को प्रारंभ हो सकता है के लिए के रूप में मैं 0 के बराबर होती है.
मैं 10 से भी कम है.
और मैं + +.
हम किया है कि बहुत ही आसान एक.
>> एक जबकि पाश के लिए, इसी तरह, आपके पास का आरंभ किसी तरह का है,
कुछ शर्त की तरह, और अद्यतन किसी तरह का.
तो हम भी हमारे लिए लूप को लागू कर सकते हैं इस का उपयोग करते हुए एक समय पाश के रूप में.
और इसी एक मत के साथ, जबकि पाश, हम कुछ आरंभीकरण हो सकता है,
कुछ पर अमल, यह अद्यतन करें, और तब हालत की जांच.
>> तो अब काम करता है.
हम सब कुछ एक साथ डाल दिया.
हम कुछ लिखना चाहते हो सकता समारोह की तरह.
आम समारोह है कि आप हो सकता है देखा है पहले से ही मुख्य है.
मुख्य एक समारोह है.
यह एक प्रकार की वापसी, int है.
यह मुख्य एक समारोह का नाम है.
और यह तर्क, argc और argv है.
तो मुख्य बस एक समारोह है.
>> आप का इस्तेमाल किया गया हो सकता है अन्य कार्यों, printf - printf एक समारोह है -
GetInt, toupper.
लेकिन इन किया गया है के लिए होता है हमारे लिए कार्यान्वित
पुस्तकालय के कुछ प्रकार की.
तुम लोग सहित याद है इस CS50.h पुस्तकालय या
मानक मैं / हे पुस्तकालय.
हाँ, सवाल?
>> दर्शक: सी में सिर्फ निहित मुख्य है?
क्या यह बस की तरह [सुनाई]?
>> स्पीकर 1: सवाल है मुख्य ग में निहित है.
और हाँ, सभी कार्य एक मुख्य कार्य है.
यह कंप्यूटर के लिए एक तरह से आवश्यक है शुरू करने के लिए जहां पता करने के लिए
कोड चल रहा है.
>> दर्शक: तो तुम होगा नहीं [सुनाई]?
>> स्पीकर 1: नहीं
अन्य प्रश्न?
कूल.
तो बस आप की तरह एक समारोह का उपयोग कर सकते हैं कि तुम भी आप के लिए कर सकते हैं लिखा है
अपने खुद के समारोह में लिखें.
यह एक समारोह है कि किसी को हो सकता है मात्रा की गणना करने के लिए लिखा है
एक क्यू की, उदाहरण के लिए.
यहाँ एक वापसी प्रकार इस मामले में, वहाँ INT, हमारे समारोह नाम क्यू और हमारे
मानकों की सूची.
>> और आप डेटा लिखने के लिए है कि ध्यान दें आप चाहते पैरामीटर के प्रकार को
उपयोग या किसी और काम नहीं करता जानते हैं किस तरह का
पैरामीटर मैं स्वीकार करना चाहिए.
इसलिए, इस मामले में, हम चाहते हैं हमारे निवेश के रूप में एक पूर्णांक.
तो क्यों न हम कार्यों का उपयोग करने के लिए चाहते हो सकता है?
>> सबसे पहले, संगठन के लिए महान.
वे अपने कोड में टूट मदद अधिक मात्रा का आयोजन किया और कर
यह आसान को पढ़ने के लिए.
सरलीकरण.
इस डिजाइन के लिए अच्छा है.
आप कोड का एक टुकड़ा पढ़ रहे हैं और मुख्य समारोह, वास्तव में है
वास्तव में लंबा है, यह कठिन हो सकता है क्या हो रहा है के बारे में कारण.
तो आप यह कार्यों में टूट अगर, इसे पढ़ने के लिए आसान हो सकता है.
और पुन: उपयोग करने की क्षमता.
तुम जा रहा है कि कोड का एक हिस्सा है, तो कहा जाता है, या कई बार चलाया
बजाय कि कोड 10 बार नए सिरे से लिखना के अपने मुख्य समारोह में, आप कर सकते हैं
इसे पुन: उपयोग करना चाहते हैं.
और फिर हर बार आपको लगता है कि उपयोग करने की आवश्यकता कोड का टुकड़ा, समारोह फोन.
>> तो अब हम वापस खरोंच तक याद है हम भी, कुछ अवधारणाओं के बारे में बात की
जिनमें से एक सूत्रण है.
धागा कई की अवधारणा है कोड की श्रृंखला
एक ही समय पर निष्पादित.
तो दिन दाऊद था जहां से एक को वापस लगता है तुम लोग की संख्या से दूर गिनती
कमरे में लोग.
>> मूलतः, क्या चल रहा था आप सब लोग थे पर
अलग धागे चल रहा है.
और उन धागे एक साथ आ रहे थे जवाब किसी तरह का पाने के लिए.
इसी तरह, स्क्रैच में, जब आपके पास कई sprites, आप कर सकते हैं
एक बिल्ली और एक कुत्ता है.
और वे एक साथ होगा अपने स्वयं स्क्रिप्ट चला रहा है.
यही सूत्रण का एक उदाहरण है.
>> और था कि अन्य अवधारणा खरोंच में शुरू की घटनाओं था.
और घटनाओं के कई भागों में जब कर रहे हैं अपने कोड एक दूसरे के साथ संवाद.
आप का इस्तेमाल किया जब खरोंच में, यह था नियंत्रण और जब मैं प्रसारण
ब्लॉक प्राप्त करें.
>> और यह भी, समस्या सेट 4 में, हमने देखा साथ ही घटनाओं का एक छोटा सा.
तुम लोग इस्तेमाल किया गया हो सकता है Gevent पुस्तकालय.
और वहाँ एक समारोह था waitForClick आप इंतजार कर रहे थे, जिसमें
उपयोगकर्ता क्लिक करने के लिए.
और आपके क्लिक, इस मामले में, हो जाएगा घटना और क्लिक के लिए इंतजार है आपके
ईवेंट हैंडलर.
>> और यह भी, अपने psets चल भर में और यदि आप अपने psets पर काम
साथ संपर्क में आ सकता है इन आदेशों में से कुछ.
यह आप में टाइप क्या है आपकी टर्मिनल विंडो या जो कुछ भी खिड़की
कि, के लिए अपनी जी संपादित पर पता चलता है अनिवार्य रूप से, अपने कंप्यूटर से नेविगेट.
>> तो उदाहरण के लिए, लोकसभा में सूचीबद्ध करता है एक निर्देशिका की सामग्री.
निर्देशिका एक नया फ़ोल्डर बनाता है बनाओ.
सीडी, परिवर्तन निर्देशिका.
आरएम, हटाने, एक फ़ाइल को हटाता है या कुछ निर्देशिका.
और फिर निर्देशिका को दूर एक निर्देशिका हटाता है.
>> दर्शक: [सुनाई]?
>> स्पीकर 1: हाँ, ज़रूर.
आप अगर क्षमा करें, सवाल था इस डालने का सुझाव होगा
धोखा शीट पर.
यह मदद कर सकता है.
यदि आप कमरा है, आप उस पर डाल सकते हैं.
यह भी अभी काफी आम तौर पर अच्छा है आप इसका इस्तेमाल क्योंकि जब याद करने के लिए
तुम चाहते हो सकता है के लिए बस यह याद है.
यही कारण है कि आपके जीवन को बहुत आसान बना देंगे.
मैं आपके सवाल का जवाब?
>> तो अब, हम एक छोटा सा बात की पुस्तकालयों के बारे में संक्षेप में.
लेकिन हम किया गया है कि दो मुख्य वाले कोर्स में अब तक कर रहे हैं का उपयोग
मानक मैं / हे और CS50.
शामिल किए गए हैं बातों का क्या प्रकार मानक मैं / हे पुस्तकालय में?
>> हाँ, अब तक हम printf का उपयोग किया है.
CS50 में, हम GetInt का उपयोग किया है और GetString.
और डेटा प्रकार स्ट्रिंग भी होता है इस CS50 पुस्तकालय में घोषित किया जाना है.
हम के बारे में गहराई में एक छोटे से अधिक बात करेंगे कैसे पुस्तकालयों काम करते हैं और कैसे वे
अपने कोड के आराम के साथ बातचीत.
लेकिन उन है कि हम दो मुख्य वाले हैं अब तक के साथ संपर्क में आ गए हैं
बेशक.
>> प्रकार.
ये याद करने के लिए अच्छा कर रहे हैं कितना प्रत्येक प्रकार कैसे द्वारा या प्रतिनिधित्व किया है
कई प्रकार से प्रत्येक की आवश्यकता बाइट्स -
INT, 4 बाइट्स, चार, 1 बाइट.
फ्लोट 4 बाइट्स है.
एक डबल क्या है?
>> दर्शक: [सुनाई].
>> स्पीकर 1: हाँ, तो एक नाव लेकिन आकार दोगुना.
क्या एक लंबे समय के बारे में?
>> दर्शक: [सुनाई].
>> स्पीकर 1: ठीक है.
एक लंबे समय क्या है?
>> दर्शक: [सुनाई].
>> स्पीकर 1: हाँ, एक पूर्णांक दोगुना.
हां.
>> दर्शक: [सुनाई].
>> स्पीकर 1: लंबे [सुनाई].
और फिर एक लंबी लंबी डबल है.
>> दर्शक: नहीं, नहीं.
एक लंबे समय तक सिर्फ एक पूर्णांक है.
यह वास्तुकला पर निर्भर करता है पहले [सुनाई]
और int एक ही आकार है.
[सुनाई].
>> स्पीकर 1: तो एक लंबी और एक पूर्णांक ही हैं.
और फिर एक लंबे समय तक डबल int है.
कूल.
और फिर, पिछले प्रकार क्या है?
>> दर्शक: सूचक.
>> स्पीकर 1: हाँ, तो हम सीखा संकेत के बारे में एक छोटा सा.
और चाहे एक सूचक है क्या की की ओर इशारा करते हैं - यह एक चार सितारा हो सकता है
या एक पूर्णांक सितारा -
यह हमेशा एक संकेतक के लिए 4 बाइट्स है.
उस के बारे में प्रश्न?
हाँ?
>> दर्शक: [सुनाई]?
>> स्पीकर 1: तो एक लंबी और एक पूर्णांक हैं इस CS50 उपकरण में एक ही.
>> दर्शक: उपकरण पूरी तरह से कर रहे हैं विनिमेय.
>> स्पीकर 1: हाँ.
तो फिर एक लंबी लंबी डबल एक int है.
>> दर्शक: यह 32 बिट है?
>> स्पीकर 1: 32 बिट, हाँ.
>> दर्शक: तो [सुनाई]?
>> स्पीकर 1: हाँ, यदि यह नहीं स्पष्ट रूप से आप कहते हैं,
एक 32 बिट मान लेना चाहिए.
>> दर्शक: यह कुछ कहेंगे यह मानते हुए की तरह एक
उपकरण की तरह वास्तुकला.
64 बिट के लिए, केवल बातें है कि परिवर्तन चाहता है और संकेत दिए गए हैं.
वे दोनों [सुनाई].
>> स्पीकर 1: हाँ?
>> दर्शक: प्रश्न.
तो अभ्यास परीक्षाएँ में से एक पर, यह एक अहस्ताक्षरित int के बारे में पूछता है.
तो कैसे है कि निर्धारित किया जाएगा [सुनाई] एक पूर्णांक से?
>> स्पीकर 1: एक अहस्ताक्षरित में भी 4 बाइट्स है.
लेकिन क्या एक हस्ताक्षरित बारे में अलग है int और एक अहस्ताक्षरित int?
>> दर्शक: [सुनाई].
>> स्पीकर 1: ठीक है.
एक नकारात्मक मूल्यों का प्रतिनिधित्व कर सकते हैं.
लेकिन कैसे यह है कि क्या करता है?
>> दर्शक: [सुनाई].
>> स्पीकर 1: हाँ, यह 1 बचाता है साइन प्रतिनिधित्व करने के लिए सा.
पर हस्ताक्षर किए एक सा है कि साइन प्रतिनिधित्व करता है.
और अहस्ताक्षरित सिर्फ सभी सकारात्मक है.
>> दर्शक: ठीक है.
तो तुम एक डबल का कहना है कि एक नाव के दो बार आकार?
>> स्पीकर 1: डबल दो बार है एक नाव के आकार, हाँ.
>> दर्शक: कैसे करता है एक सूचक करने के लिए एक लंबे [सुनाई]?
>> स्पीकर 1: तो सवाल कैसे करता है एक लंबे समय तक के लिए सूचक -
कैसे है कि केवल चार बाइट्स जब एक लंबे समय तक इसके 8 बाइट्स.
तो एक सूचक है क्या याद, अनिवार्य रूप से, बहुत आधार मूल्य पर.
>> दर्शक: [सुनाई].
>> स्पीकर 1: हाँ, तो एक सूचक सिर्फ एक स्मृति स्थान है.
तो यह बात नहीं है कि कितना अंतरिक्ष कि सूचक की ओर इशारा कर रहा है.
यह केवल ट्रैक रखने के लिए 4 बाइट्स की जरूरत कि स्मृति स्थान की.
अन्य प्रश्न?
कूल.
>> मेरे पास तो आखिरी बात मानक उत्पादन है.
आप उन्हें अक्सर उपयोग करना चाहिए आप याद कर सकते हैं कि बहुत हो गया.
हम उपयोग लेकिन जब यह है printf, उदाहरण के लिए.
और हम इन प्लेसहोल्डर है कि प्रारूप कोड कहा जाता था.
>> इसलिए प्रतिशत सी चार प्रतिशत मैं int के लिए, और हम भी प्रतिशत विकास का उपयोग कर सकते हैं.
यह एक ही बात है.
लेकिन, आम तौर पर, में CS50 हम प्रतिशत मैं का उपयोग करने का प्रयास करें.
नाव के लिए प्रतिशत च.
लंबे और के लिए प्रतिशत एलडी स्ट्रिंग के लिए प्रतिशत है.
>> इसी तरह, हम कुछ प्रयोग कर रहे थे इन भागने दृश्यों की.
उदाहरण के लिए, नई लाइन के लिए बैकस्लैश एन.
यह सिर्फ आप स्वरूपण रहे हैं के लिए है छापा च के लिए अपने कोड.
हाँ?
>> दर्शक: के लिए प्रतिशत डी क्या है?
>> स्पीकर 1: तो सवाल के लिए प्रतिशत डी क्या है?
प्रतिशत डी ints के लिए है.
प्रतिशत विकास तथा प्रतिशत मैं वही कर रहे हैं.
>> दर्शक: के बीच अंतर क्या है बैकस्लैश n और बैकस्लैश आर?
>> स्पीकर 1: तो सवाल है कि क्या है प्रतिक्रिया और एन के बीच अंतर
प्रतिक्रिया आर?
मैं बैकस्लैश आर लगता है कि -
>> दर्शक: तो बैकस्लैश आर बस का तात्पर्य रेखा की शुरुआत करने के लिए रिटर्न
वास्तव में एक नई लाइन के लिए जा रहा बिना.
तो तुम एक बैकस्लैश आर प्रिंट और आप अगर रेखा की शुरुआत करने के लिए वापस जाओ
तो आप और अधिक सामान मुद्रित, आप अधिलेखित पहले से ही पर है कि सामान
[सुनाई].
जबकि, एन वास्तव में एक नया करने के लिए चला जाता है रेखा और [सुनाई] को जाता है.
>> स्पीकर 1: ठीक है, कोई अन्य प्रश्न?
ठीक है.
मैं करने के लिए इसे बंद हाथ जा रहा हूँ दान जो जारी रहेगा.
>> [वाहवाही]
>> दान: सभी यथार्थ में.
तो मैं एक और विस्तृत के बारे में बात कर सकता हूँ हैं कि वर्ग से विचारों की श्रृंखला
मोटे तौर पर दो सप्ताह के प्रतिनिधि और सप्ताह में तीन की शुरुआत से शुरू
सिर्फ एक तरीका है जो कास्टिंग, साथ के रूप में एक निश्चित प्रकार का एक मूल्य के इलाज
एक अलग प्रकार का मान.
तो हम घर का काम करने के साथ ऐसा कर सकते हैं ints, ints के लिए मंगाई, और
डबल करने के लिए लंबे समय चाहता है.
>> इन सभी बातों के तरीके के रूप में इस्तेमाल किया जा सकता है कुछ संख्यात्मक मूल्य के इलाज के
शून्य से कुछ अन्य के रूप में चार संख्यात्मक मूल्य.
तो इस के साथ कुछ मुद्दों की वजह से, वहाँ रहे हैं आप डाली जब आता है, जो निश्चित रूप से,
ints के लिए नाव की तरह बातें.
तो यह थोड़ा अजीब है.
हम 1.31 है कि एक नाव है.
हम 10,000 से गुणा करें.
और फिर हम एक पूर्णांक के रूप में इसे प्रिंट.
क्या यह उत्पादन करता है?
10,000 बार 1.31.
इसलिए 13,000, लगता है कि?
>> दर्शक: मैं यह 10,000 है.
>> दान: तो मैं 10,000 से गुणा कर रहा हूँ मैं इसे कास्टिंग कर रहा हूँ से पहले.
>> दर्शक: ओह.
वहाँ नहीं होगा एक 9 और कुछ 0 संख्या?
>> दान: तुम कुछ अजीब अंक हो सकता है.
तो ठीक है, यह 1.3 गुना 10,000 है.
तो यह है कि 13,000 है.
और इस अतिरिक्त अजीब -
>> दर्शक: 13,100.
>> दान: 13,100.
, रोब धन्यवाद.
और इस अतिरिक्त weirdness -
इस 9,9 -
बस, क्योंकि यह कास्टिंग नीचे गोलाई को समाप्त हो गया है, जहां
यह नहीं होना चाहिए.
हाँ.
>> दर्शक: कास्टिंग होता है कुछ और के बाद?
>> मैं प्रिंट में इस किया है तो इसकी वजह यह: दान यह पहले इस गुणा करता है
इस कास्टिंग करता है.
>> दर्शक: [सुनाई].
>> दान: मैं यह पहले देना होगा लगता है हाँ, जो 10,000 होगी.
और कुछ?
कूल.
तो यह 13,099 है.
ऐसा क्यों होता है?
अस्पष्टता.
>> तैरता सही नहीं हैं.
वे केवल एक को संख्या का प्रतिनिधित्व कर सकते हैं महत्वपूर्ण आंकड़े की निश्चित संख्या.
हम पर 8 हस्ताक्षर अंजीर प्रिंट आउट तो अगर इस नाव, हम एक तरह से मिलता है
बदसूरत देख संख्या.
और वह है, 1.31 सही नहीं कर सकता क्योंकि सरल द्वारा प्रतिनिधित्व किया
मशीन में दो की शक्तियों.
तो यह सबसे करीब ले जा रही समाप्त होता है समाप्त होता है, जो लगता है
एक छोटे से कम किया जा रहा है.
भावना करें?
ठीक है.
>> अब, बंद कर का एक अलग तरीका है सशर्त बयान कर रही है जहां सभी
हम देखभाल के बारे में एक चर है.
इसलिए इस विशेष उदाहरण में, हम कर रहे हैं उपयोगकर्ता से एक पूर्णांक हो रही है.
और फिर हम देख रहे हैं क्या है कि पूर्णांक है.
मुमकिन है, यह नंबर एक और चार के बीच.
यही पूछ रहे हैं हम क्या है.
>> तो आप में से एक स्विच करना चर नाम.
तो फिर तुम संभव के मामलों की स्थापना यह हो सकता है मूल्यों.
तो एक मामला है, यह कम है कहना.
और फिर आप बाहर निकलने के लिए तोड़ स्विच हालत की तो
आप जा रहा रखने के लिए नहीं है.
>> अगले मामले में -
इसलिए मामले में दो और मामले में तीन -
यह मामला दो अगर यह सिर्फ करने के लिए नीचे चला जाता है कोड की पहली पंक्ति इसके साथ के रूप में देखता
यह एक ब्रेक देखता है जब तक तीन मामले.
तो आप को एक मामले मिलता है कारण केवल प्रिंट कम है क्योंकि मैं
यहाँ इस तोड़ दिया है.
मैं कहना है कि, इस विराम को नजरअंदाज कर दिया है - मैं इस टूटे फेंक दिया है -
यह कम प्रिंट होगा, और यह तो होता मध्य मुद्रित, और फिर इसे तोड़ना होगा.
>> तो टूट जाता है एक महत्वपूर्ण हिस्सा हैं की शर्तों को स्विच और
वे वहाँ होना चाहिए.
स्पष्ट रूप से कहा नहीं कर रहे हैं कि किसी भी मामले डिफ़ॉल्ट रूप से नियंत्रित किया जाता है
स्विच में मामले और डाली जानी चाहिए.
>> दर्शक: तो 1, 2, 3, और 4 N होगा?
>> दान: लागू किया जा सकता है कि मान.
हां.
हाँ?
>> दर्शक: तो तुम जब [सुनाई] कि?
>> दान: तुम तो कम प्रिंट, और होता यह मध्य मुद्रित, और होता
फिर यह टूट जाएगा.
>> दर्शक: क्यों यह मुद्रित होगा मध्य [सुनाई] तो क्या होगा?
>> दान: एक मामले के तहत ऐसा सब कुछ एक ब्रेक के अंतर्गत आता है पहले.
इसलिए मामले एक प्रिंट के नीचे मामला है के रूप में एक यह निम्नलिखित छापा है.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: तो यह संख्या सिर्फ किसी खास है मूल्य कि इस चर
ठीक है, ले जा सकते हैं?
कि मतलब?
हाँ.
>> दर्शक: [सुनाई]?
>> दान: हाँ, मामला दो प्रिंट होगा तोड़ तो मध्य और.
>> दर्शक: [सुनाई]?
>> दान: मैं किसी भी लगता है?
क्या अन्य डेटा प्रकार आप पर स्विच कर सकते हैं?
>> दर्शक: आप बदल सकते हैं किसी भी अधिक डेटा प्रकार.
लेकिन यह केवल घर का काम अधिक कुछ भी का मतलब और ints और इस तरह से सामान, क्योंकि
आप एक सूचक से अधिक स्विच कर रहे हैं कि वास्तव में मतलब नहीं है,
यह भी करते हैं, अगर भार पर स्विच तुम क्योंकि चल बिन्दु की है कि,
परिशुद्धता में, आप वास्तव में नहीं होगा वैसे भी करना चाहते हैं.
तो बहुत सुंदर है, सिर्फ ints और लगता है कि जैसे घर का काम और सामान.
>> दान: आप स्पष्ट है जब हाँ, यह बात है तुम्हें पता है कि मूल्यों, मुझे लगता है, हो सकता है
एक स्विच वास्तव में उपयोगी है.
अच्छा है?
ठीक है.
>> स्कोप एक घोषित कि सीमा है चर फैली हुई है.
तो कोड के इस छोटे से हिस्सा में मेरे पास है, यह त्रुटियों से भरा होगा.
और कारण है कि मैं इस INT घोषित किया जाता है पाश के लिए इस के दायरे के भीतर मैं.
और फिर मैं संदर्भ के लिए कोशिश कर रहा हूँ कि बाहर पाश क्षेत्र के लिए है कि मैं.
>> तो बुनियादी तौर पर, आप गुंजाइश के बारे में सोच सकते हैं आप की घोषणा है कि कुछ के रूप में
घुंघराले ब्रेसिज़ के एक सेट के अंदर के साथ ही उन घुंघराले ब्रेसिज़ के भीतर मौजूद है.
और तुम उस चर कोशिश करते हैं और उपयोग करते हैं उन घुंघराले ब्रेसिज़ के बाहर, तुम हूँ
संकलक से एक त्रुटि मिलती है.
हाँ?
>> दर्शक: तो यह एक काम नहीं करता है?
>> दान: यह हां, काम नहीं करता है.
स्ट्रिंग्स.
स्ट्रिंग एक चार *.
वे वही कर रहे हैं.
वे पात्रों के लिए सिर्फ संकेत दिए गए हैं.
और आप हैं कि किसी भी तार समाप्त होना चाहिए बस है जो बैकस्लैश शून्य, साथ
एक सी कन्वेंशन.
>> यह शून्य टर्मिनेटर कहा जाता है.
और अशक्त -
राजधानी एन, राजधानी यू, राजधानी एल, राजधानी एल -
के रूप में ही नहीं है नल टर्मिनेटर.
यह एक संकेत है.
यह एक चरित्र है.
वे बहुत अलग हैं.
यह याद रखें.
यह शायद, प्रश्नोत्तरी पर होगा.
मैं प्रश्नोत्तरी नहीं देखा है.
हाँ?
>> दर्शक: तो नल सूचक है, कहते हैं, है?
>> दान: हाँ.
>> दर्शक: [सुनाई] क्या करता है?
>> दान: malloc जब आप कहा जाता है, कहते हैं, अगर पाने के लिए पर्याप्त स्मृति नहीं है
यदि आप के लिए पूछ रहे हैं जो आकार malloc रिक्त वापस आ जाएगी.
एक समारोह है कि जब भी यह मूल रूप से है यदि आप एक सूचक लौटने वाले
नल के खिलाफ जांच की जरूरत है क्योंकि नल एक बहुत अच्छा है -
यह की तरह, कचरा मूल्य, है.
यह जहाँ तक संकेत दिए जाने के रूप में एक शून्य है.
>> आप एक समारोह फोन जब भी, कि एक सूचक देता है.
आप जाँच करना चाहते करने जा रहे हैं कि सूचक नल नहीं है यह सुनिश्चित करें कि
नल बहुत आम है.
यह एक तरह से एक कचरा वापसी है.
तो कुछ सही नहीं गए, बस के बजाय रिक्त वापस.
>> दर्शक: [सुनाई]?
>> दान: हाँ, और कि यह है.
>> दर्शक: [सुनाई]?
>> दान: यह इस रूप में वर्तनी.
यह शून्य टर्मिनेटर है.
यह एन यू एल एल अगर लोअरकेस है आप यह वर्तनी रहे हैं.
>> दर्शक: और मैं बस चला गया पीठ और यह परीक्षण किया गया.
और अगर आप एक चल बिन्दु डाल करने की कोशिश एक स्विच में मूल्य, यह तुम पर चिल्लाना हूँ
कह, बयान अभिव्यक्ति की आवश्यकता पूर्णांक प्रकार की.
>> दान: वहाँ तुम जाओ.
लेकिन हाँ, सवाल फिर क्या था?
>> दर्शक: [सुनाई]?
>> दान: तो राजधानी एन, राजधानी यू, राजधानी एल, राजधानी एल एक वास्तविक सी बात है.
यह शून्य सूचक है और होगा केवल इस तरह के रूप में व्यवहार किया.
क्या तुमने कभी कोशिश और जादू नहीं होगा अशक्त चरित्र और किसी भी देख
इस के अलावा अन्य तरीका है.
हाँ?
>> दर्शक: तो अधिकतम चार लौटने या नोट में कुछ है, होता यह
एक ही समारोह में अवतार लेना [सुनाई] के रूप में?
>> दर्शक: तो आप की बात कर रहे हैं लौटने चार getchar से अधिकतम, या
जो कुछ भी है?
>> दर्शक: हाँ.
>> दर्शक: हाँ, सामान्य तो उन सभी बातों के लिए अवधि
प्रहरी मान रहे हैं.
तो GetInt से INT अधिकतम लौटने की तरह और getchar से चार मैक्स, यह है
, सब ठीक है, की तरह माना जाता है अगर इन बातों को, हमारे लिए लौट रहे हैं
कुछ गलत हो गया.
>> संकेत के लिए, हम बस के लिए होता है इस प्रहरी मूल्य है कि हर कोई
पर सहमत हैं.
और यह आपके लौटने बात है जब कोई बात बिगड़.
तो चार मैक्स हम प्रयोग कर रहे हैं क्या है कुछ का प्रतिनिधित्व करने के लिए
अशक्त या getchar की तरह.
>> दर्शक: तो तुम getchar का परीक्षण कर रहे हैं, तुम सिर्फ रिक्त डाल सकता है?
कि एक फर्क होता?
>> दान: तुम बस नल की जांच नहीं कर सकता.
आप चार अधिकतम जाँच होगा क्योंकि समारोह से वापसी मान है
एक चरित्र नहीं एक सूचक.
हाँ?
>> दर्शक: इस सवाल पूछता स्ट्रिंग की लंबाई के लिए.
कि अशक्त चरित्र में शामिल हैं?
>> दान: नहीं
और कहा कि वास्तव में कैसे स्ट्रिंग की लंबाई है इसके माध्यम से चला जाता है क्योंकि रोकने के लिए जानता है
पात्रों तक के अपने सरणी यह एक अशक्त चरित्र देखता है.
और फिर यह सब पसंद है, ठीक है, मैं काम कर रहा हूँ.
>> दर्शक: [सुनाई] पाँच?
>> दान: हैलो पाँच होगा.
हां.
तो सरणियों लगातार कर रहे हैं स्मृति के ब्लॉक.
वे कह कर त्वरित पहुँच है घुंघराले में, तो सरणी का नाम और
आप जाना चाहते हैं जो कुछ सूचकांक ब्रेसिज़, , वे के माध्यम से शून्य से अनुक्रमित रहे हैं करने के लिए
1 शून्य से सरणी की लंबाई.
>> और वे के प्रकार से घोषित कर रहे हैं आप में भंडारण कर रहे हैं कि बात
तब सरणी, सरणी का नाम, और आकार कि सरणी की है जो भी हो.
तो इस लंबाई का एक चार सरणी है इन मूल्यों है कि छह.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: हाँ.
>> दर्शक: [सुनाई]?
>> दान: तुम क्या हो रहा है है सरणी पहले से ही बनाया में.
तो तुम, बजाय के रूप में इस निर्दिष्ट कर सकता है , चार, कहने का जो भी नाम अपने
सरणी खाली कोष्ठक घुंघराले के बराबर होती है, गले एच अल्पविराम ई अल्पविराम एल अल्पविराम एल अल्पविराम
हे अल्पविराम खबरें चरित्र और घुंघराले ब्रेस.
वह भी एक घोषणा के रूप में काम करेगा.
>> दर्शक: [सुनाई]?
>> दान: तो आप की जरूरत है आकार पहले से ही बनाया है.
>> दर्शक: [सुनाई]?
>> दान: हाँ.
सभी यथार्थ में.
कमांड लाइन तर्क एक तरह से कर रहे हैं के रूप में उपयोगकर्ता से इनपुट हो रही
मुख्य करने के लिए तर्क.
मुख्य दो तर्क लेता है.
किया जा रहा है उन तर्कों की संख्या आदेश पंक्ति और एक साथ पारित
स्ट्रिंग सदिश या एक स्ट्रिंग सरणी तर्कों की सब से.
>> मैं, कहते हैं, इस तरह के रूप में एक समारोह में कहा जाता तो अगर एक 1 अंतरिक्ष, 2 अंतरिक्ष, तीन, बाहर डॉट
argc 4 होगा.
और argv 0 बाहर एक डॉट होगा.
Argv1 1 होगा.
argv2 2 होगा. argv3 होगा 3, कि विशेष मामले में.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: सरणी में अंतिम तत्व सरणी लंबाई argc अधिक है क्योंकि
ARGB में से एक, पिछले तत्व रिक्त सूचक है.
यह argc प्लस 1 है.
इसलिए मामले में मैं सिर्फ यह कहा कि 0 argv किया जाएगा बाहर एक डॉट है.
argv 1 1 है. argv2 2 है. argv 3 3 है.
एक बड़ा है जो argv 4, argc खबरें होगा की तुलना में.
>> और वह नल सूचक है.
हां.
स्ट्रिंग है क्योंकि और है कि एक चार सितारा एक सूचक है.
तो यह एक ही प्रकार का हो गया है.
हाँ?
>> दर्शक: दो सवाल.
एक तो, के बीच अंतर क्या है यह और एक प्रकार से अन्य GetString
उपयोगकर्ता इंजन में?
और दो, यह भीतर संग्रहीत किया जाता है अपनी हाल की स्मृति?
जैसे इतना GetString होगा [सुनाई] हो?
>> दान: यह कहाँ संग्रहीत है?
यह संग्रह किया गया है, जहां मैं नहीं जानता.
>> दर्शक: तो, वास्तव में, आप जानते हैं कि कैसे किसी भी आप यह तर्क कॉल समारोह
ढेर में जमा हो जाती है?
तो argc और argv मुख्य करने के लिए बहस कर रहे हैं और वे वास्तव में ढेर पर हैं, या
बस के रूप में आप क्या सोचते ऊपर ढेर की शुरुआत.
अन्य हिस्सा क्या था सवाल का?
>> दर्शक: [सुनाई] तो क्या है?
>> दान: हाँ, यह सिर्फ एक अलग तरीका है उपयोगकर्ता से इनपुट हो रही है.
यह एक थोड़ा और अधिक कुशल और यह लिपियों के लिए handier है क्योंकि आप
बस अपने मुख्य तर्क पारित कर सकते हैं बल्कि इंतजार करने की तुलना में समारोह
आप किसी भी उपयोगकर्ताओं के लिए नहीं है, तो उपयोगकर्ता के लिए.
>> दर्शक: और हाँ, तार मिल [सुनाई] होगा.
यह आप की जरूरत के सामान की दुकान होगी.
>> दान: हाँ?
>> दर्शक: [सुनाई]?
>> दान: हाँ, argv 0 हमेशा शामिल समारोह कॉल की डॉट स्लेश.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: हाँ, तर्क की प्रत्येक रहे हैं अशक्त चरित्र में समाप्त हो गया है क्योंकि वे
तार कर रहे हैं.
>> दर्शक: [सुनाई]?
>> दान: हाँ, argv argc एक शून्य सूचक है.
>> दर्शक: [सुनाई]?
>> दान: ओह, हाँ.
क्षमा करें, हाँ.
>> दर्शक: तो [सुनाई]?
>> दान: यदि आप था तो सवाल है कमांड लाइन डॉट, 1, 2 बाहर एक डॉट स्लेश
होगा कमांड लाइन की संख्या तर्क दो हो या यह तीन हो सकता है?
>> दर्शक: मैं यह नहीं करता है लगता है वास्तव में बात.
मैं कहने के लिए करते हैं, ओह, आप पारित नहीं किया था किसी भी कमांड लाइन तर्क करते हैं,
जाहिर है, आप समारोह में कहा.
इसलिए मैं शब्दो में बाहर करने के लिए करते हैं कमांड लाइन से समारोह
यह भले ही तर्क argv में शामिल थे.
>> दान: लेकिन यह परीक्षण पर आधारित था -
हाँ - और भी आप कुछ कहते हो जैसे argc, 3 के बराबर होती है
आप सुरक्षित खड़े रहे.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: मुझे लगता है कि अगर बजाय इस बुलाने की argc और स्ट्रिंग argv कोष्ठक में
लेकिन एक ही प्रकार रखा और बस बुलाया उन्हें एक तरह से अलग कुछ
और बी, यह अभी भी काम करेगा?
और यह अभी भी काम करेगा, तुम सिर्फ होगा -
बजाय argc का उपयोग कर की - आप एक और बी का उपयोग होता है.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: तो सवाल यह है GetString है ढेर में स्मृति की दुकान के लिए जा रहा
GetString चार है क्योंकि *.
यह ढेर में स्मृति भंडार यह क्योंकि वास्तविक भीतर अब malloc कॉल
GetString का कार्यान्वयन.
ठीक है, पर घूम रहा है.
>> सुरक्षा.
तो सही मायने में सुरक्षित होने के लिए आपको कोई पर भरोसा एक और आप की अनुमति किसी भी एक का उपयोग नहीं
आपकी जानकारी के, जो क्यों है हर कोई अपनी मशीनों बनाता है,
अपने खुद के ऑपरेटिंग सिस्टम, अपने सभी जाहिर है खरोंच से कार्यक्रम, और
किसी भी अन्य मशीनों से कनेक्ट नहीं है इंटरनेट के माध्यम से.
तो कंप्यूटर असुरक्षित हैं.
वे वास्तव में हैं.
हम अन्य लोगों पर भरोसा करना होगा.
>> और सुरक्षा के विचार आप कर रहे हैं कि है राशि की सीमा की कोशिश कर
जरूरत है कि आप पर भरोसा है.
और तुम हो कि साधन में से एक क्रिप्टोग्राफी के माध्यम से है.
क्रिप्टोग्राफी, अनिवार्य रूप से, है हम रहस्य है.
>> कभी कभी हम अपने रहस्यों को पारित करने के लिए साथ इंटरनेट, कहते हैं, के माध्यम से या
अन्य बातों के.
और हम लोग नहीं चाहते हैं इन रहस्यों को जानने के लिए.
तो हम एक तरह से हमारे रहस्य को एनक्रिप्ट हम कोई भी समझ सकते हैं कि उम्मीद है कि.
>> इसलिए हम इस्तेमाल किया -
इस वर्ग के पाठ्यक्रम के माध्यम से -
सीज़र सिफर और की तरह बातें [सुनाई], दोनों बहुत, बहुत हैं जो
चीजों के गोपन के असुरक्षित तरीके.
वे क्या वे यह पता लगाने के लिए आसान कर रहे हैं कर रहे हैं और अपने रहस्यों को क्या कर रहे हैं.
असली दुनिया और अधिक का उपयोग करता है जटिल एन्क्रिप्शन योजनाओं.
और हम में नहीं मिलेगा कि ज्यादा से ज्यादा.
>> डिबगिंग.
GDB सबसे अच्छा है.
मैं फिर से इस तनाव के लिए जा रहा हूँ.
GDB हर हर समय का उपयोग यदि आप एक समस्या है समय.
GDB में उपयोगी होते हैं कि कमानों रहे हैं आप एक पंक्ति या तो पारित है, जो तोड़
नंबर एक समारोह का नाम, अनिवार्य रूप से अपने कोड में आप बंद करना चाहते हैं जहाँ,
और नियंत्रण लेने में सक्षम हो.
>> प्रिंट एक चर लेता है और बाहर प्रिंट कि चर उस पर जो भी है
अपने निष्पादन में इशारा करते हैं.
अगले अपने निष्पादन चालें एक कदम के साथ.
और एक समारोह के अंदर कदम कदम अपने निष्पादन में.
>> अन्य चीजें कैसे है जो, चलाए जा रहे हैं आप वास्तव में अपने कोड चलाते हैं.
जारी सभी आवश्यक कदम उठा लेता है अगले ब्रेक के बात करने के लिए.
और कई कई दूसरों रहे हैं.
उन्हें देखो.
वे महान हैं.
हाँ?
>> दर्शक: [सुनाई]?
>> दान: हाँ, जो एक डिबगर है.
तो एक डिबगर एक कार्यक्रम है कि यदि आप अपने कार्यक्रम डिबग देता है.
यह कीड़े के लिए पता चलता है कि एक कार्यक्रम नहीं है आप, हालांकि यह बहुत अच्छा होगा.
>> और मेरे लिए पिछले खोज है.
हम बात कर ली है कि खोज की तो प्रकार के बारे में इस वर्ग में रेखीय खोज रहे हैं,
जो आप प्रत्येक के माध्यम से देखने के लिए है कि बस खोज अंतरिक्ष, एक के तत्व
एक समय तत्व, जब तक आप क्या लगता है आप जब तक आप के लिए देख रहे हैं या कर रहे हैं
अपनी खोज को अंतरिक्ष के अंत जिस पर क्या आप नहीं मिल सकता है का कहना है कि बिंदु
आप के लिए देख रहे थे उस तत्व.
और यह सबसे अच्छा निरंतर समय पर ले जाता है जो है 0 का 1 और सबसे खराब रेखीय पर
एन 0 है जो समय,.
>> द्विआधारी खोज, जो जरूरत घिनौना तत्वों.
आप अपने तत्वों के बीच में जाना है, देखते हैं अगर आप देख रहे हैं तत्व
तत्व से बड़ा या छोटा होता है आप बीच में परेशानी न हो.
यह बड़ा है, आप कहते हैं कि नीचे अपनी खोज को अंतरिक्ष की है आपके
वर्तमान स्थान, मध्य, और आप इस प्रक्रिया को पुनः आरंभ.
यह छोटा है, तो आप कहते हैं कि देखो कि - हाँ, क्या चल रहा है?
>> दर्शक: [सुनाई]?
>> दान: हाँ.
किसी भी प्रकार की तरह में सिखाया गया है कि वर्ग परीक्षण के लिए उचित खेल है.
>> [हंसी]
>> दान: और तुम नहीं पड़ा है कि तथ्य सेट एक समस्या के लिए यह करने के लिए, यह उचित है
परीक्षण के लिए खेल.
>> दर्शक: हम कैसे इसे पर जा सकते हैं -
>> दान: यह खत्म हो गया होगा.
>> अध्यक्ष 2: के लिए वास्तविक कोड [सुनाई] study.cs50.net पर है.
तो तुम अभ्यास समस्या पर नजर डालें तो के मर्ज सॉर्ट पेज में
study.cs50.net, कोड है मर्ज सॉर्ट लागू करने के लिए.
तो आप को लागू करने के लिए नहीं है यह अपने आप को आज रात.
लेकिन यकीन है कि आप बल्कि यह समझ कर बस यह याद रखना से.
>> दर्शक: [सुनाई]?
>> अध्यक्ष 2: मर्ज सॉर्ट पेज पर study.cs50.net, एक अभ्यास है
समस्या यह है कि आप के माध्यम से क्लिक करते हैं समस्या यह है कि बहुत अंत में वहाँ एक
मर्ज है, जो समाधान, सॉर्ट कार्यान्वयन.
लेकिन यकीन है कि तुम यह समझ कर बल्कि सिर्फ यह याद रखना से
या यह नीचे नकल.
>> दर्शकों: और एक पूरी तरह से वैध परीक्षा के लिए समस्या होगी
यहाँ की तरह कुछ एक सूची है.
इस सूची के बाद कैसी दिखती है एक सेलेक्शन तरह के कदम या
सम्मिलन सॉर्ट या जो भी हो.
सूची में से एक पूर्ण चलना.
आप करने के लिए की जरूरत को खत्म नहीं करते तो भी अगर इसके लिए कोड, आपको यह समझने की जरूरत है
यह कैसे हो रहा है पता करने के लिए पर्याप्त इस सरणी संशोधित किया जाना है.
>> दान: यह है कि यह मेरे लिए है.
>> [वाहवाही]
>> लुकास: हे सब लोग.
मेरा नाम लुकास है.
मैं सभी, प्रत्यावर्तन के बारे में बात करने जा रहा हूँ हमने सीखा है कि प्रकार, और एक
सभी संकेत का थोड़ा सा.
ठीक है?
तो सब से पहले, प्रत्यावर्तन.
क्या यह कहने का मतलब है कि एक समारोह पुनरावर्ती है?
>> दर्शक: कहते हैं.
>> लुकास: ठीक है, हाँ, खुद कहता है.
इसलिए इस चित्र की तरह, उदाहरण के लिए.
यह अंदर तस्वीर की तरह है एक तस्वीर का है और इतने पर.
तो उदाहरण के लिए, आप कर सकते हैं - दान के रूप में कि द्विआधारी खोज के बारे में बात कर रहा था.
द्विआधारी खोज है, जिसमें एक तरफ का रास्ता पुनरावर्ती आप कर रहे हैं कि तथ्य यह है
एक नंबर खोजने की कोशिश कर.
तो आप बीच में जाओ.
और फिर आप जाँच अगर वहाँ संख्या बाईं और सही में.
>> आप पता लगा तो वह संख्या है बाईं तरफ होने जा रहा है, यह ऐसा ही है
फिर से खोज कर रही है के रूप में बात लेकिन बस सूची की बाईं तरफ.
इसलिए कि यह कैसे लगता है जैसे यह पुनरावर्ती है.
तुम लोग पुनरावर्ती है तो इसलिए मर्ज प्रकार के लिए समाधान.
>> ठीक है, तो यहाँ एक उदाहरण है.
तो चलो मैं चयन करना चाहते हैं कि हम कहते हैं 1 से n करने के लिए सभी नंबरों.
मैं महसूस कर सकते हैं कि n का योग संख्या n प्लस एन शून्य से 1 1 पर निर्भर है.
लेकिन फिर, मैं n पर लगता है कि शून्य से 1 प्लस n शून्य से 2 प्लस 1, कि ऐसा ही है
संख्या संक्षेप के रूप में बात ऊपर n करने के लिए शून्य से 1.
तो मैं एक समान राशि की राशि कह सकते हैं शून्य से 1 एन प्लस n की राशि के बराबर होती है.
कि मतलब?
>> और मैं भी कुछ और ही होता है जो यह है कि आधार के मामले, कहा जाता है
ऊपर की संख्या का योग शून्य करने के लिए शून्य हो जाएगा.
इसलिए जैसे ही मैं नंबर करने के लिए मिल के रूप में शून्य, मैं गिनती करना बंद करो.
कि मतलब?
>> तो यहाँ का एक उदाहरण है मुझे लगता है कि लागू कर सकते हैं.
तो मैं कुछ में यह कार्य किया है.
यह एक पूर्णांक लेता है.
N है अगर तो यहाँ मैं पहले की जांच कम या शून्य के बराबर होती है.
तो यह है, मैं बहुत कम या शून्य के बराबर है अगर अपने आधार का मामला है, जो शून्य वापसी.
अन्यथा, मैं सिर्फ लौटने एन प्लस कर सकते हैं से संख्याओं का योग
n शून्य से एक के लिए एक.
भावना करें?
ठीक है.
>> तो यहाँ यह कैसा लग रहा है.
आप 2 से बराबर की राशि 2 प्लस 1 का योग.
और 1 के कुछ 1 प्लस 0 जो 0 की राशि.
भावना करें?
इसलिए हम आपके के ढेर पर नजर डालें तो कार्यक्रम, यह यह कैसा लग रहा है.
>> सबसे पहले, हम मुख्य समारोह है.
और फिर मुख्य समारोह राशि 2 कहा जाता है.
और फिर राशि 2 कहने जा रहा है, ओह, योग 2 2 प्लस एक बराबर की राशि.
तो मैं ढेर करने के लिए 1 का योग जोड़ने.
और 1 का योग योग की कॉल करने के लिए जा रहा है 0, यह भी कहा जा रहा है जो
ढेर करने के लिए.
और फिर रहे हैं कि इन लोगों में से प्रत्येक दूसरे के शीर्ष पर लौटने के लिए है
अन्य लोगों के लिए जा रहा रख सकते हैं पहले.
>> तो उदाहरण के लिए, यहाँ, 0 की राशि, पहला, 0 वापसी करने जा रही है.
और फिर 1 की राशि चुनें.
फिर 1 का योग करने जा रहा है 2 की राशि को 1 वापसी.
और अंत में, 2 का योग चल रहा है मुख्य करने के लिए 3 लौटने के लिए.
कि मतलब?
>> यह समझने के लिए कैसे वास्तव में महत्वपूर्ण है ढेर काम कर रहे हैं और करने की कोशिश कर रहा है
यह समझ में आता है देखते हैं.
ठीक है, तो छँटाई.
तो क्यों, महत्वपूर्ण छँटाई है सब से पहले?
क्यों हम ध्यान देना चाहिए?
कोई है?
मुझे एक उदाहरण दे?
हाँ?
>> दर्शक: [सुनाई].
>> लुकास: ठीक है, हाँ.
तो आप और अधिक कुशलता से खोज सकते हैं.
यह एक अच्छा तरीका है.
तो, उदाहरण के लिए, हम में से एक बहुत कुछ है बातें, वास्तव में, हमारे जीवन में कि
क्रमबद्ध हैं.
उदाहरण के लिए, जानने के लिए.
>> यह होना बहुत जरूरी है सभी आदेश में किसी तरह का शब्द है कि हम
आसानी से उपयोग कर सकते हैं.
तो यह है कि वह क्या कह रहा था है.
आप और अधिक कुशलता से खोज सकते हैं.
यह करना होगा कितना मुश्किल के बारे में सोचो एक शब्द हैं जिनमें शब्दकोश
यादृच्छिक क्रम.
तुम बहुत ज्यादा, पर देखने के लिए होगा, हर एक शब्द जब तक आप पाते
आप देख रहे हैं कि शब्द.
>> आप भी फेसबुक का उपयोग कर रहे हैं, जब आप अपने दोस्तों को देख रहे हैं, आप कर रहे हैं
फेसबुक अपने डाल कि देखने जा करीब दोस्त वालों के ऊपर है
आपको लगता है कि ज्यादा से बात नहीं करते.
आप सभी तरह की तह तक जाना है अपने दोस्त की सूची, आप देखने जा रहे हैं
आपको शायद यह भी नहीं है कि लोग आप के साथ दोस्त हैं याद है.
और वह है, फेसबुक प्रकार क्योंकि अपने मित्रों के आधार पर कैसे
आप उन्हें कर रहे हैं बंद.
>> इसलिए डेटा का आयोजन.
इसके अलावा नि.
तो आप देखते हैं कि सभी Pokemons नंबर हैं.
और कहा कि एक आसान की तरह है डेटा तक पहुँचने का रास्ता.
>> दर्शक: नि पहुँचने.
>> लुकास: हाँ.
>> दर्शक: [सुनाई].
>> लुकास: हां.
ठीक है, तो चयन के आधार पर क्रमबद्ध.
चयन के आधार पर क्रमबद्ध चयन करने के लिए जा रहा है एक सूची प्रत्येक की सबसे छोटी unsorted मूल्य
प्रत्येक यात्रा में समय.
यह एक तरह से है कि आप के प्रकार की तरह है आप करने की कोशिश कर रहे हैं जब आपके सिर में
हाथ पर एक सूची तरह.
>> असल में, तुम सब तुम देखो है सबसे छोटी संख्या के लिए.
आप हल सूची में डाल दिया है.
और फिर आप के लिए देखो अगले सबसे छोटी संख्या.
और फिर आप कर रखना कि और इतने पर.
>> इसलिए चयन के आधार पर क्रमबद्ध बुनियादी तौर पर आप है छोटी से छोटी हर समय का चयन करें
unsorted मूल्य.
छाँटे गए के अंत में रखो सूची का हिस्सा है.
और कर रही रखना.
तो चलो जल्दी से देखते हैं क्या इस तरह दिखता है.
तो यहाँ क्रमबद्ध है और unsorted सूची.
>> तो सूची की छांटी के लिए, यह शुरू में खाली है.
और फिर मैं चयन करने के लिए जा रहा हूँ 2 है, जो यहाँ सबसे छोटी संख्या,.
इसलिए मैं संख्या 2 हो और मैं डाल सूची के सामने.
और फिर मैं अगले छोटी से छोटी के लिए देखो 3 है जो तत्व,.
तो मैं अंत में डाल दिया क्रमबद्ध सूची की.
और फिर मुझे लगता है कि कर रखना.
मैं 4 पाते हैं और अंत में डाल दिया.
5 ढूँढें और अंत में डाल दिया.
>> और उस समय की है कि कैसे सभी देखो कि मैं, है अंत में यह डाल कह रहा हूँ
असल में, दो मानों गमागमन.
ठीक है?
और फिर पिछले एक, तुम बस एक और तत्व है.
तो यह पहले से ही हल है.
>> ठीक है, तो प्रविष्टि तरह.
तुम भी लिए जा रहे हैं सम्मिलन सॉर्ट एक हल और होने की बात यह है कि
एक unsorted सूची.
केवल बात यह है कि हर बार है कि आप हल करने के लिए एक तत्व जोड़ रहे हैं
सूची, तुम सिर्फ तत्व उठा कि unsorted सूची के सामने है.
और फिर आप मिल जा रहे हैं क्या इसे हल करने में किया जाना चाहिए की स्थिति
सूची का हिस्सा है.
>> चलो यह तो देखते हैं कि क्या यह और अधिक समझ में आता है.
तो शुरू में, उदाहरण के लिए, मैं कोशिश कर रहा हूँ में नंबर तीन सम्मिलित करने के लिए
सूची का हिस्सा हल.
तो सूची में कुछ भी नहीं है.
तो मैं बस संख्या 3 डाल सकते हैं.
>> अब, मैं करने के लिए 5 नंबर जोड़ना चाहते हैं सूची की छांटी हिस्सा.
इसलिए मैं नंबर 5 पर दिखेगा.
मैं इसे 3 से अधिक है कि नोटिस.
इसलिए मैं इसे 3 के बाद हो गया है कि पता है.
तो मैं 3 और 5 में डाल दिया.
>> तब मैं नंबर 2 सम्मिलित करना चाहते हैं.
मैं नंबर 2 वास्तव में है कि नोटिस तो पिछले 3 और 5 दोनों.
इसलिए मैं वास्तव में इसे डाल दिया है सब सूची की शुरुआत में जिस तरह से.
तो मुझे लगता है, एक तरह से, सभी बदलाव किया है क्रमबद्ध सूची में तत्वों तो मैं कर सकता हूँ
संख्या 2 के लिए जगह बनाने.
>> तब मैं संख्या 6 को देखें.
मैं इसे 5 के बाद होना चाहिए कि देखते हैं.
तो मैं वहाँ डाल दिया.
और अंत में, मैं नंबर 4 पर दिखेगा.
और मैं यह चाहिए नोटिस 3 और 5 के बीच हो.
और फिर मैं वहाँ रखा और पारी अन्य सभी तत्वों.
भावना करें?
>> बुलबुला तरह.
इसलिए बुलबुला तरह आप क्या कर रहे हैं, मूल रूप से है क्या करने जा रहा है - हम बुलबुला इसे कहते हैं
आप सूची के माध्यम से जाने के आधार पर क्रमबद्ध क्योंकि - मैं सिर्फ दिखाने अगर यह वास्तव में बेहतर है
आप इस तरह है -
और आप की तुलना करने के लिए जा रहे हैं आसन्न संख्या.
और तुम स्वैप करने के लिए जा रहे हैं उनके पदों पर वे नहीं कर रहे हैं
सही क्रम में.
>> तो बुनियादी तौर पर, क्या करने जा रहा है हो यहाँ है, उदाहरण के लिए,
आप 8 और 6 है.
तुम्हें पता है छाँटे गए आदेश देगा कि वास्तव में सही, 6 और 5 हो?
तो आप आदेश स्वैप करने के लिए जा रहे हैं.
तब मैं यहां 8 और 4 देखें.
और मैं एक ही बात करते हैं.
मैं फिर से स्वैप.
और अंत में, 2 और 8.
मैं भी उन्हें स्वैप.
>> यह की तरह है क्योंकि बाद बुलबुला कहा जाता है इन पुनरावृत्तियों में से प्रत्येक, वास्तव में,
सूची में सबसे बड़ी संख्या सब हो जाता है सूची के अंत करने के लिए रास्ता.
कि मतलब?
यह यह गमागमन रहता है क्योंकि और सही करने के लिए यह चलती.
>> ठीक है, तो यह दूसरी यात्रा है.
यह एक ही बात होगी.
मैं एक स्वैप करते हैं और करेंगे तो पिछले एक.
कोई स्वैप कर रहे हैं मुझे लगता है कि और सूची हल है.
इसलिए बुलबुला तरह में, हम मूल रूप से रखना सूची के माध्यम से जा रहा है और गमागमन
बातें मैं मैं नहीं किया है कि सूचना तक कि चलना कर किसी भी स्वैप, जो
सूची पहले से ही हल है कि इसका मतलब है.
भावना करें?
>> चलो एक छोटा सा बात करते हैं के बारे में समय से चल रहा है.
तो तुम लोग याद करते बिग हे, ओमेगा, और थीटा?
हाँ?
ठीक है, बड़ी हे सब से पहले, क्या है?
>> दर्शक: [सुनाई].
>> लुकास: हाँ, यह एक सबसे खराब स्थिति कहा जाता है बस यह है कि इसका मतलब है जो देखने का समय,
आप इस कार्यक्रम की उम्मीद कितना चलाने के लिए लेने के लिए.
जैसे, के संदर्भ में -
इस मामले में - एन.
में तत्वों की संख्या सबसे खराब स्थिति में सूची.
की तरह, सबसे ज्यादा संभव मामले में.
>> इसलिए बुलबुला तरह के लिए, उदाहरण के लिए, हम n वर्ग की बड़ी हे है.
हम क्यों है कि क्या करना है?
क्यों बुलबुला तरह बड़ी हे n वर्ग है?
>> दर्शक: [सुनाई].
>> लुकास: हाँ, तो सबसे खराब स्थिति होगी मैं n पुनरावृत्तियों करना होगा कि.
तो पुनरावृत्तियों में से प्रत्येक के लिए जा रहा है अंत करने के लिए सबसे बड़ा तत्व लाना
सूची की.
तो सबसे खराब स्थिति है कि मैं है बात यह है कि एन बार ऐसा करने के लिए.
और उस समय से प्रत्येक के लिए, मैं करने के लिए मैं तुलना करने के लिए है क्योंकि n स्वैप करना
प्रत्येक दो तत्वों.
यह n चुकता है तो इसलिए यह एन बार पता है क्योंकि.
>> फिर, चयन के आधार पर क्रमबद्ध भी n वर्ग है करने के लिए प्रत्येक यात्रा के लिए, मुझे लगता है, क्योंकि
हर एक तत्व को देखो सूची में.
और फिर सबसे छोटा लगता है, जो मुझे लगता है कि इसका मतलब के लिए
n तत्वों के माध्यम से देखो.
और मुझे लगता है कि एन बार क्या करना है क्योंकि मैं सब n तत्वों का चयन किया है.
>> एक प्रविष्टि के आधार पर क्रमबद्ध भी n वर्ग है सबसे खराब स्थिति में होगा, क्योंकि
, एक, मैं डालने के लिए किया जा n संख्या, सही?
तो मैं पहले से ही मैं जा रहा हूँ कि पता n पुनरावृत्तियों है.
लेकिन अगर मैं था उन लोगों की संख्या, प्रत्येक के लिए संख्या के सभी को देखने के लिए
क्रमबद्ध सूची है और यह सब तरह से रखा सामने, कि n वर्ग होगा
यह फिर से बार एन एन किया जाएगा.
भावना करें?
क्या ओमेगा के बारे में?
>> दर्शक: [सुनाई].
>> लुकास: यह सबसे अच्छी स्थिति है.
तो इसके लिए बार बार में, की तरह है छँटाई, सबसे अच्छी स्थिति है
सूची पहले से ही हल है जब.
तो आप वास्तव में नहीं है कुछ भी करने को.
बुलबुला तरह सबसे अच्छा है n की स्थिति.
तुम लोगों को पता है क्यों?
>> दर्शक: [सुनाई].
>> लुकास: हाँ, आप ट्रैक के रख अगर डेटा राशन किसी भी स्वैप था या कि क्या
नहीं, आप करने के लिए सेट की तरह कुछ है अगर एक चलना, वहाँ था अगर सही है
सूची पहले से ही हल है, असल में, क्या होने जा रहा है मैं जा रहा हूँ
प्रत्येक दो स्वैप करने की कोशिश आसन्न तत्वों.
मैं यह देखने के लिए जा रहा हूँ कि कोई स्वैप कर रहे हैं.
और मैं सिर्फ सही दूर वापसी.
>> तो यह करने के लिए मैं सिर्फ था कि इसका मतलब सूची के माध्यम से एक बार जाना.
मैं देखने क्योंकि यह n है n तत्वों पर.
क्यों चयन के आधार पर क्रमबद्ध एन स्क्वायर?
>> हाँ, सूची सॉर्ट किया जाता है, भले के लिए चयन की तरह हर चलना, मैं
न्यूनतम तत्व का चयन किया है.
तो यह है कि मैं देखने के लिए बाहर का मतलब है कि unsorted में सभी तत्वों पर
न्यूनतम सूची है और लगता है प्रत्येक यात्रा के लिए.
कि मतलब?
>> और सम्मिलन तलवार में है क्योंकि n है मैंने सम्मिलित करने के लिए कोशिश कर रहा हूँ कि मामला
संख्या और संख्या के सभी, जब मैं उन्हें सम्मिलित करने का प्रयास, मैं देख रहा हूँ कि वे
सही स्थिति में हैं.
मैं अन्य सभी की जांच जाने की जरूरत नहीं है unsorted सूची में संख्या.
यह पता किया जाएगा तो इसलिए.
भावना करें?
और थीटा क्या है?
>> दर्शक: [सुनाई].
>> लुकास: माफ करना, क्या?
फिर से कहो.
>> दर्शक: [सुनाई].
>> लुकास: बिल्कुल.
तो आप देख सकते हैं कि केवल चयन मर्ज में संग्रहीत सॉर्ट thetas है.
आप केवल थीटा है क्योंकि और है कि बड़ी हे और ओमेगा दोनों एक ही हैं.
ठीक है.
और अंत में, तरह है लॉग n में समा जाता है.
>> और फिर, दान कह रहा था, की तरह मिलाएं तरह की है कि एक ही तरह की तरह है
आप द्विआधारी खोज करते हैं.
तो आप सूची मिलता है.
और आप आधे में कटौती करने जा रहे हैं.
और फिर तुम उन्हें कटौती छोटे हिस्सों में.
और तब आप उन्हें मर्ज.
तुम लोग याद है, सही है?
ठीक है, वह कह रहा था.
>> ठीक है, संकेत दिए.
तो एक सूचक क्या है?
>> दर्शक: [सुनाई].
>> लुकास: एक पते.
ठीक है.
मैं दाऊद एक गुच्छा का पता चलता है कि पता Binky और इशारा कर बातें की वीडियो
एक दूसरे को.
लेकिन मैं संकेत के बारे में सोचना पसंद के रूप में केवल एक पते.
तो यह जा रहा है कि एक चर एक पते संग्रहीत करने के लिए.
>> तो यह सिर्फ इस विशेष चर है कि चार बाइट्स लंबा है.
याद रखें, कुछ भी करने के लिए कि सूचक है हमारे 32 बिट के लिए लंबे समय से हमेशा चार बाइट्स
मशीन के साथ मामला इतना उपकरण.
और यह सिर्फ स्थान है इसके बारे में एक चर के अंदर की.
>> ठीक है, तो यह स्मृति असल में, वहाँ है.
तो स्मृति के प्रत्येक ब्लॉक वास्तव में एक है का पता है जो लेबल,
slotty स्मृति.
इसलिए कि मैं हो सकता है कि इसका मतलब है के लिए एक संकेत इशारा
इन पतों के किसी भी.
इसलिए हम संकेत का उपयोग करता हूँ कारण है मैं स्थान याद करने के लिए है
एक विशिष्ट चर एक स्मृति है कि.
>> और तुम लोग याद है कि उन में से एक मैं एक समारोह है कि अगर मामलों था
मैं वास्तव में करने के लिए आप चाहते हैं reals के लिए स्वैप, मैं वास्तव में
एक सूचक भेज दिया है.
नहीं चर.
तुम लोगों को याद है?
के बीच अंतर -
नाम क्या है?
मूल्य से कॉलिंग और बुला संदर्भ से, सही?
>> हाँ, ठीक है.
तो मान आह्वान.
आप सिर्फ एक चर भेजते हैं आप बस एक मूल्य भेज रहे कार्य करते हैं.
तो आप वास्तव में भेज रहे हैं चर की एक प्रति.
और अपने कार्यक्रम कम परवाह नहीं कर सका के बारे में अगर एक ही चर वास्तव में
एक प्रतिलिपि बनाता है.
>> और संदर्भ से बुला मतलब है कि मैं वास्तव में की एक प्रति भेज रहा हूँ
उस चर के लिए सूचक.
तो यह है कि मैं भेज रहा हूँ इसका मतलब है कि कि चर का स्थान.
इसलिए मैं का स्थान है भावना चर, मैं इस समारोह फोन जब
संकेत के साथ, मैं वास्तव में करने में सक्षम हूँ मुख्य में था कि डेटा बदल जाते हैं.
भावना करें?
>> हालांकि, सूचक, एक प्रति है सूचक अभी भी असली पते की है
मैं बदलना चाहते है कि चर.
भावना करें?
>> तो संकेत का निर्माण.
सूचक हमेशा याद है, यह इशारा कर रहा है कि प्रकार
करने के लिए और फिर एक सितारा.
और फिर आप का नाम डाल दिया.
तो याद रखें कि आप है कि जब भी जो भी सितारा, यह करने के लिए एक सूचक की तरह है
कि जो भी चर तुम था कि लिखें.
>> तो यहाँ सितारा में, उदाहरण के लिए, यह है एक सूचक और एक पूर्णांक.
और फिर चार सितारा एक सूचक है चार सितारा और बहुत आगे है.
हाँ?
>> हम एक है क्या अगर: दर्शकों स्टार एक्स n करने के लिए सूचक.
मुझे लगता है कि एक्स के लिए एक संकेत बनाता है.
यह भी एक पूर्णांक x घोषित करता है?
>> लुकास: ठीक है, तो आपको पता सितारा एक्स जब कहते हैं, आप एक के लिए एक संकेत नहीं पैदा कर रहे हैं
चर एक्स.
आप एक सूचक नामित एक्स बना रहे हैं.
>> दर्शक: [सुनाई].
>> लुकास: मैं n सितारा एक्स कहना तो, जब मैं कर रहा हूँ अरे, स्मृति में, मैं जा रहा हूँ, कह रही है
इन तीन बक्से में से एक मिलता है.
और मैं कहने जा रहा हूँ कि कि है, जो एक्स होने जा रहा है
एक सूचक होने जा रहा.
और संकेत के बारे में कुछ दिलचस्प हम वे कहते हैं कि यह है कि
एक 32 बिट मशीन के लिए 4 बाइट्स.
और उस के लिए कारण है क्योंकि 4 बाइट्स 32 टुकड़े कर रहे हैं.
>> और 64 बिट वास्तव में कर रहे हैं कि मशीनों संकेत दिए गए पते हैं
64 बिट लंबे होते हैं.
तो यह सिर्फ मतलब है कि का आकार मशीन में पते अलग है.
>> तो संदर्भित और dereferencing.
दो ऑपरेटरों रहे हैं कि तुम लोगों को याद रखना चाहिए.
पहली एम्परसेंड है.
दूसरा सितारा है.
उस स्टार और इस से भ्रमित मत जाओ सितारा क्योंकि में, याद है कि
इस मामले में, आप n सितारा है.
>> यह एक साथ एक पूरी बात की तरह है.
नहीं n अंतरिक्ष सितारा है.
तो यह है कि यह प्रकार है कि इसका मतलब है.
याद रखें, कि जब आपके पास चर सितारा, आप कर रहे हैं
प्रकार के बारे में बात कर.
>> आप बस फिर स्टार और है जब चर का नाम, इसका मतलब है कि
आप सूचक dereferencing रहे हैं जो आप देख रहे हैं कि इसका मतलब
सूचक, पता खोजने यह है , उस पते पर जा रहे हैं, की ओर इशारा
और जब भी में देख तुम वहाँ है.
इसलिए मैं अपने छात्रों को बता कि जब आपके पास सितारा, तुम यह है कि सोचना चाहिए
की सामग्री का संक्षिप्त नाम है.
>> तो आप एक सूचक है और आप अगर सितारा सूचक करते हैं, यह बात है
सूचक की सामग्री.
तो आप इसे करने के लिए इशारा कर रहा है जो कुछ करने के लिए जाना और निरंतर सामग्री को देखो.
और एम्परसेंड एक ही है के पते के रूप में बात.
>> मैं एक चर एक तो अगर - तरह, चलो मैं int 3 बराबर होती किया था कहते हैं कि -
मुझे इस बात का पता लगाने के लिए चाहते हैं चर एक स्मृति, मैं अभी क्या कर सकते हैं
एक एम्परसेंड.
तो यह एक का पता है.
भावना करें?
>> तो यहाँ एक उदाहरण है.
यह int बी और int सी याद आ रही है.
एक 3 साधन के बराबर होती INT तो यह है कि मैं स्मृति में जाने के लिए जा रहा हूँ.
और मैं एक स्लॉट खोजने के लिए जा रहा हूँ और यहाँ 3 नंबर डाल दिया.
>> और फिर INT बी 4 बराबर होती है.
मैं एक ही बात करने जा रहा हूँ.
स्मृति में जाओ और एक नंबर डाल बक्से में से एक में 4.
और int 5 के बराबर होती है.
एक और बॉक्स खोजने के लिए और एक नंबर 5 में डाल दिया.
>> इसलिए इस लाइन क्या बाहर कर रहा है? n सितारा देहात एम्परसेंड एक बराबर होती है.
तो सब से पहले, एन सितारा देहात.
यह क्या कर रहा है?
>> दर्शक: [सुनाई].
>> लुकास: हाँ, तो पता सितारा देहात, पहली, देहात नामक एक सूचक वाणी है.
और फिर इसे के मूल्य बताए है एक का पता होना चाहिए कि सूचक.
तो एक एम्परसेंड.
फिर, मैं सितारा पंजाब करते हैं, एक सितारा पीबी क्या है?
>> ओह, माफ करना.
यह भी याद आ रही है. n सितारा PB.
मैं सितारा पीसी मतलब है.
मैं बहुत शर्मिंदा हूँ.
यह एक ही बात है.
लेकिन अब मैं एक सूचक बनाने की गिरफ्तारी अच्छा हूँ बी और फिर सी के लिए एक संकेत है.
हाँ?
>> दर्शक: [सुनाई]?
>> लुकास: हाँ.
तो आप स्मृति के लिए जाना है और आप के लिए जाना है देहात के लिए डेसिग्नेटर है कि बॉक्स,
आप वास्तव में करने जा रहे हैं एक के एक पते देखते हैं.
ठीक है?
हाँ?
>> दर्शक: [सुनाई]?
>> लुकास: हाँ, सूचक एक पता है.
भूल जाते हैं कि कभी.
यह सबसे महत्वपूर्ण तरह है संकेत के बारे में हिस्सा.
वहाँ भंडारण और पता है कुछ चर के लिए.
और कुछ?
अन्य प्रश्न?
ठीक है.
>> तो सूचक और सारणियों.
याद रखें कि मैं सरणी 3 int करते हैं, मूल रूप से, मैं क्या कर रहा हूँ मैं एक तरह, हूँ है
के, एक सूचक में घोषणा.
तो सरणी प्रकार का एक के लिए एक संकेत की तरह है स्मृति में विशिष्ट स्थान है जिसमें मैं
पूर्णांकों के लिए तीन स्लॉट आवंटित.
कि मतलब?
>> इसलिए मुझे लगता है मैं क्या कर रहा हूँ सरणी 3, int है जब कर रही है, असल में, तीन पैदा कर रही है
स्मृति में स्लॉट.
इसलिए मैं सिर्फ स्मृति में तीन स्लॉट हैं.
मुझे क्या करना है, तो फिर, एक सितारा सरणी, यह तो मूल रूप से सरणी की सामग्री का मतलब है,
मैं सूचक मिटा जिसका मतलब है, मैं जाना यह करने के लिए इशारा कर रहा है कि उस जगह के लिए,
और मैं नंबर एक डाल दिया.
>> और फिर, मैं सितारा सरणी प्लस 1 करते हैं, उस सरणी कर के रूप में एक ही बात है
बस मैं करने के लिए जाने का मतलब है जो कोष्ठक एक, इस पर इशारा कर रहा है कि जगह.
और फिर से अधिक बनाता है 1 मुझे एक बदलाव की स्थिति.
तो मुझे लगता है, वास्तव में, इस स्थिति में जाना और नंबर दो डाल दिया.
>> और फिर, अंत में, जब मैं करता हूँ सरणी 2 प्लस, मैं जहां तक जाना
पर सरणी की ओर इशारा करते हुए.
और फिर मैं स्मृति ब्लॉक करने के लिए कदम.
और फिर मैं यहाँ तीन नंबर डाल दिया.
हाँ?
>> दर्शक: तो सितारा सरणी बस है बहुत पहले बिंदु कह.
और तुम, 1 जोड़ सकते हैं, सिर्फ इसलिए कि हम केवल सच हो
कि पहले पता संदर्भित.
>> लुकास: हाँ.
क्यों हम, उदाहरण के लिए, सरणी कहना है 0, श्रेणी 1, और सरणी 2?
आप 0 करते हैं, इसलिए मैं कह रहा हूँ, 1, 2, बजाय 1, 2, 3 के 3?
कारणों में से एक है, एक, कंप्यूटर प्रोग्रामर शुरू करने के लिए पसंद करते हैं
0 से गिनती.
आप सरणी 0 करते हैं क्योंकि दो, है यह सरणी कर के रूप में एक ही बात है
जमा 0, जो मैं करने के लिए जाने का मतलब स्थिति यह है कि, और मैं नहीं है
किसी भी स्मृति ब्लॉकों को छोड़.
तो मैं किसी भी स्मृति ब्लॉकों कदम नहीं है.
हाँ?
>> दर्शक: [सुनाई]?
>> लुकास: तो वह है क्या पूछ रहा है कर के बीच अंतर
इस या malloc कर.
अंतर यह है कि int सरणी 3 एक पैदा कर रही है
ढेर पर सरणी.
और मैं malloc करते हैं, यह ढेर पर बनाता है.
कि मतलब?
>> तो कैसे malloc वास्तव में काम करता है?
तो क्यों न हम भी malloc का उपयोग करने की जरूरत है?
बाहर सभी आंकड़े के अपने संकलक तरह आप घोषित चर कि.
और वह सभी के लिए जगह बनाता है ढेर में उनमें से.
तो अपने चर के सभी जा रहे हैं कहीं ढेर में किया जाना है.
यहाँ तो पर्यावरण चर है.
>> तो बुनियादी तौर पर, उन चर के लिए अंतरिक्ष स्मृति में कम से आवंटित किया गया है
समय संकलन.
तो यह है कि आपके कंप्यूटर का मतलब उन चर के सभी जानते हैं
पहले से.
यह क्या मूल्य पता करने की जरूरत नहीं है आप उन्हें में डाल करने के लिए जा रहे हैं.
लेकिन यह पता करने की जरूरत है कि कैसे ज्यादा मेमोरी की जरूरत है.
>> लेकिन अब देखते हैं कि हम कहते हैं, उदाहरण के लिए, आप एक सरणी बनाने या ले जा रहे एक
आप ले जा रहे हैं कि स्ट्रिंग उपयोगकर्ता से.
आप नहीं जानते कि कितनी देर स्ट्रिंग उदाहरण के लिए, होने जा रहा है.
तो क्या आप नहीं जानते कि वास्तव में कितने स्मृति ब्लॉकों आप आवंटित, सही?
>> तो यह वास्तव में के लिए मतलब नहीं है आप 100 अक्षरों डाल कहने के लिए.
और तब उपयोगकर्ता 150 क्या लिखते हैं तो क्या होगा?
आप खराब हो जा रहे हैं.
>> तो बुनियादी तौर पर, आप कैसे के बारे में सुनिश्चित नहीं किया जा सकता आप आवंटित की जरूरत ज्यादा स्मृति
आप प्रोग्राम संकलन है.
तुम बस चलाने के लिए समय पर पता है कि.
आपको ढेर है तो इसलिए.
तो ढेर स्मृति किया जा रहा है आप के दौरान आवंटन कर रहे हैं कि
कार्यक्रम चल रहा है की अवधि.
>> तो बुनियादी तौर पर, आप malloc करते हैं, क्या आप कम से आबंटित है स्मृति कर रहे हैं
देखने का समय, जो आप कर रहे हैं इसका मतलब है कि उस वक्त पर सही निर्णय लेने से है कि आप
कि स्मृति होनी चाहिए.
आप यह आवंटन हो जाने पर तो है कि.
कि मतलब?
>> तो ढेर चर है, याद संकलन समय पर बनाया जाता है.
और फिर ढेर चर है तुम जाओ के रूप में बनाया जाता है
malloc के साथ, उदाहरण के लिए.
>> दर्शक: [सुनाई]?
>> लुकास: तो GetString है malloc फोन करने वाला.
मुझे malloc के बारे में बात करते हैं, और मैं GetString समझाता हूँ.
तो malloc एक ही बात है स्मृति आवंटन के रूप में.
तो यह आवंटित करने के लिए जा रहा है ढेर पर स्मृति.
और यह एक सूचक लौटने के लिए जा रहा है कि स्मृति में आवंटित की गई थी, जहां.
>> तो जब आप करते हैं -
यहां उदाहरण के लिए -
n सितारा सूचक.
और फिर सूचक malloc के बराबर होती है इंच बार 10 के आकार.
मैं एक सूचक पैदा कर रहा हूँ.
और फिर मैं करने के लिए कि सूचक निर्दिष्ट कर रहा हूँ सूचक का मूल्य उस malloc
मुझे दे रहा है.
>> आप आवंटित कर सकते हैं तो मैं malloc पूछ रहा हूँ 10 पूर्णांकों के लिए अंतरिक्ष.
यह बात कह रहा है.
और malloc मुझे एक वापस देता है उस जगह के लिए सूचक.
भावना करें?
ठीक है.
मैं और GetString, मूल रूप से कर रहा है, एक आप आवंटित कर सकते हैं ताकि malloc के लिए कॉल
क्रम के दौरान स्मृति.
>> हमेशा अशक्त के लिए जाँच करने के लिए याद malloc रिक्त वापस करने जा रहा है क्योंकि
यह स्मृति आवंटित नहीं कर सकते हैं.
मान लीजिए कि आप एक हास्यास्पद के लिए पूछना है कि हम कहते हैं स्मृति की राशि.
आपका कंप्यूटर नहीं होने जा रहा है ज्यादा कि आवंटित करने में सक्षम.
>> तो malloc बस जा रहा है अशक्त लौटने के लिए.
तो हमेशा की जांच करने के लिए याद है आप malloc से मिला कि सूचक है
अशक्त या नहीं यह है, तो आप कर सकते हैं, क्योंकि एक सूचक dereferencing और जा
पक्ष दोष के कारण.
और अंत में, यह मत भूलो अपनी स्मृति को मुक्त.
>> Malloc ढेर में स्मृति पैदा कर रही है.
और तुम स्मृति को मुक्त करने के लिए है कार्यक्रम से पहले समाप्त हो.
ठीक है, यह सब मेरे लिए है.
क्षमा करें, रोब.
धन्यवाद.
>> [वाहवाही]
>> लुकास: कोई अंतिम सवाल रोब से पहले आता है?
नहीं?
हाँ?
>> दर्शक: मैं नहीं देखा था ऑनलाइन यह एक.
आप अभी तक इसे अपलोड कर दिया?
>> लुकास: मैं डेव लगता है जल्द ही इसे अपलोड.
>> डेव: यह पोस्ट कर दिया जाएगा.
>> लुकास: यह ऑनलाइन हो जाएगा.
>> दर्शक: यह हो रहा है.
>> लुकास: यह हो रहा है?
ठीक है.
हाँ?
>> दर्शक: [सुनाई]?
>> लुकास: हाँ, तुम मुक्त करना चाहिए सभी ढेर में डाल दिया है कि स्मृति.
>> दर्शक: [सुनाई]?
>> लुकास: हाँ.
आप एक संस्कृति malloc है कि किसी भी समय, आप नि: शुल्क एक संस्कृति होनी चाहिए
आपको लगता है कि चर का उपयोग बंद करने के बाद.
तो malloc और स्वतंत्र हैं हमेशा एक साथ.
अपने सबसे अच्छे दोस्त.
हाँ.
रोब?
>> रोब: मैं जल्दी से जाना होगा.
और भी वीडियो डाल दिया जाएगा.
मैं पर mic है.
>> ठीक है, तो हफ्ते में पांच चीजें.
हम पहली बात हो चुकी है.
तो केवल एक ढेर है कि वहाँ याद सक्रिय समारोह कॉल प्रति फ्रेम.
हम एक दूसरे में देखेंगे.
और भी वास्तव में क्या जाता है याद प्रत्येक ढेर फ्रेम में होने जा रहे हैं
हमारे कार्यों का स्थानीय चर, में पारित कर रहे हैं तर्क है कि हमारी
कार्यों, एक जोड़े के साथ आप वास्तव में नहीं है अन्य चीजों
के बारे में चिंता करने की जरूरत है.
>> यहाँ तो जहां एक उदाहरण कार्यक्रम है, नोटिस, मुख्य वापसी printfing है
foo 4 के लिए मूल्य.
foo बस वापस जाने के लिए जा रहा है बार का मूल्य 4 अल्पविराम 6.
और बार कुछ स्थानीय स्थापित करने जा रहा है चर 4 गुना 6 के बराबर.
और फिर पता वापसी.
>> तो चलो भर में ढेर को देखो इस कार्यक्रम की वास्तविक चलना.
इसलिए हमारे ढेर के नीचे नहीं है.
ढेर बढ़ता है याद रखें.
इसलिए हमारे ढेर के नीचे, हम मुख्य के लिए एक ढेर फ्रेम किया है.
कार्यक्रम शुरू होता है, मुख्य हमेशा पर होने जा रहा है
हमारे ढेर के नीचे.
>> और के अंदर क्या है हमारी मुख्य के लिए फ्रेम हो चुकी है?
तो कोई स्थानीय कर रहे हैं, भले ही मुख्य करने के लिए चर, जैसे मैंने पहले कहा
हम argc और RGV स्थान ले रहा है मुख्य ढेर फ्रेम के अंदर.
तो मुख्य अब करने जा रही है समारोह foo कहते हैं.
और उस foo जा रहा है इसका मतलब अपनी ही ढेर फ्रेम मिलता है.
>> तो अब हम के अंदर हो समारोह foo.
और क्या में जाने की जरूरत foo के ढेर फ्रेम?
खैर, foo एक तर्क पता है.
उस के बाद से और n 4 के बराबर है क्या मुख्य foo के तर्क के रूप में गुजर रहा है.
>> तो अब ं कॉल करने के लिए जा रहा है.
क्या बार के अंदर किया जा रहा है 'अपने ढेर फ्रेम का?
यह छह के बराबर 4 y के बराबर एक्स है.
यही कारण है कि हमारे पास करने के लिए जा रहे हैं वह सब नहीं है ढेर फ्रेम में क्योंकि बार
यह भी एक स्थानीय चर पता है.
और एन हम 24 के बराबर सेट करने के लिए जा रहे हैं.
>> तो अब बार n लौटने के लिए जा रहा है.
तो बार के लिए 24 लौट रहा है ढेर फ्रेम foo.
बार अब लौट रहा है और उसकी वजह से, कि हम ढेर फ्रेम popping रहे हैं इसका मतलब
के लिए ढेर के बंद पट्टी.
इतना सब स्मृति कि बार किया गया था का उपयोग ढेर बंद अब है.
>> अब, foo भी जा रहा है मुख्य करने के लिए 24 लौटने के लिए.
तो अब है कि foo लौट रहा है, स्मृति उस foo अपने 'में इस्तेमाल कर रहा था
ढेर फ्रेम भी चला गया है.
और अब, मुख्य printf कॉल करने के लिए जा रहा है.
तो printf सिर्फ एक समारोह है.
हम printf कहते हैं, यह होने जा रहा है printf के लिए एक और ढेर फ्रेम
समारोह कॉल.
>> क्या हम printf गुजर रहे हैं?
कि जाने के लिए क्या हो रहा है अपने ढेर फ्रेम पर.
बहुत कम से कम, हम गुजर रहे हैं उस प्रतिशत मैं n बैकस्लैश और
तर्क 24.
यह फ्रेम हो चुकी है और अधिक में हो सकता है printf कुछ का उपयोग होना होता है
स्थानीय चर.
हम नहीं जानते.
>> लेकिन वह सब printf के दशक में चला जाता है फ्रेम हो चुकी है.
यह printf निष्पादित करने के लिए जा रहा है.
फिर printf किया है.
यह वापस आ जाएगी.
अंत में, मुख्य किया जाता है.
मुख्य वापस आ जाएगी.
और फिर हमारे कार्यक्रम किया जाता है.
हाँ?
>> दर्शक: आप देख रहे हैं [सुनाई]
तर्क [सुनाई]
मापदंडों?
>> आरओबी: तो एक सूक्ष्म अंतर नहीं है तर्क और मापदंडों के बीच.
और वास्तव में, आम बात में, लोग जाते हैं बस हर समय उन्हें मिश्रण करने के लिए.
लेकिन मापदंडों औपचारिक हैं चीजों के नाम है.
>> तो argc और argv हैं मुख्य करने के लिए पैरामीटर.
तर्क क्या आप वास्तव में कर रहे हैं उन मानकों के रूप में गुजरती हैं.
तो मैं वहाँ 4, 4 की foo जब फोन मैं अंदर से गुजर रहा हूँ तर्क है
और के अंदर पैरामीटर एन, Foo, मूल्य 4 पर ले जाता है
4 के बाद से तर्क था.
>> दर्शक: [सुनाई]?
>> आरओबी: एन बार एक स्थानीय चर रहा है.
n अभी भी foo के लिए स्थानीय है, लेकिन यह foo के लिए एक पैरामीटर है.
यह एक स्थानीय चर नहीं है.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: Foo बस बार बुला और है जो भी बार रिटर्न लौटने.
>> दर्शक: [सुनाई]?
>> आरओबी: हाँ, बस कई को देखने के लिए फ्रेम हो चुकी है.
हाँ?
>> दर्शक: क्यों foo बुलाया गया था printf से पहले?
>> रोब: क्यों foo printf से पहले कहा जाता था?
तो मुझे लगता है, बजाय, कुछ कर सकता था INT तरह एक्स 4 की foo के बराबर होती है
और फिर एक्स मुद्रित.
लेकिन इसके बजाय, मैं समारोह संयुक्त printf बहस में कहते हैं.
>> लेकिन सूचना है कि हम वास्तव में नहीं कर सकते हम जब तक printf के लिए कॉल निष्पादित
4 की foo क्या है पता.
इसलिए हम इस मूल्यांकन करने के लिए जा रहे हैं.
और केवल एक बार जो कुछ किया है जा रहे हैं वापस आते हैं और यह मूल्यांकन करने के लिए.
हाँ?
>> दर्शक: दोनों बार के बाद से [सुनाई]
मूल्य, क्यों हम [सुनाई] नहीं है?
>> आरओबी: वे पूरी तरह से INT होना चाहिए.
उस पर पकड़ा नहीं गया था कई गुजरता.
तो यह INT बार और int होना चाहिए उन दोनों के बाद से foo
पूर्णांकों लौट रहे हैं.
शून्य वे नहीं जा रहे हैं केवल यदि वास्तविक मान देने के लिए.
हाँ?
>> दर्शक: आप के ऊपर एक पंक्ति था वापसी, [सुनाई]?
>> रोब: वापसी के ऊपर एक रेखा?
>> दर्शक: हाँ.
जैसे कि अगर आप printf और [सुनाई] था, यह दो बार प्रिंट होगा?
>> आरओबी: तो foo के अंदर?
हम यहीं एक printf था?
>> दर्शक: हाँ.
>> हम एक printf का अधिकार था तो अगर: रोब यहां, यह एक बार प्रिंट होगा.
हम एक बार सही foo बुला रहे हैं जब से यहाँ है, तो हम printf मारा हूँ.
तो फिर हम बार फोन करता हूँ.
और फिर foo वापस आ जाएगी.
और यह बात है.
हम केवल कभी मुठभेड़ एक बार printf.
हाँ?
>> दर्शक: [सुनाई]
हम पहली बार कर रहे हैं क्योंकि printf foo बुला printf बुला रही है और फिर हम गुजर रहे हैं
तर्क.
>> रोब: सिद्धांत रूप में तो नहीं है printf foo बुला रहा है?
तो कोई.
सी जा रहा है कि बस के आदेश हम कर सकते हैं, इससे पहले इन चीजों पर अमल
तर्क के सभी, एक समारोह फोन समारोह के लिए करने के लिए है
पूरी तरह से मूल्यांकन किया जाना.
तो यह पूरी तरह से मूल्यांकन किया जाता है?
हाँ, यह सिर्फ एक स्ट्रिंग है.
यह सिर्फ एक मूल्य है.
>> तो फिर हम करने के लिए पूरी तरह से है इस मूल्यांकन करते हैं.
इस सब की अब, एक बार किया है इसके तर्क मूल्यांकन कर रहे हैं.
और अब हम कर सकते हैं printf करने के लिए कहते हैं.
हाँ?
>> दर्शक: एक सवाल.
आप एक शून्य समारोह है, तो चाहिए आप वापसी अर्धविराम है?
>> रोब: तुम ऐसा नहीं एक वापसी अर्धविराम आप एक शून्य समारोह है.
ठीक है.
तो अब कुछ ढेर सामान.
तो ढेर हम सौदा करने जा रहे हैं कि कैसे है गतिशील स्मृति प्रबंधन के साथ.
और यह सीधे विरोधाभासों के साथ हम स्वचालित फोन होगा जो ढेर
स्मृति प्रबंधन.
>> तो ढेर पर, तुम सच में की आवश्यकता नहीं है कैसे स्थानीय चर के साथ सौदा करने के लिए
धक्का दिया और सभी बंद popped किया जा रहा है इन ढेर फ्रेम और सब सामान.
आप इसके बारे में चिंता करने की ज़रूरत नहीं है.
यह स्वचालित है.
तो ढेर पुस्तिका है.
और [सुनाई]
इन कार्यों से आता है malloc और मुक्त.
>> तो यहाँ एक और कार्यक्रम है.
हम सब कर रहे हैं mallocing है एक पूर्णांक.
हम स्टार एक्स में यह भंडारण कर रहे हैं.
बेशक, हम जाँच करने के लिए एक्स शून्य है देखने के लिए.
तो हम बस क्या स्थापित करने के लिए जा रहे हैं एक्स 50 करने के लिए इशारा कर रहा है.
, की ओर इशारा कर रहा है कि क्या एक्स प्रिंट छापा एक्स, और फिर फ्री एक्स.
>> तो कैसे यह वास्तव में लग रहा है हम अपने ढेर और ढेर पर नजर डालें तो?
तो हम फिर से शुरू करेंगे.
पहले के रूप में हमारे ढेर के नीचे.
तुमको सीधे ढेर याद रखें कि ढेर विरोध करता है?
तो हम करने जा रहे हैं वहाँ हमारे ढेर के ऊपर.
>> इसलिए हमारे ढेर के नीचे, हम हैं मुख्य के लिए हमारे ढेर फ्रेम.
यह argc, argv के लिए जगह है, और हम अब, एक स्थानीय चर x है जो
एक पूर्णांक सितारा है.
इसलिए हम पुनरावृति करने के लिए जा रहे हैं इस कार्यक्रम के माध्यम से.
हम पहली बात है malloc के लिए एक फोन.
>> इसलिए हम malloc के लिए एक फोन कर रहे हैं.
Malloc एक समारोह है.
यह एक ढेर फ्रेम हो रहा है.
हम malloc के लिए क्या गुजर रहे हैं?
अंदर जाने के लिए जा रहा है ढेर फ्रेम की.
हम 4 है जो, एन के आकार गुजर रहे हैं.
इसलिए कि malloc के लिए दिया है.
>> Malloc क्या करता है?
यह हमें ढेर पर कुछ जगह पकड़ लेता है.
इसलिए हम ढेर पर जाने के लिए जा रहे हैं.
और हम हड़पने के लिए जा रहे हैं ढेर से 4 बाइट्स.
तो चलो बस उस दे एक मनमाना पता.
0x123 बस यह कि एक है नाटक उस ढेर पर है पता.
>> तो क्या उस के अंदर वास्तव में है पता Ox123 पर स्मृति का क्षेत्र?
कचरा.
तो हम उस में कुछ भी नहीं जमा हो गए.
तो जहाँ तक हम जानते हैं, यह कुछ भी हो सकता है.
आप यह शून्य है मान नहीं होना चाहिए.
यह सबसे अधिक संभावना शून्य नहीं है.
>> तो अब malloc रिटर्न.
और हम जब malloc रिटर्न क्या करते हो?
हम यह देता है क्या निर्धारित किया है.
हम एक्स बराबर सेट क्या यह लौट रहा है.
तो यह क्या लौट रहा है?
वह यह है कि जब से यह 0x123 लौट रहा है स्मृति के ब्लॉक का पता है कि यह
सिर्फ ढेर में आवंटित.
>> तो 0x123 एक्स लौटने अब सेट किया जा रहा है 0x123 के बराबर है, जो pictorially,
एक्स एक वास्तविक होने के रूप में हम अक्सर आकर्षित उस ब्लॉक की ओर इशारा करते तीर.
लेकिन एक्स सिर्फ उस पते जमा कर रहा है.
तो अब हम एक्स शून्य है अगर जाँच करने के लिए है.
यह रिक्त नहीं है.
हम चाहते हैं कि malloc सफल रहा कि नाटक.
>> तो अब स्टार x 50 के बराबर होती है.
इसलिए सितारा इसका मतलब याद रखता है उस पते पर जाना.
तो 0x123 हम करने जा रहे हैं उस पते पर जाना.
इसलिए कि वहां हमें लाता है.
हम उस पते पर क्या कर रहे हो?
हम 50 से भंडारण कर रहे हैं.
>> इसलिए इस लाइन के बाद, वह यह है कि क्या चीजों की तरह देखने के लिए जा रहे हैं.
तो अब यह नहीं रह गया है वहां कचरा.
अब हम 50 में है कि पता है कि विशेष पते क्योंकि
हम चाहते हैं कि करने के लिए यह निर्धारित किया है.
ठीक है?
तो अब हम एफ मुद्रित करने के लिए जा रहे हैं.
>> तो पहले हम स्टार एक्स मुद्रित करने के लिए जा रहे हैं.
तो स्टार एक्स क्या है?
फिर, स्टार एक्स साधन के लिए जाना एक्स की ओर इशारा कर रहा है कि बात.
तो एक्स कि को 0x123 जायें जमा कर रहा है.
हम 50 से मिलता है.
इसलिए कि च मुद्रित.
और यह बात 50 मुद्रित करने के लिए जा रहा है इसका मतलब है.
और फिर देता है.
>> और फिर हम दूसरे printf है.
अब हम प्रतिशत पी रहे हैं.
आप इसे नहीं देखा है, तो वह है आप एक सूचक मुद्रित बस कैसे.
इसलिए हम प्रतिशत मैं प्रतिशत है एफ, और पहले से ही उन सब के सब.
इसलिए प्रतिशत पी, एक सूचक मुद्रित.
>> तो एक्स एक सूचक है.
हम खुद को एक्स मुद्रित करने के लिए जा रहे हैं तो अगर, हम अंदर वास्तव में है क्या मुद्रण कर रहे हैं
एक्स, 0x123 तो पहला है जो छापा एफ 50 मुद्रित करने के लिए जा रहा है.
दूसरा छापा च जा रहा है हाँ 0x123 मुद्रित करने के लिए?
>> दर्शक: तुम प्रतिशत उपयोग न करें एक्स एक सूचक मुद्रित करने के लिए?
>> आरओबी: तो तुम प्रतिशत का उपयोग करते हैं एक्स एक सूचक मुद्रित करने के लिए?
, तो आप कर सकते हैं, लेकिन प्रतिशत एक्स बस है आम तौर पर, जैसे के लिए आप कुछ है अगर
पूर्णांक और आप मुद्रित करना चाहते हैं यह एक षोडश आधारी के रूप में.
यही कारण है कि आप ऐसा कर बस कैसे.
>> प्रतिशत डी होगा, जबकि दशमलव के रूप में मुद्रित.
हम प्रतिशत प्राप्त कर रहे थे कि है डी. मैं सिर्फ पूर्णांक है.
प्रतिशत पी विशेष रूप से है संकेत के लिए.
>> तो एक्स एक सूचक है.
हम प्रतिशत पी उपयोग करना चाहते हैं.
लेकिन प्रतिशत एक्स काम कर सकता था.
हाँ?
>> दर्शक: [सुनाई]?
>> रोब: हाँ.
कम से कम इस कॉल के लिए - तो मैं यहां यह शामिल नहीं किया था.
लेकिन इन दो तर्क जरूरी हैं इस ढेर के फ्रेम के अंदर
किसी भी स्थानीय चर के साथ printf का उपयोग होना होता है.
और फिर अगले कॉल अब printf के लिए printf ढेर फ्रेम के अंदर है
प्रतिशत पी बैकस्लैश n और जो कुछ भी एक्स का मान 0x123 है, जो है.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: यह कुछ प्रिंट हूँ कि इस तरह दिखता है.
>> दर्शक: [सुनाई].
>> आरओबी: तो यह पता फार्म में यह प्रिंट.
यह एक पते की तरह दिखता है.
हाँ?
>> दर्शक: [सुनाई]?
>> रोब: क्यों क्या है?
>> दर्शक: [सुनाई]?
>> रोब: क्यों इस सूचक 4 बाइट्स है?
तो एक पूरी गुच्छा रहे हैं इस के सामने 0 के.
तो यह वास्तव में 0x0000000123 है.
एक 64 बिट सिस्टम पर, वहाँ होगा अधिक शून्य की एक पूरी गुच्छा.
हाँ?
>> दर्शक: [सुनाई].
>> आरओबी: तो पहले printf मुद्रित करने के लिए जा रहा है -
>> दर्शक: [सुनाई].
>> रोब: हाँ, यह छापा जा रहा है क्या एक्स की ओर इशारा कर रहा है.
स्टार यह क्या कहते हैं की ओर इशारा करते बात.
यह पकड़ो.
तो यह की ओर इशारा क्या है?
50.
यह पकड़ो.
यही कारण है कि हम मुद्रित करने के लिए जा रहे हैं.
अगले एक है, हम कर रहे हैं, जबकि अभी से ही एक्स मुद्रण.
क्या एफ के अंदर है?
0x123.
ठीक है.
>> और फिर, अंत में, हम नि: शुल्क है.
क्या हम मुक्त करने के लिए पारित कर रहे हैं?
हम एक्स गुजर रहे हैं.
मैं वास्तव में प्रदर्शित समय यह ढेर फ्रेम में.
>> इसलिए हम मूल्य गुजर रहे हैं 0x123 मुक्त करने के लिए.
तो अब मुक्त, सभी अधिकार जानता है मैं ढेर करने के लिए ऊपर जाना है
और नि: शुल्क है कि स्मृति.
यह अब क्या इस्तेमाल कर रहा है पता 0x123 पर है.
>> तो मुक्त जारी करने जा रहा है ढेर से कि.
अब हमारे ढेर फिर खाली है.
हम कोई स्मृति लीक है.
अब मुफ्त में वापसी करेंगे.
एक्स अभी भी 0x123 है कि नोटिस.
लेकिन यह है कि अब मान्य नहीं स्मृति है.
हम भिन्नता एक्स अब नहीं चाहिए.
हाँ?
>> दर्शक: 0 बेमानी वापसी है?
>> रोब: 0 बेमानी returen है?
हां.
हम सिर्फ वहाँ रखा है कि क्योंकि हम हवा के लिए एक वापसी एक है.
तो यह हाँ, देता है, की तरह है 0 वापसी शामिल हैं.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: तो नि: शुल्क एक्स के बाद, क्या होता है अगर हम संकेतक भिन्नता की कोशिश की?
यह कुछ भी गलत हो जाता है कि संभव है.
यह हम अभी भी 50 मिलेगा कि संभव है.
>> ऐसा लगता है कि स्मृति है कि, यह भी संभव है, अब कुछ और के लिए इस्तेमाल किया जा रहा है.
तो यह अपरिभाषित व्यवहार है.
और अपरिभाषित कुछ भी का मतलब हो सकता है.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: नहीं, तो आप असाइन अगर एक्स कुछ और.
तो अगर यहीं हम एक्स के बराबर होती कहा बाकी malloc कुछ -
malloc आकार घटना -
फिर उस मूल ब्लॉक की स्मृति को मुक्त नहीं है.
और हम सरकारी तौर पर इसे खो दिया है.
यह एक स्मृति रिसाव है.
हम सभी संदर्भों को खो दिया है स्मृति की कि ब्लॉक करने के लिए.
तो हम कभी भी यह मुक्त कर सकते हैं कोई रास्ता नहीं है.
ठीक है, तो फिर किया 0 साधन वापसी.
>> ठीक है, तो ढेर अतिप्रवाह.
यहाँ विचार क्या है?
तो ढेर नीचे जा रहा है, याद है.
ढेर ऊपर जा रहा है.
तो इस व्याख्यान से उदाहरण था, मुख्य बस जा रहा है जहां मुझे लगता है,
जा रहा है जो इस समारोह foo, कॉल बारी बारी से ही खुद को कॉल करने के लिए
फिर से.
>> तो ढेर फ्रेम करने के लिए जा रहे हैं वास्तव में एक ही काम करते हैं.
इसलिए हम मुख्य के साथ शुरू करने जा रहे हैं नीचे ढेर फ्रेम के रूप में.
तब मुख्य Foo, कॉल करने के लिए जा रहा है जो एक ढेर फ्रेम होने वाली है.
>> फिर foo foo कॉल करने के लिए जा रहा है फिर, मिल जा रहा है जो
एक और ढेर फ्रेम.
और फिर, और फिर, और फिर, और फिर अंत में, हम चलाते हैं, जब तक
ढेर में.
तो यह है कि हम कैसे मिलता है एक ढेर अतिप्रवाह.
और इस बिंदु पर, आप गलती SEG.
या फिर आप वास्तव में पहले गलती SEG होगी इस बिंदु लेकिन हाँ.
>> दर्शक: कोर डंप है SEG गलती के रूप में एक ही?
>> आरओबी: तो आप विभाजन देखेंगे गलती कोर फेंक दिया.
आप एक कोर डंप जब मिल आप गलती SEG.
और यह सभी की एक डंप की तरह है अपने मौजूदा स्मृति की सामग्री को इतना
आप कोशिश करते हैं और पहचान कर सकते हैं क्यों आप गलती SEG.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: तो एक विभाजन गलती का मतलब एक ढेर अतिप्रवाह नहीं है.
इसलिए जरूरी नहीं.
एक विभाजन गलती आप कर रहे हैं इसका मतलब है कि एक तरह से छू स्मृति
तुम नहीं होना चाहिए.
तो जो हो रहा है की एक ही रास्ता है, जब आप अतिप्रवाह हो चुकी है, हम छू शुरू
हम नहीं होना चाहिए कि एक तरह से स्मृति.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: तो एक अनंत लूप के अंदर.
की तरह, यह एक पुनरावर्ती अनंत की तरह है लूप और इसलिए हम एक और मिल
ढेर हर समय सीमा.
लेकिन सिर्फ एक नियमित रूप से अंदर एक, जबकि अनंत -
ठीक है, चलो भी च मुद्रित नहीं करते हैं -
कुछ करो.
जो भी हो.
>> हम हो रही हो नहीं जा रहे हैं एक और ढेर फ्रेम.
हम सिर्फ पाशन रखने के लिए जा रहे हैं इस एकल अनुदेश से अधिक.
ढेर नहीं बढ़ रहा है.
यह तथ्य है कि प्रत्येक पुनरावर्ती कॉल हमें एक ढेर फ्रेम दे रहा है.
हम एक ढेर अतिप्रवाह मिल रहा है.
हाँ?
>> आप प्राप्त करने के लिए कहा तो अगर: दर्शकों पाश जबकि और फिर [सुनाई]?
>> आरओबी: तो, जबकि लूप के अंदर अगर एक printf आप अभी भी होगा, वहाँ था
गलती SEG नहीं.
मैं सिर्फ बातें भ्रमित नहीं करना चाहता था.
यह पाश होगा.
आप एक एकल ढेर मिलता था printf के लिए फ्रेम.
>> फिर printf लौटेंगे.
तो फिर तुम फिर से पाश था.
आप एक एकल ढेर मिलता था printf के लिए फ्रेम.
यह लौटेंगे.
सिंगल ढेर फ्रेम.
तो अगर आप इस अनंत नहीं मिल रहे हैं ढेर फ्रेम जमा.
>> दर्शक: [सुनाई]?
>> रोब: हाँ.
तो यह पोट अतिप्रवाह होता है क्योंकि इनमें से कोई नहीं
foo के लिए कॉल लौट रहे हैं.
हम वापस अगर ऐसा है, तो हम करेंगे ढेर फ्रेम खोने लगते हैं.
और फिर हम अतिप्रवाह ढेर नहीं होगा.
आप एक आधार के मामले जरूरत है और यही कारण है अपने व्यक्तिगत कार्यों के लिए.
हाँ?
>> दर्शक: संभावित आकार और है के लिए एक ही ढेर के ढेर
सभी कार्यक्रमों?
>> आरओबी: मोटे तौर पर.
संभावित ढेर के आकार और है सभी कार्यक्रमों के लिए ढेर में एक ही?
मोटे तौर पर.
करने के लिए कुछ randomization है जहां पर ढेर शुरू होता है और
ढेर शुरू होता है, जहां.
आप की एक पूरी बहुत कुछ के लिए होता है वैश्विक चर और बातें, आप कर सकते हैं
कुछ जगह से दूर ले अपने ढेर के लिए.
>> एक 64 बिट सिस्टम पर, आप वस्तुतः अनंत स्मृति है.
सिर्फ इतना नहीं है.
32 बिट और 64 बिट के बीच, कि एक महत्वपूर्ण अंतर है.
>> आप एक पूरी बहुत अधिक प्राप्त करने के लिए जा रहे हैं ढेर और एक 64 बिट पर ढेर अंतरिक्ष
अभी और भी है प्रणाली क्योंकि वे उपयोग कर सकते हैं पते.
लेकिन एक निजी सिस्टम पर, यह होगा ढेर के लगभग एक ही राशि हो
और ढेर अंतरिक्ष.
ठीक है.
>> तो आखिरी बात संकलन है.
तो अगर आप इस प्रक्रिया में पता होना चाहिए.
चार बड़े कदम उठाए हैं.
तो पहले एक होना चाहिए याद करने के लिए आसान हो सकता है.
पूर्व प्रसंस्करण.
यह उस में उपसर्ग पूर्व है.
तो यह सब कुछ पहले आता है.
>> याद करने की बात हैश है.
तो हैश परिभाषित करता है और हैश शामिल उन सभी में.
उन सभी पूर्व प्रोसेसर हैं निर्देशों.
ये बातें कर रहे हैं कि पूर्व प्रोसेसर का ख्याल रखता है.
>> तो एक पूर्व प्रोसेसर क्या करता है?
यह एक सच में मूक बात है.
यह करने में सक्षम है इन सभी के सभी कर रहे हैं प्रतिलिपि, और कटौती, और चिपकाने की कार्रवाई.
>> तो हैश मानक I0 डॉट घंटे भी शामिल है.
क्या चल रहा है?
यह मानक I0 डॉट घंटे हथियाने है फ़ाइल और ऊपर में चिपका
यह हैश शामिल कहते हैं जहाँ भी मानक I0 डॉट घंटे.
>> और किसी भी हैश हम है कि परिभाषित देखा, क्या कर रही है?
इसका मूल्य नकल कि हैश परिभाषित कि रूप और चिपकाने परिभाषित किया गया है
आप मान का उपयोग कर रहे हैं जहाँ भी.
तो पूर्वप्रक्रमक सिर्फ सच में करता है साधारण पाठ आपरेशन आधारित.
यह स्मार्ट कुछ भी नहीं है.
तो बाकी सब है अधिक जटिल है.
>> तो अब है कि पूर्वप्रक्रमक है किया, हम वास्तव में संकलन.
तो क्या इसका मतलब यह संकलन करता है?
हम अब सी कोड से जा रहे हैं विधानसभा कोड के लिए.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: हाँ, हम उस पकड़ा.
तो संकलन.
हम C से विधानसभा के लिए जा रहे हैं.
तो यह एक वास्तविक भाषा परिवर्तन है.
खुद संकलन से जाने का मतलब एक उच्च स्तरीय भाषा के लिए
एक निचले स्तर की भाषा.
>> और सी एक उच्च स्तर की भाषा है विधानसभा की तुलना में.
विधानसभा क्या है?
, सुंदर हैं कि इसका निर्देश बहुत, अपने CPU के लिए बनाया है.
लेकिन अगर आपके कंप्यूटर अभी भी करता है विधानसभा समझ में नहीं.
यह केवल लोगों और शून्य समझता है.
तो अगले कदम, संयोजन है जो इन निर्देशों से हमें लाता है
अपने CPU वास्तव में समझता है और करने के लिए, उन्हें तब्दील
लोगों को और शून्य.
>> विधानसभा के लिए बाइनरी सी तो.
लेकिन मैं अभी तक एक निष्पादन नहीं है.
तो CS50 पुस्तकालय के बारे में सोच.
हम के लिए एक द्विआधारी साथ प्रदान की है GetString है जो इस CS50 पुस्तकालय,
और GetInt और यह सब.
>> लेकिन CS50 पुस्तकालय -
में और खुद की - निष्पादन योग्य नहीं है.
यह एक मुख्य समारोह नहीं है.
यह सिर्फ द्विआधारी का एक गुच्छा है आप उपयोग कर सकते हैं.
तो लिंक हम सब एक साथ लाना है इन अलग बाइनरी फ़ाइलों की
एक वास्तविक निष्पादन में.
आप टाइप कर सकते हैं कि एक डॉट बाहर एक डॉट स्लेश.
>> तो यह है कि आप फाइल की तरह है , लिखा - अपने प्रोग्राम है जो कुछ -
Ceaser डॉट सी.
लेकिन अब यह संकलित किया गया है बाइनरी नीचे.
तो Ceaser डॉट ओ.
और यह हमारी CS50 पुस्तकालयों बाइनरी है.
और वे संयुक्त जा रहा हो एक एकल निष्पादन में.
हाँ?
>> दर्शक: [सुनाई]?
>> आरओबी: तो पहले याद है, शामिल हैं, हैश वास्तव में है शामिल एक
पूर्व प्रोसेसर कदम.
लेकिन वह अलग है.
आप किसी भी कार्य का उपयोग नहीं कर रहे हैं कि , तो अपने एकल फाइल के बाहर हैं
नहीं, तुम कुछ भी लिंक करने की जरूरत नहीं है तुम सब कुछ के बाद से.
>> उस ने कहा, printf अंदर लिंक किया जा रहा है
क्या तुमने कभी printf का उपयोग करते हैं, कि कुछ है उस में जुड़े होने की जरूरत
आप लिखते हैं कि नहीं किया.
और, वास्तव में, printf स्वतः है अंदर जुड़ा हुआ
आप कैसे कमांड लाइन पर या जब पता आप कर लिखें, आप यह है देखना
लिंक है जो पानी का छींटा एल CS50, CS50 पुस्तकालय में?
Printf, और इस तरह से सामान, जा रहा है स्वचालित रूप में जुड़े होने की.
कुछ भी पर कोई अन्य प्रश्न?
>> दर्शक: [सुनाई]?
>> रोब: जोड़ने?
हम एक पूरी गुच्छा की है अलग द्विआधारी फ़ाइलें.
इस विहित उदाहरण है हम CS50 पुस्तकालय है का उपयोग करें.
हम संकलित और आप को दे दिया है इस CS50 पुस्तकालय के लिए द्विआधारी.
>> आप GetString उपयोग करना चाहते हैं अपने कार्यक्रम में.
तो तुम जाओ और GetString का उपयोग करें.
लेकिन के लिए मेरे बाइनरी कोड के बिना आप अपने कोड संकलन, GetString
नीचे, आप वास्तव में नहीं चला सकते हैं अपने कार्यक्रम GetString स्ट्रिंग है क्योंकि
अभी तक पूरी तरह से परिभाषित नहीं.
>> आप मेरे द्विआधारी में लिंक यह केवल जब कि कि अब सभी GetString शामिल
ठीक है, मैं वास्तव में यह कर सकते हैं GetString निष्पादित.
मेरा फ़ाइल पूरा हो गया है.
और मैं यह भी चला सकते हैं.
हाँ?
>> दर्शक: परिवर्तित जोड़ने करता है निष्पादन योग्य द्विआधारी?
आप अन्य नहीं है तो भी अगर पुस्तकालयों, यह अभी नहीं होगा
अनुवाद करने के लिए आवश्यक [सुनाई]?
>> आरओबी: तो एक निष्पादन बाइनरी में अब भी है.
यह सिर्फ एक पूरी संयोजन है बायनेरिज़ का गुच्छा.
>> दर्शक: आपको बहुत बहुत धन्यवाद.
>> रोब: कोई समस्या नहीं है.
अन्य प्रश्न?
अन्यथा, हम सब तैयार हैं.
ठीक है.
धन्यवाद.
>> [वाहवाही]
>> दर्शक: धन्यवाद.
>> रोब: हाँ.