[Powered by Google Translate] תאט HARDISON: כאשר יש לך מספר רבות של תוכניות לפתוח ב
מחשב, זה נראה כאילו כל מה ששל
פועל באותו הזמן.
לדוגמה, ייתכן שאתה עובד בדפדפן אינטרנט כמו
Firefox או Internet Explorer, האזנה למוסיקה ב-iTunes,
וכותב עבודה עם Word.
עם זאת, מתחת למכסת המנוע, את התוכניות בפועל
לרוץ אחד בכל פעם.
זה תפקידה של מערכת ההפעלה, Windows, Mac OSX, או
לינוקס, כדי לנהל את כל אחד מהתהליכים הנפרדים הללו, כפי
תוכניות ידועות, ולעבור ביניהם, כך שכאשר אתה
ללכת מבדיקת עמוד הפייסבוק שלך לעבודה על המאמר שלך
שוב, Word הוא אחד שפועל.
>> לפעמים, אנחנו רוצים את עצמם לתוכניות יוכלו
לעשות דברים רבים כמו גם את זה.
אם אתם כמוני, בוודאי יש לך חבורה של
כרטיסיות שונות לפתוח בדפדפן האינטרנט שלך, האחד לדוא"ל,
אחד עם לוח שנה, וכן הלאה.
אנחנו יכולים לטפל בכל כרטיסייה כתכנית או תהליך נפרדת,
כמו גוגל הכרום עושה, אבל תוכניות רבות משתמשות
גרסה קלת משקל של תהליך הנקראת חוט.
>> חוט הוא רק יחידה אחרת של עיבוד, סט של
הוראות או קוד שיכול "לרוץ", סוף הציטוט,
במקביל לנושאים אחרים.
זה מה שמאפשר לך לגלוש בפייסבוק
תוך כדי האזנתי לרקע או שיש 2
על משחק וידאו באותו הזמן.
לכן, נושא זה כללי, הידוע כמקביליות, בדרך כלל
לא עולה כל כך מוקדם בקורסים במדעי מחשב
מפני שהפרטים ברמה נמוכה יותר דורשים דיון
מערכות הפעלה וכדומה.
עם זאת, שפת תכנות שאנו משתמשים בי
תחילת CS50, שריטה, מספק כמה כלים מגניבים ל
להפוך אותו קל יותר לכתוב תוכניות עם דברים מרובים
קורה בפעם אחת.
>> כאשר אתה בונה תוכניות Scratch, אתה כל זמן
עבודה עם חוטים.
כל תסריט Scratch, שהוא קטע קוד שמתחיל עם
אחת היצירות "מתי" פאזל, ניתן לחשוב על
כחוט נפרד.
בואו נסתכל על תכנית שריטה פשוט לראות איך זה עובד.
>> הנה, יש לנו אובייקט דגים, או ספרייט, עם שני תסריטים
כי גם כאשר אנו מתחילים ללחוץ על לחצן הדגל הירוק הקטן.
התסריט הראשון שולט תנועתו של הדג.
כאשר הדגל הירוק לוחץ, הדגים מקבלים הציבו
בצד השמאל של המסך, שנקרא לבמה,
פונה ימינה.
ואז, בסדרה של הוראות שתרוצנה לנצח, עד שאנחנו
לעצור את התכנית, הדגים מחליקים לצד ימין,
מסתובב, חוזר לצד שמאל, ו
שוב מסתובב.
התסריט 2 שולט תהליך המחשבה של הדגים.
מתברר כי מדוברים בדגים רעבים.
אז אחרי שחיכה במשך 3 שניות, הדגים יחשבו,
"אני רעב," לשנייה רביעית.
סקריפט זה גם פועל לנצח.
וכמו שאנחנו רואים, מהפעלת התכנית על ידי לחיצה על
דגל ירוק, שני התסריטים יופיע לביצוע
בו זמנית.
הדג נע וחושב באותו הזמן.
>> מאז הדגים נראים כל כך העניים רעבים, בואו נוסיף בחלק
פחזני גביני עבורו לאכול.
יש לקוות שהם לא יתפוררו במים.
כאשר אנו מוסיפים בספרייט שני, אנחנו גם נוכל
להוסיף בתסריטים מתאימים לספרייט.
ומכאן, שיהיה קבוצה נוספת של
נושאים שירוצו.
כדי לתת למשתמש השליטה על התכנית שלנו כאשר
דגים רעבים מקבלים אוכל, יניח שבכל פעם השטח
בר הוא מכה, פחזניים גביני מופיע על הבמה ל
דגים לאכול.
לפני שפגענו בשטח הבר, אנחנו רוצים לשמור גביני
פחזניים חבוי, כך שהדגים אינם יכולים לראות אותם.
כדי לעשות זאת, אנחנו צריכים כמה תסריטים ל
פחזני גביני ספרייט.
התסריט הראשון, הדגל הירוק, פשוט להסתיר את המזון.
בניגוד לתסריטים האחרים שכתבנו, אחד זה לא יהיה לשמור
פועל לנצח.
זה יהיה להתחיל ולסיים במהירות רבה, בדיוק כשלחצו
כפתור הדגל הירוק.
>> התסריט הבא יש לנו יחכה לשטח הבר להיות
לחץ לפני ביצוע.
אנחנו יכולים לקרוא מחכים לקלט מהמשתמש "מתנה" או "הקשבה"
לאירוע.
ואת הקוד שמבצע כאשר אירוע קבל או
שמע נקרא קוד טיפול באירועים.
המטפל באירועי השטח הבר שלנו יראה את הפחזניות על גביני
את המסך כך שהדגים יכול לאכול אותם.
בשלב זה, כל מה שנראה טוב.
>> הדבר הבא שאנחנו צריכים לעשות הוא להבין איך להגיע
הדגים להבין שיש אוכל לאכול.
בואו נוסיף חוט אחר לדגים שכל זמן
בדיקות אם זה נוגע בנשיפות העלובות.
אנו עושים זאת בנושא נפרד מאז שהדרך בה אנו יכולים
כל זמן לבדוק למזון.
אחרת, נהיה רק ​​אפשרות לבדוק מעת למזון
בין הגלישה, להסתובב, מחכה, או לחשוב.
>> אישור.
עכשיו בואו להפעיל את תכנית השריטה שלנו.
כצפוי, מייד מסתיר אוכל ו
דגים רעבים שוחים קדימה ואחורה בדיוק כמו קודם.
כאשר אנו פוגעים מקש הרווח, תפיחות גביני תיכנסנה לשדה ראייה,
והדגים הרעבים אומרים טוו.
אבל הרגע, זה מוזר.
איך זה של הדג "אני רעב", קוטע מחשבה
דברים אחרים?
הסיבה לכך היא שלא להקים כל תיאום
בין השלושה תסריטי הדגים.
כולו פועל בנושא שלו, לא מודע למה
אחרים עושים.
בואו לתקן את זה לפני שאנחנו ממשיכים הלאה.
>> תיאום בין נושאים הוא משימה מסובכת מאז
אין לנו שליטה על מפורשת כאשר כל חוט רץ או
לא לרוץ.
כדי לשלוח הודעה מנושא אחד למשנו, נצטרך
כדי להשתמש במשתנה שאנו יכולים להגדיר, או לכתוב, בחוט אחד
וקראו בשני.
בואו ליצור foodFound משתנה בשם שאנו יכולים להגדיר ל
נכון כאשר הדגים רצו לתוך פחזני המסריחים שלו.
ובכן, כמובן, אנחנו רוצים לוודא שאנחנו להגדיר אותו
שקר בתחילה.
ואז, בחוט המחשבה של הדגים, תבדקו כדי לראות אם
הדגים מצאו מזון לפני ההצגה "אני רעב"
חשב בועה.
>> כעת, להפעיל את התכנית שוב, אנו רואים כי הדגים
לא מקבל מופרע עם מחשבות של רעב כש
פחזני גביני בחוץ.
הבעיה האחרונה שיש לנו היא שמנפח גביני לא הולך
משם לאחר הדגים, מירכאות, "אוכל" אותם.
מתסריטי הדגים, אין דרך קלה כדי להסתיר את גביני
פחזניים, כך שאנחנו צריכים לשלוח מסר לפחזניות גביני
ספרייט כדי להסתיר את עצמו.
אנחנו יכולים לעשות את זה עם עוד משתנה שאת הפחזניות גביני
ספרייט יש גישה אליו, כמו גם את ספרייט הדגים.
>> עם זאת, יש דרך נקיה לעשות זאת במקרה זה,
מאז במקום לשלוח הודעה לתסריט זה
איפשהו באמצע הביצוע, תוכל לשלוח
הודעה לתסריט שמחכה להתחיל.
אנו עושים זאת על ידי כך את הדגים לשדר אירוע, אחד אנחנו
קוראים אכלתי.
ואז, תיצרו תסריט לפחזניות גביני כי יהיו
לחכות לאירוע הזה.
זה דומה לאירוע בר השטח, מלבד זה ש
הזמן, המשתמש לא אחת ישירות מפעיל את האירוע.
עכשיו כל מה שאנחנו צריכים לעשות הוא להגדיר משתנים בחזרה foodFound
לשקר, ועכשיו אנחנו יכולים לתת דגים הרעבים כמו רבים
מנות של פחזני גביני כפי שהוא רוצה.
>> אז לא רע, נכון?
ב-C, כתיבת תוכניות מרובות הליכים מסובך יותר,
אבל את היסודות זהים.
בכל אופן, אני מקווה שיש לך זמן נהדר בנייה כמה כיף
תוכניות במקבילות בלגרד.
השם שלי הוא נייט Hardison.
זה CS50.