प्रोफेसर: तो एजेंडे के लिए इस सप्ताह, न कि अधिक सामान। लेकिन उम्मीद है कि बहुत, बहुत मददगार और तुम लोगों को इस सप्ताह के लिए प्रासंगिक है। लेकिन हम शायद 15 खर्च करने के लिए जा रहे हैं बस जल्दी से बात कर 20 मिनट लिंक सूची के बारे में। लिंक सूचियों के लिए जा रहे हैं प्रश्नोत्तरी पर कवर किया। तो शायद यह बहुत मददगार होगा वह यह है कि क्या बारे में थोड़ा जानने के लिए। हम विशाल खर्च करने के लिए जा रहे हैं आज के अनुभाग के बहुमत प्रश्नोत्तरी शून्य अभ्यास समस्याओं पर जा रहा है। और फिर हम शायद 20, 30 मिनट बचा लेंगे किसी भी सुस्त प्रश्नों के लिए अंत में किसी को भी है। और, पिछले तब पांच मिनट, मैं जा रहा हूँ प्रश्नोत्तरी के लिए एक पंप तक भाषण देने के लिए। तुम लोग सब है कि यहाँ के लिए होना चाहता हूँ। यह एक अच्छा समय होने जा रहा है क्योंकि। ठीक है, तो कुछ लिंक की सूची पर सामग्री। कैसे वे आम तौर पर संरचित कर रहे है अगर आप सही, एक नोड कहा जाता है? तुम्हें बुलाया ये बातें है नोड्स, structs जो कर रहे हैं। मैं बनाने के लिए कैसे पर जायेंगे अगली स्लाइड में एक नोड। लेकिन अनिवार्य रूप से सभी जुड़े डेटा है सूचियों है कि संकेत के माध्यम से एक साथ महसूस की गई है। और तो लाभ हमारे पास है एक लिंक सूची से अधिक का उपयोग करने का, शायद, एक सरणी की तरह है, तथ्य यह है कि एक सरणी में तुम में से एक सन्निहित ब्लॉक की जरूरत है सब एक ही जगह में स्मृति, एक एक के बाद, कि है करने के लिए सक्षम होने के लिए। एक लिंक सूची जबकि, तुम सकता है स्मृति के यादृच्छिक थोड़ा बिट्स सब अपने कंप्यूटर पर संकेत द्वारा एक साथ अनुभूत। और इस तरह से आप जानकारी का उपयोग कर सकते हैं उस के बाद एक आता है दूसरे के बाद, अन्य सिर्फ एक बड़ा हिस्सा जरूरत के बिना कहीं आपके कंप्यूटर में स्मृति। और इसलिए इस प्रमुख में से एक है हम कड़ी सूची का उपयोग वजहों से। दूसरे, यह गतिशील करने के लिए बहुत आसान है क्योंकि सरणी में लिंक सूची का आकार बदलने के, आप एक सरणी की घोषणा करते हैं, आप एक निश्चित निर्धारित मूल्य है। चलो मैं बनाना चाहता था हम कहते हैं 10 पूर्णांकों की एक सरणी। मैं 10 की एक सरणी बनाने पूर्णांकों, और यह बात है। यह 10 है। मैं उस के बाद क्या करना है पता नहीं है। मैं इसे 11 बनाना चाहते थे, तो यह नहीं कर सकता। मैं यह 9 बनाना चाहते हैं, यह नहीं कर सकता। एक लिंक सूची में जबकि, आप जोड़ सकते हैं और हटा सकते हैं और आप चाहते हैं डालें। आप गतिशील आकार बदल सकते हैं अपने , यहाँ अपने डेटा संरचना की संरचना करें। और कहा कि हमें एक बहुत कुछ देता है अधिक जोड़ा लचीलेपन हम आम तौर पर ऐसा नहीं है कि सरणियों के साथ है। किसी को भी बुनियादी पर उलझन एक लिंक सूची है कैसे की संरचना या हम क्यों एक सरणी में से एक का उपयोग करने के लिए है? हाँ, हम विस्तार से पर जायेंगे कैसे वास्तव में एक बनाने के लिए। लेकिन इस बस की तरह है ठीक है अब सामान्य अर्थ। कूल। और तो सरणियों एक साथ महसूस कर रहे हैं इन सुंदर छोटी बातों का कहा जाता नोड्स। सभी एक नोड संरचना का एक प्रकार है। अगर तुम चाहते थे एक संरचना है, याद रखें चर के एक खास प्रकार बनाने के लिए सी में है कि पहले से ही नहीं है आप एक प्रोग्रामर के रूप में, मौजूद हैं, वास्तव में अपने आप को उस बना सकते हैं। डेटा की और इसलिए इस प्रकार संरचना एक नोड कहा जाता है, वास्तव में, कि हमारे द्वारा बनाई गई है अपने दम पर सेल्सियस के भीतर मौजूद नहीं है। और वैसे भी कि आप तुम्हारे पास है एक बना typedef संरचना का शीर्षक है, जो मैं कर रहा हूँ संकलक बताता है एक संरचना बनाने के बारे में। हम इसे "नोड।" नाम लिए जा रहे हैं और अंदर हम जा रहे हैं में एक चर घोषित करने, एक मूल्य की दुकान करने के लिए जा रहा है। और फिर हम भी करने जा रहे हैं एक सूचक कहा जाता है "अगली" कि अगले करने के लिए अंक लिंक सूची में नोड। और फिर आपको लगता है कि बंद खत्म सिर्फ इसलिए फिर से नोड दोहरा द्वारा संकलक ठीक है, जानता है कि मेरी संरचना का अंत है। और इसलिए इस तरह, हम तरह कर रहे हैं एक प्यारा सा सरणी बनाने की एक साथ बात की तरह मूल्य और एक संकेत के साथ। और अगर आप उन सभी को लिंक कर सकते हैं एक साथ उन लोगों के संकेत के साथ। वे सभी तरह की जा सकती है ताकि एक श्रृंखला में एक साथ अनुभूत। कूल। आप थोड़ा बेहतर है कि सुन सकते हैं? दर्शकों: हाँ। प्रोफेसर: ठीक है। तो तुम लोग देख सकते हैं कि, जिस तरह से, एक ठेठ लिंक सूची संरचित है आप एक सिर है। नहीं है, जो आप सिर मूल्य नहीं है किसी भी अन्य सूचक द्वारा बताया जा रहा है। लेकिन यह कम से बात करने के लिए जा रहा है या संदर्भ, अन्य नोड। नोड के बाद संदर्भ के लिए जा रहा है नोड, और इतने पर और आगे उस के बाद आप अंततः मारा जब तक अपने लिंक सूची के अंत। और तुम बस वहाँ एक सूचक नहीं होगा। और हां, यहां तक ​​कि एक श्रृंखला पर, की तरह लगता है, या आपके द्वारा किए गए लोगों में से किसी भी है, मुझे पता नहीं है, फल लूप्स के साथ की तरह जब आप छोटे थे। आप एक साथ उन्हें स्ट्रिंग होगा और अपनी गर्दन के चारों ओर उन्हें पहनते हैं। यह ठीक ऐसा ही लगता है। आप इन छोटी चीजें है कि आप कर सकते हैं एक साथ स्ट्रिंग एक को उस बिंदु इसे करने के बाद, एक के बाद यह, और इतने पर और आगे आप एक श्रृंखला है, जब तक एक आंकड़ा संरचना की आप की तरह हालांकि कि आप उपयोग कर सकते हैं। तो तरीका यह है कि हम करेंगे आम तौर पर डालने या हटाना एक लिंक से किसी भी नोड सूची बहुत अलग है उस नोड है जहां पर निर्भर करता है। तो, उदाहरण के लिए, क्योंकि संकेत हमेशा से रहे हैं एक विशिष्ट मूल्य पर इशारा करते हुए, आप नष्ट या एक नोड सम्मिलित करते हैं, आप सूचक है कि यह सुनिश्चित करना चाहते हैं सब बातें सही पर इशारा कर रहा है। अगर तुम चाहते थे तो संभवतः डालें एक के मूल्य के साथ एक नया नोड एक सॉर्ट लिंक अंदर सूची में, हम सब यहां जानते जा रहा है कि तस्वीर से ठीक है, सिर और दोनों के बीच में जाने के लिए? एक सही वहाँ फिट बैठता है। लेकिन जिस तरह से हम ऐसा करेंगे पहले सूचक dereferencing से है सिर से और एक के लिए है कि भेज रहा है। लेकिन हम यहां एक समस्या के रूप में आते हैं। किसी को क्या समस्या देख सकते हैं हम पहली भिन्नता के लिए गए थे, तो है एक के सिर से सूचक? क्या समस्या है, हम यदि हम कोशिश में चला सकता है हमारे सरणी के सामने करने के लिए इस जोड़ने के लिए? दर्शकों: [अश्राव्य] प्रोफेसर: बिल्कुल। यहाँ तो हम था कि एक सूचक है एक बार दो सिर से इशारा करते हुए। लेकिन आप उस से छुटकारा मिलता है सूचक है, तो आप एक को इंगित हम अब कोई पता नहीं है जहां दो खोजने के लिए जाने के लिए। जैसा कि मैंने पहले कहा, तुम मिल गया है क्योंकि एक आपके कंप्यूटर में स्मृति का विशाल हिस्सा। इन सभी नोड्स सकता है बेतरतीब ढंग से बीच-बीच में हो आपके कंप्यूटर में किसी भी जगह में। और अगर आप नहीं जानते कि कैसे कि खोजने के बारे में जाने के लिए। और तो आप संकेत है की जरूरत है अंत में सभी नोड्स की ओर इशारा करते। वरना अगर आप गलती से एक भिन्नता पहले बताए एक मूल्य के पहले, आप कर रहे हैं सिर्फ खोने के लिए जा बाद में सब कुछ। तो क्या हम करने जा रहे हैं ऐसा आप पहली बार होगा, है एक सूचक पर बनाना चाहते हैं नोड आप सम्मिलित करना चाहते हैं। आप जहां को इंगित इसे करने के लिए सम्मिलित करना चाहते हैं, और फिर बाद में आप एक के लिए वापस सिर बात कर सकता है। कि यहां हर किसी के लिए मतलब? अच्छा है। सिर्फ एक श्रृंखला की तरह के रूप में सोचो। आप एक श्रृंखला जोड़ते हैं, यह सहज की तरह है कैसे आपको लगता है कि डालने के बारे में जाना चाहते हैं। ठीक है, तो लगता है कि बहुत वास्तव में है मैं सोचा होगा की तुलना में कम, लिंक सूचियों पर पांच मिनट बकना। अभी तो तुम लोगों को है वह यह है कि क्या के मूल विचार। यहाँ हम प्रश्नोत्तरी शून्य के लिए एजेंडा है। इस तुम भयभीत मत देना। मैं यह जानकारी का एक बहुत कुछ है पता है। यह बहुत डरावना लग रहा है। यह भी की एक बहुत कुछ है मैं पदों की सीएससी तरह, लगता है। हेक्साडेसिमल तार जैसे हालात, संकेत, गतिशील स्मृति आवंटन बहुत डरावना लग शब्द हैं। लेकिन हम उन्हें तोड़ने के लिए जा रहे हैं नीचे, कुछ अभ्यास समस्याओं करना इतना है कि आप लोग सब इस परीक्षण के लिए तैयार हैं। आप में से कितने लोगों का है पहले से ही अध्ययन शुरू कर दिया? ठीक है, तुम लोग शायद चाहते हैं शुरू हो रही शुरू करने के लिए उस पर, प्रश्नोत्तरी कल है। या आप में से कुछ के लिए गुरुवार। हाँ, तो हम जाने के लिए जा रहे हैं कुछ अभ्यास समस्याओं पर। आप लोग सब लेना चाहते हैं कागज के एक पत्रक, एक पेंसिल बाहर। हम बस खर्च करने के लिए जा रहे हैं आज के अनुभाग के विशाल बहुमत उस में से कुछ के ऊपर जा रहा है कि तुम लोग है तो प्रश्नोत्तरी पर क्या उम्मीद की एक विचार है। ठीक। साजो की एक जोड़ी किसी के लिए, के रूप में अच्छी तरह से विवरण कौन हैं, तो वहां उस लिंक करने के लिए नहीं किया गया है आप मोर्चे पर, cs50.yale.edu करने के लिए जाना एक कड़ी है इस पेज कि "प्रश्नोत्तरी शून्य के बारे में कहते हैं।" कड़ी ले जाता है। आप इसे पढ़ नहीं किया है, कृपया इसे पढ़ा। यह आप वास्तव में महत्वपूर्ण बताता है, क्योंकि प्रश्नोत्तरी के बारे में जानकारी। मैं इस बाहर खींचने के लिए जा रहा हूँ कि सिर्फ इसलिए कि शारीरिक रूप से, तुम लोगों को पता नहीं कहाँ है, तो जाने के लिए, हम समस्याओं का होगा। और एक के साथ मामले में यदि ऐसा है तो अपने पिछले एन के लिए, कानून स्कूल सभागार के पास जाओ। और अगर पी के साथ अपने पिछले शुरू होता है Z करने के लिए, डेविस सभागार के पास जाओ। और इस के लिए ही लागू होता है बुधवार अनुभाग में लोग। आप प्रश्नोत्तरी पर ले जा रहे हैं गुरुवार, आप एसएसएस 114 करने के लिए जाना जहां अपने व्याख्यान में आम तौर पर है। दर्शकों: [अश्राव्य] प्रोफेसर: Z करने के लिए हे, आप जा रहे हैं डेविस सभागार में जाने के लिए। मैं सही है कि बदलने के लिए जा रहा हूँ? ओह, हाँ, तुम सिर्फ स्वचालित रूप से असफल। अरे हाँ, कि आप क्रिस्टा है। हाँ, मेरा बुरा। हाँ, Z करने के लिए हे, आप जा रहे हैं डेविस Auditorim करने के लिए जाने के लिए। मैं इस बार मैं अपलोड ठीक करने के लिए जा रहा हूँ। हाँ। और फिर भी कुछ मन के लिए महत्वपूर्ण आप आधिकारिक तौर पर कर रहे हैं कि बुधवार को है बुधवार खंड में दाखिला लिया, आप ने बुधवार को अपने प्रश्नोत्तरी ले लेना चाहिए। और तुम में गुरुवार को नामांकित कर रहे हैं, आप अपने प्रश्नोत्तरी गुरुवार ले लेना चाहिए। और यह वर्ग समय के दौरान है। कहाँ है, मैं इसे 1:00 की तरह लगता है बुधवार को 02:15 और 2:30-3:45 गुरुवार को। आप एक कट्टर विरोधी संघर्ष किया है, डीन के बहाने ही बात कर रहे हैं, दुर्भाग्य से, हम ले जा सकते हैं। हम पड़ा है क्योंकि एक अनुरोधों के विशाल बहुमत गुरुवार को बुधवार से स्विच करने के लिए। जो कि हम जब तक सम्मान नहीं कर सकते हम एक डीन का अनुरोध किया है। ठीक। हम एक पर आरंभ करने से पहले तो अभ्यास समस्याओं की जोड़ी है, मैं बस पर जाने के लिए जा रहा हूँ सफलता के लिए एंडी उपयोगी टिप्स। तुम लोग, जब आप वास्तव में, अध्ययन हाथ से कोड लिखने का अभ्यास करना चाहते हैं। पहली बार कभी मैं एक सीएस प्रश्नोत्तरी ले लिया है, मैं नहीं था हाथ से अभ्यास लेखन कोड और इससे पहले कि यह अत्यंत था यह कितना मुश्किल था पर चौंकाने वाला है। आप लोगों में नहीं मिलता है जब सब कुछ बाहर टाइपिंग की आदत, यह बहुत स्वाभाविक रूप से आता जा रहा है सक्षम स्वतः पूर्ण की है, वहाँ कोष्ठक और अर्धविराम। आप इसे बाहर जब लिखना हाथ से, कभी कभी यह है बहुत, बहुत आसान अर्धविराम को भूल जाते हैं, या एक वर्ग को बंद करना भूल जाते हैं, या पेट के बंद करने के लिए भूल जाते हैं, या कुछ इस तरह का। तो आप हाथ से कोड लिखते हैं, यह एक बहुत ही अलग अनुभव है। तो तुम लोग, आप काम कर रहे हैं अभ्यास समस्याओं में से कुछ के माध्यम से, यह अच्छा वास्तव में आज अभ्यास करने के लिए होगा। आप कर रहे हैं या कल, मुझे लगता है, गुरुवार को प्रश्नोत्तरी ले रही है। दूसरे, हम की तरह, पिछले है, अभ्यास के आठ साल के मूल्य ऑनलाइन quizzes। इस वर्ष की प्रश्नोत्तरी शायद हो जाएगा बहुत, उन सभी के लिए समान है। वे सब बहुत समान हैं। आप की तरह में मिलता है सवालों के प्रकार की शैली हम चाहते हैं कि, प्रकार की हम उस में लिख देंगे कि काम करता है, वगैरह, वगैरह। तो, व्यवहार क्विज़ लेने के लिए विशेष रूप से समय की कमी के तहत। 75 मिनट प्रश्नोत्तरी है करने के लिए समय की राशि का एक बहुत कुछ नहीं। यह बहुत, बहुत लंबी है। और इसलिए तुम लोग वास्तव में चाहते हैं तुम लोग कर रहे हैं सुनिश्चित करने की लिखने की आदत में जल्दी से हाथ से कोड। जब आप पहली बार नहीं करना चाहती क्योंकि समय है कि लंबाई के एक प्रश्नोत्तरी देखने के लिए अपने प्रश्नोत्तरी पर हो। तुम लोग वास्तव में बनाना चाहते आप पहले से है कि अभ्यास। चौथा, आप समीक्षा करना चाहते हैं व्याख्यान और अनुभाग स्लाइड। आप चीजों को याद करने की जरूरत नहीं है। दरअसल, हर कोई अनुमति दी है एक सफेद कागज के नोटों की एक चादर, आगे और पीछे। तुम लोग लिखें या लिख ​​सकते हैं। आप अपने आप को याद करने के लिए की आवश्यकता होगी, मिल जाए कुछ भी, कि चादर पर इसे नीचे रख दिया। मैं तुम्हें गारंटी, आप नहीं करना चाहते हैं कि प्रश्नोत्तरी के बीच में फंस गया हो की तरह किया जा रहा है ओह, हाँ, क्या है कि तरह की तुलना में इस तरह का क्रम। बस इसे नीचे रख दिया और इसे कॉपी सीधे अपने नोट शीट से। तो फिर आप वास्तव में सिर्फ उपयोग कर सकते हैं मस्तिष्क की समस्याओं के बारे में सोचने के लिए बल्कि तथ्यों को याद करने के लिए होने से। और तो वास्तव में लाभ लेने के लिए किसी भी जगह के विवरण की आप को याद करने की जरूरत है कि लगता है कि, समीक्षा शीट पर इसे नीचे खटखटाने। ठीक है, किसी भी सवाल logistically प्रश्नोत्तरी के बारे में हम शुरू करने से पहले कुछ प्रश्नोत्तरी समस्याओं का अभ्यास? हाँ? दर्शकों: मैं एक मौका नहीं मिला है प्रश्नोत्तरी को देखने के लिए [सुनाई] लेकिन यह होने जा रहा है आवेदन ज्यादातर, या यह भी होने जा रहा है जैसे, ज्ञान प्रश्न? प्रोफेसर: यह एक बहुत कुछ है। तो, जिस तरह कि मैं होगा प्रश्नोत्तरी वर्णित है- मैं एक साथ रखा कुछ अभ्यास समस्याओं मैं सभी क्विज़ से खींच लिया है। लेकिन अगर आप दो मुख्य वहाँ देखेंगे कि प्रश्नों के प्रकार हम आप से पूछना होगा। एक सामान का एक बहुत कम स्तर पर विस्तार है। हम आपको कोड का एक छोटा सा हिस्सा दे देंगे और एक त्रुटि यहाँ नहीं है, कहते हैं? यहाँ क्या बाहर मुद्रण किया जाएगा? इस कोड का उत्पादन होगा क्या, वगैरह। तो बहुत कम स्तर जानकारी के विवरण। और दूसरा पहलू पर, हम बहुत ही होगा उच्च स्तर के ज्ञान आधारित प्रश्न। आप क्या व्याख्या कर सकते हैं एक द्विआधारी खोज के बीच का अंतर और एक रेखीय खोज है? हम क्यों करना चाहते हैं होगा एक दूसरे के ऊपर का उपयोग करें? शायद, GDB क्या है? हम क्यों GDB का उपयोग करना चाहते हैं? उच्च स्तर, अधिक मौलिक समझ सवाल। तो आप का एक मिश्रण देखेंगे अपने प्रश्नोत्तरी पर उनमें से दो। कुछ और हम पहले इसे सीधे में सिर? ठीक। दर्शकों: एक और। प्रोफेसर: ओह, एक और। माफ़ कीजिए। दर्शकों: हाँ, यह सब ठीक है। तो अगर आप 75 मिनट है कह रहे हैं यह संभावना नहीं है, जैसे बहुत छोटा कि हम खत्म हो जाएगा? या, जैसे, 75 मिनट बिल्कुल के रूप में ज्यादा समय है अगर हम थे हम की आवश्यकता होगी के रूप में उचित रूप से तैयार? प्रोफेसर: ठीक है, तो प्रश्नोत्तरी चुनौती दे रहा है। यह निश्चित रूप से चुनौती दे रहा है। यदि आप समय पर अपने आप को कम मिलेगा। तुम्हें शायद, 10 की तरह, हिट करने के लिए जा रहे हैं 15 मिनट के लिए जाना है, और गंदगी की तरह किया जा रहा है। मैं इतना करने के लिए छोड़ दिया है। और कहा कि पूरी तरह से ठीक है। हर कोई एक ही तरह से महसूस की जा रही है। बस के बारे में पता होना आपके पास कितना समय है। मैं आपको बता क्यों और इसलिए है कि लोग अभ्यास क्विज़ करते हैं। यह वास्तव में एक महान भावना देता है क्योंकि क्या की प्रश्नोत्तरी की तरह होने जा रहा है। तो अगर आप अपने आप होने लगता है कि अगर अभ्यास समाप्त करने में सक्षम का एक अच्छा राशि में क्विज़ समय, आप अच्छी तरह से अपने आप को गति कर सकते हैं तो आप एक समस्या नहीं होगी बुधवार या गुरुवार को। कूल। इसलिए मुझे लगता है कि हर कोई लगता wants-- यदि ज्यादातर लोगों को कागज की चादरों है पहले से ही बाहर। मैं अनिवार्य रूप से बस के लिए जा रहा हूँ आप नमूना प्रश्न दे, जैसे, आप एक लोग, देना कुछ मिनट के लिए उन्हें क्या करना है। और हम एक वर्ग के रूप में पर जायेंगे उन्हें जवाब क्या कर रहे हैं। तो यह एक बहुत खास है हम करेंगे जल्दी सवाल सिर्फ परिवर्तित, आप से पूछना विभिन्न अड्डों के बीच संख्या। बाइनरी, के रूप में आप लोग कर सकते हैं याद है, दो का आधार है। दशमलव आधार 10, या हम क्या है मनुष्य आम तौर पर व्याख्या के रूप में। हेक्साडेसिमल शून्य है जो 16 आधार है, नौ के रूप में अच्छी तरह से एक के रूप में एफ के माध्यम से के माध्यम से तो मैं कर रहा हूँ चार नंबर भी नहीं है आप लोग पूछ यहाँ बदलने के लिए। मैं आप से तीन, पसंद दे दूँगा कैसे के माध्यम से सोचने के लिए चार मिनट हम इस सुलझाने के बारे में जाना होगा। दर्शकों: हम calculators अनुमति है? प्रोफेसर: आप नहीं होगा हाँ, कैलकुलेटर की जरूरत है। मैं बुनियादी इसके अलावा, मुझे लगता है, लगता है कि आप सभी लोगों के ऐसा करने के लिए कहा जाएगा। और अभी तो मैं एक तरह की भावना है हर किसी के लिए किया जाता है जब से, ऊपर देखो लहर, मैं, मुस्कान, पता नहीं आप कर रहे हैं, तो खुश लग रहे। हाँ। हो सकता है कि एक जोड़े को और अधिक मिनट। ठीक है, चलो इसे लाने में चलो। मैं जानबूझ कर लिए जा रहा हूँ लोगों को आप कम समय देना आप शायद करने के लिए जरूरत से इन समस्याओं में से कुछ करते हैं, मुझे लगता है कि यह सुनिश्चित करना चाहते हैं, सिर्फ इसलिए कि हम समस्याओं का एक गुच्छा के माध्यम से मिलता है। तो कोई चिंता नहीं तुम नहीं किया है, तो समाप्त करने के लिए एक मौका है। आप के रूप में लंबे समय के रूप में पूरी तरह से ठीक इस बारे में जाने के लिए की एक विचार है। तो चलो आगे जाना है और पहली बार एक ऐसा ही करे। पहले तो, किसी ने मुझे बताने के लिए चाहता है द्विआधारी में, क्या इन अंकों के प्रत्येक करना उनके मूल्यों के संदर्भ में प्रतिनिधित्व करते हैं? हाँ? दर्शकों: दो को शक्ति शून्य, 2-1। प्रोफेसर: बिल्कुल। So. ठीक है, तो आम तौर पर हम आधार 10 में जब हो इन सभी की तरह कर रहे हैं, का प्रतिनिधित्व करते हैं शून्य के आधार पर 10, है ना? यही कारण है कि अपने एक की जगह है। अपने 10 की जगह है सभी है एक की सत्ता में 10। आप 100 की जगह 10 दो के सत्ता में। जो भी आधार आप जा रहा है में हैं सटीक एक ही बात के साथ क्या करना, सिर्फ एक अलग आधार के साथ। तो द्विआधारी, है कि सभी का आधार दो है। आप सभी को परिवर्तित करने के लिए जा रहे हैं दो जो कुछ भी सत्ता में में अंक कि अंकों की। और इसलिए इस अर्थ में, हम एक आसान तरीका हो सकता है से जोड़ कर रहा है या आदेश में सभी संख्याओं का योग आधार 10 में परिवर्तित करने के लिए। तो किसी ने मुझे बता चाहता है क्या पहले एक का जवाब आधार दस में है? दर्शकों: दो, [सुनाई] प्रोफेसर: हाँ। दर्शकों: 42। प्रोफेसर: 42, वहाँ तुम जाओ। इसलिए हम इस सवाल का जवाब मिल गया, जिस तरह से था दो है, जो पहले दो कर रही है। प्लस दो आठ है जो तीसरे,। इसके अलावा दो, पांचवें के लिए जो ऊपर छोड़ दिया है जो कुछ भी है। आप उन्हें योग और यह 42 है। किसी को भी हम जानते हैं कि कैसे मिल गया पर उलझन में है? , तो जैसे बुनियादी अलावा मैं आप ठीक होना चाहिए, कहा। यदि नहीं, तो ठीक है, हम भी है कि अभ्यास कर सकते हैं। लेकिन यह है कि सब ठीक है। कूल। किसी ने मुझे देने के लिए चाहता है के रूप में अच्छी तरह से एक दूसरे को जवाब? 50? अच्छा। कैसे पर उलझन में किसी को भी तो या तो हम मिल गया है? , मैं शांत होगा अगली स्लाइड पर जवाब। तो कोई चिंता नहीं है अगर तुम यह नीचे की नकल करने की जरूरत है। ठीक है, तो हेक्साडेसिमल थोड़ा पेचीदा मामला है। लेकिन मैं तुम लोगों को दिखाने के लिए जा रहा हूँ यह कैसे करना है के लिए एक शॉर्टकट। हेक्साडेसिमल तो, आप के रूप में सभी यह 16 होना है, याद है। और हम क्योंकि मनुष्य वास्तव में नहीं कर के रूप में कि प्रतिनिधित्व करने के लिए 16 नंबर हैं, हम, जो हमारे पहले नौ शून्य से जाना 10 मूल्यों, और फिर हम, एफ के माध्यम से एक करना जो अगले छह मान रहे हैं। और तो सबसे आसान तरीका से जाने के लिए हेक्साडेसिमल के लिए किसी भी द्विआधारी संख्या हिस्सों में उन्हें तोड़ने के लिए है। और इसलिए किसी भी द्विआधारी संख्या हम दे देंगे आप शायद आठ अंक होगा। तुम बस को तोड़ सकते हैं बीच में उन्हें। तो पहले one-- एक के बाद एक, एक के बाद एक, एक, एक, एक के बाद एक। एक तरह से आप जानते हैं, आकर्षित, यह लगता है कि ऊपर एक स्लैश या उन दोनों के बीच में एक अल्पविराम। और तुम बस में बदल सकते हैं सीधे जो कुछ भी यह पहली करने के लिए है हेक्साडेसिमल की संख्या, और यहां जो कुछ भी करने के लिए है हेक्साडेसिमल का दूसरा। इसलिए आम संकेतन से याद है, क्या हेक्साडेसिमल मूल्यों के साथ शुरू करते हैं? दर्शकों: शून्य। प्रोफेसर: 0 x। इसलिए हम किसी भी समय हम आप से पूछना है कि पता हेक्साडेसिमल के लिए किसी भी संख्या में परिवर्तित करने के लिए, या किसी भी समय आप किसी भी देखना 0x के साथ शुरू होता है कि संख्या, आप इसे एक हेक्साडेसिमल मान है कि पता है। और फिर आप के लिए कहा जा करने के लिए जा रहे हैं इन दो अंक हैं क्या निर्धारित करते हैं। और वैसे भी तुम, ऊपर tallying कि ऐसा कि आधा और कहा कि आधे tallying। इस उदाहरण में तो क्या हुआ एक, एक, एक, एक हो सकता है? कि क्या मूल्य होगा? यह ठीक है, एफ होगी? यही कारण है कि 15 होगी। इसलिए इस एफ वन होगा, यहां एक, एक, एक भी है एफ तो एक, एक, एक, एक, एक, एक, एक, हेक्साडेसिमल में से एक है, यह सब 0xFF है। इस आधे प्रतिनिधित्व किया क्योंकि एफ, 15 के मूल्य, और इस आधे का प्रतिनिधित्व किया एफ, मूल्य 15। क्योंकि याद है, हम कर रहे हैं शून्य से नौ तक की गिनती। एक एफ 15 है, बी 11 की तरह है, 10 की तरह है। हर कोई कैसे करने के लिए कि क्या मतलब हम hexadecimal द्विआधारी से मिला? दर्शकों: और इसलिए हम कैसे मिला एक, एक, एक, एक से 15? प्रोफेसर: हाँ, यह सही है, द्विआधारी है? यह सिर्फ एक द्विआधारी संख्या है की कल्पना करो। तो अगर आप दो के लिए किया है एक है जो zeroth। दर्शकों: ठीक है, ओह। तो आप बस इसे बाहर कुल। प्रोफेसर: हाँ, और उसके बाद आप सिर्फ इतना है कि बाहर कुल। यही कारण है कि यह सब है। दर्शकों: ठीक है। प्रोफेसर: ठीक है। दर्शकों: तो तुम द्विआधारी से जाना हेक्साडेसिमल को दशमलव के लिए? प्रोफेसर: यही कारण है कि सबसे आसान तरीका है, हाँ, ऐसा करने के लिए। तुम क्योंकि दशमलव के लिए नहीं जा रहे हैं दशमलव केवल नौ तक शून्य है। हम किस तरह की बस रहे हैं दो भागों में इस बंटवारे। दर्शकों: [अश्राव्य] दशमलव का उपयोग कर लगाने के लिए क्या यह हेक्साडेसिमल में करने के लिए ऊपर से मेल खाता है। प्रोफेसर: मेरा मतलब है, आप कर रहे हैं बुनियादी गणित का उपयोग करने को tallying। दर्शकों: हाँ। प्रोफेसर: हाँ, बहुत ज्यादा। यह थोड़ा भ्रमित है। लेकिन सिर्फ इतना पता है कि तुम उस ऊपर विभाजित कर सकते हैं जो कुछ भी इस मूल्य सिर्फ हिस्सों में है। देखो, यह द्विआधारी में क्या है? कि क्या नंबर है? यह होने जा रहा है शून्य से एफ के लिए कुछ यहाँ भी होने जा रहा है शून्य से एफ के लिए कुछ और फिर आप बस डाल सकते हैं सही वहाँ उन दो। दर्शकों: ठीक है। प्रोफेसर: हाँ। ठीक। तो तुम लोग करना चाहते हैं फिर अगले एक कोशिश की? शून्य, एक, शून्य से एक है, एक, शून्य, एक शून्य। मैं 30 सेकंड की तरह तुम लोगों को दे देंगे, आप शायद पता नहीं था के बाद से यह पहले कैसे करना है के लिए चाल। ठीक है, किसी को भी यह एक एक शॉट प्राप्त करना चाहते हैं? 0X5A। प्रोफेसर: 0X5A। 5 ए। अच्छा। तो यह यहां आप चाहते हैं be-- होगा आपको लगता है कि कैसे मिल गया हमें बताने के लिए? सबसे पहले, आप कैसे पाँच मिला? दर्शकों: शून्य की वजह से, एक, शून्य, एक पाँच है। प्रोफेसर: हर कोई समझ है पाँच क्यों शून्य, एक, शून्य, एक है? आप यहाँ एक मिल गया है। आप पहली बार के लिए दो में कुछ भी नहीं है। दो में दूसरे के लिए, आप चार है, जो एक है। तो अगर आप चार से अधिक जोड़ने एक, आप पांच लोगों की है। हर कोई अच्छा है? ठीक। और फिर क्या यह हो सकता है और क्यों? एक क्या संख्या के अनुरूप है? दर्शकों: 10। प्रोफेसर: और क्या इस आधार दो में? दर्शकों: [अश्राव्य] प्रोफेसर: बिल्कुल। यहाँ तो यह दूसरा मूल्य 0X5A होगा। हर कोई कैसे परिवर्तित करने पर अच्छा है? यह आपको लगता है कि यह तुलना में एक बहुत सरल है। मैं बस सुनिश्चित करना चाहता हूं आप उपयोगी सुझाव जानते कि कैसे करना है के लिए और चालें। दर्शकों: क्यों तुम सिर्फ विभाजित कर सकते हैं यह उस तरह बीच में? बस ठीक है, मैं केवल करने के लिए जा रहा हूँ, जैसे होना इन सबसे पहले [सुनाई] के बारे में परवाह है? प्रोफेसर: कि वास्तव में है क्योंकि रास्ते हेक्साडेसिमल मान प्रतिनिधित्व कर रहे हैं। वास्तव में इसका मतलब है कि 0x, आप कह रही है के अलावा अन्य कुछ भी नहीं यह एक हेक्साडेसिमल संख्या है कि। और यह हमेशा का प्रतिनिधित्व करता है पहले चार अंक। और यह हमेशा का प्रतिनिधित्व करता है अंतिम चार अंक। और इसलिए इन दो अंक बस विभिन्न बिट्स के अनुरूप हैं। दर्शकों: तो हम always-- होगा प्रोफेसर: तुम हमेशा रहे हैं आठ मूल्य बिट्स पाने के लिए जा रहा है। दर्शकों: बस एक बात पसंद है यहाँ या सब पर एक बात है? प्रोफेसर: यह सिर्फ एक है कंप्यूटर में एक चीज है, हां। दर्शकों: ठीक है। भयानक। प्रोफेसर: इसके अलावा, इस उदाहरण में ऐसा हम, दशमलव द्विआधारी से परिवर्तित और बाइनरी से हेक्साडेसिमल करने के लिए। तुम लोग भी आपको यह सुनिश्चित करना चाहते हैं दूसरी तरह के आसपास जा रहा अभ्यास। मैं आप 0xFF दिया तो, अगर तुम सकता है ठीक है, बाइनरी में है कि बाहर खींचना? तुम्हें पता है, बाइनरी में एफ परिवर्तित है जो एक, एक, एक, एक, द्विआधारी एफ परिवर्तित जो एक, एक, एक, एक है। तो हम क्या करने के लिए आप पूछ सकते हैं उल्टा। तो द्विआधारी करने के लिए दशमलव, या बाइनरी हेक्साडेसिमल। तो आप बनाना चाहते हैं सुनिश्चित करें कि आप दोनों तरीकों से पता है। हम शायद आप से पूछना होगा एक दो के संयोजन। हाँ, आप में एक सवाल है? मैं आप अच्छा कर रहे हैं see-- कर सकते हैं? दर्शकों: हाँ। प्रोफेसर: ठीक है। मैं इस मिटा करने के लिए अच्छा कर रहा हूँ? अच्छा है। ठीक है, तो जवाब किसी को भी यदि यहाँ हैं पर बाद में उत्सुक है और भ्रमित हो। ठीक। दर्शकों: हम डाल अगर यह बात करता है कैपिटल या लोअरकेस में हमारे पत्र? प्रोफेसर: यह करता है, क्योंकि हेक्साडेसिमल में, परंपरा से, सभी वर्ण अपरकेस कर रहे हैं। तो एक एफ के माध्यम से कर रहे हैं अपरकेस होने जा रहा। आप एक छोटे एक डाल, तो मैं नहीं जानता हम जरूरी है कि यह गलत निशान होगा यदि। लेकिन सैद्धांतिक रूप से, कि तकनीकी रूप से नहीं है आप इसे कैसे है चाहिए रहे हैं। इसलिए वे सभी अपरकेस होना चाहिए। हाँ, अच्छा सवाल है। ठीक। दूसरा सवाल। यहाँ इस सुंदर कार्यक्रम पर विचार करें। मैं इस सवाल पूछता हूँ, मैं यह वापस आ जाएगा। तो, सबसे पहले, मानक के अंदर क्या हो रहा है कि io.h कार्यक्रम के लिए ब्याज की है? दूसरे, क्या शून्य करता है लाइन तीन में दर्शाता है? और तीसरा, क्या से शून्य लौटने करता मुख्य लाइन के रूप में छह, आम तौर पर दर्शाता है? तुम लोगों को उन लिखना चाहते हैं मैं वापस स्विच करने के लिए है, के बाद से नीचे स्लाइड करने के लिए सिर्फ इतना है कि आप कोड देख सकते हैं। यह पसंद है, हो सकता है एक का एक उदाहरण है हम आप से पूछना है, जहां उच्च स्तर सवाल क्या बातें एक कार्यक्रम में मतलब है। मेरे लिए अच्छा करने के लिए हर कोई वापस स्लाइड करने के लिए जाना है? अच्छा ठीक है। तो मैं तुम्हें शायद तीन तरह लोगों को दे देंगे मिनटों में यह एक असली जल्दी में देखने के लिए। है, तो यह एक तरह ठीक काफी आसान है, धारणात्मक। क्या किसी ने मुझे बताने के लिए चाहता है सहित हैश से अंदर पहले हमारे मानक io.h पुस्तकालय फ़ाइल? हम क्यों कि पुस्तकालय की आवश्यकता क्यों है इस कार्यक्रम के लिए शामिल किए गए? यहाँ क्या हम इसके लिए जरूरत है? हाँ? दर्शकों: है कि जब आपको लगता है कि printf रखा है? प्रोफेसर: बिल्कुल। तो printf, किसी भी समय आप उपयोगकर्ता से एक इनपुट ले और प्रिंट कुछ स्क्रीन करने के लिए, कि मानक इनपुट, आउटपुट पुस्तकालय। , उत्पादन में निवेश way-- कि इसके बारे में सोचो। मैं एक उत्पादन है? हां, है। इसलिए मुझे लगता है कि मैं हमेशा के लिए जा रहा हूँ पता है कि मानकीकरण i.o पुस्तकालय की जरूरत है। तो printf समारोह है जिसके द्वारा हम उपयोग करने की आवश्यकता और हैशटैग शामिल मानक i.o पुस्तकालय। ठीक। दूसरे, यह शून्य क्या दर्शाता है? हम, क्या करता है int मुख्य (शून्य) है यहां शून्य लाइन तीन पर यहाँ क्या मतलब? हाँ, पीठ में। दर्शकों: [अश्राव्य] प्रोफेसर: बिल्कुल। इसलिए हम कुछ सीखा है, याद हमारे pset के साथ शुरू आप वास्तव में कर सकते हैं कि कमांड लाइन निर्दिष्ट तर्क है कि अपने कार्यक्रम, आपको लगता है कि मुख्य समारोह में, आप के रूप में लेता है, उपयोगकर्ता, इसे कहते हैं। हम शून्य है, कि आप का मतलब है कि बस सीधे कार्यक्रम चला सकता है किसी भी कमांड लाइन तर्क के बिना। हर कोई उस पर स्पष्ट? ठीक। और अंत में हम क्यों कर रही परेशान करते हैं यहाँ इस वापसी शून्य बात है? इसलिए हम भी एक int मुख्य है तुम्हारे पास? क्यों हम सिर्फ शून्य मुख्य शून्य नहीं हो सकता? हाँ? दर्शकों: बस हम कर सकते हैं, इसलिए है कि कार्यक्रम है कि यह सुनिश्चित हो के रूप में सफलतापूर्वक बाहर निकलने यह गिना गया है, तो करने का विरोध किया। और हम है कि पता होगा कि त्रुटि के एक अलग तरह का। प्रोफेसर: हाँ, बिल्कुल। यह सिर्फ एक बहुत है हम करते हैं कि पारंपरिक बात है, लगता है कि बस के अंत में है अपने कार्यक्रम, सिर्फ यकीन है कि बनाने के लिए अपने मुख्य कार्य है कि सही ढंग से चल रहा है, हम हमेशा बदले शून्य करना चाहते हैं। यहां तक ​​कि हम जरूरी सकता है, हालांकि कि कहीं भी मुद्रित नहीं देख पा रहे। क्योंकि प्रोग्रामर के रूप में, तुम्हें पता है, यदि आप कोड के कई अलग अलग लाइनें है और आप नहीं जानते, जहां ये गलत जा रहे हैं एक त्रुटि होता है और अगर आप करना चाहते हैं आपको लगता है कि त्रुटि मिल सुनिश्चित करें। और तो आम तौर पर कुछ हो जाता है, तो गलत है कि हम एक की वापसी के लिए होगा बस हम यह पता है कि यह सुनिश्चित करना। आप एक वापसी देख तो शून्य, कि आम तौर पर अपने कार्यक्रम है इसका मतलब है सफलतापूर्वक मार डाला। अच्छा? कूल। ठीक है, यहाँ दूसरा कार्यक्रम। उस पर विचार करें। और तुम लोग एक देखते हैं तो तैरने लगते हैं, तुम लोग शायद कर सकते हैं का एक अच्छा विचार है क्या मैं आप से पूछना के बारे में हूँ। इसलिए जब इस कार्यक्रम आप देख सकते हैं, कार्यान्वित, मैं एक नाव घोषणा कर रहा हूँ मेरी मुख्य समारोह के अंदर। मैं ", जवाब" यह नामकरण कर रहा हूँ और मैं स्थापित कर रहा हूँ कि 10 से एक के बराबर बांटा गया। मैं एक के लिए, बाहर मुद्रण कर रहा हूँ दशमलव स्थान, कि नाव। और फिर मैं शून्य लौट रहा हूँ। तो इस कार्यक्रम को क्रियान्वित करते हैं, अब वापस लालची करने के लिए लगता है, इस कार्यक्रम 0.0 प्रिंट। हम सभी जानते हैं, उम्मीद है कि हम सब 10 से विभाजित एक एक 0.00 नहीं है, पता है, यह 0.1 है। इस कार्यक्रम के बारे में सोचती है लेकिन क्यों समझा एक अन्य 0.1 के लिए 10 प्रिंट के आधार पर विभाजित है कि 0.1 की तुलना में? मैं 30 की तरह तुम लोग शायद दे दूँगा सेकंड बस जल्दी से उस बारे में सोचना और मैं वापस कार्यक्रम के लिए जाना होगा। ठीक। किसी को भी इसे एक शॉट देना चाहते हैं? तीन वाक्यों या उससे कम में, आम तौर पर हम कर रहे हैं, क्योंकि सारे सवालों के जवाब को प्रतिबंधित करने के लिए जा रहा तीन वाक्यों या कम करने के लिए तो आप सिर्फ बहना नहीं है अपने प्रश्नोत्तरी पर यादृच्छिक बातें। हाँ, एक शॉट ले लो। दर्शकों: तो मैं यह लगता है कि वहाँ जैसे कहा जाता है, बात है, [सुनाई] तो हो सकता है, उदाहरण के लिए, 0.09, जैसे, हो सकता है, आप पहले प्रिंट है कि जहां अंकों, यह 0.0 करने के लिए हो सकता है? प्रोफेसर: बंद, काफी नहीं है। Christabell? दर्शकों: आप एक विभाजित कर रहे हैं और 10, और वे दोनों पूर्णांकों कर रहे हैं। और तो रास्ता यह हो रहा है कि यह एक पूर्णांक के रूप में है स्टोर करने के लिए। और तो निकटतम पूर्णांक 0.0 होगा। और इतना है कि 0.1 है। प्रोफेसर: हाँ, यह वास्तव में अच्छा है। यह सही जवाब है। तो यह एक बहुत ही भ्रामक है बच्चों के लिए एक बहुत अवधारणा। और मैं वास्तव में लगता है कि यह सुनिश्चित करना चाहते हैं यह हर किसी के सिर में मजबूत बनाया है। हम चल कॉल तो क्या हुआ बिंदु अस्पष्टता, जहां कारण है कि एक बहुत लालची में अपने कार्यक्रमों की शुरू में काम नहीं किया था, क्योंकि आप अपने चर कास्ट करने के लिए भूल गया। तो Christabell क्या कहा पूरी तरह सही था। एक नाव स्वाभाविक imprecise है। एक कंप्यूटर में, ठीक है, क्योंकि हम स्मृति के टुकड़े की एक निश्चित राशि हम संख्या का प्रतिनिधित्व करने के लिए उपयोग कर सकते हैं। तो, उदाहरण के लिए, इस CS50 आईडी है- मैं इसे एक 64-बिट कंप्यूटर है। एक नाव ही प्रतिनिधित्व किया जा सकता उन बिट्स की एक निश्चित राशि से। और तो 0.1 अनंत शून्य के साथ, यही कारण है कि 0.1 है, सही था? लेकिन हम वास्तव में स्टोर नहीं कर सकते हमारे कंप्यूटर में उस नंबर। हम बस नहीं है पर्याप्त स्मृति ऐसा करने के लिए। और तो निकटतम सन्निकटन की क्या स्मृति में संग्रहीत किया जाता है वास्तव में है 0.000 कुछ की तरह कुछ है, कुछ, कुछ, कुछ और। कौन सा है, आप में काटना एक बार यह 0.0 करने के लिए नीचे दौर। और इसलिए इस उदाहरण में से एक है कि मुद्दों के बहुत सारे दर्शाता हम कर रहे हैं, जब भी हमारे पास है गलत तरीके से गणित करने के लिए कोशिश कर रहा है एक अलग पूर्णांक के रूप में कास्टिंग के बिना। तो बस यह हो रहा से सावधान रहना होगा। क्विज़ पर, हम आपको एक देते हैं कोड के ब्लॉक और यह पसंद है, क्या अंत में बाहर प्रिंट? और यह कुछ यादृच्छिक मूल्य है, तो आप कि क्या हो रहा है यही कारण है लोगों को पता होना चाहिए। हाँ? दर्शकों: काटना से छुटकारा मिलता है एक निश्चित बिंदु के बाद सब कुछ? [अश्राव्य] प्रोफेसर: हाँ, वास्तव में ऐसा यह एक बहुत बुरा उदाहरण है, वास्तव में 0.100 क्योंकि जो कुछ भी 0.1 करने के लिए नीचे में काटना होगा। लेकिन अगर तुम थे it-- चलाने के लिए मैं नहीं याद है, पिछले साल क्योंकि वे एक अलग कार्यक्रम पर वह भाग गया। वे कुछ में यह कहा जाता भागा CS50 उपकरण, जो आईडी से अलग है। यही कारण है कि एक 32-बिट सिस्टम था, मुझे लगता है। और तो अलग नंबरों थे। लेकिन अनिवार्य रूप से, बस इतना पता है कि ट्रंकेशन की पूरी अवधारणा और यह सिर्फ बातें कटौती से कैसे। और तो यह है, तो rounds-- दर्शकों: गोलाई के बिना। प्रोफेसर: बिल्कुल। हाँ। कूल। हाय, पीठ में। हम सिर्फ कुछ पर जा रहे हैं प्रश्नोत्तरी समीक्षा सवाल। ठीक है। यहाँ तो एक अलग कार्यक्रम पर विचार करें। मैं एक तुम लोगों को देने के लिए जा रहा हूँ दो मिनट के इस पर पढ़ने के लिए। यह एक बहुत ही लिए किया गया था कि कुछ तो है हाल ही में मैं आप में से बहुत से उड़ा दिया लगता है कि लोगों के मन। लेकिन हम बात करने जा रहे हैं इस के माध्यम से फिर से बस आपको यह सुनिश्चित करना यह पूरी तरह से समझते हैं। ठीक। ठीक। किसी को भी करने के लिए और अधिक समय की जरूरत है इस कोड के माध्यम से पढ़ा है? ठीक। तो यह है कि मुझे लगता है कि इस कार्यक्रम में मैं कर रहा हूँ GetString का उपयोग करके दो तार बनाने। एक कहा जाता है और एक टी कहा जाता है। और वे बराबर कर रहे हैं एक दूसरे के बराबर होती है यह "आप प्रिंट चाहिए एक ही बात लिखें। " लेकिन elsewise, यह ", आप प्रिंट होगा ठीक है ", अलग अलग बातें टाइप? बहुत, बहुत आसान लगता है। लेकिन, फिर भी, मैं वास्तव में अगर इस प्रोग्राम लिखने की कोशिश की, ऐसा लगता है कि जब भी मैं इनपुट ठीक उसी तार, यह अभी भी ", आप बाहर प्रिंट अलग अलग बातें टाइप किया! " किसी को भी एक ले जाना चाहता है क्यों इस कार्यक्रम हमेशा से गोली मार दी जवाब है आदानों कि यहां तक ​​कि अलग हैं, शब्द के लिए खुद ही कर रहे हैं? तो अगर मैं दाऊद प्यार input-- के लिए गए थे ठीक है, माँ की तरह एक उदाहरण का उपयोग करने के लिए? छोटे अक्षर एम-ओ-एम एस, टी के लिए लोअरकेस एम-ओ-एम के बराबर होती है। मैं इस के माध्यम से भागा कोड है कि, यह क्यों होता है "आप अलग अलग बातें टाइप किया?" प्रिंट आउट किसी को भी अधिक की जरूरत है समय इस बारे में सोचने के लिए? ठीक है, मुझे लगता है हम अच्छा कर रहे हैं लगता है। हाँ? दर्शकों: ठीक है, तो इसके बारे में कुछ है यह सही है, स्मृति में संग्रहीत किया जाता है कहाँ? प्रोफेसर: हाँ। दर्शकों: यह इस करते हैं, की तरह है कहां स्ट्रिंग की स्मृति में संग्रहित है spot-- मैं है- शून्य है की खोज कर रहा हूँ। प्रोफेसर: यकीन है। दर्शकों: और स्ट्रिंग टी स्मृति स्थल पर जमा हो जाती है, 167, और फिर, जैसे शून्य 167 समान नहीं है। प्रोफेसर: बिल्कुल। ठीक है, तो इस अविश्वसनीय याद रहस्योद्घाटन हम तुम लोगों को समझाया यह पिछले सप्ताह, कि तार वास्तव में मौजूद नहीं है? हम कुछ बनाते हैं बुलाया स्ट्रिंग हम कर रहे हैं, वास्तव में, चार स्टार कहा जाता है कुछ बनाने। जो सब यह है के लिए एक संकेत है एक स्ट्रिंग या वर्ण की एक सरणी के लिए। और इसलिए इस उदाहरण में, मैं अगर इनपुट एम-ओ-एम तरह से करने के लिए थे मेरे कंप्यूटर यह है स्टोर होगा कि स्मृति बैकस्लैश शून्य के भीतर, है ना? उन चार वर्ण, वर्ण, कहीं संग्रहीत किया जाएगा। और फिर इन चार वर्ण, बैकस्लैश शून्य, ठीक है, कहीं और जमा हो जाती है? मुझे पता नहीं है, जहां है पतों वे अपने कंप्यूटर में कहीं हो, कर रहे हैं। वे कहाँ हैं लेकिन मैं वास्तव में नहीं पता है। मैं एक स्ट्रिंग बनाते हैं एस, वह सब सच है एक संकेतक के लिए है इस स्ट्रिंग के शुरू करते हैं। और मैं इस टी मूल्य बनाते हैं, सब है कि यहाँ के लिए एक संकेत है। और इसलिए तुम कोशिश कर रहे हैं समानता और जांच करने के लिए एस के बराबर होती है देखने के लिए टी के बराबर होती है, कंप्यूटर वास्तव में सिर्फ में लौट रहा है आप इस मीटर के पते और कहा कि मीटर का पता। और वे दो हैं, क्योंकि डेटा के अलग-अलग टुकड़ों कि दो अलग-अलग में जमा हो जाती है आपके कंप्यूटर में पते, आपके कंप्यूटर के लिए कभी नहीं जा रहा है एक ही होने के रूप में उन्हें पहचान। किसी को भी करना चाहते हैं पर एक शॉट देना क्या हम हम सही करना चाहता था, तो क्या करना होगा यह और एक सही चल रहे कार्यक्रम है बजाय? कुछ सेकंड के लिए उस के बारे में सोचो। हम करने के लिए बदलने की जरूरत है क्या इस कार्यक्रम के कामकाज को मिलता है हम यह कार्य करने के लिए चाहते हैं जिस तरह? हाँ, यह एक चाकू ले करना चाहते हैं? दर्शकों: हम भिन्नता के लिए कोशिश कर सकते हैं सूचक और सरणी के माध्यम से जांच? प्रोफेसर: यही कारण है कि यह करने के लिए एक तरीका है। तो, आपका नाम फिर क्या है? मैं माफी चाहता हूँ, मुझे याद आती है। ज़ी: ज़ी। प्रोफेसर: हाँ, तो क्या ज़ी बिल्कुल काम करेगा सुझाव दिया। है ना? हम संकेतक भिन्नता ठीक कर सकता है और वास्तव में जाने के लिए और पहुँच यहां के अंदर शारीरिक डेटा। और हम बस तुलना कर सकते हैं पूरे स्क्रीन। हम सूचक, ठीक है, कह सकते हैं, यहां के अंदर क्या मुझे दे। यह एक मीटर लौटेंगे। और मैं कहना चाहूँगा, सूचक, यहां के अंदर क्या मुझे दे। एक मीटर लौटें। उन मैच है? हाँ। तो फिर हम पर चलते हैं। हम पूरे दो जाँच कर रखना अंत तक तार सभी तरह से ऊपर उन बराबर हैं और अगर, देखें सभी मूल्यों के बराबर हैं। और सभी मूल्यों को बराबर कर रहे हैं, फिर हम तार सच कर रहे हैं पता है। बिल्कुल, कि हम इसे कैसे करना है? किसी को भी इस में से किसी पर भ्रमित करता है? कैसे तार की पूरी अवधारणा वास्तव में सिर्फ संकेत दिए गए हैं, और कैसे वे वास्तव में मौजूद नहीं है? और हम क्यों त्रुटि हो हम इसे पाने के रास्ते की तरह? मैं तुम लोगों से, संकेत गारंटी क्योंकि और स्ट्रिंग आवंटन और स्मृति आने के लिए जा रहे हैं। हाँ? दर्शकों: [अश्राव्य] भिन्नता यह, तुम सिर्फ एक स्टार रखा [सुनाई] प्रोफेसर: ठीक है। तो एक सूचक साधन derererence को सूचक के उस पते पर जाने के लिए और वहाँ, मान डेटा प्राप्त करते हैं। और ऐसा करने के लिए जिस तरह से स्टार सूचक है। कि भ्रमित मत करो। दर्शकों: [अश्राव्य]। प्रोफेसर: हाँ। दर्शकों: तो तुम सिर्फ लिख सकते हैं स्टार बराबर बराबर होती स्टार टी यदि। प्रोफेसर: ठीक है, नहीं। नहीं। दर्शकों: यह सही, काफी अच्छा नहीं है? प्रोफेसर: आप कर रहे हैं, क्योंकि यह नहीं है केवल पहले अक्षर की जाँच। आप शायद करने के लिए जा रहे हैं एक पाश के कुछ प्रकार की जरूरत है कि हर एक के माध्यम से दोहराता दोनों तार में चरित्र। हाँ। तो अगर आप सिर्फ देखने के लिए जांच करना चाहता था वे एक ही बात के साथ शुरू करते हैं, तो आप, तारा, तो क्या कर सकते हैं स्टार टी के बराबर है। तो आप जानते हैं कि कम से कम वे एक ही चरित्र के साथ शुरू कर दिया। हाँ? दर्शकों: तो रास्ता आपको लगता है कि हो सकता है कर एक पाश या सूचक के लिए एम्बेडेड की तरह? प्रोफेसर: हाँ। बहुत ज्यादा सिर्फ एक पाश के लिए। कक्षा में डेविड उल्लेख किया है, याद रखें मुक्त वाक्यात्मक चीनी? और वह यह बहुत ही था स्टार टी की भ्रामक बात प्लस एक, यह एकीकृत होगा जहां के माध्यम से और यह सूचक ले जाएँ? ऐसा करने का आसान तरीका यह सिर्फ मैं की टी है। तो यह सिर्फ एक सरणी है। आप के लिए एक होता है कि रास्ता मैं करने के लिए शून्य से भाग गया है कि पाश, जहां मैं की लंबाई है स्ट्रिंग, तुम बस सकता है कि बजाय कर के लिखने पूरे सूचक, संदर्भ बात। इसलिए इन बातों को ठीक कर रहे हैं आपके कंप्यूटर में बराबर। तुम लोग शायद नहीं होगी पता चला है कि जरूरत है, लेकिन यह सिर्फ एक तरह से अच्छा है पीठ में अपने दिमाग है। बस कंप्यूटर को पता है कि कोड के विभिन्न ब्लॉकों को पहचानता एक ही चीज के रूप में। इस बस में कहीं अधिक उपयोगकर्ता है, क्योंकि अनुकूल यह है की तरह हमें इसे पेश करने के लिए एक सरणी। यह सिर्फ आसान है। दर्शकों: तो पसंद करने के लिए strlen उपयोग, get-- प्रोफेसर: हाँ। दर्शकों: ठीक है। प्रोफेसर: तुम सकता है अगर तुम, strlen का उपयोग करें या आप अभी क्या कर सकते हैं strlen नहीं था आप दोनों के लिए बैकस्लैश शून्य मारा जब तक। या तो काम करेंगे। हाँ। दर्शकों: तो यह है कि हर भिन्नता के लिए है एकल चरित्र हम वास्तव में थे इस कोड लिखने, हम बस टी कोष्ठक मैं क्या कर सकता है इसे के सामने स्टार के साथ पसंद है? प्रोफेसर: हाँ, बराबरी रों के बराबर होती है मैं, और फिर मैं आगे बढ़ते रहना ब्रैकेट नीचे आप अंत मारा जब तक। हाँ, यह आप क्या करना होगा। और मैं वास्तव में एक अगली होगा जब हम का उदाहरण वास्तव में strlen लिखना तो तुम लोग तरह होगा इसके साथ एक बिट के आसपास खेलने के लिए मिलता है। तो, सिर्फ स्मृति पर हर किसी को स्पष्ट है तार, संकेत, गुणवत्ता पतों? कुछ उच्च स्तर अवधारणाओं कि आप प्रश्नोत्तरी पर पता करने के लिए यकीन है कि जरूरत के लिए इच्छा कल। ठीक है। अच्छा। हाँ। ठीक है, तो एक बात हम भी पूछता हूँ कि हम एक प्रश्नोत्तरी पर हर साल करते हैं, जैसा कि आप है, (आप भूल गए हैं कि लगता है, जो हम प्रतिवर्ष करना भूल करने लगते हैं) जिसमें हेडर फाइल strlen घोषित किया जाता है। और इसलिए हम इसे अपने आप को फिर से लिखना है। यहाँ के दिशा-निर्देशों की एक सूची है हम आपको पेश कर सकते हैं कि आप मानते हैं कि करने के लिए मिलता है, जहां लोग स्ट्रिंग रिक्त नहीं हो जाएगा है। तुम एस होगी मान सकते हैं कि एक बैकस्लैश शून्य के साथ समाप्त हुई। तो आपको लगता है कि क्या है पता इसके साथ खत्म होता जा रहा है। और, उदाहरण के लिए, कि हैलो की लंबाई पाँच होगा। तो आपको लगता है कि हैलो मान सकते हैं पांच, एच-ई-एल-एल-ओ हो जाएगा। आप मानते हैं कि करने के लिए नहीं है लंबाई के लिए शून्य खातों पीठ। यहां यह आखिरी बात नहीं करते हैं, पूर्णांक अतिप्रवाह के बारे में चिंता है। किसी को याद करता है क्या पूर्णांक अतिप्रवाह है? दर्शकों: परे चला जाता है [अश्राव्य] की लंबाई। प्रोफेसर: हाँ, आप व्याख्या कर सकते हैं एक सा है, इसका क्या मतलब है? दर्शकों: तो, मैं इसे वापस चला जाता है लगता है छोटा उदाहरण के पहले करने के लिए। लेकिन तुम सिर्फ इतने सारे नंबर हैं, तो कि बिट्स की संख्या से परे जाना आप वास्तव में इसे असाइन कर सकते हैं यह बस की तरह काट दिया जाएगा। प्रोफेसर: हाँ, एक ठेठ पर इतने कंप्यूटर, हम कितने बिट्स की क्या ज़रूरत है? दर्शकों: 32? प्रोफेसर: हाँ, 32, सही है। और इतना है कि क्या, चार, है अरब, दो अरब? चार अरब अप करने के लिए चार अरब, सकारात्मक integers, है ना? दो अरब नकारात्मक, दो अरब सकारात्मक, आप यह करना चाहते हैं पर निर्भर करता है। और तो मूल रूप से हम कर सकते हैं तक जा सकता है कि पर्याप्त पूर्णांकों 31 को दो शून्य से 1 करने के लिए, है ना? हम दो मारा क्योंकि एक बार 32 वीं करने के लिए, हम नहीं करते हमारे कंप्यूटर में है कि अधिक स्मृति है। और हां, तो सैद्धांतिक रूप से, मैं एक नंबर के साथ आ सकता है कि, जैसे, 46 के लिए दो है। यह एक बहुत बड़ा गधा नंबर है, लेकिन सैद्धांतिक रूप से आप सकता है। आप करने की कोशिश करता है, तो और तो पूर्णांक अतिप्रवाह है क्या परे चला जाता है कि एक पूर्णांक बनाने आपके कंप्यूटर भंडारण की क्षमता है। के लिए और इसलिए तुम लोग इस उदाहरण नहीं है हमें आप एक विशाल देने के बारे में चिंता करने के लिए 32 वें घर का काम करने के लिए दो है कि स्ट्रिंग लंबे समय तक। यही कारण है कि वास्तव में क्या मतलब हो जाएगा। ठीक है, तो मैं सिर्फ देने के लिए जा रहा हूँ तुम लोग इस के आधार संरचना। आप एक बनाने के लिए जा रहे हैं समारोह पूर्णांक strlen जहां बुलाया एक में पारित, एक चार सितारा, या स्ट्रिंग, स्ट्रिंग के लिए सूचक कहा जाता है। ठीक है, हर किसी को लगता है कि नीचे की नकल। कूल। Oops-- अन्य तरीके से। तो यह एक तरह की तरह है समस्या का कठिन टुकड़ा, इसलिए मैं करने के लिए आप शायद पाँच लोगों को दे देंगे मंथन की तरह करने के लिए छह मिनट और इस समारोह में लिखें। दर्शकों: हम नहीं करते [अश्राव्य] के लिए खाते, हम पूर्णांक का उपयोग करने की जरूरत नहीं है? प्रोफेसर: नहीं, तुम नहीं। मैं तुम लोगों को एक संकेत देता हूँ। एक जबकि पाश यहाँ बहुत उपयोगी हो सकता है। हाँ। यहाँ है कैंडी। कैंडी भी उपलब्ध हो जाएगा प्रश्नोत्तरी के लिए, मुझे लगता है। तो तुम लोग सब हो जाएगा कल तक sugared। तुम यह मिल गया I-- कर सकते हैं। दर्शकों: ठीक है। प्रोफेसर: हाँ। हो सकता है कि 30 और सेकंड या तो। ठीक है, आप कर रहे हैं ऐसा नहीं किया, कोई चिंता नहीं। हम एक साथ इस के माध्यम से कदम होगा। ठीक। तो मैं बस लेआउट करने के लिए जा रहा हूँ यहां इस समारोह के लिए बुनियादी संरचना। Strlen इंट। सबसे पहले, किसी को बताना चाहता है मुझे लगता है कि पूर्णांक का प्रतीक है क्या? हम इस समारोह में की आवश्यकता है। दर्शकों: strlen [सुनाई]। प्रोफेसर: बिल्कुल। तो यहाँ में जो कुछ भी होता, हम एक पूर्णांक लौटने की जरूरत है। और के रूप में निर्दिष्ट कल्पना, हम return-- करना चाहते हैं बस चलते रहो, यह लोगों के लिए जाओ। यह सब अच्छा है। इसे खाने के सब तो मेरे पास नहीं है वास्तव में, इसे वापस लेने के लिए। पूर्णांक सिर्फ आप कर रहे हैं कि प्रतीक जा रहा एक पूर्णांक लौटने किया जाना है। इस चार स्टार एस क्या है? इसका क्या मतलब है? दर्शकों: में निवेश किया जा रहा है जैसे क्या,। प्रोफेसर: बिल्कुल। और लगभग क्या है चार स्टार के रूप में एक ही बात है? दर्शकों: स्ट्रिंग? प्रोफेसर: बिल्कुल। तो हम क्या कर रहे सब दे रही है एक स्ट्रिंग के लिए यह एक सूचक। ठीक। कूल। हम भूल जाते हैं इसके अलावा, अगर यह मत भूलो आप इन कोष्ठक देने के लिए, उन्हें अपने आप को लिखने के लिए मत भूलना। सैद्धांतिक रूप से, क्योंकि अपने कोड है आप उन्हें लिखने के लिए भूल जाते हैं तो गलत है। बस हमेशा ध्यान देना। की तरह, छोटी चीजें आप सूचना नहीं है कि आप अपने लैपटॉप पर प्रोग्रामिंग कर रहे हैं, आप अपने लैपटॉप के लिए यह करता है? जब मत भूलना आप हाथ से लिख रहे हैं। हाँ? कैसे लेकिन गलत: दर्शकों? की तरह, हम गलत पूरी समस्या मिलता है? प्रोफेसर: नहीं, नहीं। चिंता मत करो। यह वास्तव में सैद्धांतिक रूप से संभव है यदि आप एक सवाल पर पूरे अंक प्राप्त करने के लिए यहां तक ​​कि अपने कोड होगा यदि वास्तविक जीवन में कभी नहीं चला। मैं आप की कोशिश नहीं करते सुझाव ऐसा करने के लिए। उदाहरण के लिए, जैसे कि अगर सब कुछ यहाँ है कि सही है, लेकिन यदि आप एक बृहदान्त्र या एक वर्ग को भूल जाते हैं, अपने कोड वास्तव में नहीं चलेंगे। लेकिन हम दयालु हो सकता है। हाँ? दर्शकों: आप के लिए है हमारे लिखावट पर टिप्पणी? प्रोफेसर: नहीं, नहीं, नहीं, उस के बारे में चिंता नहीं। कोई टिप्पणी। शैली अच्छा होना चाहिए। की तरह, smush नहीं है एक लाइन पर सब कुछ। हम खुश नहीं होगा आप के साथ आप ऐसा कर सकते हैं। किसी को भी करना चाहते हैं मुझे पहली पंक्ति दे? सुझाव है, यह बहुत आसान है। हाँ? दर्शकों: इंटरनैशनल, एन शून्य के बराबर होती है। बस काउंटर की स्थापना की। प्रोफेसर: तो हम कुछ करना चाहते हैं एक काउंटर की तरह, है ना? मैं सिर्फ यह नाम "गिनती" जा रहा हूँ पठनीयता की खातिर। क्या हम बराबर के लिए यह निर्धारित करना चाहते हैं? दर्शकों: शून्य। प्रोफेसर: हाँ। अर्द्धविराम। यह भी बहुत अजीब ड्राइंग अर्धविराम है। बस कर अभ्यास करेंगे। इसलिए हम पहली बार है चाहता हूँ प्रकार पूर्णांक के एक काउंटर। हम कैसे गिनती करना चाहते हैं क्योंकि कई अक्षर या पत्र हैं इस स्ट्रिंग में, है ना? बहुत आसान पहला कदम है। ठीक है, शायद थोड़ा और अधिक जटिल अब, कैसे हम ऐसा करने जा रहे हैं? किसी को भी करना चाहते हैं मुझे कोड की लाइन दे कि पाश मदद करने में सक्षम हो सकता है जो कुछ के माध्यम से इस है? पीठ में हाँ, बहादुर आत्मा? दर्शकों: ठीक है, तो थोड़ी देर के बिंदु तारक, एस के हाँ, सितारा, नहीं शून्य के बराबर है, तो कुछ करते हैं? प्रोफेसर: यह वास्तव में, वास्तव में बंद है। वास्तव में पास। तो मैं पता करने के लिए जा रहा हूँ उस के साथ दो बातें। सबसे पहले, यह बिल्कुल शून्य नहीं है। यह क्या है? यह अशक्त टर्मिनेटर है जो बैकस्लैश शून्य है। इसलिए वे में अलग हैं वे जमा कर रहे हैं कि कैसे की दृष्टि से। तो अगर आप वास्तव में बंद कर रहे हैं। और दूसरी बात, हम नहीं चाहते सिर्फ सूचक स्थानांतरित करने के लिए। हम वास्तव में करना चाहते हैं ठीक है, मूल्यों का उपयोग? और तो कैसे हम ऐसा करते हैं? बहुत आसान। संकेत के बारे में मत सोचो, यादों के बारे में नहीं सोचता। इस पाठ्यक्रम के दो सप्ताह के लिए वापस जाओ। दर्शकों: [अश्राव्य]। प्रोफेसर: के रूप में, याद है? तार क्या हैं? कैसे वे स्मृति में जमा हो जाती है? दर्शकों: वे उठा रहे हैं। प्रोफेसर: वे उठा रहे हैं। तो हम कैसे उपयोग करते हैं अंदर प्रत्येक चरित्र? दर्शकों: [अश्राव्य]। प्रोफेसर: बिल्कुल। तो यहाँ अंदर क्या जाता है while--? के एस - दर्शकों: आई प्रोफेसर: ओह, मैं मौजूद नहीं है, यह करता है? दर्शकों: ओह, गिनती? प्रोफेसर: हम सिर्फ यह कर सकते हैं हम नहीं कर सकते, गिनती का उपयोग करें? दर्शकों: माफ करना, मैं इसे मैंने कहा जाता है। प्रोफेसर: हाँ, यह सब अच्छा है। हम जानते हैं कि यहाँ एक चर ऊपर है पहले से ही हमारे काउंटर के रूप में घोषित किया गया। तो क्यों न हम सिर्फ इतना है कि उपयोग नहीं करते जबकि पाश के माध्यम से स्थानांतरित करने के लिए? समझ आया? Count-- की किसी को भी चाहता है तो, जबकि यहां के बाद क्या होता है मुझे देने के लिए? दर्शकों: यह समान नहीं है। प्रोफेसर: बराबर नहीं, सही है? यह धमाके, बराबर होती है विस्मयादिबोधक बिंदु, के बराबर होती है आप लोगों को जो चाहते हैं equal-- नहीं करता है फोन दर्शकों: [अश्राव्य]। प्रोफेसर: हाँ। एक चार के लिए है ही बोली याद रखें डबल कोट्स एक स्ट्रिंग के लिए कर रहे हैं। उन्हें का उपयोग करते समय सावधान रहें। इसलिए जब हम के माध्यम से देख रहे हैं सरणी, पिछले चरित्र, हम नहीं करना चाहती पता यह बैकस्लैश को शून्य है। इसलिए जबकि। हम स्ट्रिंग के अंत में नहीं हैं। क्या हम अंदर क्या करना चाहते हैं? दर्शकों: हम में जोड़ना चाहते हैं काउंटर यह मायने रखता है प्लस प्लस इसलिए? प्रोफेसर: बिल्कुल। यहाँ तो हम क्या करने जा रहे हैं गिनती प्लस प्लस, गिनती। एक और लाइन गायब है। हम बस पहुँच गए। हम क्या करने की भूल रहे हैं? दर्शकों: शून्य लौटने? प्रोफेसर: आप शून्य वापसी करना चाहते हैं? दर्शकों: नहीं, strlen की ओर लौटने। रुको। प्रोफेसर: में संग्रहीत किया जाता है? दर्शकों: गणना। भरोसा रखो। प्रोफेसर: बिल्कुल। यहाँ तो हम गिनती वापस करने के लिए जा रहे हैं। हम क्या कर रहे हैं क्योंकि यहाँ क्या कर ultimately-- हम है कि एक काउंटर चर है हमारे तार के माध्यम से वेतन वृद्धि करने जा रही है। हम जा रहा रखने के लिए जा रहे हैं, रखना इस पाश में आसपास और चारों ओर, जा रहा है। और हम इस के अंत पर नहीं कर रहे हैं अशक्त टर्मिनेटर है जो स्ट्रिंग,। और हम के माध्यम से जाने के लिए हर समय यह, हम अपने काउंटर करने के लिए जोड़ रहे हैं। और हम आगे जा रहे हैं इस सरणी में साथ। और अंत में, हम एक बार अशक्त टर्मिनेटर मारा, हम ओह, हम कर सकते हैं, जानते हैं तोड़ने, गिनती वापसी। हम अपने strlen है। हर किसी को कैसे मिलता है इस लागू किया गया था? मैं जानता हूँ कि loops-- जबकि हम नहीं उन लोगों के साथ भी बहुत कुछ किया लेकिन वे आम तौर पर कर रहे हैं बहुत, बहुत उपयोगी अगर आप आप रोक रहे हैं पता नहीं क्या हालत यह जरूरी हो गया है। प्रश्न? दर्शकों: हम अशक्त लिख सकते हैं जबकि इस शर्त पर? प्रोफेसर: जबकि? हाँ, तो इस समस्या में मैं आप था लोग रों अशक्त नहीं होगा कि मान। याद है, क्योंकि सैद्धांतिक रूप से, अगर मैं तुम्हें दे दिया स्मृति का बहुत बड़ा था कि एक सूचक, यह ठीक है, तुम अशक्त देना होगा? यही कारण है कि क्या ऑपरेटिंग सिस्टम से करना होगा। मैं कल्पना करने के लिए आपको बता नहीं था तो अगर एस अशक्त हो सकता है, आप जांच की जरूरत है। तो यहाँ, आप क्या करेंगे, एस यदि अशक्त बराबर, एक वापसी। ऐसा कुछ। दर्शकों: [अश्राव्य] शून्य। प्रोफेसर: ठीक है, मैं बताता हूँ आप हम ऐसा क्यों नहीं कर सकते। ठीक है, यहाँ, स्मृति में याद है। हम यहां से जाना होगा। आप विशाल ब्लॉकों मिल गया है सभी ग्रिडों के साथ स्मृति के उस दुकान विभिन्न मूल्यों, है ना? और तो सब एक स्ट्रिंग के लिए है- उदाहरण के लिए, हम नमस्कार निवेश करने के लिए कर रहे हैं, यह एच-ई-एल-एल-ओ होगा बैकस्लैश शून्य, है ना? और फिर कौन यादृच्छिक तरह जानता है, इसे करने के बाद यहाँ कर रहे हैं कि चीजें। हम वास्तव में क्या है पता नहीं है। और तो आप क्या करने गए थे बजाय बैकस्लैश शून्य की, अशक्त, यह शून्य नहीं हो सकता। यह सिर्फ मतलब हो सकता है क्योंकि कुछ बेतरतीब अन्य बातों कि अपने स्ट्रिंग में नहीं हैं। और तो जिस तरह से हम हमेशा जानते हैं कि समाप्त होता है एक स्ट्रिंग एक बैकस्लैश शून्य के साथ है। और इतना है कि हमेशा हम कैसे है एक स्ट्रिंग के अंत की जाँच करें। अगर आपके पास अशक्त, यह सब साधन है सब से पहले एक अस्तित्वहीन सूचक, या अपनी स्मृति है कि सिर्फ इतनी बड़ी है कि अगर आप इसे वापस नहीं कर सकते, तो यह शून्य होगा। फर्क तो जब बहुत सावधान रहना अशक्त के बीच का अंतर और बैकस्लैश शून्य। हाँ। इस के साथ ठीक सब लोग? ठीक। इसलिए मुझे लगता है कि तुम लोग strlen लिखने के बाहर था। Feasibly हम भी आप लिखते हैं पूछ सकते हैं मैं करने के लिए एक बाहर, याद है कि "Atwoa" या जो भी आप लोग इसे कॉल करना चाहते हैं? उस समारोह में Vigenere और सीज़र, कि एक पूर्णांक के लिए एक ASCII मूल्य धर्मान्तरित? वह भी अतीत क्विज़ पर आ गया है कार्यों की हम लिखने के लिए कहा गया है। बहुत ज़्यादा किसी भी समारोह आप का इस्तेमाल किया है और है कि अपने आप को लिखने के लिए बहुत आसान है, सेंसर कम है की तरह है, ऊपरी करने के लिए, कम करने के लिए, ऊपरी है। एक परिवर्तित होता है कि कार्य छोटे अक्षरों से स्ट्रिंग अपरकेस। हम सब ठीक है, ऐसा करने के लिए कैसे पता है? यह बहुत आसान है। सिर्फ यकीन है कि बनाने के लिए चाहते हैं आप can-- यह एक ही विचार प्रक्रिया है। तुम बस के माध्यम से पुनरावृति और आप चीजों को बदल जाते हैं। आप या तो गिनती या जब आप चीजों को अलग कर देते हैं। मैं मैं suggest-- होगा हम जा रहे हैं पता नहीं है क्या राजधानी एक याद करने के लिए आप से पूछना करने के लिए या राजधानी जेड, या लोअरकेस एक या लोअरकेस जेड ASCII में हैं, लेकिन मेरा सुझाव है शायद मामले में है कि नीचे लिख हम क्या। अभी तो तुम लोगों के लिए एक संदर्भ है। अपरकेस ए, क्या, 197 है की तरह? और फिर लोअरकेस 50 कुछ की तरह है। 65, हाँ, वहाँ तुम जाओ। तो बस बहुत ज्यादा जानते हैं उन दोनों के बीच का अंतर 32 है। यह बहुत महत्वपूर्ण है। हाँ। मैं इस पर अच्छा कर रहा हूँ? ठीक। दर्शकों: हम कर सकते थे सैद्धांतिक रूप से कुछ लिखना साथ ही इन नीचे हमारे little-- पर की प्रोफेसर: आप सैद्धांतिक रूप से सिर्फ समारोह नीचे नकल कर सकता है। यह सच है। दर्शकों: नहीं [सुनाई]। प्रोफेसर: तुम लोग एक चादर है। तुम लोग एक नोट शीट है। आप इसे टाइप कर सकते हैं। आप इसे लिख सकते हैं। क्या आप इसके साथ जो चाहे कर सकते हैं। हाँ। तो सैद्धांतिक रूप से, यदि आप के लिए जाना चाहता हूँ। दर्शकों: [अश्राव्य] लेकिन हम वास्तव में नहीं है जरूरी याद करने की जरूरत मूल्य, हम सिर्फ यह कर सकते हैं ऊपरी करने के लिए या करने के लिए उपयोग निचले समारोह, है ना? प्रोफेसर: हाँ। लेकिन हम आपको एक सवाल दे दी है कि, ऊपरी करने के लिए लिखने का कहना है तो आप इसे लिखने की आवश्यकता होगी। तो तुम लोग आप मान सकते हैं कि दोस्तों, सभी कार्यों के लिए उपयोग किया है लेकिन आप ऊपरी करने के लिए या करने के लिए उपयोग करना चाहते हैं कम है, क्या आप भी ऐसा करने की क्या ज़रूरत है? दर्शकों: [अश्राव्य] उपयोग CS50 [सुनाई] प्रोफेसर: यह CS50.h है? वहाँ सावधान रहें। ऊपरी तो, कम करने के लिए, ऊपरी है कम है शामिल है कि कार्यों स्ट्रिंग हेरफेर कर रहे हैं सभी या तो आस्की भीतर या गणित पुस्तकालय के भीतर या स्ट्रिंग पुस्तकालय के भीतर। तुम लोगों को उन का उपयोग करें तो अगर काम करता है, याद करने के लिए सावधान रहना होगा कि हेडर शामिल करने के लिए। तो शायद यह भी कुछ आप अपने पत्र में शामिल करना चाहते हैं, हैडर क्या कर रहे हैं? पुस्तकालयों में क्या कर रहे हैं आप का उपयोग किया गया है? क्या कार्य कर रहे हैं उन पुस्तकालयों के अंदर? यह महत्वपूर्ण है। हाँ? दर्शकों: हम कर सकते थे, बस बाहर पुलिस और हैशटैग करना बिल्कुल के माध्यम से हम कभी किया है हर पत्र सभी सवालों का पर की तरह देखा है? प्रोफेसर: तुम सकता है। मैं कितना खुश पता नहीं है हम ग्रेड के लिए होने जा रहे हैं कि प्रश्नोत्तरी जब कोड का हर टुकड़ा दो बार के रूप में लंबे समय तक यह करने की जरूरत के रूप में है। मुझे लगता है हम हो सकता है, पता नहीं शैली के लिए एक बिंदु से दूर ले। लेकिन सैद्धांतिक रूप से अपने कोड ठीक हो जाएगा। तुम लोग पुलिस वाले से बाहर कर सकता है और बस सब कुछ शामिल है। यही कारण है कि हाँ, भी ठीक है। दर्शकों: [अश्राव्य]। प्रोफेसर: हाँ। मुझे लगा कि नहीं कर रही सुझाव है। हाँ। दर्शकों: कूल। प्रोफेसर: अच्छा सवाल है। दर्शकों: तो, सबसे बुरी स्थिति। प्रोफेसर: सबसे खराब स्थिति। आप पूरी तरह से भूल जाते हैं, आप ऐसा कर सकता है। हाँ। हाँ, कोड सही नहीं है। मैं n इसके बजाय, आप गिनती की, लेकिन इस्तेमाल किया अपनी नाव मंगाई, जो कुछ भी जानते हैं। दर्शकों: रुको, तो हम हैशटैग के लिए नहीं होता हम कर रहे हैं, क्योंकि शामिल पूर्णांक में शुरू? प्रोफेसर: हाँ, मैं सिर्फ मान लिया है कि हम समारोह में लिखने के लिए कहा गया था। आप सुरक्षित होना चाहता था, तो आप वहाँ शायद यह डाल सकता है। लेकिन मैं सिर्फ हाँ, जहमत नहीं उठाई। मैं यह भी नहीं पता है अगर तुम इस के लिए किसी भी पुस्तकालय की जरूरत है। आप वास्तव में मुद्रण नहीं कर रहे हैं, क्योंकि कुछ या कुछ भी बाहर, है ना? हाँ, मैं नहीं जानता कि यदि आप एक पुस्तकालय की जरूरत है। ठीक। इस के साथ भी थोड़ा अधिक है स्मृति में गड़बड़ी की लाइनों। मुश्किल सा के इस तरह। इसके बारे में सोचें। आप समारोह नामक एक समारोह है। मैं इसे नाम दिया जा सकता था, जो कुछ भी लेकिन मैं समारोह में यह नाम करने के लिए चुनें। मैं अपने मुख्य ऊपर से ही है। आप चाहते हैं, याद रखें आपका मुख्य बाद एक समारोह में, क्या आप बनाना चाहते शीर्ष के प्रोटोटाइप शामिल हैं। लेकिन इस मामले में यह इतना कम था मुझे लगा कि कि मैं सिर्फ सकता है मुख्य ऊपर यह शामिल हैं। मैं प्रोटोटाइप की जरूरत नहीं थी, यह पहले से ही ऊपर लिखा है, क्योंकि। इतना सब मैं अपने मुख्य समारोह में क्या कर रहा हूँ पूर्णांक x पैदा कर रही है 10 के बराबर होती है। मैं, मेरी समारोह समारोह बुला रहा हूँ और फिर कुछ मुद्रण। और फिर कहा कि वास्तव में है क्या समारोह कर रही है। तुम लोग इस के माध्यम से सोचने के लिए चाहते हैं। यह थोड़ा मुश्किल है क्योंकि। यह वास्तव में बहुत, बहुत मुश्किल है। क्या इस सोच के माध्यम से कार्यक्रम outputting होगा। मैं तुम लोगों को दो मिनट दे दूँगा। अच्छी चर्चा? दर्शकों: हाँ। प्रोफेसर: हाँ। ठीक है, तो यह है एक कारण के लिए मुश्किल। मैं लाना चाहते थे और इस वजह से है हर किसी का ध्यान करने के लिए यह। किसी ने मुझे देने के लिए चाहता है एक सुझाव है, एक प्रयास? यह क्या बाहर प्रिंट होगा? आप गलत कर रहे हैं, तो पूरी तरह से ठीक है। हाँ? दर्शकों: मैं इसे 100 है और लगता है कि फिर 10 पर दो अलग-अलग लाइनों। प्रोफेसर: और एक 10? किसी को किसी अन्य अनुमान है? हाँ? दर्शकों: शायद सिर्फ 10 क्योंकि समारोह में कुछ भी वापस नहीं कर रहा है? प्रोफेसर: ठीक है, हम ऐसा अनुमान है कि नंबर एक है अनुमान है कि नंबर दो है सिर्फ 10 बाहर मुद्रित करने के लिए जा रहा है। किसी को किसी अन्य अनुमान है? ठीक। तो चलो ठीक है, इस के माध्यम से चलते हैं? आप कोड का एक टुकड़ा पाने के लिए जब भी, बस इसे देखो और की तरह नहीं है, आह, इतना है कि सामान है! मैं बहुत उलझन में हूँ! की तरह, अपने आप शांत हो जाओ। सिर्फ इतना पता है कि तुम सिर्फ कर सकता है लाइन द्वारा कोड लाइन के माध्यम से देखो। यही कारण है कि यह सब है। यह एक किताब पढ़ने की तरह है। किसी भी समारोह के साथ तो, हम हमेशा मुख्य में शुरू करो। तो हम करने जा रहे हैं int मुख्य शून्य पर शुरू, यहां तक ​​कि इस कार्यक्रम की पहले से ही सही, नीचे चला? मुख्य शून्य में में शुरू करो। इंट एक्स 10 के बराबर होती है। इसलिए मैं इस मिटा करने के लिए जा रहा हूँ। मैं स्मृति आकर्षित करने के लिए जा रहा हूँ तो बस आप लोग तरह का क्या हो रहा है देख सकते हैं। हम अपने ढेर है यहाँ नीचे याद है? यहाँ तक हम हमारी है यहीं कहीं ऊपर ढेर। ढेर ठीक है, ऊपर बढ़ता है? और ढेर भीतर, आपके पास साधन के रूप में अच्छी तरह के रूप में कार्य साधन स्थानीय चर के सभी। तो यहाँ, पूर्णांक एक्स 10 के बराबर है। हमारा मुख्य समारोह के भीतर हम कर रहे हैं एक्स नामक एक चर बनाने। हम 10 के लिए कि बराबर स्थापित कर रहे हैं। यहाँ आप कुछ एक्स मिल गया है, और आप कर रहे हैं ठीक है, 10 कि बराबर की स्थापना, मुख्य भीतर। हर कोई अच्छा है? समारोह। तो अब, हमारी मुख्य भीतर समारोह में, हम कह रहे हैं हम ऊपर लिखा है समारोह। तो क्या अब हम दूसरे समारोह में प्रवेश कर रहे हैं। हम एक और बनाने के लिए जा रहे हैं चर int x 100 के बराबर होती है। क्या ढेर पर यहां हो रहा है? आप एक कॉल तो क्या होता है नए चर पैदा करता है कि समारोह? क्या हो चुकी है पर यहाँ क्या होता है? दर्शकों: शीर्ष पर [सुनाई] ढेर? प्रोफेसर: हाँ। तो यह वास्तव में एक प्रतिलिपि बनाता है। शीर्ष पर ढेर की और यह किस तरह। एक ढेर stack-- के बारे में सोचो किताबें, कुछ भी की एक ढेर की। पिछले में पहली बार शीर्ष पर पाइल्स, बाहर, पहला, में बाहर पिछले। तो यह यहाँ एक एक्स बनाने के लिए जा रहा है। यही कारण है कि किया जा रहा है सभी funcs चर। अच्छा है। तो अब हम दो अलग अलग एक्स की है कि दो बहुत अलग बातें प्रतिनिधित्व करते हैं। तो फिर हम मुद्रित करने के लिए जा रहे हैं एक्स के पूर्णांक बाहर। तो चलो ठीक है, 100 मुद्रित करते हैं? यहाँ क्योंकि यह 100 है। तो यह है कि पहली बात यह है इसे बाहर प्रिंट करने के लिए जा रहा है। इस समारोह में रिटर्न कुछ भी नहीं के रूप में, अब उस समारोह, मुख्य में है कि लाइन पूरा हो गया है। अब तक मेरे साथ अच्छा सब लोग? तो हम में से दो के माध्यम से अब कर रहे हैं हमारा मुख्य समारोह की तीन लाइनों। अब हम तीसरी लाइन के लिए जा रहे हैं। हम printf करने के लिए जा रहे हैं। मुख्य भीतर इस एक्स क्या है? कि क्या दर्शाता है? क्या मूल्य अब एक्स है? दर्शकों: 100। प्रोफेसर: यह 100 है? दर्शकों: अभी भी 10। प्रोफेसर: अभी भी 10। हाँ। भीतर क्योंकि याद है हमारे समारोह, एक्स 100 के बराबर होती है। लेकिन हम वापस लौटने अगर हमारा मुख्य कार्य करने के लिए, उस चर एक में संग्रहित है हमारे ढेर पर अलग अलग जगह है। तो अब हम वापस करने के लिए जाने की जरूरत है मुख्य ढेर, स्थानीय चर साधन। और यहाँ एक्स 10 के बराबर है। और इसलिए हम 10 प्रिंट आउट करने के लिए जा रहे हैं। तो वह बिल्कुल सही था। हम करने के लिए जा रहे हैं 100 और 10 का उत्पादन। हाँ? दर्शकों, यह तो आप malloc है ढेर या [सुनाई] है कि ढेर? प्रोफेसर: जब आप malloc, आप ढेर से स्मृति ले जा रहे हैं और यह आवंटन। यदि आपके पास नहीं है कि इतनी इस में से किसी के साथ गड़बड़ करने के लिए। तो मैं बड़ा takeaway अनुमान यहाँ गुंजाइश कहा जाता है। पर थे जो आप में से उन लोगों के लिए समीक्षा बैठक में कल रात को, हम इस बारे में संक्षेप में बात की थी। स्कोप परिभाषित करता है और कैसे अपने चर मौजूद है। या फ्रेम क्या भीतर आपके चर मौजूद है। आम तौर पर अंगूठे का बहुत ज्यादा नियम आप उन्हें बनाते हैं, अपने variables-- है घुंघराले braces-- अंदर वे मौजूद केवल उन सर्पाकार अंदर। इसलिए की हमारी समारोह में उदाहरण के लिए समारोह, आप उन दो ब्रेसिज़ देखते हैं। तुम पैदा कर रहे हैं इसके अंदर कुछ भी, संभावना है कि आप सब कर रहे है एक ढेर बनाने और वहाँ कि भंडारण। मुख्य में एक ही बात है। यही कारण है कि सिर्फ मुख्य के अंदर संग्रहित है। इसके अलावा, आप होना चाहते हैं यहाँ बहुत, बहुत सावधान। गुंजाइश भी बख्शी है क्योंकि अलग उदाहरण के लिए ही। के लिए उदाहरण के लिए तो पाश, पूर्णांक के लिए मैं 0 के बराबर होती है। मैं 10 मैं नहीं जानता, की तुलना में कम है। मैं प्लस प्लस। और अगर आप इसे सही के अंदर कोड मिल गया है? जहां इस परिवर्तनशील है, मैं वास्तव में ही मौजूद हैं? केवल अपने पाश के लिए के अंदर। तो मैं तुम लोगों से कई के पास शर्त शायद इस त्रुटि को सामना करना पड़ा जब आप अपने psets में कार्यक्रम कर रहे हैं। कैसे तुम लोगों में से बहुत से मैं का उपयोग करने की कोशिश की है पाश के लिए एक के बाहर और एक त्रुटि थी? एक unreferenced पूर्णांकों की तरह या कुछ इस तरह का? कि ऐसा क्यों होता है कारण यहाँ आप कर रहे हैं, क्योंकि है कुछ बनाने कि केवल अपने पाश के लिए भीतर मौजूद है। आप इसका इस्तेमाल करने की कोशिश करता है, तो और, मैं ऐसा नहीं करता वास्तव में यह के बाहर मौजूद। तो बुनियादी तौर पर एक कंप्यूटर मैं कह रही है, आप के बारे में बात कर रहे हैं पता नहीं है। मैं जानता हूँ कि सभी एक मैं था कि है यहाँ है, लेकिन अब नहीं रह गया है। तो अगर मैं एक बनाने के लिए थे अंदर पाश के लिए, है ना? और मैं एक और बनाने जा रहा हूँ, पूर्णांक जम्मू की तरह है, यह जो कुछ भी करते हैं और। और आप के अंदर एक कोड है कि पाश, जम्मू केवल यहां मौजूद है। लेकिन यह भी कहा कि मैं भीतर मौजूद है। और तो जम्मू केवल मौजूद है पाश के लिए इस के भीतर, मैं पूरी बात में मौजूद है, जबकि। हर कोई स्पष्ट? सशर्त बयान के साथ एक ही बात आप कुछ भी बनाना चाहते हैं। जबकि छोरों यदि साथ एक ही बात आप कुछ भी बनाना चाहते हैं। हो सकता है कि कुछ है बहुत, के बारे में बहुत सावधान। तो यह वास्तव में एक अच्छा समस्या में था यह दो बातें प्रदर्शन किया है कि भावना। यह पहली बार गुंजाइश प्रदर्शन किया। और यह प्रदर्शन किया यह भी स्मृति आवंटन। तुम लोगों को पता होना चाहिए कि क्योंकि कार्यों ढेर में ऊपर की ओर बढ़ता है। और कहा कि जब आप कॉल काम करता है, आप बना रहे हैं स्मृति का अनिवार्य रूप से एक नया हो चुकी है। यही कारण है कि बहुत से अलग है अपने साधन स्मृति क्या है। हाँ। वाह! उस पर ठीक सब लोग? यही कारण है कि भ्रमित था। बहुत अच्छा विषय है, पर जाने के लिए आप शायद रहे हैं क्योंकि कुछ मुश्किल हो जा रहा प्रश्नोत्तरी पर इस तरह बातें। हाँ। कूल। मैं आप से एक पर 100 मिल डाल देता हूँ लाइन और अन्य पर तो 10। हाँ, बहुत अच्छा। ठीक है, अब तुम लोगों को मिल जाएगा मौका TAs हो। आप सभी सुंदर जवाब देने के लिए मिलता है मैं कभी-कभी मिलता है कि ईमेल। तो, प्रिय एंडी, मैं कुछ लगता है कि देखना मेरी संकलक के साथ गलत हो रहा है। मैं अपने कोड सही है कि कुछ कर रहा हूँ लेकिन मैं एक विभाजन गलती हो रही रखने मैं चलाने के लिए हर समय। क्या चल रहा है? मदद, बहुत सारा प्यार करें। आप लोगों की तरह कुछ मिल गया तो आप जवाब होता कैसे है? ये वास्तव में बहुत आम हैं सवाल है कि हम आप से पूछना होगा। हम आपको एक दे देंगे, यदि है परिदृश्य, हम हमारे दे दूँगा क्या हो रहा है पर तुम्हारा सबसे अच्छा लगता। किसी को क्या हो रहा है पर एक वार किया है? हाँ? दर्शकों: शायद dereferenced सूचक की तरह अशक्त, कुछ अशक्त कुछ पर इशारा कर रहा है। प्रोफेसर: हाँ, यह एक होगा कि क्या होगा जब का उदाहरण है। लेकिन बड़ी तस्वीर क्या है की यहाँ क्या हो रहा है? दर्शकों: यह आप कोशिश कर रहे हैं आप नहीं कर रहे हैं कि स्मृति का उपयोग करने के लिए करने के लिए उपयोग करने के लिए चाहिए? प्रोफेसर: बिल्कुल। तो, एक SEG गलती की एक बंद लगता है स्मृति में सीमा, प्रतिबंधित क्षेत्र कि तुम छू नहीं होना चाहिए। इसलिए बहुत ज्यादा आप कोशिश कर रहे हैं उदाहरण के लिए जैसे index-- करने के लिए, आप घोषित किया है एक शून्य से नौ करने के लिए सरणी। लेकिन आपको लगता है कि 10 वीं छूने की कोशिश मूल्य, आपको लगता है कि करने के लिए पहुँच नहीं है। आप इसे घोषित नहीं किया है। और तो अपने कंप्यूटर जा रहा है उस तरह से देखने के लिए, उह ओह, तुम जाने के लिए कोशिश कर रहे हैं एक सूचकांक की सीमा से बाहर। मैं तुम्हें देने के लिए जा रहा हूँ विखंडन दोष। ठीक है, क्षेत्र के रूप में के बारे में सोचो? एक अतिरिक्त खंड, गलती है यदि आप कुछ भंग करने की कोशिश में और आप वहाँ नहीं होना चाहिए। विभाजन गलती कभी भी है आप चीजों को छूने की कोशिश कि तुम छू नहीं होना चाहिए। इसलिए सामान्य उदाहरण एक सूचकांक हैं। बेशक, आप कोशिश कर रहे हैं कि अशक्त था छूने के लिए, यह भी कहा कि के रूप में अच्छी तरह से काम करेगा। अपने सूचक करने की कोशिश कर रहा था, तो , स्पर्श नहीं करना चाहिए कि चीजों को छूने यह भी कहा कि के रूप में अच्छी तरह से काम कर सके। सबसे आम तौर पर आप हूँ एक सरणी में देखते हैं। हर कोई अच्छा है? दर्शकों: यदि आप चाहते हैं तो 10 वीं बिंदु तक पहुँचने के लिए और केवल एक सीमा होती है नौ या कुछ और। प्रोफेसर: हाँ, बिल्कुल। बहुत ज्यादा। कूल। प्रिय एंडी। इसलिए हम इन अद्भुत मिल गया है चीजों प्रकार कहा जाता है। अगर हम के रूप में sort-- मर्ज उदाहरण के लिए जब में देखा डेविड पूरे किया class-- में बात क्यों, की तुलना में यह इतना तेज है कि अगर अन्य प्रकार के किसी भी, यही कारण है कि हम भी जानते हुए भी परेशान करते हैं अन्य प्रकार के किसी भी? वास्तव में आप पूछ इस सवाल का क्या है? तीन word-- क्या है दर्शकों: व्यापार बंद क्या है? प्रोफेसर: बिल्कुल। यही सवाल पूछ रहा है कि क्या है। के बीच व्यापार बंद क्या है किसी भी अन्य प्रकार के छंद तरह मिलाएं? दर्शकों: ठीक है, स्मृति लेता है? प्रोफेसर: आप करो थोड़ा और अधिक समझाने की है कि? पहले हम मर्ज की दुकान की व्याख्या करते हैं। कैसे काम क्रमबद्ध मर्ज करता है? दर्शकों: यह द्वारा काम करता है तो आधे में सब कुछ विभाजित और फिर एक साथ डाल और यह क्रम में पुनः दिए, हर बार की तरह आप सेट विलय। प्रोफेसर: बहुत सुंदर। इसलिए मैं इस बाहर आकर्षित कर सकते हैं, लेकिन यह होगा इसे बाहर आकर्षित करने के लिए मुझे पांच मिनट का समय लगेगा। खंड स्लाइड्स पर वापस देखो जहां हम मर्ज तरह से कवर किया। बिल्कुल सही। इसलिए तरह तरह काम करता है मर्ज , यह आधे में चीजों को बांटता है और तब यह सिर्फ पर लग रहा है उनमें से सब से पहले मूल्यों और केवल उस तरह। लगातार नए सरणियों बनाता है और क्रम में बातें अधिक से अधिक डालता है। और इतना है कि सच में, सच है, जबकि तेजी से आप जानते it's-- क्योंकि, एक द्विआधारी खोज एन के एन लॉग है। तुम इतने सारे बना रहे हैं आप कर रहे हैं कि अलग अलग सरणियों स्मृति की एक बड़ी राशि का उपयोग कर। और तो यह तेजी से, व्यापार बंद है, जबकि आप और अधिक स्मृति का उपयोग कर रहे हैं कि यहाँ है। और हां, संकेत, प्रकार और खोजों और इस साल एक बहुत कवर किया गया वे पिछले वर्षों में किया गया है की तुलना में। तुम लोग यह देखना चाहिए कि तदनुसार प्रश्नोत्तरी पर परिलक्षित होता है। मैं निश्चित रूप से जा रहा समय बिताना होगा पर क्या विभिन्न प्रकार के सभी कर रहे हैं, कैसे द्विआधारी खोज, कैसे रैखिक खोज काम करते हैं। कैसे शायद स्यूडोकोड को उन बाहर कोड। चल बार क्या हैं? चल बार कुछ ऐसा ही बहुत है एक नोट शीट पर नीचे कॉपी करने के लिए आसान है, है ना? आप कर रहे हैं जब यह वास्तव में मुश्किल है बीच की परीक्षा में और आपको लगता है कि यह पता लगाने के लिए है। यह नीचे कॉपी करें। मैं आप कर रहे हैं आप की गारंटी पता चला है कि जरूरत के लिए जा रहा है। व्यापार-नापसंद क्या हैं? सबसे बुरी स्थिति, सबसे अच्छा मामले परिदृश्यों उन सभी के लिए बहुत ही जानते हैं। हाँ? दर्शकों: हम की जरूरत है मर्ज सॉर्ट कोड के लिए कैसे पता? की तरह, हम करने की जरूरत है पुनरावर्ती याद है? प्रोफेसर: मैं अत्यधिक सिर्फ यह शक यह काफी जटिल की तरह है क्योंकि। लेकिन यह अव्यवहार्य नहीं हो सकता है अगर हम स्यूडोकोड इसे बाहर का उपयोग करने के लिए आप से पूछना। हाँ। हाँ, ठीक है, एक और। इस में ऊपर आ सकता है एक बिट में पिछले टुकड़ा। हाँ? हर किसी को सुना? के पहले ठीक है, तो बहुत ज्यादा कार्यक्रम के सभी, किस प्रकार का आप इस तरह से एक उत्पादन दे रही हो सकता है? हम के बारे में जानने के लिए आप से पूछा याद रखें उपकरण डिबगिंग के इस नए प्रकार? उस स्थान का नाम क्या था? वेलग्रिंड, सही यह जहां एक कार्यक्रम था तुम सकता है कि कह सकते हैं आप कर रहे हैं सभी स्मृति का ट्रैक रखने अपने कार्यक्रम में उपयोग करते हुए और चल रहा था। तो अगर आप की तरह, कुछ मिल गया है, तो निश्चित रूप से एक ब्लॉक में 40 बाइट्स खो दिया है। शायद तुम नहीं हो यह मुक्त करने के लिए याद। आप स्मृति के बाइट्स का उपयोग कर रहे हैं क्योंकि अगर, कि, आपको लगता है कि स्मृति पहुँचा है इसका मतलब है लेकिन आप मुक्त करने में सक्षम नहीं किया गया है। तो आप बनाना चाहते हैं आप यह भी सुनिश्चित कर रहे हैं कि कि एक है free-- का उपयोग कर सभी मुक्त करने के लिए function-- malloc द्वारा पुनः आवंटन स्मृति की। कूल। इस स्लाइड तो, मैं यह करना होगा। यह एक बहुत में हर जगह है अनुभाग स्लाइड का एक बहुत में व्याख्यान,। आप वास्तव में बनाना चाहते आप बस यह सब जानते हैं। या तो अपने नोट शीट में या अगर आप यह याद करना चाहते हैं, के लिए स्वतंत्र महसूस। यही कारण है कि वास्तव में, वास्तव में, वास्तव में महत्वपूर्ण है। इसके अलावा एक बहुत अच्छा हम पूछ सकते हैं कि सवाल। क्यों चयन sort-- नज़र में है चयन runtimes के सभी sort-- n चुकता कर रहे हैं। भले ही सूची के लिए आता है कि कैसे की आप ऐसा क्यों चयन sort-- है, के रूप में मैं तुम लोगों को 30 दे दूँगा दूसरे इस बारे में सोचते हैं। यह एक तरह से भ्रामक है क्योंकि। यह कुछ वैचारिक सोचा शामिल है। क्यों रन बार में एक ही होगा दोनों के लिए सबसे बड़ा और सबसे अच्छा मामले परिदृश्यों? हाँ? दर्शकों: क्योंकि चयन तरह प्रत्येक इस छोटी सी सरणी में स्थिति या अंतरिक्ष बात या जो भी हो। तो भी बेहतरीन परिदृश्य में, यह पूरी तरह से हल है, भले ही यह अभी भी एक है, ठीक है, की तरह करना होगा। मेरी पहली जगह में मैं एक है। और उन सभी के माध्यम से जाना। ठीक है, एक छोटी है। और फिर इसे फिर से चला जाता है और, दो ठीक है, की तरह है चीजों के सभी में सबसे छोटी है। लेकिन यह अभी भी करने के लिए है हर एक की जाँच करें। प्रोफेसर: हाँ। तो उदाहरण के लिए, चलो बस कहना है हम एक सूची है, पहले से ही हल किया है, एक सरणी 04:59। चयन प्रकार है कि रास्ता यह यह है कि इन दो चेक के माध्यम से चला जाता है। तो फिर यह उन दो जांचता है। और फिर यह जाँच करता है, और यह जाँच करता है। यह, उन सभी की जाँच रहता है चाहे या नहीं यह वास्तव में हल है। कि बस क्योंकि है तरह तरह काम करता है। और इसलिए इस सवाल की तरह की तरह है हम पूछना होगा एक वैचारिक सवाल। जहां पहले, आप के लिए क्या चयन तरह पता सही, सक्षम होने के लिए है, इस सवाल का जवाब। आप को समझने में सक्षम होने की जरूरत धारणात्मक पर क्या हो रहा है। और फिर आप ठीक है, यह लागू करते हैं और लगता है कि कर सकते हैं चलो बस सबसे खराब स्थिति की कल्पना करना। वे सभी अवरोही क्रम में कर रहे हैं। कैसे है कि यह प्रभावित करेगा? क्या यह आरोही क्रम है तो क्या होगा? यह पहले से ही हल है तो क्या होगा? कैसे है कि runtimes को प्रभावित करती है? और फिर चयन तरह, आप ध्यान देंगे यह वास्तव में कोई फर्क नहीं पड़ता कि। आप जाँच कर रहे हैं क्योंकि सभी मूल्यों की परवाह किए बिना क्या हो रहा है। और तो अच्छी बातें याद करने के लिए। कुछ प्रकार दूसरों से अलग क्यों और कैसे सबसे अच्छा और सबसे ज्यादा मामले परिदृश्यों उनमें से सभी को प्रभावित करती है। मैं वास्तव में हर रूप में हिट करने के लिए जा रहा हूँ कि प्रश्नोत्तरी पर हो जाएगा। हाँ। ठीक। छोड़ छह मिनट है। मैं सवालों के तीन मिनट लग सकते हैं। मैं भी के लिए चारों ओर लटका कर सकते हैं अनुभाग के बाद 20 मिनट की तरह आप के रूप में अच्छी तरह से सवाल पूछने के लिए चाहते हैं। किसी को भी सिर्फ सच में संक्षिप्त है प्रश्न या वैचारिक मुद्दों वे के बारे में अभी स्पष्ट नहीं कर रहे हैं? हाँ? दर्शकों: आप एक छोटे से बात कर सकते हैं बिटवाइस ऑपरेटरों के बारे में थोड़ा सा? प्रोफेसर: हाँ। तो बिटवाइस ऑपरेटरों रहे कुछ है कि आप शायद बस अपनी चादर पर डाल करने के लिए चाहते हो सकता है। इसलिए मैं नहीं चाहता quickly-- गहराई में बहुत ज्यादा जाना अपनी समीक्षा में हार्वर्ड, क्योंकि सत्र, यह बहुत अच्छी तरह से कवर किया। बिटवाइस ऑपरेटर, वहाँ है उनमें से पांच, है ना? , एक्स या समारोह है, जो वहाँ है और जो है, एम्परसेंड नहीं है। या है जो पाइप,। और फिर आप दो है पारियों के विभिन्न प्रकार के। मैं तुम दोनों मूल्यों, यदि देते हैं मैं एक और एक है, जैसे, आप दे। वह क्या करने के लिए मूल्यांकन होगा? तो मैं आपको सच, सच और सच दे? क्या सही है या गलत के बारे में? फिर भी यह सच है, है ना? एक या क्योंकि वहाँ। हम सबसे अधिक संभावना है कि आप नंबर दे देंगे। तो एक बराबर होती है, याद यह सच है कि शून्य झूठी बराबर होती है। और हम आपको इन चीजों को दे सकता है और क्या होता है हमें बताने के लिए आप से पूछना। हार्वर्ड पहली भीतर इसे शामिल किया गया उनके अध्ययन सत्र के 10 मिनट वास्तव में, वास्तव में अच्छी तरह से। तो तुम लोग बनाना चाहते सुनिश्चित करें कि आप उस पर लग रही है। दर्शकों: pisa5 है प्रश्नोत्तरी पर होने जा रहा? प्रोफेसर: नहीं। यहां तक ​​कि अब सही pisa5 मत देखो। यह मुश्किल है। बस भी pisa5 पर देख परेशान नहीं करते। हालांकि, कुछ संकेत के रूप में और सुझाव, मैं आप pisa5 शुरू सुझाव देना चाहूँगा जैसे ही प्रश्नोत्तरी खत्म हो गया है। यह सबसे मुश्किल होगी सप्ताह है, लेकिन फिर आप लोग पहाड़ियों पर यह पारित हो जाएगा हरे और पिल्लों रोलिंग की, और यह ठीक है। इस वर्ग के लिए महत्वपूर्ण हो जाता है पांचवें pset के बाद आसान। दर्शकों: ऑफिस का समय रविवार, सोमवार रहे हैं? प्रोफेसर: हाँ, कार्यालय समय होगा तो Pset के लिए सोमवार को रविवार। कार्यालय समय आज रात अनिवार्य सिर्फ प्रश्नोत्तरी के लिए समीक्षा की जाएगी। किसी को भी अंदर आ जाओ और पूछना चाहता है एक सवाल tas, हम वहाँ हो जाएगा। मुझे लगा कि शायद एक और सवाल ले लेंगे किसी को भी एक सवाल है तो क्या होगा? हाँ? दर्शकों: जब आप कर रहे हैं परिभाषित नोड्स, [सुनाई] आप अगले तो नोड स्टार हैं और कहते हैं, कंप्यूटर स्वचालित रूप से करता है आप समझते हैं कि एक और सूचक की चर्चा करते हुए? प्रोफेसर: नहीं। दर्शकों: आप के लिए है यह [सुनाई] relink? प्रोफेसर: तो बुनियादी तौर पर एक नोड की संरचना, याद है, आप नोड बनाने की तरह है और तो आप अगले नामक एक सूचक है। तुम क्या कर रहे सब होने है वहाँ संरचना। आप आवंटित करने के लिए है कि कहीं सूचक। तो कंप्यूटर नहीं करता है यह अभी तक क्या कर रहा है पता है। आप वास्तव में जब यह आवंटित करने के लिए है आप अपने लिंक सूची बना रहे हैं। और कहा कि क्या मुख्य रूप से है pset 5 पर होगा। के बारे में तो कोई चिंता नहीं अब लगता है कि सही के किसी भी। दर्शकों: तो हम की जरूरत नहीं है बस, लिंक सूची पर बहुत अधिक ध्यान केंद्रित सामान्य गर्भाधान? प्रोफेसर: बस बहुत ज्यादा ढेर, कतार, लिंक सूचियों, पेड़, हैश टेबल। सिर्फ इसलिए कि वे क्या कर रहे हैं पता कर सकेंगे। हम पूछने के लिए नहीं जा रहे हैं आप विशिष्ट कुछ भी पसंद हम वास्तव में ऐसा नहीं किया है क्योंकि एक अभी तक इस बात का किसी भी शामिल किया गया है कि pset। इससे पहले पिछले दो मिनट में तो मैं तुम्हें मुक्त इस क्विज को मारने के लिए निर्धारित किया है। बहुत ज्यादा है, जैसे, के बारे में सोचने अब तक तुम लोग इस वर्ग में आ गए हैं। मैं जब दो सप्ताह याद इस वर्ग, आप में से कुछ की पानी लिख तीन घंटे बिताते हैं। यह तुम्हें ले जाएगा कि कितने समय लोग अब पानी लिखने के लिए? 30 सेकंड, हो सकता है? कितना के बारे में सोचो तुम लोगों को सीख लिया है। सीएस एक बहुत, बहुत कठिन विषय है। इस बात का कोई संदेह नहीं है। यह कोई भी यह अध्ययन करता है, इसलिए मुश्किल है। यह सिर्फ मुश्किल है। और यह पूरी तरह से ठीक है। और मुझे लगता है कि वास्तव में गर्व कर रहा हूँ हर कोई इसे इस दूर कर दिया है। Psets आसान नहीं हैं। वे समय की एक बहुत ले। तुम लोग, मैं लिखने के लिए आप कभी नहीं पूछेंगे pset पर 15 या Vigenere का खेल। कोई ज़रूरत नहीं है कि बस के बारे में बाहर बेकार करने के लिए। हम यहाँ परीक्षण कर रहे हैं सभी का मूल्यांकन करने के लिए है अपने वैचारिक ज्ञान, के रूप में अच्छी तरह से कोडिंग के अपने बुनियादी कौशल के कुछ के रूप में। परीक्षण करने के लिए बनाया गया है वास्तव में चुनौतीपूर्ण हो। की तरह, यह बनाया गया है के लिए आपको 100 पाने के लिए नहीं। यह भी शायद आप के लिए तैयार है 75 मिनट में खत्म करने में सक्षम नहीं हो। और कहा कि पूरी तरह से ठीक है। मैं एक छात्र अपने आप को कर रहा हूँ। जब मैं चलना मुझे पता है, मैं इसे नफरत है एक प्रश्नोत्तरी के बाहर गंदगी की तरह हो। यही कारण है कि वास्तव में मुश्किल था। शायद करने के लिए क्या हो रहा है happen-- और कहा कि पूरी तरह से ठीक है, मैं अभी तुम लोगों को बता रहा हूँ। इन बातों पर साधन उच्च बिल्कुल नहीं हैं। और अगर आप उन लोगों के लिए है जो जैसे, मिल रहा है, आपकी समस्या सेट पर threes, कि आप कर रहे हैं मतलब यह नहीं है इस वर्ग में 60 प्रतिशत प्राप्त करने जा रहा है। आप पर 60% मिलता है है कि नहीं प्रश्नोत्तरी, आप के लिए जा रहे हैं मतलब इस वर्ग में एक डी मिलता है। हम विशेष रूप से मैं, के लिए, देखें मेरे भाग में आप उन लोगों के, आप लोग सब काम कर रहे हैं कि कितना मुश्किल मैं देख रहा हूँ। और मुझे इस बात का ट्रैक रखने के लिए। तुम लोग ठीक हो जाएगा। का कोई संस्थागत स्मृति नहीं है सेमेस्टर के अंत में खुशी। सभी हार्वर्ड बच्चों कह रहे हैं क्योंकि अपने दोस्तों, ओह, तुम ठीक हो जाओगे। कोई नहीं है कि आप लोग यहाँ बता रहा है। इसलिए मुझे लगता है कि आप लोग यहाँ बताने के लिए है। तुम लोग ठीक हो जाएगा। मैं तुम लोगों के सभी पर गर्व है। परीक्षण मुश्किल हो जाएगा। इसके लिए अध्ययन, और बाद में बस इसे दूर फेंक देते हैं। नई चीजों को सीखने के लिए तैयार हो जाओ। और कैंडी खाना खाते हैं। हम कैंडी के बहुत सारे है है। एक अच्छी रात की नींद लो। सो नहीं मत करो, क्योंकि कि वास्तव में बुरा होगा। सीएस तर्क का एक बहुत कुछ है। आप सो नहीं है, तो आप काम नहीं कर सकते, और अपने दिमाग से काम नहीं कर सकते हैं। और मुझे लगता है कि अगले 20 के लिए यहाँ हो जाएगा मिनट किसी के चारों ओर घूमने के लिए चाहता है। तुम लोग इसे मारने के लिए जा रहे हैं। सौभाग्य।