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