[Powered by Google Translate] [धारा 3] [कम आरामदायक]
>> [नैट Hardison] [हार्वर्ड विश्वविद्यालय]
>> [यह CS50 है.] [CS50.TV]
>> ठीक है, हम शुरू हो.
CS50 के 4 सप्ताह के लिए आपका स्वागत है.
यदि आप लोगों के लिए एक वेब ब्राउज़र खोलें और खोलने के 3 pset,
CS50 के साथ हाथापाई, हम करने के लिए जा रहा शुरू करने के लिए जा रहे हैं
वहाँ प्रश्न के अनुभाग के माध्यम से.
पिछले सप्ताह की तरह, हम CS50 रिक्त स्थान में काम करेंगे,
अगर आप यह भी है कि खींच कर के रूप में अच्छी तरह से,
और यदि आप आगे जाना है और इस कड़ी है कि मैं शीर्ष पर यहाँ मिल गया है पर जाएँ.
यह समय है शुरू करने के लिए.
हम हमारी छोटी हाय यहाँ कार्यक्रम मिल गया है. पागल कुछ भी नहीं है.
पहली बातें मैं आज आप लोगों के साथ करना चाहते हैं पर कुछ समाधान जाना है
समस्या 1 सेट, उदाहरण के समाधान की तरह,
सिर्फ इतना आप कोड कर्मचारियों के प्रकार क्या लिख ​​रही है के लिए एक महसूस हो सकता है,
कोड अन्य छात्रों की तरह क्या लिख ​​रहे हैं,
और आप इसे देख ले, क्योंकि मुझे पता है कि यह अजीब है
जब आप एक समस्या सेट करने के लिए एक समाधान प्रस्तुत करते हैं और टिप्पणियां प्राप्त
अपने संस्करण पर है, लेकिन कभी कभी यह उपयोगी है देखने के लिए कैसे अन्य लोगों को यह किया है,
विशेष रूप से अच्छा कर रहे हैं कि लोगों को देख रहे हैं.
अधिकांश भाग के लिए, मैं वास्तव में समाधान है कि आप लोगों का उत्पादन के साथ प्रभावित हुआ था.
मैं अभी तक अपनी समस्या सेट 2s पर तलाश नहीं शुरू कर दिया है, लेकिन अगर वे पहले की तरह कुछ भी कर रहे हैं,
यह कुछ भी नहीं है, लेकिन अच्छी बातें मतलब है.
>> यदि आप अपने संशोधन में देखो, चलो 1 संशोधन में सभी तरह से नीचे शुरू,
और हम एक मारियो समाधान में एक त्वरित देखो ले जा रहे हैं.
यदि आप इस खींच, इन प्रोग्रामों को सही कर रहे हैं कि हम पेश करने के लिए जा रहे हैं.
इन समस्याओं के साथ शुद्धता मुद्दों नहीं थे, बल्कि,
हम विभिन्न डिजाइन मुद्दों के बारे में थोड़ा बात करना चाहता हूँ
कि यहाँ इस्तेमाल किया गया जा रहा है.
समाधान के बारे में बातें है कि दिलचस्प था
यह है कि यह इस नए बुलाया पौंड को परिभाषित का निर्माण का इस्तेमाल किया है,
कभी कभी भी एक हैश के रूप में परिभाषित करने के लिए भेजा है.
मुझे यहाँ पर में ज़ूम.
परिभाषित # एक नाम अपने कार्यक्रम में इन नंबरों के लिए देने के लिए आप की अनुमति देता है.
इस मामले में, मारियो में एक पिरामिड की अधिकतम ऊंचाई
23 किया गया था और के बजाय अपने में 23 डाल कोड
हम कठिन कोडिंग के रूप में 23 के लिए उल्लेख होगा -
बजाय इस कि संख्या नाम MAX_HEIGHT देता है,
तो यहाँ नीचे है, जबकि मेरे पाश में
आप वास्तव में MAX_HEIGHT के लिए उल्लेख कर सकते हैं
के बजाय 23 नंबर डाल अंदर
[छात्र] है कि कर का फायदा क्या है?
यह एक बड़ा सवाल है.
एक पठनीयता है.
इस का उपयोग कर परिभाषित # का एक लाभ यह पठनीयता है.
जब मैं इस कोड पढ़ रहा हूँ, मैं देख सकता हूँ कि क्या हो रहा है.
>> मैं यहाँ इस हालत में देखते हैं कि हम परीक्षण कर रहे हैं, हो सकता है
ऊंचाई के लिए <0, जो हम भी परिभाषित हो सकता है किया जा रहा है
एक न्यूनतम ऊंचाई या एक मिनट ऊंचाई.
अन्य लाभ यह है कि मैं तो लाइन के बाकी को पढ़ने के लिए देख सकते हैं
कि हम भी लगता है कि ऊंचाई अधिकतम ऊंचाई से अधिक नहीं है की जाँच कर रहे हैं,
क्योंकि हम जारी रखने के लिए जा रहे हैं जबकि ऊंचाई अधिकतम ऊंचाई से अधिक है.
अन्य लाभ यह है कि अगर मैं एक छोटा सा ज़ूम
अगर मैं इस कार्यक्रम को चलाने और मैं इसे चलाते हैं, कहते हैं, 23 के साथ अभी,
यह ऐसे ही सभी 23 पंक्तियों प्रिंट होगा.
कहते हैं लेकिन मैं अधिकतम ऊंचाई को बदलना चाहते थे,
और अब मैं पिरामिड की अधिकतम ऊंचाई को सीमित करना चाहते हैं
केवल इतना ही कह आदमी है, कि कायरता था.
# शामिल # MAX_HEIGHT को परिभाषित,
और हम कहते हैं कि हम यह 10 के बराबर स्थापित करना चाहता था.
अब इस बिंदु पर, सब मुझे करना पड़ा था यह इस एक स्थान में परिवर्तन कर सकते हैं.
मैं कोड recompile कर सकते हैं, और अब अगर मैं कोशिश करते हैं और 12 में टाइप,
यह मुझे फिर से संकेत जाएगा.
इस मामले में, हम केवल MAX_HEIGHT रहे हैं एक बार प्रयोग.
यह एक परेशानी का बड़ा नहीं है कि में जाना है
और यह जबकि पाश में बदलने के लिए अगर आप की जरूरत है.
लेकिन प्रोग्राम है जहाँ आप एक ही जादुई संख्या को संदर्भित कर रहे हैं
पर और फिर से, इस तंत्र को परिभाषित वास्तव में आसान है
क्योंकि तुम सिर्फ यह फ़ाइल यह आम तौर पर है, जहाँ आप उन्हें डाल के शीर्ष पर एक बार बदल
और परिवर्तन फ़ाइल के बाकी के माध्यम से percolates.
>> अन्य बातें मैं इस काम में ध्यान दें कि मैंने सोचा था वास्तव में अच्छा लग रहा है,
एक चर का नामकरण था.
आप यहाँ देख सकते हैं कि हम पूर्णांक चर पंक्ति और ऊंचाई बुलाया बुलाया मिल गया है.
रिक्त स्थान, hashes, यह कोड एक छोटे से अधिक पठनीय बनाने में मदद करता है,
बनाता है यह एक छोटे से अधिक समझ में आता है क्या वास्तव में पर जा रहा है.
इस का उपयोग करने के लिए विपरीत है, कहते हैं, यादृच्छिक पत्र
या बस पूरी तरह gobbledygook.
एक अंतिम बात मैं बाहर बात करेंगे कि loops के लिए,
अक्सर इन iterator चर, इन काउंटरों कि आप loops के लिए अपने उपयोग,
यह मानक और उन्हें या तो मैं और फिर जम्मू के साथ शुरू करने के लिए पारंपरिक और फिर कश्मीर
और वहाँ से चल रहा है अगर आप अधिक चर की जरूरत है,
और यह सिर्फ एक परंपरा है.
सम्मेलनों के बहुत सारे हैं.
यह प्रोग्रामिंग भाषा का प्रयोग कर रहे हैं पर निर्भर करता है.
लेकिन सी में, हम आम तौर पर मैं के साथ शुरू करते हैं.
यह उपयोग करने के लिए समझ बनाने के लिए नहीं, कहते हैं, एक या ख
स्थिति पर निर्भर करता है.
कि यह इस एक के लिए है.
यदि आप अब 2 संशोधन खींच, तुम एक और मारियो देखेंगे,
और यह एक अन्य एक है कि हम सिर्फ देखा करने के लिए समान है,
लेकिन यह कुछ की तरह शांत करता है.
, अगर हम इस खंड में सही यहाँ पाश के लिए भीतरी अंदर देखो
वे कुछ पागल लग वाक्यविन्यास का उपयोग कर रहे हैं यहाँ इस लाइन में सही.
यह एक त्रिगुट ऑपरेटर कहा जाता है.
यह एक अगर किसी और एक लाइन में सघन बयान है.
हालत कोष्ठकों के भीतर यह हिस्सा है.
यह कह के बराबर है j <ऊंचाई अगर मैं - 1.
और फिर क्या की सामग्री है कि अगर ब्लॉक होगा अंतरिक्ष हैं
और तो और क्या होगा की सामग्री #.
यह अनिवार्य रूप से इस चर के लिए एक अंतरिक्ष बताए.
यह ब्लॉक चर की सामग्री में एक जगह रख रहा है,
अगर यह शर्त पूरी होती है, और अगर हालत नहीं मिले है,
तो ब्लॉक चर # हो जाता है.
और फिर, बेशक, बजाय एक पूरे स्ट्रिंग निर्माण
और अंत में सब कुछ बाहर मुद्रण इस समाधान यह प्रिंट बाहर एक समय में एक चरित्र है.
बहुत अच्छा.
>> चीजों को देखने के की एक और जोड़ी. हम पर लालची के लिए कदम होगा.
अब अगर हम लालची को देखो, यह पहली समाधान
इन का उपयोग करता है # काफी एक बिट को परिभाषित करता है.
हम इस कार्यक्रम में विभिन्न संख्या में से प्रत्येक के लिए एक निरंतर परिभाषित मिल गया है.
हम डॉलर प्रति सेंट के लिए एक एक क्वार्टर, ऑफ डाइम्स, nickels, और पैसे के लिए मिल गया है,
और अब अगर हम नीचे स्क्रॉल और कोड को पढ़ने,
हम एक है, जबकि मानक पाश मुद्रण सब कुछ देख सकते हैं.
इस समस्या की जड़ की तरह महसूस किया गया था कि
एक पूर्णांक के लिए नाव है कि आप उपयोगकर्ता से पढ़ा बदलने की जरूरत
करने के लिए सही गणित करते हैं, और इस वजह से है
चल बिन्दु संख्या के साथ, जैसे हम व्याख्यान में के बारे में संक्षेप में बात की,
यह संभव करने के लिए सही संख्या रेखा पर हर एक मूल्य का प्रतिनिधित्व नहीं है
क्योंकि वहाँ के बीच 3 और कहते हैं, भी, 3,1 infinitely कई मान रहे हैं.
आप 3.01 और 3.001 और 3.0001 सकते हैं, और आप जा रख सकते हैं.
यह पता चला है जब भी आप पैसे के साथ काम कर रहे हैं, तो आप अक्सर इसे बदलने के लिए करना चाहते हैं
पूर्णांक प्रारूप में इतनी है कि आप पैसे और सामान की तरह नहीं खो रहे हैं.
कि और गोलाई कर चाबी थी.
यह समाधान एक पूरी तरह से सरल, महान एल्गोरिथ्म का उपयोग किया है,
जो तिमाहियों से 1 सेंट की शेष संख्या, decremented,
फिर ऑफ डाइम्स द्वारा, तो nickels द्वारा, तो पैसे से,
और हर बार के सिक्कों की संख्या जोड़ने.
>> एक अन्य समाधान है कि हम देखते हैं, के रूप में मैं बाहर ज़ूम और 4 संशोधन के लिए जाना है,
एक बहुत ही इसी तरह की शुरुआत है, लेकिन बजाय div और आधुनिक थी
सही यहाँ पर सेंट की संख्या की गणना करने के लिए.
यह तिमाहियों की संख्या 25 सेंट द्वारा विभाजित की संख्या के बराबर है,
और कारण यह काम करता है, क्योंकि हम पूर्णांक विभाजन कर रहे हैं,
तो यह किसी भी शेष discarding है.
[छात्र] हम खोज टिप्पणी है?
यह वास्तव में निर्भर करता है.
[छात्र] आप कोड की तुलना में अधिक टिप्पणी कर रहे हैं ठीक है यहाँ.
हाँ, और इसलिए इस पर अलग दर्शन का एक गुच्छा रहे हैं.
मेरी निजी दर्शन यह है कि आपके कोड वास्तव में सच है,
अपने कोड की तरह है कि क्या वास्तव में कंप्यूटर पर निष्पादित है,
और तो आपके कोड के रूप में संभव के रूप में पठनीय कई टिप्पणी के रूप में की जरूरत के लिए नहीं होना चाहिए.
उस ने कहा, जब आप मुश्किल की बातें कर रहे हैं कि तरह कर रहे हैं गणितीय
या algorithmically, यह अच्छा है इतना है कि आप कर सकते हैं उन टिप्पणी
जो कोई भी अपने कोड को पढ़ने के लिए एक अतिरिक्त आयाम, एक अतिरिक्त परत जोड़ने.
इन समाधान में, वे अक्सर अधिक सिर्फ क्योंकि भारी टिप्पणी कर रहे हैं
हम उन्हें वितरित करने में सक्षम होना चाहते हैं और लोग उन्हें लेने के लिए
और उन्हें बहुत आसानी से पढ़ा.
लेकिन निश्चित रूप से, मैं इस बात से सहमत है कि इस भारी है.
[छात्र] लेकिन जब संदेह में, भारी जाना है?
जब संदेह में, भारी जाना.
कुछ लोगों को कभी कभी वापसी या उस तरह 0 कुछ नहीं कहेगा.
मुझे लगता है कि एक हास्यास्पद टिप्पणी है.
जाहिर है कि क्या हो रहा है.
मैं अंग्रेजी की जरूरत नहीं है मुझे बताओ कि.
कभी कभी लोगों की तरह सामान लिखना होगा "kthxbai!"
यह प्यारा की तरह है, लेकिन यह भी नहीं
कि टिप्पणी अंक या नहीं के बीच अंतर नहीं कर रही है.
उन टिप्पणियों के प्रकार बस हा, हा.
कूल.
>> इस बिंदु पर, सवालों की धारा 3 सेट समस्या पर काम शुरू.
यदि आप लोगों को यह फिर से खींच,
के रूप में पिछले सप्ताह के साथ, हम इस खंड में शॉर्ट्स देखने के लिए नहीं जा रहे हैं.
हम तुम लोगों को अपने समय पर करते हैं और सवालों के बारे में बात करेंगे.
लेकिन अब इस खंड में हम थोड़ा और अधिक समय खर्च करने के लिए जा रहे हैं
कोडन मूल के कम के बारे में बात कर रहे
जैसे हम पिछले हफ्ते किया था, और बजाय, हम पर अधिक ध्यान केंद्रित करने जा रहे हैं
एक छोटा सा सिद्धांत के अधिक है, तो द्विआधारी खोज के बारे में बात कर रहे हैं और फिर छँटाई.
तुम में से जो व्याख्यान के साथ किया गया है साथ निम्नलिखित से,
कोई मुझे क्या फर्क है एक संक्षिप्त दे सकते हैं
द्विआधारी खोज और रैखिक खोज के बीच?
क्या चल रहा है? यकीन है.
सॉर्ट की गई सूची में प्रत्येक तत्व के माध्यम से रेखीय खोज खोजों
एक एक एक एक एक करके,
और द्विआधारी खोज 2 समूहों में सूची बांटता है,
चाबियाँ मूल्य अगर चेक है कि आप के लिए खोज रहे हैं अधिक से अधिक या midpoint मूल्य से कम है
कि आप बस में पाया गया है, और अगर यह तुलना में कम है, यह कम सूची के साथ चला जाता है
और फिर है कि फिर से बांटता है, एक ही कार्य करता है
सभी तरह से नीचे जब तक यह midpoint मूल्य और खुद के बराबर हो पाता है.
सही है.
>> हम क्यों परवाह करूँ?
हम रैखिक खोज बनाम द्विआधारी खोज के बारे में बात क्यों करते हैं?
हाँ.
द्विचर एक बहुत तेजी से है, इसलिए अगर आप समस्या का आकार दोगुना
यह एक के बजाय दो बार के रूप में कई और कदम लेता है.
बिल्कुल सही.
यह एक महान जवाब है.
रैखिक खोज बहुत ज्यादा एक समय में एक तत्व की जाँच,
और जैसा कि हम व्याख्यान के पहले ही दिन पर देखा
जब दाऊद ने अपने फोन की किताब उदाहरण के माध्यम से चला गया
और एक समय में फोन की किताब के एक पृष्ठ फट
और और अधिक से अधिक और अधिक से अधिक है कि फिर से कर रखा है,
यह करने के लिए उसे फोन बुक में किसी को खोजने के लिए एक बहुत लंबे समय ले जा रहा है,
जब तक, ज़ाहिर है, वह किसी के लिए वर्णमाला के बहुत शुरुआत में लग रही थी.
द्विआधारी खोज के साथ, आप एक बहुत तेजी से जा सकते हैं,
और यह सिर्फ तेजी से या तेजी से या उपवास के रूप में 4 बार के रूप में 3 बार के रूप में दो बार नहीं है.
लेकिन समस्या और छोटे छोटे और बहुत छोटे, तेज हो जाता है.
इस वर्णन, क्या हो रहा है के बारे में हम बात कर शुरू करेंगे
जब हम द्विआधारी खोज लिखें.
हाथ में समस्या यह है कि अगर मैं संख्या की एक सरणी है,
कहते हैं, 1, 2, 3, 5, 7, 23, 45, 78, 12323,
और फिर इसे बाद 0s की एक टन के साथ 9,
हम वास्तव में जल्दी से बाहर निकालने के लिए क्या में है सक्षम होना चाहते हैं
संख्या के इस सरणी.
मुझे पता है कि यह एक छोटे से पागल लगता है और एक छोटे से काल्पनिक,
क्योंकि अभी यह है.
हम एक सरणी में बहुत सारे तत्व नहीं है,
और अगर मैं आप से पूछना बाहर निकालने के लिए है कि क्या है या नहीं
23 सरणी में है, आपको लगता है कि बहुत जल्दी कर सकते हैं
सिर्फ इस पर glancing और मुझे हाँ या कोई कह रहा है.
पर विचार करने के लिए अनुरूप अगर यह थे कल्पना है, कहते हैं,
10,000 पंक्तियाँ, 20,000 पंक्तियों के साथ एक एक्सेल स्प्रेडशीट.
बेशक, आप आदेश एफ या नियंत्रण एफ करते हैं और कुछ देखने के लिए कर सकते हैं.
तुम भी फिल्टर और सामान खोज का उपयोग कर सकते हैं,
लेकिन अगर आप लाइन से लाइन के द्वारा उस फ़ाइल लाइन के माध्यम से देखने के लिए किया था,
यह आप एक लंबे समय लेने के लिए यह मिल जाएगा.
यह फोन की किताब उदाहरण में तरह तरह की है, भी, जहां
कोई भी एक समय में एक फोन की किताब के एक पृष्ठ के माध्यम से लग रहा है.
आमतौर पर, वे इसे बीच करने के लिए खुला नहीं है,
या फोन किताबों और शब्दकोशों के एक बहुत कुछ के मामले में
आप वास्तव में इसे पहले अक्षर पर बंद है,
आप कि पहले अक्षर फ्लिप और खुला और वहाँ के माध्यम से जा रहा शुरू करते हैं.
>> अपने नाम के मुझे फिर याद दिलाना >> सैम.
सैम.
जैसे सैम ने कहा, कि रैखिक खोज की प्रक्रिया वास्तव में धीमी गति से हो रहा है,
और बजाय द्विआधारी खोज के साथ, जिस तरह से यह काम करता है कि
हर समय हम हमारे खोज एल्गोरिथ्म के एक चलना के माध्यम से चलते हैं,
हम में आधा सूची में विभाजित है, अनिवार्य रूप से जा रहे हैं,
दो छोटे सूची में.
और फिर पाश की अगली यात्रा पर, हम इसे फिर से विभाजित हूँ
अन्य छोटे सूची में.
जैसा कि आप देख सकते हैं, समस्या छोटी हो रही रखता है और छोटे
क्योंकि हम हर बार सूची की discarding आधा रखने.
यह कैसे त्यागें काम करता है?
बस एक चेतावनी के रूप में, हम क्या करना जा रहे हैं अगर हम एक कंप्यूटर थे
और हम कह रहे थे, इस सूची में नंबर 5 के लिए खोज
यह है कि हम बीच में एक नंबर लेने होगा.
इस सूची के बीच में है, क्योंकि वहाँ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 नंबर हैं,
हम या तो 4 की स्थिति में या संख्या 5 की स्थिति में उठा था,
और हम है कि हमारी सूची के बीच फोन था.
बीच में संख्या उठाओ.
तब, जैसे सैम ने कहा, हम देखना का परीक्षण है कि अगर संख्या बराबर है
संख्या है कि हम प्राप्त करना चाहते हैं या हमारे वांछित संख्या.
अगर यह बराबर है, तो हम इसे मिला है. हम जीतने के लिए.
यदि यह नहीं के बराबर है, तो वहाँ के मामलों के एक जोड़े हैं.
दो मामलों में या तो संख्या संख्या हम देख रहे हैं की तुलना में अधिक हो गया है,
या यह की तुलना में कम है.
यदि यह अधिक से अधिक है, हम सही करने के लिए कदम.
और अगर यह कम है, हम करने के लिए कदम छोड़ दिया.
और फिर हम पूरी प्रक्रिया को फिर से दोहराने
या तो सही आधा या सूची के बाईं आधा.
>> आज के अनुभाग में पहली समस्या के लिए बाहर आंकड़ा है
हम वास्तव में कैसे सी कोड में इस व्यक्त शुरू कर सकते हैं.
हम pseudocode यहाँ मिल गया है.
हम क्या कर शुरू करने के लिए है मैं एक नया अंतरिक्ष खींच लेंगे,
इस संशोधन को बचाने के लिए इतना है कि हम इन नोटों बाद,
हम यह सब नष्ट कर देंगे, और फिर कॉपी और पेस्ट समस्या सेट से
हमारे रिक्त स्थान में इस जानकारी है, और उम्मीद है कि यह नहीं तोड़ नहीं है.
बिल्कुल सही.
यदि आप लोग सब करते हैं कि कॉपी करने के लिए, और अपने नए अंतरिक्ष में इस कोड को पेस्ट करने के लिए,
एक रिक्त एक में.
डैनियल की कोशिश. यदि आप संकलन और इस कार्यक्रम को चलाने के लिए, यह काम करता है?
सं >> यह क्या कह रहा है?
इसे कहते हैं, नियंत्रण गैर शून्य समारोह के अंत तक पहुँचता है.
हाँ, तो मुझे इसे चलाने की कोशिश करें.
क्या आप लोग इस से पहले देखा है? क्या आप जानते हैं कि यह क्या मतलब है?
ठीक है, चलो यह एक छोटा सा काटना.
यह file.c में 9 लाइन पर कह रहा है, स्तंभ 1 हम एक त्रुटि है, जैसे तुम ने कहा,
और यह कहते हैं कि यह त्रुटि चेतावनी और रिटर्न प्रकार चेतावनी से stemming है.
ऐसा लगता है जैसे कुछ पर रिटर्न प्रकार है, जो समझ में आता है के साथ जा रहा है.
हम एक गैर शून्य समारोह मिल गया है, जिसका अर्थ है कि हम एक समारोह मिल गया है
उस शून्य को वापस नहीं करता है.
एक शून्य समारोह एक है कि इस तरह दिखता है:
शून्य foo (), और यह शून्य है क्योंकि रिटर्न प्रकार शून्य है,
जिसका मतलब है कि अगर हम यहाँ में कुछ था
1 वापसी की तरह, हम इस बात के लिए एक संकलक त्रुटि मिलता था.
हालांकि, हम एक गैर शून्य समारोह है.
इस मामले में हमारे गैर शून्य समारोह हमारे खोज समारोह है
क्योंकि यह bool का एक रिटर्न प्रकार है.
जब यह कह रहा है कि नियंत्रण एक गैर शून्य समारोह के अंत तक पहुँचता है
यह इसलिए है क्योंकि खोज एक वापसी बयान नहीं है.
यह bool प्रकार के कुछ भी नहीं लौट रहा है.
>> हम जानते हैं कि ठीक कर सकते हैं, और तुम लोग क्या सोचते हैं
खोज डिफ़ॉल्ट रूप से वापस आ जाना चाहिए?
खोज के डिफ़ॉल्ट मान क्या होना चाहिए?
क्योंकि है कि क्या हम अंत में डाल सकते हैं.
Charlotte, आप किसी भी?
यह सही है या गलत? >> यह सही है या गलत है.
कौन सा?
झूठी. मुझे नहीं मालूम.
गलत? चलो इसे करने की कोशिश.
आप वापसी झूठी क्यों कहेंगे? वह महान अंतर्ज्ञान है.
[Charlotte] मुझे नहीं मालूम.
हम इस मामले में झूठी वापस जा रहे हैं क्योंकि यह हमारे डिफ़ॉल्ट होगा
अगर किसी कारण के लिए सूची खाली या सुई
कि हम मौजूद नहीं है के लिए देख रहे हैं.
तो बहुत अंत में, अगर हम सच्चे पहले इस समारोह में वापस नहीं करते हैं,
हम हमेशा से जानते हैं कि इस समारोह कहेंगे नहीं, यह सरणी में नहीं है.
यह घास के ढेर में नहीं है.
अब अगर हम संकलन और इसे चलाने मुझे बचाने के लिए तो हम इसे खींच कर सकते हैं.
अब अगर हम संकलन और हमारे कार्यक्रम चलाते हैं, यह बनाता है.
हम अपने छोटे से संकेत मिलता है.
अगर मैं मारा 4-उह, ओह.
यह बाहर कुछ भी मुद्रित नहीं किया. ऐसा लगता है कि सब कुछ ठीक समाप्त हो गया.
हम इस भरने के अंदर करने के लिए मिल गया है
हम pseudocode में एल्गोरिथ्म के बारे में थोड़ा पहले बात की थी.
मुझे देखने दो, इसे बचाने के लिए,
और मुझे लगता है कि एल्गोरिथ्म वापस खींचने के ऊपर फिर से हूँ.
चलो इस आदमी मारा. नहीं.
वहाँ यह है.
हम यह कैसे करते हो?
इस कोड से शुरू करने के लिए एक अच्छी रणनीति क्या होगा?
आप बीच में एक नंबर लेने है.
हम कैसे एक सरणी के बीच में एक नंबर लेने?
कोई सुझाव?
Strlen [छात्र] 2 से विभाजित.
Strlen 2 से विभाजित. यह एक महान एक है.
Strlen arrays के विशेष प्रकार के साथ काम करता है.
Arrays के किस प्रकार?
स्ट्रिंग arrays, चरित्र arrays.
यह अवधारणा की है कि एक ही तरह की है कि हम पर लागू करना चाहते हैं,
लेकिन हम strlen उपयोग नहीं है क्योंकि हम वर्णों की एक सरणी नहीं कर सकता है.
हम ints की एक सरणी है.
लेकिन strlen हमारे लिए क्या मिलता है?
क्या आप जानते हैं कि यह हमारे लिए क्या हो जाता है?
Strlen [] छात्र हमें लंबाई हो जाता है.
वास्तव में, यह हमें लंबाई हो जाता है.
Strlen हमारे लिए सरणी की लंबाई हो जाता है.
>> हम हमारे द्विआधारी खोज कार्यक्रम में कैसे मिलता है?
आप एक सरणी की लंबाई कैसे मिलेगा?
[छात्र] strlen?
आप strlen के साथ एक ठीक से प्रारूपित सी स्ट्रिंग सरणी की लंबाई प्राप्त कर सकते हैं.
समस्या है, हालांकि, कि हम एक स्ट्रिंग सरणी नहीं है.
यदि हम इस कोड पर वापस देखो, हम इस पूर्णांक सरणी है.
हमें कैसे पता चलेगा कितना समय है?
[छात्र] वहाँ endpoint के लिए एक बराबर int एल या कुछ और की तरह, एक है?
यह वहाँ बाहर वास्तव में नहीं है बदल जाता है, और इसलिए एक तरह से, यह है
उन चीजें हैं जो सिर्फ सी के बारे में पता करने के लिए अच्छा है,
कि वहाँ एक सरणी की लंबाई पाने के लिए कोई रास्ता है
अगर मैं तुम्हें दे सरणी है.
कारण यह तार के साथ काम करता है, strlen काम करता है कारण,
अगर एक स्ट्रिंग ठीक से स्वरूपित है, क्योंकि
यह बहुत अंत में है कि विशेष \ 0 चरित्र होगा.
>> तुम भी कल्पना कर सकते हैं अगर आप एक अनुचित स्वरूपित स्ट्रिंग
और वहाँ कोई \ 0 चरित्र वहाँ है, तो पूरी बात नहीं काम करता है.
[छात्र] आप \ 0 जोड़ सकते हैं?
हम इस मामले में हो सकता है.
हम \ 0 के कुछ प्रकार जोड़ सकता
या चरित्र वाचक और तब के कुछ प्रकार का उपयोग करें.
लेकिन यह है कि काम करने के लिए काफी नहीं जा रहा है
क्योंकि \ 0 चार प्रकार के लिए है,
और यहाँ हम ints मिल गया है.
दूसरी बात यह है कि अगर हम एक विशेष मूल्य का उपयोग करने के लिए गए थे
-1 की तरह एक सरणी के अंत के निशान
तो हम एक -1 हमारे पूर्णांक arrays में कभी नहीं की दुकान सकता है.
हम अटक होगी.
यह पता चला है कि लंबाई प्राप्त करने के लिए एक ही रास्ता
सी में एक सरणी के लिए वास्तव में यह याद है
जब आप इसे सेट अप और फिर इसे सरणी के साथ चारों ओर से गुजारें
इतना है कि जब भी मैं एक समारोह में कहा कि कुछ काम करने के लिए जा रहा है
integers या मंगाई की एक सरणी पर या युगल या तुम क्या है,
मैं भी समारोह सरणी लंबाई देने की जरूरत है,
और कहा कि वास्तव में हम क्या यहाँ खोज समारोह में किया है.
अगर तुम देखो, क्या हम जब हम हमारे यहाँ सरणी में से गुजारें किया है,
हम भी लंबाई, आकार में पारित.
यह सिर्फ यह होता है कि हम इस चर यहाँ बुलाया है,
इस पैरामीटर या तर्क.
यह एक समारोह तर्क सूची या पैरामीटर सूची कहा जाता है,
और ये भी तर्क या पैरामीटर कहा जाता है.
लोग अलग अलग समय पर विभिन्न पदों का उपयोग करें.
मैं कभी कभी उन्हें खुद विनिमय.
यह सिर्फ इतना होता है कि यह यहाँ चर इसी नाम है
# यहाँ परिभाषित करते हैं.
लेकिन वे एक ही बात नहीं कर रहे हैं.
पूंजीकरण बात करता है.
>> यदि आप यहाँ क्या होता है पर देखो, हम घोषणा
हमारे int सरणी, जो हम संख्या बुलाया है.
हम यह हमारे आकार दिया है, जो हमारे शीर्ष पर # को परिभाषित करने के लिए मेल खाती है.
यह 8 होने जा रहा है.
और फिर जब हम तो नीचे हमारे खोज समारोह कॉल नीचे,
हम संख्या में गुजरती हैं हम के लिए खोज करने के लिए करना चाहते हैं, जो हम लिए कहा जाए है,
उपयोगकर्ता से मिल गया है.
हम सरणी में पारित, इस संख्या,
और फिर हम भी सरणी के आकार में पारित करने के लिए है,
और फिर 8 आकार का मूल्य जमा हो जाता है
या इस पूर्णांक चर बुलाया आकार को पारित कर दिया.
हम सरणी के आकार की है.
अब अगर हम क्या हम पहले के बारे में बात कर रहे थे करने के लिए वापस जाओ,
मुझे लगता है कि Missy मुद्दा यह है कि हम क्या करने की जरूरत है सरणी की लंबाई मिल रहा है लाया
और यह 2 से विभाजित है, और है कि हमें midpoint दे देंगे.
चलो देखते हैं.
मैं किसी को इस लिखने और उनके अंतरिक्ष में बचाने कर सकते हैं?
लीला के बारे में कैसे?
मैं तुम्हें इस में लिखने के लिए कर सकते हैं?
पहली पंक्ति लिखें जहाँ आप सरणी की लंबाई ले और midpoint
और यह एक नया चर में संग्रहीत हैं.
मैं तुम्हें कुछ सेकंड दे देंगे. क्या आप तैयार हैं?
[छात्र अश्राव्य]
बेशक, मैं आप midpoint सकता है की गणना है
सूखी घास का ढेर सरणी की खोज समारोह के अंदर
टेबल सरणी की लंबाई का उपयोग, जो आकार चर रहा है?
मुश्किल कुछ भी नहीं है यहाँ.
लीला [] बस / 2 आकार और बस
और इसे बचाने के लिए, और सहेजें बटन शीर्ष पर मारा,
और हम इसे खींच देंगे.
बिल्कुल सही.
हम वहाँ जाते हैं. बहुत बढ़िया.
>> के रूप में है, यह संकलन होगा?
[लीला] नहीं, यह अधिक होने की जरूरत है.
[नैट] हाँ, तो हम क्या करने की आवश्यकता है?
[लीला] int midpoint या कुछ और की तरह.
बहुत बढ़िया. हाँ, चलो करना है कि, मध्य int आकार =.
इस संकलन होगा?
चलो इस टिप्पणी को हटाना और यह रास्ते से हट जाओ.
क्या इस बारे में संकलन नहीं होगा?
हम पूर्णांक के साथ कुछ भी नहीं कर रहे हैं,
तो हम इसे या कुछ की तरह है कि प्रिंट की जरूरत है.
हाँ, बिल्कुल.
हम एक अप्रयुक्त चर मिलेगा.
और क्या इस बारे में काम करने के लिए नहीं जा रहा है?
मुझे लगता है कि आप कुछ कहा, सैम. अर्धविरामों.
हाँ, मैं उन अर्धविरामों याद आ रही है.
यह कार्यकाल के दौरान के दौरान एक निरंतर बात होने जा रहा है.
अंतिम बात मैं क्या हूँ मैं दोनों तरफ कुछ सफेद स्थान डाल देता हूँ
यहाँ इस ऑपरेटर के बाद से है कि आम तौर पर हम इसे कैसे करते
हमारे शैली गाइड के अनुसार.
हम हमारे सरणी के midpoint मिल गया है.
अब अगर हम अपने एल्गोरिथ्म वापस याद
दूसरा कदम है कि हम ऐसा करने के लिए एक बार हम midpoint था क्या था?
[छात्र] यदि यह अधिक से अधिक है [अश्राव्य]
हाँ, तो हम तुलना के कुछ प्रकार करना है, और हम यहाँ क्या तुलना कर रहे हैं?
तुमने कहा था कि अगर यह से अधिक होता है. यह कि वाक्य में जिक्र करने के लिए क्या है?
संख्या है कि ऊपर आता है, कि अगर midpoint से अधिक है, तो सरणी के लिए ऊपर जाना है?
वास्तव में, तो संख्या है कि ऊपर आता है जब हम
सुई, तो हम सुई के लिए तुलना कर रहे हैं,
और हम क्या सुई के खिलाफ तुलना कर रहे हैं?
क्योंकि सुई है कि हम क्या देख रहे हैं.
हम यह तुलना कर रहे हैं midpoint के लिए मिलता है.
>> लेकिन यह समझ पड़ता है देखने के लिए जाँच
अगर सुई = midpoint?
क्या इसका यह मतलब है?
क्या किसी को भी असहमत हैं?
चलो यह एक कोशिश दे, अगर (सुई == मध्य).
[छात्र] printf क्या आप यह पाया.
[नैट] printf ("हम यह पाया \ n!");
अन्यथा - मैं यहाँ कुछ अलग कर रही शुरू करने के लिए जा रहा है.
मैं हर समय के आसपास बयान अगर ब्रेसिज़ डाल शुरू करने के लिए जा रहा हूँ
सिर्फ इसलिए कि अगर हम और अधिक सामान है, तो जोड़ने
हम compilers नहीं मिलता है.
हाँ, सैम. तुम एक मुद्दा मिल गया है.
समस्या यह है कि midpoint सरणी में एक स्थिति का प्रतिनिधित्व करता है,
लेकिन आप यह सरणी की है कि स्थिति में मूल्य का प्रतिनिधित्व करने के लिए मिल सकता है.
यह एक बड़ा मुद्दा है.
क्या सबको सुना सैम ने क्या कहा?
उन्होंने कहा कि midpoint के रूप में है
सरणी में सिर्फ एक स्थिति का प्रतिनिधित्व करता है, लेकिन यह सरणी में वास्तविक तत्व नहीं है.
यदि आप के रूप में लिखा कोड के बारे में सही लगता है कि अब,
अगर हम इस सरणी में यहाँ नीचे देखो, जो उस में 8 तत्व है,
midpoint इस समारोह में होने जा रहा है का मूल्य क्या है?
[छात्र] 4.
[नैट] 4.
यदि हम संख्या 4 के लिए देखो -
और हम सिर्फ इस कोड को चलाने कर सकते हैं और यहाँ एक थोड़ा उदास चेहरे डाल
क्योंकि हम यह अगर हम इस कोड को चलाने नहीं मिला
के रूप में अब ठीक है, इसे अपलोड, इमारत, मुझे नीचे स्क्रॉल,
और अगर हम संख्या 4 के लिए देखो,
हम यह पाया है, लेकिन हम इस printf हाँ के लिए नहीं मिला.
एक कारण यह है कि हम सही वापस नहीं किया था,
लेकिन हम वास्तव में संख्या 4?
और सैम कोई कह रहा है.
हम क्या मिला?
हम वास्तव में midpoint की है, जो अगर हम सरणी में यहाँ नीचे देखो पाया,
यह तत्व हो सूचकांक में 4 जा रहा है कि हम देख रहे हैं,
जो 23 है.
>> हम वास्तव में कैसे मध्य में उस तत्व प्राप्त
और सिर्फ midpoint ही नहीं है?
[छात्र] हम चार या कुछ दर्ज होगा?
क्या है कि बस से बाहर जिज्ञासा का क्या होगा?
आप एक छोटे से अधिक विस्तृत कर सकते हैं?
आप संख्या में स्थिति को बदलने के लिए है,
तो आप करना है कुछ कनेक्शन - मुझे लगता है कि यह चार है, लेकिन यह नहीं हो सकता.
हाँ, यह एक अच्छी बात है.
हम घर का काम, इन अक्षरों में किया गया है इस परिवर्तित पदों की एक बहुत कुछ कर रही है,
पहले दो समस्या सेट में.
यह पता चला है कि यहाँ है, यह लगभग समान है
एक स्ट्रिंग के भीतर ith चरित्र तक पहुँचने, कि अगर समझ में आता है.
यहाँ हम midpoint तत्व का उपयोग करना चाहते हैं.
हम कि कैसे करते हो?
केविन, तुम हम कैसे कर सकता है कि किसी भी सुझाव है?
आप टेबल कर सकता है, खुले वर्ग, मध्य, ब्रैकेट बंद कर दिया.
आप हमारे लिए लिख सकते हैं?
इसे यहाँ में सहेजें, और हम है कि ऊपर खींच लेंगे.
हम इस लाइन 9 पर देख रहे हैं,
और हम को साकार कर रहे हैं कि हम midpoint सुई की तुलना नहीं करना चाहती,
लेकिन इसके बजाय, हम करने के लिए सुई की तुलना करना चाहते हैं
हमारे टेबल सरणी के भीतर स्थिति मध्य में तत्व.
कूल.
हम वहाँ जाते हैं.
हाँ, यह बहुत अच्छा लग रहा है, अगर (सुई == टेबल [मध्य]).
हमने यह पाया.
अब अगर हम एक छोटा सा कोड we'll वापस ऊपर चलाने
यह compiles और चलाता है, अब अगर हम 4 के लिए देखो,
हम यह नहीं मिल रहा है क्योंकि अब हम वास्तव में संख्या 23 हो रही है.
हम मूल्य 23 हो रही है, और है कि हम क्या हमारे सुई तुलना कर रहे हैं.
लेकिन यह अच्छी बात है. यह सही दिशा में एक कदम है.
>> यही कारण है कि हम क्या करने की कोशिश कर रहे हैं.
हम सरणी में पदों के खिलाफ सुई की तुलना नहीं की कोशिश कर रहे हैं
बल्कि सरणी में वास्तविक तत्वों के खिलाफ.
अगर हम वापस फिर हमारे एल्गोरिथ्म में अगले कदम पर अब देखो
अगला कदम क्या है?
लीला पहले से ही इसे संक्षेप में उल्लेख किया है.
[छात्र] देखने के लिए अगर यह अधिक से अधिक या कम से कम है और फिर जो रास्ता तय स्थानांतरित करने के लिए जाँच करें.
[नैट] हाँ, तो हम कैसे है कि क्या करना होगा?
आप कुछ - मैं में डाल सकते हैं इस संशोधन को बचाने के लिए,
और फिर अगर आप कुछ लाइनों है कि कि क्या करेंगे में डाल दिया.
हाँ, Charlotte >> मैं एक सवाल है.
Midpoint नहीं होना चाहिए - 1 क्योंकि पहली बात है
यह अनुक्रमित 0 है, इसलिए यदि हम 4 डाल दिया है, कि वास्तव में चरित्र के लिए हम देख रहे हैं नहीं है?
हाँ, और अन्य के साथ समस्या यह है
कि एक महान पकड़ है, क्योंकि अंत संभवतः हो रहा जा रहा है
अगर हम चलते रहते हैं और हम कभी नहीं शुरू समायोजित?
मुझे लगता है कि क्या हम अंत कर सकता का उपयोग करने की कोशिश कर रहा है
तत्व सरणी के 8 स्थान पर,
जो इस मामले में मौजूद नहीं है.
हम इस तथ्य के लिए लेखांकन के कुछ प्रकार करना चाहते हो जाएगा
कि हम कुछ शून्य अनुक्रमण है.
[Charlotte] क्षमा करें, मैं midpoint मतलब वर्ग कोष्ठक में 1.
हम जानते हैं कि क्या कर सकते हैं.
हम इस मुद्दे पर सिर्फ एक बिट में वापस आया हूँ.
एक बार जब हम वास्तविक पाशन करने के लिए शुरू,
है कि जब हम वास्तव में देखने के लिए इस खेलने में आते हैं.
कुछ समय के लिए, हम यह करते हैं, कर सकते हैं लेकिन आप पूरी तरह से सही हैं.
यह शून्य अनुक्रमण एक प्रभाव है कि हम करने के लिए खाते की जरूरत है.
चलो देखते हैं.
>> कैसे अधिक से अधिक और कम से कम है?
[छात्र] मैं कैसे अधिक से अधिक और हिस्से की तुलना में कम करने के लिए मिलता है.
मैं सिर्फ यकीन है कि अगर आपको लगता है कि यह टेबल midpoint से कम या से अधिक होता है मुद्रित करने के लिए नहीं था.
यहाँ मैं क्या बचा सकता है 've -
[नैट] हाँ, अगर तुम बचाने के लिए तुम्हारे पास क्या है, और हम इसे खींच लेंगे.
हम वहाँ जाते हैं.
[छात्र] और मैं मैं क्या नहीं पता था के लिए प्रश्न चिह्न के डाल दिया.
[नैट] यह बहुत अच्छा लग रहा है.
यहाँ हम सवाल के निशान मिल गया है क्योंकि हम अभी भी पता नहीं
क्या हम अभी तक करने के लिए जा रहे हैं.
हम क्या करते हैं उफ़, हम कुछ हम पर सभी कायरता ब्रेसिज़ मिला है चाहते हो जाएगा.
हम इन ब्रेसिज़ सही हूँ.
हम वहाँ जाते हैं.
और इसलिए हम क्या करना चाहते हैं कि हमारे एल्गोरिथ्म के अनुसार,
अगर हम सुई नहीं मिल रहा है?
मामले में कहना है कि सुई हम क्या देख रहे हैं की तुलना में कम है. केविन.
केवल बाईं आधा देखो.
ठीक है, तो हम यहाँ में एक टिप्पणी है कि कहते हैं डाल देता हूँ "बाईं आधा में देखो."
और अगर सुई मध्य में टेबल की तुलना में अधिक है, हम क्या करना चाहते हो?
[छात्र] तो फिर आप सही आधा देखो.
सही आधा देखो, "सही आधा पर दिखेगा."
नहीं भी जर्जर है.
ठीक है, तो इस बिंदु पर, बातें बहुत अच्छा देख रहे हैं.
कोड के रूप में लिखा है के साथ समस्या क्या है?
[छात्र] आप endpoints halves के लिए नहीं है.
ठीक है, हम endpoints halves के लिए नहीं है.
हम भी केवल इस बार के माध्यम से जाने के लिए जा रहे हैं.
हम केवल एक मध्य में लग जा रहे हैं.
या तो तत्व वहाँ है, या यह नहीं है.
आदेश में यह पूरा करने के लिए, हम पुनरावृत्ति के कुछ प्रकार की आवश्यकता होगी.
हम दोहरा जब तक हम पाते हैं रखने की जरूरत है कि
या तो तत्व वहाँ में है क्योंकि हम नीचे संकुचित है और अंत में इसे पाया,
या यह वहाँ नहीं है क्योंकि हम चीजों की सभी के माध्यम से देखा है
सरणी के उचित हिस्सों में और पाया कि वहाँ में कुछ भी नहीं है.
>> जब भी हम इस पुनरावृत्ति मिला है पर जा रहा है, हम क्या उपयोग करने के लिए जा रहे हैं?
[छात्र] एक पाश.
लूप के कुछ प्रकार की. हां.
[छात्र] हम करते हैं, जबकि एक पाश करते हैं और कर सकते हैं यह है कि और फिर जब
सुई यकीन है कि जहां मैं उस के साथ जा रहा था बराबर नहीं है - मैं नहीं करता है.
लेकिन तरह तरह की है कि लंबे समय के रूप के रूप में यह बराबर है कि उपयोगकर्ता इनपुट मूल्य नहीं है.
हाँ, तो चलो देखते हैं, यह अपने आप कैसे लिख सकता है?
तुमने कहा था कि चलो करते हैं, जबकि एक पाश का उपयोग करें.
कहाँ शुरू करता है?
[छात्र] / 2 आकार के बाद ही सही.
[नैट] ठीक है, और हम क्या करने जा रहे हैं?
हम समय में बाद में भर देंगे.
हम क्या करने जा रहे हैं?
[छात्र] क्या हम सब सामान करना चाहते हैं हम भाग अगर में नहीं है?
[नैट] क्या यह सब सामान, महान.
कॉपी और पेस्ट.
ओह, यार.
चलो देखते हैं अगर यह काम करता है, अगर हम कर सकते हैं इस पर टैब.
सुंदर.
ठीक है, और हम इस को बचाने के लिए तो तुम लोग यह है.
सब ठीक है, और हम ऐसा करने जा रहे हैं जबकि
जबकि हालत आप के बाद किया गया था?
[छात्र] जबकि सुई बराबर नहीं है, तो विस्मयादिबोधक बिंदु की तरह.
लेकिन मुझे यकीन है कि वास्तव में क्या है कि अभी तक नहीं कर रहा हूँ.
[नैट] हाँ, यह एक तरीका यह करना है.
सैम, आप एक टिप्पणी है?
[सैम] मुझे याद है जब मैं वीडियो में देखा,
मैं एक तरह की एक स्क्रीनशॉट ले लिया जब हम इसके लिए pseudocode किया,
अधिकतम और न्यूनतम के बीच कुछ संबंध था.
मुझे लगता है कि यह अगर अधिकतम कभी मिनट से भी कम समय है की तरह कुछ था.
समझे.
[सैम] या की तरह अगर अधिकतम मिनट या उस तरह की तुलना में कुछ कम नहीं है,
क्योंकि इसका मतलब है कि आप सब कुछ खोज की है.
>> हाँ, तो यह क्या अधिकतम और न्यूनतम करने के लिए बात कर रहे थे की तरह बात करता है?
[सैम] कि integers मान को बदलने जा रहे
जहां हम midpoint डाल रिश्तेदार.
बिल्कुल सही.
[सैम] उस बिंदु पर, यह [अश्राव्य] अधिकतम और न्यूनतम की गणना करने के लिए जा रहा है
मध्यबिंदु इस अधिकतम और न्यूनतम विचार है.
करता है कि लोगों को समझ बनाने के लिए?
, अगर हम कैसे हम इस यात्रा करने के लिए जा रहे हैं पर तलाश शुरू करने के लिए गए थे
आप पूरी तरह से सही कर रहे हैं कि हम करते हैं जबकि पाश के कुछ प्रकार का उपयोग करना चाहते हैं.
लेकिन मुझे लगता है कि अगर हम याद क्या इस सरणी के स्थान पर जा रहा है
और वास्तव में क्या हो रहा है - मैं करने के लिए लिखने जा रहा यहाँ
द्विआधारी खोज के बहुत पहली यात्रा पर, हम
मैं बी और ई का उपयोग करने के लिए शुरुआत निरूपित करने के लिए जा रहा हूँ.
और फिर हमारी सरणी के अंत.
हम जानते हैं कि यहाँ पर शुरुआत 4 सही पर है,
और हम जानते हैं कि अंत में 108 पर है.
कहते हैं कि हम 15 नंबर के लिए खोज कर रहे हैं.
पहली बार हम यह करते हैं, जैसा कि हम पहले देखा था,
midpoint या तो 16 या 23 होने जा रहा है
कैसे हम बातें की गणना के आधार पर.
के बाद से समान रूप से बीच में विभाजित हमें इस स्थान देना होगा
16 और 23 के बीच में, हम समान रूप से यह नहीं विभाजित कर सकते हैं
या यह विभाजन और एक सच्चे मध्य में मिलता है.
हम 16 में देख लेंगे.
हम एहसास होगा "अरे, 16 15> कि हम देख रहे हैं."
तो सरणी के बाईं आधा देखो
हम अंत में कर रहा हूँ discarding क्या है
इस पूरे ऊपरी भाग
और कहा, "ठीक है, अब हमारे endpoint के लिए यहाँ होने जा रहा है."
हमारे पाश के अगले चलना, अब हम इस सरणी में देख रहे हैं,
प्रभावी ढंग से इस हिस्से को खारिज कर दिया है क्योंकि अब
अगर हम midpoint ले जा रहे हैं शुरुआत और अंत के बीच अंतर हो सकता है,
हम हमारे midpoint 8 हो पाते हैं,
जो हम तो 8 का परीक्षण करने के लिए देखने के लिए जहां यह संख्या के लिए हम देख रहे हैं के संबंध में है,
15, कि 15 अधिक है,
तो हम सूची के भाग के लिए स्थानांतरित करने के लिए किया है,
जो हम जानते हैं क्योंकि हम मनुष्य हैं, और हम इसे देख सकते हैं.
हम जानते हैं कि सही भाग होने जा रहा है जहाँ हम यह पता है,
लेकिन कंप्यूटर नहीं पता नहीं है, तो क्या हम क्या करेंगे हम वास्तव में जाएगा
है इस ऊपर जाना है, और अब शुरुआत और अंत
एक ही स्थान हैं, इसलिए midpoint उस बिंदु पर सूची में केवल संख्या बन जाता है,
जो 15 है, और हम यह पाया है.
क्या है कि जहां इस पूरे अधिकतम और न्यूनतम अंकन जा रहा है पर कुछ प्रकाश डाला,
सरणी के endpoints का ट्रैक रखने के क्रम में बाहर आंकड़ा
कैसे चीजों को संकीर्ण करने के लिए नीचे?
>> क्या हुआ अगर यह 15 के बराबर नहीं थे अब क्या होगा?
क्या होगा अगर हम 15 और, बजाय के लिए देख रहे थे, यह संख्या 16 भी थे?
हम कहते हैं, "ओह, यह अधिक से अधिक है.
हम करने के लिए छोड़ दिया करने के लिए वापस जाना चाहता हूँ. "
और हम सही करने के लिए हमारे ई कदम था,
पर जो बात हम एक endpoint है कि परस्पर विरोधी होगा.
यह किसी भी अधिक तत्वों के लिए खोज करने में सक्षम नहीं होगा
क्योंकि अब हम हमारे endpoint और हमारी शुरुआत मुद्दा है,
हमारे अधिकतम और हमारे मिनट, अब फ़्लिप हैं.
हम पूरे सरणी के माध्यम से खोज. हम कुछ भी नहीं मिल सकता है.
यही तो बात है, जिस पर हम कहते हैं, "ठीक है, हम इस एल्गोरिथ्म को रोकने के लिए जा रहे हैं चाहता था.
हम कुछ भी नहीं मिला है. हम जानते हैं कि यह यहाँ नहीं है. "
यह कैसे हो रहा है?
[छात्र] कैसे ठीक कंप्यूटर अंत स्विच करता है?
अंत में शुरुआत से पहले कैसे करता है अंत?
अंत में शुरुआत से पहले समाप्त होता है
गणित है कि हम हर समय हम यह करते हैं करने के लिए जा रहे हैं की वजह से.
जिस तरह से हम स्वैप है अगर आप बहुत पहले समय पर देखो हम इस स्वैप करना
जहां हम 4 में शुरुआत और अंत है
108 में सभी तरह से नीचे और हमारे midpoint, 16 कहते हैं,
मैं करने के लिए इस रीसेट वापस करने के लिए जा रहा हूँ 15-अगर हम 15 के लिए देख रहे हैं,
हम जानते थे कि हम क्या किया है जब हम 16 की जाँच की और देखा कि यह अधिक से अधिक था
और सूची के पूरे भाग छोड़ना चाहता था,
हमने देखा है कि क्या हम करना चाहते थे इस ई कदम सही यहाँ.
प्रभावी ढंग से, ई एक midpoint से पहले करने के लिए ले जाया गया.
इसी तरह, जब हम एल्गोरिथ्म के इस चलना किया
और midpoint 8 था,
हमने पाया है कि 8 <15, इसलिए हम ख को स्थानांतरित करने के लिए चाहते थे
एक midpoint पिछले.
अब, शुरुआत और अंत दोनों एक साथ हैं 15 पर.
>> अगर हम कुछ अन्य, 15 नहीं मूल्य के लिए देखने के लिए हो गया था,
या अगर यह 15 के बजाय एक 16 किया गया था,
हमने पाया है कि हम ई midpoint से पहले एक स्थानांतरित करना चाहते हैं.
अब ई होगा वहाँ ख कम से कम रूप से फ़्लिप.
चलो हम वास्तव में कैसे अंत में इस एल्गोरिथ्म कोडिंग के माध्यम से चलते हैं.
हम जानते हैं कि हम इस midpoint गणना करना चाहते हैं.
हम यह भी जानते हैं कि हम शुरुआत है और सरणी के अंत ट्रैक करना चाहते हैं
हमारे मौजूदा सरणी के तो हम समझ सकते हैं
जहां सूची के इस बाईं आधा है और जहां सूची की सही आधा है.
हम या तो शुरू और अंत के साथ करते हैं,
या हम उन्हें न्यूनतम और अधिकतम कॉल कर सकते हैं.
मैं शुरू हो और इस बार अंत में इस्तेमाल करेंगे.
जब हम शुरू अगर, हम वापस हमारे उदाहरण में यहाँ देखो,
हमारी शुरुआत सरणी के बहुत शुरुआत में प्राकृतिक रूप में स्थापित किया गया था.
यह सूचकांक क्या था? क्या हमारे शुरू किया जाना चाहिए?
डैनियल.
[डैनियल] टेबल [0].
[नैट] हाँ, तो हम इसे सेट टेबल के बराबर [0].
समस्या है, हालांकि यह है कि यह हमें पहला तत्व की स्थिति नहीं देता.
यह हमें 1 या कि पहले की स्थिति में वास्तविक मूल्य तत्व के सूचकांक देता है.
[छात्र] कि .20 के लिए बदल जाएगा?
[नैट] क्या यह करना होगा अच्छी तरह से है, यह किसी भी परिवर्तित करना होगा नहीं.
यह करना होगा क्या है यह शुरू में एक 4 की दुकान होगी,
और फिर इसे करने के लिए शुरू के खिलाफ तुलना करने के लिए मुश्किल हो जाएगा
क्योंकि शुरू 4 के मूल्य धारण किया जाएगा,
जो हमारे सरणी की शुरुआत है,
लेकिन हम सरणी में सूचकांक को ट्रैक करना चाहते हैं
के रूप में मूल्यों के लिए विरोध किया.
हम वास्तव में ऐसा एक 0 इस्तेमाल करेंगे.
सरणी Charlotte के अंत के लिए एक छोटे से पहले ऊपर लाया.
यह वह जगह है जहां हम खाते में शून्य अनुक्रमण पर ले जाऊँगा.
>> Charlotte, सरणी के अंत क्या है?
अंत के सूचकांक क्या है?
[Charlotte] आकार - 1.
हाँ, और हम जो आकार का उपयोग करना चाहिए?
हम पूंजी आकार या छोटे आकार का उपयोग करना चाहिए?
पूंजी आकार.
इस मामले में, हम पूंजी आकार का उपयोग कर सकते हैं.
यदि हम इस समारोह पोर्टेबल होना चाहता था
और अन्य कार्यक्रमों में इस समारोह का उपयोग,
हम वास्तव में लोअरकेस आकार का उपयोग कर सकते हैं.
यह भी ठीक है.
लेकिन Charlotte पूरी तरह से सही है कि हम आकार चाहते हैं - 1.
इस बिंदु पर
[छात्र] कैसे यह है कि आप अपरकेस आकार का उपयोग कर सकते हैं?
कैसे यह है कि हम अपरकेस आकार का उपयोग कर सकते हैं?
यह पता चला है कि इन # परिभाषित करता है वास्तव में कर रहे हैं,
हुड के तहत, एक पाठ की तरह खोजने और बदलने के लिए, कि अगर समझ में आता है.
जब आप अपने कोड संकलन, preprocessing चरण
संकलक की फ़ाइल के माध्यम से चला जाता है,
और इसके लिए हर जगह है कि आप पूंजी आकार लिखा है लग रहा है,
और यह है कि पाठ सचमुच एक 8 के साथ ऐसे ही जगह.
उस अर्थ में, यह एक चर से बहुत अलग है.
यह स्मृति में किसी भी जगह नहीं ले करता है.
यह एक साधारण पाठ की जगह चाल है.
इस मामले में, हम आकार का उपयोग करने के लिए जा रहे हैं.
यहाँ से हम पुनरावृत्ति के कुछ प्रकार करना चाहते हैं,
और हम करते हैं, जबकि हमारे पाश के साथ सही रास्ते पर हैं.
हमें कुछ करना चाहते हैं जब तक एक हालत अब पकड़ नहीं करता है,
और जैसा कि हम पहले देखा था, हमने देखा है कि उस हालत
वास्तव में था कि हम अंत नहीं करना चाहती
कम से कम शुरू करते हैं.
>> यह हमारे को रोकने के शर्त है.
यदि ऐसा होता है, हम को रोकने के लिए और जैसे घोषित करना चाहते हैं "अरे, हम कुछ भी नहीं मिला है."
इसे व्यक्त करने के लिए, हम लूप के कुछ प्रकार का उपयोग करना चाहते हैं.
इस मामले में, यह है, जबकि एक पाश, पाश के लिए एक एक जबकि पाश?
हम करते हैं, जबकि एक पाश यहाँ है.
क्या आप उस दृष्टिकोण की तरह लोगों को?
क्या आपको लगता है कि हम एक अलग दृष्टिकोण की कोशिश करनी चाहिए?
केविन, किसी भी विचार?
हम एक समय पाश है क्योंकि हम अधिकतम जानते हो सकता है
वैसे भी शुरू में मिनट से अधिक होगा.
हाँ तो, वहाँ कोई initialization है कि होने की जरूरत है.
उन है, जबकि loops महान हैं जब आप कुछ इनिशियलाइज़ है
पहले तो यहाँ जबकि परीक्षण,
हम जानते हैं कि हम दोनों के शुरू और अंत reinitializing रखने के लिए नहीं जा रहे हैं
पाश के हर दौर.
हम जानते हैं कि हम उन्हें इनिशियलाइज़ चाहते हैं, तो हमारी स्थिति की जाँच करें.
इस मामले में, मैं वास्तव में एक सरल जबकि पाश के साथ जाना होगा.
यह पता चला है कि करते हैं जबकि loops काफी बार बार इस्तेमाल कर रहे हैं.
स्थानों का एक बहुत भी नहीं सिखाते हैं जबकि loops.
वे उपयोगकर्ता इनपुट से निपटने के लिए अच्छा कर रहे हैं, तो हम उनमें से एक बहुत कुछ देखा है इस प्रकार अब तक.
लेकिन सामान्य के लिए और जबकि loops एक बहुत अधिक आम हैं.
यह पता चला है कि इस शर्त के रूप में लिखा
हमें नहीं करोगे वास्तव में बहुत अच्छा है, और क्यों है?
मैं माफी चाहता हूँ, मैं अपना नाम पता नहीं है.
मैं जैरी >> माफी चाहता हूँ.
यह B-O-R-U मैं है.
ओह, ठीक है.
मैं तुम मेरी सूची में नहीं दिख रहा है.
ओह, यह है क्योंकि ओह, यह समझ में आता है.
क्या तुम क्यों इस जबकि पाश के रूप में इरादा काम नहीं हो सकता है की एक विचार है,
के रूप में इस शर्त के साथ लिखा है?
[जैरी] तुम्हारा मतलब है जैसे आप में के बाद यह सब सामान चाहते हैं?
हाँ, इतना है कि एक है.
हम जबकि पाश है, जो पूरी तरह से सच है में इस सामान के सभी डाल दिया हो सकता है.
दूसरी बात यह है कि एक छोटे से अधिक समस्याग्रस्त है, हालांकि यह है कि इस हालत के काम नहीं करता है.
[छात्र] आप इसे फ्लिप करने की जरूरत है.
ठीक है, तो इस हालत कभी सच नहीं शुरू में जिस तरह से हम इस बारे में बात हो जाएगा.
हमें कुछ करना चाहते हैं जब तक अंत <शुरू,
लेकिन हम जबकि कुछ करना चाहते हैं
≤ अंत शुरू करते हैं.
>> कि तर्क के उलट है.
मैं उन गलतियों को हर समय बनाने के दोषी हूँ.
[छात्र] यह कम से कम या बराबर होना क्यों है?
क्योंकि तुम मामला है कि हम याद करते हैं
वहाँ केवल एक तत्व जहां था, और हम नीचे थे,
और हम सिर्फ हमारे सरणी में 15 पर देख रहे थे?
और हमारी शुरुआत और हमारे अंत एक ही तत्व थे.
हमें यकीन है कि हम उस मामले को संभाल करने के लिए करना चाहते हैं.
यदि हम एक सीधे कम से कम किया है,
हम केवल 2-तत्व सरणी नीचे प्राप्त करने में सक्षम होगा.
एक बार जब हम उस अंतिम तत्व के लिए नीचे मिला है, कि अगर हमारे तत्व थे, हम यह कभी नहीं मिल चाहते हैं.
अब यहाँ से, हम वास्तव में कर सकते हैं जैसे आप कह रहे थे.
हम हमारे जबकि पाश के बीच में सही सामान plopping शुरू कर सकते हैं.
हम हमारे midpoint में खटखटाने से कर सकते हैं.
हम इन सभी बयान अगर कर सकते हैं,
उन्हें बाहर खींच है, जबकि इस लूप के
उन में खटखटाने से,
एक छोटा सा चीजों को साफ,
और मैं आगे जाना है और इस संशोधन को बचा लेंगे.
और इस बिंदु पर, हम बहुत करीब हो रहे हैं.
सैम.
मुझे लगता है कि आप भी int midpoint = आकार है - 1/2.
1/2 - यह, आकार समझे.
वहाँ कुछ और हम उस लाइन के बारे में बदलने की जरूरत है?
यह एक अच्छी पकड़ थी.
>> आकार क्या करता है? क्या हम कभी आकार बदल रहा है?
आदेश में इस तरह लाइन में रखने के लिए, हम आकार बदलने के लिए है.
हम आकार हर बार हम पाश के लिए चारों ओर जाने के बदलने के लिए है.
लेकिन याद रखना जब हम हमारे उदाहरण के माध्यम से जा रहे थे पहले सिर्फ एक छोटा सा,
और हम 4 पर शुरुआत की थी
और अंत में 108 पर पर सभी तरह?
हम midpoint की गणना कैसे किया?
हम आकार का उपयोग कर रहे थे?
या हम शुरू और बजाय अंत का उपयोग कर रहे थे?
यह अंत और शुरुआत के बीच अंतर है.
ठीक है, और वास्तव में मैं कैसे है कि लिखने चाहिए, Charlotte?
बस अंत शुरू करते हैं.
1 - तुम क्या करने की जरूरत नहीं होगी
क्योंकि 1 - अंत में शामिल किया गया है और पहले से ही से शुरू.
[नैट] महान, आप पूरी तरह से ठीक हो.
क्योंकि 1 कि - हम ऐसा करने की नहीं है 1 शामिल किया गया है
और जब हम अंत चर को प्रारंभ करने के लिए जिम्मेदार है.
>> वहाँ कुछ और मैं वाक्य रचना करने की जरूरत है इस लाइन की भावना है?
[छात्र] प्लस >> शुरू प्लस शुरू करते हैं?
अंत में [छात्र].
क्योंकि यह केवल आधी लंबाई की गणना है.
आप शुरू करने के लिए जोड़ने की जरूरत है.
[नैट] क्या यह हमारे लिए गणना चाहते हैं?
, अगर हम पाश की इस पहली यात्रा के अंत के बारे में सोचते हैं
अंत स्थिति सूचकांक 7 में होने जा रहा है.
शुरू 0 की स्थिति में है.
याद है, हम या तो के लिए देख रहे हैं
स्थिति 3 या 4 स्थिति.
यदि हम इस गणित पर देखो, यह थोड़ा और अधिक ठोस बनाने के लिए,
कुछ संख्या यहाँ रखा है, हम 0 7,,
तो 7 - 0, और फिर 2 /
पूर्णांक प्रभाग में 3 है, कि है.
तो हम फिर वापस जोड़ने की जरूरत नहीं है हमारे शुरू करते हैं?
हम इस मामले में ऐसा नहीं है.
बहुत पहली यात्रा पर, यह ठीक हो सकता है क्योंकि शुरू 0 है.
लेकिन हम प्रगति के रूप में, हम वास्तव में सभी आवश्यक बस करो
अंत / 2 शुरू करते हैं.
एक अन्य चाल यहाँ है, और कहा कि अर्थात् एक पूर्वता.
[छात्र] हम कोष्ठकों की जरूरत है?
[नैट] ठीक है, और ऐसा इसलिए है क्योंकि अगर हम इन कोष्ठकों नहीं डाल,
तो इस लाइन के बजाय व्याख्या की जाएगी
(समाप्त) के रूप में (2 / शुरू), जो हम निश्चित रूप से नहीं करना चाहती.
उन पूर्वता नियमों के लिए बाहर देखो.
[छात्र] + क्यों नहीं अंत है शुरू?
यह + क्यों अंत नहीं है शुरू?
[छात्र] यह है कि क्यों नहीं है?
यह + क्यों होगा?
मुझे लगता है कि तुम ठीक कह रहे हैं.
[छात्र] क्योंकि यह औसत है?
[नैट] + End शुरू करने के लिए है, तो आप पूरी तरह से सही हो.
वाह, मैं पूरी तरह goofed. आप ठीक कह रहे हैं.
अगर हम शून्य से कर रहे थे, हम के अंदर वापस शुरू जोड़ना चाहते हैं जाएगा
इस मामले में, तुम बहुत सही कर रहे हैं कि हम दो की औसत ले जाना चाहता हूँ,
तो हम उन्हें जोड़ने के लिए, के रूप में विरोध उन्हें घटाना चाहते हो.
[छात्र] यह भी अगर आप अंत किया काम करेगा / 2 शुरू करते हैं + शुरू करते हैं.
यह होता है अगर हम करते हैं, मैं इतना विश्वास.
>> उदाहरण के लिए, यदि हम शुरू में देख रहे थे,
और हम इसे यहां स्थानांतरित कर दिया
15.
शुरू अब 2 की स्थिति में है.
समाप्ति 7 की स्थिति में है.
अगर हम उन्हें घटाना, हम 5 मिलता है.
2 द्वारा कि फूट डालो, हम 2 मिलता है.
और फिर हम 2 में वापस जोड़ने के लिए,
और कहा कि हमें 4 की स्थिति के लिए हो जाता है,
जो यहीं है, जो midpoint की है.
[छात्र] हम लपेटकर की देखभाल की जरूरत है क्या?
क्या अर्थ में हम लपेटकर का ख्याल रखना की जरूरत नहीं है?
यदि राशि के बीच अंतर
हम इसे कैसे करते हैं पर निर्भर करता है एक भी नंबर नहीं है.
उसके बाद कंप्यूटर को जब यह 2.5 है कि क्या भ्रमित हो जाता है;
आप बाईं या निर्धारित करने के लिए है जो है midpoint सही कदम है?
समझे.
यह पता चला है कि पूर्णांक विभाजन के साथ,
हम कभी इन चल बिन्दु संख्या नहीं मिलता है.
हम दशमलव कभी नहीं मिलता है.
यह पूरी तरह से खारिज कर दिया है.
यदि आप एक कंप्यूटर दो int चर विभाजित है,
और एक 7 है, और अन्य 2 है,
आप एक परिणाम के रूप में 3.5 नहीं मिलेगा.
यह 3 मिल जाएगा.
शेष खारिज कर दिया जाएगा, तो इसे प्रभावी ढंग से गोलाई -
दौर नहीं है, लेकिन एक नहीं बल्कि एक मंजिल है, अगर तुम लोगों में है कि गणित के साथ परिचित हैं,
आप पूरी तरह से जहां दशमलव त्यागें,
और इसलिए आप अनिवार्य रूप से यह छोटा कर रहे हैं पास करने के लिए नीचे
पूरी स्थिति को निकटतम पूर्ण संख्या,.
[छात्र] लेकिन तब है कि समस्याग्रस्त है क्योंकि अगर आप 7 तत्वों की एक सरणी है
तो है कि स्वचालित रूप से 4 के बजाय मध्य के 3 तत्व बाहर ले जाता है.
हम उस के साथ सौदा करते हैं?
यह समस्याग्रस्त है, क्योंकि अगर हम 7 की एक सरणी था
यह 4 के बजाय 3 ले जाएगा.
आप एक छोटे से अधिक समझा सकता है?
[छात्र] क्योंकि अगर आप 7 तत्वों तो 4 तत्व है
midpoint हो, है ना?
शून्य अनुक्रमित किया जा रहा है के बारे में अपनी टिप्पणी को याद है, हालांकि.
[छात्र] हाँ, तो 3 की स्थिति में. कि midpoint होगा.
हाँ.
ओह, ठीक है. मैं देख रहा हूँ कि तुम क्या मतलब है.
यह अजीब तरह का है, के रूप में हम इस पूरी धारणा के लिए इस्तेमाल किया जाना
दशमलव से छुटकारा मिल रहा है.
यह एक बड़ा मुद्दा है.
चलो इस खत्म करने के लिए.
हम हमारे midpoint की गणना है.
>> हम परीक्षण कर रहे हैं देखने के लिए अगर हमारे सुई मध्यम मूल्य के बराबर है.
हम मुद्रण कर रहे हैं कि हम यह मिल गया है, लेकिन वास्तव में, हम इस स्थिति में क्या करना चाहते हैं?
हम यह पाया है, तो हम फोन करने वाले जानते हैं कि हम यह पाया.
हम एक समारोह में कहा कि एक बूलियन टाइप समारोह है मिल गया है.
जिस तरह से हम हमारे समारोह के फोन करने के लिए संकेत है कि हम जाने के लिए तैयार कर रहे हैं
हम कहते हैं कि, "अरे, यह सच है."
हम कैसे करते हैं, चाहते केविन?
तुम अपना सिर हिला रहे हैं सच >> [केविन] वापसी जोड़ें.
वास्तव [नैट], सच वापसी.
अब, अगर यह नहीं के बराबर है, कैसे हम बाईं आधे पर लग रही होगी?
किसी भी विचार?
स्टैला, किसी भी विचार?
आप अंत के लिए एक नई स्थिति को निर्धारित करने की आवश्यकता है.
हाँ.
अंत तो हम midpoint की स्थिति है.
बढ़िया है.
हम अंत के लिए एक नई स्थिति को निर्धारित करने की आवश्यकता है
बाईं आधे पर देखने.
यह था कि हम क्या जहां से पहले के बारे में बात की
मैं इस उदाहरण के लिए वापस जा रहा रखने.
मैं यहाँ शुरू किया है, और फिर मैं अंत में यहाँ पर सभी तरह है.
>> फिर, अगर हम 15 के लिए देख रहे हैं, और हमारे midpoint 16 है,
और हमें पता है, "ओह, 16 अधिक है.
हम बाईं आधा ले जाना चाहते हैं. "
हम तो 15 के लिए अंत कदम होगा,
और हम एक midpoint से दूर ले जा रही है कि
और हमारे नए अंत के रूप में है कि सेटिंग.
इसी तरह, अगर हम सही आधा पर देखना चाहता हूँ, कैसे हम कि क्या करना होगा?
क्या आप एक विचार है?
[छात्र] तुम सिर्फ सेट 1 + midpoint शुरू.
[नैट] ग्रेट.
और अब इस मामले में है कि हम कुछ भी नहीं मिल रहा है,
यह नहीं है कि हमारे लिए का ध्यान रखा मिलता है?
डैनियल, कि हमारे लिए की देखभाल ले लिया हो?
[डैनियल] नहीं
[नैट] अगर हम इसे पूरे सरणी के माध्यम से करते हैं और हम कुछ भी नहीं मिल रहा है,
कि देखभाल जहां लिया जाएगा की, या हम यह ध्यान रखना चाहिए?
[डैनियल] जबकि हालत.
[नैट] हाँ, जबकि हालत, बिल्कुल.
यह पूरे सरणी के माध्यम से जाने का ख्याल रखना अगर हम कुछ भी पता नहीं होगा.
यह जबकि पाश खत्म हो जाएगा.
हम इस हालत का सामना कभी नहीं जाएगा,
और हम झूठे लौट सकते हैं.
हम भी इस से निकलते हैं तो कर सकते हैं, इस तरह यहाँ
क्योंकि अगर यह अगर बयान सही है,
और हमारे समारोह में वापस आ जाएगी,
और इसलिए हम अनिवार्य रूप से इस बिंदु पर इस समारोह में गर्भपात
जब हम सच वापसी.
लेकिन इस संरचना के साथ क्या होता है?
यह पूरी तरह से काम करेंगे, या वहाँ में कुछ तार्किक दोष है?
>> वहाँ में कुछ तार्किक दोष है, जिस तरह से इसे स्थापित किया है के साथ है.
यह क्या हो सकता है?
[छात्र] क्यों तुम्हें क्या ज़रूरत है - और 1s?
वह हमारे सरणी सेट अप करने के लिए हमारे नए बाईं आधा और सही आधा हो.
[छात्र] लेकिन आप इसे बिना क्यों नहीं कर सकता - 1s और 1s?
[नैट] हम इसे सेट midpoint के बराबर हो सकता है?
क्या उस के बारे में समस्याग्रस्त हो सकता है?
[छात्र] मुझे लगता है कि यह अक्षम है क्योंकि आप एक मूल्य है कि पहले से ही जाँच की गई जाँच कर रहे हैं.
[नैट] वास्तव में, तो सैम पूरी तरह से सही है.
यदि आप अंत सेट और midpoint के बराबर शुरू करते हैं
के बजाय 1 और संजीदगी से 1,
भविष्य में कुछ बिंदु पर हम अंत midpoint फिर से जाँच करेंगे.
[छात्र] मैं pset शुरू कर दिया है, और फिर मैं ऐसा कुछ था
मैं + 1 जहां भूल गया, और यह एक अनंत लूप में फंस गया था.
ठीक है, क्योंकि कुछ बिंदु पर आप के शुरू और अंत कभी नहीं जा रहे हैं
वास्तव में ओवरलैप.
कूल.
एक अधिक तार्किक दोष है, और वह यह है कि यह निश्चित रूप से होना चाहिए
एक और अगर.
ऐसा क्यों हो सकता है?
>> कारण यह है कि अगर यह एक और अगर आप इसे, केविन देख नहीं है?
[केविन] हाँ, क्योंकि आप अंत बिंदु बदल रहे हैं.
[नैट] बिल्कुल सही.
हम endpoint बदल रहे हैं,
और अगर यह इस we'll तरह लिखा है के बीच रिक्त स्थान बनाने
यह इस मामले की जाँच करेगा.
इस मामले में, अगर यह सफल होता है, समारोह के गर्भपात से बाहर होगी.
तो यह इस मामले की जांच करेंगे,
और अगर यह सफल होता है, यह endpoint समायोजित करेगा,
और फिर इसे जारी रखने के लिए और इस मामले की जांच करेंगे.
लेकिन इस बिंदु पर, हम यह जाँच जारी रखने के लिए नहीं करना चाहती.
सौभाग्य से, हम यहाँ midpoint पुनर्स्थापित नहीं किया है,
और हम जानते हैं कि इस मामले में सफल नहीं होगा.
लेकिन हम निश्चित रूप से किसी और डाल करना चाहते हैं, अगर वहाँ में
भले ही इस मामले में हो सकता है कि
के बाद से हम midpoint समायोजन नहीं कर रहे हैं, कि एक फर्क होता है?
नहीं, क्योंकि इन सभी मामलों विशेष कर रहे हैं.
फिर, मेरा बुरा.
हम मुझे लगता है, यह किसी और की जरूरत नहीं है.
हम इसे एक कोशिश करते हैं और इसे चलाने के लिए दे सकते हैं और देखो क्या होता है.
भवन, एक त्रुटि हुई.
यह शायद इसलिए क्योंकि मैं यहाँ में इन ख और ई छोड़ दिया.
मैं शीर्ष पर उन के किसी भी अधिक है?
यह पसंद नहीं लगती है.
हम बाहर ज़ूम, निर्माण,
वहाँ यह हो जाता है, तो अब अगर हम 15 के लिए खोज करने के लिए,
हां.
मुझे अंदर ज़ूम
15, हाँ. हम इसे फिर से चला सकते हैं.
स्रोत कोड अपलोड, निर्माण, चल रहा है.
हम कुछ करने के लिए 13 तरह की खोज कर सकते हैं,
और हम मुद्रण बाहर कुछ भी नहीं मिलता है, तो यह नहीं लग रहा है कि हमारे लिए.
यह बहुत अच्छी बात है, क्योंकि यह हमारी सूची में नहीं है.
>> हम समय से बाहर अब कर रहे हैं.
कि यह हो सकता है इस सप्ताह के लिए जा रहा है.
शामिल होने, और बाद में मिलेंगे के लिए धन्यवाद.
>> [CS50.TV]