[השמעת מוסיקה] -Alright! -זהו הוא CS50. -זהו הוא CS50. -זהו הוא CS50. [מוסיקה - איגי אזליה, "מפואר"] הזיכרון האהוב -לוח מCS50 היה כשהלכתי לפאזל יום. -Probably בדיוק בזמן בילה עובד על סטי בעיה עם החברים שלי ואנשים שולד סופו של דבר להפוך לעמיתים לבלוק. -לוח זיכרון הטוב ביותר מ CS50 הוא Hackathon. -The CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -The Hackathon -Rob באודן. רק עליו הכול. [מוסיקה - איגי אזליה, "מפואר"] הזיכרון האהוב -לוח הוא כאשר הייתי על במה ושחקתי את התפקיד היוקרתי של [צומת? בצמוד?] [? רשימה. ?] -כאשר לכולנו יש מקום Dropbox חופשי ו דוד היה כמו, חפש תחת המושבים שלך. וזה היה כמו, מקום לכולם את זה! [מוסיקה - איגי אזליה, "מפואר"] עצת -לוח לכל תלמיד הנכנס היית להיות ממש לעבוד על P-סטים עם חברים. שעות -Office היא מאוד חבר שלך. מעמיד את רוב הניסיון שלך ולפגוש כמה שיותר אנשים שאתה יכול. -לא יפחד לבקש עזרה. -Start P-ערכות מוקדמות בשבוע. 'אני חושב שהדבר הגדול ביותר הוא לנצל את כל המשאבים יש CS50 ש. להסתלק לשעתי משרד בתחילת השבוע. -Definitely לצפות המכנסיים הקצרים. -לא להתמהמה על P-הסטים שלך. , ודא שאתה מוצא קבוצה גדולה של אנשים לעבוד על P-סטים עם. אתה יכול לקבל הרבה כיף ולהספיק יחד עבודה. -לא יפחד לדחוף את עצמך. לכו על מהדורת ההאקר לפעמים. דברים -Write על נייר לפני אי פעם שאתה נוגע במחשב שלך. -CS50 הוא באמת נהדר ב מתן דרכים לקבל עזרה. -לוח עצה אחת היא שינה. האם מישהו אמר את זה? שינה, בודאות. זה קל לא לעשות, אבל אתה חייב לעשות את זה, אני חושב. 'אני הייתי אומר באמת להיות מוכן נפשי בגלל שאתה הולך לאהוב את זה. [מוסיקה - איגי אזליה, "מפואר"] -זהו הוא CS50. -זהו הוא CS50. -זהו הוא CS50. [מוסיקה - איגי אזליה, "מפואר"] -זהו הוא CS50. [מחיאות כפות] דוד י מלאן: אז זה CS50 וזה הסוף של שבוע 0. וזה רק חלק היה מטו של CS50 ש מחכה לכם לא רק בסעיפים ושעתי עבודה, אבל, גם, בסוף השבוע הקרוב בפאזל CS50 היום. אשר, שוב, לא הכל על תכנות. ואכן, זה מה שמצפה לך לא יצטרך לתכנת כל דבר, אלא לפתור בעיות באמצעות שכל שלך וחברים שלך לצד. אנחנו יצטרפו כמה החברים שלנו בFacebook-- אם אתה נרשם here-- ש לכמה שנים האחרונות, למעשה יש בכתיבה אתגרים אלה איתנו. וכך, הם יהיו אלה סופו של דבר פועל יום פאזל. וכך, אתה יהיה לערער עם בדיוק מיני דברים וכי אנשי בעיות ב פייסבוק רוצה לחשוב עליו. אז זה מחר. הירשם בcs50.harvard.edu/register. עכשיו מילה על בני זוג של צוות בפרט. זה כאן הוא אנסל דאף, מי הוא למעשה אחד של המחברים של ינארי אלה נורות שראינו ביום רביעי, בנוסף לעצמו דן ברדלי של CS50. אנסל דאף היה גם בעבר advisee הלימודים הראשונה שלי לפני 3 שנים והוא למעשה אפילו נבנה הדוכן הזה. הוא הלך על מנת לעשות מדעי הנדסה ועוד. עכשיו, התמונה שלו כאן היא למעשה אנסל לפני 3 שנים בHackathon CS50 כאשר הוא שאל אחד משלנו בלונים, הדביקו אותו למחשב הנייד שלו, ו, לבא 12 כמה מוזר שעות, התמקדו בפרויקט הגמר שלו, הפסקות לוקחים רק כדי לפתוח שקיות של ממתקים בHackathon. אבל הוא המשיך לאחרונה ל מבלה בקיץ האחרון איתנו, מאז CS50 לצוות שלה, ו עכשיו תלמידים בסמסטר הזה, יש מדפסת 3D שלה. ועל קצה מזלג מדפסות 3D היא מכשיר שנראה ממש כמו זה. אתה למלא אותו הבעשויה מפלסטיק שהותך על ידי המכשיר ואתה בונה דברים פשוטו כמשמעו מאין. בדומה מדפסת הזרקת דיו, אתה מתחיל לירוק נקודות קטנות של פלסטיק טופס שיחד כדי יוצר כל אובייקטים. וכך אנסל למשל, מוקדם יותר בקיץ הזה, יש 5 iPhone והחליט שהוא באמת רצה כדי לתמוך אותו על שולחן הכתיבה שלו. אבל הוא לא רצה לצאת ולקנות משהו מהחנות של אפל או משהו הדומה, ולכן הוא התיישבתי והתחיל לצייר משהו. הוא לקח כמה מדידות באשר לאופן עבה ואיך רחב iPhone שלו היה, הוא צייר את התמונה כאן, הוא החליט שהוא רוצה יש הטיה 75 תואר כפי שבהה בי שלו על שולחן הכתיבה שלו יש. לאחר מכן הוא פנה זו, באמצעות תוכנה, למודל 3D CAD שנראה קצת משהו כזה. ואז הוא המשיך, סופו של דבר, לבעצם ליצור אותו. אז למעשה, אם מישהו מכם כאן, אולי בשורה שאני יכול לזרוק ל, יש לי an-- יש לנו אנשים עם iPhone 5, וכאן יש לנו עוד שני. עכשיו, לא כדי שלא לפגר, CS50 של עצמו נג גונג גם יצא בקיץ הזה לבנות כמה וכמה דברים ו, למעשה, מסיבות שעדיין לא ברור, כבר לאט הדפסת צבא של פילים עם נשק וגזעים לבטא. כמה שהם למעשה כאן אם מישהו עכשיו like-- פיל. בסדר,. אבל מה גם נג עשה עבורנו הוא שהוא מאוד חביב הציב מצלמה כי פיל ש, יאמינו או לא, לוקח קצת שתיים ו חצי שעות כדי להדפיס. אפילו דוכן iPhone לקח שעה וחצי להדפסה. ומה Cheng הלך ועשה הוקם מצלמה נחמדה מול של מדפסת 3D זה, שצולם במשך שעה וחצי כעיצוב של אנסל מודפס. אנחנו מעולף כמה סקסיים מוסיקה אליו על מנת כדי לתת לך זה להסתכל איך הדפסת 3D עובדת. ואף על פי שזה הוא למעשה בפלסטיק, להבין שאם זה אזור לעניין אותך מבחינה אקדמית, יש אנשים, בין שלהם ג'ניפר לואיס כאן בבית הספר של הנדסה, שהם למעשה עובד על הדפסת 3D אובייקטים של פלסטיק. אבל גם, יותר ויותר, חומרים ביולוגיים לפתרון בעיות פיסיולוגיות לבני אדם. אבל כאן הוא קטן משהו מCS50. [LOUD המכאנית NOISES] דוד י מלאן: זה לא נשמע דבר כזה במציאות, אבל זה הרבה יותר מגניב לצפות בו במהירות ש, ועם זה נשמע. עכשיו, ביום רביעי, איך הגענו לכאן קודם? התחלנו לדבר על מחשב מדע ושאלנו מה זה היה. וזה על מספר הדברים, ו יש כיוונים שונים כל כך הרבה שבו אתה יכול ראש לאחר קורס כמו CS50. למעשה, אחד אם אתה הרים מדריכים לא רשמיים אלה למחוץ CS, החוברת ש סיפקנו, בין אם אתה חושב לקחת רק CS50, או אולי עושה משנית, או אולי אפילו בהתמקדות בCS, אל לדפדף ש. ואתם תראו תרשים לקראת הסוף ש מראה לך את כיוונים רבים ושונים בCS שאתה יכול ללכת ב. אבל היום, אנחנו מתמקדים, שוב, על באמת אחת מהתצוגות הבסיסיות, אולי, שבו יש לך תשומות לבעיות, יש לך יציאות מ בעיות, ויש לך אלגוריתמים שבה ליצור אלה תפוקות מתשומות אלה. ודוגמא אחת כזו, הייתה של כמובן, ספר טלפונים זה כאן. ואנו משמשים כדוגמא ללכת באמצעות אלגוריתם שהיה נכון. ואז עוד אחד היה נכון, אבל קצת יותר מהר. ואז עוד אחד שהיה קצת יותר דרמטי, אבל ביסודו מהר יותר. נכון, אנחנו זה ספר טלפונים היה לי טען כ -1,000 עמודים. וכמה פעמים עשו לי לקרוע את ספר טלפונים במחצית למצוא מישהו כמו מייק סמית, מקסימאלי, בספר עמוד 1,000? אז, 10 לתת או לקחת. ולכן ברגע שקרעתי את הדבר הזה ב מחצית, או פשוט, יותר בוגר, מחולק לשניים, זה רק 10 דפים מתוך 1,000. ואם אתה לחיץ, קטן לא ריאלי עבור ספר טלפונים, אבל אם ספר טלפונים זה היה חלק 4 מיליארדים דפים בזה, כל כך לגמרי מסורבל מבחינה פיזית, כמה פעמים אתה מחלק 4 מליארד ספר טלפונים דף בחצי? אז זה בעצם 32, פחות או יותר. וכך 32 פעמים בלבד, מתוך של 4 מליארד דפים, יכול אתה מוצא מישהו כמו מייק סמית. וזה יעילות. זה אלגוריתם טוב, מעז לומר. אבל אז עברנו שמ כדי לנסות להסדיר את זה. ואני הצעתי קוד pseudocode זה. קוד Pseudocode לא משהו רשמי. זה לא משהו שאתה לשנן. זה פשוט משהו שאתה מביע למדי באופן אינטואיטיבי באמצעות אנגלית, או באמת, כל שפה ש מעביר את הרעיונות שלך באופן תמציתי. אבל מה מפתח על קוד pseudocode הוא שאתה לנסות לחזות את כל מקרים אפשריים שעלולות לקרות. ואכן, בpseudocode זה קוד, היו באמת שלושה מקרים כל פעם שאני חילקתי את ספר טלפונים. מייק יכול להיות בצד השמאל. מייק יכול להיות בצד הימין. או שהוא יכול להיות נכון בדף אני ב. או מקרה הפינה רביעי, אם אפשר לומר כך. תרחיש רע עשוי להיות אחד which-- מה שקורה? מייק פשוט לא ב ספר טלפונים בכל. וכאשר תוכניות crash-- כאשר מק ותוכנת מחשב שאתם רצים במחשבים שלך לפעמים נתקע או נסגר באופן פתאומי, כי בדרך כלל אומר שכמה מתכנת, כמה אדם כמוך בקרוב, רק דפוק ועשה איזו טעות. אולי לא ציפיתי שאולי יש אין מייק סמית בספר טלפונים. ואם אתה לא באמת כותב קוד להתמודד עם מצבים כאלה, בדרך כלל בלתי צפוי דברים יכולים לקרות. המכשיר שלך יכול להקפיא. זה יכול לאתחל. התכנית יכולה להפסיק. וכך כל אלה שטויות שאתה עשוי נתקלתי בך בפועל חיים רק באמצעות מחשבים, יהיה יותר ויותר פשוט הסביר משם על ידי אינטואיציה זה והבנה של מה שהוא קורה למעשה מתחת למכסת המנוע. עכשיו בואו ננסה להעיף מבט בבעיה כללית יותר. במקום לקחת נוכחות במקום כזה זה, שיהיה די איטי לעשות אחד, שניים, שלושה, ארבע. או אולי שתיים, ארבעה, שש, שמונה. בואו נתמקד, במקום, על כיצד נוכל למסד האלגוריתם של התהליך על ידי שבו אנו יכולים לקחת את הנוכחות. ועל הדרך, בואו נתחיל ליישם כמה מינוח שאנו נשתמש היום כאשר אנחנו באמת להתחיל בתכנות בשפה. אז אני נותן לך עכשיו, וידאו ארבע דקות שאנחנו מכניסים יחד עם החברים שלנו מTED, הארגון. לפי ספקנו תסריט ו הם הביאו האנימטורים לשאת, ולמעשה נוצר 2D אנימציה של מה שהוא אלגוריתם. אם היינו יכול לעמעם את האורות. [השמעת מוסיקה] קריין: מה אלגוריתם? במדעי מחשב, אלגוריתם הוא סדרה של הוראות לפתרון כמה צעד אחר צעד בעיה. בדרך כלל, אלגוריתמים הם מבוצע על ידי מחשבים, אבל יש לנו בני אדם, כמו גם אלגוריתמים. לדוגמא, איך היית אתה הולך על ספירה מספר האנשים בחדר? ובכן, אם אתה אוהב אותי, אתה בטח להצביע על כל אדם אחד בכל פעם ולספור עד מאפס. אחת, שתיים, שלוש, ארבע, וכן הלאה. ובכן, זה אלגוריתם. למעשה, בואו ננסה לבטא את זה קצת יותר באופן רשמי בקוד pseudocode. תחביר דמוי אנגלית ש דומה שפת תכנות. בוא n 0 שווים. לכל אדם בחדר, להגדיר n שווה ל n בתוספת 1. כיצד לפרש את pseudocode? ובכן שורה אחת מכריז, אם אפשר לומר כך, משתנה n ומאתחל נקרא הערך שלה ל0 זה רק משמעות הדבר היא כי ב מתחיל של האלגוריתם שלנו, הדבר שבו אנו נמצאים יש ספירת ערך של 0. אחרי הכל, לפני שאנחנו מתחילים לספור לא ספרנו שום דבר עדיין. קורא משתנים זה n הוא רק מוסכמה. אני יכול לקרוא לה כל דבר ביותר. עכשיו קו שתי demarks תחילת לולאה, רצף של צעדים ש לחזור כמה וכמה פעמים. אז בדוגמא שלנו, הצעד שאנחנו לקיחת ספירת אנשים בחדר. מתחת לקו שני הוא קו שלוש המתארים איך בדיוק אנחנו הולכים על ספירה. הכניסה מרמזת על כך ש זה קו שלושה שיחזור. אז עם קוד pseudocode הוא אמרה היא שלאחר שהחל ב0 לכל אדם ב חדר שנוכל להגדיל n על ידי 1 עכשיו הוא אלגוריתם זה נכון? ובכן בואו לדפוק על זה קצת. האם זה עובד אם יש שני אנשים בחדר? בואו נראה. בשורה אחת אנחנו לאתחל n ל0. לכל אחד משני האנשים האלה, אז אנחנו להגדיל n על ידי 1. אז בנסיעה הראשונה דרך לולאה, אנו מעדכנים את n בין 0 ל -1. בטיול השני דרך ש אותו לולאה, אנו מעדכנים את n בין 1 ל 2. וכך, על ידי האלגוריתם של זה הסוף, n הוא 2, ש אכן תואם למספר של אנשים בחדר. עד כה, כל כך טוב. מה דעתך על מקרה פינה אף? נניח שיש 0 אנשים בroom-- חוץ ממני, שזה עושה ספירה. בשורה אחת, אנחנו שוב לאתחל n ל0. הפעם לעומת זאת, שורה שלוש אינם מבצעים בכל מכיוון שאין אדם בחדר. וכך n נשאר 0, אשר תואם אכן מספר האנשים בחדר. די פשוט, נכון? אבל ספירת אנשים אחד בכל פעם הוא די לא יעיל, גם, לא? אין ספק שאנחנו יכולים לעשות יותר טובים. למה לא לספור שני אנשים בכל פעם, במקום לספור אחת, שתיים, שלוש, ארבעה, חמש, שש, שבע, שמונה, וכן הלאה. למה לא לספור שתי, ארבעה, שש, שמונה, וכן הלאה? זה אפילו נשמע יותר מהר. וזה ללא ספק הוא. בואו להביע אופטימיזציה זו בקוד pseudocode. בוא n 0 שווים. עבור כל זוג של אנשים ב חדר, שנקבע n שווה ל n בתוספת 2. די שינוי פשוט, נכון? במקום לספור אנשים אחד בכל פעם, אנחנו במקום לספור אותם שתיים בכל פעם. אלגוריתם זה של, ובכך, פעמיים מהר ככל שעבר. אבל האם זה נכון? בואו נראה. האם זה עובד אם יש שני אנשים בחדר? בשורה אחת, אנו לאתחל n ל0. שלזוג אחד של אנשים, אז אנחנו להגדיל n על ידי 2. וזאת על ידי אלגוריתם זה של n הסופי הוא 2, ש אכן תואם למספר של אנשים בחדר. נניח הבא שיש אפס אנשים בחדר. בשורה אחת אנחנו לאתחל n ל0. כמו בעבר, קו שלושה אינו מבצע את כל זה מאז שאין זוגות של אנשים בחדר, וכל כך n נשאר 0. שאכן תואם את מספר האנשים בחדר. אבל מה אם יש שלושה אנשים בחדר? איך נסיעה אלגוריתם זה? בואו נראה, בשורה אחת, אנו לאתחל n ל0. לזוג האנשים האלה, אז אנחנו להגדיל n על ידי 2. אבל אז מה? יש לא מלא אחר זוג אנשים בחדר, כך השורה שתי כבר לא חלה. וכך עד סוף האלגוריתם זה, n הוא עדיין 2 וזה לא נכון. ואכן אלגוריתם זה של אמר ל להיות מרכבה כי יש לו טעות. הפיצוי בואו עם כמה קוד pseudocode חדש. בוא n 0 שווים. עבור כל זוג של אנשים ב חדר, שנקבע N שווה ל n בתוספת 2. אם אדם אחד נותר מזווג, להגדיר N שווה ל n בתוספת 1. כדי לפתור בעיה המסוימת הזה, יש לנו הציג בשורה ארבעה תנאים, הידוע גם ב סניף, שרק עוסק בביצוע אם יש אדם אחד ש לא יכולתי לשייך אל אחר. ואז עכשיו, אם יש אחד, או שלוש, או כל מספר אי זוגי של אנשים בחדר, אלגוריתם זה עכשיו יהיה לספור אותם. האם אנחנו יכולים לעשות אפילו טובים יותר? ובכן, אנחנו יכולים לספור בשלשות, או ארבע, או אפילו חמישיות ועשרות, אבל מעבר לזה, זה הולך לקבל קצת קשה להצביע. בסופו של היום, אם מבוצע על ידי מחשבים או בני אדם, אלגוריתמים הם רק סט של הוראות שבה כדי לפתור את הבעיות. אלה היו רק שלוש. מה הבעיה היית לפתור עם אלגוריתם? דוד י מלאן: אז בכוונה, תכנית פשוטה מאוד, אלגוריתם פשוט מאוד, להשגת משהו , לספור פשוט מאוד מספר האנשים בחדר. אבל בואו להפריד חלק מהנציג כולל כאן שהם למעשה הולך להיות שימושי גם כאשר היישום ביותר מורכב של תוכנה. כך למשל, בשורה הראשונה זה, יש לנו מה שאנו מכנים משתנים, ומאלגברה, אתה x באמצעות בדרך כלל מוכר וy ולפעמים z, וכן הלאה. אבל בתכנות, משתנה עדיין, בסופו של היום, דומה מאוד לזה. אבל זה אולי פשוט יותר לחשוב של משתנה כמו רק מיכל. ואכן, זה חלק מספר הביטים ייושם בצורה כלשהיא בדיסק הקשיח שלך או בזיכרון של המחשב שלך, אבל עוד על כך בעתיד. זה פשוט מיכל. ואם אתה אומר משהו כמו לתת n שווה 0, גם זה כמו לקרוא לכוס זו קערה כאן n, רק שם שרירותי, ולשים שום דבר בזה בתחילה. אז הערך של זה קערה עכשיו היא אפס. וכמובן, אם אתה תופס בשורה שלאחר מכן, למעשה כדי להגדיל איזה קו של קוד, כמו בשורה שלישית זה כאן, על ידי 1, זה כמו להגיד מה הערך הנוכחי של n, תוצאת 0, בתוספת 1, לשים משהו כמו פינג פונג כדור בפה. עכשיו הערך של זה משתנה הוא די פשוט 1. ואתה יכול להסיק מהר מאוד, אבל עכשיו זה 2, עכשיו זה 3, וכן הלאה. אז זה כל מה שמשתנה הוא. זה חתיכת האחסון ל למעשה לאחסן נתונים מסוימים. לעת עתה זה כדור פינג פונג. שם זה מספר. אבל זה יכול להיות מילים ב מילון, כמו בודק האיות רמזתי ביום רביעי ל אחד מסטי הבעיה של השנה שעברה. עכשיו עוד רעיון מפתח, כי בדומה הוא די אינטואיטיבי אני טוען, הוא זה של לולאה. והלולאה בתהליך של כולם לספור הוא, כמובן, עושה את אותו הדבר דבר שוב וagain-- כל אחד בכל פעם או שתיים בכל פעם. ואתה יכול לבטא את זה באנגלית, או קוד pseudocode, בכל מספר הדרכים, אבל שימוש במילת יחס זה "עבור" הוא דרך נפוצה מאוד לעשות את זה. לכל אדם בחדר, לעשות את זה. שוב ושוב. והעובדה שזה מסוכסך, קו שלושה, רק אומר כי מה ש אתה אמור לעשות הוא הדברים שמסוכסך מתחת לקו שני עצמו. רק מוסכמה אנושית, אבל אחד משותף כפי שנראה בגבוה יותר בפועל שפות תכנות ברמה. קטן עכשיו יותר מעניין הוא כאשר אתה מקבל במקרה פינה. לדוגמא, פינה מקרה היה כאשר יש היו שלושה אנשים, או חמש, או שבע, או כל מספר אי זוגי של אנשים בחדר, כי עושה את זה על ידי בלמי זוגות סופו של דבר בגללך הולך למתגעגע למישהו, או ב ממש בהתחלה או ממש בסוף תלויים איך אתה עושה את זה. וכך, עכשיו, יש לי ענף זה, או מצב, אם אדם אחד נשאר, אז קדימה ולהתמודד עם זה אחד אדם בודד שלא קבל זיווג עם מישהו אחר. אז זה מה שהיינו קורא מצב, או סניף. קוד עכשיו pseudocode באופן כללי יותר יכול להיות נכתב כדי לפתור כל מספר של בעיות. ומה שחשבתי שכולנו הייתי לעשות כאן הוא לקחת רגע להזמין נאמר CS50 של בעלים של רוב אודן על במה ליצטרף שני מתנדבים, שאין להם מושג מה מחכה לי. יד ירדה ברגע שאמרתי את זה. מה דעתך עליך על מסתיים כאן, בחייך עד. ומה דעתכם על מרחוק משם, מה דעתך על דרך בחלק האחורי. שורה אחורית, באה על עם הידיים למעלה. בסדר, ומה השם שלך? אניטה: אניטה. דוד י מלאן: אניטה. אוקיי, נחמד לפגוש אותך. תן לי להכיר לך את רוב אודן. זהו אניטה. ומה השם שלך? KIERSTEN: Kiersten דוד י מלאן: Kiersten. Kiersten, לבוא בעד ו לפגוש רוב אודן ואניטה. נחמד לפגוש אותך. KIERSTEN: נחמד לפגוש אותך. דוד י מלאן: בסדר, רוב. ROB אודן: נחמד לפגוש אותך. דוד י מלאן: אניטה. KIERSTEN: היי אניטה. דוד י מלאן: ושלך כמה מאה חברים לכיתה. אז, עכשיו תן לי ללכת קדימה ולמשוך עד רק תכנית פשוטה כאן על Mac OS שיתנה לי למעשה לרשום כמה הערות. ואם אתם רוצים לקחת כל אחד עמדה באחד מאותם בתי ספר שיש, תן לי ללכת קדימה ומתחיל רשימה קוד pseudocode, אם תרצה. ומה שאני רוצה לעשות כאן, סופו של דבר הוא הסוג בשבילך כמה הוראות ש קהל הוא למעשה הולך לדקלם לנו. תן לי ללכת קדימה ורק לשנות את זה לרשימה ממוספרת כדי להתאים את מה שאנחנו עושים שם למעלה. ומה אני הולך לעשות עם העזרה שלך, היא לכתוב תכנית בpseudocode, שבה החבר 'ה האלה הולכים ליישם בוטנים חמאה וכריך עם ריבה. אז זה אולי אפרופו ל להראות משהו שחלק מכם אולי ראה באינטרנט רק לרגע המעצבן קצר. [BOYS, "חמאת בוטנים מוסיקה BUCKEWHEAT  JELLY TIME "] דוד י מלאן: אישור. זה מספיק עם זה. אז הנה בינתיים, יש לי זוג Google Glasses ש אנו מכניסים ברוב אודן של CS50 לראות את העולם מבעד לעיניו. ואנחנו נעשה כמיטב יכולתנו בהודעה ייצור לארוג למעשה מדה של מה שרוב רואה עכשיו, להרצאה בפועל זה וידאו עם שני מתנדב לצדו. אז מה שאני הולך לעשות הוא, אני אהיה הקלדנית. יש לנו המטרה כאן של בעצם כתיבת תכנית שבה לעשות, בסופו, כריך חמאת בוטנים וריבה, אבל שלושה האלה הולכים להתנהג כאילו הם מחשבים. ומחשבים, בסופו של היום, הם למעשה מכשירים די טפשים. הם סופר מהיר, אבל רק הם יכולים לעשות, פשוטו כמשמעו, את מה שהם אמרו לי. אתה לא יכול פשוט לומר להפוך בוטנים חמאה וכריך עם ריבה. אתה צריך לתכנת אותם לעשות את זה. אתה צריך להגיד להם עם דיוק מה לעשות, פחות דברים הולכים בצורה איומה ו, בתקווה, באופן משעשע השתבש. אז עם זה אמר, שאנחנו צריכים שיחה-out אחד מהקהל למה צריך להתערב אחד להיות, אם המטרה כאן הוא להפוך את בוטנים חמאה וכריך עם ריבה. כן? קהל: [לא ברור] שקית לחם. דוד י מלאן: פתח את השקית של לחם. אז אם שלושה המתמודדים הייתם רוצה להמשיך לעשות את זה פשוטו כמשמעו. פתח את השקית של לחם. [קהל צוחק] דוד י מלאן: אז בואו לעבוד על זה. בסדר. אז צעד שני, how-- בואו ניקח את זה עוד יותר. כן, בחלק הקדמי. קהל: [לא ברור] הלחם. דוד י מלאן: מה זה? קהל: הסר את הלחם. דוד י מלאן: הסר את הלחם. בדומה לכך תמציתי. תודה לך. [מחיאות כפות] דוד י מלאן: זהו זה? אוקיי, אז צעד שני הולכים להיות להסיר את הלחם. בסדר, מישהו רוצה לכתוב לנו משפט ארוך יותר? מישהו אחר? קצת יותר [לא ברור]. לא, שום דבר עכשיו. כן? קהל: מקום שני פרוסות זו לצד זו. דוד י מלאן: מקום שני פרוסות זו לצד זו. [קהל צוחק] דוד י מלאן: מקום שני פרוסות זו לצד זו. צעד ארבעה. כן? קהל: קח את שלך יד ולהגדיר אותו באורח קל על גבי מכסה חמאת בוטנים. [קהל צוחק] קהל: [לא ברור] בסמוך לחמאת הבוטנים. דוד י מלאן: מה? להגיד את זה שוב. קהל: שחרר את המכסה והכניס את אותו בעדינות לצד חמאת הבוטנים. דוד י מלאן: שים את זה בעדינות בסמוך לחמאת הבוטנים. אישור, התקדמות. השלב חמישי. מצוין. כן? להרים סכין. דוד י מלאן: תרים סכין. אישור, לשלב מספר שש. כן? קהל: החזק סכין על ידי הידית. דוד י מלאן: החזק סכין על ידי הידית. להחזיק סכין על ידי הידית. שלב שביעי. כן? קהל: [לא ברור] סכין בבוטנים חמאה ומעט ככל החוצה [לא ברור]. דוד י מלאן: שים סכין in-- אני סכין "לשים בחמאת בוטנים שמע ולקחת קצת מחוץ ככל האפשר. " אגב, להסיר את הנייר ראשון. בסדר, צעד תשע. שלב תשע. שלב תשע. אנחנו לא ממש עשינו כריך עדיין. כן? קהל: שימוש בסכין בחמאת בוטנים, חלים חמאת בוטנים על הלחם אמר. דוד י מלאן: שימוש בסכין ב חמאת בוטנים, חלות חמאת בוטנים על אמר לחם. [קהל צוחק] דוד י מלאן: כל הצעד הנכון 10. שלב 10. כן? קהל: בוטנים טעם חמאה על מנת להבטיח איכות. [קהל צוחק] דוד י מלאן: שלב 11. שלב 11. שלב 11. יאללה. כן? ממש שם. קהל: בזהירות להרים ג'לי. דוד י מלאן: זהירות להרים ג'לי. אישור ולאחר מכן יד אחרת הייתה עד. ממש מאחוריך. כן, בכחול. קהל: בסדר, להסיר מכסה מ[ לא ברור], כן, להסיר מכסה מהג'לי. [קהל צוחק] דוד י מלאן: מג'לי. חה חה. [קהל צוחק] דוד י מלאן: ו? קהל: ובקושי לטאטא כל [לא ברור]. [קהל צוחק] קהל: כמובן, לפני [לא ברור], הסר את הנייר מג'לי. דוד י מלאן: הוצא את נייר מג'לי. שלב 14. אנחנו כמעט שם. כן? קהל: בקבוק ג'לי הפוך לפני הכל נופל החוצה. דוד י מלאן: ג'לי הפוך בקבוק לפני הריבה נופל החוצה. שלב 15. קהל: החלף את הכובע. דוד י מלאן: החלף את הכובע. שלב 16. כן? קהל: [לא ברור] דוד י מלאן: תגיד את זה שוב. קהל: קח את הכובע משל הג'לי שלך. דוד י מלאן: Off הג'לי שלך. אז really-- אופס. יאללה. החלף את הכובע. שים cap-- אתה אמר להסיר את המכסה מג'לי. מרגיש כאילו אנחנו בקצת לולאה. שלב 17. כן? קהל: [לא ברור] דוד י מלאן: תגיד את זה שוב. קהל: [לא ברור] דוד י מלאן: חזור לstep-- קהל: [לא ברור] דוד י מלאן: הסר כובע מחמאת בוטנים. כן? קהל: זרוק את כל ריבה על הלחם. דוד י מלאן: זרוק את כל הריבה על הלחם. דוד י מלאן: אנחנו כמעט שם. שלב 19. קהל: הסר ג'לי עודף. דוד י מלאן: Haha, ג'לי. [מחיאות כפות] דוד י מלאן: למה שלא we-- עוד צעד אחד כדי לקחת הביתה זה. עוד צעד אחד ולאחר מכן אנחנו לשרת כריכים. כן? קהל: [לא ברור] דוד י מלאן: בעוד כל כריך הכניסה בואו remains-- זה- לאכול. [קהל צוחק] דוד י מלאן: בסדר, תודה לך המתנדבים שלנו כאן. [מחיאות כפות} דוד י מלאן: יש לנו כמה נחמד פרידה מתנות לכל אחד מכם. חמאת בוטנים שלו, הג'לי שלך, ולחם להביא הביתה. תודה לך. KIERSTEN: תודה לך. דוד י מלאן: [לא ברור] בברכה. [מחיאות כפות] דוד י מלאן: אז, זה הוא, של כמובן, דוגמא מגוחכת. נכון? אבל זה סוג של לחשוף איך אנחנו בני אדם פשוט לקחת בהירות כמובן מאליו. והעובדה שהייתי מדבר עם אדם אחר, הוא או הוא פשוט יודע למה אתה מתכוון. מחשבים לא הולכים לדעת למה אתה מתכוון, גם בעת שימוש, כ אנחנו עומדים לעשות היום, תכנות משהו בגרד, לגרור וירידה, שפת סגנון פיסת הפאזל. אפילו המיועד לצעיר ילדים, יש לך להיות כל כך מפורש וכך מילולי עם מה שאתה רוצה את התכנית שלך לעשות. עכשיו סופו של דבר, אנחנו הולך להיות תכנות לא בקוד pseudocode, אנגלית כמו תחביר, אבל קוד או, לייתר דיוק, את קוד מקור. קוד המקור הוא רק הדרך המפוארת לתיאור קוד שאתה באמת לכתוב עם מקלדת זה לא באנגלית כשלעצמה. זה בC או ג'אווה או C ++ או משהו כמו ש, כפי שאנו בקרוב לראות. ואכן, רק כדי להפחיד כמה מכם, במבט ראשון, זו היא תכנית שנכתבה בשפה בשם C. אבל לבלתי להפחיד כמה מכם, לגמרי תרצה להבין מה קורה ביום שני הבא מגיע כאשר הוא מגיע למשהו כמו זה. למען האמת, זה שפה ישנה. זה די מסתורי, אבל זה נציג של הרבה שפות בימים אלה ש יש לי המון סוגריים ומתולתל פלטה ומרכאות ופסיק. והרבה זה דברים תחביריים שאינו בכל מעניין מבחינה אינטלקטואלית. ואכן, זה הסחת דעת מוחלטת מהרעיונות פשוטים מאוד שבוהים לנו בפרצוף. תכנית זו, כפי שאתה יכול רק לנחש, הדפסים למסך המחשב של מישהו המילים "עולם פסיק שלום." זהו זה. אז ברור, שיש הרבה דברים זה מקבל בדרך של כמה בררות יש, אבל זה הולך להחליק מהר מאוד משם ולהיות אינטואיטיבי לחלוטין. ואכן, מה שאנחנו הולכים לעשות היום הוא לזקק זה מורכב למדי מחפש תכנית, ששוב אתה תבוא כדי להבין במהירות, אלא למשהו הרבה יותר פשוט. בואו נגיד את מה שאנחנו אומר. בואו לצייר תמונה של מה שאנחנו מתכוונים, בדרך של חלקי הפאזל האלה כאן. אז זה תכנות שפה הידועה כשריטה. הוא פותח על ידי מעבדת המדיה של MIT. ומה שתראה בבעיה להגדיר אפס, אשר ישוחרר מאוחר יותר הלילה, תהיה לנו שאתה הולך לזה כתובת אתר כאן scratch.mit.edu. ויש להם אינטרנט ממשק מבוסס שדרכו תוכל לכתוב התכנית הראשונה שלך. או אלו מכם עם לפני ניסיון, תוכניות השניה שלך, אבל בסביבה שהיא כנראה קצת לא מוכר וש ידחוף לך ליצור משהו באמצעות סביבה מאוד חזותית זה. עכשיו, מה שאני הולך לעשות כאן הוא לפתוח את התכנית עצמה. זה קיים לא רק כדפדפן אינטרנט, אלא גם כתכנית להורדה כך שלמעשה אתה יכול להשתמש בו אם אין לך גישה לאינטרנט. ואני הולך לעשות את זה כאן, בסנדרס, רק במקרה Wi-Fi אינה לשתף פעולה סופר גם. ומה שאני הולך לעשות היא נקודה מתוך כמה תכונות של תכנית זו. לכן, כדי שיהיה ברור, יש לי רק כפול לחץ על הסמל בשולחן העבודה שלי, או באופן שקול הלך לscratch.mit.edu, וזה משך את חלון זה. זוהי סביבת תכנות. זה חתיכת התוכנה ש כמה מחברינו באוניברסיטת MIT כתבתי שבואו אלינו ושאתה כותב תוכניות בשפה שנקראות Scratch. עכשיו זה קורה להיות חתול שגם בשם Scratch וזה עולמו בה הוא חי. זהו השלב, אם אפשר לומר כך, ש מלבן על הפינה השמאלית העליונה. והוא לא צריך להיראות כמו חתול. אתה יכול לגרום לו להיראות כמו כל דבר, ואתה יכול להיות רבים שדונים כאלה, או תווים, בתכנית. בינתיים, כאן בהרבה נכון, הוא לוח חלק גדול. וזה, מקום שבו ברגע, אנחנו הולכים להתחיל תכנות על ידי גרירה ושחרור חידה הגרפית אלה חתיכות כי הם תקין כאן באמצע. ויש דרך נוספת שלהם מאשר אנו לבזבז זמן על כאן בכיתה כי אתה תמצא ש הם כולם אינטואיטיבי למדי. שוב, זה נועד לילדים, אבל אנחנו להשתמש בו כדי להפריד כמה מאלה רעיונות בסיסיים של משתנים, לולאות, תנאים, ו, בקרוב, דברים כמו פונקציות ואירועים וחוטים ודברים מפוארים אחרים שנציע ב להגיע לעברו זמן רב כדי ליצור למעשה משהו מאפס. משחק מלים מיועדים. עכשיו, מה שאני הולך לעשות כאן הוא לחץ על לא תנועה, אבל שליטה. וזו רק קטגוריזציה של here-- ואני רואה שונה צבע המוגדר של בלוקים. אבל שים לב כמה מילות מוכרות. "אם" ו "אם אחר" "חוזר". ואתה יכול לנחש זה מזכיר את הסניף, או התנאים שראינו, ו אפילו מבנה הלולאות. אז יש לנו בלוקים דומים כאן. אבל המעניין ביותר אחד הוא זה כאן. כאשר דגל ירוק זה לוחץ, זה, לאלה עם תיכנות מראש ניסיון, הוא שווה ערך לפונקציה העיקרית. אבל למי שלא מכיר, זו היא פיסת הפאזל שיהיה להתחיל לבעוט התכנית כולה שלנו. זה פשוטו כמשמעו כשאני הולך, בזה תכנית, ולחץ על flag-- ירוק שבו אתה יכול לראות כאן ב פינה השמאלית עליונה של ממשק המשתמש, כך רואה את הדגל הירוק ליד התמרור העצור האדום? כאשר אני לוחץ ש, שלי תכנית הולכת לרוץ. עכשיו, אני הולך לעשות משהו סופר פשוט עם סריטות. אני הולך קדימה וללכת ללוח המראה כאן, שבו יש לי חבורה של חלקי הפאזל סגולים, ואני הולך ללכת ולעשות משהו סופר פשוט כמו, אומר. וזה ההודעה then-- טקסט בתיבה הלבנה הוא editable-- אני הולך לומר "שלום עולם", בדיוק כמונו עשיתי בטקסטואלי ש גרסה לפני רגע. ועכשיו אם אני הולך ולחץ על זה דגל ירוק, יש לי עכשיו מתוכנת. זה לא במיוחד תכנית מעניינת, אבל אני עשיתי את המחשב לעשות משהו. התחלתי תכנית וזה עשיתי מה שאמרתי לו לעשות. עכשיו, אני יכול להמשיך לגרור ולשחרר יותר ויותר של חלקי הפאזל האלה והם הולכים משתלבים, אבל בואו סטירה כמה מינוח כאן שנראה חוזר במהלך הקורס, ובאמת בכל מדעי מחשב ותכנות באופן כללי יותר. זה "אומר" בלוק, בצבע סגול, בואו רק להתחיל לקרוא הצהרה. זה כמו קביעת עובדה. לעשות את זה. אז, זה קטגוריה של הוראות ש אולי להאכיל את מחשב כחלק של תכנית או אלגוריתם. ושיהיה ברור, יש לך כנראה מובן מאליו שיש לך תוכניות במחשב שלך. והם סוג של אלגוריתמים, אבל תכנית היא באמת חבורה של אלגוריתמים כי כמה בני אדם כתבו. הם ארזו אותה ו הם מכרו אותו, כך שאתה, או שהם פורסמו באתר אינטרנט כדי שתוכל להוריד. אז, תכנית היא רק כל חבורה של אפסים ואחדים כי, איכשהו, בני האדם יצרו. ואלה דפוסים של אפסים ו אלה מייצגים את הדברים, בסופו, כמו הצגה "עולם אומר שלום" או " המוזיקה הזאת "או" לנגן וידאו זה " או "לשלוח דואר אלקטרוני." אבל אנחנו נחזור ב דרך פירוט רב יותר מה תכנית היא כאשר אתה, את עצמך, לכתוב אותם. הנה statement-- אחר "חכה שני אחת." אני לא השתמשתי בזה עדיין, אבל אם אני רוצה התכנית שלי לעצור לרגע לעשות משהו, אני יכול להגיד לו לעשות זאת. חכה שני אחת. עכשיו עוד אחד יכול להיות "לנגן צליל." אז, זה הוא ייחודי לגרד, זה יש את היכולת לנגן צלילים. אז, אני עלולה הצהרה שימוש הוא, כאן, "לנגן צליל." בינתיים, ביטוי בוליאני, אז זה מילת מגדלת נקרא על שם רק בחור בשם מר בול, וזה כל עניין שאלה. אמת או false-- הוא העכבר למטה? ביטוי בוליאני הוא רק ביטוי כלשהו באנגלית כי הוא גם אמת או שקר. או כבוי. אחד או אפס. אתה יכול לחשוב על זה בכל מספר הדרכים, אבל זה גם או אמיתי זה שקר, סופו של דבר. אז "סימן שאלת עכבר למטה," זה יהיה ביטוי בוליאני. ואתה יכול לחשוב על אחרים, אולי. לדוגמא, "הוא המספר עזב פחות מהמספר הנכון? " גם את זה, יהיה ביטוי בוליאני. "פחות מ" הוא ביטוי בוליאני. אחד זה, גם, "סמן עכבר נוגע ללב." אני לא בטוח למה הם קרא לזה סמן עכבר. זה רק אומר, הוא הסמן, הוא חץ על המסך, לגעת בחתול, למשל. או כמה היבט אחר של המסך. וזו שאלה, שוב, ו שמציין ביטוי בוליאני. משהו שאולי אתה רוצה להשתמש במצב. אז אנחנו נגיע לכך ברגע. לך דברים יכול "ו" יחד. לכן, אם אתה רוצה לבדוק אם זה במקרה וזה המקרה, אתה יכול להשתמש בבלוק "ו" כמו זה. והנה תנאי זה. שים לב לצורה של הפתיחה הקטנה בחלק העליון של פיסת הפאזל הצהובה הזה, זה מזכיר את הצורה שראינו רק לפני רגע. כל אחד מביטויים בוליאנית אלה יש לי קצוות הצביעו אלה על ימין ועל השמאל. וזה בגלל שאנשי MIT החליטו שעל ידי צורות חזותי שינוע, סוג שלך יכול לעזור לאנשים, תלמידים וילדים כאחד, כדי למלא סוג של בחסר, פשוטו כמשמעו. כעת, לאחר שpuzzle-- ש פתיחה היא קצת קטנה, וכפי שנראה בתכנית, בגרד, זה יגדל כדי להתאים. זה יהיה לשמור על צורתו, סופו של דבר. אז מצב של לתת לך להחליט "אני צריך לעשות משהו או לא?" ביטוי בוליאני היא השאלה בפועל אתה משתמש כדי להחליט שאני הולך ל עזב או שאני הולך לימין כאשר אני נתקל בזה מה שנקרא מזלג בכביש? אתה יכול לקבל שני סניפים. אם משהו הוא אמיתי, לעשות זה, אחר ילך בדרך זו, או שאתה יכול פשוט לא לעשות כלום ב כל, כמקשה זה משתמעת. באופן דומה, אנחנו יכולים קן הדברים האלה. אז אם אתה רוצה לשלש את המזלג ב כביש, או לעשות את זה או זה או זה, אתה יכול רק קן הדברים האלה ביחד. וזה מתחיל להיות קצת מכוער, סופו של דבר, בודאות, אבל ההיגיון הוא עדיין אותו. פשוטו כמשמעו אתה יכול לקרוא עליון זה לתחתית וזה אומר מה שזה means-- אם זה נכון, לעשות את זה, אחר אם אחר. לולאה לא מקבלת פשוט בגרד. לנצח לבצע את הפעולות הבאות. עכשיו אתה אולי לא חושב שאתה יכול לעשות הרבה, מפני שאין הרבה מרחב שבין החלק העליון ו חלק תחתון של פתיחת פיסת הפאזל הזה. אבל תראה Scratch הולך לגדול כדי להתאים חלקי הפאזל רבים כמו שאתה רוצה לדחוס לשם. לולאה נוספת עשויה להיות הביע עם חזרות. אם אתה יודע מראש שאני, " רוצה לעשות משהו 10 פעמים, " רק אתה יכול להגיד לי Scratch לעשות משהו 10 פעמים. ובינתיים, אנחנו יכולים יש לי משתנים. אז הנה שרירותי אחד, זה כתום במקרה הזה, ואת זה הוא סיור סופה. שוב, אתה תמצא את זה מאוד נגיש ברגע שתתחיל הצבעה ולחיצה. אני כבר בשם n משתנה, אבל אני יכל לקרוא לזה מה שאני רוצה, ואני הגדרת את זה כאן, ב דוגמא שרירותית זו, לאפס. עכשיו רואה תכנית כמו שלום העולם הוא לא כל כך משכנע, אז בואו באמת לפתוח משהו שתלמידו לשעבר עשה. תן לי ללכת קדימה, לפתוח את, למשל, זה אחד כאן, עבורו אני אשמח יש מתנדב. בסדר, איך about-- בואו נלך רחוק יותר. כן, בחייך עד. מה שמך? ABBY: אבי. דוד י מלאן: אבי, בחייך עד. אז האם אי פעם שיחקת המשחק הזה לפני? ABBY: מס ' דוד י מלאן: בסדר. דוד, נחמד לפגוש אותך. בואו אליי. ומה הוא תכנות שלך רקע, אם בכלל. ABBY: אני כבר למדתי כמה ++ C. דוד י מלאן: אתה כבר למדת כמה ++ C. ומה המשחק שלך לשחק רקע? ABBY: לא הרבה. דוד י מלאן: אוקיי, אז אנחנו ניקח את זה. אז הנה איך שהמשחק הולך לעבודה. אני הולך קדימה, לחץ על הדגל הירוק, ש הוא כאן בפינה הימנית העליונה. עכשיו קודמך בכיתה נתן לך כמה הוראות כאן. ובעוד רגע, זה אומר "חלל כדי להתחיל." אז קדימה, פגע במקש הרווח. משחק מחשב: פיקאצ'ו. דוד י מלאן: והמטרה היא לתפוס את המזון, כפי שהוא מתואר שם בצד השמאל. ול[ לא ברור] [השמעת מוסיקה GAME] דוד י מלאן: Aww, גם, תודה לך על ששיחק. יש לנו כאן קצת פרידה מתנה בשבילך. יש לנו לחץ כדור CS50, אם ברצונך לבחור. בסדר, טוב לפגוש אותך. תודה לכם שבאתם ומאתגרים. אז יש לנו יותר כדורי לחץ, כל כך בואו נעשה דוגמא אחת נוספת כדי להניע. מתנדב? בסדר, מה דעתך על ממש כאן בחזית. מה שמך? פיליפ: פיליפ. דוד י מלאן: פיליפ. בואו למעלה, פיליפ. אז, פיליפ הולך להיות תיגר עם עוד משחק שאחד מקודמיך כתב כחלק מבעיה להגדיר אפס, נקרא המשחק הקשה ביותר של אייבי. ואנו רואים רק רגע מה כוונה בזה. פיליפ, נחמד לפגוש אותך. מה הרקע שלך? פיליפ: עשה הרבה קידוד. עשה קצת משחקים, יותר מדי. דוד י מלאן: אישור. קיבלתי הרבה משחקים, יותר מדי. ויש לך שיחק את המשחק הזה לפני? פיליפ: לא דוד י מלאן: כל בסדר, אז הנה זה באנו. אני הולך קדימה ולחץ על הדגל הירוק. [משחק מוסיקה] [מוסיקה MC האמר, "U לא יכול לגעת זה"] פיליפ: [לא ברור] דוד י מלאן: [לא ברור] פיליפ: [לא ברור] [צוחק] [מוסיקה MC האמר, "U לא יכול לגעת זה"] דוד י מלאן: [לא ברור] לחרוש דרכו. פיליפ: [לא ברור] דוד י מלאן: קדימה. [מוסיקה MC האמר, "U לא יכול לגעת זה"] דוד י מלאן: בסדר. מזל טוב. [מחיאות כפות] דוד י מלאן: אנו הודעה שבאינטרנט מאוחר יותר, כדי כי אתה יכול להתמהמה עם זה גם. פרינסטון עולה הבא, לאחר ש. אז עכשיו בואו בעצם להמשיך להתחיל מהתחלה, אם אפשר לומר כך, ולמעשה לבנות עד אנחנו יכולים להפריד כמה מהרעיונות האלה ולהגיע למשהו אפילו מורכב יותר עד הסוף. אני הולך לעבור על כאן ואני הולך ללכת קדימה וליצור קובץ חדש. אז שוב, את סט הבעיה ילך אותך דרך כמה מהשלבים הבאים. אבל, כל מה שעשיתי היה ללכת לתפריט הקובץ ואני אמר "חדש," כל כך הרבה כמו מיקרוסופט מילה, או כל תכנית כמו ש. ובואו נלך קדימה now-- ואנחנו יושם "שלום עולם" לפני רגע, אבל בואו נעשה משהו קצת יותר חמוד. אני הולך לעלות לאירועים. ואני הולך לעשות ", כאשר דגל ירוק לחץ. " ואז אני הולך להשתמש, איך נאמר, סניף. אז אני הולך להשתמש מצב "אם". ושים לב כמה ברגע שאני מתקרב אליו, שהוא רוצה לצלם ביחד. אז אני מרפה ושאנעל יחד. ועכשיו אני יכול לעשות משהו מעניין. אם אני לגלול כאן, אני הולך לראות חבורה של בלוקים שלמה. אם אני הולך ל" נתונים "- תן לי להתקרב in-- יש משהו במשתנים. אם אני הולך ל" תנועה, "אתה יכול ככל הנראה לשנות את המצב. אם אני הולך ל" מפעילים "- הו, זה מעניין, אני יכול לבחור מספר אקראי. אז תן לי לעשות משהו עם רק הסתברות כלשהי, רק בגלל ש. אני הולך קדימה, גרור פיסת הפאזל הזה, זה הוא שפחות מ בלוק, כך שזה רק "הוא מספר זה פחות מזה?" אבל אני לא רוצה קוד קשה מספר בגלל שלהיות די חסר טעם. אז אני הולך לגרור את הקטע הזה כאן, ושים לב כמה שיינעל ב, ועכשיו תן לי ללכת קדימה ואומרים "אם המספר שנבחר באקראים הוא פחות משישה, בצע את הפעולות הבאות. " עכשיו למה פחות משישה? מה הסתברות הוא למעשה זה הולך לתת לי, רק באופן אינטואיטיבי? -50%, נכון? אם המספר ששל לנחש באופן אקראי בין 1 ל 10 הוא פחות משישה, ברור שזה אחד, שתיים, שלוש, ארבעה, או חמש. וכך זה הולך לתת לי הסתברות 50% ממה שקורה? ובכן בואו נעשה משהו כמו זה, "לשחק מיאו קול." והודעה, שוב, את פיסת הפאזל גדלה כדי להתאים, כל עוד הצורות שיתאימו. זה מה שחשוב. תן לי ללכת אל Scratch כאן ולחץ על "הצגה". שום דבר לא קורה. האם זה באג? לא, אין צורך. זה יכול להיות רק ש מספר גדול יותר נבחר. אז בואו נעשה את זה שוב. שום דבר. [MEOW] דוד י מלאן: זה מצב. [MEOW] דוד י מלאן: שוב. מס ' [מיילל] דוד י מלאן: אז אם יש לך אי פעם שיחק את משחק, כמובן, שבו דברים קורה באופן אקראי, כמו הרעים באים או לא מגיע למסך, או דברים נופלים או לא נופלים, זה רק בגלל שסופר משהו פשוט כמו שזה קורה. בחר מספר אקראי, ואם זה פחות מערך כלשהו, אולי לעשות את זה או אולי לעשות את זה. אנחנו יכולים לשלב כי למצב. בואו לעשות משהו שונה. תן לי לזרוק את הכל. אתה יכול להיפטר מחומר על ידי רק גרירה אותו לשמאל ולהרפות. תן לי ללכת קדימה ולעשות בלוק לנצח ולעשות זאת מהר מאוד משהו מעצבן. תן לי ללכת קדימה ו אומר "לשחק מיאו קול." אבל אני לא רוצה שזה יהיה יותר מדי מעצבן, אז תן לי לתפוס את הבלוק הזה, "לחכות שני אחת," והודעה אין יותר מקום לזה. אבל אם אתה הולך מספיק קרוב, הוא רוצה ללכת לשם. אז אני מתנתק וזה יהיה לגדול כדי למלא את הבלוק. אז עכשיו, זה הוא לולאה. [מיילל] דוד י מלאן: אני פשוטו כמשמעו עושה את זה לעולם. שוב ושוב. זה פשוט לא נשמע טבעי. תנו לי ללכת קדימה ולשנות את זה כדי לא שני אחת, לשתי שניות וקש Enter. ומה שיפה הוא Scratch שאתה יכול לתכנת באופן אינטראקטיבי. לעשות שינוי, אולי על Enter או לשחק שוב, וזה יהיה פשוט להמשיך. ובכן, עכשיו למה אנחנו לא עושים משהו קצת יותר חמוד? אלא שבמקום לעשות הכל מההתחלה, תן לי ללכת קדימה ולפתוח מראש עשה אחד, שאני מראש אפוי, בשם "חיות מחמד החתול." ואנחנו מתכוונים לכתוב את כל קבצים אלה באינטרנט, והבעיה להגדיר אפס יגיד לך כיצד לגשת אליהם ולפתוח אותם. והודעה, זה די פשוט. אבל מראש, נדמה לי שתפסתי את "לנצח" בלוק, כך שיש לי לולאה. ולאחר מכן יש לי מצב "אם". יש לי ביטוי בוליאני. אז באנגלית, רק מעיף מבט ב זה, במיוחד אם יש לך אף פעם לא לתכנת לפני, רק באופן אינטואיטיבי, מה זה הולך לעשות, תכנית זו? [מציג קהל] דוד י מלאן: אם ללטף את החתול, החתול הולך מייאו, נכון? בגלל "ביטול הסימון לנצח" הוא סמן העכבר נוגע בחתול. אז כדי שיהיה ברור, ואני לא אומר זה כל הפאזל אלה לפני, חתיכות ואת התסריט ש יש לנו בשילוב אותם לתוך, אם אפשר לומר כך, תסריט הוא שם נרדף תכנית, באמת, שייכת לחתול הזה. והסיבה is-- כי הודעה איך זה אותו חתול כאן מודגש, כאן למטה תוכל ליצור חתול שני או כלב או באמת כל דבר שאתה רוצה בצורה גרפית. אתה יכול לייבא משהו מפוטושופ, או כמו, ולשלב משהו אם אתה רוצה לעשות את זה לפרויקט. ומה תמצא, סופו של דבר, הוא שאתה יכול להוסיף סקריפטים, להוסיף חידה חתיכות, לתווים בודדים. אז אלה כולם שייכים ל את החתול הזה. אז עכשיו אם אני הולך קדימה ולשחק תכנית זו, שום דבר לא קורה. אבל הוא פועל. התכנית היא בלולאה לנצח זה, סוג של המתנה למה יקרה? [מציג קהל] דוד י מלאן: כדי ללטף את החתול. אז אם אני מזיז את העכבר שלי לכיוון him-- [מיילל] דוד י מלאן: אז עכשיו אני מלטף את החתול. בינתיים, אנחנו יכולים יש לי סניף כפול. תן לי ללכת קדימה ולפתוח עד לא ללטף את החתול. אנחנו מתכוונים לכתוב את זה באינטרנט, כמו גם. זה קצת יותר מורכב, אבל בלי להגיד אתה יכול לנחש אולי מה שהולך לקרות. [מיילל] דוד י מלאן: חתול הוא מיילל, זמן עתיק ומפואר. אבל תכנית זו היא כמובן בשם "אל חיות מחמד החתול," כל כך ברור, אני רוצה ללטף את החתול. [שואג] דוד י מלאן: אל ללטף את החתול. עכשיו, בואו נסתכל בדוגמה נוספת כאן. אחד זה ייקרא "היי, היי, היי," מסיבות שיהיה ברור, כי ברגע שאני מפעיל thing-- זה [נביחה של כלב ים] דוד י מלאן: מאוד קל לכתוב תוכניות Scratch מעצבן. [נביחה של כלב ים] דוד י מלאן: עכשיו אנחנו לא נלך לפרטי פרטים עם כל אלה, אבל שמתי לב שיש כמה תכונות חדשות כאן. יש משתנה, הנקרא "מושתק", ואז יש חבורה של תנאים. ועכשיו, תן לי רק להקניט אותך באומרו שאם הבחור הזה מקבל מעצבן מדי, אני יכול להכות את מקש הרווח והוא עוצר. בגלל התפקיד שמתנהל על ידי שני התסריטים הללו הוא כדלקמן. אחד מהם עושה נובח כל כמה שניות. האחר אחד רק מחכה בשבילי להכות את מקש הרווח. ואם אני עושה פגע מקש הרווח, זה הולך לשנות את המדינה של משתנה זה, הערך במשתנה זה, זה כנראה בשם "מושתק," אני לא קורא זה משהו משעמם כמו n, אני קראתי לזה מילה באנגלית, "מושתק". מ -1 עד 0 או 0 ל -1. מאמיתי לכוזב או מזויף לאמיתי. ואז אתה בעצם יכול רואה עכשיו, שאתה יכול להיות שני תסריטים, שתי תוכניות הפועלות בו זמנית, ושניהם יכולים להיות יושבים בלולאה עושה משהו. מחכה לאדם לעשות משהו כמו להכות מקש רווח. [נביחה של כלב ים] דוד י מלאן: ועכשיו הוא בדרכו שוב. [נביחה של כלב ים] דוד י מלאן: אז מה עוד אולי אנחנו עושים עם דוגמאות האלה? ובכן, בואו נלך קדימה ולעשות דוגמא עם ספירת כבשים. אנחנו נמשיך את זה בנוסח כאן of-- בואו לפתוח את דוגמא הכבשים. והודעה, ממש כמו לפני, זה אחד, לשמחתי, הוא קצת פחות מעצבן. ברגע שאני מכה לשחק here-- הו לא, זה מעצבן. הוא הולך Baa בהסתברות כלשהי. בואו לשחק את זה שוב. [BLEETING SHEEP] דוד י מלאן: ההבדל היחיד הוא אנחנו כבר שינינו את התחפושת, אם אפשר לומר כך, ואנחנו וחצינו ואומרים מה הוא שהמספר אמיתי. ובכן בואו נלך קדימה ו לקחת את זה צעד אחד נוסף. ותן לי להקניט אותך עם תכונה אחרת אחד כאן. בואו נלך קדימה ולפתוח תכנית בשם אשכולות. כל כך הרבה כמו שאתה יכול להיות אחד ספרייט, שיש תסריטים מרובים, אתה יכול לקבל שני שדונים, ציפור ב חתול, כל אחד מהם התסריט שלהם. וכל אחד מהם יכול פועל בו זמנית. אם אי פעם שמעו מילה "multithreading" מחשב הוא אמצעי "מרובה הליכי" הוא יכול לעשות דברים רבים בבת אחת, ואכן, כך יכול לגרד. ועכשיו שים לב לציפור היא סוג של מטומטם. זה פשוט עושה דברים באופן אקראי, הקפצה מהמסך. ברור שהחתול כבר מתוכנת יש סוג של יכולות המבקשות להתביית על ציפור כי הוא תמיד מצביע עליו. עד שלבסוף, הוא תופס את ציפור בפועל. אז אני לא להתעכב על הפרטים כאן, אבל אתה יכול סוג של הצצה אותה צורות, חלקם "אם" תנאים, חלק ממשתנים, אולי כמה לולאות, הן סופו של דבר עושה את אותו הדבר. עכשיו תנו לי ללכת קדימה ולפתוח משהו אחר לגמרי, להקניט כמה מכם, במיוחד אלה נוחים יותר, מה שאתה באמת יכול לעשות עם זה. אני הולך קדימה ולפתוח אותן כאן. וזה סופר תכנית פשוטה לכאורה, אבל תראה מה קורה כאשר אני- שם לב למה ש קורה כאשר אני פותח את גרסה זו שלו, כאן בדפדפן, scratch.mit.edu. וכשאני לוחץ אדום הגדול הזה כפתור, שים לב למה שקורה. אז מה קורה כאן? יש למעשה מורכבות הרבה יותר קורה מתחת למכסת המנוע, למרות שאני כבר מיושם זה, או בכנות, דן ברדלי יישם כל כך פשוט זה. הוא עיצב חידת Scratch המותאם אישית חתיכה, הידוע בהארכה Scratch, הוא קרא לזה Toggle. ומה Toggle עושה זה שולח הודעה על גבי האינטרנט. ושמסר עצמו נראה קצת לא ברור מאליהם. אבל גם בזה, שתצליח להבין עד סוף הטווח. המסר שהוא בעצם שולח נראה קצת משהו כזה. זה רק טקסט. נסתר. אתה מבין את זה עד ש אנחנו מקבלים את הבעיה להגדיר שבע. זה פשוט שולח הודעת טקסט דרך האינטרנט לשרת. והשרת שהוא, סופו של דבר, מדבר לנורה זו, אשר יש אחד של נורות מפוארות אור אלה בזה ש, עצמו, מדבר לWi-Fi ברשת כאן, שבו מכשיר מקומי מטה here-- וסופו של דבר, זה בעצם הפיכת אור ושהכיבוי. אבל אנחנו יכולים לעשות יותר דברים מעניינים עדיין. שים לב מה דן גם עשה עבורנו. הוא עשה את השדונים מרובים, שכל אחד מן שבו יש תסריט מחכה לקליק. ואם אני לוחץ אדום, זה הולך אדום. אם אני מקבל כחול, זה הולך כחלחל. ירוק, צהוב, כתום. וכל זה קורה על ידי הולך בדרך החוצה אל האינטרנט, לסגת כאן כדי הנורה, לסירוגין. ואם אתה יכול להאמין it-- וזה אולי אחד Scratch המורכב ביותר יש implemented-- מישהו פרויקטים הוא עשה את זה, בהגינות, ביום. וזה היה האתגר שזרקנו את לדן כשראינו שיש לי נורות בינארי, יש לנו שריטה, איך אנחנו יכולים לשלב אותם? ואכן, זו היא בהחלט מישהו משהו בחדר הזה יכול לעשות על ידי end-- של הסמסטר האם הוא נורות ינארי reimplemented באמצעות אותו הממשק שהיה על iPad שלנו ביום רביעי. כך שעכשיו, אם אני באמת לחץ בתוספת לכאן, יש לנו אחד, שתיים, שלוש. אני יכול להכות את 16 ולהפוך את זה אחד על. 128, וכן הלאה. עכשיו, אם כי יש לבד ופוצץ את דעתך, אתה יכול לעשות דברים הרבה יותר נגישים, שאינו כרוך בכל חומרה בהחלט. רק דברים על המסך עצמו. ואכן, מה שרוב התלמידים בסופו של דבר עושה הוא סוג מסוים של משחק, כמה חתיכת העבודה אמנותית, או איזה אנימציה אינטראקטיבית. ואני אומר אחד משלנו מועדפים לא היו זה אחד. ואני חשבתי שאם יכול לעמעם את האורות, אנחנו ניקח הצצה בשלב זה סופי פרויקט מאפס במסקנה. אבל מה שאתה צריך לזכור, כ אני יכול להקניט עם פרט אחד אחרון שאתה, חתך יתחיל בשבוע הבא. שעתי עבודה תתחיל בשבוע הבא. בעיה להגדיר אפס תפורסם CS50.harvard.edu מאוחר יותר היום. ואתה תהיה בירך באפס בעיה להגדיר לעצמו Zamyla צ'אן של CS50, ש מנחה את רוב ערוצים שלנו. אלה הם קטעי וידאו מוטבעים בסטי הבעיה שיחזיק את היד שלך דרך הרבה של הגדרה הראשונית ודרך רבים של החלטות עיצוב אפשריות. אי פעם אם יש לך היה כל כך רגש ש כאשר מרימים את שיעורי בית ותוהה, איפה אני מתחיל? תהיה לה תשובה זה בשבילך. ועכשיו, תכנית סופית מאחד מקודמיך בתשובה לשאלה "מה השועל אומר?" [מוסיקה YLVIS, "מה עושה את FOX SAY?] YLVIS: כלב (שירה) הולך ווף. חתול הולך מיאו. ציפור הולכת ציוץ ועכבר הולך חריקה. פרה הולך moo. צפרדע הולכת קרקור. והפיל הולך צפירה. ברווזים אומרים אליל ודגים ללכת blub. והחותם הולך ow ow ow, אבל יש קול אחד שאף אחד לא יודע, מה השועל אומר? ו דוד י מלאן: זהו זה לCS50. אנחנו אראה אותך ב פאזל יום וביום שני. [מחיאות כפות] [מוסיקה YLVIS, "מה עושה את FOX אומר?"] קריין: ועכשיו עמוק מחשבות, על ידי ךייבן Farnham. היום קבלתי מכה ב פנים עם ספר טלפונים. מבלבל, כמו שאני ב הבית צופה באינטרנט.