[Powered by Google Translate] [מוסיקת רוק] [מוסיקה - "מאושרת ביחד" הצבים] הדוד Malan: היום, אנחנו מתחילים החיפושים שלנו יסודות מדעי מחשב והמבוא שלנו, עכשיו, לאמנות של תכנות, אשר שהיא רק דוגמה אחת. אבל באותה הרוח של פתרון בעיות, שיודע יום פאזל מסורתי של CS50 הוא מחר. אם לא RSVPed עדיין לאירוע זה, אתה יכול ללכת ל cs50.net/rsvp. אתה יכול להביא את הצוותות של שניים או שלוש או ארבעה. אתה יהיה לערער עם בעיות כמו זו שראית שם למעלה בהתחלה. כל הבעיות החדשות בשנה זו אם נטלה חלק גם בשנה שעברה, ואתה יהיה לנו סיכוי אז לזכות בפרסים מדהימים. ביניהם, ה-Wii וכמה שוברי מתנה וכדומה, כל הזמן שהסתובב עם CS50 תלמידים לכיתה ופיצה ופייסבוק. נוסף על כך שמחר אם אתה רוצה. אז זה הוא CS50, לאלה מכם שהצטרפו אלינו ל הפעם הראשונה. ויודעים שקורס זה נקבע במיוחד כדי לקבל אתה בקורס הזה עד סופו הסופי, ובנקודה שאתה תהיה לא רק הבנה של אלה יסודות מדעי מחשב, אבל יהיה לך זו קבוצה מיומנת מאוד פרקטית, כי אז אתה יכול לקחת אותו ל המחלקה שלך, בין אם זה מדעי הנדסה, מתמטיקה שימושית, המדעים הפיסיקליים, הטבעי מדע, או כמו. ואכן, מה כל כך מרגש במדעי מחשב אלה ימים הם שזה פשוט כל כך ישים כל מיני תחומים. ואף על פי שכיום, אנו לגרד את פני השטח של רק שפת תכנות מאוד מסורתית המכונית C, אהיה במקום להסתכל על משהו שנקרא גרד, משהו עם אשר שסיפור אהבת העוגייה בוצע על ידי אחד משלך קודמים בשנים האחרונות, לספר סיפורים, ליצירת משחקים, ליצירת אמנות אינטראקטיבית, ובעצם להתחיל לעוטפנו מוחות ברחבי חלק מהמבנים הבסיסיים ש בבסיס תכנות אבל בהקשר זה, כפי שתראה, זה הרבה פחות מפחיד, זה הרבה פחות מסתורי, ממה שאתה רואה לפני זמן רב. ותבינו, גם לאלה מכם שהצטרפו אלינו רק זה סמסטר, את המשפטים שעליו אנו נסתיימו בהרצאתו של יום רביעי, זה לא כל כך חשוב איפה אתה בסופו ביחס ל חברים לכיתה בכיתה זו, אבל איפה, עד סוף הסמסטר בשבוע 11, בסופו ביחס לעצמך זכות עצם היום הזה. אז בלי עיכובים נוספים, זה גם ראוי לציין כי אלה פחות נוחים, אלה איפשהו באמצע, הם גם, על ידי עיצוב של קורס זה, לא בכל חסרון פנים אל פנים אלה יותר נוחים מגיע למעמד הזה. כפי שתראה בשבועות באים, יש לנו שונה מסלולים לרקע אחורי שונה לגמרי, חתכים למי פחות נוח, יותר נוח, אלה איפשהו בין לבין. כפי שתראה בסוף שבוע ובשבוע הבא, שתי גרסות של סטים בעייתיים ביותר היא במהדורה רגילה ואז האקר שכולכם יכול עצמי לבחור את הנתיב שבך הם הכי נוחים. אז היום, אנחנו לצלול לתוך זה תכנות שפה נקראת גרד. זה שפת תכנות גרפית, ועדיין יש לו את אותן תכונות של כמה מהשפות ברמה הגבוהות אנחנו לבדוק מאוחר יותר בסמסטר, ביניהם C ו JavaScript ו-PHP. אבל זה הולך כדי לאפשר לנו להימנע מכמה מסח הדעת בשלב מוקדם בתחביר, דברים כמו פסיק, סוגריים, ופרטים סודיים אחרים, במבט הראשון, הם פשוט לא בכל אופן אינטלקטואלי מעניין ונוטים לקבל ב הדרך מכמה הבנה בסיסית. במונחים של היום מבנה התמיכה קדימה, הבין את זה כלי, CS50 לדון, שיהיה צמוד על מהלכו של אתר מאוחר יותר היום, הוא פורום הדיון המקוון ב שתוכל לשאול שאלות אחד של השני ו צוות, וזה גם כלי, כפי שנראים בשבוע הבא, שאנו נשתמש די בintegratedly שעתי עבודה גם כן. ואכן, שעתי עבודה מתחילות ביום שני, ולמען אמת, הראשונה שבוע לשעתי עבודה הוא מפתח נמוך למדי. אני לא חושב שתמצא את כל סריטות שאינן נגישות. זה די מובן מאליו, כפי שנראה, ואז מה אנו נשתמש בו להיום הוא לחלץ כמה תפיסות יסוד שיהיה, אם כן, נמשכות לאורך שאר הסמסטר. אבל החל מיום שני, בשעה 8:00 ב23:00 יהיו שעתי עבודה באננברג מעל הפסקת מוח. חתך 2 ייחלו ערב, אז מתישהו בסוף השבוע, ללכת לcs50.net/section, ואתה להישאל מספר שאלות. ביניהם, איך היית מתאר אותך רמת נוחות כמו של היום? אין שלטון חזק, מהיר כאל מי שבדלי. זה פשוט מסוג הדברים שאתה בוודאי יודע אם אתה הם בין אלה פחות נוחים או בדרך אחרת. ועכשיו, הדרכות. מפרט הבעיה נקבעה לשבוע הזה, הן הסטנדרטי ומהדורת האקר כאחד, היא באופן מקוון ב cs50.net נכון לעכשיו. ותראה כי הראשון של מהדורות אלה, מהדורה סטנדרטית בכל שבוע, מלווה במשהו שאנחנו קורא הדרכת קוד, ישיבה בראשותו של אחד מ עמיתי ההוראה של קורסים כדי להדריך אותך, לספק טיפים על, ולקבל אותך בדרך מסוימת כשמדובר לסטים מתחילים בעיות אלה. אז עם כל אחד מאלה קובע בעיה, אם אתה אי פעם רצית בעצמך היכן אני מתחיל, אתה מתחיל עם אלה הדרכות. ולמעשה, הרשה לי להציג Zamyla צ'אן, זה עמית ההוראה של השנה שיוביל כל אחד ו אחת מההדרכות אלה. Zamyla? [מחיאות כפות] ZAMYLA צ'אן: הו, היי, כולם. השם שלי הוא Zamyla. אני לומד הנדסה זוטרה בינתרופ הבית. אבל אני מנסה ולהשתלב בקורסים כמו מדעי מחשב רבים ככל יכול, וזו הסיבה שאני ממש נרגש להיות מוביל זה ההדרכות של השנה. הדרכות, בשבילי, היו חלק חיוני של CS50 ניסיון. במהלך ההדרכה, לכל p-סט, תלכו דרך הבעיה להגדיר ביחד, להסתכל על הבעיות, סוג של לחלק אותם לעקיצות לניהול. אני אתן לך טיפים, טכניקות, להשגה דרך והתחלת עבודה. אני מקווה לראות את כולכם בהדרכות. אם אתה לא יכול לעשות את זה באופן אישי, ולאחר מכן אנא עשה מנגינה באינטרנט. הדוד Malan: מצוין. תודה לך, Zamyla. אז מבין שהדרכות הן, אכן, ביום שישי אחר הצהריים, אבל זה במכוון וכך גם אם אתה מעדיף שלא להשתתף בכיתה ביום שישי אחר הצהריים, בווידאו יהיה ער כל במהירות רבה יותר על בסוף השבוע. אז מבין שcs50.net יהיה כל Zamyla של הדרכות. ושיש את התאריך של היום ושעה, 3:00 בערב, Harberd הול, 104. וכמה מעמיתי ההוראה גם הכינו כמה הערות בשבילך בהעדרו כדי לתת לך קצת פרספקטיבה לגבי מה הניסיון שלהם נכנס ו יוצא מCS50 היה כמו. אז אם אוכל לעמעם את האורות בדיוק לרגע, אני ניתן לך כמה העובדים של CS50. ג'קסון STEINKAMP: לקח CS50 בשנה שעברה בכיתת ט 'ב לנפול, וזה בהחלט פוצץ את דעתי. מעולם לא נקטתי בשום שיעורי תכנות לפני, ומעולם לא נכנס עם כל מדע מחשב לחוות בכלל. ובדיוק, שמעתי את הזמזום על הכיתה ו החליט לקחת אותו. יוליה מיטלמן: זה היה ממש כיף, ממש מרתק. אני עדיין, עד עצם היום הזה - רק לאחרונה ראיתי שיש לי את התקליטון שהדוד נתן לנו ביומנו הראשון של הרצאה. אני תליתי אותו על הקיר שלי. זה כנראה קצת חנון, אבל אני נשארתי ב קיר בכיתה כתזכורת איך זה היה מגניב. טראוויס שפלות: זה כל כך מביך. ג'קסון STEINKAMP: מדעי מחשב הוא משהו שאתה צריך לנסות גם אם אתה לא אחד עבור המדעים המסורתיים. זה הניסיון שלו, וCS50 יהיה לוודא שאתה נתמך גם דרכו עם הצבא השלם של TFS. ALI NAHM: אני לקחתי אותו בשנה הראשונה, ואז עשיתי הרבה של חברים חדשים. אני גם התוודעתי לכל ריכוז וזה כל בית הספר להנדסה, ולכן אני מאוד ממליץ על זה ומברך אותך למשפחת CS50. יניב יעקבי: CS50 פשוט מלמד אותך כיצד להשתמש בכלים כי הם נגישים לציבור רחב. אתה רק צריך את מחשב נייד, אתה צריך דפדפן אינטרנט, ואתה צריך ללמוד לכתוב קצת קוד, ואתה באמת יכול לבנות דברים פשוטים וצנועים. KAREN שיאו: זה פשוט כל כך מגניב להיות מסוגל לעשות משהו ויש אנשים משתמשים בו ויש אנשים רואים את זה, וזה מה שאני באמת אוהב את זה. TIM מקלפלין: - תחושה של קהילה, אני חושב, בזה כמובן יותר מכל קורס אחר שננקטתי עד כה. אתה לא סתם לוקח עוד - אתה לא ממלא את דרישה אחרת. אתה לא סתם הולך להרצאות והולך לסעיף. אבל אתה עושה טונות של דברים שכל עניין תכנות והכל על טכנולוגיה, אבל זה לא באמת מרגיש כמו בכיתה רוב הזמן. שפלות טראוויס: וביום הראשון, הם חלקו עוגה, ו אני נמכרתי באופן מיידי. יעקב PRITT: ממתקים ופיצה חינם. ZAMYLA צ'אן: - ללא קשר לרמת העניין שלך, אני חושב שCS50, יהיה לך כיף, ואתה תהיה אינטלקטואלי מגורה. מרק GROZEN סמית': זה תמיד מסיבה בכיתה, וזה מהסיבה כל לילה עובדת על p-הסט שלך. ג'קסון STEINKAMP: בכל פעם שתסיים להגדיר את הבעיה, אתה ירגיש כמו שסיימת פרויקט. מליסה Niu: זה היה בשנה ראשונה, ואני עשיתי קניות. היה לי ארבעת השיעורים שלי מוכנים, ואני היה באננברג. ואני נתקל בחבר, והוא אומר, היי, אני עושה קניות המעמד הזה שנקרא CS50, ואתה צריך לבוא איתי. בסופו של סתיו לוקח את זה כך, ולאחר שהכיתה, חשבתי שאולי אני הולך לקטין במדעי המחשב. אבל אני כאן, שלוש שנים מאוחר יותר, עדיין לומד מחשב מדע ובאמת לעשות את זה כמו גדול, ונהניתי מכל הרגע שלו. ROB אודן: אין לי מושג. ALI NAHM: בוא נראה. מליסה Niu: טירוף. רמקולים 1: אני מרגיש כאילו אני אהיה מאוד קלישה. אני רק הייתי אומר, כאילו, מדהים. יניב יעקבי: נגישות. יעקב PRITT: ממתקים ופיצה חינם. טראוויס שפלות: לא יכולות לסרב לכיתה שידות מתוך עוגה. TIM מקלפלין: אנרגטי. Vipul SHEKHAWAT: חיוני. ROB אודן: תן לי לחשוב על תשובה. אני חושב שיש לי משהו. אוי, אלוהים. כן, רובו של שמי אודן, וזה CS50. [מחיאות כפות] הדוד Malan: בסדר, אז בואו נתחיל לצייר תמונה מהכיוון שבו אנחנו יכולים ללכת, ובאים להכיר תפיסה זו מכונית כאן pseudocode. אז pseudocode אינו תכנות שפה בפני עוצמה. זה דבר טכני כשלעצמה, אבל זה פשוט סוג של אופן כללי לבטא את עצמך די במדויק, די אלגוריתמי, די פרוצדוראלית, אך ללא לדאוג לאיזו שפה אתה מבטא את עצמך פנימה זה חלק מהמודל האנגלי ושפות תכנות עם שיקרה לך להיות מוכר, כדי שנוכל להתחיל כתיבה מהסוג הזה כמו שאנחנו הולכים. ואכן, יוסף, אני יכול ללוות אותך על במה להיות סופר כאן? אני כבר הלכתי קדימה כאן מראש ושכחתי לשים בגרביים היום, וזה אהיה יותר בינינו דוגמאות מגוחכות. עכשיו, אני צריך אותך כאן. אני אעשה את חלק הגרביים. אז הנה יש לנו פנקס קטן. זה ממש פשוט TextEdit במק. אנחנו לא באמת מתכוונים לכתוב תכנית runnable, אבל אנחנו רק עומדים להתחיל משרטט pseudocode מבוסס בחלק מהייעוץ שתספק לי כאן. אז הנה היא הערימה של גרביים שלי בבית. אין לי גרביים על כשאני מתעורר בבוקר, ואנחנו עכשיו צריך לכתוב תכנית, אלגוריתם של מיני, שבה כדי לקבל את הגרביים האלה על הרגליים שלי. ועל הדרך, בואו נראה אם ​​אנחנו טיול נגמר, או נתקלים, חלק מהרעיונות שאתה הולך צריך להתחיל חשב על הרבה יותר ברצינות כאשר תכנות פן את התוכניות שלך לא מתנהגות די כמתוכנן. אז אני יושב כאן. יש לי הערימה של גרביים שלי. מה הדבר הראשון שאדם סביר היה לעשות כאשר המטרה היא לשים על זוג הגרביים? מישהו נותן לי צעד אחד, ורק צעד אחד. כן? קהל: תתכופף. הדוד Malan: יתכופף, אוקיי. שלב השני. שלב השני. קהל: תרים את הגרביים שלך. הדוד Malan: הרם את הגרב. אוקיי, עמימות כך קלה כאן, ואת זה היא האחד ראשונים מכשולים שאנחנו אמורים במכוון נתקל כאן. זה קצת מעורפל, אז לאסוף את הגרב שלך. בסדר, אני אקח את זה, אבל במחשב, הבין בסתם קצת, לא הולך לי זה סוג של אינסטינקט אנושי פשוט לבחור את האחד הקרוב ביותר. אנחנו הולכים צריכים להתחיל, לפני זמן רב, ובטאתי את עצם באופן מדויק יותר. בסדר, אז הצעד השני הוא לאסוף את הגרב שלך. אנחנו ניקח את זה. שלב 3. בחלק האחורי. קהל: מצא את זוג תואם. הדוד Malan: מצא את הזוג תואם. אוקיי, אז זה טוב. הייתי צריך לבחור גרב זה. אז המטרה היא למצוא גרביים מתאימים, עכשיו, אבל מה זה אומר? אדם, בדומה לסביר ביום רביעי, כאשר אני רק ידע למצוא מייק סמית בספר טלפונים, פשוט סוג של הלך עם האינסטינקט שלהם. אבל כאן, זה ברור שזה גרב פה, אבל מחשב של לא הולך להיות כל כך אינסטינקטיבי. מחשב הולך להיות אוסף של ביטים, כפי שאנו דן ביום רביעי, ואלו ארגן איכשהו בזיכרון. אבל הנקודה היא שמחשב יש רק את היכולת להסתכל על דברים אחד בכל פעם, ולמעשה, גם אנחנו בני אדם - למרות שזה מרגיש כאילו אני הבטתי למטה ופיצול שני לאחר מכן אני יודע איפה הוא הגרב, המוח והעיניים שלי ככל הנראה לא מהיר לרחף מהגרביים האלה, ולאחר מכן נצמד לאחד בשאלה. אז אם הכל יהיה מכוון יותר עכשיו כמחשב, איך אני מוצא זוג תואם זה? ובכן, יש לנו כדי לעבור. אנחנו צריכים אולי לולאה מעל הבלגן הזה של גרביים על רצפה לפיה אני אומר משהו כמו לכל גרב, להרים אותו , ואם באותה צורה וגודל כאחר, ואז נקודה, נקודה, נקודה, אנחנו נמשיך את הסיפור. אז לכל גרב, ולכן אני מרים את זה. אני בודק את זה שווה את זה. זה לא, ולכן הנחתי בצד בצד. אז אני אחזור שוב. האם זה שווה? לא, זה לא, אז שם אותו בצד. האם זה אחד? לא. זה אחד? לא, וכן הלאה. ולבסוף, אני מקווה, אני נתקל בגרב זה כאן. אז אם זה אותו הצורה, הגודל, קח אותו. ועכשיו, מה יהיה הצעד הבא שלנו כאן? כן? קהל: זיהוי נכון משמאל. הדוד Malan: אוקיי, לזהות ימין ושמאל, ולכן למרבה המזל, סוג כזה של עבודות. סימטרי קטנה, או שפשוט לובש את זה בצורה כזאת. בסדר, אז אני כבר זיהיתי נכון. ועכשיו, לפני שנמשיך, הרשה לי להצביע על מה של יוסף עושה כאן כסוג של מתכנת בקיא. אז שוב, אין דרך אחת לעשות את זה, אבל מעבר לסתם מספור השורות, יוסף כבר התחיל לעשות את זה סוג של שקע. ואכן, זו היא מוסכמה נפוצה מאוד בתכנות, לפי כשאתה עושה משהו איטרטיבי, מלפף סגנון, כמו אנחנו רומזים בביטוי האנגלי "לכל גרב, "הכינוס בpseudocode, וכפי שנראים בהמשך, שפות תכנות נורמליות, היא רק לכניסה. הכה מקש הרווח כמה פעמים, ללחוץ על מקש Tab או כמו, כך המקונן מתחת "לכל גרב" הוא הנתח של דברים שאתה צריך לעשות כתוצאה מאותה הלולאה. כך שכל מה שמעביר סמנטי זה. עכשיו בינתיים, "אם מדובר באותו צורה וגודל," עובדה כי "קח את זה" הוא מסוכסך נוסף רק אומרת זה הדבר היחיד שאתה צריך לעשות אם זה מצב, אם סניף ש, מזלג, כי בכביש, הוא למעשה נכון. אז עכשיו כאן, אנחנו בשלב ארבעה, לזהות ימינה ושמאלה. אני כבר זיהיתי נכון. תנו לי צעד חמש. מבחינה טכנית, אנו יכולים באמת לקרוא על כל דבר - אתה כנראה צריך תמספר את כל הקווים אם אנחנו הולכים לעשות את זה. יוסף: [לא ברור] הדוד Malan: [לא ברור]? אוקיי, בסדר, בסדר, אנחנו נעשה את זה בדרך שלך. בסדר, אז צעד חמש, איך עושים את גרב ימין? איך אתקדם הבא, כאן? כן? קהל: הרם את רגל ימין. הדוד Malan: הרם את רגל ימין, אוקיי. שלב 6? במהירות. כן. קהל: מצא את קצה פתוח של הגרב. הדוד Malan: אוקיי, למצוא את הקצה הפתוח של הגרב. כל כך טוב. אז הנה, בכנות, אינסטינקט נפוץ מאוד יהיה רק לשים על גרב נכון, אבל גם הוא די מעורפל. אלא אם המחשב או האדם יודע בדיוק מה זה אומר, זה לא הולך להיות לבצע את זה, אז הנה, יש לי מצא את הפתיחה של המנייה. שלב 7? קהל: ייגע בבוהן. הדוד Malan: בוהן Touch. אוקיי, אז עכשיו אנחנו הולכים - בסדר, אני הולך לקחת כמה חירויות כאן. תודה. שלב שמונה? לשים על גרב. אוקיי, אז עכשיו אני, חושב שאנחנו מספיק קרובים כדי למיין של לקחת את זה בבית. בסדר, אז זה עולה. אני אקח כמה חירויות עם מה זה אומר, בעצם. שים את הגרב ב. בסדר, עכשיו לשלב תשע? קהל: הנח את כף רגל. הדוד Malan: תודה לך. שלב 9, הניח את הרגליים למטה, ועכשיו, אנחנו יכולים לחזור. אז ככל הנראה, עכשיו אנחנו יכולים להיכנס לשלב 10 ואומרים לזהות עזב את הגרב, אבל זה כנראה כבר נעשה. ואם כך, אני יכול למיין של לחזור על פעולות אלה. אבל זה סוג של מעלה את השאלה. בעבר, בפעם האחרונה שרצינו לחזור על משהו, אנחנו עשה את זה ערוך אותו, שוב ושוב, ל כל לולאה כביכול. האם זה הגיוני להשתמש בלולאה כדי לטפל בשנייה שמאל וימין הגרב? כי אני מרגיש שפעולות אלה הן פחות או יותר זהה, פרט לעובדה שאחד מהם מתחיל כאן ואחד מתחיל כאן? האם לולאתנו, או שאנחנו פשוט ממשיכים את פעולות כתיבה 10 ו 11 ו 12? קהל: לולאה. הדוד Malan: אוקיי, אז לולאה. אני דווקא היה אומר פשוט להמשיך. אז למה זה כך? ובכן, זה הוא למעשה הראשון שלנו שאינם ברור החלטות עיצוב, ולמעשה, האחד המדדים שבי נתחיל להעריך, לעצמנו ולך, איכות של תכנית היא רק כמה יעיל שהוא. האם עשה הכמות המינימאלית של עבודה הדרושה כדי לעשות את העבודה הכי מהר, גם במונחים של הזמן שלך או במונחים של זמן הריצה של המחשב? כמה ניתוחים עושה מה שנדרש כדי להוציא לפועל? אז ללא ספק, זו הזדמנות ללולאה משום ברגע שאני מתחיל בהעתקה והדבקה, כמו יוסף ביעילות היית מתחיל לעשות ברגע שאתה קצת מבזבז אותך זמן, ואתה מגיב כפליים הבעה. אבל באותו הזמן, אלה הם רק שתיים באמת מיוחדים מקרים, משמאל ומימין. ואילו בעבר, אולי יש לי 10 או 20 או יותר בגרביים ערימה, זה בהחלט הגיוני שלא צריך 50 שורות של קוד אומר לבדוק גרב זה, אז את הבא, אז את הבא. הנה, זה קצת פחות ברור, והייתי שהצעתי שאנחנו יכולים ללכת לשני כיוונים. אנחנו יכולים גם צריכים לולאה ש, למרות שזה רק לולאות פעמים, או שאנחנו יכולים פשוט להעתיק ולהדביק רק קצת כאן כדי לעשות את העבודה. אבל התכנית הזו היא עגלה, אם אפשר לומר כך. זה יכול להיות כמה שגיאות, טעויות, או במקרים פינתיים, ולכן כדי לדבר, כי אנחנו לא באמת מצפים. שום דבר לא השתבש הזמן הזה, אבל מה שהיה יכול להשתבש בעת ביצוע תכנית זו? קהל: אתה לא צריך גרביים. הדוד Malan: אז יכול להיות שיש שם בלי גרביים שהיא. אז הבה נבחן מקרה פינה. אז אם אנחנו יכולים לגלול אחורה עד שלב אחד, ולכן היה צעד אחד להתכופף, כך שבודק. שלב השני, להרים את הגרביים שלך, אבל אז למצוא גרביים מתאימים, זיהוי נכון. אנחנו סוג של עשינו חבורה שלמה של נחות, וזה, בכנות, מדוע תכנית לפעמים לקרוס. אם אתה, המתכנת, עשית הנחות מסוימות, כמו אין ספק שיהיה זה הולך להיות גרביים או בוודאי יש הולכים להיות זיכרון שנשאר במחשב, אין ספק שהולך להיות שטח הדיסק נשאר בכונן הקשיח - ובכן, אם אתה עושה הנחות אלה, וזה לא, למעשה, מציאות, מי יודע מה במחשב של לפעמים הולך לעשות? ולפעמים, כשאתה מקבל את כדור החוף או ספינינג Windows קפואה או כמו, זה בדיוק משום שחלק המתכנת לא צפתה מקרים הפינתיים אותם המכונים. מה עוד יכול להשתבש בתכנית זו? כן? קהל: אתה לא צריך את רגל ימין ורגל שמאל. הדוד Malan: אוקיי, אולי אין לך גם את רגל ימין ו רגלו השמאלית, וכן תכנית זו לא יכולה להיות אוניברסלית ישים. אחרים? קהל: ייתכן שהרמת את גרב יתום. הדוד Malan: אולי הייתי הרמתי גרב יתום, כך גרב שאינו תואם שפשוט אין לו אחים, כי לי אבד אותו, הוא נקרע, זה עדיין בכביסה, או משהו דומה. אז גם את זה, לא באמת טופל. כן? קהל: ייתכן שכבר יש לך גרביים. הדוד Malan: אני אולי כבר יש לך גרביים. אני לא ממש בודק. אם אין לך גרביים, ולאחר מכן להמשיך לעשות שורה אחת ושתיים. וזה יכול לקרות. אתה נרדם בגרביים וכדומה, ולכן גם את זה, פינת מקרה סביר מאוד. ואולי אחד אחר? קהל: הגרב הוא מבפנים החוצה. הדוד Malan: אז הגרב הוא מבפנים החוצה, ולכן אנחנו לא עשינו שגיאה בדיקה, בקיצור. לא בדק אם מצבו של העולם הוא כפי שאנו מצפים. לא בדק אם אנחנו באמת מצאנו את מה שאנחנו מחפשים. ולמרות שזה סוג של דוגמה מגוחכת מעורב גרביים, בסופו של היום, זה בדיוק סוג של הלך רוח שאתה צריך בעת כתיבת תוכניות, גם בגרד, כמו גם ב-C, ב-JavaScript, ב-PHP, כי אחר, את התוכניות שלך תפגנה מקבילה של שכדור החוף מסתובב או פשוט להיכנע תוצאות לא מדויקות. אז תודה רבה כאן לסופר יוסף. [מחיאות כפות] הדוד Malan: בסדר, אז מה הוא, ב למעשה, תכנית מחשב? ובכן, בואו ניקח מבט מהיר נציג אחד כאן. אז זה תכנית שנכתבה בשפת C הוא בשם ג די ישנות בימים אלה, אך רבות שפות חדשות יותר בנויות על גבי זה. אכן, PHP, אחת משפות אינטרנט הממוקדות אנחנו שימוש לקראת סוף התקופה, בעצמו יש מה שנקרא מתורגמן, תכנית שכתובה ב-C, אבל עוד על זה בשבועות רבים מיום. אבל התכנית הזו, וזה מה שזה אומר לכתוב תכנית, אם כי בצורה פשוטה מאוד. יש לנו כמה תחביר די סתום כאן, אבל אתה יכול כנראה מניחים, גם אם אף פעם לא מתוכן לפני, מה התכנית הזו עושה. ואכן, אני לא יודע מה הוא printf, אבל בהחלט להדפיס מעלה באוב את הרעיון של הדפסת משהו. ולכן כן, תכנית זו היא סופו של דבר הולכת להדפיס המילים "שלום, העולם". עכשיו, אם יש לכם מק או PC או מחשב לינוקס, סיכויים הם, לפחות אם הורידו קצת חופשיות תוכנה זמינה, שאפשר היה לכתוב על תוכניות המחשב הנייד שלך די הרבה זמן עכשיו. ב-Mac OS, למשל, יש תכנית זו נקראת מסוף שמגיע עם מק, זה בדרך כלל ב תיקיית Utilities, וזה בדרך כלל פותחים שחור לבן או חלון לבן ושחור שבו יש לך יבקש שבאפשרותך להקליד פקודות. אז זה ממש מזכיר את מה שמחשבים הייתה לפני המשתמש גרפי ממשקים, GUIs, הגיעו יחד. עכשיו, ב-Windows, יש לך מנגנון דומה בצורה משורת הפקודה. אבל מה שאני הולך לעשות כאן הוא לפתוח את, אניח, TextEdit שוב, אז את אותה התכנית שבו השתמש pseudocode לפני רגע, ואני הולך קדימה לכתוב את התכנית הראשונה שלי. כולל stdio.h, מה זה אומר, int הראשי חלל, מה זה אומר, ואז באמצע כאן, printf ("שלום, עולם."). ואז ציטוט קרוב, לסגור סוגריים, פסיק. עכשיו אני הולך קדימה ופגעתי רק פיקוד-S. אני הולך להמשיך ולשמור את זה כhello.c, כך בכנס העולם של תכנות C הוא שם לקובץ נקודת ג. אני הולך רק כדי לשים בתיקיית הבית של ג'ון הרווארד, כאן, לחץ על שמור, ועכשיו אני הולך לעבור על לזה חלון מסוף, אשר שוב הוא זה שחור ולבן פקודה איפה אני יכול לבצע פקודות. אני יכול להפעיל תוכניות על ידי הקלדת שמם, ולא על ידי סמלי לחיצה כפול במובן המקובל. אבל העניין הוא שעל C היא שפה כמו C 1 מגיע בצורה זו, משהו שנקרא קוד מקור. משהו שנראה קצת כמו אנגלית, אבל הוא בהחלט פחות כמו אנגלית מאשר pseudocode של יוסף לפני רגע. זה קצת יותר מסובך. נראה ללכת כמה דפוסים וכללים. העובדה שיש לי סוגריים מסולסלים, פסיק, ציטוטים, פלטות זווית, מרגיש כמו מחשב באו עם זה סוג של שפה. אבל אם אני הולך, עכשיו, לחלון מסוף זה, אני יכול לרוץ פקודה שהולכת להמיר את קוד מקור היא משהו שנקרא קוד אובייקט. זה הולך להמיר תחביר אנגלי כמו לאפסים ואלה, באותם הסוגים של אפסים ואחדים שאנחנו דבר על יום רביעי. עכשיו, אני הולך להפעיל פקודה נקראת קלאנג. עוד על כך בשבועות הקרובים, אבל זה תכנית עם שאני יכול להמיר hello.c לכל חבורה של אפסים ואחדים. עכשיו, אני מפעיל את הפקודה הזו. אני שבצעתי קלאנג, ולאחר מכן אמרתי להפעיל את עצמך בקובץ זה קרא hello.c, שאני יצרתי לפני רגע, ו שום דבר לא נראה שיקרה. אבל באמת, אם חטטתי ספריית הבית שלי, הייתי רואה שa.out התכנית בשם טיפשות זו קיים כיום. זה רק שם ברירת המחדל עבור תכנית בעת כתיבה ג אנחנו יכולים לעקוף את זה בסוף, אבל a.out הוא שם של התכנית פשוט הפך לאפסים ואחדים. ועכשיו, אפסים ואחדים של זה, Mac שלי, במקרה זה, או מחשב Windows שלך, יכול להבין את החתיכות האלה, אלה אפסים ואחדים. וכך כשאני על Enter, אני רואה "שלום, עולם!" אבל זה קצת עגלה. אני לא ממש אומר "שלום, עולם: אוויר: -! Jharvard." אוויר הוא שמו של המחשב שלי. Jharvard שמו של החשבון, אז מה לא הייתי לי ברור להשמיט מהתכנית? איזה מעבר שורה. לא הכיתי את המקבילה של זן או חזרת הגררה, וזה, שוב, עדות לעובדה שמחשבים יכולים לעשות רק את מה שאתה אומר להם לעשות. ועובדה שלא ספר את המחשב לעבור סמן לשורה הבאה - כן, זה בהחלט לא הולך רק כדי לעשות את זה יומרנות ובשבילי. אז אם אני חוזר לתכנית שלי, ואני אומר \ n - אז \ n, כפי שמייד יראו, היא הדרך של מייצג דברים מוזרים כמו תווים בשורה חדשים, דברים שאחרת יהיה התוצאה של להכות על מקש Enter. אבל לעת עתה, רק יודע שלהכות על מקש Enter הייתי פשוט להפוך את הקוד שלנו ייראה מוזר, ולכן העולם החליט, אתה יודע מה, כדי לשמור על דברים יפים יותר, כדי לשמור אותו בשורה אחת, בואו רק לומר \ n מייצג קו חדש. בואו לשמור מחדש את התיק שלי, לחזור לחלון המסוף, ו a.out מחדש ריצה, Enter. עדיין עגלה, אבל למה? קהל: [לא ברור] הדוד Malan: כן, אז אני צריך להדר מחדש את זה. אז לקמפל תכנית רק אומר להמיר אותו מהמקור קוד לקוד יעד, קוד מקור לאפסים ואחדים. עכשיו, עצם העובדה שאני מכה שמור בTextEdit זה אין הוא נושא על האפסים והאחדים האלה כי אני קודם צריך תל קלאנג היי, אני כבר שיניתי את השורות האלה של קוד, קוד מקור. אתה צריך להתחדש a.out. שום דבר לא נראה שקרה, אבל במחשב, בשורת פקודה, אם אפשר לומר כך, כאשר דבר לא קורה, בדרך כלל אומר שמכיל בסדר. כשמשהו יקרה, זה אומר אתה דפוק, בדרך כלל. אז בואו עכשיו ללכת a.out, ואכן עכשיו, יש לי "שלום, עולם ". ועכשיו, מה עם האפסים והאחדים הללו? שם, בעצם, הם אלה? ובכן, אני לא יכול באמת רק סוג של מסתובב קצת מאוד בצורה יעילה. בואו תפתחו לי את TextEdit. הנה a.out. תן לי ללכת קדימה ולפתוח את זה, וזה כנראה מה שלי תכנית נראית. אז אני כבר פתחתי, לא hello.c, אבל a.out. אבל זה ממש לא מה שהתכנית שלי באמת. אין ספק, זה סוג כלשהו של תווי אלפביתי. אני לא רואה שום אפסים ואחדים, אבל זה בגלל a.out הוא תכנית. אפסים ואחדים - אבל TextEdit, כפי שהשם מרמז, זה בדיוק כמו פנקס רשימות ב-Windows, הוא רק עורך טקסט, כך שזה מבלבל את כל האפסים והאחדים הללו כ למרות שהם היו, מה? תווים. אז נזכר ביום רביעי, אנחנו פשוט באנו עם זה מיפוי שרירותי של מספרים, או חתיכות, למכתבים אותיות וסמלי פיסוק וכדומה. אז TextEdit, שזה עורך טקסט הפרשנות שגויה דפוסים אלה של אפסים ואחדים שאמורים להיות מילות דפוס, כמו "שלום, עולם". זה מציג אותם כמו ב-ASCII, ולכן זה נראה קצת מבולגן. עכשיו, יש כמה רמזים לתקינות בפה. שים לב אם אני מדגיש, יש רמז של ממש "שלום, עולם ", כך שאי שם בתכנית הוא המשפט שכתבתי. אבל בואו נלך קדימה ועכשיו רואה בתכנית אחרת. זה לא היה אחד נשתמש בה לעתים קרובות, אבל זה מגיע גם עם מק ויהיה פנימי של מכשיר CS50. תן לי ללכת קדימה ולפתוח עם תוכנה בשם XXD. חזרה היום, רוב התוכניות היו בשם די במסתוריות, וכך ממשיכה את המגמה. אבל ב-פירוש יורק את התכנית הזאת החוצה כמו בינארי. לא להפעיל אותו. הצג לי את זה כאפסים ואחדים, וזה ג תכנית שזה עתה כתב. עכשיו, אני, כאדם כאן, באמת שאין לי מושג מה דפוסים שונים אלה של אפסים ואחדים מייצגים. חזרה היום, אני, בכרטיסי הניקוב שלי או כמו, היית למעשה הייתם צריך לחפש את מה דפוסים שונים אלה של 01111000, למעשה מייצג. או גרוע מזה, הייתי צריך לעשות חורים או יצירה דפוסים אלה של אפסים ואחדים. אבל לעת עתה, לקחת על אמונה שמעבד, אינטל בפנים, כך לדבר, בתוך כל המחשבים שלנו בימים אלה, יודע כיצד לפרש האפסים והאחדים הללו. וכמה אפסים ואחדים אומרים הדפסה. כמה אפסים ואחדים אומרים להשמיע צליל. האפסים ואחדים החלק אומרים לקחת קלט משתמש ממקלדת. יש כל מיני דפוסים שונים, אבל אנחנו להשמחה, כמו בני אדם, רק באופן כללי צריכים לדאוג בתכנות רמה די גבוהה זה. וגם בשיעורי CS אחרים תוכל להתעמק ולחפש עמוק יותר בדברים כמו האפסים והאחדים הללו, או עדיין דברים אחרים עדיין. אז עכשיו בואו להמיר את זה. בואו נעבור מהר מאוד מC ולעבור למשהו קצת יותר מרגיע, קצת יותר מרגש, שב אנחנו יכולים לחזור הניפשות שלנו והצלילים וכאלה בבירור שברח לנו בזה ממשק די פרימיטיבי. אז אותה תכנית זו ב-C יכולה להיות מיוצגת כעת בזה שפת תכנות בשם Scratch כדלקמן. זו מקבילה של תכנית זו שלום העולם כתובה ב שפה זו הפאזל סגנון נקראת גרד. אז תן לי ללכת קדימה, לפתוח את התכנית מאוד זה. הוא נקרא שוב מאפס. זה זמין באופן חופשי, וזה אותו הדבר שאנו התחיל היום ב. אז זה כאן הוא גרד, וזה מחולק לכמה חלקים שונים. בצד ימין העליון מאוד, יש לנו את הבמה שנקראה, ו אכן, זה שבו את העוגיות בצע רק קצת לפני. ועל במה הם דברים הנקראים שדונים, תווים או אובייקטים או ישויות. זה לא ממש משנה כמה אתה חושב עליהם, אבל הם דברים הניתנים לתכנות, מטלטלין, ובמקרה זה את זה, תכנית שהסטודנט שלנו כתב יש לו כמה עוגיות זנגביל עוגיות, כמה עוגיות עגולות, כל חבורה של לבבות, חבורה שלמה של משקפים. בגלל זה, הוא או היא תוכל לתכנת כל אחד מאלה תווים בודדים בנפרד. עכשיו, מה זה אומר לתכנת את התווים האלה? ובכן, הרשה לי להמשיך וללחוץ על עוגיית יד שמאל זה ולגלול לצד השמאל למעלה כאן. בפינה השמאלית העליונה של המסך שלי כרגע הוא מה שנקרא אזור תסריטים. זה סוג של לוח חלק, בתחילה, על שאני יכול גרור ושחררת את חתיכות הפאזל ש, בכנות, לעשות בדיוק מה שהם אומרים. בחלקו העליון של מחסנית זו של חלקי הפאזל היא המילה כאשר הדגל ירוק שנלחץ, ואם אתה לא שמת לב קודם, בדרך התחילה שיר שעוגייה הייתה לחיצה, פשוטו כמשמעו, דגל ירוק. כך שפיסת הפאזל בפינה שמאלית עליונה יש משמעות כש לחיצות אדם הדגל הירוק, המשיכו לעשות את הדברים הבאים. עכשיו, מה הם עוגייה להמשיך לעשות? אני לא ממש יודע איך לפרש את זה עדיין, אבל עוגייה כנראה להגדיר החריץ שלה לאפס, אז זה חיכה שלוש שניות, ולאחר מכן זה שינתה את הקבוצה שלו לאחד, אז זה חיכיתי רגע, ואז הוא שינה אותה בחזרה לחריץ אחד. ואז זה באמת נראה קצת כמו באג, לא צריך צריך לשנות את החריץ שלה שוב ושוב אלא אם כן זה להיות שונה במקומות אחרים, אבל זו סדרה של צעדים היא מה מכתיב את ההתנהגות של העוגייה המסוימת הזה. אז בואו באמת לגלול אחורה ולא להסתכל על משהו כל כך מורכב עדיין. תן לי ללכת קדימה וללכת לקובץ, חדש, ולקבל שולחן נקי. אז עכשיו, אני אכן יש שטח ריק תסריט, שלב ריק, עם שריטת ספרייט ברירת המחדל שלנו, ובפינה השמאלית העליונה על המסך שלי יש לי מזרן של כולם חלקי הפאזל זמינים. ואנחנו לא עוברים כמעט שרבים מהדברים האלה היום כי, שוב, רובם מסבירים את עצמו, אבל אנחנו מנסה לקטלג אותם ולהצביע על הדמיון עם שפות עתידיות אלה כדי שנוכל לצלול. בפינה שמאלית העליונה וכאן הוא הראשון כאשר הדגל ירוק שנלחץ, אז תן לי לגרור את זה לכאן, להתרחק קצת. ואם אני לוחץ על הדגל הירוק, שום דבר לא באמת קורה כי אני לא מחובר כל היגיון, כל אמירה כביכול, כדי שהדגל ירוק, אז בוא אותי ללכת אל קטגוריות לכאן. אני כרגע בקטגורית הבקרה. אני במקום אני הולך לרדת לקטגוריה נראית, ו יש קבוצה שלמה של דברים שאומרים כאן תגיד, חושב, שינוי צבע, תלבושות חלף. אז אתה יכול לעשות דברים טיפשיים עם תלבושות ו צלילים וכדומה. תן לי ללכת קדימה ופשוט לומר לומר, ועכשיו שם לב שאגרור ושחררתי את פיסת הפאזל הזה, זה הולך לרוצים להיצמד לצורה המתאימה. אז כשאני הולך קדימה ולהרפות מהעכבר שלי, הם נועלים ביחד, ועכשיו אם אני הולך לכאן ולוחץ על הדגל הירוק, החתול אכן להגיד שלום, רק כי זה מה שנמצא בתוך קופסה לבנה זה. בקרוב נראה שקופסה לבנה זה מה שנקרא ויכוח, או פרמטר. זה דרך של שינוי ההתנהגות, במקרה זה, הפאזל, אבל אם אני רוצה לומר בדיוק מה שאמרתי בעבר, אומר שלום, עולם, אני יכול עכשיו לחזור לכאן, לחץ לשחק, ו" שלום, העולם "הוא מה של אמר. אז אנחנו ממש עכשיו בתכנות. זה לא כל כך משכנע של תכנית, אבל לפחות זה משהו קטן משכנע יותר מזה נראה, ב מבט ראשון, כמו זו. ואנחנו יכולים להגיע מהר מאוד כל הבעה יותר כי בהתחלה, כמו בשפות אחרות, יש כל מיני ההצהרות, לא רק יגידו או הדפסת משהו, אבל אתה יכול לעשות דברים כמו לחכות, כמו שרק ראו את עם העוגייה, חלק מספר השניות. אתה יכול לשחק בצלילים בסביבתו של גרד רק כמו שאתה יכול בצליל משחק תכנית מחשב רגיל. אתה יכול לבדוק מה שנקרא ביטויים בוליאניים. אז עכשיו, בואו נתחיל להוסיף לערכת הכלים שלנו כמה מינוח שלמעשה מתייחס לדוגמא שג'וזף ואני עשינו כאן עם הגרביים. לכן הצהרות הן רק הצהרות של עובדה. לעשות את זה. הוראה לספרייט, או האנושי, לעשות משהו. ביטוי בוליאני הוא משהו שיש לו ערך, ערך שנקרא אמת, זה או אפס או אחד, שקר או נכון, כבוי או ב, כן או לא. לא ממש משנה כמה אתה חושב על זה, אבל זה המצב בינארי. תאט דן בווידאו של יום רביעי, 2 דברים שונים. אז בהתחלה, ביטויים בוליאניים יקרו להסתכל כמו החפצים הכחולים האלו כאן, ובמקרה הזה, השאלה הסימן מרמז שאתה שואל שאלה. האם החתול, או ספרייט, נוגע מצביע העכבר? אז זה הוא רק דוגמה אחת של בלוק גרד שהולך כדי לאפשר לנו לבדוק כן או לא, הוא עכבר נגיעה ספרייט על המסך? וזה יכול להיות שימושי אם אתה באמת רוצה לעשות את הדברים עם העכבר. בנוסף לביטויים בוליאניים, יש לנו דברים כמותו את העכבר, כך שאתה יכול לזהות סוג זה של השאלה גם כן. אנחנו יכולים לעשות את מתמטיקה אם אתה באמת רוצה, ויש שימושים ממש משכנעים יותר לזה מאשר רק טהור של חשבון, כפי שנראה. אקראיות מדומה וביצוע התכנית שלך תופענה לחשוב או מתנהגים בצורה שונה המבוסס על כמה ערכים אקראיים לכאורה, ואז יש לנו דברים כמו ביטויים בוליאניים כמו AND. אז אם אתה באמת רוצה לבדוק את שני ערכים, שנראים ב גרד שאנחנו באמת יכולים לבדוק אם זה נכון, וזה נכון. לדוגמה, במקרה של הגרביים שלי, שהייתי מסוגל ב מאוד סוף שאל את השאלה אם גרב שמאל ובימין הגרב הוא ב, הפסיק. כולכם סיימתם את היום, כדי שיהיה הזדמנות לכך. אז בואו נמשיך ואנסה לשחזר כמה מאלה יחד וללכת לכמה דוגמאות יותר משכנע יותר מזאת. אז תן לי ללכת קדימה ולפתוח כאן כמה דוגמאות שתמיד יהיה באתר האינטרנט של הקורס, כמו גם, ו לפתוח hello2. אז בhello2 כאן, יש לנו תכנית שעושה כמה דברים, אבל זה לא עושה את זה בצורה יעילה כמו שאנו יכולים להיות. אז הנה זה אומר "שלום, עולם" לשנייה אחת ואז מחכה לשנייה אחת. ואז עושה את זה שוב, ואז עושה את זה שוב. אז אם אני לוחץ על הדגל הירוק, שריטה אומר "שלום, עולם. שלום, עולם. שלום, עולם. "וזה כמובן מועמד עכשיו ל שיפור. מה השיפור השולי, בתקווה, אנחנו יכולים עכשיו לעשות אם גרד תומך ברעיון? איזה סוג של לולאה. סוג כלשהו של חזרה, עכשיו, יהיה נחמד, אז תן לי למעשה לנסות את זה. תן לי בעצם ללכת ולעבור את זה. אז הודעה יכולה לנתק לוקים באותה קלות כמו שאתה יכול להוסיף ל לצרף אותם. תן לי ללכת תחת בקרה, לגלול למטה כאן, ואכן, יש פיסת הפאזל הזה כאן, חזור ולתמיד ו אם לנצח. אז יש כמה דרכים להביע את מבני looping בלגרד. האחד שאני כנראה רוצה כאן הוא לא לנצח, כי אני רק רוצה שזה יקרה שלוש פעמים, אבל כנראה חזור. אז בואו לגרור אותי חזרה לכאן, גרור ושחררת אותו, ו עכשיו במקום לומר "שלום, העולם" שלוש פעמים נפרדות, תן לי לגרור את פיסת הפאזל הזה כאן. ולמרות שזה לא נראה מתאים, התכנית היא חכמה מספיק כדי להבין שהוא יגדל כדי למלא, כך שזה צורות שחומר ולא גודל מוחלט. הרשה לי לשנות את החזרה לשלוש, ועכשיו תנו לי ללכת קדימה ולגרור חכו שני שם גם כן. זה הולך הצמד גם כן, ואז עכשיו אני הולך לגרור החבר 'ה האלה לכאן ופשוט לזרוק אותם כי אני לא צריכים אותם יותר. בואו להגדיל אותי החוצה ולחץ על הדגל הירוק עכשיו, ויש לנו אותה תכנית, אבל, כפי שחזיתי בעבר, טוב יותר תוכנן, כי אתה יכול לדמיין כמה גרוע זה תכנית היינו מקבל, ובוודאי מבחינה אסתטית, אם היה לך ל מתחיל בהעתקה והדבקה, העתקה והדבקה, או גרירה ושחרור של הדברים לתקן אותו שוב ושוב. עכשיו, פשוט אומר דברים על המסך, הדפסה ל מסך, באמת לא כל כך מרגש, אז בואו נפתח שונות שלישיות כאן. ועכשיו, כמו שתראה, זה יגיע מהר מעצבן - [MEOW] הדוד Malan: - אבל זה גם די חמוד. [MEOW] הדוד Malan: אוקיי, אז טוב, ואנחנו בהחלט יכולים להשתמש בזה אותו מעבר מזה chunking לתוך לולאות מבנה, אבל בואו נעשה את זה יותר מעניין עדיין. תן לי ללכת קדימה, לפתוח את שונות 4 כאן, איפה אני לקחת את דברי צעד אחד קדימה. אז לפי זה, אווילי ככל שזה בהתחלה מבט, מה שהתכנית הזו הולכת לעשות? זה הולך מייאו פעם אחת. למה? ובכן, אחת הוא, עד כמה שאני יודע, תמיד פחות משנים. אין מושג של אקראיות כאן. לי, פשוטו כמשמעו, בקידוד קשיח אחד ושניים, אבל זה למשל עכשיו בשימוש בפועל בביטוי בוליאני. הרבה אוהבים כיוסף עשה בpseudocode, כניסת IF אתה מוצא את גרביים תואמים לאחר מכן בצעו את הפעולות הבאות, יש לנו כאן ביטוי אם אחד הוא פחות מ 2 אז - ולמעשה יש לנו אפילו קצת כניסה, בי סגול הוא מסוכסך מעט ימינה - ואז אתה הולך לשחק מייאו הצליל. עכשיו, במקרה זה, כי אחד הוא תמיד פחות מ 2, אז זה הוא סוג של בזבוז של מצב. אבל שנוכל, כפי שנראה, לחבר דברים אחרים לתוך מצייני מיקום אלה שבו ושניים עכשיו. אז בואו עכשיו להתקדם לדוגמה חמש מאלה כמה דברי ברכה ולהסתכל על מה התכנית הזו הולכת לעשות. אז עכשיו, במשפט עברי, איך עושה את זה תכנית מתנהגת? קהל: מיילל במחצית הזמן. הדוד Malan: מחציתו של מיאו של הזמן, אז זו דרך של העברת רעיון פשוט מאוד. למרות שקורים לך להיות באמצעות כמה פערים כאן בכמה מספרים, זה באמת רק programmatical אגב, דרך מדויקת, אם לומר את מטבע כשהראש למעלה, ללכת קדימה ומייאו. או לחלופין, אם מטבע פלי, לא לילל. ובמקרה הזה, איך אנחנו מבטאים את זה? נאסוף את מספר אקראי מתוך 1 עד 10, ואם זה המספר הוא פחות מ 6, קדימה ומייאו. ואיך זה נכנס לכאן? ובכן שוב, שים לב רק גרירה ושחרור ו דברי תפסים למקומו. אז עכשיו בואו נראה אם ​​זה עובד אקראי. תן לי ללכת קדימה ולחץ על הדגל הירוק. [MEOW] הדוד Malan: אוקיי. [MEOW] הדוד Malan: אוקיי. אוקיי, טוב, אז יש לנו ראשים, ראשים, זנבות ביעילות. זנבות. [MEOW] הדוד Malan: ראשים. [MEOW] הדוד Malan: מצוין. זה תמיד מביך שבו אתה מקבל רק סטטיסטי רע לרוץ, וזה כל הראשים, והתכנית בעצם לא לעבוד כפי שהיית מקווה. אבל הפעם, זה עבד, ושנדמינו לנו, אם אנחנו לא זה מספר אינסופי של פעמים, סיכויים של 50%. עכשיו שוב, לא כל כך מעניין, רק עושה חתולים מייאו, אז בואו נראה אם ​​אנחנו יכולים להוביל את זה עוד קצת כאן בגרסה 6. אז עכשיו, יש לנו גרסה ממש מעצבנת - [מיילל בכל כמה שניות] הדוד Malan: - וזה מה שידוע, בדרך כלל, כפי לולאה אינסופית. לולאה אינסופית אז במקרה זה מרגיש רעה. זה בהחלט הולך להתחיל נשמע רע, ועדיין אינסופי לולאות הן לא תמיד רעות. האם תוכל לחשוב על הקשר בתוכנות מחשב שבו היית בעצם רוצה לולאה אינסופית? כן? קהל: כשאתה רוצה לבדוק את מצבו. הדוד Malan: אוקיי, כאשר ברצונך להמשיך לבדוק מצב? כמו מה? קהל: [לא ברור] הדוד Malan: אוקיי, טוב, כך שאם הייתה לך קצת תכנית, חלק מסוג דברי אוטומציה ביתית, שבו אתה רוצה כל הזמן צג הוא משהו המקרה. האם את האורות? האם את האורות הדולקים כי אולי יש לך שעון, ו אתה רוצה שהם יתפוצצו, ייתכן שתצטרכו לעשות משהו שוב ושוב. ואכן, מדובר בשעונים, כל אחד מכם שיש להם שעונים במחשב שלך או שהעונים דיגיטליים, זה לולאה אינסופית. היא ממשיכה לעדכן את הזמן כי זה כל זמן בדיקה ובדיקה ובדיקה יש את הזמן השתנה, ואם כן, הו אלוהים שלי. השעון סוף הסוף השתנה. זה צריך להציג ערך לך את זה. אז אילו רוב הלולאות האינסופיות הזמן הם טעות, או לפחות החלטת תכנון לקויה, לפעמים הם עושים יש הערך שלהם. ובכן, בואו להתקדם עוד יותר כאן כדי hello7. אז עכשיו התכנית תקבל קצת יותר אינטראקטיבית. בואו להגדיל אותי לכאן, ושוב, זה מה שיפה על גרד. ואנו נשתמש בו כדי שתהיינה ברורים, שריטה, רק היום ולתוך הבעיה של השבוע הבא להגדיר. אבל ביום שני, אנחנו צוללים לתוך ג בתכנית זו כאן, היא עושה, לנצח, את הדברים הבאים. אם נגיעת מצביע העכבר - עכשיו, מי הקשר כאן? ובכן, והודיע ​​כי מי שנבחר כאן למטה בתחתית נכון הוא החתול, ספרייט אחד, ולכן כתבים אלה, זה תכנית, חלה עליו באופן ספציפי. אז אם חתול שנוגע בסמן העכבר, ואז זה קורה לשחק זה למטה ולחכות שתי שניות, ו לאחר מכן חזור עד זרא. אז בואו נלך קדימה ולחצתי על כפתור הפעלה. שום דבר לא קורה, אבל אם אני רוצה ללטף חתול עכשיו, אני יכול פשוט. [MEOW] הדוד Malan: מקסים. [MEOW] הדוד Malan: אוקיי, פחות מעצבן, אבל גם מקבל משעמם, כך תוכלו לעבור הלאה ולראות אם אנחנו לא יכולים להזריק עוד מעט מאוד היגיון. זה היה דוגמה 7. הנה דוגמה בשמונה, אנחנו הולכים להציג את מצב אחר. כל כך הרבה כמו מזלג מילולי בכביש, שבו אתה יכול ללכת עזב או שאתה יכול ללכת ימינה, במצב תכנות שפה כמו גירוד, או כפי שנראים C, יכול לאפשר לך ללכת בכיוון זה או אחר באמצעות IF ELSE לבנות. אז פשוטו כמשמעו, אם נגיעת סמן עכבר, זה תהיה לנגן צליל מסוים, אחר זה הולך לשחק את זה אחר קול, מיאו. עכשיו, אם אתה יכול להסיק מהשם של הצלילים האלה, אתה יכול כנראה לנחש מה התכנית הזו אמורה להעלות באוב הרעיון. החתול הזה מיילל בשמחה. [MEOW] הדוד Malan: לשמחתי, אבל לא די אוהב שנוגע בו. [שאגות] הדוד Malan: אז עכשיו יש לנו חתול שצועק עליך. בסדר, טוב, הדוגמא האחרונה עם חתולים כאן, ו בואו גרסה הפתוחה של תשע מזה כאן. אז עכשיו, יש לנו את הצליל הכי המעצבן הבא שאני יכול למצוא, ולכן יש לנו סוס ים או אריה ים כאן מי הולך בצע את הפעולות הבאות. [הב SEAL] הדוד Malan: אוקיי, אז זה יימשך עד אשר אתה להבין איך תכנית זו עובדת. אז הפעם, חיה זו יש שני תסריטים, ומה מעניין כאן הוא שהתסריטים האלה הולכים לבצע במקביל. לכן, מכיוון ששניהם מתחילים עם דגל ירוק 1 לחץ, זה כמו ללכת כמו זה, ושתי התוכניות להתחיל לרוץ זה פעם אחת, גם אם הם looping לנצח. אז בתסריט העליון, יש לי קצת היגיון. אילו תכונות שמספק שם למעלה? [הב SEAL] קהל: [לא ברור] הדוד Malan: אם זה מה? [הב SEAL] קהל: אם מושתק לאפס, זה הולך להמשיך לשחק נשמע. [הב SEAL] הדוד Malan: אוקיי, טוב. אז אם יושתק, מה זה, הדבר הכתום הזה הוא אפס, לאחר מכן להפעיל את צליל אריות הים וחושב "הו, היי, "למשך שתי שניות. עכשיו, אני לא יודע מה הוא מושתק, אבל אפס מעלה רעיון של שקר או כבוי. אז אם מושתק הוא שגוי, ולכן אם אינו מושתק, להמשיך לשחק את הצליל. בסדר, נו, איך אנחנו להשבית את הדבר הזה? ובכן, בואו נסתכל על הסקריפט השני שם למטה. התסריט השני אומר להגדיר מושתק לאפס. שים לב שזה גם כתום, אז מה שריטה עושה זה צבעים לוקים באותו הגוון, אם סוג זה של מקשור באופן הגיוני. אז בדיוק כמו למעלה מושתק היה כתום, כך מושתק כאן מוזכר בגוש כתום. אבל מדובר במטלות משתנות, כל כך פשוט כמו ב אלגברה, יש לך X ו-Y ו-Z, בתכנות יש לך משתנה, אבל הם בדרך כלל - ההפסקה בואו לרגע ודמות איך כדי שיפסיק לנבוח זה. איך אני עושה את זה? [הב SEAL] הדוד Malan: אוקיי. היא נעצרה. אוקיי. כך שבדיוק כמו באלגברה יש לך משתני x, y, z ו, אבל ב תכנות, שמשתנה, כמו x, y, z והוא בדרך כלל בעין יפה, כי הם בכלל לא ההבעה. אין להם משמעות סמנטית שהיא, ולכן ברוב שפות תכנות, משתנים יכולים להיות מלאות שמות מובנים מילה או מילים או ביטויים, כמו מושתקים, לומר מה שהם עושים. אז התסריט השני גם הקשיב לנצח, וזה אמר אם המפתח, חלל המקש במקלדת, הוא לחץ, סימן שאלה. אז יש מצב עם ביטוי בוליאני זה הולך לענות על שאלה אחת בכנות או שקר, אז יש לי בתוכו אם מקש הרווח נלחץ ו אם מושתק הוא אפס, להגדיר מושתק לאחד, אחר הגדירו מושתק לאפס. אז מזלג זה אחר בכביש, ושים לב איך אין לי מקונן שתיים אם תנאים, היא דרך של בדיקה היא מקש רווח לחוץ כי אם כן, אז או שאני רוצה ללכת זה דרך או בדרך זו. וכיצד אוכל להפוך את הערך של מושתק? אני צריך לבדוק את זה הוא אפס? אם כן, להפוך אותו לאחד, אחר להפוך אותו לאפס ולכן לעבור שתי המדינות שלו. בסדר, אז יש לנו אז כמה מאלה בסיסיים מבנים. יש לנו ביטויים בוליאניים, ולהבין, גם אלה לא כל כך מוכר. למעשה, הנה צילום מסך מהיר כמובן של הרווארד CS50 כלי קניות, וכל אתר אינטרנט שם בחוץ, כי יש תיבות ואפשרויות נפתחות שבאמת, כל הזמן הזה, כבר משתמשים ביטויים בוליאניים. במקרה זה כאן, אם אתה לוחץ על תיבת סימון לצד כמובן גדול או שווה ל -4.5, או בסמוך לאותו סגל, שאתה מציין ביטוי בוליאני. הראה לי את קורסים לביטוי שזה נכון. או מהימין, אינו מתנגש עם קורסים שאני לוקח, אם כי הוא בדק, אז כן, אתה רוצה לבדוק מצב זה, שאתה רוצה להתעלם ממנו. אז ביטויים בוליאניים הם סוג של מסביב, אבל כש אנחנו שמים אותם בתנאים, בין אם תנאים, אם Elses, או שאנחנו יכולים אפילו לדמות עמוקים יותר רמות, אם אחר אם אחר - אז זה סוג של מצב משולש. אתה יכול ללכת בדרך זו או בדרך זו או בדרך זו. אנחנו יכולים להחזיק את דברי קינון ללכת בכיוונים שונים. אז Scratch יש לולאות הללו, כמו תמיד. יש לו התכונות האלה כמו חזרה על 10, חלק מספר מוגבל של פעמים. יש לנו את היכולת עכשיו להגדיר משתנה, ולכן במקרה זה אני כבר הכרזתי, למשל, גרביים נקראו משתנים. אני מאותחל ל 0, וזה עדיין כיוון אחר אנחנו יכולים לקחת עד כאן עם יוסף, לפיה אולי אני רק לעקוב אחר כמה זוגות גרביים יש לי עליהם ולהפסיק את התכנית כאשר הערך של אותו משתנה הוא 2. זה יהיה בדרך אחרת מהסוג של הכללה, כי בעיה ועושה משהו שוב ושוב. ובכן, בואו נלך קדימה וכעת להציג כמה דברים חדשים. אז לאלה מכם עם ניסיון תכנות מראש יהיו יודע שהרבה שפות יש מערכים, או וקטורים או רשימות, ואכן, שריטה יש דבר כזה, יותר מדי. אז בואו נראה אם ​​אנחנו לא יכולים לקחת את הדברים לרמה הבאה כאן. אם יש לי את היכולת, עכשיו, עם חלקי הפאזל הללו ל להוסיף משהו, כמו מילה או מספר, למשתנה, אני יכול להתחיל לצבור דברים. וזה בעצם אפרופו היפה לדברים כמו משחקים, משחקי תפקידים שבם אתה סוג של הליכה סביב איזה עולם פנטזית איסוף דברים, להרים דברים, להרוויח נקודות, או משהו דומה. אולי אתה רוצה לעקוב אחר סוג כלשהו של המלאי, ו אכן, זה מה שאחד מהתלמידים לשעבר שלנו כאן עשה עם משהו שנקרא Fruitcraft RPG. אז תן לי ללכת קדימה, לפתוח את זה כאן, וב Fruitcraft, יש לנו את העולם הזה בראש. אז תן לי ללכת קדימה ולחץ על הדגל הירוק. שים לב בפינה שמאלית העליון הוא סוג של המלאי. המיושם בגרד כמו מה אנחנו קוראים למערך או רשימה, ועכשיו יש לנו אנימציה הקטנה הזה. אז בדיוק כמו שהתחלנו מוקדם עם סיפור אהבת עוגייה הזאת, ולאחר מכן התקדמנו לחתולים ואריות ים, ועכשיו אנחנו יכולים להיות דברים שהם אפילו יותר אינטראקטיביים. והבחור הכחול הקטן הזה, אני יכול להתחיל לנוע סביבו בית קטן כאן. כך זה נראה כאילו יש לו יציאה לכאן, ולכן אני משתמש מקשי החצים, למעלה, למטה, שמאל ימין. ועכשיו אני בחוץ, אז בוא מה שיש לי כאן. נראה כמו תפוז, ואכן, ברגע שאני נוגע כתום, היא מקבלת נשרה לתוך המלאי שלי. אם אני הולך לכאן לדובדבנים, עכשיו יש לי משהו אחר במלאי שלי. וכל זה נחמד וחמוד, אבל לחשוב על איך, עכשיו, זה מיושם. ובכן, יש לנו את הרעיון שלו רשימה, וזה כנראה פיסת הפאזל שאתה רק אומר את מה שאתה רוצה להוסיף לו, להוסיף כתום, מוסיף דובדבנים. עכשיו, מה שהבחור הכחול הקטן הזה עושה? ובכן, הוא ספרייט. ומן הסתם, תפוזים והדובדבנים - הם עצמם היו שדונים נפרדים. ושימוש בתנאים בביטויים בוליאניים, את הסטודנט היה ככל הנראה מסוגל לבטא אם בחור הוא כחול דובדבנים נוגעים לאחר מכן להוסיף את הדובדבנים למילה שלו מלאי, ולאחר מכן גם להסתיר את ספרייט הדובדבן. כלומר, מתחת למכסת המנוע, יש כנראה עדיין הוא דובדבן ספרייט שם. שמנו רק אמרתי לו להפוך לבלתי נראה. עכשיו, אם אני אמשיך בדרך הנה, גם אנחנו יכולים לעשות את זה דבר הפרוקסימלי, שבו אני יכול ללכת ולקרוא את השלט. אז אם בחור כחול לגעת שלט, יכול להיות לנו בלוק אומר את זה בדיוק כמו החתול דבר אלינו במילותיו, הלו, קודם לכן, "יש לי כמה פרות? להביא אותו למקום הפרי. "בסדר, אז עכשיו, ככל הנראה, יש לי הכיוונים שלי. אני יכול ללכת לכאן למקום פרות, בשורה עצמי עם הדלת. עכשיו, אני כאן. אני יכול לעלות לאדם בדלפק. הוא מזהה שאני קרוב אליו, כך שזה לא צריך להיות די זהה נוגעים ללב, ואני נצחתי את המשחק. אז יש לנו את Fruitcraft RPG. אז אנחנו יכולים לעשות דברים אפילו מתקדמים יותר מזה. אנחנו יכולים להוסיף צלילים. אנחנו יכולים להוסיף אקראיות מדומה. אנחנו יכולים להוסיף מורכבות. תן לי ללכת קדימה כאן, ובמקום לעשות את זה בעצמי, תנו לי להראות לך את אחת מההגשות המתוחכמות יותר יש לנו בשנה שעברה ממישהו מסוים בשם בלייק. האם יש לנו מתנדב אחד, שהוא נוח מופיע מצלמה והיא עד למשחק? מה דעתך על זכות לשם? בואו נעלה. בסדר, אז יש לך משחק שפשוט לא ביודעין התנדב לשחק - [מחיאות כפות] הדוד Malan: - משהו מפעם קרא "Frogger". מה שמך? Renda: Renda. הדוד Malan: Redna? Renda: זה כמו ברנדה עם ב. הדוד Malan: אוקיי, Renda. דוד. נע מאוד. אז הנה ב" Frogger ", ואם אנחנו יכולים להעלות את הנפח רק קצת, אתה זה קטן צפרדע ירוקה בתחתית. אתה יכול להשתמש שמאלה, ימינה, למעלה ולמטה, והמטרה שלך היא לחצות את הכביש, לחצות את הנהר, ולגעת ברפידות השושן בחלקו העליון. אוי. אחד לא יותר - לעשות שוב, בסדר? בואו תחנה של להיט. אף אחד לא ראה את זה. [מחיאות כפות] [מחיאות כפות] הדוד Malan: כן. עשה טוב מאוד. מצוין, תודה. כך שלא היה Frogger. עכשיו שאתה יודע מה יש לך קבלו עצמכם, מתנדב אחד לשונה משחק שהוגש על ידי תלמיד אחר. אתה רוצה לבוא בעד? מה שמך? ריצ'ארד: ריצ'רד. הדוד Malan: ריצ'רד. בסדר, ריצ'רד, יעלה למעלה. [מחיאות כפות] הדוד Malan: יש לך משהו שיישמע מוכר בקרוב, אז הנה ההוראות שלך. אז ברגע, כמה חתיכות הפאזל הולכות לגלול מעלה מהמסך שמביט שמאלה או או זכות כלפי מעלה או מטה. אתה הולך צריך להכות במקשי החיצים באופן כזה שהיא מקבילה לחלקי הפאזל האלה מסתדרים בשורה עם את מצייני המיקום בחלק עליון. אז כשאתה רואה חץ שמאלה, וזה קווים עם השמאל חץ, פגע חץ שמאלה. אתה יכול להתחיל. [מוסיקה - "חזק" נגד עין מערב] הדוד Malan: כל הסיבוב ימינה, הגדול של מחיאות כפות לריצ'רד. [מחיאות כפות] הדוד Malan: עבודה יפה מאוד. תודה. [מחיאות כפות] הדוד Malan: כיף ולכן, לכאורה, סוג של מפחיד עד כמה שזה יכול להיות ליישם משהו כמו לכאורה מתוחכם כמו זה, להבין שהתלמיד לא יצא ופשוט לכתוב את זה בבת אחת. במקום זאת, אתה יכול לשבור את בעיה כפי שלכאורה מורכב כמו זה לחתיכות קטנות בהרבה, וגם את זה, הוא הולך להיות נושא. הדבר הגרוע ביותר שאתה יכול לעשות בכתיבת תכנית בכל ביותר שפה היא לשבת, לקבל באמת נרגש, לכתוב כל דבר ארור, ואז פשוט לקוות שזה עובד על ידי פעם שאתה מסיים לכתוב. במקום זאת, התהליך של תכנות צריך בדרך להיות מאוד מכוון, מאוד איטרטיבי, לפיה אתה פשוט להגדיר צעדים קטנים מאוד בעצמכם, חתיכות בגודל נגיסה אתה רוצה לנגוס, וכך יש לך שפיות אלה בדיקות, אבן הדרך קטנה שתוכל להיפגש. ואז אתה בונה על גבי אלה כדי ליצור יותר דברים מתוחכמים עדיין. כך למשל, איך אנחנו הולכים על יישום משחק כזה? ובכן, בכנות, הייתי בהחלט להתחיל רק על ידי תמיכה במקש אחד בכל פעם. בואו רק ליישם תמיכה בחץ שמאלה. אז התלמיד היה איכשהו ליצור בפוטושופ, או ב גרד עצמו באמצעות העורך הגרפי הקטן, מקש חץ שנראה כמו אחד בפינה שמאלית עליונה שם, רק מציין מיקום האפור. אז התלמיד היה צריך להבין מה x, y לתאם לשים את זה, איפה לשים אותו בחלון. 0, 0 הם עד כאן, אז אתה צריך להבין את המספר פיקסלים, או נקודות, כדי לקזז מחץ ש החלק העליון של המסך. ואז ברגע שיש מקום, התכנית שלך לא ממש לעשות שום דבר, כך שאתה צריך אז ספרייט שני, עבור למשל חץ ירוק שגם הוא הצביע שמאלה, ואתה ואז צריכים להתחיל לכתוב כמה תסריטים לזה. ושמתם לב, אולי, שהדברים האלה התחילו לבוא ב מהירויות שונות, והצבע היו שונים ב מקומות, וזה משום שהתלמיד השתמש בטיפה אקראיות מדומה. ועל ידי אקראי מדומה, אני פשוט מתכוון לקחת מספר בין משהו ומשהו, כי אתה יכול להתחיל לדברי המפה, כמו אם המספר הוא בין אחת ל 5, טוב, בואו נעשה את הדבר ירוק. אם זה בין 6 ל 10, בואו אנצל את פיסת הפאזל אדום במקום. אז עוד יש לך דרך ליצור סוג כלשהו של אקראי, לאחר מכן תוכל לקבל החלטות המבוססות על האקראיות. ואני שומר פסאודו אקראי אומר כי יש סוד קטן ומלוכלך. מחשבים לא יכולים לבוא עם מספרים אקראיים. הם יכולים לעשות רק מה שאומרים להם כי הם מכשירי מעשה ידי אדם. הם לא יכולים פשוט לנחש את מספר כמו שאנו בני האדם מרגיש כמו שאנחנו יכולים. מחשב צריך לעשות משהו מתמטי להעלות באוב אשליה של מספר מתמטי, לעתים תוך שימוש יום הנוכחי של זמן כקלט לחישוב מה מספר לחזור, אבל עוד על כך בפעם אחרת. לעת עתה, רק יודע שאנחנו יכולים לייצר אקראיות מדומה. אז ברגע שיש לי את היכולת לחץ שמאלה כדי להתחיל להופיע בזמנים שונים ובמהירויות שונות, ולאחר מכן אני יכול לחזור ולהוסיף כמה מאלה אם תנאים. אם ספרייט זה נוגע ללב אחד, והחץ השמאלי מפתח כבר לחץ - כך שלושה תנאים במקרה זה. אני יכול להשתמש בזה ולחסום אולי, במקרה זה - אז אני רוצה להמשיך ולהגדיל את התוצאה. ובחלק עליון, יש לנו ציון, יש לנו מדהים, מגניב, טוב, ובוז. אז יש ככל הנראה חמישה משתנים שהתלמיד הזה נהג לעקוב אחר המדדים השונים הללו. אז בקיצור, התוצאה הסופית היא מדהימה. זה כיף, זה כיף לשחק, זה מרתק, אבל זה לא שבו התלמיד החל. הוא או היא התחיל בקבוצה קטנה בהרבה של צעדים. אז מה הם כמה אבני בניין אחרים שאנחנו יכולים לארוג לתוך התוכניות האלה? ובכן, יש רעיון אחר זה ברוב השפות, גרד ביניהם, הידוע באשכולות. אז מחשב יכול בעצם לא ממש עושה דברים מרובים בי זמן, לפחות לא בדרך כלל. במקום זאת, מחשב בדרך כלל יש רק מעבד אחד, ואפילו למרות שמחשבים הם סופר מהיר ויכולים, על כן, ליצור אשליה של עשיית דברים מרובים בבת אחת - בדיקה האלקטרונית שלך, מקבל מיידי הודעה, הדפסת מסמך - באמת, מחשב פשוט קופץ מדפוס לIMing לדואר אלקטרוני, שוב ושוב ושוב ושוב כל כך מהר שאנחנו בני אדם קשים תפיסה איטיים פשוט לא מבינים שזה בעצם הפעלת התוכניות האלה קצת בכל פעם. עכשיו, זה קצת לבן לשקר בימים אלה, כי, כיום, רבי המחשבים שלנו הם מה שנקראו ריבוי ליבות, כך שאתה יש מעבד אחד אלא מספר רבות של ליבות, אשר הוא כמו סוג של יש מספר מעבדים. וכך לפעמים, מחשבים יכולים באמת לעשות דברים מרובים בכל פעם, אבל בדרך כלל בתוך תכנית, תוכניות להסתמך על הדברים שנקראים אשכולות. אז נושא הוא כמו סוג של תכנית שיכולה מיניאטורי להתקיים לצד תכנית מיניאטורה אחרת ויכול לרוץ במקביל, או לפחות יכול לרוץ תחת האשליה ש הם פועלים בו זמנית. אז הגרד תומך דברים שנקראים אשכולות. יכול להיות לך תסריטים מרובים מבצעים בפעם אחת, בדיוק כפי שאנו עשה עם אריות הים, וזה מאפשר לנו למעשה לאחר מכן יש אינטראקציות בין השדונים האלה. תן לי ללכת קדימה ולמשוך לכאן, יניח, אשכולות, ו לשחק את זה באופן הבא. יש לנו שני שדונים, שכל אחד מהם נצטרך לראות יש רק תסריט אחד. ושמת לב נראה שיש איזו אינטליגנציה ב חתול בזה כי הוא מתקרב - [שאגות] הדוד Malan: - וקרוב יותר לציפור הקטנה. אז איך היא הפעלת ציפור? ובכן, בואו נסתכל על ציפור ראשונה. תסריט ציפור אמר כשהדגל הירוק לוחץ, ללכת לx שווה 115 שליליים ו-y שווה 150. אז פשוט הבנתי את מיקום אקראי בו אני רוצה ציפור להתחיל, ואני פשוט הפלתי אותו לשם כברירת מחדל. אז לנצח אם לא נוגע חתול, אז זה שונה סוג של מבנה מסובב, אבל אותו רעיון, לעשות את זה שוב ו שוב ושוב. כל עוד אתה לא נוגע בחתול, לעבור שלושה שלבים, ו אם אתה על הקצה, להקפיץ, שם זה סוג של השתקפות במובן הביליארד. אז ככה ציפור נעה סביב סוג של לכאורה אקראי, אבל זה רק מפני שהוא קפץ הקירות במקרה זה. עכשיו החתול, בינתיים, הוא סוג של רמאות. החתול, כשהדגל הירוק לוחץ, כן, מתחיל ב איזה מיקום, מיקום אקראי - לפחות בחלקו לפי הבחירה בלוק ירוק אקראי שם - ולאחר מכן לנצח אם נוגע בציפור, להשמיע את קול האריה, ואז להפסיק תסריט. אז כשאמרתי להפסיק, או לצאת, יש כאן חידה חתיכה בגרד שפשוט להרוג את התכנית באותו לציין כי זה סוג של עשה באופן הגיוני. אבל חוץ מזה, הנה, שים לב למה שהולך לקרות. נקודה לכיוון ציפור וצעד צעד אחד. אז נקודה זו כלפי ציפור היא סוג של יתרון החתול יש בזה שמתביית על ציפור המרגשת, ואנחנו יכולים עכשיו לעשות את התכנית הזאת עוד יותר מעניינת. במקום לעבור שלב אחד בכל פעם בכל מחזור המעבד, ל להכות אגרה של הפעמון, אם אפשר לומר כך, תן לי ללכת קדימה ו לעבור, יניח, חמש מדרגות בכל פעם כחתול. לחץ על הפעל, ועכשיו הוא באמת מוצא אותו במהירות. אם תכפילו את זה בהמשך ל10 צעדים, זה סוג של הולך נכון עבורו. כעת, אנו יכולים לתת את ציפור, אולי, קצת יתרון. בואו נלך לציפור ואומר במקום להעביר שלושה שלבים, בואו להזיז אותו 30 מדרגות. אבל הוא עדיין נתפס בסופו של דבר. אז הנה, יש לנו שני נושאים. זה נכלא בהתחלה עם שני תסריטים ושני שדונים, אבל הרעיון בשפות אחרות הוא שאתה יכול לכתוב, למעשה, תוכניות רבות מדי כמו זה ויש לי לרוצם באמת, או imaginarily, במקביל. עכשיו, יש גם את המושג הזה בתכנות המכונה אירועים, וזה משהו שאנחנו לא רואים בC, שפה הידועה כג אנו רואים אותו לכיוון סוף הסמסטר בתכנות אינטרנט, כאשר אנחנו מציגים את JavaScript ו רעיון של דפי אינטרנט בנייה כי הם דינמיים ואינטראקציה עם משתמשים. אז במקרה הזה, יש לנו דוגמה פשוטה מאוד של 2 שדונים, ילד וילדה, כל אחד מהם יש להם בהתאמה אשכולות, אבל איכשהו שני אלה הם בין מתקשר בדרך מנקרא משהו אירועים. אז תן לי ללכת קדימה פה ולהתמקד בתסריטו של הנער, שנראה כמו זה. כשלחץ על הדגל ירוק, לנצח בצע את הפעולות הבאות. אם שטח המפתח, או השטח בר, נלחץ, ואומרים מרקו לשתי שניות, זה אסתטי על מסך, בועת דיבור קטנה, אבל אז שדר. אז שידור הוא עוד חלק Scratch זה נציגו של מעמד פונקציונלי בתכנות שמאפשר לתוכניות שונות, חוטים שונים, כדי לתקשר בין, לאיכשהו לשלוח הודעות מאחד לשני. עובר פיסת נייר בכיתה הוא סוג של טק הנמוך שווה ערך. אז לשדר אירוע. אני יכול לשלוח הודעה זו, ומילת האירוע הוא שרירותי לחלוטין. שריטה לפעמים יש אפשרויות נפתחות האלה, אז אני פשוט באתי עם מילה אקראית כמו אירוע כי עכשיו, מה הילד עושה כאשר אני לוחץ על המקש הוא שהוא משדר את האירוע הזה. ואם אני מסתכל עכשיו בתסריט של הנערה, התסריט שלה הוא סופר פשוט בגלל כל מה שהיא צריכה לעשות היא לא לפעול כש הדגל הירוק הוא לחיצה. היא נועדה לפעולה כאשר היא מקבלת הצעת מחיר, כביכול, "אירוע", ובשלב זה, היא מקשיבה ולכן עבור האירוע שנקרא שוב ושוב. ברגע שהיא מקבלת אירוע זה, היא הולכת לצעוק פולו לשתי שניות. ואז אתה יכול אולי להסיק מזה בדיוק מה התוצאה הבאה הולכת להיות. תן לי ללחוץ על הדגל הירוק. שום דבר לא קורה, כי אני צריך לעשות את מה? קהל: מקש רווח. הדוד Malan: מקש רווח. הילד אומר מרקו, הבחורה אומרת פולו. אבל זה לא קוד קשה כשלעצמו. זה קישוריות הפנימית בין תסריטים, אז עכשיו אנחנו יש את היכולת לבצע תוכניות מורכבות יותר שבי שני אלה הם איכשהו בין תקשורת-. אז במה כיוונים אנחנו יכולים לקחת את זה? ובכן, בסט בעיה 0, באמת, המטרה הן להשתעשע עם גרד. למהדורת ההאקר, אתה במקום להשתעשע עם יותר גרסה מתוחכמת של גרד נקראת BYOB, בנייה בלוקים שלך, אבל הרעיון הוא זהה. תוכל - כן, זה היה מכוון. זה בא מאוניברסיטת ברקלי. BYOB הוא גרסת מהדורת האקר מזה, אבל גם הדמוגרפיה המהדורה סטנדרטית ומהדורת האקר כאחד, מטרה בהישג יד לשבוע הבא היא באמת רק לצלול ב עמוק, ללכלך את הידות בתכנות, ולעשות משהו מעניין, לעשות משהו אינטרקטיווי, לעשות משהו אמנותי, לעשות משהו כיף ממש להפגין, כך שעד סוף השבוע, יהיה לך פרויקט, לא רק לCS50 pset הראשון שלך, אבל יהיה לך משהו קטן שתוכל להשוויץ באננברג ל חברים או אפילו בני משפחה על ידי העלאתו לאתר של MIT. וכך, כפי שאמרתי ביום רביעי, אנו מצפים 90% מהכיתה, בדרך כלל, לעשות את המהדורות הסטנדרטיות. להבין שיש גם אפיק זה, לאלו מכם ש אחר עלול למצוא את עצמך קצת משועמם עם היסודות ובאמת רוצה לצלול ובלעצב את חזונך כבר יש לי עם רקע קודם בזה יותר ידידותי הסביבה. אז בואו תמשכו אותי דוגמה אחת אחרת שאחד משלנו לשעבר התלמידים עשו כאן ולהגיד משהו קטן בשיר. זה דומה, כמו מחזות זה, לחשוב על איך אתה הולך על יישום תכנית זו באמצעות אלה בדיוק אותו הדבר אובניים בניין, דומה מעט של אקראיות מדומה, ועוד קצת שיר מוכר. אם תוכל להעלות את הנפח רק קצת? [מוסיקה - "גשם של גברים" בנות מזג אוויר] הדוד Malan: זהו זה לCS50. אנחנו רואים אותך ביום שני. [מחיאות כפות]