1 00:00:00,000 --> 00:00:02,270 >> [استعراض: مسابقة 1] 2 00:00:02,270 --> 00:00:04,620 [علي Nahm، Oreoluwa Barbarinsa، لوكاس فريتاس، روب بودين] [جامعة هارفارد] 3 00:00:04,620 --> 00:00:07,660 [هذا CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [لوكاس فريتاس] مرحبا الجميع. هذا هو استعراض للمسابقة 1. 5 00:00:11,610 --> 00:00:15,040 تماما كما إخلاء، وهذا هو - أعني، نحن ذاهبون لمحاولة تغطية 6 00:00:15,040 --> 00:00:17,770 الكثير كمادة ممكن، ولكن هذا لا يعني أن 7 00:00:17,770 --> 00:00:20,780 ونحن في طريقنا لتغطية كل الأشياء التي يمكن أن تكون في مسابقة 1. 8 00:00:20,780 --> 00:00:25,270 لذا يجب التأكد من أن تأخذ أيضا نظرة على محاضرة، أقسام، كل ما يمكنك. 9 00:00:25,270 --> 00:00:28,240 مسابقة 1 ستكون يوم الأربعاء، يوم الأربعاء المقبل. 10 00:00:28,240 --> 00:00:33,800 لذا يجب التأكد من دراسة. انها سوف تكون، إلى حد كبير، على غرار المسابقة الأولى 11 00:00:33,800 --> 00:00:36,390 بخصوص شكله، لكنه ربما ستكون أصعب بكثير. 12 00:00:36,390 --> 00:00:39,600 على الأقل، في العام الماضي عندما أخذت 50، اعتقد انها كانت أصعب بكثير. 13 00:00:39,600 --> 00:00:42,410 حتى دراسة الكثير. 14 00:00:42,410 --> 00:00:45,190 >> انا ذاهب لتغطية هياكل البيانات وهوفمان الترميز. 15 00:00:45,190 --> 00:00:47,910 هذا شيء أن الكثير من الناس يعتقدون معقدة، 16 00:00:47,910 --> 00:00:51,930 ولكن انا ذاهب الى محاولة لجعله أسهل ما يمكن. 17 00:00:51,930 --> 00:00:56,330 في المقام الأول، ما نريد يا رفاق لمعرفة مسابقة 1 هو 18 00:00:56,330 --> 00:01:00,970 فهم الأوصاف المفاهيمي لكل من هياكل البيانات التي انا ذاهب الى تقديم. 19 00:01:00,970 --> 00:01:03,960 وهذا يعني أن ليس لديك إلى الواقع 20 00:01:03,960 --> 00:01:07,020 تنفيذ جدول تجزئة في مسابقة الخاصة بك 1. 21 00:01:07,020 --> 00:01:10,250 نحن لا نريد لك لتنفيذ جدول تجزئة كامل، وربما سنحاول 22 00:01:10,250 --> 00:01:13,090 لجعل لكم تنفيذ بعض الوظائف، 23 00:01:13,090 --> 00:01:16,940 العمليات الأكثر شيوعا، ولكن نحن لن تجعلك تنفيذ كل شيء. 24 00:01:16,940 --> 00:01:21,010 لذلك فمن المهم أن تفهم المفهوم الكامن وراء كل بنية بيانات 25 00:01:21,010 --> 00:01:23,510 وأيضا أن كنت قادرا على رمز في C، 26 00:01:23,510 --> 00:01:27,880 مجرد عمليات الأكثر شيوعا لديهم لكل بنية البيانات. 27 00:01:27,880 --> 00:01:30,090 وأيضا أن تكون قادرة على استعراض مؤشرات والبنيات، 28 00:01:30,090 --> 00:01:33,470 لأنها تظهر كثيرا في هذه الهياكل البيانات. 29 00:01:33,470 --> 00:01:37,380 >> أولا، القوائم المرتبطة. القوائم المرتبطة هي في الواقع مشابهة جدا لصفائف، 30 00:01:37,380 --> 00:01:39,930 ولكن الفرق بين قائمة مرتبطة وصفيف، 31 00:01:39,930 --> 00:01:45,160 في المقام الأول، هو أن قائمة مرتبطة لديها حجم مرنة للغاية، 32 00:01:45,160 --> 00:01:50,060 بينما في صفائف عليك أن تختار إما حجم كبير جدا للمجموعة، 33 00:01:50,060 --> 00:01:53,710 حتى تعرف أنك ذاهب لتكون قادرة على تخزين جميع البيانات الخاصة بك في هذا مجموعة، 34 00:01:53,710 --> 00:01:59,370 أو لديك لاستخدام malloc لللديهم طول مرنة من مجموعة. 35 00:01:59,370 --> 00:02:03,680 في القوائم المرتبطة فإنه من السهل جدا لمجرد الحصول على المزيد من العناصر، 36 00:02:03,680 --> 00:02:07,210 وضع المزيد من العناصر في القائمة المرتبطة أو إزالة العناصر. 37 00:02:07,210 --> 00:02:09,370 والواقع، إذا كنت لا تريد القائمة المرتبطة ليتم فرزها، 38 00:02:09,370 --> 00:02:13,950 يمكنك البحث وإزالة العناصر في وقت ثابت، 39 00:02:13,950 --> 00:02:16,800 لذلك يا (1) مرة، حتى أنها مريحة جدا. 40 00:02:16,800 --> 00:02:20,660 عليك فقط أن تكون حذرا أن نتذكر دائما أن malloc وخالية من العقد، 41 00:02:20,660 --> 00:02:25,510 فقط لأن إذا لم تقم بذلك، سيكون لديك تسرب الذاكرة. 42 00:02:25,510 --> 00:02:31,480 القوائم بحيث ترتبط - تعريف عقدة هو تماما مثل ما لدينا هناك. 43 00:02:31,480 --> 00:02:35,110 أضع ن الباحث، ولكن يمكنك تخزين أي البيانات التي تريدها. 44 00:02:35,110 --> 00:02:37,280 حتى إذا كنت ترغب في تخزين سلسلة، أنه بخير. 45 00:02:37,280 --> 00:02:41,690 إذا كنت ترغب في تخزين البنية، أنه بخير، مزدوج، كل ما تريد. 46 00:02:41,690 --> 00:02:44,630 أنا فقط وضعت ن الباحث عن الأمثلة هنا. 47 00:02:44,630 --> 00:02:46,800 وكان لديك مؤشر إلى العقدة المقبل. 48 00:02:46,800 --> 00:02:51,940 لذلك، في الأساس، قائمة مرتبطة لديه بعض البيانات، ومن ثم فإنه يشير إلى العقدة المقبل. 49 00:02:51,940 --> 00:02:56,710 إذا كان العنصر الأخير في القائمة المرتبطة، انه سيكون للإشارة إلى NULL. 50 00:02:56,710 --> 00:02:59,060 لذلك هذا هو مثال على قائمة مرتبطة. 51 00:02:59,250 --> 00:03:05,960 >> حسنا، لذلك الآن دعونا نرى ما يجب علينا القيام به إذا كنت ترغب في إدراج عنصر في قائمة مرتبطة. 52 00:03:05,960 --> 00:03:08,810 أولا، سوف تضاف وظيفة تكون من نوع الفراغ 53 00:03:08,810 --> 00:03:11,350 لأنني لا أريد أن يعود أي شيء. 54 00:03:11,350 --> 00:03:14,200 وانا ذاهب الى اتخاذ الباحث كوسيطة، 55 00:03:14,200 --> 00:03:17,090 لأنني أريد أن أعرف ما تريد إدراجه. 56 00:03:17,090 --> 00:03:21,840 فما هو أول شيء يجب أن أقوم به؟ كذلك، يجب أن malloc على newnode، 57 00:03:21,840 --> 00:03:24,240 لذلك هذا هو السطر الأول. 58 00:03:24,240 --> 00:03:27,580 أنا مجرد خلق عقدة جديدة لوضعها في قائمة مرتبطة. 59 00:03:27,580 --> 00:03:32,360 لذلك ماذا يمكنني أن أفعل؟ حسنا، نحن نعرف أن لدينا في تطبيقات القوائم المرتبطة 60 00:03:32,360 --> 00:03:38,180 في الصف، ونحن دائما وضع الرأس كمتغير العالمية. 61 00:03:38,180 --> 00:03:41,800 وذلك ما يمكننا القيام به هو تغيير الرأس. 62 00:03:41,800 --> 00:03:44,300 أنا يمكن أن تجعل هذه العقدة الجديد سيكون الرئيس الجديد، 63 00:03:44,300 --> 00:03:46,670 وانه سيكون للإشارة إلى رئيس السابق. 64 00:03:46,670 --> 00:03:50,390 كيف يمكننا أن نفعل ذلك؟ أول شيء يجب أن أقوم به 65 00:03:50,390 --> 00:03:54,770 هو تغيير 'ن' في عقدة جديدة إلى القيمة، 66 00:03:54,770 --> 00:03:57,530 التي تم تمريرها إلى الدالة. 67 00:03:57,530 --> 00:04:01,050 ثم newnode هي الخطوة التالية ستكون الرأس. 68 00:04:01,050 --> 00:04:05,800 رئيس سوف يتم newnode. حتى انها بسيطة جدا. 69 00:04:05,800 --> 00:04:10,090 لحذف عقدة، ونحن نستطيع ان نفعل ذلك مثل - 70 00:04:10,090 --> 00:04:14,790 طريقة واحدة يمكن أن نقوم به وهذا هو القول، 71 00:04:14,790 --> 00:04:18,160 حسنا، إذا أردت أن حذف، على سبيل المثال، 3، 72 00:04:18,160 --> 00:04:24,850 ما يمكن أن تفعله هو مجرد نقطة العقدة السابقة 73 00:04:24,850 --> 00:04:27,580 إلى العقدة المقبل من 3. 74 00:04:27,580 --> 00:04:29,400 لذلك أود أن يفعل شيئا من هذا القبيل. 75 00:04:29,400 --> 00:04:33,400 ولكن ما هي المشكلة مع ذلك؟ 76 00:04:33,400 --> 00:04:37,400 لدي تسرب الذاكرة، لذلك أنا لا يستطيعون الوصول إلى الرقم 3 بعد الآن. 77 00:04:37,400 --> 00:04:42,480 المشكلة مع ذلك هو انني لن تكون قادرة على تحرير تلك العقدة. 78 00:04:42,480 --> 00:04:45,360 انا ذاهب الى أن يكون تسرب للذاكرة و(غير مفهومة) سوف يكرهونني. 79 00:04:45,360 --> 00:04:49,370 وذلك بدلا من القيام بذلك، وأود أن من المحتمل أن يكون مؤشر مؤقتة. 80 00:04:49,370 --> 00:04:53,210 حتى أضع درجة الحرارة. هو ذاهب للإشارة إلى العقدة التي أريد حذفها. 81 00:04:53,210 --> 00:04:58,170 وبعد ذلك يمكن ان تتحرك العقد السابق للإشارة إلى العقدة المقبل 82 00:04:58,170 --> 00:05:00,390 من العقدة التي أريد حذفها. 83 00:05:00,390 --> 00:05:02,730 وأخيرا، لا أستطيع تحرير المؤشر. 84 00:05:02,730 --> 00:05:07,480 لا بد لي من تحرير المؤشر بأنني خلقت هناك حق؟ 85 00:05:07,480 --> 00:05:09,560 ليس لدي ل، فقط لأنه - 86 00:05:09,560 --> 00:05:13,430 والفرق هو التي تم إنشاؤها باستخدام هذه العقدة malloc، 87 00:05:13,430 --> 00:05:17,280 لذلك هو في كومة، في حين أعلن هذا واحد كما التبديل NULL في المكدس فقط. 88 00:05:17,280 --> 00:05:20,000 لذلك أنا لم يكن لديك لتحريره. 89 00:05:20,000 --> 00:05:22,030 حسنا >>. حتى الآن دعونا نتحدث عن مداخن. 90 00:05:22,030 --> 00:05:24,680 أكوام هي واضحة جدا. 91 00:05:24,680 --> 00:05:29,540 فعلنا أكوام وطوابير في الدرجة فقط باستخدام صفائف، 92 00:05:29,540 --> 00:05:32,820 ولكن يجب أن تكون على دراية - أن يكون مجرد علم 93 00:05:32,820 --> 00:05:40,740 يمكنك أيضا القيام مداخن في طوابير باستخدام القوائم المرتبطة أيضا. 94 00:05:40,740 --> 00:05:44,460 حتى إذا كان لديك صفيف، ما يمكن أن يكون كومة؟ 95 00:05:44,460 --> 00:05:46,810 A المكدس، الأولى، سوف يكون لديك حجم. 96 00:05:46,810 --> 00:05:49,950 لديك لتخزين ما هو حجم المكدس أن لديك الآن. 97 00:05:49,950 --> 00:05:52,980 وأيضا سيكون لديك مجموعة، في هذه الحالة من الأرقام، 98 00:05:52,980 --> 00:05:55,120 لكن إذا كنت تريد، يمكن أن يكون صفيف 99 00:05:55,120 --> 00:06:00,380 سلاسل، مجموعة من البنية، أي شيء تريد تخزين. 100 00:06:00,380 --> 00:06:03,240 حول كومة: الفرق بين كومة وقائمة مرتبطة 101 00:06:03,240 --> 00:06:08,590 هو أن في المكدس لديك حق الوصول إلى العنصر الأخير الذي تم وضعه في كومة فقط. 102 00:06:08,590 --> 00:06:11,770 انه دعا في الماضي، لأول مرة. 103 00:06:11,770 --> 00:06:15,090 تماما مثل لديك كومة من الصواني، 104 00:06:15,090 --> 00:06:17,670 إذا وضعت صينية على الجزء العلوي من المكدس، 105 00:06:17,670 --> 00:06:22,670 لديك لإزالة هذا الدرج الأول في الحصول على الأدراج الأخرى. 106 00:06:22,670 --> 00:06:26,310 انها نفس الشيء مع المداخن. 107 00:06:26,310 --> 00:06:31,220 حتى لو كنت تريد، على سبيل المثال، إضافة عنصر إلى كومة، ماذا علي أن أفعل؟ 108 00:06:31,220 --> 00:06:34,070 انه دعا دفعة، وانها جميلة واضحة. 109 00:06:34,070 --> 00:06:37,130 أول شيء عليك القيام به هو الاختيار إذا كان حجم المكدس 110 00:06:37,130 --> 00:06:40,150 ليس أكبر أو يساوي قدرة المكدس. 111 00:06:40,150 --> 00:06:45,810 لأنه إذا كنت بالفعل على قدرة كاملة، لا يمكنك إضافة أي شيء آخر. 112 00:06:45,810 --> 00:06:51,140 ثم إن لم يكن، لديك فقط لإضافة عنصر إلى المكدس. 113 00:06:51,140 --> 00:06:54,530 وأخيرا، زيادة حجم. حتى انها واضحة جدا. 114 00:06:54,530 --> 00:06:57,140 لذلك أنا فقط إضافة رقم 2. 115 00:06:57,140 --> 00:07:00,350 وإذا أريد لموسيقى البوب، وهو ما يعني أنني أريد أن إزالة 116 00:07:00,350 --> 00:07:03,870 العنصر الأخير الذي تمت إضافته وإرجاع قيمة العنصر، 117 00:07:03,870 --> 00:07:09,180 أول شيء لا بد لي من الاختيار هو أن المكدس ليست فارغة. 118 00:07:09,180 --> 00:07:11,510 لأنه إذا كان فارغا، وأنا لا يمكن أن يعود أي شيء. 119 00:07:11,510 --> 00:07:14,820 في هذه الحالة، وأنا عودته -1. 120 00:07:14,820 --> 00:07:18,960 خلاف ذلك، وأنا ذاهب إلى إنقاص حجم المواصفات، 121 00:07:18,960 --> 00:07:22,510 والعودة أرقام (s.size). 122 00:07:22,510 --> 00:07:27,230 لماذا أنا إنقاص حجم ثم العودة s.size؟ 123 00:07:27,230 --> 00:07:30,930 ذلك لأنه، في هذه الحالة، لديه المواصفات حجم 4، 124 00:07:30,930 --> 00:07:33,810 وأريد أن أعود العنصر الرابع، أليس كذلك؟ 125 00:07:33,810 --> 00:07:36,030 ولكن ما هو فهرس العنصر الرابع؟ ثلاثة. 126 00:07:36,030 --> 00:07:44,510 منذ أن كنت حجم - ستكون 3، ويمكنني أن مجرد العودة s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 لأنه 3. حتى انها مجرد مؤشر. 128 00:07:48,410 --> 00:07:50,380 يضع الآن >>. طوابير هي الى حد كبير نفس الشيء. 129 00:07:50,380 --> 00:07:54,950 والفرق الوحيد هو أنه بدلا من وجود في الماضي، لأول مرة، 130 00:07:54,950 --> 00:07:57,480 عليك أولا في، أولا خارج. 131 00:07:57,480 --> 00:07:59,460 ربما لو كنت في انتظار أن تذهب إلى الحفل، 132 00:07:59,460 --> 00:08:04,260 أنت لن تكون سعيدة إذا كان لديك كومة بدلا من قائمة انتظار. 133 00:08:04,260 --> 00:08:07,730 سوف يكون آخر شخص أن يأتي يكون أول شخص لدخول الحفل. 134 00:08:07,730 --> 00:08:09,760 كنت ربما لن تكون سعيدة. 135 00:08:09,760 --> 00:08:15,020 في قائمة الانتظار، وأول شخص في الحصول على هو أيضا أول شخص للخروج. 136 00:08:15,020 --> 00:08:18,720 حتى في تعريف قائمة انتظار، إلى جانب وجود حجم في مجموعة، 137 00:08:18,720 --> 00:08:23,360 لديك أيضا أن يكون الرأس، وهو مؤشر لرئيس المكدس. 138 00:08:23,360 --> 00:08:29,000 وبالتالي فإن العنصر الأول في الوقت الحالي. 139 00:08:29,000 --> 00:08:32,710 إدراج بقائمة الانتظار هو نفس الشيء مثل دفعة للمداخن. 140 00:08:32,710 --> 00:08:34,980 لو كنت ساذجة جدا، وكنت أقول، 141 00:08:34,980 --> 00:08:39,289 حسنا، أنا يمكن أن يفعل نفس الشيء بالضبط كما فعلت لدفع. 142 00:08:39,289 --> 00:08:44,030 أنا لا يمكن أن تحقق فقط إذا لم تكن تتجاوز قدرة. 143 00:08:44,030 --> 00:08:48,760 إذا كان كذلك، أعود كاذبة، وإلا يمكنني تصدير فقط قيمة جديدة 144 00:08:48,760 --> 00:08:50,630 ومن ثم زيادة حجم. 145 00:08:50,630 --> 00:08:52,750 ولكن لماذا هذا الخطأ؟ 146 00:08:52,750 --> 00:08:55,010 دعونا نرى هذا المثال. 147 00:08:55,010 --> 00:08:57,020 أحاول إدراج بقائمة الانتظار حفنة من الاشياء، 148 00:08:57,020 --> 00:08:58,390 ثم انا ذاهب الى dequeue وإدراج بقائمة الانتظار. 149 00:08:58,390 --> 00:09:00,550 هناك الكثير من الأوامر، ولكن الأمر في غاية البساطة. 150 00:09:00,550 --> 00:09:04,790 انا ذاهب الى إدراج بقائمة الانتظار 5، وذلك إضافة 5 ثم 7، 151 00:09:04,790 --> 00:09:09,310 1، 4، 6، ثم أريد أن dequeue شيء، 152 00:09:09,310 --> 00:09:12,000 وهو ما يعني أنني ذاهب لإزالة العنصر الأول. 153 00:09:12,000 --> 00:09:14,640 لذلك أنا ذاهب لإزالة عدد 3، أليس كذلك؟ 154 00:09:14,640 --> 00:09:17,320 العنصر الأول. بخير. 155 00:09:17,320 --> 00:09:21,450 الآن إذا حاولت إدراج بقائمة الانتظار شيء آخر، ما الذي سيحدث؟ 156 00:09:21,450 --> 00:09:24,290 وفقا لتنفيذ بلدي، 157 00:09:24,290 --> 00:09:31,040 كنت ذاهبا لوضع الرقم التالي في q.size المؤشر. 158 00:09:31,040 --> 00:09:35,140 في هذه الحالة، وحجم هو 8، 159 00:09:35,140 --> 00:09:38,640 وبالتالي فإن مؤشر 8 سيكون هنا في المركز الأخير. 160 00:09:38,640 --> 00:09:43,900 إذا حاولت إدراج بقائمة الانتظار 1 هنا، وأود أن تكون الكتابة الموقف الاخير 161 00:09:43,900 --> 00:09:45,870 إلى رقم 1، والتي هي خاطئة تماما. 162 00:09:45,870 --> 00:09:49,870 ما أريد القيام به هو التفاف حولها وانتقل إلى المركز الأول. 163 00:09:49,870 --> 00:09:52,870 ربما كنت فقط أن أقول، حسنا، أنا فقط يجب أن تحقق 164 00:09:52,870 --> 00:09:55,600 إذا يمكن أن أضع شيئا في الواقع هناك. 165 00:09:55,600 --> 00:09:58,560 إن لم يكن، وأنا أقول، أوه، القدرة الكاملة جديدة 166 00:09:58,560 --> 00:10:02,010 هو في الواقع قدرة - 1، وأنت لا تستطيع أن تضع عنصرا هناك. 167 00:10:02,010 --> 00:10:06,150 ولكن ما هي المشكلة؟ المشكلة هي أنه إذا أنا فقط dequeue الحق في كل شيء هنا 168 00:10:06,150 --> 00:10:08,240 ثم أحاول أن أضيف شيئا آخر، فإنها يمكن أن تقول فقط، 169 00:10:08,240 --> 00:10:11,210 حسنا، كنت بكامل طاقتها، والذي هو 0. 170 00:10:11,210 --> 00:10:13,620 ذلك هو ذهب قائمة الانتظار الخاصة بك. 171 00:10:13,620 --> 00:10:16,990 لديك للالتفاف حولها، وطريقة التفاف حول 172 00:10:16,990 --> 00:10:22,040 أن يا رفاق المستفادة في psets البصيرة وغيرها تستخدم وزارة الدفاع. 173 00:10:22,040 --> 00:10:29,090 يمكنك أن تجرب ذلك في المنزل أن نفهم لماذا كنت ستفعل q.size + q.head 174 00:10:29,090 --> 00:10:31,080 قدرة وزارة الدفاع، ولكن إذا تحقق هنا، 175 00:10:31,080 --> 00:10:34,760 يمكننا أن نرى أنه يعمل. 176 00:10:34,760 --> 00:10:37,760 حتى في المثال الأخير، كان q.size 8 177 00:10:37,760 --> 00:10:47,590 وكان رئيس 1، لأنه كان هنا هذا الموقف من الصفيف. 178 00:10:47,590 --> 00:10:51,970 لذلك سوف يكون 8 + 1، 9. أن قدرة وزارة الدفاع 9 يكون 0. 179 00:10:51,970 --> 00:10:56,640 فإنه يذهب إلى مؤشر 0. سنكون في المكان المناسب. 180 00:10:56,640 --> 00:10:59,750 ثم حاول قائمة الانتظار في المنزل. 181 00:10:59,750 --> 00:11:04,950 بعض الأمور الهامة: محاولة لفهم الفرق بين كومة وقائمة انتظار. 182 00:11:04,950 --> 00:11:11,620 في المنزل، في محاولة للحصول على دراية تنفيذ إدراج بقائمة الانتظار، dequeue، ودفع والبوب. 183 00:11:11,620 --> 00:11:16,560 ونفهم أيضا عندما كنت استخدام كل منها. 184 00:11:16,560 --> 00:11:22,830 لذلك دعونا >> الاسترخاء لمدة 10 ثانية مع مجموعة من Pokemons. 185 00:11:22,830 --> 00:11:26,080 والآن دعونا نعود إلى هياكل البيانات. 186 00:11:26,080 --> 00:11:29,770 تجزئة الجداول. هناك الكثير من الناس كانوا خائفين من الجداول التجزئة. 187 00:11:29,770 --> 00:11:33,650 في مشكلة تعيين 6، المدقق الإملائي. 188 00:11:33,650 --> 00:11:35,980 الجداول التجزئة ومحاولات، والكثير من الناس يشعرون بالخوف منهم. 189 00:11:35,980 --> 00:11:38,540 كانوا يعتقدون أنهم من الصعب جدا أن نفهم. نعم؟ 190 00:11:38,540 --> 00:11:41,490 ضبط [روب بودين] المشكلة 5. ضبط 5 >> مشكلة، نعم. وذلك بفضل روب. 191 00:11:41,490 --> 00:11:43,370 نعم. كان ستة هوف ن 'النفخة، نعم. 192 00:11:43,370 --> 00:11:49,340 تعيين 5 والمشكلة المدقق الإملائي، وكان لديك لاستخدام إما جدول تجزئة أو المحاولة. 193 00:11:49,340 --> 00:11:55,360 هناك الكثير من الناس يعتقد أنها كانت عظمى من الصعب أن نفهم، ولكنها في الواقع بسيط جدا. 194 00:11:55,360 --> 00:12:01,290 ما هو جدول تجزئة، في الأساس؟ جدول التجزئة هو مجموعة من القوائم المرتبطة. 195 00:12:01,290 --> 00:12:06,730 والفرق الوحيد بين مجموعة وجدول تجزئة 196 00:12:06,730 --> 00:12:09,730 هو أن في جدول التجزئة لديك شيء يسمى دالة تجزئة. 197 00:12:09,730 --> 00:12:12,080 ما هي وظيفة تجزئة؟ 198 00:12:12,080 --> 00:12:13,970 أنا لا أعرف إذا يا رفاق يمكن قراءة هنا. 199 00:12:13,970 --> 00:12:16,090 هذا هو مثال على جدول تجزئة. 200 00:12:16,090 --> 00:12:19,220 لذلك يمكنك أن ترى أن لديك صفيف مع 31 عناصر. 201 00:12:19,220 --> 00:12:22,440 وما نقوم به في جدول تجزئة ولها وظيفة هاش 202 00:12:22,440 --> 00:12:26,660 التي يتم الانتقال إلى ترجمة مفتاح، كل الباحث إلى فهرس. 203 00:12:26,660 --> 00:12:31,740 إذا، على سبيل المثال، إذا كنت ترغب في اختيار لB. هاريسون، 204 00:12:31,740 --> 00:12:34,190 وأود أن وضع B. هاريسون في وظائف تجزئة بلدي، 205 00:12:34,190 --> 00:12:36,960 وظيفة تجزئة سيعود 24. 206 00:12:36,960 --> 00:12:40,930 إذا كنت لا تعرف أن أريد لتخزين B. هاريسون في 24. 207 00:12:40,930 --> 00:12:46,580 لذلك هذا هو الفرق بين مجرد وجود مجموعة وجود جدول التجزئة. 208 00:12:46,580 --> 00:12:48,740 في جدول التجزئة سيكون لديك دالة التي يتم ذاهب لاقول لكم 209 00:12:48,740 --> 00:12:54,740 حيث لتخزين البيانات التي تريد تخزينها. 210 00:12:54,740 --> 00:12:57,040 للدالة البعثرة، وتريد أن تبحث عن وظيفة تجزئة 211 00:12:57,040 --> 00:13:00,600 هذا هو القطعية وزعت بشكل جيد. 212 00:13:00,600 --> 00:13:07,810 كما ترون هنا، نرى أن الكثير من البيانات التي أردت أن المخزن كان في الواقع 19 213 00:13:07,810 --> 00:13:12,470 بدلا من استخدام 31 و 30 و 29، والتي كانت كلها مجانية. 214 00:13:12,470 --> 00:13:16,920 لذلك كان ظيفة تجزئة التي استعملتها لم توزع بشكل جيد جدا. 215 00:13:16,920 --> 00:13:20,710 عندما نقول توزيعها جيدا، فهذا يعني أننا نريد أن يكون، 216 00:13:20,710 --> 00:13:26,520 تقريبا، على الأقل 1 أو 2 لكل من - 217 00:13:26,520 --> 00:13:32,190 مثل، وجود اختلاف في 1 أو 2 لكل من الأرقام القياسية في المصفوفات. 218 00:13:32,190 --> 00:13:43,950 كنت تريد أن يكون، تقريبا، نفس عدد العناصر في كل قائمة مرتبطة في الصفيف. 219 00:13:43,950 --> 00:13:48,600 وأنه من السهل للتحقق ما اذا كان صالح في جدول التجزئة، كما عرض الجداول التجزئة. 220 00:13:48,600 --> 00:13:51,770 ثم >> الأشجار. هذه هي شجرة. 221 00:13:51,770 --> 00:13:56,400 الأشجار في علوم الكمبيوتر رأسا على عقب لسبب ما. 222 00:13:56,400 --> 00:14:00,150 حتى هنا لديك جذر شجرة ثم الأوراق. 223 00:14:00,150 --> 00:14:05,630 يجب أن نعرف فقط التسميات للآباء والأمهات والأطفال. 224 00:14:05,630 --> 00:14:12,880 كل عقدة لديه أطفال، والتي هي العقد التي هي أقل من الأصل. 225 00:14:12,880 --> 00:14:19,660 لذلك، على سبيل المثال، 2 ستكون الوالد لمدة 3 وأخرى للطفل الحق هناك، 226 00:14:19,660 --> 00:14:25,290 بينما 3 ستكون الوالد لمدة 1 والأطفال الأخرى التي هي هناك. 227 00:14:25,290 --> 00:14:29,990 و1 سيكون الطفل 3 لوهلم جرا. 228 00:14:29,990 --> 00:14:34,610 لدينا شيء أكثر إثارة للاهتمام، ودعا شجرة البحث الثنائية، 229 00:14:34,610 --> 00:14:39,040 فيه جميع القيم على حق عقدة 230 00:14:39,040 --> 00:14:41,660 ستكون على الحق، والحق هنا - على الحق، 231 00:14:41,660 --> 00:14:46,780 ستكون أكبر من عنصر في الجذر. 232 00:14:46,780 --> 00:14:49,780 حتى إذا كان لدي عدد 5 هنا، جميع العناصر على الحق 233 00:14:49,780 --> 00:14:51,940 ستكون أكبر من 5، وعلى اليسار 234 00:14:51,940 --> 00:14:56,770 جميع العناصر ستكون أقل من 5. 235 00:14:56,770 --> 00:14:58,780 ما الفائدة من هذا؟ 236 00:14:58,780 --> 00:15:01,660 حسنا، إذا كنت تريد معرفة ما اذا كان الرقم 7 هو هنا، على سبيل المثال، 237 00:15:01,660 --> 00:15:05,960 اذهب فقط لأول 5 وانا ذاهب لرؤية، هو 7 أكبر أو أقل من 5؟ 238 00:15:05,960 --> 00:15:09,540 انها أكبر، لذلك وأنا أعلم أنه سيكون لديك لتكون على حق الشجرة. 239 00:15:09,540 --> 00:15:13,980 وذلك لدي أقل بكثير الاشياء للنظر في. 240 00:15:13,980 --> 00:15:19,520 تنفيذا لشجرة البحث الثنائية، وعقدة، وأنا ذاهب لمجرد أن يكون لديك البيانات، 241 00:15:19,520 --> 00:15:21,750 حتى ن الباحث؛ هل يمكن أن يكون أيضا سلسلة 242 00:15:21,750 --> 00:15:23,630 أو أي شيء تريد. 243 00:15:23,630 --> 00:15:28,100 عليك فقط أن تكون حذرا في تحديد ما هو أكبر، ما هو أقل من ذلك. 244 00:15:28,100 --> 00:15:30,390 حتى إذا كان لديك سلاسل، على سبيل المثال، هل يمكن أن تحدد 245 00:15:30,390 --> 00:15:34,690 أن جميع تلك الأشياء على اليمين ستكون لدينا طول أكبر، 246 00:15:34,690 --> 00:15:40,940 اليسار ستكون لدينا أطوال أقل، وبالتالي انها حقا متروك لكم. 247 00:15:40,940 --> 00:15:44,930 >> كيف يمكنني تنفيذ تجد لBST؟ 248 00:15:44,930 --> 00:15:47,840 أول شيء علينا القيام به هو معرفة ما اذا كان الجذر هو NULL. 249 00:15:47,840 --> 00:15:50,920 اذا كان NULL، فهذا يعني أن الشيء ليس هناك 250 00:15:50,920 --> 00:15:53,330 لأنك لا تملك حتى شجرة، أليس كذلك؟ 251 00:15:53,330 --> 00:15:55,790 لذلك أعود كاذبة. 252 00:15:55,790 --> 00:15:58,740 خلاف ذلك، وانا ذاهب للتحقق مما إذا كان العدد أكبر 253 00:15:58,740 --> 00:16:01,720 من القيمة في الجذر. 254 00:16:01,720 --> 00:16:04,250 انا ذاهب الى محاولة العثور على العنصر في الحق 255 00:16:04,250 --> 00:16:08,590 من الشجرة. 256 00:16:08,590 --> 00:16:11,310 ترى أن أنا باستخدام العودية هنا. 257 00:16:11,310 --> 00:16:14,150 ثم إذا كان أقل من ذلك، انا ذاهب لإلقاء نظرة على اليسار. 258 00:16:14,150 --> 00:16:18,330 وأخيرا، وإلا، إذا لم يكن أقل أو ليس أكبر، 259 00:16:18,330 --> 00:16:20,660 وهو ما يعني أنه من القيمة نفسها. 260 00:16:20,660 --> 00:16:23,010 لذلك أنا فقط العودة الحقيقية. 261 00:16:23,010 --> 00:16:26,360 يمكنك ان ترى هنا أن اعتدت إذا، إذا، إذا. 262 00:16:26,360 --> 00:16:30,820 وتذكر، في مسابقة 0، كان لدينا مشكلة أن كان إذا، إذا، إذا، 263 00:16:30,820 --> 00:16:32,780 وكان من المفترض أن تجد عدم الكفاءة، 264 00:16:32,780 --> 00:16:35,180 وكان عدم الكفاءة الذي استخدمته إذا. 265 00:16:35,180 --> 00:16:39,060 يجب عليك إذا استخدمت، الا اذا، الا اذا وآخر. 266 00:16:39,060 --> 00:16:44,240 لذلك، يجب أن استخدمها الا اذا والا اذا وآخر هنا؟ 267 00:16:44,240 --> 00:16:46,200 لا أحد - نعم؟ 268 00:16:46,200 --> 00:16:51,140 [طالب يتحدث، غير مسموع] 269 00:16:51,140 --> 00:16:53,480 هذا ممتاز. حتى انها قالت انها لا يهم، 270 00:16:53,480 --> 00:16:55,930 لمجرد أن عدم الكفاءة التي كانت لدينا قبل 271 00:16:55,930 --> 00:16:59,550 كان ذلك لأنه، ربما إذا كان راض بعض شرط، 272 00:16:59,550 --> 00:17:03,570 لذلك كنت قد أنجزت هذا العمل، ولكن بعد ذلك كانوا في طريقهم لتحقق كل من الشروط الأخرى. 273 00:17:03,570 --> 00:17:06,319 ولكن في هذه الحالة، فإنه عاد على الفور، لذلك لا يهم. 274 00:17:06,319 --> 00:17:09,220 لذلك لم يكن لديك لاستخدام آخر إذا. 275 00:17:09,220 --> 00:17:11,740 >> وأخيرا، دعونا نتحدث عن محاولات، 276 00:17:11,740 --> 00:17:13,800 التي هي المفضلة الجميع. 277 00:17:13,800 --> 00:17:15,980 المحاولة هي شجرة من المصفوفات. 278 00:17:15,980 --> 00:17:20,369 انها سريعة جدا للبحث عن القيم، لكنه يستخدم الكثير من الذاكرة. 279 00:17:20,369 --> 00:17:22,530 وانها عادة ما تكون لتصفية الكلمات، وذلك عند 280 00:17:22,530 --> 00:17:27,920 تريد أن تنفذ، على سبيل المثال، وأنا لا أعرف، مثل دليل الهاتف في هاتفك 281 00:17:27,920 --> 00:17:30,440 وكنت تريد أن تكون قادرا على كتابة B 282 00:17:30,440 --> 00:17:32,510 ولها أسماء الأشخاص الذين لديهم فقط B. 283 00:17:32,510 --> 00:17:37,960 فإنه من السهل جدا لتنفيذ ذلك باستخدام المحاولة، على سبيل المثال. 284 00:17:37,960 --> 00:17:39,820 كيف تعرف عقدة في محاولة؟ 285 00:17:39,820 --> 00:17:43,910 لديك لمجرد الحصول على منطقي أن يتم الانتقال إلى is_word. 286 00:17:43,910 --> 00:17:48,660 يمثل ذلك باستخدام كافة الأحرف قبل تلك العقدة، 287 00:17:48,660 --> 00:17:51,920 كنت قادرا على تشكيل كلمة واحدة، 288 00:17:51,920 --> 00:17:57,230 ومن ثم سيكون لديك مجموعة من المؤشرات إلى العقد. 289 00:17:57,230 --> 00:18:03,120 يمكنك أن ترى أن لدينا مجموعة من العقد الأصل، لذلك عقدة * مجموعة؟ نعم؟ 290 00:18:03,120 --> 00:18:06,050 لذلك دعونا نرى كيف ستعمل. لالتدقيق الإملائي، 291 00:18:06,050 --> 00:18:08,230 لدينا مجموعة من 27 عناصر، 292 00:18:08,230 --> 00:18:12,150 لأن لدينا جميع الرسائل بالإضافة إلى اقتباس أحادية. 293 00:18:12,150 --> 00:18:17,800 قبل هنا أنا ذاهب لمجرد استخدام 2 لأنني أريد أن أكون قادرا على الكتابة على اللوح. 294 00:18:17,800 --> 00:18:20,230 بخير. لذلك هذا هو مثال على المحاولة. 295 00:18:20,230 --> 00:18:25,600 إذا أنا فقط تعريف العقدة الأولى، سآخذ مجموعة من العناصر 2 296 00:18:25,600 --> 00:18:29,290 التي هي 2 المؤشرات إلى NULL، لذلك أنا فقط وضعت 'أ' و 'ب'. 297 00:18:29,290 --> 00:18:32,430 وانا ذاهب الى لديها منطقي أن يقول is_word. 298 00:18:32,430 --> 00:18:34,420 انها سوف تكون كاذبة لأول واحد، 299 00:18:34,420 --> 00:18:37,370 للتو، قبل أن لم يكن لديك أي حرفا. 300 00:18:37,370 --> 00:18:40,900 حتى كلمة فارغة ليست كلمة. لذلك فمن كاذبة. 301 00:18:40,900 --> 00:18:46,320 إذا كنت ترغب في إضافة 'ا' لهذا القاموس، ماذا علي أن أفعل؟ 302 00:18:46,320 --> 00:18:49,760 كنت أود أن يكون فقط لmalloc عقدة جديدة ل'أ'، 303 00:18:49,760 --> 00:18:54,630 ثم قم بإضافة كلمتها إلى true. 304 00:18:54,630 --> 00:19:00,180 لذلك يمثل مجرد أن وجود 'ا' هو ذاهب ليكون صحيحا. معنى؟ 305 00:19:00,180 --> 00:19:04,120 ثم إذا كنت ترغب في إضافة 'با'، سآخذ لmalloc 1 ل 'ب'، 306 00:19:04,120 --> 00:19:07,550 ثم أنا ذاهب لإعداد منطقية إلى false، 307 00:19:07,550 --> 00:19:10,160 لأن 'ب' في حد ذاته ليست كلمة. 308 00:19:10,160 --> 00:19:13,010 ثم انا ذاهب الى malloc بعضها البعض ل'أ'، لذلك 'با'، 309 00:19:13,010 --> 00:19:16,290 ثم انا ذاهب الى اقامة انها كلمة إلى true. 310 00:19:16,290 --> 00:19:18,950 لأن 'با' هو كلمة واحدة. 311 00:19:18,950 --> 00:19:21,910 ثم إذا كنت ترغب في معرفة ما إذا كان 'ب' في هذا القاموس، 312 00:19:21,910 --> 00:19:26,730 يمكنني أن أذهب فقط لأول واحد، 'ب'. أذهب إلى أسفل، وأنا ننظر إلى كلمة واحدة، وتقول كاذبة. 313 00:19:26,730 --> 00:19:30,110 حتى انها ليست كلمة واحدة. إذا كنت تريد أن تحقق 'با'، 314 00:19:30,110 --> 00:19:38,010 أذهب إلى أول واحد، 'ب'، ثم انتقل إلى 'أ'، وأنا أرى صحيح، لذلك هو كلمة واحدة. معنى؟ 315 00:19:38,010 --> 00:19:41,950 هناك الكثير من الناس الحصول على الخلط من جانب محاولات. لا؟ 316 00:19:41,950 --> 00:19:44,740 وأخيرا >>، هوفمان الترميز. هوفمان الترميز مفيد جدا 317 00:19:44,740 --> 00:19:47,550 لحفظ الذاكرة وضغط الملفات النصية، 318 00:19:47,550 --> 00:19:52,270 فقط لأن الكثير من الأوقات كنت تستخدم 'أ' و 'ه'، على سبيل المثال، 319 00:19:52,270 --> 00:19:57,710 في المستندات الخاصة بك، ولكن أنا لا أعرف ما إذا كان استخدام يا رفاق 'ف' أو 'ض' قدر. 320 00:19:57,710 --> 00:20:02,040 وجود بايت فقط 1 لكل حرف واحد، 321 00:20:02,040 --> 00:20:08,520 كل واحد - 256 حرفا التي لدينا في جدول ASCII ليس الأمثل للغاية، 322 00:20:08,520 --> 00:20:11,410 فقط لأن هناك بعض الأحرف التي تستخدمها أكثر من ذلك بكثير، 323 00:20:11,410 --> 00:20:15,180 لذلك ربما يجب عليك استخدام ذاكرة أقل لأولئك. 324 00:20:15,180 --> 00:20:17,560 كيف يمكنني استخدام الترميز هوفمان؟ 325 00:20:17,560 --> 00:20:20,010 علينا أن نفعل شجرة هوفمان. 326 00:20:20,010 --> 00:20:23,370  شجرة هوفمان لديه العقد 327 00:20:23,370 --> 00:20:27,760 التي لها الرمز الذي سيكون مثل، 'أ'، 'ب'، 'ج'، والرسالة، 328 00:20:27,760 --> 00:20:32,990 أيا كان لديك بريد إلكتروني، تردد هذا هو التردد الذي يظهر الكلمة في النص، 329 00:20:32,990 --> 00:20:36,280 التي تم خلق شجرة هوفمان ل، 330 00:20:36,280 --> 00:20:41,800 ثم عقدة ما يجري للإشارة إلى يسار شجرة هوفمان 331 00:20:41,800 --> 00:20:47,210 وعقدة أخرى التي يتم الانتقال للإشارة إلى الحق. لذلك تماما مثل شجرة. 332 00:20:47,210 --> 00:20:49,440 كيف يمكن بناء شجرة هوفمان؟ 333 00:20:49,440 --> 00:20:54,020 وأنت تسير في اختيار العقد 2 التي لديها أدنى الترددات. 334 00:20:54,020 --> 00:20:56,490 إذا كان لديك ربطة عنق وأنت تسير لاختيار العقد 2 335 00:20:56,490 --> 00:20:59,870 التي لديها أدنى القيم ASCII كذلك. 336 00:20:59,870 --> 00:21:02,420 ثم كنت تريد الذهاب لإنشاء شجرة جديدة للخروج من هذه العقد 2 337 00:21:02,420 --> 00:21:08,030 التي ستكون لدينا وتيرة مجتمعة في العقدة الأصل. 338 00:21:08,030 --> 00:21:13,240 ثم وأنت تسير لإزالة 2 الأطفال من الغابات 339 00:21:13,240 --> 00:21:15,570 واستبدالها مع الوالد. 340 00:21:15,570 --> 00:21:18,930 وأنت تسير أن أكرر أن حتى يكون لديك فقط 1 شجرة في الغابة. 341 00:21:18,930 --> 00:21:23,840 لذلك دعونا نرى كيف كنت ستفعل شجرة هوفمان لZAMYLA. 342 00:21:23,840 --> 00:21:29,220 يمكنك ان ترى هنا أن جميع الرسائل لديهم تردد 1 باستثناء "أ"، وهذا لديه تردد 2. 343 00:21:29,220 --> 00:21:34,090 لذلك أنا خلقت العقد لجميع الرسائل أضع في ترتيب قيمة ASCII والتردد. 344 00:21:34,090 --> 00:21:40,090 حتى لو كنت تريد إنشاء أول شجرة، فإنه سيكون مع 'L' و 'M'. 345 00:21:40,090 --> 00:21:43,100 لذلك فمن هنا. وتواتر الزوج يكون 2 346 00:21:43,100 --> 00:21:49,470 لأنه 1 + 1، ثم 2 التالية مع أدنى الترددات هي 'Y' و 'Z'. 347 00:21:49,470 --> 00:21:53,180 ثم لدي كل منهم يجري - يكون ترددها 2. 348 00:21:53,180 --> 00:22:00,470 حتى تلك التي هي تلك التي لديها أقل قيمة ASCII لاحد المقبل؟ 349 00:22:00,470 --> 00:22:04,830 'A' و 'L'. لذلك أنا خلق عقدة جديدة، 350 00:22:04,830 --> 00:22:09,930 وأخيرا، فإنه من 4 و 2، لذلك 2 ستكون على اليسار. 351 00:22:09,930 --> 00:22:12,430 وهذه هي شجرة هوفمان. 352 00:22:12,430 --> 00:22:16,060 ثم إذا أريد أن أكتب بعض النصوص، 353 00:22:16,060 --> 00:22:24,440 مثل في ثنائي لتحويل إلى نص، باستخدام شجرة هوفمان من السهل جدا. 354 00:22:24,440 --> 00:22:30,220 على سبيل المثال، إذا قلت أن تتحرك إلى اليسار هو 0 وتتحرك إلى اليمين هو 1، 355 00:22:30,220 --> 00:22:32,410 ما هو ذاهب لتمثيل؟ 356 00:22:32,410 --> 00:22:35,530 ذلك مثل 1، 1، الحق في ذلك، والحق، 357 00:22:35,530 --> 00:22:40,370 وبعد ذلك 0، اليسار بحيث يكون L، ثم 1، 0، 0. 358 00:22:40,370 --> 00:22:43,950 حتى 1، 0، حتى مجرد 1، 0، 'A'. 359 00:22:43,950 --> 00:22:47,540 ثم 0، 1، لذلك 'Z'. 360 00:22:47,540 --> 00:22:52,170 ثم 1، 0، 0 - لا. 361 00:22:52,170 --> 00:22:56,780 0، ستكون 0 'Y'، لذلك كسلان. 362 00:22:56,780 --> 00:23:06,060 ذلك أن كل شيء بالنسبة لي، والذهاب روب لتولي المسؤولية. 363 00:23:06,060 --> 00:23:08,400 >> [روب بودين] لذا، الأسبوع 7 الاشياء. 364 00:23:08,400 --> 00:23:11,390 لدينا الكثير ليذهب أكثر سريع حقا. 365 00:23:11,390 --> 00:23:13,430 مشغلي المختصة بالبت، تجاوز سعة المخزن المؤقت، 366 00:23:13,430 --> 00:23:16,760 مكتبة CS50، ثم HTML، HTTP، CSS. 367 00:23:16,760 --> 00:23:20,990 كل ما في مثل 15 إلى 20 دقيقة. 368 00:23:20,990 --> 00:23:24,330 مشغلي المختصة بالبت. هناك 6 منهم التي تحتاج إلى معرفته. 369 00:23:24,330 --> 00:23:31,200 أحادي المعامل و، تمثل أو، اكس اور، وتحول اليسار، وتحول الحق، وليس. 370 00:23:31,200 --> 00:23:35,420 حق التحول وليس بالكاد رأيت في محاضرة على الإطلاق. 371 00:23:35,420 --> 00:23:40,480 سنذهب أكثر من ذلك بسرعة هنا، ولكن من الجيد أن نعرف أن هذه هي 6 موجودة. 372 00:23:40,480 --> 00:23:45,070 تذكر أن مشغلي المختصة بالبت مثل عند القيام 3 + 4. 373 00:23:45,070 --> 00:23:49,420 كنت لا تتعامل مع ثنائي من 3 و 4. 374 00:23:49,420 --> 00:23:56,550 مع مشغلي المختصة بالبت أنك تتعامل فعلا مع البتات الفردية للأرقام 3 و 4. 375 00:23:56,550 --> 00:23:59,120 >> لذا فإن أول واحد أننا سوف أقوله هو أحادي المعامل لا، 376 00:23:59,120 --> 00:24:02,340 وكل ما يفعله هو انعكاس كافة البتات. 377 00:24:02,340 --> 00:24:05,500 حتى هنا، إذا كنت تكتب هذا في C، فإنك لن اكتبها 378 00:24:05,500 --> 00:24:09,380 كما ~ 11011 أو أيا كان، وكنت أكتبه مثل ~ 4، 379 00:24:09,380 --> 00:24:12,970 ومن ثم فإنه الوجه تمثيل ثنائي 4. 380 00:24:12,970 --> 00:24:24,800 حتى هنا، ~ بعض رقم ثنائي 1101101 تسير على الوجه تماما كل من 1 إلى 0 والجميع 0 إلى 1 في. 381 00:24:24,800 --> 00:24:27,600 كما قلت هناك، والاستخدام المتكرر لهذا، 382 00:24:27,600 --> 00:24:30,830 وسنرى ذلك في بعض الشيء، كما لو أننا نريد أن نخرج مع بعض رقم 383 00:24:30,830 --> 00:24:35,460 حيث كل من البتات هي 1، باستثناء واحد منهم. 384 00:24:35,460 --> 00:24:38,560 ذلك انها عادة ما تكون أسهل للتعبير عن عدد 385 00:24:38,560 --> 00:24:40,630 حيث يتم تعيين مجرد أن بت واحد، 386 00:24:40,630 --> 00:24:44,650 ومن ثم اتخاذ ~ منه، لذلك تم تعيين كل شيء آخر عدا عن أن واحدا. 387 00:24:44,650 --> 00:24:50,300 وهذا ما نحن ذاهبون إلى استخدام أكثر قليلا. 388 00:24:50,300 --> 00:24:58,220 تمثل أو >>. هنا 2 الأرقام الثنائية، وهذه الأرقام 2 389 00:24:58,220 --> 00:25:00,780 هي ممثلة جميلة، لأنها تمثل كل ما يمكن 390 00:25:00,780 --> 00:25:07,290 مزيج من البتات يمكن أن تحتاج للعمل على. 391 00:25:07,290 --> 00:25:13,540 هنا، عندما كنت OR لتنفيذها كل بت، ونحن ذاهبون لمجرد مقارنة لأسفل على التوالي. 392 00:25:13,540 --> 00:25:15,410 حتى على الجانب الأيسر لدينا 1 و 1. 393 00:25:15,410 --> 00:25:20,510 عندما كنت أحادي المعامل | تلك، ما أنا ذاهب للحصول على؟ واحد. 394 00:25:20,510 --> 00:25:25,320 ثم أحادي المعامل | 0 و 1 هو الذهاب الى تعطيني؟ واحد. 395 00:25:25,320 --> 00:25:27,840 أحادي المعامل 1 و 0 ستكون الشيء نفسه، واحد. 396 00:25:27,840 --> 00:25:31,880 أحادي المعامل 0 | 0 سوف تعطيني 0. 397 00:25:31,880 --> 00:25:37,300 وبالتالي فإن الحالة الوحيدة التي أحصل 0 هو في 0 | 0 القضية. 398 00:25:37,300 --> 00:25:40,020 ويمكن أن تفكر في أن مثل الأملاح منطقية. 399 00:25:40,020 --> 00:25:44,830 لذلك إذا كنت تفكر في 1 صحيح كما و0 كاذبة كما، والشيء نفسه ينطبق هنا. 400 00:25:44,830 --> 00:25:50,040 ذلك صحيح أو صحيح غير صحيح؛ صحيحة أو خاطئة هو الصحيح. 401 00:25:50,040 --> 00:25:57,150 خاطئة أو صحيحة صحيح؛ كاذبة أو خاطئة هو الشيء الوحيد الذي كاذبة فعلا. 402 00:25:57,150 --> 00:26:00,100 وهنا المثال الذي يجب أن تعرفه 403 00:26:00,100 --> 00:26:05,160 كمثال جيد جدا من عندما تستخدم مشغلي المختصة بالبت. 404 00:26:05,160 --> 00:26:08,660 إذا كنا هنا أو رأس المال "أ" مع Ox20، 405 00:26:08,660 --> 00:26:11,830 وسوف نبحث في هذه في الثانية، نحصل على شيء. 406 00:26:11,830 --> 00:26:16,020 وإذا كنا أو صغيرة 'أ' مع Ox20، نحصل على شيء. 407 00:26:16,020 --> 00:26:26,750 لذلك دعونا سحب ما يصل جدول ASCII. 408 00:26:26,750 --> 00:26:34,000 بخير. ونحن هنا نرى أن "أ" هو - 409 00:26:34,000 --> 00:26:36,920 هنا لدينا "أ" هي العشرية 65. 410 00:26:36,920 --> 00:26:45,120 ولكن سأذهب مع الست عشري، وهو Ox41. 411 00:26:45,120 --> 00:26:48,280 متأكد من أننا رأينا ذلك في الصف. أعتقد أننا رأينا ذلك في الطبقة 412 00:26:48,280 --> 00:26:52,730 أنه من السهل جدا لتحويل من ست عشري إلى ثنائي. 413 00:26:52,730 --> 00:26:55,280 حتى هنا، وإذا كنت تريد أن تضع 4 إلى ثنائي، 414 00:26:55,280 --> 00:26:59,550 أن مجرد ستكون 0100. 415 00:26:59,550 --> 00:27:03,620 هذا هو المكان 1، والمكان 2، والمكان 4، لذلك هذا هو 4. 416 00:27:03,620 --> 00:27:08,550 ثم أنا يمكن تقسيم 1 إلى ثنائي، والتي ستكون 0001. 417 00:27:08,550 --> 00:27:14,280 وحتى هذا سيكون تمثيل "أ" في ثنائي. 418 00:27:14,280 --> 00:27:22,720 مع الأخذ صغيرة 'أ'، كما تسير الان لتكون Ox61، 419 00:27:22,720 --> 00:27:27,050 حيث تقسيم هذه تصل إلى ثنائي، لذلك 6 - 420 00:27:27,050 --> 00:27:37,830 دعونا نفعل ذلك في الواقع - ليس هناك ممحاة؟ ممحاة. 421 00:27:37,830 --> 00:27:48,220 Ox61. حتى تقسيم 6 إلى ثنائي ستكون 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 وتقسيم 1 ستكون 0001. 423 00:27:54,610 --> 00:27:56,520 أبحث في الفرق بين هذه 2، 424 00:27:56,520 --> 00:28:04,250 ونحن نرى أن الفرق الوحيد بين صغيرة ورأس المال "أ" هذا هو بت واحد. 425 00:28:04,250 --> 00:28:11,810 ذلك يعود إلى هنا - حسنا. 426 00:28:11,810 --> 00:28:15,920 العودة إلى هنا، إذا نظرنا إلى ما هو بت Ox20، 427 00:28:15,920 --> 00:28:22,210 Ox20 تقسيم ذلك إلى ثنائي لها، 428 00:28:22,210 --> 00:28:27,310 هو 0010، 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20، بت فقط أن يتم تعيين هذا البت هو أننا نشعر بالقلق مع، 430 00:28:33,470 --> 00:28:38,210 مع التبديل بين رأس المال والصغيرة 'أ'. 431 00:28:38,210 --> 00:28:47,610 إذا كنت أو "أ"، والذي هو هذا واحد، 'A'، 432 00:28:47,610 --> 00:28:50,580 إذا كنت أو "أ" مع Ox20، 433 00:28:50,580 --> 00:28:53,490 ما أنا ذاهب للحصول على؟ 434 00:28:53,490 --> 00:28:58,960 [طالب، غير مسموع] >> حرف صغير 'أ'، لأنه سيكون لهذا الوجه بت إلى 1. 435 00:28:58,960 --> 00:29:04,170 وإذا كنت أو 'أ' مع Ox20، ما أنا ذاهب للحصول على؟ 436 00:29:04,170 --> 00:29:08,780 أحرف صغيرة لذلك، لمجرد oring 'أ' مع Ox20، 437 00:29:08,780 --> 00:29:14,580 أنا ذاهب لمجرد أن هذا oring بت واحد إلى 1؛ انها بالفعل 1، لذلك لا يهم. 438 00:29:14,580 --> 00:29:17,960 حتى نحصل على 'أ' و ''. 439 00:29:17,960 --> 00:29:24,820 >> أحادي المعامل AND. مرة أخرى، لا يمكننا التفكير في هذا الأمر لدينا النظير المنطقي و. 440 00:29:24,820 --> 00:29:28,180 على الجانب الأيسر لدينا حقيقي وصحيح. 441 00:29:28,180 --> 00:29:31,160 انها تسير ليكون صحيحا، وبالنسبة لجميع الحالات، 442 00:29:31,160 --> 00:29:36,270 كاذبة وحقيقية أو صحيحة وكاذبة، أو كاذبة وزائفة، 443 00:29:36,270 --> 00:29:38,550 أيا من تلك الأشياء صحيحة. 444 00:29:38,550 --> 00:29:44,170 فما نحن في نهاية المطاف الحصول على 1000. 445 00:29:44,170 --> 00:29:48,830 وحتى الآن، وهنا، وهنا حيث كنت قد استخدمت المختصة بالبت مضمونة لا، 446 00:29:48,830 --> 00:29:52,230 حيث كان لدينا Ox20. 447 00:29:52,230 --> 00:29:54,350 لذلك هذا هو Ox20. 448 00:29:54,350 --> 00:29:59,570 الآن ما أريد القيام به، أحادي المعامل ~ من Ox20. 449 00:29:59,570 --> 00:30:03,600 التي يتم الانتقال إلى انعكاس كافة البتات. 450 00:30:03,600 --> 00:30:09,330 وذلك لدي 1101، 1111. 451 00:30:09,330 --> 00:30:18,940 وهكذا "أ" anded مع ~ Ox20 سوف تعطيني ما؟ 452 00:30:18,940 --> 00:30:22,430 بت فقط نحن فعلا بحاجة إلى التفكير في هذا واحد، 453 00:30:22,430 --> 00:30:26,020 منذ ذلك الحين، إذا تم تعيين كل من هذه القطع إلى 1، 454 00:30:26,020 --> 00:30:29,000 ثم ونحن في طريقنا للحصول على بالضبط ما 'A' كان، 455 00:30:29,000 --> 00:30:31,260 باستثناء، ربما، ما هو هذا الشيء. 456 00:30:31,260 --> 00:30:34,460 لأنه إذا كان 1، والآن انها ستكون تعيين إلى 0، 457 00:30:34,460 --> 00:30:39,810 لأن هذا هو ما، anded مع هذا ستكون 0. 458 00:30:39,810 --> 00:30:43,280 فما هو 'A' و ~ Ox20 سوف تعطيني؟ 459 00:30:43,280 --> 00:30:48,200 [الإجابة على الطلاب، وغير مسموع] >> وما هو 'ا' و- انها 'A'. 460 00:30:48,200 --> 00:30:52,170 وما هو 'ا' و ~ Ox20 سوف تعطيني؟ 461 00:30:52,170 --> 00:30:56,720 'A.' لأن هذا هو حاليا 1. 462 00:30:56,720 --> 00:30:59,570 والقادمة مع هذا 0 سوف تجعل من 0، 463 00:30:59,570 --> 00:31:02,530 والآن ونحن في طريقنا للحصول على 'A'. 464 00:31:02,530 --> 00:31:06,600 >> كلاهما "أ"، وأخيرا وليس آخرا من هذا النوع، 465 00:31:06,600 --> 00:31:10,830 لدينا XOR. انها تشبه إلى حد كبير أو، 466 00:31:10,830 --> 00:31:14,400 إلا أنه يعني حصرا أو. 467 00:31:14,400 --> 00:31:18,420 هذا هو مثل ما هو رأيك في العادة على أنه أو في العالم الحقيقي. 468 00:31:18,420 --> 00:31:23,190 لذلك يمكنك القيام به إما 'س' أو 'ص'، ولكن ليس على حد سواء. 469 00:31:23,190 --> 00:31:28,700 هنا 1 ^ 1 ستكون 0. 470 00:31:28,700 --> 00:31:33,650 لأن صحيح، وهذا هو - أنها لا تعمل وكذلك مع منطقية الصواب والخطأ 471 00:31:33,650 --> 00:31:37,150 كما أحادي المعامل ووأو فعل، 472 00:31:37,150 --> 00:31:40,100 ولكن صحيح ^ الحقيقية هي كاذبة. 473 00:31:40,100 --> 00:31:44,810 لأننا نريد فقط أن العودة الحقيقية إذا كان واحد منهم فقط هو الصحيح. 474 00:31:44,810 --> 00:31:50,950 حتى 1 ^ 1 0. ماذا عن 0 ^ 1؟ 475 00:31:50,950 --> 00:31:56,010 هو 1. 1 ^ 0 1، 0 ^ 0 0. 476 00:31:56,010 --> 00:32:03,890 وذلك في ظل جميع الظروف، 0 أحادي المعامل شيئا 0 ستكون 0. 477 00:32:03,890 --> 00:32:10,270 1 أحادي المعامل أو شيئا 0 0 1 أحادي المعامل، 478 00:32:10,270 --> 00:32:14,660 اذا كان | أو ^، فإنه سوف يكون 1، وإذا كان وأنه سوف يكون 0. 479 00:32:14,660 --> 00:32:20,850 والحالة الوحيدة المختصة بالبت فيها 1 1 1 ليس هو مع أو حصرية. 480 00:32:20,850 --> 00:32:24,580 هذا هو 0110. 481 00:32:24,580 --> 00:32:36,520 حتى هنا الآن، وذلك باستخدام XOR - لذلك نحن مرة أخرى في 20. 482 00:32:36,520 --> 00:32:43,480 'A' ^ Ox20 هي هذه البتات 2 نحن مقارنة. 483 00:32:43,480 --> 00:32:50,020 لذلك 1 ^ 0 سوف تعطيني ما؟ A واحد. 484 00:32:50,020 --> 00:32:58,430 'A' ^ Ox20 سوف تعطيني؟ أحرف صغيرة أ. 485 00:32:58,430 --> 00:33:04,010 'أ' ^ Ox20 سوف تعطيني؟ رأس المال A. 486 00:33:04,010 --> 00:33:09,310 لأن ما يقوم به هذا، وهذا XORing مع Ox20 487 00:33:09,310 --> 00:33:15,380 يتم التقليب بشكل فعال ما هذا الشيء هو. 488 00:33:15,380 --> 00:33:21,240 إذا كان هذا هو 0، وانه حان الوقت سوف تصبح 1. 489 00:33:21,240 --> 00:33:26,160 لأن هذا هو 1، 1 ^ 1 0. 490 00:33:26,160 --> 00:33:33,280 لذلك لدينا 'ا' أصبحت 'A'، ونحن 'A' أصبحت 'أ'. 491 00:33:33,280 --> 00:33:36,910 حتى XOR هو وسيلة مريحة حقا من مجرد التقليب القضية. 492 00:33:36,910 --> 00:33:39,960 كنت فقط أريد أن تكرار عبر سلسلة من الرسائل 493 00:33:39,960 --> 00:33:44,330 وتتناوب حالة كل حرف واحد، 494 00:33:44,330 --> 00:33:50,680 كنت للتو XOR كل شيء مع Ox20. 495 00:33:50,680 --> 00:33:55,220 >> ونحن الآن لم يقم التحول. تحول اليسار هو مجرد الذهاب الى، أساسا، 496 00:33:55,220 --> 00:34:01,250 دفع كل من الأرقام في، أو إلى اليسار، وإدراج 0 وراءها. 497 00:34:01,250 --> 00:34:05,550 حتى هنا لدينا 00001101. 498 00:34:05,550 --> 00:34:08,560 ونحن في طريقنا لدفع 3 0 في من الناحية اليمنى 499 00:34:08,560 --> 00:34:13,580 ونحصل على 01101000. 500 00:34:13,580 --> 00:34:16,380 من حيث nonbinary، 501 00:34:16,380 --> 00:34:24,699 ونحن نرى أن هذا هو حقا التعامل مع 13 3 تحول اليسار، مما يعطينا 104. 502 00:34:24,699 --> 00:34:32,530 تحول ذلك اليسرى، ونحن نرى هنا، خ ذ << هو في الأساس س * 2 ^ ذ. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3، 2 ^ 3 هو 8، 13 * 8 لذلك هو 104. 504 00:34:40,139 --> 00:34:45,679 إذا كنت مجرد التفكير الثنائي بشكل عام، كيف أن كل أرقام، 505 00:34:45,679 --> 00:34:49,530 إذا بدأنا من الحق، انها مكان 1، ثم 2 مكان، ثم مكان ال 4 ل. 506 00:34:49,530 --> 00:34:51,330 ذلك عن طريق دفع في 0 من الجهة اليمنى، 507 00:34:51,330 --> 00:34:55,080 نحن فقط دفع الأمور التي كانت في المكان ال 4 إلى 8 مكان، و 508 00:34:55,080 --> 00:34:57,920 والأشياء التي كانت في مكان 8 الى 16 في مكان. 509 00:34:57,920 --> 00:35:01,280 كل وردية يضاعف فقط من خلال 2. نعم؟ 510 00:35:01,280 --> 00:35:05,210 [طالب] ماذا يحدث إذا تحولت بنسبة 5؟ 511 00:35:05,210 --> 00:35:10,790 [بودين] إذا تحولت بنسبة 5 أنك ستخسر مجرد أرقام. 512 00:35:10,790 --> 00:35:15,410 حتما، انها نفس الشيء. مثل، الأعداد الصحيحة هي 32 بت فقط، 513 00:35:15,410 --> 00:35:20,750 حتى إذا قمت بإضافة 2 أعداد صحيحة كبيرة حقا، انها فقط لا تناسب في عدد صحيح. 514 00:35:20,750 --> 00:35:23,660 لذلك فمن نفس الشيء هنا. إذا كنت تحول بنسبة 5، 515 00:35:23,660 --> 00:35:25,650 نحن ستخسر مجرد أن واحد. 516 00:35:25,650 --> 00:35:28,820 وهذا النوع من ما أعنيه "تقريبا" 517 00:35:28,820 --> 00:35:37,470 حيث إذا كنت تحول بعيدا جدا، تفقد بت. 518 00:35:37,470 --> 00:35:39,830 تحول الحق >> ستكون عكس ذلك، 519 00:35:39,830 --> 00:35:43,090 أين نحن ذاهبون ليشق 0 قبالة نهاية، 520 00:35:43,090 --> 00:35:48,400 وأغراضنا، في ملء 0 من الجهة اليسرى. 521 00:35:48,400 --> 00:35:52,910 حتى تفعل هذا، ونحن عكس أساسا ما كان علينا القيام به بالفعل. 522 00:35:52,910 --> 00:35:57,780 ونحن نرى أن 0 ثلاثة على اليمين وتراجعت قبالة، 523 00:35:57,780 --> 00:36:02,020 ولقد دفعت كل وسيلة من 1101 إلى الحق. 524 00:36:02,020 --> 00:36:08,380 يفعل هذا 104 >> 3، الذي هو، على نحو فعال، س / 2 ^ ذ. 525 00:36:08,380 --> 00:36:11,200 وحتى الآن، وهنا، انها فكرة مماثلة. 526 00:36:11,200 --> 00:36:18,720 لماذا هو فقط ما يقرب من س / 2 ^ ص، وليس في الواقع س / 2 ^ ذ؟ 527 00:36:18,720 --> 00:36:22,240 لأنه إذا كنت قد تحولت بنسبة 4، لكنت قد فقدت 1. 528 00:36:22,240 --> 00:36:25,950 أساسا، ما كنت أفكر، مجرد التفكير في تقسيم عدد صحيح بشكل عام. 529 00:36:25,950 --> 00:36:31,070 لذلك، مثل 5/2 هو 2. انها ليست 2.5. 530 00:36:31,070 --> 00:36:35,000 انها نفس الفكرة هنا. عندما نقسم بنسبة 2، 531 00:36:35,000 --> 00:36:39,910 نحن يمكن أن يفقد بت غريبة على طول الطريق. 532 00:36:39,910 --> 00:36:43,870 وحتى الآن - هذا كل شيء لأحادي المعامل. هذا كل ما تحتاج إلى معرفته. 533 00:36:43,870 --> 00:36:46,340 تذكر حالات الاستخدام رأينا في الصف، 534 00:36:46,340 --> 00:36:49,340 مثل قناع بت مفيد لمشغلي المختصة بالبت، 535 00:36:49,340 --> 00:36:53,220 أو يمكنك استخدامها لأقنعة بت. 536 00:36:53,220 --> 00:36:58,620 حروف وأحرف صغيرة، والتحويلات هو مثال تنميط جدا. 537 00:36:58,620 --> 00:37:01,640 >> حسنا، لذلك العازلة الهجمات تجاوز. 538 00:37:01,640 --> 00:37:05,110 يتذكر أحد ما هو الخطأ في هذه الوظيفة؟ 539 00:37:05,110 --> 00:37:10,140 إشعار أعلنا مجموعة من 12 بايت، 12 حرف، 540 00:37:10,140 --> 00:37:18,510 ثم نحن لدينا نسخ إلى المخزن المؤقت من 12 حرف شريط السلسلة بأكملها. 541 00:37:18,510 --> 00:37:25,080 فما هي المشكلة هنا؟ 542 00:37:25,080 --> 00:37:32,270 الرقم السحري 12 ينبغي البوب ​​الى حد كبير على الفور كما - لماذا 12؟ 543 00:37:32,270 --> 00:37:35,050 ماذا لو يحدث شريط أن تكون أكثر من 12 حرفا؟ 544 00:37:35,050 --> 00:37:41,200 ماذا لو الشريط الملايين من الأحرف؟ 545 00:37:41,200 --> 00:37:46,010 هنا كانت المشكلة memcpy. إذا شريط طويل بما فيه الكفاية، 546 00:37:46,010 --> 00:37:50,330 سيكون مجرد تماما - 'ج'، 'ج' لا يهمني أن كان 12 حرفا فقط؛ 547 00:37:50,330 --> 00:37:53,280 'ج' لا يهمني أنه لا يمكن أن يصلح أن العديد من وحدات البايت. 548 00:37:53,280 --> 00:37:58,250 فإنه سيتم الكتابة فقط تماما شار، و12 بايت قمنا المخصصة لذلك، 549 00:37:58,250 --> 00:38:01,830 وكل شيء في الماضي فإنه في الذاكرة التي لا تنتمي في الواقع إلى أن المخزن المؤقت 550 00:38:01,830 --> 00:38:06,520 مع كل ما شريط السلسلة. 551 00:38:06,520 --> 00:38:09,780 لذلك كان هذا الصورة رأينا في الصف 552 00:38:09,780 --> 00:38:12,220 حيث لدينا لدينا كومة يكبرون. 553 00:38:12,220 --> 00:38:16,040 يجب عليك أن تستخدم لهذه الصور أو الحصول على دراية بها مرة أخرى. 554 00:38:16,040 --> 00:38:21,260 لدينا كومة دينا أشب عن الطوق، عناوين الذاكرة تبدأ عند 0 في أعلى 555 00:38:21,260 --> 00:38:26,270 وتنمو باستمرار لمثل 4 مليارات في الأسفل. 556 00:38:26,270 --> 00:38:28,820 لدينا مجموعة 'ج' في مكان ما في الذاكرة، 557 00:38:28,820 --> 00:38:32,260 ثم لدينا مؤشر جهدنا لمنع الحق تحته، 558 00:38:32,260 --> 00:38:38,720 ثم لدينا هذا الإطار في حفظ مؤشر عنوان عودتنا وكومة روتين حياتنا الأم. 559 00:38:38,720 --> 00:38:40,800 نتذكر ما هو عنوان المرسل؟ 560 00:38:40,800 --> 00:38:45,360 انها عندما تدعو الرئيسي وظيفة فو، يدعو بار ظيفة، 561 00:38:45,360 --> 00:38:48,100 حتما، بمنع العوائد. 562 00:38:48,100 --> 00:38:52,610 لذلك عندما يعود شريط، وهم بحاجة إلى معرفة أنه يجري مرة أخرى إلى فو الذي يطلق عليه. 563 00:38:52,610 --> 00:39:01,360 وبالتالي فإن عنوان المرسل هو عنوان الدالة التي لديها في العودة إلى عندما ترجع الدالة. 564 00:39:01,360 --> 00:39:05,830 السبب في أن من المهم بالنسبة الهجمات تجاوز سعة المخزن المؤقت لأنه، ملائم، 565 00:39:05,830 --> 00:39:09,580 قراصنة ترغب في تغيير ذلك عنوان المرسل. 566 00:39:09,580 --> 00:39:14,950 بدلا من الذهاب إلى فو، وانا ذاهب للذهاب إلى أي مكان هاكر يريد مني أن أعود إلى. 567 00:39:14,950 --> 00:39:17,760 و، ملائم، حيث يريد القراصنة كثيرا أن أعود إلى 568 00:39:17,760 --> 00:39:22,400 هي بداية المخزن المؤقت الذي كان لدينا أصلا. 569 00:39:22,400 --> 00:39:26,170 حتى إشعار، مرة أخرى، ليتل الهندي. 570 00:39:26,170 --> 00:39:28,490 الجهاز هو مثال على نظام الهندي ليتل، 571 00:39:28,490 --> 00:39:34,140 حتى يتم تخزين عدد صحيح أو مؤشر مع بايت عكسه. 572 00:39:34,140 --> 00:39:38,980 حتى هنا نرى - هو هذا؟ نعم. 573 00:39:38,980 --> 00:39:45,660 نرى Ox80، OxC0، Ox35، OxO8. 574 00:39:45,660 --> 00:39:48,250 تذكر أرقام ست عشرية؟ 575 00:39:48,250 --> 00:39:50,640 نحن لا عكس أرقام ست عشرية في ليتل الهندي، 576 00:39:50,640 --> 00:39:56,110 ل2 أرقام ست عشرية تشكل بايت واحد، ونحن عكس بايت. 577 00:39:56,110 --> 00:40:00,300 هذا هو السبب في أننا لا تخزين، مثل، 80530CO8. 578 00:40:00,300 --> 00:40:07,520 نقوم بتخزين، بدلا من ذلك، كل زوج من الأرقام 2، بدءا من الجهة اليمنى. 579 00:40:07,520 --> 00:40:10,880 هذا العنوان يشير إلى عنوان بداية 580 00:40:10,880 --> 00:40:15,190 من العازلة لدينا اننا نريد فعلا لنسخ في في المقام الأول. 581 00:40:15,190 --> 00:40:19,230 السبب في أن من المفيد لأنه، ما إذا كان المهاجم 582 00:40:19,230 --> 00:40:24,100 حدث، بدلا من وجود السلسلة التي كان مجرد 583 00:40:24,100 --> 00:40:27,060 سلسلة مؤذية من مثل اسم أو شيء ما، 584 00:40:27,060 --> 00:40:33,900 ماذا لو، بدلا من ذلك، كانت هذه السلسلة سوى بعض تعليمات برمجية عشوائية 585 00:40:33,900 --> 00:40:38,610 أن تفعل ما أرادوا أن تفعل؟ 586 00:40:38,610 --> 00:40:45,630 حتى يتمكنوا من - لا أستطيع أن أفكر في أي رمز بارد. 587 00:40:45,630 --> 00:40:47,780 يمكن أن يكون أي شيء، على الرغم من. أي رمز كارثية. 588 00:40:47,780 --> 00:40:51,440 إذا أرادوا، فإنها يمكن أن تفعل شيئا فقط في الاعطال ثوانى، ولكن هذا سيكون بلا جدوى. 589 00:40:51,440 --> 00:40:54,950 أنها عادة ما تفعل ذلك الإختراق النظام الخاص بك. 590 00:40:54,950 --> 00:40:59,930 حسنا >>. مكتبة CS50. 591 00:40:59,930 --> 00:41:04,800 هذا هو، في الأساس، getInt، getString، وجميع تلك الوظائف وفرنا لك. 592 00:41:04,800 --> 00:41:10,630 لذلك لدينا تشار * سلسلة، وهذا هو التجريد أننا فجر بعيدا 593 00:41:10,630 --> 00:41:12,450 في مرحلة ما خلال الفصل الدراسي. 594 00:41:12,450 --> 00:41:18,220 تذكر أن سلسلة هو مجرد مجموعة من الأحرف. 595 00:41:18,220 --> 00:41:23,240 حتى هنا نرى نسخة مختصرة من getString. 596 00:41:23,240 --> 00:41:25,920 يجب أن ننظر إلى الوراء في ذلك أن نتذكر كيف انها تنفذ في الواقع. 597 00:41:25,920 --> 00:41:30,950 التفاصيل الرئيسية هي، لاحظ نحصل في حرف واحد في وقت واحد 598 00:41:30,950 --> 00:41:34,570 من معيار في، والذي هو مثلنا كتابة على لوحة المفاتيح. 599 00:41:34,570 --> 00:41:37,890 حتى حرف واحد في وقت واحد، واذا حصلنا على عدد كبير جدا من الشخصيات، 600 00:41:37,890 --> 00:41:40,580 حتى إذا ن + 1 هو أكبر من القدرات، 601 00:41:40,580 --> 00:41:44,140 ثم نحن بحاجة إلى زيادة قدرة العازلة لدينا. 602 00:41:44,140 --> 00:41:47,780 حتى هنا نحن مضاعفة حجم المخزن لدينا. 603 00:41:47,780 --> 00:41:51,840 والتي تحافظ على الذهاب، ونحن إدراج الحرف في المخزن لدينا 604 00:41:51,840 --> 00:41:56,220 حتى نتلقى سطر جديد أو نهاية الملف أو أيا كان، 605 00:41:56,220 --> 00:41:59,380 في هذه الحالة، نحن القيام به مع سلسلة ثم getString الحقيقي 606 00:41:59,380 --> 00:42:05,120 ينكمش الذاكرة، مثل إذا كنا تخصيص الكثير من الذاكرة انها سوف تعود وتنكمش قليلا. 607 00:42:05,120 --> 00:42:08,830 لذلك نحن لا يمكن أن تظهر ذلك، ولكن الفكرة الرئيسية هي 608 00:42:08,830 --> 00:42:11,960 فقد لقراءة في حرف واحد في كل مرة. 609 00:42:11,960 --> 00:42:17,140 فإنه لا يمكن قراءة فقط في كل شيء في آن واحد، 610 00:42:17,140 --> 00:42:19,550 لأن عازلة بهم هو فقط من حجم معين. 611 00:42:19,550 --> 00:42:26,590 حتى إذا السلسلة التي تحاول إدراج في المخزن المؤقت كبير جدا، فإنه سيكون تجاوز. 612 00:42:26,590 --> 00:42:28,940 لذلك نحن هنا منع ذلك من خلال قراءة فقط في حرف واحد 613 00:42:28,940 --> 00:42:33,750 في وقت ومتنامية كلما كنا في حاجة إليها. 614 00:42:33,750 --> 00:42:40,270 حتى getInt وغيرها من المهام مكتبة CS50 تميل إلى استخدام getString 615 00:42:40,270 --> 00:42:42,310 في تطبيقات الخاصة بهم. 616 00:42:42,310 --> 00:42:45,370 ولذا فإنني أبرز الأمور الهامة هنا. 617 00:42:45,370 --> 00:42:49,460 ويدعو getString للحصول على السلسلة. 618 00:42:49,460 --> 00:42:51,710 إذا فشلت getString للعودة الذاكرة، 619 00:42:51,710 --> 00:42:54,270 تذكر أن getString mallocs شيء، لذلك كلما كنت استدعاء getString 620 00:42:54,270 --> 00:42:57,820 يجب أن لا (غير مفهومة) تحرير هذه السلسلة التي حصلت. 621 00:42:57,820 --> 00:43:02,870 حتى هنا، اذا لم malloc شيء، نعود INT_MAX كما أن مجرد العلم، 622 00:43:02,870 --> 00:43:05,650 مهلا، لم نكن فعلا قادرة على الحصول على عدد صحيح. 623 00:43:05,650 --> 00:43:10,830 يجب أن نتجاهل ما أعود لك، أو 624 00:43:10,830 --> 00:43:15,540 يجب أن لا يعتبر ذلك إدخال صالح. 625 00:43:15,540 --> 00:43:21,360 أخيرا، على افتراض أن لم تنجح، ونحن نستخدم sscanf مع هذا العلم خاصة، 626 00:43:21,360 --> 00:43:23,820 وهو ما يعني، تطابق أول عدد صحيح، 627 00:43:23,820 --> 00:43:26,770 ثم يطابق أي حرف بعد ذلك صحيحا. 628 00:43:26,770 --> 00:43:29,070 حتى إشعار نريد لها أن تساوي 1. 629 00:43:29,070 --> 00:43:32,940 عوائد sscanf فكيف العديد من المباريات إذا قدمت بنجاح؟ 630 00:43:32,940 --> 00:43:37,010 فإنه سيعود 1 إذا كان بنجاح يقابل عددا صحيحا، 631 00:43:37,010 --> 00:43:40,890 فإنه سيعود 0 اذا لم يطابق عدد صحيح، وأنه سيعود 2 632 00:43:40,890 --> 00:43:45,920 إذا كان يقابل عددا صحيحا تليها بعض الحرف. 633 00:43:45,920 --> 00:43:49,780 حتى إشعار نحن إعادة المحاولة إذا كنا تتطابق مع أي شيء ولكن 1. 634 00:43:49,780 --> 00:43:55,230 حتى إذا دخلنا 1، 2، 3، C، أو 1، 2، 3، X، 635 00:43:55,230 --> 00:43:57,400 ثم 1، 2، 3 سوف تحصل المخزنة في عدد صحيح، 636 00:43:57,400 --> 00:43:59,620 سوف X الحصول على تخزين عند الحرف، 637 00:43:59,620 --> 00:44:06,410 sscanf سيعود 2، ونحن سوف إعادة المحاولة، لأننا نريد فقط عدد صحيح. 638 00:44:06,410 --> 00:44:09,810 >> تهب بسرعة من خلال HTML، HTTP، CSS. 639 00:44:09,810 --> 00:44:15,340 لغة توصيف النص التشعبي هو بنية ودلالات على شبكة الإنترنت. 640 00:44:15,340 --> 00:44:19,960 هنا هو مثال من المحاضرة حيث لدينا علامات HTML. 641 00:44:19,960 --> 00:44:22,110 لدينا به الرأس، العلامات الجسم، 642 00:44:22,110 --> 00:44:27,770 لدينا أمثلة من الأكواد فارغة حيث أننا في الواقع لم يكن لديك علامة بداية وثيقة، 643 00:44:27,770 --> 00:44:30,820 لدينا فقط الرابط والصورة. 644 00:44:30,820 --> 00:44:38,480 ليس هناك إغلاق صورة العلامة، وهناك مجرد علامة واحدة أن يحقق كل شيء العلامة يحتاج إلى القيام به. 645 00:44:38,480 --> 00:44:41,950 الرابط هو مثال؛ سنرى كيف تصل إلى CSS، 646 00:44:41,950 --> 00:44:45,910 السيناريو هو مثال على الكيفية التي تصل إلى تشغيل الجافا الخارجية. 647 00:44:45,910 --> 00:44:53,100 انها جميلة واضحة، وتذكر، HTML ليست لغة برمجة. 648 00:44:53,100 --> 00:44:58,250 هنا، نتذكر كيف سيكون تحديد نموذج أو على الأقل هذا ما ستفعل؟ 649 00:44:58,250 --> 00:45:01,740 مثل هذا النموذج لديه عمل والأسلوب. 650 00:45:01,740 --> 00:45:06,210 الأساليب التي سوف نرى أي وقت مضى فقط هي GET و POST. 651 00:45:06,210 --> 00:45:09,040 حتى تحصل هي النسخة حيث يحصل على وضع الشيء في URL. 652 00:45:09,040 --> 00:45:11,680 المنصب هو حيث لا يتم وضعه في URL. 653 00:45:11,680 --> 00:45:18,520 بدلا من ذلك، يتم إدراج أية بيانات من النموذج أكثر خفية في طلب HTTP. 654 00:45:18,520 --> 00:45:22,390 حتى هنا، والعمل يعرف أين يذهب طلب HTTP. 655 00:45:22,390 --> 00:45:27,490 حيث انه سيكون هو google.com / البحث. 656 00:45:27,490 --> 00:45:32,890 الأسلوب. تذكر الاختلافات بين GET و POST، 657 00:45:32,890 --> 00:45:37,200 و، أقول على سبيل المثال، إذا كنت تريد أن المرجعية شيء. 658 00:45:37,200 --> 00:45:40,660 وأنك لن تكون قادرة على المرجعية عنوان URL وظيفة 659 00:45:40,660 --> 00:45:44,970 لأنه لم يتم تضمين البيانات في URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP، الآن، هو بروتوكول نقل النص التشعبي. 661 00:45:49,790 --> 00:45:54,080 بروتوكول نقل النص التشعبي، وكنت أتوقع أن نقل 662 00:45:54,080 --> 00:45:57,710 لغة توصيف النص التشعبي، ويفعل. 663 00:45:57,710 --> 00:46:00,170 لكنه ينقل أيضا أي صور تجد على شبكة الإنترنت، 664 00:46:00,170 --> 00:46:05,400 أي إجراء التنزيلات تبدأ في طلب HTTP. 665 00:46:05,400 --> 00:46:10,350 حتى HTTP هو مجرد لغة الشبكة العالمية. 666 00:46:10,350 --> 00:46:15,610 وهنا تحتاج إلى التعرف على هذا النوع من طلب HTTP. 667 00:46:15,610 --> 00:46:19,300 هنا HTTP/1.1 على الجانب يقول فقط هذا الإصدار 668 00:46:19,300 --> 00:46:21,570 من أنا باستخدام بروتوكول. 669 00:46:21,570 --> 00:46:25,770 انها تسير الى حد كبير دائما أن يكون HTTP/1.1، كما سترى ذلك. 670 00:46:25,770 --> 00:46:30,110 ثم نرى أن هذا كان GET، البديل كونها وظيفة، التي قد تراها. 671 00:46:30,110 --> 00:46:40,790 وURL الذي كنت أحاول أن زيارة كان www.google.com/search؟q = بلاه، بلاه، بلاه. 672 00:46:40,790 --> 00:46:44,240 حتى أن نتذكر أن هذا، علامة الاستفهام ف = بلاه بلاه بلاه، 673 00:46:44,240 --> 00:46:49,040 هو نوع من الاشياء التي يتم إرسالها عن طريق نموذج. 674 00:46:49,040 --> 00:46:51,830 ان الاستجابة قد يعود لي ننظر بشيء من هذا القبيل. 675 00:46:51,830 --> 00:46:54,050 مرة أخرى، بدءا من البروتوكول، والتي سوف يكون ذلك، 676 00:46:54,050 --> 00:46:59,190 يليه رمز الحالة. هنا انها 200 OK. 677 00:46:59,190 --> 00:47:05,060 وأخيرا، وسيعقب صفحة الويب التي سألت عن الواقع. 678 00:47:05,060 --> 00:47:08,210 رمز الحالة المحتملة التي قد ترى، ويجب أن نعرف العديد منهم. 679 00:47:08,210 --> 00:47:12,770 200 OK ربما كنت قد رأيت من قبل. 680 00:47:12,770 --> 00:47:17,830 403 المحرمة، 404 لم يتم العثور على، خطأ خادم داخلي 500 681 00:47:17,830 --> 00:47:22,140 عادة إذا ذهبت إلى موقع على شبكة الانترنت وشيء من كسر أو تعطل كود PHP، و 682 00:47:22,140 --> 00:47:24,930 في حين أنه في الأجهزة لدينا هذا المربع البرتقالي الكبير 683 00:47:24,930 --> 00:47:27,830 أن تأتي وتقول، مثل، هناك شيئا خطأ، لا يعمل هذا الرمز 684 00:47:27,830 --> 00:47:30,380 أو هذه الوظيفة السيئة. 685 00:47:30,380 --> 00:47:33,230 عادة المواقع لا أريد منك معرفة ما هي وظائف سيئة في الواقع، 686 00:47:33,230 --> 00:47:37,880 وذلك بدلا أنها سوف أعطيكم 500 أخطاء خادم داخلي. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP هو 1 طبقة تحت HTTP. 688 00:47:43,050 --> 00:47:47,550 تذكر أن هناك الإنترنت خارج الشبكة العالمية. 689 00:47:47,550 --> 00:47:52,270 مثل إذا كنت تلعب لعبة على الانترنت التي لا تمر عبر HTTP، 690 00:47:52,270 --> 00:47:55,740 انها تمر مختلفة - انها لا تزال تستخدم شبكة الإنترنت، 691 00:47:55,740 --> 00:47:58,900 ولكن لا يستخدم HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP هو مجرد مثال واحد من بروتوكول مبنية على TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP تعني حرفيا بروتوكول الإنترنت. 694 00:48:07,820 --> 00:48:11,500 يحتوي كل كمبيوتر عنوان IP، بل هي تلك الأشياء المكون من 4 أرقام 695 00:48:11,500 --> 00:48:16,510 مثل 192.168.2.1، أو أيا كان، وهذا يميل إلى أن يكون واحدا المحلية. 696 00:48:16,510 --> 00:48:23,390 ولكن هذا هو نمط من عنوان IP. 697 00:48:23,390 --> 00:48:29,060 وبالتالي فإن DNS، خدمة اسم المجال، 698 00:48:29,060 --> 00:48:33,410 هذا ما يترجم أشياء مثل google.com إلى عنوان IP الفعلي. 699 00:48:33,410 --> 00:48:37,700 حتى إذا قمت بكتابة عنوان IP في URL، 700 00:48:37,700 --> 00:48:40,850 التي من شأنها أن تجلب لك إلى Google، ولكن كنت لا تميل إلى تذكر هذه الأشياء. 701 00:48:40,850 --> 00:48:45,470 كنت تميل إلى تذكر google.com بدلا من ذلك. 702 00:48:45,470 --> 00:48:51,560 آخر شيء لدينا هو والموانئ، حيث هذا هو الجزء TCP الملكية الفكرية. 703 00:48:51,560 --> 00:48:54,880 TCP لا أكثر. تفكير، مثل، لديك متصفح الويب الخاص بك قيد التشغيل. 704 00:48:54,880 --> 00:48:58,670 ربما لديك بعض تطبيق البريد الإلكتروني على التوالي؛ 705 00:48:58,670 --> 00:49:02,150 ربما لديك بعض البرامج الأخرى التي تستخدم تشغيل الإنترنت. 706 00:49:02,150 --> 00:49:05,090 أنهم جميعا يحتاجون إلى الوصول إلى شبكة الإنترنت، 707 00:49:05,090 --> 00:49:08,100 ولكن جهاز الكمبيوتر الخاص بك ليس لديها سوى 1 بطاقة واي فاي أو أيا كان. 708 00:49:08,100 --> 00:49:10,780 حتى الموانئ هي الطريقة التي نحن قادرون على تقسيم 709 00:49:10,780 --> 00:49:13,550 كيف قادرون على استخدام الإنترنت في هذه التطبيقات. 710 00:49:13,550 --> 00:49:17,230 كل تطبيق يحصل 1 منفذ معين أنه يمكن الاستماع على، 711 00:49:17,230 --> 00:49:19,670 وافتراضيا، يستخدم HTTP المنفذ 80. 712 00:49:19,670 --> 00:49:22,410 بعض خدمات البريد الإلكتروني استخدام 25. 713 00:49:22,410 --> 00:49:24,490 تلك المنخفضة تميل إلى أن تكون مرقمة محفوظة. 714 00:49:24,490 --> 00:49:29,270 كنت عادة ما تكون قادرة على الحصول على تلك مرقمة أعلى لنفسك. 715 00:49:29,270 --> 00:49:32,010 >> المغلق، أوراق الأنماط المتتالية. 716 00:49:32,010 --> 00:49:36,030 صفحات الويب أننا الاسلوب مع CSS، وليس مع HTML. 717 00:49:36,030 --> 00:49:38,440 هناك 3 أماكن يمكنك وضع CSS الخاص بك. 718 00:49:38,440 --> 00:49:46,300 يمكن أن تكون مضمنة بين العلامات أسلوب، أو في ملف منفصل تماما ثم ربط فيه. 719 00:49:46,300 --> 00:49:48,470 وهنا هو مجرد مثال من CSS. 720 00:49:48,470 --> 00:49:50,450 يجب عليك التعرف على هذا النمط، 721 00:49:50,450 --> 00:49:54,310 حيث المثال الأول هو أننا مطابقة العلامة الجسم، 722 00:49:54,310 --> 00:49:56,680 وهنا نحن تتمحور العلامة الجسم. 723 00:49:56,680 --> 00:50:00,420 المثال الثاني، ونحن مطابقة الشيء 724 00:50:00,420 --> 00:50:04,740 مع تذييل معرف، ونحن تطبيق بعض الأساليب لذلك. 725 00:50:04,740 --> 00:50:07,310 لاحظ أن الرقم تذييل النص محاذاة إلى اليسار، 726 00:50:07,310 --> 00:50:09,840 في حين أن مركز هيئة محاذاة النص. 727 00:50:09,840 --> 00:50:13,180 تذييل داخل الجسم. 728 00:50:13,180 --> 00:50:16,470 فإنه، بدلا من ذلك، مواءمة النصوص اليسار، على الرغم من الجسم يقول مركز مواءمة النصوص. 729 00:50:16,470 --> 00:50:18,880 هذا هو المتتالية كل جزء من ذلك. 730 00:50:18,880 --> 00:50:22,110 هل يمكن أن يكون - يمكنك تحديد أنماط للجسم، 731 00:50:22,110 --> 00:50:25,320 ثم الأشياء في الجسم يمكنك تحديد أنماط أكثر تحديدا، 732 00:50:25,320 --> 00:50:28,160 وعمل الأشياء كما كنت تتوقع. 733 00:50:28,160 --> 00:50:34,420 محددات CSS أكثر تحديدا الأسبقية. 734 00:50:34,420 --> 00:50:46,140 أعتقد أن كل شيء. 735 00:50:46,140 --> 00:50:49,260 >> [علي Nahm] مرحبا الجميع. إذا كان بإمكاني مجرد الحصول على انتباهكم. 736 00:50:49,260 --> 00:50:53,990 أنا علي وانا ذاهب للذهاب من خلال PHP و SQL سريع حقا. 737 00:50:53,990 --> 00:51:00,310 حتى نتمكن من البدء. PHP هي اختصار ل PHP: التشعبي قبل المعالج. 738 00:51:00,310 --> 00:51:03,730 وكما كنت كل أن نعرف، انها لغة البرمجة النصية من جانب الخادم، 739 00:51:03,730 --> 00:51:06,800 ونستخدمها لنهاية الخلفي من المواقع، 740 00:51:06,800 --> 00:51:12,540 وكيف يفعل الكثير من العمليات الحسابية، وجزء من وراء الكواليس. 741 00:51:12,540 --> 00:51:17,510 بناء الجملة. انها ليست مثل C، مفاجأة، مفاجأة. 742 00:51:17,510 --> 00:51:22,060 كان لديه دائما أن تبدأ مع، إذا كنت يمكن أن نرى، و- لا أستطيع المضي قدما. 743 00:51:22,060 --> 00:51:31,340 يمكنك ان ترى كنت في حاجة إلى أنواع جديدة من الأقواس ثم تحتاج أيضا إلى فب؟ 744 00:51:31,340 --> 00:51:35,780 هذا هو دائما كيف يكون لديك لتأطير النص PHP الخاص بك، رمز PHP الخاصة بك. 745 00:51:35,780 --> 00:51:39,180 لذلك لا يمكن أن يكون تماما مثل C، حيث يمكنك نوع من وضعه أولا. 746 00:51:39,180 --> 00:51:42,290 تحتاج إلى تحيط دائما. 747 00:51:42,290 --> 00:51:47,610 والآن، بناء الجملة الرئيسية هي أن كل المتغيرات في حاجة لبدء بالحرف $. 748 00:51:47,610 --> 00:51:49,490 ما عليك القيام به عندما كنت تعريفها؛ تحتاج إلى القيام بذلك 749 00:51:49,490 --> 00:51:51,860 عندما كنت في اشارة الى لهم في وقت لاحق. 750 00:51:51,860 --> 00:51:56,510 كنت دائما بحاجة إلى أن $. انها جديدة أفضل صديق، الى حد كبير. 751 00:51:56,510 --> 00:52:01,690 كنت لا - على عكس C، لا تحتاج لوضع أي نوع من نوع متغير هو عليه. 752 00:52:01,690 --> 00:52:04,940 وذلك في حين كنت بحاجة ل$، لا تحتاج لوضع، مثل، 753 00:52:04,940 --> 00:52:09,470 الباحث العاشر أو سلسلة ذ، إلى آخره، إلى آخره. 754 00:52:09,470 --> 00:52:11,490 ذلك اختلاف طفيف. 755 00:52:11,490 --> 00:52:15,590 نتيجة لذلك، فهذا يعني أن PHP هو نوع ضعيفة. 756 00:52:15,590 --> 00:52:19,310 PHP هي لغة نوع ضعيفة، وأنها متغيرات كتبته ضعيفة. 757 00:52:19,310 --> 00:52:24,020 وبعبارة أخرى، وهذا يعني أنه يمكنك التبديل بين أنواع مختلفة من أنواع متغير. 758 00:52:24,020 --> 00:52:27,230 يمكنك تخزين الرقم 1 باعتبارها كثافة العمليات، 759 00:52:27,230 --> 00:52:29,650 يمكنك تخزينه كسلسلة، ويمكنك تخزين على أنها تطفو، 760 00:52:29,650 --> 00:52:33,550 وسوف يكون كل هذا العدد 1. 761 00:52:33,550 --> 00:52:36,080 حتى وإن كنت تخزينه في أشكال مختلفة، 762 00:52:36,080 --> 00:52:39,120 انها لا تزال - أنواع متغير ما زالوا يحتجزون في نهاية المطاف. 763 00:52:39,120 --> 00:52:41,540 حتى إذا نظرتم هنا، إذا كنت تتذكر من pset 7، 764 00:52:41,540 --> 00:52:43,500 الكثير منكم ربما كان القضايا مع هذا. 765 00:52:43,500 --> 00:52:47,280 علامتين على قدم المساواة، 3 علامات المساواة، 4 علامات متساوية. 766 00:52:47,280 --> 00:52:49,990 حسنا، ليست هناك 4 علامات المساواة، ولكن هناك 2 و 3. 767 00:52:49,990 --> 00:52:53,320 2 استخدام علامات متساوية للتحقق من القيم. 768 00:52:53,320 --> 00:52:55,830 ويمكن ان تحقق عبر أنواع. 769 00:52:55,830 --> 00:52:58,770 حتى إذا كنت يمكن أن نرى في المثال الأول، 770 00:52:58,770 --> 00:53:02,210 لدي num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 حتى كثافة الخاص بك والخاص على حد سواء سلسلة، من الناحية الفنية، 1، 772 00:53:06,710 --> 00:53:10,790 ولكنهم أنواع مختلفة. ولكن لالتساوي مزدوجة، وأنها سوف لا تزال تمر. 773 00:53:10,790 --> 00:53:15,510 ومع ذلك، من أجل التساوي الثلاثي، فإنه يتحقق قيمة فضلا عن أنواع مختلفة. 774 00:53:15,510 --> 00:53:18,760 وهذا يعني أنه لن يمر في هذه الحالة الثانية هنا، 775 00:53:18,760 --> 00:53:22,350 حيث كنت تستخدم 3 علامات المساواة بدلا من ذلك. 776 00:53:22,350 --> 00:53:26,590 لذلك هذا هو الفرق الرئيسي الذي يجب أن أظهرت جميع الآن. 777 00:53:26,590 --> 00:53:31,570 >> سلسلة سلسلة هو شيء قوي آخر يمكنك استخدامها في PHP. 778 00:53:31,570 --> 00:53:34,080 انها في الاساس مجرد هذه نقطة تدوين مفيد، 779 00:53:34,080 --> 00:53:36,230 وهذه هي الطريقة التي يمكنك ربط السلاسل معا. 780 00:53:36,230 --> 00:53:40,800 حتى إذا كان لديك القط والكلب لديك، وتريد وضع السلاسل 2 معا، 781 00:53:40,800 --> 00:53:44,080 يمكنك استخدام هذه الفترة، وهذا النوع من كيف يعمل. 782 00:53:44,080 --> 00:53:46,660 يمكنك أيضا مجرد مكان لهم بجانب بعضها البعض، 783 00:53:46,660 --> 00:53:49,030 كما ترون هنا في المثال السفلي، 784 00:53:49,030 --> 00:53:51,610 حيث كنت قد صدى سلسلة 1، سلسلة الفضاء 2. 785 00:53:51,610 --> 00:53:56,930 سوف نعرف PHP لتحل محلها على هذا النحو. 786 00:53:56,930 --> 00:53:59,780 المصفوفات. الآن، في PHP، وهناك 2 أنواع مختلفة من المصفوفات. 787 00:53:59,780 --> 00:54:03,180 هل يمكن أن يكون المصفوفات العادية، ويمكن أن يكون أيضا صفائف النقابي، 788 00:54:03,180 --> 00:54:06,040 ونحن في طريقنا للذهاب من خلالهم الآن. 789 00:54:06,040 --> 00:54:08,280 المصفوفات العادية هي فقط في هذا C، 790 00:54:08,280 --> 00:54:11,240 وحتى يكون لديك مؤشرات التي يتم ترقيم. 791 00:54:11,240 --> 00:54:13,160 الحق الآن نحن ذاهبون لمجرد إنشاء واحد ووضع - 792 00:54:13,160 --> 00:54:15,500 لذلك هذا هو كيف يمكننا إنشاء صفيف فارغ، ثم نحن في طريقنا لل 793 00:54:15,500 --> 00:54:17,310 وضعه في مؤشر الرقم 0. 794 00:54:17,310 --> 00:54:19,200 نحن ذاهبون لوضع الرقم 6، وقيمة 6. 795 00:54:19,200 --> 00:54:21,500 يمكنك أن ترى ذلك في أسفل هنا. 796 00:54:21,500 --> 00:54:24,240 Where's - في مؤشر الرقم 1 ونحن في طريقنا لوضع قيمة رقم 4، 797 00:54:24,240 --> 00:54:26,720 وهكذا يمكنك أن ترى هناك 6، وهناك 4، 798 00:54:26,720 --> 00:54:29,160 وبعد ذلك نقوم بطباعة الأشياء، 799 00:54:29,160 --> 00:54:33,550 عندما نحاول وطباعة القيمة المخزنة في مؤشر الرقم 0، 800 00:54:33,550 --> 00:54:36,900 ثم سنرى قيمة 6 يجري طباعتها. بارد؟ 801 00:54:36,900 --> 00:54:40,160 ذلك أن المصفوفات العادية بالنسبة لك. 802 00:54:40,160 --> 00:54:42,750 طريقة أخرى يمكنك أيضا إضافة الأشياء العادية إلى صفائف الآن 803 00:54:42,750 --> 00:54:44,780 يمكنك فقط هو إلحاق لهم في نهاية المطاف. 804 00:54:44,780 --> 00:54:47,240 وهذا يعني أن ليس لديك لتحديد مؤشر معين. 805 00:54:47,240 --> 00:54:51,000 يمكنك أن ترى عدد، ثم في أقواس معقوفة ليس هناك مؤشر محدد. 806 00:54:51,000 --> 00:54:56,270 وسوف تعرف - سوف PHP تعرف لإضافتها فقط إلى نهاية القائمة، وبقعة خالية المقبل. 807 00:54:56,270 --> 00:54:59,190 حتى تتمكن من رؤية 1 هناك حق في ذلك 0 بقعة، 808 00:54:59,190 --> 00:55:02,690 2 ذهبت هناك حق في المركز الأول. 809 00:55:02,690 --> 00:55:04,690 3 يذهب - يضاف هناك أيضا. 810 00:55:04,690 --> 00:55:06,720 لذلك هذا النوع من المنطقي. كنت مجرد باستمرار بإضافة ذلك، 811 00:55:06,720 --> 00:55:09,360 وبعد ذلك عندما نقوم مرددا مؤشر رقم 1، 812 00:55:09,360 --> 00:55:13,080 فإنه سيتم طباعة قيمة 2. 813 00:55:13,080 --> 00:55:16,800 ثم لدينا >> المصفوفات التي هي صفائف النقابي. 814 00:55:16,800 --> 00:55:19,370 صفائف النقابي، بدلا من وجود مؤشرات رقمية، 815 00:55:19,370 --> 00:55:23,630 ما يفعلونه هو، لديهم مؤشرات التي كتبها السلسلة. 816 00:55:23,630 --> 00:55:25,670 يمكنك أن ترى، بدلا من - أنا تخلصت من كل تلك المؤشرات العدد، 817 00:55:25,670 --> 00:55:32,140 والآن حان key1، key2، key3، وانهم في علامات اقتباس مزدوجة، للدلالة على أنهم جميع السلاسل. 818 00:55:32,140 --> 00:55:34,470 ولذا فإننا يمكن أن يكون مثالا لهذا. 819 00:55:34,470 --> 00:55:38,790 المثال على ذلك هو أن لدينا فريق العمل، وهذا هو اسم الفهرس. 820 00:55:38,790 --> 00:55:42,030 نحن ذاهبون لوضع "علي" كاسم، في مؤشر والسعرات الحرارية تؤكل، 821 00:55:42,030 --> 00:55:47,640 يمكننا وضع الباحث هذه المرة بدلا من سلسلة، 822 00:55:47,640 --> 00:55:52,240 ثم في أمثال المؤشر، ويمكننا وضع مجموعة كاملة داخل منه. 823 00:55:52,240 --> 00:55:55,490 لذلك هذا هو نوع من - انها مفهوم مماثل لكيفية كانت لدينا 824 00:55:55,490 --> 00:55:58,930 مؤشرات مع الأرقام، ولكن الآن يمكننا تغيير مؤشرات حول 825 00:55:58,930 --> 00:56:03,890 أن يكون لهم كسلاسل بدلا من ذلك. 826 00:56:03,890 --> 00:56:06,070 يمكنك أيضا القيام بذلك، إلى جانب القيام فقط بشكل فردي، 827 00:56:06,070 --> 00:56:09,400 يمكنك أن تفعل كل شيء في قطعة واحدة. لذلك يمكنك أن ترى أن فريق العمل من أن مجموعة، 828 00:56:09,400 --> 00:56:13,350 ثم وضعنا لهم في كل واحدة عملاقة مربع مجموعة قوس. 829 00:56:13,350 --> 00:56:15,220 بحيث يمكن تسريع الامور. 830 00:56:15,220 --> 00:56:19,730 انها اكثر من خيار من الأسلوبية لا. 831 00:56:19,730 --> 00:56:21,550 لدينا أيضا الحلقات. 832 00:56:21,550 --> 00:56:26,020 في C لدينا الحلقات التي تعمل مثل هذا. 833 00:56:26,020 --> 00:56:29,690 كان لدينا مجموعة لدينا، وذهبنا من فهرس 0 إلى نهاية القائمة، 834 00:56:29,690 --> 00:56:31,740 ونحن طباعة كل شيء، أليس كذلك؟ 835 00:56:31,740 --> 00:56:33,880 إلا أن المشكلة، لصفائف النقابي، 836 00:56:33,880 --> 00:56:36,610 نحن لا نعرف بالضرورة تلك المؤشرات العددية 837 00:56:36,610 --> 00:56:39,610 لان لدينا الان مؤشرات السلسلة. 838 00:56:39,610 --> 00:56:44,800 الآن نحن نستخدم الحلقات فورياش، والتي، مرة أخرى، وكنت على أمل استخدامها في pset 7. 839 00:56:44,800 --> 00:56:48,930 سوف حلقات فورياش نعرف تماما كل جزء واحد من القائمة. 840 00:56:48,930 --> 00:56:52,450 وليس لديها أن نعرف بالضبط مؤشر العددية التي لديك. 841 00:56:52,450 --> 00:56:56,490 ولذلك عليك بناء الجملة فورياش، لذلك فمن فورياش، يمكنك وضع مجموعة. 842 00:56:56,490 --> 00:57:00,430 لذلك يطلق مجموعة بلدي pset، وبعد ذلك، كلمة باسم، 843 00:57:00,430 --> 00:57:04,530 ثم قمت بوضع هذا المتغير المؤقت المحلية التي كنت تنوي استخدام 844 00:57:04,530 --> 00:57:10,690 فقط عن الشيء المحدد الذي يجري لعقد محددة - 845 00:57:10,690 --> 00:57:14,770 حالة واحدة أو مقطع واحد من مجموعة. 846 00:57:14,770 --> 00:57:18,350 سوف Pset الأسطوانات الاستمرار على 1، ثم ربما سيكون عقد عدد 6، 847 00:57:18,350 --> 00:57:20,410 وبعد ذلك سيتم عقد عدد 2. 848 00:57:20,410 --> 00:57:26,630 ولكن ما يضمن أن تذهب من خلال كل قيمة واحدة وهذا في صفيف. 849 00:57:26,630 --> 00:57:30,530 الوظائف المفيدة التي يجب أن تعرف في PHP هي تتطلب، 850 00:57:30,530 --> 00:57:35,880 بحيث يتأكد أن كنت بما في ذلك بعض الملفات، صدى، الخروج، فارغة. 851 00:57:35,880 --> 00:57:40,490 أنا أوصي نظرتم pset 7 وإلقاء نظرة على تلك الوظائف. 852 00:57:40,490 --> 00:57:42,810 قد يكون لديك لمعرفة تلك، 853 00:57:42,810 --> 00:57:47,060 لذلك أود أن أعرف بالتأكيد ما، بالضبط، تلك يفعلون كل شيء. 854 00:57:47,060 --> 00:57:50,080 >> والآن ونحن في طريقنا للذهاب من خلال نطاق بسرعة حقا. 855 00:57:50,080 --> 00:57:53,490 في نطاق، PHP هو نوع من شيء غير تقليدي، على عكس C، 856 00:57:53,490 --> 00:57:56,170 ولذا فإننا ذاهبون لمجرد الذهاب من خلال ذلك بسرعة. 857 00:57:56,170 --> 00:57:58,930 لذلك دعونا نقول أن نبدأ في ذلك السهم الذي لدينا هناك. 858 00:57:58,930 --> 00:58:02,900 ونحن في طريقنا للبدء مع $ ط. وبالتالي فإن المتغير 'ط' ستكون 0، 859 00:58:02,900 --> 00:58:06,730 ونحن ذاهبون لمجرد الحفاظ على طباعته في هذا المربع بيضاء كبيرة هناك. 860 00:58:06,730 --> 00:58:09,220 ونحن في طريقنا للبدء مع I0، ومن ثم نحن في طريقنا لصدى ذلك. 861 00:58:09,220 --> 00:58:12,670 ولذلك لا يوجد ل0. 862 00:58:12,670 --> 00:58:15,210 ثم ونحن في طريقنا إلى زيادة من قبل للحلقة، 863 00:58:15,210 --> 00:58:17,810 وبعد ذلك ستكون قيمة 1. 864 00:58:17,810 --> 00:58:20,070 واحد هو أقل من 3، لذلك سيكون لتمرير من خلال ذلك للحلقة، 865 00:58:20,070 --> 00:58:23,230 ثم ونحن في طريقنا لرؤيتها المطبوعة مرة أخرى. 866 00:58:23,230 --> 00:58:25,520 ونحن في طريقنا إلى زيادة مرة أخرى إلى 2، 867 00:58:25,520 --> 00:58:29,860 و 2 هو أقل من 3، لذلك سوف تمرير للحلقة، وأنه سوف طباعة 2. 868 00:58:29,860 --> 00:58:35,100 ثم عليك ملاحظة أن 3 ليست أقل من 3، ولذا فإننا سوف الخروج من حلقة ل. 869 00:58:35,100 --> 00:58:40,050 حتى الآن لقد خرجت، ثم نحن في طريقنا للذهاب الى فقدان الوظيفة. 870 00:58:40,050 --> 00:58:45,010 بخير. ولذلك عليك أن نلاحظ أن هذا المتغير الذي قمنا بإنشائه، 871 00:58:45,010 --> 00:58:48,270 و'ط' متغير، لا بالقوالب محليا. 872 00:58:48,270 --> 00:58:50,280 وهذا يعني أنه ليس المحلية إلى حلقة، 873 00:58:50,280 --> 00:58:58,060 وهذا المتغير لا يزال بوسعنا الوصول وتغيير بعد ذلك، وأنه سوف يكون لا يزال فعالا. 874 00:58:58,060 --> 00:59:02,160 حتى إذا ذهبت إلى وظيفة الآن، سترى أننا أيضا استخدام 'ط' متغير، 875 00:59:02,160 --> 00:59:05,320 ونحن في طريقنا إلى زيادة 'ط' + +. 876 00:59:05,320 --> 00:59:09,410 وكنت أعتقد، في البداية، على أساس سي، أن هذا هو نسخة من 'ط' متغير. 877 00:59:09,410 --> 00:59:12,830 انه شيء مختلف تماما، وهو الصحيح. 878 00:59:12,830 --> 00:59:16,560 حتى عندما وطباعته، ونحن في طريقنا للطباعة 'ط' + +، والتي سوف تطبع إلى أن 4، 879 00:59:16,560 --> 00:59:19,640 ثم نحن في طريقنا لل- آسف. 880 00:59:19,640 --> 00:59:22,030 ثم ونحن في طريقنا لانهاء خارج تلك الوظيفة، 881 00:59:22,030 --> 00:59:24,820 ونحن في طريقنا لتكون حيث أن السهم الآن. 882 00:59:24,820 --> 00:59:29,190 وهذا يعني أن ذلك الحين، ومع ذلك، على الرغم من أن وظيفة تغيير قيمة 'ط'، 883 00:59:29,190 --> 00:59:32,620 فإنه لم يغير من وظيفة خارج، 884 00:59:32,620 --> 00:59:35,060 لأن وظيفة لديها نطاق منفصلة. 885 00:59:35,060 --> 00:59:38,960 وهذا يعني أننا عندما نردد 'ط'، فإنه لم يتغير في نطاق وظيفة، 886 00:59:38,960 --> 00:59:43,660 وحتى ذلك الحين ونحن في طريقنا لطباعة 3 مرة أخرى. 887 00:59:43,660 --> 00:59:47,520 أشياء مختلفة حول نطاق في PHP مما كانت عليه في C. 888 00:59:47,520 --> 00:59:51,130 الآن >> في PHP و HTML. 889 00:59:51,130 --> 00:59:53,510 يستخدم PHP لجعل صفحات الويب الديناميكية. 890 00:59:53,510 --> 00:59:58,660 انها نوع من يجعل الأمور مختلفة. 891 00:59:58,660 --> 01:00:02,090 لدينا تختلف عن HTML. 892 01:00:02,090 --> 01:00:05,230 مع HTML، ونحن دائما يكون مجرد نفس الشيء ثابت، مثل كيف أظهر روب، 893 01:00:05,230 --> 01:00:09,370 في حين PHP، يمكنك تغيير الأشياء على أساس من هو المستخدم. 894 01:00:09,370 --> 01:00:11,830 حتى لو كان لدي هذا، لقد "تم تسجيل دخولك ك -" ثم الاسم، 895 01:00:11,830 --> 01:00:14,420 ويمكنني تغيير الاسم. حتى الآن الاسم هو جوزيف، 896 01:00:14,420 --> 01:00:18,880 وأنه لديه "معلومات عني"، ولكن بعد ذلك يمكن أيضا تغيير اسم لتومي. 897 01:00:18,880 --> 01:00:21,700 والتي من شأنها أن تكون شيء مختلف. 898 01:00:21,700 --> 01:00:23,840 لذلك وبعد ذلك يمكننا أيضا تغيير أشياء مختلفة عنه، 899 01:00:23,840 --> 01:00:27,070 وسوف تظهر المحتويات المختلفة استنادا إلى الاسم. 900 01:00:27,070 --> 01:00:31,430 ذلك النوع من PHP يمكن تغيير ما يحدث في موقع الويب الخاص بك. 901 01:00:31,430 --> 01:00:33,540 نفسه هنا. ومع ذلك، لاحظ أن لديهم محتوى مختلف، 902 01:00:33,540 --> 01:00:38,870 حتى ولو كنت لا تزال من الناحية الفنية أن الوصول إلى صفحة ويب نفسه على السطح. 903 01:00:38,870 --> 01:00:43,450 توليد HTML. هناك 2 من الطرق المختلفة التي يمكنك القيام بذلك. 904 01:00:43,450 --> 01:00:48,980 ولذا فإننا سوف تذهب من خلال هذا الحق الآن. الطريق الأول هو، لديك - نعم، آسف. 905 01:00:48,980 --> 01:00:51,150 لذلك عليك فقط العادية للحلقة في PHP، 906 01:00:51,150 --> 01:00:56,270 ثم كنت أردد في PHP وكنت أردد من HTML. 907 01:00:56,270 --> 01:00:58,720 باستخدام ما أظهرت روب لكم HTML النصي 908 01:00:58,720 --> 01:01:04,030 ثم باستخدام الطباعة PHP لطباعة فقط من ذلك إلى صفحة ويب. 909 01:01:04,030 --> 01:01:09,520 الطريق البديل هو أن نفعل ذلك كما لو كنت فصل في PHP وHTML. 910 01:01:09,520 --> 01:01:11,940 لذلك يمكن أن يكون هناك خط PHP الذي يبدأ لحلقة، 911 01:01:11,940 --> 01:01:16,020 ثم هل يمكن أن يكون خط HTML في شيء منفصل، 912 01:01:16,020 --> 01:01:19,700 ثم كنت في نهاية الحلقة، مرة أخرى، مع PHP. 913 01:01:19,700 --> 01:01:21,800 حتى انها نوع من فصل بها. 914 01:01:21,800 --> 01:01:24,020 على الجانب الأيسر، يمكنك أن يكون لديك كل - 915 01:01:24,020 --> 01:01:26,360 انها مجرد 1 قطعة من PHP. 916 01:01:26,360 --> 01:01:28,510 على اليمين يمكنك أن ترى أن لديك خط من PHP، 917 01:01:28,510 --> 01:01:32,540 لديك خط HTML، وكان لديك خط PHP مرة أخرى. 918 01:01:32,540 --> 01:01:36,870 بحيث يفصل بها في ما يفعلونه. 919 01:01:36,870 --> 01:01:39,330 وعليك ملاحظة أن كلتا الحالتين، على أي منهما، 920 01:01:39,330 --> 01:01:41,980 أنها لا تزال تطبع الصورة، الصورة، الصورة، 921 01:01:41,980 --> 01:01:44,540 بحيث HTML لا تزال تطبع بنفس الطريقة. 922 01:01:44,540 --> 01:01:49,870 ثم عليك أن لا تزال ترى تظهر 3 صور حتى على موقع الويب الخاص بك. 923 01:01:49,870 --> 01:01:52,820 لذلك فمن 2 طرق مختلفة لفعل الشيء نفسه. 924 01:01:52,820 --> 01:01:55,060 >> الآن لدينا أشكال والطلبات. كما أظهرت روب لكم، 925 01:01:55,060 --> 01:01:59,400 هناك أشكال HTML، وسوف نقوم من خلال هذه مجرد نسيم. 926 01:01:59,400 --> 01:02:02,040 لديك عمل وكان لديك الأسلوب، والعمل الخاص بك 927 01:02:02,040 --> 01:02:04,350 نوع من يظهر لك أين أنت ذاهب لإرسالها، والأسلوب هو ما إذا كان 928 01:02:04,350 --> 01:02:06,960 انها ستكون GET أو POST. 929 01:02:06,960 --> 01:02:11,220 وطلب GET، كما قال روب، يعني أنك ذاهب لوضعها في شكل 930 01:02:11,220 --> 01:02:15,760 وسترى أنها URL، في حين طلب POST فلن ترى في URL. 931 01:02:15,760 --> 01:02:17,840 ذلك اختلاف طفيف. 932 01:02:17,840 --> 01:02:19,950 ومع ذلك، هناك شيء واحد وهذا شيء مماثل 933 01:02:19,950 --> 01:02:22,560 هو أن وظيفة وGET غير آمنة على حد سواء. 934 01:02:22,560 --> 01:02:26,430 لذلك قد تعتقد أن لمجرد أنك لا أرى ذلك في URL، 935 01:02:26,430 --> 01:02:28,790 وهذا يعني أن المنصب هو أكثر أمنا، 936 01:02:28,790 --> 01:02:34,420 ولكن لا يزال بإمكانك رؤية ذلك في ملفات تعريف الارتباط الخاصة بك في المعلومات التي كنت الإرسال. 937 01:02:34,420 --> 01:02:38,260 لذلك لا أعتقد أن ما يقرب من واحد أو الآخر. 938 01:02:38,260 --> 01:02:42,160 شيء آخر هو أن نلاحظ أن لديك أيضا المتغيرات القسم. 939 01:02:42,160 --> 01:02:45,850 يا رفاق استخدام هذا في pset 7 للحصول على معلومات هوية المستخدم الخاصة بك. 940 01:02:45,850 --> 01:02:48,550 ما حدث هو أنه يمكنك استخدام هذه مجموعة النقابي، 941 01:02:48,550 --> 01:02:53,310 و$ _SESSION، ثم كنت قادرا على الوصول إلى أشياء مختلفة 942 01:02:53,310 --> 01:02:57,720 وتخزين أشياء مختلفة عبر صفحات. 943 01:02:57,720 --> 01:03:00,750 >> آخر شيء هو أن لدينا SQL، لغة الاستعلام الهيكلية، 944 01:03:00,750 --> 01:03:04,360 وهذه هي لغة برمجة لإدارة قواعد البيانات. 945 01:03:04,360 --> 01:03:08,220 ماذا، بالضبط، هي قواعد البيانات؟ انهم مجموعات من الجداول، 946 01:03:08,220 --> 01:03:10,630 ويمكن أن يكون كل جدول أنواع مماثلة من الكائنات. 947 01:03:10,630 --> 01:03:14,990 لذلك كان لدينا جدول المستخدمين في pset التمويل الخاص. 948 01:03:14,990 --> 01:03:20,610 ولماذا هم مفيدة؟ لأنه وسيلة لتخزين المعلومات بشكل دائم. 949 01:03:20,610 --> 01:03:22,840 انها وسيلة لتتبع الأشياء وإدارة الأمور 950 01:03:22,840 --> 01:03:25,890 ورؤية الواقع على صفحات مختلفة وحفظ المسار. 951 01:03:25,890 --> 01:03:29,930 في حين إذا كنت مجرد تخزينه في تلك اللحظة الفورية واحد 952 01:03:29,930 --> 01:03:33,720 ومن ثم استخدامها في وقت لاحق، فلن تكون قادرا على الوصول إلى أي شيء قمت بحفظها. 953 01:03:33,720 --> 01:03:37,660 لدينا 4 الأشياء الرئيسية التي نستخدمها لأوامر SQL. 954 01:03:37,660 --> 01:03:40,190 لدينا اختيار، إدراج، حذف، والتحديث. 955 01:03:40,190 --> 01:03:42,880 تلك هي حقا مهمة بالنسبة لك أن تعرف الرجال لمسابقة الخاص بك. 956 01:03:42,880 --> 01:03:45,990 >> سنذهب بسرعة أكثر حدد الآن. 957 01:03:45,990 --> 01:03:48,540 في الأساس، وأنت اختيار الصفوف من قاعدة بيانات. 958 01:03:48,540 --> 01:03:52,400 حتى إذا كان لديك، والحق هنا - 959 01:03:52,400 --> 01:03:56,740 لدينا هذه الأشياء مختلفة 2، ونحن نريد لتحديد من الجدول الطبقات 960 01:03:56,740 --> 01:04:01,480 حيث رهيبة - حيث في العمود رهيبة القيمة هو 1. 961 01:04:01,480 --> 01:04:04,460 حتى تستطيع أن ترى هنا، لدينا هذه الأشياء 2 من اسم الفئة، 962 01:04:04,460 --> 01:04:08,490 CS50 وStat110، ونحن لدينا معرفات فئة وشعار. 963 01:04:08,490 --> 01:04:13,150 لذلك نحن نريد لتحديد كافة تلك المعلومات. 964 01:04:13,150 --> 01:04:17,480 ثم يمكنك ان ترى هنا أنه نوع من فتنتقي من هذا العمود رهيبة، 965 01:04:17,480 --> 01:04:25,170 حيث كل الأشياء هي 1، ومن ثم فإنه لديه معرف فئة، اسم الفئة وشعار أنه يمكن انتقاء. 966 01:04:25,170 --> 01:04:28,100 بالضبط كيف يمكنك أن تفعل هذا في التعليمات البرمجية؟ لديك لاستخدام PHP. 967 01:04:28,100 --> 01:04:33,830 ولهذا النوع من كيفية ارتباط PHP و SQL لبعضها البعض. 968 01:04:33,830 --> 01:04:38,130 الآن لدينا رمز لنا، ونحن ذاهبون الى استخدام وظيفة الاستعلام لدينا 969 01:04:38,130 --> 01:04:41,370 كما فعلنا في pset 7، ونحن في طريقنا لتشغيل الاستعلام SQL. 970 01:04:41,370 --> 01:04:43,870 ثم نحن في طريقنا لديك - 971 01:04:43,870 --> 01:04:46,280 لدينا دائما لمعرفة ما اذا كان الصف في الثلاثي متساوية إذا كاذبة. 972 01:04:46,280 --> 01:04:49,010 ذلك مرة أخرى، وتريد أن تحقق من نوع وقيمة، 973 01:04:49,010 --> 01:04:53,880 ثم إذا كان لا يعمل، ثم تريد أن تعتذر، كما جرت العادة، كما فعلنا في pset 7. 974 01:04:53,880 --> 01:04:55,870 خلاف ذلك، وتريد أن يتكرر خلال كل شيء مع تلك مفيد 975 01:04:55,870 --> 01:04:59,410 فورياش حلقات أننا فقط ذهبت أكثر. 976 01:04:59,410 --> 01:05:01,280 الآن أننا حلقات عبر ولقد جعلت من الماضي، 977 01:05:01,280 --> 01:05:05,080 دعونا نفترض أن لدينا الاستعلام مرت، والآن لدينا حلقة فورياش لدينا. 978 01:05:05,080 --> 01:05:11,050 والصف الأول كان لديه، وحتى هنا في صف واحد، والحق هنا؛ هو محاصر ذلك. 979 01:05:11,050 --> 01:05:14,010 انها تسير لطباعة جميع المعلومات وهذا ما حصلت عليه. 980 01:05:14,010 --> 01:05:18,070 حتى انها سوف تطبع فى القاع "أريد أن تعلم HTML؟" 981 01:05:18,070 --> 01:05:23,370 ثم انها سوف تذهب إلى الصف التالي، لأنها أنجزت أول للحلقة، 982 01:05:23,370 --> 01:05:26,510 وحتى ذلك الحين انها سوف تطبع السطر الثاني منه، 983 01:05:26,510 --> 01:05:32,120 والتي ستكون STAT110، البحث عن لحظات. 984 01:05:32,120 --> 01:05:34,290 >> آخر شيء واحد هو وجود ثغرات أمنية في SQL. 985 01:05:34,290 --> 01:05:37,300 وأنا أعلم تطرق ديفيد على هذا قليلا في المحاضرة. 986 01:05:37,300 --> 01:05:40,730 يمكنك أن تقرأ هذا في وقت لاحق. انه مضحك حقا. 987 01:05:40,730 --> 01:05:45,320 حقن SQL هو نوع من شيء صعب. 988 01:05:45,320 --> 01:05:49,890 دعونا نقول لكم ان مجرد عصا تلك المتغيرات الحق في الاستعلام الخاص بك، 989 01:05:49,890 --> 01:05:52,290 كما ترون في هذا السطر الأول. 990 01:05:52,290 --> 01:05:54,520 هكذا يبدو على ما يرام، أليس كذلك؟ كنت مجرد وضع في اسم المستخدم 991 01:05:54,520 --> 01:05:58,820 وكلمة السر للاستعلام SQL الخاص بك، وأنت تريد أن تشحن تشغيله والحصول على كل ما هو في جدول البيانات الخاص بك. 992 01:05:58,820 --> 01:06:01,450 التي يبدو بسيطا جدا. لذلك دعنا نقول شخص يضع في، 993 01:06:01,450 --> 01:06:04,910 للكلمة، وهذا النص أو الحق هنا - 994 01:06:04,910 --> 01:06:06,780 وينبغي أن يكون في الواقع في المربع الأحمر. 995 01:06:06,780 --> 01:06:11,920 لذلك دعونا نقول أنها وضعت ذلك في كلمة - وهذا ما يدخلون. 996 01:06:11,920 --> 01:06:16,520 حتى انهم يضعون أو "1" = 1. 997 01:06:16,520 --> 01:06:20,880 نوع من كلمة سخيفة لديهم. 998 01:06:20,880 --> 01:06:25,070 الآن دعونا فقط استبداله في، وسوف نلاحظ أن في هذا الاستعلام SQL الآن، 999 01:06:25,070 --> 01:06:29,090 فالتقييم يكون إلى صحيحا دائما، لأنك سوف نلاحظ أن 1000 01:06:29,090 --> 01:06:32,240 يمكنك الاستعلام SQL حدد كل هذه المعلومات 1001 01:06:32,240 --> 01:06:35,420 أو هل يمكن أن يكون فقط 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 بحيث يجري دائما لتقييم إلى true. 1003 01:06:41,030 --> 01:06:46,610 التي لن تعمل حقا، لأن ذلك يعني أن القراصنة يمكن كسر في النظام الخاص بك. 1004 01:06:46,610 --> 01:06:49,300 الحل لهذا هو أن لديك لاستخدام نظام شركة تنمية نفط عمان، 1005 01:06:49,300 --> 01:06:51,360 وهو ما يعني أن لديك لاستخدام علامات الاستفهام، 1006 01:06:51,360 --> 01:06:53,350 وهو ما يا رفاق المستخدمة في pset 7، 1007 01:06:53,350 --> 01:06:57,620 أين أنت ذاهب إلى استخدام علامة استفهام في مكان حيث تريد وضع شيء، 1008 01:06:57,620 --> 01:07:01,430 ثم وأنت تسير أن يكون فاصلة، ومن ثم سيكون لديك بعد ذلك، 1009 01:07:01,430 --> 01:07:07,610 بعد سلسلة الخاص بك، المتغيرات المختلفة التي تريد استبدال علامة في سؤالك. 1010 01:07:07,610 --> 01:07:10,330 لذلك عليك أن نلاحظ هنا أن الآن لدي هذه علامات استفهام حمراء. 1011 01:07:10,330 --> 01:07:15,420 ثم أضع المتغيرات بعد سلاسل بلدي حتى وأنا أعرف أن تحل محلها في هذا النظام بعد ذلك. 1012 01:07:15,420 --> 01:07:18,470 والتي تأكد من أن إذا كان شخص يفعل مثل هذا، 1013 01:07:18,470 --> 01:07:24,050 ولديهم أو 1 = 1 الوضع، من شأنها أن تجعل بالتأكيد، 1014 01:07:24,050 --> 01:07:30,490 في النهاية الخلفية، وتأكد من أنه لن يكسر الواقع الاستعلام SQL. 1015 01:07:30,490 --> 01:07:33,660 حسنا، لذلك هذا الى حد كبير ذلك، زوبعة من PHP و SQL. 1016 01:07:33,660 --> 01:07:41,520 حظا سعيدا لكم جميعا، والآن إلى ولاية أوريغون 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] حسنا الجميع. الوقت للذهاب على بعض جافا سكريبت 1018 01:07:44,270 --> 01:07:48,840 وبعض الأشياء الأخرى بسرعة كبيرة لذلك نحن لا يحملون لكم هذه الليلة. 1019 01:07:48,840 --> 01:07:56,930 جافا سكريبت. نعم. جافا سكريبت هو نوع من شيء بارد، يزعم. 1020 01:07:56,930 --> 01:07:59,090 الأشياء كنت حقا بحاجة الى معرفته عن جافا سكريبت، انها نوع من مثل 1021 01:07:59,090 --> 01:08:03,810 نهاية العميل ما التطبيق الويب الخاص بك سوف يتم القيام. 1022 01:08:03,810 --> 01:08:08,280 هناك بعض الأشياء التي لا تريد أن تأخذ الرعاية من كل وقت على جانب الملقم. 1023 01:08:08,280 --> 01:08:12,880 جميع التفاعلات قليلا، وتسليط الضوء شيء واحد، مما يجعل شيئا تختفي. 1024 01:08:12,880 --> 01:08:15,340 كنت حقا لا تريد أن يكون لاجراء محادثات مع الخادم الخاص بك في كل وقت لذلك. 1025 01:08:15,340 --> 01:08:18,069 وبعض من ذلك ليس من الممكن القيام به على جانب الملقم. 1026 01:08:18,069 --> 01:08:21,899 هذا هو السبب في أننا بحاجة إلى شيء مثل جافا سكريبت. 1027 01:08:21,899 --> 01:08:24,359 الأشياء باردة حول تفعيل جافا: يتم كتابتها بشكل حيوي و. 1028 01:08:24,359 --> 01:08:27,149 ما يعنيه هذا هو أن البرنامج لا يحتاج إلى معرفة 1029 01:08:27,149 --> 01:08:30,970 ماذا، بالضبط، هي المتغيرات عند الكتابة بها. 1030 01:08:30,970 --> 01:08:34,510 انها سوف مجرد نوع من الرقم بها كما انها تعمل. 1031 01:08:34,510 --> 01:08:37,520 الأشياء الأخرى التي هي باردة حول هذا الموضوع: انها لغة متعرج، 1032 01:08:37,520 --> 01:08:41,359 وهو ما يعني بناء الجملة يشبه C و PHP. 1033 01:08:41,359 --> 01:08:47,050 ليس لديك إلى إعادة صياغة تفعل الكثير عندما كنت تعلم جافا سكريبت. 1034 01:08:47,050 --> 01:08:49,180 هنا لدينا قليلا من جافا سكريبت. 1035 01:08:49,180 --> 01:08:52,560 الشيء المثير للاهتمام هنا هو أنه إذا نظرتم اليها، 1036 01:08:52,560 --> 01:08:56,330 لدينا قليلا من جافا سكريبت هناك حق في العلامة الرأس. 1037 01:08:56,330 --> 01:08:59,479 ما هو: هل هو في الأساس مجرد تضمين ملف جافا سكريبت. 1038 01:08:59,479 --> 01:09:02,260 هذا هو أحد السبل التي يمكن أن تشمل جافا سكريبت في البرنامج. 1039 01:09:02,260 --> 01:09:06,910 ثم قليلا الثاني هو في الواقع بعض مضمنة جافا سكريبت، 1040 01:09:06,910 --> 01:09:10,790 مشابهة جدا لنمط مضمن مع CSS، 1041 01:09:10,790 --> 01:09:16,180 وكنت مجرد كتابة بعض التعليمات البرمجية بشكل سريع جدا هناك. 1042 01:09:16,180 --> 01:09:18,120 جافا سكريبت لديها صفائف. 1043 01:09:18,120 --> 01:09:20,850 مجرد طريقة أخرى للحفاظ على بيانات حولها، ومفيدة للغاية. 1044 01:09:20,850 --> 01:09:25,180 لطيفة جدا وسهلة في بناء الجملة. 1045 01:09:25,180 --> 01:09:29,870 يمكنك استخدام الأقواس المربعة للوصول إلى كل شيء، وإبقاء كل شيء معا. 1046 01:09:29,870 --> 01:09:35,020 لا شيء معقد جدا. 1047 01:09:35,020 --> 01:09:38,630 الشيء باردة حول جافا سكريبت لغات البرمجة وبشكل عام 1048 01:09:38,630 --> 01:09:40,920 هو أنك لا داعي للقلق حول أحجام صفيف. 1049 01:09:40,920 --> 01:09:43,880 يمكنك فقط استخدام array.length والحفاظ على مسارها من ذلك، 1050 01:09:43,880 --> 01:09:46,960 وأيضا مجموعة يمكن أن تنمو أو تتقلص كما كنت في حاجة إليها ل. 1051 01:09:46,960 --> 01:09:49,279 لذلك أنت لا تحتاج حتى للقلق بشأن أي نوع من، 1052 01:09:49,279 --> 01:09:57,050 أوه لا، ولست بحاجة لتخصيص المزيد من الأشياء، أو أي شيء من هذا القبيل. 1053 01:09:57,050 --> 01:10:00,090 >> الشيء بارد هنا هو أن جافا سكريبت لديه شيء يسمى الكائنات. 1054 01:10:00,090 --> 01:10:04,800 انها لغة وجوه المنحى، لذلك ما هو عليه، أساسا، 1055 01:10:04,800 --> 01:10:10,100 على طريقة لتجميع البيانات معا، وتشبه إلى حد ما البنية، 1056 01:10:10,100 --> 01:10:17,280 ولكن يمكنك الوصول إليه مثل البنية أو في جملة مجموعة النقابي. 1057 01:10:17,280 --> 01:10:22,520 انها بسيطة جدا وما يمكنك القيام به مع هذه البيانات هو مجموعة معا 1058 01:10:22,520 --> 01:10:24,810 إذا كان لديك مجموعة من البيانات التي ذات الصلة. 1059 01:10:24,810 --> 01:10:26,850 لأنه كل الأشياء التي تحتاج لوصف سيارة، 1060 01:10:26,850 --> 01:10:29,050 لا تحتاج أن يكون ذلك في حفنة من أماكن مختلفة. 1061 01:10:29,050 --> 01:10:35,300 يمكنك فقط التمسك بها في 1 الكائن في جافا سكريبت. 1062 01:10:35,300 --> 01:10:39,090 كما تعلمون، بالتكرار هي واحدة من تلك المهام شاقة. 1063 01:10:39,090 --> 01:10:43,810 كنت فقط تفعل ذلك على مدى أكثر من مرة. كنت بحاجة الى التحدث الى كل كائن في السيارة، 1064 01:10:43,810 --> 01:10:47,340 أو كنت في حاجة للذهاب من خلال كل عنصر في قائمة أو شيء من هذا القبيل. 1065 01:10:47,340 --> 01:10:51,770 حتى جافا سكريبت لديه، على غرار PHP، بناء جملة فورياش. 1066 01:10:51,770 --> 01:10:54,590 في هذه الحالة، انها لفي الحلقة. 1067 01:10:54,590 --> 01:10:57,300 كنت تريد استخدام هذا فقط على الكائنات. 1068 01:10:57,300 --> 01:11:01,030 هناك بعض المشاكل التي تحدث إذا كنت تستخدم هذا على المصفوفات. 1069 01:11:01,030 --> 01:11:03,750 عموما هي واحدة من تلك الأشياء، على الرغم من يمكن أن يكون مفيدا للغاية، 1070 01:11:03,750 --> 01:11:06,590 لأنك القضاء على الكثير من النفقات العامة 1071 01:11:06,590 --> 01:11:10,270 لأنك لم يكن لديك لسحب ما يصل كل شيء في وجوه الخاص بك من نفسك. 1072 01:11:10,270 --> 01:11:12,300 لم يكن لديك أن نتذكر كل الأسماء الرئيسية. 1073 01:11:12,300 --> 01:11:18,270 كنت مجرد نوع من الحصول عليها مرة أخرى في هذا النحو. 1074 01:11:18,270 --> 01:11:21,500 في هذا، مع ل، وتريد فقط أن نتذكر 1075 01:11:21,500 --> 01:11:27,180 أن كنت الحصول على العودة كل المفاتيح، بطريقة مشابهة جدا لتجزئة الجدول. 1076 01:11:27,180 --> 01:11:30,880 إذا كنت تتذكر من ذلك، عندما كنت وضعت في سلسلة يمكن أن تحصل على شيء من 1077 01:11:30,880 --> 01:11:33,840 التي من شأنها أن يكون لها قيمة المرتبطة به. 1078 01:11:33,840 --> 01:11:36,360 ما يمكنك القيام به مع هذا يمكن القول، كل الحق، 1079 01:11:36,360 --> 01:11:42,120 أنا وضعت في سيارة، وأطلقت عليها اسم فيراري. 1080 01:11:42,120 --> 01:11:45,290 بحيث يمكنك وضعها في سلسلة فيراري مرة أخرى في وقت لاحق، ويمكنك الحصول على هذا الخروج. 1081 01:11:45,290 --> 01:11:50,000 ويمكنك أن تفعل ذلك في حلقة، مع لفي الحلقة. 1082 01:11:50,000 --> 01:11:53,320 حتى مجرد المزيد عن الكائنات. الشيء الرئيسي من هذا عليك أن تتذكر 1083 01:11:53,320 --> 01:12:00,340 هو أنه يمكنك استخدام بنية الكائن مثل جملة وقتما تشاء مع هؤلاء، 1084 01:12:00,340 --> 01:12:04,590 إلا إذا كان ما يحدث لاستخدام كسلسلة ليس اسم متغير صالح. 1085 01:12:04,590 --> 01:12:07,650 حتى اذا نظرتم الى أن هناك، لدينا مفتاح بمسافات. 1086 01:12:07,650 --> 01:12:12,500 حسنا، إذا كنت لوضع object.key، والفضاء، مع، والفضاء، ومساحات، 1087 01:12:12,500 --> 01:12:15,320 أن فقط لن يكون له معنى نحويا. 1088 01:12:15,320 --> 01:12:22,730 لذلك أنت فقط تستطيع أن تفعل ذلك مع هذا النوع من جملة قوس. 1089 01:12:22,730 --> 01:12:26,520 >> أيضا، وجافا سكريبت جدا النطاق الحكمة أن PHP. 1090 01:12:26,520 --> 01:12:29,050 لديك 2 طرق معالجة النطاق. 1091 01:12:29,050 --> 01:12:31,960 لا يمكن أن يكون فار أمام متغير، 1092 01:12:31,960 --> 01:12:34,060 وهذا يعني فقط هذا هو العالمي. 1093 01:12:34,060 --> 01:12:37,050 يمكنك أن ترى ذلك من أي مكان. حتى لو كنت لوضع هذا في بيان إذا، 1094 01:12:37,050 --> 01:12:42,430 في أي مكان آخر في التعليمات البرمجية بعد هذه النقطة هل يمكن أن نرى هذا المتغير. 1095 01:12:42,430 --> 01:12:46,730 شيء آخر، رغم ذلك، هو مع فار، انها محدودة إلى أي وظيفة كنت فيه. 1096 01:12:46,730 --> 01:12:48,870 إذا كنت لا في وظيفة، حسنا، انها العالمي. 1097 01:12:48,870 --> 01:12:53,900 ولكن إذا كنت في وظيفة انها مرئية فقط ضمن تلك الوظيفة. 1098 01:12:53,900 --> 01:12:56,420 ليس لدي كمثال على ذلك، ولكن، نعم. انها واحدة من تلك الأشياء التي 1099 01:12:56,420 --> 01:12:59,900 يمكنك إدارة ما المتغيرات التي تريد أن تكون عالمية، 1100 01:12:59,900 --> 01:13:03,810 ما المتغيرات التي تريد أن تكون محلية، ولكنك تحتاج إلى توخي الحذر حول هذا الموضوع، 1101 01:13:03,810 --> 01:13:06,890 لأنك لم يكن لديك نوع من السيطرة الحبوب غرامة تفعله في C، 1102 01:13:06,890 --> 01:13:15,820 حيث إذا تم التصريح شيء في حلقة for، انها تنوي البقاء في ذلك للحلقة. 1103 01:13:15,820 --> 01:13:18,790 الشيء نحن نهتم فعلا حول استخدام جافا سكريبت لتتلاعب صفحات الويب، أليس كذلك؟ 1104 01:13:18,790 --> 01:13:21,800 أعني، لهذا السبب نقوم به هذا. 1105 01:13:21,800 --> 01:13:23,840 >> للقيام بذلك، ونحن نستخدم ما يسمى DOM. 1106 01:13:23,840 --> 01:13:25,850 نموذج كائن المستند. 1107 01:13:25,850 --> 01:13:29,430 أساسا، ما يفعله هو أنه يأخذ كل ما تبذلونه من HTML 1108 01:13:29,430 --> 01:13:34,110 ونماذج من ذلك في مجموعة من الكائنات التي يتم تداخل داخل بعضها البعض. 1109 01:13:34,110 --> 01:13:37,080 عليك البدء بشيء مثل هذا. 1110 01:13:37,080 --> 01:13:44,770 لديك، على حق لي، وحفنة من التعليمات البرمجية الى ان هناك نوع من - 1111 01:13:44,770 --> 01:13:46,640 وكنت أعتقد أن سيكون من الصعب جدا التعامل معها، 1112 01:13:46,640 --> 01:13:48,700 لأنك تريد ان تكون من خلال تحليل مجموعة من النص 1113 01:13:48,700 --> 01:13:52,080 والحاجة إلى قطعة عدا الأشياء. وماذا لو لم يكن مهيأ بشكل صحيح؟ 1114 01:13:52,080 --> 01:13:54,880 سوف تحدث أمور سيئة. 1115 01:13:54,880 --> 01:13:58,140 حتى جافا سكريبت يعتني هذا بالنسبة لك، وتحصل على بنية بيانات لطيفة، 1116 01:13:58,140 --> 01:14:01,390 مثل واحد على يساري، حيث لديك مجرد وثيقة، 1117 01:14:01,390 --> 01:14:03,530 وداخل أن لديك ما يسمى HTML، 1118 01:14:03,530 --> 01:14:05,600 وداخل أن لديك الرأس والجسم، 1119 01:14:05,600 --> 01:14:08,420 وداخل هذا الرأس كان لديك عنوان، إلى آخره، إلى آخره، إلى آخره. 1120 01:14:08,420 --> 01:14:11,810 هذا يبسط التلاعب صفحة ويب بحيث انها مجرد، 1121 01:14:11,810 --> 01:14:14,190 أوه، أنا فقط أريد أن أتحدث إلى هذا الكائن. 1122 01:14:14,190 --> 01:14:21,340 نوع من طريقة مشابهة جدا كنت أتحدث إلى كائن آخر قمت بها بنفسك. 1123 01:14:21,340 --> 01:14:25,980 كما قلت، كل DOM هو في كائن المستند. 1124 01:14:25,980 --> 01:14:29,290 إما انها مجرد مكان واحد ومن ثم يمكنك الذهاب داخلها للعثور على الأشياء، 1125 01:14:29,290 --> 01:14:33,880 ويمكنك أن تفعل ذلك - وهذا هو النمط القديم للقيام بذلك، هناك، 1126 01:14:33,880 --> 01:14:38,130 حيث يمكنك القيام document.getElementById، ثم الاسم، 1127 01:14:38,130 --> 01:14:42,420 وكما يمكنك أن أقول ربما، وهذا يحصل غير عملي جدا بعد حين. 1128 01:14:42,420 --> 01:14:44,480 لذلك ربما كنت لا تريد أن تفعل ذلك. هذا هو السبب لدينا 1129 01:14:44,480 --> 01:14:48,760 والشيء التالي ونحن في طريقنا للحديث عن بعد هذا. 1130 01:14:48,760 --> 01:14:52,510 الشيء الرئيسي هنا هو أن، كل الحق، لديك كل هذه العناصر، أليس كذلك؟ 1131 01:14:52,510 --> 01:14:56,400 لذلك ربما يمكنني تغيير لون شيء عند تحميل الصفحة. 1132 01:14:56,400 --> 01:14:58,380 ماذا في ذلك؟ ما إذا كان المستخدم بالنقر بلدي شيئا؟ 1133 01:14:58,380 --> 01:15:00,540 أريد أن أفعل شيئا مثيرا للاهتمام عندما ينقرون شيء. 1134 01:15:00,540 --> 01:15:02,600 هذا هو السبب لدينا الأحداث. 1135 01:15:02,600 --> 01:15:05,330 يمكنك، في الأساس، والعثور على أي عنصر في DOM الخاص بك، 1136 01:15:05,330 --> 01:15:08,560 ثم يقول، يا. عندما يقوم بتحميل هذا أو ينقر عليه، 1137 01:15:08,560 --> 01:15:11,410 أو عندما الماوس فوقها، أن تفعل شيئا معها. 1138 01:15:11,410 --> 01:15:15,330 وما لديك هو، لديك مهام التي تتعامل مع هذا بالنسبة لك. 1139 01:15:15,330 --> 01:15:17,980 هذه الوظائف هي معالجات الأحداث. 1140 01:15:17,980 --> 01:15:20,440 ما they're - انها مجرد طريقة أخرى للقول، 1141 01:15:20,440 --> 01:15:23,500 هذه الوظيفة يتم تنفيذه فقط عندما يحدث هذا الحدث. 1142 01:15:23,500 --> 01:15:28,070 لذلك يعالج الحدث الذي يحدث. 1143 01:15:28,070 --> 01:15:30,810 هذا هو كيف سيكون وضع معالج الحدث. 1144 01:15:30,810 --> 01:15:34,750 لدي بعض زر، وعند النقر فوقه، فإنه ينفجر. 1145 01:15:34,750 --> 01:15:40,560 لذلك لا انقر فوق الزر. 1146 01:15:40,560 --> 01:15:42,910 هذا هو أحد السبل لتقترب من ذلك، أليس كذلك؟ 1147 01:15:42,910 --> 01:15:46,430 لديك علامة زر، وانقر على لديك السلسلة التي تقول، 1148 01:15:46,430 --> 01:15:50,460 أوه، بالمناسبة، أنا أعمل هذا الشيء تنفجر بالنسبة لي. 1149 01:15:50,460 --> 01:15:53,990 خلاف ذلك، انها مجرد مثل زر العادية التي أجريتها فقط. 1150 01:15:53,990 --> 01:15:56,550 يمكنك أيضا القيام بذلك بطريقة أخرى، 1151 01:15:56,550 --> 01:16:02,770 عن طريق الاستيلاء على العنصر DOM، لكننا سوف توفر بعد أن نتحدث عن مسج. 1152 01:16:02,770 --> 01:16:07,580 مسج >>: وهي عبارة عن المكتبة التي هي عبر متصفح. 1153 01:16:07,580 --> 01:16:09,580 يمكنك استخدامه في أي شيء الى حد كبير. 1154 01:16:09,580 --> 01:16:12,090 وأنها تعطيك فقط الكثير من أدوات للعمل مع. 1155 01:16:12,090 --> 01:16:15,850 لأن جافا سكريبت، في حين قوية، لا يملك جميع الأدوات التي تحتاجها 1156 01:16:15,850 --> 01:16:20,550 من خارج منطقة الجزاء لمعالجة حقا التطبيق الويب التي قد ترغب في القيام به. 1157 01:16:20,550 --> 01:16:24,650 لذلك يبسط الكثير من الأشياء، ويمنحك الكثير من الوظائف 1158 01:16:24,650 --> 01:16:28,760 من خارج منطقة الجزاء التي عملتم عادة لكتابة نفسك، مرارا وتكرارا وتكرارا. 1159 01:16:28,760 --> 01:16:31,600 وفقط يجعل الأمور في غاية البساطة. 1160 01:16:31,600 --> 01:16:35,780 لديك أيضا محددات، والتي تمكنك من اتخاذ جميع تلك العناصر 1161 01:16:35,780 --> 01:16:42,800 من DOM الخاصة بك أكثر من ذلك بكثير ببساطة، بدلا من الاضطرار لاستخدام هذه المكالمات وظيفة طويلة جدا. 1162 01:16:42,800 --> 01:16:46,630 أكثر على هذه المنتخبات. لديك، حتى هناك لديك، دعنا نقول 1163 01:16:46,630 --> 01:16:49,800 أريد الحصول على عنصر مع معرف "الصخرة". 1164 01:16:49,800 --> 01:16:56,450 حسنا، في مسج، انها مجرد دولار ومن ثم سلسلة يحتوي على الجنيه، ثم "الصخور". 1165 01:16:56,450 --> 01:17:01,960 انها بسيطة جدا وأسرع بكثير من الطريقة التقليدية جافا سكريبت لمعالجة هذه المشكلة. 1166 01:17:01,960 --> 01:17:06,120 وكان لديك أشياء مماثلة لفئات وأنواع العنصر. 1167 01:17:06,120 --> 01:17:08,140 مسج هو - واحدة من الميزات الرائعة هو أن تتمكن من نوع من ضغط 1168 01:17:08,140 --> 01:17:14,350 أسفل استفساراتكم على DOM الخاص جدا وسريع جدا. 1169 01:17:14,350 --> 01:17:18,980 الآن نعود إلى التعامل مع الحدث، وهذا هو كيف سيكون التعامل مع حدث واحد في مسج. 1170 01:17:18,980 --> 01:17:23,090 فما نحن في طريقنا هنا نقوله، كل الحق. لدي العلامة النصي، أليس كذلك؟ 1171 01:17:23,090 --> 01:17:25,400 وذلك لدي هذا مضمنة جافا سكريبت. 1172 01:17:25,400 --> 01:17:27,750 ما نحن بصدد القيام به هو أننا ذاهبون إلى القول، كل الحق. 1173 01:17:27,750 --> 01:17:30,860 عندما يكون المستند جاهزا، وهو ما يعني انه تم تحميل المستند، 1174 01:17:30,860 --> 01:17:34,660 نحن في سبيلنا للذهاب إلى تلك الوظيفة، ونحن في طريقنا إلى القول، كل الحق، 1175 01:17:34,660 --> 01:17:37,060 هذه الوظيفة يفعل في الواقع شيء آخر. 1176 01:17:37,060 --> 01:17:42,320 انها في الأساس قائلا، كل الحق، يحصل لي عنصر مع معرف "myid". 1177 01:17:42,320 --> 01:17:47,960 ومن ثم إعطاء هذا معالج وظيفة الذي ينفذ عند النقر فوقه. 1178 01:17:47,960 --> 01:17:49,820 أساسا ما يفعله هو هذا، فإنه يقول، كل الحق. 1179 01:17:49,820 --> 01:17:52,630 يتم تحميل الصفحة، لذلك أنا ذاهب لفي، والعثور على هذا العنصر، 1180 01:17:52,630 --> 01:17:56,420 اعطائها معالج الحدث هذا، وأنه يضع أساسا حتى صفحتك بالنسبة لك. 1181 01:17:56,420 --> 01:18:00,520 وهذه هي الطريقة التي ترغب في التفكير في التعامل مع الحدث. 1182 01:18:00,520 --> 01:18:06,310 كنت ترغب فقط للتفكير، كل الحق، عندما يحدث شيء، ماذا أريد أن يحدث؟ 1183 01:18:06,310 --> 01:18:10,520 كنت لا ترغب في التفكير، حسنا، ولست بحاجة للتأكد من المحادثات هذا الشيء لهذا الشيء، 1184 01:18:10,520 --> 01:18:14,660 هذا الشيء بلاه بلاه بلاه، لأنك تريد فقط أن أتحدث شيء من حيث الأحداث. 1185 01:18:14,660 --> 01:18:17,650 عندما يحدث هذا، وهذا يحدث. وعندما يحدث ذلك، يحدث ذلك. 1186 01:18:17,650 --> 01:18:20,240 واذا كانت الامور تؤدي أمور أخرى، وهذا أمر عظيم. 1187 01:18:20,240 --> 01:18:22,150 ولكنك لا تريد أن تجرب وتفعل كود معقدة 1188 01:18:22,150 --> 01:18:24,130 أين أنت مما اثار أشياء متعددة في نفس الوقت، 1189 01:18:24,130 --> 01:18:28,860 لأنك مجرد الذهاب لتمنح لنفسك صداعا. 1190 01:18:28,860 --> 01:18:32,340 >> حسنا. الآن يمكن أن نحصل على صفحتنا على التعامل مع الأحداث، 1191 01:18:32,340 --> 01:18:35,640 ولكن دعنا نقول المستخدم بالنقر فوق زر بلدي. 1192 01:18:35,640 --> 01:18:38,040 ماذا لو كنت تريد إرسال هذا الطلب مرة أخرى إلى الخادم، 1193 01:18:38,040 --> 01:18:41,100 ولكن لا أريد لإعادة تحميل الصفحة، لأن الحاجة إلى تحميل صفحة جديدة 1194 01:18:41,100 --> 01:18:44,390 في كل مرة يحصل نوع من مملة، ولماذا أحتاجه 1195 01:18:44,390 --> 01:18:47,430 لهدم رأس مرة أخرى، وتذييل الصفحة مرة أخرى، 1196 01:18:47,430 --> 01:18:49,670 وجميع عناصر الصفحة مرة أخرى 1197 01:18:49,670 --> 01:18:53,180 فقط لتحديث المعايدة أو الوقت؟ 1198 01:18:53,180 --> 01:18:55,290 ولهذا السبب لدينا شيء من هذا القبيل اياكس. 1199 01:18:55,290 --> 01:18:59,150 ما يمكننا القيام به هنا مع اياكس هو أننا نستطيع أن نقول، كل الحق، 1200 01:18:59,150 --> 01:19:01,290 أريد أن إرسال بعض البيانات إلى الخادم، 1201 01:19:01,290 --> 01:19:04,010 وأريد الحصول على رد حتى أتمكن من تحديث صفحتي، 1202 01:19:04,010 --> 01:19:12,120 أو ربما مجرد القيام ببعض حساب حسابي التي لا تظهر بالضرورة أي شيء للمستخدم. 1203 01:19:12,120 --> 01:19:15,500 ماذا تحتاج للقيام بذلك؟ حسنا، كنت في حاجة الى URL تحتاج إلى التحدث. 1204 01:19:15,500 --> 01:19:18,650 الخادم الخاص بك لا يمكن مجرد الاستماع سحرية في أي مكان من. 1205 01:19:18,650 --> 01:19:21,960 تحتاج إلى أن يكون مكان معين كنت ترسل هذه البيانات ل. 1206 01:19:21,960 --> 01:19:26,240 وتحتاج أيضا بعض البيانات لإرسالها، أو ربما انها استعلام dataless. 1207 01:19:26,240 --> 01:19:31,380 كنت ترغب فقط في بينغ مرة أخرى إلى الخادم ويقول: مهلا، أنا على قيد الحياة، أو شيء من هذا القبيل. 1208 01:19:31,380 --> 01:19:35,150 ثم كنت تريد وظيفة الذي يعالج أساسا مع النجاح. 1209 01:19:35,150 --> 01:19:38,250 دعونا نقول لكم نعود بعض المعلومات من الخادم الخاص بك، 1210 01:19:38,250 --> 01:19:42,960 وكنت ترغب في تغيير عنوان المستخدم على الصفحة الخاصة بهم. 1211 01:19:42,960 --> 01:19:44,930 لذلك كنت الحصول على المعلومات مرة أخرى، 1212 01:19:44,930 --> 01:19:48,860 وكنت دفع ذلك إلى الشاشة. 1213 01:19:48,860 --> 01:19:51,170 ما يحدث هو، عندما تكون الصفحة جاهزة، 1214 01:19:51,170 --> 01:19:56,500 قمت بإنشاء على نقرة وظيفة لهذا الزر يسمى غريتر. 1215 01:19:56,500 --> 01:19:58,810 ما هذا ثم يفعله هو، عندما يتم الضغط على هذا الزر، 1216 01:19:58,810 --> 01:20:03,700 تتحدث إلى greetings.php، وجعل لكم طلب وظيفة، 1217 01:20:03,700 --> 01:20:07,290 وأقول لكم، يا، يحصل لي شيء من الصفحة الخاصة بك. 1218 01:20:07,290 --> 01:20:09,890 نحن لا حقا بحاجة لوصف ذلك، ولكن greetings.php، 1219 01:20:09,890 --> 01:20:12,480 دعنا نقول فقط، يعيد "مرحبا العالم". 1220 01:20:12,480 --> 01:20:15,650 حتى نعود هذا "مرحبا العالم"، وعلى نجاح هذه، 1221 01:20:15,650 --> 01:20:20,730 على افتراض أي شيء يذهب على نحو خاطئ، ثم نحن فقط تذهب إلى هذا المكان المستهدف 1222 01:20:20,730 --> 01:20:25,720 أننا المحدد، ونحن مجرد عصا الاستجابة في هناك. 1223 01:20:25,720 --> 01:20:31,560 وهذا هو وسيلة بسيطة للغاية لإنشاء استعلام اياكس. 1224 01:20:31,560 --> 01:20:34,340 >> بسرعة جدا، روب نوع من ذكر هذا بالفعل، 1225 01:20:34,340 --> 01:20:37,170 أشياء يمكن أن تسوء، يمكن أن تحدث أمور سيئة، 1226 01:20:37,170 --> 01:20:42,660 لذلك أردت أن تتعرف على هذه الرموز استجابة HTTP. 1227 01:20:42,660 --> 01:20:46,030 ما هي هذه ليست سوى، مثل، 200، ذهب كل شيء بخير. 1228 01:20:46,030 --> 01:20:48,670 شيء آخر، حدثت أمور سيئة. 1229 01:20:48,670 --> 01:20:50,790 انها عموما الشيء الذي تريد أن تذكر. 1230 01:20:50,790 --> 01:20:53,440 ولكن من الجميل أن تعرف كل من هذه. 1231 01:20:53,440 --> 01:20:55,970 وأخيرا، بعد أن نكون قد ذهبت من خلال كل ذلك، 1232 01:20:55,970 --> 01:20:58,680 نحن بحاجة إلى التحدث بسرعة كبيرة حول تصميم و 1233 01:20:58,680 --> 01:21:00,620 ومن ثم يمكننا أن نسمح لكم جميعا الرحيل. 1234 01:21:00,620 --> 01:21:03,410 التصميم. الأشياء التي تريد أن تتذكرها. 1235 01:21:03,410 --> 01:21:06,950 اسأل نفسك هذه الأسئلة: من الذي سوف تستخدم هذا؟ 1236 01:21:06,950 --> 01:21:09,580 ما سوف يتم استخدامه ل؟ ماذا المستخدمين بلدي يهتمون؟ 1237 01:21:09,580 --> 01:21:11,750 ما لا يهتمون؟ 1238 01:21:11,750 --> 01:21:14,500 أنت فقط لا تريد أن تجعل التطبيق وتركها تنمو فقط 1239 01:21:14,500 --> 01:21:18,270 ويصبح هذا العملاق، وتستهلك كل شيء، أنه لا يمكنك حتى النهاية. 1240 01:21:18,270 --> 01:21:23,900 كنت تريد أن يكون الأهداف المنفصلة والخطط والأشياء التي ترغب في معالجتها. 1241 01:21:23,900 --> 01:21:29,000 جعله سهل. كل هذا يقول، في الأساس، 1242 01:21:29,000 --> 01:21:34,950 تجعل من السهل بالنسبة للمستخدم لاستخدامه، لا تجعل من فقاعة عملاقة من النص مثل هذه الشريحة هو، في الواقع. 1243 01:21:34,950 --> 01:21:38,020 أردت فقط أن يكون شيئا حيث أنه من السهل جدا لشخص ما ليذهب في 1244 01:21:38,020 --> 01:21:40,800 وتفعل ما تريد القيام به. 1245 01:21:40,800 --> 01:21:42,920 كنت لا تريد ان يكون لهم للتنقل 5 صفحات 1246 01:21:42,920 --> 01:21:45,460 للحصول على وظيفة لديك رئيس من موقعك. 1247 01:21:45,460 --> 01:21:49,290 إذا كان المشاركة في 5 صفحات قبل أن يتمكن حتى من بحث شيئا، 1248 01:21:49,290 --> 01:21:53,080 لا يمكن لأحد استخدامه. 1249 01:21:53,080 --> 01:21:55,890 وأخيرا، نموذج ورقة، مجموعة التركيز. 1250 01:21:55,890 --> 01:21:59,220 يكون التصميم الجيد والممارسات الاختبار. 1251 01:21:59,220 --> 01:22:00,730 فقط لأنك تعتقد أنه يعمل للكم، 1252 01:22:00,730 --> 01:22:04,860 لا يعني أي شخص آخر يعتقد أنه يعمل. 1253 01:22:04,860 --> 01:22:14,490 ولكن نعم، هذا كل شيء. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]