1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] نيت HARDISON: عندما يكون لديك عدة برامج مفتوحة على 2 00:00:09,360 --> 00:00:11,250 الكمبيوتر، يبدو مثل كل شيء في 3 00:00:11,250 --> 00:00:12,880 تشغيل في نفس الوقت. 4 00:00:12,880 --> 00:00:15,350 على سبيل المثال، هل يمكن أن تعمل في متصفح الإنترنت مثل 5 00:00:15,350 --> 00:00:19,360 فايرفوكس أو إنترنت إكسبلورر، والاستماع إلى الموسيقى على اي تيونز، 6 00:00:19,360 --> 00:00:21,490 وكتابة مقال مع Word. 7 00:00:21,490 --> 00:00:24,240 ومع ذلك، تحت غطاء محرك السيارة، وبرامج الواقع 8 00:00:24,240 --> 00:00:25,830 تشغيل في وقت واحد. 9 00:00:25,830 --> 00:00:29,750 انها وظيفة من نظام التشغيل، ويندوز، ماك OSX، أو 10 00:00:29,750 --> 00:00:33,070 لينكس، لإدارة كل من هذه العمليات منفصلة، ​​كما 11 00:00:33,070 --> 00:00:35,900 ومن المعروف البرامج، والتبديل بينها بحيث عند 12 00:00:35,900 --> 00:00:38,610 الانتقال من التدقيق الخاص الفيسبوك الصفحة إلى العمل على مقالتك 13 00:00:38,610 --> 00:00:41,590 مرة أخرى، وورد هو الذي يتم تشغيله. 14 00:00:41,590 --> 00:00:44,890 >> في بعض الأحيان، على الرغم من أننا نريد برامج أنفسهم لتكون قادرة 15 00:00:44,890 --> 00:00:47,440 أن تفعل أشياء متعددة مثل ذلك أيضا. 16 00:00:47,440 --> 00:00:49,630 إذا كنت مثلي، ربما لديك مجموعة من 17 00:00:49,630 --> 00:00:52,730 فتح علامات تبويب مختلفة في متصفح الويب الخاص بك، واحد للبريد الإلكتروني، 18 00:00:52,730 --> 00:00:55,070 واحد مع التقويم، وهلم جرا. 19 00:00:55,070 --> 00:00:58,270 يمكن أن نتعامل مع كل علامة تبويب كبرنامج مستقل أو العملية، 20 00:00:58,270 --> 00:01:01,300 مثل جوجل كروم، ولكن لكثير من البرامج استخدام 21 00:01:01,300 --> 00:01:04,430 دعا أخف وزنا من النسخة عملية ترابط. 22 00:01:04,430 --> 00:01:07,190 >> A الموضوع هو مجرد وحدة أخرى من تجهيز ومجموعة من 23 00:01:07,190 --> 00:01:10,100 تعليمات أو التعليمات البرمجية التي يمكن أن "تشغيل"، نهاية الاقتباس الاقتباس، 24 00:01:10,100 --> 00:01:12,560 بالتزامن مع المواضيع الأخرى. 25 00:01:12,560 --> 00:01:15,150 هذا هو ما يجعل من الممكن بالنسبة لك لتصفح الفيسبوك 26 00:01:15,150 --> 00:01:17,940 أثناء الاستماع إلى البيانات في الخلفية أو لاثنين 27 00:01:17,940 --> 00:01:20,790 أشرطة فيديو يوتيوب اللعب في نفس الوقت. 28 00:01:20,790 --> 00:01:24,660 لذا، فإن هذا الموضوع العام، والمعروفة باسم التزامن، وعادة 29 00:01:24,660 --> 00:01:26,930 لا يأتي في وقت مبكر جدا في علوم الحاسب الآلي المقررات 30 00:01:26,930 --> 00:01:29,790 لأن تفاصيل المستوى الأدنى تتطلب مناقشة 31 00:01:29,790 --> 00:01:31,930 أنظمة التشغيل وما شابه ذلك. 32 00:01:31,930 --> 00:01:34,170 ومع ذلك، فإن لغة البرمجة التي نستخدمها في 33 00:01:34,170 --> 00:01:38,000 بداية CS50، خدش، يوفر بعض الأدوات أنيق ل 34 00:01:38,000 --> 00:01:40,390 تجعل من السهل على كتابة برامج متعددة مع الأشياء 35 00:01:40,390 --> 00:01:42,390 يحدث في وقت واحد. 36 00:01:42,390 --> 00:01:45,050 >> عند إنشاء برامج الصفر، وكنت باستمرار 37 00:01:45,050 --> 00:01:46,760 العمل مع المواضيع. 38 00:01:46,760 --> 00:01:49,770 كل برنامج نصي الصفر، وهو كتلة التعليمات البرمجية الذي يبدأ ب 39 00:01:49,770 --> 00:01:52,600 واحدة من "متى" قطع اللغز، يمكن التفكير فيه 40 00:01:52,600 --> 00:01:54,380 كما موضوع مستقل. 41 00:01:54,380 --> 00:01:58,040 دعونا ننظر في برنامج سكراتش بسيطة لنرى كيف يعمل هذا. 42 00:01:58,040 --> 00:02:01,730 >> هنا، لدينا كائن الأسماك، أو العفريت، مع اثنين من مخطوطات 43 00:02:01,730 --> 00:02:05,000 أن كلا من البداية عندما كنا انقر فوق الزر العلم الأخضر قليلا. 44 00:02:05,000 --> 00:02:07,290 وتسيطر الحركة السيناريو الأول للأسماك. 45 00:02:07,290 --> 00:02:09,850 عند النقر فوق العلم الأخضر، ويحصل على وضع الأسماك 46 00:02:09,850 --> 00:02:12,450 على الجانب الأيسر من الشاشة، ودعا المرحلة، 47 00:02:12,450 --> 00:02:14,090 تواجه إلى اليمين. 48 00:02:14,090 --> 00:02:17,070 ثم، في مجموعة من الإرشادات التي سوف تعمل إلى الأبد، إلى أن 49 00:02:17,070 --> 00:02:20,270 وقف البرنامج، والأسماك تنزلق إلى الجانب الأيمن، 50 00:02:20,270 --> 00:02:22,900 يستدير، يعود إلى الجانب الأيسر، و 51 00:02:22,900 --> 00:02:24,470 يستدير مرة أخرى. 52 00:02:24,470 --> 00:02:27,410 والسيناريو الثاني يتحكم عملية للأسماك الفكر. 53 00:02:27,410 --> 00:02:29,290 كما تبين أن هذه الأسماك الجياع. 54 00:02:29,290 --> 00:02:32,080 حتى بعد انتظار لمدة 3 ثوان، فإن الأسماك التفكير، 55 00:02:32,080 --> 00:02:34,420 "أنا جائع"، للمرة الثانية الرابعة. 56 00:02:34,420 --> 00:02:36,440 تشغيل هذا البرنامج النصي أيضا إلى الأبد. 57 00:02:36,440 --> 00:02:38,940 وكما نرى، من تشغيل البرنامج بالنقر على 58 00:02:38,940 --> 00:02:41,730 الأخضر العلم، سواء البرامج النصية تظهر لتنفيذ 59 00:02:41,730 --> 00:02:43,100 في وقت واحد. 60 00:02:43,100 --> 00:02:46,460 السمكة يتحرك ويفكر في نفس الوقت. 61 00:02:46,460 --> 00:02:49,030 >> منذ الأسماك الفقراء يبدو جائع حتى، دعونا نضيف في بعض 62 00:02:49,030 --> 00:02:50,670 جبني نفث عليه لتناول الطعام. 63 00:02:50,670 --> 00:02:53,060 نأمل أنها لن تتفكك في الماء. 64 00:02:53,060 --> 00:02:55,560 عندما نضيف في العفريت الثاني، سنكون قادرين على 65 00:02:55,560 --> 00:02:58,020 إضافة البرامج النصية في المقابل الى ان شبح. 66 00:02:58,020 --> 00:02:59,580 وبالتالي، سوف يكون هناك مجموعة أخرى من 67 00:02:59,580 --> 00:03:00,830 المواضيع التي سوف تعمل. 68 00:03:03,590 --> 00:03:06,270 لإعطاء المستخدم السيطرة على برنامجنا عندما 69 00:03:06,270 --> 00:03:09,340 الأسماك الجياع يحصل الغذاء، دعنا نقول انه كلما كان الفضاء 70 00:03:09,340 --> 00:03:11,840 هو ضرب بار، نفث جبني تظهر على المسرح ل 71 00:03:11,840 --> 00:03:13,300 الأسماك لتناول الطعام. 72 00:03:13,300 --> 00:03:15,760 قبل أن يصل شريط الفضاء، سوف نريد للحفاظ على جبني 73 00:03:15,760 --> 00:03:19,020 نفث مخفية بحيث لا تستطيع رؤية الأسماك منها. 74 00:03:19,020 --> 00:03:21,140 للقيام بذلك، سنحتاج بضع مخطوطات لل 75 00:03:21,140 --> 00:03:22,750 جبني نفث العفريت. 76 00:03:22,750 --> 00:03:26,980 فإن السيناريو الأول، والعلم الأخضر، فقط إخفاء الطعام. 77 00:03:26,980 --> 00:03:29,530 على عكس غيرها من الكتابات دينا كتب، وهذا واحد لا تبقي 78 00:03:29,530 --> 00:03:30,560 تشغيل إلى الأبد. 79 00:03:30,560 --> 00:03:33,250 فإنه سيتم البدء والانتهاء بسرعة كبيرة، ونحن على حق عندما انقر 80 00:03:33,250 --> 00:03:35,000 الزر الأخضر العلم. 81 00:03:35,000 --> 00:03:37,180 >> سيقوم البرنامج النصي التالي لدينا الانتظار لشريط الفضاء أن تكون 82 00:03:37,180 --> 00:03:39,590 قبل تنفيذ الضغط. 83 00:03:39,590 --> 00:03:42,770 لا يمكن أن يوصف في انتظار إدخال المستخدم "الانتظار" أو "الاستماع" 84 00:03:42,770 --> 00:03:43,860 لحدث. 85 00:03:43,860 --> 00:03:46,750 والرمز الذي ينفذ عند تلقي حدث أو 86 00:03:46,750 --> 00:03:50,280 ويسمى الحدث سمع معالجة التعليمات البرمجية. 87 00:03:50,280 --> 00:03:53,550 سوف لدينا معالج الحدث بار الفضاء تظهر في نفث جبني على 88 00:03:53,550 --> 00:03:56,330 الشاشة بحيث يمكن للأسماك تأكل منها. 89 00:03:56,330 --> 00:03:58,880 عند هذه النقطة، كل شيء على ما تبدو جيدة. 90 00:03:58,880 --> 00:04:00,990 >> والشيء التالي نحن بحاجة إلى القيام به هو معرفة كيفية الحصول على 91 00:04:00,990 --> 00:04:03,570 السمكة أن ندرك أن هناك لشراء الطعام. 92 00:04:03,570 --> 00:04:06,030 دعونا نضيف مؤشر ترابط آخر للأسماك وذلك باستمرار 93 00:04:06,030 --> 00:04:08,790 اختبار ما إذا كانت أو لم انها لمس نفث جبني. 94 00:04:08,790 --> 00:04:11,510 ونحن نفعل ذلك في موضوع مستقل منذ أن طريقة ممكنة 95 00:04:11,510 --> 00:04:13,710 تحقق باستمرار عن الطعام. 96 00:04:13,710 --> 00:04:16,829 خلاف ذلك، سنكون فقط قادرة على التحقق بشكل دوري للأغذية 97 00:04:16,829 --> 00:04:21,180 في مزلق بين، الدوران في المكان، والانتظار، أو التفكير. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 الآن دعونا تشغيل برنامجنا الصفر. 100 00:04:23,785 --> 00:04:26,921 كما هو متوقع، والمواد الغذائية على الفور ويخفي 101 00:04:26,921 --> 00:04:28,920 الأسماك تسبح الجياع ذهابا وإيابا تماما مثل قبل. 102 00:04:32,050 --> 00:04:35,060 عندما كنا ارتطمت بالعارضة الفضاء، ونفث جبني يأتي في طريقة العرض، 103 00:04:35,060 --> 00:04:37,470 ويقول السمك الجائع whoo. 104 00:04:37,470 --> 00:04:39,340 ولكن الانتظار، وهذا غريب. 105 00:04:39,340 --> 00:04:42,150 فكيف للأسماك "أنا جائع" يقطع الفكر 106 00:04:42,150 --> 00:04:43,580 غيرها من الاشياء؟ 107 00:04:43,580 --> 00:04:45,780 هذا هو لأننا لم تثبت أي تنسيق 108 00:04:45,780 --> 00:04:47,590 بين النصوص الأسماك الثلاث. 109 00:04:47,590 --> 00:04:50,610 كل يعمل في الموضوع الخاص بها، غافلين عن ما 110 00:04:50,610 --> 00:04:52,120 الآخرين يفعلون. 111 00:04:52,120 --> 00:04:54,980 دعونا إصلاح هذه قبل أن ننتقل. 112 00:04:54,980 --> 00:04:57,700 >> التنسيق بين المواضيع هي مهمة صعبة لأننا 113 00:04:57,700 --> 00:05:00,940 لم يكن لديك التحكم الصريح على كل الصفحات عندما يتم تشغيل أو 114 00:05:00,940 --> 00:05:02,190 لا يعمل. 115 00:05:02,190 --> 00:05:04,710 لإرسال رسالة من مؤشر واحد إلى آخر، سنحتاج 116 00:05:04,710 --> 00:05:08,300 لاستخدام متغير أننا يمكن أن يحدد، أو الكتابة، في مؤشر واحد 117 00:05:08,300 --> 00:05:10,170 وقراءة في الآخر. 118 00:05:10,170 --> 00:05:12,920 دعونا إنشاء foodFound متغير يسمى نتمكن من المقرر أن 119 00:05:12,920 --> 00:05:15,530 صحيح عندما يدير الأسماك في نفث جبني. 120 00:05:15,530 --> 00:05:17,540 حسنا، بالطبع، ونحن نريد أن نتأكد من أننا تعيين إلى 121 00:05:17,540 --> 00:05:19,240 في البداية كاذبة. 122 00:05:19,240 --> 00:05:22,540 بعد ذلك، في الموضوع التفكير للأسماك، سنقوم تحقق لمعرفة ما إذا كان 123 00:05:22,540 --> 00:05:25,400 وجدت أسماك الطعام قبل عرض "أنا جائع" 124 00:05:25,400 --> 00:05:26,770 يعتقد فقاعة. 125 00:05:26,770 --> 00:05:29,670 >> الآن، تشغيل البرنامج مرة أخرى، ونحن نرى أن الأسماك 126 00:05:29,670 --> 00:05:31,580 لا يحصل انقطاع مع أفكار الجوع عندما 127 00:05:31,580 --> 00:05:33,820 نفث جبني خارج. 128 00:05:33,820 --> 00:05:36,820 المشكلة لدينا هي نهائية أن نفث جبني لا تذهب 129 00:05:36,820 --> 00:05:39,800 بعيدا بعد الأسماك، أقتبس نهاية الاقتباس، "يأكل" لهم. 130 00:05:39,800 --> 00:05:42,305 من مخطوطات الأسماك، وليس هناك طريقة سهلة لإخفاء جبني 131 00:05:42,305 --> 00:05:44,710 نفث، لذلك نحن في حاجة الى ارسال رسالة الى نفث جبني 132 00:05:44,710 --> 00:05:46,780 شبح لإخفاء نفسه. 133 00:05:46,780 --> 00:05:49,550 يمكن أن نفعل هذا مع متغير آخر أن نفث جبني 134 00:05:49,550 --> 00:05:52,680 شبح الوصول إلى، وكذلك شبح الأسماك. 135 00:05:52,680 --> 00:05:55,720 >> ومع ذلك، هناك طريقة أنظف للقيام بذلك في هذه الحالة، 136 00:05:55,720 --> 00:05:57,840 منذ بدلا من إرسال رسالة إلى هذا السيناريو 137 00:05:57,840 --> 00:06:00,570 في مكان ما في منتصف التنفيذ، يمكننا أن نرسل 138 00:06:00,570 --> 00:06:03,710 رسالة إلى هذا السيناريو والانتظار للبدء. 139 00:06:03,710 --> 00:06:07,360 بث نفعل ذلك عن طريق الحصول على الأسماك حدث، واحدة سنقوم 140 00:06:07,360 --> 00:06:08,800 استدعاء تؤكل. 141 00:06:08,800 --> 00:06:11,510 ثم، سنقوم إنشاء برنامج نصي لنفث جبني التي من شأنها أن 142 00:06:11,510 --> 00:06:13,030 الانتظار لهذا الحدث. 143 00:06:13,030 --> 00:06:15,560 هذا هو مماثل لفضاء حدث بار، إلا أن هذا 144 00:06:15,560 --> 00:06:19,250 الوقت، المستخدم ليست واحدة مما اثار مباشرة على الحدث. 145 00:06:19,250 --> 00:06:22,800 الآن تم تعيين كل ما عليك القيام به ظهورنا متغير foodFound 146 00:06:22,800 --> 00:06:25,750 إلى false، ونحن الآن يمكن أن تعطي السمك الجائع ما يصل 147 00:06:25,750 --> 00:06:28,470 حصص من نفث جبني كما يريد. 148 00:06:28,470 --> 00:06:30,040 >> حتى لا سيئة للغاية، أليس كذلك؟ 149 00:06:30,040 --> 00:06:33,400 في C والكتابة متعددة الخيوط برامج أكثر تعقيدا، 150 00:06:33,400 --> 00:06:35,700 ولكن الأساسيات هي نفسها. 151 00:06:35,700 --> 00:06:38,690 على أي حال، وآمل أن يكون كبيرا من الوقت بناء بعض المرح 152 00:06:38,690 --> 00:06:41,030 المتزامنة البرامج في سكراتش. 153 00:06:41,030 --> 00:06:42,570 اسمي نيت Hardison. 154 00:06:42,570 --> 00:06:45,260 هذا هو CS50.