जेसन Hirschhorn: आपका स्वागत है सप्ताह में तीन को, सब लोग. हम एक व्यस्त लेकिन रोमांचक है हमें आगे की धारा. तो सबसे पहले, हम कुछ कर दिया है क्योंकि कोर्स के साथ प्रगति, लेकिन हम अभी भी सीखने का एक बहुत मैं कर रहा हूँ, ऐसा करने के लिए छोड़ दिया है तुम लोगों को कुछ संसाधनों को दिखाने के लिए जा रहा वह अविश्वसनीय रूप से साबित करना चाहिए आप के पास न केवल सहायक के रूप में अपनी समस्या सेट, लेकिन यह भी सभी के पचाने हम आप में लोगों को दे सामग्री व्याख्यान और शॉर्ट्स और अनुभाग. तो फिर हम पहले 20 खर्च करने के लिए जा रहे हैं खंड पर जा रहा है की 25 मिनट तक आप या नहीं हो सकता है जो GDB, इस बिंदु पर इस्तेमाल किया है, लेकिन यह एक है अविश्वसनीय रूप से उपयोगी उपकरण है कि करेगा आप अपने कार्यक्रमों डिबग मदद. आप में से एक बहुत में printf का उपयोग किया हो लगाने के लिए अपने कार्यक्रम के बीच एक चर बराबरी क्या बाहर. GDB भी printf से बेहतर और है अपने कोड पेंच नहीं है क्योंकि आप एक निष्पादन योग्य फ़ाइल पर चला रहे हैं. इसलिए हम 10 सबसे उपयोगी पर जायेंगे आप GDB के लिए आवश्यकता आज्ञा देता है, और हम कर रहे हैं एक साथ इतनी एक व्यायाम पर जाने के लिए जा समस्या में आप, तीन और परे सेट डिबग मदद करने के लिए GDB का उपयोग कर सकते हैं अपने कार्यक्रमों. और अंत में, हम कुछ खत्म हो जाने के लिए जा रहे हैं एल्गोरिदम छँटाई और खोज आप व्याख्यान में देखा, और हम हैं कि वास्तव में कोड नहीं है, बस के लिए जा रहा pseudocode, लेकिन कोड द्विआधारी खोज, बुलबुला तरह, और चयन के आधार पर क्रमबद्ध. तो सबसे पहले, मैं जाना चाहता हूँ संसाधनों पर. यह एक व्यापक सूची है, और यह बात है मैं करने के लिए एक बहुत कुछ था क्योंकि छोटे फ़ॉन्ट यहाँ पर फिट बैठते हैं. लेकिन इन, आप मदद करेंगे न केवल फिर, समस्या सेट के साथ और आप सीखा पचाने जानकारी है, लेकिन निश्चित रूप से, प्रश्नोत्तरी समय, इन जाएगा आ अविश्वसनीय रूप से सहायक हो. तो सबसे पहले, व्याख्यान नोटों. आप cs50.net/lectures के लिए जाना है और अगर विशिष्ट सप्ताह और दिन के लिए स्क्रॉल आप प्रत्येक के लिए नोट कर रहे हैं कि देख लेंगे बस नहीं है जो, व्याख्यान एक प्रतिलेख, लेकिन की एक संपादित संस्करण कोड के साथ व्याख्यान में कवर किया गया था क्या टुकड़े और अन्य उपयोगी जानकारियों. मैं अत्यधिक उन पर जाने की सिफारिश. और फिर, साथ ही स्रोत कोड नहीं है प्रत्येक व्याख्यान से उपलब्ध. और फिर, इन स्लाइड्स भी होगी cs50.net/sections पर ऑनलाइन उपलब्ध इस शाम. तो दूसरी शॉर्ट्स प्रत्येक सप्ताह कर रहे हैं कि विषयों को कवर, आमतौर पर 5 से 15 लंबाई में मिनट. और उन उम्मीद है कि आप एक दे देंगे विभिन्न विषयों पर महान प्राइमर. तीसरा - और इस ब्रांड के नए यह है साल - study.cs50.net है. आप इसे बाहर की जाँच नहीं की है, तो मैं अत्यधिक यदि आप ऐसा करने की सलाह देते हैं. आप एक विषय लेने के लिए मिलता है. हम वहाँ पर विषयों के दर्जनों है. तो उदाहरण के लिए, यदि आप कार्य लेने. यह आपको कुछ स्लाइड्स देता है और कार्यों पर नोटों. जो लोग वास्तव में स्लाइड्स हैं कि TFS के दौरान उपयोग करने के लिए प्रोत्साहित कर रहे हैं हमारे अनुभाग में प्रस्तुतियों. निपटने के लिए सुझाव और ट्रिक भी है काम करता है, और वहाँ के साथ मदद कि अभ्यास के लिए समस्या आप कार्यों के साथ काम करते हैं. हम भी कम पर करने के लिए आप लिंक दे कार्यों और बार है कि कार्यों व्याख्यान में आए हैं. यह तो study.cs50.net, नए ब्रांड वर्ष, एक बढ़िया स्रोत. अगला, मैं मैनुअल है जो आदमी है, तुम पर चला सकते हैं कि आदेश कमांड लाइन. तो आप एक के बारे में कोई प्रश्न हैं आदेश, उदाहरण के लिए, रैंड, जो हम खंड के दौरान पिछले सप्ताह का सामना करना पड़ा और आप की संभावना का सामना करना पड़ा है के माध्यम से जा रहा है, जब अपनी समस्या के सेट कोड उत्पन्न, लेकिन तुम आदमी लिखते हैं रैंड, आप पेज मिलेगा रैंड के बारे में आप सब बताता है. यह क्या यह लेता है तुम्हें देता है यह लेता मापदंडों, साथ ही वापसी प्रकार और एक संक्षिप्त विवरण उस समारोह का. तो रैंड की जाँच करें. यह एक छोटे से wordy और भ्रमित किया जा सकता है तो कभी कभी मुझे लगता है कि लगता है बस मैं जानना चाहता हूँ क्या है Googling जवाब खोजने के लिए सबसे अच्छा तरीका है. तो गूगल के साथ अभ्यास करेंगे. गूगल पर अच्छा मिलता है. यह अपने सबसे अच्छे दोस्त हो जाएगा. साथ ही गूगल, आप यह नहीं मिल सकता है गूगल पर, cs50.net/discuss, यह है चर्चा मंच. आप में एक सवाल है संभावना है, अगर एक हैं अपने 700 + साथियों की भी है कि सवाल पूछा हो सकता है यह पहले से ही चर्चा में मंचों और यह जवाब दिया है. तो आप एक आम सवाल है या अगर क्या आप को लगता है कि एक सवाल है शायद अन्य लोगों में चला गया हो सकता है, cs50.net/discuss की जाँच करें. अंत में, पिछले दो, अगर तुम चाहते हो एक असली इंसान, कार्यालय से बात शुक्रवार के माध्यम से समय सोमवार. ऑनलाइन कार्यालय समय भी नहीं है विस्तार के छात्रों के लिए. , और पिछले लेकिन निश्चित रूप से कम से कम नहीं मुझे, विस्मयादिबोधक बिंदु. आप अपने सभी संपर्क जानकारी है. आप कुछ भी जरूरत है, कृपया कभी नहीं मुझसे संपर्क करने में संकोच करते हैं. हमेशा ऐसा करने के लिए स्वतंत्र. आप में से बहुत कुछ Gchat पर मुझे जोड़ लिया है, ताकि, निराशाजनक रहा है लेकिन उम्मीद है कि दोनों के बीच बदल देंगे इस और अगले अनुभाग. अब तक संसाधनों पर कोई सवाल? ग्रेट. अंत में, एक और प्लग के लिए प्रतिक्रिया, sayat.me/cs50. तुम मुझे गुमनाम प्रतिक्रिया दे सकते हैं मैं क्या कर रहा हूँ पर कैसे. पिछले हफ्ते कि वास्तव में मददगार थे. मैं तुम लोगों से टिप्पणी की एक जोड़ी मिल गया सही अनुभाग से, धन के बाद यह देख चुके अन्य छात्रों सप्ताह के दौरान, और यह अविश्वसनीय रूप से उपयोगी था. मैं कोशिश करते हैं और अपने उपयोग की सीमा जा रहा हूँ शब्द "मिठाई" लेकिन मैं दिखाएगा मेरे उत्साह और उत्तेजना अन्य तरीकों से. लेकिन अन्य अतिरिक्त वहाँ थे मूल feedbacks, pluses और डेल्टा दोनों. तो, मैं तुम लोगों से प्रतिक्रिया दे कृपया आपकी समस्या सेट पर. मुझे प्रतिक्रिया देने के लिए स्वतंत्र महसूस मेरे शिक्षण पर. मैं आप लोगों के लिए यहाँ हूँ. ग्रेट. मैं उसी के लिए है सब है प्रथम खंड. किसी को भी किसी भी है सवाल अब तक? और मैं के लिए एक नोट है नियंत्रण केंद्र. एक्सटेंशन छात्रों मुझे संदेश भेजा है वे किसी भी ऑडियो नहीं मिल रहे हैं, कह रही है लेकिन तय है कि मेरी शक्ति से बाहर है. तो उम्मीद है, कि हो जाता है शीघ्र ही हल हो गई. आप ऑनलाइन देख रहे हैं, हाय, लेकिन आप मुझे सुन सकते हैं. तो सबसे पहले, हम जा रहे हैं GDB के माध्यम से जाने के लिए. GDB, जैसा कि मैंने पहले की ओर संकेत के रूप में, एक डिबगिंग औजार है printf की तुलना में काफी बेहतर है. यदि हां, तो GDB, तुम लोगों के साथ आरंभ करने के लिए आप अपने उपकरण को खोलने के लिए चाहते हैं और मैं आपको ईमेल कि फाइल ले पहले - इस फाइल को भी होगी एक बिट में ऑनलाइन उपलब्ध - और GDB चलाने. / फ़ाइल का नाम. सबसे पहले, बेशक, आप संकलन करने के लिए है GDB पर ही काम करता है क्योंकि फाइल निष्पादन योग्य फ़ाइलों. लेकिन क्या आपने कभी शुरू करना चाहते हैं GDB, पहली बात करते हैं, आप GDB. / सीज़र चलाते हैं. इसलिए कि हम कर रहे हैं इस कार्यक्रम का नाम है इसके साथ अभी जाना जा रहा. तो मैं कैसर, कर लिखने जा रहा हूँ जो मुझे एक निष्पादन योग्य फ़ाइल दे देंगे यहां हरे रंग में प्रकाश डाला. और फिर मैं GDB. / सीजर को चलाने के लिए जा रहा हूँ. और वहाँ तुम जाओ. आप हम कुछ पाठ मुझे बता रहा है देखते हैं मुझे दे GDB के संस्करण के बारे में फिर कुछ वारंटी जानकारी है, और हम सॉर्ट लग रहा है, जो सकल घरेलू उत्पाद शीघ्र, है के हमारे कमांड लाइन शीघ्र जैसे, लेकिन आपको यह खुला है देखना कोष्ठक, GDB, करीब कोष्ठक. हम इस फाइल को जारी रखने और डिबग पहले मैं आप सभी के लिए भेजा है, चलो हम देखते हैं कुछ उपयोगी आदेशों ताकि हम एक भावना है क्या हम कवर करने के लिए जा रहे हैं. इन निर्देशों में यहाँ सूचीबद्ध हैं मैं आम तौर पर उन्हें जो प्रयोग में आदेश. इसलिए मैं चलाकर अपने कार्यक्रम शुरू कार्यक्रम की GBD. / नाम, इस मामले में, सीज़र. और फिर पहली बात मैं 99.9% कर समय के प्रकार को तोड़ने का मतलब है. यही मुख्य में एक ब्रेक अंक सेट. मूलतः, तुम वहाँ क्या कर रहे हैं कार्यक्रम पर रोक के लिए जा रहा है मुख्य ताकि आप इसे लाइन की जांच शुरू कर सकते हैं रेखा ने, बल्कि सभी चलने से रास्ते के माध्यम से. आप में विभिन्न बिंदुओं पर तोड़ सकते हैं अपने कोड, लेकिन मुख्य आम तौर पर है एक शुरू करने के लिए अच्छी जगह है. मैं चलाने के अगले आदेश रन है. उस कार्यक्रम चल रहा शुरू होता है, और आप कमांड लाइन में प्रवेश करने की जरूरत है तर्क, आप यह है कि आदेश चलाएँ. तर्क के साथ भागो. हम एक संस्करण पर जा रहे हैं तो बाद कार्यक्रम तुम लोग है जो सी, के pset दो के लिए लिखा था - इस एक, बेशक, कुछ कीड़े है उम्मीद है कि हम मिल जाएगा कि उस में - हम कुछ कमांड के साथ चलाने के लिए जा रहे हैं लाइन तर्क क्योंकि सीज़र, तुम लोगों को समस्या प्रति जानते हैं कल्पना सेट, कुछ लेता है कमांड लाइन तर्क. आदेशों के अगले दो से अगले एक वास्तव में अगले कहा जाता है. यही एक लाइन के द्वारा आप लाइन लेता है अपने कार्यक्रम के माध्यम से. तो लिखें तो पता मार ले जाता है अगली पंक्ति में, को क्रियान्वित पिछले लाइन. चरण पर ले जाता है न केवल अगली पंक्ति, लेकिन यह आप अंदर कार्यों लेता है. तो आप एक समारोह में लिखा है अगर अपने कोड या आप का पता लगाने के लिए चाहते हैं एक मैं करने के लिए, उदाहरण के लिए, यदि आप हिट कर सकते हैं और बल्कि की अगली पंक्ति में जाने से आप सही माध्यम से जा रहे हैं कि फाइल अब, आप वास्तव में कदम होगा इस समारोह और अपने कोड देखते हैं. सूची अनुकूल बहुत उपयोगकर्ता में, आपको पता चलता है प्रारूप, लगभग 10 या तो लाइनों आप वर्तमान में अपने कोड में हैं जहां तो आप वास्तव में फ़ाइल देख सकते हैं बल्कि वापस स्वैप करने के लिए आ रहा है और अधिक से आगे अलग विचारों के बीच. प्रिंट, printf की तरह है अपने नाम के अर्थ. एक चर कि बराबर होती है क्या आपको पता चलता है. जानकारी स्थानीय लोगों को वास्तव में मददगार है. इस प्रिंट का एक विशेष संस्करण है. जानकारी स्थानीय लोगों को आप स्थानीय के सभी शो चर, आप के लिए उन सब को बाहर प्रिंट वर्तमान में उपलब्ध हैं. तो बजाय होने से आम तौर पर मैं, मैं कर रहा हूँ कि चार चर बाहर मुद्रित मैं एक पाश के लिए, के लिए में हूँ अगर के बारे में उत्सुक उदाहरण के लिए, मैं सिर्फ जानकारी स्थानीय लोगों को लिखने, और यह मुझे क्या मेरे काउंटर मैं दिखाता हूँ मैं कर रहा हूँ कि सरणी के रूप में के रूप में अच्छी तरह से, के बराबर होती है बराबरी पर काम कर रहा. अंत में, जारी है. विराम टाइपिंग आप बंद हो जाता है ब्रेक प्वाइंट पर. आप द्वारा लाइन के माध्यम से चल सकता है अगले और कदम के साथ रेखा. अपने अगले करने रनों कार्यक्रम जारी बिंदु को तोड़ने या पूरा होने अगर तक कोई और अधिक ब्रेक अंक होते हैं. अक्षम करें ब्रेक अंक को हटा आप अगर मुख्य पर विराम निर्णय लिया गया था अनुचित, आप करना चाहते हैं इसे कहीं और निर्धारित किया है. और अंत में क्यू, छोड़ने, GDB से बाहर हो जाता है. इसलिए इस कार्यक्रम,. / सीज़र, हम जा रहे हैं अभी से लग रही है और हम करने के लिए लगता है GDB का उपयोग करने जा रहे हैं इस कार्यक्रम में कीड़े. मैं के साथ पहले इस कार्यक्रम भागा 50 की जाँच करें, और मैं एक तेवर मिला. सब कुछ है, इसे संकलित, अस्तित्व में है, यह परीक्षण के एक बहुत पारित कर दिया, लेकिन के लिए कुछ कारण, यह पांचवीं पास नहीं था में BARFOO, सभी टोपियां, मोड़ परीक्षण, ई डी यू आई आर आर, सब टोपियां, एक प्रमुख के रूप में तीन का उपयोग कर. मैं बहुत करीब आ गया. मैं एक पत्र से बंद हो गया. तो यहां कुछ छोटी गलती नहीं है. मैं अपने कोड के माध्यम से देखा है. मैं यह समझ नहीं सका. उम्मीद है, आप लोग मेरी मदद कर सकते हैं इस बग क्या है पता. इसलिए कि हम कर रहे हैं त्रुटि है के लिए खोज. के GDB में चलते हैं. फिर, मैं GDB. / सीज़र भाग लिया तो अब हम GDB में कर रहे हैं. और जो पहला है मुझे क्या करना चाहिए बात है? मैं सिर्फ GDB प्रवेश कर लिया है. किसी ने मुझे एक अच्छा दे दर्ज करने के आदेश. छात्र: मुख्य तोड़ो. जेसन Hirschhorn: मुख्य तोड़ो. बढ़िया. के अंदर उस प्रकार दो. तुम लोग यहाँ देख सकते हैं या का पालन कर सकते हैं आपके कंप्यूटर पर साथ. मुख्य तोड़ो, और आप एक देखेंगे ब्रेक प्वाइंट में स्थापित किया गया था - यह मुझे कुछ अजीब स्मृति पता देता है, और यह भी मुझे लाइन संख्या देता है. मैं इस फाइल पर वापस लग रहे थे, तो मुझे लगता है कि मुख्य एहसास होता है 21 लाइन पर हुआ. मैं आगे क्या चलाना चाहिए? मेरे प्रोग्राम चल रहा है? नहीं. तो मैं आगे क्या चलाना चाहिए? छात्र: चलाएँ. जेसन Hirschhorn: भागो. मैं बस चलाने, और चाहिए मैं कुछ अन्य चीजों में जोड़ने? छात्र: तर्क के साथ भागो. जेसन Hirschhorn: के साथ भागो आदेश तर्क. और मैं एक बहुत विशिष्ट डिबगिंग कर रहा हूँ मामला है, मुझे लगता है कि प्रवेश करना चाहिए कमांड लाइन तर्क. तो मुझे लगता है, फिर, है, जो तीन चलाने करूँगा मैं जांच 50 से मिला उत्पादन. कार्यक्रम शुरू. हम लाइनों के एक जोड़े के माध्यम से जाना. अब आप हम 21 लाइन पर कर रहे हैं देखेंगे. मैं कैसे हम 21 लाइन पर कर रहे हैं कि क्या जानते हो? क्योंकि आप बाईं ओर देखो मेरे टर्मिनल विंडो की, वहाँ यह लाइन 21 कहते हैं. और वह है, वास्तव में, मुझे देता है 21 लाइन पर है कि कोड. तो मैंने पहले misspoke. मुख्य लाइन 21 पर वास्तव में नहीं है. मुख्य 21 से ऊपर लाइनों की एक जोड़ी है. लेकिन 21 लाइन पर, कि है जहां हम तोड़ रहे हैं. कोड की इस पंक्ति है अभी तक क्रियान्वित नहीं. यह महत्वपूर्ण है. जैसा कि आप देख लाइन नहीं है अभी तक क्रियान्वित किया गया. यह कोड की अगली पंक्ति है आप निष्पादित करने के बारे में कह रहे हैं. तुम लोग कर रहे हैं तो अगली पंक्ति, साथ शायद परिचित, यह है हालत मैं देखने के लिए अगर जाँच एक कमांड लाइन तर्क में प्रवेश किया. और मैं करने के लिए एक, दूसरे क्या है कर रही है कि का हिस्सा है? एक मैं करने के लिए क्या है? छात्र: एक पूर्णांक के लिए इसे बदल. जेसन Hirschhorn: क्षमा करें? छात्र: यह बदल रहा है एक पूर्णांक के लिए तर्क. जेसन Hirschhorn: तो एक मैं बदलाव के लिए ARG एक पूर्णांक के लिए एक स्ट्रिंग से V1. और फिर यह क्या जाँच कर रहा है? छात्र: एक दूसरा नहीं है, तो कमांड लाइन तर्क, एक तरफ कार्यक्रम चलने से. जेसन Hirschhorn: और क्या है इस की दूसरी छमाही बूलियन अभिव्यक्ति जाँच? यहाँ पर यह हिस्सा, एक मैं करने के लिए? छात्र: यह नकारात्मक है. जेसन Hirschhorn: यकीन है कि क्या कर रहे हो? छात्र: यकीन है कि यह बनाना वास्तव में, सकारात्मक, है. जेसन Hirschhorn: बिल्कुल. यह अगर यह देखने के लिए जाँच कर रहा है यह नकारात्मक है नकारात्मक, और अगर, मैं एक महसूस कर अगली पंक्ति सकता है मुझे उपयोगकर्ता पर चिल्ला किया. तो चलो इस लाइन पर अमल करने के लिए अंत मारा. हम चाहते हैं कि लाइन नहीं दिख रहा है कि तुम लोग शायद पर चिल्ला देखने की उम्मीद उपयोगकर्ता और फिर लौट रहा है, क्योंकि इस लाइन पर अमल नहीं किया. मैं 3 में प्रवेश किया. तो मुझे लगता है, वास्तव में, दो कमांड दर्ज किया लाइन तर्क है, और 3 है शून्य से अधिक. तो हम उस रेखा को देखा, हम मार डाला, लेकिन हम कदम नहीं था अगर हालत के अंदर. तो अब, अगले, मैं मैं स्थापित कर रहा हूँ देखना INT कुंजी एक मैं V1 arg के बराबर होती है. तो यह है कि मुझे एक चर कुंजी बना रहा है. इसलिए मैं अभी चाबी बाहर प्रिंट, क्योंकि कि आप को देखने के लिए अनुमति देता है मूल्य चर के अंदर, कुंजी 47 के बराबर होती है. यही है, बेशक अजीब है, लेकिन मैं नहीं है कि क्योंकि अभी तक उस लाइन से मार डाला. मैं n मारा तो अब, अगर, उस पंक्ति पर अमल और प्रिंट कुंजी, कुंजी, 3 बराबर होगा हम इसे बराबर करने के लिए क्या उम्मीद है. तो फिर, GDB, रेखा में आप अभी तक क्रियान्वित नहीं किया है देखते हैं. आप एन या है या एक संख्या में मारा है वास्तव में करने के लिए अन्य आदेशों की उस पंक्ति पर अमल. छापा कुंजी. 3 में महत्वपूर्ण है. अब तक तो अच्छा है. स्ट्रिंग सादा पाठ है. चलो उस पंक्ति पर अमल करते हैं. मैं उपयोगकर्ता से एक स्ट्रिंग हो रही है. चलो मेरे चेक 50 में देखते हैं, मैं BARFOO सभी टोपियां में प्रवेश, तो कि मैं में प्रवेश करेंगे. मैं अब सादे पाठ मुद्रित हैं. आप इसे एक स्ट्रिंग के बराबर होती है देखेंगे. यह मुझे कुछ अन्य अजीब हेक्साडेसिमल देता है संख्या है, लेकिन यह में करता है तथ्य यह मेरा स्ट्रिंग BARFOO का कहना है कि. मैं कुंजी पर बराबरी क्या देखना चाहते थे इस बिंदु पर, मैं कैसे कुंजी की जांच कर सकता है? छात्र: प्रिंट कुंजी. जेसन Hirschhorn: प्रिंट कुंजी, बिल्कुल. और वास्तव में, एक शॉर्टकट नहीं है. आप प्रिंट टाइपिंग की थक जाते हैं, तुम सिर्फ पी टाइप कर सकते हैं. तो पी कुंजी एक ही सटीक बात करता है. और फिर, मैं इसे 3 के बराबर होती है देखते हैं. मैं क्या कुंजी दोनों पता लगाने के लिए चाहते थे और BARFOO एक ही समय में बराबरी की लेकिन मैं हर टाइपिंग की थक गई थी एक बाहर व्यक्तिगत रूप से, मैं जानकारी स्थानीय लोगों को टाइप कर सकते हैं. यही कारण है कि मुझे चाबी बराबरी 3 देता है. सादा पाठ BARFOO के बराबर होती है. यह भी मुझे इन दो अजीब चीजें देता है शीर्ष पर, इस चर मैं और इस चर एन. जो लोग वास्तव में विद्यमान हैं मेरा मुख्य कार्यक्रम में. हम अभी तक उन्हें सामना नहीं किया है लेकिन एक पूर्वावलोकन के रूप में, उन मेरे में पाश के लिए मौजूद हैं. इसलिए अभी, वे कुछ अजीब बराबर संख्याओं वे नहीं किया गया है क्योंकि अभी तक initialized, लेकिन वे अभी भी मौजूद है स्मृति में है, तो वे सिर्फ सेट कर रहे हैं कुछ कचरा मूल्य के लिए. लेकिन हम मैदान में देखते हैं कुंजी है सही वहाँ पाठ. इसलिए मैं इस लाइन पर अमल करने के लिए जा रहा हूँ, लाइन 34, के लिए पाश. हम में कूदने के लिए जा रहे हैं n मार से पाश के लिए. और हम पाश के लिए अंदर हो. हम अपने पहले की जांच में कर रहे हैं. और फिर, इन की तरह दिखना चाहिए इस एक था क्योंकि आप परिचित सीज़र लिखा गया था कि कार्यक्रम, लेकिन फिर, बग किसी प्रकार का है. मैं कर रहा हूँ क्योंकि अब मैं, की जानकारी स्थानीय लोगों से करते हैं पाश के लिए कि अंदर, आप देखेंगे हम उम्मीद के रूप में मैं, शून्य के बराबर होती है. यही कारण है कि हम इसे स्थापित करने और initialized क्या है यह पाश के लिए करने के लिए. n 6 के बराबर होती है. हम सेट वजह यह भी समझ में आता है सादे पाठ की strlen के लिए यह. तो मुझे लगता है की जानकारी स्थानीय लोगों या प्रिंट करना चाहते चर को अक्सर सुनिश्चित करने के लिए सब कुछ हमेशा होता है क्या मैं इसे बराबर करने की उम्मीद है. इस मामले में, सब कुछ है मैं इसे बराबर करने की उम्मीद है. तो चलो के माध्यम से चलना शुरू करते हैं इस पाश के लिए. मैं कर रहा हूँ पर लाइन लाइन 36 है, अगर सादे पाठ मैं एक और सादे से अधिक है पाठ मैं कम से कम या Z करने के लिए बराबर है. मैं मेरी समस्या मेरे साथ पहली बार नहीं है पता पत्र में यह दूसरा पत्र के साथ है. हम जाँच में वापस देखो 50, बी ई ठीक करने के लिए चला जाता है. मैं एक ले रही है और के रूप में इसे छोड़ रहा हूँ एक ए, डी तो इसे बदलने नहीं कुछ के साथ गलत है दूसरा पत्र. तो मैं ले जाने के लिए जा रहा हूँ वहाँ एक दूसरे में. लेकिन मैं क्या सादे जाँच करना चाहते हैं, तो पाठ मैं इस विशेष में बराबरी की मामला है, मैं यह क्या होना चाहिए? सादे पाठ मैं इस में बराबर होना चाहिए क्या पाश के लिए के माध्यम से पहले दौर? छात्र: शून्य? जेसन Hirschhorn: मैं सादे पाठ? तो यह, मैं, बेशक पूंजी बी होना चाहिए शून्य के बराबर होती है, लेकिन सादे पाठ ब्रैकेट शून्य बंद ब्रैकेट बी के बराबर होती है क्योंकि तार, हम पिछले सप्ताह देखा था, सरणी हैं, तो हम कर रहे हैं उस से पहले चरित्र. तो फिर, मैं सादे पाठ बाहर मुद्रित अगर मैं, मैं, वास्तव में, चरित्र मिलता है बी और कहा कि ठीक है, साफ है? मैं वास्तव में सादे पाठ मैं नहीं है यही कारण है कि मैं सेट चर में से एक नहीं है या initialized, लेकिन आप मुद्रित कर सकते हैं चीजों की एक पूरी मेजबान बाहर आप करना चाहते हैं तो. लेकिन हम के माध्यम से चलते हैं. सादे पाठ मैं एक से अधिक है और अगर सादे पाठ मैं से कम या बराबर है क्योंकि हम जेड, जो स्पष्ट रूप से सच है मैं चला जा रहा हूँ एक राजधानी बी इस पर कुछ कमांड. हम पिछले सप्ताह उस गणित को देखा, तो हम करेंगे यह काम करता है कि दी ले सही 50 की जाँच के अनुसार. ये घुंघराले ब्रेसिज़, पहले एक मैं अगर बाहर निकलने रहा था कि पता चला हालत, एक दूसरे से पता चला मैं पाश के लिए बाहर निकलने रहा हूँ कि. मैं अगले मारा और जब तो अब, हम देखेंगे हम फिर से पाश के लिए वापस पर रहे. हम के माध्यम से जा रहे हैं फिर पाश के लिए. वास्तव में दूसरे में कदम दो. पाश और प्रकार के लिए की पुनरावृत्ति जानकारी स्थानीय लोगों को. इसलिए हम दूसरी यात्रा में कर रहे हैं हमारे लिए पाश की. मुझे लगता है हमें उम्मीद है, जो 1 के बराबर होती है. एन हम उम्मीद करते हैं जो, 6 के बराबर होती है. कुंजी हम उम्मीद करते हैं, जो 3 के बराबर होती है. और सादे पाठ, आप देखेंगे, के बराबर होती है EARFOO अब, अब और BARFOO नहीं क्योंकि हमारे पिछले यात्रा में हजारों था एक राजधानी ई. को बदला तो हम के बारे में कर रहे हैं समस्या का सामना करने के लिए, यह तो हम करने जा रहे हैं, जहां है डिबगिंग में गोता. लेकिन किसी को भी किसी भी सवाल है हम अब तक क्या किया है के बारे में? बढ़िया. तो हम अगर इस पर अमल करने के बारे में हो हालत, मैं बंद सादे पाठ ब्रैकेट ब्रैकेट एक से अधिक और सादे पाठ मैं से भी कम या जेड के बराबर लेकिन पहले यह है, क्योंकि मैं उस में जाने जहाँ मुझे लगता है मैं बात करना चाहता हूँ, मेरी गलती है पता मैं सादे पाठ बाहर तो प्रिंट बाहर डाल दिया. यह चरित्र एक समान करता है, तो यह है कि अब तक, सब कुछ ठीक है और अच्छा लगता है. इसलिए मैं अपने तर्क के अनुसार इस लाइन की उम्मीद इस लाइन सच्चा होना चाहिए. यह एक पूंजी पत्र है. मैं n मारा लेकिन, अगर हम महसूस करते हैं कि इस रेखा, वास्तव में, पर अमल नहीं किया. मैं किसी और के लिए यदि नीचे कूद गया. क्यों हुआ? छात्र: क्योंकि तुम अपनी हालत सादे पाठ का अधिक से अधिक है एक, नहीं के बराबर या अधिक से अधिक से अधिक है. जेसन Hirschhorn: तो मैं अपने सादे पाठ था मैं एक, अधिक से अधिक नहीं की तुलना में अधिक है अधिक या बराबर. तो जाहिर है, राजधानी नहीं किया हालत अगर यह ट्रिगर, और हमने किया यह में कदम, और हमने किया नहीं आवश्यक बदलाव करना नहीं. तो यह है कि वास्तव में, यह है. मैं अपने बग बाहर लगा. मैं अपने स्रोत फ़ाइल में वापस जा सकते हैं, इसे बदलने के लिए, और यह अद्यतन और फिर से 50 की जाँच चलाते हैं. लेकिन हम सिर्फ अध्यापन के लिए, देख लेंगे खातिर, मैं जा रहा रखने. और अगर या तो अमल नहीं करता, लेकिन क्या बजाय बराबर होती आदेश है कि परिवर्तन नहीं करता है. इसलिए यह बिल्कुल बदल गया है, और नहीं है अगर मैं यहाँ सादे पाठ मुद्रित, हम जा देखेंगे उस के माध्यम से पाश के लिए, वास्तव में, नहीं किया सब पर है कि दूसरा चरित्र बदल जाते हैं. यह अभी भी एक राजधानी ए है तो फिर, हम अपने त्रुटि debugged. हम वहाँ एहसास हुआ कि लापता कुछ तर्क. और हम पहले से समय से आगे यह debugged वास्तव में उस पंक्ति को क्रियान्वित करने, लेकिन आप ध्यान दिया होता था कि हम सिर्फ अगले मारा और अगर है कि किसी और के लिए कूद, इसका मतलब है कि कि अगर हालत सच नहीं था. हम वास्तव में, नहीं मिला परिणाम हम उम्मीद. तो फिर हम आपसे कहा जाए जा सकता था, किया था हम को देखने के लिए, तो चतुर नहीं किया गया कि, हालत और वास्तव में, अगर जांच हमारी हालत को मूल्यांकन करना चाहिए वर्तमान संदर्भ में सच है. यही कारण है कि इस प्रोग्राम डिबगिंग सभी के लिए है. किसी को भी किसी भी सवाल है? मैं GDB छोड़ने के लिए क्या आदेश मार सकता है? प्र. और फिर मैं प्रेरित किया जाएगा, वैसे भी छोड़ दिया? हाँ या ना. मैं हाँ मारा हूँ, और मैं GDB छोड़ने होगा. इसलिए कि GDB के लिए एक त्वरित प्राइमर था. दरअसल, एक असली परिदृश्य में, मैं कार्यालय समय पर ऐसा किया. मैं इस सटीक कार्यक्रम में GDBed एक छात्र के साथ कार्यालय समय. और हम हमने देखा आदेशों को वापस जाने के लिए अगर इससे पहले, हम पहले, ब्रेक के मुख्य इस्तेमाल किया बात हम किया था. हम कमांड लाइन तर्क के साथ चलाए इस्तेमाल किया, दूसरी बात यह है कि हमने किया. हम स्थानांतरित करने के लिए अगले एक बहुत उपयोग किया लाइनों के माध्यम से हमें. और फिर, लघु संस्करण की अगली n है. उस कोष्ठक में है स्लाइड पर ग्रे में. हम कदम का उपयोग नहीं किया है, लेकिन हम नहीं किया जरूरी इस मामले के लिए की जरूरत है. लेकिन हम बाद में एक बिट में इसका इस्तेमाल हो सकता है पर आज हम डिबगिंग कर रहे हैं, के लिए उदाहरण के लिए, द्विआधारी खोज जब द्विआधारी खोज एक अलग में कहा जाता है समारोह लेकिन वहाँ इसके साथ कुछ त्रुटि. हम में कदम चाहते करने जा रहे हैं द्विआधारी खोज करने के लिए फोन और वास्तव में इसे डिबग. हम था क्योंकि हम या तो उपयोग नहीं किया सूची हमारे कोड की एक अच्छी भावना है, लेकिन अगर मैं क्या कोड मैं की भावना लाने के लिए चाहते थे आसपास थी, मैं बस की सूची इस्तेमाल कर सकते हैं. हम, हम इस्तेमाल की जानकारी स्थानीय लोगों का इस्तेमाल किया प्रिंट. हम इस में उपयोग करने की आवश्यकता नहीं किया था जारी मामला है, न तो हम उपयोग करने की आवश्यकता किया निष्क्रिय कर देते हैं, लेकिन हम किया था प्रयोग छोड़ दिया. फिर, इन 10 आदेश, उन्हें अभ्यास. आप इन 10 आदेशों को समझते हैं, आप किसी भी डीबगिंग के लिए सेट किया जाना चाहिए GDB के साथ जारी करते हैं. तो हम करने के लिए, फिर से, पर जाने के लिए कर रहे हैं खंड की जड़ आज, ऊपर जा रहा इन छँटाई और खोज एल्गोरिदम. हम ऐसा करने से पहले, फिर, किसी भी सवाल, GDB के लिए टिप्पणियाँ, चिंताओं? इसलिए सब लोग प्रयोग हो रहा है GDB बजाय printf? शाश्वत की खातिर तो सब लोग,, हर कोई उनके सिर सही हिला है अब, तो मैं कार्यालय समय में आप देखेंगे और सभी TFS आप और देखेंगे वे कैसे उपयोग करने के लिए मुझे दिखाओ, कहता हूँ GDB, और आप में सक्षम हो जाएगा ठीक है, उन्हें दिखाने के लिए? एक तरह से? हो सकता है कि उम्मीद है कि. कूल. तो हम में स्थानांतरित करने के लिए जा रहे हैं छंटाई और खोज. तुम्हें पता है मैं पहले से ही क्रमबद्ध एक सूची है देखेंगे हमें, लेकिन वह नहीं जा रहा है के लिए हमेशा मामला हो. इसलिए इस समस्या में लिए विशिष्टता सेट समस्या तीन सेट, आप शॉर्ट्स है आप यह वास्तव में देखने के, और कर सकते हैं कि उन शॉर्ट्स देखने के लिए कहेगा. इसके अलावा व्याख्यान में पिछले हफ्ते, हम खत्म हो गया था इन एल्गोरिदम का एक बहुत कुछ है, तो मैं कर रहा हूँ जा कक्षा में समय बिताने के लिए नहीं जा रहा इन फिर एल्गोरिदम या ड्राइंग खत्म कैसे इन के लिए तस्वीर एल्गोरिदम काम करते हैं. फिर, आप फिर से देख सकते हैं कि जानकारी व्याख्यान, या कि जानकारी शॉर्ट्स पर शानदार कब्जा कर लिया है इन खोजों, सभी के लिए cs50.net पर उपलब्ध हैं. तो बजाय, हम क्या करने जा रहे हैं कर इन कार्यक्रमों लिखना है. हम कैसे की एक मानसिक मॉडल, एक भावना है वे काम करते हैं, और इसलिए क्या हम जा रहे हैं ऐसा करने के लिए असली के लिए उन्हें कोड है. हम चाहते हैं कि मानसिक मॉडल बारी करने के लिए जा रहे हैं, उस चित्र, अगर तुम जाएगा, में वास्तविक कोड. और यदि आप एक छोटे से उलझन या थे मानसिक मॉडल पर धुंधला, मैं पूरी तरह से समझते हैं. हम वास्तव में नहीं जा रहे हैं कोड सीधे करने के लिए कूद. इस स्लाइड में यह शीघ्र पूछता है तो, जबकि आप द्विआधारी खोज कोड, और करने के लिए वास्तव में, चलने का एक संस्करण की द्विआधारी खोज, पहली बात मैं वास्तव में आप क्या करना चाहते कुछ pseudocode लिखें. तो अगर आप इस मानसिक मॉडल कैसे द्विआधारी खोज काम करता है. अगर आपके पास कागज के एक पत्रक बाहर ले जाओ एक आसानी से उपलब्ध है, या खोलने के एक पाठ संपादक, और मुझे पसंद हैं लिखने के लिए सब लोग. लिखने के लिए चार मिनट ले लो द्विआधारी खोज के लिए pseudocode. फिर से, कि मानसिक मॉडल के बारे में सोचते हैं. यदि आप प्रश्न हैं मैं आसपास आता हूँ और हम तस्वीर से बाहर आकर्षित कर सकते हैं. लेकिन पहले, हम प्रोग्रामिंग शुरू करने से पहले, मैं लिखना पसंद करता हूं द्विआधारी खोज के लिए pseudocode इसलिए जब हम में गोता, हम के रूप में कुछ दिशा है हम सिर चाहिए जहां के लिए. छात्र: हम में से सरणी मान सकते हैं हम मिल मानों पहले से ही हल है? जेसन Hirschhorn: तो द्विआधारी खोज के लिए काम करने के लिए - अच्छा सवाल - आप एक हल में ले जाना है मानों की सरणी. तो यह काम करेंगे. हम वापस इस स्लाइड के लिए जाना होगा. आप बैंगनी समारोह में देखेंगे घोषणा bool binary_search int है मूल्य, int मूल्यों, int n. आपने अगर यह परिचित दिखना चाहिए पहले से ही संपर्क किया या कमाई अपने समस्या सेट के साथ गंदे हाथ. लेकिन यह है कि आपके समारोह घोषणा है. फिर, के बारे में चिंता करने की जरूरत नहीं होनी चाहिए इस पल में है कि ज्यादा. क्या मैं वास्तव में आप क्या करना चाहते ले रहा है pseudocode बाइनरी चार मिनट खोज, और फिर हम जायेंगे एक समूह के रूप में उस पर. और मैं आसपास आ जाएगा. यदि आप प्रश्न हैं, महसूस अपने हाथ उठाने के लिए स्वतंत्र. क्यों आप दो मिनट नहीं लेते pseudocode खत्म करने के लिए? मैं यह है कि हास्यास्पद लग सकता है हम पर इतना समय खर्च कर रहे हैं में भी वास्तव में नहीं है कि कुछ सी, लेकिन विशेष रूप से इन अधिक के लिए चुनौतीपूर्ण एल्गोरिदम और समस्या हम यह पता लगाने की है कि सेट, pseudocode में चिंता नहीं में शुरू वाक्य रचना के बारे में, बस के बारे में चिंता तर्क, अविश्वसनीय रूप से उपयोगी है. और इस तरह, आप दो हल नहीं रहे एक ही बार में अविश्वसनीय रूप से कठिन समस्याओं. तुम बस तर्क पर ध्यान केंद्रित कर रहे हैं, और तो आप वाक्यविन्यास में चलते हैं. ठीक है. के माध्यम से जा रहा शुरू करते हैं pseudocode. मैं द्विआधारी, यहाँ लिखा है खोज pseudocode. हम पर यह लिख देता हूँ एक साथ बोर्ड. या मैं यह लिख देता हूँ और तुम्हें दे देंगे मुझे मैं जरूरत संकेत देता है. तो किसी ने मुझे पहले दे सकते हैं pseudocode की लाइन आप द्विआधारी खोज के लिए लिखा है? हाँ, एनी? छात्र: एक ओर जहां की लंबाई सूची शून्य से अधिक है. जेसन Hirschhorn: जबकि लंबाई के शून्य से अधिक की सूची. और फिर, हम कुछ सी दिखने देखना यहाँ पर वाक्य बातें. लेकिन इस का सबसे अंग्रेजी में है. किसी को भी वे डाल किसी भी लाइन खाया उनके छद्म कोड में इस से पहले? छात्र: एक सरणी करें की संख्या के अनुसार क्रमबद्ध. जेसन Hirschhorn: आप ने लिखा है, "एक मिल सॉर्ट किए गए नंबरों की सरणी. "प्रति समारोह घोषणा, हम गुजर रहे होंगे क्रमबद्ध संख्या की एक सरणी. छात्र: [सुनाई]. जेसन Hirschhorn: तो हम उस होगा. लेकिन हाँ, हम, कि नहीं था, तो हम की हमारी सरणी सॉर्ट करने के लिए की आवश्यकता होगी संख्या, क्योंकि द्विआधारी खोज केवल क्रमबद्ध सरणियों पर काम करता है. सूची की लंबाई शून्य के बराबर होती है तो, जबकि मैं कर रहा हूँ कुछ घुंघराले ब्रेसिज़ में डाला जा रहा यह थोड़ा और अधिक की तरह लग रहे बनाने के लिए सी. लेकिन, जबकि एक पर मैप करने के लिए लगता है पाश जबकि, इसलिए इस समय के अंदर पाश क्या हम क्या ज़रूरत है द्विआधारी खोज के लिए करते हैं? मुझे एक नहीं दिया है किसी और जो अभी तक जवाब लेकिन जो यह लिखा था? छात्र: सूची के बीच में जाओ. जेसन Hirschhorn: टॉम. सूची के बीच में जाओ. और अनुवर्ती सवाल है, क्या हम पर हो एक बार हम करते हैं सूची के बीच? छात्र: वह है कि क्या एक जांच करो आप देख रहे हैं संख्या. जेसन Hirschhorn: उत्कृष्ट. सूची के बीच जाओ और जाँच हमारे मूल्य अगर वहाँ - शानदार. किसी को भी कुछ और भी था कि इस से अलग था? यह बिल्कुल सही है. हम द्विआधारी खोज में ऐसा पहली बात सूची के बीच करने के लिए जाना जाता है और हमारे मूल्य अगर वहाँ की जाँच करें. हमारे मूल्य है तो मैं मान , हम क्या वहाँ क्या करते हो? छात्र: हम [सुनाई] शून्य वापसी. जेसन Hirschhorn: हाँ, अगर हमारी मूल्य है, हम इसे पाया. इसलिए हम हालांकि, किसी तरह से बता सकते हैं इस समारोह परिभाषित किया गया है, हम उपयोगकर्ता बताओ हम यह पाया. यह वहाँ नहीं है, हालांकि, कि इस मुश्किल हो जाता है. तो यह वहाँ नहीं है, तो किसी और जो द्विआधारी खोज या पर काम कर रहा था अब, हम एक विचार क्या करते हो गया है? छात्र: प्रश्न. जेसन Hirschhorn: हाँ? छात्र: सरणी पहले से ही हल है? जेसन Hirschhorn: हाँ, हम मान रहे हैं सरणी पहले से ही हल है. छात्र: तो फिर आप की जाँच करने के लिए है आप देखते हैं कि मूल्य से अधिक है आप चाहते हैं कि मूल्य, आप ले जा सकते हैं अन्य आधा के बीच करने के लिए. जेसन Hirschhorn: यदि हां के बीच सूची में हम क्या कर रहे हैं की तुलना में अधिक है क्या, के लिए तो हम करते देख रहे हैं? हम जहां कदम? छात्र: आप के लिए ले जाना चाहते हैं साथ सूची की आधी तुलना में कम संख्या. जेसन Hirschhorn: तो हम करेंगे छोड़ दिया है कि कहते हैं. बीच अधिक से अधिक है तो, अगर हम खोज कर सकते हैं सूची के बाईं आधा. और फिर खोज से, क्या मैं खोज से मतलब है? छात्र: [सुनाई]. जेसन Hirschhorn: हम बीच के पास जाओ. हम वास्तव में इस बात को दोहरा रहे हैं. हम अपने समय पाश के माध्यम से वापस जाओ. मैं तुम्हें आखरी देता हूँ - अगर नहीं तो, मध्य कम से कम क्या है हम, हम यहां क्या करते है? छात्र: सही करने के लिए जाओ. जेसन Hirschhorn: सही खोजें. यह अच्छा लग रहा है, लेकिन किसी को भी करता है हम लापता या हो सकता है कि कुछ भी तुम डाल कुछ और है कि अपने छद्म कोड में? तो यह है कि हम अब तक क्या किया है. सूची की लंबाई अधिक से अधिक है, जबकि शून्य से, हम जाने के लिए जा रहे हैं सूची के बीच और को हमारे मूल्य अगर वहाँ की जाँच करें. बीच अधिक से अधिक है, तो हम करने जा रहे हैं मध्य है अगर खोज बाकी, छोड़ा कम, हम सही खोज करने के लिए जा रहे हैं. इसलिए हम सभी के साथ कुछ परिचित मिला है हम कंप्यूटर विज्ञान में उपयोग की शर्तें और उपकरणों के हम हैं. लेकिन अगर आप पहले से ही हम थे पर ध्यान देंगे अंग्रेजी में बोल रहा है, लेकिन हमने पाया एक पर मैप करने के लिए लग रहा था कि बहुत सी चीजें हम अपने कोडिंग उपकरण किट में है औजार. तो सही निशाने पर, हम नहीं कर रहे हैं वास्तव में अभी तक कोड जा. हम अंग्रेजी में यहाँ क्या देखते हैं कि नक्शे बातों पर हम सी में लिख सकते हैं? छात्र: है. जेसन Hirschhorn: है. तो यह जबकि यहीं क्या करने पर नक्शे? छात्र: एक समय पाश. जेसन Hirschhorn: एक समय पाश? या शायद, अधिक आम तौर पर, एक पाश. हम और अधिक से अधिक कुछ करना चाहते हैं. तो हम एक पाश कोड जा रहे हैं. हम किया है और क्योंकि हम पहले से ही जानते हैं इस समय की एक जोड़ी और हम वहाँ से बाहर उदाहरण के बहुत है कैसे वास्तव में लिखने के लिए एक पाश के लिए इस सूचकांक. तो यह है कि बहुत आसान होना चाहिए. हम चाहते हैं कि प्राप्त करने में सक्षम होना चाहिए बहुत जल्दी शुरू कर दिया. और क्या हम यहाँ में देखते हैं? क्या अन्य संरचनाओं syntaxes, बातें हम सी में से परिचित हैं कि, हम करते हैं पहले से ही आधार की भावना है हम प्रयुक्त शब्दों के बंद? हां, अन्ना? [सुनाई] सिर्फ मजाक कर. अन्ना, आगे बढ़ो. छात्र: यदि और कुछ. जेसन Hirschhorn: यदि और बाकी - ठीक है यहाँ. तो क्या उन लोगों की तरह दिखते हैं? छात्र: एक और बयान हैं. जेसन Hirschhorn: हाँ, स्थितियां, सही? तो हम शायद करने की आवश्यकता होगी कुछ स्थितियों में लिखें. और फिर, हालांकि हो सकता है पर भ्रमित सबसे पहले, हम आम तौर पर अब एक भावना है स्थितियां और लिखने के लिए की स्थितियों के लिए वाक्यविन्यास. हम नहीं करते हैं, हम सिर्फ ऊपर देखो स्थितियां, कट और पेस्ट के लिए वाक्यविन्यास कि, हम क्योंकि हम जानते हैं यहां एक की हालत की जरूरत है. हम पर है कि नक्शा देखना किसी भी अन्य बातों हम सी में करने के लिए आवश्यकता हो सकती बातें? हाँ, Aleha? छात्र: यह स्पष्ट हो सकता है बस की जाँच करके अगर एक मूल्य कुछ बराबर होती है. जेसन Hirschhorn: तो हम कैसे की जाँच करते हैं और - तो सूची के बीच करने के लिए जाना हमारे मूल्य और अगर वहाँ की जांच? हम चाहते हैं कि सी में कैसे करते हो? उस के लिए वाक्यविन्यास क्या है? छात्र: बराबर होती है, बराबर होती है. जेसन Hirschhorn: बराबर होती है, बराबर होती है. तो इस चेक शायद जा रहा है एक से बराबर होने के लिए, के बराबर होती है. तो हम कहीं कि जरूरत पता चल जाएगा. और वास्तव में, बस इसे लिखने में, हम उन अन्य चीजें देखते हैं. हम कुछ करने के लिए किया जा रहे हैं तुलना ऑपरेटरों वहाँ में - शानदार. तो यह वास्तव में ऐसा, द्वारा और लग रहा है बड़े, हम नहीं लिखा है एक अभी तक सी कोड के शब्द. लेकिन हम नीचे मानसिक मॉडल मिला व्याख्यान और उन शॉर्ट्स के माध्यम से. हम एक समूह के रूप में छद्म कोड लिखा था. और पहले से ही, हम 80% अगर नहीं है हम क्या करने की जरूरत का 90%. अब, हम सिर्फ कोड की जरूरत यह, फिर से, एक जो है हल करने के लिए गैर तुच्छ समस्या. लेकिन कम से कम हम तर्क पर अटक कर रहे हैं. , हम कार्यालय समय के लिए जाना है जब कम से कम अब मैं मैं मैं क्या जरूरत है, कह सकते हैं ऐसा करने के लिए, लेकिन आप याद कर सकते हैं वाक्य रचना के लिए मुझे? या कार्यालय समय आप भीड़ कर रहे हैं, भले ही बल्कि, वाक्य रचना के लिए गूगल कर सकते हैं तर्क पर अटक जा रहा से. और फिर, बजाय हल करने की कोशिश तर्क और वाक्यविन्यास समस्याओं सब एक ही बार में, यह अक्सर करने के लिए ज्यादा बेहतर है में उन दो कठिन समस्याओं को दूर तोड़ने दो अधिक प्रबंधनीय वालों और कर सी. में छद्म कोड के पहले और उसके बाद कोड तो चलो के लिए मैंने क्या किया देखते हैं छद्म कोड समय से आगे. सूची की लंबाई अधिक से अधिक है, जबकि शून्य से, बीच में देखो सूची की. संख्या और, सच लौटा पाया तो संख्या जितनी अधिक होगी, खोज अगर छोड़ दिया. यदि नहीं तो संख्या कम, खोज सही, गलत वापसी. तो यह है कि लगभग समान लग रहा है अगर नहीं हम क्या लिखा करने के लिए लगभग समान. दरअसल, टॉम, आप पहले क्या कहा, सूची की और अगर मध्य तोड़ने दो बयानों में पाया संख्या मैंने क्या किया वास्तव में है. मैं उन्हें वहाँ संयुक्त. मैं बात सुननी चाहिए आप पहली बार. तो यह है कि हमारे पास छद्म कोड है. आप अब चाहते हैं, क्षमा करें, जाओ हमारे प्रारंभिक समस्या को वापस. के कोड binary.c करते हैं. तो चलने का एक संस्करण के लागू निम्न का उपयोग कर द्विआधारी खोज समारोह घोषणा. और आप को कॉपी करने की जरूरत नहीं है यह नीचे बस अभी तक. मैं वास्तव में खोलने के लिए जा रहा हूँ यहाँ तक सही binary.c. तो समारोह घोषणा है स्क्रीन के बीच में. और तुम मैं छद्म कोड लिया देखेंगे मेरे किनारों पर से, लेकिन लगभग समान क्या हम ने लिखा है, और आप के लिए है कि में डाल दिया. तो अब, चलो पाँच मिनट लग जाने इस समारोह कोड के लिए. और फिर, आप कोई प्रश्न हैं, अपना हाथ बढ़ा, मैं हूँ, मुझे पता है चारों ओर आते हैं. छात्र: [सुनाई]. जेसन Hirschhorn: तो मैं बाइनरी ले लिया पर खोज परिभाषा 12 लाइन पर, ऊपर. यही कारण है कि मैं अपने स्लाइड के लिए मिला है. और फिर यह सब इस छद्म कोड मैं बस कॉपी और स्लाइड से चिपकाया, छद्म कोड स्लाइड. मैं अभी भी [सुनाई] सुनवाई नहीं कर रहा हूँ. आप समाप्त कर दिया है इसलिए अगर आपके कार्यान्वयन, मैं यह जाँच करना चाहते हैं. मैं आप helpers.h फाइल ईमेल पहले इस वर्ग में. और यह रूप में अच्छी तरह से ऑनलाइन उपलब्ध होगा देख रहे लोगों के लिए डाउनलोड के लिए इस खंड समय में देरी. और मैं सिर्फ सामान्य वितरण इस्तेमाल किया pset3 से कोड. इसलिए मैं find.C, मेरे helpers.h फ़ाइल का उपयोग ले लिया बल्कि helpers.h फ़ाइल से कि वितरण कोड में दी गई है. और मैं में एक अन्य परिवर्तन करना था बल्कि सिर्फ और सिर्फ फोन से find.C खोज, binary_search कहते हैं. तो अगर आप अपने कोड का परीक्षण करना चाहते हैं, कि यह कैसे करना है कि पता है. वास्तव में, हम इस कोड चल रहा होगा जब अब ठीक है, मैं बस की एक प्रतिलिपि बना मेरे pset3 निर्देशिका, फिर से, बाहर बदली फिर सहायकों फ़ाइलें और बनाया कि binary_search कॉल करने के लिए find.C में बदल बजाय बस खोज. जेसन Hirschhorn: हाँ. आप में एक सवाल है? छात्र: कोई बात नहीं. जेसन Hirschhorn: कोई चिंता नहीं. खैर, चलो शुरू हो जाओ. हम एक समूह के रूप में इस कोड होगा. एक अन्य ध्यान दें. फिर, यह, आसानी से बदली जा सकती है समस्या सेट तीन के लिए में. मैं अपने helpers.h फ़ाइल है जो, बल्कि helpers.h से हम दिया हो, द्विआधारी खोज, बुलबुला वाणी सॉर्ट, और चयन के आधार पर क्रमबद्ध. और find.c में आप लाइन पर ध्यान देंगे, क्या रेखा 68, हम द्विआधारी कहते हैं, वह यह है कि खोज के बजाय खोज. तो फिर, उपलब्ध है कि कोड ऑनलाइन या आप कर रहे हैं कि कोड सही अब बनाने आसानी से बदली जा सकती है के लिए पी यह जाँच करने के लिए 3 सेट. लेकिन पहले, चलो द्विआधारी खोज कोड देना. हमारी समारोह घोषणा, हम एक bool वापसी. हम मूल्य कहा जाता है एक पूर्णांक ले. हम बुलाया पूर्णांकों की सरणी ले मूल्यों, और हम n ले सरणी के आकार. यहीं लाइन 10, पर, मेरे पास है तेज stdbool.h शामिल हैं. कि क्यों वहाँ किसी को पता है? तो कोड की कि रेखा क्या करता है? छात्र: यह आपको अनुमति देता है एक bool वापसी प्रकार का उपयोग करें. जेसन Hirschhorn: बिल्कुल. छात्र: या यह अनुमति देता है कि एक पुस्तकालय है एक bool वापसी प्रकार उपयोग करने के लिए. जेसन Hirschhorn: इतनी तेज शामिल stdbool.h लाइन मुझे कुछ देता है बातों के लिए परिभाषाएँ और घोषणाओं मैं में उपयोग करने के लिए अनुमति दे दी है कि इस पुस्तकालय. तो उन लोगों के बीच है कि वहाँ कह रहा है इस प्रकार bool कहा जाता है, और यह हो सकता है सही है या गलत. इसलिए कि उस पंक्ति क्या करता है. मुझे लगता है कि लाइन नहीं था और अगर मैं होता इस लेखन के लिए मुसीबत में हो यहीं, bool, वहीं शब्द. बिल्कुल सही. इसलिए मैं इस कोड में है कि जरूरत है. ठीक है. तो यह, फिर, एक चलने का है संस्करण, नहीं एक पुनरावर्ती एक. तो हमें शुरू हो जाओ. चलो यह पहले से शुरू करते छद्म कोड की लाइन. और उम्मीद है, हम करेंगे - या नहीं उम्मीद है. हम कमरे में चारों ओर जाने के लिए जा रहे हैं. हम लाइन से लाइन के लिए जाना होगा, और मैं मदद मिलेगी आपको जरूरत है कि हम लाइन समझ से बाहर पहले लिखने के लिए. तो, जबकि सूची की लंबाई शून्य से अधिक है. के सामने शुरू करते हैं. क्या लाइन मैं लिखना चाहिए यहाँ, कोड में? छात्र: एक ओर जहां कोष्टक एन 0 से अधिक है. जेसन Hirschhorn: जबकि एन 0 से महान है. तो N, एक सूची का आकार है और अगर हम जाँच कर रहे हैं - [INTERPOSING आवाज़ें] जेसन Hirschhorn: - माफ करना? छात्र: कैसे हम जानते हैं कि n सूची का आकार है? जेसन Hirschhorn: क्षमा करें. Pset विशिष्टता के अनुसार, खोज और तरह, आप लिखने की जरूरत कार्य करता है n सूची का आकार है. मैं यहाँ कि समझाने के लिए भूल गया. लेकिन हाँ. n के आकार है इस मामले में कंपनियों की सूची,. तो, जबकि एन 0 से अधिक है. ठीक है. यह एक बिट समस्याग्रस्त साबित हो सकता है हालांकि, चीजों पर चलते हैं. हम पता करने के लिए जारी रहेगा क्योंकि इस दौरान सूची का आकार समारोह, लेकिन हम शुरू से कहते हैं 5 पूर्णांकों की सरणी के साथ. और हम के माध्यम से जाना है और हम है अब इसे नीचे संकुचित 2 पूर्णांकों की सरणी. कि जो 2 पूर्णांकों है? आकार हम चाहते हैं कि अब 2 है पर दिखेगा, लेकिन यह है कि जो 2 है? कि, कि प्रश्न मतलब? ठीक है. मैं इसे फिर से पूछता हूँ. इसलिए हम 5 के इस सरणी के साथ शुरू पूर्णांकों, और एन सही, 5 के बराबर होती है? हम यहाँ के माध्यम से चलने देंगे. हम शायद आकार बदल देंगे, ठीक है, चीजों पर जाने के रूप में. जो हम हम क्या करना चाहते हैं क्या कहते है. हम खोज करने के लिए नहीं करना चाहती पूरी बात फिर से. इसलिए हम 2 करने के लिए इसे बदल कहना. हम अजीब है कि आधे सूची ले. तो सिर्फ 2 लेने. तो अब 2 n के बराबर होती है. मैं गरीबों के लिए माफी माँगता हूँ सूखी मिटा मार्कर. है ना? और हम सूची के माध्यम से खोज कर रहे हैं फिर आकार 2 की एक सूची के साथ. खैर, हमारे सरणी अभी भी आकार 5 की है. हम केवल करना चाहते हैं इसमें 2 स्पॉट खोज. तो उन जो 2 धब्बे होते हैं? कि मतलब? वे छोड़ दिया 2 धब्बे होते हैं? वे सही 2 धब्बे होते हैं? वे मध्य 2 धब्बे होते हैं? हम समस्या से टूट गया है, लेकिन हम वास्तव में नहीं जानता कि जो भाग की हम अभी भी देख रहे हैं समस्या, सिर्फ इन 2 चर होने से. तो हम और अधिक तो एक छोटा सा की जरूरत एन 0 से अधिक है, जबकि. हम पता करने की जरूरत है कि जहां n हमारी वास्तविक सरणी में है. इसलिए किसी को भी एक है इस लाइन को बदलने? इस लाइन के अधिकांश है बिल्कुल सही. एक और इसके अतिरिक्त है? हम n करने के लिए कुछ स्वैप कर सकते हैं थोड़ा बेहतर इस लाइन बनाते हैं? मिमी एचएम? छात्र: आप एक चर प्रारंभ कर सकते हैं तब इस्तेमाल किया जाएगा कि पता करने के लिए लंबाई की तरह बाद में समारोह में? जेसन Hirschhorn: तो इनिशियलाइज़ n करने के लिए एक चर लंबाई, और हम हैं कि बाद में उपयोग करें? लेकिन तब हम सिर्फ लंबाई और हम अद्यतन अभी भी इस समस्या में चला जहां हम हमारी समस्या की लंबाई नीचे कट, लेकिन हम वास्तव में, जहां कभी पता नहीं कि लंबाई पर नक्शे. छात्र: कि होने वाला नहीं है आप कह रहे हैं बाद में जब छोड़ दिया, खोज, सही खोज? आप एक अलग करने के लिए जाने के लिए जा रहे हैं अपने का क्षेत्र - जेसन Hirschhorn: हम जाने के लिए जा रहे हैं एक क्षेत्र के लिए, लेकिन हमें कैसे पता चलेगा पर जाने के लिए जो कर रहे हैं? हम केवल सरणी और यह है, तो एन, हमें कैसे पता है, जहां के लिए सरणी में करने के लिए जाना. पीठ में, हाँ? छात्र: तुम क्या है, जैसे, एक कम बाध्य और एक ऊपरी ही चर या ऐसा कुछ? जेसन Hirschhorn: ठीक है. तो यह एक और विचार है. बल्कि सिर्फ का ट्रैक रखने से आकार, हम कम का ट्रैक रखने और ऊपरी ही चर. तो कैसे हम से आकार की गणना करते हैं एक कम बाध्य और बाध्य ऊपरी? [INTERPOSING आवाज़ें] जेसन Hirschhorn: घटाव. और भी कम का ट्रैक रखने बाध्य और ऊपरी हमें बताने के लिए बाध्य नहीं है, हम इन दो खोज रहे हैं? हम यहाँ पर इन दो खोज रहे हैं? हम मध्य दो खोज रहे हैं? शायद नहीं मध्य दो, क्योंकि यह वास्तव में, द्विआधारी खोज है. लेकिन अब हम आकार प्राप्त करने में सक्षम हो जाएगा, लेकिन यह भी सरणी की सीमा. संक्षेप में, हम अपने विशाल है अगर फोन बुक, हम यह आधे में चीर. उस छोटे जहां अब हम जानते हैं फोन की किताब है. लेकिन हम वास्तव में तेजस्वी नहीं रहे आधे में फोन की किताब. हम अभी भी पता करने की जरूरत है, जहां हमारी समस्या की नई सीमा है. किसी को भी किसी भी सवाल है उस के बारे में? हाँ? छात्र: यह एक बनाने के द्वारा काम करोगे चर, मैं, आप तो बस शिफ्ट कि इसके लिए मैं रिश्तेदार की स्थिति वर्तमान स्थिति, और लम्बाई, एन? जेसन Hirschhorn: और मैं क्या है? छात्र: मैं की तरह की तरह जा रहा है जैसे - जैसे कि अगर आप मुझे होना हस्ताक्षर करना होगा सरणी के बीच स्थिति. और फिर, अगर स्थिति में मूल्य मैं में करने के लिए मिल गया में सरणी के बीच आप की जरूरत मूल्य से भी कम हो, मैं अब सरणी की लंबाई हो जाता है, के साथ साथ मैं का मूल्य 2 से विभाजित. तरह देखते हैं, तुम्हें पता है मैं बदलाव - जेसन Hirschhorn: ठीक है. छात्र: - अप करने के लिए - जेसन Hirschhorn: तो मैं लगभग हूँ काम करेंगे कि सकारात्मक. लेकिन बात जा रहा है, तुम दोनों की जरूरत यहाँ जानकारी के टुकड़े. आप शुरुआत और अंत के साथ ऐसा कर सकते हैं या आप फिर आकार के साथ ऐसा कर सकते हैं, और कुछ मार्कर. लेकिन अगर आप दो टुकड़े की जरूरत है यहां जानकारी की. आप सिर्फ एक साथ मिल नहीं सकते हैं. यह समझ में आता है? इसलिए हम के माध्यम से जाने के लिए जा रहे हैं, और हम क्या करने जा रहे हैं [सुनाई] और कुछ मार्करों बना. तो अगर आप अपने कोड में क्या लिखा है? छात्र: मैं सिर्फ इतना कहा INT बाध्य एक 0 के बराबर है. जेसन Hirschhorn: चलो कहते हैं कि INT, शुरुआत. छात्र: ठीक है. जेसन Hirschhorn: यह बनाता है मेरे लिए और अधिक समझ. और? छात्र: मैं समाप्त होने int, मुझे लगता है, ने कहा. जेसन Hirschhorn: समाप्त होने int. छात्र: मुझे लगता है, एन शून्य से 1 या ऐसा कुछ. की तरह, पिछले तत्व. जेसन Hirschhorn: तो आप ने लिखा, INT बराबरी 0, अर्धविराम, और int शुरुआत समाप्त एन शून्य से 1, अर्धविराम के बराबर होती है. तो अनिवार्य रूप से, हम क्या कर रहे हैं यहाँ, पहले स्थान पर 0. हम सरणियों में जानते हैं, वे मत जाओ n करने के लिए ऊपर, वे 1 n करने के लिए शून्य से ऊपर जाना है. इसलिए हम अपने सरणी की कुछ सीमा है. और इन प्रारंभिक सीमा होना होगा हमारी समस्या की प्रारंभिक सीमा. ठीक है. तो यह अच्छा लगता है. फिर हम वापस इस लाइन के लिए जाना है, जबकि सूची की लंबाई, 0 से अधिक है क्या, बजाय n के, चाहिए हम यहाँ में डाल दिया? छात्र: शून्य से शुरुआत समाप्त होने लिखें. जेसन Hirschhorn: ऋण को समाप्त हुए जबकि शुरुआत 0 से अधिक है? ठीक है. और हम हम चाहते थे, कर सकते थे करना है कि एक सा अच्छा, क्या नहीं तो हम कर सकते थे? हम साफ करना चाहते थे थोड़ा ऊपर इस कोड? कैसे हम 0 से छुटकारा मिल सकता है? यह सिर्फ एक शैली सवाल है. यह ठीक है अब सही है. छात्र: समाप्त नहीं करता बराबर शुरुआत? जेसन Hirschhorn: हम क्या कर सकते हैं? [INTERPOSING आवाज़ें] छात्र: समाप्त अधिक से अधिक है? जेसन Hirschhorn: हाँ. न खत्म होने वाली है, जबकि हम अभी क्या कर सकते हैं शुरुआत से अधिक है. ठीक है. हम दूसरे पक्ष के लिए शुरुआत गयी उस की, और हम 0 से छुटकारा मिल गया. तो यह सिर्फ एक लग रहा है छोटा सा क्लीनर. ठीक है. सूची की लंबाई 0 है तो, जबकि, हम लिखा कि, न खत्म होने वाली है, जबकि अधिक से अधिक है शुरुआत से. हम अपने आवश्यक में डालने के लिए जा रहे हैं घुंघराले ब्रेसिज़, और तब पहली बात हम क्या करना चाहते हैं पर देखने के लिए है एक छोटी सूची में उन्हें. आप? आप मुझे दे सकते हैं - छात्र: यदि कोष्ठक मूल्य वर्ग ब्रैकेट - जेसन Hirschhorn: कोष्ठकों हैं मूल्य वर्ग ब्रैकेट. छात्र: 2 से विभाजित समाप्त. जेसन Hirschhorn: समाप्त? छात्र: मैं आपके साथ एक समस्या देखते हैं - जेसन Hirschhorn: ठीक है. खैर, बीच में देखो. कैसे हम मध्य है क्या जानते हो? हाँ. तो मुझे लगता है कि कोड को नष्ट करते हैं. कैसे हम मध्य है क्या जानते हो? कुछ में, आप शुरुआत है जब और अंत में, आप कैसे पता करूँ मध्य? छात्र: आप औसत. छात्र: आप उन्हें जोड़ एक साथ और फिर - जेसन Hirschhorn: उन्हें जोड़ें एक साथ और फिर? छात्र: और आप औसत. 2 से विभाजित. जेसन Hirschhorn: उन्हें जोड़ें एक साथ और 2 से विभाजित. तो INT बीच बराबर होती है? टॉम, आप मुझे दे सकते हैं? छात्र: शुरू प्लस समाप्त होने - जेसन Hirschhorn: शुरुआत प्लस समाप्त. छात्र: सभी, ब्रैकेट, 2 से विभाजित. जेसन Hirschhorn: सभी, कोष्ठकों में, 2 से विभाजित. इसलिए कि मुझे बीच देता है कुछ भी की, सही? छात्र: तुम भी यह ऊपर दौर की जरूरत है. जेसन Hirschhorn: जो आप करना मतलब, मैं यह दौर की जरूरत है? [INTERPOSING आवाज़ें] छात्र: क्योंकि यह एक अजीब है अगर संख्या, तो यह की तरह है - जेसन Hirschhorn: ठीक है, ठीक है. इसलिए मैं इसे गोल कर सका. यह एक विषम संख्या, एक 5 है लेकिन, अगर मैं कर सकता हूँ दूर बीच में से 1 ले रही है. या यह एक भी नंबर है, बल्कि, कि एक बेहतर मामला है. यह 4 है, तो हम केवल 4 है, मैं ले जा सकते हैं पहली "मध्यम", बोली, गंदें शब्द बोलना या दूसरा "मध्यम" एक. या तो एक द्विआधारी खोज के लिए काम करेगा, इसलिए मैं वास्तव में यह गोल करने की जरूरत नहीं है. लेकिन एक दूसरी बात मैं नहीं है इस लाइन पर देखने की जरूरत है. हम अभी तक यह पता नहीं हो सकता लेकिन हम इसे वापस करने के लिए आया हूँ. इस लाइन वास्तव में अभी भी है क्योंकि एक दूसरी बात की जरूरत है. लेकिन अब तक हम लिखा है कोड की चार लाइनें. हम हमारी शुरुआत मिल गया है और मार्करों समाप्त. हम जो नक्शे हमारे जबकि पाश है, पर सीधे हमारे pseudocode के लिए. हम कि नक्शे बीच में देख रहे हैं सीधे हमारे pseudocode पर. मैं इस बीच करने के लिए चला जाता है कहेंगे सूची की, कोड की इस पंक्ति. और फिर, एक बार हम के बीच करने के लिए जाना सूची, हमें करना चाहिए अगली बात हमारे मूल्य के लिए अगर वहाँ की जांच कर रहा है pseudocode हम पहले लिखा था. तो हम कैसे की जाँच करते हैं, तो हमारे मूल्य सूची के मध्य में है? तुम. तुमने ऐसा क्यों नहीं करते? छात्र: हमारे मूल्य की है मध्य में करने के लिए बराबर है हम सेट जो कुछ भी - मैं करने के लिए बराबर बराबर मतलब है - जेसन Hirschhorn: यह - ठीक है. छात्र: मुझे यकीन नहीं है क्या चर हम देख रहे हैं के लिए हालांकि, क्योंकि - [INTERPOSING आवाज़ें] छात्र: [सुनाई]. जेसन Hirschhorn: बिल्कुल. समारोह घोषणा के अनुसार, हम एक मूल्य के लिए देख रहे हैं. तो हम एक मूल्य के लिए खोज कर रहे हैं मूल्यों की एक सरणी में. तो आप बिल्कुल ठीक कह रहे हैं. आप क्या करेंगे, अगर खुला कोष्ठक मूल्य ब्रैकेट मध्य ब्रैकेट बराबरी बंद अंदर वहाँ मूल्य के बराबर होती है, और हम क्या करने की जरूरत है? यदि हमारे मूल्य के वहाँ, क्या हम क्या करने की जरूरत है? [INTERPOSING आवाज़ें] छात्र: शून्य लौटें. जेसन Hirschhorn: वापसी सच. छात्र: वापसी सच. जेसन Hirschhorn: माइकल, इस लाइन क्या करता है? छात्र: [सुनाई] कार्यक्रम चलाने की है अपने पाठ्यक्रम, और उस पर है, और क्या आप क्या करने की जरूरत है? जेसन Hirschhorn: कार्यक्रम या क्या? इस मामले में? छात्र: समारोह. जेसन Hirschhorn: समारोह. और हां, तो कहा जाता है जो कुछ करने के लिए वापस जाने के लिए यह और यह सच है, यह मूल्य दे. बिल्कुल सही. मुख्य. वापसी प्रकार क्या है मुख्य रूप से, माइकल? छात्र: int, पूर्णांक? जेसन Hirschhorn इंट, बिल्कुल. एक पूर्णांक. सुनिश्चित कर लें कि सिर्फ एक सवाल था तुम लोगों को इसके बारे में शीर्ष पर रहे हैं. यह आमतौर पर करते हैं, तो क्या वापस करता है सभी चीजों को अच्छी तरह से काम कर रहे हैं? छात्र: शून्य. जेसन Hirschhorn: शून्य. बिल्कुल सही. छात्र: यह सिर्फ सच देता है, दिया जा रहा है वहाँ कोई जानकारी नहीं है के बारे में क्या - ओह, यह सिर्फ यह कह रहा है कि कि मूल्य सरणी के अंदर है. जेसन Hirschhorn: बिल्कुल. इस कार्यक्रम की जानकारी नहीं दे रहा है मूल्य है वास्तव में, जहां की. यह केवल हां, हमने पाया है, कह रहा है यह, या नहीं, हम यह नहीं मिल रहा था. तो नंबर मिला, तो सच वापसी. खैर, असल में हम सिर्फ था कि वास्तव में जल्दी कोड की है कि एक लाइन के साथ. इसलिए मैं pseudocode की कि लाइन कदम होगा. छात्र: हम ज़रूरत नहीं है सरणी बदलने के लिए? यह सही, मूल्यों, नहीं मान होना चाहिए? जेसन Hirschhorn: क्षमा करें. धन्यवाद. छात्र: हाँ. जेसन Hirschhorn: यह पंक्ति मान होना चाहिए. बिल्कुल सही. ठीक है. इसलिए हम मध्यम सूची में देखा है. नंबर मिला वापसी अगर सही है. अगर, हमारे pseudocode साथ जारी रखने पर बीच अधिक से अधिक है, खोज के लिए छोड़ दिया. तो अगर मैं यहाँ में था संख्या उच्च, खोज छोड़ दिया. Constantine, आप दे सकते हैं मुझे कोड की इस पंक्ति? छात्र: मध्य की तो मान - जेसन Hirschhorn: तो मूल्य हैं - खुले कोष्ठक ब्रैकेट मूल्यों अगर मध्य बंद कोष्ठक में - छात्र: मूल्य की तुलना में छोटा होता है? जेसन Hirschhorn: से भी कम है. छात्र: मूल्य से भी कम. जेसन Hirschhorn: मान. खैर, असल में, आप करना चाहते हैं संख्या की जांच अगर - माफ़ कीजिए. यह एक छोटे से भ्रामक है. लेकिन बाकी अगर में संख्या सूची के बीच अधिक से अधिक है. छात्र: ओह, ठीक है. जेसन Hirschhorn: मुझे लगता है कि बदल देंगे. बीच में अधिक है और अगर, हम ठीक है, छोड़ दिया खोज करना चाहते हैं? और हम अंदर क्या करें इस हालत तो क्या होगा? छात्र: मैं करने के लिए एक छोटा सा परिवर्तन कर सकते हैं अगर हालत, किसी और के लिए इसे बदल? जेसन Hirschhorn: अगर और कुछ? ठीक है. इसलिए इस कोड को क्रियान्वित करेगा उसी के बारे में. लेकिन बाकी, अगर उपयोग करने के बारे में अच्छी बात , अगर या अगर किसी और और अगर, किसी और, अगर उन में से केवल एक ही जा रहा है इसका मतलब है कि जाँच की जा, नहीं उन सभी को तीन, संभवतः. और कहा कि यह एक छोटा सा बना देता है है कि कंप्यूटर पर अच्छे अपने कार्यक्रम चल रहा है. तो [? Constantine,?] हम मूल्यों यदि नहीं, तो इस लाइन के अंदर हो ब्रैकेट बीच करीब ब्रैकेट मूल्य से अधिक है. हम क्या करने की जरूरत है? हम छोड़ खोज की जरूरत है. हम यह कैसे करते हो? मैं आपको एक शुरुआत देने जा रहा हूँ. हम कहा जाता है कि इन दो बातें हैं शुरुआत और अंत. तो क्या होने की जरूरत शुरुआत करने के लिए? आप की बाईं खोज करना चाहते हैं सूची में, हम अपने वर्तमान शुरुआत मिलता है. क्या हम ऐसा करने की क्या ज़रूरत है? छात्र: हम शुरुआत सेट मध्य प्लस 1 करने के लिए. जेसन Hirschhorn: तो हम कर रहे हैं बाईं खोज? छात्र: माफ करना, मध्य घटा - इसलिए समाप्त होने के बीच होगा शून्य से 1 और शुरुआत - जेसन Hirschhorn: और क्या शुरुआत करने के लिए होता है? छात्र: यह एक ही रहता है. जेसन Hirschhorn: तो अर्थ एक ही रहता है. हम बाईं खोज रहे हैं, हम कर रहे हैं एक ही शुरुआत का उपयोग - बिल्कुल सही. और अंत? क्षमा करें, क्या करता है फिर से बराबर समाप्त होने? छात्र: मध्य शून्य से 1. जेसन Hirschhorn: मध्य शून्य से 1. अब, क्यों शून्य से 1, मध्य न सिर्फ? छात्र: मध्यम से बाहर है हम था, क्योंकि पहले से ही तस्वीर यह बाहर है कि जाँच की? जेसन Hirschhorn: यह है बिल्कुल सही. मध्य तस्वीर से बाहर है. हम पहले से ही मध्य जाँच की. तो हम ", मध्य" भाव नहीं करना चाहती गंदें शब्द बोलना, में होना जारी हम देख रहे हैं कि सरणी. तो यह शानदार है. वरना मूल्यों ब्रैकेट बीच अधिक से अधिक है, तो मूल्य के बराबर समाप्त होने से मध्य शून्य से 1. जेफ, क्या यह अंतिम पंक्ति के बारे में? छात्र: नहीं. मान मध्यम मूल्य से कम है? जेसन Hirschhorn: हम करेंगे तुम किसी और मुझे दे रहे हैं. आप मुझे देना नहीं है तो - छात्र: तो फिर शुरुआत मध्य प्लस 1 होगा. जेसन Hirschhorn: शुरुआत के बराबर होती है मध्य प्लस 1, फिर से, के लिए एक ही कारण यह है कि कांस्तान्तिने पहले हमें दिया. और अंत में, जो नहीं दिया गया है अभी तक मुझे कोड की एक पंक्ति? झूठे, Aleha, बदले क्या हम यहाँ लिख सकता हूँ? छात्र: झूठी वापसी. जेसन Hirschhorn: झूठी वापसी. और हम ऐसा करने की जरूरत है क्योंकि अगर हम यह नहीं मिल रहा है, हम जो कहते है की जरूरत है यह नहीं मिल रहा था. और हम हम वापस जा रहे हैं ने कहा कि एक bool, तो हम निश्चित रूप से वापस जाने के लिए एक bool कहीं. तो चलो इस कोड चलाते हैं. मैं वास्तव में करने के लिए जा रहा हूँ - इसलिए हम टर्मिनल में हैं. हम अपने खिड़की स्पष्ट करेंगे. के सभी करते हैं. हम एक त्रुटि है पाया. उम्मीद की लाइन 15 पर एक त्रुटि, वहाँ के अंत में अर्धविराम घोषणा. तो मैं क्या भूल गए? छात्र: अर्द्धविराम. जेसन Hirschhorn: अर्द्धविराम यहीं. मुझे लगता है कि टॉम कोड था. तो टॉम, [सुनाई]. बस मजाक कर. ऑल फिर बना कर दें. छात्र: क्या ड्रॉपबॉक्स निर्देशिका हम इस बात के लिए में होना चाहिए? जेसन Hirschhorn: तो आप कर सकते हैं बस इस बिट के लिए देखते हैं. लेकिन फिर, आप इस कदम चाहता था अगर प्रयास करने के लिए अपने pset3 निर्देशिका में कोड यह बाहर, कि मैंने क्या किया है. आप यहाँ ध्यान देंगे तो - क्षमा करें, अच्छा सवाल है. [? रास,?] मैं यहां है find.c कोड इस सप्ताह के distro कोड से. मैं helpers.h है. मुझे लगता है कि मैं वास्तव में एक बनाने फ़ाइल है इन नए शामिल करने के लिए एक सा संपादित हम लिख रहे हैं फ़ाइलों. उस कोड के सभी, उपलब्ध नहीं होगा वितरण कोड, लेकिन नया फ़ाइल बनाओ, नई helpers.h दायर करेंगे डाउनलोड करने के लिए ऑनलाइन उपलब्ध हो. फिर, तो उन हैं अतिरिक्त कोड हम हैं. तो सभी करते हैं, इस लाइन के अनुसार, लगता है बनाता है बाइनरी, बुलबुला चयन - बनावट सभी उनमें से तीन और में संकलित इस निष्पादन योग्य कोड को खोजने के. तो आम तौर पर, हम नहीं चाहते सीधे check50 करने के लिए. हम अपने दम पर कुछ परीक्षण चलाने के लिए चाहते हैं. लेकिन अभी तो हम, यह थोड़ा तेज कर सकते हैं check50 2013 pset3.find समाप्त हो जाएगी मेरा बुरा - helpers.c में. मैं अभी उस जरूरत नहीं है. इसलिए हम वास्तव में करने के लिए जा रहे हैं असली के लिए कोड चलाते हैं. Usage.find /, तुम क्या इसका मतलब पता है? छात्र: आप एक दूसरे की जरूरत है इस पर कमांड लाइन. जेसन Hirschhorn: मैं जरूरत एक दूसरा आदेश पंक्ति. और विनिर्देश प्रति, मैं जरूरत हम देख रहे हैं क्या भरना है. तो चलो 42 के लिए देखते हैं. हम इसमें यह रखेंगे क्योंकि हम अभी तक एक तरह कार्य नहीं लिखा है - 42, 43, 44. और नियंत्रण विकास नहीं मिला सूखी घास का ढेर में सुई. यह बुरा है. यह निश्चित रूप से नहीं है. कुछ और कोशिश करते हैं. मैं डाल शायद यह है क्योंकि शुरुआत में यह. 41, 42, 43 करते हैं. हम वहाँ जाते हैं. यह पाया. बस, अब अंत में डाल दिया इसलिए हम पूरी तरह से हो सकता है - 40, 41, 42. सुई नहीं मिला था. तो मैं यह पहले उल्लेख किया है. दुर्भाग्य से, मैं यह जानता था होने जा रहा था. लेकिन शैक्षणिक उद्देश्यों के लिए, यह यह पता लगाने के लिए अच्छा है. यह काम नहीं करता. किसी कारण के लिए, यह नहीं मिल सकता है. हम वहाँ में क्या है पता है, लेकिन हम यह नहीं मिल रहे हैं. तो हम क्या कर सकते हैं एक बात के माध्यम से जाना है GDB, यह लगता है, लेकिन किसी को भी करता है के लिए GDB से गुजर रही बिना, एक हम खराब कर दिया, जहां की भावना? [? Madu? ?] छात्र: मैं इसे समाप्त किया जा सकता है जब लगता है शुरुआत करने के लिए बराबर है, और यह बात है सिर्फ एक एक तत्व सूची. तो यह सिर्फ बजाय इसे अनदेखा वास्तव में यह जाँच. जेसन Hirschhorn: यह है बिल्कुल सही. समाप्त शुरुआत बराबर होती है, हम करते हैं अभी भी हमारी सूची में एक तत्व है? छात्र: हाँ. जेसन Hirschhorn: हाँ, वास्तव में, हम एक और केवल एक तत्व है. और कहा कि सबसे अधिक संभावना है जब कुछ नहीं होगा, हम परीक्षण कोड के अनुसार, हम कर रहे हैं पर टेबल की या कम से सामने टेबल के अंत. जहां शुरुआत और है कि समाप्त होने के बराबर जा रहा है द्विआधारी खोज के साथ एक,. तो उन दो मामलों में यह काम नहीं किया, समाप्त होने की वजह से शुरुआत करने के लिए बराबर था. लेकिन न खत्म होने वाली है, तो शुरुआत के बराबर है इस समय पाश निष्पादित करता है? यदि ऐसा नहीं होता. और हम जाँच कर सकते थे कि फिर से GDB के माध्यम से. तो कैसे हम इस कोड को ठीक कर सकते हैं, क्योंकि न खत्म होने वाली है, जबकि करने के लिए बराबर है जब शुरुआत है, हम भी यह चाहते हैं पाश को चलाने के लिए करते हैं. इसलिए हम 18 लाइन के लिए क्या तय कर सकते हैं? छात्र: [सुनाई] अधिक है अधिक या बराबर. जेसन Hirschhorn: बिल्कुल सही. समाप्त होने से बड़ा है, जबकि या शुरुआत के बराबर. तो अब, हम उस पाने के लिए सुनिश्चित करें अंत में कोने मामला. और चलो देखते हैं. चलो यह एक बार और चलाते हैं. हम सब करते हैं. फिर, आप के लिए होगा बस यहाँ के साथ पालन करें. 41 इस समय का पता लगाएं. बस इसे लगातार रखना. 42 का पता लगाएं. शुरुआत में डाल दिया - 42, 43, 44. हम यह पाया. तो यह है कि वास्तव में परिवर्तन किया गया था हम बनाने की जरूरत है. यही कारण है कि हम कोडिंग के एक बहुत था बस, द्विआधारी खोज किया. किसी के सामने कोई प्रश्न है मैं हम में लिखा लाइनों में पर कदम द्विआधारी खोज या हम कैसे लगा हम यह पता लगाने की क्या किया? हम आगे बढ़ने से पहले, मैं भी कहना चाहता हूँ कि द्वारा और बड़े बाहर, हम मैप किया हमारे छद्म कोड एक को हमारे कोड पर एक. हम चाहते हैं कि मुश्किल बात यह है था साथ यह पता लगाने के लिए शुरुआत और अंत. लेकिन तुम, कि बाहर सोचा नहीं था बहुत ज्यादा लिखा होता समान कोड के लिए एक बचा उन शीर्ष दो लाइनों. और फिर आपको एहसास होता है जब आप चेक और मामलों में यह बना कि आप कुछ और की जरूरत है. आप का पालन किया था तो भी अगर हमारे रेखा को छद्म कोड लाइन, आप है होगा की दो लाइनों लेकिन सब मिल गया आप लिखने की जरूरत कोड. और मुझे यकीन करने को तैयार होगी कि तुम लोग सब पता लगा है कि होगा बहुत जल्दी, तुम डाल करने के लिए आवश्यक है कि मार्कर के कुछ प्रकार में लगाने की आप कहाँ थे बाहर. यही कारण है कि फिर से, कर की शक्ति है छद्म कोड समय से आगे. इसलिए हम तो पहले तर्क करते हैं, और कर सकते हैं हम वाक्य रचना के बारे में चिंता कर सकते हैं. हम तर्क के बारे में भ्रमित किया गया था जबकि सी में इस कोड लिखने की कोशिश कर, हम सब गड़बड़ हो गया होता. और फिर हम के बारे में सवाल पूछ रही होगी तर्क और वाक्य रचना और meshing उन्हें एक साथ सभी. और हम खो मिल गया होता जल्दी से एक बन सकता है क्या में बहुत कठिन समस्या है. तो चलो अब चलते हैं चयन के आधार पर क्रमबद्ध करने के लिए. हम छोड़ दिया 20 मिनट है. इसलिए मुझे लगता है कि हम करने में सक्षम नहीं होगा एक लग रहा है चयन की तरह सभी के माध्यम से मिलता है और बुलबुला तरह. लेकिन हमें कम से कम प्रयास करते हैं चयन के आधार पर क्रमबद्ध खत्म करने के लिए. तो प्रकार का उपयोग कर चयन लागू समारोह घोषणा के बाद. फिर, यह से लिया जाता है समस्या विनिर्देश निर्धारित किया है. इंटरनैशनल मूल्यों कोष्ठक, है पूर्णांकों की सरणी. और int.n कि सरणी के आकार है. चयन के आधार पर क्रमबद्ध जा रहा है इस सरणी सॉर्ट करने के लिए. चयन के बारे में हमारी मानसिक मॉडल के प्रति इतना सॉर्ट, हम खींच - सबसे पहले, हम सूची के माध्यम से पहले जाना समय, सबसे छोटी संख्या लगता है, शुरुआत में यह डाल, दूसरा लगता है सबसे छोटी संख्या, में डाल दिया हम चाहते हैं, तो दूसरे स्थान पर आरोही क्रम में सॉर्ट. मैं आपको लिखने के लिए मजबूर नहीं कर रहा हूँ छद्म कोड अभी. लेकिन हम में एक वर्ग के रूप में कोड पहले पांच मिनट, हम लिखने जा रहे हैं छद्म कोड इसलिए हम कुछ समझ नहीं है की जहां हम जा रहे हैं. तो छद्म कोड लिखने का प्रयास अपने दम पर. और फिर उस बारी करने का प्रयास कोड में छद्म कोड. हम एक समूह के रूप में है कि क्या करेंगे पांच मिनट में. और हां, मुझे पता है अगर आप किसी भी प्रश्न हैं. छात्र: क्या ऐसा है? जेसन Hirschhorn: कितनी दूर आप देखें दो मिनट में मिल सकती है. मैं आप नहीं होगा समझने खत्म करने में सक्षम हो. लेकिन हम एक समूह के रूप में इस पर जाना होगा. आप सभी [सुनाई] तो कोडिंग कर रहे हैं, तो मैं कर रहा हूँ आप क्या कर रहे हैं थामने के लिए क्षमा करें. लेकिन एक समूह के रूप में इस के माध्यम से चलते हैं. और फिर, द्विआधारी खोज, आप सब दे मुझे एक कोड के अधिक लाइनें हैं. उस के लिए धन्यवाद. हम एक ही बात करने जा रहे हैं यहाँ, एक समूह के रूप में एक साथ कोड. इसलिए चयन के आधार पर क्रमबद्ध - की लिखने कुछ जल्दी छद्म कोड. मानसिक मॉडल के अनुसार, किसी ने मुझे दे सकते हैं छद्म कोड की पहली पंक्ति, कृपया? मुझे क्या करना चाहते हैं? छात्र: जबकि सूची आदेश से बाहर है. जेसन Hirschhorn: ठीक है, जबकि सूची के आदेश से बाहर है. और तुम "के आदेश से बाहर?" क्या मतलब है छात्र: जबकि [सुनाई] क्रमबद्ध नहीं किया गया है. जेसन Hirschhorn: जबकि सूची आदेश से बाहर है, हम क्या करें? मुझे दूसरी लाइन दे, कृपया, मार्कस. छात्र: तो अगली लगता है सबसे छोटी संख्या. इस इंडेंट किया जाएगा. जेसन Hirschhorn: तो लगता है अगले सबसे छोटी संख्या. और फिर किसी और को? हम छोटी अगले मिलने के बाद संख्या, हम क्या करें? मैं खोजने के कहने जा रहा हूँ सबसे छोटी संख्या. यही कारण है कि हम क्या करना चाहते है. तो सबसे छोटी संख्या पाते हैं. तो हम क्या करें? छात्र: [सुनाई] शुरुआत करने के लिए. जेसन Hirschhorn: क्षमा करें? छात्र: में जगह सूची की शुरुआत. जेसन Hirschhorn: तो में जगह सूची की शुरुआत. और हम बात करने के लिए क्या करते हैं कि शुरुआत में था सूची की, है ना? हम कुछ overwriting रहे हैं. तो हम कहाँ कि रखा है? हाँ, अन्ना? छात्र: कहाँ सबसे छोटी नंबर था? जेसन HIRSHHORN: तो शुरुआत डाला सूची का जहां सबसे छोटी संख्या थी. सूची के आदेश से बाहर है तो, वहीं लगता है सबसे छोटी संख्या, में जगह सूची की शुरुआत, डाल सूची की शुरुआत जहां सबसे छोटी संख्या थी. मार्कस, आप इस लाइन rephrase कर सकते हैं सूची के आदेश से बाहर है, जबकि? छात्र: एक ओर जहां संख्या क्रमबद्ध नहीं किया गया है? जेसन HIRSHHORN: ठीक है, तो क्रम में करने के लिए संख्या नहीं किया गया है कि पता हल, हम क्या करने की जरूरत है? हम कैसे ज्यादा जरूरत है इस सूची के माध्यम से जाना? छात्र: तो मैं एक पाश के लिए लगता है, या जबकि, संख्या की जाँच की है, जबकि कम है सूची की लंबाई से? जेसन HIRSHHORN: ठीक है, यह अच्छी बात है. मैं मैं misphrased लगता मेरा सवाल खराब. मैं बस पर प्राप्त करने के लिए कोशिश कर रहा था हम जाने के लिए किया जा रहे हैं पूरी सूची के माध्यम से. सूची के आदेश से बाहर है तो, जबकि, मेरे लिए, पर मैप करने के लिए कठिन है. लेकिन मूल रूप से, कि कैसे मैं इस बारे में सोचते हैं. लगता है, पूरी सूची के माध्यम से जाओ सबसे छोटी संख्या, में जगह शुरुआत - वास्तव में, आप ठीक कह रहे हैं. उन्हें दोनों डाल दिया. सूची के आदेश से बाहर है तो, जबकि हम पूरी सूची के माध्यम से जाने की जरूरत एक बार छोटी संख्या, जगह मिल यह सूची की शुरुआत में, डाल सूची की शुरुआत जहां सबसे छोटी संख्या थी, और उसके बाद अगर सूची हम है, क्रम से अभी भी बाहर है इस के माध्यम से जाने के लिए मिला प्रक्रिया फिर से, सही? यही कारण है कि चयन के आधार पर क्रमबद्ध, बड़े हे देखने का समय है चयन की तरह, किसी को? छात्र: n चुकता. जेसन HIRSHHORN: N चुकता. मार्कस और मैं बस एहसास की तरह है क्योंकि यहाँ, हम करने के लिए जा रहे हैं सूची सूची के माध्यम से जाना बार की संख्या. इसलिए की कुछ के माध्यम से जा रहा लंबाई एन बार की संख्या वास्तव में पता चुकता है. तो यह हमारे स्यूडोकोड है. यह बहुत अच्छा लग रहा है. किसी को भी किसी भी सवाल है pseudocode के बारे में? वास्तव में चयन के आधार पर क्रमबद्ध चाहिए, क्योंकि शायद से एक, कोड के लिए एक आना pseudocode. के बारे में तो कोई प्रश्न pseudocode का तर्क? अब यह कहें. चुनाव में तरह - सूची से बाहर है, जबकि आदेश की, हम इसे माध्यम से जाने के लिए जा रहे हैं और छोटी से छोटी हर बार लगता है और सामने रख दिया. सूची, यह कर सकते हैं आदेश से बाहर है तो, जबकि कोई मुझे कोड की लाइन दे, जो मुझे एक लाइन भी नहीं छोड़ी कृपया, अभी तक कोड की? यह एक तरह क्या लगता है? छात्र: यही कारण है कि पाश के लिए एक है. जेसन HIRSHHORN: यह लगता है पाश के लिए एक पसंद है. ठीक है, तुम मुझे पाश के लिए दे सकते हैं? के लिए - छात्र: मैं 0 के बराबर है. जेसन HIRSHHORN: मैं या - हम क्या याद आ रही है? क्या यहीं हो जाता है? छात्र: इंट. जेसन HIRSHHORN: बिल्कुल. - (I = 0 int छात्र: मैं n <, मैं + +). जेसन HIRSHHORN: जेफ, यह किसी न किसी. हम सही, सूची के माध्यम से जा रहे हैं? हम पहले कि कोड देखा है. बिल्कुल सही. तो चलिए हमारे यहाँ घुंघराले ब्रेसिज़ डाल दिया. मैं कुछ डाल करने के लिए जा रहा हूँ यहाँ घुंघराले ब्रेसिज़. यह 0 है तो, जबकि हम जाने की जरूरत पूरी सूची के माध्यम से. तो हर बार हम सूची के माध्यम से जाना क्या हम पर नज़र रखने के लिए करना चाहते हैं? छात्र: किसी भी स्वैप बना रहे हैं. जेसन HIRSHHORN: खोजें सबसे छोटी संख्या. तो हम शायद ट्रैक के रखना चाहिए सबसे छोटी संख्या हर बार. तो रेखा मैं ट्रैक रखने के लिए क्या कर सकते हैं सबसे छोटी संख्या की? Aleha, मैं कैसे रख सकते हैं कुछ का ट्रैक? छात्र: एक नया चर प्रारंभ करें. जेसन HIRSHHORN: एक नया चर प्रारंभ करें. तो चलो एक चर बना सकते हैं. किस तरह के? छात्र: इंट. जेसन HIRSHHORN: इंट. की सबसे छोटी कहते हैं. और क्या यह बराबर जब करता है हम अभी से शुरू कर रहे हैं? हम अभी तक सूची के माध्यम से नहीं किया है. हम के पहले भाग में कर रहे हैं के माध्यम से हमारी पहली बार की सूची. यह बराबर क्या करता है, सबसे छोटी संख्या? छात्र: मान मैं. जेसन HIRSHHORN: मानों मैं. यह ठीक है, बिल्कुल सही लगता है? शुरुआत में सबसे छोटी संख्या हम कहाँ है. तो अब हम हमारी छोटी से छोटी है, और हम की जरूरत पूरी सूची के माध्यम से जाने के लिए सबसे छोटी इस तुलना बाकी सब के लिए. तो हम फिर से सूची के माध्यम से जाना है? माइकल? छात्र: तुम बनाने की जरूरत पाश के लिए एक और. जेसन HIRSHHORN: पाश के लिए एक और. चलो करते हैं. मुझे कुछ कोड दे. छात्र: पाश के लिए - छोटी से छोटी के लिए - बस जम्मू int, आप कह सकते हैं? = 0; ऐसी है कि - जेसन HIRSHHORN: ठीक है, हम चाहते हैं पूरी सूची के माध्यम से जाने के लिए - छात्र: जम्मू