[संगीत खेल] डेविड जे Malan: सब ठीक है. इस CS50 है, और इस सप्ताह में दो की शुरुआत है. इसलिए हमें एक बग के साथ आज शुरू करते हैं. एक बग, ज़ाहिर है, एक एक कार्यक्रम में गलती, और तुम बहुत मिलेगा इस अवधारणा से परिचित आप क्रमादेशित कभी नहीं किया है पहले. pset0 और अब pset1. लेकिन हम कुछ विचार करें पहले थोड़ा सरल. मुझे लगता है कि यहाँ इस कार्यक्रम अग्रिम में एक साथ फेंक दिया और मैं इस प्रिंट चाहिए कि दावा Printf का उपयोग कर स्क्रीन पर 10 सितारे, लेकिन यह जाहिरा तौर पर किसी तरह छोटी गाड़ी है. कि विनिर्देश देखते हुए कि यह 10 सितारे प्रिंट चाहिए, लेकिन यह स्पष्ट नहीं करता है, क्या बग आप दावा होता है? हाँ? तो यह एक त्रुटि से एक बंद है, और तुम क्या मतलब है? ठीक. बहुत बढ़िया. इसलिए हम निर्दिष्ट किया है एक मैं के लिए शून्य के मूल्य शुरू, और हम 10 के एक एन मूल्य निर्दिष्ट किया है लेकिन हम अधिक या बराबर कम उपयोग किया है. और यह कारण है कि दो वर्ण और न सिर्फ एक प्रतीक है, एक गणित की किताब में की तरह, आपके पास नहीं है व्यक्त करने का एक तरीका एक चरित्र बराबर. ताकि, से भी कम का मतलब है लेकिन आप शून्य पर गिनती शुरू, लेकिन आप सभी तरह से गिनती 10 के माध्यम से अप और बराबर, आप कोर्स के लिए जाने की हो कुल में 11 बातें गिनती. और तो आप 11 सितारों मुद्रित करने के लिए जा रहे हैं. तो क्या इस बात के लिए एक तय हो सकता है? हाँ? तो बस से भी कम समायोजित या बस से भी कम हो के बराबर, और शायद, मैं दावा नहीं है भी एक और समाधान,. फिर आप क्या कर सकते हैं? हाँ? तो 1 को यह बराबर शुरू, और अधिक या बराबर कम छोड़ दें. और सच कहूँ तो मैं दावा करेगा कि, एक ठेठ मानव के लिए, यह शायद और अधिक सरल है. 1 पर गिनती शुरू और के माध्यम से 10 तक गिनती. अनिवार्य रूप से आप क्या मतलब नहीं है. लेकिन वास्तविकता में है प्रोग्रामिंग, हमने देखा है के रूप में, कंप्यूटर वैज्ञानिकों और प्रोग्रामर आम तौर पर शून्य पर गिनती शुरू करते हैं. और इसलिए है कि एक बार ठीक है आप इसकी आदत हो. आपका हालत आम तौर पर होगा से कम ऐसा कुछ हो. तो बस एक तार्किक त्रुटि है कि अब हम कर सकते थे ठीक है और अंत में फिर कंपाइल इस और सिर्फ 10 मिलता है. खैर कैसे यहाँ इस बग के बारे में? यहाँ, फिर से, मुझे लगता है कि दावा 10 stars-- मुद्रण का एक लक्ष्य रेखा इस समय प्रति एक है, लेकिन यह नहीं. हम प्रस्ताव से पहले क्या तय यह क्या करता है, मैं संकलन के लिए गए थे नेत्रहीन प्रिंट और इस कार्यक्रम तुम सोचते हो चला? हाँ? स्टार. पर इतना सब सितारे एक ही पंक्ति मैं क्या सुना है, और फिर नई लाइन चरित्र. तो चलो कोशिश करते हैं. इतनी छोटी गाड़ी -1, प्रवेश, और मैं बजना आदेश देखना हम पिछली बार के बारे में बात की है. ./buggy-1, और वास्तव में मैं सभी 10 सितारों को देखने मैं दावा भले ही एक ही लाइन पर मेरे विनिर्देशन के ऊपर सिर्फ एक टिप्पणी में मैं एक प्रति क्या करने का इरादा है कि कोड लाइन. लेकिन यह सही लग रहा है. मैं कर रहा हूँ की तरह अब रेखा 15 यह लग रहा है फिर एक स्टार मुद्रण, और रेखा 16 मैं मुद्रण हूँ ऐसा लगता है एक नई लाइन चरित्र, और वे दोनों तो इंडेंट रहे मैं स्पष्ट रूप से लूप के अंदर हूँ. तो मैं स्टार नहीं करना चाहिए, नया लाइन, सितारा, नई लाइन, सितारा, नई लाइन? हाँ? हाँ, एक भाषा के विपरीत की तरह अजगर, आप परिचित हो, खरोज नहीं करता कंप्यूटर के लिए बात. यह केवल मानव के लिए मायने रखती है. यहाँ जबकि मैं का आविष्कार किया है लाइनों तो 15 और सुंदर लग रहा है कि 16--, लेकिन कंप्यूटर की परवाह नहीं करता. कंप्यूटर के बारे में परवाह वास्तव में घुंघराले ब्रेसिज़ होने कोड की इन लाइनों के आसपास. यह इतना है कि बस में तरह clear-- है Scratch-- कोड के उन दो पंक्तियों कि निष्पादित किया जाना चाहिए. उन पीले स्क्रैच पहेली की तरह टुकड़े फिर और फिर और फिर. मैं तो अगर अब फिर से रन program-- ./buggy-2-- हम्म. मैं अब एक त्रुटि है. मुझे क्या करना भूल गए? हाँ, तो मैं यह संकलन नहीं किया. इतनी छोटी गाड़ी -2 बनाने. ऐसा कोई फ़ाइल मैं नहीं था क्योंकि वास्तव में दूसरे संस्करण संकलन. तो अब दिलचस्प अघोषित 2 नहीं variable--. हम 1 कर रहे हैं. अब छोटी गाड़ी-1-- ./buggy-1-- और बनाओ उनमें से हर एक ही लाइन पर है. अब एक अपवाद के लिए है मेरा यह माना दावा कि आप इन घुंघराले ब्रेसिज़ जरूरत है. जब यह वास्तव में है OK-- आप है, तो खंड या textbooks-- में देखा घुंघराले ब्रेसिज़ न आना करने के लिए? हाँ? बिल्कुल सही. वहाँ केवल एक ही है जब कोड की पंक्ति है कि आप के साथ जुड़े रहना चाहता हूँ हमारा पहला उदाहरण के रूप में पाश. यह पूरी तरह से वैध है घुंघराले ब्रेसिज़ न आना सिर्फ एक सुविधा की तरह के रूप में आप के लिए संकलक से. हाँ? अच्छा सवाल है. यह एक शैली त्रुटि माना जाएगा? हम CS50 में के रूप में promote-- होगा शैली गाइड, जिसके लिए यूआरएल कि हमेशा pset1-- में है घुंघराले ब्रेसिज़ का उपयोग करें. निश्चित रूप से आप प्रोग्रामिंग करने के लिए नए हैं. वास्तविकता हम नहीं कर रहे है आप निषेध के लिए जा रहा इन सुविधाओं करने से. लेकिन तुम सिर्फ हो रही है चीजों के झूले में, बिल्कुल बस हमेशा घुंघराले उपयोग आप इसे भांप लेना तक ब्रेसिज़. अच्छा सवाल है. ठीक है. इतना है कि तब एक बग था. काफी सरल कुछ में कम से कम. और फिर भी आप इस सोच सकते हैं सही, काफी अल्पविकसित है? इस पहले सप्ताह की तरह है की भाषा को देख जैसे, अपने कीड़े उसमें देखते हैं. लेकिन वास्तविकता यह है कि इन कर रहे हैं वास्तव में प्रतिनिधि कुछ बहुत भयावह समस्याओं का कि असली दुनिया में पैदा कर सकते हैं. तो आप में से कुछ याद हो सकता है आप तकनीक की खबर का पालन करें, या शायद यह भी पकड़ा फरवरी में इस की हवा एप्पल था कि यह पिछले साल की , दोनों आईओएस में एक गलती की एक सा बनाया पर ऑपरेटिंग सिस्टम उनके फोन, और भी मैक ओएस ऑपरेटिंग सिस्टम अपने डेस्कटॉप और लैपटॉप पर. और अगर आप इस तरह के रूप में सुर्खियों में देखा था. और उसके बाद, एप्पल इस बग को ठीक करने का वादा किया, और बहुत जल्दी, IOS में यह तय किया लेकिन फिर अंत में मैक ओएस में यह तय के रूप में अच्छी तरह से. अब इन सुर्खियों से कोई भी अकेले सच मूल समस्या क्या था पता चलता है, लेकिन बग अंततः कम हो गया था एसएसएल में एक बग, सुरक्षित सॉकेट लेयर. और लंबी कहानी को कम, इस सॉफ्टवेयर है कि हमारे ब्राउज़र और अन्य सॉफ्टवेयर क्या करते थे? मैं एसएसएल ने कहा है कि यदि शामिल, जब भी आप , HTTPS के साथ शुरू होता है कि एक यूआरएल पर जाएँ तो क्या एसएसएल से संबंधित हो सकता है? एन्क्रिप्शन. इसलिए हम के बारे में बात करेंगे आने वाले दिनों में इस. एन्क्रिप्शन, की कला जानकारी पांव मार. लेकिन लंबी कहानी संक्षेप में, एप्पल कुछ समय एक गलती की थी पहले , एसएसएल के उनके क्रियान्वयन में अंत में लागू करता है जो सॉफ्टवेयर HTTPS या अधिकतम तरह यूआरएल वहां भी कनेक्शन. जिनमें से परिणाम यह है कि आपके कनेक्शन संभवतः सकता है पकड़ा जा. और आपके कनेक्शन थे जरूरी एन्क्रिप्टेड नहीं आप के बीच कुछ बुरा आदमी में था आप और गंतव्य वेबसाइट जो इस का लाभ लेने के लिए पता था. अब एप्पल अंततः तैनात एक अंत में इस के लिए तय, और विवरण अपने तय की इस थी. सुरक्षित परिवहन को मान्य करने में विफल कनेक्शन की प्रामाणिकता. इस मुद्दे ने भी संबोधित किया लापता सत्यापन कदम बहाल. तो यह एक बहुत हाथ लहराती विवरण है बस हम खराब कर दिया है कि कहने के लिए. सचमुच एक है छोटी गाड़ी था कि कोड की लाइन उनके एसएसएल के कार्यान्वयन, और में आप ऑनलाइन जाने के लिए और इस के लिए खोज आप वास्तव में प्राप्त कर सकते हैं मूल स्रोत कोड. उदाहरण के लिए, इस का एक स्क्रीन शॉट है सिर्फ एक काफी बड़ी फ़ाइल के एक हिस्से को, लेकिन यह जाहिरा तौर पर कहा जाता है एक समारोह है एसएसएल साइन सर्वर कुंजी विनिमय सत्यापित. और इसका एक गुच्छा ले जाता है तर्क और आदानों. और हम ध्यान केंद्रित करने के लिए नहीं जा रहे हैं वहाँ minutia पर बहुत ज्यादा, लेकिन आप अंदर कोड पर ध्यान केंद्रित अगर चलो function-- कि सर्वोच्च की उस पर ज़ूम. आप पहले से ही शक हो सकता है क्या त्रुटि हो सकता है तुम्हें पता नहीं है, भले ही हो अंत में आप क्या देख रहे हैं. एक विसंगति की तरह नहीं है यहाँ, जो क्या है? हाँ, मैं वास्तव में पसंद नहीं है दो गोटो की नज़र में विफल रहता है. सच कहूँ तो, मैं वास्तव में नहीं जानता कि क्या गोटो साधन असफल, लेकिन उनमें से दो होने वापस वापस करने के लिए. वह सिर्फ एक तरह से मुझे मालिश बौद्धिक गलत तरीके से, और हम पर ज़ूम यदि वास्तव में सिर्फ उन लाइनों, इस सी है तो एप्पल के कोड का एक बहुत खुद सी में लिखा है, और यह जाहिरा तौर पर वास्तव में equivalent-- है ऐसा नहीं है कि बहुत खरोज को संस्करण है, लेकिन आप को पहचान अगर तथ्य कोई घुंघराले ब्रेसिज़, वहाँ है कि क्या एप्पल वास्तव में लग रहा है कि कोड था लिखा था इस तरह. तो मैं बाहर तेजी से बढ़ी है और सिर्फ मैं भावना में खरोज तय कि कोई घुंघराले ब्रेसिज़, कि अगर वहाँ दूसरी गोटो कि पीले रंग में है विफल क्या कोई फर्क नहीं पड़ता पर अमल करने जा रहा है. इसके साथ जुड़ा नहीं है यह ऊपर अगर हालत. तो भी फिर, अगर आप ऐसा नहीं काफी क्या समझ यह संभवतः सकता है , क्या कर रही हो पता इनमें से प्रत्येक कि इन पंक्तियों के प्रत्येक conditions-- एक बहुत ही महत्वपूर्ण कदम है जाँच की प्रक्रिया में अपने डेटा वास्तव में अगर एन्क्रिप्टेड. तो इनमें से किसी एक लंघन कदम, नहीं सबसे अच्छा विचार है. लेकिन हम यह है क्योंकि दूसरी गोटो, पीले रंग में असफल और क्योंकि हम एक बार तरह के सौंदर्य की दृष्टि से जहां यह बाईं करने के लिए कदम तार्किक पल में है, क्या इस लाइन के लिए मतलब है कि दूसरा गोटो नीचे दिए गए कोड की आपको लगता होगा विफल? यह हमेशा छोड़ दिया जा रहा है. तो gotos आम तौर पर सिकोड़ी हैं हम वास्तव में नहीं जाएंगे कारणों के लिए, और वास्तव में CS50 में हम नहीं जाते इस बयान गोटो को पढ़ाने के लिए, लेकिन आप गोटो के बारे में सोच सकते हैं अर्थ जाओ कूद के रूप में असफल कोड के कुछ अन्य हिस्से के लिए. दूसरे शब्दों में कूद कुल मिलाकर यह अंतिम पंक्ति, और इसलिए इस बेवकूफ का परिणाम सिर्फ था कि साधारण गलती शायद किसी का एक परिणाम नकल और भी एक चिपकाने कई बार पूरी थी कि IOS और मैक ओएस की सुरक्षा अवरोधन की चपेट में था कुछ समय के लिए बुरे लोगों से. एप्पल जब तक अंत में यह तय हो. अब आप में से कुछ वास्तव में कर रहे हैं आईओएस या मैक ओएस के पुराने संस्करण चला, आप gotofail.com लिए जा सकते हैं, जो किसी की स्थापना की है कि एक वेबसाइट है अनिवार्य रूप से निर्धारित करने के लिए प्रोग्राम के आपके कंप्यूटर अभी भी कमजोर है. और सच में, अगर यह होता है, यह शायद एक अच्छा विचार है अपने फोन को अद्यतन करने के लिए या इस बिंदु पर अपने मैक. लेकिन वहाँ, बस वसीयतनामा बस कैसे करने के लिए इन निचले स्तर की सराहना विवरण और काफी सरल विचारों सकते हैं वास्तव में फैसले में अनुवाद और समस्याओं कि इस case-- में affected-- लोगों के लाखों. प्रशासन पर अब एक शब्द भी नहीं. धारा इस आ रविवार शुरू होगा. आप से एक ईमेल प्राप्त होगा खंड के बारे में सप्ताहांत, जो बिंदु पर resectioning प्रक्रिया आप है, तो शुरू हो जाएगा तुम अब एहसास हुआ कुछ नया संघर्ष. तो यह हर साल होता है, और हम आने वाले दिनों में समायोजित करेगा. कार्यालय hours-- एक रख कर यहाँ इस समय पर आँख. इस सप्ताह एक छोटा सा परिवर्तन, विशेष रूप से शुरू करने का समय और स्थान, तो परामर्श करते हैं कि कार्यालय समय के लिए शीर्षक से पहले अगले चार रातों के किसी भी. और अब मूल्यांकन पर एक शब्द, आप समस्या में गोता खासकर के रूप में एक और परे सेट. विनिर्देश प्रति तो, ये आम तौर पर कर रहे हैं कुल्हाड़ियों जो साथ हम अपने काम का मूल्यांकन. स्कोप को संदर्भित करता है क्या हद अपने कोड लागू सुविधाओं की आवश्यकता हमारे विनिर्देश द्वारा. दूसरे शब्दों में, कितना एक टुकड़ा सेट आपको काट लेना था. आप इसके बारे में एक तिहाई नहीं किया था, इसके बारे में एक आधा, यह की 100%. यह सही नहीं है यहां तक ​​कि अगर, आप कितना प्रयास किया? उस स्तर कब्जा तो प्रयास और राशि की जो करने के लिए आप बंद सा समस्या सेट की समस्याओं. यह एक Correctness--, को किस हद तक अपने कोड है संगत के साथ हमारे विनिर्देशों और कीड़े से मुक्त. तो इसे सही ढंग से काम करता है? हम इसे कुछ इनपुट दे, तो यह करता है हमें उम्मीद है कि उत्पादन दे? Design-- अब इस का पहला है विशेष रूप से गुणात्मक वाले, या मानव न्याय की आवश्यकता है कि लोगों को. हम एक कर्मचारी है और यही कारण है वास्तव में, यह है इतने सारे शिक्षण साथियों और पाठ्यक्रम की सहायकों. क्या हद तक आपकी है कोड अच्छी तरह से लिखा? और फिर यह एक बहुत है गुणात्मक मूल्यांकन उस पर आप के साथ काम करेंगे सप्ताह में द्वि directionally आने के लिए. इतनी है कि आप नहीं मिलता है जब केवल न्यूमेरिक स्कोर, लेकिन यह भी एक प्रश्न के लिखित स्कोर, या टाइप की प्रतिक्रिया, या अंग्रेजी शब्दों में प्रतिक्रिया लिखा. यही कारण है कि हम आप ड्राइव करने के लिए इस्तेमाल करेंगे क्या है वास्तव में बेहतर कोड लिखने की ओर. और व्याख्यान और खंड में, हम कोशिश करेंगे जैसा कि अक्सर हम can-- रूप out-- बात करने के लिए क्या एक कार्यक्रम न केवल करता है सही और कार्यात्मक अच्छा, लेकिन यह भी अच्छी तरह से बनाया गया. सबसे कुशल यह हो सकता है, या यहां तक ​​कि सबसे सुंदर हो सकता है. जो शैली की ओर जाता है. शैली अंततः है एक सौंदर्य निर्णय. आप अच्छा चयन किया आपके चर के लिए नाम? आप ठीक ढंग से अपने कोड इंडेंट है? यह इसलिए अच्छे लगते हैं, और करता है, यह दूसरे इंसान के लिए आसान है अपने संबंधित पढ़ने के लिए इसकी शुद्धता की. अब आम तौर पर पाठ्यक्रम प्रति, हम स्कोर एक पांच सूत्री पैमाने पर इन बातों को. और मुझसे बात घर हथौड़ा जाने एक तीन कि वास्तव में अच्छा है. बहुत जल्दी लोगों करते हैं गणित शुरू कर रही है. वे की एक तीन बाहर निकलना जब कुछ pset के लिए शुद्धता पर पांच और वे बहुत लगता है, मैं 60% करने के लिए जा रहा जो अनिवार्य रूप से एक विकास या एक ई है उस तरह नहीं है हम इन नंबरों के बारे में सोच. एक तीन क्या वास्तव में अच्छा है, और हम आम तौर पर शुरुआत में उम्मीद अवधि के तुम हो रही है कि अगर शायद three's-- का एक गुच्छा एक जोड़ी मेलों की, fours-- की एक जोड़ी या एक जोड़े twos, fours-- के एक जोड़े कि शुरू करने के लिए एक अच्छी जगह है. और हम एक इतने लंबे समय के रूप में देखते हैं समय के साथ ऊपर की ओर प्रक्षेपवक्र, आप एक विशेष रूप से अच्छा स्थान पर हैं. हम करने के लिए उपयोग सूत्र वजन बातें अनिवार्य है पाठ्यक्रम के अनुसार यह, जो अभी हम इसका मतलब है कि शुद्धता के लिए अधिक वजन दे. यह बहुत अक्सर शुद्धता क्योंकि कि सबसे अधिक समय लेता है. अब मुझ पर विश्वास करो. आप कम से कम find-- जाएगा एक pset-- में है कि आप अपने समय का 90% खर्च समस्या का 10% पर काम कर. और सब कुछ की तरह काम करता है एक या दो कीड़े के अलावा, और उन कीड़े हैं कि देर रात को तुम रहो. उन लोगों को कर रहे हैं कि एक तरह से आप बच. लेकिन उस पर सोने के बाद, या कार्यालय समय में भाग ले या, ऑनलाइन सवाल पूछ आप 100% है कि लक्ष्य को प्राप्त करते हैं, और यही कारण है कि हम वजन सबसे शुद्धता. एक छोटे से कम डिजाइन, और कि एक छोटे से कम शैली. लेकिन mind-- शैली में रखना शायद सबसे आसान है इनमें से काट लेना शैली पुस्तिका के अनुसार. और अब, एक और अधिक गंभीर शैक्षणिक ईमानदारी पर ध्यान दें. CS50 का दुर्भाग्यपूर्ण गौरव प्राप्त है विज्ञापन बोर्ड का सबसे बड़ा उत्पादक जा रहा है मामलों में लगभग हर साल ऐतिहासिक. छात्रों में धोखा इसका कारण यह नहीं है CS50 किसी भी अधिक तो किसी भी अन्य वर्ग से, लेकिन क्योंकि काम की प्रकृति से, यह इलेक्ट्रॉनिक तथ्य यह है कि, हम यह देखने के लिए, और तथ्य यह है कि तथ्य यह है कि हम कंप्यूटर वैज्ञानिकों, कर रहे हैं मुझे लगता है हम दुर्भाग्य से कर रहे हैं कह सकते हैं यह पता लगाने में बहुत अच्छा. तो यह वास्तविक रूप में क्या मतलब है? यह इसलिए, पाठ्यक्रम प्रति, पाठ्यक्रम के दर्शन वास्तव में उचित होने के लिए नीचे फोड़ा है. इस लाइन के बीच में है अपने दम पर एक काम कर और का एक छोटा सा हो रही एक दोस्त से उचित सहायता, और एकमुश्त लिए कि काम कर अपने दोस्त, या उसे या उसके अपने कोड भेज वह या तो वे कर सकते हैं कि इतना ले या सही यह बाहर उधार ले. और कहा कि लाइन पार हम कक्षा में तैयार की है. , पाठ्यक्रम देखें अंततः लाइनों के लिए हम उचित होने के रूप में आकर्षित कि और अनुचित व्यवहार, लेकिन यह वास्तव में फोड़ा करता है सार करने के लिए नीचे आपके काम करने की जरूरत की अंत में अपनी खुद की हो. अब उस से कहा, एक अनुमानी है. आप imagine-- सकता है क्योंकि कार्यालय समय और दृश्यों से और वीडियो हम है दिखाया गया है, इस प्रकार far-- CS50 वास्तव में सहयोगी के रूप में होने का मतलब है और के रूप में सहकारी और सामाजिक संभव के रूप में. सहयोगी के रूप में यह कठोर है. लेकिन साथ यह कहा, अनुमानी, आप पाठ्यक्रम में देखेंगे, तुम कुछ समस्या हो रही है जब कि है. आप अपने कोड में कुछ बग है कि आप हल नहीं कर सकते, यह आपके लिए उचित है किसी और को अपने कोड को दिखाने के लिए. भी वर्ग में एक दोस्त, एक दोस्त कार्यालय समय में आप के बगल में बैठे, या स्टाफ के एक सदस्य है. लेकिन वे अपने आप को कोड नहीं दिखा सकते हैं. दूसरे शब्दों में, एक अपने question-- को जवाब मैं help-- ओह, यहाँ अपने कोड है नहीं है जरूरत है. इस पर एक नज़र रखना और आप क्या करेंगे यह से परिणाम निकालना. अब, ज़ाहिर है, वहाँ एक तरह से स्पष्ट रूप से खेल के लिए मैं तुम्हें दिखाता हूँ जिससे इस प्रणाली एक प्रश्न होने से पहले अपने कोड. आप मुझे मेरे अपने कोड दिखाने एक प्रश्न होने से पहले. लेकिन के लिए फिर से पाठ्यक्रम देखना इस लाइन है जहां की बेहतर जानकारी. बस अब तस्वीर पेंट करने के लिए और के रूप में पारदर्शी रूप से संभव के रूप में साझा हम हाल के वर्षों में कहाँ पर हैं, इस विज्ञापन बोर्ड मामलों की संख्या है कि CS50 से अधिक पड़ा है पिछले सात वर्षों. 14 मामलों में इस सबसे हाल ही में गिरावट के साथ. शामिल छात्रों के संदर्भ में, यह 20 कुछ अजीब छात्रों थी यह पिछले गिर जाते हैं. 33 की एक चोटी पर हुई थी कुछ साल पहले छात्रों को. जिनमें से कई दुर्भाग्य हैं अब यहाँ परिसर में. के प्रतिशत के रूप में शामिल छात्रों कक्षा ऐतिहासिक 0% से लेकर है कहने के लिए ही है, जो 5.3% है, इस सालाना एक चुनौती है. और वह अंत की ओर, क्या हम एक व्यक्त करना चाहते है हम सिर्फ FYI-- पर तुलना dd-- कि उन छात्रों को एक निष्पक्षता जो तदनुसार लाइन निम्नलिखित हैं. हम सभी मौजूदा तुलना करना सभी पिछले मिशन के खिलाफ प्रस्तुतियाँ पिछले कई वर्षों से. हम चारों ओर गूगल को कैसे भी पता और कोड खजाने को खोजने ऑनलाइन चर्चा मंचों ऑनलाइन ऑनलाइन, काम साइटों. एक छात्र इसे पा सकते हैं, तो हम निश्चित रूप से कर सकते हैं यह जितना हम खेद के रूप में करते हैं. तो क्या आप पाठ्यक्रम में देखेंगे हालांकि यह अफसोस खंड है. मैं निश्चित रूप से कर सकते हैं सराहना करते हैं, और हम सब किया है स्टाफ कोर्स की तरह किया होने समय के साथ यह, या यह एक ही है, निश्चित रूप से यह पसंद है जब पता है क्या जीवन जब आपके पास रास्ते में हो जाता है कुछ देर रात deadline-- न केवल इस वर्ग में, लेकिन आप another-- हो जब पूरी तरह से समाप्त हो, बाहर जोर दिया एक अत्यधिक संख्या है अन्य बातों के करने के लिए. आप कुछ बिंदु में कम कर देगा निश्चित रूप से एक बुरा, शायद देर से जीवन रात निर्णय. पाठ्यक्रम के अनुसार तो, इस खंड है, बनाने की ऐसी है कि अगर भीतर 72 घंटे कुछ गरीब निर्णय, आप इसे करने के लिए ही और मेरे लिए बाहर तक पहुँचने और पाठ्यक्रम के सिर में से एक और हम एक बातचीत करनी होगी. हम चीजों को संभाल लेंगे आंतरिक उम्मीद में यह एक के अधिक बनने की शिक्षण पल या जीवन सबक, साथ और कुछ नहीं विशेष रूप से कठोर असर आप यहां इन चार्ट पर देख सकते हैं. इसलिए कि एक बहुत ही गंभीर स्वर है. हमें सिर्फ कुछ के लिए थामने के चलो सेकंड तनाव को तोड़ने के लिए. [संगीत खेल] डेविड जे Malan: सब ठीक है, इसलिए कि थी कि कैसे एक segue के लिए? आज के प्राथमिक विषयों के लिए. जिसमें से पहली अमूर्त है. जिनमें से एक और होने जा रहा है जो स्पष्ट रूप से डेटा का प्रतिनिधित्व कैसे कह का एक बहुत शुष्क जिस तरह से हम कर सकते है समस्याओं को सुलझाने और सोच के बारे में जाना समस्याओं को सुलझाने के बारे में? तो आप स्क्रैच में देखा है, और तुम है सी के साथ pset1 में शायद पहले से ही देखा आप न केवल उपयोग कर सकते हैं कार्यों, printf की तरह, कि अन्य लोगों में पिछले कुछ वर्षों में आप के लिए लिखा था. तुम भी अपने खुद के कार्यों में लिख सकते हैं. और तुम नहीं हो सकता है, भले ही pset1 में स्पष्ट रूप से सी में इस किया है, और आप वास्तव में लिखने की जरूरत नहीं है आपकी problem-- क्योंकि खुद समारोह पर शायद कठिन है, जबकि पहले आप देखेंगे glance-- अंततः के साथ हल किया जा सकता है कोड के सभी नहीं है कि कई लाइनों. लेकिन उस मामले में, कहा साथ अपने खुद के समारोह लिखने की, दे सी है कि एहसास आप इस क्षमता. मैं आज के स्रोत कोड में जाने के लिए जा रहा हूँ जो पहले से ही ऑनलाइन उपलब्ध है और मैं आगे और खुले जा रहा हूँ समारोह 0.C नामक कार्यक्रम, और समारोह शून्य में हम कुछ चीजों को देखेंगे. पहली लाइन 18 के माध्यम से 23 मेरे मुख्य कार्य है. और अब हम पढ़ने के लिए शुरुआत कर रहे हैं कि हम मक्खी पर लिख नहीं कर रहे हैं कि कोड, लेकिन इसके बजाय मैं पहले से लिखा है या एक समस्या में अपने द्वारा निर्धारित होने प्राप्त हो सकती है अग्रिम में लिखा गया. एक अच्छा तरीका शुरू करने के लिए किसी और के कोड को पढ़ने मुख्य समारोह के लिए लग रही है. जहां कि प्रवेश चित्रा बाहर सूत्री कार्यक्रम चल रहा है, और फिर वहाँ से यह तार्किक का पालन करें. इसलिए इस कार्यक्रम जाहिरा तौर पर प्रिंट एक बृहदान्त्र के बाद अपना नाम. हम तो GetString का उपयोग CS50 पुस्तकालय से एक स्ट्रिंग, या एक शब्द या वाक्यांश पाने के लिए कीबोर्ड पर उपयोगकर्ता से. और फिर यह नहीं है बात here-- PrintName. अब PrintName एक नहीं है सी के साथ आता है कि समारोह यह मानक io.h. में नहीं है यह CS50.h. में नहीं है यह एक ही फाइल में नहीं बल्कि है. मैं नीचे स्क्रॉल अगर नोटिस एक bit-- लाइनों 25 27-- को यह टिप्पणी का सिर्फ एक सुंदर तरीका है सितारे और स्लैश का उपयोग कर अपने कोड. यह एक बहु रेखा है टिप्पणी, और यह बस है के नीले रंग में अपने विवरण इस समारोह में क्या करता है. 31 के माध्यम से लाइनों में 28, क्योंकि मैं एक सुपर सरल समारोह लिखा है जिसका नाम PrintName है. यह कितने लेता है तर्क आप कहेंगे? तो एक argument-- एक है क्योंकि वहाँ कोष्ठकों के अंदर सूचीबद्ध तर्क. जो के प्रकार स्ट्रिंग है. कौन सा PrintName कहना है इस ब्लैक बॉक्स की तरह है लेता है या समारोह इनपुट स्ट्रिंग के रूप में. और कहा कि स्ट्रिंग का नाम सुविधा नाम होगा. नहीं है, नहीं एन, लेकिन नाम. तो PrintName क्या करता है? यह अच्छा सरल है. सिर्फ कोड की एक लाइन के लिए के रूप में printf, लेकिन जाहिरा तौर पर यह प्रिंट आउट "हैलो," इतना और इतनी. कहां अमुक तर्क से आता है. अब यह यहाँ एक विशाल नवीनता नहीं है. वास्तव में, मुझे लगता है कि सकता है एक कार्यक्रम में ले लिया है कोड की एक पंक्ति के साथ लिखा गया है यहाँ इस डाल से, और कुछ करने के लिए इसे बदल दिया कि कुछ छह या सात या तो शामिल नीचे यहाँ कोड की लाइनों के लिए सभी तरह. लेकिन यह एक का अभ्यास कर रहा है अमूर्त रूप में जाना जाता सिद्धांत. एक तरह से एक नए के अंदर encapsulating एक नाम है कि समारोह, और बेहतर अभी तक उस नाम का शाब्दिक यह क्या करता है कहते हैं. मुझे लगता है कि नहीं है printf-- मतलब विशेष रूप से वर्णनात्मक. मैं एक बनाना चाहते हैं पहेली टुकड़ा, या मैं अगर एक समारोह बनाना चाहते हैं कि, किसी का नाम प्रिंट ऐसा करने का सौंदर्य कि मैं वास्तव में यह कर सकते है उस समारोह में एक नाम देना कि यह क्या करता है वर्णन करता है. अब यह एक इनपुट में लेता है मैं मनमाने ढंग से नाम कहा जाता है, लेकिन वह भी शानदार वर्णनात्मक है बजाय एक छोटे से अधिक होने का एस और तरह सामान्य शून्य, अभी के लिए, बस मतलब इस से काम नहीं करता है कि कुछ भी मुझे वापस हाथ. यह GetString की तरह नहीं है कि सचमुच एक स्ट्रिंग मुझे वापस हाथ जैसे हम कागज के टुकड़े के साथ किया था अपने सहपाठियों के साथ पिछले हफ्ते, बल्कि यह सिर्फ एक पक्ष प्रभाव पड़ता है. यह स्क्रीन करने के लिए कुछ प्रिंट. दिन के अंत में, तो मैं बना कर समारोह -0, ./function -0, हम यह मेरे नाम के लिए पूछता है कि देखेंगे. मैं अपना नाम बाहर प्रकार दाऊद टाइप करें, और यह. मैं रोब के साथ इसे फिर से करते हैं, यह कहने के लिए जा रहा है "हैलो, रोब." तो एक साधारण विचार है, लेकिन शायद इस मानसिक रूप से एक्सट्रपलेशन अपने कार्यक्रमों के रूप में है कि , और अधिक जटिल एक छोटे से और आप का एक हिस्सा लिखने के लिए चाहते हैं कोड और कॉल कि code-- आह्वान कुछ वर्णनात्मक द्वारा कि code-- PrintName जैसे नाम, सी हमें इस क्षमता को वहन करता है. यहाँ एक सरल उदाहरण है. उदाहरण के लिए, मैं एक खुला return.c बुलाया आज से फाइल, मैं यहाँ क्या कर दिया नोटिस. इस मुख्य समारोह के अधिकांश printf है. मैं पहले मनमाने ढंग से एक को प्रारंभ नंबर 2 के लिए एक्स बुलाया चर. मैं तो एक्स अब "बाहर प्रिंट % मैं "एक्स के मूल्य में गुजर रहा है. इसलिए मैं सिर्फ यह क्या कह रहा हूँ. अब मैं सिर्फ साहसपूर्वक हूँ printf के साथ का दावा. मुझे लगता है कि मूल्य एक्स cubing रहा हूँ, और मैं कर रहा हूँ एक समारोह को फोन करके ऐसा करने कहा जाता घन निधन तर्क के रूप में एक्स में, और फिर उत्पादन बचत चर ही में, एक्स. इसलिए मैं एक्स के मूल्य clobbering रहा हूँ. मैं अधिभावी रहा हूँ साथ एक्स का मूल्य जो भी फोन करने का परिणाम इस घन समारोह है. और फिर मैं सिर्फ कुछ बाहर प्रिंट शराबी सामान यहाँ मैं क्या किया कह रही. तो फिर घन क्या है? मौलिक क्या है सूचना यहां अलग. मैं समारोह दी है पहले की तरह एक नाम. मैं एक तर्क के लिए कोई नाम निर्दिष्ट किया है. यह n बजाय नाम से कहा जाता है इस बार, लेकिन मुझे लगता है मैं कुछ भी कह सकते हैं. लेकिन यह अलग है. बाईं तरफ यह बात. पहले यह क्या कीवर्ड था? लड़कों. अब यह स्पष्ट रूप से पूर्णांक है. तो क्या शायद दूर ले रहा है? शून्य का प्रतीक है जबकि तरह की शून्य, और कहा कि मामला था. PrintName कुछ भी नहीं लौटा. यह कुछ किया है, लेकिन यह मुझे वापस हाथ नहीं था मैं पर डाल सकता है कि कुछ एक बराबर चिह्न के बाएं हाथ की ओर जैसे मैं लाइन 22 पर यहाँ किया है. तो मैं लाइन 30 पर में कहते हैं, क्या शायद जिसका अर्थ है कि क्या घन के बारे में मेरे लिए है? हाँ? यह एक पूर्णांक देता है. तो इसके लिए मुझे वापस हाथ कागज के उदाहरण, एक टुकड़ा जिस पर यह जवाब लिखा है. 2 cubed, या 3 cubed, या 4 cubed-- मैं, में पारित जो कुछ और मैं यह कैसे लागू किया? खैर, अभी एन बार एन बार n मैं एक मूल्य घन कैसे हो सकता है. तो फिर, सुपर सरल विचार, लेकिन प्रदर्शनात्मक अब हम कार्यों कैसे लिख सकता है कि वास्तव में हमें वापस था ब्याज की हो सकती है कि मूल्यों. की एक आखिरी उदाहरण में देखें यहां समारोह से एक कहा जाता है. इस उदाहरण में, यह शुरू होता है अधिक सम्मोहक पाने के लिए. तो समारोह में, इस program-- नोटिस अंततः GetPositiveInt नामक एक समारोह कहता है. GetPositiveInt एक नहीं है CS50 पुस्तकालय में समारोह लेकिन हम हम का फैसला यह अस्तित्व में करना चाहते हैं. तो हम बाद की फ़ाइल में नीचे स्क्रॉल, तो मैं लागू करने के बारे में कैसे चला गया नोटिस सकारात्मक पूर्णांक हो, और मैं यह अधिक सम्मोहक है कहना यह एक अच्छा है क्योंकि कोड की लाइनों की संख्या. यह सिर्फ एक मूर्ख नहीं है छोटे खिलौने कार्यक्रम. यह वास्तव में कुछ त्रुटि जाँच मिल गया है और अधिक उपयोगी कुछ कर रही है. आप walkthrough नहीं देखा है तो अगर हम pset1 में एम्बेडेड है कि वीडियो, इस का एक प्रकार है कि पता आत्मा में इसी तरह सी में पाश, बातें खरोंच के प्रकार के लिए कर सकते हैं. और क्या ऐसा करने के कहते हैं. इस प्रिंट आउट. तो आगे बढ़ो और n-- मिल एक पूर्णांक प्राप्त और एन में दुकान, और रखने के लिए बार बार और यह कर फिर इतने लंबे समय के एन के रूप में कम से कम एक है. तो पता कम से कम एक होने जा रहा है केवल मानव सहयोग नहीं कर रहा है. वह या वह टाइपिंग है तो 0 या -1 या -50 में, इस पाश रखने जा रहा है बार बार क्रियान्वित. और अंत में मैं, नोटिस बस मूल्य वापसी. तो अब हम एक समारोह है कि अच्छा होता CS50 में लागू होगा अगर आप के लिए CS50.h और CS50.c, लेकिन यहाँ हम अब कर सकते हैं इस खुद को लागू करने. लेकिन कुछ महत्वपूर्ण विवरण पर दो टिप्पणियाँ. One-- क्यों मैं पूर्णांक घोषित किया एन, लाइन 29 पर, तुम्हें क्या लगता है बजाय सिर्फ कर की यहाँ यह जो है साथ और अधिक सुसंगत हम पिछले हफ्ते क्या किया? हाँ? एक अच्छा विचार. तो अगर हम इसे डाल रहे थे यहां, यह हम के रूप में यद्यपि है बार बार यह घोषणा कर रखना. और खुद का है समस्याग्रस्त नहीं, दर असल, हम केवल जरूरत है क्योंकि और फिर एक बार मूल्य हम वैसे भी एक नया एक पाने के लिए जा रहे हैं. लेकिन एक अच्छा विचार. हाँ? बंद. मैं n पर घोषित कर दिया है क्योंकि तो लाइन 29 लूप के बाहर, यह भर में सुलभ है इस पूरे समारोह. नहीं अन्य कार्यों क्योंकि n इन घुंघराले के अंदर अभी भी है यहाँ ब्रेसिज़. यकीन So--. बिल्कुल सही. तो इस बात के लिए भी अधिक है. हम बजाय घोषित हैं n यहीं लाइन 32 पर, यह अनुमान है कि क्योंकि समस्याग्रस्त है कहाँ और मैं इसे का उपयोग करने की आवश्यकता है? रेखा 34, और पर अंगूठे के सामान्य नियम है आप केवल एक चर का उपयोग कर सकते हैं सबसे हाल ही घुंघराले ब्रेसिज़ के अंदर जिसमें आप यह घोषणा की. दुर्भाग्य से, रेखा 34 एक पंक्ति, बहुत देर हो चुकी है मैं पहले से ही बंद कर दिया है क्योंकि लाइन 33 पर घुंघराले ब्रेस उस से मेल खाती है लाइन 30 पर घुंघराले ब्रेस. और इसलिए यह कहने का एक तरीका है इस चर पूर्णांक scoped है कि, इतना ही अंदर करने के लिए, बात करने के लिए उन घुंघराले ब्रेसिज़ की. यह सिर्फ उनमें से बाहर मौजूद नहीं है. तो वास्तव में, अगर मैं इस गलत, मुझे कोड बचाने के रूप में इसे गलत तरीके से लिखा is--. मुझे आगे जाना है और कर करते हैं समारोह -1, और notice-- त्रुटि. अघोषित पहचानकर्ता n का उपयोग यहीं है जो लाइन 35 पर. और हम ऊपर स्क्रॉल अगर इसके अलावा, एक और एक. अघोषित का प्रयोग करें लाइन 34 पर पहचानकर्ता एन. तो संकलक, बजना, यह देख रही है कि बस भले ही मौजूद नहीं है स्पष्ट रूप से यह नेत्रहीन है. तो एक सरल तय वहाँ यह घोषणा कर रहा है. अब मेरे लिए स्क्रॉल जाने फ़ाइल के ऊपर. क्या आप के रूप में बाहर कूदता एक छोटे से अलग किया जा रहा है सामान से हम पिछले सप्ताह में देखा? इतना ही नहीं नाम मेरे पास है, न ही करना मैं, कुछ तेज शीर्ष तक शामिल है मुझे लगता है मैं कर रहा हूँ कुछ है एक प्रोटोटाइप बुला. अब जब कि भय समान दिखता है क्या हम बस लाइन 27 पर एक पल पहले देखा था. तो चलो एक अलग से अनुमान जाने मैं इस किया है क्यों त्रुटि संदेश. मुझे आगे चलते हैं और वहाँ इन पंक्तियों को हटा दें. और इसलिए हम प्रोटोटाइप के बारे में कुछ नहीं पता है. इस फ़ाइल रीमेक. समारोह एक बनाओ. और अब, लानत, चार त्रुटियों. के पहले एक अप करने के लिए स्क्रॉल करने दें. समारोह के निहित घोषणा सकारात्मक पूर्णांक प्राप्त C99 में अवैध है. C99 सिर्फ 1999 का मतलब भाषा के संस्करण हम वास्तव में क्या प्रयोग कर रहे है जो सी,. तो इसका मतलब क्या है? खैर C-- और अधिक विशेष रूप से सी सुंदर गूंगा कार्यक्रमों compilers-- हैं. वे केवल आप क्या किया है पता उन्हें बताया, और कहा कि पिछले सप्ताह से वास्तव में विषयगत. समस्या मैं जाना है यहां नाम को लागू करने के बारे में, और मैं एक समारोह कॉल लाइन 20 पर यहां GetPositiveInt, उस समारोह तकनीकी रूप से नहीं करता है संकलक लाइन 27 देखता है जब तक मौजूद हैं. दुर्भाग्य से, संकलक है शीर्ष, नीचे, ठीक है, छोड़ दिया बातें कर रही है, यह नहीं देखा है क्योंकि इतना GetPositiveInt के कार्यान्वयन, लेकिन यह आप की कोशिश कर देखता है यहाँ इसे उपयोग करने के लिए, यह बस पर चिल्लाना bail-- जा रहा है एक त्रुटि के साथ आप शायद message-- गुप्त, और वास्तव में नहीं फ़ाइल संकलन. तो एक तथाकथित प्रोटोटाइप अप यहां वैसे बेमानी है. सचमुच, मैं यहाँ नीचे चला गया और मैं नकल और इस चिपकाया, और मैं इसे यहाँ डाल दिया. शून्य अधिक उचित होगा, तो हम करेंगे सचमुच कॉपी और यह इस समय चिपकाएं. मैं सचमुच की नकल की और इसे चिपकाया. वास्तव में सिर्फ एक रोटी टुकड़ा तरह के रूप में. संकलक के लिए एक छोटी सी सुराग. मैं यह क्या है पता नहीं है अभी तक, लेकिन मैं तुमसे वादा रहा हूँ यह अंततः मौजूद होगा. इस में line-- यही कारण है कि लाइन 16-- अर्धविराम के साथ समाप्त होता है. यह डिजाइन से बेमानी है. हाँ? आप अपने पुस्तकालय लिंक नहीं किया है ओह, अच्छा सवाल the-- लिए. तीव्र हेडर फाइल समावेशन भी शामिल है. चाहिए लगभग be-- करने की आवश्यकता हमेशा ऊपर से ही हो के लिए एक similar-- के लिए फ़ाइल की वास्तव में एक ही कारण है, हाँ. मानक में क्योंकि io.h सचमुच एक रेखा है इस तरह, लेकिन शब्द printf साथ, और अपने तर्क और अपनी वापसी प्रकार के साथ. और तो तेज कर रही द्वारा शामिल यहाँ, तुम सचमुच क्या कर रहे हैं सामग्री कॉपी करने और चिपकाने है किसी का किसी और ऊपर लिखा था. इस प्रकार करने में अपने कोड cluing उन कार्यों मौजूद तथ्य यह है कि. हाँ? बिल्कुल. तो एक बहुत चालाक और सही समाधान होगा, आप क्या जानते हैं? मैं नहीं जानता कि क्या एक प्रोटोटाइप है, लेकिन मुझे पता है मैं सी बस समझते हैं कि अगर गूंगा और नीचे से ऊपर rethinks. खैर चलो यह क्या चाहता है यह दे. इसे पेस्ट, चलो उस कोड कटौती शीर्ष, और अब नीचे नीचे मुख्य धक्का. यह भी समस्या का समाधान होगा. लेकिन आप बहुत आसानी के साथ आ सकता ए बी फोन करने की जरूरत है जो एक परिदृश्य में, और शायद बी ए यह वापस करने के लिए कॉल प्रत्यावर्तन कुछ कहा है, और हम वापस कि करने के लिए आया हूँ. और यह या एक अच्छा नहीं हो सकता है बात है, लेकिन आप निश्चित रूप से कर सकते हैं इस समाधान को तोड़ने. और इसके अलावा, मैं करूंगा stylistically दावा, विशेष रूप से जब अपने कार्यक्रमों इस लंबी और इस लंबे हो जाते हैं, यह सिर्फ सुपर सुविधाजनक है शीर्ष पर मुख्य डाल करने के लिए यह बात है क्योंकि सबसे प्रोग्रामर के बारे में देखभाल करने के लिए जा रहे हैं. और तो यह एक छोटे से क्लीनर है, यकीनन, यह तरीके से करना मैं मूल रूप से यह किया एक प्रोटोटाइप के साथ भी यह एक छोटे से लग रहा है, हालांकि पहली नज़र में अनावश्यक. हाँ? क्षमा करें, आप जोर से यह कह सकते हैं? आप के स्थानों स्विच कार्यान्वयन और प्रोटोटाइप? तो यह एक अच्छा सवाल है. यदि आप इस नीचे फिर से घोषित यहाँ, चलो देखते हैं क्या होता. मैं यह नीचे डाल तो अगर यहाँ, आप कह रहे हैं. ओह, माफ करना. जोर से? यहां तक ​​कि जोर से. ओह, अच्छा सवाल है. यह समारोह रद्द होगा? तुम्हें पता है, इन सभी वर्षों के बाद, मैं बाद में एक प्रोटोटाइप कभी नहीं रखा है. तो चलो समारोह -1 बना करते हैं उस करने के बाद. [गुनगुन] डेविड जे Malan: ओह, रुको. हम अभी भी शीर्ष सब कुछ डाल दिया है. इसलिए मैं कर रहा हूँ, अगर यहाँ इस अप करते हैं सही ढंग से अपने प्रश्न को समझने. मैं सहित सब कुछ डाल रहा हूँ मुख्य ऊपर प्रोटोटाइप, लेकिन मैं प्रोटोटाइप डाल रहा हूँ कार्यान्वयन नीचे. मैं बना, तो मैं जा रहा हूँ तो वापस एक error-- अप्रयुक्त चर एन. ओह, वहाँ. धन्यवाद. चलो देखते हैं, हम इससे छुटकारा पाना. यह एक अलग बग तो चलो कि उपेक्षा करते हैं. वास्तव में जल्दी से इस रीमेक करते हैं. ठीक है, तो डेटा तर्क नहीं प्रारूप स्ट्रिंग द्वारा इस्तेमाल किया ओह n--, कि क्योंकि है मैं यहाँ इन करने के लिए बदल दिया है. ठीक है, हम जानते हैं क्या जवाब to-- सब ठीक चल रहा है, यहाँ हम चले. आह, सकारात्मक के लिए धन्यवाद. सब ठीक है, मैं इस कोड को ठीक कर देंगे after-- इस विशेष बग की अनदेखी इस से यह काम करता was-- के बाद से जवाब है. इसलिए यह लिख नहीं करता क्या आप अभी किया है. मैं संकलक संदेह इस तरह से लिखा है यह अपने प्रोटोटाइप अनदेखी कर रही है कि शरीर क्योंकि, तो बात है, समारोह में पहले से ही है की उच्च ऊपर लागू कर दिया गया. मैं वास्तव में परामर्श करना होगा संकलक का मार्गदर्शन किसी भी अन्य अगर वहाँ समझने के लिए निहितार्थ, लेकिन पहली नज़र में बस की कोशिश कर रहा है और प्रयोग के द्वारा, कोई असर नहीं हो रहा है. अच्छा सवाल है. तो चलो, अब आगे बना घूम रहा अवगत दूर दुष्प्रभाव से जो ऐसा कुछ कर उस कार्य कर रहे हैं नेत्रहीन printf के साथ स्क्रीन पर, लेकिन एक मूल्य वापस नहीं करते. और कहा कि कार्यों की वापसी है हम जैसे मूल्यों बस की कुछ देखा. हम पहले से ही गुंजाइश की इस धारणा को देखा और हम फिर से और फिर से इस देखेंगे. लेकिन अब के लिए, फिर से, अंगूठे का नियम उपयोग एक चर ही इस्तेमाल किया जा सकता है सबसे हाल ही में खोला के अंदर और हम के रूप में बंद घुंघराले ब्रेसिज़ उस विशेष उदाहरण में देखा था. और तुम, के रूप में बताया एक ability-- है आप इनमें से कुछ समस्याओं को हल कर सकता विश्व स्तर पर एक चर डाल द्वारा एक फ़ाइल के ऊपर से ही. लेकिन लगभग सभी मामलों में हम उस पर भ्रूभंग होगा, और वास्तव में भी नहीं जाना अब के लिए कि समाधान में. तो अब, takeaway है चर गुंजाइश की इस धारणा है. लेकिन अब एक और को देखो वास्तव में देखने का सूखा रास्ता कुछ बहुत ही रोचक पर कार्यान्वयन विवरण. हम कैसे जानकारी का प्रतिनिधित्व हो सकता है. और हम पहले से ही इस पर ध्यान दिया वर्ग के पहले हफ्ते में. बायनेरिज़ को देखते हुए, और दशमलव के लिए खुद को याद दिलाता है. लेकिन सी है कि पिछले सप्ताह से याद विभिन्न प्रकार के डेटा और गुच्छों अधिक, लेकिन सबसे उपयोगी वाले अब के लिए इन हो सकता है. होता है जो एक चार, या चरित्र, एक बाइट, या आठ बिट्स कुल किया जाना है. और वह आकार कहना है कि एक चार में से केवल एक बाइट है. एक बाइट आठ बिट है, तो इस का मतलब है कि हम कितने वर्ण का प्रतिनिधित्व कर सकते हैं. कितने पत्र या कीबोर्ड पर प्रतीकों हम एक बाइट या आठ बिट है. वापस सप्ताह शून्य करने के बारे में सोचो. आप आठ बिट है, कितने कुल मूल्यों आप के साथ प्रतिनिधित्व कर सकते हैं शून्य और लोगों के पैटर्न? उस से भी अधिक One--. तो 256 कुल आप अगर शून्य से गिनती शुरू करते हैं. तो आप आठ bits-- तो हम अगर है तो , फिर हमारे यहाँ द्विआधारी बल्ब था हम पर उन प्रकाश बल्ब बदल सकती है और 256 अद्वितीय पैटर्न में से किसी में बंद. अब यह थोड़ा समस्याग्रस्त है. अंग्रेजी और के लिए इतना नहीं रोमांस भाषाओं, लेकिन निश्चित रूप से आप को पेश करते हैं, के लिए उदाहरण, एशियाई भाषाओं, जो जैसे की तुलना में कहीं अधिक चिह्न है वर्णमाला के 26 अक्षर. हम वास्तव में जरूरत हो सकती है एक बाइट से अधिक है. और शुक्र में हाल के वर्षों समाज है उपयोग करने वाले अपनाया अन्य मानकों आरोप के अनुसार एक से अधिक बाइट. लेकिन अब सी में, दोष के लिए सिर्फ एक बाइट या आठ बिट है. एक पूर्णांक है, इस बीच, चार है बाइट्स, अन्यथा 32 बिट के रूप में जाना जाता है. कौन सी सबसे बड़ी संभव है क्या मतलब है संख्या हम एक पूर्णांक के साथ प्रतिनिधित्व कर सकते हैं जाहिरा तौर पर? एक अरब डॉलर के साथ. तो यह चार अरब दे या ले रहा है. 2 32th बिजली, हम अगर कोई नकारात्मक संख्या मान और सिर्फ सभी सकारात्मक उपयोग संख्या, यह चार अरब है दे या संभावित जगह ले. एक नाव, इस बीच, एक अलग प्रकार है यह अभी भी एक नंबर सी में डेटा प्रकार की, लेकिन यह एक वास्तविक संख्या है. एक दशमलव बिंदु के साथ कुछ. और यह पता चला है कि सी भी चार बाइट्स का उपयोग करता है चल बिन्दु मूल्यों का प्रतिनिधित्व करने के लिए. दुर्भाग्य से कितने चल बात मान दुनिया में कर रहे हैं? कितने वास्तविक संख्या कर रहे हैं? एक अनंत नहीं है संख्या, और के लिए कि मामला पूर्णांकों की एक अनंत संख्या है. तो हम एक तरह से पहले से ही कर रहे हैं यहाँ अपने आप को एक छेद खुदाई. जिससे जाहिरा तौर computers-- में them-- पर सी में लिखा कम से कम कार्यक्रमों केवल उच्च के रूप में गिनती कर सकते हैं चार अरब, दे या ले और बिंदु मूल्यों चल केवल जाहिरा तौर पर परिशुद्धता के कुछ सीमित मात्रा में है. केवल इतने सारे अंक के बाद उनकी दशमलव बिंदु. क्योंकि, जाहिर है, अगर आप केवल 32 बिट्स है, मुझे लगता है हम के बारे में जाने के लिए जा रहे हैं पता नहीं कैसे शायद असली numbers-- का प्रतिनिधित्व पैटर्न के विभिन्न प्रकार के साथ. लेकिन निश्चित रूप से एक सीमित नहीं है इस तरह के पैटर्न की संख्या, तो यहां भी इस समस्याग्रस्त है. अब हम थोड़ा समस्या से बच सकते हैं. आप एक नाव का उपयोग नहीं करते हैं, आप एक डबल इस्तेमाल कर सकते हैं सी में, जो आप आठ बाइट्स, जो देता है शून्य का रास्ता अधिक संभव पैटर्न है और लोगों को. लेकिन यह जो हो रहा है, अभी भी सीमित है आप सॉफ्टवेयर लिखने अगर समस्याग्रस्त होने का ग्राफिक्स के लिए या कल्पना के लिए गणितीय सूत्र. तो क्या आप वास्तव में चाहते हो सकता है उस से भी बड़ा तक गिनती करने के लिए. एक लंबे long-- मूर्खता named-- भी आठ बाइट्स, या 64 बिट्स है, और यह एक पूर्णांक के रूप में दो बार के रूप में लंबे समय है और यह एक लंबी पूर्णांक मान के लिए है. मज़ा fact-- एक int, चार बाइट्स है अगर आम तौर पर सी में एक लंबे समय से कितनी देर है? इसके अलावा चार बाइट्स, लेकिन एक लंबे आठ बाइट्स है, और इस ऐतिहासिक कारणों के लिए है. लेकिन अब takeaway सिर्फ इतना है कि डेटा है है है कि एक computer-- में प्रतिनिधित्व किया बिजली के साथ एक भौतिक डिवाइस, यह आम तौर पर गाड़ी चला रहा है उन शून्य और ones-- परिशुद्धता के सीमित मात्रा के साथ. तो समस्या तो क्या है? वैसे वहाँ एक समस्या है पूर्णांक अतिप्रवाह की. इतना ही नहीं सी में, लेकिन में सामान्य रूप में कंप्यूटर. उदाहरण के लिए, यह अगर एक बाइट लायक एक bit-- है इसलिए यह सभी आठ bit-- है जो की नंबर एक हैं. क्या संख्या है यह हम मान लें यदि का प्रतिनिधित्व यह बाइनरी में सभी सकारात्मक मूल्यों है? 255, और यह 256 है, क्योंकि नहीं है शून्य सबसे कम संख्या है. तो 255 सबसे ज्यादा है एक, लेकिन समस्या मैं चाहता था कि लगता है इस चर वेतन वृद्धि कि आठ बिट्स कुल उपयोग कर रहा है मैं यह वेतन वृद्धि करना चाहते हैं. वैसे मैं जोड़ने के रूप में जल्द ही के रूप में एक इन लोगों में से सभी के लिए एक, आप शायद अभी visually-- कल्पना कर सकते हैं decimals-- का उपयोग कर एक ले जाने की तरह कुछ बाईं ओर प्रवाह करने के लिए जा रहा है. और वास्तव में, मैं नंबर जोड़ने अगर इस के लिए एक, क्या बाइनरी में होता है इसे वापस करने के लिए शून्य overflows है. तो आप केवल एक पूर्णांक नहीं use-- हैं, लेकिन एक बाइट पूर्णांकों गिनती करने के लिए एक कार्यक्रम में, जैसे ही default-- द्वारा आप 250 के लिए प्राप्त 251, 252, 253, 254, 255-- 0, 255 के बाद आता है जो शायद नहीं क्या है एक उपयोगकर्ता की उम्मीद करने जा रहा है. अब इस बीच बिंदु दुनिया चल में, आप भी एक ऐसी ही समस्या है. सबसे बड़ा number-- साथ इतना नहीं हालांकि वह अभी भी एक मुद्दा है. लेकिन परिशुद्धता की राशि के साथ आप का प्रतिनिधित्व कर सकते हैं. तो चलो इस उदाहरण पर एक नज़र रखना यहाँ भी आज के स्रोत code-- से नाव 0.c. और यह एक सुपर नोटिस साधारण प्रोग्राम है कि जाहिरा तौर पर क्या मूल्य बाहर प्रिंट करना चाहिए? आप इस मुद्रित करने के लिए जा रहा है दांव लगाना है क्या नई वाक्य रचना का एक सा है, भले ही यहाँ? इसलिए उम्मीद है कि 0.1. तो एक दसवें के बराबर मैं 10 से विभाजित 1 कर रहा हूँ क्योंकि. मैं जवाब भंडारण कर रहा हूँ एक चर में च बुलाया. कि चर प्रकार नाव की है जो मैं सिर्फ प्रस्तावित एक कीवर्ड अस्तित्व में है. हम पहले यह देखा है, लेकिन नहीं किया है इस printf में एक साफ रास्ता की तरह है कितने अंक निर्दिष्ट करने के लिए आप एक दशमलव बिंदु के बाद देखना चाहते हैं. तो इस अंकन सिर्फ मतलब कि यहां एक प्लेसहोल्डर है. यह एक चल बिन्दु के लिए है मूल्य, और ओह, वैसे, दशमलव बिंदु के साथ साथ यह दिखाने दशमलव बिंदु के बाद एक नंबर. इसलिए कि नंबर महत्वपूर्ण अंक की, तो तुम चाहते हो सकता है कि बात करने के लिए. तो मुझे आगे जाना है और करते हैं ./float -0, नाव -0 बनाने, और जाहिरा तौर पर 1 10 से विभाजित 0.0 है. अब ऐसा क्यों है? खैर फिर, कंप्यूटर ले जा रहा है मुझे सचमुच, और मैं 1 लिखा है और मैं 10 लिखा है, और एक अनुमान ले क्या उन दोनों के लिए ग्रहण डेटा प्रकार है मूल्यों? एक पूर्णांक, यह तकनीकी रूप से है एक छोटे से कुछ अलग. यह आम तौर पर एक लंबे समय से है, लेकिन यह बात है अंततः एक अभिन्न मूल्य. नहीं एक चल बिन्दु मूल्य. कौन सा है कि अगर यह कहने के लिए है , एक पूर्णांक है और यह एक पूर्णांक है समस्या कंप्यूटर है क्षमता नहीं है यहां तक ​​कि दशमलव बिंदु स्टोर करने के लिए. आप 1 ऐसा इसलिए जब विभाजित 10 का उपयोग पूर्णांकों से अंश और दोनों के लिए विभाजक, जवाब 0.1 होना चाहिए. लेकिन computer-- क्योंकि उन integers-- हैं 0.1 के साथ क्या करना है पता नहीं है. तो क्या यह स्पष्ट रूप से कर रही है? यह बस, इसे दूर फेंक रहे है और मैं अंत में क्या देख रहा हूँ मैं जोर देकर कहा कि केवल इसलिए कि 0.0 है printf मुझे एक दशमलव बिंदु दिखा. लेकिन समस्या यह है कि आप अगर एक पूर्णांक से एक पूर्णांक विभाजित, आप परिभाषा द्वारा get-- जाएगा की एक पूर्णांक C--. और ऐसा करने नहीं जा रहा है अच्छा है और आसानी से कुछ अप करने के लिए यह दौर की तरह एक ऊपर या नीचे निकटतम. इसे छोटा करने के लिए जा रहा है दशमलव के बाद सब कुछ. तो बस intuitively, शायद एक तय क्या है? यहाँ सबसे सरल तय क्या है? हाँ? बिल्कुल सही. क्यों हम बस के रूप में इन का इलाज नहीं है प्रभावी ढंग से बात मान चल तैरता या युगल में बदल. और अब मैं कर सकता हूँ अगर मंगाई -0, या मैं मंगाई -1 संकलन हैं, जो के समान है क्या सिर्फ प्रस्तावित किया गया था. और अब मैं मंगाई -0, अब मैं अपने 0.1 मिलता है. अब यह अद्भुत है. लेकिन अब मैं क्या करने जा रहा हूँ एक छोटे से कुछ अलग. मैं वास्तव में क्या देखने के लिए उत्सुक हूँ हुड के नीचे चल रहा है, और मैं यह मुद्रित करने के लिए जा रहा हूँ बाहर करने के लिए 28 दशमलव स्थानों. मैं वास्तव में देखना चाहते हैं 0.1000-- एक infinite-- कि 0.1 के बाद [अश्राव्य] 27 शून्य. अच्छा है कि अगर चलो देखते हैं मैं वास्तव में क्या हो. तैरता -0 ही फाइल करें. ./floats -0. नाटकीय जवाब पर ज़ूम करते हैं. यह सब समय, आप सोच रहा था 10 से विभाजित 1 10%, या 0.1 है. यह. कम से कम अब तक के रूप में कंप्यूटर का चिंतित. ठीक है why-- अब, कि पूरा है 10 से विभाजित झूठ 1 0.1 है. लेकिन वह नहीं है why-- takeaway आज. तो क्यों कंप्यूटर, लगता है कमरे में हम सब के विपरीत, 10 से विभाजित 1 है कि वास्तव में उस पागल मूल्य है? जाहिरा तौर पर कर कंप्यूटर क्या है? वह क्या है? यह असल में, अतिप्रवाह नहीं है. अतिप्रवाह आमतौर पर तब होता है जब आप एक मूल्य के आसपास लपेटो. यह अस्पष्टता के इस अंक है एक चल बिन्दु मूल्य में आप केवल 32 है, जहां या शायद यह भी 64 बिट. लेकिन एक अनंत अगर वहाँ असली numbers-- की संख्या दशमलव अंक के साथ नंबर और संख्या निश्चित रूप से thereafter-- आप उन सभी का प्रतिनिधित्व नहीं कर सकते हैं. तो कंप्यूटर दिया गया है हमें करीबी मैच मूल्य के लिए यह प्रयोग है कि प्रतिनिधित्व कर सकते हैं मैं वास्तव में चाहते हैं मूल्य के लिए कई टुकड़े, जो 0.1 है. दुर्भाग्य से, आप अगर गणित शुरू कर रही है, या आप चल के इन प्रकार को शामिल शुरू महत्वपूर्ण programs-- में बात मान वित्तीय सॉफ्टवेयर, सैन्य software-- कुछ भी जहां धारणा है शायद बहुत महत्वपूर्ण है. और आप जोड़ना शुरू इस तरह की संख्या, और शुरू कि सॉफ्टवेयर चल वास्तव में बड़े आदानों के साथ या घंटे या बहुत से बहुत सारे के लिए साल के दिन या लॉट के लिए, इन छोटे छोटे गलतियों निश्चित रूप से समय के साथ जोड़ सकते हैं. अब एक अलग रूप में, आप है, तो कभी सुपरमैन 3 या कार्यालय अंतरिक्ष देखा और यदि आपको याद हो सकता है कैसे उन लोगों को चुरा लिया अपने कंप्यूटर से बहुत सारा पैसा चल बिन्दु मूल्यों का उपयोग करके और छोटे से जोड़ने शेष, उम्मीद है कि फिल्म अब समझ में आता है. यह वे क्या थे है उस फिल्म में की ओर इशारा करते. तथ्य यह है कि सबसे अधिक कंपनियां नहीं लगेगा एक निश्चित संख्या के बाद दशमलव स्थानों की, लेकिन उन सेंट की भिन्न हैं. तो तुम उन्हें जोड़ने शुरू आप बहुत सारा पैसा बनाने के लिए शुरू अपने बैंक खाते में. इसलिए कि कार्यालय अंतरिक्ष समझाया है. अब दुर्भाग्य से परे ऑफिस स्पेस, वहाँ कुछ वैध तरीके से परेशान कर रहे हैं और महत्वपूर्ण प्रभाव के इन प्रकार के अंतर्निहित डिजाइन निर्णय, कारणों में से है और वास्तव में एक हम पाठ्यक्रम में सी का उपयोग आप वास्तव में यह जमीन है इतना है कि कंप्यूटर कैसे काम की समझ, कैसे सॉफ्टवेयर काम करता है, और क्या नहीं प्रदान के लिए कुछ भी ले. और वास्तव में दुर्भाग्य से, यहां तक ​​कि साथ कि बुनियादी समझ, हम मनुष्य गलतियाँ करते हैं. और क्या मैं मैं हिस्सा लगा है इस आठ मिनट के वीडियो यहाँ लिया जो एक आधुनिक चमत्कार प्रकरण से कैसे चीजें काम पर एक शैक्षिक शो कि दो चित्र पेंट की जब एक अनुचित प्रयोग और की समझ बिंदु मूल्यों चल कुछ महत्वपूर्ण करने के लिए नेतृत्व दुर्भाग्यपूर्ण परिणाम है. चलो एक नज़र रखना. [वीडियो प्लेबैक] , हम अब इंजीनियरिंग "के लिए वापसी आधुनिक चमत्कार पर आपदाओं ". कंप्यूटर. हम सभी को स्वीकार करने के लिए आया हूँ अक्सर निराशा समस्याओं कि them-- कीड़े, वायरस के साथ मिल गया है, और छोटे कीमतों के लिए सॉफ्टवेयर glitches-- सुविधा के लिए भुगतान करने के लिए. लेकिन उच्च तकनीक और उच्च गति में सैन्य और अंतरिक्ष कार्यक्रम अनुप्रयोगों, छोटी से छोटी समस्या सकते हैं आपदा में बढ़ाया जा सकता है. 4 जून, 1996 पर, वैज्ञानिकों तैयार एक मानव रहित एरियन 5 रॉकेट लॉन्च करने के लिए. यह वैज्ञानिक ले जा रहा था उपग्रहों बनाया गया ठीक कैसे स्थापित करने के लिए पृथ्वी के चुंबकीय क्षेत्र आदान सौर हवाओं के साथ. रॉकेट के लिए बनाया गया था यूरोपीय अंतरिक्ष एजेंसी, और अपनी सुविधा से बंद उठाया फ्रेंच गुयाना के तट पर. में के बारे में 37 सेकंड -At उड़ान, वे पहले गौर कुछ गलत हो रहा था. नलिका swiveling गया कि एक तरह से वे वास्तव में नहीं होना चाहिए. उड़ान में 40 सेकंड के आसपास, स्पष्ट रूप से वाहन, मुसीबत में था वे बनाया और कहा कि जब निर्णय इसे नष्ट करने के लिए. सीमा सुरक्षा अधिकारी के साथ जबरदस्त हिम्मत, बटन दबाया यह सकता है और इससे पहले कि रॉकेट विस्फोट से उड़ा दिया सार्वजनिक सुरक्षा के लिए एक खतरा बन जाते हैं. -यह युवती थी एरियन -5 की यात्रा, और इसके विनाश के लिए ले लिया क्योंकि दोष के स्थान रॉकेट के सॉफ्टवेयर में एम्बेडेड. पर -इस समस्या एरियन था कि वहां आवश्यक है कि एक नंबर था 64 बिट, व्यक्त करने के लिए और वे परिवर्तित करना चाहता था एक 16 बिट संख्या के लिए यह. वे संख्या ग्रहण बहुत बड़ा होने जा रहा कभी नहीं किया गया था. उस में उन अंकों के सबसे 64 बिट संख्या शून्य थे. वे गलत थे. एक के -इस असमर्थता सॉफ्टवेयर प्रोग्राम को स्वीकार करने के लिए द्वारा उत्पन्न संख्या की तरह एक और विफलता की जड़ में था. सॉफ्टवेयर विकास बन गया था एक नई तकनीक की बहुत महंगा हिस्सा. एरियन 4 रॉकेट था बहुत सफल रहा. के लिए बनाए गए सॉफ्टवेयर की तो ज्यादा यह भी एरियन -5 में इस्तेमाल किया गया था. -इस बुनियादी समस्या था कि एरियन -5. Faster--, तेजी से त्वरित किया गया था और सॉफ्टवेयर है कि के लिए जिम्मेदार नहीं था. रॉकेट की -इस विनाश भारी वित्तीय आपदा था. पूरे एक मिनट सॉफ्टवेयर त्रुटि के लिए. लेकिन यह पहली बार नहीं था समय डेटा रूपांतरण समस्याओं आधुनिक रॉकेट प्रौद्योगिकी त्रस्त था. शुरू के साथ 1991 अलावे पहले खाड़ी युद्ध के, पैट्रियट मिसाइल एक ऐसी ही तरह का अनुभव एक नंबर रूपांतरण समस्या की. और एक परिणाम के रूप में 28 people-- 28 अमेरिकी soldiers-- मारे गए थे, और के बारे में एक सौ अन्य घायल हो गए. जब चाहिए था जो देशभक्त, आने वाली Scuds के खिलाफ की रक्षा के लिए, एक मिसाइल आग में विफल रही है. -जब इराक कुवैत और अमेरिका पर हमला जल्दी 1991 में डेजर्ट स्टॉर्म शुरू की, पैट्रियट मिसाइल बैटरी तैनात किया गया था सऊदी अरब और इसराइल की रक्षा के लिए इराकी स्कड मिसाइल हमलों से. पैट्रियट एक अमेरिकी मध्यम दूरी है सतह से हवा प्रणाली रेथियॉन कंपनी द्वारा निर्मित. पैट्रियट के -इस आकार इंटरसेप्टर itself-- यह, के बारे में मोटे तौर पर 20 फुट लंबा है और यह लगभग 2,000 पाउंड वजन. और यह के बारे में एक बम वहन करती है मैं यह लगभग 150 पाउंड है लगता है. और वारहेड ही है एक उच्च विस्फोटक, जो उसे आसपास के टुकड़े है. तो बम का आवरण है एक buckshot तरह कार्य करने के लिए डिज़ाइन किया गया. -इस मिसाइलों किया जाता है कंटेनर प्रति चार, और एक अर्द्ध ट्रेलर से ले जाया जाता है. -इस पैट्रियट मिसाइल रोधी प्रणाली अब कम से कम 20 साल पीछे चला जाता. यह मूल रूप से डिजाइन किया गया था एक वायु रक्षा मिसाइल के रूप में दुश्मन के हवाई जहाज नीचे गोली मार करने के लिए. पहले खाड़ी युद्ध में उस युद्ध पर आया था, सेना के लिए इसका इस्तेमाल करना चाहता था Scuds, नहीं हवाई जहाज को गोली मार. इराकी वायु सेना था एक समस्या का इतना नहीं, लेकिन सेना Scuds बारे में चिंतित था. और इसलिए वे करने की कोशिश की पैट्रियट उन्नयन. एक दुश्मन -Intercepting मच 5 पर यात्रा मिसाइल काफी चुनौतीपूर्ण होने जा रहा था. लेकिन जब देशभक्त सेवा में ले जाया गया था, सेना के बारे में पता नहीं था एक इराकी संशोधन कि उनके scuds बनाया लगभग यह असंभव. क्या हुआ Scuds है कि में आ रहे थे अस्थिर थे. वे wobbly थे. इस के लिए कारण Iraqis-- था 600 किलोमीटर की दूरी पर बाहर निकलने के क्रम में एक 300 किलोमीटर रेंज missile-- की , सामने बम से बाहर वजन ले लिया और बम हल्का कर दिया. तो अब पैट्रियट के आने की कोशिश स्कड पर, time-- की और सबसे की भारी बहुमत time-- यह सिर्फ स्कड से उड़ जाएगा. पैट्रियट सिस्टम ऑपरेटरों एक बार , पैट्रियट अपने लक्ष्य चूक का एहसास वे देशभक्त के बम विस्फोट अगर यह संभव हताहत से बचने के लिए भूमि पर गिर करने के लिए अनुमति दी गई थी. -वह ज्यादातर लोगों को क्या देखा था के रूप में आकाश में बड़ा fireballs, और के रूप में गलत समझा स्कड हथियार का अवरोध. रात आसमान, देशभक्त में -Although सफलतापूर्वक नष्ट होने का दर्शन Scuds, दहरान में हो सकता है अपने प्रदर्शन के बारे में कोई गलती नहीं. वहाँ पैट्रियट के रडार प्रणाली एक आने वाली स्कड के खो ट्रैक और कारण का शुभारंभ कभी नहीं एक सॉफ्टवेयर दोष को. यह पहले की खोज की है जो इजरायल था अब सिस्टम पर था कि, अधिक से अधिक समय विसंगति बन गया. कारण एम्बेडेड एक घड़ी के लिए सिस्टम के कंप्यूटर में. -About दो सप्ताह पहले दहरान में त्रासदी, इजरायल की सूचना दी रक्षा विभाग प्रणाली है कि समय खो गया था. करीब आठ घंटे के बाद चल रहा है, वे देखा सिस्टम के बनने कि काफ़ी कम सटीक. रक्षा विभाग द्वारा प्रतिक्रिया पैट्रियट बैटरी के सभी कह रही सिस्टम नहीं छोड़ करने के लिए एक लंबे समय के लिए. वे एक लंबे समय क्या था कभी नहीं कहा. 8 घंटे, 10 घंटे, एक हजार घंटे. कोई नहीं जानता था. -इस पैट्रियट बैटरी बैरकों में तैनात दहरान और अपने त्रुटिपूर्ण आंतरिक पर घड़ी 100 से अधिक घंटे के लिए किया गया था 25 फ़रवरी की रात को. यह तो एक सटीकता के लिए समय पर नज़र रखी की एक दूसरे के एक दसवें के बारे में. एक दूसरे की अब एक दसवें एक दिलचस्प संख्या है यह व्यक्त नहीं किया जा सकता क्योंकि , वास्तव में द्विआधारी में जो यह वास्तव में व्यक्त नहीं किया जा सकता है इसका मतलब किसी भी आधुनिक डिजिटल कंप्यूटर में. यह विश्वास करना मुश्किल है लेकिन एक उदाहरण के रूप में इस का उपयोग करें. की संख्या एक तिहाई से लेते हैं. एक तिहाई नहीं किया जा सकता बिल्कुल दशमलव में व्यक्त किया. एक तिहाई 0.333 है अनंत के लिए चल रहा है. साथ ऐसा करने के लिए कोई रास्ता नहीं है एक दशमलव में पूर्ण शुद्धता. उस समस्या का ठीक तरह है कि पैट्रियट में हुआ. अब सिस्टम भागा, बुरा समय त्रुटि हो गया. आपरेशन के 100 घंटे -After, समय में त्रुटि के बारे में केवल एक तिहाई था एक दूसरे की. लेकिन एक को लक्षित करने के मामले में मच 5 पर यात्रा मिसाइल, यह एक ट्रैकिंग में हुई 600 मीटर से अधिक की त्रुटि. यह एक गंभीर त्रुटि होगी दहरान में सैनिकों के लिए. एक स्कड लांच किया गया है क्या हुआ पूर्व चेतावनी उपग्रहों ने पता लगाया, और वे एक स्कड आ रहा था पता था उनके सामान्य दिशा में. यह आ रहा था, जहां उन्हें पता नहीं था. यह रडार अप करने के लिए अब था पैट्रियट प्रणाली के घटक दहरान बचाव लगाने और रखने के लिए आने वाली दुश्मन मिसाइल का ट्रैक. -इस रडार बहुत होशियार था. यह वास्तव में ट्रैक होगा स्कड की स्थिति और फिर जहां भविष्यवाणी यह शायद होगा अगली बार रडार बाहर एक पल्स भेजा. उस श्रृंखला गेट बुलाया गया था. पैट्रियट एक बार -फिर पर्याप्त समय है फैसला करता है वापस जाने के लिए और अगले जाँच करने के लिए पारित इस का पता चला वस्तु के लिए स्थान यह वापस चला जाता है. तो यह गलत करने के लिए वापस चला गया जब जगह है, यह तो कोई वस्तु को देखता है. और यह कोई वस्तु नहीं थी कि फैसला किया. एक गलत पहचान था कि वहाँ और यह ट्रैक चला जाता है. -इस आने वाली स्कड गायब राडार स्क्रीन से, और सेकंड बाद में, यह बैरकों में पटक दिया. स्कड 28 मारे गए. यह आखरी निकाल दिया गया था पहले खाड़ी युद्ध के दौरान. दुर्भाग्य से, अद्यतन सॉफ्टवेयर अगले दिन भोर में पहुंचे. सॉफ्टवेयर दोष था गया तय, समापन संकटग्रस्त में एक अध्याय पैट्रियट मिसाइल का इतिहास. [अंत वीडियो प्लेबैक] डेविड जे Malan: यह CS50 के लिए है. हम बुधवार को देखेंगे. [संगीत खेल]