דובר: אני [לא ברור]. ואני בכיר בבית וורט. אני לומד מדעי מחשב, ואני TF לCS50. בשנה ראשונה, אפילו לא הייתה לי מחשב נייד או טלפון חכם. לא היה לי ניסיון בתכנות. CS50 היה כמובן בלתי נשכח ביותר ש לקחתי באוניברסיטת הרווארד, כי זה היה מאבק, אבל זה היה באמת מאבק כיף באותו הזמן. ואני עשיתי הרבה מדהים, קבע חברים, ואני למדנו הרבה מאוד כישורים רלוונטיים. אני פשוט כל כך שמח שאני לא נתתי לי חוסר הרקע יהיה תירוץ בשבילי לא תיקח CS50. אני [לא ברור]. אני בכיר בוורט הבית, ברמה של שינה 2014. ואני לקחתי את CS50. דוד Malan: אז זה CS50. זהו סופו של אפס בשבוע. ולהיזכר בו התחלנו בפעם האחרונה, היה עם המנורות הללו, שהיו כל כך פופולרי, שהלכנו ו קניתי עוד קצת היום. אז אני חושב שזה יהיה הדבר השנה - מנורות שולחן, אם אתה בא על במה, לפחות עד גמר. אבל אנחנו זוכרים בשימוש אלה, להציג את את היסודות של ייצוג של נתונים. אנחנו צריכים דרך להתחיל מייצגים מידע פנימי של מחשב. והדרך הפשוטה ביותר לעשות זאת הייתה עם מרכיב אחד, חשמל. והדבר הפשוט ביותר שאתה יכול לעשות עם חשמל הוא להדליק אותו והוא כבוי. תן את זרימת אלקטרונים או לא. ותוך שימוש בשני מצבים בסיסיים האלה, כבויים עוד ועוד, או שקר ואמת, או אפס ו אחד, התחלנו לראות שאנחנו יכולים לבנות למעלה, במקרה הזה, עם אור פקעות, יותר מאשר מספרים רק אפס ואחד. אנחנו נחשבים כגבוהים כשבע, למשל, בפעם אחרונה. אבל כל מה שאנחנו צריכים לעשות הוא לשמור על יידוי יותר ויותר אור נורות באותה בעיה, ובאמת, אנחנו יכולים לייצג כל מספר שאנחנו שאולי רוצה. ובכן, העברנו את מהירות ואז על יום רביעי לייט הזה של מתנדבים. 8 סיביות הוא מה שאנחנו בדרך כלל קוראים לבתים, אז הנה היה לנו שמונה מתנדב ביום רביעי שהיו ביחד מייצג שמונה סיביות. וכאשר ידיהם הלכו למעלה, הם היו אחד. וכאשר ידיהם היו למטה, היה אפס. והיו לנו החבר 'ה האלה לבוא במה הבמה? מה אנחנו יכולים לעשות עם רצף זה של ביטים? כדי ליצור האלפבית. היינו יכול לבנות על גבי זה למד את הלקח קודם ולמעשה להתחיל לעשות יותר מעניינת מידע זה לפחות יותר מוכר לנו בני האדם. וזה הולך להיות חוזר נושא לאורך 50, אלא גם מחשב מדע באופן כללי יותר, הרעיון הזה של שכבות, שבו, בסופו של היום, אם אתה באמת התחיל יסודות עם מחשב, כן, זה אפסים ואחדים. ומתחת לזה זה רק חשמל. אבל אנחנו מתחילים מהר מאוד לקחת אלה פרטים ברמה נמוכים עבור העניק ולהתחיל לשכבה על גבי העבר עבד עשה זאת כי אנחנו, בסופו, על ידי סוף הסמסטר, ובאמת, באופן כללי יותר כמו מדעני מחשב ומתכנתים, יכולים לעשות קצת באמת דברים חזקים על ידי מינוף עבודה שאנחנו בעצמנו עשינו וגם עומד על כתפיהם של אחרים. עכשיו אנחנו הועברו במהירות ביום רביעי רק מהצורך מייצג מידע כדי לרצות לעשות משהו עם זה. אז מה אנחנו לא מגדירים כאלגוריתם? סדרה של הוראות. אז זה סדרה של הוראות, מספר הצעדים שאתם, בני אדם, או מחשב, יותר בדרך כלל, היית לבצע אחד אחרי השני כדי כדי להשיג מטרה כלשהי. והיו לנו כמה מטרות בפעם אחרונה, אחד מהם היה לספור אנשים בחדר. ודוגמה נוספת כזו הייתה למצוא מייק סמית בספר טלפונים. אז אתה אולי זוכר שקרעתי את טלפון ספר במחצית למטרה זו עד מציאת מייק סמית. המטרה שהייתה ויזואלי ל להוכיח, שוב, שהיינו ממש קורע את הבעיה הזו ב מחצית, במחצית, במחצית, ומאוד הולך במהירות מכמו 1,000 עמודים רק עמוד אחד בודד. אלו מכם שפספסו את זה על יום רביעי, חשבתי שנחזור לשחק כמה קטעים של מה שפספסת. בואו נסתכל. [השמעת וידאו] -הנה. 1,500 עמודים, קו נקי, דמעה לגיטימית. [השמעת וידאו הסוף] דוד Malan: אז זה היה יום רביעי. אנו מעבר, אם כי, ביום רביעי עכשיו לרוצה לייצג אלגוריתמים בדרך סטנדרטית במידה מסוימת, ולא רק מתאר אותם באופן מילולי, אך מנסה לבטא אותם בכתב או על מסך מחשב כדי שנוכל תתחיל לשפר, ולשנות שלהם, וסופו של דבר, בעצם לנתח בדיוק כמה נכון או כמה מהר הם היו. אז הציג את הרעיון הזה של pseudocode, אשר, ב המונחים של ההדיוט, הוא מה? אוקיי, מילים. בואו נלך קצת יותר עמוק מזה. אנגלית, בטח, אבל הם לשם מה? מילים שבה כדי ליצור או לייצג את האלגוריתמים. כך שאין שום שפה אחת ידועה כpseudocode בעולם. זה רק כי אתה, באנגלית, או מה השפה המדוברת שלך היא, להשתמש סוג של סימון שטחי כדי להעביר רעיון באופן תמציתי מאוד. אבל אנחנו תראו את זה, ובוודאי עם pseudocode אנגלית, ומתברר רוב שפות תכנות עצמם הם נגזרים של אנגלי עצמו, נגלים שיש איזה תקן דרכים לייצוג וpseudocode גם קוד תכנות. אז כפי שאתם מתחילים לראות אפילו הפשוטים ביותר דוגמאות היום, מבינים אלה אותם דפוסים יחזרו על עצמו בשבוע הבא. אז pseudocode היה סוג כלשהו של שפה הדומה שפת תכנות. והדוגמא הראשונה שראינו מבחינה ויזואלית כתב היה זה אחד. זה היה רק ​​צעד תכנית שלוש, מטרתו הייתה כדי לספור את המספר אנשים בחדר במעונות ל וידאו שביום רביעי. אבל היו כמה היבטים מעניינים של תכנית זו הפשוטה ביותר. וזה יהיה נושאים חוזרים ונשנים. אז למי שאינכם מכירים זה, אחד, הצגנו משתנה. וכנראה שכולם בחדר הזה הוא מכיר את משתנה ב הקשר של אלגברה. אבל כאן בתכנות, משתנה הם, אחד, יכול להיות קרא כל מה שאנחנו רוצים. אנחנו כבר משתמשים n כדלפק. אבל אנחנו יכולים להשתמש במילת דלפק, או, כפי שתראה, כל ביטוי ביותר ש אוהב אותך אולי כל כך הרבה זמן כמו שזה תיאורי, אבל זה ממש פשוט מיכל אחסון. זה נתח של זיכרון, חלק מספר ביטים, והיא משתנה על ידי מחשב, איך יש הרבה קטעים שהם להלחין משתנה זה. אבל אנחנו יכולים לשים את הערכים בו. עד כה, יש לנו את המספרים בלבד. אבל אנחנו יכולים לשים את המילים בפועל. אנחנו יכולים לשים פסקאות. אנחנו יכולים לשים את תמונות - שום דבר, באמת, אנחנו יכולים לייצג את עם אפסים ואחדים, אנחנו יכולים לשים ב רעיון זה ברמה גבוהה יותר של משתנה. אז די ישר קדימה לשם. וזה בשורה אחת. אבל עברנו מהר מאוד מ שורה אחת לעשות דווקא משהו עם שמשתנים. ובקו השלושה, אנחנו מתעדכנות נ מוגדל נ 'והיינו יכולים לכתוב את זה כל מספר הדרכים. אבל אולי הוא הברור ביותר רק כדי להגיד, להגדיר N שווה ל מה N הוא 1 ועוד. אז זה הייתה התוספת שלנו. בינתיים, הייתה לולאה. וזה, גם הוא כנראה די אינטואיטיבי. לולאה היא רק משהו בתכנית זה קורה שוב ושוב, כמה סוג של מעגל. וזה משפט מפתח כאן, לכל אחד, הוא למעשה נפוץ מאוד לאורך רוב שפות תכנות, כולל אלה שנראה בקורס. כל פעם שאתה רואה את המילה ל, זה בדרך כלל מעביר את הרעיון כי לולאה, משהו מחזורי, עומד לקרות. אבל זה ראוי לציין אחד פרט תחבירי אחר. העובדה שהשורה שלישית יש בעצם מסוכסך על ידי בעל הכה כמה פעמים מקש רווח היא מכוונות. כי אמנה אנושית היא כזה ש, כשאתה עושה משהו שוב ו שוב, בלולאה, כפי שהחל בקו שתיים, שלך לשנן כל דבר שהיה שייכים ללולאה את זה רק כדי להבהיר כי זה קו שלושה ולא, למשל, קו ארבעה או חמש, אם היו קווים לאו חמש, כי הם כי חלק מהלולאות. אז כניסה פשוטה זו מעביר את המסר כי רעיון בסיסי. אז אנחנו מוחלים אלגוריתם זה, עכשיו, לכמה דוגמאות. וגם דוגמה פשוטה זו בעולם האמיתי. אבל זה הולך להיות נציג של איך היית הולך על הבדיקה שלך בעלים של תוכניות מורכבות יותר ויותר. אתה מנסה כמה תרחישים, חלקם תשומות נציגים, ולראות אם אתה לקבל את התפוקות הרצויות. אז דוגמה זו הייתה שני אנשים ישב בחדר במעונות. בצד השמאל הוא באותו קוד פסאודו. וזה צילום מסך של מאוד השלב האחרון של היישום של זה אלגוריתם לתשומות אלה, שבו יש היו שני אנשים בחדר ו, כזכור, כפי שאנו צעד דרך קו אחד, ושתיים, ושלוש, ושתיים ושלוש ועשו - בסוף האלגוריתם זה, היה לנו אכן נספר שני הבחורים שנמצאים בחדר. אז ניסינו עוד דוגמה. ואנחנו אמרו ומה אם יש אפס אנשים בחדר? האם הקוד הזה עדיין נכון? ואכן זה היה. זה פשוט כל כך קורה כי קו שניים ולכן, קו שלוש או לא הולך לבצע. הם לא הולכים לקרות בכלל כי הם פשוט לא רלוונטיים אם יש אפס אנשים בחדר. אבל לא עניין גדול. קו N אותחל אחד לאפס, ולכן למרות שרק שורה אחת של זה תכנית מסתיימת למעשה להיות שימושי, זה עדיין מניב תשובה הנכונה, כפי מסומן על ידי כתומה לאפס בתחתית. אבל אז החליט שהיו סוג של אלגוריתם טיפש. זה היה די איטי. אין ספק, שאני יכול לעשות שתיים, ארבע, שש, שמונה, עשר, כאשר ספירת אנשים בחדר. אז צבט את האלגוריתם, pseudocode, לומר, עכשיו בקו שתיים, עבור כל זוג של אנשים בחדר, להמשיך, בשורת שלוש, תוספת בשתי ידי על כל איטרציה. כך שהיה עובד כאן הצמד הזה הנפשות בחדר. אבל אז, אם אתה מתחיל לחשוב על זה, וזה לא ייקח הרבה זמן מבין, חכה רגע זה הולך לשבור, זה שובר במקרה פשוט מה? אם יש שלושה אנשים בחדר, או באופן כללי יותר, כאשר יש מספר אי זוגי של אנשים ב חדר, כולל אחד. אנחנו אתגעגע אל האדם שכאן כי אין זוגות כאלה. אז אנחנו פונים במהירות על ידי במקום מה מציג נוסף תכנות בונה לפסאודו קוד. כך מצב, שקראנו לי זה, או סניף. וזה אמור להעביר, מבחינה ויזואלית, רעיון של סניף, מזלג על הכביש שבו אתה יכול גם לעשות את זה או, אולי, משהו אחר. ואכן, אנו לטפל בבעיה זו על ידי הוספת קו 4, באומרו, באמת, ב ממש בסוף, אם אדם אחד נשאר, אז קדימה ולספור אותם מיוחדים. אז אתה סוג של מקרה מיוחד אותם, ולכן לדבר, כך שעכשיו אנחנו יכולים להתמודד עם גם מספר זוגי של אנשים ומספר אי זוגי של אנשים. עכשיו יש כל מספר של דרכים היינו יכול להביע זאת. ולמען האמת, אני יכול כבר אפילו יותר אנבה בררנית בכל הנוגע לבחירה שלי אנגלית לpseudocode. אבל לפחות את רוחו של הרעיון מועבר. אם מסר את הקוד הזה לחבר שלא במדעי המחשב, או שלא נקט CS, הם סיכויים שהם יכולים להבין, ניתנו שלושה אנשים בחדר, כיצד לספור אותם אנשים המבוססים בהוראות אלה. וזה כל מה שאנחנו באמת רוצים להשיג עם pseudocode, איכשהו סטנדרטיזציה איך אנחנו הולכים על רעיונות המייצגים, כך שאנחנו יכולים תתחיל לעשות יותר מסובך דבר עדיין. אז זה מוביל אותנו אז, היום, לקוד בפועל. אנחנו מתחילים לתכנת היום, אם כי בסביבה ידידותית. ואז אנחנו מהר מאוד למעבר תחביר מסתורי יותר, אבל אף אחד כי תראה הוא ביסוד זהה הרעיונות יראו שבאו לידי ביטוי עם שפה זו אחרת היום. זה פשוט הולך להיראות קצת שונה. אז במקום רק לקרוא את הקוד הזה, אני הולך להיות קצת יותר מדויק ואומרים, מכאן ואילך, בעת כתיבה תכנית, שאתה כותב את קוד תוכנה. זה כמו סוג של pseudocode. אבל נראה שזה לא סוג של רופף כשזה מגיע לבחירת המילים כי אתה משתמש. כאשר תכנות בשפה, יש לך להשתמש במילים, את הביטויים, התחביר, שאנשים אחרים החליט לייצג ששפה מסוימת. אז pseudocodes תלוי בך. שפת תכנות בפועל כמו C, כפי שסופו של דבר יראו, הוא טופל על ידי אנשים אחרים. אז איך אנחנו הולכים על כתיבה קוד מקור כלשהו? ובכן אני מתכוון ללכת מוזמנים לעשות את זה. אני הולך קדימה לפתוח את חלון לכאן. עוד על זה בשבוע הבא. אבל זה מכשיר שנקרא CS50 המכשיר. אני מפעיל פיסת תוכנה עליי מק, אם כי אתה יכול לעשות את אותו דבר במחשב Windows, כי הוא נותן שלי האשליה ריצה שונה מערכת הפעלה לגמרי נכונה כאן בחלון ב-Mac שלי. אני פשוט מלא הוקרנתי כדי שלא ממש לראות Mac OS עכשיו. זוהי מערכת הפעלה בשם לינוקס. זה מאוד פופולרי. זה מאוד מהר. זה בחינם מאוד, שעשה את זה מאוד משכנע, במיוחד ב עולם מסחרי. ועוד על כך לקראת סוף סמסטר שבו אנו משתמשים בלינוקס לא מעט לתכנות ואירוח של אינטרנט אתרי אינטרנט ופרויקטים בפועל. אז עכשיו, רק יודע שזה שולחן עבודה זה אמור להיראות במעורפל מכיר ל-Windows ו-Mac OS. זה פשוט יש לו כמה שמות שונים ואייקונים לדברים. אבל זה מה שנקרא CS50 מכשיר, שמכונה וירטואלית, החלו בשבוע הבא, אתם יהיו לרוץ בתוך חלון Mac שלך או במחשב האישי. להיום, אני הולך לפתוח את הפשוט ביותר של תוכניות. זה נקרא gedit. וזו רק עורך גרפי. זה כמו סוג של מיקרוסופט מילה, אבל פשוט יותר. זה סוג של טקסט כמו עריכה או פנקס. זה רק תכנית פשוטה מאוד עם שלכתוב מילים על המסך. זה פשוט כל כך מה שקורה שאם אני שומר קבצים שאני יוצר, כאשר תכנית זו בסיומת מיוחדת כמו. ג, במקום של. מה דוק, או. xls, או אתה מכיר, אני יכול למעשה ליצור תוכניות באמצעות אפילו זה פשוט עורך טקסט. אז תן לי לעשות את זה. תן לי להמשיך ולשמור את זה הקובץ הראשון כhello.c. ושוב, זה יהיה ממשק המשתמש יכיר לך במהירות. אבל לעת עתה, אני פשוט מקליד בשם קובץ. אני הולך להציל אותו לג'ון ספריית אוניברסיטת הרווארד בבית. ועכשיו יש לי כרטיסייה זו שעולה אני אכן עריכה קובץ שנקרא hello.c. כך ששום דבר מעניין מדי עדיין. ועכשיו זה הולך לקבל די סתום. אני הולך להגדיל את התצוגה, רק כך שזה גלוי יותר. ואני הולך להתחיל להקליד כולל stdio.h, int הראשי, הריק, פתוח מתולתל סד, אחת, שתיים, שלוש, ארבעה חללים מכניסה, F הדפסה, להדפסה משהו מעוצב, סוף הציטוט, "שלום, עולם" קו נטוי, N, קרוב ציטוט, סוגריים סגורים, פסיק, הכנס backspace, backspace, backspace, backspace, סגר סד מתולתל - יש לי לתכנת. בסדר אז זה פשוט סופר התכנית, באמת, תכנית ה מישהו מתחיל עם תכנות. וכל שהיא עושה, לכל מורכבותה, הוא להדפיס על מסך, נחשו מה? שלום עולם. אבל זה לא מספיק רק כדי לכתוב תכנית. אז זה קוד. זה בקוד מקור שפה בשם ג. זה הציל כרגע קובץ שנקרא hello.c. עכשיו תסתכל על התחתית של המסך כאן. נוספים על זה, שוב, ב בשבועות הבאים. אבל זה מה שאנחנו קוראים חלון מסוף. זה מהבהב, שחור ולבן הפקודה. זה סוג של בית ספר ישן לממשק מחשב שבדרך כלל אינו להשתמש בעכבר או אחר אלמנטים גרפיים. זה פשוט משתמש במקלדת שלך. ואני יכול להקליד פקודות ב זה מהבהב הפקודה. ולמטרות של היום, אני רק הולכים הקלד את השורה הבאה - לעשות שלום. ותכנית ש, לעשות, היא רק תכנית זו, בעולם האמיתי, אלה ימים, היינו לחץ לחיצה כפולה על. אבל בממשק זה להיום, אנחנו הולך להקליד את שמה בהנחיה זו. לעשות שלום הוא ממש הולך לגרום לי תכנית בשם שלום. וזה הולך לעשות זאת על ידי ההתבוננות לקובץ, רק על ידי כברירת מחדל, הנקראת hello.c. זה הולך להניח אני רוצה תכנית C על ידי הטבע של איך המחשב הזה מוגדר. אז קדימה, והקש על Enter. אני רואה כמה פלט סתום, אבל זה יהפוך את כל מדי מכיר לפני זמן רב. זה קרה לרוץ מהדר, יותר על זה ברגע אחד, בשם קלאנג. אבל עכשיו, יש לי רק עוד מהבהב ינחה. ואני יכול ללכת קדימה עכשיו והקלד נקודה לקצץ, מסיבות לא מעניינות אנחנו חוזרים לשבוע הבא - שלום. אז כל המאמץ הזה עד כה רק כדי לכתוב הפשוט של תוכניות, ברגע שאני על Enter, עושה את זה. אז כתבתי התכנית הראשונה שלי. אז אני בכוונה מתלוצץ בתכנית מאוד פשוטה זו במשך כמה סיבות. אחד, קשה להתרגש על לקיחת כיתה אם זה סוף המשחק. אבל יותר מזה, יש הרבה הסחות דעת לכאן. בפעם הראשונה שאתה לומד לתכנית, עבור אלו מכם פחות נוחים, ו אפילו אני, בחזרה באותו היום, כשאני ראשון ראה משהו כזה - מסוג שאתה יכול של דמות ש, בסדר, זה הוא בשלום עולם הדפסה. אבל יש כל כך הרבה הסחת דעת. יש כל כך הרבה תחביר על המסך שהוא מקבל בדרך של מאוד רעיונות פשוטים, אחרת פשוט,. אז מה שאנחנו הולכים לעשות היום הוא שאנחנו הולך לשים בצד ג'ולבוא אחזור לזה ביום שני. ואנחנו הולכים להשתמש גרפיים שפת תכנות בשם Scratch. זוהי שפת תכנות, שאני רמז ביום רביעי, כי הולך כדי לאפשר לנו לעשות אותו הסוג של חומר אבל להעלים עין, להיום, לסוגריים המסולסלים, הסוגריים, את פסיק, וכל הטיפשים האלה הסחות דעת שתעמודנה בדרך, ב היום הראשון הזה, בסיסי, די קצת רעיונות מעניינים. אז לשם כך, אני הולך לעבור חזרה לשולחן העבודה שלי כאן ו להכיר לך את החלופה של תכנית, אשר הולכת להיראות משהו קטן האור הזה. ככה אנחנו הולכים ליישם את זה שתיים חידה - היום אותה תכנית חתיכות ש, כאשר שלובות ו לחץ על, יגיד לעולם, שלום עולם. אז בואו באמת נלך לשם. אז אני הולך קדימה, לפתוח אתר ידוע כscratch.mit.edu. וזה יוביל אותי ל אתר זה כאן. מראש, אני כבר מחובר לזה אתר והבעיות הראשונות ש תעבור חלק מפעולות אלה. אני הולך קדימה, ולחץ על בתיקיית השריטה שלי כאן. וזה הולך להראות לי כמה פרויקטים שאני כבר למעשה נוצר מראש. ומתברר שזה גרפי שפת תכנות לא רק הולכת שייתן לנו תכנית על ידי גרירה ו נשירת חלקי הפאזל האלה, אתה אפילו לא צריך תוכנה מיוחדת. כל זה מוטבע בתוך דפדפן כך כי אתה יכול לעשות את זה, בתאוריה, על המחשבים שלך עכשיו, כמו שחלקכם ייתכן מאוד, אפילו בלי צורך תוכנות כמו המכשיר CS50, שיבואו בשבוע הבא. אז אני הולך לעלות לפינה העליונה כאן ולחץ על צור. וברגע שאני הולך לקבל ריק מסך שדרכו אני יכול להתחיל תכנות גרפי בזה תכנות בסביבה. אבל הפעם, זה הולך להיות הרבה יותר, הרבה יותר פשוט לעשות בעצם כל כך. אז ברגע אחד, כאשר Wi-Fi משתף פעולה, עכשיו יש לנו את המסך הזה. אז סיור מילולי מהיר, אבל אני מעז לומר, בוודאי כאשר אתה לצלול לתוך סט הבעיה הראשון, אתה למצוא את זה בכל מאוד נגיש ואינטואיטיבי למדי. אבל בואו לצייר תמונה מנטלית רק לרגע. אז מתחת הצלה אומרת הנחיה זו שינויים, שאתה עומד לראות את ההתחלה. זה ספרייט. זה אופי. והוא גר במה שאנחנו קוראים לבמה, זה מלבן גדול לבן על שבו הוא יכול להזיז למעלה, למטה, שמאלה, נכון, ולעשות, באמת, סוגים אחרים של פעולות. בינתיים, באמצע של משתמש זה ממשק, יש לנו חבורה שלמה של חידת חתיכות. ותראו שהם אומרים דברים כמו לעבור 10 צעדים, פנה 15 מעלות, נקודה בכיוון מסוים. אבל יש קטגוריות של גם בלוקים לכאן. אז אם אני הולך למראו, תראה ש יש חלקי הפאזל אחרים ה כנראה יגיד לי לעיל זה כדי להגיד שלום, לחשוב, כדי להראות עצמו, להסתיר את עצמו. אם אני יורד לצלילים, מתברר יש דרכים לשחק נשמע כמו יללה, להפסיק את כל הצלילים, לנגן בתוף. לכן, סיפור ארוך קצר, אין כל חבורה של חתיכות הפאזל שמאפשרות לך לספר החתול הזה, או כל מספר של דמויות אחרות, מה לעשות. אבל כדי שזה יקרה לך כל צריך להתחיל בתכנות. והתיבה זו גדולה לבנה, או קופסה אפורה, על בצד ימין, זה שבו אני הולך לגרור למעשה ו שחרר חלקי הפאזל האלה. כלומר הטקסט הריק שלי מקבילה חלון. אז אני הולך קדימה, ולחץ על לשלוט באמצע. או ליתר דיוק, הרשו לי להתחיל תחת אירועים. תחת ספסל אירועים, תוכל להבחין כמה דברים שהם במכוון מעוקל בחלק העליון בצורה כזאת, כי הם כנראה לא משתלבים על עליון של חלקי פאזל. וזה בגלל שהם דמארקס ההתחלה של תכנית, את תחילתו של תסריט, אם אפשר לומר כך. אז אם אני הולך קדימה ולגרור, כאשר ירוק דגל לחיצה כאן, ולאחר מכן אני החתול הזה רוצה לומר משהו בהתחלה. אז אני הולך ללכת תחת נראה פנל. ואני מתכוון להמשיך ולתפוס את להגיד שלום לבלוק, וגרור, ושחרור, ולהרפות, כך שהוא באופן אוטומטי משתלב שם. ואז שם לב שאני יכול לחץ על הטקסט. ואני יכול לעקוף את זה כדי להיות יותר ספציפי כמו, יניח, שלום עולם. ועכשיו יש לנו תכנית שאני טוען הוא שווה ערך לזה הרבה יותר תכנית מסתורית שיושמתי ב-C לפני רגע. אם אני ניגש עכשיו לצד שמאל, שם לב שיש תמרור עצור גדול ודגל ירוק גדול. תן לי להתקרב לבהירות. וכשאני עכשיו לחץ על הדגל הירוק הזה, כנראה שאתה יכול לנחש מה זה ראשון תכנית היא עכשיו הולכת לעשות. אז גם שם אנחנו תכנות, אבל אנחנו לא באמת מקבלים נתקעו בחלק מאלו תחביריים, פרטים קטנים. אבל בואו ננסה משהו קצת יותר מעניין. תן לי להיכנס לתיקיית סריטות שלי כאן. ובעצם, הרשה לי אז תן לי לפתוח את תכנית נפרדת לכאן רק רגע, מקסם חלון זה, פתח קובץ, ואני הולך להיכנס היום ספריית מקור. כמו תמיד, תמצא, והיום הלאה, כי כל דוגמאות של היום נגישים בתוך אתר האינטרנט של הקורס. ואני הולך קדימה ולהרים כאן עד משהו קצת שונה. זה אחד כאן, שעבורו אני זקוק למתנדבים. מי רוצה מנורת שולחן היום? אוקיי, קצת מה דעתך על מישהו - אתה בסופו של הדבר? בואו למטה. עכשיו, היית רוצה להשתתף, או רק אומר להתחיל עם מנורת השולחן? ונסה: [לא ברור]. דוד Malan: אישור. מצוין, מה אתה שם? ונסה? דוד. נע מאוד. אז קדימה למעלה ונסה הולך להשתלט עליי מקלדת רק לרגע. ומה שעשיתי כאן, רק לזמנו של למען, כפי שכבר הבנתי Wi-Fi היה קצת איטי, סריטות, סביבת תכנות שאנחנו שימוש, ניתן גם להוריד ו לרוץ על המחשב המקומי שלך. אז מה שעשיתי לקראת הרצאה, ב מקרה שקורה, הוא אני הורדתי את כל הקבצים שאנחנו עומדים לשחק עם , כך שהם יכולים לרוץ יותר קטן מהירות ממש כאן, על המחשב הנייד שלי. אז זאת הסיבה שעכשיו אני רואה ממשק מק ספציפי. אז אני הולך קדימה ולפתוח את זה. אני הולך קדימה, ועכשיו מסך מלא החלון. וכפי שתראה, אנחנו יכולים במהירות רבה, כתלמיד זה עשה, אחד קודמיך, לך משלום העולם להרבה הרבה יותר משכנע יישום. אז הנה את ההוראות. אה, ויש לנו עוד דבר אחד. חשבתי שזה יהיה כיף, שכן, בדרך כלל, יהיה לנו לצלם מצלמות בדרך זו. חשבתי שזה יהיה כיף אם, ונסה, אנחנו יכולים לראות את העולם דרך העיניים שלך. אז הנה יש לנו כמה זכוכית גוגל. [התנשפויות הנדהמות] דוד Malan: רק אנחנו יהיו נותנים משם מנורות שולחן היום. [שחוק] אז בוא קיו לי את זה. בסדר, אז לגעת בזה. אוקיי, זכוכית, להקליט וידאו. בסדר, ונסה? עכשיו, במאמר מוסגר, כי יש לי שום דבר מה לעשות עם סריטות, אם אתה מסתכל מעט למעלה וימינה, תראה הזכוכית המילולית, ואתה צריך תופיע חלון מלבני קטן. אתה צריך לראות את כל חבריו לכיתה שלך מצטלם עכשיו? כן. ונסה: כן. דוד Malan: אישור. אז זה בסדר. אנחנו נשחרר את מד זו מאוחר יותר. לעת עתה, להפנות את תשומת לבך למסך כאן. ומה שקודמך עשה הוא לשים כמה הוראות על המסך רק על ידי שימוש בצבע לתכנית. אז אתה הולך, ברגע אחד, לחץ על מקש הרווח כדי להתחיל. ולאחר מכן חלק מחלקי הפאזל הולכים להתחיל לנוע במעלה המסך. ואתה רוצה להכות במקשי החצים, רק כמו בDDR האמיתי, בהתאם עם הדברים הזדנבות עם חצים אלה. ונסה: אישור. דוד Malan: אתה כבר לשחק את זה בעבר. ונסה: כן. דוד Malan: בסדר, ונסה, ללכת קדימה ולקחת אותו משם. [מוסיקה - Kayne המערבי, "חזקה יותר"] [מחיאות כפות] דוד Malan: אז בוא עכשיו לקחת צעד מזה. אז ברור, זה סוף המשחק. סוף המשחק הוא לא שלום עולם. אבל אתה לא צריך לעשות בהכרח דברים שהם כל כך אינטראקטיביים. אתה יכול גם לעשות אנימציה. כך למשל, עוד אחד משלך יורשים עשו תכנית זו כאן, המספר את סיפור יותר מאשר זה מיושם משחק. אז תן לי ללכת קדימה ולפתוח כאן תכנית באותה ספריית המקור שלנו מהיום. השיחה הזאת, ובוא נתחיל עם, סיפור אהבת עוגייה. ולא כדי להפוך את זה אקדמי מדי, אבל, כמו שאתה רואה את זה, חושב ל את עצמך מאלה שפשוט מושגים בתכנות שדברנו לגבי עד כה - משתנה, ולולאות, ותנאים, לא קודמך כנראה להשתמש רק כדי ליישם חלק את הפריטים החזותיים. אתה רואה כאן. אז אני נותן לך סיפור אהבת עוגייה. [מוסיקה - יום ירוק, "חג"] [CRASH] [מוסיקה - את הצבים, "מאושר ביחד"] דוד Malan: בסדר, אז שם, היו לנו סיפור אהבת עוגייה. אבל גם שם - [מחיאות כפות] דוד Malan: בסדר, גם שם, לחשוב עליו, כמו הלבבות האלה עברו מ החלק התחתון לחלק העליון של המסך, למעשה היה שם קצת האקראיות קורה. ואכן, נראה שגם ב הפשוט ביותר של סביבות, כמו שריטה, כמו ב-C, אתה יכול ליצור מספרים אקראיים, או האשליה של מספרים אקראיים, כך שהמשחק הוא קצת יותר מעניין ממה שהוא אולי להיות אם היה לך לחלוטין קוד קשה כל דבר. בתנועה שאתה רואה, יש יש איזה סוג של תגובה. ברגע שהגבר נוגע בזנגביל האישה הזנגביל, היא נראה להתרחק. וכך, אכן, אתה יכול ליישם, ב רוב שפות תכנות, הרעיון של אירועים, לפיה אם אחד לא נוגע ביד מצד השני, זה יכול לגרום לחלק של קוד המקור שלך ל למעשה לבצע. אתה יכול להקשיב לכזה דברים המופיעים על המסך. אז בואו לקחת סיור מהיר, ולאחר מכן, של חלק מאבני הבניין שאנחנו יכולים להשתמש בו כדי להשיג חלק ממטרות אלה. אז הנה מה שנעשינו מעתה ואילך קורא להצהרה. הצהרה קורה להיות סגול ב שריטה, משהו קטן כזה, אבל זה שרירותי. הצהרה היא רק פיסת הפאזל או, באופן כללי יותר, הוראה, כי מספר את המחשב לעשות משהו, הצהרה. אז הנה מדגם פשוט. תגיד שלום עולם. עוד אחד יכול להיות לחכות שנייה אחת. אז פיסת הפאזל הזה, אשר נתמך בגרד, אנו נודיע לך תווים להשהות לכמה מספר שניות. גם זה, הוא רק הצהרה. הנה הבא, יש לנו עוד יותר מעניין אחת, מייאו צליל משחק, ו החץ הקטן אומר שבגרד, מדובר בתפריט הנפתח. כך שאתה יכול לייבא את הצלילים. אתה יכול להקליט צלילים ולעשות אחרים דברים שכיף בלגרד. מדי, וזה, אם כי, בסופו של הדבר שלו של היום, היא רק הצהרה. אבל עכשיו בואו להציג יותר כתבה מעניינת, שידוע בשם ביטוי בוליאני. הון ב ', על שמו בחור בשם בול. וביטוי בוליאני הוא רק פיסת הפאזל או, באופן כללי יותר, פיסת המידע שהוא אמת או שקר - אחד או אפס, כן או לא. כך שזה רק אחד מאותם שני הפכים. אז ביטוי אחד כזה בוליאני העולם של גרד נראה כך כחול הפאזל. וזה שואל שאלה, עכבר למטה, וכי יכול להיות, של כמובן, אמת או שקר. אז עם פיסת הפאזל הזה בגרד, כן, אתה תהיה מסוגל לזהות אם חידה אם העכבר הוא, למעשה, להיות שנערך על ידי האינטראקציה האנושית עם התכנית שלך. זה אחד זה קצת יותר מופשט, אבל שתי קופסות לבנות האלה הם רק למספרים. אז אתה יכול לעשות דברים כמו זה מספר פחות מאחרים? ואם כן, סריטות יתנהגו בדרך זו או אחרת. זה אחד זה קצת יותר גרפי. אם זה ספרייט, אם החתול, עבור למשל, הוא למעשה נגיעה מצביע עכבר. אז אם ראש החץ הקטן מרחף על החתול, אז זה פיסת הפאזל תהיה TRUE. זה יהיה נכון, ובמקרה זה, אם להשתמש בביטוי בוליאני זו, שכן אנו לראות ברגע, בסניף, באפשרותך גם לעשות את זה, או שאתה יכול לעשות את זה, ממש כמו שהיו לנו מצב ש בדק, האם יש אדם אחד שעבר יותר בחדר? אם כן, להוסיף אחד. אחרת, אל תדאגו עוד יותר. אז ביטוי בוליאני יכול להיות גם ואד-ביחד או או-ed יחד. אז אתה יכול לשלב את ביטויים בוליאניים ואומר את זה וזה חייב להיות נכון גם לגבי כל העניין להיות אמיתי. וכאן הוא דוגמא עולם אמיתית יותר. אם השתמשת CS50 קורסים לעשות כמובן קניות, תיבות סימון אלה שם, שבו אם אתה בודק את התיבה שליד לקורסים, שיגיד, כן, רק תראה לי את קורסים שעבורו ערך Q הוא 4.5 ומעלה. אם תבטל אותו, לא, לא תדאג לזה. או בדומה לכך, בצד ימין, האם לא סכסוך עם קורסים שאני לוקח, זה אמת או שקר. זה רק ביטוי בוליאני. אז כל הזמן הזה כשאתה כבר בשימוש אתרי אינטרנט עם תיבות סימון, אתה פשוט החלפה שווה ערך בוליאני ביטוי לסירוגין. אז באיזו צורה אתם משתמשים אלה? ובכן, בלגרד, שנראה ברגע כי ישנם תנאים ה נראה ככה. וזה סוג של הגיוני, כי הרבה כמו בpseudocode, אנו מסוכסך הסוג של חלקי הפאזל בצורת U, כלומר שבתוך כל דבר של U שהוא הולך לבצע, או שלא, תלוי על איפה זה. אז אם ביטוי בוליאני, ולאחר מכן כל מה שיש בפנים יקבל להורג. בינתיים, אם יש / אחר בלוק. אז אם אתה רוצה שענף הזה הולך כך או כך, סריטות נותן לנו את זה. ולפי היגיון זה, עכשיו, אף על פי ש פיסת הפאזל היא בבירור קטנה מדי לתקוע משהו אחר בתוכו, את חלקי הפאזל הגירוד, הם רק הולך לגדול. בעת הגרירה ושחרור על משהו, זה רק יגדל כך שיתאים מה שזה הוא שאתה מנסה לעשות. אז אנחנו יכולים לקחת שני הדברים האלה ו להפוך את מזלג בדרך שלוש בדרך כל כך שאתה גם עושה את זה, או זה, או הדבר הזה אחר רק על ידי קינונם בדרך זו. כמובן, אם אתה עושה את זה יותר מדי הרבה, זה מתחיל להיות מכוער. אבל בשלב זה, אתה בעצם כנראה לא תכנות טוב מאוד. וכדי שיהיה חוזר נושא, גם זה של סגנון. כמה טוב עושה בעצם לעצב את הקוד שלך? או כמה טוב אתה עושה עיצוב הקוד שלך? אבל עוד על כך בעתיד. ועכשיו יש לנו לולאות. יש לולאה לנצח נחמדה בלגרד שפירושו, כי - תעשו כל מה שיש בפנים זה שוב, ושוב, ושוב. אתה יכול להיות יותר קונקרטי ואומר, לעשות את הדבר הבא 10 פעמים. ניתן גם להשתמש במשתנים. אתה יכול לבוא עם שם כל שב מעט נפתחים ואומר, תן לי משתנים בשם n ולהגדיר זה שווה לערך כלשהו. ואז אתה יכול לקבל פונקציות. אבל נוסף על אלה שברגע. תן לי לחזור לי ממשק לגרד. ותן לי ללכת לפני זמן זה. ובואו נלך קדימה ולהיפתח, נניח, למשל מ-- שזה קצת יותר מעניין. תן לי ללכת קדימה, ולמעשה, תן לי רק לעשות את זה בעצמי. אני לא צריך לפתוח את זה. תן לי ללכת לקובץ, חדש. אני מתכוון ללכת לאירועים. אני מתכוון ללכת לכאשר הדגל ירוק לחיצה עליו, ואני מתכוון ללכת לצליל. ואני הולך לגרור ולשחרר את זה פיסת הפאזל, לשחק מייאו קול. זה תפסים ביחד. ועכשיו, אם אני לוחץ על הדגל הירוק - [SOUND MEOW] דוד Malan: מקסים. אוקיי, אז עכשיו בואו נעשה משהו קצת יותר הגיוני רק כדי להוכיח כי אנחנו יכולים, לעת עתה. אני הולך כדי לפתוח זה מהבחור הזה. אני מתכוון ללכת לבקרה. ואני הולך לתפוס את מצבו. אז אם משהו אז. אז ככה זה נראה שם. אז אני צריך ביטוי בוליאני. ותנו לי להמשיך ולומר, תן לי ללכת למפעילים. אני הולך לעשות משהו מעט mathy, סתם בשביל כיף. אני מתכוון ללכת לכאן ולומר, אם משהו לא פחות ממשהו אחר, ללכת ולעשות משהו. אז עכשיו, אתה יודע מה, בלוק אקראי. אז שים לב כיצד, אם ארחף מעל זו דבר כאן, שייצמד לשם. אז עכשיו, שים לב, אני מתחיל לעשות משהו כבר יותר הגיוני מעניין. אם מספר אקראי בין 1 ל 10 הוא פחות מ, נגיד שש. אם אני בוחר שש, כי למעשה פירושו, בצע את הפעולות הבאות עם 50% הסתברות. זה כמו הטלת מטבע. עכשיו, אני יכול לעשות משהו באופן מותנה. וזה משהו שאני הולך לעשות הוא להשמיע את הצליל. אז עכשיו, כשאני לוחץ על המסך דגל, זה כמו הטלת מטבע. [SOUND MEOW] מלאן דוד: זה היה ראשים או מה שלא קיימים. בואו נעשה את זה שוב. [SOUND MEOW] דוד Malan: הראש שוב. [SOUND MEOW] דוד Malan: הראש שוב. אוף, אישור. זנבות אותו זמן. אז 50% מהזמן, אם אנחנו עושים את זה הלוואי וארוך, אנחנו תקבלו 50% מיילל ושתיקות של 50%. אז הנה, רק מבנה בסיסי בלוק. המאפשר לנו לעשות את זה אבל זה סוג של מייגע שיש לי כדי לשמור על לחיצה על כפתור זה. אז בואו פשוט לגרור ולזרוק כל אלה משם. אם אתה גרר אותם לאמצע, הם פשוט למחוק את עצמם. עזוב אותי כדי לשלוט. תן לי ללכת לעולם. והפעם, אני הולך לעשות משהו minorly מעצבן. [שחוק] דוד Malan: ותן לי ללכת קדימה ולעשות בקרה. חכה שני אחת, רק כדי זה לא יותר מדי צורם. [SOUND MEOW] מלאן דוד: זה לא טבעי. אישור. [SOUND MEOW] דוד Malan: ושים לב מה, נחמד על גרד, לאלו מכם ש יש ניסיון קודם תיכנות, אתה לא צריך להתחיל ולהפסיק. אתה לא צריך לקמפל. אתה פשוט לשנות אותו, ואת התכנית יתאים באופן דינמי. אז זה הוא מקבל קצת מעניין. אבל בואו ניקח את זה צעד אחד קדימה. תן לי להמשיך ולקבל להיפטר מאותה תכנית. [SOUND MEOW] מלאן דוד: זה מה שנעשיתי קורא לבאג בלגרד. הוא לא צריך לשמור על מה שהופך את הצליל. אז אנחנו אגיד לו שנפסיק. בסדר, אז עכשיו אני הולכים להיכנס - אני אודיע לי-MIT. אנחנו נלך לכאן כדי לנצח. ועכשיו, אני רוצה לעשות משהו שוב ושוב. אני הולך להיכנס לבקרה. ובואו נראה, אני הולך לגרור אם המצב שלי שם. אז עכשיו שם לב להיגיון. כשהדגל הירוק נלחץ, לעשות משהו לנצח, אלא רק לעשות את זה משהו אם הדבר שני זה נכון. אני מתכוון ללכת ל, בוא אומרים, שחש. ואני מתכוון להמשיך ולבחור נוגע ללב ושחרר אותו שם. זה ביטוי בוליאני. ועכשיו, שים לב, בירידה זו למטה בתפריט, יש כמה ערכים מוגדרים מראש. אז אני יכול לומר, שאתה נוגע הקצה של המסך? או שאתה נוגע בסמן העכבר, חץ על המסך? אז אני הולך לעשות את זה. ואם כן, אז אני הולך קדימה ולשחק מייאו קול. אז עכשיו יש לי סוג של ראשיתו של משחק - משחק מקסים. [SOUND MEOW] דוד Malan: בסדר, חמוד, משחק מרכבה. תן לי לחכות, נניח, שנייה אחת שם. עכשיו לשחק שוב, על ידי לחיצה על הדגל הירוק. [SOUND MEOW] דוד Malan: אז עכשיו זה כמו ליטוף חתול. [SOUND MEOW] דוד Malan: בסדר, עכשיו זה אחד שאני לא עושה מראש. מאוחר מאוד, זה נהיה סוג של קל לעשות דברים טיפשיים. אז תן לי ללכת לכאן. בואו נגיד, שהיה ללטף את החתולה. עכשיו בואו לפתוח אל ללטף את החתולה. עכשיו, אם אנחנו משחקים את זה, אתם יכולים לנחש, אם אתה מסתכל במסך - [SOUND MEOW] מלאן דוד: עכשיו, אם אני מלטף את החתול [השאגה של האריה] דוד Malan: אז לא ממש ללטף את החתול במקרה זה. אז עכשיו פשוט יש לנו דוגמה של סניף זה הולך לשני כיוונים. עכשיו תן לי ללכת קדימה לפתוח עוד אחד כאן. זה אחד, גם, בין המקור שלנו קבצי קוד ליום. אז תן לי לחזור אל המקור שלי ספרייה ונכנס, בואו לבחור הבחור הזה כאן ותראה מה שונה. וואו, בסדר, אז עכשיו זה מתחיל קצת יותר מורכב. ולפני שאנו רואים את מה שהבחור הזה עושה, בואו ננסה להסיק, מהתכנית בצד ימין. ועכשיו התחלה מאפשרת לנו בבירור יש תסריטים מרובים, מרובים תוכניות הקשורות לספרייט אחד, עם תו אחד, וככל הנראה, הם גם הולכים לרוץ בנוקשה. מכיוון שגם התוכניות האלה מתחילה עם כשלוחץ דגל ירוק, זה רמז לנושא מתקדם יותר, עם שכמה מכם עשוי להיות מוכרים, המכונה להברגה, או רבת השחלה. מתברר, סיפור ארוך קצר, מחשבים היום בעצם יכול לעשות מרובים דברים בבת אחת. או שהם יכולים לעשות דבר אחד בכל פעם, ולכן מהר, כי אתה אפילו לא שם לב ש זה ממש עושה אחד דבר בכל פעם. אבל לעת עתה, הבה תניחו ששניהם תוכניות אלה הולכים לבצע ב באותו הזמן. ושים לב, לשניהם יש לנצח חידת חתיכות. אז הם גם הולכים להמשיך לרוץ עד שפגעתי בתמרור העצור האדום. אז מה הם הולכים לעשות? בצד השמאל, אני כנראה הכרזה על משתנה בשם מושתק. אז אני לא קורא לזה משהו כמו משעמם כמו נ 'אני קראתי לזה מושתק זה זמן להעביר משמעות. אני מגדיר את זה שווה לאפס. בואו נחשוב על זה כמו שקר, או בואו נחשוב על זה לא נכון באותה מידה. עכשיו, לנצח בצע את הפעולות הבאות. אם מקש הרווח של המקלדת נלחץ, אז אם מושתק שווה אפס, לאחר מכן לשנות מושתק לאחד שווה. אחר, להגדיר מושתק לאפס. אז באופן הגיוני, למרות שזה כולה חבורה של פאזל חתיכות זה רק אומר, כשאני מכה על המקש הרווח, מה אני צריך לעשות למשתנה קרא מושתק? לשנות אותו מאחד עד אפס, או אפס לאחד. זה הכול. אז זה כמו להפוך מתג אור או ביטול ולזכור, עם משתנה, כי אני כבר עשיתי את זה. בינתיים, בצד ימין, ב המונחים של הדיוטות, מהי מטרתו של את התסריט בצד ימין? תלמיד: כדי שתוכל לשחק את קול אריה הים. דוד Malan: כדי לנגן צליל אריות ים, אם הוא אינו מושתק, על ידי טבעו של משתנה זה. אז אנחנו חולקים מדינה, אם אפשר לומר כך, שיתוף מידע על פני שני אלה תסריטים בגלל, שים לב כאן, שאנחנו ביצוע הפעולות הבאים לנצח. אם מושתק הוא אפס, כך שאם זה לא מושתק - אם מושתק הוא שקרי, ולאחר מכן לשחק זה נשמע אריות הים. וחושב לעצמך, היי, היי, היי, ל שתי שניות, חכה רגע, ולאחר מכן לבדוק שוב. אז אם אנחנו הולכים עכשיו לכאן משמאל, למקום בו הבחור הזה הוא, ופגע דגל ירוק, [SOUND אריה הים] דוד Malan: באיזה שלב זה ממש מעצבן לקבל? כי זה פשוט להמשיך לנצח. אז לפעמים, לולאות אינסופיות, אם אפשר לומר כך, הם מכוונות. אבל במקרה הזה, ברגע שאני פגע במשקוף שטח, הוא עוצר. עכשיו התכנית לא להפסיק. זה עדיין פועל בלולאות האלה. אבל אם אני מקבל על מקש הרווח שוב - [SOUND אריה הים] דוד Malan: הוא הולך לבחור עד שבו הוא נפסק. אז יש דרך אחת לנו לעשות משהו שוב ושוב, אבל, כי זמן, רק באופן מותנה. ובכן, בזמן שאנחנו ברוח זו של עשייה דברים שוב ושוב, תנו לי להיכנס לדוגמה נוספת כזו כאן. זה אחד שנתקשר אל ספירת כבשים. ושים לב למה שהבחור הזה עושה. זה בעצם קצת יותר כמו pseudocode שיחקנו עם על יום רביעי, שבו הוא מגדיר חלק דלפק, תחשבו על זה כN שוב, כדי אפס, הוא תמיד מבצע את הפעולות הבאות. לדבריו, את ערכו של הנגד אחד שני, מחכה שנייה, ולאחר מכן משנה את הנגד אחד. ובהקשר זה, כי רק משמעות הדבר היא מרווחיו. אז הוא מוסיף אחד לזה. אז זה ממש - זה לא בדיוק מה שאנחנו חושבים כמספירת כבשים. זה הכבשים עושים ספירה, לנצח, עד מאפס. אז אנחנו יכולים לעשות דברים דומים שם, באופן הגיוני. אבל עכשיו בואו ננסה לנקות חלק מהדברים האלה למעלה. תן לי ללכת עכשיו לקדימה פשוט דוגמה שבה החתול שלנו הוא רק הולך להתחיל שיעול. בסדר, אז הנה יש לנו שיעול - 0 מדעני מחשב להתחיל לספור מ 0. אז החתול הזה רק הולך להשתעל שלוש פעמים. והנה איך שאני יישם את זה. כשהדגל ירוק נלחץ, שיעול, חכה, להשתעל, לחכות, להשתעל, לחכות. ועשיתי את זה פשוט על ידי גרירה ושחרור של חלקי פאזל. או אם אתה מתחיל להתעסק עם סריטות, אתה תראה שאתה יכול למעשה לשכפל את החלקים, כך שאתה יכול לעשות דברים מהר יותר מבלי לגרור ושחרור עד זרא. אבל אנחנו לא בדרך הטובה ביותר כאן. כי איך אני יכול לגרום לו להשתעל פעם רביעית? ובכן, אני יכול למיין של לרדת כאן. אני יכול לשכפל ולאחר מכן להדביק את זה שם. כיצד אוכל לגרום לו להשתעל פעם החמישית? ובכן, להעתיק ולהדביק שוב. או לגרור ירידה שוב. ומהר מאוד, תכנית זו מתחילה כדי לקבל באמת, באמת מיותר, באמת ארוך, אבל באמת לא מעניין. אבל יש דרך לנקות את זה. מהי הדרך הברורה כדי לנקות את זה? אוקיי, אז אנחנו באמת יכולים באמת ללכת החוצה ו, כאשר אתה מכה את החלל בר, יש לו להשתעל. אבל אם אני רק רוצה לעשות משהו שוב ושוב, תזכור שיש לנו קצת שליטה בונה. תן לי לעבור את זה מתוך אגב, ללכת תחת שליטה. תן לי רק לעשות חוזר, אומרים, שלוש פעמים. ועכשיו תן לי לגנוב קצת מחלקי הפאזל האלה. תן לי לצלם את זה לכאן. תן לי לזרוק אותם לגמרי. ועכשיו, יש לי יותר טוב תכנית שתוכנן. למה? אם אני רוצה לשנות את מספר הפעמים שיעולי החתול הזה, כל מה שיש לי כדי לעשות הוא לשנות משתנה אחד, או ערך אחד, ולא משלוש, או ארבעה, או חמש, או שש. או שאני יכול לעשות משהו על תנאי, אפילו, עם החלל בר אם אני רוצה. אז זהו עיקרון כללי. ברגע שאתה מתחיל בהעתקה והדבקת קוד, בין אם זה בסריטות, או ב C, שאתה עושה משהו נכון, קרוב לוודאי. או לפחות, ברגע שעלית על חלק מספרים סבירים של עותקים ו משחות, אתה כנראה עושה משהו לא בסדר. אבל אתה יודע מה? אני לא ממש אוהב את זה. זה לא עיצוב הנקי. הלוואי שהייתה פיסת הפאזל שנקראה להשתעל כי אז לא הייתי צריך ליישם את זה בעצמי, בדרך הישנה, ​​על ידי שאומר, ולחכות - מה אם הם היו רק פיסת הפאזל שיעול. ובכן, אני באמת יכול לעשות את זה. תן לי ללכת בלוקים נוספים, לחץ הפוך את בלוק, ועכשיו אני מקבל את זה חלון כאן. אני הולך להתקשר לשיעול את הדבר הזה. אני הולך קדימה, ולחץ על אישור. ועכשיו הודעה, אני מקבל את ההתחלה חדשה חתיכה שמעוקלת בחלק העליון. ומה אני הולך לעשות עם זה, אני הולך רק כדי לגנוב בלוקים אלה. אני הולך לשים אותם כאן. ועכשיו, עם שלושה חלקים אלה, יש לי יישם את מה שאני הולך לקרוא פונקציה או לפרוצדורה, או חלק אולי אתה יודע את זה כשיטה. הבדלים קלים בין המילים. אבל לעת עתה, בואו פשוט קורא לזה לתפקד. זה רק פיסת הפאזל חדשה. עכשיו זה מיושם ככה. אבל שם לב שנתנו לנו סריטות ייצוג פיזי של שכל לחסום לכאן. אז עכשיו, אני יכול פשוט לגרור אותו לכאן, אומרים, חזור שלוש פעמים, ו מה יקרה עכשיו, כשאני מנגן התסריט הזה, הוא רק תכנית אחת פועל בכל פעם. יש רק אחד, כאשר הדגל ירוק לחיצה עליו. אבל זה נקרא בלוק סגול הוא שיעול למעשה אומר לי סריטות, כל פעם שאתה רואה פיסת הפאזל שבעצם לבצע את הפעולות הבאות שאני לקרות כדי ליישם באופן ידני. אז זה סוג של בהמה. אבל עכשיו, נניח שהחלטתי, אני לא רוצה החתול הזה רק כדי להשתעל. אני רוצה שהוא יהיה מסוגל להתעטש גם כן. ובכן, איך אפשר ללכת על יישום עיטוש? ובכן, אני יכול פחות או יותר לעשות את אותו דבר. אני יכול לעשות בלוק אחר. אני יכול להתקשר לעיטוש זה, לחץ על אישור. ואז, לכאן אני באמת יכול יש, תנו לי לשכפל את זה - ויש בו אתה צריך להרגיש כמו אתה כנראה לא עושה משהו ב הדרך הטובה ביותר. אני יכול לומר משהו כמו, אצ'ו, לשנייה אחת. חכה שני אחת. עכשיו יש לי בלוק חדש בשם עיטוש. ואכן, זה מה שיש. אבל גם את זה, צריך להתחיל להרגיש - אולי לא בשבוע הראשון של כיתה, אבל מהרגע לרגע - פשוט מיותר קצת. ברור שיש איזה יתירות כאן. אז הרשה לי להציע, במקום, כי אנחנו לחדד את ההגדרה הזאת באופן הבא. בואו נלך עד לתפריט הקובץ שלי אותי. אני לא הולך להציל את הגרסה זו. אני הולך להיכנס לאחד קבצי premade שלי כאן. ואני הולך קדימה ולפתוח את השיעול 2. אופס שהיה שיעול 2. תן לי ללכת קדימה ולפתוח את השיעול 3, אשר ספריית מקור זה. להשתעל 3 ושימו לב - אה, אמר לי סיפור שלא בסדר הנכון. תן לי להתאושש מהסיפור הזה. הסיפור התכוונתי לספר לי מסתיים בשיעול - 4 זה מה שיש. אז מה אם אני, במקום זאת, להגדיר פיסת הפאזל גדולה יותר הנקראת להגדיר, לומר מילת n פעמים. העיטוש הוא פשוט, ככל הנראה, בגרד, אצ'ו. אז אנחנו מביעים את זה כמילה, רק בגלל זה אילוץ של התכנית. ושיעול הוא [שיעול], אבל שיעול, C-O-U-G-H. אז זה רק שניים מילים שונות עושים, בעצם, את אותו הדבר. אז בעצם אני יכול לעשות בלוק חדש כמו זה. אני לא השתמשתי באפשרות תפריט זה בעבר. אבל כאשר אתה לוחץ על הפוך את הבלוק, אתה יכול לבחור כמה אפשרויות. ואתה יכול לומר שזה בעצם בלוק לוקח כמה כניסות, אחרת הידוע בשם טיעונים, או פרמטרים, ולכן כי אתה יכול לשנות את ההתנהגות של הבלוק שלך. אז מה שעשיתי לפני רגע היה התקשרתי לבלוק הזה תגיד. ואז אמרתי, זה לוקח מחרוזת קלט. ועכשיו שם לב, כברירת מחדל, זה אומר 1 מחרוזת. מחרוזת היא רק מילה, או ביטוי, למטרות שלנו. אבל אני רק הולך לשים קצת טקסט מציין מיקום שם, בדיוק כמו ב אתר, כשאתה רואה את שם המשתמש, או סיסמא, ולאחר מכן היא נעלמת כש אתה מתחיל להקליד. זה כל מה שהוא. ועכשיו אני הולך להוסיף הזנת מספר. ואני הולך לקרוא לזה n - אבל זה די שרירותי. ואז פשוט תווית, רק כדי לגרום בלוק קצת יותר עצמי הסבר - פעמים, זה מה שאני עשיתי כרגע. והתוצאה הסופית היא שאני מקבל בלוק. שנראה כך ועכשיו שם לב, אני משתמש בלוק חוזר. אבל במקום קידוד קשה שלוש, אני גרירה ושחרור של n לשם כך אני יכול parametrize לתפקד. אני יכול לעשות את התפקיד הזה לעשות משהו מספר שונה של פעמים על בסיס ערך זה. ושים לב, אומרים, זה מה שעשיתי כאן, אם אני גורר את המילה, אני יכול לומר שלא מילה מקודדות קשה, אבל כל מה הוא עבר לשנייה אחת. בינתיים, איך אני מחדש ליישם משתעל? אני במקום להגדיר כשיעול שיעול אומר n פעמים. אז בקיצור, אני הולך לעבור את זה מהר, אבל הרעיון הבסיסי הוא ברגע כמו שאתה תתחיל לראות בתכנית שלך ש, חכה רגע, אני כבר עשיתי משהו די דומה לזה, אני יכול לצאת קצת גורם משותף פונקציונלי? האם אני יכול לפרק את מה שאני עושה לכמה רעיונות בסיסיים? זה מה שאנחנו עושים כאן. ואני כבר נערם הדברים האלה, מבחינה ויזואלית, על גבי זה בגלל שזה עדות לרעיון זה של החל בינארי, הולך ל-ASCII, מה שהופך את תוכניות גרפיות, סוג של שכבות רעיונות מורכבים יותר ויותר על גבי זה. אותו הרעיון כאן. התחלתי מאפס, יישום שיעול, שיעול ואז הבין הוא באמת רק אומר משהו. אז תן לי במקום ליישם רעיון של אומר משהו. ונוסף על כך, אני יכול ליישם אצ'ו, או שיעול? ואנחנו יכולים לעשות כזה יותר גרסאות עדיין. אז מעיקרון יסוד זה, אנחנו יכולים להתחיל לעשות יותר ויותר תוכניות מורכבות. תן לי לפתוח את זה. אנחנו יכולים למעשה יש שדונים מרובים אינטראקציה על המסך בו זמנית. אם אני נכנסתי לספרייה שלי והמקור לתפוס אשכולות קראו לאחד, זוכר כי נושא הוא פשוט באמת את היכולת שני תסריטים להפעלה על ידי צד צד באותו הזמן. שים לב עכשיו, לשניהם יש ספרייט וציפור ספרייט חתול, אשר שניהם יש לי התסריטים שלהם. אז הודעה, כאשר אני לוחץ על חתול, אני מקבל התסריטים הללו. כאשר אני לוחץ על ציפור, אני מקבל את התסריטים האלה. אז כל אחד מהחבר 'ה האלה יש תוכניותיו שלו. כשאני עכשיו לחץ על הדגל הירוק, שים לב כי מה שהתכנית הזו עושה הוא יש חתול, לא ייאמן לאט, לרדוף אחרי ציפורים. אבל יש לו את חתול יתרון שיש כבר מתוכנת באופן כזה כי לא משנה איפה ציפור הוא, החתול הולך אליו. אנחנו יכולים לשחק במשחק הזה הרבה יותר מהר. אז אם אני בחתול, שם לב שאני באמצעות, נניח לנוע אחד שלבים. תנו לו לעבור חמישה שלבים ב זמן, כך שחמש נקודות בכל פעם. תן לי לחצו על הפעילו. [השאגה של האריה] דוד Malan: בסדר, עכשיו אנחנו יכולים באמת לתת לחתול את היתרון. 10 צעדים בכל פעם. [השאגה של האריה] דוד Malan: בסדר, כל כך מהר, הוא מקבל יתרון קטן לחתול. אבל אני תניף את היד שלי ב חלק מהפרטים. אבל הסיבה שהנתיב שהוא מתחיל כל אחד שונה מעט זמן הוא שאני עושה קצת אקראי. בעצם אני מצביע את החתול ב כיוון אחר המבוסס על בי רוצה אותו כדי להתחיל בכך שכל זמן משחק, או האנימציה, היא קצת שונים. עכשיו, הרשו לי להציג אחד אחר לבנות כאן. אז במקרה הזה, היה לנו פונקציות. יש גם הולך להיות פיסת הפאזל הידוע בשם מערך, או רשימה, המאפשר לך לאחסן מספר רב של ערכים בתוך של משתנה. ראינו את אשכולות, ועכשיו יש אירועים. אז הנה אירוע באמצעות שני החבר 'ה האלה כאן. ואם אני פותח את הקובץ שנקרא אירועים מדוגמאות של היום, אנו תראה את תכנית שנראית קצת כמו זה. ועכשיו שם לב שהבחור הזה - אז שם לב שיש לי כחול החבובות לחץ - הוא רק מבצע את הפעולות הבאות. אין לו אחד מאלה חלקי הפאזל דגל ירוקים. יש לו כשאני מקבל אירוע - אז איזו מילה שרירותית. אני פשוט הדפסתי שם אירוע - הוא הולך לומר, פולו, במשך שתי שניות. אז אלו מכם שמכירים עם המשחק הזה אולי יודע לאן זה הולך. אם אני עכשיו לחץ על החבובות הכתומה, התכנית שלו עושה את זה. לנצח, אם מקש רווח המקלדת מדוכא, הוא הולך לומר, מרקו, למשך שתי שניות על המסך. אבל הוא גם הולך להשתמש בזה מהודר יותר לחסום המכונה שידור. הוא הולך לשדר ציטוט סוף ציטוט, "אירוע". בינתיים, הבחור הכחול, כזכור, הוא האזנה למרכאות, "אירוע". אז איכשהו, עכשיו, אנחנו יכולים להיות שני שדונים אינטראקציה. וכשנגיע לתכנות אינטרנט, מאוחר יותר במונח, באופן דומה יהיה זה להיות יתרון לאתר שלך יש לי לעשות משהו בתגובה ל, עבור למשל, בלחיצה על המקלדת. אז תן לי ללכת קדימה ו פגע על מקש הרווח. אורנג' הבחור אומר מרקו. כחול בחור אומר פולו. אם אני עושה את זה שוב, אומר בחור כתום מרקו, כחול בחור אומר פולו. אז בואו ניקח את זה צעד אחד קדימה. הפעם, נלך, ככל הנראה, כאן רק עוד כמה דקות. האם יש לנו - מנורת שולחן, בוא למטה. אתה צודק בסופו של הדבר. אוקיי, אתה יכול גם לבוא. יש לנו מנורות שולחן לכולם. נו באמת. אני לא יודע אם אנחנו יכולים לשמור על איסור הפרסום המגוחך הזה עד כל הסמסטר, אם כי. בסדר, בואו למטה. ובינתיים, יש לנו בעקבות דוגמאות כדי למשוך את, רק כדי להאיץ את הדברים עכשיו, כזה שאנחנו יש ביטוי מאחר קודמו בתפקיד שלך באמצעות אבני בניין בסיסי זהה. מה שמך? ג'ון: ג'ון. דוד Malan: ג'ון. נחמד אליי אותך. ו? SETZ: Setz. דוד Malan: Setz, נחמד אליי אותך. ג'ון, אם אתה רוצה לבוא עד ראשון, זה ישן משחק בבית הספר בשם Frogger. אתה להשתמש במקלדת לזה גם כן. והמטרה היא לקבל פני הרחוב ומים. [מוסיקה Frogger ומחזות SOUND] דוד Malan: אני מצטער, לא מנורת שולחן בשבילך היום. בסדר, Setz, אתה היית עושה רוצה לבוא בעד? בסדר, בואו נעשה את זה שוב. SETZ: האם אני משתמש בחצים? דוד Malan: רק במקשי החיצים. למעלה, למטה, שמאלה, ימינה. [מוסיקה Frogger ומחזות SOUND] דוד Malan: אנו קוראים להם פרסים ניחומים היום, לאחר מכן, עשה טוב מאוד. כאן, עבור שניכם, ג'ון וSetz. מזל טוב, בסדר. אז שוב, כמו במשחק הזה ממלא, לחשוב על מה שקורה? אחד, יש באופן ברור הרבה תנועה. אבל אנחנו כבר ראינו איך, עם החתול ו דוגמא ציפור, איך אתה יכול לעשות אשליה של תנועה רק על ידי העברת חלק מספר הפיקסלים שוב ושוב. ואם יש לך בלוק, לנצח אתה יכול להיות אלה מכוניות עושים את זה לנצח. יש לנו את היכולת יש לי כמה אקראי. אז המשחק הזה לא צריך להיות אותו בכל פעם בדיוק. יומנים אלה, המכוניות האלה, יכולים להתחיל ב זמנים שונים במקצת, כך ש המשחק עצמו הוא מעניין יותר עם כל משחק. ובינתיים, ראינו את היכולת להקשיב לעל מקש הרווח. אבל באופן ברור, בסריטות, אתה יכול גם להקשיב ללמעלה, למטה, שמאלה, ימינה, ו באמת כל מקש במקלדת. ואתה יכול גם לעשות כמה דברים אחרים. תן לי ללכת קדימה ולחזור לגרסת האינטרנט. תן לי להיכנס לאוסף שלנו דוגמאות כאן. ומתחת לסטודיו שלי, וידאו שבו הוא, למעשה, על תיקייה scratch.mit.edu. יש לנו את גירסאות האינטרנט של כל הפרויקטים האלה. ובואו נראה אם ​​אני יכול לקבל אותי מחשב לשתף פעולה כאן. זה נכתב על ידי אחד מהחברים שלנו ב-MIT, שנקרא הזז את הפרפר. וברגע שזה נפתח, זה הוא הולך להשתמש למעשה יותר של החומרה של המחשב שלי. שריטה קורה להיות מיושמת עם פלאש. פלאש יכול לדבר עם מצלמת האינטרנט שלך, אם יש לך אחד. אז אם אני הולך קדימה וזה מסך מלא כאן, לחץ על הדגל הירוק, הודעה שהודעת האבטחה של פלאש הוא אומר, אתה רוצה מאפשר להשתמש במצלמת האינטרנט שלי? בדרך כלל, אתה צריך כנראה אומר מנע. אבל במקרה הזה, אנו אומרים לאפשר. ואז אני הולך לספר לי כרום כדי לאפשר גם את זה באותה מידה. ועכשיו, ברגע אחד, אתה רואה אותי, כן, אותי. ואם היד שלי עולה - יש לי לא לזוז ראש באותו הזמן. יש גם השתקפות על המסך. יאללה, הנה - אתה יכול להזיז אותו על המסך, כי יש גם חלקי הפאזל - הו, לך יודע מה זה, זה בגלל שאתה גם לראות את מסך המקרן מאחוריי. אז יש לנו קצת אינסופי הדבר קורה שם. בסדר, אז אני אשחק כאן למטה. שם אנחנו הולכים. אז יש גם פיסת הפאזל ש אומר, כשאתה רואה את תנועה שמתחת אחד מהשדונים, אתה יכול לקבל אותו ללכת למעלה, למטה, שמאלה, ימינה או משהו דומה. אז יש לנו קצת מציאות מדומה קורה כאן, כמו גם, כל זאת במסגרת גבולות של הדפדפן שלי, רק כאן באמצעות מצלמת האינטרנט שלי. אז מה אז באופק. סט הבעיה הראשון, כפי שתראה, או באתר אינטרנט אחר כך ילך הערב בשעה cs50.net, הוא די הרבה הולך להיות פתוח הסתיים. וליישם את פרויקט Scratch לעניין אותך, משחק, אינטראקציה, משהו אמנותי, ו לאתגר את עצמך כדי להשתמש בכל מספר מחלקי הפאזל האלה. וזה גם יכול להיות אינטראקטיביים בדרך זו. או שזה יכול להיות משהו יותר בכוונה עשה לספר סיפור. ואכן, זה שבו אנחנו יהיו בסופו של את היום, עם דוגמה אחת אחרונה. תן לי להיכנס לסריטות באופן מקומי. תן לי ללכת קדימה ולפתוח את זה, ולשחק התכנית האחרונה שנכתבה על ידי אחד של קודמיך, כלומר כי אחד כאן. טוב, להעלות את עוצמת קול לזה. [השמעת מוסיקה] קריין: בCS50 הבא, דוד מזמין את מתנדב על הבמה. דוד Malan: להדגמה זו, אנחנו הולכים צריכים מתנדבים אחד. היית רוצה לבוא אליך? מה שמך? ממשיך הלאה.