1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON هيرشهورن: أهلا، الجميع، لأسبوع 6. 3 00:00:09,840 --> 00:00:14,790 أنا سعيد لرؤيتك كل قيد الحياة وبصحة جيدة بعد مسابقة 0، لأنني أعرف أن 4 00:00:14,790 --> 00:00:15,810 وكان الخام قليلا. 5 00:00:15,810 --> 00:00:18,370 ولكن لحسن الحظ، لكم جميعا حسنا فعل لا يصدق. 6 00:00:18,370 --> 00:00:21,680 وهكذا ما هو رائع. 7 00:00:21,680 --> 00:00:25,840 إذا كنت في قسم بلدي، لقد أعطيت أكثر من إجراء النسخ الاختبارات الخاصة بك بالفعل. 8 00:00:25,840 --> 00:00:28,050 >> زوجان من أنت، وأنا الوفاء بعد انتهاء اليوم الدراسي. 9 00:00:28,050 --> 00:00:32,360 وإذا كنت طالبا الإرشاد و لم تكن قد تلقت مسابقة ظهرك 10 00:00:32,360 --> 00:00:35,490 حتى الآن، وفريق العمل الخاص بك هو على الارجح تعمل على ذلك والدرجات ذلك، وسوف تحصل عليه مرة أخرى 11 00:00:35,490 --> 00:00:36,490 إليكم قريبا. 12 00:00:36,490 --> 00:00:39,650 حتى طلابي الذين هم التمديد يراقب الآن - يعيش على أمل - 13 00:00:39,650 --> 00:00:42,880 وسوف تحصل مسابقتك قريبا كذلك. 14 00:00:42,880 --> 00:00:45,670 >> جدول أعمالنا لهذا اليوم على النحو التالي. 15 00:00:45,670 --> 00:00:50,170 الأولى، ونحن في طريقنا للذهاب على بعض الموارد التي توفر CS50 لك. 16 00:00:50,170 --> 00:00:54,590 ونحن في طريقنا للذهاب أكثر من مسابقة 0 المقبل، و أنا سأجيب أي أسئلة أي شخص 17 00:00:54,590 --> 00:00:57,360 لديه حول مشاكل معينة. 18 00:00:57,360 --> 00:01:02,050 ومن ثم، فإننا سوف يذهب أكثر ملف I / O ومشكلة تعيين 5. 19 00:01:02,050 --> 00:01:07,360 سوف هذين الموضوعين مشاركة اتخاذ الجزء الأكبر من القسم اليوم. 20 00:01:07,360 --> 00:01:11,680 >> أنا وضعت هذه القائمة في كل أسبوع باعتباره تذكير لكم جميعا، ولكن من صميم 21 00:01:11,680 --> 00:01:14,650 القسم، ليس لدينا سوى 90 دقيقة - نحن ليست قادرة على تغطية كل ما كنت 22 00:01:14,650 --> 00:01:16,280 أحب لتغطية يا رفاق. 23 00:01:16,280 --> 00:01:21,170 ولكن لدينا من نصف طن من الموارد ل لك أن تستفيد كما يمكنك الحصول على معرفة 24 00:01:21,170 --> 00:01:24,000 المواد والعمل من خلال يحدد مشكلتك. 25 00:01:24,000 --> 00:01:30,810 >> للتذكير فقط أن لدي على الانترنت نص مربع، التي أنشئت من أجل لك لملء إذا كنت 26 00:01:30,810 --> 00:01:33,250 لديك أي ملاحظات بالنسبة لي، سواء كانت إيجابية و 27 00:01:33,250 --> 00:01:35,180 بناءة، حول القسم. 28 00:01:35,180 --> 00:01:38,600 يقع هذا العنوان وصولا هنا. 29 00:01:38,600 --> 00:01:43,250 لذا يرجى، ان نتوقف لحظة إذا كان لديك أي ردود الفعل، سواء خلال القسم، 30 00:01:43,250 --> 00:01:48,030 أو بعد، أو بعد مشاهدة الفيديو على شبكة الإنترنت، أن تعطيني ملاحظاتك. 31 00:01:48,030 --> 00:01:52,100 أنا حقا نقدر أي وكل ذلك. 32 00:01:52,100 --> 00:01:55,730 >> حتى لقد كان لديها المحادثات صغيرة مع الكثير من بلادي 33 00:01:55,730 --> 00:01:59,350 الطلاب طوال الأسبوع - كما قلت تسليم مسابقات الظهر، يتحدث عن 34 00:01:59,350 --> 00:02:01,480 بالطبع، ورؤية كيف تفعلونه. 35 00:02:01,480 --> 00:02:05,120 ولقد حان موضوع واحد على مدى و أكثر في الحديث عن - في 36 00:02:05,120 --> 00:02:05,660 خاص - 37 00:02:05,660 --> 00:02:07,710 يحدد المشكلة. 38 00:02:07,710 --> 00:02:13,090 ولقد مغلفة هذا الموضوع على متن الطائرة في الوقت الحالي. 39 00:02:13,090 --> 00:02:16,630 >> أساسا، هناك فرق بين تحول في ما هو 40 00:02:16,630 --> 00:02:19,590 القيام به بشكل صحيح وشيء أن يتم ذلك بشكل جيد. 41 00:02:19,590 --> 00:02:22,920 معظم الناس قد تفعل رائعة من حيث صحة - 42 00:02:22,920 --> 00:02:25,460 في 5 أو 4 على جميع psets. 43 00:02:25,460 --> 00:02:27,930 معظم الناس يحصلون على تلك كل الوقت. 44 00:02:27,930 --> 00:02:31,150 >> ومع ذلك، فقط لأنك قد فعلت الحق شيئا لا يعني أنك قمت 45 00:02:31,150 --> 00:02:34,450 كما فعلت شيئا بأناقة، أو بكفاءة، أو كما نظيفة كما كنت 46 00:02:34,450 --> 00:02:35,270 يمكن أن فعلت ذلك. 47 00:02:35,270 --> 00:02:36,790 وهذا ما تصميم - 48 00:02:36,790 --> 00:02:39,230 وإلى أقل درجة، وأسلوب - 49 00:02:39,230 --> 00:02:40,450 محاور هي لل. 50 00:02:40,450 --> 00:02:45,130 حتى وأنا دفع لكم جميعا، وTFS أخرى يضغطون يا رفاق، ليس فقط بدوره 51 00:02:45,130 --> 00:02:48,320 في الأشياء التي هي صحيحة، ولكن إيقاف في الأشياء التي يتم ترميز بشكل جيد. 52 00:02:48,320 --> 00:02:53,060 >> لا تفعل لا لزوم لها للحلقات، لا إعادة حساب المتغيرات إذا 53 00:02:53,060 --> 00:02:53,800 لم يكن لديك ل. 54 00:02:53,800 --> 00:02:58,520 على سبيل المثال، إذا نظرنا إلى الوراء لمشكلة تعيين 4، عند وضع الطوب على 55 00:02:58,520 --> 00:03:03,070 الشاشة، كل صف - كل لبنة في صف معين لديه نفس الإحداثي ص - 56 00:03:03,070 --> 00:03:04,390 نفس الارتفاع تنسيق. 57 00:03:04,390 --> 00:03:07,930 >> بحيث الإحداثي ص لم تكن في حاجة ل تحسب داخل الداخلية 58 00:03:07,930 --> 00:03:11,070 متداخلة للحلقة التي من المحتمل استخدامها لوضع تلك الطوب على الشاشة. 59 00:03:11,070 --> 00:03:14,030 فإنه يحتاج فقط إلى أن تحسب كل الوقت الذي تحولت صف واحد، أو 60 00:03:14,030 --> 00:03:15,200 انتقل لأسفل على التوالي. 61 00:03:15,200 --> 00:03:19,760 لذلك أقول إذا كان هناك 10 الطوب في صف واحد، يمكن لكل لبنة لديهم نفس 62 00:03:19,760 --> 00:03:22,260 الإحداثي ص، والتي الإحداثي ص يمكن فقط أن تحسب 63 00:03:22,260 --> 00:03:23,550 مرة واحدة لجميع أولئك. 64 00:03:23,550 --> 00:03:27,810 >> فإنه لا يحتاج إلى أن تحسب 10 مرات، ولا يفعل ذلك حساب الحاجة 65 00:03:27,810 --> 00:03:30,220 أن يحدث في الفعلية وظيفة الدعوة - 66 00:03:30,220 --> 00:03:33,020 استدعاء دالة gracked جديدة. 67 00:03:33,020 --> 00:03:37,820 حتى إذا كان ذلك مربكا قليلا ل كنت، وأكثر بشكل عام، والأشياء التي 68 00:03:37,820 --> 00:03:40,730 لا تحتاج إلى أن يحدث كل مرة واحدة تذهب من خلال حلقة للا ينبغي أن يكون 69 00:03:40,730 --> 00:03:42,900 وضعت داخل حلقة FOR، ويجب أن لا يحدث في كل مرة تذهب 70 00:03:42,900 --> 00:03:44,080 من خلال حلقة FOR. 71 00:03:44,080 --> 00:03:49,270 >> آخر مثال التصميم الجيد رأينا في الأسبوع لمدة 15 3، هل يمكن أن تبقي 72 00:03:49,270 --> 00:03:50,500 المسار من الصفر. 73 00:03:50,500 --> 00:03:53,600 وذلك عند تهيئة متن الطائرة، كنت انقاذ - في متغير عمومي، وربما - 74 00:03:53,600 --> 00:03:56,140 وx و y-تنسيق من الصفر. 75 00:03:56,140 --> 00:03:57,520 ثم كلما كنت - 76 00:03:57,520 --> 00:04:00,310 في وظيفة التحرك الخاص بك، كلما قمت بإجراء خطوة ناجحة، يمكنك تحديث 77 00:04:00,310 --> 00:04:02,040 موقع الصفر. 78 00:04:02,040 --> 00:04:06,240 >> التي من شأنها أن يخلصك من الحاجة إلى القيام متداخلة للحلقات لننظر من خلال 79 00:04:06,240 --> 00:04:10,700 متن كل مرة في وظيفة عملكم والعثور على الصفر، أو العثور على البلاط، و 80 00:04:10,700 --> 00:04:12,460 ثم تحقق ما هي الخطوة التالية لذلك. 81 00:04:12,460 --> 00:04:16,329 بدلا من ذلك، كان لديك موقع الصفر، يمكنك مجرد إلقاء نظرة أعلاه، أدناه، 82 00:04:16,329 --> 00:04:21,160 وإلى اليسار واليمين منه، لإيجاد البلاط الذي كنت تبحث عنه. 83 00:04:21,160 --> 00:04:24,970 >> وذلك من حيث البرامج نحن الكتابة، وانهم لا تكفي 84 00:04:24,970 --> 00:04:28,580 أن بعض هذه القرارات التصميم تسير حقا لعرقلة الخاص 85 00:04:28,580 --> 00:04:31,670 البرنامج، أو جعلها تعمل ببطء أكثر، أو ربما حتى نفاد الذاكرة. 86 00:04:31,670 --> 00:04:35,030 لكننا لا تزال تدفع يا رفاق كما لكتابة أنيقة و 87 00:04:35,030 --> 00:04:36,450 كود فعالة قدر الإمكان. 88 00:04:36,450 --> 00:04:39,910 >> لذلك إذا كنت تفعل في نهاية المطاف كتابة الأشياء التي لديها أكبر بكثير 89 00:04:39,910 --> 00:04:44,660 نطاق، وسوف تكون مكتوبة مع حسن تصميم بالإضافة إلى كونه الصحيح. 90 00:04:44,660 --> 00:04:46,300 لذلك عددا من لديك جلبت إلى ذلك. 91 00:04:46,300 --> 00:04:48,560 هذا شيء نحن نبحث عن - شيء ونحن في طريقنا إلى مواصلة 92 00:04:48,560 --> 00:04:49,840 يا رفاق على دفع. 93 00:04:49,840 --> 00:04:52,460 >> إذا كان لديك أي أسئلة حول أي وقت مضى تصميم البرنامج الخاص بك، لا تتردد 94 00:04:52,460 --> 00:04:56,870 للوصول إلى لي، وأنا سعيد ل المشي من خلال البرنامج معك، 95 00:04:56,870 --> 00:05:01,320 ونشير إلى بعض من تصميم القرارات التي قمت بها، وتعطيك بعض 96 00:05:01,320 --> 00:05:06,240 اقتراحات حول كيفية جعل حتى قرارات التصميم على نحو أفضل. 97 00:05:06,240 --> 00:05:08,870 >> لذلك نحن ذاهبون للمضي قدما لنتحدث عن مسابقة 0. 98 00:05:08,870 --> 00:05:11,300 قبل ان نفعل ذلك، لا أحد لديك أي أسئلة حول ما 99 00:05:11,300 --> 00:05:14,252 لقد غطت حتى الآن؟ 100 00:05:14,252 --> 00:05:21,500 >> [سرقة الضوضاء] 101 00:05:21,500 --> 00:05:22,750 >> JASON هيرشهورن: سبع ثواني. 102 00:05:22,750 --> 00:05:23,250 موافق. 103 00:05:23,250 --> 00:05:24,970 دعونا نتحدث عن مسابقة 0 قليلا. 104 00:05:24,970 --> 00:05:26,700 معظم لديك مسابقة التسوق 0 في الظهر. 105 00:05:26,700 --> 00:05:29,820 إذا لم تقم بذلك، ونأمل تتذكر ذلك قليلا. 106 00:05:29,820 --> 00:05:34,770 ولكن إذا كنت قد اتخذت مسابقة 0، فإنك لديك أيضا إمكانية الوصول إلى الإنترنت في PDF 107 00:05:34,770 --> 00:05:35,890 الحلول العينة. 108 00:05:35,890 --> 00:05:39,480 >> هل لدى أي شخص أي أسئلة قبل نحن القفز الى المواد الأسبوع حول 109 00:05:39,480 --> 00:05:41,520 مشكلة خاصة على مسابقة 0 - 110 00:05:41,520 --> 00:05:44,630 لماذا الجواب هو ما هو عليه؟ 111 00:05:44,630 --> 00:05:47,255 هو أي شخص الخلط حول أي شيء؟ 112 00:05:47,255 --> 00:05:50,230 حتى إذا كنت حصلت على هذه المشكلة حق، ولكن فقط أود لي أن أشرح ذلك قليلا 113 00:05:50,230 --> 00:05:52,640 أكثر من ذلك، أنا سعيد للقيام بذلك الآن. 114 00:05:52,640 --> 00:05:57,800 >> حتى لقد طلبت يا رفاق ل يأتي مستعدا مع بعض 115 00:05:57,800 --> 00:05:59,440 الأفكار حول مسابقة 0. 116 00:05:59,440 --> 00:06:02,660 حتى الذين يرغبون في الحصول على لنا بدأت مع سؤال أو 117 00:06:02,660 --> 00:06:04,655 التعليق على مسابقة 0؟ 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [ورقة سرقة] 120 00:06:10,410 --> 00:06:11,470 >> JASON هيرشهورن: ليس الجميع فعلت تماما. 121 00:06:11,470 --> 00:06:12,720 إذا كنت لا تعرف [ضحك] 122 00:06:12,720 --> 00:06:15,950 يجب أن تكون هناك بعض الأسئلة حول مسابقة 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 موافق. 125 00:06:28,590 --> 00:06:29,210 نعم. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: عدد 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON هيرشهورن: عدد 10. 129 00:06:33,560 --> 00:06:35,400 أي واحد كان الرقم 10؟ 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: و- 131 00:06:35,840 --> 00:06:36,420 >> JASON هيرشهورن: I haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: وتشمل - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON هيرشهورن: عدد 10 وكان ثمانية ط - الكتابة ثمانية إلى i؟ 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: نعم. 136 00:06:42,980 --> 00:06:43,630 >> JASON هيرشهورن: OK. 137 00:06:43,630 --> 00:06:47,390 ذلك سؤال آخر هل يمكن أن يكون طلب كان أنا عالم الغيب؟ 138 00:06:47,390 --> 00:06:48,630 الجواب هو نعم. 139 00:06:48,630 --> 00:06:52,060 في القسم قبل هذه المسابقة، سألت يا رفاق لرمز كل من الجنيه الاسترليني و 140 00:06:52,060 --> 00:06:52,980 ثمانية لط. 141 00:06:52,980 --> 00:06:54,770 كل منهما حدث ل تظهر على هذه المسابقة. 142 00:06:54,770 --> 00:06:57,510 لذلك نأمل، الذي دفعته الانتباه إلى ذلك. 143 00:06:57,510 --> 00:07:02,520 >> وإذا كان لديك، ثم عملتم ربما أحسنت على هذين. 144 00:07:02,520 --> 00:07:06,030 ولكن ثمانية إلى i، لم نكن في الواقع رمز أنه في الصف، ولكنه كان، مرة أخرى، 145 00:07:06,030 --> 00:07:07,500 طلب على هذه المسابقة. 146 00:07:07,500 --> 00:07:13,270 حتى بضعة أشياء لاتخاذ ملاحظة عندما الترميز ثمانية إلى i. 147 00:07:13,270 --> 00:07:17,320 أول شيء، في هذه المسألة، وكان أن كنت في حاجة للتحقق مما إذا السلسلة 148 00:07:17,320 --> 00:07:20,300 كان مساويا لاغية. 149 00:07:20,300 --> 00:07:28,060 >> حاول زوجان الناس للتحقق في وقت لاحق في برنامج كان إذا ط ق قوس - 150 00:07:28,060 --> 00:07:30,940 حتى شخصية محددة في هذا سلسلة - كان يساوي فارغة. 151 00:07:30,940 --> 00:07:35,600 ولكن تذكر، وهذا باطل هو في الأساس - انها جيدة للتفكير في 152 00:07:35,600 --> 00:07:39,100 فارغة كمؤشر صفر - مؤشر إلى الصفر - 153 00:07:39,100 --> 00:07:40,920 في مكان ما في الذاكرة حيث أنت لا يمكن أبدا الوصول إليها. 154 00:07:40,920 --> 00:07:44,730 >> حتى إذا كان هناك شيء يساوي فارغة، وكنت نعرف أنه لم يتم تهيئة ذلك، 155 00:07:44,730 --> 00:07:46,430 أو لا يوجد شيء هناك. 156 00:07:46,430 --> 00:07:50,950 حتى و هو نجم شار، ق قوس ط هو شار. 157 00:07:50,950 --> 00:07:57,410 لذلك فمن المنطقي أن يقارن ق إلى فارغة، ولكن ليس قوس ق ط إلى قيمة خالية. 158 00:07:57,410 --> 00:07:59,390 ولكن مرة أخرى - بحيث كانت أول شيء التي كان من المفترض القيام به - 159 00:07:59,390 --> 00:08:03,510 تحقق للتأكد من أن كنت في الواقع حصلت سلسلة حقيقية. 160 00:08:03,510 --> 00:08:08,020 >> المقبل، أردت أن تذهب من خلال كل حرف في السلسلة. 161 00:08:08,020 --> 00:08:12,500 وذلك من شأنه أن يكون مثل ليالي قوس أنا، على سبيل المثال، إذا كنت غير مكرر الخاصة بك. 162 00:08:12,500 --> 00:08:17,250 ويأخذ هذا الطابع، و الحصول على قيمتها الفعلية. 163 00:08:17,250 --> 00:08:21,800 لقد كان بمثابة مخزن شار، ولكن قيمة ASCII للصفر - 164 00:08:21,800 --> 00:08:23,010 صفر كحرف - 165 00:08:23,010 --> 00:08:25,450 ليس صحيحا في الواقع صفر. 166 00:08:25,450 --> 00:08:28,700 انها بعض رقم الأخرى التي يمكنك البحث عنها في جدول ASCII. 167 00:08:28,700 --> 00:08:30,790 >> حتى طريقة واحدة لتصحيح ذلك - الارجح أفضل وسيلة لتصحيح ل 168 00:08:30,790 --> 00:08:33,760 ذلك - وطرح منه قيمة حرف - 169 00:08:33,760 --> 00:08:35,140 صفر كحرف. 170 00:08:35,140 --> 00:08:38,490 اقتباس واحد حتى ناقص، الصفر، اقتباس مفردة أخرى. 171 00:08:38,490 --> 00:08:44,620 سوف تأخذ أيا كان عدد لديك كما شار، وسهولة الحصول عليها مساوية ل 172 00:08:44,620 --> 00:08:46,720 عدد كعدد الفعلية. 173 00:08:46,720 --> 00:08:50,300 >> والتي هي مشابهة جدا لنهج الكثير من الناس خرجوا في 174 00:08:50,300 --> 00:08:52,800 مشكلة تعيين 2، مع قيصر وViginere - 175 00:08:52,800 --> 00:08:55,160 تلك الأصفار، عند واستدارتها. 176 00:08:55,160 --> 00:08:59,210 وذلك بعد أن يكون ذلك عن عدد من صفر إلى تسعة، ثم - اعتمادا على 177 00:08:59,210 --> 00:09:02,750 أين تذهب في العدد النهائي - تحتاج إلى اضربها 178 00:09:02,750 --> 00:09:04,120 من قبل قوة من 10. 179 00:09:04,120 --> 00:09:07,340 >> انتقلت بعض الناس من العودة إلى الجبهة، وتضاعفت الفرد 180 00:09:07,340 --> 00:09:08,940 عدد من قبل قوة من 10. 181 00:09:08,940 --> 00:09:11,160 انتقلت بعض الناس من في الأمام إلى الخلف - 182 00:09:11,160 --> 00:09:14,430 وهكذا استغرق أعلى طلب أرقام الأولى - 183 00:09:14,430 --> 00:09:18,190 وسيوفر تلك في المتغير العداد العالمي. 184 00:09:18,190 --> 00:09:20,880 ثم في كل مرة من خلال ل حلقة، ضرب هذا العملاق العالمي 185 00:09:20,880 --> 00:09:25,640 مواجهة المتغير بنسبة 10، لجعل مساحة للشار المقبل. 186 00:09:25,640 --> 00:09:28,750 >> بحيث كان مربكة قليلا دون لي كتابته على السبورة. 187 00:09:28,750 --> 00:09:31,550 ولكن الحل عينة هو متاح لك. 188 00:09:31,550 --> 00:09:32,870 ولكن تلك كانت أشياء كبيرة كنا نبحث عن. 189 00:09:32,870 --> 00:09:36,400 أيضا تحقق للتأكد من أن كل كان الطابع الفردي الواقع 190 00:09:36,400 --> 00:09:39,780 حرف بين صفر وتسعة، وليس بعض الحرف الأخرى، مثل A، 191 00:09:39,780 --> 00:09:41,160 على سبيل المثال. 192 00:09:41,160 --> 00:09:43,150 >> كانت تلك الأشياء كنا نبحث لفي هذا السؤال. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 لا أن أجيب على سؤالك؟ 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: نعم. 196 00:09:49,320 --> 00:09:50,240 >> JASON هيرشهورن: OK. 197 00:09:50,240 --> 00:09:53,940 هل هناك أي أسئلة أخرى حول مسابقة 0؟ 198 00:09:53,940 --> 00:09:55,440 ماذا عن تجميع؟ 199 00:09:55,440 --> 00:09:56,740 الجميع تجميع أليس كذلك؟ 200 00:09:56,740 --> 00:09:58,370 لا. 201 00:09:58,370 --> 00:09:58,840 كان هناك - 202 00:09:58,840 --> 00:10:01,010 [ضحك] 203 00:10:01,010 --> 00:10:03,265 أي أسئلة حول عملية تجميع؟ 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 نجاح باهر. 206 00:10:06,966 --> 00:10:11,090 >> [ورقة سرقة] 207 00:10:11,090 --> 00:10:11,520 >> JASON هيرشهورن: نعم. 208 00:10:11,520 --> 00:10:11,700 مايكل. 209 00:10:11,700 --> 00:10:14,140 >> مايكل: هل عدد 7 - عشوائية؟ 210 00:10:14,140 --> 00:10:16,500 >> JASON هيرشهورن: عدد 7. 211 00:10:16,500 --> 00:10:20,670 وكان عدد 7 الحصول على عدد صحيح عشوائي. 212 00:10:20,670 --> 00:10:21,110 ممتازة. 213 00:10:21,110 --> 00:10:25,630 لذلك كنت نظرا لعدد صحيح و صحيح ب، وتريد عشوائي 214 00:10:25,630 --> 00:10:28,710 عدد صحيح بين أ و ب. 215 00:10:28,710 --> 00:10:31,740 يمكن أن نكتب في الواقع هذا واحد على المجلس، لأن هذا واحد 216 00:10:31,740 --> 00:10:33,320 كان سطر واحد من التعليمات البرمجية - 217 00:10:33,320 --> 00:10:34,390 طريقة واحدة للقيام بذلك. 218 00:10:34,390 --> 00:10:37,810 >> لذلك نحن تعطى drand بوصفه وظيفة يمكن أن نستخدمها. 219 00:10:37,810 --> 00:10:38,820 وماذا drand - 220 00:10:38,820 --> 00:10:40,290 على افتراض انه تم المصنفة ذلك - 221 00:10:40,290 --> 00:10:42,316 ماذا drand العودة؟ 222 00:10:42,316 --> 00:10:44,840 >> مايكل: A تعويم بين 0.0 و 1.0. 223 00:10:44,840 --> 00:10:45,530 >> JASON هيرشهورن: عدد - نعم. 224 00:10:45,530 --> 00:10:47,910 عدد بين 0 و 1. 225 00:10:47,910 --> 00:10:51,760 وبذلك نكون قد وب. 226 00:10:51,760 --> 00:10:55,480 ومن ثم لدينا رقم عشوائي لدينا بين 0 و 1 التي قدمها لنا drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 بعض الناس حاول أن يضع ب، أو ب ناقص لذلك، أو شيء داخل تلك 229 00:11:06,630 --> 00:11:07,960 الأقواس. 230 00:11:07,960 --> 00:11:11,210 فإن ذلك يعني انهم الحجج لهذه الوظيفة. 231 00:11:11,210 --> 00:11:13,450 >> drand لا يأخذ أي الحجج - مثل getString لا 232 00:11:13,450 --> 00:11:14,330 لا تأخذ أي حجج. 233 00:11:14,330 --> 00:11:16,600 حتى انها مجرد PAREN مفتوحة، على مقربة PAREN - وهذا، في حد ذاته، هو 234 00:11:16,600 --> 00:11:17,330 استدعاء دالة. 235 00:11:17,330 --> 00:11:19,770 والتي تمنحك عددا بين 0 و 1. 236 00:11:19,770 --> 00:11:22,820 بالطبع، لدينا مجموعة كاملة أن الأرقام يمكن أن تكون فيه. 237 00:11:22,820 --> 00:11:28,470 >> أقول، إذا هو ب 10 وعلى بعد 5، ونحن حقا تريد رقم مع مجموعة من 5. 238 00:11:28,470 --> 00:11:36,940 وبالتالي فإن الشيء التالي الذي عليك القيام به هو اضرب هذا من قبل مجموعة ب ناقص. 239 00:11:36,940 --> 00:11:40,380 حتى على افتراض أن هو ضرب. 240 00:11:40,380 --> 00:11:42,590 والتي سوف تعطينا رقم ضمن نطاق معين. 241 00:11:42,590 --> 00:11:46,610 وهذا النطاق كونها محددة الفرق بين ب ناقص. 242 00:11:46,610 --> 00:11:50,030 >> وأخيرا، والتي سوف تعطي إلا أنه من - ويقول تتراوح ما بين ب ناقص 243 00:11:50,030 --> 00:11:52,520 و5، والتي سوف تعطينا عدد 0-5. 244 00:11:52,520 --> 00:11:56,000 ولكن إذا كان هو في الواقع 5، ونحن بحاجة إلى تعزيز هذا النطاق تصل إلى حيث انها 245 00:11:56,000 --> 00:12:01,380 من المفترض أن يكون في الواقع، عن طريق إضافة. 246 00:12:01,380 --> 00:12:02,580 بحيث يحصل على حق المنطق. 247 00:12:02,580 --> 00:12:03,745 وبعد ذلك، سيكون لديك سؤال آخر؟ 248 00:12:03,745 --> 00:12:04,547 >> مايكل: رقم 249 00:12:04,547 --> 00:12:06,010 أشعر غبية حقا الآن. 250 00:12:06,010 --> 00:12:06,405 [ضحك] 251 00:12:06,405 --> 00:12:06,730 >> JASON هيرشهورن: رقم 252 00:12:06,730 --> 00:12:08,640 لا أشعر غبية حقا. 253 00:12:08,640 --> 00:12:10,560 كافح هناك عدد من الناس مع هذا السؤال. 254 00:12:10,560 --> 00:12:13,920 ومن ثم، فإن السؤال الآخر هو، drand، قال لك، يعطيك تعويم - 255 00:12:13,920 --> 00:12:14,940 إرجاع عشري. 256 00:12:14,940 --> 00:12:18,020 ولكن هذه الوظيفة طلب الواقع لعدد صحيح يمكن إرجاعها. 257 00:12:18,020 --> 00:12:23,700 >> لا تحتاج ليلقي هذا صراحة إلى عدد صحيح، لأن هذه 258 00:12:23,700 --> 00:12:29,090 وعمليات التعامل معها على أنها جميعا تعويم - وعدد النقطة العائمة. 259 00:12:29,090 --> 00:12:31,570 مثل هذه الإرادة - حتى لو كان هذا هو عدد صحيح، هذه الإرادة 260 00:12:31,570 --> 00:12:32,890 أن تتضاعف بشكل صحيح. 261 00:12:32,890 --> 00:12:34,000 وسوف تعمل جميع الضرب. 262 00:12:34,000 --> 00:12:35,060 لا تحتاج للادلاء هنا. 263 00:12:35,060 --> 00:12:36,480 في الواقع، يجب أن لا يلقي عليه. 264 00:12:36,480 --> 00:12:37,310 >> التي من شأنها - 265 00:12:37,310 --> 00:12:40,750 إذا كنت يلقي عددا هذا هو بين 0 و 1 - 266 00:12:40,750 --> 00:12:42,680 رقم عشوائي، وهذه نقطة عائمة - 267 00:12:42,680 --> 00:12:47,850 بعد ذلك سوف يكون إما 0 أو 1 فقط، لذلك فسوف تفقد كل ذلك بدقة. 268 00:12:47,850 --> 00:12:50,120 ولكن في نهاية المطاف، عند العودة، فإنه يحصل تلقائيا 269 00:12:50,120 --> 00:12:51,620 إعادته كعدد. 270 00:12:51,620 --> 00:12:56,870 لذلك أنت لا تحتاج إلى القيام به أن صب نفسك. 271 00:12:56,870 --> 00:13:00,810 >> لذلك كان هذا الجواب ل هذا السؤال، رقم 7. 272 00:13:00,810 --> 00:13:02,190 أي أسئلة أخرى حول مسابقة 0؟ 273 00:13:02,190 --> 00:13:03,300 نعم، آني. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: متى نستخدم عودي - 275 00:13:05,050 --> 00:13:07,850 متى نستخدم الحلقات التكرارية؟ 276 00:13:07,850 --> 00:13:10,210 >> JASON هيرشهورن: عندما تستخدمون عودي - أكثر من ذلك عموما، و 277 00:13:10,210 --> 00:13:14,110 إيجابيات وسلبيات العودية مقابل نهج تكرارية. 278 00:13:14,110 --> 00:13:17,110 أي شخص يمكن أن نقدم الموالية أو يخدع؟ 279 00:13:17,110 --> 00:13:19,460 من فضلك؟ 280 00:13:19,460 --> 00:13:20,140 لا يمكن أحدا. 281 00:13:20,140 --> 00:13:22,526 الذين يمكن أن تقدم الموالية أو يخدع؟ 282 00:13:22,526 --> 00:13:26,963 >> [ورقة سرقة] 283 00:13:26,963 --> 00:13:29,730 >> الطالب 1: متكرر أقل الترميز - الكتابة أقل؟ 284 00:13:29,730 --> 00:13:33,170 >> JASON هيرشهورن: وهكذا عموما، العودية خاصة، وهي وظيفة - 285 00:13:33,170 --> 00:13:35,750 أو خوارزمية مثل دمج النوع - الذي يفسح المجال 286 00:13:35,750 --> 00:13:37,300 إلى نهج العودية - 287 00:13:37,300 --> 00:13:40,710 قد يكون أكثر وضوحا إلى رمز متكرر. 288 00:13:40,710 --> 00:13:43,940 وفقط أكثر منطقية للقيام بذلك بشكل متكرر. 289 00:13:43,940 --> 00:13:46,230 بحيث سيكون الموالية لالعودية. 290 00:13:46,230 --> 00:13:46,610 الآخرين؟ 291 00:13:46,610 --> 00:13:47,467 نعم؟ 292 00:13:47,467 --> 00:13:49,240 >> الطالب 2: ليخدع العودية - 293 00:13:49,240 --> 00:13:50,940 ويستخدم أكثر من الذاكرة. 294 00:13:50,940 --> 00:13:52,200 >> JASON هيرشهورن: إذن صحيح تماما. 295 00:13:52,200 --> 00:13:55,720 وهناك وظيفة العودية الحفاظ على إضافة كومة إطارات إلى المكدس. 296 00:13:55,720 --> 00:13:59,690 لذلك إذا كنت تعمل على الكثير من الأرقام، ويجب أن نسمي هذا 297 00:13:59,690 --> 00:14:02,560 تعمل الكثير، فإنك سوف بالتأكيد تناول المزيد من الذاكرة، في حين 298 00:14:02,560 --> 00:14:05,810 سوف نهج تكرارية وضع واحد فقط كومة الإطار على المكدس، ل 299 00:14:05,810 --> 00:14:08,420 كل ذلك يحدث داخل وظيفة واحدة. 300 00:14:08,420 --> 00:14:11,010 >> أي إيجابيات وسلبيات أخرى؟ 301 00:14:11,010 --> 00:14:11,500 نعم. 302 00:14:11,500 --> 00:14:12,550 >> الطالب 3: إيجابيات لالعودية. 303 00:14:12,550 --> 00:14:15,950 لم يكن لديك لتحديد في تقدم عدد المرات التي 304 00:14:15,950 --> 00:14:17,660 كان رمز لتكرارها. 305 00:14:17,660 --> 00:14:22,810 هل يمكن أن يكون عدد محدد سلفا من الأوقات التي لديك لتكرار، ثم 306 00:14:22,810 --> 00:14:26,420 العودية هو أفضل، ل فإنه يأخذ تلك النتيجة. 307 00:14:26,420 --> 00:14:27,780 >> JASON هيرشهورن: أعتقد أن هذا صحيح. 308 00:14:27,780 --> 00:14:30,770 ولكن اعتقد انه في كلتا الحالتين لو كنت أبدا - 309 00:14:30,770 --> 00:14:33,290 ربما كنت تحصل على بعض مدخلات من المستخدم. 310 00:14:33,290 --> 00:14:35,990 أو هذه الوظيفة سيكون لها بعض المدخلات التي من شأنها أن تحدد عدد المرات التي 311 00:14:35,990 --> 00:14:36,730 يجب تشغيل. 312 00:14:36,730 --> 00:14:39,520 لذلك عموما، فإنك لن رمز القرص الثابت - حتى في نهج تكرارية - كيف 313 00:14:39,520 --> 00:14:40,940 يجب تشغيل مرات عديدة أن حلقة. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> هل لديك آخر كنتم التفكير، آني؟ 316 00:14:48,670 --> 00:14:49,330 موافق. 317 00:14:49,330 --> 00:14:51,650 حتى تلك هي على الأرجح اثنين - 318 00:14:51,650 --> 00:14:54,370 أكبر المؤيدين وأكبر يخدع لالعودية مقابل 319 00:14:54,370 --> 00:14:57,080 نهج تكرارية. 320 00:14:57,080 --> 00:14:57,690 موافق. 321 00:14:57,690 --> 00:14:59,465 أي شيء آخر على مسابقة 0؟ 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> دعنا ننتقل. 324 00:15:09,920 --> 00:15:15,260 ملف I / O. هناك رائعة قصيرة هذا الاسبوع على ملف I / O أن نأمل 325 00:15:15,260 --> 00:15:19,270 كنت قد شاهدت متعددة مرات، ومعجبا به. 326 00:15:19,270 --> 00:15:22,910 وهناك الكثير من العمل ذهب إلى ذلك، ولقد سمعت أنها مفيدة بجنون. 327 00:15:22,910 --> 00:15:25,740 أنا وشملت أيضا وصلة على هذه الشريحة، في حال كنت لم تكن لديهم 328 00:15:25,740 --> 00:15:29,160 فرصة لمشاهدته 10 مرات. 329 00:15:29,160 --> 00:15:35,280 >> لذلك، ونحن في سبيلنا للذهاب لفترة وجيزة على الخطوات الرئيسية لفتح والعمل 330 00:15:35,280 --> 00:15:38,400 مع الملفات، ومن ثم نحن نذهب ل الغوص في مشكلة الترميز قبل 331 00:15:38,400 --> 00:15:40,400 دراسة مجموعة مشكلة. 332 00:15:40,400 --> 00:15:44,330 ذلك مرة أخرى، وأنا ذاهب لوضع هذا الأمر على الشاشة، ولكن انا ذاهب الى الحديث عن 333 00:15:44,330 --> 00:15:47,630 دقيقة واحدة فقط حول ما نحن تفعل هنا مع ملف I/O-- 334 00:15:47,630 --> 00:15:49,090 ماذا يعني ذلك؟ 335 00:15:49,090 --> 00:15:55,280 >> وهذا يعني أننا يمكن أن تخلق لدينا برامج، ومن ثم يكون لدينا برامج 336 00:15:55,280 --> 00:16:00,370 الخروج، وليس جعلت أي تأثير على العالم الخارجي من برنامجنا. 337 00:16:00,370 --> 00:16:04,630 ولكن عندما نبدأ العمل مع الملفات - كلا قراءتها في خلق و 338 00:16:04,630 --> 00:16:10,460 منهم - فإننا يمكن أن يكون له بعض التأثير على العالم الخارجي من برنامجنا. 339 00:16:10,460 --> 00:16:15,440 >> تماما مثل إذا كان برنامج Microsoft Word غير قادرة لتقديم أي مستندات Word، ثم 340 00:16:15,440 --> 00:16:18,710 مرة واحدة إنهاء Microsoft Word، كل الكلمات أن يكون قد انتهى العمل، وأنه سيكون 341 00:16:18,710 --> 00:16:19,740 يكون حقا عديمة الفائدة. 342 00:16:19,740 --> 00:16:23,620 نحن لا نريد في نهاية المطاف لتكون قادرة على كتابة البرامج التي يمكن أن تؤثر على 343 00:16:23,620 --> 00:16:31,350 العالم من حولهم، سواء من خلال اتخاذ في المدخلات المعقدة - من حيث الملفات و 344 00:16:31,350 --> 00:16:37,080 عبر الملفات، وخلق اهتمام أيضا والنواتج قاهرة - 345 00:16:37,080 --> 00:16:39,520 من حيث أنواع مختلفة من الملفات. 346 00:16:39,520 --> 00:16:43,730 >> لذلك هذا هو السبب في أننا بدأنا تعلم كيفية العمل مع ملفات. 347 00:16:43,730 --> 00:16:47,080 وبشكل أكثر تحديدا، ما ما نفعله هو على النحو التالي. 348 00:16:47,080 --> 00:16:47,680 الأمر في غاية البساطة. 349 00:16:47,680 --> 00:16:51,530 لا يوجد سوى بضع خطوات، و تم سردها هنا على هذا الرمز. 350 00:16:51,530 --> 00:16:55,130 لذلك نحن في طريقنا للذهاب من خلال هذا سطر التعليمات البرمجية سطرا. 351 00:16:55,130 --> 00:16:57,630 >> الأولى، ترى الضوء - 352 00:16:57,630 --> 00:17:01,330 عندما كنت تعمل مع ملف، بغض النظر عن نوع الملف هو عليه، 353 00:17:01,330 --> 00:17:02,670 تحتاج إلى فتحه. 354 00:17:02,670 --> 00:17:05,130 وهذا هو مع دعوة FOPEN - 355 00:17:05,130 --> 00:17:05,950 الحق هنا. 356 00:17:05,950 --> 00:17:07,980 عليك تضمين اسم الملف. 357 00:17:07,980 --> 00:17:11,930 إذا لم يكن الملف في الدليل الخاص بك، أو المجلد حيث هذا البرنامج 358 00:17:11,930 --> 00:17:15,910 حياة، فأنت بحاجة أيضا لتشمل الطريق إلى حيث هذا الملف هو. 359 00:17:15,910 --> 00:17:19,099 >> ونحن في طريقنا لنفترض أن هذا ملف يسمى "text.txt" - 360 00:17:19,099 --> 00:17:24,220 مستند نصي بسيط - هو في نفس المجلد مثل هذا البرنامج. 361 00:17:24,220 --> 00:17:26,859 بحيث شيء آخر أن نأخذ في العقل - أنه إذا كنت ترغب في فتح ملف 362 00:17:26,859 --> 00:17:30,050 في مكان آخر، تحتاج فعلا لتشمل موقعه. 363 00:17:30,050 --> 00:17:33,520 >> الثانية، يمكنك تمرير وسيطة ل الدالة fopen، وهذا ما تريد القيام به 364 00:17:33,520 --> 00:17:34,620 مع الملف. 365 00:17:34,620 --> 00:17:38,450 هناك ثلاث حجج الرئيسية التي وأنت تسير لتمريرها إلى FOPEN. 366 00:17:38,450 --> 00:17:40,060 الذين يمكن أن تعطيني هؤلاء الثلاثة؟ 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 الذين يمكن أن تعطيني واحد منهم؟ 369 00:17:47,130 --> 00:17:48,130 نعم. 370 00:17:48,130 --> 00:17:50,010 >> الطالب 4: اسم الملف؟ 371 00:17:50,010 --> 00:17:50,440 >> JASON هيرشهورن: آسف. 372 00:17:50,440 --> 00:17:55,490 ثلاث حجج الرئيسية التي يمكن أن تمر كوسيطة الثاني لFOPEN. 373 00:17:55,490 --> 00:17:57,060 كنت على حق - اسم الملف هي الحجة الأولى. 374 00:17:57,060 --> 00:18:01,620 ولكن الحجة الثانية هي أن FOPEN عموما ثلاث سلاسل، و- نعم. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> ALEJA: ألف لإلحاق. 377 00:18:03,490 --> 00:18:06,840 >> JASON هيرشهورن: A، إذا كنت ترغب في إلحاق إلى ملف موجود مسبقا. 378 00:18:06,840 --> 00:18:07,810 >> الطالب 5: R للقراءة. 379 00:18:07,810 --> 00:18:09,930 >> JASON هيرشهورن: R، إذا كنت تريد أن تقرأ من ملف. 380 00:18:09,930 --> 00:18:10,670 >> الطالب 6: W للكتابة. 381 00:18:10,670 --> 00:18:12,840 >> JASON هيرشهورن: وث، إذا كنت تريد أن تكتب إلى ملف. 382 00:18:12,840 --> 00:18:17,570 حتى في هذه الحالة، نحن الكتابة إلى الملف، لذلك لدينا ث. 383 00:18:17,570 --> 00:18:22,360 تفتحه، لديك أيضا لإنقاذ ملف في مكان ما، وهذا مع 384 00:18:22,360 --> 00:18:26,000 رمز إلى الجانب الأيسر من عامل التعيين - 385 00:18:26,000 --> 00:18:31,220 أنا خلق مؤشر إلى ملف ودعا، في هذه الحالة، الملف. 386 00:18:31,220 --> 00:18:36,070 >> نحن لن تقلق ما هذا كل شيء القبعات FILE هو. 387 00:18:36,070 --> 00:18:40,600 ويكفي ان نقول، بل هو طويل تيار من الآحاد والأصفار و. 388 00:18:40,600 --> 00:18:44,970 وهذه هي الطريقة التي نحن بصدد تشغيله وفهمه. 389 00:18:44,970 --> 00:18:47,300 >> الشيء التالي الذي عليك القيام به - و هذا أمر مهم للغاية - 390 00:18:47,300 --> 00:18:49,070 كلما قمت بفتح ملف - 391 00:18:49,070 --> 00:18:54,250 في الواقع، كلما قمت استدعاء malloc، ل سبيل المثال، والحصول على بعض الذاكرة ومحاولة 392 00:18:54,250 --> 00:18:57,980 وحفظه في المؤشر، كنت دائما تريد أن تحقق للتأكد من أن هذا 393 00:18:57,980 --> 00:19:00,230 لم لا وظيفة العودة فارغة. 394 00:19:00,230 --> 00:19:05,230 >> حتى في هذه الحالة، ونحن نتحرى لجعل تأكد من أن فتحنا فعلا 395 00:19:05,230 --> 00:19:10,230 الملف بشكل صحيح، وكان هناك أي خطأ في برنامجنا. 396 00:19:10,230 --> 00:19:15,160 المقبل، بعد أن نكون قد فحص للتأكد من أن لدينا ملف العمل، يمكننا 397 00:19:15,160 --> 00:19:18,520 إرسال إلى، أو قراءة من، أو إلحاق الملف. 398 00:19:18,520 --> 00:19:24,270 في هذه الحالة، وأنا ببساطة طباعة سطر واحد إلى هذا الملف. 399 00:19:24,270 --> 00:19:25,450 >> كيف لي أن أعرف ذلك؟ 400 00:19:25,450 --> 00:19:27,990 حسنا، أنا باستخدام هذه الوظيفة دعا fprintf. 401 00:19:27,990 --> 00:19:30,970 جميع الوظائف التي سوف تستخدم عند الكتابة إلى، أو القراءة من أو 402 00:19:30,970 --> 00:19:34,950 ومعالجة الملفات تكون مشابهة ل وظائف كنت قد رأيت من قبل، ولكن 403 00:19:34,950 --> 00:19:38,420 تبدأ بالحرف F، يقف لملف. 404 00:19:38,420 --> 00:19:43,440 وfprintf، خلافا لدينا الطباعة العادية التطبيق، ويأخذ حجة إضافية واحدة، 405 00:19:43,440 --> 00:19:47,800 وهذا هو الملف حيث كنت تريد طباعة هذا الخط ل. 406 00:19:47,800 --> 00:19:50,640 >> ليس لدي أي شيء ل حق ohai. 407 00:19:50,640 --> 00:19:52,860 ليس لدي الثالث حجة لprintf - 408 00:19:52,860 --> 00:19:57,030 أو الوسيطة الثانية إلى printf، و الوسيطة الثالثة إلى fprintf، لأنني 409 00:19:57,030 --> 00:19:59,480 ليس لدينا أي النائبة هنا. 410 00:19:59,480 --> 00:20:01,070 أنا لا بما في ذلك أي متغيرات. 411 00:20:01,070 --> 00:20:06,070 ولكن مرة أخرى، fprintf وجميع هذه الملفات الوظائف التي تعمل مع الملفات 412 00:20:06,070 --> 00:20:09,820 تسير عموما في حاجة إلى ملف على التي نعمل. 413 00:20:09,820 --> 00:20:15,960 >> أخيرا، والشيء المهم الماضي ل القيام به هو إغلاق الملف، تماما مثل 414 00:20:15,960 --> 00:20:19,530 مع - كلما كنا malloc شيء، نحن نريد لتحرير شيء، خشية أن 415 00:20:19,530 --> 00:20:22,730 لديها تسرب الذاكرة - نريد لإغلاق الملف لدينا. 416 00:20:22,730 --> 00:20:28,180 إذا خرجت هذا البرنامج دون إغلاق الملف الاحتمالات هي أن لا شيء يذهب 417 00:20:28,180 --> 00:20:30,050 خطأ، لا سيما إذا كان وكان ملف صغير. 418 00:20:30,050 --> 00:20:35,020 >> لكنها بالتأكيد أسلوب الترميز جيدة وممارسة لإغلاق الملف الخاص بك دائما 419 00:20:35,020 --> 00:20:38,050 عند الانتهاء استخدامه. 420 00:20:38,050 --> 00:20:43,630 بحيث هي من أساسيات ملف I / O. ربما كنت قد رأيت ذلك من قبل، أو 421 00:20:43,630 --> 00:20:45,710 شاهدت ذلك في هذا قصيرة رائعة. 422 00:20:45,710 --> 00:20:48,410 هل لدى أي شخص أي أسئلة، قبل نذهب إلى بعض الممارسات ترميز 423 00:20:48,410 --> 00:20:51,800 مشاكل، حول ملف I / O أو الخطوات ذهبت للتو قد انتهت؟ 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [TYPING وصل مرحلة] 426 00:21:03,162 --> 00:21:04,150 >> JASON هيرشهورن: هل لديك سؤال، آفي؟ 427 00:21:04,150 --> 00:21:04,660 >> AVI: رقم 428 00:21:04,660 --> 00:21:04,740 >> JASON هيرشهورن: OK. 429 00:21:04,740 --> 00:21:06,746 انا ذاهب الى الانتظار أخرى سبع ثوان. 430 00:21:06,746 --> 00:21:07,590 [ضحك] 431 00:21:07,590 --> 00:21:08,620 وهذا هو نصيحة جيدة حقا. 432 00:21:08,620 --> 00:21:10,750 يا رفاق لا أحب طرح الأسئلة. 433 00:21:10,750 --> 00:21:11,660 هذا شيء طيب. 434 00:21:11,660 --> 00:21:12,330 موافق. 435 00:21:12,330 --> 00:21:17,620 لذلك لدينا مشكلة الممارسة الأول هو، ونحن الذهاب لتكرار وظيفة 436 00:21:17,620 --> 00:21:22,330 أداة سطر الأوامر التي ربما تستخدم من قبل - نسخة - 437 00:21:22,330 --> 00:21:23,500 الأداة نسخة. 438 00:21:23,500 --> 00:21:28,050 إذا قمت بكتابة حزب المحافظين وتمررها بعد ذلك اثنين الحجج في محطة الخاص بك، يمكنك 439 00:21:28,050 --> 00:21:28,980 نسخ ملف. 440 00:21:28,980 --> 00:21:31,220 وهذا ما نحن ذاهبون لكتابة الآن. 441 00:21:31,220 --> 00:21:35,830 >> ذلك مرة أخرى، والقراءة الخروج من هذه الشريحة، فما استقاموا لكم فاستقيموا لك لكتابة برنامج يأخذ 442 00:21:35,830 --> 00:21:38,130 اثنين واثنين فقط من سطر الأوامر الحجج - 443 00:21:38,130 --> 00:21:40,750 ملف المصدر والملف الوجهة - 444 00:21:40,750 --> 00:21:44,590 ونسخ محتويات المصدر ملف إلى ملف الوجهة 445 00:21:44,590 --> 00:21:46,960 بايت واحد في وقت واحد. 446 00:21:46,960 --> 00:21:48,510 ذلك أن الكثير مما تسأل عنه. 447 00:21:48,510 --> 00:21:52,200 >> مرة أخرى، نهجا جيدا لهذا هو ل لا تذهب مباشرة إلى رمز C، ولكن 448 00:21:52,200 --> 00:21:54,280 كسرها نزولا إلى بضع خطوات. 449 00:21:54,280 --> 00:21:58,400 أولا، والتفكير في المنطق - بالضبط ما أنا أطلب منك أن تفعل - 450 00:21:58,400 --> 00:22:00,620 وفهم كل من خطوات لهذه المشكلة. 451 00:22:00,620 --> 00:22:04,410 ليس في C، فقط في بعض شبة الكود، أو حتى نموذج العقلية لل 452 00:22:04,410 --> 00:22:06,030 ما يحدث. 453 00:22:06,030 --> 00:22:10,050 >> المقبل، وبمجرد الانتهاء من شبة الكود أسفل، معرفة كيفية شبة الكود 454 00:22:10,050 --> 00:22:14,600 خرائط على الأدوات والأشياء التي قمت تعلمت استخدام في C. 455 00:22:14,600 --> 00:22:19,070 >> وأخيرا، مرة واحدة لديك كل ما معا، يمكنك رمز المشكلة. 456 00:22:19,070 --> 00:22:23,370 يستغرق 5 إلى 10 دقائق ل العمل على هذه المشكلة. 457 00:22:23,370 --> 00:22:25,800 أنا وضعت الإرشادات احتياطية في الثانية. 458 00:22:25,800 --> 00:22:27,990 ثم ونحن في طريقنا للذهاب أكثر في شبة الكود، ورمز 459 00:22:27,990 --> 00:22:29,230 أنه يعيش كمجموعة. 460 00:22:29,230 --> 00:22:31,640 >> إذا كان لديك أي أسئلة في الوقت الذي كنت العمل على هذا، لا تتردد في رفع 461 00:22:31,640 --> 00:22:34,260 يدك، وأنا سوف يأتي حول والإجابة عليها. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> الطالب 7: هل يمكنني انتقاد قطعة من الورق؟ 464 00:22:39,330 --> 00:22:41,537 >> JASON هيرشهورن: ما الأمر؟ 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [TYPING وصل مرحلة] 467 00:26:48,043 --> 00:26:48,730 >> JASON هيرشهورن: OK. 468 00:26:48,730 --> 00:26:51,710 دعونا نذهب أكثر في شبة الكود الأول، و ثم سأعطيك أكثر زوجين 469 00:26:51,710 --> 00:26:52,960 دقائق لإنهاء الترميز. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> أن الذين يحبون لبدء قبالة لي مع السطر الأول من 472 00:26:58,650 --> 00:27:00,030 شبة الكود لهذه المهمة؟ 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> الطالب 8: تحقق للتأكد من أن أعطيت لك ملفين. 475 00:27:05,740 --> 00:27:06,990 >> JASON هيرشهورن: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 وإذا كنا لا؟ 478 00:27:22,990 --> 00:27:25,974 >> الطالب 8: سوف أعود 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON هيرشهورن: هل نعود 0؟ 480 00:27:27,872 --> 00:27:30,182 >> الطالب 8: إرجاع - 481 00:27:30,182 --> 00:27:30,650 تقطيع. 482 00:27:30,650 --> 00:27:30,850 آسف. 483 00:27:30,850 --> 00:27:31,210 >> JASON هيرشهورن: نعم. 484 00:27:31,210 --> 00:27:32,710 ربما لا 0. 485 00:27:32,710 --> 00:27:34,680 لأن 0 يعني كل شيء كان جيدا. 486 00:27:34,680 --> 00:27:35,030 موافق. 487 00:27:35,030 --> 00:27:36,730 لذلك هذا هو السطر الأول من شبة الكود. 488 00:27:36,730 --> 00:27:38,715 الذي لديه السطر الثاني من شبة الكود؟ 489 00:27:38,715 --> 00:27:40,630 >> الطالب 9: فتح كل الملفات؟ 490 00:27:40,630 --> 00:27:41,880 >> JASON هيرشهورن: افتح كلا الملفين. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 موافق؟ 493 00:27:50,920 --> 00:27:52,850 >> طالب 10: تحقق لمعرفة إذا كان الملف هو NULL؟ 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON هيرشهورن: تحقق للتأكد متأكد ولا هي NULL. 496 00:28:12,580 --> 00:28:15,800 بوصفها جانبا - 497 00:28:15,800 --> 00:28:17,540 خفض 0 - 498 00:28:17,540 --> 00:28:18,887 هو أن NULL؟ 499 00:28:18,887 --> 00:28:20,080 >> طالب 11: رقم 500 00:28:20,080 --> 00:28:21,190 >> JASON هيرشهورن: هذا ليس NULL. 501 00:28:21,190 --> 00:28:23,400 الذي يسمى فاصل NULL. 502 00:28:23,400 --> 00:28:25,580 لقد وردت فعلا مع واحد فقط ل. 503 00:28:25,580 --> 00:28:28,580 حتى التحقق شيء ضد ذلك - وهذا في الواقع شخصية - 504 00:28:28,580 --> 00:28:31,710 حتى التحقق شيء ضد ذلك و ليس نفس التحقق لمعرفة ما اذا كان 505 00:28:31,710 --> 00:28:32,690 يساوي NULL. 506 00:28:32,690 --> 00:28:34,100 >> وبعض الناس - 507 00:28:34,100 --> 00:28:36,040 على مسابقات ومشكلتهم مجموعات - قد حصلت على 508 00:28:36,040 --> 00:28:36,890 اثنان من تلك الخلط. 509 00:28:36,890 --> 00:28:38,830 ولكن اثنين من هؤلاء هم في الواقع مختلفة. 510 00:28:38,830 --> 00:28:40,220 واحدة تنتهي سلسلة - 511 00:28:40,220 --> 00:28:43,210 واحد هو مؤشر إلى 0. 512 00:28:43,210 --> 00:28:46,490 >> طالب 12: لماذا لا تقوم بالتدقيق ل تأكد من أن الملفات ليست NULL 513 00:28:46,490 --> 00:28:48,670 قبل فتحها؟ 514 00:28:48,670 --> 00:28:54,772 >> JASON هيرشهورن: حتى يحفظ مفتوحة شيئا في هذا الملف. 515 00:28:54,772 --> 00:28:57,780 وإذا كنت أعود هنا - 516 00:28:57,780 --> 00:28:59,520 حتى هذا الخط - FOPEN - 517 00:28:59,520 --> 00:29:05,300 سوف أعطيكم عنوان وتخزين هذا العنوان في ملف ما اذا كان يعمل. 518 00:29:05,300 --> 00:29:07,650 إذا كان لا يعمل، فإنه سيتم تخزين فارغة - 519 00:29:07,650 --> 00:29:08,020 >> طالب 12: أوه. 520 00:29:08,020 --> 00:29:08,180 موافق. 521 00:29:08,180 --> 00:29:08,500 حصلت لك. 522 00:29:08,500 --> 00:29:09,050 >> JASON هيرشهورن: في الملف. 523 00:29:09,050 --> 00:29:11,990 لذلك لا يمكن أن تحقق لNULL قبل كنت قد فتحت لهم. 524 00:29:11,990 --> 00:29:13,520 NULL يعني شيئا لم تعمل بشكل صحيح. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 موافق. 527 00:29:18,740 --> 00:29:22,590 حتى تحقق للتأكد من لا غير؟ 528 00:29:22,590 --> 00:29:23,200 أو هي؟ 529 00:29:23,200 --> 00:29:23,770 ماذا نفكر؟ 530 00:29:23,770 --> 00:29:24,310 سنذهب مع ذلك. 531 00:29:24,310 --> 00:29:24,520 >> طالب 13: هل. 532 00:29:24,520 --> 00:29:25,020 >> JASON هيرشهورن: هل؟ 533 00:29:25,020 --> 00:29:25,930 لا هو؟ 534 00:29:25,930 --> 00:29:26,350 >> طالب 13: هل. 535 00:29:26,350 --> 00:29:26,390 >> JASON هيرشهورن: OK. 536 00:29:26,390 --> 00:29:28,510 يبدو أننا لدينا بعض توافق في الآراء بشأن ذلك. 537 00:29:28,510 --> 00:29:30,520 لا هو NULL. 538 00:29:30,520 --> 00:29:32,250 موافق، السطر التالي من شبة الكود. 539 00:29:32,250 --> 00:29:33,600 الذي لم يقدم لي خط حتى الآن؟ 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 ونحن سوف ننتظر منك. 542 00:29:38,295 --> 00:29:39,020 نعم. 543 00:29:39,020 --> 00:29:40,895 >> طالب 14: لديك لقراءة من الملف الأول؟ 544 00:29:40,895 --> 00:29:42,290 >> JASON هيرشهورن: OK. 545 00:29:42,290 --> 00:29:46,240 >> طالب 14: أو نستخدم أو fscanf شيء من هذا القبيل الملف الأول؟ 546 00:29:46,240 --> 00:29:50,650 >> JASON هيرشهورن: لذلك نحن نريد ل قراءة من الملف الأول و- 547 00:29:50,650 --> 00:29:51,900 دعونا نضع هذا الحق هنا. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 القراءة من الملف المصدر. 550 00:30:01,880 --> 00:30:05,370 وبعد ذلك، ماذا نفعل بعد أن قراءة الملف من المصدر؟ 551 00:30:05,370 --> 00:30:06,620 شخص آخر؟ 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> طالب 15: اكتب في الملف الوجهة؟ 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON هيرشهورن: نحن نكتب ل الملف الوجهة، و- 556 00:30:25,620 --> 00:30:26,210 موافق. 557 00:30:26,210 --> 00:30:30,030 ماذا نحن في عداد المفقودين؟ 558 00:30:30,030 --> 00:30:32,460 شخص آخر الذي لم يقدم لي سطر من التعليمات البرمجية حتى الآن - من شبة الكود. 559 00:30:32,460 --> 00:30:33,510 نعم. 560 00:30:33,510 --> 00:30:36,540 >> طالب 16: ربما يمكنك دائما التحقق ما إذا كان هناك شيء لقراءة ل، 561 00:30:36,540 --> 00:30:37,970 مثل السطر التالي؟ 562 00:30:37,970 --> 00:30:39,550 التي هي مثل السطر التالي، معرفة ما إذا كان موجودا. 563 00:30:39,550 --> 00:30:40,660 >> [ELECTRONIC BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON هيرشهورن: عفوا. 565 00:30:41,095 --> 00:30:43,120 هذا البرنامج اليومية بلدي. 566 00:30:43,120 --> 00:30:43,580 نعم؟ 567 00:30:43,580 --> 00:30:44,960 >> طالب 16: نعم. 568 00:30:44,960 --> 00:30:48,940 >> JASON هيرشهورن: حتى تعطي لي واحد مزيد من الوقت. 569 00:30:48,940 --> 00:30:51,640 >> طالب 16: تحقق ما إذا كان هناك لا يزال السطر التالي من 570 00:30:51,640 --> 00:30:52,920 الملف المصدر للقراءة. 571 00:30:52,920 --> 00:30:53,500 >> JASON هيرشهورن: OK. 572 00:30:53,500 --> 00:30:56,060 لذلك نحن لا قراءة خطوط - تم قراءة بايت هنا - 573 00:30:56,060 --> 00:30:57,590 ولكن كنت الصحيح. 574 00:30:57,590 --> 00:31:00,040 نحن نريد أن القراءة والكتابة حتى لم تكن هناك بايت. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 موافق. 577 00:31:11,735 --> 00:31:16,940 وحتى هذه يجب أن تكون حقا بادئة قليلا، لأنهم تحت هناك. 578 00:31:16,940 --> 00:31:17,470 أليس كذلك؟ 579 00:31:17,470 --> 00:31:20,620 حتى نحن في الخارج من وحدات البايت، ونحن في طريقنا لل قراءة الملف من المصدر والكتابة 580 00:31:20,620 --> 00:31:22,160 إلى الملف الوجهة. 581 00:31:22,160 --> 00:31:24,510 >> ثم، ما هو آخر خط شبة الكود؟ 582 00:31:24,510 --> 00:31:26,380 شخص ما الذي لم يعط لي شيئا حتى الآن. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> طالب 17: إغلاق الملفات؟ 585 00:31:30,260 --> 00:31:31,510 >> JASON هيرشهورن: بالضبط. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 إغلاق الملفات. 588 00:31:37,450 --> 00:31:38,400 ولذلك لا يوجد لدينا شبة الكود. 589 00:31:38,400 --> 00:31:41,870 انا ذاهب الى وضع شبة الكود في gedit، وفي بضع دقائق ونحن 590 00:31:41,870 --> 00:31:44,626 ورمز هذا معا. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> موافق. 593 00:33:56,000 --> 00:33:58,290 دعونا نبدأ كمجموعة. 594 00:33:58,290 --> 00:33:59,940 نيشانت، لدي ملف جديد بلدي. 595 00:33:59,940 --> 00:34:01,130 لقد فتحت للتو هذا الأمر. 596 00:34:01,130 --> 00:34:01,880 وثيقة بدون عنوان 1. 597 00:34:01,880 --> 00:34:05,490 ما هو أول شيء يجب أن أقوم به؟ 598 00:34:05,490 --> 00:34:07,040 >> NISHANT: تضمين المكتبات؟ 599 00:34:07,040 --> 00:34:08,219 >> JASON هيرشهورن: OK. 600 00:34:08,219 --> 00:34:11,070 ما المكتبات؟ 601 00:34:11,070 --> 00:34:17,570 >> NISHANT: Stdio.h، stdlib.h، وأعتقد؟ 602 00:34:17,570 --> 00:34:18,000 >> JASON هيرشهورن: OK. 603 00:34:18,000 --> 00:34:21,592 ما هو stdlib ل؟ 604 00:34:21,592 --> 00:34:23,010 >> NISHANT: لقد نسيت. 605 00:34:23,010 --> 00:34:23,219 >> JASON هيرشهورن: OK. 606 00:34:23,219 --> 00:34:24,179 بحيث تشمل stdio و. 607 00:34:24,179 --> 00:34:28,630 ماذا علي أن أفعل حتى قبل أبدأ الترميز؟ 608 00:34:28,630 --> 00:34:29,710 >> NISHANT: كتابة رأس؟ 609 00:34:29,710 --> 00:34:31,830 >> JASON هيرشهورن: كيف يمكنني الحصول عليه الملونة؟ 610 00:34:31,830 --> 00:34:34,060 >> [VOICES فاصلة] 611 00:34:34,060 --> 00:34:35,040 >> NISHANT: كيف تحصل عليه الملونة؟ 612 00:34:35,040 --> 00:34:38,060 >> JASON هيرشهورن: كيف يمكنني تلوين الترميز؟ 613 00:34:38,060 --> 00:34:38,570 >> NISHANT: أنا لا أعرف. 614 00:34:38,570 --> 00:34:38,830 اه. 615 00:34:38,830 --> 00:34:39,389 حفظ. 616 00:34:39,389 --> 00:34:39,929 >> JASON هيرشهورن: حفظ. 617 00:34:39,929 --> 00:34:40,270 نعم. 618 00:34:40,270 --> 00:34:41,760 أود أن حفظه كملف. ج. 619 00:34:41,760 --> 00:34:46,239 حتى حفظه على سطح المكتب كما cp.c. 620 00:34:46,239 --> 00:34:47,280 الحلو. 621 00:34:47,280 --> 00:34:51,199 وإذا كنت ترغب في الحصول على نمط كامل نقطة، ما ينبغي لي 622 00:34:51,199 --> 00:34:53,085 وتشمل في أعلى؟ 623 00:34:53,085 --> 00:34:58,390 >> NISHANT: هل يمكن كتابة اسمك واسم من البرنامج، والغرض 624 00:34:58,390 --> 00:34:59,640 البرنامج كذلك؟ 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON هيرشهورن: تبدو جيدة. 627 00:35:10,040 --> 00:35:10,470 ممتازة. 628 00:35:10,470 --> 00:35:12,940 لذلك كنت قد بدأت قبالة لنا تماما. 629 00:35:12,940 --> 00:35:13,720 وتشمل # - 630 00:35:13,720 --> 00:35:15,365 سنقوم أيضا الكتابة - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 موافق. 633 00:35:30,870 --> 00:35:33,520 لذلك أعتقد أنا كل مجموعة للذهاب. 634 00:35:33,520 --> 00:35:38,003 الذي لديه السطر الأول من رمز بالنسبة لي - أو الأسطر الأولى من التعليمات البرمجية التي 635 00:35:38,003 --> 00:35:41,280 سوف يستغرق لتلبية لدينا أولا التعليق في شبة الكود؟ 636 00:35:41,280 --> 00:35:41,985 لك. 637 00:35:41,985 --> 00:35:48,780 >> طالب 18: لا ينبغي أن يكون الباحث ARGC، ثم شار * ARGV؟ 638 00:35:48,780 --> 00:35:49,490 >> JASON هيرشهورن: أعتقد أنت على حق. 639 00:35:49,490 --> 00:35:56,270 دعونا تغييره إلى int الرئيسي، PAREN مفتوحة، ARGC كثافة العمليات، فاصلة، تشار * ARGV؟ 640 00:35:56,270 --> 00:35:57,150 مثل ذلك؟ 641 00:35:57,150 --> 00:35:57,410 >> طالب 18: بين قوسين. 642 00:35:57,410 --> 00:35:58,260 >> JASON هيرشهورن: بين قوسين. 643 00:35:58,260 --> 00:35:59,860 فتح قوس، قوس وثيق، الأم وثيق. 644 00:35:59,860 --> 00:36:00,240 الكمال. 645 00:36:00,240 --> 00:36:02,160 الآن أستطيع أن تأخذ وسيطات سطر الأوامر. 646 00:36:02,160 --> 00:36:02,430 موافق. 647 00:36:02,430 --> 00:36:04,250 ضمان نحن تعطى ملفين. 648 00:36:04,250 --> 00:36:07,905 هل يمكن ان تعطيني ذلك أيضا. 649 00:36:07,905 --> 00:36:09,180 >> طالب 18: إذا ARGC - 650 00:36:09,180 --> 00:36:11,060 هذا واحد لا يساوي 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON هيرشهورن: إذا PAREN مفتوحة ARGC لا يساوي 3؟ 652 00:36:14,360 --> 00:36:16,970 >> طالب 18: نعم، أنت العودة 1 أو أي شيء. 653 00:36:16,970 --> 00:36:17,460 >> JASON هيرشهورن: آسف. 654 00:36:17,460 --> 00:36:19,120 >> طالب 18: 1 العودة أو أي شيء. 655 00:36:19,120 --> 00:36:20,270 >> JASON هيرشهورن: الرجوع 1. 656 00:36:20,270 --> 00:36:22,230 موافق؟ 657 00:36:22,230 --> 00:36:22,970 عظيم. 658 00:36:22,970 --> 00:36:24,290 فتح كل الملفات. 659 00:36:24,290 --> 00:36:26,160 الذين يمكن أن تساعد لي فتح كل الملفات؟ 660 00:36:26,160 --> 00:36:28,125 الذي لم يقدم لي رمز حتى الآن؟ 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 كورت؟ 663 00:36:32,320 --> 00:36:36,145 >> KURT: لذلك كل مباراة دولية مصدر F-I-L-E نجوم. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON هيرشهورن: أنا ذاهب لإخراج حروف العلة. 666 00:36:40,920 --> 00:36:41,570 تلك هي باردة. 667 00:36:41,570 --> 00:36:42,716 انها مثل نعرفكم. 668 00:36:42,716 --> 00:36:44,610 >> طالب 18: يساوي الدالة fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON هيرشهورن: يساوي الدالة fopen؟ 670 00:36:46,612 --> 00:36:49,870 >> طالب 18: PAREN فتح، ARGV، قوس مفتوح. 671 00:36:49,870 --> 00:36:50,055 >> JASON هيرشهورن: انتظر. 672 00:36:50,055 --> 00:36:50,240 آسف. 673 00:36:50,240 --> 00:36:51,050 PAREN مفتوحة. 674 00:36:51,050 --> 00:36:51,456 موافق. 675 00:36:51,456 --> 00:36:53,080 >> طالب 18: نعم. 676 00:36:53,080 --> 00:36:55,110 ARGV الفرعية 1. 677 00:36:55,110 --> 00:36:55,860 >> JASON هيرشهورن: 1 الفرعية؟ 678 00:36:55,860 --> 00:36:56,140 >> طالب 18: نعم. 679 00:36:56,140 --> 00:36:58,540 ARGV قوس مفتوح 1 - 680 00:36:58,540 --> 00:36:59,730 نعم. 681 00:36:59,730 --> 00:37:06,470 ثم فاصلة، ثم فتح مزدوج الاقتباس، ص، اقتباس مزدوجة، 682 00:37:06,470 --> 00:37:08,250 PAREN وثيق، منقوطة. 683 00:37:08,250 --> 00:37:09,450 >> JASON هيرشهورن: الحلو. 684 00:37:09,450 --> 00:37:10,950 وماذا عن الآخر؟ 685 00:37:10,950 --> 00:37:16,030 >> طالب 18: مشابهة جدا، ولكن بدلا من ذلك من S-R-C، وكنت اسميها D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON هيرشهورن: أوو! 687 00:37:17,060 --> 00:37:17,772 أنا أحب ذلك. 688 00:37:17,772 --> 00:37:20,010 >> طالب 18: فقط D-S-T. نعم. 689 00:37:20,010 --> 00:37:23,057 ثم ARGV، وقوس فتح، 2. 690 00:37:23,057 --> 00:37:23,200 نعم. 691 00:37:23,200 --> 00:37:26,720 ثم ث بدلا من ص. 692 00:37:26,720 --> 00:37:27,620 نعم. 693 00:37:27,620 --> 00:37:29,630 >> JASON هيرشهورن: العظمى. 694 00:37:29,630 --> 00:37:31,360 خطوط القليلة القادمة. 695 00:37:31,360 --> 00:37:34,040 أيضا، إذا كان أي شخص لديه أشياء لإضافة ل الخطوط التي قمنا به، لا تتردد في 696 00:37:34,040 --> 00:37:35,690 إضافة تلك أيضا. 697 00:37:35,690 --> 00:37:37,520 تحقق للتأكد من ليس هو NULL. 698 00:37:37,520 --> 00:37:41,450 الذين يمكن أن تعطي لي رمز ولست بحاجة ل تلبية هذا الخط من شبة الكود؟ 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 القوس والنشاب. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER: إذا سرك يساوي يساوي NULL أو يساوي يساوي DST 702 00:37:58,645 --> 00:38:04,590 NULL، ثم تعود - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON هيرشهورن: ماذا؟ 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: العودة 2؟ 706 00:38:08,890 --> 00:38:09,760 >> JASON هيرشهورن: العودة 2. 707 00:38:09,760 --> 00:38:14,400 حتى إذا تساوي PAREN مفتوحة سرك يساوي NULL، أو - 708 00:38:14,400 --> 00:38:15,590 أيا كان ذلك thing's - الأنابيب؟ 709 00:38:15,590 --> 00:38:16,346 الأنابيب؟ 710 00:38:16,346 --> 00:38:17,140 سنقوم نسميها الأنابيب. 711 00:38:17,140 --> 00:38:22,340 الأنابيب، الأنابيب، DST يساوي يساوي NULL، والعودة 2. 712 00:38:22,340 --> 00:38:23,900 موافق؟ 713 00:38:23,900 --> 00:38:26,060 حتى نحن في الخارج من وحدات البايت - 714 00:38:26,060 --> 00:38:29,820 نحن نوع من تخطي هذه الخطوة أكثر من الجزء شبة الكود للذهاب إلى هنا. 715 00:38:29,820 --> 00:38:31,970 >> ولكن حتى نحن في الخارج من وحدات البايت - ما هذا الصوت مثل؟ 716 00:38:31,970 --> 00:38:34,680 ما هو نوع من بنية C - 717 00:38:34,680 --> 00:38:36,160 ولكن أنا لا استخدام بنية الكلمة، لأننا في طريقنا للبدء في استخدام 718 00:38:36,160 --> 00:38:37,350 أنه في حالات أخرى - 719 00:38:37,350 --> 00:38:39,495 ولكن C أداة يفعل ذلك الصوت مثل؟ 720 00:38:39,495 --> 00:38:39,970 >> طالب 19: حلقة. 721 00:38:39,970 --> 00:38:40,980 >> JASON هيرشهورن: حلقة. 722 00:38:40,980 --> 00:38:43,060 يبدو وكأنه حلقة. 723 00:38:43,060 --> 00:38:49,670 حتى الذين يمكن أن تعطيني السطر الأول من قانون حلقة الحق هنا؟ 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 يمكنك أيضا اختيار أي نوع من حلقة تريد، إذا كنت تعطيني 726 00:39:01,980 --> 00:39:03,215 هذا الخط من التعليمات البرمجية. 727 00:39:03,215 --> 00:39:04,150 هناك ثلاثة أنواع. 728 00:39:04,150 --> 00:39:06,530 تحصل على انتقاء. 729 00:39:06,530 --> 00:39:08,080 أود أن أقترح واحد من هؤلاء. 730 00:39:08,080 --> 00:39:08,410 افي. 731 00:39:08,410 --> 00:39:09,230 أي واحد تريد؟ 732 00:39:09,230 --> 00:39:09,960 >> AVI: FOR. 733 00:39:09,960 --> 00:39:11,460 >> JASON هيرشهورن: FOR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: كثافة العمليات ط يساوي الصفر. 735 00:39:15,180 --> 00:39:17,360 >> JASON هيرشهورن: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: هذا الجزء لست متأكدة. 737 00:39:18,570 --> 00:39:29,080 ولكن أنا أقل من حجم مصدر نجم؟ 738 00:39:29,080 --> 00:39:31,128 لست متأكدا من ذلك. 739 00:39:31,128 --> 00:39:32,580 >> JASON هيرشهورن: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: لأنك تريد حجم ملف، أليس كذلك؟ 741 00:39:35,870 --> 00:39:41,090 >> JASON هيرشهورن: ولذلك فإن هذا ربما لن تعطينا حجم الفعلي 742 00:39:41,090 --> 00:39:43,010 ملف بالبايت. 743 00:39:43,010 --> 00:39:47,680 لذلك ماذا يمكن أن نفعل؟ 744 00:39:47,680 --> 00:39:48,810 ما هو نوع آخر من حلقة؟ 745 00:39:48,810 --> 00:39:50,180 أو ينبغي أن العصا مع حلقة FOR؟ 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> طالب 20: هل يمكن أن تفعل حلقة في حين؟ 748 00:39:57,900 --> 00:40:01,350 ثم، ماذا كنت تفعل هو you'd - 749 00:40:01,350 --> 00:40:03,930 لأن لدينا شار * للملف. 750 00:40:03,930 --> 00:40:07,950 حتى إذا كنا تبقي فقط أن تزايد حتى كنا نجد الطابع NULL في 751 00:40:07,950 --> 00:40:08,500 نهاية لها؟ 752 00:40:08,500 --> 00:40:11,130 أو لا، هو أن ليس كيفية عمل الملفات؟ 753 00:40:11,130 --> 00:40:14,300 >> JASON هيرشهورن: حتى نتمكن من الحفاظ على تزايد شار * 754 00:40:14,300 --> 00:40:16,340 حتى نجد NULL - 755 00:40:16,340 --> 00:40:18,580 >> طالب 20: أساسا الاستمرار حرف بحرف حتى ضربنا 756 00:40:18,580 --> 00:40:21,250 نهاية الملف. 757 00:40:21,250 --> 00:40:21,600 >> JASON هيرشهورن: نعم. 758 00:40:21,600 --> 00:40:22,560 وهذا ما نريد أن نفعله. 759 00:40:22,560 --> 00:40:24,545 نحن نريد للحفاظ على القراءة، والطابع بواسطة حرف، حتى نصل إلى 760 00:40:24,545 --> 00:40:25,080 نهاية الملف. 761 00:40:25,080 --> 00:40:25,375 >> طالب 20: نعم. 762 00:40:25,375 --> 00:40:25,860 العثور على - 763 00:40:25,860 --> 00:40:28,540 ما هو نهاية أو التوقيع على وقف في نهاية ملف نصي. 764 00:40:28,540 --> 00:40:28,620 >> JASON هيرشهورن: OK. 765 00:40:28,620 --> 00:40:30,140 لذلك عندما نصل إلى نهاية الملف - كيف نعرف اننا وصلنا 766 00:40:30,140 --> 00:40:33,200 نهاية الملف؟ 767 00:40:33,200 --> 00:40:34,710 إذا ادعو - 768 00:40:34,710 --> 00:40:35,910 لذلك دعونا خطوة الى الوراء. 769 00:40:35,910 --> 00:40:37,550 ما هي وظيفة؟ 770 00:40:37,550 --> 00:40:39,360 دعونا نذهب إلى هذا الخط هنا. 771 00:40:39,360 --> 00:40:40,630 القراءة من الملف المصدر. 772 00:40:40,630 --> 00:40:41,880 الذين يمكن أن تعطيني سطر من التعليمات البرمجية؟ 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> طالب 21: Fscanf؟ 775 00:40:47,590 --> 00:40:49,110 >> JASON هيرشهورن: Fscanf. 776 00:40:49,110 --> 00:40:49,510 موافق. 777 00:40:49,510 --> 00:40:52,240 ماذا لو أريد أن أقرأ، جدا على وجه التحديد، بايت واحد؟ 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> طالب 21: لا أعرف. 780 00:40:56,860 --> 00:40:57,110 >> JASON هيرشهورن: OK. 781 00:40:57,110 --> 00:40:59,380 حتى أبسط من fscanf - ما هو - 782 00:40:59,380 --> 00:41:01,890 أريد أن أقرأ من ملف المصدر؟ 783 00:41:01,890 --> 00:41:03,720 قراءة من ملف المصدر. 784 00:41:03,720 --> 00:41:04,850 ما هي وظيفة - نعم. 785 00:41:04,850 --> 00:41:05,380 >> طالب 22: انها fread؟ 786 00:41:05,380 --> 00:41:06,070 >> JASON هيرشهورن: Fread. 787 00:41:06,070 --> 00:41:07,550 أعتقد دعونا العصا مع أن واحدا في الوقت الراهن. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 أي نوع من الحجج لا تأخذ fread؟ 790 00:41:13,650 --> 00:41:17,410 >> طالب 22: ربما نوع الملف، ثم الموقع في الملف؟ 791 00:41:17,410 --> 00:41:19,550 >> JASON هيرشهورن: ماذا يمكنني أن اكتب هنا لمعرفة ما هو نوع من الحجج 792 00:41:19,550 --> 00:41:20,950 fread يأخذ؟ 793 00:41:20,950 --> 00:41:23,710 >> طلاب متعددة: رجل fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON هيرشهورن: رجل fread fwrite و. 795 00:41:24,740 --> 00:41:25,980 يبدو أنهم شنق معا. 796 00:41:25,980 --> 00:41:29,589 حتى fread يأخذ وكم الحجج؟ 797 00:41:29,589 --> 00:41:30,920 >> طالب 23: أربعة. 798 00:41:30,920 --> 00:41:32,690 >> JASON هيرشهورن: يستغرق أربع حجج. 799 00:41:32,690 --> 00:41:41,100 فإنه يأخذ المؤشر، حجم، والتي الشيء الذي هو غريب، وبعض الملفات. 800 00:41:41,100 --> 00:41:42,000 موافق؟ 801 00:41:42,000 --> 00:41:43,990 دعونا نقرأ عن ذلك الحق هنا. 802 00:41:43,990 --> 00:41:49,370 "وظيفة fread يقرأ ن MEMB عناصر البيانات، كل بايت حجم 803 00:41:49,370 --> 00:41:53,840 طويلة، من تيار المشار إليه بواسطة تيار، تخزينها في الموقع 804 00:41:53,840 --> 00:41:56,170 التي قدمها مؤشر ". 805 00:41:56,170 --> 00:41:57,960 >> لذلك أربع حجج. 806 00:41:57,960 --> 00:42:04,510 لماذا لا استطيع مجرد نسخ هذا، والصقه هنا. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 موافق. 809 00:42:10,770 --> 00:42:13,673 حتى الذين يمكن أن تبدأ ملء هذه الحجج بالنسبة لي؟ 810 00:42:13,673 --> 00:42:15,840 افي. 811 00:42:15,840 --> 00:42:17,720 >> AVI: إخراج الفراغ. 812 00:42:17,720 --> 00:42:20,530 وضعت للتو سرك. 813 00:42:20,530 --> 00:42:23,142 إخراج مؤشر والنجم. 814 00:42:23,142 --> 00:42:26,102 وضع سرك. 815 00:42:26,102 --> 00:42:27,050 ثم - 816 00:42:27,050 --> 00:42:28,500 >> JASON هيرشهورن: لذلك أنا ذاهب لوقف كنت هناك، لأن هذا غير صحيح. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 أنت على حق مع سرك، ولكن حيث يجب ان تذهب سرك؟ 819 00:42:34,710 --> 00:42:35,960 >> [VOICES فاصلة] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON هيرشهورن: إنه ينبغي يذهب أكثر من هنا. 822 00:42:41,610 --> 00:42:43,790 هذا هو سرك - سرك لدينا هو نوع. 823 00:42:43,790 --> 00:42:44,610 دعونا ننظر هنا. 824 00:42:44,610 --> 00:42:49,610 هذا يسأل عن نوع FILE *، ونحن في الواقع نرى عادة لهم مثل ذلك. 825 00:42:49,610 --> 00:42:57,630 لذلك هذا يسأل عن حجة لل اكتب FILE * دعا تيار وهذا هو سرك. 826 00:42:57,630 --> 00:42:58,480 موافق؟ 827 00:42:58,480 --> 00:43:00,410 >> ما هو حجم الأشياء تفعل نحن نريد أن تقرأ؟ 828 00:43:00,410 --> 00:43:03,340 أعطيتك هذا في وصف المشكلة. 829 00:43:03,340 --> 00:43:04,370 >> طالب 24: بايت واحد في وقت واحد. 830 00:43:04,370 --> 00:43:05,340 >> JASON هيرشهورن: بايت واحد. 831 00:43:05,340 --> 00:43:08,205 كيف كبيرة هو البايت؟ 832 00:43:08,205 --> 00:43:11,642 حجمه في بايت، وذلك ما يمكن أن أضع هناك حق؟ 833 00:43:11,642 --> 00:43:12,910 >> طالب 25: واحد. 834 00:43:12,910 --> 00:43:14,730 >> JASON هيرشهورن: واحد. 835 00:43:14,730 --> 00:43:17,020 الحق. 836 00:43:17,020 --> 00:43:19,940 حجمه في بايت وحدة، حتى 1 هو 1 بايت. 837 00:43:19,940 --> 00:43:22,284 وكم لا أريد أن أقرأ في كل مرة. 838 00:43:22,284 --> 00:43:23,520 >> طالب 26: واحد؟ 839 00:43:23,520 --> 00:43:24,270 >> JASON هيرشهورن: شيء واحد. 840 00:43:24,270 --> 00:43:28,540 أريد أن أقرأ شيئا واحدا من حجم 1، لدغة واحدة في وقت واحد. 841 00:43:28,540 --> 00:43:32,110 وأين يمكنني وضعه، مرة واحدة وأنا أقرأ ذلك؟ 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> طالب 27: الوجهة؟ 844 00:43:36,510 --> 00:43:39,270 >> JASON هيرشهورن: حتى أنا لا يمكن وضع فإنه مباشرة إلى الوجهة. 845 00:43:39,270 --> 00:43:40,800 >> طالب 28: أنت كنت gonna وضع قبل أن تتحول إلى مؤشر ثالث؟ 846 00:43:40,800 --> 00:43:41,780 >> طالب 27: إلى الوجهة. 847 00:43:41,780 --> 00:43:42,270 >> JASON هيرشهورن: OK. 848 00:43:42,270 --> 00:43:42,630 نعم. 849 00:43:42,630 --> 00:43:46,820 >> طالب 29: يمكنك أن تعلن شيئا ل بمثابة التخزين المؤقت في وقت سابق. 850 00:43:46,820 --> 00:43:47,350 >> JASON هيرشهورن: OK. 851 00:43:47,350 --> 00:43:50,080 أعطني ذلك. 852 00:43:50,080 --> 00:43:53,930 >> طالب 29: ملف آخر المؤشر، ربما؟ 853 00:43:53,930 --> 00:43:54,220 >> JASON هيرشهورن: OK. 854 00:43:54,220 --> 00:43:55,585 لذلك هذا هو نجمة الفراغ - 855 00:43:55,585 --> 00:43:57,750 انها نوع الفراغ نجمة، لذلك لا يجب أن يكون مؤشر الملف. 856 00:43:57,750 --> 00:44:02,520 وإذا أنا قراءة بايت واحد، حيث سيكون مكان جيد 857 00:44:02,520 --> 00:44:03,850 لتخزين بايت واحد؟ 858 00:44:03,850 --> 00:44:04,660 >> طالب 29: مجموعة؟ 859 00:44:04,660 --> 00:44:05,770 >> JASON هيرشهورن: صفيف. 860 00:44:05,770 --> 00:44:07,730 موافق. 861 00:44:07,730 --> 00:44:14,040 وما هو آخر شيء أن يكون فقط حجم بايت واحد؟ 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> الطالب (30): أ شار *؟ 864 00:44:18,060 --> 00:44:18,530 >> طالب 29: نعم. 865 00:44:18,530 --> 00:44:19,880 >> JASON هيرشهورن: A شار * ليس بايت واحد. 866 00:44:19,880 --> 00:44:20,440 >> الطالب (29): أ شار. 867 00:44:20,440 --> 00:44:21,810 >> JASON هيرشهورن: A شار هو بايت واحد. 868 00:44:21,810 --> 00:44:22,920 أليس كذلك؟ 869 00:44:22,920 --> 00:44:26,740 لذلك دعونا نطلق على هذا المخزن هو عام الاسم المستخدم لهذه الأشياء لتخزين 870 00:44:26,740 --> 00:44:27,910 شيئا مؤقتا. 871 00:44:27,910 --> 00:44:30,880 لذلك أنا خلق منطقة عازلة. 872 00:44:30,880 --> 00:44:31,150 أليس كذلك؟ 873 00:44:31,150 --> 00:44:32,990 ولكنها لا تأخذ فراغا *. 874 00:44:32,990 --> 00:44:38,660 لذلك ربما كنت على حق، وأنه يجب أن تكون منطقة عازلة حجم 0. 875 00:44:38,660 --> 00:44:41,070 ذلك أنه يخزن واحد - 876 00:44:41,070 --> 00:44:41,280 الحق. 877 00:44:41,280 --> 00:44:43,560 >> لأن هذا الحق هنا - شار المخزن المؤقت حرف، ولكن 878 00:44:43,560 --> 00:44:45,110 هذا يستغرق فراغا * - 879 00:44:45,110 --> 00:44:45,870 مؤشر. 880 00:44:45,870 --> 00:44:50,640 حتى أتمكن من القيام بذلك، والآن العازلة هو مؤشر. 881 00:44:50,640 --> 00:44:53,214 ماذا يمكن أن أفعل؟ 882 00:44:53,214 --> 00:44:55,775 >> طالب 31: وضع نجمة بجانب شار. 883 00:44:55,775 --> 00:44:58,380 >> JASON هيرشهورن: أستطع وقد إنشاؤه شار *. 884 00:44:58,380 --> 00:45:00,216 موافق. 885 00:45:00,216 --> 00:45:03,131 ما هو آخر شيء يمكن أن أفعله؟ 886 00:45:03,131 --> 00:45:04,050 أو دعونا نذهب مع هذا واحد. 887 00:45:04,050 --> 00:45:05,740 تشار * العازلة، وذلك ما أضع هنا؟ 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> طالب 31: المخزن المؤقت. 890 00:45:09,310 --> 00:45:10,560 >> JASON هيرشهورن: المخزن المؤقت. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 العازلة هو مؤشر إلى شار. 893 00:45:14,500 --> 00:45:19,480 وفي هذا الموقع، نحن نضع بايت واحد لشيء ونحن قد قرأت. 894 00:45:19,480 --> 00:45:19,980 نعم. 895 00:45:19,980 --> 00:45:20,700 افي. 896 00:45:20,700 --> 00:45:21,230 >> AVI: مجرد سؤال سريع. 897 00:45:21,230 --> 00:45:24,440 هل تريد أن malloc العازلة؟ 898 00:45:24,440 --> 00:45:25,930 >> JASON هيرشهورن: من يستطيع الإجابة على هذا السؤال؟ 899 00:45:25,930 --> 00:45:30,210 >> طالب 32: حسنا، لا حقا أشر إلى أي شيء الآن، لذلك - 900 00:45:30,210 --> 00:45:32,610 >> JASON هيرشهورن: ولكن هل نحن نريد أن malloc ذلك؟ 901 00:45:32,610 --> 00:45:35,600 >> طالب 32: لو كنت لتفعل ذلك أن الطريقة، أعتقد، نعم، لأنك كنت بحاجة 902 00:45:35,600 --> 00:45:36,990 بعض مكان لذلك للإشارة إلى. 903 00:45:36,990 --> 00:45:38,350 >> JASON هيرشهورن: هل نحن يجب أن malloc ذلك؟ 904 00:45:38,350 --> 00:45:40,580 >> الطالب (33): إذا كنت تريد الذهاب ل استخدامه خارج الحلقة. 905 00:45:40,580 --> 00:45:42,524 >> JASON هيرشهورن: هل نحن ذاهبون ل استخدامها خارج من الحلقة؟ 906 00:45:42,524 --> 00:45:44,392 >> طالب 34: نعم. 907 00:45:44,392 --> 00:45:44,860 >> الطالب (35): انتظر. 908 00:45:44,860 --> 00:45:46,980 لا نريد أن نعلن ذلك في حلقة لبعده؟ 909 00:45:46,980 --> 00:45:50,100 >> JASON هيرشهورن: لذا أعتقد لدينا بعض الزائفة بينما حلقة هنا أننا 910 00:45:50,100 --> 00:45:51,950 في محاولة لمعرفة، أن نحن لم نصل الى حتى الان. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 نحن لسنا بحاجة إلى malloc ذلك. 913 00:45:56,010 --> 00:45:59,310 نحن نعمل في الرئيسي، انه سيكون فقط ليتم استخدامها داخل هذه الحلقة. 914 00:45:59,310 --> 00:46:00,540 فإنه لا يحتاج إلى وجود خارج هذا. 915 00:46:00,540 --> 00:46:02,340 >> لذلك يمكن أن يكون متغير محلي. 916 00:46:02,340 --> 00:46:03,925 لديك مؤشر ل متغير محلي. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> طالب 36: ولكنها ليست مشيرا إلى أي شيء. 919 00:46:09,590 --> 00:46:11,540 >> JASON هيرشهورن: لا، انها ليست تهيئة إلى أي شيء. 920 00:46:11,540 --> 00:46:12,790 لكننا لن استخدامه أيضا. 921 00:46:12,790 --> 00:46:15,300 ونحن في طريقنا إلى وضع شيء في هذه هي المرة الأولى نستخدمها. 922 00:46:15,300 --> 00:46:16,580 بحيث يبدو موافق. 923 00:46:16,580 --> 00:46:17,780 لذلك نحن لسنا بحاجة malloc هنا. 924 00:46:17,780 --> 00:46:19,360 واعتقد انه موافق كما هو. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 موافق. 927 00:46:25,790 --> 00:46:27,190 لدينا خط fread. 928 00:46:27,190 --> 00:46:28,490 دعونا نفعل السطر التالي. 929 00:46:28,490 --> 00:46:32,984 >> إذا كنا نريد أن الكتابة إلى ملف، ما هو وظيفة جيدة لاستخدامها للقيام بذلك؟ 930 00:46:32,984 --> 00:46:33,770 >> طالب 37: Fwrite؟ 931 00:46:33,770 --> 00:46:35,140 >> طالب 38: Fprintf؟ 932 00:46:35,140 --> 00:46:36,010 >> JASON هيرشهورن: Fprintf واحد. 933 00:46:36,010 --> 00:46:37,260 ما هو واحد آخر؟ 934 00:46:37,260 --> 00:46:37,680 >> طالب 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON هيرشهورن: Fwrite. 936 00:46:38,510 --> 00:46:41,250 وأغراضنا، fwrite، الذي رأيناه هنا، هو 937 00:46:41,250 --> 00:46:42,500 ربما كان الخيار الأفضل. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 يستغرق أربع حجج كذلك. 940 00:46:53,950 --> 00:46:57,570 نيشانت، يمكنك ان تعطي لي الحجج؟ 941 00:46:57,570 --> 00:47:00,570 >> NISHANT: الجارية أول واحد لتكون عازلة فقط. 942 00:47:00,570 --> 00:47:02,210 >> JASON هيرشهورن: OK. 943 00:47:02,210 --> 00:47:06,752 >> NISHANT: واحد ثاني فقط ستكون 1. 944 00:47:06,752 --> 00:47:09,510 ثلث ستكون 1. 945 00:47:09,510 --> 00:47:11,470 وربع ستكون DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON هيرشهورن: هل لدى أي شخص أي أسئلة حول هذا الخط؟ 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 التي تبدو جيدة. 950 00:47:29,130 --> 00:47:29,590 موافق. 951 00:47:29,590 --> 00:47:34,250 وحتى الآن يبدو أن شيئا واحدا نحن في عداد المفقودين - في الواقع، دعونا إرسال 952 00:47:34,250 --> 00:47:35,090 هذا السطر الأخير. 953 00:47:35,090 --> 00:47:36,300 إغلاق الملفات. 954 00:47:36,300 --> 00:47:38,880 الذين يمكن الانتهاء من الكتابة لنا هذه الخطوط الماضيين؟ 955 00:47:38,880 --> 00:47:39,120 نعم. 956 00:47:39,120 --> 00:47:39,850 آسف، ما هو اسمك؟ 957 00:47:39,850 --> 00:47:40,580 >> لوسي: لوسي. 958 00:47:40,580 --> 00:47:41,580 >> JASON هيرشهورن: لوسي. 959 00:47:41,580 --> 00:47:47,560 >> لوسي: سرك Fclose ثم الوجهة fclose. 960 00:47:47,560 --> 00:47:52,430 >> JASON هيرشهورن: Fclose، PAREN مفتوحة، سرك، PAREN وثيق، منقوطة. 961 00:47:52,430 --> 00:47:53,680 وfclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 نعم؟ 964 00:47:58,090 --> 00:48:01,710 >> لوسي: فتح قوسين، DST ثم منقوطة. 965 00:48:01,710 --> 00:48:02,520 >> JASON هيرشهورن: العظمى. 966 00:48:02,520 --> 00:48:04,338 وماذا ينبغي أن تشمل في نهاية المطاف؟ 967 00:48:04,338 --> 00:48:05,210 >> لوسي: 0 العودة. 968 00:48:05,210 --> 00:48:05,570 >> JASON هيرشهورن: العودة 0. 969 00:48:05,570 --> 00:48:06,820 لا بد لي من؟ 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 مجرد سؤال. 972 00:48:12,590 --> 00:48:14,957 هل لدينا لتشمل عودة 0؟ 973 00:48:14,957 --> 00:48:16,240 >> طلاب متعددة: رقم 974 00:48:16,240 --> 00:48:16,430 >> JASON هيرشهورن: رقم 975 00:48:16,430 --> 00:48:18,090 الرئيسية يفعل تلقائيا إذا كنت تحصل على النهاية. 976 00:48:18,090 --> 00:48:20,580 ولكن أعتقد أنه من الجيد أن وتشمل بشكل صريح. 977 00:48:20,580 --> 00:48:23,860 وخصوصا عندما نقوم عودته أخرى الأشياء في جميع أنحاء البرنامج. 978 00:48:23,860 --> 00:48:24,810 موافق. 979 00:48:24,810 --> 00:48:26,230 وهذا هو ما نفتقده - 980 00:48:26,230 --> 00:48:28,520 بينما ما؟ 981 00:48:28,520 --> 00:48:31,630 الذين يمكن أن نفكر في بعض - 982 00:48:31,630 --> 00:48:35,240 لديه بعض الشعور ما هي الأشياء يمكن أن تذهب إلى هناك؟ 983 00:48:35,240 --> 00:48:37,350 حتى لو كان فقط في بعض شبة الكود مثل اللغة؟ 984 00:48:37,350 --> 00:48:41,330 >> ما نحن حقا - ما لا نريد أن نذهب حتى؟ 985 00:48:41,330 --> 00:48:41,980 نعم، لوسي. 986 00:48:41,980 --> 00:48:43,240 >> لوسي: نهاية الملف. 987 00:48:43,240 --> 00:48:44,990 >> JASON هيرشهورن: نهاية الملف. 988 00:48:44,990 --> 00:48:49,280 فماذا تقصد نهاية الملف؟ 989 00:48:49,280 --> 00:48:50,955 >> لوسي: مرة واحدة تصل إلى نهاية الملف، ووقف. 990 00:48:50,955 --> 00:48:51,240 >> JASON هيرشهورن: OK. 991 00:48:51,240 --> 00:48:53,460 ذلك مرة واحدة نصل إلى نهاية الملف. 992 00:48:53,460 --> 00:48:56,893 كيف لنا أن نعرف أننا عندما وصلنا نهاية الملف؟ 993 00:48:56,893 --> 00:48:59,900 >> طالب 40: أعتقد العازلة سيتم تعيين إلى NULL. 994 00:48:59,900 --> 00:49:01,885 >> الطالب (41): يعلن العازلة داخل الحلقة. 995 00:49:01,885 --> 00:49:03,670 >> JASON هيرشهورن: لذا كنت تعتقد سيتم تعيين عازلة لNULL. 996 00:49:03,670 --> 00:49:05,850 لماذا العازلة يتم تعيين إلى NULL؟ 997 00:49:05,850 --> 00:49:10,420 >> طالب 40: لأن عند fread، كنت في محاولة لوضع 998 00:49:10,420 --> 00:49:13,528 لا شيء في المخزن المؤقت. 999 00:49:13,528 --> 00:49:13,980 >> JASON هيرشهورن: OK. 1000 00:49:13,980 --> 00:49:15,550 لذلك كنت أفكر fread - 1001 00:49:15,550 --> 00:49:19,000 عندما كنا قد وصلنا إلى نهاية ملف، ما fread تنوي القيام به؟ 1002 00:49:19,000 --> 00:49:21,230 أعتقد أن هذا السؤال لدينا لمعرفة. 1003 00:49:21,230 --> 00:49:21,960 ماذا fread تفعل؟ 1004 00:49:21,960 --> 00:49:25,640 هل وضع NULL في المخزن، أو يفعل شيئا آخر؟ 1005 00:49:25,640 --> 00:49:27,510 كيف يمكننا معرفة ماذا ذلك؟ 1006 00:49:27,510 --> 00:49:28,190 >> طالب 42: رجل. 1007 00:49:28,190 --> 00:49:28,810 >> JASON هيرشهورن: رجل. 1008 00:49:28,810 --> 00:49:32,280 لذلك دعونا ننظر هنا. 1009 00:49:32,280 --> 00:49:34,000 العودة القيمة. 1010 00:49:34,000 --> 00:49:39,620 على النجاح، وfread fwrite العودة عدد من العناصر للقراءة أو الكتابة. 1011 00:49:39,620 --> 00:49:43,700 هذا العدد يساوي عدد البايتات نقل فقط عندما حجم هو 1. 1012 00:49:43,700 --> 00:49:47,780 في حالة حدوث خطأ، أو نهاية يتم التوصل الملف، قيمة الإرجاع هو 1013 00:49:47,780 --> 00:49:51,490 العد البند قصيرة أو 0. 1014 00:49:51,490 --> 00:49:57,860 >> لذلك لأغراضنا، إذا الروافد fread في نهاية الملف، ويقرأ من 1015 00:49:57,860 --> 00:50:02,100 نهاية الملف، لا يوجد شيء ترك لقراءة ما تسير الأمور في العودة؟ 1016 00:50:02,100 --> 00:50:03,290 >> طالب 43: صفر؟ 1017 00:50:03,290 --> 00:50:04,540 >> JASON هيرشهورن: ماذا؟ 1018 00:50:04,540 --> 00:50:05,300 >> طالب 43: صفر؟ 1019 00:50:05,300 --> 00:50:05,690 >> JASON هيرشهورن: صفر. 1020 00:50:05,690 --> 00:50:06,940 انها تسير لإرجاع صفر. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 لذلك نحن نعرف أن fread، عندما قمنا وصلت إلى نهاية الملف، يجري 1023 00:50:13,010 --> 00:50:13,690 لإرجاع صفر. 1024 00:50:13,690 --> 00:50:17,460 كيف يمكننا استخدام ذلك لصالحنا؟ 1025 00:50:17,460 --> 00:50:21,733 >> AVI: يمكنك تعريف متغير خارج من حلقة تسمى الاختيار. 1026 00:50:21,733 --> 00:50:27,040 إذا الاختيار يساوي - 1027 00:50:27,040 --> 00:50:28,190 في الوقت الراهن - واحد. 1028 00:50:28,190 --> 00:50:28,920 >> JASON هيرشهورن: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: وبعد ذلك يمكنك وضع IF بيان الحق بعد fread قائلا إذا 1030 00:50:38,050 --> 00:50:42,600 fread يساوي صفر - 1031 00:50:42,600 --> 00:50:43,850 لا. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON هيرشهورن: من يمكن أن تساعد آفي بها؟ 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: ما هي القيمة عاد قبل fread؟ 1036 00:50:52,410 --> 00:50:54,060 >> JASON هيرشهورن: نحن فقط ذهبت أكثر من ذلك. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: كيف تمثل ذلك؟ 1038 00:50:55,450 --> 00:50:57,190 >> JASON هيرشهورن: لذا فإنه يعود - دعنا تبدو هنا - تقوم بإرجاع 1039 00:50:57,190 --> 00:50:59,340 size_t، والتي هي في جوهرها عدد صحيح. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 لذلك بإرجاع عدد صحيح. 1042 00:51:03,410 --> 00:51:05,160 وفي حالتنا، وسوف العودة 1 أو 0 - 1043 00:51:05,160 --> 00:51:08,760 1 إذا كان يقرأ شيئا واحدا - بايت واحد، و0 إذا أننا وصلنا إلى نهاية. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 حتى إذا fread - 1046 00:51:16,450 --> 00:51:16,855 نعم؟ 1047 00:51:16,855 --> 00:51:20,330 >> طالب 45: لا يمكن أن مجرد وضع كامل fread (العازلة، 1، 1، SRC) في 1048 00:51:20,330 --> 00:51:21,660 في حين حلقة؟ 1049 00:51:21,660 --> 00:51:26,510 >> JASON هيرشهورن: إذن أنت تقترح القيام بذلك في هناك؟ 1050 00:51:26,510 --> 00:51:27,600 >> [VOICES فاصلة] 1051 00:51:27,600 --> 00:51:29,520 >> JASON هيرشهورن: انتظر. 1052 00:51:29,520 --> 00:51:30,885 لذلك نحن تخليص من ذلك. 1053 00:51:30,885 --> 00:51:33,300 لذلك كنت تقترح وضع fread إلى هناك؟ 1054 00:51:33,300 --> 00:51:35,457 ما ينبغي أن نتحرك إذا كنت تريد أن تفعل ذلك؟ 1055 00:51:35,457 --> 00:51:36,740 >> طالب 45: المخزن المؤقت خارج. 1056 00:51:36,740 --> 00:51:38,110 >> JASON هيرشهورن: نحن ينبغي كما نقل هذا هنا. 1057 00:51:38,110 --> 00:51:41,700 >> طالب 45: ولكن يفعل ذلك باستمرار التحرك إلى الأمام؟ 1058 00:51:41,700 --> 00:51:42,950 >> [VOICES فاصلة] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON هيرشهورن: OK. 1061 00:51:47,470 --> 00:51:50,570 لذلك هذا هو ما اقترحه Okshar. 1062 00:51:50,570 --> 00:51:51,930 نخلق عازلة لدينا. 1063 00:51:51,930 --> 00:51:57,020 علينا أثناء وجوده fread، فإننا fwrite. 1064 00:51:57,020 --> 00:51:59,760 أفكار حول هذا؟ 1065 00:51:59,760 --> 00:52:04,050 >> طالب 46: سؤالي الوحيد هو، من شأنه فعلا تنفيذ fread الأمر؟ 1066 00:52:04,050 --> 00:52:06,175 >> JASON هيرشهورن: السؤال الكبير. 1067 00:52:06,175 --> 00:52:11,050 عندما كنت وضع مكالمة ظيفة من داخل الشرط، يفعل ذلك 1068 00:52:11,050 --> 00:52:12,300 استدعاء دالة تنفيذ؟ 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 شاهدنا أمثلة على هذا من قبل. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 أليس كذلك؟ 1073 00:52:25,660 --> 00:52:26,125 >> طالب 46: OK. 1074 00:52:26,125 --> 00:52:26,590 نعم. 1075 00:52:26,590 --> 00:52:30,140 لذلك لا تنفيذ. 1076 00:52:30,140 --> 00:52:31,790 >> JASON هيرشهورن: لقد رأيت أشياء مثل ذلك من قبل، حيث لدينا 1077 00:52:31,790 --> 00:52:33,550 استدعاء دالة داخل شرط. 1078 00:52:33,550 --> 00:52:35,540 لا تنفيذ تلك الدعوة وظيفة؟ 1079 00:52:35,540 --> 00:52:36,350 نعم. 1080 00:52:36,350 --> 00:52:37,410 وبالتالي فإن الجواب هو نعم. 1081 00:52:37,410 --> 00:52:41,010 وهذه الدعوة وظيفة تنفيذ. 1082 00:52:41,010 --> 00:52:42,418 ولكن مرة أخرى، هو ما نريد؟ 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> ما هي طريقة واحدة يمكننا أن الرقم ما إذا كان هذا ما نريد؟ 1085 00:52:52,204 --> 00:52:53,470 >> طلاب متعددة: تشغيل ذلك؟ 1086 00:52:53,470 --> 00:52:54,460 >> JASON هيرشهورن: نحن يمكن تشغيله. 1087 00:52:54,460 --> 00:52:57,500 ولكن قبل ان نفعل ذلك، ونحن يمكن أن أيضا من خلال هذا العقل. 1088 00:52:57,500 --> 00:52:57,920 إذا - 1089 00:52:57,920 --> 00:53:01,920 نقول لدينا بايت واحد في منطقتنا ملف، ونحن سنصل إلى هنا، 1090 00:53:01,920 --> 00:53:02,660 أننا سنصل إلى هذا الرمز. 1091 00:53:02,660 --> 00:53:03,620 وهذا تشغيل. 1092 00:53:03,620 --> 00:53:07,780 fread سيعود بايت واحد و تخزينها في المخزن المؤقت. 1093 00:53:07,780 --> 00:53:11,290 وهذا سوف تقيم ل1، الحق، بعد عودته 1. 1094 00:53:11,290 --> 00:53:12,640 >> وذلك في حين 1. 1095 00:53:12,640 --> 00:53:15,325 يعني ذلك التعليمات البرمجية داخل سوف حلقة في حين تنفيذ؟ 1096 00:53:15,325 --> 00:53:15,453 >> طالب 47: نعم. 1097 00:53:15,453 --> 00:53:16,040 هذا صحيح. 1098 00:53:16,040 --> 00:53:16,290 >> JASON هيرشهورن: نعم. 1099 00:53:16,290 --> 00:53:17,490 1 صحيح. 1100 00:53:17,490 --> 00:53:18,240 انها ليست 0. 1101 00:53:18,240 --> 00:53:20,360 وبالتالي فإن التعليمات البرمجية داخل هنا سيتم تنفيذ. 1102 00:53:20,360 --> 00:53:22,300 ولذا فإننا سوف أكتب ذلك. 1103 00:53:22,300 --> 00:53:25,340 سوف نمضي إلى هذا الخط مرة أخرى. 1104 00:53:25,340 --> 00:53:26,850 الآن لدينا - 1105 00:53:26,850 --> 00:53:28,550 نحن في نهاية الملف لدينا. 1106 00:53:28,550 --> 00:53:30,980 نقرأ من نهاية الملف لدينا، لأننا فقط كان بايت واحد في ذلك. 1107 00:53:30,980 --> 00:53:34,270 >> Fread بإرجاع 0، ومخازن شيء في المخزن. 1108 00:53:34,270 --> 00:53:35,890 أنا بصراحة لا أعرف ما فإنه يخزن في المخزن. 1109 00:53:35,890 --> 00:53:38,380 أننا ربما يمكن البحث عن لنرى ماذا يفعل. 1110 00:53:38,380 --> 00:53:40,130 أنني بصراحة لا أعرف. 1111 00:53:40,130 --> 00:53:43,090 نحن لا نعرف، ما الذي يهتم فإنه يخزن في المخزن؟ 1112 00:53:43,090 --> 00:53:44,010 لكنه يعود 0. 1113 00:53:44,010 --> 00:53:45,440 وسوف حين 0 تنفيذ؟ 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> بينما سوف يتم تنفيذ 0. 1116 00:53:51,180 --> 00:53:54,030 حتى ذلك الحين سوف ننتقل إلى هنا. 1117 00:53:54,030 --> 00:53:58,870 لذلك دعونا الحصول على الأيدي إذا كان هذا هو رمز يجب علينا أن تشغيل، أو إذا كنا 1118 00:53:58,870 --> 00:54:00,140 ينبغي أن تفعل التغيرات الأول. 1119 00:54:00,140 --> 00:54:02,180 لذلك إذا كنت تعتقد - أن يكون لديك في التصويت. 1120 00:54:02,180 --> 00:54:06,885 إذا كنت تعتقد أننا يجب أن تشغيل هذه التعليمات البرمجية كما هو، الرجاء رفع يدك. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> موافق. 1123 00:54:13,400 --> 00:54:14,315 هناك واحد - 1124 00:54:14,315 --> 00:54:17,260 هل لديك سؤال، القلق؟ 1125 00:54:17,260 --> 00:54:18,080 نعم. 1126 00:54:18,080 --> 00:54:21,240 >> طالب 48: بعد أن ننتقل العازلة خارج الحلقة، هل نحن 1127 00:54:21,240 --> 00:54:22,670 يجب أن malloc ذلك؟ 1128 00:54:22,670 --> 00:54:23,310 >> JASON هيرشهورن: السؤال الكبير. 1129 00:54:23,310 --> 00:54:26,670 بعد ننتقل العازلة خارج حلقة، يجب علينا أن malloc ذلك؟ 1130 00:54:26,670 --> 00:54:28,400 هذا هو السؤال النطاق. 1131 00:54:28,400 --> 00:54:32,130 إذا كنا تهيئة العازلة خارج من هذه الحلقة، وانها موجودة 1132 00:54:32,130 --> 00:54:33,534 داخل حلقة؟ 1133 00:54:33,534 --> 00:54:35,230 >> طلاب متعددة: نعم. 1134 00:54:35,230 --> 00:54:35,580 >> JASON هيرشهورن: نعم. 1135 00:54:35,580 --> 00:54:40,100 ويغطي نطاقها داخل الحلقة، و، حقا، أي شيء أقل من ذلك داخل 1136 00:54:40,100 --> 00:54:42,460 من هذا القانون، بما في ذلك الأمور داخل هنا. 1137 00:54:42,460 --> 00:54:43,930 لذلك نحن لسنا بحاجة إلى malloc ذلك. 1138 00:54:43,930 --> 00:54:47,766 انها متغير محلي، ونطاقه لا تزال تتضمن الحلقة. 1139 00:54:47,766 --> 00:54:49,540 >> طالب 49: هل نحن بحاجة إلى تحريرها؟ 1140 00:54:49,540 --> 00:54:51,770 >> JASON هيرشهورن: هل نحن تحتاج إلى عازلة خالية؟ 1141 00:54:51,770 --> 00:54:53,860 >> طالب 49: نعم، إذا لم نفعل ذلك malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON هيرشهورن: هل نحن تحتاج إلى عازلة خالية؟ 1143 00:54:55,750 --> 00:54:57,160 لم نفعل ذلك. 1144 00:54:57,160 --> 00:55:01,280 مرة أخرى، بل هو متغير محلي، لذلك نحن لسنا بحاجة لتحريره. 1145 00:55:01,280 --> 00:55:02,170 موافق. 1146 00:55:02,170 --> 00:55:03,480 دعونا نرى ما سيحدث. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 ولذلك فمن غير مهيأ. 1149 00:55:18,220 --> 00:55:20,830 كان ذلك ما شيء اقترح ماركوس في وقت سابق. 1150 00:55:20,830 --> 00:55:25,340 لذلك لدينا هذا الخطأ، عازلة متغير غير مهيأ عند استخدامها هنا. 1151 00:55:25,340 --> 00:55:26,590 >> كيف يمكننا إصلاح هذا؟ 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> طالب 50: Malloc ذلك؟ 1154 00:55:30,960 --> 00:55:31,770 >> طالب 51: يساوي NULL؟ 1155 00:55:31,770 --> 00:55:33,000 >> طالب 52: قل العازلة يساوي NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON هيرشهورن: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 تبدو جيدة. 1159 00:55:40,770 --> 00:55:42,410 لدينا الآن. 1160 00:55:42,410 --> 00:55:45,630 دعونا خلق شيء لمحاولة النسخ. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 لذلك لدينا ملف نصي لدينا. 1163 00:56:10,490 --> 00:56:11,740 كيف يمكننا تشغيل هذا البرنامج؟ 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 نعم. 1166 00:56:15,472 --> 00:56:22,230 >> طالب 53: يمكنك أن تفعل نقطة خفض حزب المحافظين، TEST.TXT. 1167 00:56:22,230 --> 00:56:25,140 ثم يمكنك تسمية ملف آخر الذي سيخزن فيه. 1168 00:56:25,140 --> 00:56:25,510 >> JASON هيرشهورن: OK. 1169 00:56:25,510 --> 00:56:27,380 سنقوم نسميها out.txt. 1170 00:56:27,380 --> 00:56:28,630 بارد؟ 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 خطأ ثوانى. 1173 00:56:34,320 --> 00:56:35,570 أفكار على خطأ ثوانى؟ 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 هذا شيء عظيم. 1176 00:56:41,390 --> 00:56:45,040 كيف يمكننا معرفة أين خطأ ثوانى هو؟ 1177 00:56:45,040 --> 00:56:45,680 ماذا؟ 1178 00:56:45,680 --> 00:56:45,990 >> طالب 54: سندات التنمية الحكومية. 1179 00:56:45,990 --> 00:56:47,240 >> JASON هيرشهورن: سندات التنمية الحكومية. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 نحن تشغيل جدب جدب نقطة من خلال كتابة مائلة، اسم برنامجنا. 1182 00:56:55,300 --> 00:56:57,020 بدون وسائط سطر الأوامر هناك. 1183 00:56:57,020 --> 00:56:59,570 ونحن في طريقنا لتعيين نقطة توقف في الرئيسية. 1184 00:56:59,570 --> 00:57:02,190 إذا كنت تريد أن تبدأ جدب، ماذا أفعل؟ 1185 00:57:02,190 --> 00:57:02,730 >> طالب 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON هيرشهورن: R. وماذا بعد ذلك؟ 1187 00:57:08,910 --> 00:57:09,400 >> طالب 55: الحجج؟ 1188 00:57:09,400 --> 00:57:10,650 >> JASON هيرشهورن: ثم وسائط سطر الأوامر. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 دعونا من خلال المشي. 1191 00:57:17,120 --> 00:57:19,090 N هو مجرد أخذ مني سطرا سطرا. 1192 00:57:19,090 --> 00:57:21,450 انا ذاهب للذهاب حتى أحصل على خطأي ثوانى. 1193 00:57:21,450 --> 00:57:22,700 ليس هناك خطأي ثوانى. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 يبدو fread تسبب خطأي ثوانى. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 وأنا أعلم سبب fread خطأي ثوانى، لأن ذلك كان 1198 00:57:32,770 --> 00:57:34,950 الخط الذي أعدم للتو. 1199 00:57:34,950 --> 00:57:36,530 >> والشيء الوحيد الذي كان يحدث في هذا الخط - 1200 00:57:36,530 --> 00:57:37,520 تم أمرين يحدث. 1201 00:57:37,520 --> 00:57:40,610 Fread كان يحدث، ومن ثم كنا القيام ببعض التدقيق الوقت. 1202 00:57:40,610 --> 00:57:44,820 أنا على استعداد للمراهنة على أن في حين أن التحقق وعدم التسبب خطأي ثوانى. 1203 00:57:44,820 --> 00:57:46,950 على الأرجح، كان fread تسبب خطأي ثوانى. 1204 00:57:46,950 --> 00:57:49,260 وأود أيضا أن نرى شيئا هنا، memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> ذاكرة نسخة. 1206 00:57:50,500 --> 00:57:53,820 يبدو وكأنه يتحرك من الذاكرة موقع واحد إلى آخر. 1207 00:57:53,820 --> 00:57:56,890 يبدو وكأنه شيء من شأنه أن يحدث في fread، وربما بعض الذاكرة 1208 00:57:56,890 --> 00:57:58,910 الانتقال من هنا إلى هنا. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 دعنا نذهب من خلال هذا مرة أخرى. 1211 00:58:03,860 --> 00:58:06,900 كيف يمكنني تشغيله على وتشغيله مرة أخرى؟ 1212 00:58:06,900 --> 00:58:08,092 نعم. 1213 00:58:08,092 --> 00:58:15,140 >> طالب 56: هل تحتاج إلى وضع العطف قبل العازلة؟ 1214 00:58:15,140 --> 00:58:17,800 >> JASON هيرشهورن: حتى قبل الضم سوف عازلة تعطيني عنوان 1215 00:58:17,800 --> 00:58:22,330 العازلة، وهو شار *. 1216 00:58:22,330 --> 00:58:25,250 دعونا من خلال تشغيل هذا مرة واحدة أكثر من ذلك. 1217 00:58:25,250 --> 00:58:28,248 كيف أقوم بتشغيل واحد من خلال ذلك مزيدا من الوقت؟ 1218 00:58:28,248 --> 00:58:29,210 >> طالب 57: يمكنك فقط اكتب تشغيل مرة أخرى؟ 1219 00:58:29,210 --> 00:58:32,050 >> JASON هيرشهورن: اكتب فقط تشغيل مرة أخرى. 1220 00:58:32,050 --> 00:58:33,415 لذلك نحن لن تنفيذ هذا الخط. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 لذلك عازلة هو مؤشر NULL. 1223 00:58:39,240 --> 00:58:40,490 تصحيح؟ 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 فإنه يشير إلى - دعونا نرى. 1226 00:58:47,060 --> 00:58:48,500 اذا كان لدينا لدينا - 1227 00:58:48,500 --> 00:58:50,430 رسم صورة سريعة عن هذا. 1228 00:58:50,430 --> 00:58:53,500 يمكن معرفة ما إذا كان الجميع أنا أكتب هنا؟ 1229 00:58:53,500 --> 00:59:02,890 >> حتى في المكدس، لدينا المحلية متغير وانه دعا العازلة، و 1230 00:59:02,890 --> 00:59:08,230 انها مؤشر إلى شار. 1231 00:59:08,230 --> 00:59:10,325 ما هو عنوان هذا شار في؟ 1232 00:59:10,325 --> 00:59:12,550 >> طالب 58: 0X0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON هيرشهورن: الحق. 1234 00:59:13,400 --> 00:59:14,200 هذا ما هو هذا. 1235 00:59:14,200 --> 00:59:17,600 هنا، داخل المخزن، يتم تخزين 0X0. 1236 00:59:17,600 --> 00:59:20,480 هذا ما لدينا - و الإعداد لدينا في الوقت الحالي. 1237 00:59:20,480 --> 00:59:27,540 لذلك هذا الخط، fread، ويضع شيئا من مصدر أين؟ 1238 00:59:27,540 --> 00:59:30,560 في هذا الإطار أو هذا المربع؟ 1239 00:59:30,560 --> 00:59:31,060 مربع التي؟ 1240 00:59:31,060 --> 00:59:33,290 مربع أو مربع اليمين واليسار؟ 1241 00:59:33,290 --> 00:59:34,750 هذا المربع الصحيح. 1242 00:59:34,750 --> 00:59:38,440 >> ويترتب على المؤشر، ويضعه في هنا. 1243 00:59:38,440 --> 00:59:42,620 عندما نحاول والذاكرة التي تعمل باللمس في 0 موقع، ماذا حصلنا عليه؟ 1244 00:59:42,620 --> 00:59:45,050 وهناك خطأ تجزئة. 1245 00:59:45,050 --> 00:59:46,550 هذا هو الخطأ لدينا الآن. 1246 00:59:46,550 --> 00:59:46,970 نعم. 1247 00:59:46,970 --> 00:59:48,410 >> طالب 59: لا يكون لديك لوضع العازلة نجمة؟ 1248 00:59:48,410 --> 00:59:49,180 أو لا؟ 1249 00:59:49,180 --> 00:59:50,050 لfread؟ 1250 00:59:50,050 --> 00:59:51,450 >> JASON هيرشهورن: fread ذلك يأخذ المؤشر. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 لذلك يمر في المنطقة العازلة. 1253 00:59:55,900 --> 00:59:58,980 وبعد ذلك سوف اجتثاث المرجعية في مكان ما داخل fread. 1254 00:59:58,980 --> 01:00:00,700 ولكن مرة أخرى، رأينا، فإنه يأخذ المؤشر. 1255 01:00:00,700 --> 01:00:02,560 نحن لا نحتاج الى نقله عازلة نجوم. 1256 01:00:02,560 --> 01:00:05,350 التي ستمر ذلك كل ما هو هنا. 1257 01:00:05,350 --> 01:00:07,980 والتي ربما تعطينا خطأ لأننا اجتثاث الرجوع إليها. 1258 01:00:07,980 --> 01:00:08,150 >> أليس كذلك؟ 1259 01:00:08,150 --> 01:00:10,690 عندما كنا إلغاء مرجعية هذا المؤشر، عندما ونحن نحاول الوصول إلى هذا الموقع، 1260 01:00:10,690 --> 01:00:13,140 نحن نحصل على خطأ - خطأ تجزئة لدينا. 1261 01:00:13,140 --> 01:00:15,800 لذلك - 1262 01:00:15,800 --> 01:00:16,690 عفوا. 1263 01:00:16,690 --> 01:00:19,090 ونحن في طريقنا لإنهاء من جدب. 1264 01:00:19,090 --> 01:00:20,160 لدينا خط - 1265 01:00:20,160 --> 01:00:22,990 مشكلتنا - هو الحق هنا على هذا الخط. 1266 01:00:22,990 --> 01:00:26,410 وانها مشكلة ل من هذا الخط. 1267 01:00:26,410 --> 01:00:31,780 >> كيف يمكننا أن إنشاء مربع يمكن الوصول إليها في fread. 1268 01:00:31,780 --> 01:00:31,980 أليس كذلك؟ 1269 01:00:31,980 --> 01:00:35,190 نحن بحاجة إلى إنشاء مربع واحد بايت كبيرة، حجم شار. 1270 01:00:35,190 --> 01:00:38,590 لكننا نحتاج أن مربع لتكون في متناول عند تنفيذ هذه المهمة. 1271 01:00:38,590 --> 01:00:39,390 فأين - 1272 01:00:39,390 --> 01:00:39,640 نعم. 1273 01:00:39,640 --> 01:00:40,440 أي أفكار؟ 1274 01:00:40,440 --> 01:00:43,615 >> طالب 60: مجرد تعيينه أي حرف عشوائي. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 مجرد القيام متساوين عازلة شار الحرف. 1277 01:00:51,640 --> 01:00:53,795 وبعد ذلك، عندما يكون لديك العازلة هناك - 1278 01:00:53,795 --> 01:00:54,110 >> JASON هيرشهورن: انتظر. 1279 01:00:54,110 --> 01:00:55,110 شار العازلة؟ 1280 01:00:55,110 --> 01:00:55,880 لذلك لا نجمة؟ 1281 01:00:55,880 --> 01:00:56,390 >> طالب 60: نعم. 1282 01:00:56,390 --> 01:00:58,560 إخراج نجوم. 1283 01:00:58,560 --> 01:01:00,690 يساوي حرف عشوائي. 1284 01:01:00,690 --> 01:01:01,460 >> JASON هيرشهورن: OK. 1285 01:01:01,460 --> 01:01:02,420 حتى تعطي لي واحد. 1286 01:01:02,420 --> 01:01:03,170 >> طالب 60: مثل أو شيء من هذا. 1287 01:01:03,170 --> 01:01:06,160 ومن ثم عندما يكون لديك العازلة هناك، كنت تستخدم - 1288 01:01:06,160 --> 01:01:06,420 >> طالب 61: النجم؟ 1289 01:01:06,420 --> 01:01:07,650 أوه لا، والعطف. 1290 01:01:07,650 --> 01:01:09,000 >> طالب 60: استخدام العطف. 1291 01:01:09,000 --> 01:01:09,470 >> JASON هيرشهورن: OK. 1292 01:01:09,470 --> 01:01:11,320 وماذا عن في fwrite؟ 1293 01:01:11,320 --> 01:01:14,150 >> طالب 60: استخدام العطف مرة أخرى. 1294 01:01:14,150 --> 01:01:14,320 >> JASON هيرشهورن: حسنا. 1295 01:01:14,320 --> 01:01:20,970 حتى فكرتك، ونحن إنشاء شار و وضع شيء في ذلك، ثم 1296 01:01:20,970 --> 01:01:22,612 الكتابة على هذا شار. 1297 01:01:22,612 --> 01:01:23,760 >> طالب 60: نعم. 1298 01:01:23,760 --> 01:01:25,916 >> JASON هيرشهورن: ما يفكر الناس؟ 1299 01:01:25,916 --> 01:01:27,770 >> طالب 62: هو الملتوية و. 1300 01:01:27,770 --> 01:01:28,460 >> JASON هيرشهورن: OK. 1301 01:01:28,460 --> 01:01:29,760 دعونا استدراجه للخروج. 1302 01:01:29,760 --> 01:01:35,720 وحتى هذا الوقت، وأنا ذاهب إلى رسم هذا في أحمر على كومة هنا، ومن ثم نحن 1303 01:01:35,720 --> 01:01:36,410 سيكون لديك - 1304 01:01:36,410 --> 01:01:36,822 أوه! 1305 01:01:36,822 --> 01:01:38,060 آسف. 1306 01:01:38,060 --> 01:01:45,930 وحتى هذا الوقت لدينا شيء يسمى العازلة، وانها على المكدس. 1307 01:01:45,930 --> 01:01:48,430 تصحيح؟ 1308 01:01:48,430 --> 01:01:51,520 ونحن الادخار في ذلك لذلك، في البداية. 1309 01:01:51,520 --> 01:01:53,830 >> ثم لدينا دعوتنا إلى fread. 1310 01:01:53,830 --> 01:02:01,300 ما fread لا يتم يستغرق بايت من ملف ويضعه في مكان ما لدينا. 1311 01:02:01,300 --> 01:02:04,570 فإنه يضعه في أيا كانت انها لافتا إلى شيء. 1312 01:02:04,570 --> 01:02:09,130 كذلك، كان لدينا قبل هذا العنوان - 1313 01:02:09,130 --> 01:02:10,250 0X0. 1314 01:02:10,250 --> 01:02:13,349 الآن ما عنوان لدينا؟ 1315 01:02:13,349 --> 01:02:14,650 >> طالب 63: مهما عنوان المخزن المؤقت. 1316 01:02:14,650 --> 01:02:15,970 >> JASON هيرشهورن: أيا كان عنوان المخزن المؤقت. 1317 01:02:15,970 --> 01:02:22,370 انه سيكون على الارجح أن تكون شيء من هذا القبيل. 1318 01:02:22,370 --> 01:02:26,950 ربما سوف تبدأ ب و وو، وبعد ذلك ستة أخرى 1319 01:02:26,950 --> 01:02:27,970 أرقام ست عشرية. 1320 01:02:27,970 --> 01:02:28,480 لا يهم. 1321 01:02:28,480 --> 01:02:29,470 بعض العناوين. 1322 01:02:29,470 --> 01:02:31,410 ونحن تمرير هذا العنوان فيها 1323 01:02:31,410 --> 01:02:34,790 >> ونحن في طريقنا إلى وضع واحد لدينا الشيء بايت في هذا العنوان. 1324 01:02:34,790 --> 01:02:38,470 لذلك نحن ذاهبون لوضع واحد لدينا الشيء بايت داخل هنا. 1325 01:02:38,470 --> 01:02:40,800 ثم نحن ذاهبون الى الكتابة من ما من أي وقت مضى داخل هنا. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 هل لدى أي شخص أي أسئلة عن ذلك؟ 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 الذي يعتقد أن هذا الرمز يعمل؟ 1330 01:02:54,690 --> 01:02:56,020 >> ارفع يدك إذا كنت تعتقد وسوف يعمل هذا الرمز. 1331 01:02:56,020 --> 01:02:57,270 عليك أن تأخذ موقفا. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 والذي يعتقد أن هذا الرمز لا يعمل؟ 1334 01:03:02,500 --> 01:03:04,610 ارفع يدك. 1335 01:03:04,610 --> 01:03:06,750 الجميع يجب أن يكون رفع أيديهم. 1336 01:03:06,750 --> 01:03:07,670 موافق. 1337 01:03:07,670 --> 01:03:09,390 مايكل، أين أنت واقفا؟ 1338 01:03:09,390 --> 01:03:10,680 >> مايكل: لا أستطيع أن تقرر. 1339 01:03:10,680 --> 01:03:12,070 نوع من في الوسط. 1340 01:03:12,070 --> 01:03:12,736 >> JASON هيرشهورن: أنت في الوسط. 1341 01:03:12,736 --> 01:03:13,092 اختيار واحد. 1342 01:03:13,092 --> 01:03:14,400 >> مايكل: سآخذ الإيمان ويقول أنه سوف يعمل. 1343 01:03:14,400 --> 01:03:14,660 >> JASON هيرشهورن: OK. 1344 01:03:14,660 --> 01:03:16,047 سيكون لديك الإيمان ويقولون انه يعمل؟ 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 ماذا حدث؟ 1347 01:03:27,020 --> 01:03:28,270 >> [VOICES فاصلة] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON هيرشهورن: لا خطأ ثوانى. 1350 01:03:35,950 --> 01:03:40,320 كيف يمكننا أن تحقق لمعرفة ما إذا كان شيئين متساوون؟ 1351 01:03:40,320 --> 01:03:42,060 ملفين متساوون. 1352 01:03:42,060 --> 01:03:43,300 >> طالب 64: الفرق. 1353 01:03:43,300 --> 01:03:45,490 >> JASON هيرشهورن: الفرق. 1354 01:03:45,490 --> 01:03:51,630 الشيكات فرق للفروق بين ملفين، واذا عاد 1355 01:03:51,630 --> 01:03:52,890 لا شيء، وانهم متطابقة. 1356 01:03:52,890 --> 01:03:59,030 وإذا كان لنا أن تفتح، وحصلنا على الملف لدينا. 1357 01:03:59,030 --> 01:04:00,490 لذلك كان على أن الحل الصحيح. 1358 01:04:00,490 --> 01:04:01,780 دعونا ننظر إلى الوراء في واحدة لمزيد من الوقت. 1359 01:04:01,780 --> 01:04:04,080 فعلنا في الواقع ليست حتى تحتاج إلى تهيئة ذلك. 1360 01:04:04,080 --> 01:04:05,520 >> ربما تبدو قليلا أنظف إذا كنت لم يضع 1361 01:04:05,520 --> 01:04:07,680 شيء عشوائي في هناك. 1362 01:04:07,680 --> 01:04:13,070 والفكرة في ذلك، كنت في حاجة إلى خلق بعض المساحة لتخزين شيء من 1363 01:04:13,070 --> 01:04:15,530 fread وتأخذ شيئا من fwrite. 1364 01:04:15,530 --> 01:04:18,400 وهذا الشيء يجب أن تكون إما محلية المتغير على المكدس - كنت 1365 01:04:18,400 --> 01:04:19,890 يمكن لقد malloc'd بعض المساحة. 1366 01:04:19,890 --> 01:04:23,030 >> لذلك نحن في الواقع يمكن أن يكون malloc مكتوب هنا، و 1367 01:04:23,030 --> 01:04:25,420 التي من شأنها أن عملوا. 1368 01:04:25,420 --> 01:04:28,660 وبعد ذلك يكون قد تم تخزين لدينا أشياء في مكان ما على الكومة. 1369 01:04:28,660 --> 01:04:31,940 ولكن هذا هو الواقع، على الأرجح، الحل الأكثر أناقة. 1370 01:04:31,940 --> 01:04:34,490 مجرد خلق بعض المساحة على المكدس لهذه الأشياء أن يذهب. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> كنت أود أن يكون اثنين من التعليقات الأخرى. 1373 01:04:38,990 --> 01:04:44,650 لو كنت لتأخذ بدورها في هذا، و ثم الحصول على سجل على هذا، تعليقاتي 1374 01:04:44,650 --> 01:04:47,400 سيكون على النحو التالي. 1375 01:04:47,400 --> 01:04:54,300 1 هذه هنا، بالنسبة لي، تبدو مثل أرقام السحر. 1376 01:04:54,300 --> 01:04:56,860 هذا 1، من حيث fread، من المنطقي. 1377 01:04:56,860 --> 01:04:59,580 هذا هو عدد من الأمور لقراءة أو الكتابة. 1378 01:04:59,580 --> 01:05:03,740 >> ولكن هذا الحق واحد هنا ينبغي ربما يكون شيئا آخر. 1379 01:05:03,740 --> 01:05:05,180 فما هو حل واحد؟ 1380 01:05:05,180 --> 01:05:06,545 >> طالب 65: حجم بايت. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON هيرشهورن: أحب ذلك؟ 1383 01:05:11,080 --> 01:05:13,130 >> طالب 65: حجم شار. 1384 01:05:13,130 --> 01:05:13,820 >> JASON هيرشهورن: حجم شار. 1385 01:05:13,820 --> 01:05:15,290 نعم، البايت ليس النوع. 1386 01:05:15,290 --> 01:05:16,320 حتى حجم أعمال شار. 1387 01:05:16,320 --> 01:05:30,270 أننا يمكن أن يكون، في أعلى رمز لنا، # تعريف ذلك. 1388 01:05:30,270 --> 01:05:33,410 ودعا شيء BYTE و انها حقا شار. 1389 01:05:33,410 --> 01:05:37,675 في الواقع، وهو نهج أفضل ربما كان هذا - 1390 01:05:37,675 --> 01:05:39,391 UINT. 1391 01:05:39,391 --> 01:05:40,780 أحد يعرف ما هو هذا؟ 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> آسف. 1394 01:05:44,840 --> 01:05:46,090 لدي الوراء. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 الانتظار، لا. 1397 01:05:52,200 --> 01:05:53,450 ما هو الطريق الذي لا يذهب؟ 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 أحد يعرف ما هو هذا؟ 1400 01:05:59,660 --> 01:06:00,950 نعم. 1401 01:06:00,950 --> 01:06:05,650 >> طالب 67: من المفترض أن تساعد في توحيد عبر أشياء الأنظمة التي 1402 01:06:05,650 --> 01:06:08,760 ديك - مثل الأعداد الصحيحة غير الموقعة التي لديها 8 بايت؟ 1403 01:06:08,760 --> 01:06:11,785 >> JASON هيرشهورن: هذا صحيح تماما. 1404 01:06:11,785 --> 01:06:14,310 على آلات مختلفة، حجم شار - 1405 01:06:14,310 --> 01:06:15,180 لا عادة شار. 1406 01:06:15,180 --> 01:06:16,100 حرف وعادة ما تكون بايت واحد. 1407 01:06:16,100 --> 01:06:19,590 ولكن حجم أنواع البيانات الأخرى أحجام مختلفة على جهاز 32 بت 1408 01:06:19,590 --> 01:06:21,370 مقابل جهاز 64 بت. 1409 01:06:21,370 --> 01:06:25,180 A uint8_t دائما 8 بت - 1410 01:06:25,180 --> 01:06:27,210 دائما بايت واحد. 1411 01:06:27,210 --> 01:06:29,580 >> ولست بحاجة إلى أن تشمل معيار ملف الرأس الباحث. 1412 01:06:29,580 --> 01:06:35,040 وحتى الآن، وهذا من شأنه أن ربما كان أفضل طريقة لكتابة هذا الرمز. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 حتى أتخلص من الأرقام السحرية. 1415 01:06:41,450 --> 01:06:44,690 وأود أيضا أن يكون أكثر منطقية اكتب لعازلة. 1416 01:06:44,690 --> 01:06:49,450 انها ليست مجرد حرف، فمن بايت، وهو ما نتوقع أن يكون. 1417 01:06:49,450 --> 01:06:53,400 >> وهنا، لدينا في الواقع كان قليلا أكثر قوة. 1418 01:06:53,400 --> 01:06:55,190 نحن لا نتحدث عن شار، والتي - 1419 01:06:55,190 --> 01:06:58,630 ربما، من يدري - قد تكون مختلفة حجم على أجهزة مختلفة. 1420 01:06:58,630 --> 01:07:02,025 نقوله في الواقع هذا هو بالضبط بايت واحد، ودائما، مهما كانت. 1421 01:07:02,025 --> 01:07:05,810 وإذا نظرنا هنا، ونحن جعل حزب المحافظين. 1422 01:07:05,810 --> 01:07:08,340 اه اه. 1423 01:07:08,340 --> 01:07:09,590 ماذا حدث؟ 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> طالب 68: قد يتم تشغيله. 1426 01:07:16,170 --> 01:07:17,880 >> JASON هيرشهورن: ماذا؟ 1427 01:07:17,880 --> 01:07:19,130 >> طالب 69: هل هو؟ 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> طالب 70: أنت لم تعريفه كنوع. 1430 01:07:25,080 --> 01:07:28,684 >> طالب 71: ولكن ينبغي يتم تعريفها في المعيار. 1431 01:07:28,684 --> 01:07:29,934 >> طالب 72: ما الذي يحدث؟ 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> طالب 73: يجب أن يكون تعريف كل مباراة دولية؟ 1434 01:07:40,210 --> 01:07:41,370 >> JASON هيرشهورن: حتى انها ليست تعريف #. 1435 01:07:41,370 --> 01:07:45,490 في الواقع، في هذه الحالة، وأنا تنوي استخدام الرموز المميزة ل typedef. 1436 01:07:45,490 --> 01:07:48,590 لأننا باستخدام بأنها نوع في مكان واحد. 1437 01:07:48,590 --> 01:07:51,990 حتى في هذه الحالة، ونحن نريد فعلا ل typedef وكأننا الطباعة نوع جديد 1438 01:07:51,990 --> 01:07:54,490 بايت، وأنه هو، أساسا، هذا. 1439 01:07:54,490 --> 01:07:56,590 انها مختلفة قليلا من تعريف #. 1440 01:07:56,590 --> 01:08:02,740 >> والآن، لدينا رمز يعمل تماما. 1441 01:08:02,740 --> 01:08:05,230 لذلك، مرة أخرى، تعريف # يأخذ شيئا، يستبدلها في كل مكان 1442 01:08:05,230 --> 01:08:06,780 مع شيء آخر. 1443 01:08:06,780 --> 01:08:07,920 انها مجرد ماكرو - 1444 01:08:07,920 --> 01:08:09,420 الاختزال للتخلص من الأرقام السحرية. 1445 01:08:09,420 --> 01:08:11,360 ولكن في هذه الحالة، لأننا استخدامه كنوع - 1446 01:08:11,360 --> 01:08:12,180 الحق هنا - 1447 01:08:12,180 --> 01:08:19,880 من أجل أن للعمل، ونحن بحاجة لtypedef ومهما بايت. 1448 01:08:19,880 --> 01:08:21,840 >> ونحن تحديده هنا. 1449 01:08:21,840 --> 01:08:24,750 انها ليست البنية، انها فعلا مجرد عدد صحيح غير الموقعة. 1450 01:08:24,750 --> 01:08:27,680 انها بايت واحد طويل. 1451 01:08:27,680 --> 01:08:31,910 وسوف يكون هذا الرمز على شبكة الإنترنت، و لكم جميعا ينبغي أن يكون عليه الآن. 1452 01:08:31,910 --> 01:08:33,830 >> لذلك لدينا - 1453 01:08:33,830 --> 01:08:34,250 الكمال - 1454 01:08:34,250 --> 01:08:41,359 غادر 13 دقيقة للذهاب المشكلة عبر تعيين 5. 1455 01:08:41,359 --> 01:08:44,270 أريد أن المشي من خلال copy.c معا، ثم سنتحدث بإيجاز 1456 01:08:44,270 --> 01:08:47,120 حول أجزاء أخرى المشكلة تعيين. 1457 01:08:47,120 --> 01:08:48,899 لذلك اسمحوا لي سحب ما يصل copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 والشيء هو بارد، لدينا في الواقع كتبت بالفعل الكثير من هذه التعليمات البرمجية. 1460 01:09:08,810 --> 01:09:11,180 >> رمز كتبنا حرفيا فقط خرجت من هنا عندما كان عمري 1461 01:09:11,180 --> 01:09:13,120 أكتب هذا لوحدي. 1462 01:09:13,120 --> 01:09:16,990 ولكن هذا هو copy.c، تشكل الأساس لأول جزأين من 1463 01:09:16,990 --> 01:09:22,340 المشكلة المحددة لwhodunit.c، التي تحتاج إلى كتابة، وresize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c، وهو الثالث والأخير جزء من مجموعة المشكلة، ليس 1465 01:09:27,050 --> 01:09:29,529 يستند الخروج من هذا الملف. 1466 01:09:29,529 --> 01:09:32,200 >> كنت بحاجة الى الذهاب الى إرسال هذا الملف، نقدم لكم قالب لذلك 1467 01:09:32,200 --> 01:09:34,620 ملف، لكنه لا يملك شيئا علاقة copy.c. 1468 01:09:34,620 --> 01:09:38,675 ولكن بسبب copy.c هو الأساس ل أول جزأين، ونحن في طريقنا 1469 01:09:38,675 --> 01:09:42,000 من خلال المشي عليه الآن، لذلك لديك شعور جيد من ما تقوم به. 1470 01:09:42,000 --> 01:09:43,640 >> وتعليقات إعطاء بعض منه بعيدا. 1471 01:09:43,640 --> 01:09:45,120 لقد كتبت بالفعل بعض من هذا. 1472 01:09:45,120 --> 01:09:49,220 أولا، نحن والتأكد من نحصل على ثلاث حجج. 1473 01:09:49,220 --> 01:09:50,560 المقبل، ونحن نتذكر اسم الملف. 1474 01:09:50,560 --> 01:09:52,960 لذلك نحن تخطي هذه الخطوة عندما نحن لدينا شيء مشفرة - 1475 01:09:52,960 --> 01:09:54,700 عند حزب المحافظين لدينا. 1476 01:09:54,700 --> 01:09:56,750 ولكن هنا، انهم يرتكبون أنه أنظف قليلا. 1477 01:09:56,750 --> 01:09:59,350 >> انهم فحص للتأكد من كلا الملفين جيدة، في 1478 01:09:59,350 --> 01:10:00,450 بالإضافة إلى فتحها. 1479 01:10:00,450 --> 01:10:04,760 كتبنا عن هذا الرمز فقط الآن، لذلك أنا لن أسهب في الحديث عن هذا الرمز. 1480 01:10:04,760 --> 01:10:09,670 التالية هي بعض الاشياء التي لمحددة ل أنواع الملفات نستخدمه، والتي 1481 01:10:09,670 --> 01:10:12,240 هي ملفات الصور النقطية. 1482 01:10:12,240 --> 01:10:15,660 ملفات الصور النقطية لدينا بعض البيانات الوصفية المرتبطة بها. 1483 01:10:15,660 --> 01:10:20,190 >> وبالتالي فإن أول زوجين من البايت اقول لكم عن الملف. 1484 01:10:20,190 --> 01:10:23,460 فهي ليست ألوان بكسل في تلك الصورة. 1485 01:10:23,460 --> 01:10:25,120 يقولون لك حول الملف. 1486 01:10:25,120 --> 01:10:28,220 وإذا كنت تقرأ من خلال مجموعة مشكلة، سيكون لديك المزيد من المعلومات 1487 01:10:28,220 --> 01:10:33,100 على ما هي أنواع الهياكل الفوقية ترفق مع الصور النقطية. 1488 01:10:33,100 --> 01:10:39,350 >> ولكن هذا هو السبب لدينا هذا أولا مجموعة من - هذا الرمز هنا. 1489 01:10:39,350 --> 01:10:42,490 نحن قراءة البيانات الوصفية - 1490 01:10:42,490 --> 01:10:45,800 قطعتين من البيانات الوصفية - الملف رأس ورأس من المعلومات. 1491 01:10:45,800 --> 01:10:51,030 ونحن فحص بعض أجزاء منه ل تأكد من أنه هو ملف النقطية الحقيقية 1492 01:10:51,030 --> 01:10:52,420 قبل المتابعة. 1493 01:10:52,420 --> 01:10:55,470 >> ومرة أخرى، وهذه هي التفاصيل نحن لا تحتاج للذهاب الى الآن. 1494 01:10:55,470 --> 01:10:57,720 إذا كنت تقرأ من خلال مجموعة مشكلة، سوف تفهم هذه. 1495 01:10:57,720 --> 01:11:01,370 قصة قصيرة طويلة، وهذه هي مجرد القول، هذا هو ملف النقطية، و 1496 01:11:01,370 --> 01:11:02,810 يؤكد ذلك. 1497 01:11:02,810 --> 01:11:05,180 >> المقبل، ونحن نكتب تلك إلى ملف خارج. 1498 01:11:05,180 --> 01:11:05,660 ونحن نرى ذلك هنا. 1499 01:11:05,660 --> 01:11:06,910 نكتب إلى مؤشر للخروج. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 المقبل، ونحن تحديد الحشو. 1502 01:11:11,320 --> 01:11:15,240 ذلك مرة أخرى، كما هو خصوصية مع ملف النقطية، وتشمل بعض الخطوط 1503 01:11:15,240 --> 01:11:16,840 الحشو في نهاية المطاف. 1504 01:11:16,840 --> 01:11:19,000 وإذا كنت تقرأ من خلال مجموعة مشكلة، عليك معرفة المزيد عن الحشو. 1505 01:11:19,000 --> 01:11:22,330 هذه هي الصيغة لإيجاد الحشو. 1506 01:11:22,330 --> 01:11:23,610 >> المهم أن نتذكر - 1507 01:11:23,610 --> 01:11:29,720 عند تغيير حجم صورة نقطية ملف، التغييرات الحشو. 1508 01:11:29,720 --> 01:11:31,970 عند تغيير حجم ملف، التغييرات الحشو. 1509 01:11:31,970 --> 01:11:34,310 انها لن تكون أكبر من 3 - 1510 01:11:34,310 --> 01:11:36,510 أنه سوف يكون من 0 إلى 3، ضمنا. 1511 01:11:36,510 --> 01:11:38,930 ولكن عند تغيير حجم شيء، يتغير الحشو. 1512 01:11:38,930 --> 01:11:47,100 >> إذا ليس لدي سوى بكسل واحد في هذا الصف، وأنا نحتاج إلى ثلاثة بايت من الحشو، وذلك لأن 1513 01:11:47,100 --> 01:11:51,190 كل صف يجب أن يكون مضاعفات الأربعة بايت في ملف الصورة النقطية. 1514 01:11:51,190 --> 01:11:56,120 ولكن إذا أنا عليه مرتين، للانتقال من بكسل واحد لاثنين بكسل، كل واحدة منها، 1515 01:11:56,120 --> 01:11:59,510 دعنا نقول، هو بايت، ثم أحتاج وحدتي بايت من الحشو لجعل 1516 01:11:59,510 --> 01:12:00,970 أن يساوي أربعة. 1517 01:12:00,970 --> 01:12:04,200 >> لذلك عندما أقوم بتغيير حجم شيء، ولست بحاجة إلى تغيير مقدار 1518 01:12:04,200 --> 01:12:06,551 من الحشو لدي. 1519 01:12:06,551 --> 01:12:08,100 فهل هذا يعقل أن الجميع؟ 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 المقبل، ونحن تكرار عبر كل صف، أو من خلال كافة الصفوف. 1522 01:12:18,720 --> 01:12:21,400 وبعد ذلك من خلال تكرار كل عمود في كل صف. 1523 01:12:21,400 --> 01:12:25,330 ونحن نتعامل مع هذه الصورة النقطية مثل شبكة، وكأننا قد تعامل 1524 01:12:25,330 --> 01:12:26,490 المجلس في 15. 1525 01:12:26,490 --> 01:12:29,200 >> كنا نعامل مثل الطوب عندما نحن المطبوعة لهم على الشاشة. 1526 01:12:29,200 --> 01:12:31,350 شبكة من الصفوف والأعمدة. 1527 01:12:31,350 --> 01:12:32,350 ثم - رأينا هذا. 1528 01:12:32,350 --> 01:12:33,840 ونحن في الواقع مشفرة هذا فقط. 1529 01:12:33,840 --> 01:12:35,780 أنشأنا بعض التخزين المؤقت. 1530 01:12:35,780 --> 01:12:38,710 نقرأ في هناك، ثم نكتب بها. 1531 01:12:38,710 --> 01:12:42,680 هذا هو بالضبط ما فعلناه للتو. 1532 01:12:42,680 --> 01:12:46,760 >> المقبل، لأني قلت كل سطر ينتهي في بعض الحشو، ونحن 1533 01:12:46,760 --> 01:12:48,260 تخطي أن الحشو - 1534 01:12:48,260 --> 01:12:51,000 الحشو القديم. 1535 01:12:51,000 --> 01:12:52,630 ثم نضيف عليه مرة أخرى. 1536 01:12:52,630 --> 01:12:55,140 في هذه الحالة، ونحن بصدد إنشاء نفس الملف بالضبط. 1537 01:12:55,140 --> 01:12:56,180 نحن فقط نسخها. 1538 01:12:56,180 --> 01:12:57,700 ولذلك فإن هذا الخط هو نوع من سخيفة. 1539 01:12:57,700 --> 01:12:59,660 نستطيع حرفيا فقط وضع الحشو فيها. 1540 01:12:59,660 --> 01:13:04,290 >> ولكن إذا قمت بتغيير حجم الملف، هل لا تزال تريد هذا الخط؟ 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 لذلك إذا كنا نريد تغيير حجم الملف، أننا لا تزال ترغب في تخطي 1543 01:13:11,560 --> 01:13:12,810 على الحشو القديم؟ 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> طالب 74: نعم. 1546 01:13:15,970 --> 01:13:17,090 >> JASON هيرشهورن: هكذا نفعل. 1547 01:13:17,090 --> 01:13:19,290 لأن هذا، مرة أخرى، ويتناول مع الملف المصدر. 1548 01:13:19,290 --> 01:13:21,570 نحن لا نهتم الحشو من الملف المصدر. 1549 01:13:21,570 --> 01:13:23,410 نريد أن نذهب إلى السطر التالي. 1550 01:13:23,410 --> 01:13:28,850 لكننا لا ببساطة العودة كمية من الحشو القديم. 1551 01:13:28,850 --> 01:13:31,540 نحن بحاجة إلى اعادة وضع كمية جديدة من الحشو. 1552 01:13:31,540 --> 01:13:35,810 >> لذلك عندما نقوم بتغيير حجم ملف، ونحن لا تزال ترغب في تخطي 1553 01:13:35,810 --> 01:13:38,270 الحشو في الملف القديم - ما نحن من القراءة في. 1554 01:13:38,270 --> 01:13:40,370 ولكن ما نقوم الكتابة إلى، ونحن في طريقنا في حاجة لاعادة وضع بعض مختلفة 1555 01:13:40,370 --> 01:13:41,890 عدد من الحشو التي لقد تحديدها. 1556 01:13:41,890 --> 01:13:42,780 نعم. 1557 01:13:42,780 --> 01:13:44,550 >> طالب 75: ترتيب هذين خطوط لا يهم، أليس كذلك؟ 1558 01:13:44,550 --> 01:13:46,160 لأنك التعامل مع مختلف الملفات. 1559 01:13:46,160 --> 01:13:46,620 >> JASON هيرشهورن: بالضبط. 1560 01:13:46,620 --> 01:13:48,220 ترتيب هذين الخطين لا يهم. 1561 01:13:48,220 --> 01:13:49,790 نكتب هذا الخط. 1562 01:13:49,790 --> 01:13:51,430 هذا هو هنا لملف نحن لكتابة. 1563 01:13:51,430 --> 01:13:54,370 هذا أمر مهم، لذلك نحصل على كمية مناسبة من الحشو. 1564 01:13:54,370 --> 01:13:57,560 هذا لا بد أن تتعامل مع الملف في. 1565 01:13:57,560 --> 01:13:58,560 نحن نريد لتخطي الحق على الحشو. 1566 01:13:58,560 --> 01:13:59,470 >> نحن لا نريد لقراءة - 1567 01:13:59,470 --> 01:14:01,500 إذا نحن قراءة بايت في كل مرة، ونحن لا يهتمون تلك بايت الحشو. 1568 01:14:01,500 --> 01:14:04,070 نحن نريد للانتقال إلى السطر التالي. 1569 01:14:04,070 --> 01:14:11,800 أخيرا مثلما أعطى لوسي بالنسبة لنا، نغلق الملفات والعودة 0. 1570 01:14:11,800 --> 01:14:13,890 لذلك هذا هو copy.c. 1571 01:14:13,890 --> 01:14:17,850 ونحن في الواقع كتب - قضينا معظم القسم كتابة هذا، أساسا. 1572 01:14:17,850 --> 01:14:18,740 >> قمت بهذا. 1573 01:14:18,740 --> 01:14:22,440 لذلك نأمل أن يكون لديك شعور جيد ما الذي يحدث هنا. 1574 01:14:22,440 --> 01:14:25,890 الفرق كبير، بصراحة، هو مجرد هذا الجزء الأول الذي يتعامل مع 1575 01:14:25,890 --> 01:14:29,970 خصوصيات ملفات الصور النقطية. 1576 01:14:29,970 --> 01:14:33,570 وذلك لدي كما بلدي الشريحة التالية، ماذا علينا أن نفعل؟ 1577 01:14:33,570 --> 01:14:35,510 حسنا، دعونا نفكر في المجرم. 1578 01:14:35,510 --> 01:14:38,080 >> وللشخص من خلال قراءة مشكلة تعيين، فماذا نحن 1579 01:14:38,080 --> 01:14:41,410 تحتاج إلى القيام به في المجرم؟ 1580 01:14:41,410 --> 01:14:42,080 ببساطة. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA: هل لك أن تأخذ بها الجزء كل بكسل التي تدل الحمراء. 1583 01:14:48,570 --> 01:14:49,730 وبعد ذلك - 1584 01:14:49,730 --> 01:14:50,730 نوع من؟ 1585 01:14:50,730 --> 01:14:51,860 >> JASON هيرشهورن: OK. 1586 01:14:51,860 --> 01:14:54,460 حتى إخراج جزء من كل بكسل التي تدل الحمراء. 1587 01:14:54,460 --> 01:14:57,234 وهذا قريب، ولكن ليس كل من هو. 1588 01:14:57,234 --> 01:14:59,780 >> طالب 76: حسنا، هناك طرق مختلفة للقيام بذلك. 1589 01:14:59,780 --> 01:14:59,870 >> JASON هيرشهورن: OK. 1590 01:14:59,870 --> 01:15:03,070 تعطيني طريقة واحدة. 1591 01:15:03,070 --> 01:15:08,240 >> طالب 76: إخراج جميع الأحمر، و ثم التأكيد على الأزرق والأخضر. 1592 01:15:08,240 --> 01:15:10,010 >> JASON هيرشهورن: OK. 1593 01:15:10,010 --> 01:15:11,830 بحيث يعطى كل من هذه الطرق - 1594 01:15:11,830 --> 01:15:15,210 هذا يبدو وكأنه اعطيناها بكسل، و لديها مستوى الأحمر والأزرق، والأخضر. 1595 01:15:15,210 --> 01:15:19,350 نحن نريد لتغيير المستويات النسبية لل الأحمر والأزرق، والأخضر، تبعا 1596 01:15:19,350 --> 01:15:20,740 على أن بكسل. 1597 01:15:20,740 --> 01:15:28,380 حيث يجب أن نغير في هذا الرمز المتعلقة الأحمر والأزرق والأخضر 1598 01:15:28,380 --> 01:15:29,720 مستويات بكسل معين. 1599 01:15:29,720 --> 01:15:30,600 بعد أن قرأت ذلك - 1600 01:15:30,600 --> 01:15:32,520 قبل أن أكتبه؟ 1601 01:15:32,520 --> 01:15:34,564 أعطني رقم السطر. 1602 01:15:34,564 --> 01:15:35,950 >> طلاب متعددة: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON هيرشهورن: 83. 1604 01:15:37,320 --> 01:15:38,570 حتى هنا. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 لالمجرم، رمز تحتاج إلى يجب كتابة كل الحق في الذهاب هناك. 1607 01:15:45,710 --> 01:15:47,640 وهذا هو رمز فقط تحتاج إلى كتابة. 1608 01:15:47,640 --> 01:15:51,520 لأنه، مثل سمعنا، كل ما تحتاجه ل القيام به هو تغيير هذه الزرقاء النسبية، 1609 01:15:51,520 --> 01:15:54,420 مستويات الأحمر، والأخضر من كل بكسل. 1610 01:15:54,420 --> 01:15:58,250 >> كنت قد قرأت في ذلك، والآن أنت أريد أن أكتب بها. 1611 01:15:58,250 --> 01:16:03,100 كيف يمكنني الحصول على - إذا كان لدي هذا الشيء دعا الثلاثي، والحق هنا، وانها ل 1612 01:16:03,100 --> 01:16:04,570 اكتب RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 حسنا، إذا نظرنا في bmp.h، ما هو RGBTRIPLE؟ 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> طالب 77: انها البنية. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON هيرشهورن: RGBTRIPLE هو البنية. 1618 01:16:18,900 --> 01:16:22,330 ونحن نرى أن الحق هنا إلى أسفل. 1619 01:16:22,330 --> 01:16:26,600 وحتى إذا أردت الوصول إليها، كما يقول، و المستوى الأحمر من البنية، كيف يمكنني 1620 01:16:26,600 --> 01:16:30,005 وصول إلى المستوى الأحمر من هذه البنية؟ 1621 01:16:30,005 --> 01:16:37,280 >> [فئة لغط] 1622 01:16:37,280 --> 01:16:38,530 >> طالب 78: RGBTRIPLE.rgbtred؟ 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON هيرشهورن: هل هذا صحيح؟ 1625 01:16:48,856 --> 01:16:53,040 >> طالب 79: ينبغي أن يكون الثلاثي نقطة، بدلا من RGBTRIPLE نقطة؟ 1626 01:16:53,040 --> 01:16:54,120 >> JASON هيرشهورن: الثلاثي. 1627 01:16:54,120 --> 01:16:56,700 الثلاثي هو متغير محلي، لذلك هنا، وليس هناك مؤشرات هنا. 1628 01:16:56,700 --> 01:16:58,400 لذلك نحن فقط استخدام نقطة تدوين. 1629 01:16:58,400 --> 01:17:00,480 سوف تعطيني هذا المستوى من اللون الأحمر. 1630 01:17:00,480 --> 01:17:06,180 إذا كنت تريد تغييره، أنا وضعت فقط فإنه يساوي شيئا مختلفا. 1631 01:17:06,180 --> 01:17:13,190 ذلك مرة أخرى، وهذا سطر من التعليمات البرمجية بالوصول هذا المتغير داخل هذه البنية، و 1632 01:17:13,190 --> 01:17:15,070 يمكننا تعيينها إلى شيء جديد. 1633 01:17:15,070 --> 01:17:20,040 >> وذلك لالمجرم، ومرة ​​أخرى، وهذا هو، في الجوهر، ما يتعين علينا القيام به. 1634 01:17:20,040 --> 01:17:21,170 بسيط جدا. 1635 01:17:21,170 --> 01:17:25,020 مجرد تغيير بعض المستويات النسبية، و هذا هو المكان الذي يذهب هذا الرمز. 1636 01:17:25,020 --> 01:17:27,720 تغيير الحجم، من ناحية أخرى، هو اصعب قليلا. 1637 01:17:27,720 --> 01:17:30,900 في الواقع، وربما كان تغيير الحجم أصعب جزء من هذه المشكلة تعيين. 1638 01:17:30,900 --> 01:17:32,720 لدينا ثلاث دقائق للذهاب أكثر من ذلك. 1639 01:17:32,720 --> 01:17:34,910 >> ولكن مرة أخرى، لقد كتبت بالفعل أكثر من هذا الرمز، لذلك نحن 1640 01:17:34,910 --> 01:17:36,500 يجب أن تكون على دراية جدا. 1641 01:17:36,500 --> 01:17:40,750 ما هي بعض الأشياء نريد أن نفعله في تغيير الحجم، إذا كنت قد قرأت على 1642 01:17:40,750 --> 01:17:43,470 تعيين المشكلة؟ 1643 01:17:43,470 --> 01:17:45,290 إذا أعطيت لهم بالنسبة لي، ونحن يمكن الحديث عنها. 1644 01:17:45,290 --> 01:17:47,340 ما هي بعض الأشياء التي تريد أن تفعل؟ 1645 01:17:47,340 --> 01:17:47,970 >> طالب 80: عموديا - 1646 01:17:47,970 --> 01:17:52,360 بحيث يكون لديك لتغيير حجمه أفقيا، ولكن تغيير حجم عموديا أنها كذلك؟ 1647 01:17:52,360 --> 01:17:58,475 >> JASON هيرشهورن: حتى إذا نحن أعطيت بكسل، ونحن نريد أن حجمه من قبل 1648 01:17:58,475 --> 01:18:03,460 عامل من اثنين، فإنه يحتاج الآن إلى أن تكون حجمها أفقيا وحجمها 1649 01:18:03,460 --> 01:18:05,220 عموديا. 1650 01:18:05,220 --> 01:18:06,640 فهل هذا يعقل؟ 1651 01:18:06,640 --> 01:18:07,060 نعم. 1652 01:18:07,060 --> 01:18:09,300 ولهذا ربما كان التحدي الأكبر. 1653 01:18:09,300 --> 01:18:10,430 وسوف نتحدث عن ذلك في ثوانى. 1654 01:18:10,430 --> 01:18:11,065 نعم. 1655 01:18:11,065 --> 01:18:15,270 >> طالب 81: الطريقة فكرت في ذلك وكنت في حاجة الطباعة بها - 1656 01:18:15,270 --> 01:18:15,490 >> JASON هيرشهورن: انتظر. 1657 01:18:15,490 --> 01:18:17,580 لا يقول لنا ما فعلتم. 1658 01:18:17,580 --> 01:18:20,620 نحن ذاهبون الى الحديث في المنطق. 1659 01:18:20,620 --> 01:18:21,870 >> طالب 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 ما هو السؤال؟ 1662 01:18:27,410 --> 01:18:28,892 >> JASON هيرشهورن: أنت فقط رفعت يدك. 1663 01:18:28,892 --> 01:18:31,600 لم يكن هناك أي سؤال. 1664 01:18:31,600 --> 01:18:32,520 اسمحوا لي تقديمه. 1665 01:18:32,520 --> 01:18:34,560 اسمحوا لي أن مجرد مناقشة هذا لفترة وجيزة. 1666 01:18:34,560 --> 01:18:38,400 ولذا فإننا قد بكسل واحد، ونحن نريد ل تكرار ذلك، أفقيا و 1667 01:18:38,400 --> 01:18:39,360 عموديا. 1668 01:18:39,360 --> 01:18:48,920 حتى من الناحية المثالية ما نقوم به هنا هو، ونحن قراءة في بكسل لدينا، ونحن اكتبها 1669 01:18:48,920 --> 01:18:51,690 ولكن العديد من المرات. 1670 01:18:51,690 --> 01:18:54,720 >> ولكن بعد ذلك لدينا حيلة لنا هنا، ل ثم نريد أن انتقل إلى 1671 01:18:54,720 --> 01:18:57,660 السطر التالي وكتابة ذلك في بداية السطر التالي. 1672 01:18:57,660 --> 01:19:02,960 لذلك إذا كنا نريد لتكرار كلا أفقيا وعموديا، ما هو 1673 01:19:02,960 --> 01:19:05,050 طريقة واحدة جيدة للقيام بذلك - 1674 01:19:05,050 --> 01:19:06,780 واحدة جيدة على الرغم من أن تفعل ذلك؟ 1675 01:19:06,780 --> 01:19:11,950 لذلك نحن لسنا في حاجة لطلب باستمرار حول الملف لدينا لوضع الأشياء. 1676 01:19:11,950 --> 01:19:14,360 >> قد لا يكون هذا السؤال من المنطقي، ولكن أعتقد أن ل 1677 01:19:14,360 --> 01:19:15,800 الإجابة لأنها سوف تساعد. 1678 01:19:15,800 --> 01:19:17,210 >> طالب 82: إنشاء مجموعة؟ 1679 01:19:17,210 --> 01:19:20,090 >> JASON هيرشهورن: لذلك دعونا نفكر كل ملف كصف. 1680 01:19:20,090 --> 01:19:22,550 دعونا نفكر في الصفوف. 1681 01:19:22,550 --> 01:19:26,670 اذا كان لدينا أول صف لدينا من بلدنا الصغير الصورة، يمكننا أن نجعل هذا الصف 1682 01:19:26,670 --> 01:19:30,640 في صف واسع من صورة كبيرة، ثم تكرار هذا الصف ولكن 1683 01:19:30,640 --> 01:19:34,250 مرات عديدة لا بد من تكرارها، بدلا من الذهاب بكسل بكسل، 1684 01:19:34,250 --> 01:19:37,260 الذي يحصل مربكة عندما التعامل مع الملفات. 1685 01:19:37,260 --> 01:19:38,730 >> لأنه إذا كان لدينا - 1686 01:19:38,730 --> 01:19:41,260 أنا ينفد من الفضاء. 1687 01:19:41,260 --> 01:19:46,490 إذا كان هذا هو الملف لدينا، وعلينا أن بكسل واحد هناك، ونحن نريد لوضعها 1688 01:19:46,490 --> 01:19:49,840 هناك حق، لا يزال لدينا بعض الأشياء أن الحاجة للذهاب إلى هناك عندما نكون 1689 01:19:49,840 --> 01:19:51,450 الكتابة وإنشاء ملف جديد لدينا - 1690 01:19:51,450 --> 01:19:53,250 ملفنا هذا بمرتين. 1691 01:19:53,250 --> 01:19:56,820 >> ولكن من الصعب حقا مع وظائف ملف لتخطي جميع أنحاء لخطوط جديدة 1692 01:19:56,820 --> 01:20:00,260 من هذا القبيل، ثم أعود هنا ووضع الأمور في هناك. 1693 01:20:00,260 --> 01:20:04,500 انه من المستحيل تقريبا أن تفعل شيئا من هذا القبيل، إذا كان هذا الأمر يبدو معقولا تماما. 1694 01:20:04,500 --> 01:20:10,180 حتى إذا كنا نعتقد من حيث الصفوف، يمكننا تأخذ صف دينا، ومن ثم وضعه - 1695 01:20:10,180 --> 01:20:11,720 تكرار الصفوف عموديا. 1696 01:20:11,720 --> 01:20:15,860 >> وهذه هي الطريقة التي نتعامل بها مع تغيير حجم عموديا بدلا من أفقيا. 1697 01:20:15,860 --> 01:20:18,810 وكان هذا النوع من سريعة، و مربكة قليلا. 1698 01:20:18,810 --> 01:20:22,375 للأسف عصرنا متروك. 1699 01:20:22,375 --> 01:20:27,340 وسوف نقف خارج لأولئك منكم هنا الذين لديهم أسئلة حول 1700 01:20:27,340 --> 01:20:30,500 مجموعة المشكلة، بما في ذلك استرداد. 1701 01:20:30,500 --> 01:20:32,320 >> لذلك دعونا تأجيل في الوقت الراهن. 1702 01:20:32,320 --> 01:20:34,480 ومرة أخرى، إذا كان لديك أي أسئلة، يمكننا التحدث خارج. 1703 01:20:34,480 --> 01:20:38,294