1 00:00:00,000 --> 00:00:10,920 >> [संगीत खेल] 2 00:00:10,920 --> 00:00:14,680 >> डेविड जे मालन: सब ठीक है, CS50 के लिए वापस स्वागत करते हैं. 3 00:00:14,680 --> 00:00:16,500 इस सप्ताह दो की शुरुआत है. 4 00:00:16,500 --> 00:00:18,940 हमारे में से एक से एक शब्द परिसर में दोस्तों - 5 00:00:18,940 --> 00:00:22,620 आप रुचि रखते हैं, तो संभवतः, या तो अब या भविष्य में कुछ समय में 6 00:00:22,620 --> 00:00:25,670 यहां तक ​​कि, एक बार और अधिक आरामदायक, शिक्षण मध्य विद्यालय के छात्रों के एक छोटे से 7 00:00:25,670 --> 00:00:27,680 कंप्यूटर विज्ञान के बारे में कुछ, कि यूआरएल के लिए सिर करते हैं. 8 00:00:27,680 --> 00:00:32,360 वे अभी की विशेष जरूरत होती है आपके पास विशेष रूप से अगर शिक्षकों, 9 00:00:32,360 --> 00:00:34,700 कंप्यूटर विज्ञान के लिए कुछ जोखिम था. 10 00:00:34,700 --> 00:00:38,060 >> तो हम शुरू की, कि पिछली बार याद कुछ डेटा सी में प्रकार, और 11 00:00:38,060 --> 00:00:40,590 तुम्हें पाने के लिए शुरू हो सकता है आपके इन प्रकार अब तक साथ गंदे हाथ 12 00:00:40,590 --> 00:00:41,940 समस्या में एक सेट. 13 00:00:41,940 --> 00:00:43,230 और हम एक चार थी. 14 00:00:43,230 --> 00:00:49,100 तो कुछ हद तक तकनीकी शब्दों में, क्या आप आज जानते हैं कि यह एक चार है? 15 00:00:49,100 --> 00:00:51,050 >> तो यह एक चरित्र है, लेकिन चलो अब और अधिक सटीक हो. 16 00:00:51,050 --> 00:00:53,735 हम चरित्र से क्या मतलब है या व्यक्तिगत चार? 17 00:00:53,735 --> 00:00:56,700 18 00:00:56,700 --> 00:00:59,500 एक गैर संख्यात्मक चरित्र - 19 00:00:59,500 --> 00:01:00,670 इसलिए जरूरी नहीं. 20 00:01:00,670 --> 00:01:04,580 यह पता चला है कि यहां तक ​​कि संख्या भी विराम चिह्न और पत्र 21 00:01:04,580 --> 00:01:06,980 इस डेटा के साथ प्रतिनिधित्व एक चार के रूप में जाना लिखें. 22 00:01:06,980 --> 00:01:09,440 इसलिए यह जरूरी वर्णमाला नहीं है. 23 00:01:09,440 --> 00:01:11,100 हाँ? 24 00:01:11,100 --> 00:01:12,275 >> तो यह एक ASCII चरित्र है. 25 00:01:12,275 --> 00:01:15,510 तो आप सप्ताह शून्य करने के लिए वापस अगर आपको लगता, जब हम स्वयंसेवकों के हमारे बाइट था 26 00:01:15,510 --> 00:01:19,150 आते हैं और या तो अपने हाथों को पकड़ या नहीं, वे बिट्स का प्रतिनिधित्व किया. 27 00:01:19,150 --> 00:01:22,450 लेकिन सामूहिक रूप से आठ के एक समूह के रूप में, वे एक बाइट का प्रतिनिधित्व किया. 28 00:01:22,450 --> 00:01:26,030 और हम ASCII शुरू की धारणा बस एक है जो कि व्याख्यान, पर 29 00:01:26,030 --> 00:01:28,170 संख्या और अक्षरों के बीच मानचित्रण. 30 00:01:28,170 --> 00:01:32,010 और ASCII उन मनुष्यों के रूप में उपयोग करता है, निहित, आठ बिट्स 31 00:01:32,010 --> 00:01:33,660 एक चरित्र का प्रतिनिधित्व करने के लिए. 32 00:01:33,660 --> 00:01:36,890 >> तो तदनुसार, अगर आठ बिट कर सकते हैं प्रत्येक दो में से एक मान पर ले - 33 00:01:36,890 --> 00:01:38,010 शून्य या एक - 34 00:01:38,010 --> 00:01:40,280 कि वहाँ दो संभावनाएं थे मतलब है इस व्यक्ति के लिए - 35 00:01:40,280 --> 00:01:41,230 शून्य या एक - 36 00:01:41,230 --> 00:01:44,070 इस व्यक्ति के लिए दो, इस के लिए दो व्यक्ति, यह एक के लिए दो. 37 00:01:44,070 --> 00:01:47,450 दो बार की तो एक कुल दो बार दो बार दो बार दो - 38 00:01:47,450 --> 00:01:49,700 इसलिए दो में कुल आठवां. 39 00:01:49,700 --> 00:01:54,320 तो पात्रों की कुल संख्या है 256 संभव आप कर सकते हैं कि 40 00:01:54,320 --> 00:01:55,750 आठ बिट के साथ प्रतिनिधित्व करते हैं. 41 00:01:55,750 --> 00:01:59,210 >> अब, आप में से उन जो एशियाई बात भाषा और भी है कि पता कर सकते हैं 42 00:01:59,210 --> 00:02:02,620 बस से दुनिया में वर्ण और बी एस और सीएस और डी एस के रूप. 43 00:02:02,620 --> 00:02:06,130 और वास्तव में, ASCII के लिए पर्याप्त नहीं है दुनिया की भाषाओं का एक बहुत. 44 00:02:06,130 --> 00:02:07,760 लेकिन एक समय उस पर और अधिक. 45 00:02:07,760 --> 00:02:11,240 अगर आप चाहते हैं अभी के लिए, सी में पता चला है कि एक पत्र का एक टुकड़ा का प्रतिनिधित्व करने के लिए 46 00:02:11,240 --> 00:02:15,780 विराम चिह्न, या बस कुछ चरित्र प्रकृति में, हम एक चार का उपयोग करें. 47 00:02:15,780 --> 00:02:18,240 और यह एक बाइट या आठ बिट है. 48 00:02:18,240 --> 00:02:19,690 >> कैसे एक पूर्णांक के बारे में? 49 00:02:19,690 --> 00:02:20,780 खैर, एक int एक पूर्णांक है. 50 00:02:20,780 --> 00:02:23,175 कितने बिट्स, यदि आपको याद है, आम तौर पर एक पूर्णांक था? 51 00:02:23,175 --> 00:02:25,930 52 00:02:25,930 --> 00:02:27,512 किसी को भी याद करते हैं? 53 00:02:27,512 --> 00:02:29,600 तो यह आम तौर पर 32 है. 54 00:02:29,600 --> 00:02:32,120 यह वास्तव में कंप्यूटर पर निर्भर करता है आप उपयोग कर रहे हैं. 55 00:02:32,120 --> 00:02:35,770 लेकिन उपकरण में, और का एक बहुत में कंप्यूटर, यह 32 बिट या चार है 56 00:02:35,770 --> 00:02:37,140 बैट - आठ बार चार. 57 00:02:37,140 --> 00:02:39,790 और ints बस भंडारण के लिए उपयोग किया जाता है नकारात्मक या तो संख्या,, 58 00:02:39,790 --> 00:02:41,610 सकारात्मक, या शून्य. 59 00:02:41,610 --> 00:02:45,250 >> और आप 32 बिट मिल गया है और आप ही लिया है, तो , सकारात्मक संख्या के बारे में कर सकते हैं परवाह 60 00:02:45,250 --> 00:02:48,960 किसी को भी ballpark कितने संभव पूर्णांकों एक कंप्यूटर से प्रतिनिधित्व कर सकते हैं 61 00:02:48,960 --> 00:02:51,820 ऊपर पर शून्य? 62 00:02:51,820 --> 00:02:56,130 तो यह 32 के लिए दो जो होगा मोटे तौर पर चार अरब डॉलर का है. 63 00:02:56,130 --> 00:02:59,720 इसलिए दो की इन शक्तियों के होने जा रहे हैं कंप्यूटर विज्ञान में आवर्ती विषयों. 64 00:02:59,720 --> 00:03:03,930 हम देखेंगे, वे काफी सुविधाजनक हो ऐसा नहीं है, भले ही काफी के साथ काम करने के लिए 65 00:03:03,930 --> 00:03:05,790 एक के सिर में गणित करने के लिए आसान. 66 00:03:05,790 --> 00:03:07,000 >> तो हम मोटे तौर पर चार अरब कहूँगा. 67 00:03:07,000 --> 00:03:08,620 अब, एक लंबे - 68 00:03:08,620 --> 00:03:09,770 आप किस तरह का अनुमान लगा सकते हैं. 69 00:03:09,770 --> 00:03:10,480 यह एक पूर्णांक से अधिक लंबी है. 70 00:03:10,480 --> 00:03:12,440 कितने बिट्स? 71 00:03:12,440 --> 00:03:14,250 इसलिए 64 बिट्स या आठ बाइट्स. 72 00:03:14,250 --> 00:03:17,480 यह सिर्फ तुम भी प्रतिनिधित्व कर सकते हैं इसका मतलब बड़ी संख्या, बड़ा सकारात्मक या 73 00:03:17,480 --> 00:03:19,160 बड़ा ऋणात्मक संख्याओं. 74 00:03:19,160 --> 00:03:20,060 >> और कैसे नाव के बारे में? 75 00:03:20,060 --> 00:03:22,260 यह एक अस्थायी बात है 32 बिट के लिए मूल्य. 76 00:03:22,260 --> 00:03:25,180 यह सिर्फ एक वास्तविक संख्या, कुछ है एक दशमलव बिंदु के साथ. 77 00:03:25,180 --> 00:03:30,100 लेकिन आप के बजाय और अधिक जगह की जरूरत है अगर दशमलव बिंदु के बाद या आप करना चाहते हैं 78 00:03:30,100 --> 00:03:33,720 कुछ के साथ एक बड़ी संख्या का प्रतिनिधित्व करते हैं अंश यह करने के बाद, आप एक का उपयोग कर सकते हैं 79 00:03:33,720 --> 00:03:36,260 64 बिट्स है जो डबल,. 80 00:03:36,260 --> 00:03:38,240 >> लेकिन एक दिलचस्प नहीं है यहाँ takeaway. 81 00:03:38,240 --> 00:03:42,890 Ints 32 बिट और द्वारा सीमित कर रहे हैं तो अगर यहां तक ​​कि लंबे समय चाहता है 64 से सीमित कर रहे हैं 82 00:03:42,890 --> 00:03:46,180 तरह के सवाल भी जन्म देती है कि बिट्स,, आप वास्तव में गिनती करने के लिए क्या चाहते हैं, तो 83 00:03:46,180 --> 00:03:48,790 एक पूर्णांक के लिए 4 अरब डॉलर से अधिक? 84 00:03:48,790 --> 00:03:50,330 ठीक है, तुम सिर्फ एक लंबे समय से उपयोग. 85 00:03:50,330 --> 00:03:54,200 लेकिन आप उच्च गिनती करने के लिए क्या चाहते हैं दो से 64 वीं करने के लिए, दे या ले? 86 00:03:54,200 --> 00:03:55,810 >> अब, कि एक बड़ी संख्या है. 87 00:03:55,810 --> 00:03:59,250 लेकिन अंत में, आप वास्तव में हो सकता है मूल्यों के इन प्रकार के बारे में ध्यान, 88 00:03:59,250 --> 00:04:03,070 आप एक डेटाबेस का उपयोग कर रहे हैं, खासकर अगर और बहुत से और बहुत इकट्ठा करने के लिए शुरू 89 00:04:03,070 --> 00:04:06,190 और डेटा के बहुत सारे और अद्वितीय बताए उस डेटा का एक टुकड़ा करने के लिए संख्या. 90 00:04:06,190 --> 00:04:07,430 तो हम किस तरह की एक समस्या है. 91 00:04:07,430 --> 00:04:10,700 और इसी तरह, चल बिन्दु के साथ मान - तैरता या युगल - 92 00:04:10,700 --> 00:04:14,290 आप केवल एक निश्चित संख्या के मिल गया है बिट्स, कितने कुल संख्या तुम सकता है 93 00:04:14,290 --> 00:04:16,980 संभवतः प्रतिनिधित्व करते हैं? 94 00:04:16,980 --> 00:04:19,540 >> जब आप ठीक है, यह कम स्पष्ट है एक दशमलव बिंदु शामिल है. 95 00:04:19,540 --> 00:04:20,899 लेकिन यह निश्चित रूप से परिमित है. 96 00:04:20,899 --> 00:04:24,390 आप बिट्स की एक सीमित संख्या है, तो मनुष्य की एक निश्चित संख्या, एक परिमित 97 00:04:24,390 --> 00:04:27,350 प्रकाश बल्बों की संख्या, निश्चित रूप से आप कर सकते हैं केवल एक परिमित संख्या का प्रतिनिधित्व करते हैं 98 00:04:27,350 --> 00:04:28,510 चल बिन्दु मान. 99 00:04:28,510 --> 00:04:33,170 लेकिन कितने वास्तविक संख्या दुनिया में उनके हैं? 100 00:04:33,170 --> 00:04:33,680 एक अनंत है. 101 00:04:33,680 --> 00:04:37,280 तो यह है कि एक समस्या की तरह है क्योंकि हम एक अनंत राशि की जरूरत नहीं है 102 00:04:37,280 --> 00:04:39,970 हमारे कंप्यूटर के अंदर स्मृति या राम. 103 00:04:39,970 --> 00:04:41,780 तो कुछ चुनौतीपूर्ण बातें हो सकता है. 104 00:04:41,780 --> 00:04:43,900 >> तो चलो आगे चलते हैं और कोशिश यहाँ यह व्यक्त करने के लिए. 105 00:04:43,900 --> 00:04:46,240 मुझे आगे जाना है और जीएडिट खोल दें. 106 00:04:46,240 --> 00:04:50,360 मुझे आगे जाना है और एक फ़ाइल को बचाने के लिए जा रहा हूँ बस हो "floats0.c" कहा जाता है 107 00:04:50,360 --> 00:04:54,630 है कि एक उदाहरण के साथ संगत ऑनलाइन उपलब्ध है, अगर आप चाहते हैं. 108 00:04:54,630 --> 00:04:58,080 और मैं आगे जाने के लिए जा रहा हूँ इस प्रकार के रूप में परिभाषित - 109 00:04:58,080 --> 00:05:01,540 मुझे आगे जाना है और, INT कहने जा रहा हूँ हम अक्सर करते हैं मुख्य शून्य,. 110 00:05:01,540 --> 00:05:07,190 >> और फिर इस कार्यक्रम में, मैं जा रहा हूँ अपने आप को एक नाव, तो एक 32 बिट की घोषणा 111 00:05:07,190 --> 00:05:09,700 चर मनमाने ढंग से, च बुलाया. 112 00:05:09,700 --> 00:05:13,910 और फिर मैं इसे में स्टोर करने के लिए जा रहा हूँ मैं, दसवां, तो 0.1 पता नहीं है. 113 00:05:13,910 --> 00:05:16,590 तो मैं एक के रूप में व्यक्त करने के लिए जा रहा हूँ पूरी तरह से है जो 10, से विभाजित 114 00:05:16,590 --> 00:05:17,790 सी. में वैध 115 00:05:17,790 --> 00:05:20,460 >> और फिर दूसरी लाइन पर, मैं बस कि मूल्य बाहर मुद्रित करना चाहते हैं. 116 00:05:20,460 --> 00:05:22,950 इसलिए हम इस्तेमाल कर सकते हैं कि याद परिचित printf. 117 00:05:22,950 --> 00:05:25,420 हम मैं एक पूर्णांक के लिए% का उपयोग नहीं करना चाहती. 118 00:05:25,420 --> 00:05:28,360 हम एक नाव के लिए% च उपयोग करना चाहते हैं. 119 00:05:28,360 --> 00:05:33,080 और फिर मैं बैकस्लैश n क्या करने जा रहा हूँ, बंद बोली, अल्पविराम, च, अर्धविराम. 120 00:05:33,080 --> 00:05:34,400 >> तो यहाँ मेरा कार्यक्रम है. 121 00:05:34,400 --> 00:05:35,820 एक बग पहले से ही नहीं है. 122 00:05:35,820 --> 00:05:38,640 क्या यह क्लिक किया, जिनके लिए किसी को पहले से ही बात करना चाहता हूँ कम से कम 123 00:05:38,640 --> 00:05:40,220 एक बग मैं कर दिया है? 124 00:05:40,220 --> 00:05:42,470 हाँ? 125 00:05:42,470 --> 00:05:42,800 हाँ. 126 00:05:42,800 --> 00:05:47,860 मैं पर "# शामिल" भूल मैं करने की कोशिश ऊपर, वे जो के लक्षण 127 00:05:47,860 --> 00:05:50,490 इस होने जा रहा है संकलन संकलक मुझ पर चिल्लाना जा रहा है, 128 00:05:50,490 --> 00:05:52,770 कह अपरिभाषित प्रतीक या उस प्रभाव के लिए कुछ है. 129 00:05:52,770 --> 00:05:55,360 यह कुछ नहीं समझती printf की तरह. 130 00:05:55,360 --> 00:05:59,380 >> तो मैं # include "क्या करने जा रहा हूँ ", सहेजें. 131 00:05:59,380 --> 00:06:00,400 और अब यह बेहतर स्थिति में है. 132 00:06:00,400 --> 00:06:02,690 लेकिन मैं यह भी बात करने के लिए जा रहा हूँ आज एक नया विस्तार बाहर. 133 00:06:02,690 --> 00:06:08,620 जगह निर्दिष्ट करने के अलावा %% च मैं% है, आप कर सकते हैं जैसे धारकों 134 00:06:08,620 --> 00:06:12,320 कभी कभी व्यवहार को प्रभावित उस प्लेसहोल्डर की. 135 00:06:12,320 --> 00:06:15,540 उदाहरण के लिए, एक अस्थायी के मामले में बिंदु मान, मैं केवल चाहते हैं 136 00:06:15,540 --> 00:06:22,200 एक के बाद एक दशमलव स्थान प्रदर्शित करने के लिए अवधि, मैं वास्तव में 0.1f कर सकते हैं. 137 00:06:22,200 --> 00:06:26,830 तो दूसरे शब्दों में, मैं च अलग और 0.1 के साथ प्रतिशत चिह्न, बस 138 00:06:26,830 --> 00:06:30,200 printf बता रहा है, आप एक पूरे हो सकता है दशमलव के बाद संख्या का गुच्छा 139 00:06:30,200 --> 00:06:30,930 मेरे लिए इशारा करते हैं. 140 00:06:30,930 --> 00:06:32,870 लेकिन मैं केवल उन में से एक को देखना चाहते हैं. 141 00:06:32,870 --> 00:06:36,280 >> इसलिए मैं अब आगे बढ़ो और बचाने के लिए जा रहा हूँ इस कार्यक्रम, मेरे टर्मिनल में जाने 142 00:06:36,280 --> 00:06:41,870 खिड़की, और मैं आगे जाने के लिए जा रहा हूँ और प्रकार बनाने फ्लोट 0, दर्ज करें. 143 00:06:41,870 --> 00:06:44,930 मुझे लगता है कि कुछ हद तक गुप्त रेखा देखना है कि हम के रूप में और अधिक समझ बनाने के लिए शुरू हो जाएगा 144 00:06:44,930 --> 00:06:46,900 इस सप्ताह और अगले यह अलग तंग. 145 00:06:46,900 --> 00:06:50,480 अब मैं आगे जाने के लिए जा रहा हूँ और नाव शून्य चलाते हैं. 146 00:06:50,480 --> 00:06:52,020 और, लानत. 147 00:06:52,020 --> 00:06:54,880 >> तो एक और बग है यहाँ किसी कारण के लिए. 148 00:06:54,880 --> 00:07:02,490 मुझे पूरा यकीन है कि एक दसवें, या 10 से विभाजित एक, 0.0 नहीं है. 149 00:07:02,490 --> 00:07:04,590 शायद मैं सिर्फ देख रहा हूँ पर्याप्त अंक पर. 150 00:07:04,590 --> 00:07:08,580 तो क्यों मैं दो .2 देखने के लिए मत कहो दो सिर्फ एक के बजाय दशमलव स्थानों. 151 00:07:08,580 --> 00:07:11,810 मुझे अपने टर्मिनल विंडो के लिए वापस जाओ यहाँ करने के लिए और समय की एक जोड़ी मारा 152 00:07:11,810 --> 00:07:12,840 मेरा इतिहास देखें. 153 00:07:12,840 --> 00:07:15,910 फिर नाव शून्य बना है, और उसके बाद फिर से ऊपर. 154 00:07:15,910 --> 00:07:17,730 और अब दर्ज करें. 155 00:07:17,730 --> 00:07:20,000 >> और अब मैं यह गलत है पूरा यकीन है. 156 00:07:20,000 --> 00:07:23,030 और मैं तीन और चार कर सकता है, और मैं कर रहा हूँ शायद शून्य देख रखने के लिए जा रहा. 157 00:07:23,030 --> 00:07:24,880 तो जहां बग है? 158 00:07:24,880 --> 00:07:27,910 10 से विभाजित 0.1 होना चाहिए. 159 00:07:27,910 --> 00:07:30,310 किसी को क्या एक चाकू ले जाना चाहता हूँ बुनियादी मुद्दा है? 160 00:07:30,310 --> 00:07:32,400 हाँ? 161 00:07:32,400 --> 00:07:33,420 वे दोनों पूर्णांकों कर रहे हैं. 162 00:07:33,420 --> 00:07:33,920 तो क्या हुआ? 163 00:07:33,920 --> 00:07:37,820 तो एक साथ 10 से विभाजित है, कि मैं गणित में क्या करते हैं. 164 00:07:37,820 --> 00:07:41,185 और मैं 0.1 मिलता है. 165 00:07:41,185 --> 00:07:41,660 >> हाँ. 166 00:07:41,660 --> 00:07:43,240 और तो यह वास्तव में लगता है कि मुद्दा है. 167 00:07:43,240 --> 00:07:46,700 आप एक कंप्यूटर में एक पूर्णांक ले और आप एक और पूर्णांक से विभाजित, 168 00:07:46,700 --> 00:07:50,430 डिफ़ॉल्ट रूप से कंप्यूटर के लिए जा रहा है आप एक पूर्णांक चाहते हैं कि मान. 169 00:07:50,430 --> 00:07:54,620 समस्या हालांकि, ज़ाहिर है, कि 0.1 कोई पूर्णांक नहीं है. 170 00:07:54,620 --> 00:07:55,680 यह एक वास्तविक संख्या है. 171 00:07:55,680 --> 00:07:59,610 और तो कंप्यूटर द्वारा क्या करता है डिफ़ॉल्ट यह अभी दूर फेंकता है 172 00:07:59,610 --> 00:08:01,070 दशमलव बिंदु के बाद सब कुछ. 173 00:08:01,070 --> 00:08:03,380 यह प्रतिशत से ऊपर नीचे गोल या नहीं है. 174 00:08:03,380 --> 00:08:06,480 यह अभी सब कुछ दूर फेंकता दशमलव बिंदु के बाद. 175 00:08:06,480 --> 00:08:07,430 और अब है कि समझ में आता है. 176 00:08:07,430 --> 00:08:09,740 अब हम स्पष्ट रूप से कर रहे हैं क्योंकि शून्य के साथ छोड़ दिया. 177 00:08:09,740 --> 00:08:10,250 >> लेकिन एक मिनट रुको. 178 00:08:10,250 --> 00:08:11,840 मैं एक पूर्णांक शून्य नहीं देख रहा हूँ. 179 00:08:11,840 --> 00:08:14,910 मैं वास्तव में 0.00 देख रहा हूँ. 180 00:08:14,910 --> 00:08:16,340 तो कैसे मैं अब यह स्वीकार करते हैं? 181 00:08:16,340 --> 00:08:22,850 10 से विभाजित एक शून्य है, लेकिन मैं कर रहा हूँ यह हो रही है जहां 0.00, देखकर 182 00:08:22,850 --> 00:08:24,250 एक वास्तविक संख्या को वापस बदल? 183 00:08:24,250 --> 00:08:25,500 हाँ. 184 00:08:25,500 --> 00:08:29,850 185 00:08:29,850 --> 00:08:30,630 बिल्कुल सही. 186 00:08:30,630 --> 00:08:35,600 >> यहाँ तो लाइन पांच में, ऊपर जब मैं वास्तव में तो है जो कि 0.1, स्टोर 187 00:08:35,600 --> 00:08:39,549 शून्य से छोटा, एक नाव के अंदर, कि करने के लिए प्रभावी ढंग से बराबर है 188 00:08:39,549 --> 00:08:42,100 , एक पूर्णांक के रूप में यह नहीं के भंडारण लेकिन दरअसल, एक नाव के रूप में. 189 00:08:42,100 --> 00:08:46,540 इसके अलावा, मैं तब तक printf का उपयोग कर रहा हूँ स्पष्ट रूप से दो कि संख्या मुद्रित 190 00:08:46,540 --> 00:08:49,740 दशमलव स्थान भी वहाँ हालांकि वास्तव में किसी भी नहीं हो सकता है. 191 00:08:49,740 --> 00:08:51,020 >> तो इस तरह के अधिकार, बेकार है? 192 00:08:51,020 --> 00:08:53,640 जाहिर है आप गणित नहीं कर सकते, कम से कम इस स्तर के पर 193 00:08:53,640 --> 00:08:55,600 परिशुद्धता, एक कंप्यूटर में. 194 00:08:55,600 --> 00:08:56,930 लेकिन निश्चित रूप से वहाँ एक समाधान है. 195 00:08:56,930 --> 00:09:00,410 हम शायद कर सकता सरलतम तय क्या है करने के लिए भी सिर्फ intuitively, यहाँ करना 196 00:09:00,410 --> 00:09:01,130 इस को हल? 197 00:09:01,130 --> 00:09:02,380 हाँ? 198 00:09:02,380 --> 00:09:04,700 199 00:09:04,700 --> 00:09:06,574 पूर्णांकों में बदल जाते हैं - 200 00:09:06,574 --> 00:09:06,976 हाँ. 201 00:09:06,976 --> 00:09:10,420 मैं क्या काफी यकीन नहीं है यहां तक ​​कि अगर यह अगर सच में, यहाँ पर जा रहा 202 00:09:10,420 --> 00:09:13,440 मूलरूप में इन दोनों के साथ क्या करना है जा रहा है ints, ठीक है, क्यों नहीं मैं 203 00:09:13,440 --> 00:09:18,230 इस बना रही है कि 10.0 बनाने 1.0, फ़ाइल resave. 204 00:09:18,230 --> 00:09:20,990 मुझे वापस नीचे चलते हैं नीचे और recompile. 205 00:09:20,990 --> 00:09:23,030 मुझे अब फिर से दौड़ना करते हैं. 206 00:09:23,030 --> 00:09:23,420 और वहाँ - 207 00:09:23,420 --> 00:09:27,690 अब, मैं अपने एक दसवें मिल गया है 0.10 के रूप में प्रतिनिधित्व किया. 208 00:09:27,690 --> 00:09:28,420 >> ठीक है. 209 00:09:28,420 --> 00:09:29,220 तो इतना बुरा नहीं है. 210 00:09:29,220 --> 00:09:31,730 और मुझे एक दूसरी तरह के बाहर बात करते हैं हम इस हल हो सकता है. 211 00:09:31,730 --> 00:09:35,580 मुझे वास्तव में समय में वापस रोल करते हैं हम एक के रूप में यह था जब तक 212 00:09:35,580 --> 00:09:36,680 एक पल पहले दसवें. 213 00:09:36,680 --> 00:09:40,800 और मुझे आगे जाना है और इस फाइल resave जाने एक अलग फ़ाइल नाम के रूप में, बस के लिए 214 00:09:40,800 --> 00:09:41,750 एक छोटे से जांच की चौकी है. 215 00:09:41,750 --> 00:09:43,450 तो उस संस्करण में से एक था. 216 00:09:43,450 --> 00:09:45,520 और अब मुझे आगे चलते हैं और एक और संस्करण है. 217 00:09:45,520 --> 00:09:48,540 हम इस संस्करण फोन करता हूँ दो शून्य अनुक्रमित. 218 00:09:48,540 --> 00:09:51,280 >> और मैं बजाय क्या करने जा रहा हूँ इस - क्या आप जानते हैं? 219 00:09:51,280 --> 00:09:54,400 डॉट शून्य जोड़ने से इस मामले में काम करता है. 220 00:09:54,400 --> 00:09:56,060 लेकिन एक एक चर रहे थे लगता है. 221 00:09:56,060 --> 00:09:57,680 माना जाता 10 एक चर रहे थे. 222 00:09:57,680 --> 00:10:00,680 दूसरे शब्दों में, लगता है कि मैं नहीं कर सकता अंत में सिर्फ कड़ी मेहनत से कोड .0 223 00:10:00,680 --> 00:10:02,340 इस अंकगणित अभिव्यक्ति की. 224 00:10:02,340 --> 00:10:05,820 खैर, मैं वास्तव में कुछ कर सकते हैं कोष्ठक में कास्टिंग बुलाया. 225 00:10:05,820 --> 00:10:11,920 मैं एक नाव के लिए कि पूर्णांक 10 डाल सकते हैं, और मैं एक के लिए कि पूर्णांक एक डाल सकते हैं 226 00:10:11,920 --> 00:10:12,800 साथ ही, तैरने लगते हैं. 227 00:10:12,800 --> 00:10:17,190 तो किया जा रहा है कि गणित प्रभावी ढंग से 1.0 10.0 से विभाजित है, 228 00:10:17,190 --> 00:10:19,250 जिनमें से परिणाम चला जाता है पहले की तरह च में. 229 00:10:19,250 --> 00:10:26,130 इसलिए मैं इस recompile के रूप में यदि मंगाई बनाने 2, और अब 2 तैरता, मैं एक ही मिलता है 230 00:10:26,130 --> 00:10:27,020 साथ ही, जवाब. 231 00:10:27,020 --> 00:10:29,640 >> तो यह एक काफी काल्पनिक उदाहरण है, इस समस्या को हल करने के लिए 232 00:10:29,640 --> 00:10:31,400 कास्टिंग शुरू करने से. 233 00:10:31,400 --> 00:10:34,410 लेकिन सामान्य तौर पर, कास्टिंग होने जा रहा है एक शक्तिशाली बात है, विशेष रूप से के लिए 234 00:10:34,410 --> 00:10:38,180 समस्या एक सप्ताह का समय में दो सेट, जब आप एक डेटा प्रकार में कनवर्ट करना चाहते 235 00:10:38,180 --> 00:10:41,800 एक और है कि दिन के अंत में उसी तरह से प्रतिनिधित्व कर रहे हैं. 236 00:10:41,800 --> 00:10:44,970 दिन के अंत में, हर एक हम इस प्रकार अब तक के बारे में बात की है बात है 237 00:10:44,970 --> 00:10:46,710 बस हुड के नीचे ints. 238 00:10:46,710 --> 00:10:48,950 या उस के लिए भी कम स्तर है अगर तुम, वे बस संख्या रहे हैं 239 00:10:48,950 --> 00:10:49,750 हुड के नीचे. 240 00:10:49,750 --> 00:10:52,850 यहां तक ​​कि वर्ण, फिर, याद सप्ताह शून्य से, नंबर हैं 241 00:10:52,850 --> 00:10:53,990 हुड के नीचे. 242 00:10:53,990 --> 00:10:57,240 >> जो कहना है, हम दोनों के बीच में बदल सकते हैं संख्या अगर के विभिन्न प्रकार 243 00:10:57,240 --> 00:10:58,060 वे बस बिट कर रहे हैं. 244 00:10:58,060 --> 00:11:01,020 हम संख्याओं के बीच में बदल सकते हैं और अक्षरों वे अभी कर रहे हैं 245 00:11:01,020 --> 00:11:02,580 बिट्स, और इसके विपरीत. 246 00:11:02,580 --> 00:11:07,170 और इस तरह से कास्टिंग एक तंत्र है जबरन आपको देता है कि प्रोग्रामिंग में 247 00:11:07,170 --> 00:11:10,970 एक दूसरे के लिए डेटा प्रकार बदल जाते हैं. 248 00:11:10,970 --> 00:11:14,570 दुर्भाग्य से, इस रूप में नहीं है मुझे अच्छा लगा कि हो सकता है के रूप में सरल. 249 00:11:14,570 --> 00:11:19,220 >> मैं मंगाई में वापस जाने के लिए जा रहा हूँ 1, जो सरल, अधिक था 250 00:11:19,220 --> 00:11:22,830 साथ सीधा एक .0 प्रत्येक को कहा. 251 00:11:22,830 --> 00:11:25,260 और सिर्फ एक त्वरित रिफ्रेशर के रूप में, मुझे आगे जाना है और फिर कंपाइल जाने 252 00:11:25,260 --> 00:11:27,670 यह मंगाई 2 बनाने - 253 00:11:27,670 --> 00:11:30,300 क्षमा करें, यह मंगाई 1 बनाना है. 254 00:11:30,300 --> 00:11:32,050 और अब मंगाई 1 चलाते हैं. 255 00:11:32,050 --> 00:11:34,810 और नीचे, नोटिस में मैं वास्तव में 0.1 मिलता है. 256 00:11:34,810 --> 00:11:36,165 तो, इस समस्या का हल. 257 00:11:36,165 --> 00:11:37,280 >> लेकिन अभी नहीं. 258 00:11:37,280 --> 00:11:40,000 मैं अब थोड़ा उत्सुक पाने के लिए जा रहा हूँ और मैं में वापस जाने के लिए जा रहा हूँ मेरे 259 00:11:40,000 --> 00:11:41,620 printf बयान और कहते हैं, आप क्या जानते हो? 260 00:11:41,620 --> 00:11:44,090 मैं इस बात की पुष्टि करना चाहते हैं कि इस वास्तव में दसवां है. 261 00:11:44,090 --> 00:11:47,890 और मैं यह देखना चाहता हूँ जा रहा हूँ पाँच दशमलव स्थानों, कहते हैं, के लिए. 262 00:11:47,890 --> 00:11:48,570 यह एक समस्या नहीं है. 263 00:11:48,570 --> 00:11:52,020 मैं, एक से पांच दो को बदलने मैं बनाने के साथ recompile. 264 00:11:52,020 --> 00:11:53,770 मैं मंगाई 1 के रूप में इसे फिर से चलाएँ. 265 00:11:53,770 --> 00:11:54,990 बहुत अच्छी लग रही. 266 00:11:54,990 --> 00:11:58,570 अपने विवेक चेक यहीं खत्म, लेकिन हो सकता है मैं एक छोटे से अधिक साहसी हो रही है. 267 00:11:58,570 --> 00:12:00,330 मैं 0.5-0.10 बदलने के लिए जा रहा हूँ. 268 00:12:00,330 --> 00:12:03,440 मैं के बाद 10 अंकों देखना चाहते हैं दशमलव स्थान. 269 00:12:03,440 --> 00:12:09,060 >> और मुझे आगे जाना है और फिर कंपाइल करने के लिए जा रहा हूँ इस और फिर से दौड़ना 1 मंगाई. 270 00:12:09,060 --> 00:12:13,060 मैं एक तरह से यह परीक्षण अफसोस मेरी गणित तो नहीं है आगे क्योंकि 271 00:12:13,060 --> 00:12:14,320 अब और सही, ऐसा लगता है. 272 00:12:14,320 --> 00:12:15,630 लेकिन शायद, एक मिनट रुको कि सिर्फ एक अस्थायी है. 273 00:12:15,630 --> 00:12:17,810 हो सकता है कि कंप्यूटर काम कर रहा है एक छोटा सा अजीब. 274 00:12:17,810 --> 00:12:21,810 मुझे आगे जाना है और 20 दशमलव अंक करते हैं और मुझे पता है कि अपने आप को आश्वस्त 275 00:12:21,810 --> 00:12:22,540 गणित करने के लिए कैसे. 276 00:12:22,540 --> 00:12:23,460 मैं कार्यक्रम के लिए आता है. 277 00:12:23,460 --> 00:12:26,960 , मंगाई 1 बनाओ, फिर कंपाइल करने, और यह लानत. 278 00:12:26,960 --> 00:12:31,110 यह वास्तव में हो रही है, वास्तव में है अब तक मार्क से. 279 00:12:31,110 --> 00:12:32,490 >> तो यहाँ क्या हो रहा है? 280 00:12:32,490 --> 00:12:36,050 Intuitively, हमारी मान्यताओं पर आधारित पहले डेटा प्रकार के आकार के बारे में, 281 00:12:36,050 --> 00:12:38,040 यहाँ क्या हो जाना चाहिए क्या हुड के नीचे? 282 00:12:38,040 --> 00:12:39,290 हाँ? 283 00:12:39,290 --> 00:12:43,000 284 00:12:43,000 --> 00:12:43,590 बिल्कुल सही. 285 00:12:43,590 --> 00:12:46,480 आप इतना सटीक चाहते हैं, और अगर कि परिशुद्धता का एक बहुत की एक बिल्ली है - 286 00:12:46,480 --> 00:12:48,770 दशमलव बिंदु के बाद 20 नंबर. 287 00:12:48,770 --> 00:12:51,990 आप संभवतः एक का प्रतिनिधित्व नहीं कर सकते मनमाना संख्या आप एक है जब तक 288 00:12:51,990 --> 00:12:52,930 बिट्स की मनमानी संख्या. 289 00:12:52,930 --> 00:12:54,190 लेकिन हम नहीं. 290 00:12:54,190 --> 00:12:57,200 एक नाव के लिए, हम केवल 32 बिट है. 291 00:12:57,200 --> 00:13:02,260 >> इसलिए 32 बिट केवल एक में permuted किया जा सकता है तरीका - बस, मंच पर हमारे इंसानों की तरह 292 00:13:02,260 --> 00:13:05,780 ऊपर या नीचे हाथ - की एक निश्चित संख्या में तरीके, केवल एक सीमित संख्या है 293 00:13:05,780 --> 00:13:08,640 आप का प्रतिनिधित्व कर सकते हैं वास्तविक संख्या उन बिट्स के साथ. 294 00:13:08,640 --> 00:13:10,500 और तो कंप्यूटर अंततः करने के लिए किया जा रहा है 295 00:13:10,500 --> 00:13:11,730 कोनों में कटौती शुरू. 296 00:13:11,730 --> 00:13:15,500 कंप्यूटर उन विवरण छिपा कर सकते हैं समय का एक छोटा सा के लिए हम से. 297 00:13:15,500 --> 00:13:18,880 हम शुरू करते हैं लेकिन संख्या में poking और आगे और आगे को देख 298 00:13:18,880 --> 00:13:23,220 , पूरी संख्या में संख्या अनुगामी तो हम यह है कि देखने के लिए शुरू 299 00:13:23,220 --> 00:13:26,480 वास्तव में approximating दसवां का विचार है. 300 00:13:26,480 --> 00:13:29,860 >> और इसलिए यह पता चला है, दुर्भाग्य से, वहाँ संख्या की एक अनंत संख्या 301 00:13:29,860 --> 00:13:35,060 हम एक में ठीक का प्रतिनिधित्व नहीं कर सकते कंप्यूटर, एक परिमित के साथ कम से कम 302 00:13:35,060 --> 00:13:38,030 बिट्स की संख्या, एक परिमित रैम की राशि. 303 00:13:38,030 --> 00:13:41,210 अब दुर्भाग्य से, यह कभी कभी वास्तविक दुनिया परिणाम है. 304 00:13:41,210 --> 00:13:45,980 लोगों को काफी यह नहीं की सराहना करते हैं इस तथ्य के लिए दी गई या ऐसा ले 305 00:13:45,980 --> 00:13:48,310 अपने कंप्यूटर अभी करना होगा कि क्या वे करते हैं यह बताने के लिए और नहीं करना 306 00:13:48,310 --> 00:13:51,430 समझ में इन अंतर्निहित प्रतिनिधित्व विवरण - 307 00:13:51,430 --> 00:13:55,290 कुछ भाषाओं में, जो स्पष्ट रूप से, कर रहे हैं सी में विपरीत, उपयोगकर्ता से छिपा हुआ - 308 00:13:55,290 --> 00:13:56,500 कुछ बुरी बातें हो सकता है. 309 00:13:56,500 --> 00:13:58,650 >> और मैंने सोचा था कि हम क्या चाहते हैं एक कदम वापस ले रहा है. 310 00:13:58,650 --> 00:14:00,420 और इस एक के बारे में है आठ मिनट का वीडियो. 311 00:14:00,420 --> 00:14:04,200 यह कुछ साल पहले प्रसारित किया, और यह देता है क्या वास्तव में जा सकते हैं में अंतर्दृष्टि 312 00:14:04,200 --> 00:14:09,290 गलत आप इन के तहत की सराहना करते हैं जब बहुत सभी के लिए भी में विवरण के प्रकार 313 00:14:09,290 --> 00:14:10,080 असली दुनिया. 314 00:14:10,080 --> 00:14:12,965 हम रोशनी मंद कर सकता है कुछ मिनट के लिए. 315 00:14:12,965 --> 00:14:14,360 >> स्पीकर 1: हम अब इंजीनियरिंग करने के लिए वापस 316 00:14:14,360 --> 00:14:17,160 आधुनिक चमत्कार पर आपदाओं. 317 00:14:17,160 --> 00:14:18,680 >> कंप्यूटर - 318 00:14:18,680 --> 00:14:21,340 हम सभी को स्वीकार करने आया हूँ अक्सर निराशा समस्याओं 319 00:14:21,340 --> 00:14:23,170 कि उनके साथ जाना. 320 00:14:23,170 --> 00:14:27,570 कीड़े, वायरस, और सॉफ्टवेयर glitches के लिए भुगतान करने के लिए छोटे कीमतें हैं 321 00:14:27,570 --> 00:14:28,960 सुविधा. 322 00:14:28,960 --> 00:14:32,040 लेकिन में उच्च तकनीक और उच्च गति सैन्य और अंतरिक्ष कार्यक्रम 323 00:14:32,040 --> 00:14:38,650 आवेदन पत्र, छोटी से छोटी समस्या आपदा में बढ़ाया जा सकता है. 324 00:14:38,650 --> 00:14:44,480 >> 4 जून, 1996 पर, वैज्ञानिकों के लिए तैयार एक मानव रहित एरियन -5 रॉकेट प्रक्षेपण. 325 00:14:44,480 --> 00:14:48,700 यह वैज्ञानिक उपग्रह ले जा रहा था स्थापित करने के लिए डिजाइन ठीक कैसे 326 00:14:48,700 --> 00:14:53,250 पृथ्वी के चुंबकीय क्षेत्र का आदान प्रदान सौर हवाओं के साथ. 327 00:14:53,250 --> 00:14:57,540 रॉकेट यूरोपीय के लिए बनाया गया था अंतरिक्ष एजेंसी और से बंद उठाया अपनी 328 00:14:57,540 --> 00:14:59,906 तट पर सुविधा फ्रेंच गयाना की. 329 00:14:59,906 --> 00:15:03,660 >> जैक GANSSLE: के बारे में 37 सेकंड से कम में उड़ान, वे पहली बार देखा 330 00:15:03,660 --> 00:15:04,910 कुछ गलत हो रहा था. 331 00:15:04,910 --> 00:15:08,130 नलिका में swiveling गया एक तरह से वे वास्तव में नहीं होना चाहिए. 332 00:15:08,130 --> 00:15:12,380 उड़ान में लगभग 40 सेकंड, स्पष्ट रूप से वाहन मुसीबत में था. 333 00:15:12,380 --> 00:15:14,400 वे बनाया और है कि जब एक इसे नष्ट करने का फैसला. 334 00:15:14,400 --> 00:15:18,520 साथ सीमा सुरक्षा अधिकारी, जबरदस्त हिम्मत, बटन दबाया, 335 00:15:18,520 --> 00:15:23,900 यह कर सकता से पहले रॉकेट विस्फोट से उड़ा दिया सार्वजनिक सुरक्षा के लिए एक खतरा बन जाते हैं. 336 00:15:23,900 --> 00:15:27,810 >> स्पीकर 1: यह पहली यात्रा थी एरियन -5, और अपने विनाश की 337 00:15:27,810 --> 00:15:32,020 क्योंकि एम्बेडेड एक दोष की जगह ले ली रॉकेट के सॉफ्टवेयर में. 338 00:15:32,020 --> 00:15:33,980 >> जैक GANSSLE: एरियन पर समस्या एक नंबर था कि वहाँ था 339 00:15:33,980 --> 00:15:36,390 उस व्यक्त करने के लिए 64 बिट की आवश्यकता है. 340 00:15:36,390 --> 00:15:39,420 और वे परिवर्तित करना चाहता था एक 16 बिट संख्या के लिए. 341 00:15:39,420 --> 00:15:43,130 वे संख्या कभी नहीं था कि ग्रहण , बहुत बड़ा होने जा रहा है कि अधिकांश 342 00:15:43,130 --> 00:15:46,810 64 बिट में उन अंक संख्या शून्य थे. 343 00:15:46,810 --> 00:15:48,270 वे गलत थे. 344 00:15:48,270 --> 00:15:51,380 >> स्पीकर 1: एक सॉफ्टवेयर की असमर्थता एक तरह से स्वीकार करने के लिए कार्यक्रम 345 00:15:51,380 --> 00:15:55,350 एक अन्य द्वारा उत्पन्न संख्या था विफलता की जड़ में. 346 00:15:55,350 --> 00:15:59,970 सॉफ्टवेयर विकास एक बहुत ही बन गया था नई तकनीक के महंगा हिस्सा. 347 00:15:59,970 --> 00:16:03,980 एरियन 4 रॉकेट से किया गया था बहुत सफल, सॉफ्टवेयर की इतना 348 00:16:03,980 --> 00:16:07,480 यह भी था के लिए बनाया एरियन -5 में इस्तेमाल किया. 349 00:16:07,480 --> 00:16:11,980 >> फिलिप Coyle: बुनियादी समस्या थी एरियन -5, तेज था कि 350 00:16:11,980 --> 00:16:13,720 तेजी से बढ़ी है. 351 00:16:13,720 --> 00:16:17,250 और सॉफ्टवेयर नहीं था उस के लिए जिम्मेदार है. 352 00:16:17,250 --> 00:16:20,770 >> स्पीकर 1: रॉकेट का विनाश एक भारी वित्तीय आपदा थी, 353 00:16:20,770 --> 00:16:24,200 पूरे एक मिनट सॉफ्टवेयर त्रुटि के लिए. 354 00:16:24,200 --> 00:16:27,820 लेकिन यह पहली बार डेटा नहीं था रूपांतरण समस्याओं आधुनिक त्रस्त था 355 00:16:27,820 --> 00:16:30,620 रॉकेट प्रौद्योगिकी. 356 00:16:30,620 --> 00:16:34,480 >> जैक GANSSLE: 1991 में शुरुआत के साथ पहले खाड़ी युद्ध, देशभक्त की 357 00:16:34,480 --> 00:16:38,610 मिसाइल एक ही तरह का अनुभव एक नंबर रूपांतरण समस्या की. 358 00:16:38,610 --> 00:16:44,910 नतीजतन, 28 अमेरिकी सैनिकों थे मारे गए हैं और लगभग 100 अन्य घायल हो गए 359 00:16:44,910 --> 00:16:48,600 पैट्रियट, चाहिए था जब आने वाली Scuds के खिलाफ की रक्षा के लिए, 360 00:16:48,600 --> 00:16:51,630 एक मिसाइल आग में विफल रही है. 361 00:16:51,630 --> 00:16:55,110 >> स्पीकर 1: इराक ने कुवैत पर हमला करते हैं और अमेरिका में डेजर्ट स्टॉर्म का शुभारंभ 362 00:16:55,110 --> 00:17:00,570 जल्दी 1991, पैट्रियट मिसाइल बैटरी सऊदी अरब की रक्षा के लिए तैनात किया गया था 363 00:17:00,570 --> 00:17:04,760 और इराकी स्कड से इसराइल मिसाइल हमलों. 364 00:17:04,760 --> 00:17:09,720 पैट्रियट एक अमेरिकी मध्यम दूरी है सतह से हवा प्रणाली द्वारा निर्मित 365 00:17:09,720 --> 00:17:11,569 रेथियॉन कंपनी. 366 00:17:11,569 --> 00:17:16,410 >> THEODORE POSTOL: देशभक्त का आकार इंटरसेप्टर ही मोटे तौर पर है 367 00:17:16,410 --> 00:17:17,710 20 फुट लंबा है. 368 00:17:17,710 --> 00:17:20,800 और यह लगभग 2000 पाउंड वजन. 369 00:17:20,800 --> 00:17:22,940 और इसके बारे में एक बम वहन करती है - 370 00:17:22,940 --> 00:17:24,905 मैं यह लगभग 150 पाउंड है लगता है. 371 00:17:24,905 --> 00:17:31,030 और बम अपने आप में एक है उच्च विस्फोटक जो है 372 00:17:31,030 --> 00:17:33,270 इसके चारों ओर टुकड़े. 373 00:17:33,270 --> 00:17:37,490 बम का आवरण बनाया गया है buckshot तरह कार्य करने के लिए. 374 00:17:37,490 --> 00:17:40,720 >> स्पीकर 1: मिसाइलों चार किया जाता है कंटेनर प्रति और ले जाया जाता है 375 00:17:40,720 --> 00:17:43,050 एक अर्द्ध ट्रेलर से. 376 00:17:43,050 --> 00:17:47,490 >> फिलिप Coyle: पैट्रियट मिसाइल रोधी सिस्टम में वापस चला जाता है 377 00:17:47,490 --> 00:17:50,710 अब कम से कम 20 साल. 378 00:17:50,710 --> 00:17:54,350 यह मूल रूप से डिजाइन किया गया था एक हवाई रक्षा मिसाइल 379 00:17:54,350 --> 00:17:56,190 दुश्मन के हवाई जहाज को गोली मार. 380 00:17:56,190 --> 00:18:02,490 उस युद्ध जब पहले खाड़ी युद्ध में साथ सेना इसका इस्तेमाल करना चाहते थे आया 381 00:18:02,490 --> 00:18:05,535 Scuds, नहीं हवाई जहाज नीचे गोली मार करने के लिए. 382 00:18:05,535 --> 00:18:09,310 इराकी वायु सेना नहीं था तो एक समस्या की बहुत. 383 00:18:09,310 --> 00:18:12,450 लेकिन सेना Scuds के बारे में चिंतित था. 384 00:18:12,450 --> 00:18:15,950 और इसलिए वे को अपग्रेड करने की कोशिश की पैट्रियट. 385 00:18:15,950 --> 00:18:18,750 >> स्पीकर 1: एक दुश्मन मिसाइल बेधने मच पांच पर गया था यात्रा 386 00:18:18,750 --> 00:18:20,890 काफी चुनौतीपूर्ण होने जा रहा. 387 00:18:20,890 --> 00:18:25,590 लेकिन पैट्रियट में ले जाया गया था जब सेवा, सेना एक के बारे में पता नहीं था 388 00:18:25,590 --> 00:18:31,710 कर दिया है कि इराकी संशोधन उनके हिट करने के लिए लगभग असंभव Scuds. 389 00:18:31,710 --> 00:18:35,240 >> THEODORE POSTOL: क्या हुआ थे कि Scuds है 390 00:18:35,240 --> 00:18:36,570 में आने अस्थिर थे. 391 00:18:36,570 --> 00:18:37,532 वे wobbling गया. 392 00:18:37,532 --> 00:18:43,220 इस के लिए कारण में, इराकियों था एक के बाहर 600 किलोमीटर की दूरी पर प्राप्त करने के लिए 393 00:18:43,220 --> 00:18:47,530 300 किलोमीटर की दूरी के प्रक्षेपास्त्र लिया सामने बम से बाहर वजन. 394 00:18:47,530 --> 00:18:49,290 वे बम हल्का कर दिया. 395 00:18:49,290 --> 00:18:53,110 तो अब पैट्रियट की कोशिश कर रहा स्कड पर आने के लिए. 396 00:18:53,110 --> 00:18:56,470 और ज्यादातर समय, भारी समय के अधिकांश, यह सिर्फ होगा 397 00:18:56,470 --> 00:18:58,730 स्कड से उड़ान भरने के लिए. 398 00:18:58,730 --> 00:19:01,760 >> स्पीकर 1: एक बार पैट्रियट प्रणाली ऑपरेटरों पैट्रियट चूक का एहसास 399 00:19:01,760 --> 00:19:06,690 अपने लक्ष्य, वे देशभक्त विस्फोट संभव से बचने के लिए बम 400 00:19:06,690 --> 00:19:10,300 यह अनुमति दी गई थी, तो हताहतों की संख्या भूमि पर गिर करने के लिए. 401 00:19:10,300 --> 00:19:14,540 >> THEODORE POSTOL: वह क्या सबसे था लोग आकाश में के रूप में बड़ा fireballs देखा 402 00:19:14,540 --> 00:19:20,350 और अवरोध के रूप में गलत समझा स्कड हथियार की. 403 00:19:20,350 --> 00:19:23,320 >> स्पीकर 1: हालांकि रात आसमान में देशभक्त सफलतापूर्वक हो दर्शन 404 00:19:23,320 --> 00:19:27,530 वहाँ धहरान में, Scuds नष्ट इस बारे में कोई गलती हो सकती है इसकी 405 00:19:27,530 --> 00:19:29,140 प्रदर्शन. 406 00:19:29,140 --> 00:19:34,180 वहाँ, खो पैट्रियट के रडार प्रणाली एक आने वाली स्कड का ट्रैक और कभी नहीं 407 00:19:34,180 --> 00:19:36,380 कारण एक सॉफ्टवेयर दोष के लिए शुरू की है. 408 00:19:36,380 --> 00:19:39,890 409 00:19:39,890 --> 00:19:42,700 >> यह पहले की खोज की है जो इजरायल था कि अब सिस्टम 410 00:19:42,700 --> 00:19:48,020 समय विसंगति अधिक से अधिक, पर था कारण एक घड़ी के लिए बन गया 411 00:19:48,020 --> 00:19:50,470 सिस्टम के कंप्यूटर में एम्बेडेड. 412 00:19:50,470 --> 00:19:54,640 >> जैक GANSSLE: के बारे में दो सप्ताह पहले धहरान, इजरायल में त्रासदी 413 00:19:54,640 --> 00:19:58,440 रक्षा विभाग को सूचना दी सिस्टम समय खो गया था कि. 414 00:19:58,440 --> 00:20:01,280 चल के बारे में आठ घंटे के बाद, वे प्रणाली है कि देखा 415 00:20:01,280 --> 00:20:03,530 काफ़ी कम सटीक होते जा. 416 00:20:03,530 --> 00:20:07,710 रक्षा विभाग के द्वारा प्रतिक्रिया पैट्रियट बैटरी के सभी कह रही 417 00:20:07,710 --> 00:20:10,500 सिस्टम नहीं छोड़ करने के लिए एक लंबे समय के लिए. 418 00:20:10,500 --> 00:20:12,430 वे एक लंबे समय क्या था कभी नहीं कहा. 419 00:20:12,430 --> 00:20:13,330 आठ घंटे? 420 00:20:13,330 --> 00:20:13,810 10 घंटे? 421 00:20:13,810 --> 00:20:14,990 1,000 घंटे? 422 00:20:14,990 --> 00:20:17,150 कोई नहीं जानता था. 423 00:20:17,150 --> 00:20:20,220 >> स्पीकर 1: पैट्रियट बैटरी तैनात धहरान में बैरकों में 424 00:20:20,220 --> 00:20:24,660 और अपने त्रुटिपूर्ण आंतरिक घड़ी से किया गया था की रात को 100 घंटे से अधिक पर 425 00:20:24,660 --> 00:20:27,470 25 फ़रवरी. 426 00:20:27,470 --> 00:20:31,770 >> जैक GANSSLE: यह एक समय पर नज़र रखी एक दूसरे के बारे में एक दसवें की सटीकता की. 427 00:20:31,770 --> 00:20:34,480 अब, एक दूसरे का एक दसवें एक है दिलचस्प संख्या यह नहीं हो सकता क्योंकि 428 00:20:34,480 --> 00:20:39,940 जिसका मतलब है, बिल्कुल बाइनरी में व्यक्त यह बिल्कुल में व्यक्त नहीं किया जा सकता 429 00:20:39,940 --> 00:20:42,500 किसी भी आधुनिक डिजिटल कंप्यूटर. 430 00:20:42,500 --> 00:20:46,920 यह विश्वास करना मुश्किल है, लेकिन एक उदाहरण के रूप में इस का उपयोग करें. 431 00:20:46,920 --> 00:20:49,000 की संख्या एक तिहाई से लेते हैं. 432 00:20:49,000 --> 00:20:53,150 एक तिहाई व्यक्त नहीं किया जा सकता बिल्कुल दशमलव में. 433 00:20:53,150 --> 00:20:57,500 एक तिहाई 0.333 जा रहा है अनंत के लिए पर. 434 00:20:57,500 --> 00:21:02,270 साथ ऐसा करने के लिए कोई रास्ता नहीं है दशमलव में पूर्ण शुद्धता. 435 00:21:02,270 --> 00:21:05,370 कि इस समस्या का भी वैसी ही है कि पैट्रियट में हुआ. 436 00:21:05,370 --> 00:21:09,880 अब सिस्टम, भागा सबसे खराब समय त्रुटि हो गया. 437 00:21:09,880 --> 00:21:13,840 >> स्पीकर 1: आपरेशन के 100 घंटे के बाद, समय में त्रुटि ही था 438 00:21:13,840 --> 00:21:16,140 एक दूसरे के बारे में एक तिहाई. 439 00:21:16,140 --> 00:21:20,800 लेकिन एक मिसाइल को निशाना बनाने के मामले में मच पांच में यात्रा, उस में हुई 440 00:21:20,800 --> 00:21:24,410 600 मीटर से अधिक की एक ट्रैकिंग एरर. 441 00:21:24,410 --> 00:21:27,670 इसके लिए एक गंभीर त्रुटि होगा धहरान में सैनिकों. 442 00:21:27,670 --> 00:21:33,450 >> THEODORE POSTOL: क्या हुआ एक है स्कड लांच जल्दी से पता चला था 443 00:21:33,450 --> 00:21:34,280 चेतावनी उपग्रहों. 444 00:21:34,280 --> 00:21:38,550 और वे स्कड आ रहा था कि पता था उनके सामान्य दिशा में. 445 00:21:38,550 --> 00:21:41,000 यह आ रहा था, जहां उन्हें पता नहीं था. 446 00:21:41,000 --> 00:21:43,900 >> स्पीकर 1: यह रडार अप करने के लिए अब था पैट्रियट प्रणाली के घटक 447 00:21:43,900 --> 00:21:48,910 पता लगाने और रखने के लिए धहरान बचाव आने वाली दुश्मन मिसाइल का ट्रैक. 448 00:21:48,910 --> 00:21:50,580 >> जैक GANSSLE: रडार बहुत होशियार था. 449 00:21:50,580 --> 00:21:53,770 यह वास्तव में स्थिति पर नज़र होगी तब मूसलधार बारिश और भविष्यवाणी जहां यह 450 00:21:53,770 --> 00:21:57,160 शायद अगली बार होगा रडार बाहर एक नाड़ी भेजा. 451 00:21:57,160 --> 00:21:58,870 उस श्रृंखला गेट बुलाया गया था. 452 00:21:58,870 --> 00:22:04,020 >> THEODORE POSTOL: तो पैट्रियट एक बार फैसला करता है पर्याप्त समय जाने के लिए पारित किया है 453 00:22:04,020 --> 00:22:09,420 पीठ और के लिए अगले स्थान की जांच इस का पता चला वस्तु, यह वापस चला जाता है. 454 00:22:09,420 --> 00:22:14,450 इसे वापस गलत करने के लिए चला गया तो जब जगह है, यह तो कोई वस्तु को देखता है. 455 00:22:14,450 --> 00:22:18,200 और यह कोई वस्तु नहीं थी कि निर्णय लेता है, यह एक गलत पहचान थी, और 456 00:22:18,200 --> 00:22:19,680 ट्रैक चला जाता है. 457 00:22:19,680 --> 00:22:22,970 >> स्पीकर 1: आने वाले स्कड गायब हो गया राडार स्क्रीन से, और 458 00:22:22,970 --> 00:22:26,050 सेकंड बाद में पटक दिया बैरकों में. 459 00:22:26,050 --> 00:22:31,950 स्कड 28 मारे गए और पिछले एक था पहले खाड़ी युद्ध के दौरान निकाल दिया. 460 00:22:31,950 --> 00:22:37,700 दुर्भाग्य से, अद्यतन सॉफ्टवेयर पहुंचे धहरान पर अगले दिन. 461 00:22:37,700 --> 00:22:41,800 सॉफ्टवेयर दोष तय किया गया था, संकटग्रस्त में एक अध्याय बंद हो रहा 462 00:22:41,800 --> 00:22:43,690 पैट्रियट मिसाइल का इतिहास. 463 00:22:43,690 --> 00:22:46,780 464 00:22:46,780 --> 00:22:50,710 >> पैट्रियट वास्तव में एक परिचित करा रहा है चरणबद्ध सरणी पर नज़र रखने के लिए 465 00:22:50,710 --> 00:22:51,960 लक्ष्य से रोकना. 466 00:22:51,960 --> 00:22:54,650 467 00:22:54,650 --> 00:23:00,840 >> डेविड जे मालन: सब ठीक है, तो एक उदाहरण मर्यादित, सुनिश्चित करना होगा. 468 00:23:00,840 --> 00:23:03,430 और सौभाग्य से, इन निचले स्तर कीड़े हम हूँ कि कुछ नहीं कर रहे हैं 469 00:23:03,430 --> 00:23:06,220 आम तौर पर निश्चित रूप से सराहना करते हैं नहीं हमारे में से कुछ के साथ 470 00:23:06,220 --> 00:23:07,360 कार्यक्रमों की जल्द से जल्द. 471 00:23:07,360 --> 00:23:10,450 बल्कि, कीड़े का सबसे तुम हूँ मुठभेड़, प्रकृति में तार्किक होगा 472 00:23:10,450 --> 00:23:12,900 प्रकृति में वाक्यात्मक जिससे कोड सिर्फ सही काम नहीं करता है. 473 00:23:12,900 --> 00:23:14,140 और तुम बहुत तेजी से यह पता है. 474 00:23:14,140 --> 00:23:16,850 >> लेकिन विशेष रूप से हम करने के लिए मिलता है जब सेमेस्टर के अंत में, यह जा रहा है 475 00:23:16,850 --> 00:23:20,620 करने के लिए अधिक से एक संभावना के और अधिक हो वास्तव में डिजाइन के बारे में मुश्किल लगता है 476 00:23:20,620 --> 00:23:22,960 अपने कार्यक्रमों और अंतर्निहित की प्रतिनिधित्व 477 00:23:22,960 --> 00:23:24,520 वहाँ भी है, डेटा की. 478 00:23:24,520 --> 00:23:28,010 उदाहरण के लिए, हम MySQL मिलवाता हूँ, एक लोकप्रिय डेटाबेस इंजन है जो 479 00:23:28,010 --> 00:23:30,850 आप के लिए वेबसाइटों के साथ उपयोग कर सकते हैं वापस अंत पर डेटा की दुकान. 480 00:23:30,850 --> 00:23:34,630 और आप पर फैसला करने के लिए शुरू होगा सेमेस्टर के अंत न केवल क्या 481 00:23:34,630 --> 00:23:38,790 इन लाइनों का उपयोग करने के साथ डेटा के प्रकार लेकिन वास्तव में कितने बिट का उपयोग करने के लिए, 482 00:23:38,790 --> 00:23:42,740 आप की तिथियाँ संग्रहीत करना चाहते हैं या नहीं, भी दिनांक और समय समय के रूप में, और के रूप में 483 00:23:42,740 --> 00:23:46,890 आप चाहते हैं कि कितना बड़ा तरह बातें उपयोगकर्ताओं को, कहते हैं, के लिए होने के लिए अद्वितीय आईडी 484 00:23:46,890 --> 00:23:47,680 अपने डेटाबेस में. 485 00:23:47,680 --> 00:23:51,210 >> वास्तव में, अगर आप में से कुछ पड़ा है फेसबुक, काफी कुछ समय के लिए खातों 486 00:23:51,210 --> 00:23:53,680 और आप पहुँच पाने के लिए पता अपना यूजर आईडी के लिए - 487 00:23:53,680 --> 00:23:57,930 जिसमें कभी कभी ऊपर से पता चलता है अपने प्रोफाइल का यूआरएल आप एक चुन लिया है, जब तक 488 00:23:57,930 --> 00:24:02,070 आपने उपनाम यूआरएल के लिए, या अगर खेतों में फेसबुक का ग्राफ़ एपीआई, 489 00:24:02,070 --> 00:24:05,510 सार्वजनिक रूप से उपलब्ध एपीआई जिसके द्वारा आप कच्चे डेटा के लिए फेसबुक पूछ सकते हैं - 490 00:24:05,510 --> 00:24:07,580 आप अपने मिटाएँ है क्या देख सकते हैं. 491 00:24:07,580 --> 00:24:10,880 और कुछ साल पहले, फेसबुक अनिवार्य रूप का उपयोग करने से बदलना पड़ा 492 00:24:10,880 --> 00:24:15,980 लंबे समय का उपयोग करने के लिए ints के बराबर लंबे क्योंकि उपयोगकर्ताओं आने के रूप में समय के साथ 493 00:24:15,980 --> 00:24:19,780 और जाने के लिए और बहुत सारे खाते बनाने और नकली खातों, यहां तक ​​कि वे बहुत आसानी 494 00:24:19,780 --> 00:24:24,630 एक 4 की तरह कुछ के निकास के लिए सक्षम थे एक पूर्णांक की तरह अरब संभव मूल्य. 495 00:24:24,630 --> 00:24:28,340 >> मुद्दों के उन प्रकार पर तो अधिक सड़क के नीचे, के रूप में अच्छी तरह से. 496 00:24:28,340 --> 00:24:30,750 ठीक है, तो उस कास्टिंग था. 497 00:24:30,750 --> 00:24:31,670 यही अस्पष्टता था. 498 00:24:31,670 --> 00:24:32,730 त्वरित घोषणाओं के एक जोड़े. 499 00:24:32,730 --> 00:24:35,710 तो वर्गों औपचारिक रूप से इस आने शुरू रविवार, सोमवार, मंगलवार. 500 00:24:35,710 --> 00:24:39,080 आप बाद में इस सप्ताह ईमेल के माध्यम से सुन लेंगे अपने अनुभाग काम करने के रूप में. 501 00:24:39,080 --> 00:24:42,570 और तुम उस बिंदु पर यहां भी कैसे करेंगे अपने अनुभाग बदलने के लिए अगर आपके 502 00:24:42,570 --> 00:24:45,660 अनुसूची अब बदल गया है या आपके आराम के स्तर अब बदल गया है. 503 00:24:45,660 --> 00:24:49,380 इस बीच एक पी सेट और हैकर एक हैं करने के लिए विकल्प के साथ इस गुरुवार कारण 504 00:24:49,380 --> 00:24:52,450 प्रति कि समय सीमा का विस्तार शुक्रवार को विशिष्टताओं 505 00:24:52,450 --> 00:24:53,830 एक ठेठ रास्ते में. 506 00:24:53,830 --> 00:24:57,500 >> कि समस्या के साथ शामिल एहसास सेट विनिर्देशों निर्देश पर हैं 507 00:24:57,500 --> 00:25:02,770 CS50 उपकरण, बनाने, का उपयोग कैसे करें साथ ही कुछ CS50 विशिष्ट उपकरण 508 00:25:02,770 --> 00:25:06,540 आप प्रदान कर सकते हैं जो शैली 50, जैसे पर गतिशील रूप से प्रतिक्रिया के साथ 509 00:25:06,540 --> 00:25:10,230 अपने कोड शैली की गुणवत्ता और भी 50 की जांच, जो आप के साथ प्रदान कर सकते हैं 510 00:25:10,230 --> 00:25:13,160 के रूप में गतिशील प्रतिक्रिया अपने कोड की शुद्धता. 511 00:25:13,160 --> 00:25:16,850 हम अभी भी मौजूद रहे कि माफ कर दो चेक 50 के साथ बाहर कुछ सनक. 512 00:25:16,850 --> 00:25:21,490 शुरू किया था, जो अपने सहपाठियों के कुछ शुक्रवार की रात को 4:00 के आसपास जब 513 00:25:21,490 --> 00:25:25,130 कल्पना तब से देखा है ऊपर चला गया हम काम कर रहे हैं कि कुछ कीड़े 514 00:25:25,130 --> 00:25:29,010 किसी के लिए के माध्यम से, और क्षमा याचना जो अनुचित कुंठा का अनुभव किया है. 515 00:25:29,010 --> 00:25:30,340 गलती मेरी है. 516 00:25:30,340 --> 00:25:34,080 लेकिन हम CS50 पर का पालन करेंगे कि हल हो गई है जब चर्चा की. 517 00:25:34,080 --> 00:25:35,700 >> तो स्कोर के लिए खुद पर एक शब्द भी नहीं. 518 00:25:35,700 --> 00:25:38,990 तो यह आप से पहले एक या दो सप्ताह हो जाएगा समस्या सेट पर प्रतिक्रिया प्राप्त करने के लिए शुरू 519 00:25:38,990 --> 00:25:40,640 आप अभी तक नहीं है क्योंकि एक शिक्षण साथी. 520 00:25:40,640 --> 00:25:44,510 और फिर भी, हम का मूल्यांकन करने के लिए शुरू कर देंगे सी समस्या है, हम पहले सेट 521 00:25:44,510 --> 00:25:46,970 वापस जाने के लिए और इसलिए खरोंच का मूल्यांकन आप और अधिक प्रासंगिक हो कि 522 00:25:46,970 --> 00:25:48,150 प्रतिक्रिया और अधिक तेजी से. 523 00:25:48,150 --> 00:25:51,870 लेकिन पाठ्यक्रम, CS50 प्रति सामान्य रूप में समस्या सेट के साथ मूल्यांकन कर रहे हैं 524 00:25:51,870 --> 00:25:53,580 चार कुल्हाड़ियों निम्न - 525 00:25:53,580 --> 00:25:55,760 गुंजाइश, शुद्धता, डिजाइन, और शैली. 526 00:25:55,760 --> 00:25:59,210 >> स्कोप आम तौर पर एक संख्या होने जा रहा है शून्य और पांच के बीच में है कि 527 00:25:59,210 --> 00:26:01,830 कब्जा से कितना आप बंद सा टुकड़ा है कि. 528 00:26:01,830 --> 00:26:03,750 आमतौर पर, आप यह पांच बनना चाहता हूँ. 529 00:26:03,750 --> 00:26:05,300 आपको कम से कम सब कुछ करने की कोशिश की. 530 00:26:05,300 --> 00:26:09,330 और यह एक multiplicative कारक है नोटिस इतना है कि के ही भाग कर 531 00:26:09,330 --> 00:26:12,520 समस्या सेट सबसे अच्छी रणनीति नहीं है. 532 00:26:12,520 --> 00:26:15,610 >> इस बीच, अधिक स्पष्ट है शुद्धता का महत्व - 533 00:26:15,610 --> 00:26:18,620 बस अपने कार्यक्रम के साथ सही है विनिर्देश के संबंध? 534 00:26:18,620 --> 00:26:21,510 यह जान - बूझकर अधिक भारित है भारी एक से अन्य दो कुल्हाड़ियों से 535 00:26:21,510 --> 00:26:24,450 तीन का कारक है कि हम समझते हैं क्योंकि कि आम तौर पर आप खर्च करने जा रहे हैं एक 536 00:26:24,450 --> 00:26:28,600 बहुत अधिक समय कुछ कीड़े नीचे का पीछा करते हुए, यदि आप काम करने के लिए अपने कोड हो रही है 537 00:26:28,600 --> 00:26:31,540 यह indenting और चयन कर रहे हैं उपयुक्त चर नाम और 538 00:26:31,540 --> 00:26:33,800 जैसे, दूसरे छोर पर जो है शैली के स्पेक्ट्रम की. 539 00:26:33,800 --> 00:26:36,160 >> उस शैली नहीं है कहने के लिए नहीं है महत्वपूर्ण है, और हम इस पर प्रचार करेंगे 540 00:26:36,160 --> 00:26:37,920 व्याख्यान में और वर्गों में दोनों समय. 541 00:26:37,920 --> 00:26:40,520 शैली सौंदर्यशास्त्र को संदर्भित करता है अपने कोड की. 542 00:26:40,520 --> 00:26:43,980 आप अच्छी तरह से नामित चर को चुना है कुछ हद तक कम कर रहे हैं लेकिन यह है कि 543 00:26:43,980 --> 00:26:44,680 वर्णनात्मक? 544 00:26:44,680 --> 00:26:47,840 अपने कोड आप में देखा है के रूप में दांतेदार बना हुआ है व्याख्यान और एक तरीके से संगत 545 00:26:47,840 --> 00:26:49,070 शैली 50 के साथ? 546 00:26:49,070 --> 00:26:51,220 >> अन्त में डिजाइन सही है वहाँ बीच में. 547 00:26:51,220 --> 00:26:54,090 डिजाइन एक डाल करने के लिए कठिन है यह बहुत अधिक है क्योंकि पर उंगली 548 00:26:54,090 --> 00:26:55,000 व्यक्तिपरक. 549 00:26:55,000 --> 00:26:58,610 लेकिन यह शायद का सबसे महत्वपूर्ण है शैक्षणिक के मामले में तीन कुल्हाड़ियों 550 00:26:58,610 --> 00:27:02,050 मूल्य समय के साथ और कहा कि यह हो जाएगा शिक्षण साथी के अवसर के लिए 551 00:27:02,050 --> 00:27:04,110 गुणात्मक राय के साथ प्रदान करते हैं. 552 00:27:04,110 --> 00:27:08,100 दरअसल, CS50 में हम करते हैं, भले ही अंत में इन फार्मूलों और स्कोर, 553 00:27:08,100 --> 00:27:11,350 दिन के ये बहुत जान - बूझकर कर रहे हैं बहुत छोटे बाल्टी - बात मान 554 00:27:11,350 --> 00:27:13,460 शून्य के बीच और तीन और शून्य और पांच. 555 00:27:13,460 --> 00:27:17,800 हम बहुत मोटे लाइन खींचने की कोशिश मत करो समस्या सेट के बीच या बीच में 556 00:27:17,800 --> 00:27:21,490 छात्रों बल्कि जितना ध्यान केंद्रित हम गुणात्मक पर, पूरे अक्षरों में लिखावट कर सकते हैं 557 00:27:21,490 --> 00:27:25,490 से राय, टाइप किए गए या मौखिक या तो अपने विशेष शिक्षण साथी, 558 00:27:25,490 --> 00:27:27,050 आप बहुत अच्छी तरह से जानते हैं. 559 00:27:27,050 --> 00:27:32,340 >> लेकिन सामान्य तौर पर, उन वजन रहे हैं विभिन्न कुल्हाड़ियों होगा. 560 00:27:32,340 --> 00:27:35,480 इस बीच, यह भी में रखने लायक है आपको लगता है कि एक नहीं मान लेना चाहिए कि मन 561 00:27:35,480 --> 00:27:38,870 पांच में से तीन एक 60% है और इसलिए मोटे तौर पर असफल साबित हुई. 562 00:27:38,870 --> 00:27:41,410 तीन जानबूझ होने का मतलब है सड़क अच्छा के बीच की तरह. 563 00:27:41,410 --> 00:27:43,480 आप पर threes हो रही है सत्र की शुरुआत है, कि 564 00:27:43,480 --> 00:27:46,340 वास्तव में एक अच्छा होने का मतलब शुरू करने के लिए जगह है. 565 00:27:46,340 --> 00:27:50,510 आप twos हो रही है, मेलों, वहाँ एक छोटे से भुगतान करने के लिए निश्चित रूप से कुछ काम 566 00:27:50,510 --> 00:27:53,250 अधिक ध्यान, लाभ लेने के लिए वर्गों और कार्यालय समय के. 567 00:27:53,250 --> 00:27:54,590 >> आप चौकों हो रही है और fives, महान. 568 00:27:54,590 --> 00:27:57,430 लेकिन वास्तव में, हम trajectories देखने की उम्मीद छात्रों के बीच - बहुत 569 00:27:57,430 --> 00:28:00,575 प्रति छात्र व्यक्तिगत, लेकिन शुरू कर यहाँ की तरह में सेमेस्टर 570 00:28:00,575 --> 00:28:04,100 तीन श्रृंखला के लिए दो पर समाप्त यहाँ 4-5 रेंज में. 571 00:28:04,100 --> 00:28:05,440 यही कारण है कि हम सच के लिए देख रहे हैं. 572 00:28:05,440 --> 00:28:09,590 और हम मन में डेल्टा रहते हो कि आप सप्ताह शून्य और सप्ताह के बीच प्रदर्शन 573 00:28:09,590 --> 00:28:12,170 12 मैं ग्रेड कर रहा हूँ. 574 00:28:12,170 --> 00:28:16,380 यह हमारे लिए कोई फर्क नहीं पड़ता बिल्कुल कैसे आप शुरुआत में निष्पक्ष अगर आपके 575 00:28:16,380 --> 00:28:19,330 प्रक्षेपवक्र वास्तव में है ऊपर की ओर और मजबूत. 576 00:28:19,330 --> 00:28:24,000 >> शैक्षणिक ईमानदारी - तो मुझ पर डाल देना मेरे बस एक पल के लिए और अधिक गंभीर आवाज. 577 00:28:24,000 --> 00:28:28,510 इसलिए इस कोर्स के अंतर की है किसी भी अन्य की तुलना में अधिक छात्रों भेजने 578 00:28:28,510 --> 00:28:30,950 विज्ञापन बोर्ड को इतिहास में, मुझे विश्वास है. 579 00:28:30,950 --> 00:28:34,220 हम की तरह इस पर गिनती खो दिया है कितनी बार ऐसा होता की बात. 580 00:28:34,220 --> 00:28:37,090 और क्योंकि नहीं है कि छात्रों को 50 में किसी भी अधिक बेईमान हैं उनके 581 00:28:37,090 --> 00:28:38,690 कहीं सहपाठियों. 582 00:28:38,690 --> 00:28:42,800 लेकिन हम बहुत अच्छा कर रहे हैं, भी, एहसास इस तरह की बात का पता लगाने में. 583 00:28:42,800 --> 00:28:45,920 >> और कहा कि लाभ है कि एक कंप्यूटर विज्ञान वर्ग कि हम में है 584 00:28:45,920 --> 00:28:49,110 और हम सभी छात्रों की तुलना कर सकते हैं समस्या हर खिलाफ जोड़ी वार सेट 585 00:28:49,110 --> 00:28:51,470 अन्य, इस साल न केवल लेकिन सभी पूर्व के वर्षों. 586 00:28:51,470 --> 00:28:55,080 हम में छात्रों की तरह की क्षमता है, वर्ग, गूगल के लिए और कोड को खोजने के लिए 587 00:28:55,080 --> 00:28:57,440 GitHub और जैसी साइटों पर चर्चा मंचों. 588 00:28:57,440 --> 00:29:00,840 CS50 के लिए पूरी तरह से समाधान कर रहे हैं वहाँ के आसपास चल पी सेट. 589 00:29:00,840 --> 00:29:02,710 लेकिन आप उन्हें पा सकते हैं, हम उन्हें मिल सकता है. 590 00:29:02,710 --> 00:29:07,130 और यह सब बहुत ज्यादा स्वचालित है हमें खोजने के लिए और आसान है और दुख की बात है. 591 00:29:07,130 --> 00:29:10,990 >> लेकिन मैं भी जोर देना चाहते हैं कि पाठ्यक्रम की शैक्षिक ईमानदारी नीति है 592 00:29:10,990 --> 00:29:13,960 बहुत ज्यादा बहुत ज्यादा होने का मतलब उस भावना के विपरीत. 593 00:29:13,960 --> 00:29:17,506 दरअसल, इस साल हम चीजों rephrased किया है यह डॉट होने के लिए पाठ्यक्रम में 594 00:29:17,506 --> 00:29:19,790 अधिक विस्तार के साथ डॉट डॉट, पाठ्यक्रम में. 595 00:29:19,790 --> 00:29:22,860 लेकिन पाठ्यक्रम में व्यापक विषय वास्तव में उचित होना है. 596 00:29:22,860 --> 00:29:26,160 हम एक महत्वपूर्ण समझते हैं कि वहाँ शैक्षणिक की राशि 597 00:29:26,160 --> 00:29:30,550 कुछ हद तक, सहयोग में मूल्य, सहपाठियों के साथ, जिससे आप 598 00:29:30,550 --> 00:29:33,700 दो या तीन या आप अधिक कर रहे हैं एक सफेद बोर्ड पर खड़े 599 00:29:33,700 --> 00:29:35,670 whiteboarding, ऐसा करने के लिए अपने विचारों बात - 600 00:29:35,670 --> 00:29:39,480 तस्वीरों में pseudocode लेखन मारियो क्या किया जाना चाहिए आरेखण अगर 601 00:29:39,480 --> 00:29:41,350 आप पहली बार इसे लिख रहे थे pseudocode में. 602 00:29:41,350 --> 00:29:43,240 क्या लालची एल्गोरिथ्म चाहिए - 603 00:29:43,240 --> 00:29:46,100 कैसे यह प्रति व्यवहार करना चाहिए समस्या एक सेट? 604 00:29:46,100 --> 00:29:50,440 >> और इतना है कि व्यवहार का एहसास हम है प्रोत्साहित करते हैं कि बहुत 605 00:29:50,440 --> 00:29:51,470 उन पंक्तियों के साथ ज्यादा. 606 00:29:51,470 --> 00:29:53,890 और पाठ्यक्रम में, आप एक देखेंगे एक के तहत गोलियों की पूरी गुच्छा 607 00:29:53,890 --> 00:29:57,740 उचित श्रेणी और एक उचित नहीं हमें मदद करने में मदद करता है कि वर्ग 608 00:29:57,740 --> 00:30:00,740 आप जहां आसपास अपने मन लपेटो हम उस लाइन आकर्षित करते हैं. 609 00:30:00,740 --> 00:30:04,340 और सामान्य में, अंगूठे का एक सभ्य नियम है कि आप को हल करने के लिए संघर्ष कर रहे हैं 610 00:30:04,340 --> 00:30:07,990 कुछ बग और अपने दोस्त या सहपाठी आप के बगल में बैठे, यह है 611 00:30:07,990 --> 00:30:11,530 आप उसे या उसे दिखाने के लिए उचित अपने कोड और अरे, आप मदद कर सकते हैं, का कहना है 612 00:30:11,530 --> 00:30:13,700 मुझे गलत यहाँ क्या हो रहा है यह पता लगाने? 613 00:30:13,700 --> 00:30:17,110 >> आम तौर पर हम गले नहीं है विपरीत दिशा. 614 00:30:17,110 --> 00:30:20,730 इसके लिए एक सही जवाब नहीं है आपके दोस्त या कहने के लिए यहां सहपाठी, ओह, 615 00:30:20,730 --> 00:30:22,510 सिर्फ मेरा और चित्रा को देखो उस से यह बाहर. 616 00:30:22,510 --> 00:30:24,400 उस तरह का अनुचित है. 617 00:30:24,400 --> 00:30:27,750 लेकिन किसी और के होने, एक और मस्तिष्क, आंखों की एक और जोड़ी पर देखने के लिए 618 00:30:27,750 --> 00:30:31,620 अपनी स्क्रीन या अपने कोड को देखो और कहते हैं, क्या आप चाहते हैं 619 00:30:31,620 --> 00:30:32,760 यहाँ एक पाश के लिए है? 620 00:30:32,760 --> 00:30:34,800 या आप चाहते हैं यहाँ कि अर्धविराम? 621 00:30:34,800 --> 00:30:37,090 या ओह, यह त्रुटि संदेश यह मतलब है. 622 00:30:37,090 --> 00:30:39,580 उन बहुत उचित है और कर रहे हैं प्रोत्साहित व्यवहार. 623 00:30:39,580 --> 00:30:44,010 >> मैं की ओर इशारा करते था, जो करने के मामलों पहले छात्र रहे हैं जब तक नीचे फोड़ा 624 00:30:44,010 --> 00:30:47,350 देर रात में गरीबों को न्याय कर रही है फैसलों और करने के लिए अपने कोड ईमेल 625 00:30:47,350 --> 00:30:50,130 बाकी या सिर्फ यह कह किसी को, यहां, यह ड्रॉपबॉक्स में है या 626 00:30:50,130 --> 00:30:51,610 रात में देर से Googling. 627 00:30:51,610 --> 00:30:54,880 और इसलिए मैं, प्रोत्साहित करते हैं और आप की भीख माँगती हूँ होगा आप उन अपरिहार्य है तो क्या होगा 628 00:30:54,880 --> 00:30:58,450 तनाव के क्षणों, आप को मार रहे हैं समय सीमा के खिलाफ, आप कोई देर है 629 00:30:58,450 --> 00:31:01,490 यह उस पर पहले से ही शुक्रवार सुबह के बाद से बिंदु, पाठ्यक्रम के सिर ईमेल या 630 00:31:01,490 --> 00:31:02,330 सीधे अपने आप को. 631 00:31:02,330 --> 00:31:04,790 मैं में हूँ, सुनो, कहो मेरी यहां मुद्दा तोड़ने. 632 00:31:04,790 --> 00:31:06,660 चलो एक वार्तालाप करते हैं और यह समझ से बाहर. 633 00:31:06,660 --> 00:31:10,400 वेब का सहारा या कुछ अन्य नहीं उचित व्यवहार कभी नहीं है 634 00:31:10,400 --> 00:31:13,070 समाधान, और अपने से बहुत अधिक सहपाठियों पर यहां नहीं रह रहे हैं 635 00:31:13,070 --> 00:31:15,150 वजह यह है कि गरीबों को न्याय का परिसर. 636 00:31:15,150 --> 00:31:17,840 लेकिन यह है कि लाइन स्कर्ट के लिए बहुत आसान है. 637 00:31:17,840 --> 00:31:22,950 >> और यहाँ खुश करने के लिए एक छोटी सी तस्वीर है आप ऊपर Reddit से इतना है कि अब 638 00:31:22,950 --> 00:31:25,720 सब कुछ ठीक हो जाएगा. 639 00:31:25,720 --> 00:31:30,210 >> तो एक त्वरित पुनर्कथन, तो, जहां से हम से दूर छोड़ दिया. 640 00:31:30,210 --> 00:31:33,690 इसलिए पिछले हफ्ते, हम परिचय कि याद स्थितियां, नहीं खरोंच में 641 00:31:33,690 --> 00:31:34,880 लेकिन इस बार सी में. 642 00:31:34,880 --> 00:31:38,300 और वहाँ कुछ नए वाक्यविन्यास था लेकिन वास्तव में कोई नए विचारों से प्रति. 643 00:31:38,300 --> 00:31:42,630 हम बूलियन अभिव्यक्ति था कि हम कर सकते थे या एक साथ साथ दो खड़ी 644 00:31:42,630 --> 00:31:46,490 सलाखों के या और एक साथ दो से एम्परसेंड्स, कह रही है कि बाएं दोनों 645 00:31:46,490 --> 00:31:49,990 और सही सच होना चाहिए इस पर अमल करने के लिए. 646 00:31:49,990 --> 00:31:53,150 तब हम हम देखा जो स्विच था, संक्षेप में, लेकिन मैं वास्तव में कर रहे हैं का प्रस्ताव 647 00:31:53,150 --> 00:31:56,830 प्राप्त करने के लिए सिर्फ अलग वाक्यविन्यास लक्ष्य का एक ही तरह आप में जानते हैं अगर 648 00:31:56,830 --> 00:31:59,270 अग्रिम क्या आपके मामलों होने जा रहे हैं. 649 00:31:59,270 --> 00:32:00,160 >> हम छोरों को देखा. 650 00:32:00,160 --> 00:32:03,340 एक के लिए लूप, शायद सबसे आम है या कम से कम एक है कि लोग 651 00:32:03,340 --> 00:32:05,330 आम तौर पर सहज तक पहुँचने के लिए. 652 00:32:05,330 --> 00:32:08,240 यह एक छोटे से गुप्त लग रहा है हालांकि, आप इस के बहुत से, कई उदाहरण देखेंगे 653 00:32:08,240 --> 00:32:11,590 लंबे समय से पहले, आप के रूप में पहले से ही देर से पिछले सप्ताह. 654 00:32:11,590 --> 00:32:14,280 छोरों इसी सकता है, जबकि एक ही बात को प्राप्त करने. 655 00:32:14,280 --> 00:32:17,550 लेकिन आप किसी भी incrementation करना चाहते हैं या अद्यतन करने की 656 00:32:17,550 --> 00:32:20,230 चर के मूल्यों, आप के लिए है अधिक से अधिक स्वयं कर 657 00:32:20,230 --> 00:32:22,440 पाश के लिए पहले अनुमति देता है. 658 00:32:22,440 --> 00:32:25,310 और फिर, जबकि पाश, वहाँ हम पर कुछ करने के लिए अनुमति देता है 659 00:32:25,310 --> 00:32:28,460 कम से कम एक बार, जबकि कुछ वरना सच है. 660 00:32:28,460 --> 00:32:31,550 और इस के लिए विशेष रूप से अच्छा है कार्यक्रम या आप चाहते हैं जहां खेल के लिए 661 00:32:31,550 --> 00:32:33,810 कुछ के लिए उपयोगकर्ता संकेत करने के लिए कम से कम एक बार. 662 00:32:33,810 --> 00:32:37,110 और फिर वह या वह सहयोग नहीं करता है, आप यह करना चाहते हो सकता है 663 00:32:37,110 --> 00:32:38,420 बार - बार. 664 00:32:38,420 --> 00:32:41,270 >> चर के साथ, इस बीच, हम लाइनों था इस तरह कोड, की जो कर सकता था 665 00:32:41,270 --> 00:32:41,950 दो लाइनें हो. 666 00:32:41,950 --> 00:32:44,830 आप बुलाया एक पूर्णांक घोषित कर सकता है काउंटर, अर्धविराम. 667 00:32:44,830 --> 00:32:47,660 या आप बस की घोषणा कर सकते हैं इतनी बात करने के लिए, यह परिभाषित करते हैं. 668 00:32:47,660 --> 00:32:49,950 एक ही समय में यह एक मूल्य दे. 669 00:32:49,950 --> 00:32:51,890 >> और फिर अंत में, हम बात कार्यों के बारे में. 670 00:32:51,890 --> 00:32:54,270 और यह एक अच्छा उदाहरण में था यह दिखाता है कि भावना 671 00:32:54,270 --> 00:32:55,840 कार्यों के दो प्रकार के. 672 00:32:55,840 --> 00:32:59,030 एक) (GetString, जो, फिर से, है उपयोगकर्ता से एक स्ट्रिंग हो जाता है. 673 00:32:59,030 --> 00:33:02,040 लेकिन GetString (), की तरह दिलचस्प है अब तक हम यह प्रयोग किया है, के रूप में 674 00:33:02,040 --> 00:33:05,620 हम हमेशा साथ यह प्रयोग किया है क्योंकि एक के बाएं हाथ की ओर कुछ 675 00:33:05,620 --> 00:33:06,600 बराबर का चिह्न. 676 00:33:06,600 --> 00:33:09,830 यही कि GetString कहना है () एक मान देता है. 677 00:33:09,830 --> 00:33:11,970 यह, ज़ाहिर है, एक तार आए. 678 00:33:11,970 --> 00:33:15,130 और फिर बाएं हाथ की ओर, हम कर रहे हैं बस एक के अंदर है कि स्ट्रिंग बचत 679 00:33:15,130 --> 00:33:16,580 चर नाम कहा जाता है. 680 00:33:16,580 --> 00:33:21,100 >> इस से, एक मायने में अलग है, printf printf, कम से कम में है क्योंकि हमारी 681 00:33:21,100 --> 00:33:23,540 यहां के उपयोग, कुछ भी वापस नहीं करता है. 682 00:33:23,540 --> 00:33:24,960 एक अलग रूप में, यह कुछ वापस करता है. 683 00:33:24,960 --> 00:33:26,380 हम सिर्फ यह है क्या परवाह नहीं है. 684 00:33:26,380 --> 00:33:29,090 लेकिन यह क्या करता है एक पक्ष प्रभाव कहा जाता है. 685 00:33:29,090 --> 00:33:31,840 और हर में उस पक्ष प्रभाव क्या है मामले में हम इस प्रकार अब तक देखा है? 686 00:33:31,840 --> 00:33:34,720 Printf क्या करता है? 687 00:33:34,720 --> 00:33:37,780 यह स्क्रीन करने के लिए कुछ मुद्रित करता है पाठ प्रदर्शित करता है या संख्या या कुछ और 688 00:33:37,780 --> 00:33:38,380 स्क्रीन पर. 689 00:33:38,380 --> 00:33:41,170 और ये सिर्फ एक पक्ष प्रभाव माना जाता है यह वास्तव में सौंपने नहीं है क्योंकि 690 00:33:41,170 --> 00:33:41,900 यह मेरे पास वापस. 691 00:33:41,900 --> 00:33:44,770 इसके अंदर एक जवाब नहीं है मैं तो कर सकते हैं कि एक ब्लैक बॉक्स 692 00:33:44,770 --> 00:33:46,130 में पहुँचने के लिए और ले लो. 693 00:33:46,130 --> 00:33:49,160 यह सिर्फ ज्यादा अपने दम पर यह कर रहा है कोल्टन इस में खामियों को दूर किया गया था की तरह 694 00:33:49,160 --> 00:33:52,560 ब्लैक बॉक्स से पिछले हफ्ते, और वह किसी भी तरह जादुई बोर्ड पर ड्राइंग था 695 00:33:52,560 --> 00:33:54,500 मुझे वास्तव में शामिल किए बिना. 696 00:33:54,500 --> 00:33:55,560 यह एक पक्ष प्रभाव होगा. 697 00:33:55,560 --> 00:33:59,100 लेकिन मैं वास्तव में वापस पहुँचना था अगर यहाँ और कहते हैं, ओह, यहाँ स्ट्रिंग है 698 00:33:59,100 --> 00:34:02,040 उपयोगकर्ता से, कि होगा वापसी मान हो. 699 00:34:02,040 --> 00:34:05,650 >> और इस प्रकार अब तक हम केवल कार्यों का उपयोग किया है अन्य लोगों को लिखा है कि. 700 00:34:05,650 --> 00:34:09,219 लेकिन हम वास्तव में इन कर सकते हैं चीजें अपने आप की तरह. 701 00:34:09,219 --> 00:34:12,730 तो मैं में जाने के लिए जा रहा हूँ CS50 उपकरण फिर से. 702 00:34:12,730 --> 00:34:16,020 मुझे लगता है कि हम टैब को बंद करने दें एक पल पहले खुला था. 703 00:34:16,020 --> 00:34:18,530 और मुझे आगे जाना है और दो एक नई फ़ाइल बनाएँ. 704 00:34:18,530 --> 00:34:22,400 और मैं आगे जाने के लिए जा रहा हूँ एक positive.c कहते हैं. 705 00:34:22,400 --> 00:34:24,770 तो मैं के साथ कुछ करना चाहते हैं यहां सकारात्मक संख्या. 706 00:34:24,770 --> 00:34:27,219 तो मैं आगे जाना है और int क्या करने जा रहा हूँ - 707 00:34:27,219 --> 00:34:28,000 क्षमा करें - 708 00:34:28,000 --> 00:34:31,840 # शामिल हैं. 709 00:34:31,840 --> 00:34:34,280 चलो कि एक ही नहीं बना दो. के रूप में पहले गलती. 710 00:34:34,280 --> 00:34:40,020 Int मुख्य (शून्य), खुला घुंघराले गले लगा, घुंघराले ब्रेस बंद हुआ. 711 00:34:40,020 --> 00:34:41,639 >> और अब मैं निम्नलिखित करना चाहते हैं. 712 00:34:41,639 --> 00:34:44,600 मैं एक प्रोग्राम लिखने के लिए चाहते हैं कि उपयोगकर्ता देता है का कहना है कि 713 00:34:44,600 --> 00:34:46,770 मुझे एक सकारात्मक पूर्णांक. 714 00:34:46,770 --> 00:34:50,969 तो कोई GetPositiveInt समारोह है CS50 पुस्तकालय में. 715 00:34:50,969 --> 00:34:52,610 केवल GetInt () नहीं है. 716 00:34:52,610 --> 00:34:55,790 मैं क्योंकि लेकिन यह ठीक है मैं लागू कर सकते हैं जो साथ निर्माणों एक 717 00:34:55,790 --> 00:34:59,360 कि मूल्य पर थोड़ा अधिक बाधा. 718 00:34:59,360 --> 00:35:00,990 मैं इस तरह से कुछ कर सकता है. 719 00:35:00,990 --> 00:35:02,780 >> तो पता INT - 720 00:35:02,780 --> 00:35:04,920 आप के साथ टाइप कर रहे हैं, तो सिर्फ एहसास मैं वापस जाने के लिए जा रहा हूँ 721 00:35:04,920 --> 00:35:06,430 एक पल में कुछ चीजें बदल - 722 00:35:06,430 --> 00:35:09,960 इसलिए int n GetInt () के बराबर होती है. 723 00:35:09,960 --> 00:35:11,780 और उस डाल जा रहा है n के अंदर एक पूर्णांक. 724 00:35:11,780 --> 00:35:13,830 और मुझे एक और वर्णनात्मक हो. 725 00:35:13,830 --> 00:35:23,270 मुझे लगता है कि मांग की तरह मुझे कुछ कहने दो आप मुझे एक सकारात्मक पूर्णांक दे. 726 00:35:23,270 --> 00:35:23,550 >> ठीक है. 727 00:35:23,550 --> 00:35:25,250 इसलिए निर्देश का सिर्फ एक छोटा सा. 728 00:35:25,250 --> 00:35:26,270 और अब मैं क्या कर सकता है? 729 00:35:26,270 --> 00:35:29,840 ठीक है, मैं पहले से ही मेरे साधारण से पता स्थितियां या शाखाओं, बस जैसे मैं 730 00:35:29,840 --> 00:35:36,100 स्क्रैच में था, मैं कुछ कह सकता जैसे अगर n से कम या बराबर है 731 00:35:36,100 --> 00:35:44,460 शून्य, तो मैं कुछ करना चाहते हैं जैसे, कि सकारात्मक नहीं है. 732 00:35:44,460 --> 00:35:45,560 और फिर मैं कर सकता है - 733 00:35:45,560 --> 00:35:47,310 ठीक है, लेकिन मैं वास्तव में उस INT प्राप्त करना चाहते हैं. 734 00:35:47,310 --> 00:35:52,020 इसलिए मैं यहां तक ​​जा सकता है और मैं एक तरह से कर सकता है की यह प्रति और इस इंडेंट. 735 00:35:52,020 --> 00:35:52,570 और फिर, ठीक है. 736 00:35:52,570 --> 00:35:56,990 तो पता कम से कम या अगर शून्य के बराबर ऐसा करते हैं. 737 00:35:56,990 --> 00:35:58,900 >> अब, क्या हुआ अगर उपयोगकर्ता सहयोग नहीं करता है? 738 00:35:58,900 --> 00:36:01,560 ठीक है, तो मैं करने जा रहा हूँ यहाँ इस उधार ले. 739 00:36:01,560 --> 00:36:03,130 और फिर मैं यहाँ में जाने और यहाँ और यहाँ. 740 00:36:03,130 --> 00:36:06,420 तो यह स्पष्ट रूप से नहीं है समाधान, सही? 741 00:36:06,420 --> 00:36:07,810 दृष्टि में कोई अंत नहीं है क्योंकि. 742 00:36:07,810 --> 00:36:13,100 मैं उपयोगकर्ता देता है कि मांग करने के लिए चाहते हैं मुझे एक सकारात्मक पूर्णांक, मैं कर सकता हूँ 743 00:36:13,100 --> 00:36:14,150 वास्तव INT मिलता है. 744 00:36:14,150 --> 00:36:15,620 मैं तो उस int के लिए जाँच कर सकते हैं. 745 00:36:15,620 --> 00:36:18,570 लेकिन तब मैं इसे फिर से जाँच करना चाहते हैं और इसे फिर से जाँच करें और इसे फिर से जाँच करें. 746 00:36:18,570 --> 00:36:21,680 तो जाहिर है, क्या बेहतर है यहां का उपयोग कर सकता का निर्माण? 747 00:36:21,680 --> 00:36:22,840 सब ठीक है, पाश की ताकि किसी तरह. 748 00:36:22,840 --> 00:36:25,430 >> इसलिए मैं छुटकारा पाने के लिए जा रहा हूँ की लगभग सभी इस की. 749 00:36:25,430 --> 00:36:27,320 और मैं इस प्राप्त करना चाहते हैं कम से कम एक बार int. 750 00:36:27,320 --> 00:36:28,890 तो मैं क्या कहने जा रहा हूँ - 751 00:36:28,890 --> 00:36:32,110 और मैं वापस आ गया हूँ बस एक पल में, जबकि - 752 00:36:32,110 --> 00:36:33,050 अब, क्या करना है? 753 00:36:33,050 --> 00:36:35,860 मैं int n क्या करने जा रहा हूँ GetInt हो जाता है (). 754 00:36:35,860 --> 00:36:36,080 ठीक है. 755 00:36:36,080 --> 00:36:37,250 तो वो काफ़ी अच्छा है. 756 00:36:37,250 --> 00:36:39,750 और अब अक्सर ऐसा कैसे मैं ऐसा करना चाहते हैं? 757 00:36:39,750 --> 00:36:45,770 >> मुझे लूप के अंदर printf डाल दो. इसलिए मैं बार - बार मांग कर सकते हैं, 758 00:36:45,770 --> 00:36:46,740 अगर जरूरत हो. 759 00:36:46,740 --> 00:36:49,720 और क्या मैं यह चाहते हैं हालत क्या करना है, जबकि? 760 00:36:49,720 --> 00:36:53,870 मैं यह कर रखना चाहते हैं मामला क्या है, जबकि? 761 00:36:53,870 --> 00:36:54,125 हाँ. 762 00:36:54,125 --> 00:36:55,390 एन से कम या शून्य के बराबर है. 763 00:36:55,390 --> 00:36:58,180 तो पहले से ही, हम काफी है इस कोड को साफ कर दिया. 764 00:36:58,180 --> 00:37:00,700 हम एक बहुत ही सरल तो उधार लिया है - मत का समय पाश. 765 00:37:00,700 --> 00:37:04,690 मैं सिर्फ महत्वपूर्ण लाइनों चुरा लिया है मैं नकल शुरू कर दिया और कहा कि कोड की 766 00:37:04,690 --> 00:37:05,960 बुद्धिमान नहीं था जो चिपकाने,. 767 00:37:05,960 --> 00:37:09,790 और इसलिए अब मैं वास्तव में पेस्ट करने के लिए जा रहा हूँ यह यहाँ और बस में एक बार करना. 768 00:37:09,790 --> 00:37:12,990 >> और अब मैं क्या क्या करना चाहते हैं इस कार्यक्रम के अंत? 769 00:37:12,990 --> 00:37:16,810 मैं सिर्फ कह देंगे कुछ सरल जैसे, के लिए धन्यवाद - और 770 00:37:16,810 --> 00:37:18,980 मैं int के लिए% मैं करता हूँ - 771 00:37:18,980 --> 00:37:23,270 फिर बैकस्लैश एन, अल्पविराम, और एन, अर्धविराम में प्लग. 772 00:37:23,270 --> 00:37:23,910 >> ठीक है. 773 00:37:23,910 --> 00:37:27,290 तो चलिए अब देखते हैं क्या होता मैं इस कार्यक्रम चला रहे हैं. 774 00:37:27,290 --> 00:37:30,600 मैं आगे जाने के लिए जा रहा हूँ सकारात्मक बना कर. 775 00:37:30,600 --> 00:37:30,880 धिक्कार है. 776 00:37:30,880 --> 00:37:31,600 कुछ त्रुटियाँ. 777 00:37:31,600 --> 00:37:32,960 तो मुझे पहले अप करने के लिए वापस स्क्रॉल करते हैं. 778 00:37:32,960 --> 00:37:34,020 पीछे की ओर के माध्यम से उन्हें काम नहीं करते. 779 00:37:34,020 --> 00:37:37,000 ऊपर से नीचे के माध्यम से उन्हें काम वे झरना और केवल ऐसा न हो 780 00:37:37,000 --> 00:37:38,630 एक बात गलत हो. 781 00:37:38,630 --> 00:37:42,532 के निहित घोषणा GetInt समारोह (). 782 00:37:42,532 --> 00:37:43,020 हाँ. 783 00:37:43,020 --> 00:37:44,420 तो यह पर्याप्त नहीं था. 784 00:37:44,420 --> 00:37:46,760 मैं एक तरह से एक ही गलती की है लेकिन एक छोटे से अलग इस बार. 785 00:37:46,760 --> 00:37:51,940 मैं stdio.h शामिल करने के लिए न केवल जरूरत है, लेकिन भी शामिल है, जो cs50.h 786 00:37:51,940 --> 00:37:56,770 मिल int के तथाकथित घोषणाओं, जो उपकरण सिखाने, या सिखाता 787 00:37:56,770 --> 00:37:58,760 सी () क्या GetInt है. 788 00:37:58,760 --> 00:37:59,550 >> तो मुझे resave करते हैं. 789 00:37:59,550 --> 00:38:02,040 मैं अन्य त्रुटियों को अनदेखा करने के लिए जा रहा हूँ मुझे लगता है वे कर रहे हैं आशा है कि करने के लिए जा रहा हूँ क्योंकि 790 00:38:02,040 --> 00:38:05,210 किसी भी तरह त्रुटि से संबंधित मैं पहले से ही तय हो गई. 791 00:38:05,210 --> 00:38:08,710 तो मुझे आगे जाना है और फिर कंपाइल जाने सकारात्मक बनाने के साथ दर्ज करें. 792 00:38:08,710 --> 00:38:09,020 धिक्कार है. 793 00:38:09,020 --> 00:38:09,985 तीन त्रुटियों, अभी. 794 00:38:09,985 --> 00:38:12,650 मुझे पहले अप करने के लिए स्क्रॉल. 795 00:38:12,650 --> 00:38:14,320 अप्रयुक्त चर एन. 796 00:38:14,320 --> 00:38:15,850 हम इस से पहले नहीं देखा है. 797 00:38:15,850 --> 00:38:17,200 और यह भी, एक छोटे से गुप्त है. 798 00:38:17,200 --> 00:38:18,850 इस संकलक का उत्पादन होता है. 799 00:38:18,850 --> 00:38:23,610 और उस पंक्ति पर प्रकाश डाला क्या वहाँ - positive.c :9:13 - 800 00:38:23,610 --> 00:38:28,960 यह की लाइन में नौ पर कह रहा है, कह रहा है positive.c, 13 चरित्र पर, 801 00:38:28,960 --> 00:38:31,510 13 कॉलम, आप इस गलती की. 802 00:38:31,510 --> 00:38:34,230 >> और विशेष रूप से, यह कह रही है मुझे अप्रयुक्त चर एन. 803 00:38:34,230 --> 00:38:35,790 तो चलो देखते हैं - 804 00:38:35,790 --> 00:38:37,150 रेखा नौ. 805 00:38:37,150 --> 00:38:40,430 मैं समझ में एन का उपयोग कर रहा हूँ कि मैं इसे एक मूल्य दे रहा हूँ. 806 00:38:40,430 --> 00:38:44,200 लेकिन क्या संकलक पसंद नहीं करता है मुझे लगने इसे प्रयोग नहीं कर रहा हूँ कि. 807 00:38:44,200 --> 00:38:45,560 लेकिन मैं इसे उपयोग कर रहा हूँ, एक मिनट रुको. 808 00:38:45,560 --> 00:38:48,170 11 लाइन में, मैं यहाँ यह उपयोग कर रहा हूँ. 809 00:38:48,170 --> 00:38:52,430 लेकिन मैं आगे नीचे स्क्रॉल अगर positive.c पर :11 - 810 00:38:52,430 --> 00:38:56,230 इसलिए 11 लाइन, चरित्र 12, पर संकलक, मुझे बता उपयोग की 811 00:38:56,230 --> 00:38:58,670 अघोषित पहचानकर्ता एन. 812 00:38:58,670 --> 00:39:02,760 >> मेरे पास तो अघोषित साधन एक के रूप में यह निर्दिष्ट नहीं 813 00:39:02,760 --> 00:39:04,970 एक डेटा प्रकार के साथ चर. 814 00:39:04,970 --> 00:39:05,500 लेकिन एक मिनट रुको. 815 00:39:05,500 --> 00:39:09,150 मैं वास्तव में उस रेखा नौ में किया था. 816 00:39:09,150 --> 00:39:11,100 तो अगर कोई वास्तव में यहाँ उलझन में है. 817 00:39:11,100 --> 00:39:14,900 यह मेरे या संकलक या तो है क्योंकि रेखा नौ में, फिर से, मैं एक घोषणा कर रहा हूँ 818 00:39:14,900 --> 00:39:18,650 n int, और मैं यह निर्दिष्ट कर रहा हूँ GetInt की मान (). 819 00:39:18,650 --> 00:39:22,930 तब मैं लाइन में है कि चर n का उपयोग कर रहा हूँ 11 और इसकी कीमत भी कम है अगर जाँच 820 00:39:22,930 --> 00:39:24,050 से अधिक या शून्य के बराबर. 821 00:39:24,050 --> 00:39:27,430 लेकिन यह जाहिरा तौर पर है बुरा और क्यों टूटा? 822 00:39:27,430 --> 00:39:30,630 823 00:39:30,630 --> 00:39:32,490 फिर यह कहते हैं? 824 00:39:32,490 --> 00:39:35,690 >> आह, मैं पहले पता घोषित करने के लिए है पाश में प्रवेश. 825 00:39:35,690 --> 00:39:36,370 लेकिन क्यों? 826 00:39:36,370 --> 00:39:39,830 मेरा मतलब है, हम बस थोड़ा पहले प्रस्तावित है कि यह चर घोषित करने के लिए ठीक है 827 00:39:39,830 --> 00:39:43,600 फिर एक पंक्ति पर सभी और उन्हें कुछ मान असाइन. 828 00:39:43,600 --> 00:39:46,790 एक वैश्विक चर - चलो वापस आने दीजिए बस एक पल में उस विचार करने के लिए. 829 00:39:46,790 --> 00:39:48,690 तुम मुझे क्यों डाल करना चाहते हैं पाश के बाहर यह? 830 00:39:48,690 --> 00:40:03,170 831 00:40:03,170 --> 00:40:03,830 यह है. 832 00:40:03,830 --> 00:40:06,780 बिल्कुल सही. 833 00:40:06,780 --> 00:40:09,610 >> तो, कुछ हद तक counterintuitive, यद्यपि मुझे संक्षेप में प्रस्तुत करते हैं. 834 00:40:09,610 --> 00:40:13,510 आप अंदर n घोषित वहाँ क्या ब्लॉक की - 835 00:40:13,510 --> 00:40:16,320 विशेष रूप से अंदर उन घुंघराले ब्रेसिज़ - 836 00:40:16,320 --> 00:40:19,210 चर पता है क्या है कि एक दायरे कहा जाता है - 837 00:40:19,210 --> 00:40:23,210 में हमारे स्कोरिंग प्रणाली से संबंधित नहीं कोर्स - लेकिन है कि एक गुंजाइश है 838 00:40:23,210 --> 00:40:25,190 उन घुंघराले ब्रेसिज़ के लिए सीमित. 839 00:40:25,190 --> 00:40:28,460 दूसरे शब्दों में, आम तौर पर आप की घोषणा का एक सेट के अंदर एक चर 840 00:40:28,460 --> 00:40:33,370 घुंघराले ब्रेसिज़, कि चर केवल मौजूद है उन घुंघराले ब्रेसिज़ के अंदर. 841 00:40:33,370 --> 00:40:37,320 भले ही, अकेले कि तर्क से तो मैं यह लाइन नौ में एन घोषित कर दिया है 842 00:40:37,320 --> 00:40:41,910 अनिवार्य रूप दायरे से गायब हो जाता है, इतनी बात करने के लिए, स्मृति से गायब हो जाता है, 843 00:40:41,910 --> 00:40:43,370 समय से मैं 11 लाइन मारा. 844 00:40:43,370 --> 00:40:47,370 लाइन 11, दुर्भाग्य से, क्योंकि उन घुंघराले ब्रेसिज़ के बाहर. 845 00:40:47,370 --> 00:40:51,540 >> तो मैं दुर्भाग्य से यह नहीं तय कर सकते हैं मैं यह पहले किया था क्या करने के लिए वापस जा रहा. 846 00:40:51,540 --> 00:40:53,370 आप पहली बार में यह कर सकता है. 847 00:40:53,370 --> 00:40:56,370 लेकिन अब आप क्या नहीं कर रहे हैं cyclically कर रही है? 848 00:40:56,370 --> 00:40:58,260 आप स्पष्ट रूप से नहीं मिल रहे हैं cyclically int. 849 00:40:58,260 --> 00:41:01,320 इसलिए हम) (GetInt छोड़ देते हैं, और हम कर सकते हैं अंदर GetInt () छोड़ देना चाहिए 850 00:41:01,320 --> 00:41:04,420 कि हम चाहते हैं पाश क्योंकि बार बार के लिए उपयोगकर्ता परेशान. 851 00:41:04,420 --> 00:41:08,660 लेकिन यह जाने के लिए पर्याप्त है लाइन अप करने के लिए, छह कहना. 852 00:41:08,660 --> 00:41:10,150 Int n, अर्धविराम. 853 00:41:10,150 --> 00:41:12,990 अभी तक यह एक मूल्य देना नहीं है क्योंकि आप बस अभी तक की जरूरत नहीं है. 854 00:41:12,990 --> 00:41:16,220 >> लेकिन अब यहाँ नीचे, सूचना - इस एक बहुत ही आसान गलती होगी. 855 00:41:16,220 --> 00:41:19,440 मैं अपने पिछले छाया नहीं करना चाहती n की घोषणा. 856 00:41:19,440 --> 00:41:22,830 मैं n उपयोग करना चाहते हैं वास्तव में मौजूद है. 857 00:41:22,830 --> 00:41:25,780 और इसलिए अब 10 लाइन में, मैं n एक मूल्य प्रदान. 858 00:41:25,780 --> 00:41:28,580 लेकिन लाइन छह में, मैं n घोषणा. 859 00:41:28,580 --> 00:41:32,940 और तो कर सकते हैं मैं या मैं नहीं कर सकता अब 12 लाइन में इसका इस्तेमाल करते हैं? 860 00:41:32,940 --> 00:41:37,120 मैं कर सकता हूँ क्योंकि जो घुंघराले के बीच ब्रेसिज़ n अब घोषित किया जाता है? 861 00:41:37,120 --> 00:41:38,770 यहाँ लाइन पांच पर एक. 862 00:41:38,770 --> 00:41:40,330 यहाँ लाइन 14 पर एक करने के लिए. 863 00:41:40,330 --> 00:41:49,770 मैं अब बाहर ज़ूम यदि हां, तो जाना, इस फाइल को बचाने पीठ में और रन सकारात्मक, इसे बनाने 864 00:41:49,770 --> 00:41:50,820 इस समय तैयार की. 865 00:41:50,820 --> 00:41:51,940 तो यह है कि पहले से ही प्रगति है. 866 00:41:51,940 --> 00:41:53,640 स्लैश. . / सकारात्मक, लिखें. 867 00:41:53,640 --> 00:41:56,060 >> मैं तुम मुझे दे कि मांग एक सकारात्मक पूर्णांक. 868 00:41:56,060 --> 00:41:57,750 नकारात्मक 1. 869 00:41:57,750 --> 00:41:59,020 नकारात्मक 2. 870 00:41:59,020 --> 00:42:00,680 नकारात्मक 3. 871 00:42:00,680 --> 00:42:01,760 शून्य. 872 00:42:01,760 --> 00:42:03,000 एक. 873 00:42:03,000 --> 00:42:05,130 और एक के लिए धन्यवाद है अब छपा है क्या. 874 00:42:05,130 --> 00:42:07,400 >> मुझे कुछ और कोशिश करते हैं, जिज्ञासा से बाहर. 875 00:42:07,400 --> 00:42:09,600 मैं इनपुट करने के लिए एक पूर्णांक बताया जा रहा हूँ. 876 00:42:09,600 --> 00:42:12,870 लेकिन मैं बजाय मेमने में क्या लिखते हैं? 877 00:42:12,870 --> 00:42:14,460 तो आप अब एक अलग शीघ्र देख - 878 00:42:14,460 --> 00:42:15,350 पुनः प्रयास करें. 879 00:42:15,350 --> 00:42:17,670 लेकिन कहीं मेरे कोड में मैं फिर से प्रयास करें लिख किया था. 880 00:42:17,670 --> 00:42:22,320 तो कहाँ, मुमकिन है, यह फिर से प्रयास करें है से आने का संकेत है, तो आप कहेंगे? 881 00:42:22,320 --> 00:42:23,540 हाँ, GetInt से (ही). 882 00:42:23,540 --> 00:42:26,650 तो चीजें CS50 के स्टाफ में से एक करता है आप के लिए, कम से कम इन पहले कुछ में 883 00:42:26,650 --> 00:42:30,400 सप्ताह, हम कुछ राशि लिखा है है त्रुटि के लिए सुनिश्चित करने के लिए जाँच कि अगर 884 00:42:30,400 --> 00:42:34,260 आप) (GetInt कॉल, आप कम से कम होगा उपयोगकर्ता से एक पूर्णांक वापस मिलता है. 885 00:42:34,260 --> 00:42:35,460 आप एक स्ट्रिंग नहीं मिलेगा. 886 00:42:35,460 --> 00:42:36,440 आप एक चार नहीं मिलेगा. 887 00:42:36,440 --> 00:42:39,660 आप कुछ नहीं मिलेगा कुल मिलाकर कुछ और. 888 00:42:39,660 --> 00:42:40,510 आप एक पूर्णांक मिलेगा. 889 00:42:40,510 --> 00:42:41,890 >> अब, यह सकारात्मक नहीं हो सकता है. 890 00:42:41,890 --> 00:42:42,770 यह नकारात्मक नहीं हो सकता है. 891 00:42:42,770 --> 00:42:44,550 हम चाहते हैं कि आसपास कोई गारंटी. 892 00:42:44,550 --> 00:42:48,960 लेकिन हम पुन: प्रयास करने के लिए उपयोगकर्ता परेशान करेगा, फिर से प्रयास करें, जब तक कि वह या वह वास्तव में पुन: प्रयास 893 00:42:48,960 --> 00:42:49,810 सहयोग. 894 00:42:49,810 --> 00:42:53,085 इसी तरह, मैं 1.23 करते हैं, कि एक पूर्णांक नहीं है. 895 00:42:53,085 --> 00:42:58,400 लेकिन मुझे लगता है, कहते हैं, 50 में टाइप करते हैं मुझे मैं चाहता था कि कोई मान देता है. 896 00:42:58,400 --> 00:42:59,050 >> ठीक है. 897 00:42:59,050 --> 00:43:01,380 इतना बुरा नहीं. 898 00:43:01,380 --> 00:43:04,780 हम अभी क्या किया है पर कोई सवाल? 899 00:43:04,780 --> 00:43:07,930 कुंजी takeaway जा रहा है, स्पष्ट नहीं होने के लिए हमने देखा है जो इतना पाश, 900 00:43:07,930 --> 00:43:10,880 इससे पहले कि हम वास्तव में नहीं है, भले ही यह प्रयोग किया जाता है, लेकिन गुंजाइश का मुद्दा, जहां 901 00:43:10,880 --> 00:43:17,045 चर केवल केवल इस्तेमाल किया जा सकता है हो सकता है कुछ निर्दिष्ट दायरे के भीतर. 902 00:43:17,045 --> 00:43:19,830 >> सब ठीक है, मुझे सुझाव को संबोधित करते हैं आप एक के पहले, कि बनाया 903 00:43:19,830 --> 00:43:20,860 वैश्विक चर. 904 00:43:20,860 --> 00:43:24,880 एक अलग रूप में, यह पता चला है कि एक और इस समस्या का हल है, लेकिन 905 00:43:24,880 --> 00:43:28,880 आम तौर पर एक गलत समाधान या एक खराब डिजाइन समाधान करने के लिए है 906 00:43:28,880 --> 00:43:31,670 क्या अपने चर घोषित एक वैश्विक चर बुलाया. 907 00:43:31,670 --> 00:43:34,610 अब मैं एक तरह से मेरी परिभाषा का उल्लंघन कर रहा हूँ वहाँ गुंजाइश की वजह 908 00:43:34,610 --> 00:43:37,680 ऊपर से ही कोई घुंघराले ब्रेसिज़ और एक फ़ाइल के बहुत नीचे. 909 00:43:37,680 --> 00:43:40,190 लेकिन उस के निहितार्थ कि, रेखा चार में अब है 910 00:43:40,190 --> 00:43:41,710 N एक वैश्विक चर रहा है. 911 00:43:41,710 --> 00:43:44,460 जैसा कि नाम और, यह है हर जगह सिर्फ सुलभ. 912 00:43:44,460 --> 00:43:45,790 >> स्क्रैच वास्तव में इन है. 913 00:43:45,790 --> 00:43:48,650 आप एक चर का उपयोग किया है, तो आपको याद हो सकता है आप इसके लिए अगर चुनाव करना था 914 00:43:48,650 --> 00:43:50,780 इस प्रेत या सभी sprites के लिए. 915 00:43:50,780 --> 00:43:54,270 खैर, यह सब sprites सिर्फ साफ है वैश्विक कहने का तरीका है. 916 00:43:54,270 --> 00:43:55,520 हाँ? 917 00:43:55,520 --> 00:44:09,690 918 00:44:09,690 --> 00:44:10,990 आह, वास्तव में अच्छा सवाल है. 919 00:44:10,990 --> 00:44:14,310 >> तो बहुत पहले संस्करण में याद है कि मेरे कोड का, जब मैं गलत 920 00:44:14,310 --> 00:44:17,700 रेखा नौ में घोषित और परिभाषित एन - 921 00:44:17,700 --> 00:44:19,980 मैं एक चर के रूप में घोषित साथ और मैं इसे एक मूल्य दिया 922 00:44:19,980 --> 00:44:21,160 असाइनमेंट ऑपरेटर - 923 00:44:21,160 --> 00:44:22,520 यह मेरे दो त्रुटियों दे दी है. 924 00:44:22,520 --> 00:44:26,560 वन, एन इस्तेमाल नहीं किया गया था तथ्य यह है कि, और दो, कि लाइन 11 में 925 00:44:26,560 --> 00:44:27,770 यह सिर्फ घोषित नहीं किया गया था. 926 00:44:27,770 --> 00:44:31,120 मैं नहीं था तो पहले एक समय पर पता. 927 00:44:31,120 --> 00:44:35,130 इसे कड़ाई से घोषित करने में कोई त्रुटि नहीं है इसका इस्तेमाल एक चर लेकिन नहीं. 928 00:44:35,130 --> 00:44:38,540 लेकिन हम में किया है चीजों में से एक CS50 उपकरण, जान - बूझकर, 929 00:44:38,540 --> 00:44:43,340 Pedagogically, हम ऊपर cranked कर लिया है बनाने के लिए संकलक की उम्मीदों 930 00:44:43,340 --> 00:44:46,970 आप बातें कर रहे हैं कि यकीन नहीं बस सही ढंग से, लेकिन वास्तव में सही ढंग से. 931 00:44:46,970 --> 00:44:51,520 >> क्योंकि आप एक चर की घोषणा कर रहे हैं जैसे एन और यह कभी नहीं का उपयोग कर, या इसे का उपयोग 932 00:44:51,520 --> 00:44:53,700 सही ढंग से, तो क्या यह वहाँ क्या कर रही है? 933 00:44:53,700 --> 00:44:55,650 यह वास्तव में कोई उद्देश्य में कार्य करता है. 934 00:44:55,650 --> 00:44:58,980 आप और अगर यह समय के साथ बहुत आसान है में अपनी खुद की कंप्यूटर कॉन्फ़िगर नहीं है 935 00:44:58,980 --> 00:45:01,960 इस तरह, सिर्फ है कि कोड के लिए थोड़ा यहाँ अवशेष, वहाँ अवशेष. 936 00:45:01,960 --> 00:45:04,390 और फिर महीने बाद आप वापस देखो और तुम क्यों इस लाइन का है, पसंद कर रहे हैं 937 00:45:04,390 --> 00:45:05,060 वहाँ कोड? 938 00:45:05,060 --> 00:45:07,940 और कोई अच्छा कारण यह है कि अगर वहाँ आप या अपने सहकर्मियों को लाभ नहीं है 939 00:45:07,940 --> 00:45:10,650 करने के लिए है सड़क के नीचे तो इस पर ठोकर. 940 00:45:10,650 --> 00:45:12,540 >> एक अलग रूप में, जहां है उस से आ रहा है? 941 00:45:12,540 --> 00:45:16,410 खैर, याद है कि हम संकलन हर समय कार्यक्रम, यह सब के सब है 942 00:45:16,410 --> 00:45:17,380 मुद्रित किया जा रहा है. 943 00:45:17,380 --> 00:45:18,350 इसलिए हम वापस इस के लिए आया हूँ. 944 00:45:18,350 --> 00:45:22,230 लेकिन फिर, एक उपयोगिता है कि कर द्वारा संकलन की प्रक्रिया को स्वचालित 945 00:45:22,230 --> 00:45:24,830 वास्तविक संकलक चल बजना कहा जाता है. 946 00:45:24,830 --> 00:45:27,650 यह बात है, हम अंत में देखता हूँ, है एक विशेष के साथ डिबगिंग के साथ क्या करना 947 00:45:27,650 --> 00:45:29,060 कार्यक्रम डिबगर कहा जाता है. 948 00:45:29,060 --> 00:45:32,150 इस अनुकूलन के साथ क्या करना है कोड - अधिक भविष्य में उस पर. 949 00:45:32,150 --> 00:45:33,620 एसटीडी = C99 - 950 00:45:33,620 --> 00:45:37,870 यह सिर्फ 1999 संस्करण के उपयोग का मतलब सी. सी भी अब से आसपास किया गया है 951 00:45:37,870 --> 00:45:40,830 यही नहीं, लेकिन वे कुछ अच्छा बनाया 10 से अधिक साल पहले बदल जाता है. 952 00:45:40,830 --> 00:45:42,690 >> और यहाँ प्रासंगिक वाले है. 953 00:45:42,690 --> 00:45:45,880 हम कुछ भी कर कह रहे हैं कि पहले एक चेतावनी हो गया होता 954 00:45:45,880 --> 00:45:48,560 छात्र को रोकने में कोई त्रुटि संकलन से. 955 00:45:48,560 --> 00:45:51,400 और दीवार का मतलब है एक के लिए ऐसा कर बातें नहीं, की पूरी गुच्छा 956 00:45:51,400 --> 00:45:53,060 बस चर से संबंधित. 957 00:45:53,060 --> 00:45:54,700 और फिर मेरे लिए स्क्रॉल इस पंक्ति के अंत. 958 00:45:54,700 --> 00:45:56,430 और यह भी, हम अंततः हूँ वापस करने के लिए आते हैं. 959 00:45:56,430 --> 00:45:59,040 जाहिर है, इस का नाम है मैं संकलन हूँ फ़ाइल. 960 00:45:59,040 --> 00:46:02,160 इस फ़ाइल का नाम याद करते हैं मैं नाम के रूप में outputting हूँ 961 00:46:02,160 --> 00:46:04,070 मेरे runnable कार्यक्रम का. 962 00:46:04,070 --> 00:46:08,970 इस lcs50 सिर्फ CS50 उपयोग का मतलब पुस्तकालय, और किसी भी शून्य और लोगों कि 963 00:46:08,970 --> 00:46:12,390 कर्मचारियों ने लिखा है और पहले संकलित इस साल, एकीकृत 964 00:46:12,390 --> 00:46:13,490 मेरे कार्यक्रम में उन्हें. 965 00:46:13,490 --> 00:46:16,130 >> और किसी को भी-एल एम क्या है? 966 00:46:16,130 --> 00:46:18,150 यह है, जो गणित पुस्तकालय है बस वहाँ आप कर रहे हैं, भले ही 967 00:46:18,150 --> 00:46:19,320 किसी भी गणित नहीं कर रही है. 968 00:46:19,320 --> 00:46:22,620 यह सिर्फ स्वतः प्रदान की है बनाने के द्वारा हमें. 969 00:46:22,620 --> 00:46:26,540 >> खैर, मुझे एक अन्य उदाहरण करते हैं यहां एक नई फ़ाइल खोलने से. 970 00:46:26,540 --> 00:46:30,560 और मुझे string.c रूप में यह एक बचा. 971 00:46:30,560 --> 00:46:37,980 यह पता चला है कि हम डेटा के बारे में बात के रूप में प्रकार आज भी वहाँ और भी है 972 00:46:37,980 --> 00:46:40,630 हुड के नीचे चल रहा हम इस प्रकार अब तक देखा है की तुलना में. 973 00:46:40,630 --> 00:46:42,290 तो मुझे जल्दी से एक त्वरित कार्यक्रम करते हैं. 974 00:46:42,290 --> 00:46:44,510 Stdio.h शामिल करें. 975 00:46:44,510 --> 00:46:45,730 और मुझे लगता है कि बचा लेंगे. 976 00:46:45,730 --> 00:46:48,110 और तुम जानते हो, मुझे मत देना एक ही गलती बार - बार. 977 00:46:48,110 --> 00:46:50,540 Cs50.h. शामिल करें 978 00:46:50,540 --> 00:46:54,870 और मैं अब आगे चलते हैं और int मुख्य (शून्य) से करते हैं. 979 00:46:54,870 --> 00:46:58,790 >> और अब मैं बस एक कार्यक्रम में करना चाहते हैं कि इस करता है - एक स्ट्रिंग घोषित 980 00:46:58,790 --> 00:47:03,610 यह कहा जाता है और एक तार मिल उपयोगकर्ता से. 981 00:47:03,610 --> 00:47:05,820 और मुझे एक छोटे से करते हैं यहाँ निर्देश - 982 00:47:05,820 --> 00:47:09,960 मुझे एक स्ट्रिंग दे - तो उपयोगकर्ता क्या करना जानता है. 983 00:47:09,960 --> 00:47:13,190 और फिर नीचे यहाँ यह नीचे, मैं निम्नलिखित करना चाहते हैं - 984 00:47:13,190 --> 00:47:16,060 int के लिए मैं शून्य हो जाता है. 985 00:47:16,060 --> 00:47:18,580 फिर, कंप्यूटर वैज्ञानिकों आमतौर पर शून्य पर गिनती शुरू, लेकिन हम कर सकते थे 986 00:47:18,580 --> 00:47:20,340 हम वास्तव में चाहते थे कि हम एक हैं. 987 00:47:20,340 --> 00:47:27,240 अब मैं क्या करने जा रहा हूँ मैं कम है एस के स्ट्रिंग की लंबाई की तुलना में. 988 00:47:27,240 --> 00:47:28,430 तो strlen - 989 00:47:28,430 --> 00:47:29,510 एस टी आर एल ई एन - 990 00:47:29,510 --> 00:47:31,650 यह आसान है क्योंकि फिर, यह संक्षिप्त है यह एक है, भले ही टाइप करने के लिए 991 00:47:31,650 --> 00:47:32,590 थोड़ा गुप्त. 992 00:47:32,590 --> 00:47:35,290 >> यही कारण है कि हम इस्तेमाल नहीं किया है एक समारोह है लेकिन इससे पहले कि सचमुच करता है कि - 993 00:47:35,290 --> 00:47:37,810 मेरे लिए प्रतिनिधित्व करने वाली एक संख्या में वापसी स्ट्रिंग की लंबाई 994 00:47:37,810 --> 00:47:38,690 उपयोगकर्ता द्वारा लिखे गए. 995 00:47:38,690 --> 00:47:41,740 वे नमस्कार में टाइप करते हैं, तो यह लौटेंगे पाँच वहाँ पाँच क्योंकि 996 00:47:41,740 --> 00:47:42,890 हैलो में पत्र. 997 00:47:42,890 --> 00:47:45,390 फिर, प्रत्येक यात्रा के पर इस पाश, मैं प्लस प्लस. 998 00:47:45,390 --> 00:47:49,170 तो फिर, एक मानक भले ही निर्माण आप काफी भी आराम या नहीं कर रहे हैं 999 00:47:49,170 --> 00:47:50,420 इसके साथ अभी तक परिचित. 1000 00:47:50,420 --> 00:47:53,220 >> लेकिन अब इस पाश के प्रत्येक चलना पर, मैं क्या करने जा रहा हूँ नोटिस. 1001 00:47:53,220 --> 00:47:56,690 मैं आगे और प्रिंट जाना चाहते एक ही चरित्र बाहर - 1002 00:47:56,690 --> 00:47:59,940 इसलिए एक नई लाइन पर% ग बैकस्लैश एन. 1003 00:47:59,940 --> 00:48:00,990 और फिर, तुम मुझे क्या करना चाहते पता है क्या? 1004 00:48:00,990 --> 00:48:05,090 शब्द है कि जो कुछ भी उपयोगकर्ता प्रकार नमस्कार की तरह, मैं मुद्रित करना चाहते हैं, में 1005 00:48:05,090 --> 00:48:09,530 एच ई एल एल ओ, प्रत्येक पंक्ति में एक चरित्र. 1006 00:48:09,530 --> 00:48:13,080 दूसरे शब्दों में, मैं कम से प्राप्त करना चाहते हैं एक स्ट्रिंग में व्यक्तिगत चरित्र, 1007 00:48:13,080 --> 00:48:16,770 जिससे अब तक एक स्ट्रिंग बस है अक्षरों का एक अनुक्रम गया. 1008 00:48:16,770 --> 00:48:21,690 >> और यह मैं है, ब्रैकेट कर सकते हैं पता चला है मैं करीब वर्ग, करीब 1009 00:48:21,690 --> 00:48:23,580 कोष्ठक, अर्धविराम. 1010 00:48:23,580 --> 00:48:25,640 और मैं एक और बात यह है कि क्या करना है. 1011 00:48:25,640 --> 00:48:30,570 यह string.h नामक एक फ़ाइल में है कि strlen घोषित किया जाता है. 1012 00:48:30,570 --> 00:48:33,190 इसलिए मुझे लगता है कि समारोह का उपयोग करना चाहते हैं, मैं संकलक बताने की जरूरत है, 1013 00:48:33,190 --> 00:48:34,450 इसका इस्तेमाल करने की उम्मीद है. 1014 00:48:34,450 --> 00:48:37,040 अब मुझे आगे जाना है और कर देना स्ट्रिंग कार्यक्रम बुलाया. 1015 00:48:37,040 --> 00:48:39,150 डॉट, स्लैश, स्ट्रिंग. 1016 00:48:39,150 --> 00:48:40,130 >> मुझे एक स्ट्रिंग दे दीजिए. 1017 00:48:40,130 --> 00:48:40,900 मुझे आगे जाना है और इसे टाइप करेंगे. 1018 00:48:40,900 --> 00:48:43,040 हैलो, सभी टोपियां में, लिखें. 1019 00:48:43,040 --> 00:48:47,390 और अब मैं इस छपा है नोटिस एक के बाद एक चरित्र. 1020 00:48:47,390 --> 00:48:51,450 तो यहाँ नया विस्तार, एक स्ट्रिंग है दिन के अंत में, हो सकता है 1021 00:48:51,450 --> 00:48:54,810 अपने व्यक्तिगत के माध्यम से पहुँचा वर्ग शुरू करने से वर्ण 1022 00:48:54,810 --> 00:48:55,840 ब्रैकेट अंकन. 1023 00:48:55,840 --> 00:48:59,090 और वह है, एक स्ट्रिंग नीचे क्योंकि हुड वास्तव में एक दृश्य है 1024 00:48:59,090 --> 00:48:59,810 अक्षर. 1025 00:48:59,810 --> 00:49:02,010 लेकिन क्या उनके बारे में साफ है है आपके कंप्यूटर की रैम में - 1026 00:49:02,010 --> 00:49:05,300 मैक, पीसी, जो भी है - वे कर रहे हैं सचमुच वापस वापस करने के लिए पीछे - 1027 00:49:05,300 --> 00:49:06,225 एच ई एल एल ओ - 1028 00:49:06,225 --> 00:49:09,920 व्यक्तिगत, आसन्न पर स्मृति में बाइट्स. 1029 00:49:09,920 --> 00:49:13,210 >> तो तुम आठवें ऐसे में प्राप्त करना चाहते हैं बाइट, इस पाश में जो होगा 1030 00:49:13,210 --> 00:49:16,900 ब्रैकेट शून्य, वर्ग एक, वर्ग दो, ब्रैकेट तीन, वर्ग चार - 1031 00:49:16,900 --> 00:49:18,890 कि पांच जब तक अनुक्रमित शून्य है - 1032 00:49:18,890 --> 00:49:23,330 कि एच ई एल एल ओ बाहर प्रिंट होगा अपनी पंक्ति में. 1033 00:49:23,330 --> 00:49:26,320 >> अब, एक नमूना के रूप में, मुझे तुम्हें दिखाने चीजों की तरह आप अंततः हो जाएगा 1034 00:49:26,320 --> 00:49:31,950 समझने में सक्षम, कम से कम कुछ करीबी तलाश के साथ. 1035 00:49:31,950 --> 00:49:35,610 एक के लिए, क्या हम आज में शामिल उदाहरण, यदि आप चाहते हैं, वास्तव में है 1036 00:49:35,610 --> 00:49:38,300 बहुत पहले jailbreaks में से एक iPhone के लिए. 1037 00:49:38,300 --> 00:49:40,800 Jailbreaking फोन खुर का मतलब तो आप वास्तव में एक पर इसका इस्तेमाल कर सकते हैं 1038 00:49:40,800 --> 00:49:43,380 अलग वाहक या स्थापित अपना खुद का सॉफ्टवेयर. 1039 00:49:43,380 --> 00:49:45,660 और आप इस पूरी तरह से लग रहा है पर ध्यान देंगे , गुप्त सबसे अधिक संभावना है. 1040 00:49:45,660 --> 00:49:46,520 लेकिन इस पर दिखेगा. 1041 00:49:46,520 --> 00:49:50,420 iPhone जाहिरा तौर पर साथ टूट गया था, एक पाश, एक अगर हालत, एक किसी और के लिए 1042 00:49:50,420 --> 00:49:52,580 हालत, कार्यों का एक गुच्छा हम नहीं देखा है. 1043 00:49:52,580 --> 00:49:54,230 >> और फिर, आप पर नहीं होगा पहली नज़र शायद 1044 00:49:54,230 --> 00:49:55,620 इस काम कर रहा है कि कैसे समझते हैं. 1045 00:49:55,620 --> 00:49:58,940 लेकिन हम की तरह लेते हैं कि सब कुछ हमारे आधुनिक जीवन में प्रदान के लिए 1046 00:49:58,940 --> 00:50:02,040 वास्तव में, यहां तक ​​कि कुछ को कम करने के लिए जाता है इन बुनियादी बातों का हम किया गया है 1047 00:50:02,040 --> 00:50:02,820 पर देख रहे हैं. 1048 00:50:02,820 --> 00:50:06,680 मुझे आगे जाना है और एक खोल दो. अन्य कार्यक्रम, holloway.c. 1049 00:50:06,680 --> 00:50:08,970 तो यह भी है, आप कुछ है वास्तव में पता नहीं चलना चाहिए. 1050 00:50:08,970 --> 00:50:12,440 स्टाफ का कोई भी या मैं भी सकता है शायद को देखकर यह पता लगाना 1051 00:50:12,440 --> 00:50:15,450 यह है कि यह किसी के कोड था क्योंकि कि क्या करने के लिए प्रस्तुत किया गया था 1052 00:50:15,450 --> 00:50:19,630 ऐतिहासिक दृष्टि से एक obfuscated सी के रूप में जाना जाता है आप एक प्रोग्राम लिखने जहां प्रतियोगिता, 1053 00:50:19,630 --> 00:50:24,670 कि compiles और चलाता है, लेकिन इतनी लानत है गुप्त कोई मानव समझ सकते हैं क्या 1054 00:50:24,670 --> 00:50:27,530 यह करने के लिए जा रहा है जब तक वे वास्तव में इसे चलाते हैं. 1055 00:50:27,530 --> 00:50:29,940 >> तो वास्तव में, आप इस पर नजर डालें तो कोड, मैं एक स्विच देखते हैं. 1056 00:50:29,940 --> 00:50:30,870 मैं मुख्य देखते हैं. 1057 00:50:30,870 --> 00:50:33,800 मैं इन वर्ग कोष्ठक जिसका अर्थ है देखना एक सरणी में किसी तरह का. 1058 00:50:33,800 --> 00:50:35,970 किसी को लगता है कि क्या करना चाहते हैं इस कार्यक्रम वास्तव में 1059 00:50:35,970 --> 00:50:37,220 मैं होलोवे चलाते हैं करता है? 1060 00:50:37,220 --> 00:50:39,940 1061 00:50:39,940 --> 00:50:40,750 हां. 1062 00:50:40,750 --> 00:50:43,050 ठीक है. 1063 00:50:43,050 --> 00:50:44,690 अच्छा किया. 1064 00:50:44,690 --> 00:50:48,090 इतना ही स्टाफ और मैं समझ नहीं सकता इन बातों को क्या कर बाहर. 1065 00:50:48,090 --> 00:50:51,670 >> और अब अंत में, मुझे आगे चलते हैं और एक अन्य कार्यक्रम खुला. 1066 00:50:51,670 --> 00:50:53,440 इस एक - 1067 00:50:53,440 --> 00:50:55,550 फिर, हम स्रोत कोड बना देंगे ऑनलाइन उपलब्ध - यह एक बस है 1068 00:50:55,550 --> 00:50:57,480 प्रकार के सुंदर को देखने के लिए. 1069 00:50:57,480 --> 00:50:59,750 वे सब किया मारा है अंतरिक्ष बार काफी थोड़ा. 1070 00:50:59,750 --> 00:51:01,320 लेकिन यह वास्तविक कोड है. 1071 00:51:01,320 --> 00:51:04,790 तो आप हम यही है, अगर सुंदर है अगर आपको लगता है वास्तव में, प्रॉम्प्ट पर इस दौड़ 1072 00:51:04,790 --> 00:51:08,970 अंत में आप देखेंगे कि कैसे हम इस तरह से बातें कर सकता है. 1073 00:51:08,970 --> 00:51:14,008 >> तो हम उस पर ध्यान दें छोड़ दूँगा और बुधवार को आप देखते हैं. 1074 00:51:14,008 --> 00:51:18,440 >> [संगीत खेल] 1075 00:51:18,440 --> 00:51:23,380 >> अध्यक्ष 2: अगले CS50 पर, TFS एक गदर मंच. 1076 00:51:23,380 --> 00:51:24,112 >> स्पीकर 3: वह वहाँ है. 1077 00:51:24,112 --> 00:51:25,362 उसे जाओ! 1078 00:51:25,362 --> 00:51:29,912 1079 00:51:29,912 --> 00:51:32,074 >> [संगीत खेल]