1 00:00:00,000 --> 00:00:02,440 [Powered by Google Translate] [الأسبوع 7] 2 00:00:02,440 --> 00:00:04,730 [ديفيد J. مالان - جامعة هارفارد] 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 اختيار محض في، لكنه فرصة لنرى كيف RAM قليلا 24 00:01:13,790 --> 00:01:16,790 وكيف ثواني قليلة يمكنك استخدام CPU وجها لتجاه بعض زملائك. 25 00:01:16,790 --> 00:01:20,540 >> وأنا أعترف أن مايكل كيفن شميد، 26 00:01:20,540 --> 00:01:23,750 حاليا في الموضع 1 عدد باعتباره واحدا من TFS، 27 00:01:23,750 --> 00:01:28,120 هذا هو الذي نسميه تنفيذ لا يمكن 28 00:01:28,120 --> 00:01:32,700 بالنظر إلى أن ما يقرب من انه باستخدام RAM 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 هنا هو واحد من التقارير 1-دقائق طالب لدينا. 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 [وقد ألقيت إليك الرسالة من مدينة جيفو، اليابان.] 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 [ألا تعتقد ذلك لا تتعلق بكم في سن التعلم I.] 68 00:04:32,500 --> 00:04:38,350 [CS50 هو الشوق بلدي. اسمي كازو، وهذا هو 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 [♪ ♪] [مالان] جوجل إذا كنت غير مألوف مع هذا ميمي. 72 00:04:55,380 --> 00:05:01,480 >> ثم أخيرا، وزوجين من غيرها من الجهات التي حصلت على نشر هذا الفوز ربما الجائزة رائعتين. 73 00:05:01,480 --> 00:05:06,820 [الطلاب] الامير الوليد بن طلال! >> [مالان] علينا أن الاستماع. هذا هو باختصار، حتى الاستماع عن كثب. 74 00:05:08,580 --> 00:05:11,150 [المتكلم أنثى] ما اسمك؟ لوي >>. 75 00:05:11,150 --> 00:05:16,120 [المتكلم أنثى] ما هذا؟ >> [الضحك] CS50. [ضحك] 76 00:05:16,120 --> 00:05:19,510 [مالان] هو لم يأخذ 2، وإن كان. 77 00:05:19,510 --> 00:05:22,240 هنا نذهب، وكان آخر. 78 00:05:23,030 --> 00:05:26,980 اسمي لوي، وهذا هو 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 وC، كما كنت قد شهدت حتى الآن، 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 سنكون في النهاية قادرا على الانتقال من C، والذي يعرف عموما كلغة إلى حد ما على مستوى منخفض، 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 ولكن ستجد أن يعلن أشياء مثل المصفوفات والجداول التجزئة والبحث والفرز 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 ليس كل ما شعبية، Q ليس كل ما شعبية، ولكن ألف وE فائقة الشعبية. 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 حتى أكثر قلما تستخدم مثل س وZ، 118 00:07:47,440 --> 00:07:51,910 ماذا لو استخدمنا أقل بت لA E S وورسائل والأكثر شعبية 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 هذا هو الترميز فعالة إلى حد ما، ثم لاحظ أن الرسالة الأكثر شعبية - على سبيل المثال، E - 130 00:08:26,640 --> 00:08:28,980 يستخدم أقصر من أصوات التنبيه. 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 E، كما تدل من قبل نقطة، هو إشارة صوتية قصيرة السوبر، زمارة فقط، والتي من شأنها أن تمثل E. 134 00:08:40,330 --> 00:08:43,960 على النقيض من ذلك، فإن T تكون أطول زمارة، مثل صوت تنبيه [يطيل الصوت]، 135 00:08:43,960 --> 00:08:45,710 والتي من شأنها أن تمثل T. 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 ما هي الرسالة لم أتلقى فقط؟ A نقطة واندفاعة ل. ماذا تمثل؟ 143 00:09:12,480 --> 00:09:15,330 [طالب] A. >> [مالان] ربما. 144 00:09:15,330 --> 00:09:18,270 يمكن أن يكون أيضا E تليها T. 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 لأنه إذا كنت لا تعرف أين هي تلك فواصل، قد تخلط بين لET أو العكس بالعكس. 150 00:09:39,660 --> 00:09:43,880 >> لذلك قد ما تفعله؟ في مورس يمكن أن أتوقف بين كل من الحروف. 151 00:09:43,880 --> 00:09:47,660 ولكن التوقف هو نوع من مضاد لبيت القصيد من تسريع الامور. 152 00:09:47,660 --> 00:09:52,880 ولكن ماذا لو بدلا توصلنا مع رمز حيث لم يكن هناك هذا الوضع السيئ 153 00:09:52,880 --> 00:09:56,570 حيث E هو بادئة، على سبيل المثال، من A - 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 رجل من جانب اسم هوفمان منذ سنوات اخترع هذا المخطط يسمى ترميز هوفمان 157 00:10:08,930 --> 00:10:12,390 التي تعزز الواقع واحدة من هياكل البيانات التي قضيت قليلا من الوقت في الحديث عن 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 يشبه هذا. انها محض هراء ولكن هذا يتكون من و، بكالوريوس، خدمات العملاء، DS، و ES. 163 00:10:31,270 --> 00:10:34,890 وإذا كنت تعول فعليا حتى كل من و، بكالوريوس، خدمات العملاء، DS، و دإط 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 ولكن هذا في الواقع القضية التي لا تزال E الأكثر شعبية، 171 00:10:55,220 --> 00:11:01,450 وB و C هي الأقل شعبية، على الأقل من هذه الرسائل 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 في مثل هذه الطريقة التي E هو نمط قصيرة وربما B و C هي أنماط أطول قليلا، 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 وفقا لترميز هوفمان، يمكنك إنشاء غابة من الأشجار. 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 لذلك قد كل من هذه الأشياء تكون البنية C 184 00:11:45,310 --> 00:11:50,200 وربما داخل البنية C يكون عدد عشري يمثل عدد الترددات 185 00:11:50,200 --> 00:11:52,510 ومن ثم ربما يمثل حرف حرف. 186 00:11:52,510 --> 00:11:56,470 أعتقد ذلك من هذه العقد تماما كما أي بنية C القديمة ولكن، في الوقت الحالي، مستوى أعلى. 187 00:11:56,470 --> 00:12:01,230 هذا هو غابة من 5 الأشجار، كل الذين لديهم عقدة واحدة فقط. 188 00:12:01,230 --> 00:12:06,830 ما هوفمان المقترح هو أن نبدأ من الجمع بين تلك الأشجار 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 اقترح ذلك هوفمان أننا دمج تلك العقد أصغر 2 إلى شجرة جديدة 195 00:12:28,940 --> 00:12:34,450 عن طريق إدخال عقدة الأم الجديدة ومن ثم إعطاء الأم أن الطفل الأيسر وطفل الحق 196 00:12:34,450 --> 00:12:37,720 حيث B هو تعسفي اليسار وC هو تعسفا من حق. 197 00:12:37,720 --> 00:12:41,590 ومن ثم اقترح كذلك أن هوفمان دعونا الآن مجرد التفكير في الطفل اليسار 198 00:12:41,590 --> 00:12:44,790 في واحدة من هذه الأشجار كما هو الحال دائما أن تكون ممثلة من قبل 0 199 00:12:44,790 --> 00:12:47,890 والطفل دائما على حق بأنها ممثلة من قبل عدد 1. 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 لأن ينبغي أن تحسب لهم لأننا من الحصول أولا بأول لتضيف ما يصل الى 100٪. 225 00:14:15,570 --> 00:14:17,960 والآن لدينا شجرة واحدة. 226 00:14:17,960 --> 00:14:20,580 لذلك هذا هو الترميز شجرة هوفمان. 227 00:14:20,580 --> 00:14:24,400 انها نوع من استغرق بعض الوقت للوصول إلى هناك لفظيا، ولكن الواقع هو مع حلقة For 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 من هذا جديدة الحفدة الجد كبيرة لجميع الأحفاد، رائعة رائعة رائعة 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 لأننا إذا اجتياز هذه الشجرة من جذورها وصولا الى النهائي ورقة المعروفة باسم E، 237 00:15:01,000 --> 00:15:06,050 نحن فقط اتبع حافة واحدة، الحافة اليمنى، والتي وصفت بالطبع في 1 أعلى يمين. 238 00:15:06,050 --> 00:15:11,550 لذلك كان المعنى الضمني هنا لترميز هوفمان أن E في ثنائي يكون فقط 1. 239 00:15:11,550 --> 00:15:14,490 وهذا هو لعنة جميلة كفاءة. لا يمكن الحصول على أي أصغر حقا من ذلك. 240 00:15:14,490 --> 00:15:18,350 على النقيض من ذلك، A ستكون ممثلة، إذا كنت تتبع منطق، 241 00:15:18,350 --> 00:15:21,610 بما نمط بت بدلا من ذلك؟ 01. 242 00:15:21,610 --> 00:15:25,500 وذلك للحصول على A، ونحن نبدأ في جذور ونذهب لليسار واليمين ثم نذهب، 243 00:15:25,500 --> 00:15:28,580 وهو ما يعني أننا اتباع 0 ثم 1 (أ). 244 00:15:28,580 --> 00:15:32,810 على هذا النحو أننا نمثل هذه الرسالة مع نمط A 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 على الرغم من كل هذه الأنماط هي قصيرة جدا - E هو 1 بت، A هو 2 بت - 248 00:15:42,840 --> 00:15:45,080 لاحظت أنه لا يجب الخلط واحدة أو أخرى، 249 00:15:45,080 --> 00:15:54,870 لأنه إذا كنت ترى (أ) 1 انها حصلت على أن يكون E، إذا كنت ترى (أ) 1 0 ثم حصل الواضح أن يكون A. 250 00:15:54,870 --> 00:15:58,410 وبالمثل، ما هو D؟ 001. 251 00:15:58,410 --> 00:16:01,440 ما هو C؟ 0001. 252 00:16:01,440 --> 00:16:05,320 وما هو B؟ 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 رسائل "مختلفة 256 00:16:18,760 --> 00:16:22,300 لأن كل من هذه الأنماط هي بت القطعية. 257 00:16:22,300 --> 00:16:25,280 وسوف يكون دائما B. 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 >> وقد حصلت أقصر الترميز، - الرسالة الأكثر شعبية - في هذه الحالة E 261 00:16:35,080 --> 00:16:37,430 وقد حصلت على الترميز أقصر المقبل، 262 00:16:37,430 --> 00:16:41,390 وB و C، والتي كنا نعرف بالفعل من الحصول أولا بأول نوع كان من الأقل شعبية 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 بدلا من استخدام ASCII القياسية، يمكنك إرسال رسالة مشفرة هوفمان 267 00:16:56,730 --> 00:17:01,720 حيث إذا كنت تريد إرسال رسالة E، كنت مجرد ارسال بت واحد. 268 00:17:01,720 --> 00:17:05,680 إذا كنت ترغب في إرسال A، تقوم بإرسال 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 أو حتى على نحو أكثر تحديدا، ما هي تلك ترميزات، 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 عن طريق إرسال E 1 لو01 للA وهكذا دواليك، 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 أو مجرد ارسال له ورقة الغش قليلا، في ملف إكسل، التي تظهر تعيينات. 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 إذا كنت ترغب فقط لإرسال الرسالة BAD، الذي صادف أن يكون كلمة واحدة يمكننا توضيح هنا، 295 00:18:45,390 --> 00:18:49,550 B-A-D، وأنت تسير على الارجح الى استخدام عدد أقل من البتات، 296 00:18:49,550 --> 00:18:53,130 لكن الصيد هو إذا كان لديك أيضا أن أبلغ بوب ما هو الشجرة 297 00:18:53,130 --> 00:18:57,530 أو ما هي تلك ترميزات، وأنت تسير لتفوق ربما كل من وفورات 298 00:18:57,530 --> 00:19:00,110 وجود الأشياء مضغوط لتبدأ. 299 00:19:00,110 --> 00:19:02,210 لذلك يمكن أن يكون في الواقع حالة أنه إذا حاولت ضغط 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 حتى انها ليست الذهاب الى جعل ملف GIGABYTE يكون 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 "أنت ذاهب لقضاء أكثر من بت ضغط هذا." 308 00:19:24,590 --> 00:19:27,460 "واسمحوا لي أن لا يكلف نفسه عناء ضغط عليه بالنسبة لك على الإطلاق." 309 00:19:27,460 --> 00:19:30,160 لذلك هذا هو طريقة واحدة فقط ثم ضغط من تنسيق النص. 310 00:19:30,160 --> 00:19:32,300 يمكن أن ننفذ شيئا من هذا القبيل في C. 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 على اليمين، أي من الذي يمكن أن يكون NULL، 315 00:19:47,080 --> 00:19:50,850 ولكن إذا لم يكن كذلك، فإنه يشير إلى اليسار طفل وطفل الحق. 316 00:19:50,850 --> 00:19:55,130 لذلك هذا هو ثم ترميز هوفمان، وانها واحدة الطريقة التي يمكنك الذهاب عن ضغط المعلومات، 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 لأن الحروف التي يتم ضغط، وتمثيل، 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 من B أو C بداية أو شيء من هذا القبيل. 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 إذا، على سبيل المثال، كان C في مكان ما على طول المسار من الجذر إلى B. 335 00:21:06,770 --> 00:21:12,290 [طالب] الحق. حتى في هذه الحالة، ويقول يوجد 2 الأوراق. قل له >> A - قل ذلك مرة أخرى. 336 00:21:12,290 --> 00:21:18,760 [طالب] قل A يوجد 2 الأوراق، F G و، ثم G - >> حسنا. لكنها لا تستطيع. 337 00:21:18,760 --> 00:21:23,230 A يمكن أن يترك نفسه لم يكن لديك F G ولأن تلك الرسائل F G و 338 00:21:23,230 --> 00:21:27,560 ويترك في مكان ما تكون نفسها على يسار B أو حق E. 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 أو، على نحو أكثر تحديدا، طلب واحدة من تلك psets 1 347 00:21:55,460 --> 00:22:01,090 كم بت هل لديك فعلا على الوجه من أجل تغيير A إلى أحرف صغيرة أو العكس بالعكس؟ 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 لتغيير رأس المال لA إلى أحرف صغيرة؟ واحد فقط. 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 وفحص إذا كان الحرف A هو بين رأس المال ورأس المال Z، 358 00:22:35,930 --> 00:22:41,480 ثم المخرجات مثل أ - + 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 كيف يمكن أن تذهب عن اتخاذ بقيمة بايت واحد لبت، لذلك 8 بت مثل 01000001 01100001 و؟ 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 وبعد ذلك إدخال المشغل الجديد المعروف باسم مشغل أحادي المعامل - 366 00:23:17,900 --> 00:23:21,210 أحادي المعامل بمعنى أنه يعمل على بت الفردية، 367 00:23:21,210 --> 00:23:25,360 ليس على كامل بايت أو البايت الأربعة في كل مرة. 368 00:23:25,360 --> 00:23:31,170 هذا الشريط العمودي هناك باللون الأصفر يشير إلى أن ما إذا أخذنا تمثيل العاصمة A 369 00:23:31,170 --> 00:23:37,060 وأحادي المعامل OR مع تسلسل من البتات الصفراء؟ 370 00:23:37,060 --> 00:23:41,300 وبعبارة أخرى، والتفكير مرة أخرى إلى مناقشتنا لالتعبيرات المنطقية في سكراتش ثم في C. 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 ببساطة عن طريق "أو" جي A مع هذا النمط من البتات التي لدينا هنا في المقدمة الصفراء، 389 00:25:04,770 --> 00:25:09,400 يمكنك صغيرة عاصمة A عن طريق التقليب التي بت. 390 00:25:09,400 --> 00:25:11,580 استخدمنا هذا التعبير أسابيع مضت: التقليب قليلا. 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 ثم أنت "أو" معا باستخدام هذا المشغل C الجديدة، 395 00:25:22,980 --> 00:25:29,940 لا | |، يمكنك استخدام واحد | وكنت في الواقع الحصول على هذه الإجابة هنا لماذا؟ 396 00:25:29,940 --> 00:25:35,120 هذا هو المكان 1S، 2S المكان، 16S 4S، 8S،، 32S. 397 00:25:35,120 --> 00:25:42,280 لذلك تبين أنه إذا كنت تأخذ حرف A وأحادي المعامل OR مع ال 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 >> كيف يمكنك أن تذهب من رأس المال صغيرة إلى A؟ التي بت يحتاج إلى تغيير؟ 403 00:25:58,210 --> 00:25:59,820 انها نفس واحدة. 404 00:25:59,820 --> 00:26:03,970 نريد تغيير ذلك قليلا الثالث من 1 إلى 0. 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، والذهاب من العاصمة A إلى أحرف صغيرة و، 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 I ثم استخدام دو مألوفة في حين أن حلقة فقط للتأكد من أن المستخدم يعطي بالتأكيد لي مال A 436 00:28:00,690 --> 00:28:05,010 أو B أو C. .. Z، لذلك فإنها تعطي لي شيئا بين ألف و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 [مالان] وهذا يحدث لتمثيل عشري. 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 حتى إذا فعلنا ذلك، اسمحوا لي أن فتح محرر النص هنا - غريب الإكمال التلقائي - 458 00:29:27,840 --> 00:29:35,940 اذا لم نفعل محرر النص قليلا هنا، وعدد 0x20 يعني هنا هو 4 بت، وهنا آخر 4 بت. 459 00:29:35,940 --> 00:29:38,050 دعونا نجري بعض 4 بت أقصى اليمين الأولى. 460 00:29:38,050 --> 00:29:44,690 0 عندما مثلت مع 4 بت ما هو؟ السوبر سهلة. فقط كل 0S. 461 00:29:44,690 --> 00:29:46,780 حتى 4 بت كما 0S. 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 >> لديك لاختيار الرموز العشرية أو الست عشرية أو ثماني أو غيرها. 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 يحدث لاستخدام المشغل أو لا بل هذا الرجل ومدافع. 481 00:31:01,900 --> 00:31:09,300 ماذا تمثل DF؟ DF؟ أي شخص؟ >> [طالب] 255. 482 00:31:09,300 --> 00:31:12,780 255؟ لا 255. من شأنها أن تكون FF. 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، وهذا هو د. ذلك أن مدافع يمثل القناع. حسنا. 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 فقط، يجب أن تحصل على تمثيل 32 بت من 1. 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 اتضح لي أن أذكر هذا لأنه مع عمليات أحادي المعامل 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 هنا الجزء الأول من التعليمات البرمجية، مطالبة المستخدم لعدد، 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 I تكرار الأول من ما لماذا؟ 509 00:32:48,970 --> 00:32:52,270 ما هو حجم وكثافة العمليات عادة، على الأقل في الأجهزة؟ >> [طالب] (4). 510 00:32:52,270 --> 00:32:57,130 انها 4. SO 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. هذا هو. 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 انها المشغل SHIFT الأيسر. 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 ولكن بمجرد أن تفعل ذلك، يحصل شغل A 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 حرفا، واحد من أقصى اليسار وهو 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 المكان، المكان 16S - 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 هذا ثم يعطي لي قناع هذا كل ما عدا 0S 1 في المكان على وجه التحديد أريد ذلك، 550 00:35:22,580 --> 00:35:27,920 ثم هذا التعبير، الذي سرق من toupper.c، 551 00:35:27,920 --> 00:35:31,770 يقول ببساطة اتخاذ عدد ن أن المستخدم بكتابتها في، 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 نحن نفعل هذا مع رجات لمجرد هذا السبب نقوم به 32 بت بدلا من 8، 560 00:36:03,780 --> 00:36:06,900 ولكن ما لدينا هو هذا ثم عرض أحادي المعامل AND، OR أحادي المعامل هذا، 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 في الواقع، إذا كنت لشيء من هذا القبيل تمثل مجموعة من القيم المنطقية 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 هل يمكن أن تعلن مجموعة من حجم 300 من نوع BOOL حتى يتسنى لك على 300 bools، 567 00:36:29,420 --> 00:36:33,090 ويمكنك تعيين كل إلى True إذا كان شخص ما هنا وإلا كاذبة. 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 ما هو منطقي، في الواقع، تحت غطاء محرك السيارة؟ 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 C هو نوع من البكم، رغم ذلك، عندما يتعلق الأمر منطقي. 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 بت الفردية باستخدام هذه الأنواع من الحيل على مستوى منخفض. 585 00:37:43,850 --> 00:37:49,460 التي وضعت حقا وضع حد للطاقة. هل هناك أي أسئلة حول عمليات أحادي المعامل؟ 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 هناك أيضا لا، ~، والتي سوف تسمح لك قلب ل0 إلى 1 أو العكس بالعكس أيضا. 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 بدأنا بالحديث عن النص وضغط بعد ذلك 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 قد تكون ممثلة في هذه تنسيقات الملفات هل يمكن أن نعرف - صور GIF، على سبيل المثال. 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 التي كنت أرى البيكسيلاشن، كل من المربعات التي تتألف عينه في هذه الحالة. 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 اتضح تنسيق الملف GIF هي صيغة ضغط بلا خسائر، 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 هذا هو على النقيض من شيء من هذا القبيل ملفات JPEG، 621 00:39:55,340 --> 00:39:57,050 التي معظمنا ربما أكثر دراية. 622 00:39:57,050 --> 00:39:59,000 الفيسبوك فليكر الصور والصور وما شابه ذلك 623 00:39:59,000 --> 00:40:02,200 هي دائما تقريبا وحفظ ملفات JPEG عندما كنت تحميلها، 624 00:40:02,200 --> 00:40:08,100 ولكن هو الضياع صور JPEG - تنسيق حيث كنت رمي ​​بعيدا بت - الضياع 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 هل تعلم أن يبدأ الصورة للحصول على مبقع جدا ومنقطة، 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 بدلا من تخزينها في ملف مثل BMP يساعد على ذلك عمل الثلاثي RGB للأسود، أسود، أسود، أسود، 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 ويتذكر ذلك، أساسا، إلى أقصى اليسار بكسل 641 00:40:57,200 --> 00:41:02,160 وبطريقة ما ثم بترميز فكرة تكرار بكسل مرارا وتكرارا. 642 00:41:02,160 --> 00:41:06,110 لذلك يمكن ضغط صور GIF ثم أنفسهم دون أن تفقد أي من المعلومات. 643 00:41:06,110 --> 00:41:09,510 ولكن إذا كان لديك لتخمين، إذا كان هذا هو الخوارزمية التي توقف استخدامها، 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 التي سيتم الاستدانة تكرار أفقيا وجانبيا لا. 651 00:41:36,040 --> 00:41:40,900 هناك الكثير من التكرار هنا أفقيا في العلم الألماني مما كانت عليه في العلم الفرنسي. 652 00:41:40,900 --> 00:41:44,430 إذا كان الأمر كذلك فإننا فعليا حتى فتح مجلد على القرص الصلب الذي يحتوي هذه متحركة، 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 لديك القيادة RV الماضية منزل وشجرة. 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 التي تقوم بتخزين هذه المعلومات في الواقع بوفرة مثلما التعقل قليلا الوصول. 677 00:43:13,420 --> 00:43:18,620 >> على النقيض من ذلك، ثمة نهج آخر لضغط الفيديو في هذا المثال الثاني، وانخفاض هنا، 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 قد تبدو انها متعثرة قليلا، ومدرسة قديمة بعض الشيء، 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 التالية نترك وراء C إلى الأبد في محاضرة؟ نعم. ليس في psets، وإن كان. 691 00:44:03,890 --> 00:44:10,210 قصة عن مشاركة C ومن ثم نصل الى الاشياء مثير جدا 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 يستغرق C وتحولها إلى 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 كما قد نتذكر من الفيديو على روب جامعي، 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 ولكن إذا بدأنا مع رمز مصدر مثل هذا، نذكر لعل هذا هو أبسط برنامج C 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 ثم لديك ملف C أكبر بكثير بسبب نسخة ضخمة، وفرص العمل لصق ما حدث للتو. 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 لديك CPU Intel في جهاز Mac أو PC، ماذا يعني ذلك؟ 733 00:46:46,180 --> 00:46:51,200 ويأتي بنيت من قبل شركات مثل CPU انتل فهم تعليمات معينة. 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 لذلك عندما قمت ترجمة رمز C في لغة التجميع، 738 00:47:06,170 --> 00:47:11,820 يتم تحويل الخاص بك سهلة الاستعمال جدا ذات مظهر رمز إلى شيء يشبه هذا، 739 00:47:11,820 --> 00:47:21,670 التي تتحرك حرفيا بايت أو 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 نبدأ هنا، فإنه يخرج مثل هذا الملف، وبعد ذلك يحول إلى هذه 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 إذا كنت تعطي في المقابل بدلا من ذلك على S-العلم، ما ستحصل عليه هو 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 نريد أن نرى ما يبدو فعلا مثل ما يجري في الواقع تغذي CPU، 752 00:48:13,240 --> 00:48:15,700 يمكنك استخدام هذا العلم-S مع ضجيج. 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 التي أنتج في هذه المرحلة من الوقت 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 ولكن أذكر أنني استخدمت معيار I / O في مكتبة قانون بلدي، 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 لكن مع ذلك، نحن على وشك مغادرة وراء C. 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، CSS، وجافا سكريبت، SQL وأكثر، 794 00:50:46,200 --> 00:50:48,480 معظم الطلاب القيام به في نهاية المطاف المشاريع النهائية التي هي على شبكة الإنترنت 795 00:50:48,480 --> 00:50:51,230 لأنه كما سترى، الخلفية لديك الآن في C 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 المشروع النهائي هي فرصتك لاتخاذ علمك المكتشف حديثا والدهاء مع C 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 حيث إذا كنت تلبية بعض الإنسان للمرة الأولى، إذا كنت لا تمانع في مسايرة لي هنا، 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 يحصل لي في الصفحة الرئيسية، والتي تدل عادة على شريحة واحدة في نهاية URL. 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 وماذا الفيسبوك الاستجابة مع؟ 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 باستخدام الكروم، سواء على ماك OS، ويندوز، لينوكس، أو ما شابه ذلك، 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 يمكنك أيضا الحصول على هذه الأشياء عادة من خلال الذهاب إلى قائمة عرض وبدس حولها. 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 هذا من الصعب لبشر أن يقرأ، ولكن لاحظت أن هناك هذا النمط من الأقواس الزاوية 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 يتم ترميز بطريقة ما أن القائمة المنسدلة السنين الميلاد هنا 869 00:55:19,020 --> 00:55:23,870 في هذه اللغة تسمى HTML، لغة توصيف النص التشعبي. 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، لغة توصيف النص التشعبي. 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 يقرأ الأعلى إلى الأسفل، من اليسار إلى اليمين، وأي وقت تراه واحد من هذه الأقواس الزاوية 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 هذا ليس لأن مطوري الفيسبوك تظهر 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 في واقع الأمر، فإنه من الإسراف تماما لتصل إلى المفتاح TAB جميع تلك الأوقات 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 قبل عادة يتم وضع موقع على شبكة الإنترنت، ورمز مصغر، 893 00:56:59,270 --> 00:57:02,970 وبموجبه HTML CSS ل- شيء آخر سنرى قريبا - 894 00:57:02,970 --> 00:57:05,960 يتم ضغط شفرة جافا سكريبت سنرى قريبا، 895 00:57:05,960 --> 00:57:09,250 حيث أصبحت أسماء المتغيرات طويلة X و Y و Z، 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 ما هي الآثار المترتبة إذا الفيسبوك يحافظ التي بيضاء 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 A جيجابايت من دون سبب جيد. 906 00:57:45,200 --> 00:57:48,510 وتمنح، للكثير من المواقع هذه ليست مثل قضية قابلة للتطوير، 907 00:57:48,510 --> 00:57:51,030 ولكن لالفيسبوك، لجوجل، لبعض من أكثر المواقع شعبية 908 00:57:51,030 --> 00:57:54,860 هناك حافزا كبيرا ماليا لجعل التعليمات البرمجية تبدو وكأنها حالة من الفوضى 909 00:57:54,860 --> 00:57:58,980 بحيث كنت تستخدم وحدات البايت أقل عدد ممكن، بالإضافة إلى ضغط بعد ذلك 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 >> لحسن الحظ كان الأمر كذلك، متصفحات مثل Chrome و Firefox و IE هذه الأيام 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 تلاحظ أن داخل علامة 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 داخل العلامة رئيس الآن فوضى عارمة لالفيسبوك 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 هذا ما كنت انظر في شريط العنوان في متصفح Chrome، 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 هناك شيء يسمى شعبة، وهو تقسيم الصفحة. 950 01:00:25,270 --> 01:00:27,940 ولكن قبل أن نصل إلى تلك التفاصيل، دعونا نحاول للتصغير 951 01:00:27,940 --> 01:00:31,920 وننظر في صيغة أبسط من 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 أي شيء آخر نكتب في صفحة ويب سوف تبدأ مع 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 ولكن دعونا أولا تعريف التعقيد في الواقع أكثر من ذلك بقليل والتنميق أكثر من ذلك بقليل. 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 على سبيل المثال، هنا في الصفراء لقد قدم I 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 يمكنك التفكير في حكمها وهذا في C # تشمل التوجيه. 1015 01:04:15,400 --> 01:04:19,650 Styles.css يشير إلى لغة مختلفة تماما أننا لن يلعب مع اليوم 1016 01:04:19,650 --> 01:04:23,790 ولكن هذا لعلم الجمال: أحجام الخطوط والألوان والحشو، المسافة البادئة، والهوامش، 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 ولكن بدلا من CSS تشمل، تلك اللغة، ويشمل لغة أخرى، وجافا سكريبت. 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 أود أن تجعل مرحبا، العالم قليلا أكثر جرأة مما هو عليه. 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 اسمحوا لي أن تمضي قدما وحفظ الملف الخاص بي، والعودة إلى Chrome، أنا فقط تكبير حتى يمكننا أن نرى على نحو أفضل، 1034 01:05:24,020 --> 01:05:27,870 وإعادة تحميل، وسوف ترى أن العالم الآن في جريئة. 1035 01:05:27,870 --> 01:05:31,810 ويب هو كل شيء عن الارتباطات التشعبية، لذلك دعونا نمضي قدما ونفعل ذلك: 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 I ليس فقط ضرب أدخل، وأنا أيضا بادئة، وممارسة ما كنا عن أسلوب الوعظ، 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 ذلك هو ر قليلا من علامة مختلفة، وذلك ولست بحاجة لفرز كل من فتح وإغلاقه 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 الذي يعدل سلوكه، وقيمة هذه السمة على ما يبدو URL لموقع YouTube. 1073 01:07:52,900 --> 01:07:56,380 ولكن لاحظت الانقسام هو أنه لمجرد أن هذا هو URL وأنت تسير ل، 1074 01:07:56,380 --> 01:08:01,020 هذا لا يعني أن يجب أن يكون الكلمة التي كنت تحتها، وجعل وجود صلة. 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 لذلك دعونا حفظ هذه، والعودة. حسنا، فويلا، والآن حان الأزرق وتشعبيا. 1082 01:08:26,189 --> 01:08:29,430 إذا كنت فوق ذلك، وأنا فعلا الذهاب الى يوتيوب. 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 تلقائيا، توليد CSS تلقائيا، 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]