[Powered by Google Translate] نيت HARDISON: عندما يكون لديك عدة برامج مفتوحة على الكمبيوتر، يبدو مثل كل شيء في تشغيل في نفس الوقت. على سبيل المثال، هل يمكن أن تعمل في متصفح الإنترنت مثل فايرفوكس أو إنترنت إكسبلورر، والاستماع إلى الموسيقى على اي تيونز، وكتابة مقال مع Word. ومع ذلك، تحت غطاء محرك السيارة، وبرامج الواقع تشغيل في وقت واحد. انها وظيفة من نظام التشغيل، ويندوز، ماك OSX، أو لينكس، لإدارة كل من هذه العمليات منفصلة، ​​كما ومن المعروف البرامج، والتبديل بينها بحيث عند الانتقال من التدقيق الخاص الفيسبوك الصفحة إلى العمل على مقالتك مرة أخرى، وورد هو الذي يتم تشغيله. في بعض الأحيان، على الرغم من أننا نريد برامج أنفسهم لتكون قادرة أن تفعل أشياء متعددة مثل ذلك أيضا. إذا كنت مثلي، ربما لديك مجموعة من فتح علامات تبويب مختلفة في متصفح الويب الخاص بك، واحد للبريد الإلكتروني، واحد مع التقويم، وهلم جرا. يمكن أن نتعامل مع كل علامة تبويب كبرنامج مستقل أو العملية، مثل جوجل كروم، ولكن لكثير من البرامج استخدام دعا أخف وزنا من النسخة عملية ترابط. A الموضوع هو مجرد وحدة أخرى من تجهيز ومجموعة من تعليمات أو التعليمات البرمجية التي يمكن أن "تشغيل"، نهاية الاقتباس الاقتباس، بالتزامن مع المواضيع الأخرى. هذا هو ما يجعل من الممكن بالنسبة لك لتصفح الفيسبوك أثناء الاستماع إلى البيانات في الخلفية أو لاثنين أشرطة فيديو يوتيوب اللعب في نفس الوقت. لذا، فإن هذا الموضوع العام، والمعروفة باسم التزامن، وعادة لا يأتي في وقت مبكر جدا في علوم الحاسب الآلي المقررات لأن تفاصيل المستوى الأدنى تتطلب مناقشة أنظمة التشغيل وما شابه ذلك. ومع ذلك، فإن لغة البرمجة التي نستخدمها في بداية CS50، خدش، يوفر بعض الأدوات أنيق ل تجعل من السهل على كتابة برامج متعددة مع الأشياء يحدث في وقت واحد. عند إنشاء برامج الصفر، وكنت باستمرار العمل مع المواضيع. كل برنامج نصي الصفر، وهو كتلة التعليمات البرمجية الذي يبدأ ب واحدة من "متى" قطع اللغز، يمكن التفكير فيه كما موضوع مستقل. دعونا ننظر في برنامج سكراتش بسيطة لنرى كيف يعمل هذا. هنا، لدينا كائن الأسماك، أو العفريت، مع اثنين من مخطوطات أن كلا من البداية عندما كنا انقر فوق الزر العلم الأخضر قليلا. وتسيطر الحركة السيناريو الأول للأسماك. عند النقر فوق العلم الأخضر، ويحصل على وضع الأسماك على الجانب الأيسر من الشاشة، ودعا المرحلة، تواجه إلى اليمين. ثم، في مجموعة من الإرشادات التي سوف تعمل إلى الأبد، إلى أن وقف البرنامج، والأسماك تنزلق إلى الجانب الأيمن، يستدير، يعود إلى الجانب الأيسر، و يستدير مرة أخرى. والسيناريو الثاني يتحكم عملية للأسماك الفكر. كما تبين أن هذه الأسماك الجياع. حتى بعد انتظار لمدة 3 ثوان، فإن الأسماك التفكير، "أنا جائع"، للمرة الثانية الرابعة. تشغيل هذا البرنامج النصي أيضا إلى الأبد. وكما نرى، من تشغيل البرنامج بالنقر على الأخضر العلم، سواء البرامج النصية تظهر لتنفيذ في وقت واحد. السمكة يتحرك ويفكر في نفس الوقت. منذ الأسماك الفقراء يبدو جائع حتى، دعونا نضيف في بعض جبني نفث عليه لتناول الطعام. نأمل أنها لن تتفكك في الماء. عندما نضيف في العفريت الثاني، سنكون قادرين على إضافة البرامج النصية في المقابل الى ان شبح. وبالتالي، سوف يكون هناك مجموعة أخرى من المواضيع التي سوف تعمل. لإعطاء المستخدم السيطرة على برنامجنا عندما الأسماك الجياع يحصل الغذاء، دعنا نقول انه كلما كان الفضاء هو ضرب بار، نفث جبني تظهر على المسرح ل الأسماك لتناول الطعام. قبل أن يصل شريط الفضاء، سوف نريد للحفاظ على جبني نفث مخفية بحيث لا تستطيع رؤية الأسماك منها. للقيام بذلك، سنحتاج بضع مخطوطات لل جبني نفث العفريت. فإن السيناريو الأول، والعلم الأخضر، فقط إخفاء الطعام. على عكس غيرها من الكتابات دينا كتب، وهذا واحد لا تبقي تشغيل إلى الأبد. فإنه سيتم البدء والانتهاء بسرعة كبيرة، ونحن على حق عندما انقر الزر الأخضر العلم. سيقوم البرنامج النصي التالي لدينا الانتظار لشريط الفضاء أن تكون قبل تنفيذ الضغط. لا يمكن أن يوصف في انتظار إدخال المستخدم "الانتظار" أو "الاستماع" لحدث. والرمز الذي ينفذ عند تلقي حدث أو ويسمى الحدث سمع معالجة التعليمات البرمجية. سوف لدينا معالج الحدث بار الفضاء تظهر في نفث جبني على الشاشة بحيث يمكن للأسماك تأكل منها. عند هذه النقطة، كل شيء على ما تبدو جيدة. والشيء التالي نحن بحاجة إلى القيام به هو معرفة كيفية الحصول على السمكة أن ندرك أن هناك لشراء الطعام. دعونا نضيف مؤشر ترابط آخر للأسماك وذلك باستمرار اختبار ما إذا كانت أو لم انها لمس نفث جبني. ونحن نفعل ذلك في موضوع مستقل منذ أن طريقة ممكنة تحقق باستمرار عن الطعام. خلاف ذلك، سنكون فقط قادرة على التحقق بشكل دوري للأغذية في مزلق بين، الدوران في المكان، والانتظار، أو التفكير. OK. الآن دعونا تشغيل برنامجنا الصفر. كما هو متوقع، والمواد الغذائية على الفور ويخفي الأسماك تسبح الجياع ذهابا وإيابا تماما مثل قبل. عندما كنا ارتطمت بالعارضة الفضاء، ونفث جبني يأتي في طريقة العرض، ويقول السمك الجائع whoo. ولكن الانتظار، وهذا غريب. فكيف للأسماك "أنا جائع" يقطع الفكر غيرها من الاشياء؟ هذا هو لأننا لم تثبت أي تنسيق بين النصوص الأسماك الثلاث. كل يعمل في الموضوع الخاص بها، غافلين عن ما الآخرين يفعلون. دعونا إصلاح هذه قبل أن ننتقل. التنسيق بين المواضيع هي مهمة صعبة لأننا لم يكن لديك التحكم الصريح على كل الصفحات عندما يتم تشغيل أو لا يعمل. لإرسال رسالة من مؤشر واحد إلى آخر، سنحتاج لاستخدام متغير أننا يمكن أن يحدد، أو الكتابة، في مؤشر واحد وقراءة في الآخر. دعونا إنشاء foodFound متغير يسمى نتمكن من المقرر أن صحيح عندما يدير الأسماك في نفث جبني. حسنا، بالطبع، ونحن نريد أن نتأكد من أننا تعيين إلى في البداية كاذبة. بعد ذلك، في الموضوع التفكير للأسماك، سنقوم تحقق لمعرفة ما إذا كان وجدت أسماك الطعام قبل عرض "أنا جائع" يعتقد فقاعة. الآن، تشغيل البرنامج مرة أخرى، ونحن نرى أن الأسماك لا يحصل انقطاع مع أفكار الجوع عندما نفث جبني خارج. المشكلة لدينا هي نهائية أن نفث جبني لا تذهب بعيدا بعد الأسماك، أقتبس نهاية الاقتباس، "يأكل" لهم. من مخطوطات الأسماك، وليس هناك طريقة سهلة لإخفاء جبني نفث، لذلك نحن في حاجة الى ارسال رسالة الى نفث جبني شبح لإخفاء نفسه. يمكن أن نفعل هذا مع متغير آخر أن نفث جبني شبح الوصول إلى، وكذلك شبح الأسماك. ومع ذلك، هناك طريقة أنظف للقيام بذلك في هذه الحالة، منذ بدلا من إرسال رسالة إلى هذا السيناريو في مكان ما في منتصف التنفيذ، يمكننا أن نرسل رسالة إلى هذا السيناريو والانتظار للبدء. بث نفعل ذلك عن طريق الحصول على الأسماك حدث، واحدة سنقوم استدعاء تؤكل. ثم، سنقوم إنشاء برنامج نصي لنفث جبني التي من شأنها أن الانتظار لهذا الحدث. هذا هو مماثل لفضاء حدث بار، إلا أن هذا الوقت، المستخدم ليست واحدة مما اثار مباشرة على الحدث. الآن تم تعيين كل ما عليك القيام به ظهورنا متغير foodFound إلى false، ونحن الآن يمكن أن تعطي السمك الجائع ما يصل حصص من نفث جبني كما يريد. حتى لا سيئة للغاية، أليس كذلك؟ في C والكتابة متعددة الخيوط برامج أكثر تعقيدا، ولكن الأساسيات هي نفسها. على أي حال، وآمل أن يكون كبيرا من الوقت بناء بعض المرح المتزامنة البرامج في سكراتش. اسمي نيت Hardison. هذا هو CS50.