[Powered by Google Translate] مقابله HARDISON: هنگامی که شما چندین برنامه رو باز کامپیوتر، آن را مانند همه چیز به نظر می رسد در حال اجرا در همان زمان. به عنوان مثال، شما ممکن است کار در یک مرورگر وب مانند فایرفاکس یا اینترنت اکسپلورر، گوش دادن به موسیقی در iTunes و نوشتن مقاله با کلمه. با این حال، در زیر هود، برنامه در واقع اجرا در یک زمان. این کار از سیستم عامل، ویندوز، مک OSX، یا لینوکس، برای مدیریت هر یک از این مراحل جداگانه، به عنوان برنامه ها شناخته شده است، و سوئیچ بین آنها به طوری که هنگامی که شما از چک کردن صفحه فیس بوک خود را به کار بر روی مقاله خود را دوباره، ورد یکی که در حال اجرا است. گاهی اوقات، هر چند، ما می خواهیم برنامه خود را قادر به انجام کارهای متعدد مانند این، بیش از حد. اگر شما مانند من هستید، شما احتمالا یک دسته از زبانه های مختلف باز کردن در مرورگر وب خود، یکی برای ایمیل یکی با یک تقویم، و غیره. ما می تواند در هر تب به عنوان یک برنامه جداگانه یا فرایند درمان، مانند Google Chrome می کند، اما بسیاری از برنامه های با استفاده از نسخه با وزن سبک تر از یک فرآیند به نام یک موضوع است. موضوع فقط یکی دیگر از واحد پردازش، مجموعه ای از دستورالعمل یا کد است که می تواند "اجرا"، نقل قول را تمام نقل قول همزمان با موضوعات دیگر. این همان چیزی است که باعث می شود این امکان را برای شما به فهرست فیس بوک در حالی که گوش دادن به من در پس زمینه و یا به دو فیلمهای یوتیوب بازی در همان زمان. بنابراین، این موضوع به طور کلی، شناخته شده به عنوان همزمانی، به طور معمول نمی آید تا در اوایل دروس علوم کامپیوتر به این دلیل که جزئیات سطح پایین، نیاز به بحث در مورد سیستم عامل و مانند آن است. با این حال، زبان های برنامه نویسی ما در استفاده از آغاز CS50، خراش، فراهم می کند برخی از ابزارهای بسیار خوب برای آن را آسان تر برای نوشتن برنامه ها با چیزهای مختلف در یک بار. هنگامی که شما برای ساختن برنامه های خراش، شما دائما در کار با موضوعات است. هر اسکریپت خراش، که یک بلوک کد است که آغاز می شود با یکی از "وقتی که" تکه های پازل را می توان به به عنوان یک موضوع جداگانه است. اجازه دهید نگاهی به یک برنامه خراش ساده تا ببینید که چگونه این کار. در اینجا، ما یک شی ماهی، یا اسپریت، با دو اسکریپت ها که هر دو آغاز می شود که کمی دکمه پرچم سبز را کلیک کنید. اسکریپت کنترل حرکت ماهی. هنگامی که پرچم سبز کلیک، ماهی می شود قرار می گیرد در سمت چپ صفحه نمایش، به نام مرحله، مواجه به سمت راست. سپس، در مجموعه ای از دستورالعمل ها است که به خواهید برای همیشه لطفا برای اجرا، تا زمانی که ما متوقف کردن برنامه، ماهی glides به سمت راست، دور می زنند، می رود به سمت چپ، و تبدیل دوباره به اطراف. اسکریپت دوم کنترل فرآیند فکر ماهی. به نظر می رسد این است که یک ماهی گرسنه است. بنابراین پس از انتظار برای 3 ثانیه، ماهی خواهد شد فکر می کنم، "من گرسنه،" برای چهارمین دوم. همچنین این اسکریپت اجرا می شود برای همیشه لطفا برای. و ما می بینیم، از اجرای برنامه با کلیک بر روی پرچم سبز، هر دو اسکریپت به نظر می رسد برای اجرای به طور همزمان. ماهی حرکت می کند و به این فکر می کرد که در همان زمان. از آنجا که ماهی ضعیف به نظر می رسد بسیار گرسنه است، اجازه دهید اضافه کردن در برخی از پاف قشنگ را برای آن به خوردن. امیدوارم که نمی خواهد متلاشی شدن در آب است. هنگامی که ما در اسپریت دوم اضافه کنید، ما نیز قادر خواهیم بود به اضافه کردن در اسکریپت های مربوط به آن اسپریت. و در نتیجه، خواهید بود وجود دارد یکی دیگر از مجموعه ای از موضوعات که اجرا خواهیم کرد. را به کاربر از برنامه کنترل ما بیش از زمانی که ماهی گرسنه می شود غذا، اجازه دهید بگویم که هر زمان که فضا میله ضربه، پاف قشنگ بر روی صحنه ظاهر می شود ماهی را به خوردن. قبل از اینکه ما ضربه نوار فضایی، ما می خواهم به نگه داشتن قشنگ پاف در پنهان به طوری که ماهی می تواند آنها را نمی بینم. برای انجام این کار، ما می خواهیم یک زن و شوهر از اسکریپت ها برای نیاز پاف در اسپریت قشنگ. اولین اسکریپت، پرچم سبز، فقط مواد غذایی را مخفی کنید. بر خلاف سایر اسکریپت نوشته ام، این یکی را حفظ خواهد کرد در حال اجرا برای همیشه لطفا برای. آن شروع خواهد شد و پایان بسیار سریع است، درست زمانی که ما با کلیک بر روی پرچم سبز را فشار دهید. اسکریپت بعدی که ما باید صبر کنید نوار فضای کافی برای فشرده قبل از اجرا. ما می توانید تماس بگیرید منتظر ورودی کاربر "انتظار" و یا "گوش دادن" یک رویداد. و کدی که اجرا زمانی که یک رویداد دریافت کرده است و یا شنیده می شود به نام کد دست زدن به رویداد. نوار فضایی کنترل رویداد پاف قشنگ صفحه نمایش به طوری که ماهی می تواند آنها را بخورند. در این مرحله، همه چیز به دنبال خوبی است. چیزی که بعد از ما باید انجام دهیم این است که بفهمد چگونه برای به دست آوردن ماهی به درک که غذایی برای خوردن وجود دارد. اجازه دهید اضافه کردن یکی دیگر از موضوع را به ماهی است که به طور مداوم چک یا نه آن را لمس پاف قشنگ. ما این کار را در یک موضوع جداگانه از آنجا که راه ما می توانیم به طور مداوم برای مواد غذایی را بررسی کنید. در غیر این صورت، ما فقط می خواهم قادر به دوره ای برای مواد غذایی را بررسی کنید در بین هواپیمای بی موتوری پرواز، چرخش به اطراف، انتظار، و یا فکر می کنه. OK. در حال حاضر اجرای برنامه ابتدا ما اجازه. همانطور که انتظار می رود، بلافاصله به آنها غذا پنهان و ماهی گرسنه شنا به عقب و جلو فقط مثل قبل است. هنگامی که ما ضربه نوار فضایی، پاف قشنگ به نظر می آیند، و ماهی گرسنه می گوید whoo. اما صبر کنید، که عجیب و غریب است. چگونه می شود ماهی "من گرسنه ام" وقفه فکری چیزهای دیگر؟ دلیل این است که ما هیچ هماهنگی برقرار نیست بین سه اسکریپت ماهی. هر یک در حال اجرا است در موضوع خاص خود را دارد، بی اعتنا به آنچه که دیگران انجام می دهند. حل این مشکل قبل از ما در حرکت است. هماهنگی بین موضوعات کار روی حیله و تزویر از آنجایی که ما می باشد کنترل صریح و روشن بیش از زمانی که هر یک از موضوع اجرا می شود یا نه را اجرا نمی کند. برای ارسال یک پیام از یک موضوع را به دیگری، ما باید به استفاده از یک متغیر است که ما می توانیم تعیین می کنند، و یا نوشتن، در یک موضوع و خواندن در دیگری. بیایید ایجاد یک متغیر به نام foodFound است که ما می توانیم به مجموعه ای درست زمانی که ماهی اجرا می شود به پاف قشنگ. خب، البته، ما می خواهیم مطمئن شوید که ما آن مجموعه را به مقدار false در ابتدا. سپس، در موضوع تفکر ماهی، خواهیم چک کنید و ببینید اگر ماهی مواد غذایی قبل از نمایش "من گرسنه ام" تصور حباب. در حال حاضر، در حال اجرا این برنامه دوباره، ما می بینیم که ماهی با افکار از گرسنگی قطع نمی پاف قشنگ هستند. مشکل نهایی ما این است که پاف قشنگ نمی رویم دور بعد از ماهی ها، نقل قول نقل قول را تمام کردن، "خورد" آنها را. از اسکریپت های ماهی، هیچ راه آسان برای مخفی کردن قشنگ وجود ندارد پفک، بنابراین ما نیاز به ارسال پیام به پاف قشنگ اسپریت به خود پنهان است. ما می توانیم این کار را با متغیر دیگر که پاف قشنگ جن دسترسی به، و همچنین به عنوان اسپریت ماهی است. با این حال، یک راه پاک کننده برای انجام این کار در این مورد وجود دارد، چرا که به جای ارسال یک پیام به یک اسکریپت که در جایی در وسط اجرا، ما می توانیم ارسال پیام به یک اسکریپت است که در حال انتظار برای شروع. ما این کار را با داشتن ماهی پخش یک رویداد، یک خواهیم تماس بگیرید خورده است. سپس، ما به یک اسکریپت برای پاف قشنگ که به ایجاد منتظر این رویداد. این شبیه به نوار فضای رویداد، مگر این که زمان، کاربر به طور مستقیم تحریک رویداد نیست. در حال حاضر همه ما باید انجام دهیم این است که به عقب متغیر foodFound ما به غلط، و ما در حال حاضر می تواند به ماهی گرسنه به عنوان بسیاری از وعده از پاف قشنگ آن را می خواهد. بنابراین بد نیست، درست است؟ در C، نوشتن برنامه های چند رشته ای است پیچیده تر است، اما اصول یکسان هستند. به هر حال، من امیدوارم که شما زمان زیادی را در ساخت برخی از پاپ برنامه های همزمان به خراش. نام من مقابله Hardison است. این CS50 است.