[संगीत खेल] डेविड जे Malan: सब ठीक है. इस CS50 है, और इस 2 सप्ताह के अंत है. तो आज, हम जा रहे हैं हमारी नज़र जारी रखने के लिए हम चीजों का प्रतिनिधित्व कैसे hood-- दूर जाने के नीचे पूर्णांकों तरह की संख्या से और बिंदु मूल्यों चल और तार पर ध्यान केंद्रित है और अंत में अधिक दिलचस्प कार्यक्रम. लेकिन हम भी एक पर एक नज़र रखेंगे डोमेन विशिष्ट problems-- की जोड़ी पहले जो होगा की क्रिप्टोग्राफी शामिल हो, जानकारी पांव मार करने की कला, जिसमें आप यहाँ ऊपर देखें रेडियो अनाथ एनी की एक तस्वीर है पुराने से रहस्य कूटवाचक अंगूठी. यह वास्तव में बहुत आदिम रूप है और cryptopgraphy के बच्चों के अनुकूल फार्म इस अंगूठी को दो disks-- है जिससे एक अंदर और एक बाहर. और से, उन में से एक आप कर सकते हैं घूर्णन अनिवार्य रूप से एक तरह पत्र अप लाइन अन्य पत्र के साथ जेड के माध्यम से दूसरे शब्दों में ए के माध्यम से बी जैसे, आप सचमुच वर्णमाला घुमा सकते हैं, जिससे एक मानचित्रण से साथ आ रहा है पत्र को पत्र कि, यदि ऐसा है तो आप एक गुप्त संदेश भेजना चाहते थे एनी की तरह किसी के लिए, आप लिख सकते हैं फिर बारी बारी से और अपने संदेश नीचे पत्र, जिससे आप मतलब अगर आप के बजाय कहते हैं, "एक" कहने के लिए "बी" आपके कहने का मतलब "बी" आप के बजाय 'सी' का कहना है कि - या कुछ एक छोटे से अधिक चतुर that-- से और फिर, अंत में, इतने लंबे समय एनी इस विकोडक के रूप में अंगूठी, वह संदेश को डिकोड कर सकते हैं. अब, आप, वास्तव में, याद यह है कि हो सकता है एक बहुत प्रसिद्ध फिल्म में इस्तेमाल किया गया था कि दौरान विज्ञापन nauseum नाटकों क्रिसमस के मौसम. यहाँ एक नज़र रखना. Ralphie पार्कर: "यह रहो सारांश में सभी को ज्ञात राल्फ पार्कर इसके द्वारा नियुक्त किया जाता है कि लिटिल अनाथ एनी गुप्त का सदस्य सर्किल और सभी के लिए हकदार है सम्मान और लाभ बहां होने वाली. " Ralphie पार्कर (narrating): लिटिल अनाथ एनी हस्ताक्षर किए. प्रतिहस्ताक्षरित, पियरे आंद्रे! स्याही में. सम्मान और लाभ, पहले से ही नौ वर्ष की आयु में. [संगीत खेल] [रेडियो बकवास] Ralphie पार्कर: आओ. इसके साथ पर मिलता है. मैं सभी कि जाज की जरूरत नहीं है तस्करों और समुद्री डाकुओं के बारे में. रेडियो उद्घोषक: कल सुनो समापन साहसिक कार्य के लिए रात काले समुद्री डाकू जहाज के. अब, यह समय एनी के लिए है आप सदस्यों के लिए गुप्त संदेश गुप्त सर्किल की. बच्चों, केवल सदस्यों याद रखें एनी की सीक्रेट सर्किल की एनी के गुप्त संदेश को डिकोड कर सकते हैं. याद रखें, एनी आप पर निर्भर करता है. बी -2 के लिए अपना पिन सेट. यहाँ है message-- 12, 11, 2-- Ralphie पार्कर (narrating): मैं मेरा पहला गुप्त बैठक में हूँ. रेडियो उद्घोषक: --25, 14, 11, 18, 16-- Ralphie पार्कर (narrating): ओह, पियरे महान आवाज आज रात में था. मुझे लगता है कि आज रात की बता सकता है संदेश वास्तव में महत्वपूर्ण था. रेडियो उद्घोषक: --3, 25. यही एनी खुद से एक संदेश है. किसी को बताना नहीं है, याद रखें. [पुताई] Ralphie पार्कर (narrating): नब्बे सेकंड बाद में, मैं हूँ में ही कमरे में घर जहां नौ की एक लड़का गोपनीयता और व्याख्या में बैठ सकता है. आह. "बी" [हंसते] Ralphie पार्कर (narrating): मैं अगले करने के लिए चला गया. "ई" पहला शब्द "हो." है हाँ! अब यह आसान आ रहा था. "यू" [हंसते] रैंडी पार्कर: अरे, Ralphie पर आ गए. मुझे जाना होगा! Ralphie पार्कर: मैं सही नीचे मा हो जाएगा. जी विशेषज्ञ. "टी" "ओ" "भूलें करने के लिए. "क्या" के लिए सुनिश्चित हो "? लिटिल अनाथ एनी क्या था कहने की कोशिश? क्या "के लिए सुनिश्चित हो"? माँ: Ralphie, रैंडी जाने के लिए मिल गया है. आप बाहर आ करेंगे? Ralphie पार्कर: सब ठीक है, माँ! मैं सही बाहर हो जाएगा! Ralphie पार्कर (narrating): मैं करीब अब हो रही थी. तनाव भयानक था. यह क्या था? ग्रह के भाग्य अधर में लटका सकता है. माँ: Ralphie, रेंडी जाना है! Ralphie पार्कर: मैं ठीक हो जाएगा बाहर, जोर से रोने के लिए! Ralphie पार्कर (Narrating): लगभग वहाँ! मेरी उंगलियों उड़ गया! मेरा मन एक इस्पात जाल था. हर रोमकूप स्फूर्त. यह लगभग स्पष्ट हो गया था! हाँ! हाँ! हाँ! हाँ! Ralphie पार्कर: "भूलें अपने Ovaltine पीने के लिए. " Ovaltine? एक फालतू वाणिज्यिक? [संगीत खेल] Ralphie पार्कर: एक कुतिया का बेटा. [हंसते हुए] डेविड जे Malan: तो है कि तो क्या क्रिप्टोग्राफी में एक झलक this-- एक के लिए हो सकता है पुराने से पीते हैं. तो एक त्वरित घोषणा. आप इस के लिए स्वतंत्र हैं, तो शुक्रवार 1:15 पर और होता CS50 के लिए हमें शामिल करना दोपहर का भोजन, यहाँ इस यूआरएल के लिए सिर. पहले पहले सामान्य रूप में सेवा, आ. लेकिन समय के साथ, हम यह सुनिश्चित करें कि बनाती हूँ भाग लेने के लिए चाहते हैं, जो सबसे अधिक किसी को भी शेड्यूल के लिहाज से हो सकता है. तो तार. हम Zamyla-- जिसे है आप अब सबसे अधिक संभावना मिले हैं समस्या सेट में 1-- जिसका नाम इस प्रकार लिखा जाता है. और तुम उसके नाम टाइप लगता है है कि एक कंप्यूटर प्रोग्राम में getString तरह कुछ का उपयोग. पुनः प्राप्त करने के क्रम में उन कीस्ट्रोक्स, कैसे हम एक का प्रतिनिधित्व करने के बारे में जाना है स्ट्रिंग, एक शब्द, एक पैरा, या ये यहाँ की तरह कई पत्र? हम इस बारे में आखिरी बार बात की थी पूर्णांकों और समस्याओं कि पूर्णांक अतिप्रवाह के साथ उत्पन्न होती और बिंदु मूल्यों चल और समस्याओं कि परिशुद्धता के भीतर उत्पन्न होती हैं. तार के साथ, हम कम से कम थोड़ा और अधिक लचीलापन है strings-- क्योंकि बस असली world-- में एक सुंदर मनमाना लंबाई हो सकता है. बहुत कम, बहुत लंबा है. लेकिन फिर भी, हम करने जा रहे हैं लगता है कंप्यूटर कभी कभी यह कर सकते हैं कि स्मृति के बाहर और नहीं भी चलाते हैं एक बहुत बड़ा स्ट्रिंग की दुकान. लेकिन अब के लिए, की कल्पना करने के लिए शुरू करते हैं इन बक्सों में कुछ के रूप में एक स्ट्रिंग यहां. तो छह ऐसे बक्से, जिनमें से प्रत्येक एक चरित्र या प्रतिनिधित्व करता है "चार." C-H-A-r-- है - तो "चार" याद है कि सी में निर्मित में डेटा प्रकारों में से एक और क्या अच्छा है कि आप उपयोग कर सकते हैं उस तरह का एक बिल्डिंग ब्लॉक के रूप में, एक पहेली टुकड़ा, अगर तुम जाएगा, एक के लिए फार्म हम जारी रखेंगे कि डेटा की बड़ी प्रकार एक "स्ट्रिंग." कॉल करने के लिए अब, क्या सोच के बारे में उपयोगी है इस तरह से तार की तरह चीजों के बारे में? खैर, यह हम कर सकते हैं कि पता चला है वास्तव में इस संरचना का लाभ उठाने वास्तव में व्यक्तिगत अक्षर का उपयोग करने के लिए एक बहुत स्पष्ट तरीके से. मुझे आगे जाना है और बनाने के लिए जा रहा हूँ कहा जाता है एक फ़ाइल "stringzero.c," आप चाहें जो कुछ भी है, लेकिन आप यह कह सकते हैं. और हां की वेबसाइट पर है पहले से ही अग्रिम में इस उदाहरण, तो आप की जरूरत नहीं है सब कुछ बाहर लिखें. और मैं आगे जाने के लिए जा रहा हूँ और पहली int मुख्य शून्य करना. और कुछ ही दिनों के भीतर, हम अलग चिढ़ाने के लिए शुरू करेंगे यह कारण है कि क्या शून्य, यहाँ है मुख्य करने के लिए अगले है, और इसके आगे इंट. लेकिन अब के लिए, चलो जारी रखते हैं कॉपी करने के लिए कि पेस्ट. मैं नामक एक स्ट्रिंग की घोषणा करने जा रहा हूँ. और मैं से वापस जाने के लिए जा रहा हूँ में जो कुछ उपयोगकर्ता प्रकार GetString. यह एक सरल होने जा रहा है कार्यक्रम, कोई निर्देश, मैं बस आँख बंद करके जा रहा हूँ उपयोगकर्ता जानता है कि उम्मीद क्या इसे सरल रखने के लिए क्या करना है. और अब मैं पाश के लिए एक के लिए जा रहा हूँ. और मेरे लिए लूप के अंदर मैं हूँ मैं शून्य हो जाता है पूर्णांक के लिए जा रहा. और मैं, फिर से, बस एक परंपरा है गिनती के लिए एक सूचकांक चर, लेकिन मैं जो मैं चाहता हूँ यह कह सकते हैं. मैं मैं अच्छी तरह than-- कम है क्या करने जा रहा हूँ Zamyla के नाम छह पत्र लंबा है. तो मैं कड़ी मेहनत करने के लिए जा रहा हूँ अब वहाँ के लिए कोड है. और फिर मैं ++. और अब इन घुंघराले के अंदर ब्रेसिज़ मैं printf क्या करने जा रहा हूँ और मैं एक मुद्रित करना चाहते हैं एक समय में चरित्र. तो मैं के लिए% C उपयोग करने के लिए जा रहा हूँ शायद पहली बार. और फिर मैं प्रत्येक मुद्रित करना चाहते हैं अपनी पंक्ति में चरित्र. तो मैं एक डाल करने के लिए जा रहा हूँ थोड़ा बैकस्लैश n वहाँ. बंद भाव. और अब मैं यहाँ कुछ करना चाहते हैं. मैं बाहर मुद्रित करना चाहते हैं स्ट्रिंग में विशिष्ट पत्र, एस, मैं पुनरावृति रहा हूँ छह पर शून्य से. दूसरे शब्दों में, मैं चाहता हूँ एस के i'th चरित्र मुद्रित. अब मैं यह कैसे कर सकते हैं? खैर बहुत बक्से में तरह यहाँ इस प्रतिनिधित्व, एक तरह से, मुक्केबाजी की धारणा को आच्छादित में पत्र, इसी प्रकार आप ऐसा कर सकते हैं वाक्य रचना से बस द्वारा निर्दिष्ट सी में, मैं चरित्र i'th एस के बाहर मुद्रित करना चाहते हैं. वर्ग कोष्ठक का उपयोग आपके कंप्यूटर के कीबोर्ड पर एक अमेरिका कीबोर्ड पर हैं आम तौर पर अपनी वापसी कुंजी ऊपर. तो यह बिल्कुल सही नहीं है अभी तक, आप देखा हो. लेकिन मैं की तरह करने के लिए जा रहा हूँ आँख बंद करके यहां आगे बना. और मैं स्ट्रिंग 0 बनाने में क्या करने जा रहा हूँ. मैं यह नहीं लेकिन, इससे पहले की तो देखते हैं हम कुछ आम गलतियों की आशा नहीं कर सकते. इस संकलन करने के लिए जा रहा है? नहीं, मैं चीजों की एक पूरी गुच्छा याद आ रही है. पुस्तकालय मैंने सुना. तो फाइलें हेडर जो मैं यहाँ जोड़ने के लिए चाहते हो सकता है? हाँ. दर्शक: आप की जरूरत मानक मैं / हे [अश्राव्य] डेविड जे Malan: बहुत बढ़िया. इसलिए मैं मानक आई / ओ की जरूरत है. किस लिए उद्देश्य मैं मानक आई / ओ चाहते हैं? Printf लिए. तो stdio.h शामिल हैं. और तुम भी मैं शामिल प्रस्ताव है कि क्या कारण के लिए CS50 पुस्तकालय? तार किया है. तो हम क्या देखेंगे CS50 पुस्तकालय कर रही है एक स्ट्रिंग की इस धारणा बनाने के लिए. लेकिन अब के लिए, तुम सिर्फ सोच सकते हैं यह एक वास्तविक डेटा प्रकार के रूप में. तो यह है कि एक छोटे से साफ किया जा रहा है. और अब मैं आगे जाने के लिए जा रहा हूँ और वास्तव में स्ट्रिंग 0 करते हैं. संकलित. तो यह अच्छी बात है. तो इसलिए हम कर सकते हैं ज़ूम में मुझे अवगत ./string0 और अधिक बारीकी से क्या हो रहा है देखते हैं. लिखें. Z-ए एम वाई एल ए दर्ज करें. और हम Zamyla के नाम करने के लिए बाहर मुद्रित किया है. तो वो काफ़ी अच्छा है. तो अब आगे चलते हैं और फिर इस कार्यक्रम चलाने, और Daven का पूरा नाम बाहर लिखें. आश्चर्य, आश्चर्य. लिखें. हम्म. हम Daven के मुद्रित नहीं किया है सही ढंग से भरा पहला नाम. अब इस में स्पष्ट किया जाना चाहिए क्योंकि क्या का पुनरावलोकन, एक तरह से, बेवकूफ डिजाइन निर्णय? हाँ, मैं हार्ड कोडित मेरे पाश के लिए की छह अंदर. अब मैंने किया था कि केवल क्योंकि मैं Zamyla का नाम पता था छह पत्र होने जा रहा था. लेकिन निश्चित रूप से यह नहीं है एक सामान्य समाधान. यह पता चला है तो हम गतिशील कर सकते हैं एक स्ट्रिंग की लंबाई समझ से बाहर strlen नामक एक समारोह को फोन करके. फिर, जानबूझकर संक्षेप बस नामित टाइप करने के लिए इसे और अधिक सुविधाजनक बनाने के लिए. लेकिन उस का पर्याय बन गया है एक स्ट्रिंग की लंबाई हो रही है. मैं अपने टर्मिनल में वापस जाने के लिए जा रहा हूँ खिड़की और संकलक फिर से चलाते हैं. लेकिन यह मुझ पर चिल्ला रहा है. उलझाव पुस्तकालय समारोह की घोषणा const-- पूर्णांक अहस्ताक्षरित प्रकार के साथ strlen मैं हार गया हूं. पूरी तरह से. तो, खासकर के रूप में अपनी आँखों में चमक के लिए शुरू इस तरह त्रुटि संदेश, ध्यान के साथ ईमानदारी से पहले कुछ शब्दों पर. हम समस्या में है पता लाइन 8, यहाँ संकेत के रूप में. और यह स्ट्रिंग 0.c में है. उलझाव की घोषणा पुस्तकालय समारोह strlen. तो यह है कि आम तौर पर करने जा रहा है त्रुटि संदेशों में से एक पैटर्न होना. उलझाव से कुछ की घोषणा. तो संक्षेप में, मैं करने के लिए लग रहा था क्या है यहाँ, 8 लाइन के लिए सम्मान के साथ किया है. हो सकता है क्या समाधान भी हो आप अपने आप को strlen इस्तेमाल नहीं किया है तो क्या होगा? दर्शक: एक अलग पुस्तकालय का हिस्सा? डेविड जे Malan: भाग एक अलग पुस्तकालय की. यह घोषित किया जाता है तो, तो बात करने के लिए. यह कुछ फ़ाइल में बताया गया है stdio.h और CS50.h. अलावा अन्य अब जहां यह परिभाषित किया गया है? ईमानदार हो, आप या तो बस करना है अपने सिर के ऊपर से यह पता है, या आप यह गूगल और पता. या यह पता है, मैं CS50 में खोल दिया है टर्मिनल प्रोग्राम, उपकरण, जो के सिर्फ बड़े, पूर्ण स्क्रीन संस्करण है क्या एडिट की खिड़की के नीचे में है. और यह एक है कि वहाँ पता चला है कहा जाता है इसी प्रकार संक्षिप्त आदेश, आप में टाइप करें जहां अगर पुस्तिका, के लिए आदमी और एक समारोह के नाम, हिट दर्ज आप काफी वापस मिल जाएगा रहस्यमय प्रलेखन. ऐसा लगता है कि आम तौर पर सिर्फ पाठ है इस तरह एक छोटे से कुछ लग रहा है. यह थोड़ा भारी है पहली नज़र में. लेकिन स्पष्ट रूप से मैं जा रहा हूँ मेरी आँखों में चमक चलो और केवल एक भाग पर ध्यान केंद्रित मैं इस समय के बारे में परवाह है. कौन सा है यह. कौन सा संरचनात्मक तरह लग रहा है कुछ के साथ मैं परिचित हूँ. दरअसल आदमी पेज, तो बात करने के लिए, आपको बता देगा क्या में हैडर एक समारोह फाइल जैसे strlen परिभाषित किया गया है. इसलिए मैं एडिट करने के लिए अब वापस जाने के लिए जा रहा हूँ. और मैं आगे जाने के लिए जा रहा हूँ और यहाँ #include में जोड़ और फ़ाइल सहेजें. मैं साथ स्क्रीन साफ ​​करने के लिए जा रहा हूँ नियंत्रण एल तुम सोच रहा है. और मैं मेकअप चलाने के लिए फिर से जा रहा हूँ string.0, इस समय compiles. ./string.0 Zamyla. यही कारण है कि मुझे जाने दो काम करने लगा आगे और डेवनपोर्ट के साथ यह फिर से दौड़ना. लिखें. और भी है कि काम करने के लिए लग रहा था. इसलिए हम इस एक छोटे से बेहतर कर सकते हैं हालांकि, हम साफ बातें करने के लिए शुरू कर सकते हैं बस थोड़ा सा. और मैं वास्तव में करने के लिए जा रहा हूँ अब एक दूसरी बात परिचय. मैं आगे जाने के लिए जा रहा हूँ और एक अलग फाइल में इस बचा. और मैं फोन करने के लिए जा रहा हूँ इस फ़ाइल string1.c बस कोड के अनुरूप होना आप ऑनलाइन प्राप्त कर सकेंगे. और हम में पर ध्यान केंद्रित करते हैं वास्तव में एक ही कोड. यह मैं पता चला है कि लेने के लिए किया गया प्रकार दी तथ्य के लिए अपने लैपटॉप कि, और बदले में, CS50 उपकरण स्मृति का एक बहुत की एक बहुत कुछ है राम, अंतरिक्ष की बाइट्स का एक बहुत जिसमें मैं तार स्टोर कर सकते हैं. लेकिन वास्तविकता यह है कि मैं लंबे समय से टाइप किया तो बहुत हो गया, और काफी कीस्ट्रोक्स, मैं सिद्धांत प्रकार में कर सकता अधिक पात्रों में अपने कंप्यूटर से शारीरिक रूप के लिए मेमोरी है. और यह समस्याग्रस्त है. ज्यादातर एक पूर्णांक ही कर सकते हैं की तरह सिद्धांत रूप में, तो उच्च गिनती, आप केवल इतने सारे अक्षर रटना कर सकते हैं अपने कंप्यूटर की रैम या रैंडम में एक्सेस मेमोरी. तो मैं बेहतर की आशा थी इस समस्या को भी यह एक दुर्लभ हो सकता है कोने मामला है, तो बात करने के लिए. अक्सर ऐसा नहीं होता है, हो सकता है. ऐसा होता है और अगर मैं नहीं करना आशा है और इसके लिए कार्यक्रम, मेरे कार्यक्रम कौन जानता है कि कर सकता है. , जो कुछ भी रिबूट, फ्रीज लटका. कुछ भी हो सकता है प्रत्याशित. तो मैं क्या करने जा रहा हूँ अब, अब वास्तव में, कभी आँख बंद करके मैं पहले है एस की तरह एक चर का उपयोग करने वाले की मान सौंपा गया है getstring जैसे कुछ अन्य समारोह, मैं सुनिश्चित करने के लिए जा रहा हूँ कि अपने मूल्य मान्य है. तो मैंने पढ़ा होने से ही पता Getstring के लिए CS50 के दस्तावेज, जो अंततः हम पर आप बात करेंगे, कि getstring एक विशेष प्रतीक रिटर्न सभी में नल, एन यू एल एल बुलाया कुछ गलत हो जाता है, टोपियां. तो सामान्य रूप से, यह एक स्ट्रिंग देता है. लेकिन यह एन यू एल L-- रिटर्न अन्यथा अगर हम अंत में वास्तव में क्या देखेंगे कि कि सिर्फ साधन means-- कुछ बुरा हुआ. अब यह ज्यादा स्क्रैच में पसंद है, इसका मतलब है, मैं, सी में यहां एक स्थिति की जांच कर सकते हैं एस बराबर रिक्त नहीं है. इससे पहले कि आप यह नहीं देखा है तो, अगर बस इसका मतलब यह समान नहीं है. तो यह के विपरीत है याद है, जो बराबर बराबर होती है,, एकल से अलग है काम है, जो बराबर होती है. एस बराबर नहीं करता है तो अगर नल, उसके बाद ही कर मैं कोड की इन पंक्तियों पर अमल करना चाहते हैं. तो दूसरे शब्दों में, मैं आँख बंद करके में गोता लगाने से पहले और पुनरावृति शुरू खत्म हो चुका है, और यह इलाज इसके बारे में एक दृश्य है, हालांकि के रूप में वर्ण, मैं, पहले की जांच करने के लिए जा रहा हूँ एक मिनट रुको, निश्चित रूप से नहीं की है इस विशेष मूल्य के बराबर, नल? अगर ऐसा है, बुरी बातें हो सकता है. और अब के लिए, कि बुरी बातें मान अपने कार्यक्रम दुर्घटनाओं का मतलब हो रहा है, और तुम जरूरी ठीक नहीं कर सकते. तो स्पष्ट रूप से, यह uglier लग रहा है. यह एक तरह से पर नज़र अब भ्रामक है. लेकिन यह अधिक हो जाएगा लंबे समय से पहले परिचित. लेकिन मैं प्रस्ताव करने के लिए जा रहा हूँ अब एक अन्य सुधार. उस शुद्धता के लिए एक सुधार है. मेरा कार्यक्रम है, क्योंकि अब ज्यादा सही है दुर्लभ मामले में है कि पर्याप्त नहीं स्मृति , मैं इसे संभाल लेंगे मौजूद है, और मैं अभी कुछ भी नहीं करूँगा. मैं कम से कम दुर्घटना नहीं होगा. लेकिन यहाँ एक अंतिम संस्करण करते हैं. और एक फाइल string2.c बुलाया. मुझे लगता है कि पेस्ट करने के लिए जा रहा हूँ बस एक पल के लिए एक ही कोड, और मैं इस पर प्रकाश डाला जा रहा हूँ बस एक पल के लिए यहाँ लाइन, 11,,. अब वास्तविकता है कि स्मार्ट compilers है बजना हमारे लिए यह तय कर सकता है जैसे पर्दे के पीछे हमारे कभी जानने के बिना. लेकिन हम इस बारे में सोचते हैं मौलिक एक समस्याग्रस्त डिजाइन के रूप में. कोड की इस पंक्ति, ज़ाहिर है, कह, कुछ चर मैं 0 करने को प्रारंभ. यह बहुत स्पष्ट है. और फिर यह क्या है बयान, यहाँ, मैं क्या कर ++? हम इसे पहले देखा है, लेकिन हम है वास्तव में इसके बारे में बात नहीं की. दर्शक: मैं incrementing. डेविड जे Malan: incrementing मैं. के माध्यम से हर यात्रा पर तो इस पाश, हर चक्र, आप एक एक करके मैं incrementing रहे हैं. तो यह बड़ा, और बड़ा हो जाता है, और पाश समाप्त हो जाता है जब तक बड़ा. यह कैसे समाप्त करता है? वैसे इस बीच वहाँ हम पहले का उपयोग किया है जो हालत. आप ने देखा है पी सेट में walkthroughs. लेकिन यह क्या कह रही है? तो निम्नलिखित पाश करो लंबे समय से मैं क्या से कम है? दर्शक: स्ट्रिंग की लंबाई. डेविड जे Malan: स्ट्रिंग की लंबाई. इसलिए यह बहुत सफाई से तब्दील इस अर्थ में कि अंग्रेजी के लिए. अब समस्या यह है कि हर बार मुझे लगता है कि सिद्धांत रूप में यह पाश के माध्यम से पुनरावृति, मैं यह सवाल पूछ रहा हूँ. मैं की स्ट्रिंग की लंबाई की तुलना में कम है? मैं की स्ट्रिंग की लंबाई की तुलना में कम है? अब मैं प्रत्येक यात्रा पर बदल रहा है? यह है. ++ की वजह से. इसलिए हर यात्रा मैं बड़ा हो रहा है. लेकिन है बड़ी हो रही, या छोटे, या बिल्कुल बदल रहा है? सं डिजाइन के मामले, कुल्हाड़ियों में से एक में तो जो साथ हम कोड का मूल्यांकन करने की कोशिश वर्ग में, इस तरह के मूर्ख महसूस करता है. आप सचमुच कर रहे हैं, हर यात्रा पर इस पाश की पूछ फिर एक ही लानत सवाल, और फिर, और फिर, और सचमुच यह कभी नहीं बदलने जा रहा है. मैं छू नहीं कर रहा हूँ कम से कम अगर और एस की सामग्री को बदलने की कोशिश कर रहा. इसलिए मैं इस तुलना में थोड़ा बेहतर कर सकते हैं. और मैं क्या करने जा रहा हूँ नहीं है सिर्फ एक चर मैं घोषणा लेकिन एक दूसरा चर मैं, मनमाने ढंग से करेंगे लेकिन पारंपरिक, एन कहते हैं. N करने के लिए बराबर निरुपित एस की स्ट्रिंग लंबाई. और फिर यहाँ पर, मैं जा रहा हूँ इसलिए, एक चतुर थोड़ा अनुकूलन करना दिन के अंत में, कि बात करने के लिए कोई और अधिक सही है या नहीं, कम सही है पहले की तुलना में. लेकिन यह एक बेहतर डिजाइन है. वास्तव में मैं उपयोग कर रहा हूँ कि कम समय, कम CPU चक्र, इसलिए एक ही जवाब देने की बात है, सवाल है, लेकिन सिर्फ एक बार. कि सामान्य पर कोई प्रश्न सुधार के सिद्धांत, एक कार्यक्रम के दक्षता, का कहना है? हाँ? दर्शक: तुम क्यों करते हैं [अश्राव्य] का उपयोग करें? डेविड जे Malan: अच्छा सवाल है. तो हम क्यों की समाप्ति पर ++ रखा है मैं बजाय मैं की शुरुआत? इस मामले में, यह है कोई कार्यात्मक प्रभाव. और सामान्य में, मैं करने के लिए करते हैं पोस्टफिक्स ऑपरेटर का उपयोग यह एक छोटे से अधिक स्पष्ट रूप में इतना है कि संचालन हो रहा है जब तक. उन अपरिचित के लिए, एक और भी है आप ++ मैं कर सकता है जिसके तहत बयान. इन कार्यात्मक हैं इस मामले में बराबर और कुछ नहीं है क्योंकि कि incrementation के आसपास. लेकिन आप के साथ आ सकते हैं मामलों और कोड की लाइनों जिसमें कि एक फर्क पड़ता है. तो आम तौर पर, हम नहीं यहां तक ​​कि इस बारे में बात करते हैं. स्पष्ट रूप से, क्योंकि वह आपकी बनाता है कोड sexier, और एक तरह से बरसाती कोट, और कम वर्ण. लेकिन वास्तविकता यह है कि यह एक बहुत कठिन है है मैं मुझे मेरे मन लपेटो करने के लिए भी, लगता है कभी कभी यह चारों ओर, कार्रवाई के आदेश. एक अलग रूप में, तो अगर आप वास्तव में, यह पसंद नहीं है यहां तक ​​कि इस तरह की सेक्सी है, हालांकि देख, आप भी कर सकते हैं मैं + = 1, जिनमें से uglier संस्करण है पोस्टफिक्स incrementation के लिए एक ही विचार है. मैं इस और आप कहते हैं इसे मजाक बनाना चाहिए, लेकिन आप के रूप में कोड को देखने के लिए आ जाएगा लंबे समय से पहले कुछ सुंदर. [हंसी] डेविड जे Malan: है ना? हाँ. बीच में प्रश्न. दर्शक: आप int n कहने की ज़रूरत है? डेविड जे Malan: यदि आप करते int n कहने की ज़रूरत नहीं. हम पहले से ही पूर्णांक कहा है क्योंकि तो, आप इसे फिर से कहने की ज़रूरत नहीं है. पकड़ n करने के लिए है कि मैं उसी के रूप में डेटा प्रकार हो. तो यह है कि यहां सिर्फ एक सुविधा है. हाँ. दर्शक: आप पर जा सकते हैं प्रिंट चरित्र है ब्रैकेट मैं फिर से? डेविड जे Malan: बिल्कुल. इसलिये% सी, पिछले से याद समय, सिर्फ एक प्लेसहोल्डर है. यह यहाँ एक चार डाल मतलब है. बैकस्लैश एन, ज़ाहिर है, बस साधन यहाँ एक लाइन तोड़ डाला. , अभी पत्ते तो यह है कि नई वाक्य रचना के इस टुकड़े. और यह सचमुच हड़पने, कह रहा है स्ट्रिंग है कहा जाता है और मिल जाना अपने i'th चरित्र, इतनी बात करने के लिए. और मैं i'th चरित्र कह रखना क्योंकि इस लूप के प्रत्येक चलना पर हम मुद्रण कर रहे हैं के रूप में हालांकि यह बात है बाहर, पहला है ब्रैकेट 0, एक प्रोग्रामर कह सकते हैं. तो है तो, ब्रैकेट 1 s ब्रैकेट 2, तो फिर 3, 4. लेकिन निश्चित रूप से यह एक चर है, तो मैं बस मैं साथ यह व्यक्त करते हैं. कुंजी है, हालांकि, एहसास है, आप नहीं है, खासकर अगर इस दुनिया को acclimating गया प्रोग्रामिंग, जहां हम सब की होगा, शून्य से गिनती करने लगते हैं अब शून्य से गिनती शुरू करते हैं. क्योंकि तार, पहली चरित्र, Zamyla में जेड के लिए अच्छा है या बुरा है स्थान संख्या शून्य पर रहने के लिए जा रहा है. ठीक है, तो मुझे लाने यहाँ Zamyla करने के लिए हमें वापस और वास्तव में क्या हो रहा है देखते हैं हुड के नीचे पर. इसलिए प्रकार कास्टिंग की इस धारणा है. आप वास्तव में हो सकता है पहले से ही इस के साथ खेला जाता है, शायद हैकर के लिए पी के संस्करण एक सेट. लेकिन प्रकार कास्टिंग बस को संदर्भित करता है सी में क्षमता और कुछ अन्य भाषाओं एक दूसरे के लिए डेटा प्रकार परिवर्तित करने के लिए. अब हम यह कैसे देख सकते हैं सुंदर straightforwardly? तो, शुरुआत यह याद है अंग्रेजी वर्णमाला का. और संदर्भ से, याद जैसे एक सप्ताह पहले ASCII है. अमेरिकन स्टैंडर्ड कोड सूचना आदान लिए. जो सिर्फ एक बहुत लंबा रास्ता तय करना है पत्र से एक मानचित्रण कहने का संख्या के लिए, और संख्या से पत्र के लिए. तो यहाँ एम, डॉट डॉट के माध्यम से डॉट, लाइनों के साथ, याद करते हैं, ऊपर की ओर दशमलव संख्या 65. और हम बात नहीं की स्पष्ट रूप से इस बारे में, लेकिन निश्चित रूप से समान नहीं है छोटे अक्षरों के लिए संख्या. और वास्तव में, वहाँ रहे हैं. दुनिया कुछ वर्षों का फैसला पहले उस छोटे से एक, एक छोटे, 97 होने जा रहा है. और थोड़ा ख हो रहा है इसके आगे 98, और किया जाना है. और किसी भी अन्य प्रमुख पर के लिए अपने कीबोर्ड, वहाँ बिट्स के एक समान पैटर्न होने जा रहा. या यों, एक दशमलव संख्या. तो हाथ पर सवाल, तो, हम कैसे कर सकते है वास्तव में हुड के नीचे यह देख? तो मैं फिर से एडिट करने के लिए ऊपर जाने के लिए जा रहा हूँ. और नहीं बल्कि प्रकार से खरोंच से यह एक है, मैं आगे जाने के लिए जा रहा हूँ और बस कुछ ऊपर खुला आज के कोड से ASCII शून्य कहा जाता है. और ASCII शून्य इस तरह दिखता है. तो चलो इस के आसपास हमारे मन लपेट दें. तो सबसे पहले, मैं टिप्पणी की है जो अच्छा है कोड,. यह सचमुच है क्योंकि क्या उम्मीद करने के लिए मुझे बता रहा है, बड़े अक्षरों के लिए एक मानचित्रण प्रदर्शित करते हैं. अब मैं काफी नहीं जानता कि क्या मैं उस से क्या मतलब है, तो हम अनुमान करते हैं. अंग्रेजी में, हो सकता कुछ हद तक तकनीकी विशेषज्ञ अंग्रेजी, क्या लाइन 18 प्रकट करता है हमारे लिए क्या कर रही हो? सिर्फ 18 लाइन. यह क्या उत्प्रेरण है? क्या यह यहाँ बंद किक करने के लिए जा रहा है? दर्शक: एक पाश. डेविड जे Malan: एक पाश. और कितनी बार है पुनरावृति करने के लिए जा रहा है? दर्शकों को [आवाज़ें INTERPOSING] छह बार. डेविड जे Malan: नहीं छह बार. दर्शक: 26 बार. डेविड जे Malan: 26 बार. हाँ, माफ करना. 26 बार. क्यों? खैर, यह थोड़ा अजीब है, लेकिन मैं 65 से गिनती शुरू कर दिया है. कौन सा अजीब है, लेकिन गलत नहीं है. यह कहना प्रति बुरा नहीं है. और मैं कर रहा हूँ कि केवल क्योंकि, इस उदाहरण के लिए, मैं एक तरह से आशंका हूँ कि राजधानी एक 65 था. अब यह नहीं सबसे खूबसूरत है रास्ता कठिन कोड की तरह करने के लिए, यह करने के लिए गूढ़ मूल्यों कि कोई नहीं कभी याद करने की उम्मीद है. लेकिन अब के लिए, मैं कर रहा हूँ कि नोटिस 65 प्लस 26 के माध्यम से यह कर. जाहिरा तौर पर मैं भी नहीं करना चाहते क्योंकि मेरे सिर में गणित करने के लिए. इसलिए मैं संकलक यह कर दूँगा. लेकिन फिर एक पाश पर, प्रत्येक चलना पाश की, मैं मैं incrementing रहा हूँ. तो अब यह एक छोटे से गुप्त लग रहा है. लेकिन हम बुनियादी निर्माण होना चाहिए जिसके साथ ब्लॉक इस बात को समझ. % सी एक चार के लिए सिर्फ एक प्लेसहोल्डर है. % मैं एक पूर्णांक के लिए एक प्लेसहोल्डर है. और इसके द्वारा इस का उपयोग कर पता चला है कि नई वाक्य रचना, इस प्रारंभिक, तो बात एक डेटा प्रकार इतना करने के लिए एक कोष्ठक के अंदर, मैं इलाज के लिए संकलक मजबूर कर सकते हैं मैं नहीं एक पूर्णांक है, लेकिन एक चार के रूप में. जिससे मुझे चरित्र दिखा कि संख्या के बराबर. अब यहाँ नीचे, इस कोड काफी समान है. मैं बस बनाना चाहते थे सुपर स्पष्ट तथ्य मैं 97 में शुरू कर रहा हूँ कि, जो एक छोटे है. 26 अधिक पत्रों के माध्यम से. और मैं फिर से doing-- रहा हूँ मैं कास्टिंग, तो बात करने के लिए. या प्रकार कास्टिंग मैं, तो बात करने के लिए. एक चार के लिए एक पूर्णांक से. तो अंत परिणाम होने जा रहा है, सच कहूँ तो, जानकारी हम पहले से ही जानते हैं. मैं करने जा रहा हूँ ASCII-0 सी डॉट नहीं dot--. सूचना, आपको शायद उस बनाया गलती मैं बस गलती के रूप में किया. आस्की -0 बनाओ. अब मैं ./ascii -0 क्या करने जा रहा हूँ. मैं में ज़ूम, और दुर्भाग्य से करेंगे यह बंद स्क्रीन स्क्रॉल करने के लिए जा रहा है. लेकिन हम एक संपूर्ण चार्ट जहां देखना 97 को एक नक्शे, 98 को बी नक्शे, और हम आगे स्क्रॉल अगर एक, निश्चित रूप से, 65 को नक्शे. तो यह कहना है कि केवल है हम क्या उपदेश दिया गया है, इस तुल्यता, वहाँ है वास्तविकता में वास्तव में मामला. तो इस के लिए एक त्वरित संशोधन. मुझे ASCII-1.c खोल दें. और तरह, इस चालाक नोटिस की, इस बात का स्पष्टीकरण. यह ASCII-1.c है, और इस पागल बात पर ध्यान दिया. और यह वास्तव में दिल से हो जाता है क्या का कंप्यूटर कर रहे हैं. यहां तक ​​कि हम इंसानों हालांकि letters-- के मामले में भरोसा नहीं मैं सोच नहीं शुरू करते हैं, सभी अधिकार एक तो बी, और भौतिक वस्तुओं की गिनती करने के लिए उन का उपयोग करें. आप निश्चित रूप से मैं चाहता हूँ कि कह सकते हैं कहा जाता है कि कुछ चर को प्रारंभ c-- लेकिन मैं इस anything-- बुलाया जा सकता था इतनी सी पूंजी ए करने के लिए प्रारंभ होता है दिन के अंत में, कंप्यूटर क्योंकि आप भंडारण कर रहे हैं क्या कोई परवाह नहीं है, यह केवल आप चाहते हैं कि कैसे परवाह उस जानकारी पेश करने के लिए. आप कंप्यूटर के लिए चाहते हो कैसे बिट्स के उस पैटर्न की व्याख्या? तो यह कुछ मैं नहीं है आम तौर पर कर की सिफारिश करेंगे. यह वास्तव में सिर्फ एक उदाहरण है संप्रेषित कि तुम बिल्कुल कर सकते हैं एक चार के लिए एक पूर्णांक को प्रारंभ. क्योंकि नीचे एक चार के हुड, ज़ाहिर है, 0 से 255 सिर्फ एक संख्या है. तो आप निश्चित रूप से कर सकते हैं एक पूर्णांक के अंदर डाल दिया. और क्या यह भी है यह दर्शाता है कि हम उस एक से परिवर्तित कर सकते हैं यहाँ, एक और करने के लिए टाइप करें, अंत में एक ही बात मुद्रण. और वास्तव में, यह मैं online-- ठीक कर देंगे यहाँ, फिर से, यह कहने का मतलब था. मुझे ऑनलाइन यह साफ करते हैं, और हम करेंगे जरूरत के रूप में एक ऑनलाइन walkthrough में देखते हैं, क्या वहाँ का इरादा था. ठीक. अब शामिल तो पिछले उदाहरण एक और बी और फिर हम करेंगे एक पायदान ऊपर बातें ले. एक और बी और साथ तो पूंजीकरण में सी और तुल्यता क्या है, चलो यहाँ, इस उदाहरण पर एक नज़र रखना. एक अन्य कोड उदाहरण. हम है कि एक खोल देंगे पहले से ही बनाया है, हम तो यह टाइप करने की जरूरत नहीं है सभी खरोंच से बाहर. और प्रत्याशा में नोटिस हम कई शीर्ष लेख का उपयोग कर रहे हैं है, जो बीच में फाइलें, हमारे नए दोस्त, string.h. अब यह पहले से कम लग रहा है, नज़र, एक छोटे से गुप्त. लेकिन हम कारण नहीं कर सकते तो चलो देखते हैं यहाँ पर क्या हो रहा है के माध्यम से. सबसे पहले मैं उपयोगकर्ता से एक स्ट्रिंग मिलता है, और मैं एक चर में कि स्ट्रिंग डाल कहा जाता है. पहले से कॉपी पेस्ट. लाइन 22 में, मैं जाहिरा तौर पर कर रहा हूँ वास्तव में क्या कर रही है मैं मैं पुनरावृति रहा हूँ, एक पल पहले किया था एस में अक्षर से अधिक. और यहाँ नई चाल का उपयोग कर रहे हैं स्ट्रिंग की लंबाई, मामूली अनुकूलन एन में स्ट्रिंग की लंबाई के संचय के लिए, बल्कि फिर strlen बुला से, और फिर, और फिर से. और सिर्फ मैं n से कम नहीं है कि जाँच. अब यहाँ, मिल बातें एक छोटे से दिलचस्प. लेकिन यह सिर्फ एक आवेदन है इस एक ही नए विचार की. अंग्रेजी करता है में क्या मैं प्रतिनिधित्व है ब्रैकेट? दर्शक: प्रत्येक गिनती चरित्र [अश्राव्य]. डेविड जे Malan: प्रत्येक चरित्र गिनती. और भी अधिक संक्षेप, एस ब्रैकेट मैं क्या प्रतिनिधित्व करते हैं? क्या आप कहते हैं. यहां मौके पर डाल करने के लिए नहीं. दर्शक: Well-- डेविड जे Malan: शब्द अगर is-- तो अगर स्ट्रिंग starts-- जो Zamyla है दर्शक: --you के साथ सौदा अक्षर separately-- डेविड जे Malan: अच्छा. बिल्कुल सही. वर्ग ब्रैकेट अंकन आपको अनुमति देता है व्यक्तिगत रूप से प्रत्येक चरित्र का उपयोग करने के लिए, इतना है ब्रैकेट 0 होने जा रहा है स्ट्रिंग में पहले चरित्र. एस ब्रैकेट 1 होने जा रहा है इसके आगे दूसरा, और. तो सवाल मैं पूछ रहा हूँ, यहाँ, इस हालत में क्या है? और अधिक का i'th चरित्र है या बराबर एक छोटे करने के लिए? और यह, यहाँ, क्या मतलब है डबल ampersands साथ? दर्शकों (एक साथ): और. डेविड जे Malan: और. यह इस लिए बस के बराबर है. और सी में एक कीवर्ड नहीं है, आप के लिए है उपयोग, annoyingly, एम्परसेंड एम्परसेंड. और यह, इसके विपरीत, पूछ रहा है है चरित्र i'th है की कम से कम या बराबर Z लोअरकेस? और फिर, यहाँ कहाँ है अंतर्निहित समझ एक के कार्यान्वयन कंप्यूटर समझ में आता है. मुझे लगता है कि, भले ही नोटिस डॉट डॉट डॉट वहाँ पर, लोअर केस में जेड के माध्यम से एक तरह कर रहे हैं लग रहा है ऊपर पर 97 से सभी सन्निहित मूल्यों. और बड़े के लिए एक ही 65 से शुरू. तो takeaway, तो, कि, अंग्रेजी में है आप का वर्णन होगा कैसे 24 क्या कर रहा है रेखा? हाँ? दर्शक: 24 पर यह देखने के लिए जाँच कर रहा है चाहे प्रत्येक चरित्र एक छोटा अक्षर है. डेविड जे Malan: यह है कि क्या जाँच कर रहा है प्रत्येक चरित्र एक छोटा अक्षर है. इसलिए और भी अधिक संक्षेप है, एस छोटा अक्षर का i'th चरित्र? यही कारण है कि हम कर रहे हैं सब तार्किक यहाँ व्यक्त एक छोटी सी cryptically, लेकिन अंततः सुंदर straightforwardly. चरित्र लोअरकेस i'th है की है? यदि ऐसा है, और यहाँ जहां चीजें है एक छोटे से मन झुकने मिल बस एक पल के लिए, यदि हां, तो जाने आगे और एक चरित्र बाहर प्रिंट. तो यह सिर्फ एक प्लेसहोल्डर है, लेकिन क्या चरित्र? क्यों मैं ब्रैकेट मैं कर रहा हूँ शून्य से यहाँ इस अभिव्यक्ति? वैसे यहाँ पैटर्न का नोटिस. वास्तविक संख्या इतनी ज्यादा फर्क नहीं है. लेकिन 97 है नोटिस कैसे दूर 65 से? दर्शक: 32. डेविड जे Malan: 32. कैसे दूर 66 से 98 है? दर्शक: 32. डेविड जे Malan: बड़ी सी से छोटी सी? 32. तो 32 हॉप्स वहाँ दूसरे के लिए एक पत्र. तो स्पष्ट रूप से मैं कर सकता कि करने के लिए यह आसान बनाने में. लेकिन तब मैं एक तरह से कठिन कोडिंग कर रहा हूँ इस निम्न स्तर समझ कोई पाठक कभी है कि समझने की जा रही है. इसलिए मैं यह रूप में सामान्यीकरण करने के लिए जा रहा हूँ, मैं पता छोटे अक्षरों बड़ा रहे हैं. मैं राजधानी पत्र हैं पता छोटे मूल्यों, विडंबना यह है. लेकिन यह करने के लिए प्रभावी ढंग से बराबर है एस ब्रैकेट मैं से 32 घटाना कह. इन के संदर्भ में तो पत्र, पत्र अगर एक, लोअरकेस होना होता है एक, और मैं 32 घटाना, कि क्या प्रभाव पड़ता है, गणितीय, पर एक छोटे? दर्शक: Capitalizes-- डेविड जे Malan: यह capitalizes. और वास्तव में, इस कारण है कि हमारे कार्यक्रम शून्य भुनाने कहा जाता है. इस कार्यक्रम या तो एक अक्षर, अगर यह होता है की जाँच के बाद वास्तव में एक छोटा अक्षर. अन्यथा, लाइन 30 में, मैं तो क्या करें यह मैं हूँ कि एक छोटा अक्षर नहीं है एक विशेष पर पर देख पाश में चलना. बस इसे बाहर प्रिंट. तो सामान को बदल नहीं है कि यहां तक ​​कि छोटा अक्षर नहीं है. करने के लिए अपने आप को सीमित करें छोटी सी जेड के माध्यम से छोटे से एक. अब यह काफी रहस्यमय है. लेकिन दिन के अंत में, इस कैसे हम एक समय की बात है, चीजों को लागू करने के लिए किया था. मैं बजाय भुनाने खोलते हैं एक, ओह भगवान का शुक्र है. एक समारोह नहीं है ऊपरी लिए कहा जाता है कि यह कर सकते हैं हम बस किया था सब कुछ करना एक काफी कम स्तर पर. अब तक ऊपरी दिलचस्प है यह एक फ़ाइल में घोषित किया जाता है, क्योंकि और आप केवल यह पता होगा प्रलेखन की जाँच करके, या वर्ग, जहां में, कहते हैं, कहा जा रहा है यह एक फ़ाइल बुलाया ctype.h में मौजूद है. तो यह हमारा एक और नए दोस्त है. और ऊपरी ठीक है के लिए जैसा कि इसके नाम से पता चलता है क्या. आप के बीच, एक तर्क के रूप में पारित कर सकते हैं इन कोष्ठकों, कुछ चरित्र. मैं i'th चरित्र में पारित करने के लिए जा रहा हूँ के बारे में हमारी कल्पना नए अंकन का उपयोग कर रहा है वर्ग कोष्ठक शामिल. और एक अनुमान ले, वापसी क्या है ऊपरी के मूल्य जाहिरा तौर पर जा रहा हो सकता है? बड़े अक्षर. बड़े अक्षर. तो मैं छोटा अक्षर एक में पास, उम्मीद है, ऊपरी करने की परिभाषा से, यह एक वापस करने के लिए जा रहा है अन्यथा अपरकेस ए, इसमें एक छोटा अक्षर नहीं है पहले स्थान पर, मैं सिर्फ इसे बाहर प्रिंट. और वास्तव में, नोटिस यहाँ दूसरा दोस्त. इतना ही नहीं ऊपरी मौजूद करने के लिए, लेकिन, कम है जो वास्तव में मेरे लिए उस सवाल का जवाब. अब इन बातों को लिखा था कि जो कोई भी, 10s साल पहले, आपको पता है क्या? ऊपरी को लागू किया गया है इस तरह कोड का उपयोग कम है. लेकिन साथ फिर से, संगत दूर सार संक्षेप के इस विचार, एक तरह से, निचले स्तर कार्यान्वयन विवरण. और लोगों के कंधों पर खड़े जो कार्यों का उपयोग कर, हमारे सामने आया ऊपरी पसंद है और, जो कम है शानदार काफी अच्छी तरह से कर रहे हैं वे क्या करते हैं कहने के लिए नामित किया गया है, एक अद्भुत प्रतिमान को अपनाने के लिए. अब, यह मैंने पढ़ा तो पता चला है कि , के लिए आदमी पृष्ठ के ऊपरी हिस्से में कहते हैं, मैं कुछ सीखते हैं. तो आदमी toupper. यह थोड़ा भारी है. लेकिन नोटिस, यहां की कि उल्लेख है मैं इस्तेमाल करना चाहिए कि हेडर फाइल. एक तरफ, क्योंकि इस रूप में भ्रामक है, समारोह ints के बजाय घर का काम का उपयोग करता है त्रुटि जाँच के कारणों के लिए. लेकिन हम शायद आऊँगा वापस करने के लिए कि भविष्य में. लेकिन ऊपरी धर्मान्तरित करने के लिए, यहाँ, नोटिस यदि संभव हो तो पत्र सी अपरकेस. इसलिए कि बहुत सीधा है. और अब के एक छोटे से अधिक विशिष्ट हो. के के हिस्से में देखें मान तहत आदमी पेज. मान है परिवर्तित पत्र की. या सी, यदि रूपांतरण संभव नहीं था, जहां सी मूल इनपुट है. जो मैं से, यहाँ से पता ऊपरी करने के लिए तर्क. तो इस का takeaway क्या है? मान है परिवर्तित पत्र की, या सी, मूल पत्र, अगर रूपांतरण संभव नहीं था. क्या सुधार इसलिए मैं कर सकता हूँ मेरे कोड का डिजाइन करने के लिए बनाते हैं? हाँ? दर्शक: तुम किसी और को हटा सकते हैं. डेविड जे Malan: मैं कर सकता हूँ और बयान को हटाने, और नहीं बस और बयान. दर्शक: आप [अश्राव्य] को हटा सकते हैं. डेविड जे Malan: मैं कर सकता हूँ पूरे कांटा हटाने सड़क में, और अगर पूरी तरह. तो वास्तव में, मुझे खुला इस के अंतिम संस्करण, अगर, -2 भुनाने और कैसे सिर्फ नोटिस आप, सेक्सी, कोड अब हो रही है होगा, उस में मैं कुछ से कम है सात या तो बस से चार लाइनों, मैं इरादा है कि कार्यक्षमता बस ऊपरी को फोन करके, एस ब्रैकेट मैं, और मुद्रण में गुजर बाहर, प्लेसहोल्डर% ग के साथ, उस विशेष चरित्र. अब यकीनन, एक बग है, या एक बग के कम से कम जोखिम, इस कार्यक्रम में. इसलिए अभी वापस आने के लिए पहले के एक takeaway के लिए, शायद मैं भी क्या करना चाहिए इस कार्यक्रम में यह और अधिक मजबूत बनाने के लिए, कोई रास्ता नहीं है कि इतना है कि यह कर सकते हैं और भी दुर्लभ मामलों में, दुर्घटना? दर्शक: यह रिक्त नहीं है सुनिश्चित करें. डेविड जे Malan: यह रिक्त नहीं है सुनिश्चित करें. तो सच में, इस सुपर बनाने के लिए उचित, मैं ऐसा कुछ करना चाहिए एस तो रिक्त नहीं है, तो आगे बढ़ो और निष्पादित कोड की इन लाइनों, जो मैं कर सकता हूँ तो लगता है कि जैसे मांगपत्र, और फिर मेरे करीब गले में डाल दिया. एक साथ दो विचारों के बांधने तो अच्छा है. हाँ? दर्शक: आप इस्तेमाल कर सकते एक के बजाय, पाश, जबकि करते हैं? डेविड जे Malan: सका मैं एक जबकि पाश करते हैं? दर्शक: --you बनाना चाहते आप वास्तव में [अश्राव्य] कि. डेविड जे Malan: सका आप एक करते हैं का उपयोग करें? संक्षिप्त जवाब है, नहीं. आप के बारे में रहे क्योंकि दूसरे कोने मामले परिचय. स्ट्रिंग शून्य लंबाई की है. उदाहरण के लिए, मैं सिर्फ मारा कभी Zamyla टाइपिंग के बिना, लिखें. मैं वापस एक वास्तविक आप हाथ करने के लिए जा रहा हूँ स्ट्रिंग, हम अंत में देखेंगे, उस शून्य अक्षर है. यह अभी भी एक स्ट्रिंग है, यह सिर्फ सुपर कम है. लेकिन आप जबकि एक मत का उपयोग करते हैं, आप आँख बंद करके जा रहे हैं साथ कुछ करने की कोशिश कि स्ट्रिंग के लिए सम्मान, और वहाँ कुछ भी नहीं होने जा रहा है. दर्शक: ठीक है, अगर तुम किया ऐसा [अश्राव्य] s-- जबकि डेविड जे Malan: ओह, मैं देख रहा रखने उपयोगकर्ता से एक स्ट्रिंग हो रही है. इसलिए संक्षिप्त उत्तर है, आप , और तंग कर रख सकता है उन्हें आप पर है कि एक स्ट्रिंग देने के लिए स्मृति में फिट करने के लिए काफी कम. बिल्कुल. मैं बस नहीं करने के लिए चुना है. वे मुझे स्ट्रिंग मैं नहीं देते चाहते हैं, मैं छोड़ रहा हूँ, मैं दे रहा हूँ. लेकिन बिल्कुल, उस उद्देश्य के लिए, आप बिल्कुल ऐसा कर सकता है. तो लाइब्रेरी के हेडर फाइल कि हम अब यहाँ, ये हैं के साथ परिचित हैं. मानक मैं / हे, CS50.h, string.h, ctype.h, और, वास्तव में, वहाँ दूसरों रहे हैं. आप में से कुछ की खोज की है math.h. में गणित पुस्तकालय लेकिन मेरे लिए, अब, आप परिचय इस संसाधन है कि CS50 स्टाफ, Davin, और रोब, और Gabe विशेष एक साथ डाल दिया है. उस पर जल्द ही कड़ी होगी पाठ्यक्रम की वेबसाइट. यह CS50 संदर्भ कहा जाता है. बस आप एक त्वरित देने के लिए कौन सा यह इस प्रकार के स्वाद, काम करता है. मुझे reference.cs50.net के लिए चलते हैं. आप बाईं तरफ देखेंगे एक भारी सूची पक्ष सी के साथ आते हैं कि कार्यों की. लेकिन मैं इस पल के लिए, ध्यान, strlen तरह से कुछ के बारे में, मैं वहाँ इसे टाइप कर सकते हैं. यह सूची नीचे फिल्टर मैं देखभाल के बारे में अभी क्या करने के लिए. मैं इसे क्लिक करने के लिए जा रहा हूँ. और अब, छोड़ा आप हमें आशा है क्या देखेंगे एक और अधिक सरल, मानव है कैसे के अनुकूल स्पष्टीकरण इस समारोह में काम करता है. एक स्ट्रिंग की लंबाई देता है. यहाँ एक सारांश यहाँ, आप कैसे हैं हेडर फाइल के संदर्भ में इसका इस्तेमाल करते हैं, और क्या समारोह के संदर्भ में अपने तर्कों के संदर्भ में की तरह लग रहा है. और फिर यहाँ, रिटर्न एक स्ट्रिंग की लंबाई. लेकिन और अधिक आरामदायक आप उन लोगों के लिए, आप वास्तव में, अधिक आराम क्लिक कर सकते हैं और इस की सामग्री पेज, अब बदल जाएगा क्या की मूलभूत मूल्यों होने के लिए आप मैन पेज का उपयोग करके मिलता है. CS50, दूसरे शब्दों में संदर्भ एक सरलीकरण है छात्रों के लिए कर्मचारियों द्वारा आदमी पृष्ठों, के. विशेष रूप से, उन कम आराम और में, के बीच इतना है कि आप रैप करने के लिए प्रयास करने के लिए नहीं है अपने मन के चारों ओर, सच में, कुछ काफी गूढ़ वाक्यविन्यास कुछ देर और प्रलेखन. तो ध्यान में रखें कि दिन में आने के लिए. तो यहाँ, फिर से, एक Zamyla है. चलो अब है कि एक सवाल पूछना एक छोटे से अधिक मानव सुलभ. हो गया है जो चांग के लिए धन्यवाद, अधिक हाथियों मुद्रण पिछले कुछ दिनों के लिए लगातार. हम देने के लिए एक अवसर है दूर उनमें से कम से कम एक. हम सिर्फ एक स्वयंसेवक मिल सकता है स्क्रीन पर आकर्षित करने के लिए ऊपर की ओर आने के लिए. कैसे यहाँ के बारे में? ऊपर आओ. आपका नाम क्या है? एलेक्स: एलेक्स. डेविड जे Malan: एलेक्स. ठीक है. एलेक्स, ऊपर की ओर आते हैं. हम देख रहे हैं के बारे अपने यहाँ स्क्रीन पर लिखावट. सब ठीक है, आपसे मिलकर अच्छा लगा. एलेक्स: अच्छा तुम तुम से मिलने. डेविड जे Malan: सब ठीक है. तो, सुपर सरल व्यायाम. बार के लिए उच्च नहीं है आज एक हाथी मिलता है. आप getstring की भूमिका निभा रहे हैं. और मैं सिर्फ आपको बताने जा रहा हूँ तुम मिल गया है कि स्ट्रिंग. और, आपको लगता है कि getstring, बुलाया गया है. और मानव, मुझे पसंद है, Zamyla, जेड ए एम वाई एल ए में टाइप. बस आगे बढ़ो और पर Zamyla लिखना स्क्रीन आपको यह मिल गया है के रूप में हालांकि और स्मृति में कहीं न कहीं यह संग्रहीत. कई क्या होगा के लिए रवाना कक्ष ठीक है कि अन्य words--, चलते रहो. [हंसी] तो Zamyla, बहुत बढ़िया. तो अब लगता है कि तुम, getstring, फिर कहा जाता है. और इसलिए, मैं, आप प्रदान कीबोर्ड, एक और नाम, बेलिंडा के साथ. ठीक है. और अब अगली बार getstring है कहा जाता है, मैं, Gabe की तरह कुछ में टाइप करें जी ए बी ई. आप वास्तव में ले जा रहे हैं दिल रैंडम एक्सेस मेमोरी के लिए. सब कुछ है जो आ रहा है पूरी तरह से बेतरतीब ढंग से. ठीक. [हंसी] एलेक्स: माफ करना मेरी लिखावट खराब है. डेविड जे Malan: नहीं, यह ठीक है. और कैसे रोब, आर ओ बी के बारे में. ठीक. अच्छा. तो मैं आपको होगा सोचा भी नहीं था एक तरह से इस तरह से चीजों को बाहर करना. लेकिन हम यह काम कर सकते हैं. तो आप बिछाने के बारे में कैसे जाना था स्मृति में इन अक्षरों से बाहर? दूसरे शब्दों में, हम में से लगता है कि अगर इस आयताकार काली स्क्रीन एक प्रतिनिधित्व के रूप में कंप्यूटर की रैम, या स्मृति. और कहा कि राम सिर्फ याद बाइट्स की एक पूरी गुच्छा, और बाइट्स बिट्स की एक पूरी गुच्छा रहे हैं. और बिट्स किसी न किसी तरह कर रहे हैं आम तौर पर लागू किया के कुछ फार्म के साथ हार्डवेयर में बिजली. तो उस की तरह है हम के बारे में बात की है layering के लिए दी गई है और अब ले जा सकते हैं. आप कैसे के बारे में जाना था जहां लिखने के लिए निर्णय लेने से रोब बनाम Gabe बनाम Zamyla बनाम बेलिंडा? एलेक्स: मैं बस में किया था आप मुझसे कहा था कि आदेश. डेविड जे Malan: और यह सच है. लेकिन क्या आप जहां डाल शासित बेलिंडा के नाम और Gabe का नाम? एलेक्स: कुछ भी नहीं है? डेविड जे Malan [हंसते हुए] तो काम करता है, वह ठीक है. तो कंप्यूटर छोटे होते हैं उस से भी अधिक अर्दली. और इसलिए हम वहाँ रहने implement-- जब जब वास्तव में हम सिर्फ एक moment-- के लिए की तरह कुछ को लागू एक कंप्यूटर में getstring, Zamyla बहुत ज्यादा बाहर रखा जा सकता है जैसे तुम वहाँ, स्क्रीन पर किया था. और नोटिस की कुंजी क्या है यहाँ, एलेक्स क्या किया, एक सीमांकन की तरह है इन शब्दों में से प्रत्येक के बीच, है ना? आप नहीं लिखा था Z-ए एम वाई एल ए बी ई एल मैं एन डी ए जी ए B-- दूसरे शब्दों में, किसी तरह का है किया जा रहा है जो सीमांकन की, एक तरह से, यादृच्छिक रिक्ति इन विभिन्न शब्दों के बीच. लेकिन यह है कि क्योंकि, अच्छा है हम मनुष्य अब कर सकते हैं ये हैं कि कल्पना चार अलग तार. यह सिर्फ एक दृश्य नहीं है पात्रों के बहुत से. तो एक कंप्यूटर है, तो, इस बीच, Zamyla तरह एक स्ट्रिंग ले सकता है, उन पत्रों में से प्रत्येक डाला स्मृति की एक बाइट के अंदर. लेकिन यह संख्या, बहुत बड़ा है बेशक, छह अक्षर से. राम की एक पूरी गुच्छा है. और इसलिए आज के बाद, इस बक्से के ग्रिड जा रहा है क्या एलेक्स सिर्फ प्रतिनिधित्व करने के लिए स्क्रीन पर यहाँ था. और अब, एलेक्स, हम आपको एक पेशकश कर सकते हैं नीले या चांग से एक नारंगी हाथी. एलेक्स: मैं एक नीले हाथी ले जाऊँगा. डेविड जे Malan: एक नीले हाथी. तो प्रशंसा का एक बड़ा दौर, एलेक्स के लिए यहाँ, हम कर सकते हैं. [वाहवाही] एलेक्स: धन्यवाद. डेविड जे Malan: धन्यवाद. तो takeaway है, कि भले ही पैटर्न प्रकार के यहाँ, समय के साथ बदल बोर्ड पर, यह वहाँ था विभिन्न तार के बीच सीमांकन एलेक्स हमारे लिए मिल गया है. अब कंप्यूटर, स्पष्ट रूप से, एक ही बात कर सकता है. वे एक तरह से खटखटाने सकता है कहीं राम में तार. यहाँ तक, यहाँ पर, यहाँ, यहाँ नीचे नीचे. वे वास्तव में ऐसा कर सकता है. लेकिन जाहिर है, कि शायद नहीं सबसे अच्छा नियोजन. है ना? मैं एलेक्स पूछ रखा तो नाम मिलता है, शायद वह चाहते हैं शायद ऊपर, यहाँ कुछ और नीचे रख यहाँ, यहाँ, यहाँ, अंततः यहाँ पर. लेकिन थोड़ा और योजना के साथ, निश्चित रूप से, हम और अधिक सफाई से चीजें बाहर करना सकता है. और वास्तव में, कि एक कंप्यूटर क्या करता है. लेकिन पकड़ है अगर मैं अगले स्ट्रिंग Zamyla कुछ होने के बाद बेलिंडा की तरह, हम लिख सकते हैं, जहां का प्रस्ताव इस ग्रिड के संबंध में बी पत्र? आप कहाँ जाना चाहते हैं? एक के अधिकार के लिए, एक नीचे जेड, नीचे? अपनी पहली सहज ज्ञान क्या होगा? दर्शक: Z नीचे. डेविड जे Malan: तो Z नीचे. और वह सुंदर है सरल, सही है? यह साफ की तरह है, यह हम क्या करते हैं एक कीबोर्ड पर हम दर्ज मारा, या एक ईमेल एक करते समय चीजों की बुलेटेड सूची. लेकिन वास्तविकता यह है कि कंप्यूटर है अधिक कुशल बनने की कोशिश, और जितना निश्चित रटना संभव के रूप में रैम में डेटा, इतना है कि आप किसी भी बाइट्स बर्बाद मत करो. आप बर्बाद मत करो कि तो किसी भी स्क्रीन अचल संपत्ति. और समस्या है, हालांकि, यह है कि हम सचमुच पत्र डाल बी एक के बाद, कैसे हम करने जा रहे हैं Zamyla का नाम समाप्त हो जाती है, जहां पता और बेलिंडा के नाम शुरू होता है? तो आप बस, ठीक है, प्रस्तावित मनुष्य अनिवार्य रूप से, कुंजी हिट दर्ज करें. नीचे इसे नीचे रख दो. या एलेक्स किया था, भले ही अभी लेखन शुरू पिछले एक नीचे अगले नाम, और कहा कि एक नीचे, और तो है कि एक नीचे. यह एक दृश्य संकेत है. कंप्यूटर एक और दृश्य संकेत है, लेकिन यह एक छोटे से अधिक संक्षिप्त है. यह इस कायरता चरित्र है. शायद जो बैकस्लैश 0, बैकस्लैश n की याद ताजा, और बहुत आगे है, अब. विशेष भागने दृश्यों. बैकस्लैश 0 का रास्ता है एक पंक्ति में आठ शून्य बिट्स का प्रतिनिधित्व. 0000 0000. आपको लगता है कि एक्सप्रेस मार्ग नहीं है अपने कीबोर्ड पर संख्या शून्य मारा, एक ASCII वर्ण है कि वास्तव में है. यह एक संख्या की तरह दिखता है, लेकिन एक दशमलव संख्या वास्तव में है उस परिपत्र का प्रतिनिधित्व करता है ग्लिफ़, परिपत्र टाइपफेस. इस बीच, बैकस्लैश शून्य सचमुच, इसका मतलब है मेरे लिए यहां आठ शून्य बाइट्स डाल दिया. तो यह कुछ हद तक मनमाना है. हम किसी भी स्वरूप में इस्तेमाल किया जा सकता था बिट्स की, लेकिन दुनिया कुछ वर्षों का फैसला पहले, कि प्रतिनिधित्व करने के लिए स्मृति में एक स्ट्रिंग के अंत, सिर्फ शून्य की एक पूरी गुच्छा रखा. हम उस का पता लगा सकते हैं. अब इसका मतलब है कि इस बात का कोई पत्र वर्णमाला शून्य के साथ प्रतिनिधित्व किया जा सकता है. लेकिन यह है कि हम पहले से ही देखा है ठीक है हम पर ऊपर में 97 पर 65 का उपयोग कर रहे हैं. हम कहीं भी नहीं मिला सभी शून्य के करीब है. एक कंप्यूटर की स्मृति में बेलिंडा तो वास्तव में यहां से जाना जा रहा है. मैं पीले रंग में यह तैयार है बस यह हमारे ध्यान आकर्षित करने के लिए. और नोटिस भी इस पूरी तरह से मनमाना है. मैं एक ग्रिड के रूप में इसे तैयार किया है. जैसे, राम बस कुछ भौतिक वस्तु है. यह जरूरी नहीं है पंक्तियों और स्तंभों, दर असल. यह सिर्फ बाइट की एक पूरी गुच्छा मिल गया है किसी भी तरह के हार्डवेयर में कार्यान्वित किया. लेकिन बेलिंडा मैं के बाद अगर Gabe के नाम में टाइप, वह स्मृति में यहां खत्म हो जा रहा है और मैं Daven के नाम में टाइप हैं, उदाहरण के लिए, वह यहां समाप्त करने के लिए जा रहा है. और मैं करने के लिए जारी रख सकते हैं और भी अधिक नाम लिखिए. दुर्भाग्य से, मैं करने की कोशिश एक सुपर लंबे नाम लिखना, मैं अंत में स्मृति से बाहर चला सकता है. जो मामले में, getstring है जैसा कि हमने कहा, रिक्त वापस जाने के लिए जा रहा है. लेकिन शुक्र है, कम से कम इस दृश्य में यहाँ, हम काफी है कि अभी तक नहीं मिला. अब क्या अच्छा है यह है कि बातों के इलाज का सामान्य विचार बक्से में किया जा रहा है के रूप में सी की एक विशेषता के प्रतिनिधि और भाषाओं का एक बहुत, एक सरणी के रूप में जाना जाता है. एक सरणी डेटा का एक प्रकार है. यदि आप होगा यह एक आंकड़ा संरचना है. वास्तव में यह की भावना में संरचना, एक तरह से, कम से कम, एक बॉक्स की तरह लग रही अपने मन की आंखों में. एक सरणी एक सन्निहित है समान डेटा प्रकार के अनुक्रम, वापस वापस करने के लिए वापस करने के लिए वापस करने के लिए. अन्य में तो एक स्ट्रिंग, शब्द, घर का काम की एक सरणी है. अक्षर की एक सरणी. लेकिन यह तुम हो सकता है पता चला है बातों के गुच्छों की सरणियों. वास्तव में, हम भी डाल सकते हैं एक सरणी में संख्या. फार्म तो जो में हम शुरू करने जा रहे हैं इस डेटा की घोषणा एक सरणी के रूप में जाना जाता संरचना भी वर्ग कोष्ठक का उपयोग करने के लिए जा रहा है. लेकिन इन वर्ग कोष्ठक करने जा रहे हैं इस संदर्भ में अलग अर्थ है. और इस प्रकार की यह देखते हैं. मैं खोला कि मान लीजिए यहाँ एक नया फ़ाइल. और मैं ages.c. के रूप में सहेजें और मैं यहाँ अपने फ़ोल्डर में इस बचा लेंगे. और अब मैं आगे जाने के लिए जा रहा हूँ और कुछ लिखना प्रारंभ जैसे शामिल हैं, CS50.h शामिल stdio.h, मुख्य शून्य int. और फिर यहाँ के अंदर, मैं चाहता हूँ पहले उम्र कहा जाता है एक पूर्णांक है. और मैं एक पाने के लिए है कि उपयोग करने के लिए जा रहा हूँ उसके या उसकी उम्र के लिए उपयोगकर्ता से int. लेकिन इस कार्यक्रम के द्वारा इस्तेमाल के लिए होती है जो कुछ भी संदर्भ के लिए कई लोगों को,. मैं लोगों की एक लाइन मिल गया है. वे सब के सब में टाइप करने के लिए उनके शायद कुछ, मैं नहीं जानता के लिए उम्र, प्रतियोगिता, या घटना वे के लिए आ गया है कि. तो अगली व्यक्ति, मैं एक और चर की जरूरत है. मैं सिर्फ क्योंकि अगर उम्र getInt हो जाता है, वह है जा पीटना, या अधिलेखित करना पिछले व्यक्ति की उम्र. तो यह अच्छा नहीं है. मेरी पहली वृत्ति तो हो सकता है, ओह, सब ठीक है, मैं कई लोगों के प्राप्त करना चाहते हैं ages--, चलो इस age1 कहते हैं पूर्णांक age2 पूर्णांक हो जाता है, पूर्णांक age3 getInt हो जाता है. और अब मैं उपयोग करने के लिए जा रहा हूँ यहाँ कुछ pseudocode कोड. उन लोगों की संख्या के साथ कुछ करना. हम एक दिन के लिए छोड़ देंगे क्या हम वहाँ क्या कर रहे हैं क्योंकि हम केवल पल के लिए देखभाल age1, age2, age3 के बारे में. दुर्भाग्य से, मैं एक बार इस कार्यक्रम के संकलन और, वास्तविक उपयोगकर्ताओं की सामने रख दिया मौलिक गरीब डिजाइन क्या है मैं लगते निर्णय लिया है करने के लिए? हाँ? दर्शक: [अश्राव्य] डेविड जे Malan: हाँ, मैं भी कोशिश नहीं की है कितने युगों बाहर निकालने के लिए मैं वास्तव में के बारे में परवाह है? मैं यहां कम से कम तीन लोगों की है, और इसलिए कम से कम तीन उम्र, मैं अभी भी आँख बंद करके तीन उम्मीद कर रहा हूँ. भगवान चार लोगों को दिखाने के लिए न करे. मेरा प्रोग्राम अभी भी उन्हें समर्थन नहीं करेंगे. और तो यह लंबी कहानी संक्षेप में, एक अच्छी आदत नहीं है. है ना? मैं अनिवार्य रूप से नकल किया गया था और कोड चिपकाने और बस tweaking चर नाम. और, मेरे भगवान, तुम था, अगर नहीं तीन उम्र है, लेकिन 10, या 100, या यहां तक ​​कि 6500 स्नातक से नीचे, उदाहरण के लिए. यह विशेष रूप से नहीं किया जा रहा है सुरुचिपूर्ण कोड, या स्थायी. आप के लिए करने जा रहे हैं कार्यक्रम हर बार फिर से लिखना लोगों को परिवर्तन की अपनी संख्या. तो शुक्र है, हमारे वास्तविक में आज के लिए ages.c फ़ाइल, हम एक और अधिक चालाक समाधान है. सबसे पहले, मैं उधार लेने के लिए जा रहा हूँ , हम एक बार कुछ का उपयोग किया है का निर्माण इस पाने के लिए, जबकि पाश करना कमरे में लोगों की संख्या. मैं तो बस फिर, उपयोगकर्ता तंग करने के लिए जा रहा हूँ और फिर, वह या वह जब तक मुझे देता है एक सकारात्मक पूर्णांक है कि n के लिए मूल्य. मैं इस्तेमाल कर सकते थे, पिछले समय के सकारात्मक पूर्णांक मिलता है. लेकिन हम नहीं है कि रियल के लिए है, तो मैं आगे चला गया और इस विचार को कार्यान्वित कर रहे हैं. अब यहाँ नीचे, यह नई चाल है. टिप्पणी के रूप में रेखा 27, में लाइन 26 से पता चलता है में, एक सरणी की घोषणा जिसमें सभी की उम्र स्टोर करने के लिए. तो तुम, एक पूर्णांक नहीं नहीं प्राप्त करना चाहते हैं दो ints, लेकिन ints की एक पूरी गुच्छा. विशेष रूप से n पूर्णांकों थे n हो सकता है 100 हो सकता है, तीन हो, 1000 हो सकता है. वाक्यविन्यास, आसानी से, करने के लिए है कहते हैं, आप क्या डेटा प्रकार करना चाहते हैं? आप कॉल करने के लिए क्या चाहिए स्मृति की है कि हिस्सा? आप ग्रिड कॉल करने के लिए क्या चाहिए कि इस pictorially की तरह लग रहा है? और यहाँ कोष्ठक में, तुम कहते हो कितना बड़ा तुम सरणी होना चाहते हैं. और इसलिए पहले, जब मैंने कहा वाक्यविन्यास, यहाँ एक छोटे से अलग है हम अभी भी वर्ग कोष्ठक का उपयोग कर रहे हैं, लेकिन मैं एक सरणी की घोषणा कर रहा हूँ, के अंदर संख्या वर्ग कोष्ठक साधन कितना बड़ा तुम सरणी बनना चाहते हो. इसके विपरीत, जब हम उपयोग कर रहे थे ब्रैकेट मैं एक पल पहले, एस, एक स्ट्रिंग, घर का काम की एक सरणी, वास्तव में है, लेकिन आप एक चर घोषित नहीं कर रहे हैं, यहाँ इस कीवर्ड के साथ के रूप में, आप बस हो रही है एक विशिष्ट सूचकांक, एक विशिष्ट उस सरणी से तत्व. हम जानते हैं कि एक बार, बाकी इस सरल है. जब मैं पहली बार बाहर मुद्रित करने के लिए जा रहा हूँ नए हैं व्यक्ति संख्या मैं की उम्र क्या है. मैं तो बस, व्यक्ति नंबर एक का कहना है कहां व्यक्ति नंबर दो, व्यक्ति तीन नंबर. और मैं सिर्फ गणित कर रहा हूँ इसलिए कि सामान्य लोगों की तरह, हम इस बात के लिए एक से गिनती कार्यक्रम, और नहीं शून्य से. तब मैं getint कहते हैं, लेकिन मैं दुकान उम्र में जवाब मैं ब्रैकेट. जो सरणी में i'th उम्र है. पिछली बार जबकि हम इलाज कर रहे थे तो Zamyla के नाम के लिए घर का काम के रूप में इन बक्सों, और दूसरों. अब, इन बक्सों का प्रतिनिधित्व 32 बिट, या चार बाइट्स जिसमें हम स्टोर कर सकते हैं एक पूर्णांक, एक पूर्णांक, एक पूर्णांक. जो सब के सब, फिर से, एक ही डेटा प्रकार हैं. अब मैं कुछ मूर्ख करते हैं, समय बीत जाता है, जैसे बस इस कार्यक्रम के लेखन का औचित्य साबित करने के लिए. और फिर यहाँ नीचे, मैं फिर से पुनरावृति अब से एक साल कह सरणी से अधिक है, व्यक्ति नंबर एक इच्छा कुछ साल पुराना हो. और कहा कि यह पता लगाने के लिए math-- मेरा मतलब है, यह बहुत arithmetic-- जटिल नहीं है मैं सिर्फ अपनी उम्र के लिए एक जोड़ने. बस, फिर, यह प्रदर्शित करने के लिए. बस मैं सूचकांक के रूप में एक स्ट्रिंग में, एस, इतनी उम्र की एक सरणी में कर सकते हैं मैं सूचकांक वहाँ उस तरह. तो जहां यह हमें ले जा रहा है? तो हम देखेंगे, अंततः, एक दिन में कुछ बातें आने के लिए. एक, यह सब समय, जब अपने खुद के कार्यक्रमों लेखन, मारियो, लालची, क्रेडिट की तरह. आप का नाम टाइप किया गया है कार्यक्रम और मार दर्ज करें. और फिर उपयोगकर्ता के इनपुट हो रही है. GetString, getInt के साथ, getLongLong, या पसंद है. लेकिन यह है कि सी का समर्थन करता है पता चला है कुछ कमांड लाइन बुलाया हमें बताने के लिए जा रहा है जो तर्क, वास्तव में आप टाइप कि शब्द में मिलता है, निमिष प्रॉम्प्ट पर अपने कार्यक्रम के नाम के बाद. , आप आने वाले दिनों में तो सीज़र की तरह कुछ टाइप हो सकता है, या ./caesar उसके बाद नंबर 13,. हम जानते हैं कि कैसे काम करता है देखेंगे. दरअसल, क्योंकि समस्या हम कर रहे हैं, दो सेट आप शुरू करने जा रहा एक छोटे से कुछ करने के लिए Ralphie की याद ताजा की मानचित्रकारी के पहले चुनौती है. जानकारी पांव मार करने की कला. यह वास्तव में बहुत है Ralphie क्या किया की याद ताजा करती. यह एक एन्क्रिप्शन का एक उदाहरण है एल्गोरिथ्म, आर ओ टी 13 ROT13 बुलाया. कौन सी बस बारी बारी से मतलब वर्णमाला 13 स्थानों में पत्र. आप ऐसा है, तो आप अब देखेंगे एक परिचित वाक्यांश, शायद, क्या है. लेकिन जिस तरह से हम उपयोग करने के लिए जा रहे हैं यह अंत में, आम तौर पर अधिक है. पी में, मानक संस्करण में, दो सेट आप सिफर के एक जोड़े को लागू करेंगे कैसर नामक एक, Vigenere बुलाया. उन दोनों घूर्णी हैं उस में सिफर, आप किसी भी तरह एक अलग पत्र में एक पत्र बारी. और कैसर सुपर सरल है. आप, आप 13 जोड़ना, एक जोड़ या 26 अप करने के लिए कुछ संख्या. Vigenere उस पर करता है एक पत्र के आधार प्रति. Vigenere तो, के रूप में आप देखेंगे कल्पना में, अधिक सुरक्षित है. लेकिन दिन के अंत में क्या , आप को लागू किया जाएगा और पी दो सेट आप दोनों का उपयोग करें कि कि कुंजी है एन्क्रिप्शन और डिक्रिप्शन के लिए. निर्णायक की प्रक्रिया का जिक्र करते हुए सादे पाठ, कुछ मूल संदेश, साइफर पाठ, में जो कुछ एन्क्रिप्टेड है. और फिर इसे फिर decrypting. हैकर संस्करण में, इस बीच, आप हो जाएगा कुछ इसी तरह का काम सौंपा आत्मा में, हम आपको दे देंगे जहां एक ठेठ लिनक्स, या एक फ़ाइल से, मैक, या यूनिक्स कंप्यूटर बुलाया Etsy एक पूरी जिसमें पासवर्ड, उपयोगकर्ता नाम और पासवर्ड का गुच्छा. और उन लोगों के पासवर्ड सब है एन्क्रिप्टेड, या hashed किया गया, इतनी अधिक अच्छी बात है, आप कल्पना में देखेंगे. और हैकर संस्करण को चुनौती देंगे इस तरह एक इनपुट लेने के साथ आप, और पासवर्ड खुर. पता लगाना है कि क्या है, मानव का पासवर्ड वास्तव में था. दरअसल, पासवर्ड हैं, क्योंकि आम तौर पर स्पष्ट में संग्रहीत नहीं, और आम तौर पर पासवर्ड मुश्किल लगता होना चाहिए. यही कारण है कि अक्सर मामला नहीं है. और क्या मैं हम क्या सोचा है एक दो मिनट के साथ समाप्त एक विशेष रूप से पर नज़र पासवर्ड की गरीब पसंद एक फिल्म से आप प्यार से याद हो सकता है. नहीं तो आप किराया चाहिए. [वीडियो प्लेबैक] -Helmet, आप लेनेवाला, क्या चल रहा है? तुम मेरी बेटी को क्या कर रहे हो? लागू करने के लिए मुझे -Permit प्रतिभाशाली युवा प्लास्टिक सर्जन, डॉक्टर फिलिप Schlotkin. में सबसे बड़ी नाक नौकरी आदमी पूरे ब्रह्मांड और बेवर्ली हिल्स. तुम्हारा महारानी. -Nose काम? मुझे समझ नहीं आया. वह पहले से ही एक नाक नौकरी पड़ा है. यह उसे मिठाई 16 उपस्थित थे. नहीं, यह आप क्या सोचते नहीं है. यह बहुत, बहुत बुरा है. आप मुझे नहीं देते हवा ढाल संयोजन से, डॉक्टर Schlotkin दे देंगे आपके बेटी अपने पुराने नाक बैक. - [हाँफना] Nooooooooooooo. आप कहाँ मिला? -सभी अधिकार. मुझे लगता है मैं बताता हूँ, बता देंगे. नहीं, पिताजी, नहीं. तुम नहीं करना चाहिए. -तुम सही मेरे प्रिय. मैं अपने नए नाक याद करेंगे. लेकिन मैं उन्हें बता नहीं होगा संयोजन नहीं क्या बात है. अच्छी तरह -बहुत. डॉक्टर Schlotkin, अपने सबसे खराब करते हैं. मेरा खुशी. मुक्त! रुको, रुको. मैं बताता हूँ. मैं बताता हूँ. मैं यह काम होता था. ठीक है, यह मुझे दे. -इस संयोजन से एक है. -एक. -एक. -Two. -Two. -Two. तीन. तीन. तीन. -Four. -Four. -Four. पांच. पांच. पांच. संयोजन एक है तो, दो, तीन, चार, पांच. यही बेवकूफी संयोजन है मैं कभी भी अपने जीवन में सुना है. यह बात एक की तरह है मूर्ख अपने सामान पर होगा. , राजा साहब आप शुिईद्भया. [दूरदराज क्लिकों] आप क्या किया? मैं दीवार को बंद कर दिया. नहीं, तुम नहीं किया पूरी फिल्म को बंद कर दिया. मैं गया होगा गलत बटन दबाया. -Well, पीठ पर रख दिया! पीठ पर फिल्म रखें! हां, साहब! हाँ, सर. की, अर्नोल्ड जाना -Let. , ग्रेचेन आओ. बेशक आप मैं जानता हूँ कि इस के लिए बिल के लिए है. -Well? यह काम किया? राजा कहाँ है? यह तो, सर काम हम संयोजन है. -Great. अब हम हर आखिरी सांस ले सकते हैं ग्रह Druidia से ताजा हवा का. संयोजन क्या है? A- एक, दो, तीन, चार, पांच. A- एक, दो, तीन, चार, पांच? हां. -वह अद्भुत है. मैं एक ही मिल गया है मेरे सामान पर संयोजन. के लिए Spaceball 1 की तैयारी तत्काल प्रस्थान. हां, सर. बदल -और मेरे सामान पर संयोजन. [दरवाजा बंद ध्वनि] [दरवाजे की झंकार हेलमेट मार] -Ahh. [अंत वीडियो प्लेबैक] डेविड जे Malan: उसके लिए यह बात है CS50, हम अगले सप्ताह आप देखेंगे. अनाउन्सार: और अब, दीप Daven Farnham द्वारा विचार,. DAVEN Farnham: सी में कोडिंग है स्क्रैच से इतना कठिन. printf, स्क्रैच एक झूठ था. [हंसी बयान]