1 00:00:00,000 --> 00:00:02,760 [Powered by Google Translate] [WEEK 5] 2 00:00:02,760 --> 00:00:04,760 [ديفيد J. مالان، جامعة هارفارد] 3 00:00:04,760 --> 00:00:11,990 [هذا CS50.] [CS50.TV] 4 00:00:11,990 --> 00:00:17,780 [المرأة] انه الكذب؛ حول ما، وأنا لا أعرف. 5 00:00:17,780 --> 00:00:20,300 [رجل] لذلك ماذا نعرف؟ 6 00:00:20,300 --> 00:00:24,120 [المرأة] وهذا في الساعة 9:15، راي Santoya كان في أجهزة الصراف الآلي. 7 00:00:24,120 --> 00:00:27,420 [رجل] لذا فإن السؤال هو، ماذا كان يفعل في 9:16؟ 8 00:00:27,420 --> 00:00:29,980 [المرأة] إطلاق النار على عيار 9 مم في شيء. 9 00:00:29,980 --> 00:00:31,900 ورأى أنه ربما القناص. 10 00:00:31,900 --> 00:00:34,000 [رجل] أو كان يعمل معه. 11 00:00:34,000 --> 00:00:36,330 [المرأة] انتظر. العودة احدة. 12 00:00:36,330 --> 00:00:38,330 [رجل] ماذا ترى؟ 13 00:00:38,330 --> 00:00:44,520 [♫ ♫ الموسيقى مشوقة] 14 00:00:44,520 --> 00:00:48,320 [المرأة] إحضار وجهه لأعلى. كامل الشاشة. 15 00:00:48,320 --> 00:00:51,230 [رجل] صاحب النظارات. هناك >> التفكير. 16 00:00:51,230 --> 00:01:00,810 [♫ ♫ الموسيقى مشوقة] 17 00:01:00,810 --> 00:01:03,580 [رجل] وهذا الفريق Nuevita في البيسبول. هذا الشعار. 18 00:01:03,580 --> 00:01:07,790 [المرأة] ويتحدث لمن يرتدي سترة أن. 19 00:01:07,790 --> 00:01:13,730 >> [ديفيد مالان] وهكذا، وهذا هو CS50 الأسبوع 5، واليوم نحن الخراب قليلا من التلفزيون والسينما بالنسبة لك. 20 00:01:13,730 --> 00:01:16,170 لذلك كلما كنت أشاهد لعرض مثل هذا واحد هنا، 21 00:01:16,170 --> 00:01:19,910 ويقول رجال الشرطة "يمكنك تنظيف ذلك؟" أو "تعزيز" 22 00:01:19,910 --> 00:01:21,900 لا يوجد أي تعزيز في العالم الحقيقي. 23 00:01:21,900 --> 00:01:25,220 في الواقع، ما تحصل عليه هو حقا شيئا قليلا من هذا القبيل. 24 00:01:25,220 --> 00:01:27,570 لقد سحبت واحدة من الصور موظفين من الصفحة. 25 00:01:27,570 --> 00:01:30,980 هذا هو برنامج يسمى برنامج فوتوشوب. هذا هو 1 من 2 Bowdens، 26 00:01:30,980 --> 00:01:36,300 1 من 3 Bowdens في الواقع، اليوم، لأن لدينا السيدة بودين هنا أيضا، مع روب وبولس. 27 00:01:36,300 --> 00:01:41,950 ولكن هنا هو روب على الشاشة، وإذا كنا في التكبير على أن بريق انه كان دائما انه في عينه، 28 00:01:41,950 --> 00:01:47,600 ما تراه في الواقع هو أن ما تراه هو ما تحصل عليه. 29 00:01:47,600 --> 00:01:51,690 هذا هو "تعزيز"، لذلك "CSI" يكون ذلك قليلا خاطئ. 30 00:01:51,690 --> 00:01:55,190 هناك مقطع واحد آخر، إذا يمكننا اختيار على "CSI" قليلا فقط لفترة أطول. 31 00:01:55,190 --> 00:01:58,500 هذا هو واحد عبارة لطيفة من الآن فصاعدا أن ينطق إذا كنت ترغب في 32 00:01:58,500 --> 00:02:10,280 تقنية سليمة مع أصدقائك عندما، في الحقيقة، كنت تقول شيئا على الإطلاق. 33 00:02:10,280 --> 00:02:12,970 >> [رجل] لأسابيع لقد تم التحقيق في جرائم القتل القاتل سائق سيارة الأجرة 34 00:02:12,970 --> 00:02:15,360 مع سحر المهووسين معينة. 35 00:02:15,360 --> 00:02:17,160 [المرأة رقم 1] وهذا هو في الوقت الحقيقي. 36 00:02:17,160 --> 00:02:22,930 [المرأة رقم 2] سوف إنشاء واجهة GUI باستخدام Visual Basic، معرفة ما إذا كان يمكنني تتبع عنوان IP. 37 00:02:22,930 --> 00:02:29,570 >> [مالان] الصوت لذلك متزامنة جانبا، وخلق واجهة GUI باستخدام Visual Basic 38 00:02:29,570 --> 00:02:31,820 لتتبع عنوان IP هو محض هراء. 39 00:02:31,820 --> 00:02:33,840 في هذه الأيام فإنك لن استخدام Visual Basic، 40 00:02:33,840 --> 00:02:38,920 ليس هناك حاجة لGUI، وعنوان IP هو مصطلح دقيق من الناحية الفنية. 41 00:02:38,920 --> 00:02:41,730 حتى تبقي العين لهؤلاء، واحدة من المفضلة: 42 00:02:41,730 --> 00:02:45,070 هذا واحد من أكثر قليلا غامضة، لأنك بحاجة إلى معرفة لغة مختلفة. 43 00:02:45,070 --> 00:02:47,860 هناك لغة تسمى الهدف-C، الذي هو مجموعة شاملة من C. 44 00:02:47,860 --> 00:02:51,960 وهو ما يعني انها C بالإضافة إلى بعض الميزات الإضافية، من بينها وجوه المنحى البرمجة. 45 00:02:51,960 --> 00:02:55,070 وهذه هي اللغة التي أبل قد شاع للبرمجة دائرة الرقابة الداخلية. 46 00:02:55,070 --> 00:02:58,760 وحتى هنا هو مقطع من عرض مختلف تماما، من "الأرقام" 47 00:02:58,760 --> 00:03:02,450 انه اذا نظرتم عن كثب على الواقع تيفو الخاص بك وقفة في اللحظة المناسبة، 48 00:03:02,450 --> 00:03:07,700 سترى أن ما يبحثون ليست واردة في ما يجري وصفها. 49 00:03:07,700 --> 00:03:11,170 واسمحوا لي أن أحاول موصل الصوت المختلفة هنا ونرى اذا كنا لا نستطيع 50 00:03:11,170 --> 00:03:13,780 الحفاظ على الصوت متزامنا هذه المرة. 51 00:03:13,780 --> 00:03:20,530 أنا أعطيك "الأرقام". 52 00:03:20,530 --> 00:03:23,240 >> [مان # 1] انها عنوان 32 بت عناوين IPv4. 53 00:03:23,240 --> 00:03:38,930 [رجل # 2] IP، وهذا هو الانترنت. >> شبكة الاتصال الخاصة. انها شبكة أنيتا الخاص. 54 00:03:38,930 --> 00:03:43,810 [مالان] حسنا. هذا هو الهدف-C، وانها لبرنامج تلوين بعض طفل، 55 00:03:43,810 --> 00:03:51,140 كما يمكنك استنتاج ربما من اسم المتغير هناك. 56 00:03:51,140 --> 00:03:54,410 بحيث، بعد ذلك، كان "الأرقام". حتى اليوم وهذا الأسبوع ونحن نقدم 57 00:03:54,410 --> 00:03:57,740 قليلا من عالم الطب الشرعي والسياق في ذلك المشاكل. 58 00:03:57,740 --> 00:04:00,590 سوف يكون اليوم محاضرة مختصرة لأنه لا يوجد حدث خاص هنا 59 00:04:00,590 --> 00:04:05,530 بعد ذلك، لذلك سوف نلقي نظرة خاطفة، وندف كل من الطلاب وأولياء الأمور على حد سواء اليوم 60 00:04:05,530 --> 00:04:07,420 مع بعض من الأشياء التي هي في الأفق. 61 00:04:07,420 --> 00:04:12,240 من بينها، وذلك اعتبارا من يوم الاثنين، سيكون لديك المزيد من زملاء الدراسة قليلة. 62 00:04:12,240 --> 00:04:16,050 EDX، هارفارد ومبادرة جديدة على الانترنت ميتس للالتعليمية المفتوحة 63 00:04:16,050 --> 00:04:19,120 وأكثر من ذلك، وتطلق في الحرم الجامعي في جامعة هارفارد يوم الاثنين. 64 00:04:19,120 --> 00:04:21,490 وهو ما يعني الاثنين سيكون لديك تأتي - كما في آخر إحصاء، 65 00:04:21,490 --> 00:04:26,210 و86000 زملاء إضافية يتم بعد طول مع المحاضرات في CS50 66 00:04:26,210 --> 00:04:29,170 والأقسام والمواضيع الإرشادية ومجموعات المشكلة. 67 00:04:29,170 --> 00:04:32,350 وكجزء من هذا، وسوف تصبح أعضاء في الدفعة الأولى من 68 00:04:32,350 --> 00:04:35,090 CS50 وCS50x الآن. 69 00:04:35,090 --> 00:04:39,310 >> وكجزء من هذا، الآن، ندرك أن سيكون هناك بعض الإيجابيات أيضا. 70 00:04:39,310 --> 00:04:43,790 للحصول على استعداد لهذا، لعدد هائل من الطلاب، 71 00:04:43,790 --> 00:04:47,180 ويكفي ان نقول أنه على الرغم من أن لدينا 108 TFS والاكاديمية، 72 00:04:47,180 --> 00:04:50,790 ليس تماما أفضل الطالب / المعلم نسبة بمجرد أن تصل إلى 80000 طلاب آخرين. 73 00:04:50,790 --> 00:04:52,850 لذلك نحن لن الدرجات مشكلة الكثير من مجموعات يدويا. 74 00:04:52,850 --> 00:04:55,920 وقدم لذلك هذا الاسبوع في مجموعة تكون المشكلة CS50 تحقق، 75 00:04:55,920 --> 00:04:58,450 التي ستكون أداة سطر الأوامر داخل الأجهزة 76 00:04:58,450 --> 00:05:01,200 التي سوف تحصل بمجرد تحديثه في وقت لاحق هذا الأسبوع، 77 00:05:01,200 --> 00:05:03,200 وعليك أن تكون قادرا على تشغيل أمر، تحقق 50، 78 00:05:03,200 --> 00:05:06,500 على pset الخاصة بك، وستحصل على بعض ردود الفعل حول ما إذا كان البرنامج الخاص بك هو 79 00:05:06,500 --> 00:05:11,160 صحيحة أو غير صحيحة وفقا لمواصفات التصميم المختلفة التي قدمنا. 80 00:05:11,160 --> 00:05:13,580 أكثر من ذلك على أن والمواصفات ومجموعة مشكلة 81 00:05:13,580 --> 00:05:17,240 فإن زملاء CS50x تستخدم هذا أيضا. 82 00:05:17,240 --> 00:05:19,230 >> حتى مجموعة المشكلة 4 هو كل شيء عن الطب الشرعي. 83 00:05:19,230 --> 00:05:21,940 وكانت مستوحاة من قبل هذه القطعة بعض الاشياء في الحياة الواقعية، 84 00:05:21,940 --> 00:05:24,620 I المعتقلين حيث عندما كنت في المدرسة العليا، لفترة من الوقت مع 85 00:05:24,620 --> 00:05:28,650 مكتب مقاطعة ميدلسكس في منطقة المدعي العام القيام بأعمال الطب الشرعي 86 00:05:28,650 --> 00:05:31,650 مع محقق الطب الشرعي على الرصاص، وما بلغ ذلك 87 00:05:31,650 --> 00:05:35,260 و، وأعتقد أنني ذكرت في الأسبوع الماضي القليلة، هو الشرطة أو غيرهم قداس الدولة 88 00:05:35,260 --> 00:05:39,000 سيأتي في، فإنها تتراجع أشياء مثل محركات الأقراص الصلبة والأقراص المدمجة والأقراص المرنة 89 00:05:39,000 --> 00:05:42,340 وما شابه ذلك، ومن ثم كان الهدف من مكتب الطب الشرعي للتأكد مما إذا 90 00:05:42,340 --> 00:05:44,600 كان هناك أو لم يكن أدلة من نوع ما. 91 00:05:44,600 --> 00:05:48,010 وكان هذا وحدة التحقيقات الخاصة، لذلك كان جريمة ذوي الياقات البيضاء، 92 00:05:48,010 --> 00:05:52,350 كان الأكثر إثارة للقلق نوع من الجرائم، 93 00:05:52,350 --> 00:05:55,990 أي شيء تنطوي على نوع من وسائل الإعلام الرقمية، تبين أن كثير من الناس لا أن 94 00:05:55,990 --> 00:05:59,370 كتابة رسالة بريد إلكتروني قائلا "أنا فعلت هذا." 95 00:05:59,370 --> 00:06:03,290 لذلك في كثير من الأحيان فإن هذه الطب الشرعي البحث لا يحضر كل ما ثمرا كثيرا، 96 00:06:03,290 --> 00:06:05,850 لكن في بعض الأحيان كان الناس مثل كتابة رسائل البريد الإلكتروني. 97 00:06:05,850 --> 00:06:08,490 وحتى في بعض الأحيان مكافأة الجهود. 98 00:06:08,490 --> 00:06:14,420 >> ولكن لتؤدي إلى هذه pset الطب الشرعي، سنكون في إدخال pset 4 أ قليلا من الرسومات. 99 00:06:14,420 --> 00:06:18,260 لذلك كنت على الارجح هذه الأشياء أمرا مفروغا منه، متحركة، وملفات JPEG مثل هذه الأيام، 100 00:06:18,260 --> 00:06:21,640 ولكن إذا كنت تعتقد حقا عن ذلك، صورة، يشبه إلى حد كبير وجه روب، 101 00:06:21,640 --> 00:06:24,430 يمكن غرار كتسلسل من النقاط، أو بكسل. 102 00:06:24,430 --> 00:06:26,680 الآن، في حالة مواجهة روب، وهناك كل أنواع من الألوان، 103 00:06:26,680 --> 00:06:29,940 وبدأنا في رؤية النقاط الفردية، والمعروف otherwide كما بكسل، 104 00:06:29,940 --> 00:06:31,610 وبمجرد أن بدأت لتكبير. 105 00:06:31,610 --> 00:06:35,590 ولكن إذا كنا تبسيط العالم قليلا، وأقول أن هذا هو روب هنا 106 00:06:35,590 --> 00:06:40,560 بالأسود والأبيض، الأسود بشكل جيد لتمثيل، والأبيض فقط يمكننا استخدام ثنائي. 107 00:06:40,560 --> 00:06:44,960 وإذا كنا في طريقنا للاستخدام ثنائي، 1 أو 0، يمكننا التعبير عن هذه الصورة نفسها 108 00:06:44,960 --> 00:06:51,970 من وجه يبتسم مع روب لهذا النمط من البتات: 11000011 يمثل 109 00:06:51,970 --> 00:06:55,160 أبيض، أبيض، أسود، أسود، أسود، أسود، أبيض. 110 00:06:55,160 --> 00:06:59,290 وحتى انها ليست قفزة هائلة، بعد ذلك، أن نبدأ الحديث عن الصور الملونة. 111 00:06:59,290 --> 00:07:01,920 الأشياء التي كنت انظر في الفيسبوك أو اتخاذ مع كاميرا رقمية، 112 00:07:01,920 --> 00:07:04,730 ولكن، بالتأكيد، عندما يتعلق الأمر الألوان، تحتاج إلى أكثر بت. 113 00:07:04,730 --> 00:07:08,470 وشائع جدا في العالم من الصور هو استخدام غير 1 بت لون، 114 00:07:08,470 --> 00:07:12,730 لأن ذلك يوحي، ولكن ألوان 24 بت. حيث تحصل في الواقع الملايين من الألوان 115 00:07:12,730 --> 00:07:15,430 وذلك في حالة عندما كنا أسرع في العين على روب، 116 00:07:15,430 --> 00:07:19,270 هو أن أي عدد من الملايين من الاحتمالات الملونة المختلفة. 117 00:07:19,270 --> 00:07:22,260 >> وهكذا لن نقدم هذه المشكلة في مجموعة ال 4 كما كذلك في معاينة، 118 00:07:22,260 --> 00:07:27,050 والتي ستكون اليوم فى الساعة 3:30 بدلا من 2:30 المعتاد بسبب محاضرة يوم الجمعة هنا. 119 00:07:27,050 --> 00:07:29,930 ولكن سوف يكون الفيديو على الانترنت، كالعادة، غدا. 120 00:07:29,930 --> 00:07:31,880 سوف نقدم لك أيضا لتنسيق ملف آخر. 121 00:07:31,880 --> 00:07:34,150 ذلك هو المقصود عمدا هذا أن ننظر في البداية تخويف، 122 00:07:34,150 --> 00:07:38,980 ولكن هذا هو فقط بعض الوثائق عن البنية C. 123 00:07:38,980 --> 00:07:42,280 تبين أن مايكروسوفت، منذ سنوات، ساعد تعميم هذه الصيغة، 124 00:07:42,280 --> 00:07:46,630 دعا تنسيق ملف الصورة النقطية، BMP، وكان هذا فائقة بسيطة، 125 00:07:46,630 --> 00:07:50,390 تنسيق ملف رسومي الملونة التي استخدمت لبعض الوقت 126 00:07:50,390 --> 00:07:53,640 وأحيانا لا تزال خلفيات على سطح المكتب. 127 00:07:53,640 --> 00:07:57,410 إذا كنت تعتقد مرة أخرى إلى ويندوز XP والتلال والسماء الزرقاء، 128 00:07:57,410 --> 00:08:00,660 كان ذلك عادة BMP، أو صورة نقطية، والصور النقطية 129 00:08:00,660 --> 00:08:03,340 هي متعة بالنسبة لنا لأن لديهم تعقيد أكثر قليلا. 130 00:08:03,340 --> 00:08:05,640 انها ليست بهذه البساطة تماما هذه الشبكة من ل0 و في 1؛ 131 00:08:05,640 --> 00:08:10,680 بدلا من ذلك، لديك أشياء مثل رأس في بداية ملف. 132 00:08:10,680 --> 00:08:15,520 لذلك وبعبارة أخرى، داخل ملف BMP. هو في مجمله مجموعة من 0 و ل1، 133 00:08:15,520 --> 00:08:18,070 ولكن هناك بعض إضافية 0 هذا و 1 في هناك. 134 00:08:18,070 --> 00:08:21,450 واتضح أن ما اتخذنا من المسلمات ربما لسنوات، 135 00:08:21,450 --> 00:08:27,040 تنسيقات الملفات مثل. doc أو. XLS أو MP3. أو mp4.، 136 00:08:27,040 --> 00:08:29,910 ما تنسيقات الملفات التي كنت على دراية. 137 00:08:29,910 --> 00:08:31,900 حسنا، ما الذي يعنيه حتى أن يكون تنسيق الملف؟ 138 00:08:31,900 --> 00:08:35,740 لأنه في نهاية اليوم، فإن كل هذه الملفات التي نستخدمها يكون مجرد 0 هذا ولل1 139 00:08:35,740 --> 00:08:39,950 وربما تلك 0 هذا وتمثل ل1، ب، ج، من خلال ASCII أو ما شابه ذلك، 140 00:08:39,950 --> 00:08:42,030 ولكن من خلال نهاية اليوم، انها مجرد ل0 و 1. 141 00:08:42,030 --> 00:08:45,300 >> حتى البشر فقط تقرر أحيانا لابتكار شكل ملف جديد 142 00:08:45,300 --> 00:08:49,420 حيث توحيد أنماط من البتات ما يعني في الواقع. 143 00:08:49,420 --> 00:08:52,790 وهنا في هذه الحالة، والناس الذين تصميم تنسيق ملف الصورة النقطية 144 00:08:52,790 --> 00:08:58,260 وقال أنه في البايت الأول جدا في ملف الصورة النقطية، تدل على النحو الذي الإزاحة 0، هناك، 145 00:08:58,260 --> 00:09:02,320 هناك سيكون بعض متغير اسمه بشكل غامض يسمى bfType، 146 00:09:02,320 --> 00:09:06,510 الذي يقف فقط لنوع ملف الصورة النقطية؛ نوع ملف الصورة النقطية هذا. 147 00:09:06,510 --> 00:09:10,780 يمكنك الاستدلال، ربما، من الصف الثاني الذي يقابل 2، عدد البايت 2، 148 00:09:10,780 --> 00:09:15,980 لديه نمط لل0 و 1 والتي تمثل في ماذا؟ 149 00:09:15,980 --> 00:09:18,320 حجم شيء، وغني من هناك. 150 00:09:18,320 --> 00:09:20,660 حتى في مجموعة مكونة المشكلة 4، وسوف يكون مشى لكم من خلال بعض من هذه الأمور. 151 00:09:20,660 --> 00:09:24,480 >> نحن لن ينتهي مبالين كل منهم، ولكن لاحظت أنه يبدأ للحصول على اهتمام 152 00:09:24,480 --> 00:09:30,780 أو حول خط بايت 54، rgbtBlue، الأخضر والأحمر. 153 00:09:30,780 --> 00:09:35,280 إذا كنت قد سمعت من أي وقت مضى اختصار RGB، أحمر أخضر أزرق، وهذا هو إشارة إلى ذلك. 154 00:09:35,280 --> 00:09:37,840 لأنه تبين يمكنك طلاء جميع ألوان قوس قزح 155 00:09:37,840 --> 00:09:41,580 مع مزيج من الأحمر والأزرق والأخضر. 156 00:09:41,580 --> 00:09:46,560 و، في الواقع، قد والدي في غرفة نذكر بعض من أقرب العرض. 157 00:09:46,560 --> 00:09:49,360 في هذه الأيام، ترى الضوء الساطع فقط 1 الخروج من العدسة. 158 00:09:49,360 --> 00:09:52,870 ولكن مرة في اليوم، كان عليك العدسة الأحمر، والأزرق عدسة، والعدسة الخضراء 159 00:09:52,870 --> 00:09:56,620 وتهدف معا في شاشة وشكلت صورة ملونة. 160 00:09:56,620 --> 00:09:59,590 وغالبا ما سيكون المدارس المتوسطة والمدارس الثانوية لديهم تلك العدسات 161 00:09:59,590 --> 00:10:02,680 دائما ما منحرف قليلا، لذلك كنت نوع من رؤية الصور ضعفين أو ثلاثة أضعاف، 162 00:10:02,680 --> 00:10:07,500 لكن ذلك كان على هذه الفكرة. هل كان لديك الضوء الأحمر والأخضر والأزرق رسم صورة. 163 00:10:07,500 --> 00:10:09,570 ويستخدم هذا المبدأ نفسه في أجهزة الكمبيوتر. 164 00:10:09,570 --> 00:10:12,000 >> لذلك من بين التحديات، ثم، لأنك في مشكلة حددت 4 165 00:10:12,000 --> 00:10:16,080 ستكون بضعة أشياء، واحد هو في الواقع لتغيير حجم الصورة. 166 00:10:16,080 --> 00:10:18,050 لتأخذ في وجود نمط من ل0 و ل1، 167 00:10:18,050 --> 00:10:22,840 معرفة أي أجزاء من ل0 و 1 لتمثل ما في بنية مثل هذا، 168 00:10:22,840 --> 00:10:26,800 وثم معرفة كيفية تكرار بكسل: ليفربول، والبلوز، والخضر 169 00:10:26,800 --> 00:10:32,460 داخل بحيث عندما صورة يبدو مثل هذا في البداية، قد تبدو هذه بدلا بعد ذلك. 170 00:10:32,460 --> 00:10:35,590 ومن بين التحديات الأخرى أيضا، والى ان يحدث ذلك سوف يتم تسليم لك 171 00:10:35,590 --> 00:10:38,900 صورة من ملف الطب الشرعي الفعلي من كاميرا رقمية 172 00:10:38,900 --> 00:10:42,410 وعلى هذا الكاميرا، ذات مرة، كان في مجمله مجموعة من الصور. 173 00:10:42,410 --> 00:10:47,030 و، المشكلة أننا تمحى بطريق الخطأ أو كان صورة تلف بطريقة ما. 174 00:10:47,030 --> 00:10:51,040 تحدث أمور سيئة مع الكاميرات الرقمية، ونسخ بسرعة حتى نتمكن جميعا من ل0 و 1 في 175 00:10:51,040 --> 00:10:55,410 الخروج من تلك البطاقة لك، حفظ كل منهم في 1 ملف كبير، ومن ثم سنقوم تسليمها لك 176 00:10:55,410 --> 00:11:00,000 المشكلة في مجموعة 4 بحيث يمكنك كتابة برنامج C التي في لاسترداد 177 00:11:00,000 --> 00:11:02,660 كل هذه ملفات JPEG، من الناحية المثالية. 178 00:11:02,660 --> 00:11:06,280 واتضح أن ملفات JPEG، على الرغم من انهم نوعا من تنسيق ملف المعقدة، 179 00:11:06,280 --> 00:11:09,580 انهم أكثر تعقيدا من هذا الوجه المبتسم هنا. 180 00:11:09,580 --> 00:11:14,320 اتضح أن كل JPEG يبدأ من نفس الأنماط في 0 و 1. 181 00:11:14,320 --> 00:11:18,820 ذلك باستخدام حلقة الوقت أو لحلقة أو ما شابه ذلك، 182 00:11:18,820 --> 00:11:22,350 يمكنك تكرار عبر كل من و0 وعلى 1 في هذه الصورة الطب الشرعي 183 00:11:22,350 --> 00:11:26,670 وفي كل مرة تشاهد نمط خاص هذا ما يعرف في مواصفات مجموعة مشكلة من، 184 00:11:26,670 --> 00:11:29,770 يمكنك أن تفترض، "أوه، هنا، مع احتمال كبير جدا، 185 00:11:29,770 --> 00:11:33,520 بداية JPEG، 'وبمجرد العثور على النمط نفسه، 186 00:11:33,520 --> 00:11:36,050 بعض عدد وحدات البايت أو كيلو بايت أو ميغابايت في وقت لاحق، 187 00:11:36,050 --> 00:11:40,550 يمكنك أن تفترض، "أوه! وهنا لJPEG الثانية، الصورة أخذت بعد أول واحد. 188 00:11:40,550 --> 00:11:44,720 اسمحوا لي أن تتوقف عن قراءة هذا الملف أولا، البدء في كتابة هذا واحد جديد ". 189 00:11:44,720 --> 00:11:49,980 وخرج من البرنامج لpset 4 وستكون ما يصل الى 50 ملفات JPEG. 190 00:11:49,980 --> 00:11:52,400 واذا كان ليس 50 صور JPEG، لديك قليلا من حلقة. 191 00:11:52,400 --> 00:11:55,580 إذا كان لديك عدد لا حصر له من صور JPEG، لديك حلقة لا نهائية. 192 00:11:55,580 --> 00:11:58,280 بحيث، أيضا سوف يكون الى حد بعيد حالة شائعة. 193 00:11:58,280 --> 00:12:00,280 هذا ما يدور في الأفق. 194 00:12:00,280 --> 00:12:03,740 >> مسابقة 0، وراءنا. ندرك، في بريدي الإلكتروني، أن هناك دائما الناس 195 00:12:03,740 --> 00:12:06,820 وكلاهما سعيد، نوع من الحياد، وحزين حول مسابقة 0 الوقت. 196 00:12:06,820 --> 00:12:10,160 ونرجو التواصل مع لي، وTFS الرأس، Zamyla، TF الخاصة بك 197 00:12:10,160 --> 00:12:14,120 أو واحد من استراتيجية المساعدة القطرية أن تعرف إذا كنت ترغب في مناقشة كيف سارت الأمور. 198 00:12:14,120 --> 00:12:16,460 >> ذلك لإقناع والدي هنا في الغرفة، 199 00:12:16,460 --> 00:12:23,990 ما هي مكتبة CS50؟ عمل جيد. 200 00:12:23,990 --> 00:12:32,280 ما هي مكتبة CS50؟ نعم؟ [أجوبة الطلاب، غير مفهومة] 201 00:12:32,280 --> 00:12:35,730 حسنا >>، وحسن. لذلك فمن مجموعة مكتوب مسبقا من التعليمات البرمجية التي نحن، الموظفين، كتب، 202 00:12:35,730 --> 00:12:38,460 نحن نقدم لك، لتوفير بعض الوظائف المشتركة. 203 00:12:38,460 --> 00:12:42,290 أشياء مثل تفهموني سلسلة؛ تحصل لي الباحث، وكلها وظائف المسرودة هنا. 204 00:12:42,290 --> 00:12:45,260 بدءا من الآن، ونحن نبدأ في اتخاذ هذه حقا قبالة عجلات التدريب. 205 00:12:45,260 --> 00:12:48,230 لذلك نحن في طريقنا للبدء في اتخاذ بعيدا "السلسلة" من أنت، 206 00:12:48,230 --> 00:12:52,790 الذي كان، نذكر، مجرد مرادف لنوع البيانات الفعلية؟ تشار *. 207 00:12:52,790 --> 00:12:57,020 حتى بالنسبة للآباء، الذي كان على الأرجح - هذا امر جيد، لذلك سنقوم شار * تبدأ في رؤية 208 00:12:57,020 --> 00:13:00,810 على الشاشة مما يزيد من إزالة ونحن "سلسلة" من قاموسنا، 209 00:13:00,810 --> 00:13:02,760 على الأقل عندما يتعلق الأمر في الواقع كتابة التعليمات البرمجية. 210 00:13:02,760 --> 00:13:06,240 وبالمثل، فإننا سوف تتوقف عن استخدام بعض هذه الوظائف بقدر، 211 00:13:06,240 --> 00:13:08,390 لأن برامجنا بصدد الحصول على أكثر تعقيدا 212 00:13:08,390 --> 00:13:11,370 بدلا من مجرد كتابة البرامج التي تجلس هناك مع وامض الأوامر، 213 00:13:11,370 --> 00:13:13,580 انتظار المستخدم لكتابة شيء فيه. 214 00:13:13,580 --> 00:13:15,220 ستحصل على المدخلات الخاصة بك من أي مكان آخر. 215 00:13:15,220 --> 00:13:18,720 على سبيل المثال، سوف تحصل عليها من سلسلة من البتات على القرص الثابت المحلي. 216 00:13:18,720 --> 00:13:23,340 ستحصل بدلا من ذلك في المستقبل من اتصال الشبكة، بعض المواقع في مكان ما. 217 00:13:23,340 --> 00:13:27,460 لذلك دعونا قشر الطبقة مرة أخرى هذه لأول مرة، وسحب ما يصل الجهاز CS50 218 00:13:27,460 --> 00:13:32,300 وهذا ملف يسمى CS50.h، والتي كنت قد تم حادة بما في ذلك لعدة اسابيع. 219 00:13:32,300 --> 00:13:34,380 >> ولكن دعونا نرى ما هو في الواقع داخل هذا. 220 00:13:34,380 --> 00:13:38,250 حتى الجزء العلوي من الملف باللون الأزرق هو فقط في مجمله مجموعة من التعليقات، 221 00:13:38,250 --> 00:13:41,340 معلومات الضمان والترخيص. هذا هو نوع من نموذج المشتركة 222 00:13:41,340 --> 00:13:44,600 في مجال البرمجيات، وذلك لأن الكثير من البرامج في هذه الأيام هو ما يسمى "المصدر المفتوح" 223 00:13:44,600 --> 00:13:46,940 وهو ما يعني أن شخصا ما قد كتابة التعليمات البرمجية 224 00:13:46,940 --> 00:13:50,060 وإتاحتها بحرية، وليس فقط لتشغيل واستخدام ل، 225 00:13:50,060 --> 00:13:53,660 ولكن قراءة الواقع وتغيير والاندماج في عملك الخاص. 226 00:13:53,660 --> 00:13:55,790 بحيث ما كنت تستخدم، البرمجيات مفتوحة المصدر، 227 00:13:55,790 --> 00:13:58,030 وإن كان ذلك في شكل صغير جدا. 228 00:13:58,030 --> 00:14:01,860 إذا كنت انتقل لأسفل الماضية التعليقات، رغم ذلك، سوف نبدأ في رؤية بعض الأشياء أكثر ألفة. 229 00:14:01,860 --> 00:14:08,090 لاحظت ذلك في الجزء العلوي هنا، أن الملف يتضمن CS50.h في مجمله مجموعة من الملفات رأس. 230 00:14:08,090 --> 00:14:11,160 الآن، فإن معظم هذه لم نر من قبل، ولكن هي واحدة 231 00:14:11,160 --> 00:14:15,640 مألوفة؛ أي من هذه شهدنا، ولو لفترة وجيزة، حتى الآن؟ 232 00:14:15,640 --> 00:14:18,720 نعم، والمكتبات القياسية. Stdlib.h ديه malloc، 233 00:14:18,720 --> 00:14:21,590 لذلك بدأت مرة واحدة ونحن نتحدث عن تخصيص ذاكرة ديناميكية، 234 00:14:21,590 --> 00:14:24,960 بدأنا ونحن سوف نعود إلى الأسبوع المقبل أيضا، بما في ذلك الملف. 235 00:14:24,960 --> 00:14:29,660 تبين أن BOOL والصواب والخطأ لا وجود لها في الواقع في C، في حد ذاتها، 236 00:14:29,660 --> 00:14:32,460 إلا إذا كنت تضمين هذا الملف هنا. 237 00:14:32,460 --> 00:14:35,770 لذلك لدينا، لأسابيع، بما في ذلك معيار تم bool.h 238 00:14:35,770 --> 00:14:39,020 بحيث يمكنك استخدام فكرة. BOOL، صحيحة أو خاطئة 239 00:14:39,020 --> 00:14:41,830 من دون ذلك، سيكون لديك لفرز من أنها وهمية واستخدام الباحث 240 00:14:41,830 --> 00:14:45,920 وتفترض فقط تعسفا أن 0 و 1 هو زائف هو الصحيح. 241 00:14:45,920 --> 00:14:49,980 >> الآن، إذا كان لنا أن انتقل لأسفل أخرى، هي هنا تعريفنا للسلسلة. 242 00:14:49,980 --> 00:14:54,820 كما تبين، كما قلنا من قبل، أن هذا حيث هو * لا يهم حقا. 243 00:14:54,820 --> 00:14:56,750 هل يمكن أن يكون حتى الفضاء في كل مكان. 244 00:14:56,750 --> 00:15:01,550 لقد تم، في هذا الفصل الدراسي، وتعزيز هذه على أنها لتوضيح أن * له علاقة مع نوع. 245 00:15:01,550 --> 00:15:05,370 ولكن ندرك، مجرد شائعة، إن لم يكن قليلا أكثر شيوعا، هي وضعه هناك 246 00:15:05,370 --> 00:15:07,480 ولكن وظيفيا انها نفس الشيء. 247 00:15:07,480 --> 00:15:11,070 ولكن الآن، إذا قرأنا إلى مزيد من الانخفاض، دعونا نلقي نظرة على القول، GetInt، 248 00:15:11,070 --> 00:15:15,350 لأن استخدمنا ذلك، ربما، قبل أي شيء آخر في هذا الفصل الدراسي. 249 00:15:15,350 --> 00:15:19,620 وهنا GetInt. هذا ما هو؟ 250 00:15:19,620 --> 00:15:24,650 هذا هو النموذج. في كثير من الأحيان، وقد وضعنا نماذج على قمم لدينا. ج الملفات، 251 00:15:24,650 --> 00:15:28,190 ولكن يمكنك أيضا وضع نماذج في ملفات الرأس، ملفات ساعة، 252 00:15:28,190 --> 00:15:32,110 هذا مثل واحد هنا، حتى عند كتابة بعض الوظائف 253 00:15:32,110 --> 00:15:36,790 التي تريد الآخرين لتكون قادرة على استخدامها، وهذا بالضبط هو الحال مع مكتبة CS50، 254 00:15:36,790 --> 00:15:40,900 لكم ليس فقط تنفيذ المهام الخاصة بك في شيء من هذا القبيل CS50.c، 255 00:15:40,900 --> 00:15:46,720 كنت وضعت أيضا نماذج لا في الجزء العلوي من هذا الملف، ولكن في الجزء العلوي من ملف الرأس، 256 00:15:46,720 --> 00:15:50,810 ثم أن ملف الرأس هو ما تشمل الأصدقاء والزملاء، 257 00:15:50,810 --> 00:15:52,800 مع حادة تدرج في مدونة خاصة بها. 258 00:15:52,800 --> 00:15:55,440 لذلك كل هذا الوقت كنت قد تم بما في ذلك جميع هذه النماذج 259 00:15:55,440 --> 00:15:59,870 فعال في الجزء العلوي من الملف الخاص بك، ولكن عن طريق هذه الآلية تشمل حادة 260 00:15:59,870 --> 00:16:03,320 أن النسخ أساسا والمعاجين هذا الملف إلى الخاصة بك. 261 00:16:03,320 --> 00:16:06,400 الآن، وهنا بعض وثائق مفصلة إلى حد ما. 262 00:16:06,400 --> 00:16:08,880 >> لدينا الى حد كبير أمرا مفروغا منه أن يحصل على GetInt الباحث، 263 00:16:08,880 --> 00:16:10,740 ولكن تبين أن هناك بعض الحالات الزاوية، أليس كذلك؟ 264 00:16:10,740 --> 00:16:14,320 ما إذا كان المستخدم أنواع في عدد هذا الطريق أكبر من اللازم؟ 265 00:16:14,320 --> 00:16:17,350 A كوينتيليون، التي لا يمكن أن تناسب داخل لكثافة العمليات؟ 266 00:16:17,350 --> 00:16:21,180 ما هو السلوك المتوقع؟ حسنا، من الناحية المثالية، انها يمكن التنبؤ بها. 267 00:16:21,180 --> 00:16:23,460 حتى في هذه الحالة، إذا كنت تقرأ الواقع غرامة المطبوعة، 268 00:16:23,460 --> 00:16:27,850 سترى أن إذا لا يمكن قراءة الخط، وهذا INT_MAX العودة. 269 00:16:27,850 --> 00:16:30,800 لقد تحدثت عن هذا أبدا، ولكن على أساس قيمته السوقية، 270 00:16:30,800 --> 00:16:33,030 ما هو عليه، ربما؟ 271 00:16:33,030 --> 00:16:36,610 انها ثابتة، لذلك فمن بعض مستمر خاصة أن أعلن ربما 272 00:16:36,610 --> 00:16:39,460 في واحدة من تلك الملفات رأس متروك أعلى في الملف، 273 00:16:39,460 --> 00:16:43,400 وINT_MAX وربما شيء من هذا القبيل، ما يقرب من (2) مليار دولار. 274 00:16:43,400 --> 00:16:48,160 ذهب الفكرة هي أن لأننا في حاجة للدلالة على نحو ما أن شيئا ما خطأ، 275 00:16:48,160 --> 00:16:51,090 ونحن، نعم، لقد 4000000000 أرقام المتوفرة لدينا، 276 00:16:51,090 --> 00:16:53,980 سلبي 2 مليار جنيه على لتصل إلى 2 مليار دولار، يعطي أو يأخذ. 277 00:16:53,980 --> 00:16:58,030 حسنا، ما هو مشترك في مجال البرمجة هو أنت فقط سرقة واحدة من تلك الأرقام. 278 00:16:58,030 --> 00:17:02,250 ربما 0، 2 مليار ربما، وربما السلبية 2 مليار دولار. 279 00:17:02,250 --> 00:17:06,720 لذلك أنت تنفق واحدة من القيم الخاصة بك ممكن حتى تتمكن من الالتزام العالم 280 00:17:06,720 --> 00:17:10,089 أنه إذا ما سارت الأمور بشكل خاطئ، وسأعود هذه القيمة الفائقة كبيرة. 281 00:17:10,089 --> 00:17:13,329 ولكنك لا تريد أن يقوم المستخدم بكتابة شيء خفي مثل "3، 2، 4 ..." 282 00:17:13,329 --> 00:17:17,079 من عدد كبير حقا، حيث يمكنك بدلا من ذلك التعميم ثابت. 283 00:17:17,079 --> 00:17:19,380 ذلك حقا، إذا كنت يجري الشرج الأسابيع القليلة الماضية، 284 00:17:19,380 --> 00:17:23,800 استدعاء في أي وقت GetInt، كان ينبغي لك التحقق مع حالة إذا. 285 00:17:23,800 --> 00:17:27,109 فعل نوع المستخدم في INT_MAX، أو بشكل أكثر تحديدا، 286 00:17:27,109 --> 00:17:29,900 لم GetInt INT_MAX العودة؟ لأنه إذا فعل ذلك، 287 00:17:29,900 --> 00:17:35,140 وهذا يعني في الواقع أنهم لم اكتبه؛ حدث خطأ ما في هذه القضية. 288 00:17:35,140 --> 00:17:38,970 لذلك هذا هو ما يعرف عموما كقيمة "الحارس"، الأمر الذي يعني فقط خاصة. 289 00:17:38,970 --> 00:17:41,020 >> حسنا، دعونا ننتقل الآن إلى الملفات ج. 290 00:17:41,020 --> 00:17:44,500 وقد وجدت الملف C في الجهاز لبعض الوقت، 291 00:17:44,500 --> 00:17:47,540 و، في الواقع، والأجهزة فقد المترجمة مسبقا لك 292 00:17:47,540 --> 00:17:49,720 في هذا الشيء يسمى نحن "رمز الكائن،" 293 00:17:49,720 --> 00:17:52,940 ولكن فقط لا يهم أين لك فذلك لأن النظام يعرف، 294 00:17:52,940 --> 00:17:54,780 في هذه الحالة، حيث أنه، والأجهزة. 295 00:17:54,780 --> 00:18:00,620 ولكن دعونا الآن انتقل لأسفل إلى GetInt، ونرى كيف GetInt تعمل كل هذا الوقت. 296 00:18:00,620 --> 00:18:02,380 حتى هنا لدينا بتصريحات مماثلة من قبل. 297 00:18:02,380 --> 00:18:04,930 اسمحوا لي أن التكبير في جزء فقط قانون، 298 00:18:04,930 --> 00:18:07,410 وما لدينا لGetInt هو ما يلي. 299 00:18:07,410 --> 00:18:12,770 وهو لا يأخذ المدخلات وتقوم بإرجاع عدد صحيح، في حين أن (صحيح)، لذلك لدينا حلقة لانهائية المتعمد 300 00:18:12,770 --> 00:18:16,560 ولكن، من المفترض، سنقوم الخروج من هذا بطريقة أو بأخرى، أو العودة من خلال ذلك. 301 00:18:16,560 --> 00:18:19,890 لذلك دعونا نرى كيف يعمل هذا. حسنا، يبدو أننا باستخدام GetString 302 00:18:19,890 --> 00:18:22,550 في هذا السطر الأول داخل الحلقة، 166. 303 00:18:22,550 --> 00:18:25,320 هذا هو الآن بسبب الممارسات الجيدة تحت أي ظروف 304 00:18:25,320 --> 00:18:30,820 يمكن إرجاع هذا GetString خاصة الكلمات الرئيسية، NULL؟ 305 00:18:30,820 --> 00:18:38,460 إذا حدث خطأ ما. ما الذي يمكن أن تذهب الخطأ عند استدعاء شيء من هذا القبيل GetString؟ 306 00:18:38,460 --> 00:18:42,550 نعم؟ [الجواب طالبة، غير مفهومة] >> نعم. لذلك ربما malloc فشل. 307 00:18:42,550 --> 00:18:45,310 في مكان ما تحت غطاء محرك السيارة GetString تدعو malloc، 308 00:18:45,310 --> 00:18:48,210 الذي يخصص الذاكرة، والتي تتيح مخزن الكمبيوتر 309 00:18:48,210 --> 00:18:50,950 جميع الشخصيات التي يقوم المستخدم بكتابة إلى لوحة المفاتيح. 310 00:18:50,950 --> 00:18:53,270 وافترض أن المستخدم لديه الكثير من وقت الفراغ 311 00:18:53,270 --> 00:18:56,470 وكتبت أكثر من ذلك، على سبيل المثال، من 2 مليار حرفا. 312 00:18:56,470 --> 00:18:59,600 المزيد من الحروف من الكمبيوتر حتى RAM. 313 00:18:59,600 --> 00:19:02,350 حسنا، GetString أن تكون قادرة على أن دلالة لك، 314 00:19:02,350 --> 00:19:05,650 حتى لو كان هذا هو سوبر سوبر حالة الزاوية المألوف. 315 00:19:05,650 --> 00:19:08,490 يجب أن يكون بطريقة أو بأخرى قادرة على التعامل مع هذا الأمر، وذلك GetString، 316 00:19:08,490 --> 00:19:11,850 إذا كان لنا أن نعود ونقرأ الوثائق الخاصة به، لا، في الواقع، والعودة NULL. 317 00:19:11,850 --> 00:19:16,150 إذا فشل GetString الآن من خلال العودة NULL، GetInt سوف تفشل 318 00:19:16,150 --> 00:19:19,370 من خلال العودة INT_MAX، تماما كما الحارس. 319 00:19:19,370 --> 00:19:22,650 هذه هي الاتفاقيات فقط الإنسان. الطريق الوحيد الذي يمكن ان نعرف هذا هو الحال 320 00:19:22,650 --> 00:19:24,840 هو من خلال قراءة الوثائق. 321 00:19:24,840 --> 00:19:28,200 لذلك دعونا انتقل لأسفل إلى حيث كثافة العمليات هو في الواقع GotInt. 322 00:19:28,200 --> 00:19:34,220 >> حتى لو كنت انتقل لأسفل قليلا كذلك، في خط لدينا 170 تعليقا فوق هذه الخطوط. 323 00:19:34,220 --> 00:19:38,470 لذلك فإننا نعلن، في 172، وكثافة العمليات ن ج وشار، ثم هذه الدالة الجديدة 324 00:19:38,470 --> 00:19:41,870 التي قد تعثرت عبر بعض منكم من قبل، ولكن sscanf. 325 00:19:41,870 --> 00:19:44,190 هذا و لتقف على المسح سلسلة. 326 00:19:44,190 --> 00:19:48,580 وبعبارة أخرى، أعطني سلسلة وسوف مسحها ضوئيا عن قطعة من المعلومات التي تهم. 327 00:19:48,580 --> 00:19:53,820 فماذا يعني ذلك؟ حسنا، لنفترض أنني اكتب في، حرفيا، 1 2 3 على لوحة المفاتيح، 328 00:19:53,820 --> 00:19:59,730 وضرب ثم أدخل. ما هو نوع البيانات من 3 2 1 عندما عاد من GetString؟ 329 00:19:59,730 --> 00:20:05,010 من الواضح أن سلسلة، أليس كذلك؟ حصلت على سلسلة، لذلك 1 2 3 هو حقا "1 2 3" 330 00:20:05,010 --> 00:20:07,260 مع 0 \ في نهاية ذلك. هذا ليس صحيح. 331 00:20:07,260 --> 00:20:10,420 هذا ليس عددا. يبدو عددا ولكنها ليست في الواقع. 332 00:20:10,420 --> 00:20:14,680 فماذا يجب أن نفعل GetInt؟ عليها أن تفحص هذه السلسلة من اليسار إلى اليمين، 333 00:20:14,680 --> 00:20:19,010 1 2 3 \ 0، وعلى نحو ما تحويله إلى عدد صحيح الفعلية. 334 00:20:19,010 --> 00:20:21,010 الآن، هل يمكن معرفة كيفية القيام بذلك. 335 00:20:21,010 --> 00:20:24,240 إذا كنت تعتقد مرة أخرى إلى pset 2، يفترض أنك حصلت قليلا مريحة 336 00:20:24,240 --> 00:20:26,810 مع قيصر أو vigenere حتى تتمكن من تكرار عبر سلسلة، 337 00:20:26,810 --> 00:20:29,800 يمكنك تحويل حرف إلى رجات مع الاختيار. وهذا هو الكثير من العمل. 338 00:20:29,800 --> 00:20:32,800 لماذا لا استدعاء دالة مثل sscanf أن يفعل ذلك بالنسبة لك؟ 339 00:20:32,800 --> 00:20:37,520 لذلك تتوقع sscanf حجة، في هذه الحالة يسمى الخط، الذي هو سلسلة. 340 00:20:37,520 --> 00:20:41,310 ثم قمت بتحديد، تهمك، مشابهة جدا إلى printf، 341 00:20:41,310 --> 00:20:44,960 ماذا تتوقع أن نرى في هذه السلسلة؟ 342 00:20:44,960 --> 00:20:52,980 ما أقوله هنا هو، أتوقع أن نرى رقم عشري وربما حرف. 343 00:20:52,980 --> 00:20:54,990 وسنرى لماذا هذا هو الحال في لحظة واحدة. 344 00:20:54,990 --> 00:20:58,440 وتبين أن هذا التدوين الآن تذكر الاشياء 345 00:20:58,440 --> 00:21:00,840 بدأنا نتحدث عن ما يزيد قليلا على اسبوع. 346 00:21:00,840 --> 00:21:05,430 >> ما هو & N & C والقيام بالنسبة لنا هنا؟ [أجوبة الطلاب، غير مفهومة] 347 00:21:05,430 --> 00:21:07,610 نعم >>. انها إعطائي عنوان وعنوان ن ج. 348 00:21:07,610 --> 00:21:10,440 الآن، لماذا هو مهم؟ حسنا، أنت تعرف أن لها وظائف في C 349 00:21:10,440 --> 00:21:13,440 يمكنك دائما العودة قيمة أو قيمة على الإطلاق. 350 00:21:13,440 --> 00:21:16,630 يمكنك العودة إلى الباحث، وسلسلة، طوف، وشار، أيا كان. 351 00:21:16,630 --> 00:21:21,150 أو يمكنك العودة باطلة، ولكن يمكنك العودة شيء سوى 1 الحد الأقصى. 352 00:21:21,150 --> 00:21:26,100 ولكن هنا نريد sscanf للعودة إلى الباحث لي ربما، رقم عشري، 353 00:21:26,100 --> 00:21:29,240 وأيضا. شار، وساوضح لماذا في لحظة شار 354 00:21:29,240 --> 00:21:34,250 لذلك كنت ترغب في العودة بشكل فعال و 2 الأشياء، وهذا هو فقط غير ممكن في C. 355 00:21:34,250 --> 00:21:38,460 لذلك يمكنك أن تغلب على ذلك بتمرير عناوين في 2، 356 00:21:38,460 --> 00:21:43,710 لأن بمجرد تسليم وظيفة 2 يتصدى ل، ماذا يمكن أن تفعل وظيفة معهم؟ 357 00:21:43,710 --> 00:21:49,880 يمكن أن تكتب إلى تلك العناوين. يمكنك استخدام العملية * و"الذهاب إلى هناك" إلى كل من هذه العناوين. 358 00:21:49,880 --> 00:21:54,320 انها نوع من هذه الآلية مستتر، ولكن شائع جدا لتغيير قيم المتغيرات 359 00:21:54,320 --> 00:21:58,020 في أكثر من مجرد 1 مكان، في هذه الحالة 2. 360 00:21:58,020 --> 00:22:04,590 الآن، لاحظ أنا التحقق من وجود == to1، ومن ثم العودة ن إذا كان ذلك لا، في الواقع، تقييم إلى true. 361 00:22:04,590 --> 00:22:09,340 فما الذي يحدث؟ حسنا، من الناحية الفنية، كل ما نريده حقا أن يحدث في GetInt هو هذا. 362 00:22:09,340 --> 00:22:12,340 نريد تحليل، إذا جاز التعبير، ونحن نريد لقراءة السلسلة 363 00:22:12,340 --> 00:22:16,210 "1 2 3" وإذا كان يبدو أن هناك عددا هناك، 364 00:22:16,210 --> 00:22:21,360 ما نحن نقول sscanf القيام به هو وضع هذا الرقم، 1 2 3، في هذا المتغير ن بالنسبة لي. 365 00:22:21,360 --> 00:22:26,060 لماذا، إذن، وقد فعلت ذلك أيضا؟ 366 00:22:26,060 --> 00:22:33,750 ما هو دور أيضا قائلا، sscanf، قد تحصل أيضا على حرف هنا. 367 00:22:33,750 --> 00:22:36,890 [تحدث الطالب، غير مفهومة] >> غير - نقطة العشرية يمكن أن تعمل. 368 00:22:36,890 --> 00:22:40,650 دعونا نرى أن يعتقد للحظة واحدة. وماذا ايضا؟ 369 00:22:40,650 --> 00:22:42,570 [طالبة، غير مفهومة] >> لذا، فكر جيدا، يمكن أن يكون الحرف NULL. 370 00:22:42,570 --> 00:22:44,970 انها في الواقع ليست، في هذه الحالة. نعم؟ [طالبة، غير مفهومة] 371 00:22:44,970 --> 00:22:47,100 >> ASCII >>. أو، اسمحوا لي أن التعميم إلى أبعد من ذلك. 372 00:22:47,100 --> 00:22:49,670 ج هناك فقط٪ لتدقيق الأخطاء. 373 00:22:49,670 --> 00:22:52,510 نحن لا نريد أن يكون هناك حرف بعد الرقم، 374 00:22:52,510 --> 00:22:54,980 ولكن ما هذا يتيح لي القيام به هو ما يلي: 375 00:22:54,980 --> 00:23:01,270 تبين أن sscanf، إلى جانب تخزين القيم في ن ج و، في هذا المثال هنا، 376 00:23:01,270 --> 00:23:08,170 ما هو أيضا لا تقوم بإرجاع عدد من المتغيرات وضعه القيم فيها. 377 00:23:08,170 --> 00:23:13,330 حتى إذا كنت اكتب فقط في 3 2 1، عندها فقط سوف د٪ لمطابقة 378 00:23:13,330 --> 00:23:18,830 وفقط يحصل على تخزين N بقيمة مثل 3 2 1 ويحصل على وضع شيء في ج؛ 379 00:23:18,830 --> 00:23:20,870 ج تبقى قيمة القمامة، إذا جاز التعبير. 380 00:23:20,870 --> 00:23:23,550 القمامة لأنه لم يكن يوما تهيئة لأن بعض القيمة. 381 00:23:23,550 --> 00:23:29,390 حتى في هذه الحالة، sscanf بإرجاع 1، لأنني بالسكان واحدة من تلك المؤشرات، 382 00:23:29,390 --> 00:23:33,650 وفي هذه الحالة، عظيم. لدي الباحث، ولذا فإنني تحرير خط لتحرير الذاكرة 383 00:23:33,650 --> 00:23:37,150 أن GetString المخصصة في الواقع، ومن ثم أعود ن. 384 00:23:37,150 --> 00:23:42,210 آخر، إذا لك أن تساءلت حيث أن إعادة المحاولة البيان يأتي من يأتي من هنا. 385 00:23:42,210 --> 00:23:45,770 إذا، على النقيض من ذلك، اكتب I فى 1 2 3 فو، 386 00:23:45,770 --> 00:23:48,640 فقط بعض تسلسل عشوائي من النص، sscanf سوف نرى، 387 00:23:48,640 --> 00:23:51,500 أوه، العدد، أوه، العدد، أوه، العدد، أوه - و. 388 00:23:51,500 --> 00:23:54,190 وانه سيكون لوضع 1 2 3 في ن. 389 00:23:54,190 --> 00:23:59,970 انه سيكون لوضع و في ج، ومن ثم العودة 2. 390 00:23:59,970 --> 00:24:02,980 لذلك لدينا، فقط باستخدام التعريف الأساسي للسلوك scanf ل، 391 00:24:02,980 --> 00:24:06,170 طريقة بسيطة جدا - حسنا، معقدة للوهلة الأولى، ولكن في نهاية اليوم، 392 00:24:06,170 --> 00:24:11,460 آلية بسيطة نسبيا من القول، هل هناك كثافة العمليات، وإذا كان الأمر كذلك هو أن الشيء الوحيد الذي وجدت؟ 393 00:24:11,460 --> 00:24:14,950 والمساحة البيضاء هنا هو متعمد. إذا كنت تقرأ وثائق sscanf، 394 00:24:14,950 --> 00:24:18,690 فإنه يقول لك أنه إذا قمت بتضمين قطعة من المساحة البيضاء في بداية أو نهاية، 395 00:24:18,690 --> 00:24:24,990 sscanf سيسمح أيضا للمستخدم، لأي سبب كان، لتصل المسافة 1 2 3، والتي من شأنها أن تكون مشروعة. 396 00:24:24,990 --> 00:24:28,310 لن يصيح في المستخدم فقط لأنهم ضرب المسافة في بداية أو نهاية، 397 00:24:28,310 --> 00:24:32,160 وهو أكثر قليلا سهل الاستعمال. 398 00:24:32,160 --> 00:24:34,160 >> أي أسئلة، ثم على GetInts؟ نعم؟ 399 00:24:34,160 --> 00:24:36,820 [سؤال الطالب، غير مفهومة] 400 00:24:36,820 --> 00:24:40,740 سؤال جيد >>. ماذا لو قمت بكتابته في شار، مثل ضرب و و، أدخل 401 00:24:40,740 --> 00:24:47,830 دون كتابة أي وقت مضى 1 2 3؛ ما رأيك في سلوك هذا الخط من التعليمات البرمجية سيكون بعد ذلك؟ 402 00:24:47,830 --> 00:24:50,500 لذلك يمكن أن تغطي sscanf ذلك أيضا، لأنه في هذه الحالة، 403 00:24:50,500 --> 00:24:56,280 انها ليست الذهاب الى ملء ن أو جيم؛ انه سيكون العودة بدلا من ذلك 0. 404 00:24:56,280 --> 00:25:01,540 في هذه الحالة، وأنا أيضا اصطياد هذا السيناريو، لأن القيمة المتوقعة ما أريده هو 1. 405 00:25:01,540 --> 00:25:07,310 أريد فقط 1، والمراد شغلها شيء سوى 1. سؤال جيد. الآخرين؟ 406 00:25:07,310 --> 00:25:09,610 >> كل الحق، لذلك دعونا لا تذهب من خلال جميع وظائف هنا، 407 00:25:09,610 --> 00:25:11,820 لكن الذي يبدو أن، ربما، من الفائدة المتبقية 408 00:25:11,820 --> 00:25:14,530 وGetString لأنه تبين أن GetFloat، GetInt، 409 00:25:14,530 --> 00:25:19,490 GetDouble، GetLongLong جميع بونت الكثير من وظائفها لGetString. 410 00:25:19,490 --> 00:25:22,860 لذلك دعونا نلقي نظرة على كيفية تنفيذ انه هنا. 411 00:25:22,860 --> 00:25:27,040 هذا واحد يبدو معقدة بعض الشيء ولكنه يستخدم نفس الأسس 412 00:25:27,040 --> 00:25:29,680 اننا بدأنا نتحدث عن الأسبوع الماضي. حتى في GetString، 413 00:25:29,680 --> 00:25:32,670 الذي لا يأخذ حجة باطلة وفقا لتصل هنا، 414 00:25:32,670 --> 00:25:37,110 وتقوم بإرجاع سلسلة، لذا أنا معلنا سلسلة تسمى العازلة. 415 00:25:37,110 --> 00:25:39,670 لا أعرف حقا ما الذي يحدث لاستخدامها في ذلك، لكن سننتظر لنرى. 416 00:25:39,670 --> 00:25:42,950 تبدو مثل القدرات، بشكل افتراضي، 0؛ سنا متأكدين تماما حيث هذا هو ذاهب. 417 00:25:42,950 --> 00:25:44,920 غير متأكد ما يحدث ن لاستخدامها في حتى الان. 418 00:25:44,920 --> 00:25:47,860 ولكن الآن هو الحصول على أكثر من ذلك بقليل للاهتمام، وذلك في خط 243، 419 00:25:47,860 --> 00:25:51,760 نعلن لج كثافة العمليات، وهذا هو نوع من الغباء التفاصيل. 420 00:25:51,760 --> 00:25:58,080 A حرف هو 8 بت، ويمكن تخزين 8 بت عدد القيم المختلفة؟ 421 00:25:58,080 --> 00:26:03,310 256. المشكلة هي، إذا كنت تريد أن يكون 256 حرفا ASCII مختلفة، 422 00:26:03,310 --> 00:26:06,210 التي توجد فيها، إذا كنت تعتقد الظهر، وهذا ليس شيئا لتسجيل. 423 00:26:06,210 --> 00:26:09,100 ولكن إذا كنت تعتقد مرة أخرى إلى المخطط الذي ASCII كبيرة كان لدينا منذ أسابيع، 424 00:26:09,100 --> 00:26:13,780 كانت هناك، في هذه الحالة، 128 أو 256 حرفا ASCII. 425 00:26:13,780 --> 00:26:16,220 استخدمنا جميع أنماط من 0 و 1 متروك. 426 00:26:16,220 --> 00:26:19,410 هذا مشكلة إذا كنت تريد أن تكون قادرة على الكشف عن وجود خطأ. 427 00:26:19,410 --> 00:26:23,290 لأنه إذا كنت تستخدم بالفعل 256 قيمة لشخصياتك، 428 00:26:23,290 --> 00:26:26,390 هل حقا لا نخطط إلى الأمام، لأنه الآن لا يوجد لديك طريقة للقول، 429 00:26:26,390 --> 00:26:29,750 "هذه ليست ذات طابع شرعي، وهذا هو بعض رسالة خاطئة." 430 00:26:29,750 --> 00:26:32,430 وذلك ما يفعله هو العالم، فإنها تستخدم أكبر قيمة المقبل، 431 00:26:32,430 --> 00:26:35,790 شيء يشبه الباحث بحيث يكون لديك عدد من البتات مجنون، 432 00:26:35,790 --> 00:26:39,610 32 لمدة 4 مليار القيم الممكنة، بحيث يمكنك ببساطة وضع حد باستخدام، 433 00:26:39,610 --> 00:26:44,800 أساسا، 257 منهم (1)، التي لديها بعض معنى خاص وخطأ. 434 00:26:44,800 --> 00:26:49,190 >> لذلك دعونا نرى كيف يعمل هذا. في خط 246، لدي هذه الحلقة في حين كبيرة 435 00:26:49,190 --> 00:26:54,530 التي يتم استدعاء fgetc؛ و ملف معنى، getc، ثم ستدين. 436 00:26:54,530 --> 00:26:59,030 تبين هذه هو مجرد وسيلة أكثر دقة من قوله "قراءة المدخلات من لوحة المفاتيح." 437 00:26:59,030 --> 00:27:02,730 لوحة المفاتيح القياسية وسائل المدخلات والمخرجات القياسية يعني الشاشة، 438 00:27:02,730 --> 00:27:06,920 والخطأ المعياري، والذي سنرى في pset 4، يعني الشاشة، 439 00:27:06,920 --> 00:27:09,670 ولكن جزء خاص من الشاشة بحيث أنه ليس الخلط 440 00:27:09,670 --> 00:27:13,760 مع الانتاج الفعلي الذي تريده لطباعة، ولكن أكثر على ذلك في المستقبل. 441 00:27:13,760 --> 00:27:19,430 ذلك يعني فقط قراءة fgetc حرف واحد من لوحة المفاتيح، وتخزينها أين؟ 442 00:27:19,430 --> 00:27:24,000 تخزينها في ج، ومن ثم تحقق، لذلك أنا فقط باستخدام بعض العطف منطقية هنا، 443 00:27:24,000 --> 00:27:28,430 تأكد من أنه لا يساوي \ ن، وبالتالي فإن المستخدم قد تصل إلى تدخل. 444 00:27:28,430 --> 00:27:31,510 نريد التوقف عند هذه النقطة في نهاية الحلقة، ونحن نريد أيضا أن تحقق 445 00:27:31,510 --> 00:27:36,170 لثابت خاصة، EOF، الذي إذا كنت تعرف أو تخمين - ماذا يقف؟ 446 00:27:36,170 --> 00:27:39,860 نهاية الملف. لذلك هذا هو نوع من معنى، لأنه إذا أنا كتابة على لوحة المفاتيح، 447 00:27:39,860 --> 00:27:41,900 هناك حقا أي ملف المشاركة في ذلك، 448 00:27:41,900 --> 00:27:44,330 ولكن هذا هو نوع فقط من مصطلح عام يستخدم ليعني 449 00:27:44,330 --> 00:27:50,320 أن أي شيء آخر يأتي من أصابع الانسان. EOF. نهاية الملف. 450 00:27:50,320 --> 00:27:52,600 بوصفها جانبا، إذا كنت قد ضربت من أي وقت مضى التحكم في لوحة المفاتيح د، 451 00:27:52,600 --> 00:27:54,680 لا أن يكون لديك حتى الآن؛ كنت قد بلغت التحكم ج. 452 00:27:54,680 --> 00:27:57,920 لكن السيطرة د يرسل هذا ثابت EOF خاصة تسمى. 453 00:27:57,920 --> 00:28:03,100 >> حتى الآن لدينا سوى بعض تخصيص الذاكرة الديناميكية. 454 00:28:03,100 --> 00:28:06,460 إذا كان الأمر كذلك N + 1> القدرة، والآن سوف أشرح ن. 455 00:28:06,460 --> 00:28:09,380 وكيف أن العديد من بايت ن حاليا في المخزن المؤقت، 456 00:28:09,380 --> 00:28:11,970 السلسلة التي كنت تقوم حاليا ببناء من المستخدم. 457 00:28:11,970 --> 00:28:16,240 إذا كان لديك أكثر من الأحرف في المخزن المؤقت الخاص مما لديك القدرة في المخزن المؤقت، 458 00:28:16,240 --> 00:28:20,760 حدسي، ما يتعين علينا القيام به ثم يتم تخصيص المزيد من القدرات. 459 00:28:20,760 --> 00:28:24,490 انا ذاهب الى المقشود على بعض العمليات الحسابية هنا 460 00:28:24,490 --> 00:28:26,900 والتركيز فقط على هذه الوظيفة هنا. 461 00:28:26,900 --> 00:28:29,170 كنت تعرف ما هو malloc، أو على الأقل على دراية بصفة عامة. 462 00:28:29,170 --> 00:28:32,380 اتخاذ تخمين ما realloc لا. [الجواب طالبة، غير مفهومة] 463 00:28:32,380 --> 00:28:35,690 نعم >>. واضاف انها ليست تماما الذاكرة، بل اعادة توطين الذاكرة على النحو التالي: 464 00:28:35,690 --> 00:28:40,530 إذا كان هناك ما زال غرفة في نهاية السلسلة لتعطيك أكثر من تلك الذاكرة 465 00:28:40,530 --> 00:28:43,370 مما يعطي أصلا لك، ثم عليك أن تحصل على ذاكرة إضافية. 466 00:28:43,370 --> 00:28:46,640 حتى تتمكن من مجرد وضع الأحرف سلاسل العودة إلى الوراء إلى العودة إلى الوراء. 467 00:28:46,640 --> 00:28:49,290 ولكن اذا كان هذا ليس هو الحال، لأن كنت انتظر وقتا طويلا 468 00:28:49,290 --> 00:28:51,700 وحصلت على شيء عشوائي ساقط في الذاكرة هناك، ولكن هناك إضافية 469 00:28:51,700 --> 00:28:56,480 الذاكرة إلى هنا، هذا ما يرام. Realloc سوف تفعل كل رفع الأحمال الثقيلة بالنسبة لك، 470 00:28:56,480 --> 00:28:58,810 نقل سلسلة كنت قد قرأت حتى الآن في من هنا، 471 00:28:58,810 --> 00:29:02,550 ضعها هناك، ومن ثم يعطيك بعض أكثر المدرج في تلك المرحلة. 472 00:29:02,550 --> 00:29:05,610 حتى مع موجة من ناحية، واسمحوا لي أن أقول إن ما تقوم به GetString 473 00:29:05,610 --> 00:29:09,540 ولقد بدا مع منطقة عازلة صغيرة، ربما 1 حرف واحد، 474 00:29:09,540 --> 00:29:12,300 وإذا كان المستخدم أنواع الأحرف في 2، GetString ينتهي 475 00:29:12,300 --> 00:29:15,210 تدعو realloc ويقول: "أوه، كان 1 حرف لا يكفي. 476 00:29:15,210 --> 00:29:18,480 أعطني 2 حرف. " إذا ثم قراءة لكم من خلال منطق الحلقة، 477 00:29:18,480 --> 00:29:21,070 انها سوف يقول، "أوه، المستعمل في طباعة 3 أحرف. 478 00:29:21,070 --> 00:29:25,690 أعطني الآن 2 ولكن لا 4 أحرف، ثم إعطاء لي 8، ثم تعطيني 16 و 32 ". 479 00:29:25,690 --> 00:29:28,180 حقيقة أنني مضاعفة قدرة كل مرة 480 00:29:28,180 --> 00:29:30,320 يعني أن المخزن المؤقت لن تنمو ببطء. 481 00:29:30,320 --> 00:29:35,870 انها سوف تنمو بسرعة فائقة، وما قد يكون ميزة ذلك؟ 482 00:29:35,870 --> 00:29:38,540 لماذا أنا مضاعفة حجم المخزن المؤقت، على الرغم من أن المستخدم 483 00:29:38,540 --> 00:29:41,450 قد تحتاج 1 فقط الزائدة من لوحة المفاتيح؟ 484 00:29:41,450 --> 00:29:44,830 [الجواب طالبة، غير مفهومة]. >> ما هذا؟ 485 00:29:44,830 --> 00:29:46,750 بالضبط. لم يكن لديك لتنمو في كثير من الأحيان باسم. 486 00:29:46,750 --> 00:29:48,870 وهذا هو مجرد نوع من أ - أنت الآن على التحوط الرهانات الخاصة بك هنا. 487 00:29:48,870 --> 00:29:54,150 وكانت الفكرة هي أنك لا تريد الاتصال realloc كثيرا، لأنه يميل إلى أن يكون بطيئا. 488 00:29:54,150 --> 00:29:56,840 أي وقت أن تطلب من نظام التشغيل للذاكرة، كما سترى قريبا 489 00:29:56,840 --> 00:30:00,620 في مجموعة مشكلة في المستقبل، فإنها تميل إلى يستغرق بعض الوقت. 490 00:30:00,620 --> 00:30:04,980 لذلك التقليل من هذا المبلغ من الزمن، حتى لو كنت إضاعة بعض المساحة، يميل إلى أن يكون شيء جيد. 491 00:30:04,980 --> 00:30:07,250 >> ولكن إذا قرأنا من خلال الجزء الأخير من GetString هنا، 492 00:30:07,250 --> 00:30:10,880 ومرة أخرى، فهم كل سطر واحد هنا ليست في غاية الأهمية اليوم. 493 00:30:10,880 --> 00:30:14,830 ولكن لاحظ أنه في نهاية المطاف تدعو malloc مرة أخرى، وذلك بتخصيص 494 00:30:14,830 --> 00:30:16,980 تماما كما بايت يصل الى انها تحتاج لسلسلة 495 00:30:16,980 --> 00:30:21,620 ويلقي بعيدا ثم عن طريق الاتصال مجانا، المخزن المؤقت كبيرة للغاية، 496 00:30:21,620 --> 00:30:23,510 إذا كان بالفعل حصلت تضاعف عدة مرات أيضا. 497 00:30:23,510 --> 00:30:25,970 وباختصار، هذه هي الطريقة التي تعمل GetString كل هذا الوقت. 498 00:30:25,970 --> 00:30:30,100 تتم قراءة كل ما يفعله حرف واحد في وقت واحد مرة أخرى ومرة ​​أخرى ومرة ​​أخرى 499 00:30:30,100 --> 00:30:37,930 وفي كل مرة يحتاج بعض ذاكرة إضافية، فإنه يسألك نظام التشغيل لذلك من خلال الدعوة realloc. 500 00:30:37,930 --> 00:30:41,660 أي أسئلة؟ حسنا. 501 00:30:41,660 --> 00:30:45,220 >> هجوم. الآن نحن نفهم أن مؤشرات، أو على الأقل 502 00:30:45,220 --> 00:30:47,560 معتادا بشكل متزايد مع مؤشرات، 503 00:30:47,560 --> 00:30:50,020 دعونا النظر في كيفية العالم كله يبدأ في الانهيار 504 00:30:50,020 --> 00:30:53,160 إذا لم يكن لدفاع ضد المستخدمين الخصومة تماما، 505 00:30:53,160 --> 00:30:55,180 الناس الذين يحاولون اختراق النظام الخاص بك. 506 00:30:55,180 --> 00:31:00,260 الناس الذين يحاولون سرقة البرمجيات الخاصة بك عن طريق التحايل بعض رمز التسجيل 507 00:31:00,260 --> 00:31:02,150 قد لديهم وإلا لكتابة فيه. 508 00:31:02,150 --> 00:31:04,860 نلقي نظرة على هذا المثال هنا، الذي هو مجرد رمز C 509 00:31:04,860 --> 00:31:07,920 يحتوي على المهمة الرئيسية في الجزء السفلي، الذي يستدعي الدالة فو، 510 00:31:07,920 --> 00:31:12,100 وما صدوره لفو؟ [طالب] وهناك حجة واحدة. 511 00:31:12,100 --> 00:31:15,660 حجة واحدة >>. حتى argv [1]، مما يعني أن الكلمة الأولى للمستخدم كتابة 512 00:31:15,660 --> 00:31:19,150 في سطر الأوامر بعد a.out أو أيا كان يسمى البرنامج. 513 00:31:19,150 --> 00:31:24,920 حتى فو، في الأعلى، يأخذ في حرف * ولكن * حرف هو فقط ما؟ 514 00:31:24,920 --> 00:31:28,860 السلسلة. لا يوجد شيء جديد هنا، وبشكل تعسفي أن يتم استدعاء سلسلة بار. 515 00:31:28,860 --> 00:31:36,090 في هذا الخط هنا، شار ج [12]، في نوع من شبه التقنية العربية، ما هو هذا الخط تفعل؟ 516 00:31:36,090 --> 00:31:40,640 مجموعة من -؟ حرفا. تعطيني مجموعة من 12 حرفا. 517 00:31:40,640 --> 00:31:44,970 لذلك يمكن ان نسميه هذا المخزن مؤقت. انه دعا تقنيا فإنه ج، ولكن منطقة عازلة في البرمجة 518 00:31:44,970 --> 00:31:47,890 يعني مجرد حفنة من المساحة التي يمكنك وضع بعض الاشياء فيه. 519 00:31:47,890 --> 00:31:49,940 >> وأخيرا ثم، memcpy، لقد لا تستخدم من قبل. 520 00:31:49,940 --> 00:31:52,380 ولكن يمكنك تخمين ربما ما تقوم به. نسخه الذاكرة. 521 00:31:52,380 --> 00:31:58,790 ماذا يفعل؟ حسنا، انها على ما يبدو بنسخ بار، مدخلاته، في ج، 522 00:31:58,790 --> 00:32:03,420 لكن إلى طول شريط. 523 00:32:03,420 --> 00:32:07,440 ولكن هناك خلل هنا. 524 00:32:07,440 --> 00:32:14,500 حسنا، لذلك من الناحية الفنية ينبغي أن نفعله حقا التوابع strlen (بار) X sizeof (تشار)، وهذا الصحيح. 525 00:32:14,500 --> 00:32:17,920 ولكن في أسوأ الحالات هنا، دعونا نفترض أن that's - لذلك، حسنا. 526 00:32:17,920 --> 00:32:23,760 ثم هناك في 2 البق. حتى sizeof (تشار)، كل الحق، دعونا جعل هذا قليلا على نطاق أوسع. 527 00:32:23,760 --> 00:32:28,860 حتى الآن لا يزال هناك علة، وهذا ما؟ 528 00:32:28,860 --> 00:32:31,630 [الجواب طالبة، غير مفهومة] تحقق >> لماذا؟ حسنا، لذلك يجب علينا أن فحص 529 00:32:31,630 --> 00:32:35,010 لNULL، لأن أشياء سيئة يحدث عندما الخاص بك هو مؤشر NULL، 530 00:32:35,010 --> 00:32:38,490 لأنه قد ينتهي بك الأمر الذهاب إلى هناك، ويجب أن لا يكون أي وقت مضى الذهاب إلى NULL 531 00:32:38,490 --> 00:32:40,890 يعتبر إلغاء مرجعية من قبل مع المشغل *. 532 00:32:40,890 --> 00:32:45,250 بحيث الجيد، وماذا يفعلون نحن؟ منطقيا هناك عيب هنا أيضا. 533 00:32:45,250 --> 00:32:47,650 [الجواب طالبة، غير مفهومة] 534 00:32:47,650 --> 00:32:51,340 حتى إذا تحقق >> argc ≥ 2؟ 535 00:32:51,340 --> 00:32:54,130 حسنا، لذلك هناك 3 الخلل في هذا البرنامج هنا. 536 00:32:54,130 --> 00:33:00,080 نحن لا التحقق إذا كان المستخدم كتابتها في الواقع أي شيء في argv [1]، وحسن. 537 00:33:00,080 --> 00:33:02,240 إذن ما هو علة ثالثة؟ نعم؟ 538 00:33:02,240 --> 00:33:04,420 [الجواب طالبة، غير مفهومة] >> جيد. 539 00:33:04,420 --> 00:33:09,590 لذلك نحن فحص سيناريو واحد. بحثنا ضمنا لا تنسخ أكثر من الذاكرة 540 00:33:09,590 --> 00:33:12,800 وتتجاوز من طول شريط. 541 00:33:12,800 --> 00:33:15,720 إذا كان الأمر كذلك السلسلة المستعمل في طباعة هو 10 حرفا، 542 00:33:15,720 --> 00:33:18,260 هذا وقال: "نسخ فقط 10 حرفا." 543 00:33:18,260 --> 00:33:21,140 وهذا ما يرام، ولكن ما إذا كان المستخدم كتابتها في كلمة واحدة في موجه 544 00:33:21,140 --> 00:33:29,360 مثل كلمة حرف 20؛ هذا هو، قائلا نسخة من شريط 20 حرفا في ماذا؟ 545 00:33:29,360 --> 00:33:32,840 ج، والمعروف باسم عازلة لدينا، مما يعني أنك كتبت للتو البيانات 546 00:33:32,840 --> 00:33:35,950 إلى مواقع بايت 8 أن كنت لا تملك، 547 00:33:35,950 --> 00:33:38,320 وكنت لا تملك لهم، بمعنى أن كنت أبدا المخصصة لهم. 548 00:33:38,320 --> 00:33:41,190 لذلك هذا هو ما يعرف عموما بأنه هجوم تجاوز المخزن المؤقت، 549 00:33:41,190 --> 00:33:46,650 أو هجوم تجاوز سعة المخزن المؤقت، والهجوم انها بمعنى أنه إذا كان المستخدم 550 00:33:46,650 --> 00:33:50,650 أو البرنامج الذي المتصل وظيفة تقوم به هذه ضار، 551 00:33:50,650 --> 00:33:53,780 ما يحدث في الواقع القادمة يمكن أن تكون سيئة جدا. 552 00:33:53,780 --> 00:33:55,690 >> دعونا نلقي نظرة على هذه الصورة هنا. 553 00:33:55,690 --> 00:33:59,070 هذه الصورة تمثل الكدسة من الذاكرة. 554 00:33:59,070 --> 00:34:01,050 وأذكر أنه في كل مرة كنت استدعاء دالة، 555 00:34:01,050 --> 00:34:04,520 لك هذا الإطار يذكر على المكدس وثم آخر ثم آخر ثم آخر. 556 00:34:04,520 --> 00:34:07,250 وحتى الآن قمنا مجرد نوع من هذه المستخرجة بعيدا كما المستطيلات 557 00:34:07,250 --> 00:34:09,380 إما هناك على لوحة أو على الشاشة هنا. 558 00:34:09,380 --> 00:34:12,219 ولكن إذا كان لنا أن التكبير في واحدة من تلك المستطيلات، 559 00:34:12,219 --> 00:34:16,460 عند استدعاء الدالة فو، تبين أن هناك أكثر على المكدس 560 00:34:16,460 --> 00:34:18,739 داخل هذا الإطار المستطيل والتي 561 00:34:18,739 --> 00:34:23,370 من X و y فقط وألف وباء، وكأننا لم نتحدث عن المبادلة. 562 00:34:23,370 --> 00:34:25,949 اتضح أن هناك بعض التفاصيل ذات مستوى أقل، 563 00:34:25,949 --> 00:34:27,780 من بينها العودة عنوان. 564 00:34:27,780 --> 00:34:33,020 لذلك عندما تبين الرئيسي يدعو فو، الرئيسي وإبلاغ فو 565 00:34:33,020 --> 00:34:36,760 ما هو عنوان الرئيسي في ذاكرة الكمبيوتر. 566 00:34:36,760 --> 00:34:40,659 لأن خلاف ذلك، في أقرب وقت يتم تنفيذ فو، كما في هذه الحالة هنا، 567 00:34:40,659 --> 00:34:43,790 بمجرد وصولك الى هذا قوس إغلاق مجعد في نهاية فو، 568 00:34:43,790 --> 00:34:48,860 كيف هيك لا أعرف فو حيث يفترض السيطرة على البرنامج أن تذهب؟ 569 00:34:48,860 --> 00:34:52,460 اتضح أن الإجابة على هذا السؤال هو في هذا المستطيل الأحمر هنا. 570 00:34:52,460 --> 00:34:56,130 هذا يمثل المؤشر، والامر متروك لتخزين الكمبيوتر، بشكل مؤقت، 571 00:34:56,130 --> 00:35:00,250 على المكدس يسمى تتم عنوان رئيسي لذلك أنه بمجرد تنفيذ فو، 572 00:35:00,250 --> 00:35:04,110 الكمبيوتر وما يعرف أين الخط الرئيسي في العودة إلى. 573 00:35:04,110 --> 00:35:06,900 حفظ مؤشر الإطار تتعلق بالمثل على ذلك. 574 00:35:06,900 --> 00:35:09,620 * شريط شار هنا يمثل ما؟ 575 00:35:09,620 --> 00:35:14,740 حسنا، الآن هذا الجزء الأزرق هو الإطار فو هنا، ما هو شريط؟ 576 00:35:14,740 --> 00:35:18,300 حسنا، ذلك هو مجرد شريط الوسيطة إلى وظيفة فو. 577 00:35:18,300 --> 00:35:20,720 >> حتى الآن نعود إلى الصورة مألوفة. 578 00:35:20,720 --> 00:35:22,960 هناك المزيد والمزيد من الاشياء الانحرافات التي تظهر على الشاشة 579 00:35:22,960 --> 00:35:27,490 ولكن هذا الجزء الضوء الأزرق هو ما كنا الرسم على السبورة لشيء من هذا القبيل المبادلة. 580 00:35:27,490 --> 00:35:31,890 هذا هو الإطار لفو والشيء الوحيد فيه الآن هو بار، 581 00:35:31,890 --> 00:35:34,630 وهو هذه المعلمة. 582 00:35:34,630 --> 00:35:39,840 ولكن يجب أن يكون آخر ما في المكدس، وفقا لهذا الرمز هنا؟ 583 00:35:39,840 --> 00:35:44,280 ج شار [12]. لذلك يجب أن نرى أيضا 12 الساحات من الذاكرة، 584 00:35:44,280 --> 00:35:46,260 المخصصة للمتغير يسمى C. 585 00:35:46,260 --> 00:35:48,340 والواقع أننا لا يكون هذا على الشاشة. 586 00:35:48,340 --> 00:35:51,650 أعلى جدا هناك ج [0]، ومن ثم صاحب هذا الرسم البياني 587 00:35:51,650 --> 00:35:55,130 لم أكن عناء رسم كل من المربعات ولكن هناك في الواقع 12 هناك 588 00:35:55,130 --> 00:36:00,120 لأنه إذا نظرتم في أسفل اليمين، ج [11]، إذا كنت تعول من 0، 12 بايت هو من هذا القبيل. 589 00:36:00,120 --> 00:36:06,190 ولكن هنا تكمن المشكلة: في أي اتجاه متزايد هو C؟ 590 00:36:06,190 --> 00:36:10,390 نوع من أعلى إلى أسفل، أليس كذلك؟ إذا كان يبدأ في أعلى وينمو إلى أسفل، 591 00:36:10,390 --> 00:36:13,480 لا تبدو تركنا أنفسنا المدرج الكثير هنا على الإطلاق. 592 00:36:13,480 --> 00:36:15,320 لدينا نوع من رسمت أنفسنا في مأزق، 593 00:36:15,320 --> 00:36:20,210 وأن ج [11] هو الحق حتى ضد نقابة المحامين، والذي هو الحق حتى ضد مؤشر الإطار مكدس، 594 00:36:20,210 --> 00:36:23,800 الذي هو الحق حتى ضد عنوان المرسل؛ هناك غرفة لا أكثر. 595 00:36:23,800 --> 00:36:26,100 إذن ما هو ضمنا، ثم، إذا كنت المسمار، 596 00:36:26,100 --> 00:36:30,460 وحاولت قراءة 20 بايت إلى بايت العازلة 12-؟ 597 00:36:30,460 --> 00:36:33,460 حيث هي تلك التي تسير 8 بايت إضافية أن تذهب؟ 598 00:36:33,460 --> 00:36:36,370 داخل كل شيء آخر، ومنها ما هو السوبر الهامة. 599 00:36:36,370 --> 00:36:40,480 والشيء الأكثر أهمية، من المحتمل، هو مربع أحمر هناك، عنوان المرسل. 600 00:36:40,480 --> 00:36:44,720 لأن نفترض أنك إما بطريق الخطأ أو adversarially 601 00:36:44,720 --> 00:36:48,040 الكتابة فوق تلك بايت 4، أن عنوان المؤشر، 602 00:36:48,040 --> 00:36:53,190 ليس فقط مع القمامة، ولكن مع الرقم الذي يحدث لتمثيل العنوان الفعلي في الذاكرة؟ 603 00:36:53,190 --> 00:36:55,930 ما هو implicaiton، منطقيا؟ 604 00:36:55,930 --> 00:36:59,080 [أجوبة الطلاب، غير مفهومة] >> بالضبط. عندما يعود فو 605 00:36:59,080 --> 00:37:03,560 والزيارات التي متعرج، والبرنامج سنشرع عدم العودة الى الأصل، 606 00:37:03,560 --> 00:37:08,320 انه سيكون من العودة إلى أي عنوان في هذا المربع الأحمر. 607 00:37:08,320 --> 00:37:11,560 >> الآن، في حالة تسجيل البرنامج التحايل، 608 00:37:11,560 --> 00:37:14,400 ما هو العنوان الذي يجري عاد إلى هي وظيفة 609 00:37:14,400 --> 00:37:18,820 الذي يحصل عادة بعد أن كنت قد دعا دفعت لهذا البرنامج وإدخالها التعليمات البرمجية التسجيل؟ 610 00:37:18,820 --> 00:37:23,160 هل يمكن أن ترتب من خدعة الكمبيوتر في لن هنا، ولكن بدلا من ذلك، لتصل هنا. 611 00:37:23,160 --> 00:37:27,950 أو، إذا كنت حقا ذكي، ويمكن في الواقع عدو اكتب في في لوحة المفاتيح، 612 00:37:27,950 --> 00:37:32,500 على سبيل المثال، وليس كلمة الفعلية، لا الأحرف 20، ولكن لنفترض انه أو انها 613 00:37:32,500 --> 00:37:36,200 أنواع الأحرف في بعض التي تمثل رمز؟ 614 00:37:36,200 --> 00:37:38,860 وانها لن تكون C رمز، فإنه سيكون من الأحرف 615 00:37:38,860 --> 00:37:42,920 التي تمثل رموز الجهاز ثنائي، ل0 و 1. 616 00:37:42,920 --> 00:37:46,740 ولكن لنفترض انهم ذكي بما فيه الكفاية للقيام بذلك، للصق على نحو ما في موجه GetString 617 00:37:46,740 --> 00:37:49,460 وهو ما يتم ترجمة التعليمات البرمجية بشكل أساسي، 618 00:37:49,460 --> 00:37:56,900 وآخر 4 بايت الكتابة أن عنوان المرسل، وعنوان ما لا نفعل ذلك الإدخال؟ 619 00:37:56,900 --> 00:38:01,860 فإنه يخزن في هذا المستطيل الأحمر عنوان البايت الأول من المخزن المؤقت. 620 00:38:01,860 --> 00:38:04,270 ولذلك عليك أن تكون ذكية حقا، وهذا هو الكثير من التجربة والخطأ 621 00:38:04,270 --> 00:38:08,500 للناس سيئة هناك، ولكن، إذا كان يمكنك معرفة كيفية كبيرة هذا المخزن المؤقت 622 00:38:08,500 --> 00:38:12,170 بحيث بايت القليلة الماضية في الإدخال التي تقدم إلى البرنامج 623 00:38:12,170 --> 00:38:15,970 يحدث ليكون معادلا لعنوان بداية العازلة الخاص بك، 624 00:38:15,970 --> 00:38:22,270 يمكنك القيام بذلك. اذا قلنا، عادة، مرحبا، و\ 0، وهذا ما ينتهي في المخزن المؤقت. 625 00:38:22,270 --> 00:38:27,860 ولكن إذا نحن أكثر ذكاء، ونحن ملء ذلك مع ما العازلة سنتصل بشكل عام شفرة الهجوم، 626 00:38:27,860 --> 00:38:31,920 A، A، A، A: هجوم، هجوم، هجوم، هجوم، حيث هذا هو مجرد شيء لا شيء سيئ. 627 00:38:31,920 --> 00:38:35,190 حسنا، ماذا يحدث إذا كنت حقا ذكي، قد تفعل هذا: 628 00:38:35,190 --> 00:38:41,740 في المربع الأحمر هنا هو سلسلة من الأرقام: 80، CO، 35، 08. 629 00:38:41,740 --> 00:38:44,890 تلاحظ أن يطابق الرقم الذي يعود هنا. 630 00:38:44,890 --> 00:38:47,280 انها في ترتيب عكسي، ولكن أكثر في الوقت المحدد بعض هذا الآخر. 631 00:38:47,280 --> 00:38:51,430 تلاحظ أنه تم تغيير هذا عنوان المرسل عمدا 632 00:38:51,430 --> 00:38:54,970 على قدم المساواة عنوان هنا، وليس عنوان الرئيسي. 633 00:38:54,970 --> 00:39:00,170 إذا كان الأمر كذلك الرجل السيئ هو السوبر ذكية، وقال انه أو انها سوف تدرج في أن شفرة الهجوم 634 00:39:00,170 --> 00:39:02,890 شيء من هذا القبيل، 'حذف جميع الملفات الخاصة بالمستخدم. " 635 00:39:02,890 --> 00:39:06,320 أو "نسخ كلمات المرور" أو "إنشاء حساب المستخدم الذي يمكنني تسجيل الدخول إلى. ' 636 00:39:06,320 --> 00:39:10,130 أي شيء على الإطلاق، وهذا هو الخطر على حد سواء وقوة C. 637 00:39:10,130 --> 00:39:12,900 لأنه لديك إمكانية الوصول إلى الذاكرة من خلال مؤشرات 638 00:39:12,900 --> 00:39:15,950 وبالتالي يمكنك كتابة أي شيء تريده في ذاكرة الكمبيوتر. 639 00:39:15,950 --> 00:39:19,290 يمكنك جعل جهاز كمبيوتر تفعل كل ما تريد ببساطة عن طريق 640 00:39:19,290 --> 00:39:22,780 بعد ذلك القفز نحو داخل مجالها الذاكرة الخاصة. 641 00:39:22,780 --> 00:39:27,230 وهكذا، حتى يومنا هذا، لذلك العديد من البرامج والعديد من المواقع بحيث يتم خطر 642 00:39:27,230 --> 00:39:29,730 تختزل إلى الناس الاستفادة من هذا. 643 00:39:29,730 --> 00:39:32,510 وهذا قد يبدو وكأنه هجوم متطورة فائقة، 644 00:39:32,510 --> 00:39:34,220 لكنه لا يبدأ دائما على هذا النحو. 645 00:39:34,220 --> 00:39:36,770 >> الحقيقة هي أن الناس ما تفعل عادة سيئة وسوف هو، 646 00:39:36,770 --> 00:39:41,470 سواء كان ذلك في برنامج في سطر الأوامر أو برنامج أو موقع على شبكة الإنترنت واجهة المستخدم الرسومية، 647 00:39:41,470 --> 00:39:43,290 وكنت مجرد بداية تقديم هراء. 648 00:39:43,290 --> 00:39:46,940 اكتب لكم في كلمة كبيرة حقا في حقل البحث وتصل إلى تدخل، 649 00:39:46,940 --> 00:39:49,030 وعليك الانتظار لمعرفة ما اذا تعطل الموقع. 650 00:39:49,030 --> 00:39:53,270 أو يمكنك الانتظار لمعرفة ما إذا كان برنامج يظهر بعض رسالة خطأ. 651 00:39:53,270 --> 00:39:55,480 لأنه إذا كنت محظوظا، والرجل سيئة، 652 00:39:55,480 --> 00:39:59,610 وأنت مجنون توفير بعض المدخلات التي تعطل البرنامج، 653 00:39:59,610 --> 00:40:02,280 وهذا يعني مبرمج لم تتوقع سلوكك سيئة 654 00:40:02,280 --> 00:40:05,420 مما يعني يمكنك على الأرجح، مع ما يكفي من الجهد، 655 00:40:05,420 --> 00:40:09,870 محاكمة يكفي والخطأ، ومعرفة كيفية شن هجوم أكثر دقة. 656 00:40:09,870 --> 00:40:15,900 لذلك بقدر ما هو جزء من الأمن لا مجرد تجنب هذه الهجمات تماما، ولكن كشفها 657 00:40:15,900 --> 00:40:20,250 وفعلا تبحث في سجلات ورؤية ما لديك المدخلات مجنون الناس كتابتها في موقع الويب الخاص بك. 658 00:40:20,250 --> 00:40:26,040 ما شروط البحث والناس كتابتها في موقع الويب الخاص بك على أمل تفيض بعض العازلة؟ 659 00:40:26,040 --> 00:40:28,900 وهذا كله يتلخص في أساسيات بسيطة من ما هو صفيف، 660 00:40:28,900 --> 00:40:32,510 وماذا يعني ذلك لتخصيص واستخدام الذاكرة؟ 661 00:40:32,510 --> 00:40:34,920 وتتعلق هذا أيضا، هو هذا. 662 00:40:34,920 --> 00:40:37,520 >> لذلك دعونا فقط نظرة من داخل القرص الصلب مرة أخرى. 663 00:40:37,520 --> 00:40:40,190 لذلك كنت أذكر من أسبوع أو أسبوعين قبل أن عند سحب الملفات 664 00:40:40,190 --> 00:40:45,470 لسلة المحذوفات سلة المهملات أو، ماذا يحدث؟ 665 00:40:45,470 --> 00:40:47,850 [طالب] لا شيء. نعم >>، لا شيء على الإطلاق. إذا في نهاية المطاف تشغيل منخفضة 666 00:40:47,850 --> 00:40:51,370 على مساحة القرص، ويندوز أو ماك OS بدء حذف الملفات بالنسبة لك. 667 00:40:51,370 --> 00:40:53,670 ولكن إذا قمت بسحب شيء في هناك، ثم انها ليست آمنة على الإطلاق. 668 00:40:53,670 --> 00:40:56,550 كل ما تبذلونه من الحجرة، صديق أو أحد أفراد العائلة القيام به هو النقر المزدوج، وفويلا. 669 00:40:56,550 --> 00:40:59,720 هناك سطحية كافة الملفات التي حاولت حذفها. 670 00:40:59,720 --> 00:41:02,840 لذلك معظمنا على الأقل أعرف أن لديك لانقر بزر الماوس الأيمن فوق أو السيطرة 671 00:41:02,840 --> 00:41:05,320 وإفراغ سلة المهملات، أو شيء من هذا القبيل. 672 00:41:05,320 --> 00:41:07,900 لكن حتى ذلك الحين، وهذا لا تفعل تماما خدعة. 673 00:41:07,900 --> 00:41:11,340 لأن ما يحدث عندما يكون لديك ملف على القرص الثابت 674 00:41:11,340 --> 00:41:14,590 الذي يمثل بعض مستند Word أو JPEG بعض؟ 675 00:41:14,590 --> 00:41:18,820 وهذا يمثل القرص الثابت، ودعونا نقول هذه القطعة هنا يمثل هذا الملف، 676 00:41:18,820 --> 00:41:21,640 وانها تتكون من مجموعة كاملة من ل0 و 1. 677 00:41:21,640 --> 00:41:25,470 ماذا يحدث عندما لا اسحب فقط هذا الملف إلى المهملات أو سلة المهملات، 678 00:41:25,470 --> 00:41:30,390 لكنها فارغة أيضا؟ 679 00:41:30,390 --> 00:41:32,820 نوع من لا شيء. انها ليست شيئا على الإطلاق الآن. 680 00:41:32,820 --> 00:41:37,630 الآن انها مجرد شيء، لأن شيئا قليلا يحدث في شكل هذا الجدول. 681 00:41:37,630 --> 00:41:41,170 ولذلك لا يوجد نوع من قاعدة البيانات أو جدول داخل ذاكرة جهاز الكمبيوتر 682 00:41:41,170 --> 00:41:44,470 يحتوي أساسا العمود 1 لأسماء الملفات، 683 00:41:44,470 --> 00:41:50,550 والعمود 1 لموقع الملف، حيث قد يكون هذا الموقع 123، مجرد رقم عشوائي. 684 00:41:50,550 --> 00:41:58,270 لذلك قد يكون لدينا شيء من هذا القبيل x.jpg، والموقع 123. 685 00:41:58,270 --> 00:42:02,870 وماذا يحدث بعد ذلك، عندما تقوم بإفراغ سلة المهملات الخاصة بك؟ 686 00:42:02,870 --> 00:42:06,720 أن يذهب بعيدا. ولكن ما لا يذهب بعيدا هو ل0 و 1. 687 00:42:06,720 --> 00:42:09,690 >> ذلك ما، ثم، اتصال لpset 4؟ 688 00:42:09,690 --> 00:42:13,460 حسنا، مع pset 4، لمجرد أننا قد تمحى بطريق الخطأ 689 00:42:13,460 --> 00:42:15,890 بطاقة فلاش المدمجة التي كان كل من هذه الصور، 690 00:42:15,890 --> 00:42:18,710 أو فقط لأنه من سوء الحظ أصبح معطوبا، 691 00:42:18,710 --> 00:42:21,170 لا يعني أن ال 0 و1 هي ليست لا تزال هناك. 692 00:42:21,170 --> 00:42:23,920 ربما يتم فقدان عدد قليل منها بسبب فساد شيء 693 00:42:23,920 --> 00:42:26,530 بمعنى أن بعض وأصبح 0 1 و 1 في اصبحت 0 هذا. 694 00:42:26,530 --> 00:42:30,460 يمكن تحدث أمور سيئة بسبب برنامج عربات التي تجرها الدواب أو الأجهزة المعيبة. 695 00:42:30,460 --> 00:42:33,510 ولكن العديد من هذه البتات، وربما حتى 100٪ منهم لا يزال هناك، 696 00:42:33,510 --> 00:42:38,330 انها مجرد أن الكمبيوتر أو الكاميرا لا تعرف من أين بدأت JPEG 1 697 00:42:38,330 --> 00:42:41,660 وحيث JPEG 2 بدأت، ولكن إذا كنت، مبرمج، 698 00:42:41,660 --> 00:42:45,800 أعرف، مع شيء من الدهاء، حيث تلك هي ملفات JPEG أو كيف تبدو، 699 00:42:45,800 --> 00:42:49,570 يمكنك تحليل ل0 و 1 و ليقول: "أوه. JPEG. أوه، JPEG ". 700 00:42:49,570 --> 00:42:52,830 يمكنك كتابة برنامج مع فقط أساسا للأو أثناء حلقة 701 00:42:52,830 --> 00:42:56,100 أن يسترد كل واحد من هذه الملفات. 702 00:42:56,100 --> 00:42:59,360 ذلك الدرس ثم، ومن المقرر أن يبدأ "آمن" محو الملفات 703 00:42:59,360 --> 00:43:01,720 إذا كنت ترغب في تجنب هذا تماما. نعم؟ 704 00:43:01,720 --> 00:43:06,940 [سؤال الطالب، غير مفهومة] 705 00:43:06,940 --> 00:43:11,150 هل >> ذاكرة أكثر من فعلت من قبل - 706 00:43:11,150 --> 00:43:14,790 أوه! سؤال جيد. فلماذا، إذن، بعد إفراغ سلة المهملات، 707 00:43:14,790 --> 00:43:18,300 لا جهاز الكمبيوتر الخاص بك أقول لك أن لديك مساحة حرة أكبر مما كنت فعلت من قبل؟ 708 00:43:18,300 --> 00:43:22,450 باختصار، لأنه يكذب. أكثر من الناحية الفنية، لديك مساحة أكبر. 709 00:43:22,450 --> 00:43:26,720 لأنه الآن قلته، يمكنك وضع الأشياء الأخرى حيث كان هذا الملف مرة واحدة، 710 00:43:26,720 --> 00:43:28,930 ولكن هذا لا يعني أن تسير بعيدا بت، 711 00:43:28,930 --> 00:43:33,070 وهذا لا يعني يجري تغيير البتات كافة 0، على سبيل المثال، من أجل حمايتك. 712 00:43:33,070 --> 00:43:37,520 على النقيض من ذلك، إذا كنت الملفات "آمن" محو، أو جسديا تدمير الجهاز، 713 00:43:37,520 --> 00:43:40,810 هذا هو حقا السبيل الوحيد، في بعض الأحيان، حول ذلك. 714 00:43:40,810 --> 00:43:45,300 فلماذا لا نترك تلك المذكرة على شبه مخيفة، وسوف نرى لك يوم الاثنين. 715 00:43:45,300 --> 00:43:52,810 CS50.TV