1 00:00:00,000 --> 00:00:03,395 >> [संगीत बजाना] 2 00:00:03,395 --> 00:00:11,031 3 00:00:11,031 --> 00:00:13,280 डेविड जे मालन: इस तरह से है एक नए संगोष्ठी आज। 4 00:00:13,280 --> 00:00:14,060 ठीक। 5 00:00:14,060 --> 00:00:15,024 बाहर तो बहुत बरसात। 6 00:00:15,024 --> 00:00:17,690 यह बुधवार को हो जाता है, लेकिन सभी को और अधिक अवसर 7 00:00:17,690 --> 00:00:18,700 प्रश्नों के लिए आज। 8 00:00:18,700 --> 00:00:22,210 तो वास्तव में शुरू चलो बस एक पल में फिल्म के साथ। 9 00:00:22,210 --> 00:00:24,560 लेकिन हम हमेशा के रूप में धूम धाम से शुरू करेंगे। 10 00:00:24,560 --> 00:00:28,000 >> इस CS50 है, और इस 4 सप्ताह का अंत है। 11 00:00:28,000 --> 00:00:30,820 क्या आपने कभी देखा है तो अगर टीवी या एक फिल्म जिसमें 12 00:00:30,820 --> 00:00:34,690 कुछ कंप्यूटर विशेषज्ञों वहाँ है और पुलिस या एफबीआई, या कुछ एजेंसी 13 00:00:34,690 --> 00:00:36,930 कुछ पकड़ने की कोशिश कर रहा है विरोधी, ठीक है, तुम हो 14 00:00:36,930 --> 00:00:40,850 शायद, "बढ़ाने" अभिव्यक्ति सुना जिससे कि तकनीशियन किसी भी तरह 15 00:00:40,850 --> 00:00:44,750 जादुई असीम ज़ूम अपराधियों को देखने के लिए दूर 16 00:00:44,750 --> 00:00:48,640 पहचान या लाइसेंस प्लेट नंबर एक दर्पण के भी टिमटिमाना में 17 00:00:48,640 --> 00:00:50,390 या किसी की आँख की चमक। 18 00:00:50,390 --> 00:00:55,196 तो वास्तव में, चलो पर एक नजर डालते हैं हॉलीवुड से कुछ इस तरह के दृश्य। 19 00:00:55,196 --> 00:00:55,862 [वीडियो प्लेबैक] 20 00:00:55,862 --> 00:00:59,243 -OK है, अब आप को अच्छी तरह देख मिलता है। 21 00:00:59,243 --> 00:01:06,488 22 00:01:06,488 --> 00:01:07,415 >> -इसे पकड़ो। 23 00:01:07,415 --> 00:01:08,267 कि वापस चला रहे हैं। 24 00:01:08,267 --> 00:01:09,121 >> -एक मिनट रुकिए। 25 00:01:09,121 --> 00:01:11,300 सही जाना। 26 00:01:11,300 --> 00:01:12,209 >> -वहाँ, कि फ्रीज। 27 00:01:12,209 --> 00:01:12,750 -पूर्ण स्क्रीन। 28 00:01:12,750 --> 00:01:13,558 -OK, कि फ्रीज। 29 00:01:13,558 --> 00:01:14,820 आप उस पर देंगे -Tighten? 30 00:01:14,820 --> 00:01:16,530 उस पर -Vector वापस पहिया द्वारा पुरुष। 31 00:01:16,530 --> 00:01:19,400 यहीं इस मौके पर में ज़ूम। 32 00:01:19,400 --> 00:01:22,846 सही उपकरण -साथ, छवि बढ़े और तेज किया जा सकता है। 33 00:01:22,846 --> 00:01:24,065 -वह क्या है? 34 00:01:24,065 --> 00:01:25,600 -यह एक वृद्धि कार्यक्रम है। 35 00:01:25,600 --> 00:01:26,860 कि किसी भी स्पष्ट है कि आप -Can? 36 00:01:26,860 --> 00:01:27,890 -मुझे नहीं पता। 37 00:01:27,890 --> 00:01:29,050 की यह वृद्धि करते हैं। 38 00:01:29,050 --> 00:01:31,575 >> -Enhance खंड ए 6। 39 00:01:31,575 --> 00:01:33,642 >> -मैं विस्तार बढ़ाया, और-- मैं लगता है कि वहाँ 40 00:01:33,642 --> 00:01:35,433 बढ़ाने के लिए पर्याप्त है, मेरी स्क्रीन पर रिलीज। 41 00:01:35,433 --> 00:01:37,080 -मैं उसकी आंख में प्रतिबिंब बढ़ाया। 42 00:01:37,080 --> 00:01:38,830 >> -Let माध्यम से इस दौड़ रहा है वीडियो वृद्धि। 43 00:01:38,830 --> 00:01:40,100 -Edgar आप इस वृद्धि कर सकते हैं? 44 00:01:40,100 --> 00:01:41,875 >> -डटे रहो। 45 00:01:41,875 --> 00:01:44,010 >> इस प्रतिबिंब पर काम कर रहा -I've। 46 00:01:44,010 --> 00:01:44,995 >> कोई है की परछाई। 47 00:01:44,995 --> 00:01:45,495 -Reflection। 48 00:01:45,495 --> 00:01:47,399 आदमी के चेहरे की एक प्रतिबिंब, वहाँ है। 49 00:01:47,399 --> 00:01:48,065 -प्रतिबिंब। 50 00:01:48,065 --> 00:01:48,981 एक प्रतिबिंब, वहाँ है। 51 00:01:48,981 --> 00:01:50,600 दर्पण पर में ज़ूम। 52 00:01:50,600 --> 00:01:52,712 -आप एक प्रतिबिंब देख सकते हैं। 53 00:01:52,712 --> 00:01:54,350 आप यहाँ से छवि को बढ़ाने -Can? 54 00:01:54,350 --> 00:01:55,370 तुम यहीं उसे बढ़ाने -Can? 55 00:01:55,370 --> 00:01:56,210 आप इसे बढ़ाने -Can? 56 00:01:56,210 --> 00:01:56,900 आप इसे बढ़ाने कर सकते हैं? 57 00:01:56,900 --> 00:01:57,870 >> हम इस को बढ़ाने -Can? 58 00:01:57,870 --> 00:01:58,717 >> आप इसे बढ़ाने -Can? 59 00:01:58,717 --> 00:02:00,050 एक दूसरे पर पकड़ो, मैं बढ़ाने करेंगे। 60 00:02:00,050 --> 00:02:00,924 दरवाजे पर में ज़ूम। 61 00:02:00,924 --> 00:02:01,700 10 -Times। 62 00:02:01,700 --> 00:02:02,586 ज़ूम। 63 00:02:02,586 --> 00:02:03,490 -में स्थानांतरित। 64 00:02:03,490 --> 00:02:03,990 -अधिक। 65 00:02:03,990 --> 00:02:04,690 रुको, बंद करो। 66 00:02:04,690 --> 00:02:05,190 -रुकें। 67 00:02:05,190 --> 00:02:05,970 यह -Pause। 68 00:02:05,970 --> 00:02:09,460 हमें 75 डिग्री -Rotate खड़ी चारों ओर, कृपया। 69 00:02:09,460 --> 00:02:10,962 -रुकें। 70 00:02:10,962 --> 00:02:14,040 भाग के लिए वापस जाओ फिर दरवाजा, के बारे में। 71 00:02:14,040 --> 00:02:15,860 >> बिटमैप कर सकते हैं कि एक छवि बढ़ाने -Got? 72 00:02:15,860 --> 00:02:18,776 >> हे, शायद हम प्रदीप उपयोग कर सकते हैं सेन विधि खिड़कियों में देखने के लिए। 73 00:02:18,776 --> 00:02:20,372 -यह सॉफ्टवेयर कला का राज्य है। 74 00:02:20,372 --> 00:02:21,845 >> -इस Eigenvalue बंद है। 75 00:02:21,845 --> 00:02:24,300 >> सही -साथ algorithm-- का संयोजन 76 00:02:24,300 --> 00:02:26,755 >> -वह का लिया उन्मूलन अगले स्तर के लिए एल्गोरिदम, 77 00:02:26,755 --> 00:02:28,730 और मैं करने के लिए उन्हें इस्तेमाल कर सकते हैं इस तस्वीर में वृद्धि। 78 00:02:28,730 --> 00:02:31,286 >> पर ताला और जेड अक्ष बढ़ाना है। 79 00:02:31,286 --> 00:02:32,560 >> -Enhance। 80 00:02:32,560 --> 00:02:33,100 >> -Enhance। 81 00:02:33,100 --> 00:02:33,600 >> -Enhance। 82 00:02:33,600 --> 00:02:34,960 -Freeze और बढ़ाने के लिए। 83 00:02:34,960 --> 00:02:37,180 >> [अंत प्लेबैक] 84 00:02:37,180 --> 00:02:41,160 >> डेविड जे मालन: ठीक है, तो उन सब के सब वास्तव में शब्द हैं। 85 00:02:41,160 --> 00:02:44,450 वे सिर्फ एक में एक साथ महसूस कर रहे हैं वास्तव में समझदार नहीं है कि जिस तरह से। 86 00:02:44,450 --> 00:02:48,400 यह पसंद है और, वास्तव में, CS50 और पाठ्यक्रम टीवी और फिल्मों का एक बहुत बर्बाद करने की आदत है 87 00:02:48,400 --> 00:02:48,900 आपके लिए। 88 00:02:48,900 --> 00:02:52,330 जब उन कंप्यूटर विशेषज्ञों क्योंकि शर्तों बंद तेजस्वी और कह रहे हैं 89 00:02:52,330 --> 00:02:56,860 जैसे फैंसी बातें eigenvectors, और z अक्ष, 90 00:02:56,860 --> 00:02:59,572 और अन्य के किसी भी संख्या वास्तव में और अधिक तकनीकी शब्दों, 91 00:02:59,572 --> 00:03:02,030 वे वास्तव में सिर्फ धागों रहे शब्दों को एक साथ यह सब भी अक्सर। 92 00:03:02,030 --> 00:03:05,020 हमारी उम्मीदें में से एक यह है कि वह यह है कि लेने के पाठ्यक्रमों में से एक पक्ष प्रभाव के रूप में 93 00:03:05,020 --> 00:03:08,245 इस तरह से, अधिक से अधिक लोग दुनिया वास्तव में वजन करने के लिए सक्षम हो 94 00:03:08,245 --> 00:03:12,040 और सिर्फ कभी तो थोड़ा प्रभावित करती है गुणवत्ता और उन फिल्मों की सटीकता? 95 00:03:12,040 --> 00:03:14,350 >> वास्तव में, की वास्तविकता पर एक नजर डालते हैं। 96 00:03:14,350 --> 00:03:18,070 तो यहाँ के कर्मचारियों तस्वीर है मैरी, हमारे शिक्षण साथियों में से एक। 97 00:03:18,070 --> 00:03:20,050 और वह है लगता है कुछ का संदेह। 98 00:03:20,050 --> 00:03:23,730 और फिर भी, की एक किरण भी नहीं है उसकी आंखों में सबूत के कुछ टुकड़े, 99 00:03:23,730 --> 00:03:25,480 या उसे चश्मा की परछाई में। 100 00:03:25,480 --> 00:03:30,760 खैर, हम फिल्मों के रूप में वास्तव में ऐसा है, तो हम ज़ूम और "बढ़ाने", जिसमें प्रस्ताव 101 00:03:30,760 --> 00:03:34,080 इस कितनी जानकारी है मैरी के चेहरे में है 102 00:03:34,080 --> 00:03:36,795 आप एक छवि पर कब्जा जब कि मूल संकल्प के साथ। 103 00:03:36,795 --> 00:03:39,120 >> और, वास्तव में, आप इन बिंदुओं को देख सकते हैं। 104 00:03:39,120 --> 00:03:41,900 और ये क्या कर रहे हैं कहा जाता पिक्सल, पी-मैं-एक्स-ई-एल एस, 105 00:03:41,900 --> 00:03:45,740 जो आम तौर पर सिर्फ एक वर्ग है एक छवि है कि composes कि एक बिंदु है। 106 00:03:45,740 --> 00:03:49,200 और दिन में वापस, और वास्तव में भी आज के एलईडी टीवी से कुछ के साथ आज 107 00:03:49,200 --> 00:03:51,950 या एलसीडी टीवी, अगर तुम मिल गया अपने कमरे में या घर पर एक, 108 00:03:51,950 --> 00:03:55,100 आप इसे करने के लिए सुपर करीब ऊपर जाना है, और अगर यह कुछ हद तक एक बड़े टीवी, खासकर अगर 109 00:03:55,100 --> 00:03:58,760 आप शायद यह भी इन बिंदुओं को देख सकते हैं और एक छवि है कि रचना क्या है। 110 00:03:58,760 --> 00:04:00,980 >> और कोई अधिक नहीं है इस से भी जानकारी। 111 00:04:00,980 --> 00:04:05,400 हम की भावना में, "बढ़ाने" कर सकता है पर और तरह की बातें चौरसाई 112 00:04:05,400 --> 00:04:09,040 एक तरह से है, की तरह क्या inferring रंग मैरी की आंख के बगल में होना चाहिए 113 00:04:09,040 --> 00:04:10,910 इतना है कि यह वास्तव में बहुत pixelated नहीं है। 114 00:04:10,910 --> 00:04:14,510 लेकिन मैं में जूमिंग रखने के लिए, वहाँ उसकी आंखों में बुरा आदमी है। 115 00:04:14,510 --> 00:04:16,600 लगता है कि जैसे सब है जानकारी हमारे पास है। 116 00:04:16,600 --> 00:04:18,920 आप नहीं बना सकते कुछ नहीं से बाहर जानकारी। 117 00:04:18,920 --> 00:04:20,790 केवल एक परिमित नहीं है वहाँ बिट्स की संख्या। 118 00:04:20,790 --> 00:04:22,873 >> समस्या सेट 4, जहां में तो आप एक अवसर है 119 00:04:22,873 --> 00:04:24,580 दुनिया के इस प्रकार के साथ खेलने के लिए। 120 00:04:24,580 --> 00:04:27,610 समस्या सेट 4 में, आप का पता लगाने देंगे ग्राफिक्स, और फोरेंसिक की दुनिया 121 00:04:27,610 --> 00:04:30,870 और वास्तव में कोड लिखने खो दिया है कि छवियों ठीक हो जाए। 122 00:04:30,870 --> 00:04:33,510 आप कोड लिख देंगे कि मौजूदा छवियों manipulates 123 00:04:33,510 --> 00:04:36,120 और अंतत: क्या समझते हैं हुड के नीचे चल रहा है। 124 00:04:36,120 --> 00:04:38,540 >> और, यह है कि यह वास्तव में पता चला है, सब है कि जटिल नहीं। 125 00:04:38,540 --> 00:04:41,320 उदाहरण के लिए, यदि हम चाहते थे एक स्माइली चेहरे जहां का प्रतिनिधित्व 126 00:04:41,320 --> 00:04:44,160 इन काले पिक्सल के साथ, या इन काले डॉट्स, 127 00:04:44,160 --> 00:04:47,230 खैर, हम तो सिर्फ प्रतिनिधित्व कर सकता है उन के रूप में सही मायने में एक बिटमैप। 128 00:04:47,230 --> 00:04:50,040 और अगर आप कभी सुना था कि अभिव्यक्ति बिटमैप, शायद 129 00:04:50,040 --> 00:04:52,330 यह अब एक बनाने के लिए शुरू होता है थोड़ा और अधिक समझ में आज। 130 00:04:52,330 --> 00:04:53,580 >> हम पहले से ही एक सा है क्या पता है। 131 00:04:53,580 --> 00:04:54,160 यह 0 या 1 है। 132 00:04:54,160 --> 00:04:56,201 और एक नक्शा अभी कुछ है कागज के एक टुकड़े की तरह 133 00:04:56,201 --> 00:04:59,180 कि आप निर्देश देता है और है शायद एक्स और वाई निर्देशांक का एक ग्रिड। 134 00:04:59,180 --> 00:05:00,540 तो यहाँ एक बिटमैप है। 135 00:05:00,540 --> 00:05:03,680 यह बिट के एक नक्शा है जिससे एक एक जाहिरा तौर पर है 136 00:05:03,680 --> 00:05:07,857 एक सफेद पिक्सेल का प्रतिनिधित्व करने के लिए जा रहे हैं, और एक 0 एक काले पिक्सेल का प्रतिनिधित्व करने के लिए जा रहा है। 137 00:05:07,857 --> 00:05:09,440 लेकिन हम निश्चित रूप से इसके चारों ओर फ्लिप सकता है। 138 00:05:09,440 --> 00:05:11,648 यह वास्तव में बात करता है तो हम लगातार कर रहे हैं के रूप में लंबे समय। 139 00:05:11,648 --> 00:05:15,570 और यहाँ के अंदर binary-- में, कैसे एक कंप्यूटर की स्मृति की, या यहां तक ​​कि अंदर 140 00:05:15,570 --> 00:05:18,160 अपनी हार्ड पर एक फ़ाइल की drive-- आप स्टोर कर सकता 141 00:05:18,160 --> 00:05:20,240 स्माइली चेहरा छवियों का सरलतम। 142 00:05:20,240 --> 00:05:23,990 लेकिन हम क्या कर रहे हैं, निश्चित रूप से, इस छवि में कमी? 143 00:05:23,990 --> 00:05:24,610 रंग, है ना? 144 00:05:24,610 --> 00:05:28,220 यह एक स्पष्ट अगले कदम है या वृद्धि रंग के साथ इस सुधार करने के लिए। 145 00:05:28,220 --> 00:05:32,230 तो दुर्भाग्य से सिर्फ एक ही साथ बिट, 0 या 1, हम रंग का प्रतिनिधित्व करेगा। 146 00:05:32,230 --> 00:05:36,100 यही कारण है कि लाल या नीले रंग का हो सकता है, या कर सकता है काला या सफेद, या हरे या गुलाबी, 147 00:05:36,100 --> 00:05:37,420 या रंग के किसी भी जोड़े। 148 00:05:37,420 --> 00:05:40,860 लेकिन सादगी के लिए, हम करेंगे सिर्फ काले और सफेद मान। 149 00:05:40,860 --> 00:05:45,930 >> तो तार्किक हम यदि जरूरत क्या करते हैं हम एक छवि में रंग को लागू करना चाहते हैं? 150 00:05:45,930 --> 00:05:49,080 हमें क्या करना है? 151 00:05:49,080 --> 00:05:51,900 यहां सीमित कारक जैसे कि अगर कि एक बिट के साथ आप ही कर सकते है 152 00:05:51,900 --> 00:05:55,977 दो राज्यों, 0 या 1, सफेद प्रतिनिधित्व या काले, तुम क्या करना चाहते हैं? 153 00:05:55,977 --> 00:05:56,810 दर्शकों को अधिक डेटा। 154 00:05:56,810 --> 00:05:58,813 डेविड जे मालन: अधिक बिट्स, हाँ अधिक डेटा, अधिक बिट्स। 155 00:05:58,813 --> 00:06:01,440 और, वास्तव में, कि वास्तव में कितनी है रंग छवियों प्रतिनिधित्व कर रहे हैं। 156 00:06:01,440 --> 00:06:05,120 एक एकल बिट का उपयोग करने के बजाय, एक 0 या प्रत्येक पिक्सेल के लिए 1, प्रत्येक डॉट, 157 00:06:05,120 --> 00:06:06,170 आप सिर्फ कई का उपयोग करें। 158 00:06:06,170 --> 00:06:09,660 हो सकता है कि हो सकता है, और आमतौर पर, 8 का उपयोग समस्या सेट में, वास्तव में 24 का उपयोग करें, और 159 00:06:09,660 --> 00:06:13,300 4, आप एक फाइल के साथ खेलना होगा आम तौर पर 24 बिट का उपयोग करता है कि प्रारूप। 160 00:06:13,300 --> 00:06:15,430 >> लेकिन आप में से अधिकांश शायद रहे हैं JPEGs के साथ परिचित। 161 00:06:15,430 --> 00:06:17,460 आप कभी भी ले लिया गया है अपने फोन पर एक तस्वीर है, 162 00:06:17,460 --> 00:06:20,360 या अपलोड या पर कुछ देखा फेसबुक, या फ्लिकर, किसी भी संख्या 163 00:06:20,360 --> 00:06:24,882 तस्वीर आधारित वेबसाइटों की, आप है शायद पहले एक जेपीईजी छवि देखा। 164 00:06:24,882 --> 00:06:27,840 और यह इस फाइल है, पता चला है प्रारूप हम pset 4 में उपयोग करने के लिए जा रहे हैं 165 00:06:27,840 --> 00:06:30,340 जिससे आप करने जा रहे हैं छवियों को ठीक करने के लिए है 166 00:06:30,340 --> 00:06:35,160 मैं गलती से एक से नष्ट कर दिया है कि कैमरे में भ्रष्ट मेमोरी कार्ड, 167 00:06:35,160 --> 00:06:35,800 अगर आप करें तो। 168 00:06:35,800 --> 00:06:38,490 >> और यह पता चला है कि भले ही जेपीईजी सुंदर sophisticated-- है 169 00:06:38,490 --> 00:06:40,906 इसे और अधिक परिष्कृत है काले और सफेद डॉट्स से 170 00:06:40,906 --> 00:06:44,480 क्योंकि वहाँ हम एक पल पहले देखा था वास्तव में फैंसी एल्गोरिदम कि 171 00:06:44,480 --> 00:06:47,410 इसलिए, एक जेपीईजी सेक करने के लिए इस्तेमाल कर रहे हैं आप एक बहुत अच्छा हो सकता है कि, 172 00:06:47,410 --> 00:06:49,832 गुणवत्ता के चित्र लेकिन का उपयोग कर अपेक्षाकृत कुछ टुकड़े। 173 00:06:49,832 --> 00:06:51,790 और हम करने के लिए वापस आ गया हूँ लंबे समय से पहले संपीड़न। 174 00:06:51,790 --> 00:06:56,280 यह पहली बार पता चला है कि एक जेपीईजी image-- में तीन बाइट्स 175 00:06:56,280 --> 00:07:02,750 कोई बात नहीं तुम एक तस्वीर ले लिया है क्या of-- मूल्यों 255, 216, 255 हैं। 176 00:07:02,750 --> 00:07:05,990 >> दूसरे शब्दों में, अगर आप बस बिट्स के पैटर्न है कि देखते हैं, 177 00:07:05,990 --> 00:07:09,180 तीन के रूप में यहां का प्रतिनिधित्व बाइट्स, या 24 बिट्स, कुल 178 00:07:09,180 --> 00:07:13,810 उच्च संभावना के साथ आपको लगता है कि अनुमान कर सकते हैं आप इस पहले तीन इसे देख रहे हैं 179 00:07:13,810 --> 00:07:15,230 एक जेपीईजी के बाइट्स। 180 00:07:15,230 --> 00:07:18,040 और यह क्या जाना जाता है है एक जेपीईजी के हस्ताक्षर के रूप में। 181 00:07:18,040 --> 00:07:20,540 फ़ाइल प्रारूपों के एक बहुत शुरू करने के लिए वहां जाते हैं बाहर 182 00:07:20,540 --> 00:07:23,735 0 और 1 के कुछ पैटर्न के साथ, कि विंडोज और मैक ओएस, और iOS तो, 183 00:07:23,735 --> 00:07:28,272 और एंड्रॉयड जानते फाइल किस तरह वे तथाकथित फ़ाइल के अलावा, कर रहे हैं 184 00:07:28,272 --> 00:07:29,730 एक्सटेंशन फ़ाइलों का एक बहुत है कि। 185 00:07:29,730 --> 00:07:32,590 आप जेपीजी किया है, तो वह है कंप्यूटर के लिए एक और सुराग। 186 00:07:32,590 --> 00:07:35,310 >> तो अब यह देखो चलो अधिक तकनीकी रूप से एक छोटे से। 187 00:07:35,310 --> 00:07:37,390 हम दशमलव जानते सिस्टम के माध्यम से 9 0 है। 188 00:07:37,390 --> 00:07:38,740 हम द्विआधारी 0 और 1 है। 189 00:07:38,740 --> 00:07:41,842 और अगर आप pset वापस करने के लिए अगर आपको लगता 0, हम आप के साथ कुश्ती था 190 00:07:41,842 --> 00:07:43,800 एक छोटा सा, कुछ के लिए हेक्साडेसिमल कहा जाता है, 191 00:07:43,800 --> 00:07:47,320 आप 16 अंक है, जहां के बजाय 10 या 2 के बजाय। 192 00:07:47,320 --> 00:07:50,405 और उन अंक, परंपरा से, उसके बाद एक 9 और के माध्यम से 0 कर रहे हैं 193 00:07:50,405 --> 00:07:55,040 च क्या प्रतिनिधित्व करता है जहां एफ, के माध्यम से सिर्फ एक त्वरित विवेक के रूप में दशमलव संख्या, 194 00:07:55,040 --> 00:07:56,640 चेक? 195 00:07:56,640 --> 00:07:57,610 तो, 15। 196 00:07:57,610 --> 00:08:01,390 और एक बस से, 10 का प्रतिनिधित्व करना चाहिए मैं दे दिया है कि आदेश की प्रकृति। 197 00:08:01,390 --> 00:08:04,350 यह सिर्फ एक मनमाना सम्मेलन लेकिन यह काफी मानक है। 198 00:08:04,350 --> 00:08:06,870 >> हम इस पैटर्न को देखो तो अगर तीन में से चलो bytes-- 199 00:08:06,870 --> 00:08:09,620 बस में इसे देखने के लिए शुरू कैसे के साथ सुसंगत तरीके 200 00:08:09,620 --> 00:08:12,450 आम तौर पर कंप्यूटर वैज्ञानिकों पर देखते हैं और फ़ाइलों के बारे में सोचते हैं। 201 00:08:12,450 --> 00:08:15,580 तुम निश्चित रूप से के बारे में सोच सकते हैं 0s में फ़ाइलों, और 1, और दशमलव, 202 00:08:15,580 --> 00:08:19,340 लेकिन वास्तविकता में, हम द्विआधारी का उपयोग करते हैं या अधिक आम तौर पर hexadecimal-- 203 00:08:19,340 --> 00:08:20,760 वापस pset 0 से। 204 00:08:20,760 --> 00:08:25,857 तो मुझे का प्रस्ताव करते हैं कि 255, 216, और 255 0 और 1 का सिर्फ इन पैटर्न हैं। 205 00:08:25,857 --> 00:08:28,440 और अगर आप इस करता है, तो जांच कर सकते हैं आप हफ्ते 0 से गणित करना चाहते हैं। 206 00:08:28,440 --> 00:08:30,810 लेकिन, अब के लिए, बस मान कि यह वास्तव में सही है। 207 00:08:30,810 --> 00:08:33,850 मैं सिर्फ तीन दशमलव फिर से लिखे गए हैं तीन द्विआधारी मूल्यों के रूप में संख्या। 208 00:08:33,850 --> 00:08:36,100 अब मैं क्या करने जा रहा हूँ है बस कुछ सफेद स्थान जोड़ने के लिए, 209 00:08:36,100 --> 00:08:37,266 सिर्फ पठनीयता की खातिर। 210 00:08:37,266 --> 00:08:39,940 और नोटिस, मैं तो बस जा रहा हूँ चीजों के अलावा स्थानांतरित करने के लिए। 211 00:08:39,940 --> 00:08:43,090 तो इससे पहले, बाद में, पहले, के बाद। 212 00:08:43,090 --> 00:08:46,180 मैं अन्य दिलचस्प कुछ भी नहीं कर रहा हूँ बस इतनी बातें बाहर फैलने से 213 00:08:46,180 --> 00:08:50,380 सूचना है कि आठ के प्रत्येक सेट बिट्स अब चार बिट्स के दो सेट है। 214 00:08:50,380 --> 00:08:54,920 इस हेक्साडेसिमल क्योंकि उपयोगी है विशेष रूप से फैशनेबल है 215 00:08:54,920 --> 00:09:00,930 क्योंकि प्रत्येक हेक्साडेसिमल अंकों 0 के माध्यम से च, या अधिक विशेष 0 के माध्यम से 15, 216 00:09:00,930 --> 00:09:03,430 प्रतिनिधित्व किया जा सकता वास्तव में चार बिट्स के साथ। 217 00:09:03,430 --> 00:09:07,960 दूसरे शब्दों में, हेक्साडेसिमल में अगर आप यह सिर्फ 0000 है, एक 0 प्रतिनिधित्व करना चाहते हैं, 218 00:09:07,960 --> 00:09:08,780 चार शून्य। 219 00:09:08,780 --> 00:09:13,997 और आप 15 का प्रतिनिधित्व करना चाहते हैं, यह चार बिट्स है, जो 1111 है। 220 00:09:13,997 --> 00:09:16,080 और अगर आप गणित करते हैं, यह लोगों को जगह है, 221 00:09:16,080 --> 00:09:18,210 इस, 16s जगह है कि you-- देने जा रहा है 222 00:09:18,210 --> 00:09:19,960 बल्कि यह है कि हो रहा है क्षमा करें है--, द्विआधारी में, 223 00:09:19,960 --> 00:09:23,660 15 कि तुम्हें देने के लिए जा रहा है, लोगों को जगह है, twos जगह, चौके और आठ भाग जगह। 224 00:09:23,660 --> 00:09:26,821 तो मुझे लगता है कि प्रस्ताव है कि चलो बाईं तरफ के चार बिट्स का सेट 225 00:09:26,821 --> 00:09:28,070 हम एफ फोन करने के लिए जा रहे हैं क्या है। 226 00:09:28,070 --> 00:09:30,110 यह सबसे बड़ी संख्या है आप चार बिट्स के साथ प्रतिनिधित्व कर सकते हैं। 227 00:09:30,110 --> 00:09:33,300 और हम पहले से ही हेक्साडेसिमल से पता है, च हेक्साडेसिमल में सबसे बड़ी अंकों है। 228 00:09:33,300 --> 00:09:36,020 हम वहाँ एक और एफ मिल गया है दो वहाँ पर अधिक है। 229 00:09:36,020 --> 00:09:38,980 और अब के लिए, बस विश्वास पर ले मैं गणित सही किया है कि 230 00:09:38,980 --> 00:09:41,890 और कहा कि बाईं आधा उन बिट्स, 1101 की, 231 00:09:41,890 --> 00:09:43,980 हेक्साडेसिमल में डी के रूप में एक ही बात है। 232 00:09:43,980 --> 00:09:46,490 और दाहिने हाथ, 1000, सिर्फ 8 है। 233 00:09:46,490 --> 00:09:48,140 >> और आसान है कि एक सही है, यह देखने के लिए? 234 00:09:48,140 --> 00:09:51,670 8 represents-- सही है कि आठ भाग जगह नीचे। 235 00:09:51,670 --> 00:09:56,040 इसलिए हम आठ कॉलम में एक है और चौके, twos या लोगों में कुछ भी नहीं है। 236 00:09:56,040 --> 00:09:59,830 तो अब अधिक पारंपरिक, मनुष्य करते हैं इस तरह हेक्साडेसिमल अंक लिखने के लिए, 237 00:09:59,830 --> 00:10:03,000 आप बस उन्हें एक साथ तोड़ो और फिर आप 0x के साथ उन्हें प्रत्यय लगाएँ। 238 00:10:03,000 --> 00:10:05,920 यह अलावा अन्य कोई मतलब नहीं है एक human-- के लिए एक दृश्य सुराग 239 00:10:05,920 --> 00:10:10,350 यहां एक हेक्साडेसिमल value-- क्योंकि आता है अन्यथा यह स्पष्ट नहीं हो सकता है। 240 00:10:10,350 --> 00:10:13,629 >> जो कि अंतत: यह कहना है, शून्य और लोगों के पैटर्न, 241 00:10:13,629 --> 00:10:16,170 या हेक्साडेसिमल के पैटर्न अंक यों आप कर रहे हैं कि 242 00:10:16,170 --> 00:10:18,990 की तलाश शुरू करने जा रहा है समस्या सेट में 4 है- है 243 00:10:18,990 --> 00:10:22,120 और समस्या सेट 4 कल्पना चलना होगा अधिक detail-- में इस के माध्यम से आप 244 00:10:22,120 --> 00:10:25,344 लेकिन रहस्यमय की तरह के रूप के रूप में एहसास इस पहली नज़र में लग सकता है 245 00:10:25,344 --> 00:10:27,010 आप इस एक बहुत कुछ देख शुरू करने के लिए जा रहे हैं। 246 00:10:27,010 --> 00:10:30,320 और वास्तव में, यहां तक ​​कि GDB में, डिबगर हम सोमवार को पेश किया 247 00:10:30,320 --> 00:10:35,440 और दान pset 3 में जा रहा है, का परिचय अक्सर आप हेक्साडेसिमल मूल्यों को दिखाने के लिए 248 00:10:35,440 --> 00:10:39,910 सिर्फ इसलिए कि वे अधिक हो जाते हैं, क्योंकि दशमलव या द्विआधारी से परम्परागत 249 00:10:39,910 --> 00:10:41,157 कंप्यूटर की दुनिया में। 250 00:10:41,157 --> 00:10:42,490 अब के संदर्भ में इस डाल दें। 251 00:10:42,490 --> 00:10:48,040 कई आपको यह याद रखना हो सकता है की क्या से आया है, जो यहां तस्वीर? 252 00:10:48,040 --> 00:10:51,240 विस्टा, तो भी पहले की तुलना में कि, विंडोज एक्सपी इस पहली फिल्म में किया था। 253 00:10:51,240 --> 00:10:52,620 तो यह एक सुंदर परिदृश्य है। 254 00:10:52,620 --> 00:10:55,940 और वास्तव में, आप online-- चारों ओर से प्रहार करता है, तो मैं इसे एक विकिपीडिया लेख लगता है, 255 00:10:55,940 --> 00:11:00,110 जिसमें किसी को बहुत आश्चर्यजनक बाहर चला गया पाया दुनिया में इस स्थान की स्थापना 256 00:11:00,110 --> 00:11:02,240 अपने या अपने कैमरे में ठीक सही place-- 257 00:11:02,240 --> 00:11:06,510 और यह आज like-- दिखता है, लेकिन यह बिल्कुल वैसा ही स्थापित है। 258 00:11:06,510 --> 00:11:10,060 इस छवि है, हालांकि, एक फाइल में है प्रारूप बुलाया बिटमैप, बी एम पी। 259 00:11:10,060 --> 00:11:12,910 और हम एक सुपर लेने के लिए जा रहे हैं क्या इसका मतलब है पर नज़र। 260 00:11:12,910 --> 00:11:17,770 >> लेकिन बिटमैप का सिर्फ एक अलग तरीका है का प्रतिनिधित्व चित्र अभी भी पिक्सल का उपयोग कर 261 00:11:17,770 --> 00:11:19,580 0 और 1 में, अंततः। 262 00:11:19,580 --> 00:11:23,282 लेकिन जल्दी नज़र में, यह है एक और अधिक दिलचस्प हस्ताक्षर 263 00:11:23,282 --> 00:11:24,490 फ़ाइल की शुरुआत में। 264 00:11:24,490 --> 00:11:26,670 यह सिर्फ तीन नहीं है बाइट्स, बल्कि वहाँ 265 00:11:26,670 --> 00:11:30,770 बाइट्स के पैटर्न की एक पूरी गुच्छा जिसका अर्थ है कि पूर्व निर्धारित है। 266 00:11:30,770 --> 00:11:34,490 उदाहरण के लिए, कहीं में एक बिटमैप छवि के पहले कुछ बाइट्स 267 00:11:34,490 --> 00:11:37,440 के आकार के होने जा रहा है छवि, छवि की चौड़ाई, 268 00:11:37,440 --> 00:11:40,390 छवि की ऊंचाई, इसलिए उपयोगी मेटाडाटा, अगर तुम जाएगा। 269 00:11:40,390 --> 00:11:43,940 उपयोगी जानकारी है कि फ़ोटोशॉप या किसी भी ग्राफिक्स का उपयोग कर रहे कार्यक्रम 270 00:11:43,940 --> 00:11:45,180 वास्तव में के बारे में परवाह सकता है। 271 00:11:45,180 --> 00:11:47,170 >> इस पर तो अधिक 4 समस्या सेट है, लेकिन इस 272 00:11:47,170 --> 00:11:49,220 यह कहना है कि केवल है दिन के अंत में 273 00:11:49,220 --> 00:11:52,390 आप का उपयोग किया गया है सभी फ़ाइल स्वरूप years-- माइक्रोसॉफ्ट वर्ड फाइल के लिए, 274 00:11:52,390 --> 00:11:55,820 नंबर फ़ाइलें, एक्सेल फाइल, फ़ाइल स्वरूपों में से किसी भी नंबर 275 00:11:55,820 --> 00:11:57,770 कि कुछ हो सकता है ज्ञात फ़ाइल विस्तार 276 00:11:57,770 --> 00:12:00,130 हुड के नीचे सिर्फ 0 और 1 हैं। 277 00:12:00,130 --> 00:12:02,970 और मनुष्य का फैसला किया है सम्मेलनों क्या कर रहे हैं, 278 00:12:02,970 --> 00:12:08,340 क्या 0 और 1 के पैटर्न का प्रतिनिधित्व एक शब्द, एक एक्सेल फ़ाइल बनाम दायर 279 00:12:08,340 --> 00:12:10,322 अन्य फ़ाइल स्वरूपों में से किसी संख्या की तुलना में। 280 00:12:10,322 --> 00:12:12,780 Pset 4 में तो, अगर आप एक होगा अवसर है कि के साथ खेलने के लिए। 281 00:12:12,780 --> 00:12:14,405 >> लेकिन क्या करता है यह एक संरचना है मतलब। 282 00:12:14,405 --> 00:12:18,012 अब यह वास्तव में एक अच्छा segue है केवल एक जोड़ी है जो में सी, 283 00:12:18,012 --> 00:12:20,220 के अतिरिक्त सुविधाओं है कि हम अभी तक देखा नहीं है। 284 00:12:20,220 --> 00:12:24,230 यह एक बहुत छोटा सा भाषा और में से एक है सी के बारे में अच्छी सुविधाएँ एक संरचना है। 285 00:12:24,230 --> 00:12:27,300 उदाहरण के लिए, यदि आप चलो represent-- करना चाहता था 286 00:12:27,300 --> 00:12:33,690 आप एक चर है चाहता था का कहना है कि कुछ कार्यक्रम में एक छात्र का प्रतिनिधित्व करता है। 287 00:12:33,690 --> 00:12:37,330 हो सकता है कि आप एक कोर्स लिख रहे थे पंजीकरण कार्यक्रम, या कोर खरीदारी 288 00:12:37,330 --> 00:12:38,870 उपकरण, या ऐसा कुछ। 289 00:12:38,870 --> 00:12:42,922 संबंधित डेटा के टुकड़े कर रहे हैं मन में आया है कि एक छात्र के लिए? 290 00:12:42,922 --> 00:12:44,880 एक छात्र की तरह क्या मान के साथ प्रतिनिधित्व किया? 291 00:12:44,880 --> 00:12:45,732 हाँ? 292 00:12:45,732 --> 00:12:46,940 आप एक छात्र के रूप में एक नाम है। 293 00:12:46,940 --> 00:12:48,900 एक ठेठ छात्र और क्या है? 294 00:12:48,900 --> 00:12:49,320 >> दर्शकों: [अश्राव्य] 295 00:12:49,320 --> 00:12:50,200 >> डेविड जे मालन: तो, माफ करना। 296 00:12:50,200 --> 00:12:50,660 >> दर्शकों आयु। 297 00:12:50,660 --> 00:12:52,980 >> डेविड जे मालन: एक उम्र या जन्मदिन यों, हां। 298 00:12:52,980 --> 00:12:53,557 और क्या? 299 00:12:53,557 --> 00:12:54,390 दर्शकों: आईडी नंबर? 300 00:12:54,390 --> 00:12:57,460 डेविड जे मालन: हो सकता है तो एक आईडी नंबर, एक फोन नंबर, शायद एक छात्रावास, या घर, 301 00:12:57,460 --> 00:12:58,670 कॉलेज, या ऐसा कुछ या। 302 00:12:58,670 --> 00:13:01,820 डेटा के टुकड़े की कोई भी संख्या कि आप अपने संपर्क सूची में हो सकता है 303 00:13:01,820 --> 00:13:03,890 एक छात्र को परिभाषित हो सकता है। 304 00:13:03,890 --> 00:13:08,490 हम कोड में, यह करना चाहता था तो, अगर हम इस तरह से सरल कुछ कर सकता है। 305 00:13:08,490 --> 00:13:15,670 हम तो यह है कि एक कार्यक्रम के लिए हो सकता है है, का कहना है int मुख्य (शून्य) करते हैं। 306 00:13:15,670 --> 00:13:18,920 और मैं एक का प्रतिनिधित्व करना चाहते हैं मैं उदाहरण के लिए, हो सकता है छात्र, 307 00:13:18,920 --> 00:13:24,330 कि छात्र के लिए नाम नामक एक स्ट्रिंग, कि छात्र के लिए छात्रावास नामक एक स्ट्रिंग, 308 00:13:24,330 --> 00:13:26,900 शायद एक पूर्णांक है कि छात्र के लिए आईडी बुलाया। 309 00:13:26,900 --> 00:13:30,840 और मैं स्ट्रिंग का उपयोग कर रहा हूँ, क्योंकि मैं CS50.h. वापस जाओ और ऊपर खड़ा करने की जरूरत 310 00:13:30,840 --> 00:13:33,300 शायद मैं stdio.h जरूरत के लिए जा रहा हूँ। 311 00:13:33,300 --> 00:13:38,190 तो मुझे preemptively उन करते हैं और मैं कर रहा हूँ अब के लिए इस student.c फोन करने वाला 312 00:13:38,190 --> 00:13:40,080 और इस बचा। 313 00:13:40,080 --> 00:13:44,206 >> और अब मैं कुछ कर सकते हैं इन चर के साथ। 314 00:13:44,206 --> 00:13:46,830 और हम बस लिखने जा रहे हैं कि छद्म कोड में एक टिप्पणी के रूप में, 315 00:13:46,830 --> 00:13:48,829 यह दिलचस्प नहीं है क्योंकि हम अब के लिए क्या करते हैं। 316 00:13:48,829 --> 00:13:51,242 ठीक है, तो यह एक कार्यक्रम है कि किसी तरह एक छात्र संग्रहीत करता है। 317 00:13:51,242 --> 00:13:53,450 मैं यदि ऐसा करना चाहते हैं मैं दो छात्रों को स्टोर करने के लिए करना चाहते हैं? 318 00:13:53,450 --> 00:13:55,991 तो मेरा पहला वृत्ति जा रहा है एक मिनट रुको, सब ठीक हो सकता है, 319 00:13:55,991 --> 00:14:01,920 मैं एक और छात्र है, तो मैं क्यों नहीं करते सिर्फ स्ट्रिंग नाम 2, स्ट्रिंग छात्रावास 2 करते हैं, 320 00:14:01,920 --> 00:14:04,190 पूर्णांक id2। 321 00:14:04,190 --> 00:14:06,540 और हम चले किया है इस सड़क से पहले नीचे 322 00:14:06,540 --> 00:14:10,890 और लगता है क्या करने के लिए हमारे समाधान क्या था एक hackish कॉपी पेस्ट की तरह हो 323 00:14:10,890 --> 00:14:11,555 यहां काम? 324 00:14:11,555 --> 00:14:12,346 दर्शकों: एक सरणी। 325 00:14:12,346 --> 00:14:13,830 डेविड जे मालन: हाँ, हम एक सरणी इस्तेमाल कर सकते हैं। 326 00:14:13,830 --> 00:14:15,620 सही यह बहुत जल्दी बोझल हो जाता है। 327 00:14:15,620 --> 00:14:18,453 आप मनमाने ढंग से हल करना होगा इन चर के सभी नामकरण शुरू करते हैं। 328 00:14:18,453 --> 00:14:22,190 और तुम, मानव, रखना है यह ठीक NAME2 मेल खाती ट्रैक 329 00:14:22,190 --> 00:14:25,060 dorm2 साथ id2 के साथ मेल खाती है। 330 00:14:25,060 --> 00:14:26,200 यह सिर्फ एक गड़बड़ हो जाता है। 331 00:14:26,200 --> 00:14:29,350 इसलिए यह एक बहुत आसान है कुछ हफ्ते पहले से याद करते हैं, 332 00:14:29,350 --> 00:14:34,300 अभी फोन स्ट्रिंग के नाम करने के लिए होने के लिए और शायद हमें उन लोगों में से तीन दे। 333 00:14:34,300 --> 00:14:36,940 और तब शायद हम है स्ट्रिंग dorms और है 334 00:14:36,940 --> 00:14:41,900 उन लोगों में से तीन, या एक निरंतर साथ आईडी के int और उन में से तीन है। 335 00:14:41,900 --> 00:14:45,250 लेकिन अब भी यह महसूस करता है एक छोटे से मैला, सही है। 336 00:14:45,250 --> 00:14:49,440 हम अभी तक के छात्रों और के बारे में बात कर रहे हैं मैं वास्तव में कम स्तर पर रहने वाली हूँ 337 00:14:49,440 --> 00:14:50,470 कार्यान्वयन विवरण। 338 00:14:50,470 --> 00:14:52,790 छात्र एक नाम और एक छात्रावास और आईडी है। 339 00:14:52,790 --> 00:14:59,814 >> क्यों मैं सिर्फ एक चर घोषित नहीं कर सकते छात्र को फोन किया और यह बात कहते हैं। 340 00:14:59,814 --> 00:15:02,230 और मैं एक और छात्र चाहते हैं, यही कारण है कि मैं सिर्फ टी यह फोन नहीं है। 341 00:15:02,230 --> 00:15:05,260 या मैं एक पूरी गुच्छा चाहते हैं छात्रों की, क्यों मैं अभी नहीं है 342 00:15:05,260 --> 00:15:09,740 मैं के एक पूरे वर्ग का कहना है कि छात्रों, और यह उनमें से तीन है। 343 00:15:09,740 --> 00:15:12,470 दूसरे शब्दों में, मैं क्यों नहीं आ सकते हैं कहा जाता मेरे अपने डेटा प्रकार, के साथ 344 00:15:12,470 --> 00:15:15,641 छात्र, जो अंदर है एक नाम, एक आईडी है एक छात्रावास है, 345 00:15:15,641 --> 00:15:16,890 अन्य क्षेत्रों के किसी भी नंबर है। 346 00:15:16,890 --> 00:15:19,030 और यह आप पता चला है वास्तव में ऐसा कर सकते हैं। 347 00:15:19,030 --> 00:15:21,850 >> इतनी सी संरचना नामक इस सुविधा है। 348 00:15:21,850 --> 00:15:24,700 एक भाषा है कि सुविधा है कि हमें वास्तव में यह करने के लिए अनुमति देता है। 349 00:15:24,700 --> 00:15:28,370 मैं आगे जाने के लिए जा रहा हूँ और structs.h ऊपर खुला 350 00:15:28,370 --> 00:15:32,299 हम यह देखने के लिए जा रहे हैं, जहां एक छात्र की परिभाषा के बाद। 351 00:15:32,299 --> 00:15:35,215 यह पता चला है - और यह एक भी है एक आईडी से जुड़े एक की तुलना में आसान 352 00:15:35,215 --> 00:15:36,080 एक क्षण पहले। 353 00:15:36,080 --> 00:15:39,120 आप के साथ आना चाहते हैं अपने घर का डेटा प्रकार, 354 00:15:39,120 --> 00:15:42,750 और int के अलावा, और चार में और मौजूद हैं, और यह कि इन सभी दूसरों फ्लोट 355 00:15:42,750 --> 00:15:45,810 तुम सचमुच करके ऐसा कर सकते typedef struct लेखन, 356 00:15:45,810 --> 00:15:47,880 फिर कुछ घुंघराले ब्रेसिज़, जो के अंदर आप 357 00:15:47,880 --> 00:15:51,460 यदि आप चाहते चर सूची इस नए कस्टम डेटा के साथ सहयोगी 358 00:15:51,460 --> 00:15:55,670 एक नाम और एक छात्रावास की तरह टाइप करें, और फिर घुंघराले ब्रेसिज़ के बाद 359 00:15:55,670 --> 00:15:57,860 आप नए डेटा प्रकार के लिए एक नाम देना। 360 00:15:57,860 --> 00:15:59,220 तो, उदाहरण के लिए, छात्र। 361 00:15:59,220 --> 00:16:03,247 >> और क्या अब इस बारे में अच्छा है कि है हम इसी कोड को देखो, 362 00:16:03,247 --> 00:16:05,080 पहला सम्मेलन, सभी को, इस डाल करने के लिए है 363 00:16:05,080 --> 00:16:08,230 एक फाइल में कुछ कहा डॉट ज में, हम नहीं है जो एक हेडर फाइल, 364 00:16:08,230 --> 00:16:09,780 बहुत ज्यादा खुद इस्तेमाल शुरू कर दिया। 365 00:16:09,780 --> 00:16:12,120 लेकिन हम शुरू करने के लिए जा रहे हैं अब काफी एक बिट का उपयोग। 366 00:16:12,120 --> 00:16:18,650 और हम इस के साथ क्या कर सकते हैं, अंत में, कोड के इन कुछ पंक्तियों में 367 00:16:18,650 --> 00:16:22,130 ठीक है कि घोषित किया गया है डेटा प्रकार, एक छात्र। 368 00:16:22,130 --> 00:16:23,230 और अब इसका इस्तेमाल करते हैं। 369 00:16:23,230 --> 00:16:27,274 >> मैं अब में जाने के लिए जा रहा हूँ एक फ़ाइल structs1.c बुलाया। 370 00:16:27,274 --> 00:16:29,440 दो और एक पर एक नजर डालते हैं यहाँ कुछ विशेषताओं। 371 00:16:29,440 --> 00:16:32,250 तो यहाँ सामान है ज्यादातर परिचित है, और हम करेंगे 372 00:16:32,250 --> 00:16:35,040 क्या नहीं है वापस आने के लिए बस एक पल में परिचित। 373 00:16:35,040 --> 00:16:39,880 निश्चित रूप से यह मेरा अपना है सहित के रूप में अच्छी तरह से नया है जो हेडर फाइल, 374 00:16:39,880 --> 00:16:42,580 pset 3, जहां के लिए छोड़कर, याद है, हम helpers.h है। 375 00:16:42,580 --> 00:16:45,150 तो अगर आप # शामिल helpers.h याद हो सकता है। 376 00:16:45,150 --> 00:16:49,381 >> क्यों, हालांकि मैं उद्धरण का उपयोग कर रहा हूँ बजाय कोणीय कोष्ठक की? 377 00:16:49,381 --> 00:16:50,630 जब मैं उन दोनों के बीच चयन करते हैं? 378 00:16:50,630 --> 00:16:52,310 लगभग हमेशा की तरह मैं प्रतीत कोणीय कोष्ठक का उपयोग करने के लिए। 379 00:16:52,310 --> 00:16:55,040 और फिर, एक के सभी अचानक पर लाइन छह मैं डबल उद्धरण का उपयोग कर रहा हूँ। 380 00:16:55,040 --> 00:16:55,860 क्यों कि हो सकता है? 381 00:16:55,860 --> 00:16:56,700 हाँ? 382 00:16:56,700 --> 00:16:57,725 >> दर्शकों: [अश्राव्य] 383 00:16:57,725 --> 00:16:59,350 डेविड जे मालन: यही कारण है कि क्या एक वास्तविक है? 384 00:16:59,350 --> 00:17:00,559 दर्शकों: वह अपने आईडीई में है। 385 00:17:00,559 --> 00:17:02,475 डेविड जे मालन: हाँ, कि मेरी वास्तविक आईडीई में है। 386 00:17:02,475 --> 00:17:05,690 और, क्योंकि आईडीई पर ध्यान केन्द्रित करना नहीं जाने कि सिर्फ मैं उपयोग कर रहा हूँ कि एक उपकरण है। 387 00:17:05,690 --> 00:17:08,119 यही कारण है कि मेरे वर्तमान में है निर्देशिका, विशेष रूप से। 388 00:17:08,119 --> 00:17:11,647 तो structs.h मेरी अपनी फ़ाइल है आईडीई में स्थापित नहीं, 389 00:17:11,647 --> 00:17:14,480 ऑपरेटिंग सिस्टम अपने आप में, बल्कि यह मेरे वर्तमान निर्देशिका में है। 390 00:17:14,480 --> 00:17:16,910 इसलिए सम्मेलन अगर आप चाहते है अपने खुद के हैडर फ़ाइल शामिल करने के लिए, 391 00:17:16,910 --> 00:17:18,200 आप बस डबल उद्धरण का उपयोग करें। 392 00:17:18,200 --> 00:17:23,290 >> हम में इस बात को कहते हैं क्या लाइन 8, आम तौर पर बोल? 393 00:17:23,290 --> 00:17:25,200 यह क्या है? 394 00:17:25,200 --> 00:17:28,220 #define कुछ। 395 00:17:28,220 --> 00:17:31,040 यह सही है, स्थिरांक प्रतिनिधित्व करता है? 396 00:17:31,040 --> 00:17:33,140 आप एक के लिए करना चाहते हैं अपने कार्यक्रम में मूल्य 397 00:17:33,140 --> 00:17:35,110 आप एक पूरे का उपयोग करने वाले समय का गुच्छा, यह है 398 00:17:35,110 --> 00:17:39,330 , यह बाहर कारक के लिए सम्मेलन अच्छा हैश प्रतीक के साथ, यह घोषणा 399 00:17:39,330 --> 00:17:43,340 सभी में, परंपरा से, फिर, परिभाषित ऐसा नहीं है, हालांकि word-- अपरकेस 400 00:17:43,340 --> 00:17:45,320 सख्ती जरूरी है, लेकिन यह मानव परंपरा है 401 00:17:45,320 --> 00:17:47,210 स्थिरांक भुनाने के लिए वे बाहर कूद तो यह है कि 402 00:17:47,210 --> 00:17:50,380 आप अंतरिक्ष visually-- पर और उसके बाद आप चाहते मूल्य होना 403 00:17:50,380 --> 00:17:52,250 कि निरंतर के नाम करने के लिए बराबर है। 404 00:17:52,250 --> 00:17:56,110 कोई अर्धविराम, लेकिन बस आप वहाँ उस पैटर्न का पालन करें। 405 00:17:56,110 --> 00:17:57,770 >> तो क्या मैं इस वास्तविक कोड में क्या कर रही हूं। 406 00:17:57,770 --> 00:18:00,660 तो चलो पर एक नजर डालते हैं यहां मुख्य कार्यक्रम। 407 00:18:00,660 --> 00:18:04,080 12 लाइन में मैं क्योंकि structs.h को शामिल किया है, 408 00:18:04,080 --> 00:18:06,492 मैं अब पर जादुई है मेरी निपटान के लिए एक नया डेटा प्रकार। 409 00:18:06,492 --> 00:18:09,200 मैं तो बस, पूर्णांक के लिए पहुँच नहीं है और चार, और नाव, और स्ट्रिंग, 410 00:18:09,200 --> 00:18:10,060 और नीले और अन्य शामिल हैं। 411 00:18:10,060 --> 00:18:12,470 मैं अब तक पहुँच एक छात्र के डेटा प्रकार। 412 00:18:12,470 --> 00:18:17,740 12 लाइन में, मैं दो के संयोजन हूँ तो , एक एक कस्टम डेटा प्रकार और दो ideas-- 413 00:18:17,740 --> 00:18:18,940 एक सरणी का उपयोग। 414 00:18:18,940 --> 00:18:21,700 और इसलिए इस कार्यक्रम यदि में मैं वास्तव में समर्थन करना चाहते हैं 415 00:18:21,700 --> 00:18:24,320 तीन अलग-अलग छात्रों मेरे कार्यक्रम में, मैं 416 00:18:24,320 --> 00:18:30,480 मुझे एक चर देने का कहना है कि बस कर सकते हैं जिनमें से प्रत्येक बुलाया छात्रों, 417 00:18:30,480 --> 00:18:32,970 प्रकार छात्रों की है जो मेरे कस्टम डेटा प्रकार है। 418 00:18:32,970 --> 00:18:35,890 और, विशेष रूप से, मुझे दे अपने सरणी में उन लोगों में से तीन। 419 00:18:35,890 --> 00:18:37,750 >> तो अब हम इस कार्यक्रम में क्या करते हो? 420 00:18:37,750 --> 00:18:40,670 यहाँ सिर्फ एक पाश पुनरावृति के लिए है क्योंकि है कि, 0-3 421 00:18:40,670 --> 00:18:42,110 छात्रों का मूल्य क्या है। 422 00:18:42,110 --> 00:18:44,420 मैं सिर्फ उपयोगकर्ता उत्साह रहा हूँ मुझे छात्र का नाम देते हैं। 423 00:18:44,420 --> 00:18:48,090 और फिर लाइन 17 में, हम एक ज्यादातर परिचित लाइन है। 424 00:18:48,090 --> 00:18:50,370 हम अपने पुराने दोस्त है सही पर GetString। 425 00:18:50,370 --> 00:18:52,345 वाक्य रचना की और क्या टुकड़ा , जाहिरा तौर पर नया है 426 00:18:52,345 --> 00:18:55,130 इससे पहले कि आप सी में प्रोग्राम कभी नहीं किया है, और structs का इस्तेमाल नहीं किया? 427 00:18:55,130 --> 00:18:55,510 हाँ? 428 00:18:55,510 --> 00:18:56,417 >> दर्शकों: .name। 429 00:18:56,417 --> 00:18:57,500 डेविड जे मालन: .name। 430 00:18:57,500 --> 00:19:01,220 लेकिन यह एक छलांग के बहुत ज्यादा नहीं है अब छात्रों को मैं ब्रैकेट क्योंकि 431 00:19:01,220 --> 00:19:02,590 आप मैं वें छात्र देता है। 432 00:19:02,590 --> 00:19:04,730 और तुम गोता लगाने के लिए चाहते हैं कि संरचना के अंदर, 433 00:19:04,730 --> 00:19:09,490 आप सिर्फ एक ही अवधि का उपयोग करें और फिर अंदर चर का नाम, 434 00:19:09,490 --> 00:19:11,900 या कि अंदर संपत्ति आप के लिए उपयोग करना चाहते हैं। 435 00:19:11,900 --> 00:19:14,816 इसी तरह, फिर मैं तो शीघ्र उपयोगकर्ता, मुझे छात्र के छात्रावास दे, 436 00:19:14,816 --> 00:19:18,390 आप इसी तरह से है कि स्टोर कर सकते हैं अंदर छात्रावास चर में स्ट्रिंग 437 00:19:18,390 --> 00:19:19,940 उस छात्र संरचना की। 438 00:19:19,940 --> 00:19:21,410 >> और अब एक छोटी चीजें फैंसी मिलता है। 439 00:19:21,410 --> 00:19:24,420 और यह देखने के लिए जा रहा है शायद एक बहुत पर काफी जल्द ही। 440 00:19:24,420 --> 00:19:27,970 लेकिन अगर आप pset में यह कहीं अधिक देखेंगे 4, तो अब उस पर बस नज़र चलो। 441 00:19:27,970 --> 00:19:33,364 यह लाइन 23 में के माध्यम से पता चला है कि 38, तुम्हें पता है मैं शायद कर रहा हूँ क्या लगता है? 442 00:19:33,364 --> 00:19:35,530 मैं टिप्पणी को हटा दिया है आज, लेकिन संस्करण के लिए 443 00:19:35,530 --> 00:19:38,660 ऑनलाइन कोड की संदर्भ सभी टिप्पणी की है। 444 00:19:38,660 --> 00:19:40,171 मैं क्या कर रही हो क्या लगते हैं? 445 00:19:40,171 --> 00:19:42,530 >> दर्शकों: सभी के साथ फ़ाइल सहेजा जा रहा है उपयोगकर्ता प्रवेश किया है कि जानकारी। 446 00:19:42,530 --> 00:19:44,530 >> डेविड जे मालन: हाँ, वास्तव में, यह एक नया तरीका है 447 00:19:44,530 --> 00:19:46,370 हम दो को देख रहे हैं कि, सी की एक और विशेषता है, 448 00:19:46,370 --> 00:19:48,700 जिससे मैं अपनी खुद की फाइल बना सकते हैं। 449 00:19:48,700 --> 00:19:51,580 इस प्रकार अब तक, लगभग हर कार्यक्रम लिखा है आप राज्यविहीन है। 450 00:19:51,580 --> 00:19:53,334 जैसे ही यह चल रहा हो चुका है, के रूप में यह बात है। 451 00:19:53,334 --> 00:19:55,000 कोई स्मृति या यह की याद नहीं है। 452 00:19:55,000 --> 00:19:56,110 बचाया कोई फाइल नहीं है। 453 00:19:56,110 --> 00:19:58,120 लेकिन अगर आप करना चाहते हैं है कि इनपुट बचा 454 00:19:58,120 --> 00:20:02,100 एक खेल या एक कार्यक्रम में की तरह, क्या हुआ इस तरह, यह हम ऐसा कर सकते हैं पता चला है। 455 00:20:02,100 --> 00:20:04,360 और अगर आप इस अधिक देखेंगे pset 4 और धारा में। 456 00:20:04,360 --> 00:20:08,661 लेकिन इस लाइन 23 अनिवार्य students.csv नामक एक फ़ाइल बनाता है। 457 00:20:08,661 --> 00:20:10,160 और तुम से पहले यह देखा हो सकता है। 458 00:20:10,160 --> 00:20:14,250 इससे पहले कि आप सीएस का अध्ययन नहीं किया है, तो भी सीएसवी अल्पविराम से अलग चर है। 459 00:20:14,250 --> 00:20:19,000 यह एक बहुत ही गरीब आदमी की तरह है एक एक्सेल फ़ाइल का संस्करण 460 00:20:19,000 --> 00:20:22,270 जो इसे खोला जा सकता है कि इसका मतलब है एक्सेल में और एप्पल संख्या में, 461 00:20:22,270 --> 00:20:23,830 और यह पंक्तियों और कॉलम है। 462 00:20:23,830 --> 00:20:26,485 लेकिन यह एक स्वामित्व नहीं है माइक्रोसॉफ्ट या एप्पल की तरह प्रारूप। 463 00:20:26,485 --> 00:20:29,840 अलग सिर्फ अल्पविराम है हम एक पल में देखेंगे कि मानों। 464 00:20:29,840 --> 00:20:31,010 >> और सिर्फ एक अनुमान ले। 465 00:20:31,010 --> 00:20:33,480 बहुत से लाइन 23 में अंत में, मेरी दूसरी तर्क 466 00:20:33,480 --> 00:20:37,700 कहा जाता है इस नए कार्य करने के लिए च फ़ाइल को खोलने के लिए खुला w है। 467 00:20:37,700 --> 00:20:39,430 डब्ल्यू क्या निरूपित हो सकता है? 468 00:20:39,430 --> 00:20:40,022 हाँ? 469 00:20:40,022 --> 00:20:41,260 >> दर्शकों: यह आपको फ़ाइल में लिखने की सुविधा देता है? 470 00:20:41,260 --> 00:20:42,630 >> डेविड जे मालन: यह सुविधा देता है आप फाइल करने के लिए लिखें। 471 00:20:42,630 --> 00:20:44,810 तो वेरिएंट की एक जोड़ी है कि हम यहाँ में प्लग कर सकते हैं। 472 00:20:44,810 --> 00:20:47,184 लेकिन अगर आप सिर्फ पढ़ने के लिए चाहते हैं फ़ाइल, कि इसे देखो है 473 00:20:47,184 --> 00:20:50,010 और, स्मृति में आप इसे पढ़ सिर्फ बोली गंदें शब्द बोलना 'आर' का उपयोग करें। 474 00:20:50,010 --> 00:20:53,110 आप को लिखने के लिए चाहते हैं फ़ाइल, आप "डब्ल्यू" गंदें शब्द बोलना उद्धरण का उपयोग करें। 475 00:20:53,110 --> 00:20:55,190 वहाँ भी संलग्न है और अन्य चीजों की एक जोड़ी 476 00:20:55,190 --> 00:20:57,356 आप मौजूदा फ़ाइलों को संशोधित करने के लिए चाहते हैं। 477 00:20:57,356 --> 00:21:00,480 अब हम यह देख रखने के लिए जा रहे हैं 24 लाइन के लिए बात है, तो हम वापस आ जाएंगे। 478 00:21:00,480 --> 00:21:02,640 रिक्त, यह पता चला है, एक विशेष मूल्य कि 479 00:21:02,640 --> 00:21:06,070 कुछ कार्यों से लौटा जा सकता है कुछ wrong-- चला गया है 480 00:21:06,070 --> 00:21:08,490 फ़ाइल मौजूद नहीं है, आप स्मृति से बाहर चला गया है, 481 00:21:08,490 --> 00:21:09,620 अन्य त्रुटियों की या एक गुच्छा। 482 00:21:09,620 --> 00:21:13,470 लेकिन अब के लिए, चलो बस यह मान लेते हैं कि सिर्फ पारंपरिक त्रुटि जाँच है। 483 00:21:13,470 --> 00:21:17,090 यहाँ लाइन 26 में, मैं पुनरावृति कर रहा हूँ 0 से अपने सभी छात्रों के ऊपर से 3। 484 00:21:17,090 --> 00:21:20,470 और इस तरह की तरह है एक नया समारोह का, fprintf, 485 00:21:20,470 --> 00:21:21,460 लेकिन सिर्फ एक अनुमान ले। 486 00:21:21,460 --> 00:21:24,370 Printf सिर्फ प्रिंट है एक स्वरूपित स्ट्रिंग, 487 00:21:24,370 --> 00:21:26,507 fprintf शायद क्या मतलब है? 488 00:21:26,507 --> 00:21:27,590 दर्शकों: एक फाइल करने के लिए प्रिंट। 489 00:21:27,590 --> 00:21:29,290 डेविड जे मालन: प्रिंट एक फाइल करने के लिए स्वरूपित स्ट्रिंग। 490 00:21:29,290 --> 00:21:31,180 यही कारण है कि अतिरिक्त क्या है च साधन फाइल है। 491 00:21:31,180 --> 00:21:36,420 और नए पहला तर्क हो गया है आपकी फ़ाइल का प्रतिनिधित्व करता है कि चर। 492 00:21:36,420 --> 00:21:38,866 तो फिर हम सिर्फ एक स्वरूप है सिर्फ printf की तरह स्ट्रिंग। 493 00:21:38,866 --> 00:21:40,740 और यहां तक ​​कि हालांकि इस वाक्य रचना इस बस, नया है 494 00:21:40,740 --> 00:21:44,610 छात्र का नाम में प्लग का मतलब है, छात्र छात्रावास में प्लग, और उसके बाद 495 00:21:44,610 --> 00:21:47,160 fclose साथ फ़ाइल बंद करें। 496 00:21:47,160 --> 00:21:49,730 और फिर यह नया है lastly-- और हम यह करने के लिए वापस आ गया हूँ 497 00:21:49,730 --> 00:21:53,240 मैं मुक्त कराने रहा हूँ long-- से पहले कारणों के लिए छात्र 498 00:21:53,240 --> 00:21:54,860 कि वहाँ के ऊपर हुआ। 499 00:21:54,860 --> 00:21:56,820 लेकिन हम वापस आ गया हूँ कि करने के लिए long-- से पहले 500 00:21:56,820 --> 00:21:59,820 कि क्योंकि GetString है कैसे की है वास्तव में हुड के नीचे काम कर रहे हैं। 501 00:21:59,820 --> 00:22:01,280 >> तो चलो यहाँ एक त्वरित नज़र रखना। 502 00:22:01,280 --> 00:22:04,380 मैं अपनी निर्देशिका में रास लिखते हैं, तो मैं नहीं जानता कि नोटिस 503 00:22:04,380 --> 00:22:09,360 , students.csv नामक एक फाइल है बस वहाँ नहीं, मौजूद नहीं है। 504 00:22:09,360 --> 00:22:14,965 अब मैं इस कार्यक्रम को संकलित हैं तो, , structs -1 बनाते हैं। / Structs -1, 505 00:22:14,965 --> 00:22:20,570 और मुझे आगे जाना है और में टाइप करने के लिए जा रहा हूँ येल में बर्कले में रहता है, जो एंडी। 506 00:22:20,570 --> 00:22:26,350 हम लूटने के लिए जा रहे हैं, जो इन दिनों थायर में रहती है। 507 00:22:26,350 --> 00:22:33,760 और चलो, जहां के साथ आते हैं है, मुझे लगता है, मारिया, माथर में है 508 00:22:33,760 --> 00:22:35,100 अगर मैं सही ढंग से याद किया है। 509 00:22:35,100 --> 00:22:36,460 >> तो कुछ भी नहीं होने जा रहा है। 510 00:22:36,460 --> 00:22:40,680 लेकिन मैं अब रास टाइप करते हैं, students.csv है। 511 00:22:40,680 --> 00:22:43,080 आगे और खुले students.csv चलते हैं। 512 00:22:43,080 --> 00:22:46,050 यह फिर से एक बहुत है हल्के फ़ाइल स्वरूप। 513 00:22:46,050 --> 00:22:49,570 लेकिन मैं तो बस एक सम्मेलन को अपनाया है कि मैं यहाँ दो पंक्तियों और स्तंभों की है। 514 00:22:49,570 --> 00:22:52,020 प्रथम स्तंभ है लोगों का पहला नाम। 515 00:22:52,020 --> 00:22:55,740 दूसरे स्तंभ छात्र की है छात्रावास, या कॉलेज, या घर, या whatnot। 516 00:22:55,740 --> 00:22:57,900 और अब मैं इस बचा लिया स्थायी रूप से एक फाइल में। 517 00:22:57,900 --> 00:22:59,280 >> तो यह है कि सभी दिलचस्प नहीं है। 518 00:22:59,280 --> 00:23:02,980 लेकिन यह सिर्फ एक कदम पत्थर है अब जानकारी जारी रहती है करने में सक्षम होने के लिए 519 00:23:02,980 --> 00:23:04,040 स्थायी रूप से। 520 00:23:04,040 --> 00:23:08,340 तो अब क्या अधिक हम कर सकते हैं चलो देखते हैं इन और अन्य सुविधाओं के साथ करते हैं। 521 00:23:08,340 --> 00:23:10,729 लेकिन पहले, कोई सवाल? 522 00:23:10,729 --> 00:23:12,145 यही कारण है कि एक बहुत कुछ था, और कहा कि तेजी से गया था। 523 00:23:12,145 --> 00:23:16,131 लेकिन अगर आप एक बहुत देखेंगे pset 4 में अधिक है, के रूप में अच्छी तरह से। 524 00:23:16,131 --> 00:23:16,630 हाँ? 525 00:23:16,630 --> 00:23:19,360 >> दर्शकों: एक तरह से करने के लिए है उस फ़ाइल को नाम जोड़ने जारी रखें? 526 00:23:19,360 --> 00:23:19,880 >> डेविड जे मालन: अच्छा सवाल है। 527 00:23:19,880 --> 00:23:21,800 जारी रखने के लिए एक रास्ता है उस फ़ाइल को नाम जोड़ने? 528 00:23:21,800 --> 00:23:22,340 हाँ। 529 00:23:22,340 --> 00:23:24,630 और, वास्तव में, आप खत्म हो, तो ऊपर, फाइल फिर से खोलने 530 00:23:24,630 --> 00:23:26,780 आप बोली का प्रयोग करेंगे गंदें शब्द बोलना "एक" संलग्न के लिए, 531 00:23:26,780 --> 00:23:31,090 जो सिर्फ एक नई लाइन जोड़ होता है, एक नई लाइन फिर से और फिर, बिल्कुल। 532 00:23:31,090 --> 00:23:32,010 अच्छा प्रश्न। 533 00:23:32,010 --> 00:23:32,950 अन्य सवाल? 534 00:23:32,950 --> 00:23:33,450 हाँ? 535 00:23:33,450 --> 00:23:35,580 दर्शकों: आप भागा कार्यक्रम फिर से अब ठीक है, 536 00:23:35,580 --> 00:23:38,000 यह करने के लिए नामों को जोड़कर रखना होगा फाइल या यह एक नई फ़ाइल को खोलने के लिए होगा? 537 00:23:38,000 --> 00:23:38,740 >> डेविड जे मालन: आह, अच्छा सवाल है। 538 00:23:38,740 --> 00:23:41,448 आप फिर से सही कार्यक्रम में भाग गया तो अब, शायद नए नामों में लिखा है, 539 00:23:41,448 --> 00:23:44,820 यह फाइल को जोड़ना होगा या फ़ाइल के ऊपर लिख? 540 00:23:44,820 --> 00:23:47,420 उत्तरार्द्ध, मैं कर रहा हूँ क्योंकि संलग्न मोड का उपयोग नहीं। 541 00:23:47,420 --> 00:23:49,930 और मैं बस आँख बंद करके हूँ क्योंकि लिखने के लिए फ़ाइल खोलने, 542 00:23:49,930 --> 00:23:51,310 यह सिर्फ फ़ाइल अधिलेखित करने के लिए जा रहा है। 543 00:23:51,310 --> 00:23:54,570 इसलिए मैं वास्तव में संलग्न है क्या करने की आवश्यकता होगी, मैं वास्तव में एक लंबी अवधि के लिए करना चाहते हैं 544 00:23:54,570 --> 00:23:55,350 डेटाबेस। 545 00:23:55,350 --> 00:23:58,220 >> अब सीएसवी भी, सच में, उपयोगी है के लिए आप की तरह कर रहे हैं writing-- 546 00:23:58,220 --> 00:24:00,100 और हम अंत में यह देखेंगे बाद में जब सेमेस्टर में 547 00:24:00,100 --> 00:24:01,455 हम अन्य प्रयोजनों के लिए CSVs का उपयोग करें। 548 00:24:01,455 --> 00:24:04,920 आप लोगों के सभी स्टोर करना चाहते हैं जो, किसी घटना के लिए दर्ज कर लिया है 549 00:24:04,920 --> 00:24:07,420 या अपने छात्र के लिए साइन अप समूह, या ऐसा कुछ, 550 00:24:07,420 --> 00:24:10,330 इस तरह के डेटा भंडारण प्रारूप के सुपर सुविधाजनक है। 551 00:24:10,330 --> 00:24:12,580 सचमुच, क्योंकि मुझे लगता है, तो इस फाइल को डाउनलोड करने के लिए थे। 552 00:24:12,580 --> 00:24:14,540 मैं double-- सकता है और वास्तव में यह कोशिश करते हैं 553 00:24:14,540 --> 00:24:16,720 मैं यहाँ पर एक्सेल या संख्या है। 554 00:24:16,720 --> 00:24:19,130 >> मैं सही क्लिक करने के लिए जा रहा हूँ या मेरी फाइल नियंत्रण क्लिक करें। 555 00:24:19,130 --> 00:24:20,020 वूप्स। 556 00:24:20,020 --> 00:24:21,830 राइट-क्लिक करें या मेरी फाइल नियंत्रण क्लिक करें। 557 00:24:21,830 --> 00:24:24,960 चलो, मेरे माउस सहयोग नहीं कर रहा है। 558 00:24:24,960 --> 00:24:32,694 मैं जा रहा हूँ Download-- तो यहाँ सभी फ़ाइलों को डाउनलोड 559 00:24:32,694 --> 00:24:33,860 अभी तो मैं इस एक हड़पने कर सकते हैं। 560 00:24:33,860 --> 00:24:37,850 और यह काम करता है, तो चलो देखते हैं students.csv-- पहली बार 561 00:24:37,850 --> 00:24:39,310 मैं सक्रिय कर दिया है। 562 00:24:39,310 --> 00:24:41,360 अब वे अपने संपर्कों देखना चाहते हैं। 563 00:24:41,360 --> 00:24:44,310 अब, मुझे पंजीकरण की आवश्यकता है। 564 00:24:44,310 --> 00:24:47,620 यह CSVs का उपयोग करने के लिए कितना आसान है? 565 00:24:47,620 --> 00:24:50,840 हाँ, आज तक इसे जारी रखो। 566 00:24:50,840 --> 00:24:52,375 ठीक है, अब हम वर्ग के लिए तैयार कर रहे हैं। 567 00:24:52,375 --> 00:24:58,750 568 00:24:58,750 --> 00:25:00,370 ओह, ठीक है, इसमें नया क्या है? 569 00:25:00,370 --> 00:25:02,920 ठीक है, करीब है। 570 00:25:02,920 --> 00:25:04,750 यही कारण है कि जादुई था। 571 00:25:04,750 --> 00:25:07,280 ठीक है, अब हम अद्यतन करने के लिए है। 572 00:25:07,280 --> 00:25:10,890 और अब, यह क्या भूल गया मैं मूल रूप से खोला फ़ाइल, 573 00:25:10,890 --> 00:25:13,090 लेकिन वहाँ एक-- क्या हम चले। 574 00:25:13,090 --> 00:25:16,341 ठीक है, तो अब हम एक एक्सेल फ़ाइल है। 575 00:25:16,341 --> 00:25:18,290 धन्यवाद। 576 00:25:18,290 --> 00:25:20,764 >> ठीक है, मैंने किया था तो क्या आसान हिस्सा था। 577 00:25:20,764 --> 00:25:23,930 बेशक मैं पहले से स्थापित हो सकता था एक्सेल, या संख्याओं, या जो भी कार्यक्रम। 578 00:25:23,930 --> 00:25:25,846 लेकिन इस वजह से अच्छा है, अब मैं हेरफेर कर सकते हैं 579 00:25:25,846 --> 00:25:28,090 एक मानक प्रारूप में डेटा। 580 00:25:28,090 --> 00:25:30,294 >> तो अब चलो संदर्भ हम कहाँ दूर छोड़ दिया करने के लिए स्विच 581 00:25:30,294 --> 00:25:32,710 शुरू करने के लिए था, जो पिछली बार, प्रशिक्षण के पहियों से दूर ले जाना। 582 00:25:32,710 --> 00:25:34,543 लेकिन पहले, तुम नहीं किया यह पहले दोपहर के भोजन देखना 583 00:25:34,543 --> 00:25:38,150 फिर से आग पर यहाँ क्या हो रहा है और न्यू हेवन में कैम्ब्रिज, सितार में बर्फ। 584 00:25:38,150 --> 00:25:43,150 ASAP के CS50s वेबसाइट पर साइन अप CS50 छात्रों और कर्मचारियों के शामिल होने का। 585 00:25:43,150 --> 00:25:46,090 >> इसलिए हम प्रशिक्षण के पहियों में ले लिया सोमवार को बंद follows-- के रूप में 586 00:25:46,090 --> 00:25:49,120 स्ट्रिंग में घोषित किया गया है कुछ समय के लिए CS50s पुस्तकालय। 587 00:25:49,120 --> 00:25:52,650 यह अनुमति देता है और क्योंकि यह अच्छा है हमें होने के रूप में चर के बारे में बात करने के लिए 588 00:25:52,650 --> 00:25:54,660 पूरा शब्दों और वाक्यों और अधिक। 589 00:25:54,660 --> 00:25:56,710 लेकिन यह मौजूद नहीं है स्ट्रिंग पता चला है। 590 00:25:56,710 --> 00:26:00,200 वह सिर्फ एक पर्याय, या एक उपनाम है, हम कुछ के लिए बनाया है कि कि 591 00:26:00,200 --> 00:26:03,780 वास्तव में एक छोटे से अधिक है तकनीकी * एक चार बुलाया। 592 00:26:03,780 --> 00:26:07,900 >> और वास्तव में, हम एक उदाहरण देखा सोमवार को एक कार्यक्रम का 593 00:26:07,900 --> 00:26:11,200 कि हम उम्मीद काफी के रूप में व्यवहार नहीं किया था। 594 00:26:11,200 --> 00:26:13,630 इस तुलना -0, फाइल था। 595 00:26:13,630 --> 00:26:17,910 और अगर, कि तुलना -0 याद मैं सोमवार को कार्यक्रम कंपाइल 596 00:26:17,910 --> 00:26:22,670 और रन-0 की तुलना में और माँ में टाइप फिर छोटे अक्षरों में लोअरकेस, और माँ। 597 00:26:22,670 --> 00:26:25,320 कार्यक्रम मैं जोर दिया अलग अलग बातें टाइप करें, 598 00:26:25,320 --> 00:26:29,210 यहां तक ​​कि माँ, सभी में यद्यपि लोअरकेस, नेत्रहीन समान है। 599 00:26:29,210 --> 00:26:31,990 तो कम जवाब क्या था कंप्यूटर सोचता है कि क्यों के लिए 600 00:26:31,990 --> 00:26:34,500 उन दो तार अलग कर रहे हैं? 601 00:26:34,500 --> 00:26:35,250 हाँ? 602 00:26:35,250 --> 00:26:36,534 >> दर्शकों: [अश्राव्य] 603 00:26:36,534 --> 00:26:37,450 डेविड जे मालन: ठीक है। 604 00:26:37,450 --> 00:26:39,600 तो, माँ, पहली बार मैं जा रहा है, उस में टाइप 605 00:26:39,600 --> 00:26:42,710 मेरे कंप्यूटर में कहीं संग्रहीत स्मृति लेकिन एक अलग स्थान में 606 00:26:42,710 --> 00:26:44,690 दूसरी बार की तुलना में मैं माँ में टाइप करें। 607 00:26:44,690 --> 00:26:46,580 अब यह निश्चित रूप से अनुकूलित किया जा सकता है। 608 00:26:46,580 --> 00:26:49,205 कंप्यूटर स्मार्ट हो सकता है और , अरे, ये दो तारों का एहसास 609 00:26:49,205 --> 00:26:49,954 वे समान हैं। 610 00:26:49,954 --> 00:26:51,520 मुझे प्रचुरता से यह दुकान नहीं करते हैं। 611 00:26:51,520 --> 00:26:54,229 लेकिन कंप्यूटर ऐसा नहीं करते अनुकूलन आप उन्हें बता जब तक। 612 00:26:54,229 --> 00:26:56,061 तो, डिफ़ॉल्ट रूप से, वे कर रहे हैं बस खत्म हो जा 613 00:26:56,061 --> 00:26:57,670 स्मृति में दो अलग-अलग स्थानों में। 614 00:26:57,670 --> 00:27:01,570 और हां, जब अधिक स्पष्ट करने की हम दो तार की तुलना 615 00:27:01,570 --> 00:27:03,950 पहले कहा जाता था, एस, दूसरी बुलाया गया था 616 00:27:03,950 --> 00:27:08,530 टी, विशेष रूप से मैं क्या था 13 लाइन पर यहाँ की तुलना? 617 00:27:08,530 --> 00:27:09,494 हाँ। 618 00:27:09,494 --> 00:27:12,390 >> दर्शकों: यह स्मृति में जगह चर के लिए बात करेंगे कि। 619 00:27:12,390 --> 00:27:14,900 >> डेविड जे मालन: वास्तव में, मैं था स्मृति में जगह की तुलना 620 00:27:14,900 --> 00:27:16,300 कि उन चर की ओर इशारा किया। 621 00:27:16,300 --> 00:27:20,560 इसलिए विशेष रूप से, यदि माँ पर था बाइट नंबर 1, और 2, और 3, 622 00:27:20,560 --> 00:27:24,020 और 4-- क्योंकि बैकस्लैश याद 0 अंत में सभी तरह से होने की जरूरत है। 623 00:27:24,020 --> 00:27:29,420 और माँ, एम-ओ-मीटर के अन्य उदाहरण, पता 10, 11, 12, और 13 पर था। 624 00:27:29,420 --> 00:27:33,100 मैं एक तुलना था, उस पते, स्मृति में उस स्थान, 625 00:27:33,100 --> 00:27:35,160 10 के खिलाफ, जो है स्पष्ट रूप से नहीं एक ही है। 626 00:27:35,160 --> 00:27:36,260 1 10 नहीं है। 627 00:27:36,260 --> 00:27:39,620 >> तो यह है कि में अच्छा है यह बहुत स्पष्ट है। 628 00:27:39,620 --> 00:27:42,870 लेकिन यह insofar के रूप में समस्याग्रस्त है हम तार की तुलना करने के लिए प्रतीत नहीं कर सकते। 629 00:27:42,870 --> 00:27:44,930 तो fundamentally-- और यह निम्न स्तर पर, 630 00:27:44,930 --> 00:27:47,300 आप को लागू करना चाहता था एक कार्यक्रम तुलना करने के लिए 631 00:27:47,300 --> 00:27:50,270 दो अलग-अलग शब्द है कि उपयोगकर्ता, गुणवत्ता के लिए में टाइप किया गया है 632 00:27:50,270 --> 00:27:53,944 वे के लिए चार लाइन अप करना सिर्फ सामान्य शब्दों में चार, 633 00:27:53,944 --> 00:27:55,360 क्या हम जाहिरा तौर पर ऐसा करने की क्या ज़रूरत है? 634 00:27:55,360 --> 00:27:57,940 यह सिर्फ करने के लिए पर्याप्त नहीं है उन दो पतों पर दिखेगा। 635 00:27:57,940 --> 00:27:58,860 हमें क्या करना होगा? 636 00:27:58,860 --> 00:27:59,360 हाँ? 637 00:27:59,360 --> 00:28:01,120 >> दर्शकों: के माध्यम से पुनरावृति स्ट्रिंग [सुनाई]। 638 00:28:01,120 --> 00:28:02,600 >> डेविड जे मालन: हाँ, चलो स्ट्रिंग के माध्यम से पुनरावृति। 639 00:28:02,600 --> 00:28:05,808 के पाश, थोड़ी देर के पाश के लिए एक का उपयोग करते हैं, या आप के साथ सबसे अधिक आराम कर रहे हैं जो भी हो। 640 00:28:05,808 --> 00:28:08,840 और हम कहीं न कहीं दो तार मिल गया है स्मृति में, एक की को देखो 641 00:28:08,840 --> 00:28:11,770 पहले चरित्र, तो हर दूसरा है चरित्र, फिर तीसरे और चौथे, 642 00:28:11,770 --> 00:28:15,206 और पांचवें हम मारा जब तक क्या विशेष प्रहरी मूल्य है? 643 00:28:15,206 --> 00:28:16,080 दर्शकों: [अश्राव्य] 644 00:28:16,080 --> 00:28:18,800 डेविड जे मालन: हाँ, बैकस्लैश शून्य, या तो स्ट्रिंग में जो बिंदु पर 645 00:28:18,800 --> 00:28:20,100 हम यह बात तय कर सकते हैं। 646 00:28:20,100 --> 00:28:21,970 हम हर एक चरित्र का मिलान नहीं हुआ है? 647 00:28:21,970 --> 00:28:22,990 यदि नहीं, तो झूठी वापसी। 648 00:28:22,990 --> 00:28:24,770 यदि हां, तो सच वापसी। 649 00:28:24,770 --> 00:28:28,800 और इतना है कि क्या इस संस्करण ठीक है कार्यक्रम की तुलना-1.c करता है। 650 00:28:28,800 --> 00:28:31,677 यह करने के लिए समान है क्या हम कि मैं छोड़कर सोमवार को देखा 651 00:28:31,677 --> 00:28:34,760 हालांकि शब्द string-- से छुटकारा मिल गया कि सब कोई कार्यात्मक impact-- है 652 00:28:34,760 --> 00:28:37,450 अब मैं क्या कर रहा हूँ निकाल रहा है कुछ दृश्य प्रशिक्षण के पहियों, 653 00:28:37,450 --> 00:28:40,880 लेकिन स्पष्ट रूप से देखने के लिए कि एस और टी पते हैं। 654 00:28:40,880 --> 00:28:43,020 और कहा कि, क्या सितारा है तारांकित, का प्रतिनिधित्व करता है 655 00:28:43,020 --> 00:28:46,690 एक पते अन्यथा जाना जाता है, अधिक तकनीकी रूप से एक संकेत के रूप में। 656 00:28:46,690 --> 00:28:49,880 >> इसलिए मुझे लगता है पर घोषित लाइन 9 और चार * कहते हैं कि, 657 00:28:49,880 --> 00:28:52,160 कि मुझे एक स्ट्रिंग दे मतलब नहीं है। 658 00:28:52,160 --> 00:28:56,360 यही कारण है कि मुझे जिसका एक चर देने का अर्थ है जीवन में उद्देश्य एक पते की दुकान है। 659 00:28:56,360 --> 00:29:00,400 मैं डाल करने के बारे में हूँ क्योंकि इसे में एक स्ट्रिंग का पता। 660 00:29:00,400 --> 00:29:03,500 और वास्तव में, GetString, होना करने के लिए स्पष्ट है, एक स्ट्रिंग वापस नहीं करता है। 661 00:29:03,500 --> 00:29:06,110 यह माँ वापस नहीं करता है बैकस्लैश शून्य प्रतिशत से। 662 00:29:06,110 --> 00:29:10,005 विशेष रूप से क्या GetString करता और ठीक वापसी? 663 00:29:10,005 --> 00:29:10,880 दर्शकों: [अश्राव्य] 664 00:29:10,880 --> 00:29:14,080 डेविड जे मालन: एक पता, पहले चरित्र का पता 665 00:29:14,080 --> 00:29:16,070 कुछ स्ट्रिंग में यह मिल गया है। 666 00:29:16,070 --> 00:29:19,250 और इसलिए अब हम देख रहे हैं फिर से एक विशेष कीवर्ड। 667 00:29:19,250 --> 00:29:20,640 और, मैं यह पहले के लिए alluded। 668 00:29:20,640 --> 00:29:23,620 यह अच्छा सम्मेलन होने जा रहा है हम अब बार-बार देखता हूँ कि। 669 00:29:23,620 --> 00:29:27,540 मुझे लगता है कि यह सुनिश्चित करना जाँच कर रहा हूँ एस रिक्त नहीं है और टी रिक्त नहीं है। 670 00:29:27,540 --> 00:29:30,100 वास्तव में मेरे पर आधारित है, क्योंकि त्वरित उल्लेख पहले, 671 00:29:30,100 --> 00:29:35,510 GetString नहीं लौटता है, तो इसका मतलब यह हो सकता है क्या एक पते लेकिन फिर से है जो एन-यू-एल-एल, 672 00:29:35,510 --> 00:29:36,990 कुछ विशेष मूल्य है? 673 00:29:36,990 --> 00:29:37,890 >> दर्शकों: त्रुटि। 674 00:29:37,890 --> 00:29:38,600 >> डेविड जे मालन: यह एक त्रुटि है। 675 00:29:38,600 --> 00:29:39,550 कुछ गलत हो गया। 676 00:29:39,550 --> 00:29:41,341 और क्या आम तौर पर विशेष रूप से, हो सकता है 677 00:29:41,341 --> 00:29:45,162 strings-- के साथ जो हो सकता है advance-- में अज्ञात लंबाई की 678 00:29:45,162 --> 00:29:46,870 शायद 'कंप्यूटर स्मृति से बाहर, हो सकता है 679 00:29:46,870 --> 00:29:49,280 आप इस तरह के एक में टाइप लंबे शब्द या वाक्य 680 00:29:49,280 --> 00:29:51,880 या इस तरह के एक विशाल निबंध चिपकाया अभी पर्याप्त नहीं स्मृति नहीं है। 681 00:29:51,880 --> 00:29:55,340 और तो GetString वापस नहीं कर सकते पूरी बात का पता, 682 00:29:55,340 --> 00:29:56,620 तो यह सिर्फ कुछ भी नहीं लौटाता है। 683 00:29:56,620 --> 00:30:00,580 और यह एक त्रुटि हुआ है कहते हैं विशेष नल मान लौटने से। 684 00:30:00,580 --> 00:30:02,890 यह तो बात है, शून्य का पता है। 685 00:30:02,890 --> 00:30:06,157 >> अब यह पता चला है सी एक साथ आता है कि चलना करता है कि समारोह। 686 00:30:06,157 --> 00:30:09,240 हम साथ इस लागू करने की जरूरत नहीं है पाश या थोड़ी देर के पाश खुद के लिए एक। 687 00:30:09,240 --> 00:30:11,150 हम एक समारोह का उपयोग कर सकते हैं, संक्षेप में कहा जाता है, 688 00:30:11,150 --> 00:30:15,400 जिसका, कंप्यूटर अनुप्रयोग हलचल, या स्ट्रिंग तुलना जीवन में उद्देश्य ठीक है कि क्या करना है। 689 00:30:15,400 --> 00:30:19,990 आप इसे दो संकेत, दो पते दे, और यह उन पतों के लिए जाना जाएगा 690 00:30:19,990 --> 00:30:23,130 और उसके बाद के लिए पत्र तुलना गुणवत्ता के लिए पत्र के लिए पत्र 691 00:30:23,130 --> 00:30:26,610 सच क्या है, केवल जब रोक? 692 00:30:26,610 --> 00:30:31,540 Intuitively कंप्यूटर अनुप्रयोग हलचल चाहिए जब , अभी स्पष्ट पुनरावृति होने के लिए रोक? 693 00:30:31,540 --> 00:30:35,400 इसमें एक बैकस्लैश 0 मारता है तो स्ट्रिंग, जो बिंदु पर यह तय कर सकते हैं 694 00:30:35,400 --> 00:30:38,910 सब कुछ, मिलान किया गया है या एक विसंगति हुई है? 695 00:30:38,910 --> 00:30:42,740 >> हम अब इस चलाने और यदि हां, कोशिश हमारे छोटे पूंजीकरण खेल, 696 00:30:42,740 --> 00:30:49,260 इसलिए तुलना -1, ./compare-1 बना है, और छोटे अक्षरों में दोनों बार माँ टाइप करें। 697 00:30:49,260 --> 00:30:50,560 अब यह एक ही बात है। 698 00:30:50,560 --> 00:30:54,080 और मैं के साथ इसे फिर से करना है, तो लोअरकेस और तब शायद अपरकेस। 699 00:30:54,080 --> 00:30:56,720 अब यह वास्तव में दूसरों से अलग ऊपरी और छोटे के बीच। 700 00:30:56,720 --> 00:31:00,440 इतना ही नहीं है कि सभी मुश्किल या जादुई, लेकिन अब यह व्याख्या करता है 701 00:31:00,440 --> 00:31:03,140 क्या हुड के नीचे हो रहा है। 702 00:31:03,140 --> 00:31:07,640 >> तो हम और अधिक निकाल सकते हैं क्या सबक के इस तरह से? 703 00:31:07,640 --> 00:31:08,980 तो चलो इस पर एक नजर डालते हैं। 704 00:31:08,980 --> 00:31:15,380 मुझे आगे जाना है और एक लिखने जा रहा हूँ त्वरित कार्यक्रम यहां कॉपी 0 बुलाया। 705 00:31:15,380 --> 00:31:21,594 और अब आगे और वास्तव में चलते हैं चलो, कॉपी-0 के साथ है- करते हैं 706 00:31:21,594 --> 00:31:23,010 मैं यहाँ क्या मिला है पर एक नज़र रखना। 707 00:31:23,010 --> 00:31:24,712 जब मैं पहली बार उपयोगकर्ता बताओ, कुछ कहते हैं। 708 00:31:24,712 --> 00:31:26,420 तो मैं एक तार मिल और मैं एस में यह संग्रहीत। 709 00:31:26,420 --> 00:31:29,810 एस के बराबर होती है, तो फिर मैं जाँच नल के बराबर होती है, बस एक वापसी। 710 00:31:29,810 --> 00:31:31,590 तो यह सिर्फ मानक त्रुटि जाँच कर रही है। 711 00:31:31,590 --> 00:31:33,112 दिलचस्प कुछ नहीं हुआ है। 712 00:31:33,112 --> 00:31:36,320 और वास्तव में, हम त्रुटि से छुटकारा यदि जाँच, इस सप्ताह एक कोड की तरह लग रहा है 713 00:31:36,320 --> 00:31:36,985 इस समय। 714 00:31:36,985 --> 00:31:39,110 लेकिन मैं एक पाने के लिए शुरू कर दिया है उस बारे में थोड़ा बेहतर। 715 00:31:39,110 --> 00:31:43,340 >> अब लाइन 16 में एक सप्ताह पहले, हो सकता है यहां तक ​​कि एक दो दिन या घंटे पहले 716 00:31:43,340 --> 00:31:46,720 आप लाइन 16 का कहना है कि हो सकता है एक चर बुलाया टी बनाने 717 00:31:46,720 --> 00:31:48,219 और नकल इसे में है। 718 00:31:48,219 --> 00:31:50,010 और वह एक पूरी तरह से है उचित takeaway। 719 00:31:50,010 --> 00:31:51,560 लेकिन अब और अधिक सटीक हो। 720 00:31:51,560 --> 00:31:54,190 लाइन 16 में क्या हो रहा है? 721 00:31:54,190 --> 00:31:56,170 क्या की नकल की हो रही है दांये से बांये तक? 722 00:31:56,170 --> 00:31:56,669 हाँ? 723 00:31:56,669 --> 00:31:58,490 दर्शकों: टी एस के एक पते हो रही है? 724 00:31:58,490 --> 00:32:01,220 >> डेविड जे मालन: वास्तव में, टी एस का पता हो रही है। 725 00:32:01,220 --> 00:32:05,170 मुझे जाना है तो, अगर अब स्पष्ट होना पीठ कि पहले उदाहरण के लिए 726 00:32:05,170 --> 00:32:08,520 और मैं मैं में टाइप किया है बात बाहर निकालना। 727 00:32:08,520 --> 00:32:11,640 और मैं टाइप किया है क्या in-- यहाँ है, और यहाँ 728 00:32:11,640 --> 00:32:15,830 मैं में कहीं में टाइप किया जाता है क्या स्मृति, माँ और उसके बाद एक बैकस्लैश 729 00:32:15,830 --> 00:32:17,840 मेरे लिए जोड़ा है कि 0। 730 00:32:17,840 --> 00:32:23,060 क्या मैं यहाँ में संग्रहीत, याद इस स्थान में 1, 2, 3, 4 पर है 731 00:32:23,060 --> 00:32:24,655 इस एस में वर्तमान में क्या है। 732 00:32:24,655 --> 00:32:29,220 लाइन पर 16 तो, अगर मैं मुझे दे कहना एक और चर बुलाया टी और दुकान 733 00:32:29,220 --> 00:32:33,590 एस के मूल्य से कम में, क्या यहां जमा हो जाता है माँ नहीं होगा 734 00:32:33,590 --> 00:32:35,480 बल्कि सिर्फ नंबर 1। 735 00:32:35,480 --> 00:32:38,520 >> हम इस कार्यक्रम में आगे देखो तो अगर अब, क्या होने जा रहा है? 736 00:32:38,520 --> 00:32:40,690 तो यह है कि वहाँ नोटिस इस समारोह में आप कर सकते हैं 737 00:32:40,690 --> 00:32:44,410 सीज़र के लिए कुछ समय पहले इस का इस्तेमाल किया है, या Vigenere, या शायद बिल्कुल नहीं। 738 00:32:44,410 --> 00:32:48,170 मैं मैं कर रहा हूँ, मेरे printf के साथ दावा प्रतिलिपि टी भुनाने के लिए जा रहा है। 739 00:32:48,170 --> 00:32:51,616 पहली पंक्ति में 19, जल्दी विवेक में टी के strlen के चेक लंबाई की जाँच करें। 740 00:32:51,616 --> 00:32:53,740 क्योंकि मैं नहीं चाहता कुछ भुनाने की कोशिश 741 00:32:53,740 --> 00:32:55,104 अगर वहाँ कोई स्ट्रिंग नहीं है। 742 00:32:55,104 --> 00:32:57,520 उपयोगकर्ता सिर्फ हिट दर्ज हैं, भुनाने के लिए कुछ भी नहीं है। 743 00:32:57,520 --> 00:33:01,100 तो मैं लाइन 21 ऐसा करने के लिए नहीं करना चाहती। 744 00:33:01,100 --> 00:33:05,758 तो लाइन 21 capitalizing है जो जाहिरा तौर पर पत्र, टी में? 745 00:33:05,758 --> 00:33:06,514 >> दर्शकों: M? 746 00:33:06,514 --> 00:33:08,722 डेविड जे मालन: ऐसा लगता है जैसे यह नकल है, जो एक है? 747 00:33:08,722 --> 00:33:09,486 दर्शकों: एम। 748 00:33:09,486 --> 00:33:10,450 डेविड जे मालन: उह, मी। 749 00:33:10,450 --> 00:33:12,685 ठीक है, पहले मीटर तो, मैं कर रहा हूँ कि नोटिस क्योंकि 750 00:33:12,685 --> 00:33:14,935 , toupper करने से गुजर रहा है, जो आप इसे कभी नहीं देखा है, तो यह है 751 00:33:14,935 --> 00:33:16,980 करने के लिए सिर्फ एक समारोह अपने इनपुट के रूप में भुनाने। 752 00:33:16,980 --> 00:33:20,240 टी ब्रैकेट शून्य देने का अर्थ है मुझे टी के शून्य चरित्र। 753 00:33:20,240 --> 00:33:22,550 और तो यह कैसे करता है तस्वीर बदलने, स्पष्ट होना करने के लिए? 754 00:33:22,550 --> 00:33:25,490 755 00:33:25,490 --> 00:33:29,160 क्या फिर से लिखे या परिवर्तित करने की जरूरत है एस के लिए सम्मान और टी और माँ के साथ 756 00:33:29,160 --> 00:33:30,097 बैकस्लैश शून्य। 757 00:33:30,097 --> 00:33:31,470 >> दर्शकों: [अश्राव्य] 758 00:33:31,470 --> 00:33:34,030 >> डेविड जे मालन: हाँ, तो यह एक यहाँ बस 759 00:33:34,030 --> 00:33:40,860 है- ठीक करने है-- बदल पाने की जरूरत है एक राजधानी मीटर को बदल पाने की जरूरत है। 760 00:33:40,860 --> 00:33:44,330 लेकिन अब, बाद में देखो कार्यक्रम है, मैं बाहर प्रिंट यदि 761 00:33:44,330 --> 00:33:49,800 मैं यहां साफ के रूप में एस और टी, क्या देखना एस और टी बाहर मुद्रण होने जा रहा। 762 00:33:49,800 --> 00:33:54,310 तो कॉपी-0, ./copy-0 बनाते हैं। 763 00:33:54,310 --> 00:33:57,140 मुझे आगे जाना है और टाइप करते हैं सभी लोअरकेस में माँ में। 764 00:33:57,140 --> 00:34:00,140 सूचना है दोनों मूल और प्रतिलिपि पूंजीकृत कर दिया गया है। 765 00:34:00,140 --> 00:34:00,850 क्यों? 766 00:34:00,850 --> 00:34:04,431 खैर, एस और टी दोनों ओर इशारा करते हैं, अगर तुम जाएगा, स्मृति का एक ही हिस्सा। 767 00:34:04,431 --> 00:34:06,930 और सच में, यह हो रही है वास्तव में तथ्य यह है uninteresting-- 768 00:34:06,930 --> 00:34:09,150 हम यहाँ पता शून्य उपयोग कर रहे हैं। 769 00:34:09,150 --> 00:34:11,719 मेरा मतलब है, मैं वास्तव में परवाह नहीं है जहां सामान स्मृति में है। 770 00:34:11,719 --> 00:34:13,550 माफ करना, मैं एक छोटे से बहुत ज्यादा मिटाकर कर रहा हूँ। 771 00:34:13,550 --> 00:34:15,674 लेकिन मैं वास्तव में परवाह नहीं है बातें स्मृति में हैं जहां। 772 00:34:15,674 --> 00:34:18,510 और हां, तो वास्तव में क्या प्रोग्रामर के बारे में सोचने के लिए करते हैं 773 00:34:18,510 --> 00:34:21,080 आप के बारे में बात यह है कि जब एक पता, या एक सूचक, 774 00:34:21,080 --> 00:34:22,679 यह स्मृति में है, जहां कौन परवाह करता है। 775 00:34:22,679 --> 00:34:24,989 यह कम है, तो मुझे परवाह नहीं है बाइट एक या एक अरब। 776 00:34:24,989 --> 00:34:27,920 मैं सिर्फ यह है कि परवाह चर प्रभावी ढंग से है 777 00:34:27,920 --> 00:34:29,620 स्मृति की है कि हिस्सा तरफ इशारा करते हुए। 778 00:34:29,620 --> 00:34:33,350 और हां, तो आगे से, बजाय वक्रोक्ति मनमाने ढंग से स्मृति पते से अधिक है, चलो 779 00:34:33,350 --> 00:34:36,710 सिर्फ संकेत आकर्षित करने के लिए शुरू तीर के रूप में संकेत के रूप में। 780 00:34:36,710 --> 00:34:39,340 तो और टी वास्तव में, क्या कर रहे हैं रहा है इस कार्यक्रम के अनुसार, 781 00:34:39,340 --> 00:34:42,130 , मैं टी बनाया कैसे की वजह यह सिर्फ दो अलग-अलग चर है 782 00:34:42,130 --> 00:34:43,840 स्मृति का एक ही हिस्सा तरफ इशारा करते हुए। 783 00:34:43,840 --> 00:34:45,215 वे कहाँ हैं और हम परवाह नहीं है। 784 00:34:45,215 --> 00:34:47,130 इसलिए हम सार दूर है कि विस्तार कर सकते हैं। 785 00:34:47,130 --> 00:34:48,780 >> तो मैं यह कैसे ठीक करूं? 786 00:34:48,780 --> 00:34:54,120 मैं नकल का एक संस्करण लिखना चाहते हैं कार्यक्रम कि वास्तव में प्रतियां स्ट्रिंग 787 00:34:54,120 --> 00:34:56,840 और केवल capitalizes प्रतिलिपि, बस intuitively, 788 00:34:56,840 --> 00:34:59,766 क्या मिल गया है एक होने के लिए हमारे समाधान के लिए घटक? 789 00:34:59,766 --> 00:35:00,640 दर्शकों: [अश्राव्य] 790 00:35:00,640 --> 00:35:01,420 डेविड जे मालन: हम एक क्या जरूरत है? 791 00:35:01,420 --> 00:35:01,820 दर्शकों: स्मृति का हिस्सा। 792 00:35:01,820 --> 00:35:03,280 डेविड जे मालन: हम की जरूरत है स्मृति का एक और हिस्सा है, है ना? 793 00:35:03,280 --> 00:35:05,360 हम नहीं जानते कि कैसे करने के लिए जरूरी है, फिर भी इसे करते हैं। 794 00:35:05,360 --> 00:35:11,330 लेकिन मैं एक तरह से इसलिए ऐसा होने की जरूरत कि कम मामले में मूल माँ 795 00:35:11,330 --> 00:35:14,170 स्मृति की है कि अतिरिक्त हिस्सा में समाप्त होता है। 796 00:35:14,170 --> 00:35:19,770 और फिर मैं कॉपी परिवर्तन, जब मैं यहाँ इस प्रति को बदलने के लिए नहीं करना चाहती। 797 00:35:19,770 --> 00:35:26,020 मैं बजाय केवल इस बदलना चाहते हैं प्रतिलिपि इतना है कि मूल रूप से अपरिवर्तित है। 798 00:35:26,020 --> 00:35:27,980 >> तो, चलो हम यह कर सकते हैं कि कैसे देखते हैं। 799 00:35:27,980 --> 00:35:31,800 में कॉपी-1, पहले से ही है जो टिप्पणी के छीन लिया गया, 800 00:35:31,800 --> 00:35:33,250 लेकिन ऑनलाइन टिप्पणी की है। 801 00:35:33,250 --> 00:35:36,710 हम बजाय following-- इन करना लाइनों के समान हैं, मुझे एक तार मिल 802 00:35:36,710 --> 00:35:38,340 और यह बात कहते हैं। 803 00:35:38,340 --> 00:35:43,500 लेकिन अब चलो हमारे सबसे में से एक को देखो जटिल लेकिन जटिलता के अंतिम 804 00:35:43,500 --> 00:35:47,340 थोड़ी देर के लिए, लाइन 16 यह ठीक है। 805 00:35:47,340 --> 00:35:49,400 साथ अपने आराम तो अगर चित्र हम सिर्फ drew-- 806 00:35:49,400 --> 00:35:51,790 मुझे, स्मृति का एक नया हिस्सा देना इस बारे में सब कुछ नकल, 807 00:35:51,790 --> 00:35:53,730 हम कोड के लिए है कि अनुवाद कैसे देखते हैं। 808 00:35:53,730 --> 00:35:59,400 >> तो लाइन 16, बाएं हाथ की ओर, चार * टी यहाँ पर मुझे इस बॉक्स देता है। 809 00:35:59,400 --> 00:36:00,230 यही कारण है कि यह सब होता है। 810 00:36:00,230 --> 00:36:03,240 दाहिने हाथ की ओर, एम alloc, या malloc, 811 00:36:03,240 --> 00:36:06,480 सुपर फैंसी स्मृति आबंटन है, सिर्फ कहने का एक गुप्त रास्ता 812 00:36:06,480 --> 00:36:07,640 मुझे स्मृति का एक हिस्सा दे। 813 00:36:07,640 --> 00:36:09,290 हम कितना स्मृति की ज़रूरत है? 814 00:36:09,290 --> 00:36:10,910 खैर, एक बड़ा अभिव्यक्ति की तरह है। 815 00:36:10,910 --> 00:36:12,570 लेकिन हम यह यहाँ कहते हैं देखते हैं क्या। 816 00:36:12,570 --> 00:36:15,940 तो यह निश्चित रूप से, दे रहा है मुझे एस की स्ट्रिंग लंबाई। 817 00:36:15,940 --> 00:36:19,094 तो, माँ यह क्या किया जाना चाहिए? 818 00:36:19,094 --> 00:36:21,010 इसलिए सिर्फ तीन, है ना? माँ तीन अक्षर है। 819 00:36:21,010 --> 00:36:22,830 आप भरोसा नहीं है बैकस्लैश शून्य जब आप 820 00:36:22,830 --> 00:36:25,960 यह एक स्ट्रिंग की लंबाई के बारे में बात करते हैं वास्तव में मानव दृश्यमान पत्र। 821 00:36:25,960 --> 00:36:28,020 तो माँ है, इसलिए इस 3 मुझे देता है। 822 00:36:28,020 --> 00:36:31,170 लेकिन मैं अब एक जोड़ रहा हूँ, एक मिनट रुको। 823 00:36:31,170 --> 00:36:34,861 क्यों मैं वास्तव में करना चाहते हैं 4 बाइट्स और न सिर्फ 3 आवंटित? 824 00:36:34,861 --> 00:36:35,360 हाँ? 825 00:36:35,360 --> 00:36:36,910 >> दर्शकों: प्रहरी मूल्य के लिए? 826 00:36:36,910 --> 00:36:38,951 >> डेविड जे मालन: वास्तव में, कि प्रहरी मूल्य के लिए। 827 00:36:38,951 --> 00:36:40,840 बैकस्लैश शून्य के लिए, मैं 4 बाइट्स की कुल जरूरत है। 828 00:36:40,840 --> 00:36:42,870 इसलिए मैं लंबाई की जरूरत है स्ट्रिंग प्लस 1 की। 829 00:36:42,870 --> 00:36:45,400 और फिर बस अच्छा measure-- के लिए यहां तक ​​कि इस सिस्टम पर हालांकि, 830 00:36:45,400 --> 00:36:49,390 यह हमेशा मैं कह रहा हूँ 1-- होने जा रहा है एक चार के आकार के द्वारा इस गुणा। 831 00:36:49,390 --> 00:36:51,552 Sizeof है पता चला है सी में एक ऑपरेटर कि 832 00:36:51,552 --> 00:36:53,260 बस आपको बताता है है कि बाइट्स की संख्या 833 00:36:53,260 --> 00:36:54,700 एक निश्चित डेटा प्रकार के लिए जरूरी है। 834 00:36:54,700 --> 00:36:57,740 यह सरणियों के लिए काम नहीं करता है, आम तौर पर, कभी कभी यह करता है। 835 00:36:57,740 --> 00:36:59,210 लेकिन सामान्य तौर पर इस मामले में, नहीं। 836 00:36:59,210 --> 00:37:02,330 कई एक बाइट्स कैसे लेकिन यह मुझे बता देगा पता चला है जो चार है, हमेशा के लिए एक है। 837 00:37:02,330 --> 00:37:04,080 तो यह 1 से गुणा करने की तरह है। 838 00:37:04,080 --> 00:37:05,900 >> कोड की तो सुपर गुप्त देख लाइन। 839 00:37:05,900 --> 00:37:09,320 लेकिन यह सब होता देता है मुझे स्मृति का एक हिस्सा। 840 00:37:09,320 --> 00:37:13,590 लेकिन यह नकल होना प्रतीत होता है कि स्मृति में कुछ भी? 841 00:37:13,590 --> 00:37:14,560 अभी तक नहीं। 842 00:37:14,560 --> 00:37:22,040 और तो लाइन 22 पर मुझे क्या करना है, और 23, 24, 25, ठीक है, मैं बस यह करते हैं। 843 00:37:22,040 --> 00:37:23,760 और इस तरह की है अब पुराने स्कूल सामान। 844 00:37:23,760 --> 00:37:26,010 इस pset 2, जहां की तरह है तुम सिर्फ बातें आगे बढ़ रहे हैं 845 00:37:26,010 --> 00:37:28,620 चारों ओर स्मृति में, या बल्कि तार में। 846 00:37:28,620 --> 00:37:31,920 >> तो मैं 0 से पुनरावृति कर रहा हूँ स्ट्रिंग एस की लंबाई। 847 00:37:31,920 --> 00:37:37,820 और मुझे लगता है मैं वें चरित्र नकल कर रहा हूँ टी में मैं वें चरित्र में एस में। 848 00:37:37,820 --> 00:37:41,820 और मुझे लगता है क्योंकि, प्रोग्रामर, बनाया बिल्कुल के रूप में कई बाइट्स आवंटित करने के लिए सुनिश्चित करें 849 00:37:41,820 --> 00:37:44,600 मैं जरूरत के रूप में, यह एकदम सही है एक-से-एक रिश्ता है। 850 00:37:44,600 --> 00:37:47,060 और मैं में माँ की नकल एक नए के लिए लोअरकेस। 851 00:37:47,060 --> 00:37:50,170 और फिर अंत में, मैं इस लाइन से करते हैं। 852 00:37:50,170 --> 00:37:54,637 और तो प्रभाव ही है यहां इस टी भुनाने के लिए। 853 00:37:54,637 --> 00:37:56,470 तो एक बहुत अवशोषित, लेकिन करने के लिए आप बस पर विचार करता है, तो 854 00:37:56,470 --> 00:37:58,220 वास्तव में क्या हो रहा है हुड के नीचे 855 00:37:58,220 --> 00:38:00,880 बस इन बढ़ रहा है वह सब है, चारों ओर बाइट्स 856 00:38:00,880 --> 00:38:06,617 इस समस्या को हल करने की जरूरत है बस हमें स्मृति के इस हिस्सा देने के लिए। 857 00:38:06,617 --> 00:38:08,450 अब के जोखिम में भारी, मुझे दिखा देना 858 00:38:08,450 --> 00:38:13,200 लगभग एक है कि अन्य उदाहरण इस एक को छोड़कर, समान 859 00:38:13,200 --> 00:38:14,350 कोड की लाइन। 860 00:38:14,350 --> 00:38:18,870 इसलिए इस हैकर संस्करण है इस कार्यक्रम का, अगर तुम जाएगा। 861 00:38:18,870 --> 00:38:21,050 लेकिन चलो बस गढ़ने जाने यह क्या हो रहा है में। 862 00:38:21,050 --> 00:38:28,920 24 लाइन इस टी हुआ करते थे ब्रैकेट मैं एस ब्रैकेट मैं हो जाता है। 863 00:38:28,920 --> 00:38:33,370 अब, मैं यह बदल रहा हूँ बहुत अधिक गुप्त स्टार टी 864 00:38:33,370 --> 00:38:36,280 प्लस 1 स्टार एस प्लस 1 के बराबर होती है। 865 00:38:36,280 --> 00:38:38,702 >> तो क्या हो रहा है और यही कारण है हम एक स्टार चरित्र की क्या ज़रूरत है? 866 00:38:38,702 --> 00:38:41,410 हम पहले तारा देखा है, और इसे दूसरे तरीके से यहां इस्तेमाल किया जा रहा है। 867 00:38:41,410 --> 00:38:45,490 हम पहले से अब मैं देख रहा हूँ, चार * देखा एक शुरुआत में स्टार, और वह ठीक है। 868 00:38:45,490 --> 00:38:48,190 यह हम पता चला है क्योंकि एक तरह से सिर्फ अनुमान कर सकते हैं 869 00:38:48,190 --> 00:38:50,280 उन पहले से सिद्धांतों पर क्या हो रहा है। 870 00:38:50,280 --> 00:38:53,860 तो अभी स्पष्ट होना करने के लिए, एस क्या है? 871 00:38:53,860 --> 00:38:55,052 पिछले हफ्ते, यह एक स्ट्रिंग था। 872 00:38:55,052 --> 00:38:56,260 यही कारण है कि अब और नहीं पर्याप्त नहीं है। 873 00:38:56,260 --> 00:38:57,690 विशेष रूप से, एस क्या है? 874 00:38:57,690 --> 00:38:58,590 >> दर्शकों: [अश्राव्य] 875 00:38:58,590 --> 00:38:59,881 >> डेविड जे मालन: यह एक सूचक है। 876 00:38:59,881 --> 00:39:02,610 इसके बारे में पता है पहले चरित्र हम में टाइप। 877 00:39:02,610 --> 00:39:04,780 ठीक है, टी क्या है? 878 00:39:04,780 --> 00:39:05,660 >> दर्शकों: [अश्राव्य] 879 00:39:05,660 --> 00:39:07,950 >> डेविड जे मालन: पहली बाइट का पता 880 00:39:07,950 --> 00:39:10,490 टी में, स्मृति की है कि हिस्सा पुनः आवंटन। 881 00:39:10,490 --> 00:39:14,720 तो यह पता चला है कि जब हम स्ट्रिंग को ऊपर की ओर 0 से पुनरावृति 882 00:39:14,720 --> 00:39:17,424 length-- सब से पहले, मैं क्योंकि, 0 पर बंद शुरू होता है 883 00:39:17,424 --> 00:39:18,840 पाश बात के लिए इस पुराने स्कूल की। 884 00:39:18,840 --> 00:39:22,400 तो बस सादगी के लिए, चलो कोड की है कि पहली पंक्ति मान 885 00:39:22,400 --> 00:39:23,760 वास्तव में सिर्फ यह सही है। 886 00:39:23,760 --> 00:39:26,080 मैं शून्य उनका कहना है, शून्य है कुछ करने के लिए मुमकिन है 887 00:39:26,080 --> 00:39:27,540 एक प्रभाव के लिए नहीं जा रहा है। 888 00:39:27,540 --> 00:39:28,560 >> तो यह कहावत क्या है? 889 00:39:28,560 --> 00:39:31,600 यह स्टार पता चला है कि इस संदर्भ में ऑपरेटर 890 00:39:31,600 --> 00:39:33,700 भिन्नता है बस है जो ऑपरेटर, 891 00:39:33,700 --> 00:39:37,530 जाना कह का एक अच्छा तरीका निम्न पते पर। 892 00:39:37,530 --> 00:39:42,080 तो चलो, तो पहले से पता है स्मृति के इस खंड में चरित्र, 893 00:39:42,080 --> 00:39:43,630 * एस साधन वहाँ जाओ। 894 00:39:43,630 --> 00:39:45,630 और हम तैयार है क्योंकि इस तरह से चित्र, 895 00:39:45,630 --> 00:39:47,430 आप को अपनाने कर सकते हैं मानसिक मॉडल के बाद। 896 00:39:47,430 --> 00:39:51,030 इस रों है, और आप * एस * कहते हैं एक तरह से शूट और सीढ़ी की तरह है, 897 00:39:51,030 --> 00:39:54,540 आप बचपन से ही खेल याद है, उस तीर का पालन करें और जाने की तरह है 898 00:39:54,540 --> 00:39:55,570 पता करने के लिए। 899 00:39:55,570 --> 00:39:57,080 >> * टी एक ही बात है। 900 00:39:57,080 --> 00:39:59,855 तो यहाँ शुरू, इसका हिस्सा के पास जाओ। 901 00:39:59,855 --> 00:40:03,350 मैं बस पर आकर्षित नहीं कर सकते इस स्क्रीन है कि जिस तरह से। 902 00:40:03,350 --> 00:40:05,560 * टी यहां जाने के लिए इसका मतलब है। 903 00:40:05,560 --> 00:40:08,830 और फिर, पाश के लिए ही है यहाँ इस चरित्र को स्थानांतरित कह 904 00:40:08,830 --> 00:40:11,330 यहाँ इस चरित्र को स्थानांतरित करने, यहाँ इस चरित्र को स्थानांतरित। 905 00:40:11,330 --> 00:40:12,890 लेकिन यह कैसे मुझे लगता है कि incrementation करते हैं? 906 00:40:12,890 --> 00:40:15,430 मैंने सोचा कि मैं सिर्फ हटाए क्या पूर्ववत करने की जरूरत है। 907 00:40:15,430 --> 00:40:18,140 यह आम तौर पर कहा जाता है क्या है सूचक गणित, जो 908 00:40:18,140 --> 00:40:20,040 पते के साथ गणित का मतलब है। 909 00:40:20,040 --> 00:40:22,460 >> तो, इस में पाश के लिए, मैं, मैं incrementing रखने 910 00:40:22,460 --> 00:40:26,880 और एस एक पता है और टी एक है पता है, मैं सिर्फ 1 जोड़कर रखना, अगर 911 00:40:26,880 --> 00:40:31,406 कि बस आगे बढ़ते रहो, इसका मतलब है और आगे है, और स्मृति में भेज देता है। 912 00:40:31,406 --> 00:40:34,030 यह ऑक्सफोर्ड स्ट्रीट की तरह है, सीएस के निर्माण पर है कि सड़क। 913 00:40:34,030 --> 00:40:36,490 सीएस भवनों 33 ऑक्सफोर्ड स्ट्रीट पर है। 914 00:40:36,490 --> 00:40:39,870 तो अगर आप 33 कर रहे थे ऑक्सफोर्ड स्ट्रीट प्लस 1, 915 00:40:39,870 --> 00:40:42,870 कि 34 ऑक्सफोर्ड के लिए लाता है स्ट्रीट, तो 35 ऑक्सफोर्ड स्ट्रीट, 916 00:40:42,870 --> 00:40:46,380 फिर 36 ऑक्सफोर्ड स्ट्रीट, जो कुछ भी उन इमारतों वास्तव में कर रहे हैं - अगर वे मौजूद हैं। 917 00:40:46,380 --> 00:40:50,540 और हां, कि हम क्या कर रहे है यहां सूचक गणित के साथ। 918 00:40:50,540 --> 00:40:53,820 >> तो यह एक सुपर रहस्यमय रास्ता है खुद को व्यक्त। 919 00:40:53,820 --> 00:40:56,160 लेकिन यह सब क्या हो रहा है हुड के नीचे 920 00:40:56,160 --> 00:40:59,330 बस इन पतों पीछा कर रहा है, एक नक्शा निम्नलिखित की तरह, अगर तुम जाएगा, 921 00:40:59,330 --> 00:41:02,692 या जैसे तीर के निम्न हम स्क्रीन पर तैयार किया है। 922 00:41:02,692 --> 00:41:04,910 ठीक है, एक बहुत पचाने के लिए। 923 00:41:04,910 --> 00:41:10,410 वाक्य रचना पर कोई सवाल, अवधारणाओं, संकेत, malloc, या पसंद है। 924 00:41:10,410 --> 00:41:11,480 हाँ, यहाँ पर पहले। 925 00:41:11,480 --> 00:41:13,755 >> दर्शकों: तो है कि जहां * टी toupper * टी के बराबर होती है कहते हैं 926 00:41:13,755 --> 00:41:15,575 भुनाने के लिए जा रहा है कि सभी पत्र या just-- 927 00:41:15,575 --> 00:41:17,283 >> डेविड जे मालन: आह, वास्तव में अच्छा सवाल है। 928 00:41:17,283 --> 00:41:19,805 यहां इस लाइन में तो, 31, इस भुनाने के लिए जा रहा है 929 00:41:19,805 --> 00:41:21,430 पहले अक्षर या पत्र के सभी। 930 00:41:21,430 --> 00:41:23,460 तो चलो जा रहा द्वारा जवाब है कि चलो वापस पहले सिद्धांतों के लिए। 931 00:41:23,460 --> 00:41:26,168 और यहाँ पहले सिद्धांतों मेरा मतलब सिर्फ मूल परिभाषा को जाना 932 00:41:26,168 --> 00:41:27,000 क्या शामिल है की। 933 00:41:27,000 --> 00:41:29,770 तो toupper एक समारोह है कि एक चार capitalizes। 934 00:41:29,770 --> 00:41:30,530 बस इतना ही। 935 00:41:30,530 --> 00:41:36,740 * टी first-- करने के लिए जाने का मतलब टी में पता करने के लिए जाना। 936 00:41:36,740 --> 00:41:40,350 तो, तस्वीर में, यह हिस्सा है, तो स्मृति की हम malloc के साथ आवंटित, 937 00:41:40,350 --> 00:41:43,310 और इस टी टी * यहाँ जाने का मतलब है, है। 938 00:41:43,310 --> 00:41:46,710 >> इस बीच, आप गुजर रहे हैं कि मूल्य, छोटे मीटर 939 00:41:46,710 --> 00:41:50,040 toupper करने के लिए, तुम वापस हो रही है राजधानी एम, जहां आप इसे डाल रहे हैं? 940 00:41:50,040 --> 00:41:52,410 आपको लगता है कि एक ही स्थान में डाल रहे हैं। 941 00:41:52,410 --> 00:41:55,540 और तो उन के उस तर्क से मूल परिभाषा यह केवल 942 00:41:55,540 --> 00:41:58,792 पहले अक्षर capitalizing तुम्हें पता है मैं या एक साथ पुनरावृति जब तक 943 00:41:58,792 --> 00:42:02,000 पाश या थोड़ी देर के पाश के लिए, यह नहीं जा रहा है आप यह पूछने की तुलना में अधिक कुछ भी करने के लिए। 944 00:42:02,000 --> 00:42:02,583 अच्छा प्रश्न। 945 00:42:02,583 --> 00:42:03,237 हाँ? 946 00:42:03,237 --> 00:42:05,369 >> दर्शकों: क्यों आप का उपयोग किया था विधि के बजाय भिन्नता 947 00:42:05,369 --> 00:42:05,979 सरणी? 948 00:42:05,979 --> 00:42:07,395 >> डेविड जे मालन: आह, अच्छा सवाल है। 949 00:42:07,395 --> 00:42:10,672 क्यों आप भिन्नता का प्रयोग करेंगे बजाय सरणी विधि की विधि? 950 00:42:10,672 --> 00:42:12,130 कोई विशेष कारण, ईमानदार हो। 951 00:42:12,130 --> 00:42:15,290 और, वास्तव में, इस के लिए उदाहरण की तरह है, ठीक है, 952 00:42:15,290 --> 00:42:17,556 मैं सिर्फ बनाने बहस कर रहा हूँ और अधिक जटिल प्रोग्राम, 953 00:42:17,556 --> 00:42:19,680 अधिक आँखें, पर ग्लेज़िंग रहे हैं लोगों को बाहर की जाँच कर रहे 954 00:42:19,680 --> 00:42:22,830 इस सुपर रहस्यमय लग रहा है क्योंकि लेकिन यहां तक ​​कि यह एक ही बात कर रहा है, हालांकि। 955 00:42:22,830 --> 00:42:26,695 और हां, सच में, यह है एक अनावश्यक रूप से नेत्रहीन जटिल समाधान 956 00:42:26,695 --> 00:42:27,320 समस्या के लिए। 957 00:42:27,320 --> 00:42:29,580 >> यह अभी भी अच्छा डिजाइन है पांच डिजाइन को पांच में से, 958 00:42:29,580 --> 00:42:33,140 यह ब्रैकेट में है कि क्या संकेतन या सूचक संकेतन। 959 00:42:33,140 --> 00:42:36,299 हम मिलता है जब विशेष रूप से But-- बाद में पाठ्यक्रम में pset 5 में 960 00:42:36,299 --> 00:42:39,340 हम चाहते हैं कि शब्दकोश लागू जब कि मैं गुना की एक जोड़ी का उल्लेख किया है 961 00:42:39,340 --> 00:42:42,300 हम वास्तव में के बारे में परवाह करता हूँ निम्न स्तर स्मृति पते 962 00:42:42,300 --> 00:42:44,140 हम वास्तव में समझते हैं कि क्या चल रहा है। 963 00:42:44,140 --> 00:42:48,300 >> लेकिन, अब के लिए, यह इस पता चला है कि कोड यहाँ वर्ग कोष्ठक की लाइन 964 00:42:48,300 --> 00:42:49,900 वास्तव में मौजूद नहीं है। 965 00:42:49,900 --> 00:42:52,230 उन्होंने कहा जाता है क्या कर रहे हैं वाक्यात्मक चीनी, जो 966 00:42:52,230 --> 00:42:58,390 कहने का सिर्फ एक अजीब तरह से अच्छा तरीका है संकलक वर्ग कोष्ठक होने की धर्मान्तरित 967 00:42:58,390 --> 00:43:00,420 कि गणितीय अभिव्यक्ति। 968 00:43:00,420 --> 00:43:02,660 तो यह एक मानव परंपरा है सिर्फ लिखने के लिए सक्षम होने के लिए 969 00:43:02,660 --> 00:43:04,220 ये बहुत उपयोगकर्ता के अनुकूल है कोष्ठक। 970 00:43:04,220 --> 00:43:06,850 लेकिन क्या संकलक, बजना, वास्तव में किसी भी समय कर रही है 971 00:43:06,850 --> 00:43:10,970 आप लाइन में प्रकाश डाला है क्या लिखना 24, हुड के नीचे यह सच है 972 00:43:10,970 --> 00:43:12,330 यह करने के लिए परिवर्तित। 973 00:43:12,330 --> 00:43:16,200 यह एक इंसान के रूप में अभी और अधिक सुखद है पढ़ने के लिए और 24 लाइन की तरह कोड लिखने के लिए। 974 00:43:16,200 --> 00:43:18,530 लेकिन अंततः उन प्रशिक्षण के पहियों भी उतर आते हैं 975 00:43:18,530 --> 00:43:21,780 एक के अपने आराम मजबूत हो जाता है। 976 00:43:21,780 --> 00:43:27,240 >> ठीक है, यदि ऐसा है तो यह है कि इस याद सबसे बड़ी समस्या की तरह था 977 00:43:27,240 --> 00:43:27,807 हम में भाग गया। 978 00:43:27,807 --> 00:43:30,640 और कहा कि इस पूरे छिड़ क्या है संकेत के बारे में लानत बातचीत, 979 00:43:30,640 --> 00:43:32,340 और पते, और नकल बातें। 980 00:43:32,340 --> 00:43:35,410 हम पर फिसल गया, क्योंकि यह था इस बेवकूफ, बेवकूफ मुद्दा है, जिसके तहत 981 00:43:35,410 --> 00:43:38,830 मैं लॉरेन के साथ logically-- कार्यान्वित यहाँ डेमो और संतरे का रस पर 982 00:43:38,830 --> 00:43:43,770 milk-- में एक पूरी तरह से एल्गोरिदम सही समारोह 983 00:43:43,770 --> 00:43:47,010 दो चर 'स्वैपिंग के लिए मूल्यों, लेकिन लानत बात 984 00:43:47,010 --> 00:43:50,550 किसी भी लगातार है, या नहीं था मेरे कोड पर स्थायी, प्रभाव। 985 00:43:50,550 --> 00:43:51,820 >> और क्यों था? 986 00:43:51,820 --> 00:43:54,650 संक्षेप में, यही कारण है स्वैप के कार्यान्वयन 987 00:43:54,650 --> 00:43:58,740 तार्किक रूप से सही है, लेकिन कोई असर पड़ता है यह करने के लिए पारित कर रहे हैं कि चर पर, 988 00:43:58,740 --> 00:44:01,119 मुख्य लिए एक्स और वाई की तरह? 989 00:44:01,119 --> 00:44:02,410 इस मुद्दे का सार क्या था? 990 00:44:02,410 --> 00:44:02,909 हाँ? 991 00:44:02,909 --> 00:44:05,532 दर्शकों: चर बना दिया पास में चर की प्रतियां 992 00:44:05,532 --> 00:44:06,240 समारोह के माध्यम से। 993 00:44:06,240 --> 00:44:09,060 >> डेविड जे मालन: वास्तव में, आप जब पारित एक समारोह में चर, या बहस 994 00:44:09,060 --> 00:44:11,030 एक समारोह में, वे कर रहे हैं प्रतिलिपि, द्वारा पारित जो 995 00:44:11,030 --> 00:44:14,770 आप देख एक समान मिलता है एक्स और वाई दोनों के लिए बिट्स के पैटर्न, 996 00:44:14,770 --> 00:44:15,955 ए और बी यहाँ बुलाया। 997 00:44:15,955 --> 00:44:18,080 और आप कुछ भी कर सकते हैं आप उन प्रतियों के साथ चाहते हैं, 998 00:44:18,080 --> 00:44:20,657 लेकिन वे कोई है जा रहे हैं बुला समारोह पर प्रभाव। 999 00:44:20,657 --> 00:44:22,990 और, वास्तव में, हम उस आकर्षित किया स्क्रीन, याद है पर तस्वीर 1000 00:44:22,990 --> 00:44:25,520 पिछली बार, जिससे आप यदि वास्तव में क्या है के बारे में सोचते 1001 00:44:25,520 --> 00:44:28,570 यदि hood-- के नीचे चल रहा है यह आपके कंप्यूटर की मेमोरी है 1002 00:44:28,570 --> 00:44:31,650 और यहाँ नीचे का हिस्सा है स्मृति, मुख्य के लिए इस्तेमाल किया जा रहा 1003 00:44:31,650 --> 00:44:34,020 इस का हिस्सा है स्मृति, स्वैप के लिए इस्तेमाल किया जा रहा 1004 00:44:34,020 --> 00:44:37,090 और तो भी अगर मुख्य है दो चर, एक्स और वाई, 1005 00:44:37,090 --> 00:44:41,840 स्वैप समान लग रही हो सकता है 1 और 2 के हैं, जो दोनों के मूल्यों, 1006 00:44:41,840 --> 00:44:44,520 लेकिन वे पूरी तरह से कर रहे हैं स्मृति के विभिन्न मात्रा। 1007 00:44:44,520 --> 00:44:46,130 >> इसलिए हम यह करने के लिए एक समाधान की जरूरत है। 1008 00:44:46,130 --> 00:44:51,580 और सच कहूँ तो, यह अब हम प्रतीत होता है कि ठीक है, इस समस्या का एक समाधान है। 1009 00:44:51,580 --> 00:44:55,760 हम अब क्षमता के लिए है, तो पतों के माध्यम से बातें हेरफेर 1010 00:44:55,760 --> 00:44:59,310 और, एक तरह से शूट और सीढ़ी शैली, इन तीरों का पालन करें 1011 00:44:59,310 --> 00:45:02,820 और हम चाहते हैं कि कहीं भी जाने स्मृति में, हम नहीं कर सका 1012 00:45:02,820 --> 00:45:06,220 के द्वारा इस समस्या का समाधान मुख्य से गुजर स्वैप करने के लिए 1013 00:45:06,220 --> 00:45:09,650 न मानों हम करना चाहते हैं स्वैप, लेकिन बस intuitively 1014 00:45:09,650 --> 00:45:11,630 क्या हम बजाय स्वैप करने के लिए पारित कर सकता है? 1015 00:45:11,630 --> 00:45:12,620 >> [आवाज interposing] 1016 00:45:12,620 --> 00:45:15,244 >> डेविड जे मालन: क्यों हम अभी नहीं है यह सही, पते पारित? 1017 00:45:15,244 --> 00:45:17,470 हम क्यों स्वैप एक नहीं देते खजाने का नक्शा, अगर तुम जाएगा, 1018 00:45:17,470 --> 00:45:20,950 कि करने के लिए इसे ले जाता है वास्तविक मूल्यों एक्स और वाई। 1019 00:45:20,950 --> 00:45:24,340 चलो स्वैप, वास्तव में बदल उन मूल बिट्स के बजाय, 1020 00:45:24,340 --> 00:45:26,797 बस बिट की प्रतियां गुजर रहा है। 1021 00:45:26,797 --> 00:45:29,130 और हां, वास्तव में, कि क्या हो रहा है जा समाधान हो। 1022 00:45:29,130 --> 00:45:31,899 इस संस्करण में यहाँ है स्पष्ट रूप से बुरा और त्रुटिपूर्ण। 1023 00:45:31,899 --> 00:45:35,190 और अब, पहली नज़र में, यह सिर्फ लग रहा है जैसे हम बेतरतीब ढंग से सितारों की एक गुच्छा जोड़ा 1024 00:45:35,190 --> 00:45:37,106 और अपनी उंगलियों को पार यह संकलन होगा। 1025 00:45:37,106 --> 00:45:38,460 लेकिन, अब यह संकलन होगा। 1026 00:45:38,460 --> 00:45:40,090 >> लेकिन इन बातों का अर्थ क्या देखते हैं। 1027 00:45:40,090 --> 00:45:43,990 की और, दुर्भाग्य से, लेखकों सी एक और प्रतीक चुन सकते थे 1028 00:45:43,990 --> 00:45:46,380 यह एक छोटे से बनाने के लिए साफ है, लेकिन स्टार ऑपरेटर 1029 00:45:46,380 --> 00:45:48,610 में अलग अर्थ है दो अलग-अलग संदर्भों। 1030 00:45:48,610 --> 00:45:50,890 और हम दोनों को देखा है, लेकिन भेद करते हैं। 1031 00:45:50,890 --> 00:45:55,310 >> , वहाँ शीर्ष पर तो मैं एक और ख को बदल दिया है जब 1032 00:45:55,310 --> 00:46:00,470 बुरा में पूर्णांक के होने से संस्करण सितारों, ए और बी int करने के लिए, 1033 00:46:00,470 --> 00:46:01,740 इससे पहले, पूर्णांकों थे। 1034 00:46:01,740 --> 00:46:05,752 अब में ए और बी क्या हैं अच्छा, हरी संस्करण? 1035 00:46:05,752 --> 00:46:06,900 वे पतों कर रहे हैं। 1036 00:46:06,900 --> 00:46:09,610 क्या, के पते स्पष्ट हो सकता है? 1037 00:46:09,610 --> 00:46:10,770 पूर्णांकों के पते। 1038 00:46:10,770 --> 00:46:12,520 मैं कर रहा हूँ कि इस तथ्य तो पूर्णांक स्टार साधन कह 1039 00:46:12,520 --> 00:46:15,440 इस बात का पता है एक पूर्णांक, विशेष रूप से। 1040 00:46:15,440 --> 00:46:19,120 >> तो अब कोड की लाइनों में नोटिस, कुछ और भी बदल गया है। 1041 00:46:19,120 --> 00:46:22,770 tmp, क्योंकि एक ही रहता है यह सिर्फ अस्थायी पूर्णांक है, 1042 00:46:22,770 --> 00:46:24,110 वहाँ कोई स्मृति जादू। 1043 00:46:24,110 --> 00:46:26,370 लेकिन एक अब एक स्टार की जरूरत है। 1044 00:46:26,370 --> 00:46:28,560 और, वास्तव में, हर ए और बी के दूसरे उल्लेख 1045 00:46:28,560 --> 00:46:31,780 सब है कि है कि नोटिस लाल से हरे रंग बदल रहा है 1046 00:46:31,780 --> 00:46:34,209 मैं prefixing रहा हूँ वह यह है कि सितारों के साथ उन चर। 1047 00:46:34,209 --> 00:46:35,750 मैं ए और बी की नकल नहीं करना चाहते हैं। 1048 00:46:35,750 --> 00:46:40,350 क्योंकि मैं सिर्फ ए और बी और स्वैप प्रतिलिपि ए और बी, मैं वास्तव में क्या स्वैपिंग रहा हूँ? 1049 00:46:40,350 --> 00:46:43,760 बस पते, मैं स्वैप करना चाहता हूँ क्या उन पतों पर है। 1050 00:46:43,760 --> 00:46:44,860 मुझे वहां जाना है। 1051 00:46:44,860 --> 00:46:48,000 और तो स्टार ऑपरेटर मेरे समारोह के अंदर, 1052 00:46:48,000 --> 00:46:51,700 नहीं पैरामीटर सूची के अंदर, आप उन पतों के लिए जाने का मतलब 1053 00:46:51,700 --> 00:46:54,490 और वास्तव में उन मूल्यों को बदल जाते हैं। 1054 00:46:54,490 --> 00:46:56,500 >> तो क्या तस्वीर है अब बजाय तरह देखो। 1055 00:46:56,500 --> 00:47:03,250 खैर, बजाय अगर मैं गुजर रहा हूँ एक के लिए नहीं है और -1 और बी 2-- 1056 00:47:03,250 --> 00:47:05,790 मैं वास्तव में जोड़ने की जरूरत यहां एक अन्य परिभाषा। 1057 00:47:05,790 --> 00:47:09,030 तो यह हिस्सा लगता है कि स्मृति का स्थान 10 पर है। 1058 00:47:09,030 --> 00:47:12,960 >> यह स्थान 11 पर है, लेकिन इस एक सरलीकरण का एक सा है, 1059 00:47:12,960 --> 00:47:18,900 मैं अब एक्स दो विकल्प मैं पास करना है और वाई या मैं उनके पते के पास है? 1060 00:47:18,900 --> 00:47:22,500 मैं उनके पते गुजरती हैं इस तरह, मैं तो बस 1061 00:47:22,500 --> 00:47:25,390 अब लागू करने की जरूरत हरी कोड प्रति स्वैप 1062 00:47:25,390 --> 00:47:29,080 कि यह देखता है तो एक और जब यह ख, यह सिर्फ ए और बी की नकल नहीं करता देखता है 1063 00:47:29,080 --> 00:47:30,540 और दूध और संतरे का रस के लिए कदम। 1064 00:47:30,540 --> 00:47:32,664 दूध और संतरे का रस रूपक, अब टूट जाती है 1065 00:47:32,664 --> 00:47:35,060 क्योंकि उन कप तरल और न नक्शे की। 1066 00:47:35,060 --> 00:47:37,750 हम बदले जाने की जरूरत है 10 और हम पता करने के लिए 1067 00:47:37,750 --> 00:47:42,420 11 संबोधित करने के लिए जाने की जरूरत है, और तो उस से अदला-बदली तर्क प्रदर्शन करते हैं। 1068 00:47:42,420 --> 00:47:45,580 >> इसलिए तर्क एक ही है, लेकिन हम एक अलग तरह की जरूरत है 1069 00:47:45,580 --> 00:47:47,160 के उन चर तक पहुँचने। 1070 00:47:47,160 --> 00:47:52,400 और इसलिए अंत में, क्या कार्यक्रम इस प्रकार है जैसे लग गया है। 1071 00:47:52,400 --> 00:47:56,610 Swap.c में सचमुच की नकल की और हरे रंग के संस्करण चिपकाया। 1072 00:47:56,610 --> 00:47:58,450 लेकिन मैं एक परिवर्तन करने की जरूरत है। 1073 00:47:58,450 --> 00:48:00,180 यह सिर्फ स्वैप बदलने के लिए पर्याप्त नहीं है। 1074 00:48:00,180 --> 00:48:03,830 क्या कोड के अन्य लाइन मैं बदलने की जरूरत है? 1075 00:48:03,830 --> 00:48:04,330 हाँ? 1076 00:48:04,330 --> 00:48:05,770 >> दर्शकों: यह तर्क लेता है कहाँ। 1077 00:48:05,770 --> 00:48:07,603 >> डेविड जे मालन: कहां यह अपने तर्क लेता है। 1078 00:48:07,603 --> 00:48:09,985 तो मैं मुख्य अप करने के लिए स्क्रॉल, तो मैं सिर्फ एक्स और वाई में पारित नहीं कर सकते हैं, 1079 00:48:09,985 --> 00:48:12,820 और, मैं पिछले वादा नई वाक्य रचना का टुकड़ा आज। 1080 00:48:12,820 --> 00:48:17,200 मैं नहीं एक्स में पारित करने के लिए की जरूरत है और Y लेकिन एक्स और वाई के पते। 1081 00:48:17,200 --> 00:48:20,400 और यह प्रतीक पता चला है सी के लेखकों को चुना है कि 1082 00:48:20,400 --> 00:48:23,860 आप यहाँ एक एम्परसेंड का उपयोग अगर नहीं करने के लिए है, बिटवाइस एम्परसेंड के साथ भ्रमित हो, 1083 00:48:23,860 --> 00:48:27,130 आप एक एम्परसेंड का उपयोग करते हैं यहाँ और यहाँ एक एम्परसेंड, 1084 00:48:27,130 --> 00:48:29,570 यह आप के लिए बाहर के आंकड़े एक्स के पता क्या है, 1085 00:48:29,570 --> 00:48:31,740 हो सकता है यह 10 है, क्या y का पता, शायद यह है 1086 00:48:31,740 --> 00:48:35,400 11, और बदले में उन लोगों से गुजरता है। 1087 00:48:35,400 --> 00:48:37,210 >> इसलिए एक बहुत ही बार में सभी को अवशोषित करने के लिए। 1088 00:48:37,210 --> 00:48:40,190 लेकिन हम में जल्दी से अब देखते हैं हमारे शेष चार मिनट 1089 00:48:40,190 --> 00:48:42,150 जहां कुछ गड़बड़ा सकता है। 1090 00:48:42,150 --> 00:48:45,120 और एक तरफ, वास्तव में के रूप में मैने यह तस्वीर ली, 1091 00:48:45,120 --> 00:48:46,920 टीएफ एक या दो साल पहले इस तस्वीर ले लिया। 1092 00:48:46,920 --> 00:48:49,190 तो यह वापस कोने है एलियट डायनिंग हॉल की। 1093 00:48:49,190 --> 00:48:52,310 सूचक शायद सबसे मुश्किल कर रहे हैं हम CS50 में कवर किया है कि विषय। 1094 00:48:52,310 --> 00:48:54,810 आप की तरह चिंता तो अगर शायद यह है की तरह ढलान की है 1095 00:48:54,810 --> 00:48:56,770 एक हॉकी स्टिक से अधिक इस तरह, एहसास 1096 00:48:56,770 --> 00:49:00,160 हम किस तरह की एक चोटी में पास आ रहे हैं वैचारिक जटिलता के संदर्भ। 1097 00:49:00,160 --> 00:49:02,300 >> और मैं इस ऊपर लाने के फोटो, मैं कसम खाता हूँ क्योंकि 1098 00:49:02,300 --> 00:49:05,920 गिरावट 1996 में भगवान के लिए, जब मैं लिया मेरे शिक्षण साथी के साथ CS50, 1099 00:49:05,920 --> 00:49:09,620 निशात मेहता, वह मुझ में बैठ गए दोपहर के भोजन पर एलियट डी हॉल के कोने, 1100 00:49:09,620 --> 00:49:12,330 या रात के खाने के लिए, या कुछ करने की कोशिश मुझे संकेत समझने में मदद करने के लिए। 1101 00:49:12,330 --> 00:49:16,520 मैं सप्ताह के बाद किया गया था और यह है जहाँ यह व्याख्यान जब में पेश किया गया था 1102 00:49:16,520 --> 00:49:18,170 मैं अंत में संकेत समझा। 1103 00:49:18,170 --> 00:49:20,590 और मैं इस उम्मीद कर रहा हूँ अब तक जितनी जल्दी आप के लिए क्लिक करेंगे। 1104 00:49:20,590 --> 00:49:23,540 लेकिन बिल्कुल बीच इस एहसास और अधिक परिष्कृत विषयों 1105 00:49:23,540 --> 00:49:24,420 हम पर देखा है। 1106 00:49:24,420 --> 00:49:25,819 लेकिन यह सबसे शक्तिशाली बीच है। 1107 00:49:25,819 --> 00:49:28,860 आप यह मिलता है और जब यह वास्तव में सभी के लिए है बस अंत में एक साथ आने के लिए जा रहा है। 1108 00:49:28,860 --> 00:49:31,460 तो बाकी यह नहीं है का आश्वासन दिया आज सभी सिंक करने की जरूरत है। 1109 00:49:31,460 --> 00:49:32,980 >> यहाँ तो पिछले कार्यक्रम है हम को देखने के लिए जा रहे हैं। 1110 00:49:32,980 --> 00:49:35,605 और हम एक साथ समाप्त करने के लिए जा रहे हैं claymation के त्वरित तीन मिनट 1111 00:49:35,605 --> 00:49:37,030 हमारे दोस्त, निक Parlante द्वारा की गई। 1112 00:49:37,030 --> 00:49:41,440 यहां एक कार्यक्रम के दो शीर्ष पर है कि, लाइनों एक चर एक्स और वाई की घोषणा की। 1113 00:49:41,440 --> 00:49:44,780 जो दोनों के पते हैं पूर्णांकों की, उर्फ ​​संकेत दिए। 1114 00:49:44,780 --> 00:49:48,125 हम तो पर्याप्त आवंटित स्मृति एक पूर्णांक के स्टोर करने के लिए 1115 00:49:48,125 --> 00:49:51,344 और पते की दुकान एक्स में है कि स्मृति की। 1116 00:49:51,344 --> 00:49:53,260 इसलिए, यह भी आसान है पहले उदाहरण से। 1117 00:49:53,260 --> 00:49:56,100 , मुझे स्मृति के चार बाइट्स दे कि एक पूर्णांक के आकार है, 1118 00:49:56,100 --> 00:49:58,000 और एक्स में उस पते डाल दिया। 1119 00:49:58,000 --> 00:50:01,070 यह लाइन यहाँ मतलब एक्स में पता करने के लिए जाना 1120 00:50:01,070 --> 00:50:05,270 और के अर्थ डाल जीवन, वहाँ संख्या 42। 1121 00:50:05,270 --> 00:50:07,710 लेकिन इस लाइन मुझे चिंता। 1122 00:50:07,710 --> 00:50:12,620 Y y में पता करने के लिए जाने का मतलब है स्टार, और वहाँ अशुभ संख्या 13 डाल दिया। 1123 00:50:12,620 --> 00:50:15,780 क्यों इस बिंदु पर, यह खतरनाक है story-- में हालांकि तेजी से बताया था 1124 00:50:15,780 --> 00:50:17,980 हमारे ढलते ही मिनटों में here-- क्यों यह बुरा है 1125 00:50:17,980 --> 00:50:19,660 मुझे कहने के लिए, y में पता करने के लिए जाना है? 1126 00:50:19,660 --> 00:50:21,077 >> दर्शकों: आप नहीं [सुनाई]। 1127 00:50:21,077 --> 00:50:22,910 डेविड जे मालन: मैं नहीं किया है y में कुछ भी डाल दिया। 1128 00:50:22,910 --> 00:50:25,520 तो y का मूल्य क्या है, कहानी में इस बिंदु पर? 1129 00:50:25,520 --> 00:50:26,570 हमें पता नहीं है। 1130 00:50:26,570 --> 00:50:29,190 यह कुछ कचरा मूल्य है और न ही Binky पता है। 1131 00:50:29,190 --> 00:50:32,532 हम इस नोट पर खत्म हो सकता है। 1132 00:50:32,532 --> 00:50:34,832 >> [वीडियो प्लेबैक] 1133 00:50:34,832 --> 00:50:36,500 >> हे, Binky, जगा। 1134 00:50:36,500 --> 00:50:39,140 यह सूचक मनोरंजन के लिए समय है। 1135 00:50:39,140 --> 00:50:40,210 >> -वह क्या है? 1136 00:50:40,210 --> 00:50:41,690 संकेत के बारे में जानें? 1137 00:50:41,690 --> 00:50:43,570 ओह, गुडी। 1138 00:50:43,570 --> 00:50:46,600 >> -अच्छी, आरंभ करने के लिए, मैं हम कर रहे हैं लगता है एक जोड़े के संकेत की जरूरत जा। 1139 00:50:46,600 --> 00:50:47,380 >> -ठीक। 1140 00:50:47,380 --> 00:50:51,120 इस कोड को दो संकेत का आवंटन जो पूर्णांकों के लिए बात कर सकते हैं। 1141 00:50:51,120 --> 00:50:53,557 >> -OK, अच्छी तरह से मैं देख रहा हूँ दो संकेत दिए, लेकिन वे 1142 00:50:53,557 --> 00:50:55,140 कुछ भी करने के लिए इशारा हो ऐसा नहीं लगता है। 1143 00:50:55,140 --> 00:50:55,970 >> -यह सही है। 1144 00:50:55,970 --> 00:50:58,100 शुरू में संकेत कुछ भी करने के लिए बात नहीं है। 1145 00:50:58,100 --> 00:51:00,950 उनके द्वारा इंगित बातें कर रहे हैं pointees कहा जाता है और उन्हें स्थापित 1146 00:51:00,950 --> 00:51:02,330 एक अलग कदम है। 1147 00:51:02,330 --> 00:51:03,210 >> ठीक है, ठीक है, -ओह। 1148 00:51:03,210 --> 00:51:03,940 मैं जानता था कि। 1149 00:51:03,940 --> 00:51:05,730 pointees अलग कर रहे हैं। 1150 00:51:05,730 --> 00:51:08,310 तो आप कैसे एक pointee आवंटित है? 1151 00:51:08,310 --> 00:51:11,960 >> -OK, अच्छी तरह से इस कोड आवंटित एक नए पूर्णांक pointee, 1152 00:51:11,960 --> 00:51:15,050 और इस हिस्से सेट एक्स यह इंगित करने के लिए। 1153 00:51:15,050 --> 00:51:16,240 >> हे, कि बेहतर लग रहा है। 1154 00:51:16,240 --> 00:51:17,743 तो यह कुछ करते हैं। 1155 00:51:17,743 --> 00:51:23,580 >> -OK, मैं हूँ करने के लिए सूचक एक्स भिन्नता इसकी pointee में 42 नंबर की दुकान। 1156 00:51:23,580 --> 00:51:27,130 इस चाल के लिए, मैं की आवश्यकता होगी मेरी अपसंदर्भन की जादू की छड़ी। 1157 00:51:27,130 --> 00:51:30,200 >> अपसंदर्भन की -आपका जादू की छड़ी? 1158 00:51:30,200 --> 00:51:32,310 उह, कि यह बहुत अच्छा है। 1159 00:51:32,310 --> 00:51:34,270 >> -यह कोड की तरह दिखता है। 1160 00:51:34,270 --> 00:51:35,970 मैं तो बस नंबर स्थापित करेंगे और-- 1161 00:51:35,970 --> 00:51:37,070 >> [पॉप ध्वनि] 1162 00:51:37,070 --> 00:51:39,140 >> हे, यह हो जाता है वहाँ देखो। 1163 00:51:39,140 --> 00:51:43,980 तो, एक्स पर एक भिन्नता कर रही है इस प्रकार है तीर अपने pointee पहुँचने के लिए। 1164 00:51:43,980 --> 00:51:46,150 इस मामले में, वहाँ में 42 स्टोर करने के लिए। 1165 00:51:46,150 --> 00:51:50,700 अरे, संख्या में स्टोर करने के लिए इसे उपयोग करने की कोशिश अन्य सूचक के माध्यम से 13, वाई। 1166 00:51:50,700 --> 00:51:51,840 >> -ठीक। 1167 00:51:51,840 --> 00:51:56,270 मैं बस y करने के लिए यहाँ पर जायेंगे, और 13 नंबर सेट अप मिलता है। 1168 00:51:56,270 --> 00:52:00,380 और फिर की छड़ी ले लो अपसंदर्भन और just-- 1169 00:52:00,380 --> 00:52:01,646 >> [बजर ध्वनि] 1170 00:52:01,646 --> 00:52:04,080 >> -ओह, हे कि काम नहीं किया। 1171 00:52:04,080 --> 00:52:06,470 , Binky उह, मैं नहीं, कहो अपसंदर्भन लगता है 1172 00:52:06,470 --> 00:52:10,850 की स्थापना क्योंकि y, एक अच्छा विचार है pointee ऊपर एक अलग कदम है। 1173 00:52:10,850 --> 00:52:12,480 और मुझे लगता है कि हम कभी भी यह किया है नहीं लगता है। 1174 00:52:12,480 --> 00:52:14,620 >> -Hmm, अच्छी बात है। 1175 00:52:14,620 --> 00:52:19,810 >> हाँ, हम सूचक, वाई आवंटित है, लेकिन हम एक pointee को इंगित करने के लिए सेट कभी नहीं। 1176 00:52:19,810 --> 00:52:21,590 >> -Hmm, बहुत चौकस। 1177 00:52:21,590 --> 00:52:23,215 हे, तुम वहाँ Binky अच्छा देख रहे हैं। 1178 00:52:23,215 --> 00:52:26,390 आप तो यह है कि इसे ठीक कर सकते Y अंक एक्स के रूप में एक ही pointee करने के लिए। 1179 00:52:26,390 --> 00:52:29,290 >> -Sure, मैं अपने जादू की छड़ी का उपयोग सूचक असाइनमेंट की। 1180 00:52:29,290 --> 00:52:31,970 >> एक होने जा रहा है कि -Is समस्या यह है कि पहले की तरह? 1181 00:52:31,970 --> 00:52:33,790 >> -नहीं, इस pointees स्पर्श नहीं करता है। 1182 00:52:33,790 --> 00:52:35,840 यह सिर्फ एक सूचक परिवर्तन एक ही thing-- को इंगित करने के लिए 1183 00:52:35,840 --> 00:52:36,465 >> [कड़क आवाज़] 1184 00:52:36,465 --> 00:52:37,450 एक और --as। 1185 00:52:37,450 --> 00:52:38,440 >> -ओह मैं समझा। 1186 00:52:38,440 --> 00:52:41,200 एक्स के रूप में एक ही जगह पर अब Y अंक। 1187 00:52:41,200 --> 00:52:42,950 तो, अब Y तय हो गई है, रुको। 1188 00:52:42,950 --> 00:52:44,110 यह एक pointee है। 1189 00:52:44,110 --> 00:52:47,779 तो अगर आप की छड़ी की कोशिश कर सकते हैं 13 से अधिक भेजने के लिए फिर से अपसंदर्भन। 1190 00:52:47,779 --> 00:52:51,110 >> -ओह, ठीक है, यहाँ जाता है। 1191 00:52:51,110 --> 00:52:52,330 >> हे, कि देखो। 1192 00:52:52,330 --> 00:52:53,570 अब y पर काम करता है अपसंदर्भन। 1193 00:52:53,570 --> 00:52:57,900 और संकेत साझा कर रहे हैं क्योंकि एक pointee कि, वे दोनों 13 देखते हैं। 1194 00:52:57,900 --> 00:52:59,952 >> हाँ, साझा करने, उह, जो भी हो। 1195 00:52:59,952 --> 00:53:01,535 तो, हम अब स्थानों स्विच करने के लिए जा रहे हैं? 1196 00:53:01,535 --> 00:53:03,730 >> -ओह, हम समय से बाहर रहे हैं। 1197 00:53:03,730 --> 00:53:04,660 >> -But-- 1198 00:53:04,660 --> 00:53:06,520 >> तीन सूचक नियम याद, बस। 1199 00:53:06,520 --> 00:53:09,550 नंबर 1, बुनियादी संरचना आप एक सूचक है कि है, 1200 00:53:09,550 --> 00:53:11,630 और यह एक pointee करने से अधिक अंक। 1201 00:53:11,630 --> 00:53:13,740 लेकिन सूचक और pointee अलग कर रहे हैं। 1202 00:53:13,740 --> 00:53:15,620 और आम त्रुटि एक सूचक स्थापित करने के लिए है 1203 00:53:15,620 --> 00:53:18,000 लेकिन यह एक pointee देना भूल जाते हैं करने के लिए। 1204 00:53:18,000 --> 00:53:21,170 >> संख्या 2, सूचक dereferencing सूचक में शुरू होता है 1205 00:53:21,170 --> 00:53:24,020 और अधिक से अधिक अपने तीर इस प्रकार है इसकी pointee पहुँचने के लिए। 1206 00:53:24,020 --> 00:53:27,815 हम सभी जानते हैं, यह केवल अगर वहाँ काम करता है एक तरह से वापस हो जाता है, जो एक pointee है, 1207 00:53:27,815 --> 00:53:29,260 नंबर 1 शासन करने के लिए। 1208 00:53:29,260 --> 00:53:31,990 >> संख्या 3, सूचक काम के एक सूचक लेता है 1209 00:53:31,990 --> 00:53:35,330 और करने के लिए बात करने के लिए यह परिवर्तन एक और संकेत के रूप में एक ही pointee। 1210 00:53:35,330 --> 00:53:37,150 काम के बाद तो, दो संकेत 1211 00:53:37,150 --> 00:53:40,927 एक ही pointee के लिए बात करेंगे, कभी-कभी लगता है कि साझा करने का आह्वान किया है। 1212 00:53:40,927 --> 00:53:42,510 और कहा कि वास्तव में, वहाँ यह सब है। 1213 00:53:42,510 --> 00:53:43,130 अब अलविदा। 1214 00:53:43,130 --> 00:53:43,475 >> [अंत प्लेबैक] 1215 00:53:43,475 --> 00:53:44,830 >> डेविड जे मालन: यही कारण है कि CS50 के लिए है। 1216 00:53:44,830 --> 00:53:46,246 प्रोफेसर निक Parlante करने के लिए धन्यवाद। 1217 00:53:46,246 --> 00:53:47,730 हम अगले सप्ताह आप देखेंगे। 1218 00:53:47,730 --> 00:53:51,706 1219 00:53:51,706 --> 00:53:56,435 >> [इलेक्ट्रॉनिक संगीत खेल] 1220 00:53:56,435 --> 00:57:22,775