1 00:00:00,000 --> 00:00:02,970 >> [موسيقى] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> ديفيد جيه مالان: حسنا. 4 00:00:15,700 --> 00:00:18,832 هذا هو CS50 وهذا هي بداية الأسبوع 2. 5 00:00:18,832 --> 00:00:21,040 وعليك أن تتذكر أن أكثر من في الأسبوعين الماضيين، 6 00:00:21,040 --> 00:00:24,490 لقد تم إدخال الكمبيوتر العلم وبدوره، البرمجة. 7 00:00:24,490 --> 00:00:27,640 >> وبدأنا القصة عن طريق الصفر، تلك اللغة الرسومية 8 00:00:27,640 --> 00:00:28,990 من مختبر وسائل الإعلام معهد ماساتشوستس للتكنولوجيا. 9 00:00:28,990 --> 00:00:30,780 ثم آخرها، في الأسبوع الماضي، لم نحن 10 00:00:30,780 --> 00:00:34,450 إدخال higher-- ل لغة ذات مستوى أقل معروفة 11 00:00:34,450 --> 00:00:36,770 كما C، شيء أن يكون نصية بحتة. 12 00:00:36,770 --> 00:00:39,440 وبالفعل، آخر مرة نحن استكشاف ضمن هذا السياق 13 00:00:39,440 --> 00:00:40,450 عدد من المفاهيم. 14 00:00:40,450 --> 00:00:43,010 >> هذا، أذكر، كان جدا البرنامج الأول ونحن ننظر في. 15 00:00:43,010 --> 00:00:45,710 وهذا البرنامج، بكل بساطة، بطباعة "مرحبا، العالم". 16 00:00:45,710 --> 00:00:47,730 ولكن هناك الكثير يبدو السحر مستمرة. 17 00:00:47,730 --> 00:00:51,460 هناك هذا # تشمل مع هذه الأقواس. 18 00:00:51,460 --> 00:00:52,170 هناك كثافة العمليات. 19 00:00:52,170 --> 00:00:53,020 هناك (الفراغ). 20 00:00:53,020 --> 00:00:56,330 هناك أقواس، الأقواس المعقوفة، شبه كولون، وأكثر من ذلك بكثير. 21 00:00:56,330 --> 00:00:58,480 >> وهكذا، أذكر أن قدمنا ​​خدش 22 00:00:58,480 --> 00:01:02,110 حتى نتمكن، من الناحية المثالية، انظر الماضي ذلك التركيب، والاشياء التي في الحقيقة لا 23 00:01:02,110 --> 00:01:04,590 كل ما فكريا مثيرة للاهتمام ولكن في وقت مبكر يوم 24 00:01:04,590 --> 00:01:07,700 هو، على الاطلاق، صعبة بعض الشيء للالتفاف حول عقلك. 25 00:01:07,700 --> 00:01:10,860 و، في الواقع، واحدة من الاكثر شيوعا أشياء في وقت مبكر من فئة البرمجة، 26 00:01:10,860 --> 00:01:13,443 خصوصا بالنسبة لأولئك أقل مريحة، هو الحصول على بالاحباط بسبب 27 00:01:13,443 --> 00:01:17,460 وتعثرت من قبل نحوي معين الأخطاء، ناهيك عن الأخطاء المنطقية. 28 00:01:17,460 --> 00:01:19,800 وهكذا بين أهدافنا اليوم، في الواقع، سوف 29 00:01:19,800 --> 00:01:23,280 يكون لتجهيز لكم مع بعض تقنيات حل المشاكل لكيفية 30 00:01:23,280 --> 00:01:26,705 حل أفضل المشاكل أنفسهم في شكل التصحيح. 31 00:01:26,705 --> 00:01:29,330 وسوف أذكر أيضا أن البيئة التي قدمنا 32 00:01:29,330 --> 00:01:31,780 ودعا آخر مرة CS50 IDE. 33 00:01:31,780 --> 00:01:34,850 هذا هو برنامج على شبكة الإنترنت أن يسمح لك البرنامج في السحابة، 34 00:01:34,850 --> 00:01:38,450 إذا جاز التعبير، مع الاحتفاظ بكل بك ملفات معا، وهذا ما سنقوم مرة أخرى اليوم. 35 00:01:38,450 --> 00:01:41,480 وأذكر أننا إعادة النظر في هذه المواضيع هنا، 36 00:01:41,480 --> 00:01:44,480 من بينها وظائف، والحلقات، و المتغيرات، والتعبيرات المنطقية، 37 00:01:44,480 --> 00:01:45,110 والشروط. 38 00:01:45,110 --> 00:01:49,190 وفعلا عدد قليل من أكثر أننا ترجم من عالم خدش 39 00:01:49,190 --> 00:01:50,800 في عالم C. 40 00:01:50,800 --> 00:01:53,220 >> ولكن المبنى الأساسي كتل، إذا جاز التعبير، 41 00:01:53,220 --> 00:01:55,150 كانت لا تزال في الحقيقة نفس الأسبوع الماضي. 42 00:01:55,150 --> 00:01:57,900 في الواقع، ونحن في الحقيقة مجرد لديها آخر قطعة اللغز، اذا صح التعبير. 43 00:01:57,900 --> 00:02:00,300 بدلا من أن الأرجواني حفظ الكتلة، ونحن بدلا من ذلك 44 00:02:00,300 --> 00:02:02,940 قد printf، الذي هو هذه وظيفة في C التي 45 00:02:02,940 --> 00:02:05,890 يسمح لك لطباعة شيء وتهيئته على الشاشة. 46 00:02:05,890 --> 00:02:07,950 قدمنا ​​CS50 المكتبة، حيث كنت 47 00:02:07,950 --> 00:02:11,420 لدينا الآن في get_char تصرفكم، وget_int، وget_string، 48 00:02:11,420 --> 00:02:14,610 وعدد قليل من الوظائف الأخرى كذلك، عبر التي يمكن أن تحصل المدخلات 49 00:02:14,610 --> 00:02:16,260 من لوحة المفاتيح المستخدم الخاصة. 50 00:02:16,260 --> 00:02:20,640 واتخذنا أيضا نظرة على الأشياء مثل these- منطقي، وشار، 51 00:02:20,640 --> 00:02:22,490 ومزدوجة، تطفو، كثافة العمليات، سلسلة long_long. 52 00:02:22,490 --> 00:02:25,170 وهناك حتى أنواع البيانات الأخرى في C. 53 00:02:25,170 --> 00:02:28,560 >> وبعبارة أخرى، عندما تقوم بتعريف متغير لتخزين بعض القيمة، 54 00:02:28,560 --> 00:02:32,600 أو عند تنفيذ وظيفة وترجع بعض القيمة، 55 00:02:32,600 --> 00:02:35,290 يمكنك تحديد ما نوع من قيمة. 56 00:02:35,290 --> 00:02:37,310 أنها ليست سلسلة، مثل تسلسل الأحرف؟ 57 00:02:37,310 --> 00:02:39,490 هو رقم، مثل عدد صحيح؟ 58 00:02:39,490 --> 00:02:41,390 هل هي النقطة العائمة قيمة، أو ما شابه ذلك؟ 59 00:02:41,390 --> 00:02:46,180 وذلك في C، على عكس خدش، ونحن في الواقع بدأ لتحديد أي نوع من البيانات 60 00:02:46,180 --> 00:02:48,330 كنا عائدين أو استخدام. 61 00:02:48,330 --> 00:02:51,910 >> ولكن، بطبيعة الحال، ركضنا أيضا إلى بعض القيود الأساسية للحوسبة. 62 00:02:51,910 --> 00:02:54,100 وعلى وجه الخصوص، هذه لغة C، استدعاء 63 00:02:54,100 --> 00:02:57,070 أن أخذنا نظرة على تجاوز عدد صحيح، واقع 64 00:02:57,070 --> 00:03:00,460 اذا كانت لديك فقط كمية محدودة من الذاكرة 65 00:03:00,460 --> 00:03:04,600 أو، على وجه التحديد، وعدد محدود البتات، يمكنك الاعتماد فقط عالية جدا. 66 00:03:04,600 --> 00:03:08,460 وحتى ونحن ننظر في هذا المثال هنا حيث عداد في طائرة،، 67 00:03:08,460 --> 00:03:13,510 في الواقع، إذا تشغيلها لفترة طويلة بما فيه الكفاية أن تجاوز، ويؤدي إلى البرمجيات 68 00:03:13,510 --> 00:03:15,560 خطأ محتمل المادي الفعلي. 69 00:03:15,560 --> 00:03:18,600 >> بحثنا أيضا في عائم نقطة عدم الدقة، فإن الواقع 70 00:03:18,600 --> 00:03:22,280 هذا مع وجود عدد محدود البتات، سواء كان 32 أو 64، 71 00:03:22,280 --> 00:03:27,330 يمكنك فقط تحديد أعداد كثيرة جدا بعد العلامة العشرية، وبعد ذلك كنت 72 00:03:27,330 --> 00:03:29,110 تبدأ في الحصول على غير دقيقة. 73 00:03:29,110 --> 00:03:32,360 هكذا على سبيل المثال، وثلث في العالم هنا، في عالمنا الإنساني، 74 00:03:32,360 --> 00:03:35,360 ما نعرفه هو مجرد عدد لا حصر له من 3S بعد العلامة العشرية. 75 00:03:35,360 --> 00:03:38,820 ولكن جهاز الكمبيوتر لا يمكن بالضرورة تمثل عدد لانهائي من الأرقام 76 00:03:38,820 --> 00:03:42,590 إذا كنت لا تسمح له بعض كمية محدودة من المعلومات. 77 00:03:42,590 --> 00:03:45,900 >> وذلك ليس فقط أننا لم تجهيز لكم سلطة أكبر من حيث 78 00:03:45,900 --> 00:03:49,280 عن الكيفية التي قد تعبر عن نفسك في لوحة مفاتيح من حيث البرمجة، 79 00:03:49,280 --> 00:03:51,430 نحن أيضا محدودة ما يمكنك القيام به في الواقع. 80 00:03:51,430 --> 00:03:55,790 وبالفعل، والبق والأخطاء يمكن تنشأ عن هذه الأنواع من القضايا. 81 00:03:55,790 --> 00:03:59,900 والواقع، بين الموضوعات اليوم ستكون موضوعات مثل التصحيح 82 00:03:59,900 --> 00:04:03,699 وفعلا تبحث تحت غطاء محرك السيارة في كيف تم إدخال أشياء في الأسبوع الماضي 83 00:04:03,699 --> 00:04:05,490 تنفذ في الواقع حتى يتسنى لك أفضل 84 00:04:05,490 --> 00:04:10,530 فهم كل من قدرات و القيود المفروضة على لغة مثل C. 85 00:04:10,530 --> 00:04:14,770 >> في واقع الأمر، فإننا سوف قشر العودة طبقات من أبسط هياكل البيانات، 86 00:04:14,770 --> 00:04:17,756 ما يسمى مجموعة، التي خدش يحدث للدعوة الى "القائمة." 87 00:04:17,756 --> 00:04:19,589 انها قليلا مختلفة في هذا السياق. 88 00:04:19,589 --> 00:04:23,340 وبعد ذلك سنقوم أيضا إدخال أحد أول من المشاكل مجال معين لدينا 89 00:04:23,340 --> 00:04:26,790 في CS50، عالم الترميز، فن الهرولة 90 00:04:26,790 --> 00:04:29,650 أو في التشفير المعلومات حتى يمكنك إرسال رسائل سرية 91 00:04:29,650 --> 00:04:34,520 وترجم رسائل سرية بين شخصين، A و B. 92 00:04:34,520 --> 00:04:37,490 >> حتى قبل أن الانتقال إلى ذلك العالم الجديد، 93 00:04:37,490 --> 00:04:42,059 دعونا نحاول تجهيز لكم مع بعض التقنيات التي يمكنك قضاء 94 00:04:42,059 --> 00:04:43,850 أو الحد من بعض على الأقل من الإحباطات 95 00:04:43,850 --> 00:04:46,630 هذا وربما كنت قد واجه خلال الأسبوع الماضي وحده. 96 00:04:46,630 --> 00:04:50,830 في الواقع، قبل كنت such-- بعض أولى المشاكل الخاصة بك في C. والاحتمالات، 97 00:04:50,830 --> 00:04:54,010 إذا كنت مثلي، لأول مرة حاولت اكتب برنامجا، 98 00:04:54,010 --> 00:04:57,330 حتى لو كنت تعتقد منطقيا البرنامج بسيط جدا، 99 00:04:57,330 --> 00:05:01,200 قد ضرب بشكل جيد للغاية الجدار، و المترجم لن تتعاون. 100 00:05:01,200 --> 00:05:03,940 إجراء أو رنة لن إلى القيام به في الواقع المناقصة. 101 00:05:03,940 --> 00:05:05,450 >> وماذا يمكن أن يكون؟ 102 00:05:05,450 --> 00:05:07,950 حسنا، دعونا نلقي نظرة على، ربما، وهو برنامج بسيط. 103 00:05:07,950 --> 00:05:11,190 انا ذاهب الى المضي قدما وحفظ هذا في ملف يسمى عمدا buggy0.c، 104 00:05:11,190 --> 00:05:13,590 لأنني أعلم أنه ل تكون معيبة مقدما. 105 00:05:13,590 --> 00:05:17,400 ولكني قد لا يدركون أنه إذا كان هذا هو البرنامج الأول أو الثاني أو الثالث 106 00:05:17,400 --> 00:05:18,830 انني في الواقع جعل نفسي. 107 00:05:18,830 --> 00:05:23,820 لذلك أنا ذاهب إلى المضي قدما و اكتب بها، كثافة العمليات الرئيسي (الفراغ). 108 00:05:23,820 --> 00:05:28,130 ثم داخل بلدي الأقواس المعقوفة، مألوفة جدا ( "مرحبا، world-- 109 00:05:28,130 --> 00:05:30,980 مائل، ن ") - ومنقوطة. 110 00:05:30,980 --> 00:05:32,360 >> أنا قد قمت بحفظ الملف. 111 00:05:32,360 --> 00:05:34,850 الآن انا ذاهب الى النزول لنافذتي المحطة 112 00:05:34,850 --> 00:05:40,340 ونوع جعل buggy0، لأنه، مرة أخرى، اسم الملف اليوم هو buggy0.c. 113 00:05:40,340 --> 00:05:43,660 لذلك أنا اكتب جعل buggy0، أدخل. 114 00:05:43,660 --> 00:05:48,200 >> و، أوه، يا الهي، أذكر من آخر مرة عدم وجود رسائل الخطأ هو شيء جيد. 115 00:05:48,200 --> 00:05:49,740 لذلك لا الإخراج هو شيء جيد. 116 00:05:49,740 --> 00:05:52,920 ولكن هنا لا بد لي بوضوح بعض عدد من الأخطاء. 117 00:05:52,920 --> 00:05:56,470 >> حتى السطر الأول من الانتاج بعد كتابة جعل buggy0، أذكر، 118 00:05:56,470 --> 00:05:59,540 يتم إخراج رنة ومطول إلى حد ما. 119 00:05:59,540 --> 00:06:02,067 تحت غطاء محرك السيارة، تم تكوين IDE CS50 120 00:06:02,067 --> 00:06:04,150 لاستخدام مجموعة كاملة من خيارات مع هذا المترجم 121 00:06:04,150 --> 00:06:05,941 بحيث لم يكن لديك للتفكير فيها. 122 00:06:05,941 --> 00:06:08,840 وهذا كل ما السطر الأول الوسائل التي تبدأ مع رنة. 123 00:06:08,840 --> 00:06:11,720 >> ولكن بعد ذلك، والمشاكل البدء في جعل مظهرهم. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c على السطر 3، شخصية 5، هناك خطأ حمراء كبيرة. 125 00:06:17,390 --> 00:06:18,380 ما هذا؟ 126 00:06:18,380 --> 00:06:23,562 يعلن ضمنا وظيفة المكتبة printf مع نوع int (CONST شار *، 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 أعني، أنه بسرعة كبيرة يحصل غامضة جدا. 129 00:06:28,379 --> 00:06:30,170 وبالتأكيد، في البداية لمحة، ونحن لن 130 00:06:30,170 --> 00:06:32,380 أتوقع منك أن نفهم مجمل تلك الرسالة. 131 00:06:32,380 --> 00:06:34,213 وحتى واحد من الدروس لهذا اليوم يسير 132 00:06:34,213 --> 00:06:36,919 أن تكون في محاولة لاحظت أنماط، أو أشياء مماثلة، 133 00:06:36,919 --> 00:06:38,960 إلى أخطاء قد تكون لديكم واجهت في الماضي. 134 00:06:38,960 --> 00:06:41,335 لذلك دعونا ندف بعيدا فقط تلك الكلمات التي تبدو مألوفة. 135 00:06:41,335 --> 00:06:44,290 و، خطأ أحمر كبير هو واضح رمزية من شيء يجري على خطأ. 136 00:06:44,290 --> 00:06:47,940 >> يعلن ضمنا مكتبة وظيفة printf. 137 00:06:47,940 --> 00:06:51,680 لذلك حتى لو كنت لا أفهم تماما ما يعلن ضمنا وظيفة المكتبة 138 00:06:51,680 --> 00:06:54,900 الوسائل، والمشكلة بالتأكيد يتصل printf بطريقة أو بأخرى. 139 00:06:54,900 --> 00:06:59,130 ومصدر هذه المسألة لديها ما تفعله مع إعلانها. 140 00:06:59,130 --> 00:07:02,440 >> إعلان الوظيفة يذكر أنه للمرة الأولى. 141 00:07:02,440 --> 00:07:06,210 واستخدمنا المصطلحات الأسبوع الماضي إعلان نموذج وظيفة، و 142 00:07:06,210 --> 00:07:11,860 إما مع سطر واحد في أعلى صفحتك الملف الخاص أو في ما يسمى ملف الرأس. 143 00:07:11,860 --> 00:07:15,300 وفي ما فعله ملف نقول الاسبوع الماضي ان printf هو الاقتباس، 144 00:07:15,300 --> 00:07:17,080 قوسي، أعلن؟ 145 00:07:17,080 --> 00:07:20,950 في ملف ما هو النموذج الأولي؟ 146 00:07:20,950 --> 00:07:24,640 >> حتى إذا كنت تذكر، وأول شيء أنا المكتوب، وتقريبا كل برنامج آخر time-- 147 00:07:24,640 --> 00:07:30,790 وبالصدفة لحظة منذ بدأ كتابة myself-- كان هذا here-- واحد 148 00:07:30,790 --> 00:07:38,630 hash-- # تشمل 00:07:41,860 إذا أنا الآن حفظ هذا الملف، وانا ذاهب المضي قدما واضحة شاشتي، 150 00:07:41,860 --> 00:07:44,740 الذي يمكنك القيام به عن طريق كتابة واضح، أو يمكنك اجراء مراقبة L، 151 00:07:44,740 --> 00:07:47,680 فقط لمسح إطار المحطة الطرفية الخاصة بك فقط للقضاء على بعض الفوضى. 152 00:07:47,680 --> 00:07:51,370 >> انا ذاهب الى المضي قدما و إعادة نوع جعل buggy0، أدخل. 153 00:07:51,370 --> 00:07:53,790 وفويلا، ما زلت أرى أن قيادة طويلة من رنة، 154 00:07:53,790 --> 00:07:55,470 ولكن ليس هناك رسالة الخطأ هذه المرة. 155 00:07:55,470 --> 00:07:58,800 وبالفعل، إذا كنت تفعل ./buggy0، تماما مثل المرة السابقة، 156 00:07:58,800 --> 00:08:01,860 حيث نقطة يعني هذا دليل، القطع يعني فقط، 157 00:08:01,860 --> 00:08:05,040 هنا يأتي اسم البرنامج و أن اسم البرنامج هو buggy0، 158 00:08:05,040 --> 00:08:07,340 أدخل "مرحبا، العالم". 159 00:08:07,340 --> 00:08:09,440 >> الآن، كيف يمكن أن يكون لديك استقاها هذا الحل 160 00:08:09,440 --> 00:08:12,017 دون بالضرورة الاعتراف العديد من الكلمات 161 00:08:12,017 --> 00:08:14,350 كما فعلت، بالتأكيد، وجود فعلت ذلك لسنوات عديدة؟ 162 00:08:14,350 --> 00:08:18,720 حسنا، وتحقيق في المشكلة الأولى مجموعة، ونحن نقدم لك أمر 163 00:08:18,720 --> 00:08:21,175 أن الموظفين CS50 نفسه كتب دعا help50. 164 00:08:21,175 --> 00:08:24,300 وبالفعل، C يفعل مواصفات حددت المشكلة في كيفية استخدام هذا. 165 00:08:24,300 --> 00:08:27,210 >> ولكن help50 أساسا برنامج الموظفين CS50 ل 166 00:08:27,210 --> 00:08:30,850 كتب التي تسمح لك بتشغيل أمر أو تشغيل برنامج، 167 00:08:30,850 --> 00:08:36,169 وإذا كنت لا أفهم ل الإخراج، لتمرير انتاجها الى help50، 168 00:08:36,169 --> 00:08:38,890 وعند هذه النقطة البرنامج أن كتب موظفي بالطبع ل 169 00:08:38,890 --> 00:08:42,429 سوف ننظر في انتاج برنامج الخاص بك سطرا سطرا، حرفا بحرف. 170 00:08:42,429 --> 00:08:46,000 وإذا كنا، والموظفين، والتعرف على رسالة الخطأ التي تواجهها، 171 00:08:46,000 --> 00:08:50,580 وسوف نحاول أن تثير لكم مع بعض أسئلة بلاغية، مع بعض النصائح، 172 00:08:50,580 --> 00:08:54,890 مثل الكثير من TF أو CA أو نفسي أن تفعل شخصيا في ساعات العمل. 173 00:08:54,890 --> 00:08:58,320 >> فانظر إلى help50 إذا كنت لا تعترف بالضرورة مشكلة. 174 00:08:58,320 --> 00:09:00,790 ولكن لا تعتمد عليه كثيرا كما عكاز. 175 00:09:00,790 --> 00:09:03,990 بالتأكيد محاولة لفهم لها الانتاج ومن ثم نتعلم منها 176 00:09:03,990 --> 00:09:07,571 بحيث مرة واحدة فقط أو مرتين هل من أي وقت مضى تشغيل help50 لخطأ معين 177 00:09:07,571 --> 00:09:08,070 الرسالة. 178 00:09:08,070 --> 00:09:10,660 بعد ذلك، يجب أن تكون أفضل تجهيزا نفسك 179 00:09:10,660 --> 00:09:13,180 لمعرفة ما هو عليه في الواقع. 180 00:09:13,180 --> 00:09:14,350 >> دعونا نفعل الآخر هنا. 181 00:09:14,350 --> 00:09:20,410 اسمحوا لي أن المضي قدما، وآخر ملف وسوف ندعو هذا buggy1.c. 182 00:09:20,410 --> 00:09:23,110 وفي هذا الملف أنا الذهاب إلى deliberately-- 183 00:09:23,110 --> 00:09:26,330 ولكن التظاهر بأنني لا فهم ما الخطأ التي أخرجتها. 184 00:09:26,330 --> 00:09:31,420 >> انا ذاهب الى المضي قدما والقيام this-- # تشمل، منذ لدي 185 00:09:31,420 --> 00:09:33,660 تعلمت الدرس من قبل لحظة. 186 00:09:33,660 --> 00:09:36,220 كثافة العمليات الرئيسي (الفراغ)، كما كان من قبل. 187 00:09:36,220 --> 00:09:40,880 ثم هنا انا ذاهب للقيام سلسلة ق - get_string. 188 00:09:40,880 --> 00:09:43,770 ونذكر من المرة الأخيرة التي يعني ذلك، مهلا، الكمبيوتر، 189 00:09:43,770 --> 00:09:48,280 تعطيني متغير، الذي يطلق عليه ق، و جعل نوع هذا المتغير سلسلة 190 00:09:48,280 --> 00:09:50,150 حتى أتمكن من تخزين واحدة أو أكثر من الكلمات في ذلك. 191 00:09:50,150 --> 00:09:52,191 >> ثم على الجانب الأيمن جانب من علامة المساواة 192 00:09:52,191 --> 00:09:54,980 وget_string، وهو وظيفة في مكتبة CS50 193 00:09:54,980 --> 00:09:55,980 أن يفعل ذلك بالضبط. 194 00:09:55,980 --> 00:09:59,740 فإنه يحصل على وظيفة ثم يد من اليمين إلى اليسار. 195 00:09:59,740 --> 00:10:02,670 ولذلك فإن هذا علامة المساواة لا تعني "يساوي" كما قد نعتقد في الرياضيات. 196 00:10:02,670 --> 00:10:04,750 وهذا يعني تكليف من اليمين إلى اليسار. 197 00:10:04,750 --> 00:10:09,640 لذلك هذا يعني، واتخاذ سلسلة من المستخدم وتخزينها داخل الصورة. 198 00:10:09,640 --> 00:10:10,460 >> الآن دعونا استخدامه. 199 00:10:10,460 --> 00:10:13,820 اسمحوا لي أن المضي قدما الآن وكلغة ثانية الخط، واسمحوا لي أن تمضي قدما ويقول "مرحبا" - 200 00:10:13,820 --> 00:10:19,330 ليس "العالم"، ولكن "مرحبا،٪ s-- وليس لدينا نائبا، فاصلة الصورة، 201 00:10:19,330 --> 00:10:22,030 وهو متغير لدينا، ثم منقوطة. 202 00:10:22,030 --> 00:10:26,070 حتى إذا لم أكن المسمار كثيرا هنا، هذا يبدو وكأنه رمز الصحيح. 203 00:10:26,070 --> 00:10:28,090 >> وبلدي الغرائز الآن هي ترجمة عليه. 204 00:10:28,090 --> 00:10:30,400 يتم استدعاء الملف buggy1.c. 205 00:10:30,400 --> 00:10:33,770 لذلك أنا ذاهب الى القيام به جعل buggy1، أدخل. 206 00:10:33,770 --> 00:10:36,377 والرتق، أنه، إذا لم يكن هناك حتى المزيد من الأخطاء من قبل. 207 00:10:36,377 --> 00:10:38,210 أعني، هناك المزيد رسائل الخطأ أنه سيكون 208 00:10:38,210 --> 00:10:40,400 يبدو من خطوط الفعلية في هذا البرنامج. 209 00:10:40,400 --> 00:10:42,730 >> ولكن الوجبات الجاهزة هنا، حتى لو كنت غارقة 210 00:10:42,730 --> 00:10:45,040 مع اثنين أو ثلاثة أو أربع رسائل الخطأ أكثر، 211 00:10:45,040 --> 00:10:48,340 نركز دائما على جدا أول هذه الرسائل. 212 00:10:48,340 --> 00:10:52,220 وعند النظر إلى أعلى أكثر واحد، التمرير احتياطية حسب الحاجة. 213 00:10:52,220 --> 00:10:53,930 حتى هنا أنا كتبته جعل buggy1. 214 00:10:53,930 --> 00:10:55,700 وهنا أن الناتج رنة كما هو متوقع. 215 00:10:55,700 --> 00:10:57,290 >> وهنا أول خطأ أحمر. 216 00:10:57,290 --> 00:11:02,370 استخدام المعرف غير معروفة سلسلة، لم أقصد مستوى في؟ 217 00:11:02,370 --> 00:11:04,260 حتى في هو معيار في الواقع شيء آخر. 218 00:11:04,260 --> 00:11:06,240 وهو يشير إلى المستخدم لوحة المفاتيح، أساسا. 219 00:11:06,240 --> 00:11:08,080 >> ولكن ليس هذا ما قصدته. 220 00:11:08,080 --> 00:11:11,770 قصدته سلسلة، وقصدته get_string. 221 00:11:11,770 --> 00:11:16,200 فما هو أنني نسيت أن تفعل هذه المرة؟ 222 00:11:16,200 --> 00:11:20,230 ما هو مفقود في هذه المرة؟ 223 00:11:20,230 --> 00:11:23,600 عندي # تشمل، لذلك ليس لدي الوصول إلى printf. 224 00:11:23,600 --> 00:11:26,090 >> ولكن ما يمكنني يكن لديك الوصول إلى فقط حتى الآن؟ 225 00:11:26,090 --> 00:11:29,420 حسنا، تماما مثل المرة السابقة، ولست بحاجة لنقول للمترجم 226 00:11:29,420 --> 00:11:31,691 رنة ما هي هذه الوظائف. 227 00:11:31,691 --> 00:11:33,940 Get_string لا يأتي مع جيم وعلى وجه الخصوص، فإنه 228 00:11:33,940 --> 00:11:38,160 لا يأتي في رأس ملف. 229 00:11:38,160 --> 00:11:40,770 بدلا من ذلك يأتي في شيء كتب الموظفين، 230 00:11:40,770 --> 00:11:44,176 وهو ملف مختلف اسم لكن اسم على مسمى. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> ذلك ببساطة عن طريق مشيرا الى ان خط واحد من استدعاء code-- من آخر مرة 233 00:11:50,861 --> 00:11:53,610 أنه عندما يعمل رنة، انها تسير للنظر في قانون بلدي أعلى إلى أسفل، 234 00:11:53,610 --> 00:11:54,193 من اليسار إلى اليمين. 235 00:11:54,193 --> 00:11:57,200 انها سوف تلاحظ، أوه، أنت تريد. 236 00:11:57,200 --> 00:11:59,900 اسمحوا لي ان اذهب وتجد أن، أينما كان على الخادم، 237 00:11:59,900 --> 00:12:03,090 نسخه ولصقه، أساسا، في الجزء العلوي من الملف الخاص بك 238 00:12:03,090 --> 00:12:06,820 ذلك أنه عند هذه النقطة في القصة، خط 1، والباقي من البرنامج 239 00:12:06,820 --> 00:12:11,651 يمكن، في الواقع، استخدام أي من وظائف فيها، من بينها get_string. 240 00:12:11,651 --> 00:12:13,650 لذلك أنا ذاهب إلى تجاهل ما تبقى من تلك الأخطاء، 241 00:12:13,650 --> 00:12:17,190 لأنني، في الواقع، أظن أن فقط يهم أول واحد في الواقع. 242 00:12:17,190 --> 00:12:20,780 وانا ذاهب الى المضي قدما واعادة، بعد حفظ الملف الخاص بي جعل buggy1. 243 00:12:20,780 --> 00:12:22,580 وفويلا، فعلت العمل. 244 00:12:22,580 --> 00:12:29,200 وإذا كنت تفعل ./buggy1 واكتب في، ل سبيل المثال، Zamyla، وأنا الآن سوف تحصل مرحبا، 245 00:12:29,200 --> 00:12:32,000 Zamyla، بدلا من مرحبا، العالم. 246 00:12:32,000 --> 00:12:32,550 >> حسنا. 247 00:12:32,550 --> 00:12:35,890 ولذلك فإن الوجبات السريعة هنا ثم ل، واحد، في محاولة لجمع ما يصل الى يمكنك 248 00:12:35,890 --> 00:12:39,140 من رسائل الخطأ وحده، وتبحث في بعض الكلمات المعروفة. 249 00:12:39,140 --> 00:12:43,070 باستثناء ذلك، استخدم help50 في مشكلة تعيين مواصفات. 250 00:12:43,070 --> 00:12:46,500 ولكن باستثناء ذلك، أيضا، أن ننظر دائما في خطأ كبير فقط، على الأقل 251 00:12:46,500 --> 00:12:50,051 في البداية، لمعرفة ما هي المعلومات قد تسفر في الواقع. 252 00:12:50,051 --> 00:12:52,300 ولكن تبين هناك ل المزيد من الوظائف بنيت 253 00:12:52,300 --> 00:12:55,030 في مكتبة CS50 للمساعدة كنت في وقت مبكر من الفصل الدراسي 254 00:12:55,030 --> 00:12:57,580 وفي وقت مبكر في البرمجة معرفة ما يحدث خطأ. 255 00:12:57,580 --> 00:12:59,840 لذلك دعونا نفعل مثال آخر هنا. 256 00:12:59,840 --> 00:13:04,350 أنا ذاهب لاستدعاء هذا buggy2، التي، مرة أخرى، سوف تكون معيبة من 257 00:13:04,350 --> 00:13:05,650 من البوابة، حسب التصميم. 258 00:13:05,650 --> 00:13:09,980 >> وانا ذاهب الى المضي قدما والقيام # تشمل. 259 00:13:09,980 --> 00:13:12,580 ثم انا ذاهب الى القيام به كثافة العمليات الرئيسي (الفراغ). 260 00:13:12,580 --> 00:13:14,840 ثم انا ذاهب الى القيام به لحلقة. 261 00:13:14,840 --> 00:13:16,690 ل(كثافة العمليات ط _ 0. 262 00:13:16,690 --> 00:13:18,750 أنا أقل من أو يساوي 10. 263 00:13:18,750 --> 00:13:24,260 ط ++، وبعد ذلك في الأقواس المجعدة، وانا ذاهب لطباعة مجرد رمز الهاشتاج هنا 264 00:13:24,260 --> 00:13:25,920 وحرف سطر جديد. 265 00:13:25,920 --> 00:13:29,220 >> حتى نية لي مع هذا البرنامج هو بكل بساطة 266 00:13:29,220 --> 00:13:33,150 تكرار 10 مرات وعلى كل التكرار 267 00:13:33,150 --> 00:13:35,260 من تلك الحلقة في كل مرة خلال الدورة، 268 00:13:35,260 --> 00:13:37,660 طباعة علامة التصنيف، علامة التصنيف، وهي علامة التصنيف. 269 00:13:37,660 --> 00:13:40,480 في سطر واحد لأنني لدينا خط جديد هناك. 270 00:13:40,480 --> 00:13:42,787 وأذكر أن ل حلقة، في week-- آخر 271 00:13:42,787 --> 00:13:44,620 وستحصل على أكثر على دراية بناء الجملة 272 00:13:44,620 --> 00:13:47,170 عن طريق استخدامه مع الممارسة قبل long-- هذا يعطيني 273 00:13:47,170 --> 00:13:49,740 متغير دعوت ويحدد إلى 0. 274 00:13:49,740 --> 00:13:52,650 >> هذه الزيادات انا على كل التكرار بمقدار 1. 275 00:13:52,650 --> 00:13:54,940 لذلك أنا يذهب إلى 1 2-3. 276 00:13:54,940 --> 00:13:57,690 ثم هذا الشرط في وسط بين شبه كولون 277 00:13:57,690 --> 00:14:03,010 يحصل فحص على كل التكرار لجعل تأكد من أننا ما زلنا ضمن النطاق. 278 00:14:03,010 --> 00:14:06,830 لذلك أريد أن تكرار 10 مرات، لذلك أنا يكون حدسي نوع من جدا فقط 279 00:14:06,830 --> 00:14:09,070 وضع 10 كما بلدي الحد الأعلى هناك. 280 00:14:09,070 --> 00:14:14,310 >> ومع ذلك، عند تشغيل هذا، بعد تجميع مع جعل buggy2-- 281 00:14:14,310 --> 00:14:15,440 وأنه لا تجميع موافق. 282 00:14:15,440 --> 00:14:17,980 لذلك أنا لم يكن لديك خطأ في بناء الجملة هذا الوقت. 283 00:14:17,980 --> 00:14:20,940 اسمحوا لي أن المضي قدما الآن وتشغيل buggy2، أدخل. 284 00:14:20,940 --> 00:14:22,620 وانتقل الآن ما يصل. 285 00:14:22,620 --> 00:14:24,890 واسمحوا لي أن زيادة حجم النافذة. 286 00:14:24,890 --> 00:14:33,720 >> ويبدو لي ان 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، 11. 287 00:14:33,720 --> 00:14:38,891 ولذلك لا يوجد 11 الهاش، على الرغم من أنا وضعت بوضوح 10 داخل هذه الحلقة. 288 00:14:38,891 --> 00:14:42,140 الآن، البعض منكم قد نرى على الفور ما هو الخطأ لأنه، في الواقع، هذا 289 00:14:42,140 --> 00:14:43,720 ليس خطأ من الصعب جدا القيام بها. 290 00:14:43,720 --> 00:14:46,070 ولكن من الشائع جدا قدمت في وقت مبكر جدا. 291 00:14:46,070 --> 00:14:49,820 >> ما أريد أن أشير، على الرغم من هو، كيف يمكن لي هذا الرقم؟ 292 00:14:49,820 --> 00:14:52,300 حسنا، اتضح أن يأتي مكتبة CS50 293 00:14:52,300 --> 00:14:55,380 ليس فقط get_string وget_int وget_float وغيرها من المهام. 294 00:14:55,380 --> 00:14:59,980 كما يأتي مع وظيفة خاصة دعا eprintf، أو خطأ printf. 295 00:14:59,980 --> 00:15:03,270 وكان موجودا فقط لجعل انها أسهل قليلا بالنسبة لك 296 00:15:03,270 --> 00:15:06,310 عند تصحيح التعليمات البرمجية للتو طباعة رسالة خطأ على الشاشة 297 00:15:06,310 --> 00:15:07,850 ونعلم من أين جاء. 298 00:15:07,850 --> 00:15:11,000 >> هكذا على سبيل المثال، هناك شيء واحد أنا قد تفعل هنا مع هذه الوظيفة this-- 299 00:15:11,000 --> 00:15:20,230 eprintf، ثم انا ذاهب الى المضي قدما ويقول أنا الآن٪ ط، مائل، ن. 300 00:15:20,230 --> 00:15:22,330 وانا ذاهب الى سد العجز في قيمة ط. 301 00:15:22,330 --> 00:15:25,400 ويصل أعلى، لأن هذا في مكتبة CS50، 302 00:15:25,400 --> 00:15:27,580 انا ذاهب الى المضي قدما وتشمل 303 00:15:27,580 --> 00:15:29,169 لذلك أنا الحصول على هذه الوظيفة. 304 00:15:29,169 --> 00:15:31,460 ولكن دعونا نتأمل ما سطر ومن المفترض أن تقوم به 9. 305 00:15:31,460 --> 00:15:32,670 انا ذاهب الى حذف هذا في نهاية المطاف. 306 00:15:32,670 --> 00:15:34,670 هذا لا علاقة له مع هدفي الأسمى. 307 00:15:34,670 --> 00:15:39,090 لكن eprintf، خطأ printf، ويعني فقط أن تعطيني بعض المعلومات التشخيصية. 308 00:15:39,090 --> 00:15:42,460 عند تشغيل برنامج بلدي، وأنا أريد أن نرى هذا على الشاشة مؤقتا 309 00:15:42,460 --> 00:15:44,550 كذلك فقط لفهم ماذا يحدث هنا. 310 00:15:44,550 --> 00:15:47,330 >> و، في الواقع، على كل التكرار هنا من خط 9 311 00:15:47,330 --> 00:15:49,260 أريد أن أرى، ما هي قيمة ط؟ 312 00:15:49,260 --> 00:15:50,290 ما هي قيمة ط؟ 313 00:15:50,290 --> 00:15:51,280 ما هي قيمة ط؟ 314 00:15:51,280 --> 00:15:55,650 ونأمل، ينبغي لي فقط نرى أن الرسالة، أيضا، 10 مرات. 315 00:15:55,650 --> 00:15:57,780 >> لذلك اسمحوا لي المضي قدما و إعادة ترجمة برنامجي، 316 00:15:57,780 --> 00:15:59,905 كما يجب أن أقوم به في أي وقت أقوم بإجراء التغيير. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 والآن-- موافق. 319 00:16:03,640 --> 00:16:04,820 هناك الكثير مما يحدث على. 320 00:16:04,820 --> 00:16:07,610 لذلك اسمحوا لي انتقل لأعلى في نافذة أكبر. 321 00:16:07,610 --> 00:16:10,190 >> وسترى أن كل من والهاش لا يزال الطباعة. 322 00:16:10,190 --> 00:16:15,270 ولكن بين كل منهم هو الآن هذا الناتج التشخيص تنسيق على النحو التالي. 323 00:16:15,270 --> 00:16:17,960 اسم برنامجي هنا هو buggy2. 324 00:16:17,960 --> 00:16:20,432 اسم الملف هو buggy2.c. 325 00:16:20,432 --> 00:16:24,080 رقم السطر الذي وقد طبع هذا هو خط 9. 326 00:16:24,080 --> 00:16:27,500 وثم إلى اليمين من ذلك هو رسالة الخطأ التي أتوقع. 327 00:16:27,500 --> 00:16:30,701 >> وما هو جميل في هذا هو أن الآن ليس لدي لحساب بالضرورة 328 00:16:30,701 --> 00:16:32,200 في رأسي ما برنامجي يقوم به. 329 00:16:32,200 --> 00:16:34,240 أستطيع أن أرى أن على أول التكرار ط 0، 330 00:16:34,240 --> 00:16:39,420 ثم 1 ثم 2 ثم 3 ثم 4، ثم 5 ثم 6 ثم 7، ثم 8 ثم 9 ثم 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 لذا انتظر لحظة. 333 00:16:42,050 --> 00:16:43,740 ما الذي يحدث هنا؟ 334 00:16:43,740 --> 00:16:48,190 ما زلت يبدو أن العد كما تهدف تصل إلى 10. 335 00:16:48,190 --> 00:16:50,550 >> ولكن من أين أبدأ؟ 336 00:16:50,550 --> 00:16:53,240 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 10. 337 00:16:53,240 --> 00:16:58,040 لذلك 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، 10-- الاصبع ال11 338 00:16:58,040 --> 00:16:59,990 يدل على المشكلة. 339 00:16:59,990 --> 00:17:02,850 ويبدو لي أن تحسب بشكل غير صحيح في بلدي حلقة. 340 00:17:02,850 --> 00:17:06,599 بدلا من الذهاب 10 تكرارات، أنا بدأت في 0، 341 00:17:06,599 --> 00:17:09,550 أنا تنتهي عند وإلى 10. 342 00:17:09,550 --> 00:17:12,030 ولكن لأنه، مثل الكمبيوتر، أنا بدأت العد في 0، 343 00:17:12,030 --> 00:17:15,250 وأرجو أن العد حتى ، ولكن ليس من خلال، 10. 344 00:17:15,250 --> 00:17:18,510 >> وهكذا الإصلاح، وأنا في نهاية المطاف أدركت هنا، هو واحد من أمرين. 345 00:17:18,510 --> 00:17:22,430 ويمكنني أن أقول ببساطة شديدة العد حتى إلى أقل من 10. 346 00:17:22,430 --> 00:17:27,260 لذلك 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، الذي هو، في الواقع، صحيح، 347 00:17:27,260 --> 00:17:28,900 على الرغم من أنه يبدو قليلا خاطئ. 348 00:17:28,900 --> 00:17:35,070 أو يمكن أن أفعله أقل من أو يساوي إلى 9، طالما أن أبدأ في 0. 349 00:17:35,070 --> 00:17:40,056 أو إذا كنت حقا لا أحب ذلك، ل يمكن أن العد حتى من خلال 10 ولكن تبدأ في 1. 350 00:17:40,056 --> 00:17:41,680 ولكن مرة أخرى، هذه ليست مجرد أن المشترك. 351 00:17:41,680 --> 00:17:43,977 في programming-- ولو وليس ذلك بكثير في Scratch-- 352 00:17:43,977 --> 00:17:45,810 ولكن في البرمجة في C وغيرها من اللغات، 353 00:17:45,810 --> 00:17:47,670 مثل جافا سكريبت و الثعبان وغيرها، انها 354 00:17:47,670 --> 00:17:49,880 مجرد شائعة جدا ل مناقشتنا للثنائي 355 00:17:49,880 --> 00:17:53,450 لنبدأ العد في أقل عدد استطعت، الذي هو 0. 356 00:17:53,450 --> 00:17:53,950 حسنا. 357 00:17:53,950 --> 00:17:55,160 لذلك أن eprintf. 358 00:17:55,160 --> 00:17:58,600 ومرة أخرى، والآن بعد أن كنت أحسب بلدي المشكلة، وانا ذاهب للذهاب إلى 0 359 00:17:58,600 --> 00:18:01,470 خلال أقل من 10، وانا ذاهب للذهاب في وحذف eprintf. 360 00:18:01,470 --> 00:18:04,580 >> لا ينبغي أن يكون هناك عندما كنت السفينة قانون بلدي أو تقديم قانون بلدي 361 00:18:04,580 --> 00:18:05,800 أو تبين أنها لشخص آخر. 362 00:18:05,800 --> 00:18:07,980 انها حقا يعني فقط لاستخدامها مؤقتا. 363 00:18:07,980 --> 00:18:11,650 ولكن الآن لقد حددت هذه مشكلة معينة أيضا. 364 00:18:11,650 --> 00:18:16,780 >> حسنا، دعونا نفعل مثالا آخر هنا أنني ذاهب لاثارة على النحو التالي. 365 00:18:16,780 --> 00:18:22,850 انا ذاهب الى المضي قدما و #تتضمن . 50 $ 366 00:18:22,850 --> 00:18:25,580 وانا ذاهب الى المضي قدما وتتضمن #. 367 00:18:25,580 --> 00:18:29,030 >> وانا ذاهب لإنقاذ هذا الملف كما buggy3.c. 368 00:18:29,030 --> 00:18:31,740 وانا ذاهب الى المضي قدما وتعلن كثافة العمليات الرئيسي (الفراغ). 369 00:18:31,740 --> 00:18:34,186 وبعد ذلك داخل هناك انا ذاهب الى القيام به كثافة العمليات ط _ - 370 00:18:34,186 --> 00:18:36,435 أريد أن تنفيذ برنامج مع get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 هذه ليست وظيفة موجودة حتى الان. 373 00:18:40,770 --> 00:18:42,870 لذلك نحن ذاهبون لتنفيذ في لحظة فقط. 374 00:18:42,870 --> 00:18:45,541 ولكن نحن في طريقنا لمعرفة السبب انها عربات التي تجرها الدواب عند مرور الأول. 375 00:18:45,541 --> 00:18:47,290 ومرة واحدة لقد حصلت عدد صحيح من المستخدم، 376 00:18:47,290 --> 00:18:53,365 أنا ذاهب لمجرد طباعة٪ i غير سلبي صحيح، مائل، ن، فاصلة، ط. 377 00:18:53,365 --> 00:18:55,240 وبعبارة أخرى، كل ما تريد هذا البرنامج للقيام 378 00:18:55,240 --> 00:18:58,000 والحصول على كثافة العمليات السلبية من المستخدم ثم بطباعة 379 00:18:58,000 --> 00:18:59,980 أن كذا وكذا هو الباحث السلبي. 380 00:18:59,980 --> 00:19:02,080 >> الان انا بحاجة لتنفيذ هذه المهمة. 381 00:19:02,080 --> 00:19:05,740 لذلك في وقت لاحق في الملف الخاص بي، وانا ذاهب للذهاب قبل وإعلان وظيفة دعا 382 00:19:05,740 --> 00:19:10,670 get_negative_int (الفراغ) - ونحن سوف أعود إلى ما يعنيه هذا الخط مرة أخرى 383 00:19:10,670 --> 00:19:18,790 في اللحظات، الباحث ن. do-- افعل وfollowing-- printf ن هو :. 384 00:19:18,790 --> 00:19:26,210 ثم انا ذاهب الى القيام ن - get_int، والقيام بذلك في حين أن n أكبر من 0. 385 00:19:26,210 --> 00:19:28,310 ثم يعود ن ؛. 386 00:19:28,310 --> 00:19:31,730 >> لذلك هناك الكثير مما يجري في هذا ولكن أيا منها لم نكن 387 00:19:31,730 --> 00:19:33,710 ننظر في الأسبوع الماضي، على الأقل لفترة وجيزة. 388 00:19:33,710 --> 00:19:36,980 لذلك على خط 10 هنا لقد أعلن وظيفة تسمى get_negative_int، 389 00:19:36,980 --> 00:19:39,620 ولقد وضعت (الفراغ)، في بين قوسين، والسبب هو هذا 390 00:19:39,620 --> 00:19:40,950 لا يأخذ الإدخال. 391 00:19:40,950 --> 00:19:42,910 أنا لا يمر أي شيء لهذه المهمة. 392 00:19:42,910 --> 00:19:44,690 أنا مجرد الحصول على شيء يعود منه. 393 00:19:44,690 --> 00:19:47,270 >> وما أنا على أمل أن نعود هو عدد صحيح. 394 00:19:47,270 --> 00:19:50,040 لا يوجد أي نوع البيانات في يسمى C negative_int. 395 00:19:50,040 --> 00:19:52,880 انها كثافة العمليات فقط، لذلك يجري أن علينا أن نتأكد من 396 00:19:52,880 --> 00:19:55,340 أن قيمة هذا في الواقع عاد ليس فقط عدد صحيح 397 00:19:55,340 --> 00:19:56,380 وإنما هو أيضا سلبية. 398 00:19:56,380 --> 00:20:02,150 >> على خط 12 أنا إعلان متغير دعا ن وجعله من نوع int. 399 00:20:02,150 --> 00:20:07,500 ثم في خط 13 إلى 18 أنا تفعل شيئا في حين أن هناك شيئا صحيحا. 400 00:20:07,500 --> 00:20:11,040 أنا ذاهب إلى الأمام والطباعة ن غير والقولون، وبعد ذلك الفضاء، 401 00:20:11,040 --> 00:20:12,800 مثل موجه للمستخدم. 402 00:20:12,800 --> 00:20:16,410 >> أنا ثم استدعاء get_int و تخزين ما يسمى قيمة عودتها 403 00:20:16,410 --> 00:20:18,130 في هذا المتغير ن. 404 00:20:18,130 --> 00:20:22,600 ولكن انا ذاهب للحفاظ على القيام هذا في حين أن n أكبر من 0. 405 00:20:22,600 --> 00:20:27,960 وبعبارة أخرى، إذا كان المستخدم يعطيني كثافة العمليات، وهذا العدد أكبر من 0، 406 00:20:27,960 --> 00:20:31,180 إرجو، سواء كان إيجابيا، وانا ذاهب ل تبقي فقط reprompting المستخدم، 407 00:20:31,180 --> 00:20:37,160 الحفاظ reprompting، من خلال إجبارهم على التعاون وتعطيني الباحث السلبي. 408 00:20:37,160 --> 00:20:41,640 >> ومرة واحدة ن هو في الواقع negative-- لنفترض أن المستخدم أخيرا أنواع -50، 409 00:20:41,640 --> 00:20:46,710 ثم هذه الحلقة في حين لم تعد حقيقية لأن -50 ليس أكبر من 0. 410 00:20:46,710 --> 00:20:51,140 ولذا فإننا الخروج من ذلك حلقة منطقيا والعودة ن. 411 00:20:51,140 --> 00:20:53,520 >> ولكن هناك واحد آخر شيء يجب أن أقوم به. 412 00:20:53,520 --> 00:20:56,190 وأستطيع أن مجرد القيام بذلك بواسطة النسخ واللصق 413 00:20:56,190 --> 00:20:58,540 سطر واحد من التعليمات البرمجية في الجزء العلوي من الملف. 414 00:20:58,540 --> 00:21:01,630 ولست بحاجة لتعليم رنة، أو نعد لرنة، 415 00:21:01,630 --> 00:21:04,630 صراحة بأنني سوف، في الواقع، انتقل وتنفيذ 416 00:21:04,630 --> 00:21:06,020 هذه وظيفة get_negative_int. 417 00:21:06,020 --> 00:21:07,674 قد يكون مجرد انخفاض في الملف. 418 00:21:07,674 --> 00:21:09,840 مرة أخرى، أذكر أن رنة يقرأ أشياء أعلى إلى أسفل، 419 00:21:09,840 --> 00:21:12,330 من اليسار إلى اليمين، لذلك لا يمكن استدعاء دالة إذا رنة 420 00:21:12,330 --> 00:21:15,330 لا يعرف انه سيكون في الوجود. 421 00:21:15,330 --> 00:21:18,430 >> الآن، للأسف، هذا البرنامج، كما أن البعض منكم قد لاحظت، 422 00:21:18,430 --> 00:21:19,590 هو عربات التي تجرها الدواب بالفعل. 423 00:21:19,590 --> 00:21:21,400 اسمحوا لي أن المضي قدما وجعل buggy3. 424 00:21:21,400 --> 00:21:26,904 وتجمع، حتى مشكلتي الآن ليس خطأ لغوي، وكأنه خطأ نصية، 425 00:21:26,904 --> 00:21:29,570 انها تسير فعلا أن تكون منطقية خطأ لقد عمد 426 00:21:29,570 --> 00:21:32,450 قدمت فرصة ل الخطوة من خلال ما يجري. 427 00:21:32,450 --> 00:21:35,540 >> انا ذاهب الى المضي قدما الآن وتشغيل buggy3. 428 00:21:35,540 --> 00:21:37,490 وانا ذاهب للذهاب إلى الأمام وعدم التعاون. 429 00:21:37,490 --> 00:21:39,494 انا ذاهب الى اعطائها رقم 1. 430 00:21:39,494 --> 00:21:41,410 فإنه لم ترغب في ذلك، لذلك انها دفع لي مرة أخرى. 431 00:21:41,410 --> 00:21:42,147 >> ماذا عن 2؟ 432 00:21:42,147 --> 00:21:43,021 3؟ 433 00:21:43,021 --> 00:21:43,520 50؟ 434 00:21:43,520 --> 00:21:44,740 أيا من تلك يعملون. 435 00:21:44,740 --> 00:21:46,890 ماذا عن -50؟ 436 00:21:46,890 --> 00:21:48,560 ويبدو أن هذا البرنامج للعمل. 437 00:21:48,560 --> 00:21:49,970 >> اسمحوا لي أن تحاول ذلك مرة أخرى. 438 00:21:49,970 --> 00:21:53,400 اسمحوا لي أن أحاول -1، ويبدو أن العمل. 439 00:21:53,400 --> 00:21:56,380 اسمحوا لي أن أحاول -2، ويبدو أن العمل. 440 00:21:56,380 --> 00:21:59,640 اسمحوا لي أن أحاول 0. 441 00:21:59,640 --> 00:22:01,684 هاه، وهذا غير صحيح. 442 00:22:01,684 --> 00:22:03,350 الآن، نحن يجري متحذلق قليلا هنا. 443 00:22:03,350 --> 00:22:07,090 لكنه، في الواقع، في القضية التي 0 ليست إيجابية ولا سلبية. 444 00:22:07,090 --> 00:22:11,150 وذلك أن برنامجي هو قائلا ان 0 هو عدد صحيح سالب، 445 00:22:11,150 --> 00:22:12,820 هذا ليس صحيحا من الناحية التقنية. 446 00:22:12,820 --> 00:22:15,180 >> الآن، لماذا هو يفعل هذا؟ 447 00:22:15,180 --> 00:22:16,270 حسنا، قد يكون واضحا. 448 00:22:16,270 --> 00:22:18,110 وبالفعل، هذا البرنامج هو من المفترض أن تكون بسيطة إلى حد ما 449 00:22:18,110 --> 00:22:19,670 لذلك لدينا شيء لاستكشاف. 450 00:22:19,670 --> 00:22:25,870 >> ولكن دعونا إدخال التصحيح الثالث تقنية هنا دعا debug50. 451 00:22:25,870 --> 00:22:27,750 لذلك هذا هو برنامج بعد أن قمنا بإنشائه 452 00:22:27,750 --> 00:22:30,770 هذا العام دعا debug50 التي من شأنها أن تسمح لك 453 00:22:30,770 --> 00:22:34,130 لاستخدام ما يسمى المدمج في المصحح رسومية في IDE CS50. 454 00:22:34,130 --> 00:22:38,400 والمصحح هو مجرد برنامج يتيح عموما تشغيل البرنامج 455 00:22:38,400 --> 00:22:44,050 ولكن خطوة خطوة خطوة، خط سطرا سطرا، وعدم التوقف، بدس 456 00:22:44,050 --> 00:22:47,626 حولها، والنظر في المتغيرات بحيث البرنامج لا مجرد ضربة الماضي كنت 457 00:22:47,626 --> 00:22:49,750 وبسرعة طباعة شيء أو لا تتم طباعة شيء. 458 00:22:49,750 --> 00:22:53,250 فهو يوفر لك فرصة، في سرعة الإنسان، للتفاعل معها. 459 00:22:53,250 --> 00:22:55,470 >> وللقيام بذلك، كنت ببساطة القيام بما يلي. 460 00:22:55,470 --> 00:22:58,479 بعد ترجمة التعليمات البرمجية الخاصة بك، وهو ما قمت به بالفعل، buggy3، 461 00:22:58,479 --> 00:23:00,020 ان تمضي قدما وتشغيل debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 الكثير من مثل help50 ديه تشغيل help50 ثم الأمر، 464 00:23:06,760 --> 00:23:10,120 debug50 ديه تشغيل debug50 و ثم اسم الأمر. 465 00:23:10,120 --> 00:23:14,440 >> الآن مشاهدة ما يحدث على الشاشة، على الجانب الأيمن على وجه الخصوص. 466 00:23:14,440 --> 00:23:19,400 عندما ضرب تشغيل، كل من المفاجئة لوحة هذا الأيمن 467 00:23:19,400 --> 00:23:20,419 يفتح على الشاشة. 468 00:23:20,419 --> 00:23:22,210 وهناك الكثير مما يجري في أول وهلة. 469 00:23:22,210 --> 00:23:25,110 ولكن ليس هناك أيضا كثيرا ما يدعو للقلق حتى الآن. 470 00:23:25,110 --> 00:23:28,570 >> وهذا ما تبين لي كل شيء ما يجري داخل برنامجي 471 00:23:28,570 --> 00:23:31,130 الآن وعبر هذه أزرار تصل أعلى ومن ثم 472 00:23:31,130 --> 00:23:35,910 السماح لي إلى الخطوة من خلال قانون بلدي خطوة في نهاية المطاف خطوة بخطوة. 473 00:23:35,910 --> 00:23:37,140 ولكن ليس فقط حتى الآن. 474 00:23:37,140 --> 00:23:38,060 لاحظ ما يحدث. 475 00:23:38,060 --> 00:23:40,600 في نافذتي المحطة انا المطالبة لن. 476 00:23:40,600 --> 00:23:44,560 وانا ذاهب الى المضي قدما و التعاون هذه المرة، ونوع في -1. 477 00:23:44,560 --> 00:23:48,770 ورغم قليلا غامض، -1 هو عدد صحيح سالب، كما هو متوقع. 478 00:23:48,770 --> 00:23:52,020 >> ثم خرج الطفل مع 0 الحالة GDBserver الخروج. 479 00:23:52,020 --> 00:23:55,180 GDB، جنو المصحح، هو اسم من البرامج الأساسية 480 00:23:55,180 --> 00:23:56,620 التي تطبق هذا المصحح. 481 00:23:56,620 --> 00:24:00,500 ولكن كل هذا يعني حقا، المصحح ذهبت بعيدا لبرنامجي الإقلاع عن التدخين 482 00:24:00,500 --> 00:24:01,710 وكان كل شيء جيدا. 483 00:24:01,710 --> 00:24:06,020 إذا كنت ترغب في تصحيح حقا برنامجي، يجب أن أقول استباقي debug50، 484 00:24:06,020 --> 00:24:08,920 أين أريد أن أبدأ التنقل خلال قانون بلدي؟ 485 00:24:08,920 --> 00:24:11,750 >> ولعل أبسط طريقة لذلك هي على النحو التالي. 486 00:24:11,750 --> 00:24:15,300 إذا كنت تحوم فوق مزراب من بلدي محرر هنا، 487 00:24:15,300 --> 00:24:19,090 ذلك حقا فقط في الشريط الجانبي هنا، إلى اليسار من رقم السطر، 488 00:24:19,090 --> 00:24:21,870 لاحظ أنه إذا أنا فقط انقر مرة واحدة، أنا وضعت نقطة حمراء صغيرة. 489 00:24:21,870 --> 00:24:24,460 وأن القليل نقطة حمراء، مثل التوقيع على وقف، يعني، مهلا، 490 00:24:24,460 --> 00:24:29,430 debug50، تنفيذ وقفة من قانون بلدي هناك حق عند تشغيل هذا البرنامج. 491 00:24:29,430 --> 00:24:30,260 >> لذلك دعونا نفعل ذلك. 492 00:24:30,260 --> 00:24:37,340 اسمحوا لي أن نمضي قدما وتشغيل برنامجي مرة أخرى مع debug50 ./buggy3، أدخل. 493 00:24:37,340 --> 00:24:40,110 والآن، لاحظ، شيء حدث مختلفة. 494 00:24:40,110 --> 00:24:42,440 أنا لا المطالبة بعد في نافذتي المحطة 495 00:24:42,440 --> 00:24:45,430 عن أي شيء، لأنني لم حصلت هناك بعد في برنامجي. 496 00:24:45,430 --> 00:24:47,950 لاحظ أنه في خط 8 وهي الآن تسليط الضوء، 497 00:24:47,950 --> 00:24:51,720 وهناك السهم الصغير في يقول الأيسر، وتوقف هنا. 498 00:24:51,720 --> 00:24:55,030 هذا سطر من التعليمات البرمجية، خط 8، لم تنفذ حتى الان. 499 00:24:55,030 --> 00:24:58,940 >> وما هو الغريب، إذا نظرت هنا على الجانب الأيمن، 500 00:24:58,940 --> 00:25:03,530 لاحظت أنني غير محلية متغير، محلي بمعنى 501 00:25:03,530 --> 00:25:05,450 أنه من داخل الدالة الحالي. 502 00:25:05,450 --> 00:25:08,920 وقيمتها، على ما يبدو افتراضيا، ونوع من ملائم، هو 0. 503 00:25:08,920 --> 00:25:10,260 لكني لم اكتب 0. 504 00:25:10,260 --> 00:25:13,410 ما يحدث لمجرد أن يكون لها القيمة الافتراضية في الوقت الراهن. 505 00:25:13,410 --> 00:25:15,490 >> لذلك اسمحوا لي نمضي قدما ونفعل هذا الآن. 506 00:25:15,490 --> 00:25:18,680 اسمحوا لي أن المضي قدما وعلى الجزء العلوي هنا، وأنا 507 00:25:18,680 --> 00:25:20,970 الذهاب إلى المضي قدما و فوق هذا الرمز الأول الذي 508 00:25:20,970 --> 00:25:25,360 يعني خطوة على التي تعني لا تخطي ولكن تخطي هذا الخط من التعليمات البرمجية، 509 00:25:25,360 --> 00:25:27,770 تنفيذ ذلك على طول الطريق. 510 00:25:27,770 --> 00:25:30,710 >> والآن، لاحظ يا موجه قد تغيرت تماما. 511 00:25:30,710 --> 00:25:31,380 لماذا هذا؟ 512 00:25:31,380 --> 00:25:33,639 لقد قلت debug50، تشغيل هذا الخط من التعليمات البرمجية. 513 00:25:33,639 --> 00:25:34,930 ماذا يعني هذا سطر من التعليمات البرمجية تفعل؟ 514 00:25:34,930 --> 00:25:35,960 يدفعني لعدد صحيح. 515 00:25:35,960 --> 00:25:36,460 حسنا. 516 00:25:36,460 --> 00:25:37,400 اسمحوا لي أن التعاون. 517 00:25:37,400 --> 00:25:41,340 اسمحوا لي أن المضي قدما الآن واكتب -1، أدخل. 518 00:25:41,340 --> 00:25:42,920 والآن لاحظ ما قد تغير. 519 00:25:42,920 --> 00:25:46,060 على جهة اليد اليمنى، بلدي متغير محلي ط 520 00:25:46,060 --> 00:25:48,200 وأشارت إلى أنها -1 الآن. 521 00:25:48,200 --> 00:25:49,810 وانها لا تزال من نوع int. 522 00:25:49,810 --> 00:25:53,102 >> ولاحظ، أيضا، يا ما يسمى الاستدعاءات، حيث لم أتوقف؟ 523 00:25:53,102 --> 00:25:54,810 سوف نتحدث أكثر عن هذا في المستقبل. 524 00:25:54,810 --> 00:25:58,620 لكن مكدس الاستدعاءات يشير فقط إلى ما وظائف في الوقت الراهن في الحركة. 525 00:25:58,620 --> 00:26:00,040 الآن انها مجرد الرئيسي. 526 00:26:00,040 --> 00:26:03,590 والآن فقط المحلي المتغير هو أنني بقيمة 1. 527 00:26:03,590 --> 00:26:09,840 >> وعندما كنت خطوة في النهاية على هذا الخط هنا، مع أن نفس الرمز في أعلى اليمين، 528 00:26:09,840 --> 00:26:11,410 -1 هو عدد صحيح سالب. 529 00:26:11,410 --> 00:26:13,580 الآن انها التوقف خلال تلك متعرج. 530 00:26:13,580 --> 00:26:14,740 دعونا السماح لها بذل كل شيء. 531 00:26:14,740 --> 00:26:17,300 أنا خطوة على هذا الخط، وفويلا. 532 00:26:17,300 --> 00:26:20,240 >> لذلك ليس كل ما رهيب المنير بعد، 533 00:26:20,240 --> 00:26:23,550 لكنها لم تدع لي وقفة وأعتقد من خلال منطقيا 534 00:26:23,550 --> 00:26:24,870 ما هذا البرنامج يقوم به. 535 00:26:24,870 --> 00:26:26,890 ولكن هذا لم يكن الحال الخاطئة. 536 00:26:26,890 --> 00:26:28,510 دعونا نفعل ذلك مرة أخرى على النحو التالي. 537 00:26:28,510 --> 00:26:31,340 >> انا ذاهب الى ترك هذه نقطة على خط 8 مع النقطة الحمراء. 538 00:26:31,340 --> 00:26:32,830 أنا ذاهب إلى إعادة تشغيل debug50. 539 00:26:32,830 --> 00:26:34,400 انها توقفت هنا تلقائيا. 540 00:26:34,400 --> 00:26:37,660 ولكن هذه المرة، بدلا من يخطو على هذا الخط، 541 00:26:37,660 --> 00:26:42,290 اسمحوا لي أن تذهب في الواقع داخل get_negative_int ومعرفة، 542 00:26:42,290 --> 00:26:45,530 لماذا هو قبول 0 كما إجابة صحيحة؟ 543 00:26:45,530 --> 00:26:47,990 >> وذلك بدلا من النقر الخطوة أكثر. 544 00:26:47,990 --> 00:26:50,630 انا ذاهب الى المضي قدما وانقر فوق دخول إلى. 545 00:26:50,630 --> 00:26:54,030 ولاحظ أن الخط 8 هذا هو أبرز الآن الآن فجأة 546 00:26:54,030 --> 00:26:56,900 يصبح خط 17. 547 00:26:56,900 --> 00:26:59,947 >> الآن، انها ليست أن المصحح وقد تخطي خطوط 14 و 15 و 16. 548 00:26:59,947 --> 00:27:01,780 انها مجرد لا يوجد شيء لتظهر لك هناك. 549 00:27:01,780 --> 00:27:04,050 تلك هي مجرد تصريح المتغيرات، ثم هناك كلمة هل 550 00:27:04,050 --> 00:27:05,390 وبعد ذلك متعرج مفتوحة. 551 00:27:05,390 --> 00:27:09,227 خط وظيفي الوحيد الذي العصير هو حقا هذا واحد هنا، 17. 552 00:27:09,227 --> 00:27:11,060 وذلك حيث قمنا توقف تلقائيا. 553 00:27:11,060 --> 00:27:13,870 >> printf ذلك ( "n.is:")؛، لذلك هذا لم يحدث حتى الآن. 554 00:27:13,870 --> 00:27:18,250 لذلك دعونا المضي قدما وانقر خطوة أكثر. 555 00:27:18,250 --> 00:27:20,326 الآن بلدي موجه، في الواقع، تغيرت إلى ( "ن هو:"). 556 00:27:20,326 --> 00:27:22,450 الآن get_int، أنا لا أذهب لعناء التنقل إلى، 557 00:27:22,450 --> 00:27:24,750 لأن هذه المهمة ل التي CS50 في المكتبة. 558 00:27:24,750 --> 00:27:25,750 انها صحيحة فرضا. 559 00:27:25,750 --> 00:27:28,440 >> لذلك أنا ذاهب إلى المضي قدما و نوع من التعاون من خلال إعطائها 560 00:27:28,440 --> 00:27:30,590 عدد صحيح، ولكن ليس كثافة السلبي. 561 00:27:30,590 --> 00:27:32,870 لذلك اسمحوا لي المضي قدما وضرب 0. 562 00:27:32,870 --> 00:27:39,460 والآن ماذا يحدث هنا عندما أحصل على وصولا الى خط 21؟ 563 00:27:39,460 --> 00:27:40,890 أنا لم كرر مرة أخرى. 564 00:27:40,890 --> 00:27:43,320 أنا لا يبدو أن يكون عالقا في تلك الحلقة. 565 00:27:43,320 --> 00:27:45,990 وبعبارة أخرى، فإن هذا الأصفر لم شريط لا تبقي تدور، 566 00:27:45,990 --> 00:27:47,130 وحولها، وما حولها. 567 00:27:47,130 --> 00:27:48,340 >> الآن، لماذا؟ 568 00:27:48,340 --> 00:27:49,920 حسنا، ن، ما N الآن؟ 569 00:27:49,920 --> 00:27:53,280 أنا يمكن أن ننظر على المستوى المحلي متغيرات في المصحح. 570 00:27:53,280 --> 00:27:53,816 n غير 0. 571 00:27:53,816 --> 00:27:55,190 كل الحق، ما هو وضعي؟ 572 00:27:55,190 --> 00:27:58,700 >> 20-- خط 20 هو، أيضا، 0 هو أكبر من 0. 573 00:27:58,700 --> 00:27:59,500 هذا ليس صحيحا. 574 00:27:59,500 --> 00:28:01,020 0 ليست أكبر من 0. 575 00:28:01,020 --> 00:28:02,820 وهكذا كسرت خروج من هذا. 576 00:28:02,820 --> 00:28:06,370 >> وولهذا السبب على الخط 21، إذا كنت فعلا الاستمرار، 577 00:28:06,370 --> 00:28:10,370 انا ذاهب الى العودة 0، حتى على الرغم من أنني يجب أن رفضت 0 578 00:28:10,370 --> 00:28:12,484 كما لا يجري في الواقع سلبية. 579 00:28:12,484 --> 00:28:14,650 وحتى الآن، وأنا حتى لا حقا يهتم المصحح. 580 00:28:14,650 --> 00:28:16,900 حصلت عليه، ولست بحاجة ل تعرف أكثر ما يجري. 581 00:28:16,900 --> 00:28:19,233 >> لذلك أنا ذاهب إلى المضي قدما و فقط انقر على زر التشغيل، 582 00:28:19,233 --> 00:28:20,240 وترك هذه النهاية تصل. 583 00:28:20,240 --> 00:28:23,440 الآن، لقد أدركت أن بلدي الخطأ هو على ما يبدو على خط 20. 584 00:28:23,440 --> 00:28:25,160 هذا هو خطأي منطقي. 585 00:28:25,160 --> 00:28:28,100 >> وذلك ما أريد القيام به لتغيير هذا؟ 586 00:28:28,100 --> 00:28:32,500 إذا كانت المشكلة هي أنني لست اصطياد 0، انها مجرد خطأ منطقي. 587 00:28:32,500 --> 00:28:35,910 وأستطيع أن أقول في حين أن n أكبر من أو يساوي 0، 588 00:28:35,910 --> 00:28:38,330 الحفاظ مطالبة المستخدم مرة أخرى ومرة ​​أخرى. 589 00:28:38,330 --> 00:28:41,050 >> لذلك، مرة أخرى، خطأ بسيط، وربما حتى ضوحا عندما رأيتني 590 00:28:41,050 --> 00:28:42,410 الكتابة عليه قبل بضع دقائق. 591 00:28:42,410 --> 00:28:44,570 ولكن ذهابه هنا غير أنه مع التصحيح 50، 592 00:28:44,570 --> 00:28:46,850 ومع التصحيح البرنامج بشكل عام، 593 00:28:46,850 --> 00:28:51,370 لديك هذه القوة الجديدة التي وجدت ل المشي من خلال التعليمات البرمجية الخاصة بك، والبحث 594 00:28:51,370 --> 00:28:55,590 عبر هذا الفريق اليد اليمنى ما متغيرات القيم الخاصة بك. 595 00:28:55,590 --> 00:28:57,700 حتى لا بالضرورة لديك لاستخدام شيء 596 00:28:57,700 --> 00:29:00,630 مثلك eprintf لطباعة تلك القيم. 597 00:29:00,630 --> 00:29:04,430 يمكنك ان ترى لهم في الواقع بصريا على الشاشة. 598 00:29:04,430 --> 00:29:08,920 >> الآن، أبعد من ذلك، ومن الجدير بالذكر أن هناك أسلوب آخر هذا 599 00:29:08,920 --> 00:29:09,890 في الواقع مشتركة عظمى. 600 00:29:09,890 --> 00:29:13,120 وكنت قد نتساءل لماذا هذا القليل الرجل هنا كان يجلس على المسرح. 601 00:29:13,120 --> 00:29:16,490 لذلك هناك هذه التقنية، عموما المعروفة باسم المطاط بطة التصحيح، 602 00:29:16,490 --> 00:29:18,786 الذي هو في الحقيقة مجرد شهادة على حقيقة 603 00:29:18,786 --> 00:29:20,660 أن المبرمجين في كثير من الأحيان عندما كتابة التعليمات البرمجية، 604 00:29:20,660 --> 00:29:22,650 انهم ليسوا بالضرورة التعاون مع الآخرين، 605 00:29:22,650 --> 00:29:24,030 أو العمل في بيئة مشتركة. 606 00:29:24,030 --> 00:29:25,050 >> إنهم نوع من في المنزل. 607 00:29:25,050 --> 00:29:25,910 ربما حان وقت متأخر من الليل. 608 00:29:25,910 --> 00:29:28,190 انهم يحاولون الرقم بعض الأخطاء في مدوناتها. 609 00:29:28,190 --> 00:29:29,330 وانهم فقط لا نرى ذلك. 610 00:29:29,330 --> 00:29:30,329 >> وليس هناك الحجرة. 611 00:29:30,329 --> 00:29:31,250 لا يوجد TF. 612 00:29:31,250 --> 00:29:32,680 لا يوجد CA حولها. 613 00:29:32,680 --> 00:29:36,440 كل ما لديهم على جرفها هو هذا المطاط الحبيب قليلا. 614 00:29:36,440 --> 00:29:39,030 >> وهكذا التصحيح المطاط بطة هو مجرد هذه الدعوة 615 00:29:39,030 --> 00:29:42,780 التفكير في شيء كما سخيفة لأن هذا كمخلوق الحقيقي، 616 00:29:42,780 --> 00:29:46,940 وفعلا المشي من خلال التعليمات البرمجية لفظيا لهذا الكائن جماد. 617 00:29:46,940 --> 00:29:49,230 لذلك، على سبيل المثال، إذا هذا هو بلدي على سبيل المثال here-- 618 00:29:49,230 --> 00:29:52,470 وأذكر أنه في وقت سابق كانت المشكلة هذه، 619 00:29:52,470 --> 00:29:58,140 إذا قمت بحذف هذا السطر الأول من رمز، وأنا المضي قدما وتقديم عربات التي تجرها الدواب 0 مرة أخرى، 620 00:29:58,140 --> 00:30:01,220 أذكر أنه كان لي هذه رسائل الخطأ هنا. 621 00:30:01,220 --> 00:30:05,997 لذا فإن الفكرة هنا، على الرغم من أنني سخيفة أشعر في هذه اللحظة انه فعل ذلك علانية، 622 00:30:05,997 --> 00:30:06,580 غير أن الخطأ. 623 00:30:06,580 --> 00:30:10,910 >> حسنا، مشكلتي هي أنني قمت أعلن ضمنيا وظيفة المكتبة. 624 00:30:10,910 --> 00:30:12,610 وأن وظيفة المكتبة printf. 625 00:30:12,610 --> 00:30:15,290 Declare-- موافق، أن يعلن يذكرني النماذج. 626 00:30:15,290 --> 00:30:18,930 >> وهذا يعني أنني بحاجة إلى الواقع نقول للمترجم مقدما ما 627 00:30:18,930 --> 00:30:19,980 وظيفة يبدو. 628 00:30:19,980 --> 00:30:20,930 انتظر دقيقة. 629 00:30:20,930 --> 00:30:23,580 لم يكن لدي io.h. القياسية 630 00:30:23,580 --> 00:30:24,530 شكرا جزيلا. 631 00:30:24,530 --> 00:30:27,330 >> حتى مجرد هذه العملية of-- لك لا تحتاج إلى أن يكون في الواقع بطة. 632 00:30:27,330 --> 00:30:29,819 ولكن هذه الفكرة من المشي نفسك من خلال التعليمات البرمجية الخاصة بك 633 00:30:29,819 --> 00:30:31,610 حتى يتسنى لك حتى تسمع نفسك، حتى يتسنى لك 634 00:30:31,610 --> 00:30:35,620 أدرك السهو في بلدانكم تصريحات، وعموما هذه الفكرة. 635 00:30:35,620 --> 00:30:38,910 >> وربما أكثر منطقيا، وليس ذلك كثيرا مع أن واحدا ولكن المزيد من المشاركة 636 00:30:38,910 --> 00:30:44,220 مثال فعلنا فقط في 3.C عربات التي تجرها الدواب، قد المشي نفسك من خلال ذلك 637 00:30:44,220 --> 00:30:45,310 على النحو التالي. 638 00:30:45,310 --> 00:30:49,190 لذلك كل الحق، المطاط الحبيب، DDB، اذا صح التعبير. 639 00:30:49,190 --> 00:30:52,350 لدينا هنا في بلدي وظيفة الرئيسية، ادعو الحصول على كثافة السلبي. 640 00:30:52,350 --> 00:30:54,660 >> وأنا على الحصول على قيمة الإرجاع. 641 00:30:54,660 --> 00:31:00,410 أنا تخزينها على الجانب الأيسر على خط 8 في متغير يسمى ط. 642 00:31:00,410 --> 00:31:02,380 حسنا، ولكن الانتظار، كيف التي تحصل على تلك القيمة؟ 643 00:31:02,380 --> 00:31:04,130 اسمحوا لي أن ننظر في وظيفة في السطر 12. 644 00:31:04,130 --> 00:31:05,760 >> في السطر 12، لدينا الحصول على كثافة السلبي. 645 00:31:05,760 --> 00:31:08,190 لا يأخذ أي مدخلات، لا عودة عدد صحيح، موافق. 646 00:31:08,190 --> 00:31:10,929 أعلن على خط 14 ون متغير. 647 00:31:10,929 --> 00:31:12,220 انها تسير لتخزين عدد صحيح. 648 00:31:12,220 --> 00:31:13,760 هذا ما اريد. 649 00:31:13,760 --> 00:31:18,480 >> هكذا يفعل ما يلي أثناء ن أعرف، دعونا لي التراجع عن ما الإصلاح وأنا قدمت بالفعل. 650 00:31:18,480 --> 00:31:22,710 وذلك في حين ن أكبر من 0، طباعة ن غير، موافق. 651 00:31:22,710 --> 00:31:25,170 ومن ثم استدعاء الحصول على كثافة العمليات المخزنة في ن. 652 00:31:25,170 --> 00:31:30,160 ومن ثم معرفة ما اذا كان ن 0، n غير يس-- هناك هو عليه. 653 00:31:30,160 --> 00:31:31,910 لذلك، مرة أخرى، كنت لا تحتاج البطة الفعلية. 654 00:31:31,910 --> 00:31:35,650 ولكن مجرد المشي نفسك من خلال التعليمات البرمجية باعتبارها ممارسة الفكرية 655 00:31:35,650 --> 00:31:37,720 وغالبا ما مساعدتك أدرك ما يحدث، 656 00:31:37,720 --> 00:31:41,170 بدلا من مجرد القيام بشيء مثل هذا، يحدق في الشاشة، 657 00:31:41,170 --> 00:31:43,720 ولا أتحدث نفسك من خلال ذلك، وهو بصراحة لا 658 00:31:43,720 --> 00:31:46,270 ما يقرب من تقنية فعالة. 659 00:31:46,270 --> 00:31:48,620 لذلك فإنه يوجد لديك، ل عدد من التقنيات المختلفة 660 00:31:48,620 --> 00:31:52,102 من أجل التصحيح فعلا التعليمات البرمجية والعثور على الخطأ، وكلها 661 00:31:52,102 --> 00:31:54,810 يجب أن تكون أدوات في الأدوات الخاصة بك بحيث كنت لا وقت متأخر من الليل، 662 00:31:54,810 --> 00:31:57,660 خاصة، كنت في تناول الطعام القاعات، أو في ساعات العمل، 663 00:31:57,660 --> 00:32:00,368 ضجيجا رأسك ضد جدار، في محاولة لحل بعض المشاكل. 664 00:32:00,368 --> 00:32:02,020 ندرك أن هناك أدوات البرمجيات. 665 00:32:02,020 --> 00:32:03,720 هناك أدوات البط المطاطية. 666 00:32:03,720 --> 00:32:09,630 وهناك فريق عمل كامل من دعم الانتظار لتقديم يد المساعدة. 667 00:32:09,630 --> 00:32:13,120 >> وحتى الآن، كلمة عن مشكلة مجموعات، وعلى ما نأمل لكم 668 00:32:13,120 --> 00:32:15,620 الخروج منها، وكيف نذهب حول تقييم. 669 00:32:15,620 --> 00:32:17,680 في منهج الدورة ل، مجموعات مشكلة CS50 ل 670 00:32:17,680 --> 00:32:22,320 يتم تقييم على أربعة محاور أساسية، لذلك لspeak-- نطاق وصحتها، والتصميم، 671 00:32:22,320 --> 00:32:23,060 والاسلوب. 672 00:32:23,060 --> 00:32:25,910 ونطاق يشير فقط إلى كم من قطعة هل قضمت؟ 673 00:32:25,910 --> 00:32:28,080 كم من مشكلة هل حاولت؟ 674 00:32:28,080 --> 00:32:30,110 ما مستوى الجهد هل تتجلى؟ 675 00:32:30,110 --> 00:32:35,750 >> صحة هو، يعمل برنامج كما أنه من المفترض أن فقا للمواصفات CS50 676 00:32:35,750 --> 00:32:38,640 عند تقديم بعض المدخلات أو بعض المخرجات القادمة مرة أخرى؟ 677 00:32:38,640 --> 00:32:41,130 التصميم هو الأكثر ذاتية منهم. 678 00:32:41,130 --> 00:32:43,360 وانها واحدة من شأنها أن تأخذ أطول لتعلم 679 00:32:43,360 --> 00:32:47,220 وأطول للتدريس، في بقدر ما يتلخص، 680 00:32:47,220 --> 00:32:49,530 مدى المكتوبة هي الشفرة؟ 681 00:32:49,530 --> 00:32:52,920 >> انه شيء واحد لطباعة فقط الصحيح مخرجات أو إرجاع القيم الصحيحة. 682 00:32:52,920 --> 00:32:55,400 ولكن هل فعل ذلك كما قدر ممكن من الكفاءة؟ 683 00:32:55,400 --> 00:32:58,210 هل فعل ذلك الانقسام وقهر، أو ثنائي 684 00:32:58,210 --> 00:33:01,500 البحث كما سنرى قريبا أن فعلنا قبل أسبوعين مع دفتر الهاتف؟ 685 00:33:01,500 --> 00:33:04,670 هل هناك طرق أفضل لحل المشكلة مما لديك حاليا هنا؟ 686 00:33:04,670 --> 00:33:06,380 هذا هو فرصة لتصميم أفضل. 687 00:33:06,380 --> 00:33:08,530 >> ثم style-- كيف هي جميلة التعليمات البرمجية الخاصة بك؟ 688 00:33:08,530 --> 00:33:12,370 ستلاحظ أن أنا جميلة خاص حول الطعج قانون بلدي، 689 00:33:12,370 --> 00:33:15,300 والتأكد من المتغيرات بلدي تتم تسمية معقول. ن، 690 00:33:15,300 --> 00:33:19,660 في حين باختصار، هو اسم جيد ل عدد، أنا لعدد صحيح العد، 691 00:33:19,660 --> 00:33:20,727 الصورة عن سلسلة. 692 00:33:20,727 --> 00:33:22,560 ونحن يمكن أن يكون أطول أسلوب أسماء متغير. 693 00:33:22,560 --> 00:33:25,500 الاسلوب هو فقط كيف جيدة لا تبدو التعليمات البرمجية الخاصة بك؟ 694 00:33:25,500 --> 00:33:26,600 وكيف يمكن قراءتها هو؟ 695 00:33:26,600 --> 00:33:29,650 >> وبمرور الوقت، ما المشرفون الدوليون الخاص بك وTFS ستفعل في الدورة 696 00:33:29,650 --> 00:33:31,870 وتوفر لك مع أن نوع من ردود الفعل النوعي 697 00:33:31,870 --> 00:33:34,330 حتى يتسنى لك الحصول على أفضل في تلك الجوانب المختلفة. 698 00:33:34,330 --> 00:33:37,510 وفيما يتعلق بكيفية نحن تقييم كل من هذه المحاور، 699 00:33:37,510 --> 00:33:40,080 انها عادة مع عدد قليل جدا دلاء حتى يتسنى لك، عموما، 700 00:33:40,080 --> 00:33:41,680 الحصول على شعور جيدا كيف كنت تفعل. 701 00:33:41,680 --> 00:33:45,680 و، في الواقع، إذا كنت تتلقى النتيجة على أي من تلك axes-- دقة وتصميم 702 00:33:45,680 --> 00:33:49,659 وعلى غرار especially-- هذا العدد سوف يكون عادة ما بين 1 و 5. 703 00:33:49,659 --> 00:33:52,450 و، حرفيا، إذا كنت الحصول على 3 لفي بداية الفصل الدراسي، 704 00:33:52,450 --> 00:33:53,977 هذا أمر جيد جدا. 705 00:33:53,977 --> 00:33:55,810 وهذا يعني لا يزال هناك مجال للتحسين، 706 00:33:55,810 --> 00:33:58,490 التي كنت أمل لفي مع فئة لأول مرة. 707 00:33:58,490 --> 00:34:01,820 هناك أمل بعض الشيء من السقف التي كنت تطمح للوصول. 708 00:34:01,820 --> 00:34:03,970 وحتى الحصول على 3 يوم أقرب قطعة، 709 00:34:03,970 --> 00:34:06,550 إن لم يكن بعض 2 و 4، و هو، في الواقع، وهو شيء جيد. 710 00:34:06,550 --> 00:34:08,880 انها ضمن حدود، أيضا ضمن التوقعات. 711 00:34:08,880 --> 00:34:11,421 >> وإذا عقلك مشغول، الانتظار دقيقة واحدة، ثلاثة من أصل خمسة. 712 00:34:11,421 --> 00:34:12,620 وهذا في الحقيقة 6 من أصل 10. 713 00:34:12,620 --> 00:34:13,560 هذا هو 60٪. 714 00:34:13,560 --> 00:34:14,830 يا إلهي، هذا إلى F. 715 00:34:14,830 --> 00:34:15,870 >> ليست كذلك. 716 00:34:15,870 --> 00:34:17,600 انها ليست، في الواقع، أن. 717 00:34:17,600 --> 00:34:22,710 بدلا من ذلك، انها فرصة لتحسين على مدار الفصل الدراسي. 718 00:34:22,710 --> 00:34:25,580 وإذا كنت الحصول على بعض بورز، وهذه هي فرصة 719 00:34:25,580 --> 00:34:29,199 للاستفادة من ساعات العمل، بالتأكيد الأقسام وغيرها من الموارد. 720 00:34:29,199 --> 00:34:32,840 >> أفضل فرصة، حقا، ليفخر أي مدى كنت قد 721 00:34:32,840 --> 00:34:34,520 تأتي على مدار الفصل الدراسي. 722 00:34:34,520 --> 00:34:38,199 لذلك ندرك، كأن شيئا آخر ثلاث جيدة. 723 00:34:38,199 --> 00:34:40,179 ويتيح مجالا للنمو على مر الزمن. 724 00:34:40,179 --> 00:34:43,090 >> أما كيف هي تلك المحاور موزون، واقعيا كنت 725 00:34:43,090 --> 00:34:46,745 الذهاب لقضاء معظم وقتك للوصول الى أشياء في العمل، ناهيك بشكل صحيح. 726 00:34:46,745 --> 00:34:49,120 وهكذا تميل إلى صحتها أن المرجحة أكثر من غيرها، كما هو الحال مع 727 00:34:49,120 --> 00:34:51,360 هذا العامل المضاعف من ثلاثة. 728 00:34:51,360 --> 00:34:54,659 تصميم مهم أيضا، ولكن شيء ما تفعله ليس بالضرورة 729 00:34:54,659 --> 00:34:58,220 تنفق كل تلك الساعات على في محاولة للحصول على الأشياء فقط للعمل. 730 00:34:58,220 --> 00:35:00,019 >> وذلك هو المرجح أنه أكثر من ذلك بقليل على محمل الجد. 731 00:35:00,019 --> 00:35:01,560 ثم أسلوب يتم ترجيح الأقل. 732 00:35:01,560 --> 00:35:03,710 حتى على الرغم من انها لا تقل أهمية أساسية، 733 00:35:03,710 --> 00:35:05,990 انها مجرد، ربما، أسهل شيء لاحقاق الحق، 734 00:35:05,990 --> 00:35:08,440 محاكاة الأمثلة نحن القيام به في محاضرة والقسم، 735 00:35:08,440 --> 00:35:11,080 مع الأمور بشكل جيد مطعوج، وعلق، 736 00:35:11,080 --> 00:35:14,320 وهكذا من بين أسهل أشياء للقيام بها والحصول على حق. 737 00:35:14,320 --> 00:35:16,960 لذلك على هذا النحو، وتحقيق أن تلك هي نقطة 738 00:35:16,960 --> 00:35:19,000 أن من السهل نسبيا على الفهم. 739 00:35:19,000 --> 00:35:22,360 >> والآن كلمة عن this-- الصدق الأكاديمي. 740 00:35:22,360 --> 00:35:25,150 لذلك في سياق ل المنهج، وسترى 741 00:35:25,150 --> 00:35:27,630 أن الدورة لا بأس به قليلا من لغة حول هذا. 742 00:35:27,630 --> 00:35:31,380 ويأخذ مسار قضية الأمانة الأكاديمية على محمل الجد تماما. 743 00:35:31,380 --> 00:35:33,450 >> لدينا تمييز، للأفضل أو للأسوأ، 744 00:35:33,450 --> 00:35:36,570 من بعد أن أرسلت كل عام أكثر الطلاب لاتخاذ إجراءات تأديبية 745 00:35:36,570 --> 00:35:39,670 أكثر من أي الآخر بالطبع، أنني على علم. 746 00:35:39,670 --> 00:35:42,580 هذا ليس بالضرورة مما يدل على حقيقة 747 00:35:42,580 --> 00:35:46,340 أن الطلاب CS، أو الطلاب CS50، هي أي أقل صدقا من زملائك. 748 00:35:46,340 --> 00:35:49,090 ولكن الواقع أن في هذا العالم، إلكترونيا، نحن فقط 749 00:35:49,090 --> 00:35:50,990 لدينا التكنولوجية يعني من الكشف عن هذا. 750 00:35:50,990 --> 00:35:53,360 >> من المهم لنا ل الإنصاف عبر الطبقة 751 00:35:53,360 --> 00:35:58,550 ما نقوم به الكشف عن هذا، ورفع القضية عندما نرى الأشياء. 752 00:35:58,550 --> 00:36:01,980 وفقط لرسم صورة، وحقا للمساعدة في شيء مثل هذا الحوض في، 753 00:36:01,980 --> 00:36:04,600 هذه هي الأرقام من الطلاب على مدى السنوات ال 10 الماضية 754 00:36:04,600 --> 00:36:07,610 أنه لم يشارك في بعض مثل هذه القضايا من الأمانة الأكاديمية، 755 00:36:07,610 --> 00:36:10,990 مع بعض 32 طالبا من الخريف 2015، الذي 756 00:36:10,990 --> 00:36:13,760 هذا يعني أننا لا تأخذ الأمر على محمل الجد. 757 00:36:13,760 --> 00:36:18,380 و، في نهاية المطاف، هذه الأرقام يؤلف، في الآونة الأخيرة، وحوالي 3٪، 4٪ أو نحو ذلك 758 00:36:18,380 --> 00:36:19,120 الطبقة. 759 00:36:19,120 --> 00:36:25,220 >> حتى بالنسبة للغالبية العظمى من الطلاب يبدو أن خطوط واضحة. 760 00:36:25,220 --> 00:36:27,940 ولكن لا تضع ذلك في مانع، في وقت متأخر ولا سيما 761 00:36:27,940 --> 00:36:32,080 في الليل عندما تصارع بعض الحلول لمجموعة المشكلة، 762 00:36:32,080 --> 00:36:34,830 أن هناك آليات للحصول على نفسك بشكل أفضل 763 00:36:34,830 --> 00:36:37,870 الدعم مما كنت قد أعتقد، حتى في تلك الساعة. 764 00:36:37,870 --> 00:36:40,514 ندرك أن عندما نتلقى عروض الطلاب، ونحن نعبر 765 00:36:40,514 --> 00:36:43,430 مقارنة كل تقديمها هذا العام ضد كل تقديمها العام الماضي، 766 00:36:43,430 --> 00:36:47,590 ضد كل تقديمها من عام 2007، ومنذ ذلك الحين، النظر، أيضا، 767 00:36:47,590 --> 00:36:49,931 كود مستودعات الانترنت، منتديات المناقشة، ومواقع العمل. 768 00:36:49,931 --> 00:36:51,806 ونذكر هذا، حقا، كل ذلك من أجل 769 00:36:51,806 --> 00:36:56,040 الكشف الكامل، أنه إذا شخص آخر يمكن العثور عليه على الانترنت، 770 00:36:56,040 --> 00:36:57,880 بالتأكيد، لذلك يمكننا الدورة. 771 00:36:57,880 --> 00:37:00,100 ولكن، في الحقيقة، روح الدورة يتلخص 772 00:37:00,100 --> 00:37:01,650 لهذا الشرط في المنهج. 773 00:37:01,650 --> 00:37:03,670 هو حقا فقط، تكون معقولة. 774 00:37:03,670 --> 00:37:06,680 >> وإذا كان علينا أن وضع على ذلك مع مجرد لغة أكثر قليلا، 775 00:37:06,680 --> 00:37:09,770 ندرك أن جوهر كل العمل الذي يقدم إلى هذه الدورة 776 00:37:09,770 --> 00:37:10,954 يجب أن تكون لك. 777 00:37:10,954 --> 00:37:13,870 ولكن في غضون ذلك، هناك بالتأكيد الفرص والتشجيع، 778 00:37:13,870 --> 00:37:17,300 والقيمة التربوية في تحويل ل بالآخرين نفسي، وTFS، والمصدقة، 779 00:37:17,300 --> 00:37:20,760 والمشرفون الدوليون، والبعض الآخر في الصف، للحصول على الدعم، السماح للأصدقاء وحده 780 00:37:20,760 --> 00:37:23,547 وغرفهم الذين درسوا CS والبرمجة من قبل. 781 00:37:23,547 --> 00:37:25,130 وحتى لا يكون هناك مخصص لذلك. 782 00:37:25,130 --> 00:37:28,180 وكقاعدة عامة من الإبهام وthis-- عندما طلب المساعدة، 783 00:37:28,180 --> 00:37:31,470 قد تظهر التعليمات البرمجية للآخرين، ولكن قد لا عرض لهم. 784 00:37:31,470 --> 00:37:34,880 لذلك حتى لو كنت في ساعات العمل، أو في القاعة D، أو في مكان آخر 785 00:37:34,880 --> 00:37:37,450 العمل على بعض قطعة مجموعة، العمل جنبا إلى جنب مع صديق، الذي 786 00:37:37,450 --> 00:37:40,160 على ما يرام تماما، في نهاية يوم العمل الخاص بك 787 00:37:40,160 --> 00:37:43,034 يجب أن تنتمي في النهاية إلى كل واحد منكم على التوالي، وليس 788 00:37:43,034 --> 00:37:45,700 تكون بعض الجهد التعاوني، باستثناء المشروع النهائي حيث 789 00:37:45,700 --> 00:37:47,410 هو مسموح به وتشجيعه. 790 00:37:47,410 --> 00:37:49,830 >> ندرك أنه إذا كنت تكافح مع شيء 791 00:37:49,830 --> 00:37:52,520 وصديقك يحدث فقط أن يكون أفضل في هذا ثم لكم، 792 00:37:52,520 --> 00:37:55,130 أو أفضل في هذه المشكلة مما كنت، أو قليلا قبل أبعد مما كنت، 793 00:37:55,130 --> 00:37:57,330 فمن المعقول تماما لتحويل لصديقك ويقول: مهلا، 794 00:37:57,330 --> 00:38:00,480 هل تمانع النظر في قانون بلدي هنا، مساعدتي في بقعة ما هي قضية بلدي؟ 795 00:38:00,480 --> 00:38:03,760 ونأمل، في الفائدة من قيمة تربوية 796 00:38:03,760 --> 00:38:07,040 هذا الصديق لا فقط نقول، أوه، قيام بذلك، ولكن بدلا من ذلك، 797 00:38:07,040 --> 00:38:09,917 ما أنت في عداد المفقودين على خط 6، أو شيء من هذا القبيل؟ 798 00:38:09,917 --> 00:38:12,000 ولكن الحل ليس لصديق إلى جانبك 799 00:38:12,000 --> 00:38:15,617 أن نقول، أوه، حسنا، هنا، اسمحوا لي أن سحب هذا الأمر، وتبين لي حل لكم. 800 00:38:15,617 --> 00:38:16,450 حتى لا يكون على خط المرمى. 801 00:38:16,450 --> 00:38:18,670 تظهر لك التعليمات البرمجية ل الآخرين، ولكن لا يجوز لك 802 00:38:18,670 --> 00:38:22,350 عرض لهم، رهنا الآخر القيود في منهج الدورة ل. 803 00:38:22,350 --> 00:38:24,760 >> حتى لا نضع في اعتبارنا هذا ما يسمى بند الأسف 804 00:38:24,760 --> 00:38:27,560 في منهج الدورة وكذلك، أنه إذا ارتكاب بعض فعل 805 00:38:27,560 --> 00:38:30,476 ليس من المعقول، ولكن إحضاره إلى انتباه رؤساء دورة ل 806 00:38:30,476 --> 00:38:34,240 خلال 72 ساعة، وبطبيعة الحال قد تفرض عقوبات محلية 807 00:38:34,240 --> 00:38:37,380 قد تشمل غير مرضية أو الفشل الصف عن العمل المقدم. 808 00:38:37,380 --> 00:38:41,410 ولكن وبطبيعة الحال سوف لن يحيل يهم لمزيد من الإجراءات التأديبية، 809 00:38:41,410 --> 00:38:43,010 إلا في حالات الأفعال المتكررة. 810 00:38:43,010 --> 00:38:46,632 وبعبارة أخرى، إذا كنت لا تجعل بعض غبي، في وقت متأخر خاصة ليلا، قرار 811 00:38:46,632 --> 00:38:49,340 أن في صباح اليوم التالي أو يومين في وقت لاحق، تستيقظ وتدرك، 812 00:38:49,340 --> 00:38:50,870 ما كنت أفكر؟ 813 00:38:50,870 --> 00:38:53,890 تفعل في CS50 يكون متنفسا لتحديد هذه المشكلة 814 00:38:53,890 --> 00:38:57,170 وامتلاك ما يصل إليه، حتى يتسنى لنا سوف التقي بكم في منتصف الطريق والتعامل 815 00:38:57,170 --> 00:39:01,500 مع أنه في غضون آن معا التعليمية وقيمة بالنسبة لك، 816 00:39:01,500 --> 00:39:04,200 ولكن لا يزال عقابية في بعض الطريق. 817 00:39:04,200 --> 00:39:08,590 والآن، لاتخاذ حافة الخروج، هذا. 818 00:39:08,590 --> 00:39:10,570 >> [تشغيل الفيديو] 819 00:39:10,570 --> 00:39:13,540 >> [موسيقى] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [نهاية قراءة] 822 00:39:58,866 --> 00:40:00,490 ديفيد جيه مالان: حسنا، نحن العودة. 823 00:40:00,490 --> 00:40:03,680 والآن ننظر في واحدة من أولا لدينا المجالات العالم الحقيقي 824 00:40:03,680 --> 00:40:08,720 في CS50، فن الترميز، فن المرسلة والمستقبلة 825 00:40:08,720 --> 00:40:11,840 رسائل سرية، مشفرة الرسائل إذا صح التعبير، 826 00:40:11,840 --> 00:40:17,060 التي لا يمكن إلا أن يكون فك شفرتها إذا كان لديك بعض العنصر الرئيسي الذي المرسل له 827 00:40:17,060 --> 00:40:18,030 كذلك. 828 00:40:18,030 --> 00:40:22,120 وذلك لتحفيز هذا سوف نتخذ نظرة على هذا الشيء هنا، 829 00:40:22,120 --> 00:40:26,750 وهو مثال لل حلقة فك السرية التي 830 00:40:26,750 --> 00:40:34,042 يمكن أن تستخدم من أجل معرفة ما الرسالة السرية هو في الواقع. 831 00:40:34,042 --> 00:40:35,750 في الواقع، يعود في اليوم في المدارس الابتدائية، 832 00:40:35,750 --> 00:40:38,787 إذا كنت من أي وقت مضى أرسل رسائل سرية إلى بعض الأصدقاء أو بعض سحق في الصف، 833 00:40:38,787 --> 00:40:40,620 كنت قد فكرت كنت كونها ذكية 834 00:40:40,620 --> 00:40:46,530 من على قطعة الخاص بك من تغيير ورقة، مثل، A إلى B، و B إلى C و C إلى D، 835 00:40:46,530 --> 00:40:47,590 وهكذا دواليك. 836 00:40:47,590 --> 00:40:50,300 ولكن هل كنت تشفير الواقع المعلومات الخاصة بك، حتى 837 00:40:50,300 --> 00:40:53,300 إذا كان قليلا تافهة، لم يكن من الصعب على المعلم أن يدرك، 838 00:40:53,300 --> 00:40:55,675 حسنا، إذا كنت مجرد تغيير B إلى A و C إلى B، 839 00:40:55,675 --> 00:40:57,550 كنت فعلا معرفة ما هي الرسالة، 840 00:40:57,550 --> 00:40:59,700 ولكن كنت في التشفير من المعلومات. 841 00:40:59,700 --> 00:41:03,420 >> كنت مجرد القيام بذلك ببساطة، مثل الكثير من الخاص Ralphie هنا 842 00:41:03,420 --> 00:41:07,934 في الفيلم الشهير الذي يلعب الى حد كبير nauseum الإعلانية في فصل الشتاء. 843 00:41:07,934 --> 00:41:08,600 [تشغيل الفيديو] 844 00:41:08,600 --> 00:41:11,180 أغلب بلدان من المعروف للجميع أن رالف باركر بهذا 845 00:41:11,180 --> 00:41:14,070 عين عضوا في ليتل اليتيم آني الدائرة السرية 846 00:41:14,070 --> 00:41:17,700 ويحق لجميع الألقاب والفوائد التي تحدث بها. 847 00:41:17,700 --> 00:41:24,340 >> التوقيع، ليتل اليتيم آني، بيير أندريه، في الحبر وقعت العداد. 848 00:41:24,340 --> 00:41:27,160 الأوسمة والفوائد، بالفعل في سن التاسعة. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [الصراخ] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -هيا. 853 00:41:34,250 --> 00:41:35,210 دعونا الحصول على معها. 854 00:41:35,210 --> 00:41:39,530 أنا لا تحتاج الى كل هذا الجاز حول المهربين والقراصنة. 855 00:41:39,530 --> 00:41:41,660 >> مساء غد -Listen ل مغامرة الختامية 856 00:41:41,660 --> 00:41:43,880 من سفينة القراصنة السوداء. 857 00:41:43,880 --> 00:41:46,650 الآن، حان الوقت ل رسالة سرية آني 858 00:41:46,650 --> 00:41:49,840 بالنسبة لك أعضاء الدائرة السرية. 859 00:41:49,840 --> 00:41:53,570 تذكر، والأطفال، وأعضاء فقط من الدائرة السرية آني 860 00:41:53,570 --> 00:41:56,140 يمكن فك شفرة رسالة سرية آني. 861 00:41:56,140 --> 00:42:00,340 >> تذكر، آني وهذا يتوقف على لك. 862 00:42:00,340 --> 00:42:02,880 تعيين دبابيس لB2. 863 00:42:02,880 --> 00:42:05,230 هنا هو رسالة. 864 00:42:05,230 --> 00:42:06,090 12، 11-- 865 00:42:06,090 --> 00:42:10,250 >> -أنا أنا في أول لقائي السري. 866 00:42:10,250 --> 00:42:13,890 >> -14، 11، 18، 16. 867 00:42:13,890 --> 00:42:15,780 >> -Pierre كان في هذه الليلة صوت كبيرة. 868 00:42:15,780 --> 00:42:19,000 ويمكنني أن أقول أن هذه الليلة وكانت رسالة مهمة حقا. 869 00:42:19,000 --> 00:42:22,694 >> -3، 25، وهذا هو رسالة من آني نفسها. 870 00:42:22,694 --> 00:42:23,860 تذكر، لا تخبر أحدا. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 ثانية في وقت لاحق، وأنا في فقط غرفة في المنزل حيث ولد من تسعة 873 00:42:32,930 --> 00:42:37,040 يمكن أن يجلس في الخصوصية وفك شفرة. 874 00:42:37,040 --> 00:42:39,730 آها، B! 875 00:42:39,730 --> 00:42:42,360 ذهبت إلى القادم، E. 876 00:42:42,360 --> 00:42:44,520 >> الكلمة الأولى هي أن يكون. 877 00:42:44,520 --> 00:42:49,032 S، كانت قادمة من الأسهل الآن، U، 25-- 878 00:42:49,032 --> 00:42:51,733 >> أوه، هيا، الخاص Ralphie، أنا فلدي تذهب! 879 00:42:51,733 --> 00:42:53,688 >> -I'll يكون الحق إلى أسفل، ما! 880 00:42:53,688 --> 00:42:54,188 جي أزيز! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T، يا، تأكد ل-- تأكد من ماذا؟ 883 00:43:04,060 --> 00:43:05,970 ما كان اليتيم الصغير آني أحاول أن أقول؟ 884 00:43:05,970 --> 00:43:07,264 ومن المؤكد أن ما؟ 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie، وقد حصلت أندي ل تذهب، هل يرجى الخروج؟ 886 00:43:09,634 --> 00:43:10,480 >> حق عموم، ما! 887 00:43:10,480 --> 00:43:12,880 سأكون من الصحيح! 888 00:43:12,880 --> 00:43:14,550 >> من أنا أقترب الآن. 889 00:43:14,550 --> 00:43:16,620 وكان التوتر الفظيع. 890 00:43:16,620 --> 00:43:17,720 ماذا كان؟ 891 00:43:17,720 --> 00:43:20,170 مصير كوكب الأرض قد يتعطل في الميزان. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 فلدي اندي يذهب! 894 00:43:23,170 --> 00:43:26,890 >> -I'll يكون الحق في الخروج، ليبكي بصوت عال! 895 00:43:26,890 --> 00:43:32,680 >> -Almost هناك، حلقت أصابعي، ورأيي كان فخ الصلب، صدي كل مسام. 896 00:43:32,680 --> 00:43:37,198 وكان واضحا تقريبا، نعم، نعم، نعم. 897 00:43:37,198 --> 00:43:43,091 >> أغلب بلدان التأكد من شرب فالتين الخاص بك. 898 00:43:43,091 --> 00:43:43,590 فالتين؟ 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 ان اعلان تافه؟ 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 ابن العاهرة. 903 00:43:54,227 --> 00:43:54,810 [نهاية قراءة] 904 00:43:54,810 --> 00:43:57,390 ديفيد جيه مالان: حسنا، الذي كان شوطا طويلا جدا 905 00:43:57,390 --> 00:44:00,660 إدخال الترميز، وأيضا فالتين. 906 00:44:00,660 --> 00:44:04,470 في الواقع، من هذا الاعلان القديم هنا، لماذا لا فالتين على ما يرام؟ 907 00:44:04,470 --> 00:44:09,470 هو استخراج مركزة من ناضجة الشعير، حليب البقر دسم نقية، و 908 00:44:09,470 --> 00:44:14,360 وأعدت خصيصا الكاكاو، جنبا إلى جنب مع phosphatides الطبيعية والفيتامينات. 909 00:44:14,360 --> 00:44:18,240 تخضع لحراسة مشددة كذلك مع الفيتامينات الإضافية B و D، يم. 910 00:44:18,240 --> 00:44:21,600 ولا يزال بإمكانك الحصول عليه، على ما يبدو، على الأمازون، كما فعلنا هنا. 911 00:44:21,600 --> 00:44:24,810 >> ولكن الدافع هنا هو إدخال الترميز، وعلى وجه التحديد 912 00:44:24,810 --> 00:44:28,340 نوع الترميز المعروفة كما تشفير المفتاح السري. 913 00:44:28,340 --> 00:44:34,284 وكما يوحي اسمها، وكلها أمن نظام التشفير المفتاح السري، 914 00:44:34,284 --> 00:44:36,200 اذا صح التعبير، وهي منهجية لمجرد الهرولة 915 00:44:36,200 --> 00:44:40,960 المعلومات بين شخصين، هو أن فقط المرسل والمتلقي فقط 916 00:44:40,960 --> 00:44:46,980 تعرف key-- سر بعض القيمة، بعض العبارة السرية، وبعض الرقم السري، أن 917 00:44:46,980 --> 00:44:50,660 يسمح لهم على حد سواء تشفير وفك تشفير المعلومات. 918 00:44:50,660 --> 00:44:53,470 والترميز، حقا، هو فقط هذا من الأسبوع 0. 919 00:44:53,470 --> 00:44:56,715 >> انها مشكلة حيث هناك مدخلات، مثل الرسالة الفعلية في اللغة الإنجليزية 920 00:44:56,715 --> 00:44:59,340 أو ما اللغة التي تريد أن ترسل لشخص في الصف، 921 00:44:59,340 --> 00:45:00,580 أو عبر شبكة الانترنت. 922 00:45:00,580 --> 00:45:03,840 هناك بعض الانتاج الذي يجري أن تكون الرسالة سارعت أنك 923 00:45:03,840 --> 00:45:05,250 تريد المتلقي في الحصول عليها. 924 00:45:05,250 --> 00:45:07,405 وحتى إذا كان شخص ما في وسط يحصل عليه أيضا، 925 00:45:07,405 --> 00:45:09,780 كنت لا تريد لهم تكون بالضرورة قادرة على فك تشفيرها، 926 00:45:09,780 --> 00:45:12,840 لأن داخل هذا الصندوق الأسود، أو الخوارزمية، 927 00:45:12,840 --> 00:45:17,650 هي بعض الآلية، بعض خطوة خطوة تعليمات لاتخاذ هذا الإدخال 928 00:45:17,650 --> 00:45:20,710 وتحويله إلى الإخراج، في أمل بطريقة آمنة. 929 00:45:20,710 --> 00:45:23,640 >> و، في الواقع، هناك بعض المفردات في هذا العالم على النحو التالي. 930 00:45:23,640 --> 00:45:26,100 نص عادي هو كلمة ل عالم الكمبيوتر سوف 931 00:45:26,100 --> 00:45:28,449 استخدام لوصف المدخلات رسالة، مثل الإنجليزية 932 00:45:28,449 --> 00:45:31,240 أو ما اللغة التي في الواقع تريد أن ترسل إلى بعض البشر الآخرين. 933 00:45:31,240 --> 00:45:35,450 ثم النص المشفر هو التدافع إلى مشفر، أو مشفرة، 934 00:45:35,450 --> 00:45:36,520 نسخة منه. 935 00:45:36,520 --> 00:45:38,750 >> ولكن هناك عنصر واحد آخر هنا. 936 00:45:38,750 --> 00:45:43,200 هناك واحد مدخلات أخرى ل التشفير بالمفتاح السري. 937 00:45:43,200 --> 00:45:45,200 وهذا هو المفتاح نفسه، وهو، عموما، 938 00:45:45,200 --> 00:45:48,930 كما سنرى، عدد، أو بريد إلكتروني، أو كلمة، أيا كان 939 00:45:48,930 --> 00:45:51,980 الخوارزمية هو في الواقع تتوقع. 940 00:45:51,980 --> 00:45:53,870 >> وكيف يمكن فك تشفير المعلومات؟ 941 00:45:53,870 --> 00:45:55,110 كيف يمكن تفكيكها؟ 942 00:45:55,110 --> 00:45:57,950 حسنا، أنت فقط عكس المخرجات والمدخلات. 943 00:45:57,950 --> 00:46:00,900 >> وبعبارة أخرى، مرة واحدة لشخص تتلقى الرسالة المشفرة، 944 00:46:00,900 --> 00:46:03,740 ديه أو لديها ببساطة أن نعرف أن مفتاح نفسه. 945 00:46:03,740 --> 00:46:05,700 وقد تلقوا النص المشفر. 946 00:46:05,700 --> 00:46:09,530 وعن طريق توصيل هذين مدخلات النظام التشفير، 947 00:46:09,530 --> 00:46:14,260 الخوارزمية، هذا الصندوق الأسود، خارج ينبغي أن يأتي النص الأصلي الأصلي. 948 00:46:14,260 --> 00:46:17,830 وهكذا هذا هو مستوى عال جدا ضوء ما هو التشفير الواقع 949 00:46:17,830 --> 00:46:18,590 كل شيء. 950 00:46:18,590 --> 00:46:20,030 >> لذلك دعونا نصل الى هناك. 951 00:46:20,030 --> 00:46:22,700 دعونا ننظر الآن تحت غطاء محرك السيارة من شيء 952 00:46:22,700 --> 00:46:26,000 لقد تم اتخاذ أمرا مفروغا منه ل في الأسبوع الماضي، ولهذه الدورة 953 00:46:26,000 --> 00:46:27,629 here-- السلسلة. 954 00:46:27,629 --> 00:46:30,295 سلسلة في نهاية اليوم هو مجرد سلسلة من الأحرف. 955 00:46:30,295 --> 00:46:33,610 >> قد يكون مرحبا العالم، أو مرحبا Zamyla، أو أيا كان. 956 00:46:33,610 --> 00:46:37,050 ولكن ماذا يعني ذلك بالنسبة ان سلسلة من الأحرف؟ 957 00:46:37,050 --> 00:46:41,520 في الواقع، يعطي مكتبة CS50 لنا نوع بيانات تسمى السلسلة. 958 00:46:41,520 --> 00:46:45,140 >> ولكن هناك في الواقع أي شيء من هذا القبيل كسلسلة في C. 959 00:46:45,140 --> 00:46:49,450 هو حقا مجرد سلسلة من حرف، حرف، حرف، 960 00:46:49,450 --> 00:46:52,180 الطابع، إلى الوراء، إلى الوراء، ل إلى الوراء، إلى الوراء، إلى الوراء داخل 961 00:46:52,180 --> 00:46:54,650 من ذاكرة الكمبيوتر الخاص بك، أو من ذاكرة الوصول العشوائي. 962 00:46:54,650 --> 00:46:58,940 وسنلقي نظرة أعمق إلى أنه في المستقبل عندما ننظر في الذاكرة نفسها، 963 00:46:58,940 --> 00:47:02,030 والاستفادة منها، و التهديدات التي ينطوي عليها. 964 00:47:02,030 --> 00:47:04,100 >> ولكن دعونا النظر في سلسلة Zamyla. 965 00:47:04,100 --> 00:47:07,480 حتى مجرد اسم الإنسان هنا، Zamyla، 966 00:47:07,480 --> 00:47:12,030 هذا هو تسلسل أحرف، Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 والآن دعونا نفترض أن اسم Zamyla ل يتم تخزينها داخل جهاز كمبيوتر 968 00:47:16,020 --> 00:47:16,880 برنامج. 969 00:47:16,880 --> 00:47:20,830 >> حسنا، فمن المنطقي أنه ينبغي لنا تكون قادرة على النظر في تلك الأحرف 970 00:47:20,830 --> 00:47:21,590 بشكل فردي. 971 00:47:21,590 --> 00:47:24,710 لذلك أنا ذاهب لمجرد رسم قليلا مربع حول اسم Zamyla هنا. 972 00:47:24,710 --> 00:47:31,580 وهذا هو الحال في C أنه عند لدينا سلسلة، مثل Zamyla-- وربما 973 00:47:31,580 --> 00:47:34,940 لقد حان أن سلسلة الظهر من وظيفة مثل سلسلة الحصول عليها، 974 00:47:34,940 --> 00:47:38,540 يمكنك التعامل مع الواقع انها حرف بحرف. 975 00:47:38,540 --> 00:47:42,070 >> الآن، وهذا هو ثيق ل محادثة في متناول اليد، ل 976 00:47:42,070 --> 00:47:46,420 في التشفير إذا كنت ترغب في تغيير ألف إلى باء، وباء لC و C إلى D، 977 00:47:46,420 --> 00:47:49,650 وهكذا دواليك، عليك أن تكون قادرا لإلقاء نظرة على الشخصيات الفردية 978 00:47:49,650 --> 00:47:50,190 في سلسلة. 979 00:47:50,190 --> 00:47:52,695 عليك أن تكون قادرا على تغيير زد إلى شيء آخر، وهناك 980 00:47:52,695 --> 00:47:55,280 إلى شيء آخر، وM ل شيء آخر، وهلم جرا. 981 00:47:55,280 --> 00:47:58,000 ولذا فإننا بحاجة إلى وسيلة، برمجيا، لذلك 982 00:47:58,000 --> 00:48:03,020 في الكلام، في C لتكون قادرة على تغيير والنظر في رسائل فردية. 983 00:48:03,020 --> 00:48:05,690 ويمكننا القيام بذلك على النحو التالي. 984 00:48:05,690 --> 00:48:08,340 >> اسمحوا لي أن انتقل رئيس مرة أخرى في IDE CS50. 985 00:48:08,340 --> 00:48:11,130 واسمحوا لي أن المضي قدما وإنشاء ملف جديد 986 00:48:11,130 --> 00:48:16,134 أن سأتصل هذه المرة string0، كأول مثال لدينا، نقطة ج. 987 00:48:16,134 --> 00:48:18,300 وانا ذاهب الى المضي قدما وسوط ذلك على النحو التالي. 988 00:48:18,300 --> 00:48:22,870 >> حتى تشمل CS50.h، و ثم تشمل io.h القياسية، 989 00:48:22,870 --> 00:48:25,990 الذي أنا ذاهب دائما تقريبا ل يكون استخدام في برامج بلدي، على الأقل 990 00:48:25,990 --> 00:48:26,780 في البداية. 991 00:48:26,780 --> 00:48:32,180 كثافة العمليات الفراغ الرئيسي، ومن ثم في هنا أنا تنوي القيام به سلاسل يحصل على السلسلة. 992 00:48:32,180 --> 00:48:35,260 ثم انا ذاهب الى والمضي قدما في القيام بذلك. 993 00:48:35,260 --> 00:48:37,460 أريد أن أذهب إلى الأمام وكما شيك التعقل، 994 00:48:37,460 --> 00:48:43,607 أقول، مرحبا، في المئة الصورة، منقوطة، يجعل سلسلة 0. 995 00:48:43,607 --> 00:48:44,690 اه يا، ماذا أفعل هنا؟ 996 00:48:44,690 --> 00:48:45,930 أوه، أنا لم اربطها. 997 00:48:45,930 --> 00:48:48,120 هكذا تعلمت الدرس، أن لم يكن متعمدا. 998 00:48:48,120 --> 00:48:52,480 >> خطأ ذلك، والمزيد في المئة التحويلات من الحجج البيانات. 999 00:48:52,480 --> 00:48:54,940 وهذا هو المكان، في خط 7-- حسنا، لدي، 1000 00:48:54,940 --> 00:48:56,690 الإقتباس، وهذا سلسلة جهدي لprintf. 1001 00:48:56,690 --> 00:48:58,151 لقد حصلت على علامة النسبة المئوية. 1002 00:48:58,151 --> 00:48:59,650 ولكن أنا في عداد المفقودين الوسيطة الثانية. 1003 00:48:59,650 --> 00:49:03,190 >> أنا في عداد المفقودين الفاصلة، والتي وقد فعلت في الأمثلة السابقة. 1004 00:49:03,190 --> 00:49:06,650 لذلك فرصة جيدة للإصلاح واحد أكثر خطأ، عن طريق الخطأ. 1005 00:49:06,650 --> 00:49:09,950 والآن اسمحوا لي أن تشغيل string0، اكتب في Zamyla. 1006 00:49:09,950 --> 00:49:10,970 موافق، مرحبا Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> لذلك قمنا بتشغيل هذا النوع من البرامج بضع مرات مختلفة الآن. 1008 00:49:14,144 --> 00:49:16,310 ولكن دعونا نفعل شيئا ل مختلفة قليلا هذه المرة. 1009 00:49:16,310 --> 00:49:19,450 بدلا من مجرد طباعة وZamyla اسم كله كان خارجا مع printf، 1010 00:49:19,450 --> 00:49:21,350 دعونا نفعل ذلك حرف بحرف. 1011 00:49:21,350 --> 00:49:22,700 >> انا ذاهب الى استخدام لحلقة. 1012 00:49:22,700 --> 00:49:26,160 وانا ذاهب لإعطاء نفسي متغير العد، ودعا ط. 1013 00:49:26,160 --> 00:49:33,530 وانا ذاهب للحفاظ على بالتكرار، لذلك منذ فترة طويلة وأنا أقل من طول الصورة. 1014 00:49:33,530 --> 00:49:35,930 >> كما تبين، لم نكن تفعل هذه المرة الأخيرة، 1015 00:49:35,930 --> 00:49:39,100 أن ج يأتي مع وظيفة تسمى ستيرلينغ. 1016 00:49:39,100 --> 00:49:42,690 مرة في اليوم، وبشكل عام لا يزال عند تنفيذ المهام، 1017 00:49:42,690 --> 00:49:45,405 سوف البشر غالبا ما تختار جدا أسماء موجزة هذا النوع من الصوت 1018 00:49:45,405 --> 00:49:48,280 مثل ما تريد، على الرغم من انها في عداد المفقودين بضعة حروف العلة أو الحروف. 1019 00:49:48,280 --> 00:49:50,660 حتى ستيرلينغ هو اسم الوظيفة التي 1020 00:49:50,660 --> 00:49:53,880 يأخذ مشادة بين الأقواس التي يجب أن تكون سلسلة. 1021 00:49:53,880 --> 00:49:56,910 وأنها مجرد بإرجاع عدد صحيح، طول هذه السلسلة. 1022 00:49:56,910 --> 00:50:00,580 >> لذلك هذا للحلقة على السطر 7 يجري لبدء العد في الاول يساوي 0. 1023 00:50:00,580 --> 00:50:02,530 انه سيكون لزيادة أنا على كل التكرار 1024 00:50:02,530 --> 00:50:04,350 بواسطة 1، كما كنا نفعل عدة مرات. 1025 00:50:04,350 --> 00:50:06,780 لكنها تنوي القيام به فقط هذا حتى نقطة 1026 00:50:06,780 --> 00:50:09,660 عندما هو طول من السلسلة نفسها. 1027 00:50:09,660 --> 00:50:14,520 >> لذلك هذا هو وسيلة ل، في نهاية المطاف، بالتكرار عبر الأحرف 1028 00:50:14,520 --> 00:50:17,430 في سلسلة التالي كما هو. 1029 00:50:17,430 --> 00:50:20,670 أنا ذاهب لطباعة ليس سلسلة كاملة، ولكن في المئة ج، 1030 00:50:20,670 --> 00:50:22,860 حرف واحد يليه سطر جديد. 1031 00:50:22,860 --> 00:50:24,880 ثم انا ذاهب الى المضي قدما، وأحتاج 1032 00:50:24,880 --> 00:50:29,080 ليقول أريد لطباعة شخصية إيث من الصورة. 1033 00:50:29,080 --> 00:50:33,450 >> حتى لو كنت غير المتغير الذي يشير مؤشر السلسلة، حيث 1034 00:50:33,450 --> 00:50:37,230 كنت في ذلك، وأنا بحاجة إلى أن تكون قادرة على أقول، تعطيني الطابع إيث من الصورة. 1035 00:50:37,230 --> 00:50:40,390 وج لديه وسيلة للقيام هذا مع أقواس معقوفة. 1036 00:50:40,390 --> 00:50:43,679 كنت أقول ببساطة اسم سلسلة، وهو في هذه الحالة هو الصورة. 1037 00:50:43,679 --> 00:50:46,970 ثم يمكنك استخدام الأقواس المربعة، والتي هي عادة فوق العودة الخاص بك أو أدخل 1038 00:50:46,970 --> 00:50:48,110 مفتاح على لوحة المفاتيح. 1039 00:50:48,110 --> 00:50:52,410 ثم قمت بوضع مؤشر لل الحرف الذي تريد طباعته. 1040 00:50:52,410 --> 00:50:55,960 ذلك أن المؤشر سوف يكون number-- 0 أو 1 أو 2 أو 3، أو نقطة، 1041 00:50:55,960 --> 00:50:57,590 نقطة، نقطة، بعض رقم آخر. 1042 00:50:57,590 --> 00:51:00,920 >> وعلينا أن نضمن أنه سيكون ل يكون العدد الصحيح، لأنني 1043 00:51:00,920 --> 00:51:02,360 بدء العد عند 0. 1044 00:51:02,360 --> 00:51:07,020 وافتراضيا، الحرف الأول في سلسلة هو من خلال اتفاقية 0. 1045 00:51:07,020 --> 00:51:09,230 والطابع الثاني هو قوس 1. 1046 00:51:09,230 --> 00:51:11,120 والحرف الثالث هو قوس 2. 1047 00:51:11,120 --> 00:51:13,630 وكنت لا تريد أن يذهب أيضا حتى الآن، ولكننا لن لأننا 1048 00:51:13,630 --> 00:51:17,780 الذهاب الى زيادة ط فقط حتى يساوي طول السلسلة. 1049 00:51:17,780 --> 00:51:20,210 وعند هذه النقطة، هذه لحلقة سوف تتوقف. 1050 00:51:20,210 --> 00:51:25,550 >> لذلك اسمحوا لي المضي قدما وحفظ هذا برنامج، وتشغيل جعل سلسلة 0. 1051 00:51:25,550 --> 00:51:28,400 ولكن أنا ثمل. 1052 00:51:28,400 --> 00:51:35,390 يعلن ضمنا وظيفة المكتبة ستيرلينغ مع نوع من هذا القبيل وsuch-- الآن، 1053 00:51:35,390 --> 00:51:36,430 هذا يبدو مألوفا. 1054 00:51:36,430 --> 00:51:37,440 ولكنها ليست printf. 1055 00:51:37,440 --> 00:51:38,540 وانها لن تحصل على السلسلة. 1056 00:51:38,540 --> 00:51:40,480 >> لم أكن المسمار في بنفس الطريقة هذه المرة. 1057 00:51:40,480 --> 00:51:45,100 ولكن لاحظ هنا إلى أسفل قليلا أسفل علاوة على ذلك، تشمل string.h رأس، 1058 00:51:45,100 --> 00:51:47,210 تنص صراحة على إعلان عن ستيرلينغ. 1059 00:51:47,210 --> 00:51:48,820 لذلك هو في الواقع هناك فكرة في هناك. 1060 00:51:48,820 --> 00:51:51,670 >> وبالفعل اتضح هناك ملف رأس آخر 1061 00:51:51,670 --> 00:51:53,970 أننا لم تستخدم في الصف بعد، لكنه 1062 00:51:53,970 --> 00:51:56,480 بين تلك المتاحة لك، ودعا string.h. 1063 00:51:56,480 --> 00:52:00,930 وفي هذا الملف، string.h هو أعلن ستيرلينغ. 1064 00:52:00,930 --> 00:52:05,220 لذلك اسمحوا لي المضي قدما و حفظ هذا، وجعل سلسلة 1065 00:52:05,220 --> 00:52:08,040 0-- لطيفة، لا توجد رسائل خطأ هذه المرة. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla، و أنا على وشك أن هاهنا، 1067 00:52:12,290 --> 00:52:16,710 وعند هذه النقطة getstring يسير للعودة السلسلة، ووضعها في الصورة. 1068 00:52:16,710 --> 00:52:21,890 ثم أن للحلقة هو الذهاب الى تكرار على الحروف S واحد في وقت واحد، 1069 00:52:21,890 --> 00:52:28,420 وطباعتها واحدة في كل سطر، ل كان لي أن ن مائل في نهاية المطاف. 1070 00:52:28,420 --> 00:52:34,530 حتى أتمكن من حذف هذا مائل ن، وبعد ذلك فقط طباعة Zamyla جميع 1071 00:52:34,530 --> 00:52:37,460 في نفس الخط، reimplementing فعال 1072 00:52:37,460 --> 00:52:38,999 printf، الذي هو ليس كل ما مفيد. 1073 00:52:38,999 --> 00:52:40,540 ولكن في هذه الحالة، أنا لم فعلت ذلك. 1074 00:52:40,540 --> 00:52:43,610 لقد طبعت في الواقع واحدة الحرف في وقت واحد، واحد في كل سطر، 1075 00:52:43,610 --> 00:52:45,400 بحيث نرى في الواقع تأثير. 1076 00:52:45,400 --> 00:52:46,900 >> ولكن أود أن أشير إلى شيء واحد هنا. 1077 00:52:46,900 --> 00:52:48,930 وسوف نعود إلى هذا في الأسبوع المقبل. 1078 00:52:48,930 --> 00:52:52,650 وتبين أن هذا كود يحتمل عربات التي تجرها الدواب. 1079 00:52:52,650 --> 00:52:56,560 >> اتضح أن سلسلة الحصول على وبعض الوظائف الأخرى في الحياة 1080 00:52:56,560 --> 00:53:00,280 لا بالضرورة دائما العودة ما كنت تتوقع. 1081 00:53:00,280 --> 00:53:03,010 ونحن نعلم من الطبقة الأخيرة الوقت في هذا أن يحصل 1082 00:53:03,010 --> 00:53:04,960 ومن المفترض سلسلة لإرجاع سلسلة. 1083 00:53:04,960 --> 00:53:09,900 ولكن ماذا لو كان المستخدم أنواع من هذا القبيل كلمة طويلة، أو فقرة أو مقال 1084 00:53:09,900 --> 00:53:13,010 أن هناك فقط لا يكفي الذاكرة في الكمبيوتر لتناسب ذلك. 1085 00:53:13,010 --> 00:53:15,410 >> مثل، ما إذا كان هناك شيء يذهب الخطأ تحت غطاء محرك السيارة؟ 1086 00:53:15,410 --> 00:53:18,400 قد لا يحدث في كثير من الأحيان، ولكن يمكن أن يحدث مرة واحدة 1087 00:53:18,400 --> 00:53:21,520 في حين، من النادر جدا. 1088 00:53:21,520 --> 00:53:25,460 وهكذا اتضح أن سلسلة الحصول على وظائف مثل ذلك لا بالضرورة 1089 00:53:25,460 --> 00:53:26,380 دائما العودة السلاسل. 1090 00:53:26,380 --> 00:53:30,680 علهم يرجعون بعض قيمة الخطأ، بعض القيمة الحارس إذا جاز التعبير، 1091 00:53:30,680 --> 00:53:32,612 الذي يشير إلى أن فهناك شيء ما خطأ. 1092 00:53:32,612 --> 00:53:35,320 وكنت أعرف فقط هذا من بعد أن تعلم أنه في الطبقة الآن، 1093 00:53:35,320 --> 00:53:37,700 أو بعد قراءة بعض الوثائق أكثر. 1094 00:53:37,700 --> 00:53:43,120 اتضح أن سلسلة الحصول على يمكن إرجاع قيمة تسمى اغية. 1095 00:53:43,120 --> 00:53:46,220 باطل هو قيمة خاصة أننا سوف أعود لفي الأسبوع المقبل. 1096 00:53:46,220 --> 00:53:50,420 لكنه الآن، أعرف فقط أنه إذا أريد لتكون مناسبة حقا في المضي قدما 1097 00:53:50,420 --> 00:53:52,650 باستخدام سلسلة الحصول عليها، وأنا لا ينبغي فقط الذي يطلق عليه، 1098 00:53:52,650 --> 00:53:56,870 وعلى نحو أعمى استخدام قيمة عودتها، يثق أنه من سلسلة. 1099 00:53:56,870 --> 00:53:59,420 >> أود أن أقول أولا، مهلا، انتظر لحظة، فقط 1100 00:53:59,420 --> 00:54:03,380 المضي قدما إذا الصورة لا يساوي لاغية، حيث لاغية، مرة أخرى، 1101 00:54:03,380 --> 00:54:04,660 هو فقط بعض قيمة خاصة. 1102 00:54:04,660 --> 00:54:07,770 وانها قيمة خاصة الوحيدة التي داعي للقلق بشأن لسلسلة الحصول عليها. 1103 00:54:07,770 --> 00:54:10,900 الحصول على سلسلة إما الذهاب لإرجاع سلسلة أو فارغة. 1104 00:54:10,900 --> 00:54:17,219 >> وهذه علامة تعجب علامة يساوي هل يمكن أن نعرف من ربما درس الرياضيات 1105 00:54:17,219 --> 00:54:20,510 التي قد رسم علامة المساواة مع خط من خلال ذلك للإشارة إلى عدم المساواة. 1106 00:54:20,510 --> 00:54:23,135 هذا ليس عادة شخصية يمكنك كتابة على لوحة المفاتيح. 1107 00:54:23,135 --> 00:54:26,480 وهكذا في معظم لغات البرمجة، عندما كنت أريد أن أقول لا يساوي، 1108 00:54:26,480 --> 00:54:29,160 استخدام علامة تعجب، والمعروف باسم الانفجار. 1109 00:54:29,160 --> 00:54:33,180 لذلك أقول لكم الانفجار يساوي، التي يعني لا يساوي، من الناحية المنطقية. 1110 00:54:33,180 --> 00:54:38,060 انها مجرد مثل ليس هناك أعظم من، أو يساوي، أو أقل من 1111 00:54:38,060 --> 00:54:41,270 أو يساوي مفتاح على لوحة المفاتيح أن يفعل كل شيء في رمز واحد. 1112 00:54:41,270 --> 00:54:44,020 ولهذا السبب، في الأمثلة السابقة، فعلت قوس مفتوح، ومن ثم 1113 00:54:44,020 --> 00:54:48,670 علامة المساواة، من أجل القيام أكبر من أو، مثلا، أقل من. 1114 00:54:48,670 --> 00:54:49,910 >> فما هي الوجبات الجاهزة هنا؟ 1115 00:54:49,910 --> 00:54:53,880 هذا هو مجرد وسيلة الآن لل إدخال هذا النحو، هذه الميزة، 1116 00:54:53,880 --> 00:54:57,390 بالتكرار عبر فرد الأحرف في سلسلة. 1117 00:54:57,390 --> 00:55:00,260 وتماما مثل تلك الساحة بين قوسين تسمح لك للحصول عليهم، 1118 00:55:00,260 --> 00:55:03,790 النظر في تلك الأقواس المربعة كما نوع من دلالة في هذا الكامنة 1119 00:55:03,790 --> 00:55:06,040 التصميم، حيث كل شخصية من داخل سلسلة 1120 00:55:06,040 --> 00:55:10,180 هو نوع من محاصر في مكان ما تحت غطاء محرك السيارة في ذاكرة الكمبيوتر الخاص بك. 1121 00:55:10,180 --> 00:55:12,340 >> ولكن دعونا جعل البديل من هذا. 1122 00:55:12,340 --> 00:55:14,880 وتبين أن هذا البرنامج هو الصحيح. 1123 00:55:14,880 --> 00:55:18,810 حتى في محاور CS50 للتقييم الرمز، وهذا هو الصحيح الآن. 1124 00:55:18,810 --> 00:55:22,959 وخصوصا ان انا التحقق من وجود لاغية، يجب أن هذا البرنامج لم تحطم. 1125 00:55:22,959 --> 00:55:24,500 وأنا أعلم تماما أن من الخبرة. 1126 00:55:24,500 --> 00:55:28,040 ولكن هناك شيء آخر أن نحن يمكن ان تتعرض له هنا حقا. 1127 00:55:28,040 --> 00:55:31,860 ولكنها ليست جدا مصممة جيدا، لأن دعونا نعود إلى الأساسيات. 1128 00:55:31,860 --> 00:55:34,450 >> أولا، principles-- ماذا لحلقة تفعل؟ 1129 00:55:34,450 --> 00:55:36,290 ألف لحلقة يفعل ثلاثة أشياء. 1130 00:55:36,290 --> 00:55:39,340 ذلك تهيئة بعض القيمة، وإذا كنت تسأل ل. 1131 00:55:39,340 --> 00:55:41,770 فإنه يتحقق شرط. 1132 00:55:41,770 --> 00:55:45,380 ثم بعد كل التكرار، بعد كل دورة، 1133 00:55:45,380 --> 00:55:49,330 فإنه بزيادة بعض قيمة أو قيم، هنا. 1134 00:55:49,330 --> 00:55:50,600 >> فماذا يعني ذلك؟ 1135 00:55:50,600 --> 00:55:52,940 نحن تهيئة ط 0. 1136 00:55:52,940 --> 00:55:58,610 نتحقق ونتأكد من هو أقل من طول الصورة، وهي Z-A-M-Y-L-A، 1137 00:55:58,610 --> 00:55:59,900 حتى وهو أقل من 6. 1138 00:55:59,900 --> 00:56:02,590 وبالفعل، 0 كما تقل عن 6. 1139 00:56:02,590 --> 00:56:05,580 >> نحن طباعة Z من اسم Zamyla ل. 1140 00:56:05,580 --> 00:56:08,080 ثم نحن زيادة ط 0-1. 1141 00:56:08,080 --> 00:56:11,290 نحن ثم تحقق، هو 1 أقل من طول الصورة؟ 1142 00:56:11,290 --> 00:56:13,270 طول الصورة هو 6. 1143 00:56:13,270 --> 00:56:13,950 نعم إنه كذلك. 1144 00:56:13,950 --> 00:56:16,880 >> لذلك نحن طباعة في اسم Zamyla وZA. 1145 00:56:16,880 --> 00:56:20,090 نحن زيادة كنت من 0 إلى 1، و 2. 1146 00:56:20,090 --> 00:56:23,720 نحن ثم تحقق، هو 2 أقل من طول اسم Zamyla ل. 1147 00:56:23,720 --> 00:56:25,380 6- حتى 2 أقل من 6. 1148 00:56:25,380 --> 00:56:30,460 نعم، دعونا طباعة الآن M في اسم Zamyla، والحرف الثالث. 1149 00:56:30,460 --> 00:56:34,110 >> المفتاح هنا هو أن على كل تكرار للقصة، وأنا التحقق، 1150 00:56:34,110 --> 00:56:37,810 هو أنا أقل من طول Zamyla؟ 1151 00:56:37,810 --> 00:56:40,350 ولكن تكمن المشكلة في أن ستيرلينغ ليس خاصية. 1152 00:56:40,350 --> 00:56:43,100 لأولئك منكم الذين قد برمجت قبل بلغة جافا أو لغات أخرى 1153 00:56:43,100 --> 00:56:46,310 يمكن أن نعرف طول السلسلة خاصية، مجرد قراءة بعض القيمة فقط. 1154 00:56:46,310 --> 00:56:50,220 >> في C في هذه الحالة، إذا كان هذا هو وظيفة هذا هو حرفيا 1155 00:56:50,220 --> 00:56:53,520 عد عدد من الأحرف في Zamyla في كل مرة 1156 00:56:53,520 --> 00:56:54,740 نحن ندعو إلى أن وظيفة. 1157 00:56:54,740 --> 00:56:58,500 في كل مرة كنت أسأل الكمبيوتر لاستخدام ستيرلينغ، انه أخذ نظرة على Zamyla، 1158 00:56:58,500 --> 00:57:01,960 وقوله Z-A-M-Y-L-A، 6. 1159 00:57:01,960 --> 00:57:02,962 وتقوم بإرجاع 6. 1160 00:57:02,962 --> 00:57:04,920 في المرة القادمة التي ندعو من الداخل أن للحلقة، 1161 00:57:04,920 --> 00:57:08,610 انها سوف ننظر في Zamyla مرة أخرى، ويقول Z-A-M-Y-L-A، 6. 1162 00:57:08,610 --> 00:57:10,320 وانها سوف تعود 6. 1163 00:57:10,320 --> 00:57:12,980 لذلك ما هو غبي حول هذا التصميم؟ 1164 00:57:12,980 --> 00:57:17,700 >> لماذا هو قانون بلدي ليس 5 من 5 للتصميم في الوقت الراهن، إذا جاز التعبير؟ 1165 00:57:17,700 --> 00:57:20,600 حسنا، أنا أسأل ل السؤال لا داعي له. 1166 00:57:20,600 --> 00:57:23,030 أنا القيام بالمزيد من العمل مما كنت في حاجة إليها. 1167 00:57:23,030 --> 00:57:25,370 >> وذلك على الرغم من الجواب الصحيح، وأنا 1168 00:57:25,370 --> 00:57:29,560 طرح جهاز الكمبيوتر، ما هو طول Zamyla مرة أخرى، 1169 00:57:29,560 --> 00:57:31,380 ومرة أخرى، ومرة ​​أخرى، ومرة ​​أخرى؟ 1170 00:57:31,380 --> 00:57:33,980 وهذا الجواب أبدا لتغييره. 1171 00:57:33,980 --> 00:57:35,900 انها دائما ما يكون 6. 1172 00:57:35,900 --> 00:57:39,730 >> لذلك حلا أفضل من هذا سيكون هذا الإصدار المقبل. 1173 00:57:39,730 --> 00:57:43,390 اسمحوا لي أن المضي قدما ووضعها في ملف منفصل يسمى string1.c، 1174 00:57:43,390 --> 00:57:44,990 فقط للحفاظ على أنه فصل. 1175 00:57:44,990 --> 00:57:47,260 واتضح في ل حلقة، يمكنك فعلا 1176 00:57:47,260 --> 00:57:50,210 تعريف متغيرات متعددة في وقت واحد. 1177 00:57:50,210 --> 00:57:53,460 >> لذلك أنا ذاهب للحفاظ على ط و وضعه إلى 0. 1178 00:57:53,460 --> 00:57:56,190 ولكن انا ذاهب أيضا ل إضافة فاصلة، ويقول: 1179 00:57:56,190 --> 00:58:01,050 تعطيني متغير يسمى ن، الذي قيمة تساوي طول سلسلة من الصورة. 1180 00:58:01,050 --> 00:58:09,410 والآن، من فضلك تأكد حالتي طالما أنا أقل من ن. 1181 00:58:09,410 --> 00:58:14,140 >> حتى في هذه الطريقة، والمنطق متطابقة في نهاية اليوم. 1182 00:58:14,140 --> 00:58:18,280 ولكن أنا تذكر قيمة 6، في هذه الحالة. 1183 00:58:18,280 --> 00:58:19,780 ما هو طول اسم Zamyla على ذلك؟ 1184 00:58:19,780 --> 00:58:20,860 وأنا أضع ذلك في ن. 1185 00:58:20,860 --> 00:58:23,050 >> وأنا لا تزال فحص الشرط في كل مرة. 1186 00:58:23,050 --> 00:58:24,300 غير 0 أقل من 6؟ 1187 00:58:24,300 --> 00:58:25,600 هو 1 أقل من 6؟ 1188 00:58:25,600 --> 00:58:28,600 هو 2 أقل من 6، وهكذا دواليك؟ 1189 00:58:28,600 --> 00:58:31,914 >> ولكن أنا لا أطلب الكمبيوتر مرة أخرى، ومرة ​​أخرى، ما هو 1190 00:58:31,914 --> 00:58:33,080 طول اسم Zamyla على ذلك؟ 1191 00:58:33,080 --> 00:58:34,320 ما هو طول اسم Zamyla على ذلك؟ 1192 00:58:34,320 --> 00:58:35,986 ما هو طول اسم هذا Zamyla على ذلك؟ 1193 00:58:35,986 --> 00:58:40,440 أنا تذكر حرفيا أن أول و الإجابة فقط في هذا ن المتغير الثاني. 1194 00:58:40,440 --> 00:58:45,280 لذلك هذا الآن سيكون ليس فقط صحيح، ولكن أيضا مصممة تصميما جيدا. 1195 00:58:45,280 --> 00:58:46,670 >> الآن، ماذا عن النمط؟ 1196 00:58:46,670 --> 00:58:48,866 لقد اسمه المتغيرات بلدي جيد جدا، وأود أن أقول. 1197 00:58:48,866 --> 00:58:50,240 انهم السوبر مقتضبة الآن. 1198 00:58:50,240 --> 00:58:52,090 وهذا شيء طيب تماما. 1199 00:58:52,090 --> 00:58:55,120 >> إذا كان لديك واحدة فقط سلسلة في البرنامج، 1200 00:58:55,120 --> 00:58:56,860 يمكن أن نسميه كذلك ق لسلسلة. 1201 00:58:56,860 --> 00:58:59,370 إذا كان لديك فقط متغير واحد لحساب في أحد البرامج، 1202 00:58:59,370 --> 00:59:00,710 يمكن أن نسميه كذلك هو أنا. 1203 00:59:00,710 --> 00:59:03,500 إذا كان لديك طول، ن هو السوبر شائع أيضا. 1204 00:59:03,500 --> 00:59:05,800 لكنني لم يعلق أي من قانون بلدي. 1205 00:59:05,800 --> 00:59:09,200 >> أنا لم أبلغ reader-- سواء كان ذلك في بلدي TF، أو TA، 1206 00:59:09,200 --> 00:59:12,460 أو مجرد colleague-- ما يفترض إلى أن يحدث في هذا البرنامج. 1207 00:59:12,460 --> 00:59:15,760 وذلك للحصول على اسلوب جيد، ما كنت تريد أن تفعل 1208 00:59:15,760 --> 00:59:24,580 هو this-- شيء كما تسأل المستخدم لإدخال. 1209 00:59:24,580 --> 00:59:26,670 وأنا لا يمكن إعادة كتابة هذا أي عدد من الطرق. 1210 00:59:26,670 --> 00:59:35,630 >> تأكد s-- التأكد من الحصول على سلسلة عادت سلسلة. 1211 00:59:35,630 --> 00:59:40,280 ثم في here-- ولعل هذا هو وأعاد comment-- أهم 1212 00:59:40,280 --> 00:59:44,450 فوق الحروف في الصورة واحدة في وقت واحد. 1213 00:59:44,450 --> 00:59:47,060 وأنا لا يمكن استخدام أي اختيار اللغة الإنجليزية 1214 00:59:47,060 --> 00:59:49,650 هنا لوصف كل هذه أجزاء من التعليمات البرمجية. 1215 00:59:49,650 --> 00:59:52,740 >> لاحظ أنني لم تضع التعليق على كل سطر من التعليمات البرمجية، 1216 00:59:52,740 --> 00:59:55,690 حقا فقط على اهتمام منها، تلك التي 1217 00:59:55,690 --> 00:59:59,460 لدينا بعض المعنى الذي كنت قد نريد أن نوضح عظمى لشخص 1218 00:59:59,460 --> 01:00:00,460 قراءة قانون بلدي. 1219 01:00:00,460 --> 01:00:02,920 ولماذا يدعون لك الحصول على سلسلة يطلب المستخدم لإدخال؟ 1220 01:00:02,920 --> 01:00:05,450 حتى أن واحدا ليس بالضرورة كل ما صفية. 1221 01:00:05,450 --> 01:00:09,340 ولكنه يساعد تحكي قصة، لأن السطر الثاني في القصة، تأكد 1222 01:00:09,340 --> 01:00:10,740 الحصول على سلسلة عادت سلسلة. 1223 01:00:10,740 --> 01:00:14,260 >> والخط الثالث في القصة، أعاد على الأحرف في الصورة واحدة 1224 01:00:14,260 --> 01:00:15,380 في وقت واحد. 1225 01:00:15,380 --> 01:00:17,920 والآن فقط لحسن التدبير، انا ذاهب الى المضي قدما وإضافة 1226 01:00:17,920 --> 01:00:24,560 واحد أكثر تعليق أن فقط يقول الطباعة ط ال حرف في الصورة. 1227 01:00:24,560 --> 01:00:26,520 الآن، ماذا فعلت في نهاية اليوم؟ 1228 01:00:26,520 --> 01:00:29,190 >> لقد أضفت بعض الإنجليزية الكلمات في شكل تعليقات. 1229 01:00:29,190 --> 01:00:32,700 رمز مائل مائل يعني، مهلا، هذا الكمبيوتر هو للإنسان، 1230 01:00:32,700 --> 01:00:33,820 ليست لك، الكمبيوتر. 1231 01:00:33,820 --> 01:00:35,119 حتى انهم تجاهل منطقيا. 1232 01:00:35,119 --> 01:00:35,910 انهم فقط هناك. 1233 01:00:35,910 --> 01:00:39,830 >> وبالفعل، CS50 IDE يبين لهم كما الرمادي، كما أنه مفيد، ولكن ليس مفتاح 1234 01:00:39,830 --> 01:00:41,000 إلى البرنامج. 1235 01:00:41,000 --> 01:00:42,570 لاحظ ما يمكنك القيام به الآن. 1236 01:00:42,570 --> 01:00:44,950 ما إذا كنت تعرف C برمجة أو لم يكن، كنت 1237 01:00:44,950 --> 01:00:47,722 يمكن أن يقف لتوه في هذا برنامج، والخالي من التعليقات. 1238 01:00:47,722 --> 01:00:50,180 اسأل المستخدم لإدخال، تأكد الحصول على سلسلة عادت سلسلة، 1239 01:00:50,180 --> 01:00:53,009 أعاد على الأحرف في الصورة في وقت واحد، وطباعة الطابع 1240 01:00:53,009 --> 01:00:55,550 حرف ط عشر في s-- كنت لا حتى أن ننظر إلى رمز 1241 01:00:55,550 --> 01:00:57,270 لفهم ما يفعله هذا البرنامج. 1242 01:00:57,270 --> 01:01:00,280 والأفضل من ذلك، إذا كنت نفسك نظرة في هذا البرنامج في غضون أسبوع أو اثنين، 1243 01:01:00,280 --> 01:01:02,280 أو شهر، أو سنة، أنت أيضا لم يكن لديك 1244 01:01:02,280 --> 01:01:04,420 التحديق في التعليمات البرمجية، أحاول أن أتذكر، 1245 01:01:04,420 --> 01:01:06,630 ما أحاول القيام به مع هذا الرمز؟ 1246 01:01:06,630 --> 01:01:07,770 >> لقد قال بنفسك. 1247 01:01:07,770 --> 01:01:11,660 كنت قد وصفته لنفسك، أو بعض الزملاء، أو TA، أو فريق العمل. 1248 01:01:11,660 --> 01:01:14,860 وحتى هذا من شأنه أن يكون الآن صحيح، وتصميم جيد، 1249 01:01:14,860 --> 01:01:18,210 وأسلوب جيد في نهاية المطاف أيضا. 1250 01:01:18,210 --> 01:01:19,990 حتى لا يبقي ذلك في الاعتبار. 1251 01:01:19,990 --> 01:01:22,200 >> ولذلك لا يوجد واحد آخر شيء انا ذاهب الى القيام به هنا 1252 01:01:22,200 --> 01:01:28,240 التي يمكن الآن تكشف بالضبط ما هو يجري تحت غطاء محرك السيارة. 1253 01:01:28,240 --> 01:01:30,390 لذلك هناك هذه الميزة في C، وغيرها من اللغات، 1254 01:01:30,390 --> 01:01:33,010 دعا تلبيس إما ضمنا 1255 01:01:33,010 --> 01:01:37,250 أو بشكل صريح يسمح لك لتحويل من نوع بيانات واحد إلى آخر. 1256 01:01:37,250 --> 01:01:39,800 لقد تم التعامل حتى اليوم بعيد مع السلاسل. 1257 01:01:39,800 --> 01:01:41,250 >> والسلاسل حرفا. 1258 01:01:41,250 --> 01:01:44,910 ولكن نذكر من أسبوع 0 ما هي الأحرف؟ 1259 01:01:44,910 --> 01:01:49,334 الشخصيات هي مجرد فكرة مجردة على رأس من الأرقام العشرية numbers--، 1260 01:01:49,334 --> 01:01:52,500 والأرقام العشرية هي في الواقع مجرد التجريد على أعلى الأرقام الثنائية، 1261 01:01:52,500 --> 01:01:53,720 ونحن تعريفه. 1262 01:01:53,720 --> 01:01:55,540 >> من الشخصيات أرقام. 1263 01:01:55,540 --> 01:01:58,410 والأرقام هي أحرف، فقط اعتمادا على السياق. 1264 01:01:58,410 --> 01:02:01,250 وتبين أن داخل برنامج كمبيوتر، 1265 01:02:01,250 --> 01:02:06,830 يمكنك تحديد كيف تريد أن تبدو في البتات داخل هذا البرنامج؟ 1266 01:02:06,830 --> 01:02:10,400 >> نذكر من الأسبوع 0 أن كان لدينا أسكي، الذي هو مجرد هذا الرمز 1267 01:02:10,400 --> 01:02:11,620 خطابات التعيين لأرقام. 1268 01:02:11,620 --> 01:02:13,660 وقلنا عاصمة (أ) هو 65. 1269 01:02:13,660 --> 01:02:15,860 العاصمة ب 66، وهكذا دواليك. 1270 01:02:15,860 --> 01:02:20,500 >> وإشعار، لدينا أساسا حرف على في الصف العلوي هنا، كما C سيدعو لهم، 1271 01:02:20,500 --> 01:02:23,400 الشخصيات، ومن ثم [إينتس] في الصف الثاني. 1272 01:02:23,400 --> 01:02:28,180 واتضح يمكنك تحويل بسلاسة بين البلدين، عادة. 1273 01:02:28,180 --> 01:02:30,042 وإذا كنا نريد أن نفعل هذا عمدا، ونحن 1274 01:02:30,042 --> 01:02:31,750 قد ترغب في معالجة شيء من هذا القبيل. 1275 01:02:31,750 --> 01:02:33,590 >> ونحن قد ترغب في تحويل حالة العلوي لخفض 1276 01:02:33,590 --> 01:02:35,330 الحالة، أو أقل حالة إلى حالة العليا. 1277 01:02:35,330 --> 01:02:38,000 واتضح هناك ل في الواقع نمط هنا 1278 01:02:38,000 --> 01:02:39,900 نحن يمكن أن تبني في مجرد لحظة. 1279 01:02:39,900 --> 01:02:44,120 ولكن دعونا ننظر أولا في ل مثال للقيام بذلك صراحة. 1280 01:02:44,120 --> 01:02:46,340 >> أنا ذاهب إلى العودة إلى IDE CS50. 1281 01:02:46,340 --> 01:02:50,640 انا ذاهب الى خلق ملف يسمى أسكي 0.c. 1282 01:02:50,640 --> 01:02:55,960 وانا ذاهب الى المضي قدما وأضم io.h القياسي في الجزء العلوي، الفراغ الرئيسي كثافة العمليات 1283 01:02:55,960 --> 01:02:57,370 في الجزء العلوي من وظيفتي. 1284 01:02:57,370 --> 01:03:02,700 ثم أنا ذاهب لمجرد القيام following-- لحلقة من ط يساوي، 1285 01:03:02,700 --> 01:03:04,610 دعنا نقول، 65. 1286 01:03:04,610 --> 01:03:10,460 >> وبعد ذلك ستكون أقل من 65، بالإضافة إلى 26 حرف في الأبجدية. 1287 01:03:10,460 --> 01:03:12,640 ولذا فإنني سأترك الكمبيوتر تفعل الرياضيات بالنسبة لي هناك. 1288 01:03:12,640 --> 01:03:15,100 ثم داخل هذه الحلقة، ما أنا ذاهب لطباعة؟ 1289 01:03:15,100 --> 01:03:19,230 >> ٪ ج هي٪ ط مائل ن. 1290 01:03:19,230 --> 01:03:21,290 والآن أريد أن سد العجز في قيمتين. 1291 01:03:21,290 --> 01:03:24,530 لقد وضعت مسألة مؤقتا يصادف هناك دعوة السؤال. 1292 01:03:24,530 --> 01:03:29,940 >> أريد أن تكرار من 65 فصاعدا 26 الحروف الأبجدية، 1293 01:03:29,940 --> 01:03:35,190 طبع على كل تكرار ذلك أي ما يعادل حرف لا يتجزأ. 1294 01:03:35,190 --> 01:03:38,299 وبعبارة أخرى، أريد أن تكرار أكثر من 26 أرقام الطباعة 1295 01:03:38,299 --> 01:03:41,590 ما هو الطابع أسكي، والرسالة، وما أعرف، وعدد مماثل 1296 01:03:41,590 --> 01:03:44,650 في الحقيقة مجرد إعادة الرسم البياني من هذه الشريحة. 1297 01:03:44,650 --> 01:03:47,010 وذلك ما ينبغي أن تكون هذه علامات استفهام؟ 1298 01:03:47,010 --> 01:03:51,760 >> حسنا، كما تبين أن الثاني ينبغي للمرء أن يكون مجرد ط متغير. 1299 01:03:51,760 --> 01:03:53,860 أريد أن أرى أن كرقم. 1300 01:03:53,860 --> 01:03:58,920 وحجة الوسطى هنا، أستطيع أن أقول الكمبيوتر 1301 01:03:58,920 --> 01:04:03,470 لعلاج هذا صحيح ط كحرف، وذلك 1302 01:04:03,470 --> 01:04:05,880 لتحل محل هنا لفي المئة C. 1303 01:04:05,880 --> 01:04:07,990 >> وبعبارة أخرى، إذا أنا، مبرمج البشري، ونعرف 1304 01:04:07,990 --> 01:04:09,865 هذه هي مجرد أرقام في نهاية اليوم. 1305 01:04:09,865 --> 01:04:12,500 وأنا أعلم أنه ينبغي 65 خريطة لبعض الحرف. 1306 01:04:12,500 --> 01:04:15,310 مع هذا يلقي صريح، مع قوس، 1307 01:04:15,310 --> 01:04:18,840 اسم نوع البيانات التي تريد تحويل ل، وقوس مغلقة، 1308 01:04:18,840 --> 01:04:21,200 يمكن أن أقول لكم كمبيوتر، مهلا، الكمبيوتر، 1309 01:04:21,200 --> 01:04:24,130 تحويل هذا صحيح إلى شار. 1310 01:04:24,130 --> 01:04:26,250 >> حتى عند تشغيل هذا البرنامج بعد تجميع، 1311 01:04:26,250 --> 01:04:29,740 دعونا نرى ما get-- جعل أسكي 0. 1312 01:04:29,740 --> 01:04:33,020 الرتق ذلك، ما لم أفعل الخطأ هنا؟ 1313 01:04:33,020 --> 01:04:35,884 استخدام من المعرف غير معروفة، كل الحق، وليس مقصودا، 1314 01:04:35,884 --> 01:04:37,800 ولكن دعونا نرى ما اذا كنا لا يمكن السبب من خلال هذه. 1315 01:04:37,800 --> 01:04:41,220 >> حتى خط five-- ذلك لم أحصل بعيدا جدا قبل الشد. 1316 01:04:41,220 --> 01:04:42,140 هذا حسن. 1317 01:04:42,140 --> 01:04:46,560 لذلك السطر 5 لأنني يساوي 65-- أرى. 1318 01:04:46,560 --> 01:04:50,130 لذا تذكر أنه في C، خلافا لبعض اللغات إذا كان لديك البرمجة السابقة 1319 01:04:50,130 --> 01:04:52,190 تجربة، لديك لنقول للكمبيوتر، 1320 01:04:52,190 --> 01:04:55,040 على عكس خدش، ما نوع المتغير هو عليه. 1321 01:04:55,040 --> 01:04:56,860 >> ولقد نسيت عبارة رئيسية هنا. 1322 01:04:56,860 --> 01:04:59,200 في السطر الخامس، لقد بدأت باستخدام ط. 1323 01:04:59,200 --> 01:05:01,560 ولكن لم تكن قد قلت C ما نوع البيانات هو عليه. 1324 01:05:01,560 --> 01:05:04,570 لذلك أنا ذاهب للذهاب هنا و أقول، آه، وجعله عددا صحيحا. 1325 01:05:04,570 --> 01:05:07,050 >> الآن أنا ذاهب إلى المضي قدما وإعادة ترجمة. 1326 01:05:07,050 --> 01:05:08,080 أن الثابت أن. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 أدخل، وهذا النوع من بارد. 1328 01:05:12,660 --> 01:05:15,360 ليس فقط ذلك بسرعة فائقة ل نسأل الكمبيوتر هذا السؤال، 1329 01:05:15,360 --> 01:05:18,885 بدلا من النظر إليه على شريحة، انها تطبع واحد في كل سطر، و65، 1330 01:05:18,885 --> 01:05:24,860 B 66، على طول الطريق down-- منذ أن فعلت ذلك 26 times-- إلى خطابات ض، 1331 01:05:24,860 --> 01:05:25,630 وهو 90. 1332 01:05:25,630 --> 01:05:27,790 و، في الواقع، قليلا أكثر ذكاء من شأنه 1333 01:05:27,790 --> 01:05:31,030 كانت بالنسبة لي عدم الاعتماد على الكمبيوتر لإضافة 26. 1334 01:05:31,030 --> 01:05:34,060 كان يمكن أن يتم فقط 90 كذلك، وقتا طويلا 1335 01:05:34,060 --> 01:05:37,390 وأنا لا نرتكب الخطأ نفسه مرتين. 1336 01:05:37,390 --> 01:05:41,880 أريد أن ترتفع خلال ض، ليس فقط من خلال ما يصل ذ. 1337 01:05:41,880 --> 01:05:44,000 >> لذلك أن يلقي صريح. 1338 01:05:44,000 --> 01:05:47,860 وتبين أن هذا ليس من الضروري. 1339 01:05:47,860 --> 01:05:52,480 اسمحوا لي أن المضي قدما في إعادة تشغيل هذا مترجم، واعادة أسكي 0. 1340 01:05:52,480 --> 01:05:54,940 وتبين أن C هي ذكية جدا. 1341 01:05:54,940 --> 01:05:57,150 >> وprintf، على وجه الخصوص، غير ذكية جدا. 1342 01:05:57,150 --> 01:06:01,260 إذا كنت مجرد تمرير ط مرتين لكل من النائبة، printf 1343 01:06:01,260 --> 01:06:04,510 سوف ندرك، يا، وأنا أعلم جيدا أنك أعطاني integer-- بعض العدد، 1344 01:06:04,510 --> 01:06:06,380 مثل 65، أو 90، أو أيا كان. 1345 01:06:06,380 --> 01:06:10,170 ولكن أرى أنك تريد مني أن تهيئة هذا العدد مثل حرف. 1346 01:06:10,170 --> 01:06:16,460 وهكذا printf يمكن أن يلقي ضمنا وكثافة العمليات إلى شار لكنت كذلك. 1347 01:06:16,460 --> 01:06:19,360 بحيث ليست مشكلة على الإطلاق. 1348 01:06:19,360 --> 01:06:23,100 >> ولكن لاحظ، وبسبب هذا التكافؤ يمكننا القيام به في الواقع هذا كذلك. 1349 01:06:23,100 --> 01:06:26,520 اسمحوا لي أن المضي قدما وجعل واحدة نسخة أخرى من this-- أسكي 1.ج 1350 01:06:26,520 --> 01:06:31,800 وبدلا من بالتكرار عبر الأعداد الصحيحة، يمكن أن تهب حقا عقلك 1351 01:06:31,800 --> 01:06:33,610 بواسطة بالتكرار عبر حرفا. 1352 01:06:33,610 --> 01:06:37,660 إذا كان حرف ج يحصل العاصمة A، I نريد أن نمضي قدما ونفعل هذا، 1353 01:06:37,660 --> 01:06:41,740 طالما C أقل من أو يساوي الألف إلى الياء العاصمة وعلى كل التكرار 1354 01:06:41,740 --> 01:06:45,690 أريد أن زيادة C، يمكنني الآن في خط printf بلدي هنا 1355 01:06:45,690 --> 01:06:51,320 مثلا، في المئة C هو في المئة ط مرة أخرى، فاصلة C. 1356 01:06:51,320 --> 01:06:57,200 >> والآن، يمكنني أن أذهب الاتجاه الآخر، الصب الطابع صراحة 1357 01:06:57,200 --> 01:06:58,500 إلى عدد صحيح. 1358 01:06:58,500 --> 01:07:00,560 لذلك، مرة أخرى، لماذا تفعل هذا؟ 1359 01:07:00,560 --> 01:07:03,830 انها قليلا غريبة لنوع من عد من حيث حرفا. 1360 01:07:03,830 --> 01:07:07,430 >> ولكن إذا كنت أفهم ما هو يجري تحت غطاء محرك السيارة، 1361 01:07:07,430 --> 01:07:08,430 هناك حقا أي سحر. 1362 01:07:08,430 --> 01:07:13,060 كنت مجرد القول، مهلا، وإعطاء الكمبيوتر لي متغير يسمى C من نوع شار. 1363 01:07:13,060 --> 01:07:16,520 تهيئة إلى العاصمة A. و لاحظت علامات الاقتباس المفردة المسألة. 1364 01:07:16,520 --> 01:07:19,580 >> الأحرف في C، نذكر من في الأسبوع الماضي، يمكنك استخدام علامات الاقتباس المفردة. 1365 01:07:19,580 --> 01:07:23,720 سلاسل، للكلمات، العبارات، يمكنك استخدام علامات الاقتباس المزدوجة. 1366 01:07:23,720 --> 01:07:27,210 موافق، الكمبيوتر، وتستمر في فعل هذا، لذلك دام الطابع أقل من 1367 01:07:27,210 --> 01:07:28,050 أو يساوي إلى z. 1368 01:07:28,050 --> 01:07:32,640 وأنا أعرف من مائدتي أسكي أن كل من هذه الرموز أسكي على تماس. 1369 01:07:32,640 --> 01:07:33,400 >> ليس هناك ثغرات. 1370 01:07:33,400 --> 01:07:36,737 حتى انها مجرد من A إلى Z، مفصولة رقم واحد لكل منهما. 1371 01:07:36,737 --> 01:07:38,820 وبعد ذلك يمكنني أن زيادة شار، إذا كنت تريد حقا. 1372 01:07:38,820 --> 01:07:40,390 في نهاية اليوم، انها مجرد عدد. 1373 01:07:40,390 --> 01:07:41,030 انا اعرف هذا. 1374 01:07:41,030 --> 01:07:43,670 حتى أستطيع أن أفترض فقط أن أضيف 1 إلى ذلك. 1375 01:07:43,670 --> 01:07:46,940 >> وبعد ذلك هذه المرة، وأنا طباعة ج، ثم ما يعادل يتجزأ. 1376 01:07:46,940 --> 01:07:50,170 وأنا لا تحتاج حتى يلقي صريح. 1377 01:07:50,170 --> 01:07:52,680 أنا يمكن أن تسمح printf و أشياء شخصية الكمبيوتر من، 1378 01:07:52,680 --> 01:07:57,300 بحيث الآن في حالة تشغيل جعل Ascii1./ascii1، 1379 01:07:57,300 --> 01:08:01,520 أحصل على نفس الشيء بالضبط كذلك. 1380 01:08:01,520 --> 01:08:04,530 >> برنامج لا طائل منه، though-- لا أحد يجري في الواقع لكتابة البرامج 1381 01:08:04,530 --> 01:08:07,549 من أجل معرفة ما كان الرقم الذي يعين A أو B أو Z؟ 1382 01:08:07,549 --> 01:08:10,340 كنت مجرد الذهاب الى جوجل، أو البحث عنه على شبكة الإنترنت، أو البحث عنه 1383 01:08:10,340 --> 01:08:11,650 على شريحة، أو ما شابه ذلك. 1384 01:08:11,650 --> 01:08:13,520 فأين هذا لا يحصل في الواقع مفيدة؟ 1385 01:08:13,520 --> 01:08:15,960 >> حسنا، يتكلم عن ذلك الشريحة، لاحظ هناك 1386 01:08:15,960 --> 01:08:20,890 نمط الفعلي هنا بين الأحرف الكبيرة والصغيرة التي لم يكن من قبيل الصدفة. 1387 01:08:20,890 --> 01:08:23,760 لاحظ أن رأس المال (أ) هو 65. 1388 01:08:23,760 --> 01:08:25,830 صغيرة وهو 97. 1389 01:08:25,830 --> 01:08:29,649 وكيف بعيدا هو أقل الحالة؟ 1390 01:08:29,649 --> 01:08:32,649 >> هكذا هي الطريقة العديد من الخطوات بعيدا من 97 65؟ 1391 01:08:32,649 --> 01:08:36,210 حتى 97 ناقص 65 غير 32. 1392 01:08:36,210 --> 01:08:37,910 ولذلك فإن رأس المال هو 65. 1393 01:08:37,910 --> 01:08:39,939 إذا قمت بإضافة 32 إلى ذلك، تحصل أحرف صغيرة أ. 1394 01:08:39,939 --> 01:08:43,729 وعلى نحو مكافئ، إذا طرح 32، تحصل على العودة إلى العاصمة A-- نفسه مع B 1395 01:08:43,729 --> 01:08:46,380 لب قليلا، C كبيرة إلى صغيرة ج. 1396 01:08:46,380 --> 01:08:50,670 >> كل هذه الثغرات هي 32 إربا. 1397 01:08:50,670 --> 01:08:54,450 الآن، ويبدو أن هذا يسمح لنا تفعل شيئا مثل مايكروسوفت وورد، 1398 01:08:54,450 --> 01:08:57,729 أو مستندات جوجل ميزة، حيث كنت ويمكن تحديد كل شيء ثم يقول، 1399 01:08:57,729 --> 01:09:00,520 تغيير كافة إلى أحرف صغيرة أو تغيير جميع لحالة العلوي، 1400 01:09:00,520 --> 01:09:03,840 أو فقط تغيير الكلمة الأولى من جملة إلى الحالة العلوي. 1401 01:09:03,840 --> 01:09:07,390 يمكننا أن نفعل شيئا في الواقع مثل هذا أنفسنا. 1402 01:09:07,390 --> 01:09:12,645 >> اسمحوا لي أن نمضي قدما وحفظ ملف هنا دعا الاستفادة 0.c. 1403 01:09:12,645 --> 01:09:15,770 ودعونا نمضي قدما وجهز برنامج أن تفعل ذلك تماما كما يلي. 1404 01:09:15,770 --> 01:09:18,460 حتى تشمل مكتبة CS50. 1405 01:09:18,460 --> 01:09:21,430 وتشمل معيار I / O. 1406 01:09:21,430 --> 01:09:22,787 >> وأنا أعلم أن هذا قريبا. 1407 01:09:22,787 --> 01:09:24,870 لذلك أنا ذاهب لوضعها في هناك بالفعل، string.h، 1408 01:09:24,870 --> 01:09:26,960 لذلك ليس لدي الوصول إلى أشياء مثل ستيرلينغ، 1409 01:09:26,960 --> 01:09:29,620 ثم كثافة العمليات الفراغ الرئيسي، كالعادة. 1410 01:09:29,620 --> 01:09:33,420 ثم انا ذاهب الى المضي قدما والقيام سلاسل يحصل على سلسلة، 1411 01:09:33,420 --> 01:09:35,032 فقط للحصول على سلسلة من المستخدم. 1412 01:09:35,032 --> 01:09:36,740 ثم انا ذاهب الى تفعل الاختيار التعقل بلدي. 1413 01:09:36,740 --> 01:09:40,510 إذا سلسلة لا يساوي لاغية، ثم انها آمنة والمضي قدما. 1414 01:09:40,510 --> 01:09:42,000 وماذا أريد أن أفعل؟ 1415 01:09:42,000 --> 01:09:48,700 انا ذاهب الى تكرار من ط يساوي 0، ون تصل إلى طول سلسلة من الصورة. 1416 01:09:48,700 --> 01:09:51,899 >> وانا ذاهب الى القيام بذلك طالما أنا أقل من ن، وأنا زائد زائد. 1417 01:09:51,899 --> 01:09:55,060 وحتى الآن، وأنا في الحقيقة مجرد الاقتراض الأفكار من قبل. 1418 01:09:55,060 --> 01:09:57,010 والآن أنا ذاهب إلى بافتتاح فرع. 1419 01:09:57,010 --> 01:09:59,635 >> حتى التفكير في العودة الى نقطة الصفر، حيث كان لدينا تلك الشوك في الطريق، 1420 01:09:59,635 --> 01:10:05,110 والاسبوع الماضي في C. وانا ذاهب ل أقول هذا، وإذا كان الحرف ط ال في الصورة 1421 01:10:05,110 --> 01:10:09,250 أكبر من أو يساوي خفض القضية، 1422 01:10:09,250 --> 01:10:13,340 and-- في خدش لو كنت حرفيا أقول، ولكن في C تقوله العطف، 1423 01:10:13,340 --> 01:10:19,830 ampersand-- وحرف ط ال في الصورة أقل من أو يساوي خفض حالة ض، 1424 01:10:19,830 --> 01:10:21,780 دعونا نفعل شيئا للاهتمام. 1425 01:10:21,780 --> 01:10:27,020 دعونا طباعة فعلا ل شخصية مع أي سطر جديد 1426 01:10:27,020 --> 01:10:31,760 هذا هو حرف في السلسلة، الطابع ط عشر في السلسلة. 1427 01:10:31,760 --> 01:10:37,420 >> ولكن دعونا نمضي قدما و طرح 32 منه. 1428 01:10:37,420 --> 01:10:42,120 آخر إذا كان الحرف في السلسلة التي نحن نبحث 1429 01:10:42,120 --> 01:10:45,950 ليس بين القليل ويذكر ض، والمضي قدما 1430 01:10:45,950 --> 01:10:48,610 وفقط طباعته من دون تغيير. 1431 01:10:48,610 --> 01:10:50,840 لذلك قمنا بعرض هذه الرموز بين قوسين 1432 01:10:50,840 --> 01:10:53,560 سلاسل لدينا للحصول على ط ال حرف في السلسلة. 1433 01:10:53,560 --> 01:10:57,520 >> لقد أضفت بعض المنطق المشروط، مثل الصفر في أسبوع واحد الأسبوع الماضي، حيث 1434 01:10:57,520 --> 01:10:59,880 أنا فقط باستخدام بلدي الأساسية فهم ما هو 1435 01:10:59,880 --> 01:11:01,130 يجري تحت غطاء محرك السيارة. 1436 01:11:01,130 --> 01:11:04,190 هو حرف ط عشر من ليالي أكبر من أو يساوي؟ 1437 01:11:04,190 --> 01:11:08,290 مثل، هل هو 97 أو 98، أو 99، وهكذا دواليك؟ 1438 01:11:08,290 --> 01:11:11,940 >> ولكن هل هو أيضا أقل من أو يساوي إلى قيمة ض صغيرة؟ 1439 01:11:11,940 --> 01:11:16,210 وإذا كان الأمر كذلك، ماذا يعني هذا الخط؟ 1440 01:11:16,210 --> 01:11:20,250 14، وهذا هو نوع من بذرة الفكرة كلها، 1441 01:11:20,250 --> 01:11:23,840 رسملة الرسالة ببساطة طرح 32 منه، 1442 01:11:23,840 --> 01:11:29,370 في هذه الحالة، لأنني أعرف، في أن الرسم البياني، كيف يتم تمثيل أرقام بلدي. 1443 01:11:29,370 --> 01:11:33,925 لذلك دعونا نمضي قدما وتشغيل هذا، بعد تجميع الاستفادة 0.c، 1444 01:11:33,925 --> 01:11:36,210 وتشغيل استفادة 0. 1445 01:11:36,210 --> 01:11:40,300 >> دعونا اكتب في شيء من هذا القبيل Zamyla في كل صغيرة تدخل. 1446 01:11:40,300 --> 01:11:42,780 والآن لدينا Zamyla في كافة الأحرف الكبيرة. 1447 01:11:42,780 --> 01:11:45,050 دعونا اكتب في روب في كل صغيرة. 1448 01:11:45,050 --> 01:11:46,674 دعونا نحاول جيسون في كل صغيرة. 1449 01:11:46,674 --> 01:11:48,590 ونستمر في الحصول على رسملة القسري. 1450 01:11:48,590 --> 01:11:50,960 هناك خلل بسيط أنني نوع من لم تتوقع. 1451 01:11:50,960 --> 01:11:54,050 لاحظ لي موجه الجديد أن ينتهي بهم المطاف على نفس خط أسمائهم، 1452 01:11:54,050 --> 01:11:55,520 الذي يشعر القليل من الفوضى. 1453 01:11:55,520 --> 01:11:59,170 >> لذلك أنا ذاهب للذهاب هنا، و في الواقع في نهاية هذا البرنامج 1454 01:11:59,170 --> 01:12:02,110 طباعة حرف السطر الجديد. 1455 01:12:02,110 --> 01:12:03,160 هذا كل شئ. 1456 01:12:03,160 --> 01:12:06,120 مع printf، لا تحتاج إلى تمر في المتغيرات أو رمز تنسيق. 1457 01:12:06,120 --> 01:12:08,460 يمكنك حرفيا فقط طباعة شيء من هذا القبيل سطر جديد. 1458 01:12:08,460 --> 01:12:13,529 >> لذلك دعونا نمضي قدما وجعل استفادة 0 مرة أخرى، أعد ذلك، Zamyla. 1459 01:12:13,529 --> 01:12:14,820 والآن حان قليلا أجمل. 1460 01:12:14,820 --> 01:12:17,274 الآن يا موجه على الخط الجديد الخاص بها. 1461 01:12:17,274 --> 01:12:18,440 ذلك أن كل شيء على ما يرام وجيدة. 1462 01:12:18,440 --> 01:12:19,910 ولهذا مثال جيد. 1463 01:12:19,910 --> 01:12:22,700 ولكن أنا لا حتى بالضرورة تحتاج إلى رمز الثابت 32. 1464 01:12:22,700 --> 01:12:23,350 أتعلم؟ 1465 01:12:23,350 --> 01:12:26,350 أنا يمكن أن say-- أنا لا من أي وقت مضى تذكر ما هو الفرق. 1466 01:12:26,350 --> 01:12:29,330 >> لكنني أعرف أنني إذا لديهم بريد إلكتروني حالة انخفاض، 1467 01:12:29,330 --> 01:12:34,430 أريد أساسا لطرح قبالة مهما كانت المسافة بين القليل 1468 01:12:34,430 --> 01:12:39,160 ووكبيرة وهناك، لأنه إذا افترض أن كافة الأحرف الأخرى هي نفسها، 1469 01:12:39,160 --> 01:12:41,045 ينبغي أن يحصل على هذه المهمة. 1470 01:12:41,045 --> 01:12:42,670 ولكن بدلا من ذلك، كنت تعرف لماذا؟ 1471 01:12:42,670 --> 01:12:44,240 هناك طريقة أخرى لا يزال. 1472 01:12:44,240 --> 01:12:48,090 >> إذا كان هذا هو الاستفادة 1.c-- كأني لوضع هذا في ملف منفصل. 1473 01:12:48,090 --> 01:12:51,030 دعونا لا تستفيد 2.C على النحو التالي. 1474 01:12:51,030 --> 01:12:53,060 انا ذاهب الى حقا تنظيف هذا هنا. 1475 01:12:53,060 --> 01:12:57,420 وبدلا من الاضطرار إلى تعرف أو يهتمون تلك مستوى منخفض 1476 01:12:57,420 --> 01:13:01,090 تفاصيل التنفيذ، وأنا بدلا من ذلك مجرد الذهاب لطباعة حرف، 1477 01:13:01,090 --> 01:13:04,610 الإقتباس، في المئة C، و ثم استدعاء دالة أخرى 1478 01:13:04,610 --> 01:13:09,950 موجود يأخذ حجة، وهو حرف، مثل هذا. 1479 01:13:09,950 --> 01:13:12,630 >> اتضح في C، هناك استدعاء دالة أخرى 1480 01:13:12,630 --> 01:13:15,550 إلى الأعلى، والذي كما يبدو من اسمها يشير يأخذ الطابع 1481 01:13:15,550 --> 01:13:19,350 ويجعل من لحالة العلوية ما يعادلها، ثم يعيدها 1482 01:13:19,350 --> 01:13:21,410 بحيث printf يمكن سد العجز في هناك. 1483 01:13:21,410 --> 01:13:25,484 وذلك للقيام بذلك، على الرغم من أنني تحتاج إلى إدخال ملف واحد آخر. 1484 01:13:25,484 --> 01:13:28,400 اتضح هناك ملف آخر ان كنت أعرف فقط من الطبقة، 1485 01:13:28,400 --> 01:13:33,020 أو كتاب، أو على الانترنت إشارة، يسمى C type.h. 1486 01:13:33,020 --> 01:13:38,570 >> حتى إذا كان لي أن أضيف أن يصل بين رأس بلدي ملفات، والآن إعادة تجميع هذا البرنامج، 1487 01:13:38,570 --> 01:13:43,040 capitalize2، ./capitalize2 أدخل. 1488 01:13:43,040 --> 01:13:46,690 دعونا اكتب في Zamyla في كل صغيرة، لا يزال يعمل نفس الشيء. 1489 01:13:46,690 --> 01:13:48,040 ولكن هل تعرف لماذا؟ 1490 01:13:48,040 --> 01:13:55,590 وتبين أن لالعلوي لديها بعض الوظائف الأخرى. 1491 01:13:55,590 --> 01:13:58,410 >> واسمحوا لي أن أعرض هذا قيادة هنا، نوع من برعونة 1492 01:13:58,410 --> 01:14:00,250 اسمه، ولكن الرجل لدليل. 1493 01:14:00,250 --> 01:14:03,960 وتبين أن معظم أجهزة الكمبيوتر لينكس، كما أننا نستخدم here-- لينكس التشغيل 1494 01:14:03,960 --> 01:14:06,270 system-- ديك أمر دعا الرجل، الذي يقول: 1495 01:14:06,270 --> 01:14:08,530 مهلا، الكمبيوتر، أعطني دليل الكمبيوتر. 1496 01:14:08,530 --> 01:14:10,680 ماذا تريد ان بحث عن في هذا الدليل؟ 1497 01:14:10,680 --> 01:14:13,840 >> أريد للبحث عن وظيفة ودعا إلى الأعلى، أدخل. 1498 01:14:13,840 --> 01:14:16,070 وانها خفي قليلا لقراءة بعض الأحيان. 1499 01:14:16,070 --> 01:14:18,780 ولكن لاحظ أننا في دليل لينكس مبرمج. 1500 01:14:18,780 --> 01:14:19,530 والأمر كله النص. 1501 01:14:19,530 --> 01:14:21,905 وتلاحظ أن هناك ل اسم وظيفة هنا. 1502 01:14:21,905 --> 01:14:25,030 اتضح لها ابن عم يدعى لخفض، والتي لا العكس. 1503 01:14:25,030 --> 01:14:29,710 والإشعار المنصوص عليه في ملخص، لاستخدام هذه تعمل صفحة الرجل، إذا جاز التعبير، 1504 01:14:29,710 --> 01:14:32,220 وتقول لي بأنني تحتاج إلى تضمين ج type.h. 1505 01:14:32,220 --> 01:14:33,630 وكنت أعرف أنه من الناحية العملية. 1506 01:14:33,630 --> 01:14:36,210 >> هنا، انها تظهر لي اثنين نماذج لوظيفة، 1507 01:14:36,210 --> 01:14:39,070 بحيث إذا أريد من أي وقت مضى لاستخدام هذه وأنا أعلم ما يأخذونه كمدخل، 1508 01:14:39,070 --> 01:14:40,652 وما يعودون كإخراج. 1509 01:14:40,652 --> 01:14:42,360 ثم إذا قرأت وصف، أرى 1510 01:14:42,360 --> 01:14:44,820 بمزيد من التفصيل ما لا وظيفة. 1511 01:14:44,820 --> 01:14:48,100 ولكن الأهم من ذلك، إذا أنا أنظر تحت قيمة الإرجاع، 1512 01:14:48,100 --> 01:14:51,710 تقول ان القيمة التي تم إرجاعها أن الرسالة المحولة، 1513 01:14:51,710 --> 01:14:57,880 أو C، وإدخال الأصلي، إذا كان كان تحويل غير ممكن. 1514 01:14:57,880 --> 01:15:01,992 >> وبعبارة أخرى، سيحاول العلوي تحويل بريد إلكتروني إلى الحالة العلوي. 1515 01:15:01,992 --> 01:15:03,450 وإذا كان الأمر كذلك، فإنه سيكون لإعادته. 1516 01:15:03,450 --> 01:15:07,010 ولكن إذا كان لا يمكن لبعض reason-- ربما انها حالة العلوي بالفعل، 1517 01:15:07,010 --> 01:15:09,550 ربما انها علامة تعجب أو بعض punctuation-- الآخر 1518 01:15:09,550 --> 01:15:12,200 انها مجرد الذهاب الى إعادة C الأصلي، 1519 01:15:12,200 --> 01:15:17,340 وهو ما يعني أنني يمكن أن تجعل قانون بلدي مصممة بشكل أفضل على النحو التالي. 1520 01:15:17,340 --> 01:15:20,580 >> أنا لا تحتاج الى كل من هذه الخطوط الرتق من التعليمات البرمجية. 1521 01:15:20,580 --> 01:15:22,610 جميع خطوط لدي سلط الضوء فقط يمكن 1522 01:15:22,610 --> 01:15:28,700 أن انهارت إلى مجرد واحدة بسيطة الخط، الذي هو this-- printf في المئة 1523 01:15:28,700 --> 01:15:33,510 ج إلى S قوس العلوي ط. 1524 01:15:33,510 --> 01:15:36,090 وهذا من شأنه أن يكون مثال على تصميم أفضل. 1525 01:15:36,090 --> 01:15:40,040 >> لماذا تنفيذها في 7 أو 8 خطوط من التعليمات البرمجية، مهما كان أنا فقط 1526 01:15:40,040 --> 01:15:44,960 حذف، عند يمكن أن تنهار بدلا من ذلك كل هذا صنع المنطق والقرار 1527 01:15:44,960 --> 01:15:49,620 في خط واحد، 13 الآن، أن تعتمد على مكتبة function-- 1528 01:15:49,620 --> 01:15:53,430 وظيفة التي تأتي مع C، ولكن هذا يفعل بالضبط ما تريد أن تفعله. 1529 01:15:53,430 --> 01:15:55,295 وبصراحة، حتى لو أنه لم يأت مع C، 1530 01:15:55,295 --> 01:15:58,880 هل يمكن تنفيذ ذلك بنفسك، كما رأيناه، مع الحصول على كثافة سلبي 1531 01:15:58,880 --> 01:16:01,700 والحصول على كثافة العمليات إيجابي في الأسبوع الماضي أيضا. 1532 01:16:01,700 --> 01:16:03,470 >> هذا الرمز هو الآن أكثر قابلية للقراءة الكثير. 1533 01:16:03,470 --> 01:16:06,670 و، في الواقع، إذا كان لنا أن انتقل لأعلى، انظروا كيف أكثر إحكاما بكثير 1534 01:16:06,670 --> 01:16:08,360 هذا الإصدار من برنامج بلدي. 1535 01:16:08,360 --> 01:16:11,230 انها ثقيلة أعلى قليلا الآن، مع كل هذه تشمل. 1536 01:16:11,230 --> 01:16:14,380 ولا بأس بهذا، لأنه الآن أنا واقف على أكتاف من المبرمجين 1537 01:16:14,380 --> 01:16:15,300 قبلي. 1538 01:16:15,300 --> 01:16:18,440 وأيا كان الذي نفذت إلى الأعلى حقا 1539 01:16:18,440 --> 01:16:21,470 فعل لي معروفا، مثل الكثير من نفذت ستيرلينغ حقا 1540 01:16:21,470 --> 01:16:24,790 فعل لي معروفا منذ بعض الوقت. 1541 01:16:24,790 --> 01:16:26,970 وحتى الآن لدينا برنامج تصميم أفضل 1542 01:16:26,970 --> 01:16:31,680 التي تطبق المنطق نفسه بالضبط. 1543 01:16:31,680 --> 01:16:35,580 >> يتحدث من ستيرلينغ، اسمحوا لي نمضي قدما ونفعل هذا. 1544 01:16:35,580 --> 01:16:38,320 اسمحوا لي أن المضي قدما وحفظ هذا الملف كما stirling.c. 1545 01:16:38,320 --> 01:16:43,255 واتضح، يمكننا أن قشر العودة طبقة واحدة أخرى جميلة ببساطة الآن. 1546 01:16:43,255 --> 01:16:45,630 انا ذاهب الى المضي قدما وسوط حتى برنامج آخر في main 1547 01:16:45,630 --> 01:16:49,759 هنا أن مجرد إعادة الأدوات طول سلسلة النحو التالي. 1548 01:16:49,759 --> 01:16:52,300 حتى هنا سطر من التعليمات البرمجية التي يحصل لي سلسلة من المستخدم. 1549 01:16:52,300 --> 01:16:53,910 واصلنا استخدام هذا مرارا وتكرارا. 1550 01:16:53,910 --> 01:16:58,900 اسمحوا لي أن أقدم نفسي متغير يسمى ن من نوع int الذي يقوم بتخزين رقم. 1551 01:16:58,900 --> 01:17:02,490 >> واسمحوا لي أن المضي قدما في القيام منطق التالية. 1552 01:17:02,490 --> 01:17:15,610 في حين لا الطابع ن عشر في الصورة لا يساوي مائل 0، والمضي قدما 1553 01:17:15,610 --> 01:17:17,930 وزيادة ن. 1554 01:17:17,930 --> 01:17:23,506 ومن ثم طباعة printf في المئة ط ن. 1555 01:17:23,506 --> 01:17:29,200 أزعم أن هذا البرنامج هنا، دون استدعاء طول السلسلة، 1556 01:17:29,200 --> 01:17:31,150 الأرقام على طول السلسلة. 1557 01:17:31,150 --> 01:17:34,600 >> والسحر هو تماما مغلفة في خط 8 1558 01:17:34,600 --> 01:17:39,830 هنا مع ما يشبه تركيب جديد، هذا مائل 0 في علامات الاقتباس المفردة. 1559 01:17:39,830 --> 01:17:41,360 ولكن لماذا هذا؟ 1560 01:17:41,360 --> 01:17:44,100 حسنا، والنظر في ما كان يحدث كل هذا الوقت. 1561 01:17:44,100 --> 01:17:47,990 >> وبوصفها جانبا قبل أن أنسى، وتحقيق أيضا، أنه بالإضافة إلى صفحات الرجل 1562 01:17:47,990 --> 01:17:50,920 التي تأتي مع نموذجي نظام لينكس مثل CS50 IDE، 1563 01:17:50,920 --> 01:17:53,770 ندرك أننا، في الموظفين بطبيعة الحال، ويكون أيضا 1564 01:17:53,770 --> 01:17:56,030 قدم الموقع نسخة هذه الفكرة ذاتها تسمى 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net، التي لديها كل تلك الصفحات الرجل نفسه، 1566 01:17:59,940 --> 01:18:02,020 كل ذلك نفسه الوثائق، وكذلك 1567 01:18:02,020 --> 01:18:05,730 قليلا مربع في الجزء العلوي الذي يسمح لك لتحويل جميع إلى حد ما 1568 01:18:05,730 --> 01:18:09,025 لغة غامضة إلى أقل راحة الوضع، حيث نحن، أعضاء هيئة التدريس، 1569 01:18:09,025 --> 01:18:12,150 مرت وحاولت تبسيط بعض من لغة لابقاء الامور 1570 01:18:12,150 --> 01:18:14,830 ركز على الأفكار، وليس بعض الجوانب التقنية. 1571 01:18:14,830 --> 01:18:20,070 لذلك نضع في اعتبارنا، reference.cs50.net كما مورد آخر كذلك. 1572 01:18:20,070 --> 01:18:23,800 >> ولكن لماذا يعمل طول السلسلة في الطريق اقترحت قبل لحظة؟ 1573 01:18:23,800 --> 01:18:25,160 وهنا اسم Zamyla مرة أخرى. 1574 01:18:25,160 --> 01:18:27,690 وهنا اسم Zamyla ل محاصر في، وأظل به، 1575 01:18:27,690 --> 01:18:31,360 أن ترسم صورة لكونها، في الواقع، مجرد سلسلة من الأحرف. 1576 01:18:31,360 --> 01:18:34,260 لكن Zamyla غير موجود في العزلة في البرنامج. 1577 01:18:34,260 --> 01:18:37,420 >> عند كتابة وتشغيل البرنامج، كنت تستخدم جهاز ماكنتوش أو جهاز الكمبيوتر الخاص بك 1578 01:18:37,420 --> 01:18:40,010 كما الذاكرة، ذاكرة الوصول العشوائي أو إذا جاز التعبير. 1579 01:18:40,010 --> 01:18:42,620 ويمكن ان يخطر لك جهاز الكمبيوتر الخاص بك وجود 1580 01:18:42,620 --> 01:18:44,730 الكثير من غيغا بايت من الذاكرة في هذه الأيام. 1581 01:18:44,730 --> 01:18:47,700 وأزعج يعني المليارات، حتى مليارات بايت. 1582 01:18:47,700 --> 01:18:48,910 >> ولكن دعونا الترجيع في الوقت المناسب. 1583 01:18:48,910 --> 01:18:51,530 ونفترض أن نستخدمه كمبيوتر قديمة حقا أن 1584 01:18:51,530 --> 01:18:55,150 لديها 32 بايت من الذاكرة فقط. 1585 01:18:55,150 --> 01:18:59,310 أستطيع، على شاشة الكمبيوتر، ببساطة رسم هذا على النحو التالي. 1586 01:18:59,310 --> 01:19:05,240 >> ويمكنني أن أقول ببساطة أن بلدي كان جهاز الكمبيوتر كل من هذه الذاكرة. 1587 01:19:05,240 --> 01:19:08,830 وهذا هو مثل عصا الذاكرة، إذا تذكرون لدينا صورة من آخر مرة. 1588 01:19:08,830 --> 01:19:11,670 وإذا كنت مجرد تقسيم هذا في مرات كافية، 1589 01:19:11,670 --> 01:19:15,040 أزعم أن لدي 32 بايت من الذاكرة على الشاشة. 1590 01:19:15,040 --> 01:19:18,239 >> الآن، في الواقع، لا يسعني الا رسم حتى الآن على هذه الشاشة هنا. 1591 01:19:18,239 --> 01:19:20,280 لذلك أنا ذاهب إلى المضي قدما، وفقط من خلال الاتفاقية، 1592 01:19:20,280 --> 01:19:24,050 رسم ذاكرة جهاز الكمبيوتر الخاص بي باعتبارها الشبكة، وليس خط تماما كما مستقيم واحد. 1593 01:19:24,050 --> 01:19:28,190 على وجه التحديد، ويدعون الآن بأن هذه الشبكة، وهذا 8 من 4 الشبكة، 1594 01:19:28,190 --> 01:19:31,800 يمثل فقط كل بايت 32 من الذاكرة المتوفرة في جهاز Mac، 1595 01:19:31,800 --> 01:19:33,030 أو متوفرة في جهاز الكمبيوتر الخاص بي. 1596 01:19:33,030 --> 01:19:34,780 وانهم التفاف إلى خطين، فقط 1597 01:19:34,780 --> 01:19:38,030 لانه يناسب أكثر على الشاشة. 1598 01:19:38,030 --> 01:19:40,800 ولكن هذا هو البايت الأول. 1599 01:19:40,800 --> 01:19:41,990 هذا هو البايت الثاني. 1600 01:19:41,990 --> 01:19:43,300 هذا هو البايت الثالث. 1601 01:19:43,300 --> 01:19:45,310 >> وهذا هو البايت ال32. 1602 01:19:45,310 --> 01:19:52,910 أو، إذا كنا نعتقد مثل الكمبيوتر عالم، وهذا هو بايت 0، 1، 2، 3، 31. 1603 01:19:52,910 --> 01:19:55,950 ولذلك عليك 0-31، إذا بدء العد عند 0. 1604 01:19:55,950 --> 01:19:59,830 >> لذلك إذا أردنا استخدام برنامج أن المكالمات الحصول على سلسلة، 1605 01:19:59,830 --> 01:20:05,280 ونحصل على سلسلة من الإنسان وكأنني لم يطلق Zamyla، Z-A-M-Y-L-A، 1606 01:20:05,280 --> 01:20:09,430 كيف في العالم يفعل الحفاظ على جهاز الكمبيوتر المسار الذي بايت، 1607 01:20:09,430 --> 01:20:12,230 التي قطعة من الذاكرة، ينتمي إلى أي سلسلة؟ 1608 01:20:12,230 --> 01:20:16,270 وبعبارة أخرى، إذا كان لنا أن نشرع في اكتب اسم آخر في الكمبيوتر، 1609 01:20:16,270 --> 01:20:19,890 مثل هذا اندى، داعيا الحصول على سلسلة مرة ثانية، 1610 01:20:19,890 --> 01:20:23,030 A-N-D-I لديها في نهاية المطاف في ذاكرة الكمبيوتر أيضا. 1611 01:20:23,030 --> 01:20:23,850 ولكن كيف؟ 1612 01:20:23,850 --> 01:20:29,700 >> حسنا، كما تبين أن تحت غطاء محرك السيارة، ما C يفعل عند تخزين سلاسل 1613 01:20:29,700 --> 01:20:35,080 أن أنواع الإنسان في، أو أن تأتي من مصدر آخر، هو 1614 01:20:35,080 --> 01:20:39,190 يحدد نهاية لها خط مائل عكسي character-- خاص 1615 01:20:39,190 --> 01:20:44,750 0، والذي هو مجرد وسيلة خاصة من يقول 80 بت على التوالي. 1616 01:20:44,750 --> 01:20:47,950 >> حتى A-- هذا هو استدعاء عدد 97. 1617 01:20:47,950 --> 01:20:51,770 وحتى بعض نمط من 8 بت يمثل الرقم العشري 97. 1618 01:20:51,770 --> 01:20:58,070 هذا مائل 0 حرفيا عدد 0، NUL يعرف أيضا باسم، N-U-L، على عكس السابق، 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L، الذي تحدثنا عنه. 1620 01:20:59,630 --> 01:21:05,700 ولكن الآن، ونعرف تماما أن هذا مائل 0 هو فقط 80 بت على التوالي. 1621 01:21:05,700 --> 01:21:09,810 >> وانها مجرد هذا الخط في الرمال التي يقول أي شيء إلى اليسار 1622 01:21:09,810 --> 01:21:12,610 ينتمي إلى سلسلة واحدة، أو نوع بيانات واحدة. 1623 01:21:12,610 --> 01:21:15,480 وأي شيء إلى اليمين ينتمي إلى شيء آخر. 1624 01:21:15,480 --> 01:21:17,440 اندى اسم، وفي الوقت نفسه، الذي فقط بصريا 1625 01:21:17,440 --> 01:21:21,310 يحدث التفاف إلى الخط الآخر، ولكن هذا مجرد تفصيل الجمالية، 1626 01:21:21,310 --> 01:21:23,990 وبالمثل تم NUL إنهاء. 1627 01:21:23,990 --> 01:21:29,290 >> بل هو سلسلة من الأحرف A-N-D-I، بالإضافة إلى الطابع السري الخامس، 1628 01:21:29,290 --> 01:21:33,560 كل 0 بت، أن ترسم فقط نهاية اسم اندى كذلك. 1629 01:21:33,560 --> 01:21:37,120 وإذا كنا ندعو الحصول على سلسلة للمرة الثالثة في الكمبيوتر للحصول على سلسلة مثل 1630 01:21:37,120 --> 01:21:44,210 ماريا، M-A-R-I-A، وبالمثل هي ماريا اسم NUL إنهاء مع مائل 0. 1631 01:21:44,210 --> 01:21:47,170 >> هذا يختلف اختلافا جذريا من كيف يمكن أن جهاز كمبيوتر عادة 1632 01:21:47,170 --> 01:21:51,850 تخزين عدد صحيح أو عدد عشري، أو غيرها أنواع البيانات لا يزال، لاستدعاء، 1633 01:21:51,850 --> 01:21:57,420 عدد صحيح هو عادة 32 بت، أو 4 بايت، أو ربما حتى 64 بت، 1634 01:21:57,420 --> 01:21:59,100 أو ثمانية بايت. 1635 01:21:59,100 --> 01:22:02,620 ولكن العديد من الأوليات في الكمبيوتر في لغة البرمجة 1636 01:22:02,620 --> 01:22:05,550 تحتوي على عدد ثابت من بايت تحت hood-- 1637 01:22:05,550 --> 01:22:08,100 ربما 1، ربما 2، ربما 4، ربما 8. 1638 01:22:08,100 --> 01:22:13,250 >> ولكن السلاسل، حسب التصميم، لديها عدد حيوية من الأحرف. 1639 01:22:13,250 --> 01:22:16,980 كنت لا تعرف مقدما، حتى أنواع الإنسان في Z-A-M-Y-L-A، 1640 01:22:16,980 --> 01:22:21,400 أو M-A-R-I-A أو A-N-D-I. كنت لا تعرف كم مرة كان المستخدم هو الذهاب الى ضرب 1641 01:22:21,400 --> 01:22:22,070 لوحة المفاتيح. 1642 01:22:22,070 --> 01:22:26,490 لذلك، لا أعرف كيف شخصيات عديدة مقدما 1643 01:22:26,490 --> 01:22:27,540 وأنت تسير في حاجة. 1644 01:22:27,540 --> 01:22:31,840 >> وهكذا C مجرد نوع من يترك مثل التفصيلي السري تحت غطاء محرك السيارة 1645 01:22:31,840 --> 01:22:32,960 في نهاية السلسلة. 1646 01:22:32,960 --> 01:22:39,280 بعد تخزين Z-A-M-Y-L-A في الذاكرة، كما أنه يضع فقط أي ما يعادل 1647 01:22:39,280 --> 01:22:40,210 من فترة. 1648 01:22:40,210 --> 01:22:45,060 في نهاية الجملة، أنه يضع 80 بت، وذلك 1649 01:22:45,060 --> 01:22:49,120 لنتذكر فيها Zamyla يبدأ وينتهي. 1650 01:22:49,120 --> 01:22:51,490 >> فما هي الصدد، بعد ذلك، لهذا البرنامج؟ 1651 01:22:51,490 --> 01:22:55,190 هذا البرنامج هنا، ستيرلينغ، هو مجرد آلية 1652 01:22:55,190 --> 01:22:57,970 للحصول على سلسلة من المستخدم، خط 6. 1653 01:22:57,970 --> 01:23:01,160 السطر 7، أعلن متغير دعا ن وضعه يساوي 0. 1654 01:23:01,160 --> 01:23:08,680 >> ثم في خط 8، وأنا ببساطة طلب من السؤال، في حين أن حرف ن ال يفعل 1655 01:23:08,680 --> 01:23:12,120 لا تساوي جميع 0 bits-- وبعبارة أخرى، لا 1656 01:23:12,120 --> 01:23:14,500 يساوي هذا خاص الطابع، مائل 0، والذي 1657 01:23:14,500 --> 01:23:18,470 كان مجرد أن character-- NUL خاص والمضي قدما في مجرد زيادة ن. 1658 01:23:18,470 --> 01:23:21,460 >> والحفاظ على القيام بذلك، والحفاظ على القيام بذلك، والحفاظ على القيام بذلك. 1659 01:23:21,460 --> 01:23:23,430 وذلك حتى وإن كان في في الماضي كنا قد استخدمت ط، 1660 01:23:23,430 --> 01:23:25,181 أنه بخير تماما لغويا لاستخدام ن، 1661 01:23:25,181 --> 01:23:27,430 إذا كنت مجرد محاولة ل عد هذه المرة عن قصد، 1662 01:23:27,430 --> 01:23:28,720 ونريد فقط أن نسميها ن. 1663 01:23:28,720 --> 01:23:34,720 ولذلك فإن هذا يبقى مجرد طرح السؤال، هو الحرف ن عشر من ليالي كل 0S؟ 1664 01:23:34,720 --> 01:23:38,470 إن لم يكن، ونتطلع إلى نظرة المقبل، ننظر إلى أخرى، ونتطلع إلى اليوم التالي، 1665 01:23:38,470 --> 01:23:39,460 ننظر إلى أخرى. 1666 01:23:39,460 --> 01:23:45,540 >> ولكن بمجرد أن ترى مائل 0، هذا الخط loop-- من 9 إلى 11-- يتوقف. 1667 01:23:45,540 --> 01:23:49,640 يمكنك الخروج من حلقة في حين، ترك داخل أن ن متغير 1668 01:23:49,640 --> 01:23:54,530 العد الكلي للجميع الأحرف في سلسلة رأيت، 1669 01:23:54,530 --> 01:23:55,660 وبالتالي طباعته. 1670 01:23:55,660 --> 01:23:56,760 لذلك دعونا نحاول هذا. 1671 01:23:56,760 --> 01:23:59,500 >> اسمحوا لي أن المضي قدما، ودون باستخدام وظيفة ستيرلينغ، 1672 01:23:59,500 --> 01:24:04,240 ولكن فقط باستخدام بلدي نسخة محلية الخاصة هنا دعا ستيرلينغ، اسمحوا لي أن المضي قدما 1673 01:24:04,240 --> 01:24:07,700 وتشغيل ستيرلينغ، ونوع في شيء مثل Zamyla، والتي أعلم مقدما 1674 01:24:07,700 --> 01:24:08,670 هو ستة أحرف. 1675 01:24:08,670 --> 01:24:10,080 دعونا نرى ما اذا كان يعمل. 1676 01:24:10,080 --> 01:24:10,920 في الواقع، انها ستة. 1677 01:24:10,920 --> 01:24:15,257 دعونا نحاول مع روب، ثلاثة أحرف، ثلاثة أحرف كذلك، وهكذا دواليك. 1678 01:24:15,257 --> 01:24:17,340 ذلك أن كل ما يحدث تحت غطاء محرك السيارة. 1679 01:24:17,340 --> 01:24:19,548 وتلاحظ الاتصالات، ثم، مع الأسبوع الأول 1680 01:24:19,548 --> 01:24:22,370 الطبقة، حيث تحدثنا عن شيء من هذا القبيل التجريد، 1681 01:24:22,370 --> 01:24:26,960 الذي هو مجرد هذه الطبقات من الأفكار، أو التعقيد، وعلى رأس من المبادئ الأساسية. 1682 01:24:26,960 --> 01:24:30,710 هنا، نحن نوع من البحث تحت غطاء محرك السيارة من ستيرلينغ، 1683 01:24:30,710 --> 01:24:33,510 إذا جاز التعبير، لمعرفة، كيف سيتم تنفيذ ذلك؟ 1684 01:24:33,510 --> 01:24:35,232 >> ويمكن أن يعاد تنفيذها أنفسنا. 1685 01:24:35,232 --> 01:24:37,440 لكننا أبدا مرة أخرى يذهب لإعادة تنفيذ ستيرلينغ. 1686 01:24:37,440 --> 01:24:39,780 نحن ذاهبون لمجرد استخدام ستيرلينغ من أجل 1687 01:24:39,780 --> 01:24:42,100 في الواقع للحصول على بعض طول السلاسل. 1688 01:24:42,100 --> 01:24:44,200 >> ولكن ليس هناك سحر تحت غطاء محرك السيارة. 1689 01:24:44,200 --> 01:24:46,716 إذا كنت تعرف أن تحت غطاء محرك السيارة، سلسلة 1690 01:24:46,716 --> 01:24:48,090 هو مجرد سلسلة من الأحرف. 1691 01:24:48,090 --> 01:24:51,090 وأن سلسلة من الأحرف جميع يمكن معالجتها رقميا 1692 01:24:51,090 --> 01:24:53,330 مع قوس 0، قوس 1، 2 قوس، وأنت 1693 01:24:53,330 --> 01:24:57,420 نعرف أن في نهاية سلسلة هو طابع خاص، يمكنك معرفة 1694 01:24:57,420 --> 01:25:01,710 كيفية القيام معظم أي شيء في برنامج، لأن كل ما يتلخص 1695 01:25:01,710 --> 01:25:03,400 والقراءة والكتابة ذاكرة. 1696 01:25:03,400 --> 01:25:06,130 وهذا هو، وتغيير والتطلع في الذاكرة، أو نقل الأشياء 1697 01:25:06,130 --> 01:25:10,940 حولها في الذاكرة، والأشياء الطباعة على الشاشة، وهكذا دواليك. 1698 01:25:10,940 --> 01:25:14,800 >> لذلك دعونا الآن استخدام هذا المكتشف حديثا فهم ما السلاسل الواقع 1699 01:25:14,800 --> 01:25:17,910 هي تحت غطاء محرك السيارة، و قشر العودة طبقة واحدة أخرى 1700 01:25:17,910 --> 01:25:20,080 ان ما يصل حتى الآن قمنا تم تجاهل تماما. 1701 01:25:20,080 --> 01:25:22,650 ولا سيما، في أي وقت لقد نفذت البرنامج، 1702 01:25:22,650 --> 01:25:25,930 لقد كان لدينا هذا سطر من التعليمات البرمجية بالقرب من أعلى معلنا الرئيسية. 1703 01:25:25,930 --> 01:25:27,810 ولقد محدد الفراغ الرئيسي كثافة العمليات. 1704 01:25:27,810 --> 01:25:31,240 >> وهذا الفراغ داخل الأقواس لديها كنا نقول كل هذا الوقت الذي الرئيسية 1705 01:25:31,240 --> 01:25:33,440 نفسه لا يأخذ أية وسائط. 1706 01:25:33,440 --> 01:25:36,210 أي مساهمة أن الرئيسي هو ذاهب للحصول على من المستخدم 1707 01:25:36,210 --> 01:25:39,020 يجب أن يأتي من بعض الدول الاخرى آلية، مثل الحصول على كثافة العمليات، 1708 01:25:39,020 --> 01:25:42,040 أو الحصول على تعويم، أو الحصول على سلسلة، أو بعض وظيفة أخرى. 1709 01:25:42,040 --> 01:25:44,710 ولكن تبين أن عند كتابة برنامج، 1710 01:25:44,710 --> 01:25:47,690 يمكنك تحديد الواقع أن تقوم هذا البرنامج 1711 01:25:47,690 --> 01:25:51,730 تأخذ المدخلات من الإنسان في سطر الأوامر نفسها. 1712 01:25:51,730 --> 01:25:56,310 >> وبعبارة أخرى، على الرغم من أننا حتى الآن تم تشغيل فقط ./hello مرحبا 1713 01:25:56,310 --> 01:26:00,312 أو برامج مماثلة، كل من البرامج الأخرى التي كنا استخدام، 1714 01:26:00,312 --> 01:26:02,770 أننا أنفسنا لم يكتب، وقد تم أخذ، على ما يبدو، 1715 01:26:02,770 --> 01:26:05,210 arguments-- سطر الأوامر أشياء مثل جعل. 1716 01:26:05,210 --> 01:26:07,450 تقول شيئا مثل جعل، وبعد ذلك الكلمة الثانية. 1717 01:26:07,450 --> 01:26:10,950 أو رنة، ويقول لك رنة، ثم والكلمة الثانية، واسم الملف. 1718 01:26:10,950 --> 01:26:14,410 >> أو حتى RM أو CP، كما قد شهدت أو استخدامها بالفعل 1719 01:26:14,410 --> 01:26:15,880 لإزالة الملفات أو نسخها. 1720 01:26:15,880 --> 01:26:18,920 كل تلك اتخاذ ما يسمى arguments-- سطر الأوامر 1721 01:26:18,920 --> 01:26:21,130 كلمات إضافية في موجه المحطة. 1722 01:26:21,130 --> 01:26:23,260 لكن حتى الآن، ونحن لم يكن لأنفسنا 1723 01:26:23,260 --> 01:26:27,080 هذا الترف اتخاذ مدخلات من المستخدم عند تشغيل هو أو هي في الواقع 1724 01:26:27,080 --> 01:26:29,120 البرنامج نفسه في سطر الأوامر. 1725 01:26:29,120 --> 01:26:33,710 >> ولكن يمكننا أن نفعل ذلك من خلال إعادة إعلان الانتقال الرئيسي إلى الأمام، لا وجود 1726 01:26:33,710 --> 01:26:36,750 باطلة بين قوسين، لكن هذه الحجج اثنين 1727 01:26:36,750 --> 01:26:40,600 instead-- أول عدد صحيح، وشيء ثاني 1728 01:26:40,600 --> 01:26:44,170 الجديد، وهو الأمر الذي نحن في طريقنا للاتصال صفيف، شيئا من هذا القبيل في روح 1729 01:26:44,170 --> 01:26:49,220 إلى ما رأيناه في خدش كقائمة، ولكن مجموعة من السلاسل، كما سنرى قريبا. 1730 01:26:49,220 --> 01:26:51,790 ولكن دعونا نرى ذلك من خلال على سبيل المثال، قبل أن 1731 01:26:51,790 --> 01:26:53,690 نميز تماما ما يعنيه ذلك. 1732 01:26:53,690 --> 01:26:56,520 >> حتى إذا ذهبت إلى CS50 IDE هنا، لقد ذهبت إلى الأمام 1733 01:26:56,520 --> 01:27:01,840 وأعلن في ملف يسمى argv0.c القالب التالي. 1734 01:27:01,840 --> 01:27:04,120 ولاحظ أن الشيء الوحيد وهذا مختلف حتى الآن 1735 01:27:04,120 --> 01:27:08,570 هو أنني قمت بتغيير باطل لكثافة العمليات ARGC سلسلة ARGV قوس مفتوح، على مقربة 1736 01:27:08,570 --> 01:27:09,070 قوس. 1737 01:27:09,070 --> 01:27:11,730 وتلاحظ في الوقت الراهن، هناك لا شيء داخل تلك الأقواس. 1738 01:27:11,730 --> 01:27:12,620 >> ليس هناك عدد. 1739 01:27:12,620 --> 01:27:15,070 وهناك لا أنا، أو ن، أو أي حرف آخر. 1740 01:27:15,070 --> 01:27:17,010 أنا فقط باستخدام بين قوسين معقوفين في الوقت الراهن، 1741 01:27:17,010 --> 01:27:19,510 لأسباب سنأتي العودة إليها في مجرد لحظة. 1742 01:27:19,510 --> 01:27:21,330 >> والآن ما انا ذاهب الى القيام به هو هذا. 1743 01:27:21,330 --> 01:27:26,680 إذا يساوي ARGC يساوي 2-- وأذكر أن يساوي متساوين 1744 01:27:26,680 --> 01:27:30,040 هي المشغل المساواة مقارنة اليسار واليمين من أجل المساواة. 1745 01:27:30,040 --> 01:27:31,790 انها ليست مهمة المشغل، الذي هو 1746 01:27:31,790 --> 01:27:36,510 يساوي واحد، مما يعني نسخة من اليمين إلى اليسار بعض القيمة. 1747 01:27:36,510 --> 01:27:42,840 >> إذا يساوي ARGC يساوي 2، أريد أن مثلا، printf، مرحبا، النسب المئوية، سطر جديد 1748 01:27:42,840 --> 01:27:47,340 ثم قم بتوصيل in-- وهنا الجديد trick-- ARGV قوس 1، لأسباب 1749 01:27:47,340 --> 01:27:48,840 أننا سوف نعود إليها في لحظة. 1750 01:27:48,840 --> 01:27:52,110 آخر إذا ARGC لا يساوي 2، وانت تعرف ماذا؟ 1751 01:27:52,110 --> 01:27:57,400 دعونا المضي قدما، وكالعادة، طباعة من مرحبا العالم دون تبديل. 1752 01:27:57,400 --> 01:28:02,710 >> لذلك يبدو أنه إذا ARGC، التي لتقف على عدد حجة، يساوي 2، 1753 01:28:02,710 --> 01:28:04,740 انا ذاهب الى طباعة مرحبا شيء أو غيرها. 1754 01:28:04,740 --> 01:28:07,560 خلاف ذلك، افتراضيا، وأنا الذهاب لطباعة مرحبا العالم. 1755 01:28:07,560 --> 01:28:08,770 فماذا يعني هذا؟ 1756 01:28:08,770 --> 01:28:15,550 >> حسنا، اسمحوا لي أن المضي قدما وحفظ هذا الملف، ومن ثم لا تجعل argv0، 1757 01:28:15,550 --> 01:28:18,940 ثم ./argv0، أدخل. 1758 01:28:18,940 --> 01:28:20,300 ويقول مرحبا العالم. 1759 01:28:20,300 --> 01:28:21,260 الآن، لماذا؟ 1760 01:28:21,260 --> 01:28:24,730 >> حسنا، كما تبين في أي وقت كنت تشغيل برنامج في سطر الأوامر، 1761 01:28:24,730 --> 01:28:29,570 كنت ملء ما سنقوم دعوة عامة متجه حجة. 1762 01:28:29,570 --> 01:28:33,100 وبعبارة أخرى، تلقائيا الكمبيوتر، نظام التشغيل، 1763 01:28:33,100 --> 01:28:38,340 سوف يسلم إلى برنامجك نفسها قائمة بجميع الكلمات 1764 01:28:38,340 --> 01:28:40,850 أن الإنسان كتبته في موجه، في حال كنت 1765 01:28:40,850 --> 01:28:43,790 مبرمج تريد أن تفعل شيء مع تلك المعلومات. 1766 01:28:43,790 --> 01:28:48,540 وفي هذه الحالة، فإن الكلمة الوحيدة لقد كتبته في موجه هو ./argv0. 1767 01:28:48,540 --> 01:28:55,420 >> وبالتالي فإن عدد من الحجج التي هي يتم تمريرها إلى برنامجي هو واحد فقط. 1768 01:28:55,420 --> 01:28:58,880 وبعبارة أخرى، فإن الحجة العد، والمعروف باسم ARGC 1769 01:28:58,880 --> 01:29:00,970 هنا كعدد، هي واحدة فقط. 1770 01:29:00,970 --> 01:29:03,000 واحد، وبطبيعة الحال، لا يساوي اثنين. 1771 01:29:03,000 --> 01:29:05,980 ولذلك هذا هو ما يطبع، مرحبا العالم. 1772 01:29:05,980 --> 01:29:08,170 >> ولكن اسمحوا لي أن أغتنم هذه في مكان ما. 1773 01:29:08,170 --> 01:29:09,930 اسمحوا لي أن أقول، argv0. 1774 01:29:09,930 --> 01:29:12,740 ثم ماذا عن ماريا؟ 1775 01:29:12,740 --> 01:29:14,990 ثم هاهنا. 1776 01:29:14,990 --> 01:29:18,020 >> ولاحظ ما يحدث بطريقة سحرية هنا. 1777 01:29:18,020 --> 01:29:22,640 الآن، بدلا من مرحبا العالم، لدي تغير سلوك هذا البرنامج 1778 01:29:22,640 --> 01:29:26,310 عن طريق اتخاذ مدخلات ليس من الحصول على سلسلة أو بعض وظيفة أخرى، 1779 01:29:26,310 --> 01:29:30,570 ولكن من، على ما يبدو، أمري نفسها، ما كتبته أصلا في. 1780 01:29:30,570 --> 01:29:35,720 وأستطيع أن تلعب هذه اللعبة مرة أخرى تغييرها إلى ستيليوس، على سبيل المثال. 1781 01:29:35,720 --> 01:29:38,400 >> والآن أرى اسم آخر لا يزال. 1782 01:29:38,400 --> 01:29:40,540 وهنا، أود أن أقول اندى. 1783 01:29:40,540 --> 01:29:42,137 وأود أن أقول Zamyla. 1784 01:29:42,137 --> 01:29:45,220 ويمكننا أن نلعب هذه اللعبة طوال اليوم، مجرد سد في قيم مختلفة، 1785 01:29:45,220 --> 01:29:49,550 طالما أنا توفير بالضبط كلمتين في موجه، 1786 01:29:49,550 --> 01:29:52,260 بحيث ARGC، حجتي عد، هو 2. 1787 01:29:52,260 --> 01:29:57,240 >> لا أرى أن اسم موصول printf، في هذه الحالة هنا؟ 1788 01:29:57,240 --> 01:30:00,550 لذلك يبدو أننا نعاني الآن القدرة التعبيرية 1789 01:30:00,550 --> 01:30:04,410 أخذ المدخلات من آلية أخرى، من ما يسمى سطر الأوامر، 1790 01:30:04,410 --> 01:30:07,000 بدلا من الاضطرار إلى الانتظار حتى يقوم المستخدم البرنامج، 1791 01:30:07,000 --> 01:30:10,220 ثم يدفع له أو لها باستخدام شيء مثل سلسلة الحصول عليها. 1792 01:30:10,220 --> 01:30:11,230 >> فما هو هذا؟ 1793 01:30:11,230 --> 01:30:15,010 ARGC، مرة أخرى، هو مجرد صحيحا، عدد words-- arguments-- 1794 01:30:15,010 --> 01:30:18,540 أن المستخدم المقدمة في موجه، في إطار المحطة، 1795 01:30:18,540 --> 01:30:20,110 بما في ذلك اسم البرنامج. 1796 01:30:20,110 --> 01:30:23,340 لذلك لدينا ./argv0 هو، على نحو فعال، اسم البرنامج، 1797 01:30:23,340 --> 01:30:24,520 أو كيف تشغيل البرنامج. 1798 01:30:24,520 --> 01:30:25,810 >> أن تحصي ككلمة. 1799 01:30:25,810 --> 01:30:27,080 حتى ARGC سيكون 1. 1800 01:30:27,080 --> 01:30:29,750 ولكن عندما أكتب ستيليوس، أو اندى، أو Zamyla، أو ماريا، 1801 01:30:29,750 --> 01:30:31,660 وهذا يعني أن عدد الحجة هي سنتان. 1802 01:30:31,660 --> 01:30:33,910 وحتى الآن هناك كلمتين مرت في. 1803 01:30:33,910 --> 01:30:36,070 >> وإشعار، لا يمكننا الاستمرار بهذا المنطق. 1804 01:30:36,070 --> 01:30:39,050 إذا أنا في الواقع نقول شيء من هذا القبيل Zamyla تشان، 1805 01:30:39,050 --> 01:30:42,200 اسم كامل، وبالتالي تمرير ثلاث حجج في المجموع، 1806 01:30:42,200 --> 01:30:47,410 الآن تقول الافتراضي مرة أخرى، لأنه، بطبيعة الحال، 3 لا يساوي 2. 1807 01:30:47,410 --> 01:30:54,080 >> وحتى في هذه الطريقة، لا بد لي الوصول عبر ARGV هذه الحجة الجديدة 1808 01:30:54,080 --> 01:30:56,080 أننا يمكن من الناحية الفنية استدعاء أي شيء نريده. 1809 01:30:56,080 --> 01:30:58,940 ولكن من خلال اتفاقية، انها ARGV وARGC، على التوالي. 1810 01:30:58,940 --> 01:31:04,470 ARGV، ناقلات حجة، هو نوع من مرادفا للبرمجة 1811 01:31:04,470 --> 01:31:07,140 ميزة في C دعت مجموعة. 1812 01:31:07,140 --> 01:31:14,410 >> مجموعة هي قائمة من القيم مشابهة إلى الوراء، إلى الوراء، إلى الوراء، إلى الوراء. 1813 01:31:14,410 --> 01:31:17,810 وبعبارة أخرى، إذا واحد هو الصحيح هنا في ذاكرة الوصول العشوائي، واحد القادم هو الصحيح بجانبه، 1814 01:31:17,810 --> 01:31:18,800 والحق بجانبه. 1815 01:31:18,800 --> 01:31:20,101 انهم ليسوا في كل مكان. 1816 01:31:20,101 --> 01:31:23,100 وهذا السيناريو الأخير، حيث الأشياء هي في كل مكان في الذاكرة، 1817 01:31:23,100 --> 01:31:25,082 يمكن أن تكون في الواقع ميزة قوية. 1818 01:31:25,082 --> 01:31:28,040 ولكن سوف نعود إلى أننا عندما الحديث عن هياكل البيانات مربي الحيوانات. 1819 01:31:28,040 --> 01:31:32,260 في الوقت الراهن، ومجموعة ليست سوى قطعة من الذاكرة القريبة، 1820 01:31:32,260 --> 01:31:36,520 كل عناصره هي إلى الوراء، إلى الوراء، إلى الوراء، إلى الوراء، 1821 01:31:36,520 --> 01:31:38,050 وعموما نفس النوع. 1822 01:31:38,050 --> 01:31:42,630 >> لذلك إذا كنت تفكر في، من قبل لحظة، ما هو سلسلة؟ 1823 01:31:42,630 --> 01:31:50,460 حسنا، سلسلة، مثل Zamyla، Z-A-M-Y-L-A، هو، من الناحية الفنية، 1824 01:31:50,460 --> 01:31:51,400 فقط صفيف. 1825 01:31:51,400 --> 01:31:53,700 انها مجموعة من الأحرف. 1826 01:31:53,700 --> 01:31:59,250 >> وحتى إذا كنا حقا رسم هذا، وأنا فعلت في وقت سابق، وقطعة من الذاكرة، 1827 01:31:59,250 --> 01:32:04,510 اتضح أن كل من هذه الأحرف يستغرق بايت. 1828 01:32:04,510 --> 01:32:07,630 ثم هناك أن الخاصة شخصية الحارس، مائل 0، 1829 01:32:07,630 --> 01:32:12,360 أو كل ثمانية 0 بت، أن ترسم نهاية هذه السلسلة. 1830 01:32:12,360 --> 01:32:15,090 لذلك سلسلة، فإنه يتحول خارج، أقتبس سلسلة نهاية الاقتباس، 1831 01:32:15,090 --> 01:32:20,580 هو مجرد مجموعة من chara-- شار كونه نوع البيانات الفعلية. 1832 01:32:20,580 --> 01:32:24,560 >> والآن ARGV، meanwhile-- دعونا نعود إلى البرنامج. 1833 01:32:24,560 --> 01:32:29,582 ARGV، على الرغم من أننا نرى كلمة سلسلة هنا، ليست سلسلة نفسه. 1834 01:32:29,582 --> 01:32:33,640 ARGV، ناقلات حجة، هو مجموعة من السلاسل. 1835 01:32:33,640 --> 01:32:37,620 >> فكما يمكن أن يكون مجموعة من الشخصيات، هل يمكن أن يكون مستوى أعلى، 1836 01:32:37,620 --> 01:32:46,279 مجموعة من strings-- ذلك، على سبيل المثال، عندما كنت كتبته قبل لحظة ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0، الفضاء Z-A-M-Y-L-A، وادعى أن كان ARGV سلسلتين في ./argv0 it--، 1838 01:33:00,150 --> 01:33:03,185 وZ-A-M-Y-L-A. في بعبارة أخرى، كان ARGC 2. 1839 01:33:03,185 --> 01:33:03,980 لماذا هذا؟ 1840 01:33:03,980 --> 01:33:08,370 >> حسنا، على نحو فعال، ما الذي يحدث على أن كل من هذه السلاسل 1841 01:33:08,370 --> 01:33:13,990 هو، بطبيعة الحال، مجموعة من الأحرف كما كان من قبل، كل الذين الأحرف 1842 01:33:13,990 --> 01:33:15,670 يستغرق فترة تصل بايت واحد. 1843 01:33:15,670 --> 01:33:19,720 ولا تخلط بين 0 الفعلي في اسم البرنامج مع 0، 1844 01:33:19,720 --> 01:33:22,040 وهو ما يعني كل 80 بت. 1845 01:33:22,040 --> 01:33:27,140 وZamyla، وفي الوقت نفسه، لا يزال أيضا مجموعة من الأحرف. 1846 01:33:27,140 --> 01:33:31,450 >> حتى في نهاية المطاف، فإنه في الحقيقة يبدو مثل هذا تحت غطاء محرك السيارة. 1847 01:33:31,450 --> 01:33:38,800 لكن ARGV، حسب طبيعة كيف الرئيسية أعمال، يتيح لي الفرصة لالتفاف كل هذا 1848 01:33:38,800 --> 01:33:44,810 يصل الى، اذا صح التعبير، مجموعة أكبر أننا إذا قليلا تبسيط أكثر 1849 01:33:44,810 --> 01:33:48,180 ما يشبه الصورة ولا رسم جدا لتصعيد هناك، 1850 01:33:48,180 --> 01:33:56,720 هذه المجموعة هي فقط من حجم 2، أول العنصر الذي يحتوي على سلسلة، 1851 01:33:56,720 --> 01:33:59,230 العنصر الثاني من الذي يحتوي على سلسلة. 1852 01:33:59,230 --> 01:34:01,687 وبدوره، إذا كنت نوع من التكبير على كل 1853 01:34:01,687 --> 01:34:03,770 من تلك السلاسل، ما أرى تحت غطاء محرك السيارة 1854 01:34:03,770 --> 01:34:07,190 غير أن كل السلسلة فقط مجموعة من الأحرف. 1855 01:34:07,190 --> 01:34:11,680 >> الآن، فقط كما هو الحال مع السلاسل، كنا قادرين على الحصول 1856 01:34:11,680 --> 01:34:15,260 إلى حرف ط عشر في سلسلة استخدام هذا التدوين قوس مربع. 1857 01:34:15,260 --> 01:34:17,320 وبالمثل، مع صفائف بشكل عام، يمكن لنا 1858 01:34:17,320 --> 01:34:22,700 استخدام مربع رمز براكيت للحصول على في أي عدد من السلاسل في مجموعة؟ 1859 01:34:22,700 --> 01:34:25,100 على سبيل المثال، اسمحوا لي والمضي قدما في القيام بذلك. 1860 01:34:25,100 --> 01:34:32,420 >> اسمحوا لي أن المضي قدما في إنشاء argv1.c، وهو قليل مختلف هذه المرة. 1861 01:34:32,420 --> 01:34:35,635 بدلا من التحقق من وجود argc2، انا ذاهب الى القيام بذلك بدلا من ذلك. 1862 01:34:35,635 --> 01:34:41,270 لكثافة أحصل 0، الأول هو أقل من ARGC، وأنا زائد زائد، 1863 01:34:41,270 --> 01:34:47,920 ومن ثم طباعتها داخل هذا، في المئة ق، خط جديد، ومن ثم 1864 01:34:47,920 --> 01:34:50,740 ARGV قوس ط. 1865 01:34:50,740 --> 01:34:55,220 >> لذلك وبعبارة أخرى، أنا لا تتعامل مع الأحرف الفردية في الوقت الراهن. 1866 01:34:55,220 --> 01:35:00,190 ARGV، كما يدل على هذه الساحة فارغة تستعد لحق ARGV اسم، 1867 01:35:00,190 --> 01:35:03,320 يعني ARGV هو مجموعة من السلاسل. 1868 01:35:03,320 --> 01:35:04,870 وARGC هو مجرد كثافة العمليات. 1869 01:35:04,870 --> 01:35:08,800 >> هذا الخط هنا، 6، هو قائلا مجموعة ط يساوي 0. 1870 01:35:08,800 --> 01:35:11,980 عد كل وسيلة تصل إلى، ولكنها لا تتضمن ARGC. 1871 01:35:11,980 --> 01:35:14,010 ثم على كل التكرار، طباعة سلسلة. 1872 01:35:14,010 --> 01:35:14,800 ما السلسلة؟ 1873 01:35:14,800 --> 01:35:17,270 >> سلسلة ط عشر في ARGV. 1874 01:35:17,270 --> 01:35:19,530 لذلك حين قبل كنت باستخدام قوس مربع 1875 01:35:19,530 --> 01:35:22,180 تدوين للحصول على إيث حرف في سلسلة، الآن 1876 01:35:22,180 --> 01:35:27,240 أنا باستخدام التدوين قوس مربع للحصول على سلسلة إيث في صفيف. 1877 01:35:27,240 --> 01:35:30,310 حتى انها نوع من طبقة واحدة أعلاه، من الناحية النظرية. 1878 01:35:30,310 --> 01:35:35,390 >> وهكذا ما هو أنيق حول هذا البرنامج الآن، إذا كنت تجميع argv1، 1879 01:35:35,390 --> 01:35:42,067 ومن ثم القيام ./argv1، ثم اكتب في شيء من هذا القبيل فو بار الباز، 1880 01:35:42,067 --> 01:35:45,400 التي هي الكلمات الثلاث الافتراضية التي ل عالم الكمبيوتر يصل لأي وقت 1881 01:35:45,400 --> 01:35:51,010 انه أو انها تحتاج بعض الكلمات نائبا، وهاهنا، كل من هذه الكلمات، 1882 01:35:51,010 --> 01:35:54,980 بما في ذلك اسم البرنامج، الذي في ARGV في الموقع الأول، 1883 01:35:54,980 --> 01:35:58,320 ينتهي تتم طباعتها في وقت واحد. 1884 01:35:58,320 --> 01:36:05,290 وإذا قمت بتغيير هذا، وأنا أقول شيء من هذا القبيل argv1 Zamyla تشان، 1885 01:36:05,290 --> 01:36:08,800 نحصل على كل ثلاثة من هذه الكلمات، وهو argv0، 1886 01:36:08,800 --> 01:36:14,400 argv1، argv2، لأنه في هذه حالة ARGC، العد، هو 3. 1887 01:36:14,400 --> 01:36:20,020 >> ولكن ما هو أنيق وإذا فهمت أن ARGV هو مجرد مجموعة من السلاسل، 1888 01:36:20,020 --> 01:36:24,910 وعليك أن تدرك أن سلسلة هو مجموعة من الشخصيات، 1889 01:36:24,910 --> 01:36:29,470 يمكننا في الواقع نوع من استخدام هذه مربع قوس تدوين عدة مرات 1890 01:36:29,470 --> 01:36:33,320 لاختيار سلسلة، ثم اختر شخصية داخل السلسلة، 1891 01:36:33,320 --> 01:36:35,730 الغوص في أعمق على النحو التالي. 1892 01:36:35,730 --> 01:36:40,100 في هذا المثال، اسمحوا لي ان اذهب قبل ونسمي هذا argv2.c. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 وفي هذا المثال، اسمحوا لي أن المضي قدما والقيام following-- لكثافة أحصل 0، 1895 01:36:50,180 --> 01:36:53,286 أنا أقل من ARGC، ط زائد بالاضافة الى ذلك، تماما مثل قبل. 1896 01:36:53,286 --> 01:36:55,910 حتى في words-- البعض، والآن هذا هو الحصول على معقد بما فيه الكفاية. 1897 01:36:55,910 --> 01:36:59,940 ثم انا ذاهب الى القول تكرار عبر السلاسل في ARGV، 1898 01:36:59,940 --> 01:37:01,294 كتعليق لنفسي. 1899 01:37:01,294 --> 01:37:03,960 ثم انا ذاهب لديها متداخلة للحلقة، والتي ربما 1900 01:37:03,960 --> 01:37:06,290 قد فعلت، أو اعتبار القيام، في خدش، حيث 1901 01:37:06,290 --> 01:37:08,600 انا ذاهب الى القول int-- أنا لا تنوي استخدام ط مرة أخرى، 1902 01:37:08,600 --> 01:37:12,590 لأنني لا أريد أن الظل، أو نوع من الكتابة ط القائمة. 1903 01:37:12,590 --> 01:37:15,780 >> أنا ذاهب ل، بدلا من ذلك، يقول ي، ل هذا هو بلدي الذهاب إلى متغير بعد ط، 1904 01:37:15,780 --> 01:37:18,590 عندما كنت أحاول فقط ل عد الأرقام البسيطة. 1905 01:37:18,590 --> 01:37:28,850 ليحصل ي 0-- وأيضا، ن، هو الذهاب الى الحصول على طول شديد اللهجة من ARGV قوس ط، 1906 01:37:28,850 --> 01:37:36,030 طالما ي أقل من متر، ي زائد زائد، قم بما يلي. 1907 01:37:36,030 --> 01:37:37,500 وهنا الجزء مثيرة للاهتمام. 1908 01:37:37,500 --> 01:37:46,330 >> طباعة حرف وسطر جديد توصيل قوس ARGV ط، ي قوس. 1909 01:37:46,330 --> 01:37:47,940 موافق، لذلك اسمحوا لي أن أضيف بعض التعليقات هنا. 1910 01:37:47,940 --> 01:37:54,820 أعاد على الحروف في سلسلة الحالية، 1911 01:37:54,820 --> 01:38:02,290 طباعة حرف ي ال في سلسلة ط عشر. 1912 01:38:02,290 --> 01:38:04,630 وحتى الآن، دعونا النظر ماذا تعني هذه التعليقات. 1913 01:38:04,630 --> 01:38:06,750 >> تكرار عبر سلاسل في argv-- كم 1914 01:38:06,750 --> 01:38:09,300 السلاسل في ARGV، الذي هو صفيف؟ 1915 01:38:09,300 --> 01:38:13,420 كثير ARGC، لذلك أنا بالتكرار من أنا يساوي 0 حتى ARGC. 1916 01:38:13,420 --> 01:38:20,020 وفي الوقت نفسه، كم من الأحرف هي في سلسلة ط عشر في ARGV؟ 1917 01:38:20,020 --> 01:38:22,880 >> حسنا، للحصول على هذا الجواب، أنا مجرد دعوة طول السلسلة 1918 01:38:22,880 --> 01:38:26,810 على الرعاية I سلسلة الحالية حول، وهو ARGV قوس ط. 1919 01:38:26,810 --> 01:38:30,090 وانا ذاهب لتخزين مؤقتا أن قيمة في ن، فقط لأغراض التخزين المؤقت، 1920 01:38:30,090 --> 01:38:31,590 لنتذكر أنه من الكفاءة. 1921 01:38:31,590 --> 01:38:36,330 ثم انا ذاهب تهيئة ي 0، تستمر طالما ي أقل من ن، 1922 01:38:36,330 --> 01:38:38,430 وعلى كل ي التكرار زيادة. 1923 01:38:38,430 --> 01:38:41,030 >> ثم هنا، في تعليقي على خط 12، 1924 01:38:41,030 --> 01:38:43,390 طباعة حرف، يليه خط جديد، 1925 01:38:43,390 --> 01:38:48,140 قوس ARGV على وجه التحديد ط يعطيني سلسلة ط ال 1926 01:38:48,140 --> 01:38:51,690 في argv-- حتى الكلمة الأولى، و الكلمة الثانية، والكلمة الثالثة، أيا كان. 1927 01:38:51,690 --> 01:38:57,370 ثم الغطس ي في أعمق، ويحصل لي حرف ي ال من تلك الكلمة. 1928 01:38:57,370 --> 01:39:02,200 وهكذا، في الواقع، يمكنك علاج ARGV باعتباره متعدد الأبعاد، 1929 01:39:02,200 --> 01:39:06,050 كما ثنائي الأبعاد، مجموعة، حيث كل كلمة نوع من النظرات 1930 01:39:06,050 --> 01:39:08,580 مثل هذا في عقلك ل العين، وكل حرف 1931 01:39:08,580 --> 01:39:10,930 هو نوع من تتكون في عمود، إذا كان ذلك يساعد. 1932 01:39:10,930 --> 01:39:13,260 >> في الواقع، عندما كنا ندف هذا عدا في الأسابيع المقبلة، 1933 01:39:13,260 --> 01:39:15,580 انها سوف يكون قليلا أكثر تطورا من ذلك. 1934 01:39:15,580 --> 01:39:17,800 ولكن هل يمكن حقا التفكير في ذلك، في الوقت الراهن، 1935 01:39:17,800 --> 01:39:22,110 كما مجرد هذا ثنائي الأبعاد مجموعة، حيث مستوى واحد منه 1936 01:39:22,110 --> 01:39:23,260 هو كل من السلاسل. 1937 01:39:23,260 --> 01:39:26,760 ثم إذا كنت الغوص في أعمق، ل يمكن الحصول على الأحرف الفردية 1938 01:39:26,760 --> 01:39:29,600 فيه باستخدام هذه الرموز هنا. 1939 01:39:29,600 --> 01:39:31,620 >> فما هو الأثر الصافي؟ 1940 01:39:31,620 --> 01:39:34,970 اسمحوا لي أن المضي قدما في جعل الرتق argv2-- ذلك. 1941 01:39:34,970 --> 01:39:36,210 لقد ارتكبت خطأ هنا. 1942 01:39:36,210 --> 01:39:40,160 يعلن ضمنا مكتبة ظيفة ستيرلينغ. 1943 01:39:40,160 --> 01:39:42,190 لذلك كل هذا الوقت، انها ربما يكون مناسبا 1944 01:39:42,190 --> 01:39:45,130 أننا نوع من الانتهاء بالضبط حيث بدأنا. 1945 01:39:45,130 --> 01:39:48,160 >> أنا ثمل، معلنا ضمنا مكتبة ظيفة ستيرلينغ. 1946 01:39:48,160 --> 01:39:48,987 حسنا انتظر دقيقة. 1947 01:39:48,987 --> 01:39:51,070 أتذكر ذلك، خصوصا لأنه هنا. 1948 01:39:51,070 --> 01:39:54,490 ولست بحاجة لتشمل string.h في هذا الإصدار من البرنامج. 1949 01:39:54,490 --> 01:40:00,050 >> اسمحوا لي أن نمضي قدما وتشمل string.h، ان انقاذ، والمضي قدما 1950 01:40:00,050 --> 01:40:04,460 وإعادة ترجمة argv2. 1951 01:40:04,460 --> 01:40:08,390 والآن، وهنا نذهب، وجعل argv2، أدخل. 1952 01:40:08,390 --> 01:40:10,590 وعلى الرغم من انها قليلا خفي للوهلة الأولى، 1953 01:40:10,590 --> 01:40:15,690 لاحظت أن، في الواقع، ما طبعت هي نقطة argv2. 1954 01:40:15,690 --> 01:40:19,970 >> ولكن إذا كنت اكتب بعض الكلمات بعد موجه، مثل argv2 Zamyla تشان، 1955 01:40:19,970 --> 01:40:22,560 أدخل، أيضا قليلا خفي للوهلة الأولى. 1956 01:40:22,560 --> 01:40:30,540 ولكن إذا كان لنا أن انتقل احتياطية، ./argv2 Z-A-M-Y-L-A C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 لذلك قمنا كرر على كل كلمة. 1958 01:40:32,190 --> 01:40:37,770 وبدوره، لقد كرر أكثر كل حرف في كلمة واحدة. 1959 01:40:37,770 --> 01:40:40,040 >> الآن، وبعد كل هذا، ندرك أن هناك 1960 01:40:40,040 --> 01:40:43,120 واحد تفاصيل أخرى كنا نوع تجاهل هذا طوال الوقت. 1961 01:40:43,120 --> 01:40:46,180 نحن مازحت فقط بصرف النظر عما يمكن المدخلات الرئيسية ستكون؟ 1962 01:40:46,180 --> 01:40:47,780 ماذا عن الانتاج الرئيسي؟ 1963 01:40:47,780 --> 01:40:50,540 >> كل هذا الوقت، كنا مجرد نسخ ولصق 1964 01:40:50,540 --> 01:40:53,870 كثافة العمليات كلمة أمام الرئيسي، على الرغم من أنك قد ترى على الانترنت، 1965 01:40:53,870 --> 01:40:58,340 في بعض الأحيان بشكل غير صحيح في الإصدارات القديمة من C وجمعها، والتي يقولون انها باطلة، 1966 01:40:58,340 --> 01:40:59,410 أو لا شيء على الإطلاق. 1967 01:40:59,410 --> 01:41:01,580 ولكن، في الواقع، للحصول على الإصدار من C الذي نستخدمه، 1968 01:41:01,580 --> 01:41:06,180 C 11، أو 2011، وتحقيق أنه ينبغي أن يكون كثافة العمليات. 1969 01:41:06,180 --> 01:41:09,300 وينبغي أن يكون إما الفراغ أو ARGC وARGV هنا. 1970 01:41:09,300 --> 01:41:10,790 >> ولكن لماذا الباحث الرئيسي؟ 1971 01:41:10,790 --> 01:41:12,480 ما هو العودة في الواقع؟ 1972 01:41:12,480 --> 01:41:16,280 حسنا، اتضح كل هذا الوقت، أي وقت كنت قد كتبت رئيسي البرنامج 1973 01:41:16,280 --> 01:41:18,440 دائما عودته شيء. 1974 01:41:18,440 --> 01:41:19,960 لكنه كان يفعل ذلك سرا. 1975 01:41:19,960 --> 01:41:23,350 >> أن شيئا ما هو كثافة العمليات، كخط يقترح 5. 1976 01:41:23,350 --> 01:41:24,225 ولكن ما كثافة العمليات؟ 1977 01:41:24,225 --> 01:41:26,100 حسنا، هناك هذا اتفاقية في مجال البرمجة، 1978 01:41:26,100 --> 01:41:29,790 حيث لم يكن أي شيء له ذهب خطأ، كل شيء على ما يرام، 1979 01:41:29,790 --> 01:41:34,250 برامج وظائف عامة return-- إلى حد ما counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 يعني عموما كل شيء على ما يرام. 1982 01:41:38,070 --> 01:41:40,610 وذلك على الرغم رأيك أنها كاذبة في العديد من السياقات، 1983 01:41:40,610 --> 01:41:42,930 في الواقع يعني شيئا جيدا بوجه عام 1984 01:41:42,930 --> 01:41:49,560 >> وفي الوقت نفسه، إذا بإرجاع البرنامج 1، أو سلبي 1 أو 5 أو سلبي 42، 1985 01:41:49,560 --> 01:41:52,941 أو أي-0 غير ذات قيمة، الذي يدل بشكل عام 1986 01:41:52,941 --> 01:41:54,190 وقد ذهب ذلك شيئا خاطئا. 1987 01:41:54,190 --> 01:41:56,700 في الواقع، على ماك الخاص بك أو جهاز الكمبيوتر، كنت قد شهدت في الواقع 1988 01:41:56,700 --> 01:42:01,050 رسالة خطأ، حيث أنه يقول شيئا أو غيرها، خطأ 1989 01:42:01,050 --> 01:42:04,940 كود سلبي 42، أو رمز الخطأ 23، أو شيء من هذا القبيل. 1990 01:42:04,940 --> 01:42:08,980 هذا العدد هو عموما مجرد تلميح للمبرمج، أو الشركة 1991 01:42:08,980 --> 01:42:11,174 التي جعلت من البرنامج، ما الخطأ الذي حدث ولماذا، 1992 01:42:11,174 --> 01:42:13,590 بحيث يمكن أن ننظر من خلال وثائقها أو رمز، 1993 01:42:13,590 --> 01:42:15,465 ومعرفة ما خطأ، يعني في الواقع. 1994 01:42:15,465 --> 01:42:18,400 انها عموما لا من المفيد لنا مستخدمين النهائيين. 1995 01:42:18,400 --> 01:42:20,550 >> ولكن عندما يعود الرئيسية 0، كل شيء على ما يرام. 1996 01:42:20,550 --> 01:42:23,770 وإذا لم تقم بتحديد ما الرئيسي يجب أن تعود، 1997 01:42:23,770 --> 01:42:26,950 وسوف فقط تلقائيا العودة 0 بالنسبة لك. 1998 01:42:26,950 --> 01:42:30,870 ولكن عودته شيء آخر مفيد فعلا. 1999 01:42:30,870 --> 01:42:34,660 >> في هذا البرنامج النهائي، واسمحوا لي المضي قدما، وندعو هذه exit.c، 2000 01:42:34,660 --> 01:42:38,630 وإدخال آخر من اليوم المواضيع، والمعروفة باسم رمز خطأ. 2001 01:42:38,630 --> 01:42:42,930 اسمحوا لي أن نمضي قدما وتشمل لدينا ملفات مألوفة حتى أعلى، تفعل الباحث الرئيسي. 2002 01:42:42,930 --> 01:42:49,500 وهذه المرة، دعونا نفعل الباحث ARGC، ARGV سلسلة، ومع أقواس بلدي 2003 01:42:49,500 --> 01:42:50,836 ان هذا يعني انه في المصفوفة. 2004 01:42:50,836 --> 01:42:52,460 ثم اسمحوا لي أن لا مجرد الاختيار التعقل. 2005 01:42:52,460 --> 01:42:56,640 هذه المرة، إذا ARGC لا يساوي 2، ثم أنت تعرف لماذا؟ 2006 01:42:56,640 --> 01:42:57,520 انسى ذلك. 2007 01:42:57,520 --> 01:43:03,170 وانا ذاهب الى القول أنه، مهلا، المستعمل، كنت في عداد المفقودين سيطة سطر الأوامر 2008 01:43:03,170 --> 01:43:04,210 ن مائل. 2009 01:43:04,210 --> 01:43:05,230 >> ثم هذا كل شيء. 2010 01:43:05,230 --> 01:43:06,130 أريد أن خروج. 2011 01:43:06,130 --> 01:43:11,030 وانا ذاهب الى استباقي، وقبل الأوان حقا، وعودة 2012 01:43:11,030 --> 01:43:12,810 شيء آخر غير الرقم 1. 2013 01:43:12,810 --> 01:43:15,360 الذهاب إلى قيمة للمرة الأولى الخطأ الذي يمكن أن يحدث هو 1. 2014 01:43:15,360 --> 01:43:17,860 إذا كان لديك بعض الآخر خاطئة الحالة التي قد تحدث، 2015 01:43:17,860 --> 01:43:21,390 يمكنك القول عودة 2 أو 3 العودة، أو ربما سلبي 1 أو سلبي 2. 2016 01:43:21,390 --> 01:43:23,750 >> هذه ليست سوى رموز الإنهاء التي هي، عموما، 2017 01:43:23,750 --> 01:43:27,770 مفيدة فقط للمبرمج، أو الشركة التي هو الشحن البرنامج. 2018 01:43:27,770 --> 01:43:30,500 ولكن الحقيقة أنه من ليست 0 ما هو مهم. 2019 01:43:30,500 --> 01:43:34,310 حتى إذا كان في هذا البرنامج، وأريد أن تضمن هذا البرنامج فقط 2020 01:43:34,310 --> 01:43:38,190 يعمل إذا كان المستخدم يوفر لي مع العد حجة اثنين، 2021 01:43:38,190 --> 01:43:42,880 اسم البرنامج، وبعض الدول الاخرى كلمة، ويمكنني أن فرض بقدر ما يلي، 2022 01:43:42,880 --> 01:43:46,110 الصراخ المستخدم بقوله printf، في عداد المفقودين سيطة سطر الأوامر، 2023 01:43:46,110 --> 01:43:46,970 العودة 1. 2024 01:43:46,970 --> 01:43:49,940 التي من شأنها أن مجرد فورا إنهاء البرنامج. 2025 01:43:49,940 --> 01:43:55,840 >> إلا إذا يساوي ARGC 2 ونحن ننكب هنا، في هذه النقطة انا ذاهب الى القول، 2026 01:43:55,840 --> 01:44:00,410 مرحبا في المئة الصورة، مائل ن، argv1. 2027 01:44:00,410 --> 01:44:03,827 وبعبارة أخرى، وأنا لن بعد ARGV 0، 2028 01:44:03,827 --> 01:44:05,410 الذي هو مجرد اسم البرنامج. 2029 01:44:05,410 --> 01:44:09,450 أريد أن طباعة مرحبا، فاصلة، الكلمة الثانية أن الإنسان كتابتها. 2030 01:44:09,450 --> 01:44:12,580 وفي هذه الحالة على خط 13، كل شيء على ما يرام. 2031 01:44:12,580 --> 01:44:15,920 >> وأنا أعلم أن ARGC هو 2 منطقيا من هذا البرنامج. 2032 01:44:15,920 --> 01:44:17,770 انا ذاهب الى المضي قدما والعودة 0. 2033 01:44:17,770 --> 01:44:21,230 بوصفها جانبا، ونضع في اعتبارنا أن هذا صحيح في خدش كذلك. 2034 01:44:21,230 --> 01:44:24,760 >> منطقيا، وأنا يمكن أن تفعل هذا وتغلف هذه السطور 2035 01:44:24,760 --> 01:44:27,020 من التعليمات البرمجية في هذه آخر فقرة هنا. 2036 01:44:27,020 --> 01:44:29,420 ولكن هذا النوع من الطعج داع قانون بلدي. 2037 01:44:29,420 --> 01:44:31,800 وأريد أن السوبر من الواضح أنه مهما، 2038 01:44:31,800 --> 01:44:34,670 افتراضيا، مرحبا شيء سوف تحصل على المطبوعة، 2039 01:44:34,670 --> 01:44:36,050 طالما يتعاون المستخدم. 2040 01:44:36,050 --> 01:44:39,360 >> لذلك فإنه من الشائع جدا للاستخدام شرط، فقط إذا، 2041 01:44:39,360 --> 01:44:41,870 للقبض على بعض خاطئة الوضع ومن ثم الخروج. 2042 01:44:41,870 --> 01:44:45,690 وبعد ذلك، ما دام كل شيء حسنا، ليس لها آخر، 2043 01:44:45,690 --> 01:44:48,060 ولكن مجرد رمز خارج ذلك إذا، لأنه 2044 01:44:48,060 --> 01:44:51,060 ما يعادلها في هذا قضية معينة، منطقيا. 2045 01:44:51,060 --> 01:44:54,480 لذلك أعود 0، فقط ل يعني صراحة كل شيء على ما يرام. 2046 01:44:54,480 --> 01:44:58,480 >> إذا أنا حذفت عودة 0، أنه سيكون يفترض تلقائيا بالنسبة لي. 2047 01:44:58,480 --> 01:45:00,890 لكن الآن بعد أن أعود واحد في هذه الحالة على الأقل، 2048 01:45:00,890 --> 01:45:04,940 أنا ذاهب ل، لحسن التدبير و وضوح، والعودة 0 في هذه الحالة. 2049 01:45:04,940 --> 01:45:09,690 وحتى الآن اسمحوا لي أن المضي قدما وجعل الخروج، وهو سغ] الكمال لمجرد ترك. 2050 01:45:09,690 --> 01:45:14,401 >> ولكن جعل الخروج، واسمحوا لي ان اذهب قدما ونفعل ./exit، أدخل. 2051 01:45:14,401 --> 01:45:16,900 وصاح برنامج في وجهي، في عداد المفقودين سيطة سطر الأوامر. 2052 01:45:16,900 --> 01:45:18,120 حسنا، اسمحوا لي أن التعاون. 2053 01:45:18,120 --> 01:45:23,810 >> اسمحوا لي بدلا من ذلك القيام ./exit، ديفيد، أدخل. 2054 01:45:23,810 --> 01:45:25,190 والآن يقول: مرحبا ديفيد. 2055 01:45:25,190 --> 01:45:27,300 ولن تشاهد عادة هذا. 2056 01:45:27,300 --> 01:45:30,650 >> ولكن تبين أن هناك طريقة خاصة في لينكس لرؤية الواقع 2057 01:45:30,650 --> 01:45:34,470 مع ما للخروج كود خرجت برنامج. 2058 01:45:34,470 --> 01:45:37,184 في بعض الأحيان في رسومية العالم مثل نظام التشغيل ماك أو ويندوز، 2059 01:45:37,184 --> 01:45:40,100 يمكنك فقط مشاهدة هذه الأرقام عندما رسالة خطأ للملوثات العضوية الثابتة على الشاشة 2060 01:45:40,100 --> 01:45:41,940 ومبرمج يظهر لك هذا الرقم. 2061 01:45:41,940 --> 01:45:44,773 ولكن إذا كنا نريد أن نرى ما الخطأ الرسالة، يمكننا أن نفعل ذلك here-- 2062 01:45:44,773 --> 01:45:48,100 ./exit ذلك، أدخل والطباعة في عداد المفقودين سيطة سطر الأوامر. 2063 01:45:48,100 --> 01:45:54,590 >> إذا أنا الآن القيام $ صدى ؟، وهو خفي يبعث على السخرية المظهر. 2064 01:45:54,590 --> 01:45:56,590 لكن $؟ 2065 01:45:56,590 --> 01:45:59,220 هو التعويذة السحرية أن يقول، مهلا، الكمبيوتر، 2066 01:45:59,220 --> 01:46:01,900 قل لي ماذا السابقة كان رمز إنهاء البرنامج. 2067 01:46:01,900 --> 01:46:03,410 وأنا هاهنا. 2068 01:46:03,410 --> 01:46:07,520 أرى 1، لأن هذا هو ما أنا وقال مهمتي الرئيسية للعودة. 2069 01:46:07,520 --> 01:46:12,310 >> وفي الوقت نفسه، إذا كنت تفعل ./exit ديفيد، وهاهنا، وأرى، مرحبا ديفيد. 2070 01:46:12,310 --> 01:46:16,800 وإذا كنت الآن القيام $ صدى ؟، أرى مرحبا 0. 2071 01:46:16,800 --> 01:46:19,080 وحتى هذا سوف فعلا تكون المعلومات القيمة 2072 01:46:19,080 --> 01:46:23,420 في سياق المصحح، وليس ذلك الكثير مما كنت، والإنسان، فإن الرعاية. 2073 01:46:23,420 --> 01:46:26,060 ولكن المصحح وغيرها برامج سنستخدم هذا الفصل الدراسي 2074 01:46:26,060 --> 01:46:29,420 وغالبا ما ننظر إلى هذا العدد، على الرغم من أنها غارقة نوع من بعيدا 2075 01:46:29,420 --> 01:46:32,780 إلا إذا كنت تبحث عن ذلك، ل تحديد ما إذا كان البرنامج أم لا 2076 01:46:32,780 --> 01:46:37,050 كان تنفيذ الصحيح أو غير صحيحة. 2077 01:46:37,050 --> 01:46:40,450 >> وحتى هذا يقودنا إلى هذا، في نهاية اليوم. 2078 01:46:40,450 --> 01:46:43,917 بدأنا اليوم من خلال النظر في تصحيح الأخطاء، وبدوره في الدورة 2079 01:46:43,917 --> 01:46:46,750 في حد ذاته، ومن ثم أكثر من المثير للاهتمام، من الناحية الفنية تحت غطاء محرك السيارة 2080 01:46:46,750 --> 01:46:49,490 في ما السلاسل، التي تستمر الأسبوع أخذنا فقط أمرا مفروغا منه، 2081 01:46:49,490 --> 01:46:51,900 وأخذ بالتأكيد لهم من المسلمات في خدش. 2082 01:46:51,900 --> 01:46:56,040 >> نحن ثم نظرت كيف يمكننا الوصول الأحرف الفردية في سلسلة، 2083 01:46:56,040 --> 01:47:00,310 ثم أخذت مرة أخرى إلى مستوى أعلى ننظر إلى الأمور، وتبحث في كيفية well-- 2084 01:47:00,310 --> 01:47:04,226 إذا كنا نريد للحصول على الفرد العناصر في قائمة مثل هيكل، 2085 01:47:04,226 --> 01:47:05,850 لا يمكننا أن نفعل ذلك مع سلاسل متعددة؟ 2086 01:47:05,850 --> 01:47:08,050 ويمكننا مع وسائط سطر الأوامر. 2087 01:47:08,050 --> 01:47:12,800 ولكن هذه الصورة هنا من صناديق فقط غير برهانية لهذه الفكرة العامة 2088 01:47:12,800 --> 01:47:14,451 من صفيف، أو قائمة، أو ناقل. 2089 01:47:14,451 --> 01:47:16,450 وتبعا ل السياق، كل هذه الكلمات 2090 01:47:16,450 --> 01:47:17,880 يعني أشياء مختلفة قليلا. 2091 01:47:17,880 --> 01:47:20,060 وذلك في C، نحن ذاهبون فقط للحديث عن صفيف. 2092 01:47:20,060 --> 01:47:23,840 ومجموعة عبارة عن قطعة من الذاكرة، كل واحد منهم ل 2093 01:47:23,840 --> 01:47:27,720 العناصر المتجاورة، والعودة، إلى الوراء، إلى الوراء، إلى الوراء. 2094 01:47:27,720 --> 01:47:31,970 >> وتلك العناصر هي، عموما، من نفس نوع البيانات، والحرف، 2095 01:47:31,970 --> 01:47:35,966 حرف، حرف، حرف، أو سلسلة، سلسلة، سلسلة، سلسلة، أو الباحث، 2096 01:47:35,966 --> 01:47:38,600 الباحث، الباحث، أيا كانت نحن نحاول أن المخزن. 2097 01:47:38,600 --> 01:47:42,540 ولكن في نهاية المطاف، وهذا هو ما يبدو من الناحية النظرية. 2098 01:47:42,540 --> 01:47:44,530 كنت تأخذ الخاص بك ذاكرة الكمبيوتر أو ذاكرة الوصول العشوائي. 2099 01:47:44,530 --> 01:47:48,590 وكنت نحت بها إلى صناديق الحجم مماثل، وكلها 2100 01:47:48,590 --> 01:47:50,920 عدنا إلى الوراء، ل العودة إلى الوراء في هذا الطريق. 2101 01:47:50,920 --> 01:47:53,200 >> وما هو لطيف حول هذه الفكرة، وحقيقة 2102 01:47:53,200 --> 01:47:58,580 أننا يمكن أن تعبر عن القيم في هذا الطريق مع أول من هياكل البيانات لدينا 2103 01:47:58,580 --> 01:48:02,520 في الصف، يعني أننا يمكن أن نبدأ حل المشاكل مع رمز 2104 01:48:02,520 --> 01:48:04,079 التي جاءت حتى حدسي في الأسبوع 0. 2105 01:48:04,079 --> 01:48:05,870 سوف تتذكر الهاتف المثال كتاب، حيث 2106 01:48:05,870 --> 01:48:09,110 استخدمنا فرق تسد، أو خوارزمية البحث الثنائية، 2107 01:48:09,110 --> 01:48:13,220 للتدقيق من خلال ككل مجموعة من الأسماء والأرقام. 2108 01:48:13,220 --> 01:48:18,220 لكن افترضنا، أذكر، أن هذا تم فرز دليل الهاتف بالفعل، 2109 01:48:18,220 --> 01:48:21,630 ان شخصا آخر له بالفعل أحسب نظرا out-- قائمة بأسماء 2110 01:48:21,630 --> 01:48:24,430 وnumbers-- كيفية ترتيبها حسب الأحرف الأبجدية. 2111 01:48:24,430 --> 01:48:26,950 والآن بعد أن في C نحن، أيضا، لديها القدرة 2112 01:48:26,950 --> 01:48:30,290 لوضع الامور، وليس فعليا في دليل الهاتف 2113 01:48:30,290 --> 01:48:34,220 ولكن عمليا في الكمبيوتر الذاكرة، سوف نكون قادرين الأسبوع المقبل 2114 01:48:34,220 --> 01:48:38,470 لإدخال مرة أخرى this-- الأول هياكل البيانات لدينا في array-- 2115 01:48:38,470 --> 01:48:43,530 ولكن الأهم من ذلك، الكمبيوتر الفعلي خوارزميات العلوم تنفيذها 2116 01:48:43,530 --> 01:48:47,720 في التعليمات البرمجية، التي يمكننا تخزين البيانات في هياكل من هذا القبيل، 2117 01:48:47,720 --> 01:48:50,730 ومن ثم البدء في معالجته، و لحل فعلا مشاكل معها، 2118 01:48:50,730 --> 01:48:53,570 وبناء على أعلى من ذلك، في نهاية المطاف، وبرامج في C، 2119 01:48:53,570 --> 01:48:56,730 في بيثون، في جافا سكريبت، الاستعلام عن قواعد البيانات مع SQL؟ 2120 01:48:56,730 --> 01:48:59,980 >> وسنرى أن كل هذه أفكار مختلفة التعشيق. 2121 01:48:59,980 --> 01:49:04,100 لكنه الآن، أذكر أن المجال الذي قدمنا ​​اليوم 2122 01:49:04,100 --> 01:49:06,920 كان هذا الشيء هنا، و عالم التشفير. 2123 01:49:06,920 --> 01:49:11,200 وبين المشاكل القادمة أنت نفسك سيحل هو فن الترميز، 2124 01:49:11,200 --> 01:49:13,630 الهرولة والهرولة دي المعلومات، والتشفير 2125 01:49:13,630 --> 01:49:15,930 وفك رموز النص، وعلى افتراض نهاية المطاف 2126 01:49:15,930 --> 01:49:18,970 عليك أن تعرف الآن ما هو تحت غطاء محرك السيارة 2127 01:49:18,970 --> 01:49:21,860 بحيث عندما ترى أو استقبال رسالة من هذا القبيل، ل 2128 01:49:21,860 --> 01:49:24,060 نفسك يمكن فك ذلك. 2129 01:49:24,060 --> 01:49:26,740 كل هذا، والمزيد من الوقت القادم. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [تشغيل الفيديو] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover وصلت لتوها. 2133 01:49:32,970 --> 01:49:35,146 انا ذاهب للذهاب زيارة أستاذ كليته. 2134 01:49:35,146 --> 01:49:37,611 نعم. 2135 01:49:37,611 --> 01:49:40,080 مرحبا. 2136 01:49:40,080 --> 01:49:40,660 انه انت. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 انتظر! 2139 01:49:45,110 --> 01:49:45,610 ديفيد. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 أنا مجرد محاولة لمعرفة ما حدث لك. 2142 01:49:56,060 --> 01:49:58,130 من فضلك، يمكن أن يساعد أي شيء. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 كنت كليته الحجرة، لم تكن أنت؟ 2145 01:50:08,354 --> 01:50:10,770 كنت هناك معه عندما أنهى مشروع CS50؟ 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [موسيقى] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> كان -من CS50. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> أنا أحب هذا المكان. 2152 01:50:44,770 --> 01:50:45,854 >> -Eat تصل. 2153 01:50:45,854 --> 01:50:47,020 ونحن في طريقنا للخروج من الأعمال. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [نهاية قراءة]