1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [القسم 4] [أقل راحة] 2 00:00:02,000 --> 00:00:04,000 [نيت Hardison] [جامعة هارفارد] 3 00:00:04,000 --> 00:00:07,000 [هذا CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> كل الحق، نرحب مرة أخرى إلى القسم. 5 00:00:10,000 --> 00:00:13,000 في القسم هذا الاسبوع ونحن في طريقنا للقيام زوجين من الأشياء. 6 00:00:13,000 --> 00:00:17,000 ونحن في طريقنا إلى أول مجموعة خلاصة المشكلة 2، 7 00:00:17,000 --> 00:00:20,000 الذي هو مجموعة قيصر المشكلة وVigenère. 8 00:00:20,000 --> 00:00:23,000 ثم ونحن في طريقنا ليغوص في 0 مشاركة مسابقة 9 00:00:23,000 --> 00:00:26,000 وتنفق قليلا من الوقت لتلخيص ما تحدثنا عن 10 00:00:26,000 --> 00:00:30,000 في كل من المحاضرات حتى الآن، وسوف نفعل أيضا بعض المشاكل 11 00:00:30,000 --> 00:00:32,000 من مسابقات العام الماضي. 12 00:00:32,000 --> 00:00:36,000 بهذه الطريقة يا رفاق لديهم طريقة جيدة للتحضير لذلك. 13 00:00:36,000 --> 00:00:40,000 >> للبدء، لقد تمهيد حتى انني زوجين من الحلول الجيدة 14 00:00:40,000 --> 00:00:45,000 لمجموعة المشكلة السابقة، تعيين المشكلة 2، في هذا الفضاء. 15 00:00:45,000 --> 00:00:48,000 إذا كنت ضرب جميع اللاعبين على هذا الرابط، 16 00:00:48,000 --> 00:00:53,000 وإذا قمت بالنقر فوق اسمي وانقر على أول مراجعة 17 00:00:53,000 --> 00:00:56,000 سترى caesar.c، وهو بالضبط ما أنا أبحث في. 18 00:00:56,000 --> 00:01:00,000 دعونا نتحدث عن هذا بسرعة حقا. 19 00:01:00,000 --> 00:01:02,000 هذا هو مجرد حل العينة. 20 00:01:02,000 --> 00:01:05,000 هذا ليس بالضرورة الحل الأمثل. 21 00:01:05,000 --> 00:01:08,000 هناك العديد من الطرق المختلفة لكتابة هذا، 22 00:01:08,000 --> 00:01:10,000 ولكن هناك عدد قليل من الأشياء التي أردت أن أسلط الضوء 23 00:01:10,000 --> 00:01:13,000 أن رأيت كما كنت الدرجات، الأخطاء الشائعة التي أعتقد 24 00:01:13,000 --> 00:01:18,000 هذا الحل يقوم بعمل جيد جدا من التعامل معها. 25 00:01:18,000 --> 00:01:22,000 >> أول هو وجود نوع من تعليق رأس في الأعلى. 26 00:01:22,000 --> 00:01:25,000 على خطوط 1 إلى 7 ترى التفاصيل، 27 00:01:25,000 --> 00:01:28,000 بالضبط ما يقوم به هذا البرنامج. 28 00:01:28,000 --> 00:01:32,000 A معيار الممارسات الجيدة عندما كنت تكتب رمز C 29 00:01:32,000 --> 00:01:35,000 بغض النظر إذا ويرد البرنامج ضمن ملف واحد أو 30 00:01:35,000 --> 00:01:38,000 سواء كان تقسيمه على ملفات متعددة هو أن يكون نوعا من 31 00:01:38,000 --> 00:01:40,000 توجيه تعليق في الأعلى. 32 00:01:40,000 --> 00:01:43,000 وهذا هو أيضا للأشخاص الذين يخرجون وكتابة التعليمات البرمجية في العالم الحقيقي. 33 00:01:43,000 --> 00:01:47,000 هذا هو المكان الذي سوف أضع معلومات حقوق النشر. 34 00:01:47,000 --> 00:01:50,000 يقعون تحت يشمل #. 35 00:01:50,000 --> 00:01:55,000 على السطر 16 هناك هذا تعريف #، والتي سنعود إليها في بت واحد فقط. 36 00:01:55,000 --> 00:01:59,000 ثم مرة واحدة وظيفة يبدأ، يبدأ الرئيسية مرة واحدة، 37 00:01:59,000 --> 00:02:03,000 لأنه قد تم هذا البرنامج الواردة في كل وظيفة واحدة 38 00:02:03,000 --> 00:02:09,000 أول شيء جدا أن يحدث، وهذا هو اصطلاحي جدا ونموذجية من برنامج C 39 00:02:09,000 --> 00:02:14,000 التي تأخذ في سطر الأوامر-الحجج هو أنه يتحقق على الفور 40 00:02:14,000 --> 00:02:18,000 >> لفرز وسيطة، argc. 41 00:02:18,000 --> 00:02:24,000 الحق هنا نرى أن هذا البرنامج يتوقع الحجج بالضبط 2. 42 00:02:24,000 --> 00:02:27,000 تذكر أن هناك الوسيطة الأولى هذا واحد خاص 43 00:02:27,000 --> 00:02:29,000 هذا دائما اسم البرنامج الذي يجري تشغيل، 44 00:02:29,000 --> 00:02:31,000 اسم الملف القابل للتنفيذ. 45 00:02:31,000 --> 00:02:36,000 وهذا ما يفعله ذلك هو أنه يمنع المستخدم من تشغيل البرنامج 46 00:02:36,000 --> 00:02:42,000 مع الحجج أكثر أو أقل. 47 00:02:42,000 --> 00:02:44,000 السبب في أننا نريد للتحقق من هذا الحق بعيدا لأن 48 00:02:44,000 --> 00:02:52,000 لا يمكننا الوصول إلى الواقع هذه المجموعة argv الحق موثوق هنا 49 00:02:52,000 --> 00:02:55,000 حتى لقد بحثنا لنرى كيف كبيرة هو عليه. 50 00:02:55,000 --> 00:02:58,000 >> كان واحدا من الأخطاء الشائعة رأيت الناس سوف تذهب مباشرة في 51 00:02:58,000 --> 00:03:01,000 والمسكة argv [1]. 52 00:03:01,000 --> 00:03:06,000 وكانوا الاستيلاء على الحجة الرئيسية من مجموعة والقيام ألف إلى طاء تحقق من ذلك، 53 00:03:06,000 --> 00:03:11,000 ثم انها تريد القيام اختبار لargc فضلا عن الاختبار التالي، 54 00:03:11,000 --> 00:03:16,000 أم لا كان الوسيطة الأولى في الواقع عددا صحيحا في نفس الوقت، 55 00:03:16,000 --> 00:03:20,000 وأن لا يعمل لأنه في حالة عدم وجود الحجج المقدمة 56 00:03:20,000 --> 00:03:26,000 فسوف يكون الاستيلاء على حجة أن ليست هناك أو محاولة للاستيلاء على واحد هو أن لا هناك. 57 00:03:26,000 --> 00:03:29,000 >> والشيء الآخر الكبير الذي يجب أن نلاحظه هو أن 58 00:03:29,000 --> 00:03:32,000 تريد دائما لطباعة نوعا من رسالة الخطأ مفيدة 59 00:03:32,000 --> 00:03:34,000 للمستخدم لتوجيههم. 60 00:03:34,000 --> 00:03:37,000 أنا متأكد من أنك قد قمت جميع برامج التشغيل حيث فجأة تعطل، 61 00:03:37,000 --> 00:03:41,000 وتحصل هذه سخيفة قليلا الحوار التي دفعها ويقول 62 00:03:41,000 --> 00:03:44,000 شيء خفي فظيعة، وربما يعطيك رمز خطأ أو شيء من هذا القبيل 63 00:03:44,000 --> 00:03:47,000 أن لا معنى له. 64 00:03:47,000 --> 00:03:50,000 هذا هو المكان الذي كنت تريد حقا أن تقديم شيء مفيد 65 00:03:50,000 --> 00:03:54,000 وتستهدف المستخدم بحيث عندما يذهبون تشغيله "أوه،" وجه النخيل. 66 00:03:54,000 --> 00:03:58,000 "أنا أعرف بالضبط ما يجب القيام به، وأنا أعرف كيفية إصلاح ذلك". 67 00:03:58,000 --> 00:04:01,000 >> إذا لم يكن لطباعة رسالة، ثم ينتهي بك الأمر الواقع 68 00:04:01,000 --> 00:04:04,000 ترك المستخدم للذهاب دراسة التعليمات البرمجية المصدر 69 00:04:04,000 --> 00:04:07,000 لمعرفة ما حدث من خطأ. 70 00:04:07,000 --> 00:04:11,000 هناك أيضا بعض الأوقات أن عليك استخدام رموز الخطأ المختلفة. 71 00:04:11,000 --> 00:04:14,000 هنا كنا واحد فقط أن أقول كان هناك خطأ، 72 00:04:14,000 --> 00:04:16,000 كان هناك خطأ، كان هناك خطأ. 73 00:04:16,000 --> 00:04:20,000 أكبر برامج، برامج التي تسمى في كثير من الأحيان من قبل برامج أخرى، 74 00:04:20,000 --> 00:04:25,000 سيعود نوعا من رموز الخطأ خاصة في سيناريوهات مختلفة 75 00:04:25,000 --> 00:04:28,000 للاتصال برمجيا ما كنت على خلاف ذلك 76 00:04:28,000 --> 00:04:32,000 مجرد استخدام رسالة لطيفة الإنجليزية لل. 77 00:04:32,000 --> 00:04:35,000 بارد. 78 00:04:35,000 --> 00:04:37,000 ونحن نعمل باستمرار، يمكنك مشاهدة سحب من نحن الرئيسية. 79 00:04:37,000 --> 00:04:40,000 نحن اختبار لمعرفة إذا كان مفتاح تناسبها. 80 00:04:40,000 --> 00:04:42,000 نحصل على رسالة من المستخدم. 81 00:04:42,000 --> 00:04:46,000 السبب في أننا نفعل ذلك في هذا الوقت القيام حلقة، وهذا هو الشيء الذي نحن سوف تغطي 82 00:04:46,000 --> 00:04:50,000 في قليلا قليلا، ولكن اتضح أنه إذا قمت بكتابة السيطرة D 83 00:04:50,000 --> 00:04:54,000 عندما تحصل على هذا GetString بسرعة في محطة 84 00:04:54,000 --> 00:04:59,000 ما هو في الواقع لا أن يرسل حرف خاص 85 00:04:59,000 --> 00:05:01,000 إلى البرنامج. 86 00:05:01,000 --> 00:05:05,000 انه دعا لELF أو حرف نهاية الملف. 87 00:05:05,000 --> 00:05:08,000 وفي هذه الحالة، سوف يكون سلسلة لدينا رسالة فارغة، 88 00:05:08,000 --> 00:05:14,000 لذلك كان هذا لا شيء بحثنا عنه في المشكلة حددت لنفسها. 89 00:05:14,000 --> 00:05:17,000 >> ولكن ونحن نمضي على، والآن بعد أن بدأنا الحديث عن مؤشرات 90 00:05:17,000 --> 00:05:21,000 وتخصيص ذاكرة ديناميكية على كومة، 91 00:05:21,000 --> 00:05:25,000 التحقق من وجود فارغة كلما كان لديك وظيفة التي قد 92 00:05:25,000 --> 00:05:30,000 العودة فارغة كقيمة هو الشيء الذي عليك أن ترغب في الحصول في العادة من القيام. 93 00:05:30,000 --> 00:05:33,000 هذا هو في المقام الأول هنا للتوضيح. 94 00:05:33,000 --> 00:05:36,000 ولكن عندما تفعل انظر GetString في المستقبل، 95 00:05:36,000 --> 00:05:41,000 لذلك من مشكلة تعيين 4 على، فأنت تريد أن تضع ذلك في الاعتبار. 96 00:05:41,000 --> 00:05:44,000 مرة أخرى، هذه ليست قضية لمشكلة المجموعة 3 إما لأننا لم تغط حتى الآن. 97 00:05:44,000 --> 00:05:53,000 وأخيرا، نصل الى هذا الجزء حيث نصل ​​إلى حلقة التشفير الرئيسي، 98 00:05:53,000 --> 00:05:57,000 وهناك بضعة أشياء يجري هنا. 99 00:05:57,000 --> 00:06:02,000 أولا، نحن تكرار عبر سلسلة الرسالة بالكامل نفسه. 100 00:06:02,000 --> 00:06:07,000 هنا لقد حافظنا الدعوة التوابع strlen في حالة، 101 00:06:07,000 --> 00:06:12,000 فيه عدد من أوضحتم ليست وسيلة رائعة للذهاب. 102 00:06:12,000 --> 00:06:15,000 تبين في هذه الحالة أيضا ليست كبيرة، 103 00:06:15,000 --> 00:06:20,000 ويرجع ذلك جزئيا أننا تعديل محتويات الرسالة نفسها 104 00:06:20,000 --> 00:06:27,000 داخل لحلقة، لذلك إذا كان لدينا رسالة هذا 10 حرفا، 105 00:06:27,000 --> 00:06:32,000 أول مرة أن نبدأ لحلقة التوابع strlen سيعود ماذا؟ 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> ولكن إذا كنا ثم تعديل الرسالة، نقول تعديل طابعها 5، 108 00:06:40,000 --> 00:06:46,000 ونلقي في حرف 0 \ 5 في الموقف، 109 00:06:46,000 --> 00:06:49,000 على التكرار اللاحقة سوف التوابع strlen (الرسالة) لن يعود ما فعلته 110 00:06:49,000 --> 00:06:52,000 أول مرة نحن يتحرك، 111 00:06:52,000 --> 00:06:56,000 ولكن بدلا من ذلك فإنه سيعود 5 لأننا ألقوا في ذلك فاصل فارغة، 112 00:06:56,000 --> 00:06:59,000 ويتم تعريف طول السلسلة 113 00:06:59,000 --> 00:07:03,000 من موقف 0 \ ذلك. 114 00:07:03,000 --> 00:07:09,000 في هذه الحالة، وهذا هو وسيلة رائعة للذهاب لأننا تعديله في المكان. 115 00:07:09,000 --> 00:07:13,000 ولكن لاحظت أن هذا هو في الواقع بسيط من المستغرب لتشفير 116 00:07:13,000 --> 00:07:16,000 إذا يمكنك الحصول على الرياضيات الصحيح. 117 00:07:16,000 --> 00:07:19,000 كل ما هو مطلوب هو للتحقق ما إذا كان الحرف الذي كنت تبحث في 118 00:07:19,000 --> 00:07:21,000 هو كبيرة أو صغيرة. 119 00:07:21,000 --> 00:07:24,000 >> السبب ليس لدينا سوى للتحقق من ذلك وليس لدينا للتحقق من 120 00:07:24,000 --> 00:07:27,000 حالة ألفا هي لأن 121 00:07:27,000 --> 00:07:30,000 إذا كان الحرف هو كبيرة أو صغيرة إذا كان 122 00:07:30,000 --> 00:07:33,000 ثم انها بالتأكيد حرف أبجدي، 123 00:07:33,000 --> 00:07:38,000 لأننا لم يكن لديك أرقام الكبيرة والصغيرة. 124 00:07:38,000 --> 00:07:41,000 والشيء الآخر نقوم به وهذا هو صعبة قليلا، 125 00:07:41,000 --> 00:07:45,000 ولقد قمنا تعديل معيار التشفير قيصر الصيغة 126 00:07:45,000 --> 00:07:49,000 التي أعطت نحن في مشكلة مواصفات الموضوعة. 127 00:07:49,000 --> 00:07:52,000 ما هو مختلف هنا هو أننا طرح 128 00:07:52,000 --> 00:07:58,000 في العاصمة حالة الأحرف الكبيرة A، ومن ثم أضفنا العاصمة A 129 00:07:58,000 --> 00:08:02,000 نسخ في في نهاية المطاف. 130 00:08:02,000 --> 00:08:05,000 >> أنا أعرف عدد قليل من كنت قد فعلت ذلك في التعليمات البرمجية. 131 00:08:05,000 --> 00:08:09,000 لم أي من القيام بذلك في العروض الخاصة بك؟ 132 00:08:09,000 --> 00:08:13,000 هل هذا. يمكنك شرح هذا ما يفعله، Sahb؟ 133 00:08:13,000 --> 00:08:18,000 عن طريق طرح بها، لأنك فعلت وزارة الدفاع مباشرة بعد ذلك، 134 00:08:18,000 --> 00:08:21,000 عليك أن تأخذ بها، لذلك بهذه الطريقة تحصل [السعال] الموقف. 135 00:08:21,000 --> 00:08:25,000 ومن ثم عن طريق إضافته لاحقا تحولت لك أكثر من تلك التي أردت. 136 00:08:25,000 --> 00:08:27,000 نعم، بالضبط. 137 00:08:27,000 --> 00:08:32,000 وقال ما كان Sahb أنه عندما نريد أن نضيف 138 00:08:32,000 --> 00:08:36,000 لدينا رسالة والمفتاح لدينا معا 139 00:08:36,000 --> 00:08:42,000 ومن ثم وزارة الدفاع أن وزارة الدفاع التي كتبها NUM_LETTERS، 140 00:08:42,000 --> 00:08:50,000 إذا كنا لا حجم رسالتنا في نطاق 0-25 المناسبة الأولى، 141 00:08:50,000 --> 00:08:54,000 ثم نحن في نهاية المطاف قد الحصول على عدد غريب حقا 142 00:08:54,000 --> 00:08:59,000 لأن القيم التي نحن نبحث في عندما ننظر إلى رسالة [أنا]، 143 00:08:59,000 --> 00:09:03,000 عندما ننظر إلى الحرف إيث من رسالة النص العادي لدينا، 144 00:09:03,000 --> 00:09:08,000 هو قيمة في مكان ما في هذا النطاق 65 حتي 122 145 00:09:08,000 --> 00:09:13,000 استنادا إلى القيم الكبيرة لASCII A إلى Z صغيرة. 146 00:09:13,000 --> 00:09:18,000 وهكذا عندما كنا زارة الدفاع من قبل 26 أو بواسطة NUM_LETTERS، 147 00:09:18,000 --> 00:09:23,000 منذ أن كان لدينا تعريف # في أعلى يمين هنا حتى، 148 00:09:23,000 --> 00:09:28,000 وهذا سوف يعطينا قيمة هذا في النطاق من 0 إلى 25، 149 00:09:28,000 --> 00:09:30,000 ونحن بحاجة إلى وسيلة لتوسيع نطاق ثم أن ما يصل إلى الوراء 150 00:09:30,000 --> 00:09:32,000 وسهولة الحصول عليها في النطاق ASCII المناسبة. 151 00:09:32,000 --> 00:09:36,000 وأسهل طريقة لذلك هي فقط لتوسيع نطاق كل شيء إلى أسفل 152 00:09:36,000 --> 00:09:39,000 في النطاق من 0 إلى 25 إلى بادئ ذي بدء، 153 00:09:39,000 --> 00:09:43,000 وتحول بعد ذلك كل شيء احتياطي في نهاية المطاف. 154 00:09:43,000 --> 00:09:46,000 >> خطأ آخر شائع أن رأيت الناس هو أن تصل الى 155 00:09:46,000 --> 00:09:50,000 إذا كنت في الواقع لا نفعل هذا التحجيم على الفور 156 00:09:50,000 --> 00:09:53,000 وقمت بإضافة رسالة والمفتاح معا وإضافتها، ويقول، 157 00:09:53,000 --> 00:09:58,000 شار إلى متغير، ومشكلة في ذلك 158 00:09:58,000 --> 00:10:01,000 هو رسالة منذ [أنا] هو عدد كبير نسبيا لتبدأ- 159 00:10:01,000 --> 00:10:05,000 تذكر أنه لا يقل عن 65 اذا كان لأحرف كبيرة 160 00:10:05,000 --> 00:10:09,000 إذا كان لديك مفتاح كبير، ويقول، شيء من هذا القبيل 100، 161 00:10:09,000 --> 00:10:13,000 وقمت بإضافة تلك 2 معا إلى شار وقعت وأنت تسير في الحصول على تجاوز. 162 00:10:13,000 --> 00:10:17,000 وأنت تسير في الحصول على قيمة أكبر من هذا 127، 163 00:10:17,000 --> 00:10:22,000 وهو أكبر قيمة متغير يمكن أن تعقد شار. 164 00:10:22,000 --> 00:10:26,000 مرة أخرى، لهذا السبب كنت تريد أن تفعل هذا النوع من الاشياء لتبدأ. 165 00:10:26,000 --> 00:10:29,000 حصلت على بعض الناس حول هذه الحالة عن طريق القيام على والا اذا واختبار 166 00:10:29,000 --> 00:10:33,000 لمعرفة ما اذا كان تجاوز قبل القيام بذلك، 167 00:10:33,000 --> 00:10:36,000 ولكن بهذه الطريقة يحصل حول ذلك. 168 00:10:36,000 --> 00:10:40,000 ثم طبعت في هذا الحل ونحن من السلسلة بأكملها في نهاية جدا. 169 00:10:40,000 --> 00:10:45,000 أشخاص آخرين تطبع حرف في كل مرة. كلاهما ممتاز. 170 00:10:45,000 --> 00:10:51,000 عند هذه النقطة، هل لديك أي أسئلة الرجال، أي تعليقات حول هذا الموضوع؟ 171 00:10:51,000 --> 00:10:56,000 الأشياء التي تحب، وأشياء كنت لا تحب؟ 172 00:10:56,000 --> 00:10:58,000 >> كان لي سؤال. 173 00:10:58,000 --> 00:11:01,000 ربما غاب I أثناء تفسيركم، ولكن كيف يفعل هذا البرنامج 174 00:11:01,000 --> 00:11:07,000 تخطي المسافات لربط مفتاح لطول النص؟ 175 00:11:07,000 --> 00:11:10,000 هذا هو مجرد قيصر الشفرات. >> أوه، آسف، نعم. 176 00:11:10,000 --> 00:11:13,000 نعم، سنرى ذلك. 177 00:11:13,000 --> 00:11:16,000 في الشفرات قيصر وصلنا حول ذلك بسبب 178 00:11:16,000 --> 00:11:18,000 نحن فقط انقلبت حرفا. 179 00:11:18,000 --> 00:11:27,000 نحن فقط تناوب عليها إذا كانت كبيرة أو صغيرة. 180 00:11:27,000 --> 00:11:32,000 يا رفاق شعور جيد جدا عن هذا؟ 181 00:11:32,000 --> 00:11:34,000 لا تتردد في نسخ هذا الوطن، أعتبر، 182 00:11:34,000 --> 00:11:37,000 ذلك لمقارنة ما كتب يا رفاق. 183 00:11:37,000 --> 00:11:42,000 بالتأكيد يشعر حر أن يرسل الأسئلة حول هذا الموضوع أيضا. 184 00:11:42,000 --> 00:11:46,000 ومرة أخرى، ندرك أن الهدف هنا مع مشكلتك يحدد 185 00:11:46,000 --> 00:11:50,000 ليس لتحصل على اللاعبين لكتابة التعليمات البرمجية مثالية لمجموعات مشكلتك. 186 00:11:50,000 --> 00:11:57,000 انها تجربة التعلم. نعم. 187 00:11:57,000 --> 00:12:01,000 >> عودة إلى القيام به أثناء الحلقة، إذا كان يساوي فارغة، 188 00:12:01,000 --> 00:12:06,000 ذلك يعني فقط فارغة لا شيء، فهي مجرد ضرب أدخل؟ 189 00:12:06,000 --> 00:12:12,000 فارغة هي قيمة مؤشر خاص، 190 00:12:12,000 --> 00:12:17,000 ونحن نستخدم فارغة عندما نريد أن نقول 191 00:12:17,000 --> 00:12:23,000 لدينا متغير المؤشر الذي يشير إلى أي شيء. 192 00:12:23,000 --> 00:12:28,000 وعادة ذلك فهذا يعني أن هذا المتغير، هذا المتغير رسالة 193 00:12:28,000 --> 00:12:35,000 فارغة، وهنا، لأننا باستخدام CS50 نوع السلسلة الخاصة 194 00:12:35,000 --> 00:12:37,000 ما هو نوع سلسلة CS50؟ 195 00:12:37,000 --> 00:12:42,000 هل رأيت ما هو عليه عند ديفيد انسحبت غطاء محرك السيارة في محاضرة؟ 196 00:12:42,000 --> 00:12:44,000 انها غير تقليدي، انها مؤشر، أليس كذلك؟ 197 00:12:44,000 --> 00:12:48,000 حسنا، نعم. >> انها تشار *. 198 00:12:48,000 --> 00:12:52,000 وهكذا يمكننا حقا استبدال هذا 199 00:12:52,000 --> 00:12:56,000 هنا مع رسالة * شار، 200 00:12:56,000 --> 00:13:04,000 وبالتالي فإن وظيفة GetString، إذا أنها لا تحصل على بنجاح سلسلة من المستخدم، 201 00:13:04,000 --> 00:13:08,000 فإنه لا يمكن تحليل سلسلة، وحالة واحدة في التي لا يمكن تحليل سلسلة 202 00:13:08,000 --> 00:13:11,000 هو إذا كان المستخدم أنواع نهاية حرف الملف، D السيطرة، 203 00:13:11,000 --> 00:13:17,000 وهي ليست شيئا تفعل عادة، ولكن اذا ما حدث ذلك 204 00:13:17,000 --> 00:13:20,000 ثم سوف الدالة بإرجاع قيمة فارغة مثل هذه طريقة للقول 205 00:13:20,000 --> 00:13:23,000 "مهلا، أنا لم تحصل على السلسلة." 206 00:13:23,000 --> 00:13:27,000 ماذا سيحدث إذا لم نضع رسالة = فارغة، 207 00:13:27,000 --> 00:13:30,000 وهو أمر نحن لم تفعل حتى الآن؟ 208 00:13:30,000 --> 00:13:32,000 لماذا أن تكون مشكلة هنا؟ 209 00:13:32,000 --> 00:13:38,000 لأنني أعرف أن تحدثنا قليلا في محاضرة عن التسرب في الذاكرة. 210 00:13:38,000 --> 00:13:42,000 نعم، دعونا نفعل ذلك، ودعونا نرى ما سيحدث. 211 00:13:42,000 --> 00:13:44,000 >> كان السؤال باسيل ماذا يحدث إذا لم يكن لدينا في الواقع 212 00:13:44,000 --> 00:13:48,000 هذه الرسالة = اختبار فارغة؟ 213 00:13:48,000 --> 00:13:51,000 دعونا انتقل لأعلى إلى الأعلى. 214 00:13:51,000 --> 00:13:53,000 يمكنك التعليق الرجال ذلك. 215 00:13:53,000 --> 00:13:55,000 في الواقع، أنا حفظه في المراجعة. 216 00:13:55,000 --> 00:13:58,000 سيكون هذا التنقيح 3. 217 00:13:58,000 --> 00:14:02,000 ما عليك القيام به لتشغيل هذا البرنامج سيكون لديك لفوق هذا الرمز هنا والعتاد حتى، 218 00:14:02,000 --> 00:14:04,000 وسيكون لديك لإضافة وسيطة لها. 219 00:14:04,000 --> 00:14:10,000 سيكون لديك لإعطائه الحجة الرئيسية لأننا نريد أن يمر في وسيطة سطر الأوامر. 220 00:14:10,000 --> 00:14:13,000 هنا أنا ذاهب لاعطائها الرقم 3. أود 3. 221 00:14:13,000 --> 00:14:19,000 التكبير الآن من العودة، تشغيل البرنامج. 222 00:14:19,000 --> 00:14:24,000 انها تعمل، وتجميع، وبناء. 223 00:14:24,000 --> 00:14:27,000 هنا نذهب. انها في انتظار أن تتم مطالبتك. 224 00:14:27,000 --> 00:14:33,000 إذا كنت اكتب في شيء من هذا القبيل حيث لم مرحبا، أن تذهب؟ 225 00:14:33,000 --> 00:14:38,000 أوه، استغرق وقتا طويلا برنامجي لتشغيل. كنت jawing لفترة طويلة جدا. 226 00:14:38,000 --> 00:14:40,000 هنا يذهب. 227 00:14:40,000 --> 00:14:43,000 الآن أنا اكتب في مرحبا. 228 00:14:43,000 --> 00:14:46,000 ونحن نرى أنه يرمز بشكل مناسب. 229 00:14:46,000 --> 00:14:52,000 ما يحدث الآن إذا فعلنا GetString موجه للعودة فارغة؟ 230 00:14:52,000 --> 00:14:57,000 تذكر، قلت إن فعلنا ذلك عن طريق الضغط على السيطرة D في نفس الوقت. 231 00:14:57,000 --> 00:14:59,000 أنا هنا انتقل لأعلى. سنقوم تشغيله مرة أخرى. 232 00:14:59,000 --> 00:15:01,000 المبنى. هناك تذهب. 233 00:15:01,000 --> 00:15:04,000 الآن عندما ضرب السيطرة D 234 00:15:04,000 --> 00:15:12,000 حصلت على هذا الخط الذي يقول opt/sandbox50/bin/run.sh، خطأ الإنقسام. 235 00:15:12,000 --> 00:15:15,000 لقد رأينا أن يا رفاق من قبل؟ 236 00:15:15,000 --> 00:15:17,000 >> [طالب] لماذا لا يوجد عفوا، >>؟ 237 00:15:17,000 --> 00:15:20,000 [طالب] لماذا لا يوجد تفريغ الأساسية في هذه الحالة؟ 238 00:15:20,000 --> 00:15:26,000 تفريغ الأساسية هي، السؤال هو لماذا لا يوجد تفريغ الأساسية هنا؟ 239 00:15:26,000 --> 00:15:29,000 السؤال هو أنه قد يكون هناك، ولكن تفريغ الأساسية هو ملف 240 00:15:29,000 --> 00:15:31,000 المخزن الذي يحصل على القرص الصلب. 241 00:15:31,000 --> 00:15:34,000 في هذه الحالة فقد عطلنا مقالب الأساسية 242 00:15:34,000 --> 00:15:37,000 على الملقم البعيد بحيث أننا لا يخطأ والناس SEG 243 00:15:37,000 --> 00:15:40,000 وبناء طن من مقالب الأساسية. 244 00:15:40,000 --> 00:15:46,000 ولكن قد تحصل على واحد. 245 00:15:46,000 --> 00:15:48,000 مقالب الأساسية هي نوع من الشيء الذي يمكنك تعطيل كثير من الأحيان، 246 00:15:48,000 --> 00:15:52,000 وأحيانا كنت تفعل. 247 00:15:52,000 --> 00:15:55,000 خطأ تجزئة، للإجابة على سؤالك، باسيل، 248 00:15:55,000 --> 00:16:00,000 يقول ان حاولنا الوصول إلى مؤشر 249 00:16:00,000 --> 00:16:05,000 لم يتم تعيين للإشارة إلى أن أي شيء. 250 00:16:05,000 --> 00:16:09,000 تذكر Binky في الفيديو عندما يحاول Binky 251 00:16:09,000 --> 00:16:12,000 انتقل الوصول إلى مؤشر هذا لا يشير إلى أي شيء؟ 252 00:16:12,000 --> 00:16:16,000 في هذه الحالة أعتقد من الناحية الفنية المؤشر يشير إلى شيء. 253 00:16:16,000 --> 00:16:20,000 انها تشير الى فارغة، التي هي 0 من الناحية الفنية، 254 00:16:20,000 --> 00:16:25,000 ولكن يعرف أن تكون في وضع القطعة التي لا يمكن الوصول إليه 255 00:16:25,000 --> 00:16:28,000 حسب البرنامج الخاص بك، حتى تحصل على خطأ تجزئة 256 00:16:28,000 --> 00:16:31,000 لأنك غير الوصول إلى الذاكرة هذا في قطعة صالحة 257 00:16:31,000 --> 00:16:38,000 مثل الجزء كومة أو قطعة مكدس أو مقطع البيانات. 258 00:16:38,000 --> 00:16:40,000 بارد. 259 00:16:40,000 --> 00:16:48,000 أي أسئلة أخرى حول قيصر؟ 260 00:16:48,000 --> 00:16:51,000 >> دعنا ننتقل. دعونا ننظر في التنقيح 2 بسرعة حقا. 261 00:16:51,000 --> 00:17:00,000 هذا Vigenère. 262 00:17:00,000 --> 00:17:04,000 هنا في Vigenère 263 00:17:04,000 --> 00:17:06,000 سنقوم من خلال المشي هذا واحد بسرعة نظرا لانه، مرة أخرى، 264 00:17:06,000 --> 00:17:10,000 Vigenère وقيصر مماثلة تماما. 265 00:17:10,000 --> 00:17:12,000 تعليق الرأس من قبل، 266 00:17:12,000 --> 00:17:17,000 # تعريف هو قبل لتجنب استخدام هذه الأرقام السحرية. 267 00:17:17,000 --> 00:17:21,000 الشيء الجميل هو يقول كنا نريد للانتقال إلى 268 00:17:21,000 --> 00:17:23,000 أبجدية مختلفة أو شيء من هذا القبيل. 269 00:17:23,000 --> 00:17:26,000 بدلا من الاضطرار للذهاب يدويا تغيير جميع ال 26 في كود 270 00:17:26,000 --> 00:17:30,000 يمكننا تغيير هذا إلى 27 أو إسقاط عليه 271 00:17:30,000 --> 00:17:34,000 إذا كنا باستخدام الحروف الهجائية مختلفة، لغات مختلفة. 272 00:17:34,000 --> 00:17:38,000 مرة أخرى، لقد حصلت على هذا الاختيار من عدد حجة، 273 00:17:38,000 --> 00:17:42,000 وحقا يمكنك أن تأخذ تقريبا هذا كقالب. 274 00:17:42,000 --> 00:17:46,000 ينبغي الى حد كبير كل برنامج تكتب لها، 275 00:17:46,000 --> 00:17:50,000 إذا كان يأخذ سطر الأوامر-الحجج بعض تسلسل خطوط 276 00:17:50,000 --> 00:17:55,000 الذي يقرأ مثل هذا في البداية. 277 00:17:55,000 --> 00:17:59,000 وهذا واحد من الاختبارات التعقل الأول الذي تريد القيام به. 278 00:17:59,000 --> 00:18:03,000 >> هنا ما فعلته هو أننا تأكدنا من أن 279 00:18:03,000 --> 00:18:06,000 وكان الكلمة صحيحة، وهذا هو الاختيار الثاني الذي قمنا به. 280 00:18:06,000 --> 00:18:11,000 لاحظت مرة أخرى أن هذا انفصلنا من argc و 2. 281 00:18:11,000 --> 00:18:14,000 لاحظ أنه في هذه الحالة شيء واحد كان علينا أن نفعل كان بدلا من ذلك 282 00:18:14,000 --> 00:18:18,000 من استخدام لط أردنا للتحقق من صحة السلسلة بأكملها، 283 00:18:18,000 --> 00:18:21,000 ومن أجل ذلك عليك أن تذهب في الواقع حرف بحرف 284 00:18:21,000 --> 00:18:23,000 على السلسلة. 285 00:18:23,000 --> 00:18:29,000 ليس هناك طريقة جيدة للاتصال شيء عليه 286 00:18:29,000 --> 00:18:31,000 لأنه حتى، على سبيل المثال، لكنني لن بإرجاع 0 287 00:18:31,000 --> 00:18:37,000 إذا كان لا يمكن تحليل عدد صحيح، بحيث لا يعمل حتى. 288 00:18:37,000 --> 00:18:42,000 مرة أخرى، رسالة لطيفة تشرح للمستخدم ما حدث بالضبط. 289 00:18:42,000 --> 00:18:45,000 ثم هنا، مرة أخرى، ونحن أيضا التعامل مع الحالة حيث 290 00:18:45,000 --> 00:18:50,000 يقوم المستخدم بكتابة حرف D في السيطرة عشوائي. 291 00:18:50,000 --> 00:18:54,000 >> وكان تشارلوت ثم سؤال في وقت سابق حول كيفية تمكنا من تخطي المسافات 292 00:18:54,000 --> 00:18:57,000 في سلسلة لدينا هنا. 293 00:18:57,000 --> 00:19:00,000 وكان هذا النوع من غرار ما فعلنا مع برنامج ماي سبيس 294 00:19:00,000 --> 00:19:04,000 فعلنا ذلك في الفرع، وعملت هذه الطريقة 295 00:19:04,000 --> 00:19:08,000 هو أننا تعقب عدد الرسائل التي رأيناه. 296 00:19:08,000 --> 00:19:13,000 كما مشينا على مدى سلسلة الرسالة، كما مشينا على حرف بحرف، 297 00:19:13,000 --> 00:19:16,000 تتبعنا المؤشر كجزء من حلقة لدينا، وبعد ذلك تعقب أيضا 298 00:19:16,000 --> 00:19:21,000 عدد الرسائل، بحيث غير أحرف خاصة، غير أرقام، غير البيض الفضاء 299 00:19:21,000 --> 00:19:27,000 أن كنت رأينا في متغير منفصلة. 300 00:19:27,000 --> 00:19:33,000 ومن ثم يعدل هذا الحل المفتاح 301 00:19:33,000 --> 00:19:41,000 للحصول على عدد صحيح المفتاح الفعلي، وأنه يفعل ذلك على الطاير، 302 00:19:41,000 --> 00:19:47,000 قبل ذلك الحق ثم يذهب لتشفير الحرف الرسالة الفعلية. 303 00:19:47,000 --> 00:19:50,000 هناك بعض الحلول التي كانت كبيرة جدا تماما 304 00:19:50,000 --> 00:19:58,000 من شأنها أن تعديل مفتاح يصل عند اختبار لصلاحية المفتاح ل. 305 00:19:58,000 --> 00:20:01,000 بالإضافة إلى التأكد من أن حرف والكلمة الرئيسية 306 00:20:01,000 --> 00:20:05,000 وكان من حرف أبجدي اتضح أيضا أن إلى عدد صحيح 307 00:20:05,000 --> 00:20:13,000 في النطاق من 0 إلى 25 إلى تخطي ثم الاضطرار إلى فعل ذلك في وقت لاحق في هذا لحلقة. 308 00:20:13,000 --> 00:20:18,000 مرة أخرى، تشاهد هنا وهذا هو حقا رمز بالضبط نفس 309 00:20:18,000 --> 00:20:22,000 أن كنا في قيصر في هذه المرحلة. 310 00:20:22,000 --> 00:20:25,000 كنت تفعل الشيء نفسه بالضبط، وبالتالي فإن الخدعة الحقيقية هو معرفة 311 00:20:25,000 --> 00:20:30,000 كيفية تحويل الكلمة إلى عدد صحيح. 312 00:20:30,000 --> 00:20:35,000 >> الشيء الوحيد الذي قمنا به هنا هو أن قليلا كثيفة 313 00:20:35,000 --> 00:20:39,000 هو أننا تتكرر هذه العبارة، أعتقد أنك يمكن أن يطلق عليه، 314 00:20:39,000 --> 00:20:45,000 3 مرات منفصلة على خطوط 58، 59، و 61. 315 00:20:45,000 --> 00:20:52,000 شخص ما يمكن أن يفسر بالضبط ما هذه العبارة لا؟ 316 00:20:52,000 --> 00:20:55,000 انها شخصية الوصول، مثل قلته. 317 00:20:55,000 --> 00:20:59,000 نعم، انها (غير مسموع) حرف في الكلمة، 318 00:20:59,000 --> 00:21:04,000 وذلك من عدد من الخطابات ينظر لأنك تتحرك فقط على طول 319 00:21:04,000 --> 00:21:06,000 الكلمة مرة واحدة كنت قد رأيت هذه الرسالة، 320 00:21:06,000 --> 00:21:10,000 بحيث يجري بصورة فعالة لتخطي المسافات وأشياء من هذا القبيل. 321 00:21:10,000 --> 00:21:12,000 نعم، بالضبط. 322 00:21:12,000 --> 00:21:16,000 ثم مرة واحدة كنت قد رأيت فارغة الكلمات الرئيسية التي زارة الدفاع فقط حتى قمت بنقل عودة حولها. 323 00:21:16,000 --> 00:21:18,000 بالضبط. وهذا هو التفسير المثالي. 324 00:21:18,000 --> 00:21:23,000 ما هو كيفن وقال أننا نريد أن الفهرس في الكلمة. 325 00:21:23,000 --> 00:21:28,000 نريد للحصول على حرف num_letters_seen، اذا صح التعبير، 326 00:21:28,000 --> 00:21:32,000 ولكن إذا num_letters_seen يتجاوز طول الكلمة، 327 00:21:32,000 --> 00:21:37,000 الطريقة نعود إلى مجموعة مناسبة هي أننا استخدام مشغل وزارة الدفاع 328 00:21:37,000 --> 00:21:40,000 التفاف حول فعال. 329 00:21:40,000 --> 00:21:43,000 على سبيل المثال، كما هو الحال في المدى القصير، الكلمة الرئيسية لدينا هي لحم الخنزير المقدد، 330 00:21:43,000 --> 00:21:46,000 وانها 5 رسائل طويلة. 331 00:21:46,000 --> 00:21:50,000 ولكن شاهدنا 6 رسائل في نصنا سهل في هذه المرحلة 332 00:21:50,000 --> 00:21:52,000 والمشفرة 6. 333 00:21:52,000 --> 00:21:57,000 ونحن في نهاية المطاف الوصول إلى num_letters_seen، 334 00:21:57,000 --> 00:22:00,000 الذي هو 6، وزارة الدفاع طول الكلمة، 5، 335 00:22:00,000 --> 00:22:04,000 وهكذا لن نحصل على 1، وذلك ما سنقوم به هو أننا سوف 336 00:22:04,000 --> 00:22:14,000 وصول إلى داخل الحرف الأول من الكلمات الرئيسية في تلك المرحلة. 337 00:22:14,000 --> 00:22:21,000 >> حسنا، على أية أسئلة Vigenère 338 00:22:21,000 --> 00:22:26,000 قبل أن ننتقل؟ 339 00:22:26,000 --> 00:22:31,000 يا رفاق شعور جيد جدا عن هذا؟ 340 00:22:31,000 --> 00:22:35,000 بارد، عظيم. 341 00:22:35,000 --> 00:22:38,000 أريد أن تأكد من أن الرجال يحصلون على فرصة لرؤية رمز 342 00:22:38,000 --> 00:22:48,000 التي نعتقد أنها تبدو جيدة وتتاح لهم الفرصة لنتعلم منها. 343 00:22:48,000 --> 00:22:53,000 هذا وستكون مشاركة سنكون باستخدام المساحات في الوقت الراهن، 344 00:22:53,000 --> 00:22:59,000 ونحن في طريقنا إلى التحول الآن، وانا ذاهب للذهاب إلى cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 حتى نتمكن من القيام قليلا من مسابقة الاستعراض. 346 00:23:06,000 --> 00:23:10,000 أفضل طريقة أعتقد أن تبدأ في فعل مسابقة الاستعراض 347 00:23:10,000 --> 00:23:15,000 هو أن يأتي إلى هذه الصفحة محاضرات، cs50.net/lectures، 348 00:23:15,000 --> 00:23:20,000 وتحت كل من العناوين الأسبوع، لذلك إذا كنت انظر هنا في أسبوع 0، 349 00:23:20,000 --> 00:23:27,000 أرى أن لدينا قائمة من الموضوعات التي غطينا في أسبوع 0. 350 00:23:27,000 --> 00:23:31,000 >> إذا كان أي من هذه المواضيع يبدو غير مألوف لك 351 00:23:31,000 --> 00:23:34,000 فأنت تريد بالتأكيد للعودة ونظف مذكرات محاضرات، وربما 352 00:23:34,000 --> 00:23:39,000 المقشود حتى من خلال المحاضرات ومشاهدتها مرة أخرى إذا كنت تريد 353 00:23:39,000 --> 00:23:44,000 لالتعود على ما يحدث مع كل واحد من هذه المواضيع. 354 00:23:44,000 --> 00:23:49,000 وبالإضافة إلى ذلك سوف أقول هذا سنة واحدة من الموارد باردة لدينا 355 00:23:49,000 --> 00:23:55,000 هو أن هذه السراويل التي انشأناها، وإذا نظرتم ليلة 0 356 00:23:55,000 --> 00:24:00,000 ليس لدينا كل الموضوعات التي يتم تناولها، ولكن لدينا عدد غير قليل منهم، 357 00:24:00,000 --> 00:24:03,000 بعض من اصعب منها، ومشاهدة ذلك هذه السراويل مرة أخرى 358 00:24:03,000 --> 00:24:08,000 هو وسيلة جيدة للحصول على ما يصل الى سرعة. 359 00:24:08,000 --> 00:24:15,000 على وجه الخصوص، وأنا ذاهب إلى وضعها في المكونات ل3 على القاع، منذ تلك فعلت. 360 00:24:15,000 --> 00:24:20,000 ولكن إذا كنت تعاني من ثنائي، بت، عرافة، وهذا النوع من الاشياء، 361 00:24:20,000 --> 00:24:22,000 ثنائي هو مكان عظيم للبدء. 362 00:24:22,000 --> 00:24:25,000 ASCII هو آخر واحد هذا امر جيد جدا لمشاهدة. 363 00:24:25,000 --> 00:24:31,000 يمكنك حتى مشاهدة لي في سرعة 1.5x إذا أنا ذاهب بطيئة جدا بالنسبة لك. 364 00:24:31,000 --> 00:24:35,000 منذ الاستعراض انها، لا تتردد في القيام بذلك. 365 00:24:35,000 --> 00:24:40,000 >> فقط للبدء سريعا حقا، ونحن في طريقنا للذهاب من خلال زوجين من هذه المشاكل الاختبار 366 00:24:40,000 --> 00:24:44,000 فقط لتنتج بسرعة من خلال هذه. 367 00:24:44,000 --> 00:24:50,000 على سبيل المثال، دعونا ننظر في مشكلة ال 16 التي أنا عندي الحق هنا على اللوح. 368 00:24:50,000 --> 00:24:54,000 ونحن قد حصلت على هذا الحساب التالي في ثنائي، 369 00:24:54,000 --> 00:24:56,000 ونحن نريد أن تظهر أي عمل. 370 00:24:56,000 --> 00:24:59,000 حسنا، انا ذاهب لإعطاء هذه رصاصة واحدة. 371 00:24:59,000 --> 00:25:01,000 يجب عليك متابعة مع الرجال ورقة، 372 00:25:01,000 --> 00:25:04,000 وسوف نفعل ذلك بسرعة حقا. 373 00:25:04,000 --> 00:25:06,000 نريد لأداء الحساب التالي في ثنائي. 374 00:25:06,000 --> 00:25:16,000 أنا عندي 00110010. 375 00:25:16,000 --> 00:25:27,000 وانا ذاهب لإضافة إليها 00110010. 376 00:25:27,000 --> 00:25:30,000 لعباقرة الرياضيات بعد طول في المنزل، 377 00:25:30,000 --> 00:25:35,000 هذا هو ضرب فعال بنسبة 2. 378 00:25:35,000 --> 00:25:37,000 دعونا نبدأ. 379 00:25:37,000 --> 00:25:39,000 ونحن في طريقنا لمتابعة خوارزمية بالإضافة نفسه الذي نقوم به 380 00:25:39,000 --> 00:25:43,000 عندما نضيف الأرقام العشرية معا. 381 00:25:43,000 --> 00:25:46,000 حقا الفرق الوحيد هنا هو أننا حلقة حول العودة 382 00:25:46,000 --> 00:25:51,000 مرة واحدة لدينا 1 + 1 بدلا من مرة واحدة نصل الى 10. 383 00:25:51,000 --> 00:25:53,000 >> إذا بدأنا من اليمين، بسرعة حقا، ما هو الرقم الأول؟ 384 00:25:53,000 --> 00:25:55,000 [طالب] 0. >> [نيت H.] 0. 385 00:25:55,000 --> 00:25:58,000 كبيرة، والرقم الثاني؟ 386 00:25:58,000 --> 00:26:00,000 [طالب] (1). 387 00:26:00,000 --> 00:26:02,000 [نيت H.] هل هي 1؟ 1 + 1 هو؟ 388 00:26:02,000 --> 00:26:04,000 [طالب] 10. 389 00:26:04,000 --> 00:26:08,000 [نيت H.] بالضبط، وذلك ما هو الرقم الصحيح أن أكتب تحت تلك 2 أضيف معا؟ 390 00:26:08,000 --> 00:26:11,000 [طالب] 1، 0 أو 0 ثم حمل 1. 391 00:26:11,000 --> 00:26:15,000 [نيت H.] 0 وتحمل 1، بالضبط. 392 00:26:15,000 --> 00:26:18,000 القادم واحد حتى، باسل، كنت. 393 00:26:18,000 --> 00:26:20,000 ما هي الثالثة؟ >> [باسل] 1. 394 00:26:20,000 --> 00:26:23,000 [نيت H.] 1، والكمال. كيفن؟ 395 00:26:23,000 --> 00:26:27,000 [كيفن] 0. >> [نيت H.] 0، شارلوت؟ 396 00:26:27,000 --> 00:26:30,000 [شارلوت] 0. >> [نيت H.] نعم، وماذا أفعل؟ 397 00:26:30,000 --> 00:26:32,000 [طالب] إن 1. 398 00:26:32,000 --> 00:26:34,000 [نيت H.] وماذا أفعل؟ ثم احمل 1. 399 00:26:34,000 --> 00:26:36,000 الكمال، Sahb؟ >> [Sahb] الآن لديك 1. 400 00:26:36,000 --> 00:26:40,000 [نيت H.] وأفعل أي شيء هنا؟ 401 00:26:40,000 --> 00:26:43,000 [Sahb] ثم لاحد المقبل لديك 1 لأنك رحلت 1. 402 00:26:43,000 --> 00:26:49,000 [نيت H.] كبيرة، لذلك هنا يمكننا إنهاء عنه. 403 00:26:49,000 --> 00:26:51,000 بارد. 404 00:26:51,000 --> 00:26:54,000 [طالب] 0 + هل 0 = 0؟ 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1، وقال مثلك، هو 10، أو 1، 0، إلى حد ما. 407 00:27:01,000 --> 00:27:07,000 10 هو تسمية خاطئة لأن لي 10 يعني الرقم 10، 408 00:27:07,000 --> 00:27:12,000 وانها شاءت قيامنا يمثلها في وقت نواجه فيه كتابة هذا التقرير. 409 00:27:12,000 --> 00:27:20,000 نمثلها عدد 2 من 0، 1، وعدد 10 هو مختلفة قليلا. 410 00:27:20,000 --> 00:27:23,000 >> ما هو نوع من لطيفة عن ثنائي هو أن هناك في الحقيقة ليست أن العديد 411 00:27:23,000 --> 00:27:25,000 الحالات تحتاج إلى تعلم. 412 00:27:25,000 --> 00:27:30,000 هناك 0 + 0 = 0، 0 + 1 = 1، 413 00:27:30,000 --> 00:27:34,000 1 + 1 0، والقيام بعد ذلك 1، 414 00:27:34,000 --> 00:27:37,000 ثم يمكنك ان ترى هنا على العمود الثالث من اليمين 415 00:27:37,000 --> 00:27:40,000 كان لدينا هذا 1، 1، و 1. 416 00:27:40,000 --> 00:27:43,000 و 1 + 1 + 1 هو 1، 417 00:27:43,000 --> 00:27:45,000 وكنت تحمل آخر 1. 418 00:27:45,000 --> 00:27:48,000 عندما كنت تفعل بالإضافة إلى ذلك ثنائي، بسيطة جدا. 419 00:27:48,000 --> 00:27:51,000 كنت أفعل أكثر زوجين من هذه إلى التعقل تحقق أنفسكم 420 00:27:51,000 --> 00:27:54,000 قبل أن تذهب لأن هذا هو في 421 00:27:54,000 --> 00:28:00,000 ربما ما سنرى في هذه المسابقة. 422 00:28:00,000 --> 00:28:03,000 الآن دعونا نفعل هذا واحد القادم أيضا. 423 00:28:03,000 --> 00:28:06,000 دعونا نفعل المشكلة 17. 424 00:28:06,000 --> 00:28:12,000 ونحن في طريقنا لتحويل رقم ثنائي إلى عشري التالية. 425 00:28:12,000 --> 00:28:28,000 لقد حصلت على 10100111001. 426 00:28:28,000 --> 00:28:33,000 تذكر في الفيديو الثنائية التي فعلت 427 00:28:33,000 --> 00:28:36,000 مشيت من خلال زوجين من الأمثلة، وأظهر لي كيف 428 00:28:36,000 --> 00:28:41,000 كل شيء يعمل عندما كنت أفعل ذلك في العشرية. 429 00:28:41,000 --> 00:28:45,000 عندما كنت تعمل في التمثيل العشري اعتقد اننا 430 00:28:45,000 --> 00:28:48,000 في هذه المرحلة من حياتنا بطلاقة حتى في أن 431 00:28:48,000 --> 00:28:53,000 فإنه من السهل جدا للتعتيم على اليات كيف تعمل في الواقع. 432 00:28:53,000 --> 00:28:59,000 >> ولكن للقيام خلاصة سريعة، إذا كان لدي عدد 137 433 00:28:59,000 --> 00:29:06,000 يعني حقا ومرة ​​أخرى، وهذا هو في التمثيل العشري 434 00:29:06,000 --> 00:29:19,000 عدد 137 في العشرية يعني أن لدي 1 × 3 × 100 + 10 + 7 × 1. 435 00:29:19,000 --> 00:29:22,000 هذا هو كل شيء البقاء على الشاشة. 436 00:29:22,000 --> 00:29:29,000 ثم إذا نظرت إلى هذه الأرقام هنا، 437 00:29:29,000 --> 00:29:34,000 100، 10 و 1، ترى أنهم في الواقع كل القوى من 10. 438 00:29:34,000 --> 00:29:43,000 I ² دينا 10، 10 ¹، و 10 إلى الصفر. 439 00:29:43,000 --> 00:29:48,000 لدينا نوع من الشيء مماثلة في ثنائي، 440 00:29:48,000 --> 00:29:55,000 إلا أن لدينا قاعدة، كما نسميها، هو 2 بدلا من 10. 441 00:29:55,000 --> 00:29:58,000 هذه 10S التي كتبت إلى هنا في الأسفل، 442 00:29:58,000 --> 00:30:02,000 هذا ² 10، 10 ¹، 10 إلى 10، صفر هو قاعدتنا، 443 00:30:02,000 --> 00:30:08,000 والأس، 0، 1، أو 2، 444 00:30:08,000 --> 00:30:14,000 فهذا يعني ضمنا من موقف للأرقام في الرقم الذي نكتب. 445 00:30:14,000 --> 00:30:21,000 1، إذا كان لنا أن ننظر في الأمر، وهذا 1 هو في موقف 2. 446 00:30:21,000 --> 00:30:27,000 ال 3 في الموضع 1، و7 هو في موقف 0. 447 00:30:27,000 --> 00:30:35,000 هذه هي الطريقة نحصل على الأسس المختلفة أدناه للحصول على قواعدنا. 448 00:30:35,000 --> 00:30:40,000 >> بعد كل هذا الواقع، we'll، أنت تعرف لماذا؟ 449 00:30:40,000 --> 00:30:43,000 سنفعل-أين لي التراجع عن زر تذهب؟ 450 00:30:43,000 --> 00:30:45,000 هناك تذهب. 451 00:30:45,000 --> 00:30:47,000 أنا أحب هذا الشيء التراجع. 452 00:30:47,000 --> 00:30:51,000 بعد هذا أعتقد بالنسبة لي على الأقل 453 00:30:51,000 --> 00:30:54,000 أسهل طريقة لبدء تحويل رقم ثنائي 454 00:30:54,000 --> 00:30:57,000 أو عدد عشري حيث القاعدة هي 16 455 00:30:57,000 --> 00:31:02,000 وليس 10 أو 2 هو المضي قدما والكتابة خارج 456 00:31:02,000 --> 00:31:09,000 القواعد والأسس لكافة الأرقام في رقم هاتفي ثنائي في الأعلى. 457 00:31:09,000 --> 00:31:14,000 إذا بدأنا من اليسار إلى اليمين مرة أخرى، 458 00:31:14,000 --> 00:31:17,000 وهو نوع من الحدس، 459 00:31:17,000 --> 00:31:23,000 سوف تتغير إلى الأسود هنا، لدينا 2 إلى الموقف 0، 460 00:31:23,000 --> 00:31:27,000 ثم لدينا 2 ¹، 2 ²، 461 00:31:27,000 --> 00:31:33,000 ثم 2 إلى 3، 2 إلى 4، 2 إلى 5، 6، 462 00:31:33,000 --> 00:31:39,000 7، 8، 9، و 10. 463 00:31:39,000 --> 00:31:41,000 هذه الأرقام التي كتبتها كلها من الدعاه. 464 00:31:41,000 --> 00:31:48,000 كتبت فقط القواعد هنا في أول 3 فقط لمسافة. 465 00:31:48,000 --> 00:31:50,000 >> عند هذه النقطة انا ذاهب الى المضي قدما وأنا ذاهب فعلا لمحو 466 00:31:50,000 --> 00:31:53,000 الاشياء التي قمنا به في العشرية، إذا هذا ما يرام. 467 00:31:53,000 --> 00:31:57,000 كنت قد حصلت على كل ذلك. 468 00:31:57,000 --> 00:32:05,000 وأولئك منكم مشاهدة على الانترنت أنا متأكد من أن تكون قادرة على ترجيع لي إذا كنت ترغب. 469 00:32:05,000 --> 00:32:07,000 التبديل إلى القلم. 470 00:32:07,000 --> 00:32:12,000 الآن، ماذا يمكننا أن نفعل، إذا يا رفاق لا ترقى تماما إلى سرعة على قدراتك على 2، 471 00:32:12,000 --> 00:32:15,000 هذا باردة تماما. 472 00:32:15,000 --> 00:32:18,000 يحدث ذلك. وأنا أفهم. 473 00:32:18,000 --> 00:32:23,000 كان لي مرة واحدة في مقابلة عمل حيث قيل لي أنني يجب أن تعرف كل القوى من 2 474 00:32:23,000 --> 00:32:26,000 من خلال 2 إلى 30. 475 00:32:26,000 --> 00:32:29,000 لم يكن وظيفة وصلت. 476 00:32:29,000 --> 00:32:32,000 على أي حال، يمكنك المضي قدما والرجال تفعل الرياضيات هنا، 477 00:32:32,000 --> 00:32:35,000 ولكن مع ثنائي لا يجعل حقا المعنى، 478 00:32:35,000 --> 00:32:38,000 وكما أنه لا معنى مع العشرية أو الست عشرية سواء، 479 00:32:38,000 --> 00:32:43,000 لتفعل الرياضيات من حيث لديك الأصفار. 480 00:32:43,000 --> 00:32:49,000 تستطيع أن ترى I ديك 0 هنا، هنا A 0، 0 هنا، 0 هنا، 0 هنا، 0 هنا. 481 00:32:49,000 --> 00:32:52,000 لماذا قد لا معنى لتفعل الرياضيات الفعلية 482 00:32:52,000 --> 00:32:56,000 لحساب الطاقة المناسبة من 2 لهذا الموقف؟ 483 00:32:56,000 --> 00:32:59,000 بالضبط، مثل شارلوت قال، سيكون من 0. 484 00:32:59,000 --> 00:33:05,000 كذلك قد توفر على نفسك الوقت إذا حساب القوى من 2 الدعوى ليست متينة. 485 00:33:05,000 --> 00:33:10,000 في هذه الحالة نحن بحاجة فقط لحساب ذلك لمدة 2 إلى ال 0 التي هي-؟ 486 00:33:10,000 --> 00:33:12,000 [طالب] (1). 487 00:33:12,000 --> 00:33:14,000 [نيت H.] 1، 2 إلى 3 التي،؟ 488 00:33:14,000 --> 00:33:16,000 [طالب] (8). >> [نيت H.] (8). 489 00:33:16,000 --> 00:33:18,000 2 إلى 4؟ 490 00:33:18,000 --> 00:33:21,000 [طالب] (2). أنا آسف، 1. 491 00:33:21,000 --> 00:33:26,000 [نيت H.] 2 إلى 4 هو 16، بالضبط. 492 00:33:26,000 --> 00:33:28,000 2 إلى 5، كيفن؟ >> 32. 493 00:33:28,000 --> 00:33:32,000 [نيت H.] 32، 2 إلى 8؟ 494 00:33:32,000 --> 00:33:38,000 [طالب] 32 × 8، 256. 495 00:33:38,000 --> 00:33:41,000 [نيت H.] الكمال. 496 00:33:41,000 --> 00:33:43,000 و2 إلى 10؟ 497 00:33:43,000 --> 00:33:45,000 [طالب] 1024. 498 00:33:45,000 --> 00:33:49,000 [نيت H.] نعم، 1024. 499 00:33:49,000 --> 00:33:57,000 >> مرة واحدة لدينا هذه الأرقام يمكننا تلخيص كل منهم ما يصل. 500 00:33:57,000 --> 00:34:01,000 وهذا هو المكان الذي من المهم حقا أن تفعل بضعة أشياء. 501 00:34:01,000 --> 00:34:07,000 واحد هو الذهاب والتحقق من بطء العمل الخاص بك. 502 00:34:07,000 --> 00:34:10,000 يمكن أن أقول لكم أن هناك 1 في نهاية هذا العدد، 503 00:34:10,000 --> 00:34:15,000 لذلك ينبغي أن أحصل على عدد فردي بالتأكيد نتيجة بلدي، 504 00:34:15,000 --> 00:34:18,000 لأن جميع تلك هي آخر سيكون حتى أرقام 505 00:34:18,000 --> 00:34:21,000 نظرا لأنه من رقم ثنائي. 506 00:34:21,000 --> 00:34:24,000 والشيء الآخر القيام به هو إذا كنت تحصل على هذه النقطة في الاختبار 507 00:34:24,000 --> 00:34:27,000 وكنت قد كتبت بها إلى هذا الحد 508 00:34:27,000 --> 00:34:30,000 وكنت نفاد الوقت 509 00:34:30,000 --> 00:34:33,000 النظر في عدد من النقاط التي تستحق هذه المشكلة. 510 00:34:33,000 --> 00:34:40,000 هذه المشكلة، كما ترون، إذا كنت الوجه مرة أخرى إلى جهاز الكمبيوتر المحمول بسرعة حقا، 511 00:34:40,000 --> 00:34:44,000 هذه المشكلة الجدير 2 نقطة، لذلك ليست هذه هي نوع من إضافة 512 00:34:44,000 --> 00:34:47,000 يجب أن يمر إذا كنت حقا ضغطت لك على الوقت. 513 00:34:47,000 --> 00:34:52,000 ولكن سوف نتحول إلى جهاز آي باد، وسوف تذهب من خلال ذلك بسرعة حقا. 514 00:34:52,000 --> 00:34:54,000 >> أود القيام الأرقام الصغيرة أولا 515 00:34:54,000 --> 00:34:56,000 لأنني وجدت أن أسهل. 516 00:34:56,000 --> 00:35:00,000 I مثل 32 و 8 لأنها تسير جنبا الى جنب بسهولة جدا، وحصلنا على 50. 517 00:35:00,000 --> 00:35:03,000 16 و 1 يحصل 17. 518 00:35:03,000 --> 00:35:05,000 هناك نحصل على 57، 519 00:35:05,000 --> 00:35:14,000 ومن ثم يمكننا أن نفعل ما تبقى من هذا، حتى نتمكن من القيام 57، 156. 520 00:35:14,000 --> 00:35:16,000 هيا. 521 00:35:16,000 --> 00:35:19,000 الرجل، حسنا، دعونا نرى. 522 00:35:19,000 --> 00:35:27,000 كان لدينا 57، 256، و 1024. 523 00:35:27,000 --> 00:35:31,000 عند هذه النقطة، فما استقاموا لكم فاستقيموا بدلا اذهبوا من خلال. 524 00:35:31,000 --> 00:35:35,000 ليس لدي أدنى فكرة. ولست بحاجة لقراءة بوضوح على هذا. 525 00:35:35,000 --> 00:35:40,000 7، 6، و 4، وتحصل على 17. 526 00:35:40,000 --> 00:35:42,000 1، 5، 5، 2، 13. 527 00:35:42,000 --> 00:35:45,000 ثم نحصل على 3، ومن ثم نحصل على 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 بيضة عيد الفصح، أي شخص؟ 530 00:35:55,000 --> 00:35:59,000 أي شخص التعرف على هذا الرقم؟ 531 00:35:59,000 --> 00:36:02,000 كريس يعترف الرقم. ماذا يعني ذلك، كريس؟ 532 00:36:02,000 --> 00:36:04,000 [كريس] ليت. 533 00:36:04,000 --> 00:36:11,000 ليت، لذلك إذا نظرت إلى هذا، يبدو ليت. 534 00:36:11,000 --> 00:36:15,000 القراصنة الاشياء. احترس من هذا النوع من الاشياء على التجديد النصفي أو الاصعب في العالم، إلى حد ما. 535 00:36:15,000 --> 00:36:19,000 إذا كنت ترى هذا النوع من الاشياء وكنت أتساءل كنت "هوه" 536 00:36:19,000 --> 00:36:22,000 قد يعني ذلك في الواقع شيئا. 537 00:36:22,000 --> 00:36:24,000 لا أعرف. ديفيد يحب وضعه فيه. 538 00:36:24,000 --> 00:36:26,000 انها وسيلة جيدة لسلامة العقل التحقق من ذلك. 539 00:36:26,000 --> 00:36:30,000 مثل حسنا، أستطيع أن أرى ما يحدث. 540 00:36:30,000 --> 00:36:34,000 >> هذا الأسبوع 0/Week 1 الاشياء. 541 00:36:34,000 --> 00:36:39,000 إذا كان لنا أن يعود مرة أخرى إلى جهاز الكمبيوتر المحمول لدينا الآن، 542 00:36:39,000 --> 00:36:46,000 تصغير، وبضعة أشياء أخرى. 543 00:36:46,000 --> 00:36:50,000 هناك ASCII، التي كنا نقوم به مع الكثير من مجموعات المشكلة. 544 00:36:50,000 --> 00:36:55,000 هذه الفكرة من رأس المال A. ما هو هذا حقا؟ 545 00:36:55,000 --> 00:36:57,000 مع العلم انها صحيح عشري. 546 00:36:57,000 --> 00:37:00,000 65 هي ما لتعيينها في الجدول ASCII، 547 00:37:00,000 --> 00:37:03,000 وهذا بالتالي كيف يمكن للكمبيوتر يكتب عليه، 548 00:37:03,000 --> 00:37:06,000 وهذه هي الطريقة التي كنا الحصول بعيدا مع كتابة الواقع 549 00:37:06,000 --> 00:37:09,000 حرف A العاصمة وشخصية صغيرة على 550 00:37:09,000 --> 00:37:14,000 في بعض هذه الحلول ومجموعات المشكلة التي كنت قد تم القيام. 551 00:37:14,000 --> 00:37:16,000 وقبل بضعة أمور أخرى. 552 00:37:16,000 --> 00:37:25,000 لدينا البيانات، تعبيرات منطقية، والظروف، وأعمدة، والمتغيرات المواضيع. 553 00:37:25,000 --> 00:37:29,000 >> يبدو أن جميع تلك لمعنى بالنسبة للجزء الأكبر؟ 554 00:37:29,000 --> 00:37:35,000 بعض من هذه المصطلحات هو غير تقليدي قليلا في بعض الأحيان. 555 00:37:35,000 --> 00:37:46,000 أود أن أفكر في بيان أما بالنسبة للجزء الاكبر شيء أن ينتهي بفاصلة منقوطة. 556 00:37:46,000 --> 00:37:51,000 عبارات مثل X = 7، والذي يحدد متغير، 557 00:37:51,000 --> 00:37:54,000 دعا يفترض X = 7. 558 00:37:54,000 --> 00:38:01,000 يفترض x هو أيضا نوع التي يمكن تخزين عدد 7، 559 00:38:01,000 --> 00:38:05,000 لذلك فمن وكثافة العمليات أو ربما طوف أو قصيرة أو حرف A، 560 00:38:05,000 --> 00:38:07,000 شيء من هذا القبيل. 561 00:38:07,000 --> 00:38:12,000 A التعبير منطقية تستخدم هذه المزدوجة يساوي 562 00:38:12,000 --> 00:38:17,000 والانفجار يساوي أو لا يساوي، أقل من، أكبر من، 563 00:38:17,000 --> 00:38:22,000 أقل من أو يساوي، النوع أن جميع من الاشياء. 564 00:38:22,000 --> 00:38:28,000 الشروط هي البيانات ثم إذا آخر. 565 00:38:28,000 --> 00:38:32,000 وأود أن أذكر أنه لا يمكن لها دون آخر المقابلة إذا. 566 00:38:32,000 --> 00:38:37,000 وبالمثل، لا يمكن لها الا اذا بدون المقابلة إذا. 567 00:38:37,000 --> 00:38:40,000 الحلقات، وأذكر أنواع 3 من حلقات كنا يدق لك في 568 00:38:40,000 --> 00:38:43,000 للزوجين الأخير من أقسام ومجموعات المشكلة. 569 00:38:43,000 --> 00:38:46,000 في حين لم تستخدم عندما كنت الحصول على مدخلات المستخدم، 570 00:38:46,000 --> 00:38:51,000 بينما تستخدم الحلقات حتى شرط معين صحيح، 571 00:38:51,000 --> 00:38:56,000 ثم استخدام تلك الحلقات لإذا كنت بحاجة إلى 572 00:38:56,000 --> 00:39:01,000 تعرف أي تكرار للحلقة انت حاليا فى هو كيف أفكر في ذلك. 573 00:39:01,000 --> 00:39:07,000 أو إذا كنت تفعل لكل حرف في سلسلة أريد أن أفعل شيئا، 574 00:39:07,000 --> 00:39:15,000 لكل عنصر في صفيف أريد أن أفعل شيئا لذلك العنصر. 575 00:39:15,000 --> 00:39:18,000 >> المواضيع والأحداث. 576 00:39:18,000 --> 00:39:21,000 هذه أننا لم تتطرق صراحة بذلك في C، 577 00:39:21,000 --> 00:39:23,000 ولكن تذكر هذا من البداية. 578 00:39:23,000 --> 00:39:26,000 هذا هو مفهوم وجود نصوص مختلفة. 579 00:39:26,000 --> 00:39:32,000 وهذا هو أيضا هذه الفكرة من بث هذا الحدث. 580 00:39:32,000 --> 00:39:37,000 لم بعض الناس لا تستخدم البث في مشاريعها في البداية، 581 00:39:37,000 --> 00:39:40,000 وهو بارد تماما، 582 00:39:40,000 --> 00:39:46,000 ولكن هذه هي 2 طرق مختلفة للتعامل مع هذه القضية الأكبر يسمى التزامن، 583 00:39:46,000 --> 00:39:49,000 وهو كيف يمكن الحصول على برامج لتنفيذ 584 00:39:49,000 --> 00:39:54,000 أو تنفيذ ما يبدو في نفس الوقت؟ 585 00:39:54,000 --> 00:39:59,000 مهام مختلفة قيد التشغيل أثناء مهام أخرى تقوم بتشغيل أيضا. 586 00:39:59,000 --> 00:40:01,000 هذه هي الطريقة التي يبدو نظام التشغيل في العمل. 587 00:40:01,000 --> 00:40:04,000 هذا هو السبب على الرغم من ذلك، على سبيل المثال، 588 00:40:04,000 --> 00:40:10,000 لقد حصلت على متصفحي التشغيل، يمكنك أيضا تشغيل I سبوتيفي وتشغيل أغنية. 589 00:40:10,000 --> 00:40:14,000 وهذا أكثر من شيء المفاهيمي لفهم. 590 00:40:14,000 --> 00:40:17,000 وأود أن نلقي نظرة على المواضيع قصيرة 591 00:40:17,000 --> 00:40:21,000 إذا كنت ترغب في معرفة المزيد عن ذلك. 592 00:40:21,000 --> 00:40:26,000 >> دعونا نرى، وأعتقد ربما كانت هناك 593 00:40:26,000 --> 00:40:31,000 مشكلة في هذا الشأن في واحدة من هذه. 594 00:40:31,000 --> 00:40:35,000 مرة أخرى، وأعتقد أن المواضيع والأحداث ليست شيئا أننا سوف تغطي في C 595 00:40:35,000 --> 00:40:41,000 لمجرد انها بشكل ملحوظ أكثر صعوبة مما كانت عليه في سكراتش. 596 00:40:41,000 --> 00:40:44,000 يجب أن لا تقلق بشأن ذلك هناك، ولكن بالتأكيد فهم المفاهيم، 597 00:40:44,000 --> 00:40:47,000 فهم ما يجري. 598 00:40:47,000 --> 00:40:52,000 قبل أن ننتقل، أي أسئلة على ليلة 0 المواد؟ 599 00:40:52,000 --> 00:40:55,000 الجميع يشعر جيدة؟ 600 00:40:55,000 --> 00:41:03,000 المتغيرات التفاهم وما هو متغير؟ 601 00:41:03,000 --> 00:41:08,000 >> الانتقال. الأسبوع 1. 602 00:41:08,000 --> 00:41:12,000 وقبل بضعة أشياء هنا لم يتناولها خاصة 603 00:41:12,000 --> 00:41:21,000 في استعراض وأيضا مسابقة بالضرورة من الأشياء أكثر المفاهيمي للتفكير. 604 00:41:21,000 --> 00:41:30,000 الأول هو هذه الفكرة ما شفرة المصدر، والقائمون على رمز الكائن هي. 605 00:41:30,000 --> 00:41:32,000 أي شخص؟ ريحان. 606 00:41:32,000 --> 00:41:37,000 والكائن رمز-I يعني شفرة المصدر هو ما كنت وضعت رنة، 607 00:41:37,000 --> 00:41:42,000 ورمز الكائن هو ما يضع بها رنة بحيث يتمكن الكمبيوتر من قراءة البرنامج. 608 00:41:42,000 --> 00:41:44,000 بالضبط. 609 00:41:44,000 --> 00:41:47,000 شفرة المصدر هو رمز C التي تكتبها فعليا حتى. 610 00:41:47,000 --> 00:41:50,000 رمز الكائن هو ما تحصل عليه من رنة. 611 00:41:50,000 --> 00:41:54,000 انها 0S و1S في هذا التنسيق الثنائي. 612 00:41:54,000 --> 00:41:59,000 ثم ما يحدث هو عندما يكون لديك مجموعة من الملفات الكائن، 613 00:41:59,000 --> 00:42:04,000 كنت أقول ترجمة مشروع أو برنامج يستخدم عدة ملفات شفرة المصدر، 614 00:42:04,000 --> 00:42:09,000 من الاتفاقية التي تمنح الملف ج. التمديد. 615 00:42:09,000 --> 00:42:13,000 هذا هو السبب لدينا caesar.c، vigenère.c. 616 00:42:13,000 --> 00:42:18,000 إذا كنت تكتب برامج جافا كنت لهم التمديد. جافا. 617 00:42:18,000 --> 00:42:24,000 برامج بيثون يكون التمديد. PY كثير من الأحيان. 618 00:42:24,000 --> 00:42:26,000 >> مرة واحدة لديك عدة ملفات C، يمكنك ترجمة لها. 619 00:42:26,000 --> 00:42:29,000 رنة يبصق كل هذا غير المرغوب فيه ثنائي. 620 00:42:29,000 --> 00:42:33,000 لأن ثم تريد فقط 1 برنامج 621 00:42:33,000 --> 00:42:37,000 لديك رابط رابط كل هذه الملفات معا كائن 622 00:42:37,000 --> 00:42:40,000 في الملف التنفيذي 1. 623 00:42:40,000 --> 00:42:45,000 وهذا هو أيضا ما يحدث عند استخدام مكتبة CS50، على سبيل المثال. 624 00:42:45,000 --> 00:42:50,000 مكتبة CS50 على حد سواء ذلك. ح ملف الرأس 625 00:42:50,000 --> 00:42:53,000 أن تقرأ، أن includecs50.h #. 626 00:42:53,000 --> 00:42:58,000 وبعد ذلك أيضا مكتبة خاصة ملف ثنائي 627 00:42:58,000 --> 00:43:02,000 انها جمعت أن هذا هو 0S و1S، 628 00:43:02,000 --> 00:43:08,000 وأن-L العلم، حتى إذا عدنا إلى فضاءات لدينا، ونحن نتطلع حقا بسرعة 629 00:43:08,000 --> 00:43:11,000 على ما يجري هنا عندما ننظر إلى الأمر رنة لدينا، 630 00:43:11,000 --> 00:43:15,000 ما لدينا هو هذا الملف لدينا شفرة المصدر هنا. 631 00:43:15,000 --> 00:43:18,000 هذه هي مجموعة من الأعلام المترجم. 632 00:43:18,000 --> 00:43:22,000 ثم في النهاية، وهذه الأعلام-L الرابط في 633 00:43:22,000 --> 00:43:30,000 الملفات الثنائية الفعلية لهذه المكتبات 2، مكتبة CS50 ثم مكتبة الرياضيات. 634 00:43:30,000 --> 00:43:35,000 >> فهم الغرض من كل نوع الملفات ' 635 00:43:35,000 --> 00:43:38,000 في عملية تجميع شيء سترغب في أن تكون قادرة على 636 00:43:38,000 --> 00:43:43,000 تعطي لمحة على الأقل مستوى عال من. 637 00:43:43,000 --> 00:43:46,000 شفرة المصدر يأتي فيها رمز الكائن يخرج. 638 00:43:46,000 --> 00:43:53,000 ملفات التعليمات البرمجية لكائن ربط معا، وتحصل على جميل، ملف قابل للتنفيذ. 639 00:43:53,000 --> 00:43:55,000 بارد. 640 00:43:55,000 --> 00:43:58,000 وهذا هو أيضا حيث يمكنك الحصول على أخطاء في نقاط متعددة 641 00:43:58,000 --> 00:44:00,000 في عملية التجميع. 642 00:44:00,000 --> 00:44:04,000 هذا هو المكان، على سبيل المثال، إذا كنت تأخذ بها هذه العلامة ربط، 643 00:44:04,000 --> 00:44:10,000 علم CS50، وحذفت في الفراغات أو عندما كنت تشغل التعليمات البرمجية، 644 00:44:10,000 --> 00:44:13,000 هذا هو المكان الذي سوف تحصل على خطأ في مرحلة ربط، 645 00:44:13,000 --> 00:44:18,000 وسوف رابط يقول: "مهلا، أنت تسمى GetString ظيفة 646 00:44:18,000 --> 00:44:20,000 هذا في مكتبة CS50. " 647 00:44:20,000 --> 00:44:25,000 "قلت لي كان في مكتبة CS50، وأنا لا يمكن العثور على رمز لذلك." 648 00:44:25,000 --> 00:44:28,000 حيث ان لديك لربط في، وهذا منفصل 649 00:44:28,000 --> 00:44:33,000 من خطأ المترجم لأن المترجم هو يبحث في بناء الجملة وهذا النوع من الاشياء. 650 00:44:33,000 --> 00:44:38,000 أنه من الجيد أن نعرف ما يحدث عندما. 651 00:44:38,000 --> 00:44:42,000 >> أمور أخرى لمعرفة. 652 00:44:42,000 --> 00:44:49,000 وأود أن أقول لكم بالتأكيد نريد أن نلقي نظرة على المدى القصير على تلبيس الذي قام به الاردن 653 00:44:49,000 --> 00:44:55,000 لفهم ما هي رجات تحت غطاء محرك السيارة، 654 00:44:55,000 --> 00:44:58,000 ما هي أحرف تحت غطاء محرك السيارة. 655 00:44:58,000 --> 00:45:02,000 عندما نتحدث عن ASCII ونحن ننظر في الواقع على طاولة ASCII، 656 00:45:02,000 --> 00:45:07,000 ما الذي يفعل تعطي لنا نظرة تحت غطاء محرك السيارة 657 00:45:07,000 --> 00:45:13,000 في كيفية الكمبيوتر يمثل في الواقع رأس المال وA 7 أرقام 658 00:45:13,000 --> 00:45:17,000 وفاصلة وعلامة استفهام. 659 00:45:17,000 --> 00:45:20,000 لدى الكمبيوتر أيضا بطرق خاصة لتمثيل 660 00:45:20,000 --> 00:45:23,000 الرقم 7 كعدد. 661 00:45:23,000 --> 00:45:27,000 لديه طريقة خاصة لتمثيل الرقم 7 كرقم النقطة العائمة، 662 00:45:27,000 --> 00:45:29,000 وتلك هي مختلفة جدا. 663 00:45:29,000 --> 00:45:32,000 تلبيس هو كيف نقول للكمبيوتر "مهلا، أنا أريد منك أن تحويل 664 00:45:32,000 --> 00:45:37,000 من التمثيل إلى آخر التمثيل. " 665 00:45:37,000 --> 00:45:40,000 لماذا لا نلقي نظرة على ذلك. 666 00:45:40,000 --> 00:45:44,000 >> وأود أن أنتهز أيضا نظرة على المدى القصير على المكتبات وعلى المدى القصير على المجمعين. 667 00:45:44,000 --> 00:45:47,000 تلك الحديث عن عملية تجميع، 668 00:45:47,000 --> 00:45:53,000 ما هو مكتبة، ويذهب أكثر من بعض من هذه الأسئلة التي قد يطلب منك الحصول على. 669 00:45:53,000 --> 00:45:55,000 أسئلة حول المواد 1 أسبوع؟ 670 00:45:55,000 --> 00:46:03,000 هل هناك أي المواضيع في هنا أن تبدو شاقة كنت ترغب في تغطية؟ 671 00:46:03,000 --> 00:46:07,000 أنا أحاول أن يفجر من خلال أكثر من هذه المواضيع في وقت سابق حتى نتمكن من الوصول إلى 672 00:46:07,000 --> 00:46:13,000 مؤشرات والقيام قليلا من العودية. 673 00:46:13,000 --> 00:46:15,000 الأفكار؟ 674 00:46:15,000 --> 00:46:19,000 أي شيء لتغطية؟ 675 00:46:19,000 --> 00:46:21,000 حان الوقت لبعض الشوكولاتة ربما؟ 676 00:46:21,000 --> 00:46:23,000 يا رفاق تعمل من خلال ذلك. 677 00:46:23,000 --> 00:46:26,000 انا ذاهب للحفاظ على يحتسي القهوة في بلدي. 678 00:46:26,000 --> 00:46:31,000 أسبوع 2. 679 00:46:31,000 --> 00:46:34,000 الكلمة الطيبة، الكلمة الطيبة. 680 00:46:34,000 --> 00:46:38,000 في الأسبوع 2 تحدثنا قليلا المزيد عن وظائف. 681 00:46:38,000 --> 00:46:43,000 >> في مجموعات مشكلة القليلة الأولى لم نكن حقا أية وظائف الكتابة على الإطلاق 682 00:46:43,000 --> 00:46:45,000 وظيفة أخرى غير التي؟ 683 00:46:45,000 --> 00:46:47,000 [طالب] الرئيسية. >> الرئيسي، بالضبط. 684 00:46:47,000 --> 00:46:51,000 وهكذا رأينا الأزياء المختلفة التي ترتدي الرئيسية. 685 00:46:51,000 --> 00:46:54,000 هناك واحد الذي يأخذ بدون وسائط، 686 00:46:54,000 --> 00:46:58,000 ونحن نقول فقط في الفراغ بين قوسين، 687 00:46:58,000 --> 00:47:01,000 وبعد ذلك هناك واحدة أخرى حيث أننا لا نريد أن نأخذ سائط سطر الأوامر، 688 00:47:01,000 --> 00:47:08,000 وكما رأينا، حيث ان لديك argc الباحث ومجموعة سلسلة argv 689 00:47:08,000 --> 00:47:13,000 والآن بعد أن قمت أو نتعرض في الواقع أن تكون سلسلة * شار أنه من 690 00:47:13,000 --> 00:47:20,000 ونحن في طريقنا للبدء في كتابة بأنه تشار * argv ثم بين قوسين. 691 00:47:20,000 --> 00:47:22,000 في مجموعة المشكلة 3، رأيت الرجال حفنة من الوظائف، 692 00:47:22,000 --> 00:47:27,000 وأنت تنفذ مجموعة من المهام، رسم، بحث عن، والتدافع. 693 00:47:27,000 --> 00:47:31,000 كانت كلها مكتوبة على النماذج هناك لك. 694 00:47:31,000 --> 00:47:33,000 >> ما أردت أن تتحدث عن وظائف هنا بسرعة حقا 695 00:47:33,000 --> 00:47:38,000 هو أن هناك 3 أجزاء لهم كلما كنت كتابة دالة. 696 00:47:38,000 --> 00:47:43,000 لديك لتحديد نوع الإرجاع للدالة. 697 00:47:43,000 --> 00:47:46,000 لديك لتحديد اسم للدالة، ومن ثم لديك لتحديد 698 00:47:46,000 --> 00:47:51,000 قائمة الوسائط أو قائمة المعلمة. 699 00:47:51,000 --> 00:47:57,000 على سبيل المثال، إذا كان لي أن كتابة دالة لتلخيص مجموعة من الأعداد الصحيحة 700 00:47:57,000 --> 00:48:03,000 ثم يعود لي المبلغ ما يمكن أن يكون نوع عودتي 701 00:48:03,000 --> 00:48:06,000 إذا أردت أن ألخص صحيحة ومن ثم إعادة المبلغ؟ 702 00:48:06,000 --> 00:48:12,000 ثم اسم الدالة. 703 00:48:12,000 --> 00:48:27,000 إذا كنت المضي قدما في الكتابة باللون الأخضر، هذا الجزء هو نوع الإرجاع. 704 00:48:27,000 --> 00:48:34,000 هذا الجزء هو اسم. 705 00:48:34,000 --> 00:48:40,000 ثم بين قوسين في 706 00:48:40,000 --> 00:48:46,000 حيث أعطي الحجج، 707 00:48:46,000 --> 00:48:56,000 وغالبا ما يختصر سائط، وتسمى أحيانا params للمعلمات. 708 00:48:56,000 --> 00:49:00,000 وإذا كان لديك واحدة، يمكنك تحديد واحد فقط. 709 00:49:00,000 --> 00:49:06,000 إذا كان لديك عدة يمكنك فصل كل واحد مع فاصلة. 710 00:49:06,000 --> 00:49:13,000 ولكل حجة تعطيه 2 الأشياء التي هي كيفن؟ 711 00:49:13,000 --> 00:49:18,000 [كيفن] لديك لإعطاء نوع ومن ثم الاسم. 712 00:49:18,000 --> 00:49:21,000 ثم الاسم، واسم هو الاسم الذي كنت تنوي استخدام 713 00:49:21,000 --> 00:49:25,000 للإشارة إلى أن الحجة داخل الدالة SUM، 714 00:49:25,000 --> 00:49:27,000 داخل الدالة التي كنت تكتب حاليا. 715 00:49:27,000 --> 00:49:32,000 >> لم يكن لديك ل، على سبيل المثال، إذا أنا ذاهب إلى خلاصة القول، 716 00:49:32,000 --> 00:49:41,000 يقول مجموعة من الأعداد الصحيحة، we'll القيام الباحث مجموعة، 717 00:49:41,000 --> 00:49:46,000 وسوف أعطي نفسي بعض الأقواس المتعرجة هناك، 718 00:49:46,000 --> 00:49:51,000 بعد ذلك عندما تمرير صفيف إلى دالة SUM 719 00:49:51,000 --> 00:49:55,000 أمرر في المركز الأول من قائمة الوسيطة. 720 00:49:55,000 --> 00:49:59,000 لكن مجموعة التي أمرر في لا يكون لديك اسم ARR. 721 00:49:59,000 --> 00:50:07,000 آر ستكون كيف أود أن أشير إلى أن هذه الحجة داخل الجسم وظيفة. 722 00:50:07,000 --> 00:50:10,000 والشيء الآخر أننا بحاجة إلى أن تأخذ في الاعتبار، 723 00:50:10,000 --> 00:50:14,000 وهذا يختلف قليلا عن وظائف، ولكن اعتقد انه من نقطة مهمة، 724 00:50:14,000 --> 00:50:20,000 هو أنه في حين C أنا أكتب وظيفة مثل هذه 725 00:50:20,000 --> 00:50:29,000 كيف يمكنني معرفة عدد العناصر في هذه المجموعة؟ 726 00:50:29,000 --> 00:50:31,000 هذا هو إلى حد ما من سؤال خدعة. 727 00:50:31,000 --> 00:50:35,000 تحدثنا عن هذا قليلا في القسم الأسبوع الماضي. 728 00:50:35,000 --> 00:50:40,000 كيف يمكنني معرفة عدد العناصر داخل صفيف في C؟ 729 00:50:40,000 --> 00:50:44,000 هل هناك طريقة؟ 730 00:50:44,000 --> 00:50:49,000 >> تبين أن ليس هناك طريقة لمعرفة. 731 00:50:49,000 --> 00:50:52,000 لديك لتمرير ذلك في حدة. 732 00:50:52,000 --> 00:50:55,000 هناك خدعة التي يمكنك القيام به 733 00:50:55,000 --> 00:51:00,000 إذا كنت في نفس الوظيفة التي أعلنت الصفيف، 734 00:51:00,000 --> 00:51:04,000 وكنت تعمل مع مجموعة المكدس. 735 00:51:04,000 --> 00:51:06,000 ولكن هذا لا تعمل إلا إذا كنت في نفس الوظيفة. 736 00:51:06,000 --> 00:51:09,000 بمجرد تمرير صفيف إلى دالة أخرى أو إذا كنت قد أعلنت مجموعة 737 00:51:09,000 --> 00:51:12,000 وكنت وضعت هذا الصفيف على كومة، كنت قد استخدمت malloc 738 00:51:12,000 --> 00:51:15,000  وهذا النوع من الاشياء، ثم كل الرهانات. 739 00:51:15,000 --> 00:51:18,000 ثم لديك فعلا لتمرير حول 740 00:51:18,000 --> 00:51:21,000 حجة أخرى خاصة أو المعلمة 741 00:51:21,000 --> 00:51:23,000 أقول لك كيف كبيرة الصفيف. 742 00:51:23,000 --> 00:51:28,000 في هذه الحالة، كنت ترغب في استخدام بفواصل أنا آسف، انه سيكون خارج الشاشة هنا، 743 00:51:28,000 --> 00:51:32,000 ويهمني ان تمر في حجة أخرى 744 00:51:32,000 --> 00:51:40,000  والذي يطلق عليه ليون الباحث عن طول. 745 00:51:40,000 --> 00:51:44,000 >> الشيء الوحيد الذي قد يأتي على هذه المسابقة 746 00:51:44,000 --> 00:51:49,000 يطلب منك كتابة أو تنفيذ وظيفة معينة تسمى شيء. 747 00:51:49,000 --> 00:51:54,000 إذا كنا لا تعطيك النموذج، لذلك هذا كل شيء هنا، 748 00:51:54,000 --> 00:51:58,000 وتسمى هذه الفوضى كلها إعلان وظيفة أو وظيفة النموذج الأولي، 749 00:51:58,000 --> 00:52:01,000 هذا هو واحد من أول الأشياء التي سترغب في أسفل الأظافر إذا لم تعطى 750 00:52:01,000 --> 00:52:03,000 لك الحق بعيدا عن هذه المسابقة. 751 00:52:03,000 --> 00:52:06,000 خدعة أخرى تعلمت أن 752 00:52:06,000 --> 00:52:11,000 ويقول نحن لا تعطيك نموذج أولي لوظيفة، ونحن نقول، "يا، كنت قد حصلت على الكتابة." 753 00:52:11,000 --> 00:52:16,000 داخل الأقواس المتعرجة التي لديك على هذه المسابقة 754 00:52:16,000 --> 00:52:20,000 إذا لاحظت أن هناك نوع وتلاحظ عودة لكم أن عودة نوع 755 00:52:20,000 --> 00:52:25,000 هو شيء آخر غير الفراغ، وهو ما يعني أن وظيفة لا يقوم بإرجاع أي شيء، 756 00:52:25,000 --> 00:52:28,000 ثم شيء واحد كنت تريد بالتأكيد القيام به هو كتابة 757 00:52:28,000 --> 00:52:33,000 نوعا من بيان عودة في نهاية جدا من وظيفة. 758 00:52:33,000 --> 00:52:40,000 مقابل ذلك، وفي هذه الحالة، سوف نضع فارغة لأننا نريد أن ملء الفراغ. 759 00:52:40,000 --> 00:52:44,000 ولكن هذا يحصل لك التفكير في الطريق الصحيح حول كيفية أنا ذاهب لتناول هذه المشكلة؟ 760 00:52:44,000 --> 00:52:49,000 ويذكرك وأنت تسير لدينا لإرجاع قيمة 761 00:52:49,000 --> 00:52:51,000 إلى الطالب وظيفة. 762 00:52:51,000 --> 00:52:54,000 >> نعم. >> [طالب] هل أسلوب تطبيق في وقت نواجه فيه كتابة التعليمات البرمجية في هذه المسابقة؟ 763 00:52:54,000 --> 00:52:58,000 مثل المسافة البادئة وهذا النوع من الأشياء؟ >> [طالب] نعم. 764 00:52:58,000 --> 00:53:00,000 لا، ليس بقدر. 765 00:53:00,000 --> 00:53:09,000 اعتقد ان الكثير من هذا شيء، سنقوم بتوضيح هذه المسابقة على يوم، 766 00:53:09,000 --> 00:53:15,000 ولكن عادة القلق بشأن تتضمن # وهذا النوع من الاشياء، انها نوع من الخارج. 767 00:53:15,000 --> 00:53:17,000 [طالب] هل تحتاج إلى تعليق التعليمات البرمجية المكتوبة بخط اليد؟ 768 00:53:17,000 --> 00:53:19,000 هل تحتاج إلى تعليق التعليمات البرمجية المكتوبة بخط اليد؟ 769 00:53:19,000 --> 00:53:24,000 التعليق هو دائما جيدة إذا كنت قلقة بشأن الائتمان الجزئي 770 00:53:24,000 --> 00:53:29,000 أو كنت ترغب في التواصل القصد الخاص بك إلى آلة تسوية الأرض. 771 00:53:29,000 --> 00:53:33,000 لكنني، ومرة ​​أخرى، وسوف توضح هذه المسابقة على نفسها ويوم الاختبار، 772 00:53:33,000 --> 00:53:39,000 لكنني لا أعتقد أن سوف تكون هناك حاجة لكتابة التعليقات، لا. 773 00:53:39,000 --> 00:53:42,000 عادة لا، ولكن هذا بالتأكيد نوع من الشيء حيث 774 00:53:42,000 --> 00:53:45,000 يمكنك التواصل القصد الخاص بك، مثل "مهلا، هذا هو المكان الذي أنا ذاهب معها." 775 00:53:45,000 --> 00:53:49,000 وأحيانا يمكن أن تساعد في الائتمان الجزئي. 776 00:53:49,000 --> 00:53:51,000 بارد. 777 00:53:51,000 --> 00:53:53,000 >> ريحان. 778 00:53:53,000 --> 00:53:56,000 [باسل] ما الفرق بين إعلان، ويقول، وكثافة العمليات لانج 779 00:53:56,000 --> 00:54:03,000 في مقابل الحجج أو معلمات يعلن متغير داخل الدالة؟ 780 00:54:03,000 --> 00:54:05,000 نجاح باهر، وذهب إلى أسفل القصبة الهوائية القهوة. 781 00:54:05,000 --> 00:54:07,000 [باسل] مثل الأشياء التي نريد أن نضع في الحجج. 782 00:54:07,000 --> 00:54:09,000 نعم، هذا سؤال عظيم. 783 00:54:09,000 --> 00:54:11,000 كيف يمكنك اختيار ما الأشياء التي تريد أن تضع في الحجج 784 00:54:11,000 --> 00:54:17,000 في مقابل ما يجب عليك القيام به الأشياء داخل وظيفة؟ 785 00:54:17,000 --> 00:54:24,000 في هذه الحالة نحن شملت كل من هذه كوسائط 786 00:54:24,000 --> 00:54:29,000 لأنهم شيء أن كل من هو ذاهب لاستخدام الدالة SUM 787 00:54:29,000 --> 00:54:32,000 يجب أن تحدد تلك الأشياء. 788 00:54:32,000 --> 00:54:35,000 >> الدالة SUM، مثل تحدثنا عن، لا يوجد لديه وسيلة لمعرفة 789 00:54:35,000 --> 00:54:40,000 كيف كبيرة الصفيف هو الذي تحصل عليه من المتصل به أو من يقوم باستخدام الدالة SUM. 790 00:54:40,000 --> 00:54:44,000 انه ليس لديها وسيلة لمعرفة كيف الكبيرة التي الصفيف. 791 00:54:44,000 --> 00:54:48,000 السبب في أننا تمرير في هذا طول هنا كحجة 792 00:54:48,000 --> 00:54:51,000 لأن هذا شيء ونحن نقول في الأساس المتصل وظيفة، 793 00:54:51,000 --> 00:54:55,000 لمن هو ذاهب الى استخدام الدالة SUM، "مهلا، ليس فقط لديك لتعطينا مجموعة 794 00:54:55,000 --> 00:54:59,000 من رجات، لديك أيضا ليقول لنا كيف كبيرة الصفيف الذي قدمتموه لنا هو. " 795 00:54:59,000 --> 00:55:03,000 [باسل] تلك سيكونان سائط سطر الأوامر؟ 796 00:55:03,000 --> 00:55:06,000 لا، وهذه هي الحجج الفعلية التي ستنتقل إلى الدالة. 797 00:55:06,000 --> 00:55:10,000 >> اسمحوا لي أن تفعل صفحة جديدة هنا. 798 00:55:10,000 --> 00:55:13,000 [باسل] يود اسم PASS- 799 00:55:13,000 --> 00:55:24,000 [نيت H.] إذا كان لدي الباحث الرئيسي (الفراغ)، 800 00:55:24,000 --> 00:55:27,000 وانا ذاهب الى وضع في 0 عودتي إلى هنا في الأسفل، 801 00:55:27,000 --> 00:55:31,000 ويقول أريد أن استدعاء الدالة SUM. 802 00:55:31,000 --> 00:55:42,000 أريد أن أقول الباحث س = SUM ()؛ 803 00:55:42,000 --> 00:55:46,000 لاستخدام الدالة SUM لدي لتمرير مجموعة في كل من أنني أريد أن نلخص 804 00:55:46,000 --> 00:55:51,000 وطول الصفيف، لذلك هذا هو المكان 805 00:55:51,000 --> 00:55:54,000 على افتراض كان لي مجموعة من رجات، 806 00:55:54,000 --> 00:56:12,000 يقول الباحث numbaz كان لي [] = 1، 2، 3، 807 00:56:12,000 --> 00:56:16,000 نوع الاستخدام التي تصل جملة اخترق هناك حق، 808 00:56:16,000 --> 00:56:21,000 ثم ما يمكن أن نفعله هو باختصار أريد أن تمر في 809 00:56:21,000 --> 00:56:27,000 كل numbaz والرقم 3 810 00:56:27,000 --> 00:56:30,000 لقول الدالة SUM "حسنا، هنا هو مجموعة أريدك أن المبلغ." 811 00:56:30,000 --> 00:56:34,000 "إليك حجمها." 812 00:56:34,000 --> 00:56:39,000 هل هذا معقول؟ هل هذا الإجابة على سؤالك؟ 813 00:56:39,000 --> 00:56:42,000 >> في نواح كثيرة هو الحال موازية ما نقوم به مع الرئيسية 814 00:56:42,000 --> 00:56:44,000 عندما يكون لدينا وسيطات سطر الأوامر. 815 00:56:44,000 --> 00:56:47,000 برنامج مثل الشفرات قيصر، على سبيل المثال، هناك حاجة إلى 816 00:56:47,000 --> 00:56:53,000 وسيطات سطر الأوامر لن تكون قادرة على فعل أي شيء. 817 00:56:53,000 --> 00:56:57,000 فإنه لا يعرف كيفية تشفير إذا لم يقولوا ذلك ما مفتاح لاستخدام 818 00:56:57,000 --> 00:57:03,000 أو إذا كنت لم يقولوا ذلك ما كنت تريد سلسلة لتشفير. 819 00:57:03,000 --> 00:57:08,000 المطالبة المدخلات، هذا هو المكان الذي قد حصلت على 2 الآليات المختلفة 820 00:57:08,000 --> 00:57:14,000 لأخذ مدخلات من المستخدم في، لاخذ المعلومات من المستخدم في. 821 00:57:14,000 --> 00:57:19,000 1 تعيين لمشكلة رأينا هذا GetInt، GetString، طريقة GetFloat 822 00:57:19,000 --> 00:57:26,000 من المطالبة المدخلات، وهذا يدعى أن استخدام دفق الإدخال القياسية. 823 00:57:26,000 --> 00:57:28,000 الأمر مختلف قليلا. 824 00:57:28,000 --> 00:57:31,000 انه شيء يمكنك القيام به في وقت واحد بدلا من 825 00:57:31,000 --> 00:57:35,000 عند استدعاء البرنامج، عند بدء تشغيل البرنامج. 826 00:57:35,000 --> 00:57:41,000 وسيطات سطر الأوامر كل المحددة عند بدء تشغيل تشغيل البرنامج. 827 00:57:41,000 --> 00:57:47,000 كنا خلط اثنين من هؤلاء. 828 00:57:47,000 --> 00:57:52,000 عندما نستخدم الحجج إلى وظيفة، انها مثل الكثير من الحجج الرئيسية لسطر الأوامر. 829 00:57:52,000 --> 00:57:56,000 انها عند استدعاء الدالة التي تحتاج إليها ليقولوا ذلك 830 00:57:56,000 --> 00:58:05,000 بالضبط ما يحتاج من أجل أداء مهامها. 831 00:58:05,000 --> 00:58:08,000 آخر شيء جيد أن ننظر إلى وسوف تسمح لك ننظر في الأمر في وقت فراغك، 832 00:58:08,000 --> 00:58:11,000 وتمت تغطية ذلك في هذه المسابقة، وكان هذا المفهوم من نطاق 833 00:58:11,000 --> 00:58:15,000 والمتغيرات المحلية مقابل المتغيرات العالمية. 834 00:58:15,000 --> 00:58:18,000 يدفع إنتباه إلى ذلك. 835 00:58:18,000 --> 00:58:23,000 >> نحن الآن أن الحصول على هذه الاشياء لأخرى، 836 00:58:23,000 --> 00:58:27,000 في الأسبوع 3 بدأنا نتحدث عن البحث والفرز. 837 00:58:27,000 --> 00:58:32,000 البحث والفرز، على الأقل في CS50، 838 00:58:32,000 --> 00:58:39,000 إلى حد كبير مقدمة لبعض من أكثر الأجزاء النظرية لعلوم الكمبيوتر. 839 00:58:39,000 --> 00:58:42,000 مشكلة البحث، فإن مشكلة الفرز 840 00:58:42,000 --> 00:58:46,000 كبيرة، ومشاكل الكنسي. 841 00:58:46,000 --> 00:58:52,000 كيف يمكنك العثور على عدد معين في مجموعة من الأعداد الصحيحة مليارات؟ 842 00:58:52,000 --> 00:58:55,000 كيف يمكنك العثور على اسم معين داخل دليل الهاتف 843 00:58:55,000 --> 00:58:59,000 أن يتم تخزينها على الكمبيوتر المحمول؟ 844 00:58:59,000 --> 00:59:04,000 وهكذا ونحن نقدم هذه الفكرة من المرات المدى مقارب 845 00:59:04,000 --> 00:59:11,000 لتحديد كم من الوقت حقا، مدى صعوبة هذه المشكلة هي، 846 00:59:11,000 --> 00:59:14,000 متى اتخاذها لحلها. 847 00:59:14,000 --> 00:59:20,000 في، في اعتقادي، 2011 في مسابقة هناك مشكلة أعتقد أن مزايا 848 00:59:20,000 --> 00:59:27,000 تغطي بشكل سريع جدا، والذي هو هذا واحد، مشكلة 12. 849 00:59:27,000 --> 00:59:32,000 O لا، انها أوميغا. 850 00:59:32,000 --> 00:59:41,000 >> نحن هنا نتحدث عن وقت التشغيل أسرع وقت ممكن 851 00:59:41,000 --> 00:59:46,000 لخوارزمية معينة ثم وقت التشغيل أبطأ ممكن. 852 00:59:46,000 --> 00:59:52,000 هذا وأوميغا O هي في الواقع مجرد اختصارات. 853 00:59:52,000 --> 00:59:55,000 انهم اختصارات لقوله الترميزية 854 00:59:55,000 --> 00:59:59,000 مدى السرعة في حالة أفضل وجه ممكن سيتم تشغيل خوارزمية لدينا، 855 00:59:59,000 --> 01:00:06,000 وكيف بطيئة في حالة أسوأ ما يمكن تشغيل أنظمتنا؟ 856 01:00:06,000 --> 01:00:10,000 دعونا نفعل اثنين من هذه، وكانت مغطاة أيضا هذه 857 01:00:10,000 --> 01:00:13,000 في الأجل القصير على ترميز مقارب، وأنا في غاية يوصي. 858 01:00:13,000 --> 01:00:17,000 لم جاكسون بعمل جيد حقا. 859 01:00:17,000 --> 01:00:23,000 البحث مع ثنائي، نتحدث عن البحث الثنائية بأنها خوارزمية، 860 01:00:23,000 --> 01:00:28,000 وعادة ما نتحدث عن ذلك من حيث O. لها كبير 861 01:00:28,000 --> 01:00:30,000 ما هو O الكبيرة؟ 862 01:00:30,000 --> 01:00:34,000 ما هو وقت التشغيل أبطأ ممكن من البحث الثنائي؟ 863 01:00:34,000 --> 01:00:36,000 [طالب] ² N؟ 864 01:00:36,000 --> 01:00:41,000 إغلاق، وأنا أعتقد مماثلة لذلك. 865 01:00:41,000 --> 01:00:43,000 انها أسرع كثيرا من ذلك. 866 01:00:43,000 --> 01:00:45,000 [طالب] الثنائية؟ >> نعم، البحث الثنائية. 867 01:00:45,000 --> 01:00:47,000 [طالب] إنه لا يوجد السجل. 868 01:00:47,000 --> 01:00:49,000 تسجيل الدخول N، فماذا يعني تسجيل ن؟ 869 01:00:49,000 --> 01:00:51,000 ذلك أنه نصفين كل تكرار. 870 01:00:51,000 --> 01:00:56,000 بالضبط، لذلك في حالة أبطأ ممكن، 871 01:00:56,000 --> 01:01:00,000 ويقول إذا كان لديك مجموعة ومصنفة 872 01:01:00,000 --> 01:01:08,000 من الأعداد الصحيحة مليون وعدد ما تبحث عنه 873 01:01:08,000 --> 01:01:14,000 إما العنصر الأول في الصفيف جدا أو العنصر الأخير جدا في الصفيف. 874 01:01:14,000 --> 01:01:18,000 تذكر، خوارزمية البحث الثنائي يعمل من خلال النظر في عنصر الأوسط، 875 01:01:18,000 --> 01:01:21,000 رؤية اذا كان ذلك المباراة التي كنت تبحث عنها. 876 01:01:21,000 --> 01:01:23,000 إذا كان، ثم كبيرة، وجدت عليه. 877 01:01:23,000 --> 01:01:27,000 >> في حالة أفضل وجه ممكن، ومدى سرعة ثنائي لا تشغيل البحث؟ 878 01:01:27,000 --> 01:01:29,000 [الطلاب] 1. 879 01:01:29,000 --> 01:01:32,000 1، وحان الوقت مستمر، كبير O 1. نعم. 880 01:01:32,000 --> 01:01:36,000 [طالب] لدي سؤال. عندما تقول سجل ن، يعني فيما يتعلق قاعدة 2، أليس كذلك؟ 881 01:01:36,000 --> 01:01:40,000 نعم، حتى هذا الشيء الآخر. 882 01:01:40,000 --> 01:01:44,000 نقول لا يوجد سجل، واعتقد عندما كنت في المدرسة الثانوية 883 01:01:44,000 --> 01:01:48,000 توليت دائما أن سجل كان الأساس 10. 884 01:01:48,000 --> 01:01:57,000 نعم، لذلك نعم، تسجيل 2، قاعدة عادة ما نستخدمه. 885 01:01:57,000 --> 01:02:02,000 مرة أخرى، يعود إلى بحث ثنائية، إذا كنت تبحث عن إما 886 01:02:02,000 --> 01:02:05,000 العنصر في نهاية جدا أو العنصر في البداية، 887 01:02:05,000 --> 01:02:08,000 لأنك تبدأ في منتصف ثم تجاهل 888 01:02:08,000 --> 01:02:13,000 أيهما 1/2 لا يلبي المعايير التي تبحث عنها، 889 01:02:13,000 --> 01:02:15,000 وتذهب إلى النصف والنصف المقبلة القادمة والنصف القادمة. 890 01:02:15,000 --> 01:02:19,000 إذا أنا في البحث عن أكبر عنصر في صفيف صحيحا مليون 891 01:02:19,000 --> 01:02:25,000 أنا ذاهب إلى النصف على الأكثر من دخول من 1 مليون مرة 892 01:02:25,000 --> 01:02:28,000 وأخيرا قبل أن اختبار ونرى أن العنصر أنا أبحث عن 893 01:02:28,000 --> 01:02:33,000 هو في اكبر أو في أعلى مؤشر للمجموعة، 894 01:02:33,000 --> 01:02:38,000 وسوف تأخذ السجل ن، قم بتسجيل الدخول من 1 مليون مرة. 895 01:02:38,000 --> 01:02:40,000 >> نوع فقاعة. 896 01:02:40,000 --> 01:02:43,000 لا يا رفاق تذكر خوارزمية فرز الفقاعة؟ 897 01:02:43,000 --> 01:02:47,000 كيفن، هل يمكن ان تعطيني خلاصة سريعة لما حدث في فقاعة خوارزمية الفرز؟ 898 01:02:47,000 --> 01:02:50,000 [كيفن] أساسا أنه يمر كل شيء في القائمة. 899 01:02:50,000 --> 01:02:52,000 فإنه يبحث في الأولين. 900 01:02:52,000 --> 01:02:55,000 إذا كان الأول هو أكبر من ثانية واحدة أنها التبادل لهم. 901 01:02:55,000 --> 01:02:58,000 ثم يقارن الثاني والثالث، ونفس الشيء، التبادل، 902 01:02:58,000 --> 01:03:00,000 الثالث والرابع، على طول الطريق. 903 01:03:00,000 --> 01:03:03,000 سوف أعداد أكبر متابعة حتى النهاية. 904 01:03:03,000 --> 01:03:07,000 وبعد العديد من الحلقات ولكن الانتهاء من ذلك. 905 01:03:07,000 --> 01:03:11,000 بالضبط، لذلك ما هو كيفن وقال أننا سوف مشاهدة أعداد أكبر 906 01:03:11,000 --> 01:03:15,000 فقاعة تصل إلى نهاية الصفيف. 907 01:03:15,000 --> 01:03:19,000 على سبيل المثال، هل تمانع المشي لنا من خلال هذا المثال إذا كان هذا هو مجموعة لدينا؟ 908 01:03:19,000 --> 01:03:21,000 [كيفن] عليك اتخاذ 2 و 3. 909 01:03:21,000 --> 01:03:23,000 3 هو أكبر من 2، لذلك كنت مقايضتهم. 910 01:03:23,000 --> 01:03:29,000 [نيت H.] الحق، لذلك نحن مبادلة هذه، وهكذا نحصل على 2، 3، 4، 6، و 9. 911 01:03:29,000 --> 01:03:31,000 [كيفن] ثم قارنت 3 و 6. 912 01:03:31,000 --> 01:03:33,000 3 هو أصغر من 6 سنوات، وتركت لهم، 913 01:03:33,000 --> 01:03:37,000 و 6 و 4، وكنت مقايضتهم لأن 4 أصغر من 6. 914 01:03:37,000 --> 01:03:42,000 [نيت H.] الحق، حتى أحصل على 2، 3، 4، 6، 9. 915 01:03:42,000 --> 01:03:46,000 [كيفن] و 9 أكبر من 6، لذلك كنت اتركها. 916 01:03:46,000 --> 01:03:48,000 وكنت أعود من خلال ذلك مرة أخرى. 917 01:03:48,000 --> 01:03:50,000 >> [نيت H.] أنا فعلت في هذه المرحلة؟ >> [كيفن] رقم 918 01:03:50,000 --> 01:03:52,000 ولماذا أنا لم تفعل في هذه المرحلة؟ 919 01:03:52,000 --> 01:03:54,000 لأنه يبدو وكأنه يتم فرز مجموعة بي. أنا أبحث في ذلك. 920 01:03:54,000 --> 01:03:57,000 [كيفن] الذهاب من خلال ذلك مرة أخرى وتأكد من أن هناك مقايضات لا أكثر 921 01:03:57,000 --> 01:04:00,000 قبل أن تتمكن من وقف كامل. 922 01:04:00,000 --> 01:04:04,000 بالضبط، لذلك تحتاج إلى الاستمرار في عملهم من خلال وتأكد من عدم وجود مقايضة 923 01:04:04,000 --> 01:04:06,000 التي يمكن أن تقوم بها في هذه المرحلة. 924 01:04:06,000 --> 01:04:08,000 إلا أنه في الحقيقة مجرد محظوظ، مثل قلته، لقد انتهى الأمر 925 01:04:08,000 --> 01:04:12,000 وجود فقط لجعل 1 بالمرور وكنت قمنا بفرز. 926 01:04:12,000 --> 01:04:16,000 ولكن للقيام بذلك في حالة عامة سيكون لدينا في الواقع القيام بذلك مرارا وتكرارا. 927 01:04:16,000 --> 01:04:20,000 في واقع الأمر، كان هذا مثالا على حالة أفضل وجه ممكن، 928 01:04:20,000 --> 01:04:24,000 رأينا في مثل هذه المشكلة. 929 01:04:24,000 --> 01:04:28,000 رأينا أن ن حالة أفضل وجه ممكن. 930 01:04:28,000 --> 01:04:32,000 ذهبنا من خلال مجموعة الأول 1. 931 01:04:32,000 --> 01:04:35,000 ما هي الحالة أسوأ ما يمكن لهذه الخوارزمية؟ 932 01:04:35,000 --> 01:04:37,000 [كيفن] N ². 933 01:04:37,000 --> 01:04:41,000 وماذا تشبه؟ فماذا نظرة مثل مجموعة التي من شأنها أن تأخذ الوقت ن ²؟ 934 01:04:41,000 --> 01:04:43,000 [كيفن] [غير مسموع] فرزها. 935 01:04:43,000 --> 01:04:51,000 بالضبط، لذلك إذا كان لي مجموعة 9، 7، 6، 5، 2، 936 01:04:51,000 --> 01:04:54,000 أولا ستطلب في 9 فقاعة على طول الطريق حتى. 937 01:04:54,000 --> 01:04:59,000 بعد 1 التكرار كنت لدينا 7، 6، 5، 2 و 9. 938 01:04:59,000 --> 01:05:07,000 عندئذ يصل فقاعة ال 7، 6، 5، 2، 7، 9، وهلم جرا وهكذا دواليك. 939 01:05:07,000 --> 01:05:13,000 >> كنا يجب أن تمر من خلال مجموعة كاملة n مرة، 940 01:05:13,000 --> 01:05:16,000 ويمكنك الحصول على الواقع قليلا أكثر دقة من هذا 941 01:05:16,000 --> 01:05:23,000 لأنه بمجرد أننا قد انتقلت في 9 كل وسيلة تصل إلى مكانه ممكن مشاركة 942 01:05:23,000 --> 01:05:26,000 ونحن نعلم أننا لا داعي للمقارنة ضد هذا العنصر مرة أخرى. 943 01:05:26,000 --> 01:05:29,000 مرة واحدة نبدأ محتدما حتى ال 7 944 01:05:29,000 --> 01:05:35,000 ونحن نعلم أننا يمكن أن يوقف مرة واحدة في 7 هو الحق قبل ال 9 945 01:05:35,000 --> 01:05:37,000 منذ لقد قارنا بالفعل 9 إلى ذلك. 946 01:05:37,000 --> 01:05:46,000 إذا كنت تفعل ذلك بطريقة ذكية انها ليست حقا، وأنا أعتقد أن الكثير من الوقت. 947 01:05:46,000 --> 01:05:49,000 كنت لن مقارنة جميع ممكن [غير مسموع] تركيبات 948 01:05:49,000 --> 01:05:55,000 في كل مرة تذهب من خلال كل تكرار. 949 01:05:55,000 --> 01:05:59,000 ولكن لا يزال، وعندما نتحدث عن هذا الحد الأعلى نقول أن 950 01:05:59,000 --> 01:06:04,000 كنت تبحث في ن ² مقارنات على طول الطريق من خلال. 951 01:06:04,000 --> 01:06:12,000 >> دعونا نعود، ومنذ بدأنا الحصول على القليل في وقت قصير 952 01:06:12,000 --> 01:06:15,000 وأود أن أقول لكم بالتأكيد يجب ان تذهب من خلال ما تبقى من هذا الجدول، 953 01:06:15,000 --> 01:06:17,000 ملء كل شيء. 954 01:06:17,000 --> 01:06:20,000 اعتقد من الأمثلة. التفكير في أمثلة ملموسة. 955 01:06:20,000 --> 01:06:22,000 هذا مفيد حقا ومفيدة للقيام به. 956 01:06:22,000 --> 01:06:25,000 رسم من ذلك. 957 01:06:25,000 --> 01:06:28,000 هذا هو نوع من الجدول الذي كما تذهب من خلال في علوم الكمبيوتر 958 01:06:28,000 --> 01:06:32,000 يجب أن تبدأ حقا أن تعرف هذه من القلب. 959 01:06:32,000 --> 01:06:34,000 هذه هي أنواع الأسئلة تحصل في المقابلات. 960 01:06:34,000 --> 01:06:36,000 هذه هي أنواع الأشياء التي هي جيدة لمعرفة، 961 01:06:36,000 --> 01:06:41,000 والتفكير في هذه الحالات الحافة، كشف حقا كيفية التفكير 962 01:06:41,000 --> 01:06:45,000 مع العلم أن لفقاعة فرز مجموعة أسوأ ما يمكن 963 01:06:45,000 --> 01:06:52,000 لفرز التي هي واحدة مع هذا في ترتيب عكسي. 964 01:06:52,000 --> 01:06:58,000 >> المؤشرات. دعونا نتحدث قليلا عن المؤشرات. 965 01:06:58,000 --> 01:07:03,000 في الدقائق القليلة الماضية لدينا هنا 966 01:07:03,000 --> 01:07:11,000 أعرف أن هذا شيء مع ملف I / O ما هو جديد إلى حد ما. 967 01:07:11,000 --> 01:07:19,000 عندما نتحدث عن مؤشرات السبب في أننا نريد أن نتحدث عن مؤشرات 968 01:07:19,000 --> 01:07:24,000 لأنه، واحد، عندما كنا نعمل في C 969 01:07:24,000 --> 01:07:33,000 نحن حقا في مستوى منخفض نسبيا بالمقارنة مع لغات البرمجة الحديثة. 970 01:07:33,000 --> 01:07:38,000 نحن فعلا قادرة على التعامل مع المتغيرات في الذاكرة، 971 01:07:38,000 --> 01:07:43,000 معرفة أين كنت في الواقع تقع في غضون RAM لدينا. 972 01:07:43,000 --> 01:07:46,000 مرة كنت قد ذهبت إلى أخذ دروس نظام التشغيل سترى 973 01:07:46,000 --> 01:07:48,000 ان هذا، مرة أخرى، نوع من التجريد. 974 01:07:48,000 --> 01:07:50,000 هذا ليس واقع الحال. 975 01:07:50,000 --> 01:07:52,000 لقد حصلنا على الذاكرة الظاهرية التي يختبئ هذه التفاصيل منا. 976 01:07:52,000 --> 01:07:58,000 >> لكن في الوقت الراهن يمكن أن نفترض أنه عندما يكون لديك برنامج، 977 01:07:58,000 --> 01:08:02,000 على سبيل المثال، عند بدء تشغيل البرنامج الخاص الشفرات قيصر 978 01:08:02,000 --> 01:08:06,000 أنا يعود مرة أخرى الى بلدي باد بسرعة حقا، 979 01:08:06,000 --> 01:08:12,000 أنه في البرنامج منذ البداية، إذا كان لديك، ويقول، 980 01:08:12,000 --> 01:08:15,000 4 غيغا بايت من ذاكرة الوصول العشوائي على جهاز الكمبيوتر المحمول الخاص بك، 981 01:08:15,000 --> 01:08:21,000 الحصول على تعيين جانبا هذه قطعة، ونحن سوف نسمي هذا RAM. 982 01:08:21,000 --> 01:08:25,000 ويبدأ في مكان ونحن في طريقنا للدعوة 0، 983 01:08:25,000 --> 01:08:30,000 وينتهي في مكان أننا سوف ندعو 4 غيغا بايت. 984 01:08:30,000 --> 01:08:37,000 أنا حقا لا يمكن الكتابة. الرجل، واخترق ذلك. 985 01:08:37,000 --> 01:08:40,000 عندما ينفذ البرنامج الخاص بك 986 01:08:40,000 --> 01:08:44,000 نظام التشغيل تقتطع من ذاكرة الوصول العشوائي، 987 01:08:44,000 --> 01:08:51,000 وتحدد شرائح مختلفة لأجزاء مختلفة من البرنامج للعيش فيه. 988 01:08:51,000 --> 01:08:58,000 إلى هنا هذا المجال هو نوع من الحرام. 989 01:08:58,000 --> 01:09:02,000 عندما تذهب أبعد قليلا هنا 990 01:09:02,000 --> 01:09:05,000 كنت قد حصلت فعلا المكان الذي 991 01:09:05,000 --> 01:09:09,000 رمز للحياة البرنامج. 992 01:09:09,000 --> 01:09:13,000 أن الشفرة الثنائية الفعلي، وهذا في الواقع يحصل الملف القابل للتنفيذ تحميلها في الذاكرة 993 01:09:13,000 --> 01:09:17,000 عند تشغيل البرنامج، وأنه يعيش في مقطع التعليمات البرمجية. 994 01:09:17,000 --> 01:09:22,000 وينفذ كبرنامج المعالج يبدو في هذا الجزء من الشفرة 995 01:09:22,000 --> 01:09:24,000 لمعرفة ما هو التعليمة التالية؟ 996 01:09:24,000 --> 01:09:27,000 ما هو السطر التالي من التعليمات البرمجية ولست بحاجة لتنفيذ؟ 997 01:09:27,000 --> 01:09:31,000 >> هناك أيضا شريحة البيانات، وهذا هو المكان تلك ثوابت السلسلة 998 01:09:31,000 --> 01:09:34,000 الحصول على المخزن الذي كنت تستخدم. 999 01:09:34,000 --> 01:09:42,000 وبعد ذلك أبعد هذا هناك مكان يسمى الكومة. 1000 01:09:42,000 --> 01:09:46,000 نحن في الوصول إلى الذاكرة باستخدام malloc هناك، 1001 01:09:46,000 --> 01:09:49,000 ومن ثم نحو أعلى جدا من البرنامج 1002 01:09:49,000 --> 01:09:52,000 هناك المكدس، 1003 01:09:52,000 --> 01:09:57,000 وحيث ان كنا اللعب لأكثر من بداية. 1004 01:09:57,000 --> 01:09:59,000 هذه ليست لحجم أو أي شيء. 1005 01:09:59,000 --> 01:10:03,000 وهناك الكثير من هذه الآلة التي تعتمد جدا، 1006 01:10:03,000 --> 01:10:10,000 يعتمد نظام التشغيل، ولكن هذه هي الطريقة نسبيا الحصول على المقسم الامور. 1007 01:10:10,000 --> 01:10:17,000 عند تشغيل البرنامج وقمت بتعريف متغير يسمى X- 1008 01:10:17,000 --> 01:10:27,000 أنا ذاهب لرسم مربع آخر في الأسفل، وهذا سيكون RAM أيضا. 1009 01:10:27,000 --> 01:10:29,000 وانا ذاهب للنظر. 1010 01:10:29,000 --> 01:10:34,000 سنقوم رسم خطوط خشنة للإشارة إلى هذا هو مجرد جزء صغير من ذاكرة الوصول العشوائي 1011 01:10:34,000 --> 01:10:38,000 وليس كل من هو أننا نقترب في الأعلى. 1012 01:10:38,000 --> 01:10:43,000 >> إذا أعلن متغير عدد صحيح يسمى X، 1013 01:10:43,000 --> 01:10:49,000 ثم ما يحصل في الواقع هو رسم الخرائط 1014 01:10:49,000 --> 01:10:54,000 التي تم تخزينها في الجدول رمز برنامجي 1015 01:10:54,000 --> 01:11:00,000 الذي يربط X اسم لهذه المنطقة من الذاكرة التي قمت رسمها 1016 01:11:00,000 --> 01:11:03,000 هنا بين القضبان الرأسية. 1017 01:11:03,000 --> 01:11:08,000 إذا كان لدي سطر من التعليمات البرمجية في برنامجي أن يقول X = 7 1018 01:11:08,000 --> 01:11:15,000 المعالج يعرف "أوه، حسنا، أنا أعرف أن حياة X في هذا الموقع في الذاكرة." 1019 01:11:15,000 --> 01:11:25,000 "انا ذاهب الى المضي قدما في الكتابة ج 7 هناك." 1020 01:11:25,000 --> 01:11:28,000 كيف تعرف ما هذا المكان هو في الذاكرة؟ 1021 01:11:28,000 --> 01:11:30,000 حسنا، انها فعلت كل ما في وقت الترجمة. 1022 01:11:30,000 --> 01:11:34,000 المترجم يعتني تخصيص كل واحد من حيث المتغيرات في سبيلنا للذهاب 1023 01:11:34,000 --> 01:11:40,000 وخلق رسم الخرائط الخاصة أو الاتصال بدلا النقاط 1024 01:11:40,000 --> 01:11:43,000 وبين رمز حيث انه سيكون، اسم متغير 1025 01:11:43,000 --> 01:11:46,000 وحيث انه سيكون للعيش في الذاكرة. 1026 01:11:46,000 --> 01:11:50,000 ولكن تبين أن نتمكن من الوصول فعلا في برامجنا أيضا. 1027 01:11:50,000 --> 01:11:55,000 هذا يحصل عندما المهم أن نبدأ الحديث عن بعض هياكل البيانات، 1028 01:11:55,000 --> 01:11:58,000 وهو المفهوم الذي نحن ذاهبون لتقديم وقت لاحق. 1029 01:11:58,000 --> 01:12:09,000 >> لكن في الوقت الراهن، ما يمكن أن نعرفه هو أن أستطيع إنشاء مؤشر إلى هذا الموقع، X. 1030 01:12:09,000 --> 01:12:12,000 على سبيل المثال، يمكن أن أقوم بإنشاء متغير المؤشر. 1031 01:12:12,000 --> 01:12:16,000 عندما نقوم بإنشاء متغير مؤشر نستخدم منهج نجوم. 1032 01:12:16,000 --> 01:12:21,000 في هذه الحالة، وهذا يقول أنا ذاهب إلى إنشاء مؤشر إلى int. 1033 01:12:21,000 --> 01:12:24,000 انها تماما مثل أي نوع آخر. 1034 01:12:24,000 --> 01:12:27,000 اعطيناها متغير مثل Y، 1035 01:12:27,000 --> 01:12:32,000 ثم قم بتعيين أنه مساوية نحن العنوان، إلى عنوان. 1036 01:12:32,000 --> 01:12:38,000 في هذه الحالة، فإننا يمكن أن يحدد Y للإشارة إلى X 1037 01:12:38,000 --> 01:12:43,000 من خلال اتخاذ عنوان X، وهو ما كنا نفعله مع هذا الضم، 1038 01:12:43,000 --> 01:12:55,000 ثم قم بتعيين نحن Y للإشارة إلى ذلك. 1039 01:12:55,000 --> 01:12:59,000 ما هو هذا الأساس لا إذا نظرنا إلى RAM لدينا 1040 01:12:59,000 --> 01:13:02,000 وهذا يخلق متغير مستقل. 1041 01:13:02,000 --> 01:13:04,000 انها سوف يطلق عليه Y، 1042 01:13:04,000 --> 01:13:06,000 وعندما يكون هذا السطر من التعليمات البرمجية ينفذ 1043 01:13:06,000 --> 01:13:13,000 انها في طريقها فعلا لإنشاء مؤشر القليل الذي عادة ما نقوم برسم سهم، 1044 01:13:13,000 --> 01:13:15,000 ويحدد Y للإشارة إلى X. 1045 01:13:15,000 --> 01:13:17,000 نعم. 1046 01:13:17,000 --> 01:13:19,000 [طالب] إذا كانت x هو بالفعل مؤشر، هل يفعل 1047 01:13:19,000 --> 01:13:22,000 * الباحث ص = س بدلا من وجود العطف؟ 1048 01:13:22,000 --> 01:13:24,000 نعم. 1049 01:13:24,000 --> 01:13:27,000 إذا كانت x هو بالفعل مؤشر، ثم يمكنك مجموعة 2 مؤشرات مساوية لبعضها البعض، 1050 01:13:27,000 --> 01:13:30,000 وفي هذه الحالة سوف لا تشير إلى Y X، 1051 01:13:30,000 --> 01:13:34,000 ولكن سيكون إشارة إلى ما يتم الإشارة إلى X. 1052 01:13:34,000 --> 01:13:37,000 للأسف، نحن في الخارج من الزمن. 1053 01:13:37,000 --> 01:13:44,000 >> ما أود أن أقول في هذه المرحلة، يمكن أن نتحدث عن هذا حاليا، 1054 01:13:44,000 --> 01:13:49,000 ولكن أود أن أقول من خلال بدء العمل على هذه المشكلة، رقم 14. 1055 01:13:49,000 --> 01:13:53,000 يمكنك ان ترى هناك بالفعل قليلا في شغل لك هنا. 1056 01:13:53,000 --> 01:13:57,000 تستطيع أن ترى أنه عندما نعلن 2 المؤشرات، وكثافة العمليات * X Y * و، 1057 01:13:57,000 --> 01:14:01,000 وكان لافتا أن لاحظ أن * المقبل لمتغير ما حدث في العام الماضي. 1058 01:14:01,000 --> 01:14:05,000 وتبين أن هذا يشبه ما نقوم به هذا العام. 1059 01:14:05,000 --> 01:14:11,000 لا يهم أين أنت تكتب * عندما كنت معلنا المؤشر. 1060 01:14:11,000 --> 01:14:17,000 ولكن قد كتبت * نحن بجانب نوع 1061 01:14:17,000 --> 01:14:24,000 لأن ذلك يجعل من الواضح جدا أن كنت معلنا متغير المؤشر. 1062 01:14:24,000 --> 01:14:27,000 يمكنك أن ترى أن الإعلان عن مؤشرات 2 تعطي لنا 2 مربعات. 1063 01:14:27,000 --> 01:14:31,000 هنا عندما وضعنا X يساوي malloc 1064 01:14:31,000 --> 01:14:34,000 ما هو هذا القول هو وضع جانبا في كومة الذاكرة. 1065 01:14:34,000 --> 01:14:41,000 يقع هذا المربع قليلا هنا، هذه الدائرة، على الكومة. 1066 01:14:41,000 --> 01:14:43,000 X يتم الإشارة إلى ذلك. 1067 01:14:43,000 --> 01:14:46,000 لاحظ أن y لا يزال عدم الإشارة إلى أي شيء. 1068 01:14:46,000 --> 01:14:50,000 للحصول على الذاكرة لتخزين رقم 42 إلى X 1069 01:14:50,000 --> 01:14:55,000 ونحن نستخدم ما التدوين؟ 1070 01:14:55,000 --> 01:14:59,000 [طالب] * س = 42. 1071 01:14:59,000 --> 01:15:01,000 بالضبط، * س = 42. 1072 01:15:01,000 --> 01:15:06,000 وهذا يعني اتباع سهم ورمي 42 في هناك. 1073 01:15:06,000 --> 01:15:09,000 هنا حيث وضعنا Y و X لدينا مشيرا إلى X Y. 1074 01:15:09,000 --> 01:15:13,000 مرة أخرى، وهذا هو تماما مثل ما قال كيفن حيث أننا تعيين يساوي Y إلى X. 1075 01:15:13,000 --> 01:15:15,000 Y هو عدم الإشارة إلى X. 1076 01:15:15,000 --> 01:15:19,000 بدلا من ذلك، انها تشير الى ما يتم الإشارة إلى X كذلك. 1077 01:15:19,000 --> 01:15:24,000 >> ثم أخيرا في هذا المربع الماضي هناك 2 الأشياء الممكنة التي يمكننا القيام به. 1078 01:15:24,000 --> 01:15:28,000 واحد هو أننا يمكن أن نقول * س = 13. 1079 01:15:28,000 --> 01:15:33,000 والشيء الآخر هو أننا يمكن أن نقول، أليكس، هل تعرف ماذا يمكن أن نفعل هنا؟ 1080 01:15:33,000 --> 01:15:37,000 * هل يمكن القول X = 13 OR- 1081 01:15:37,000 --> 01:15:41,000 [طالب] هل يمكن أن يقول ما كثافة العمليات. 1082 01:15:41,000 --> 01:15:45,000 [نيت H.] إذا كان يشار إلى ذلك متغير الباحث أننا يمكن أن نفعل ذلك. 1083 01:15:45,000 --> 01:15:49,000 يمكن أن نقول أيضا * Y = 13 لانهم على حد سواء مشيرا إلى نفس المكان، 1084 01:15:49,000 --> 01:15:51,000 حتى نتمكن من استخدام أي متغير للوصول إلى هناك. 1085 01:15:51,000 --> 01:15:56,000 نعم. >> [طالب] ما الذي جعلها تبدو وكأنها إذا كنا نقول فقط X الباحث هو 13؟ 1086 01:15:56,000 --> 01:16:00,000 وأن يعلن متغير جديد يسمى X، والتي لن تنجح. 1087 01:16:00,000 --> 01:16:04,000 كنت لدينا لأننا الاصطدام أعلن X ليكون المؤشر هنا. 1088 01:16:04,000 --> 01:16:10,000 [طالب] إذا كان لدينا فقط هذا البيان في حد ذاته ما يمكن أن تبدو وكأنها من حيث الدائرة؟ 1089 01:16:10,000 --> 01:16:14,000 لو كان لدينا X = 13 ثم كنت لدينا مربع، وبدلا من وجود سهم 1090 01:16:14,000 --> 01:16:16,000 القادمة من خارج منطقة الجزاء لكنا استدراجه إلى 13 فقط. 1091 01:16:16,000 --> 01:16:19,000 [طالب] في المربع. حسنا. 1092 01:16:19,000 --> 01:16:24,000 >> شكرا للمشاهدة، وحظا سعيدا في المسابقة 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]