[וידאו השמעה] נצחון של -A מתמטי ומיומנות מכאנית הוא אוטומטי חדש זה נהדר מחשבון באוניברסיטת הרווארד. בעיות מורכבות במתמטיקה לשים במכונה בצורה מוצפנת בקלטת נפתרים בצורה מדויקת ב נדרש שבריר רגע של הזמן לחישוב אנושי. שנועד לזרז את כל צורות מחקר מתמטי ומדעי, המוח המכני הענק יעבוד ל חיל הים של ארצות הברית עד סוף המלחמה. [סוף ההשמעה] דוד י מלאן: זה, הוא CS50. העבר היה קסום מקום, אבל אם יש לך אי פעם תהה מה הוא המכשיר ש בהרווארד מרכז המדע, זה אכן חלק מ הרווארד מארק אני, וזה בתצוגה שם עכשיו לשנים רבות בעבר. ומה שתראה משובץ בסט בעיה אחד הוא מבט מאחורי הקלעים על מה שעשה מכשיר, ועושה, מפרופסור הארי לואיס, שנמצא ב המחלקה למדעי המחשב כאן. אז עוד על כך בקצת. אבל היום אנו מתחילים מעבר משבוע שעבר לזה, ואנו נביא אזכור של תצלום אחד כאן זה בעצם די מפורסם. האם מישהו יודע מה זה כאן הוא על המסך? לפחות על פי מיתוס. כן. קהל: הווירוס הראשון. דוד י מלאן: אז זה היה כביכול באג בפועל הראשון במחשב. עכשיו במציאות מילת באג, לטעות בתכנית, היה איתנו לכמה זמן שבעולם הפיזי, וזה היה אחד הראשונים פעמים מתועדות שבו מישהו באמת קטף עש גדול מתוך מארק מחשב השני, לשים אותו בקלסר, ולאחר מכן הקליט אותו כבאג הידוע הראשון בעצם כבר נמצא פיזי. אז כך היה נכנס כי לתורה של היום. הכל מאחרון שבוע הוא זמין באינטרנט. במשאבים מסוימים שאולי אתה לא בהכרח שם לב, במיוחד אם מגיע לכאן באופן אישי. אז אחת מעמיתי ההוראה כל שנה עושה סט הקנונים של הערות, כך שאתה לא צריך לשמור הראש מטה, מנסה לתמלל ביותר שום דבר שעלול לקרות כאן בכיתה. אז מבין שאלו מה שנקרא [? Scribd? הערות] הן באינטרנט, בהחלט השקופיות ו קוד מקור שאנו משתמשים בכיתה. אנחנו עושים את תמלילי טקסט מלאים זמין גם כן. אז אם אתה זוכר במעורפל כמה טווח, ורוצה לבדוק את זה קצת בקלות רבה יותר, מבין שכל של שהוא באינטרנט לחיפוש. כמו גם ערוצים כמו גם. ואכן, היום אנחנו מתחילים להסתכל על שפת תכנות נמוכה רמה, עד מהרה נודע לנו כC, וזה קל מאוד לסוג של איבוד אחרי כמה פשוט זמן רגעים, ואז סוג של פלא איך אנחנו באמת צריכים עוד קצת דוגמא מורכבת מהפשוט ביותר. וכך להבין שנציע בדובדבן לבחור בכיתה מסוימת של דוגמאות מייצגות, אבל להבין שכל כך הרבה יותר הוא גם זמין באינטרנט, כך שאתה יכול לעבוד דרכו בקצב שלך, עם זאת אתה הכי נוח. אבל עזבנו את עם תוכניות שהיו רק זה. אז אני לוחץ על הדגל הירוק, ומה בתכנית זו עושה? אומר, שלום, עולם. זה הופך את החתול אומר שלום בעולם הקטן שלו בצד השמאלי העליון של ממשק המשתמש של Scratch. אבל התחלנו להציג כמה טרמינולוגיה בשבוע שעבר. וכך, דברים כמו זה שקראו מה? מה יכול להיות המונח הכללי לזה? כן. שיטה או הצהרה. בטח, זה פעולה. לעשות את זה. ובכל זאת היו צורות אחרות לגרד, מלבד אלה שנקרא הצהרה, הם היו גם דברים כמו זה, שבו אנו נקראים מה? כן. אז לולאה. ובמקרה הזה, הדבר הזה חזרות, כמובן, 10 פעמים. יש לחסום לנצח. יש כמה אחרים. והיום אנחנו הולכים לראות איך לתרגם את זה לעולם מודרני יותר, אם תרצה, למרות שזה הולך להופיע במבט הראשון להיות הרבה יותר מסתורי. אבל אלה היו אכן לולאות. ואז יש לנו דברים כמו זה, שהייתה צורה זו, ושאלו מהות שאלות. והתייחסנו לאלה כמו מה? קהל: ביטוי בוליאני. דוד י מלאן: כן. ביטוי בוליאני. משהו שהוא או או אמיתי שקר, כן או לא, אחד או אפס, עם זאת אתה רוצה לראות את העולם. אבל קראנו בוליאנית אלה ביטויים, ואנחנו תקע אותם לתנאים, או סניפים. ובעולם של שריטה, הכל יפה משתלב במונחים של צורתו, אם זה הגיוני הגיוני לעשות זאת, אבל אתה לא צריך לעצור בפשוט עושה דבר אחד על תנאי, אתה יכול לקבל פתגמי מזלג בכביש ולעשות או שאם גם זה המצב נכון או לא. ולאחר מכן, כפי שתראה, אם יש לך כבר, אתה יכול אפילו קן אלה בלוקים. אז Scratch גדל כדי למלא את הצורות שאולי אתה רוצה להכניס לתוכו, כך שאתה ממש יכול להביע ביותר כל היגיון שאולי אתה רוצה לעשות. עכשיו כמה מילות של הודעה לשניהם כאן וניו הייבן. אז חתך מתחיל היום. כתובת האתר לכך היא על המסלול של אתר, למי שלא מכיר. סעיפים יהיו הזדמנות להיפגש בהרבה יותר אינטימי סביבה מ [? סנדרס?] מאפשר, עם 10 עד 20 חברים לכיתה עם עמית הוראה במסלולים שונים, וצעדים שונים, אם אתה כל כך לבחור. אכן ההצעות כמובן חלקים שונים עבור אלה פחות נוחים, יותר נוח, ואי שם באמצע, והתפקיד של אגודל כאן, הוא אין הגדרה רשמית, אבל אם אתה פחות נוח, אתה סוג של יודע את זה. אתה קצת אמיץ על רעיון של דריכה רגל, אולי, חזרה בכיתה, או מראה עד שבבין הסעיף. אם אתה כבר תכנות מאז ש היו בן שש, נוח יותר, אולי לך. ואם זה סוג של הטלה-עד, זה בדיוק מה שבין הוא אמור להיות. עכשיו, בינתיים, לכיתה בגודל זה, זה לוקח אותנו די הרבה זמן לסעיף כולם, כך יש לנו מה שנקרא, סעיפי סופר, מתקרבים זה בסוף שבוע ותחילת השבוע הבא, אז תסתכל באתר האינטרנט של הקורס לאלו שאינם רחבים כמובן, וגם צילם עבור אלה שלא יכול לגרום להם. וחתכים עצמם יתחילו בשבוע שלוש אפס מדד CS50. בעיה להגדיר 0 כבר באתר האינטרנט של הקורס. ומבין שיש לך תשעה ימים מאוחר בסמסטר הזה. אז זה שדרוג מאחרון שנה, כאשר היו לנו חמישה ימים מאוחר. אז אם אתה תוהה, יש לנו תשעה סטי בעיה. יש לך תשעה ימים מאוחר, כל אחד מהם אתה יכול רק להוציא אחד בשבוע ב. שהיעילות הופכת את כל הבעיה קובעת עקב יום שישי, אבל המטרה היא לשים קצת קצת לחץ פסיכולוגי עליכם לנסות להגיע דברים ביום חמישי כי כפי שאתה תגלה מהר, לטוב או לרע, רוב כל דבר בעולם התוכנה בסופו של לוקח הרבה יותר זמן ממה שאתה מצפה. אז לשקול את זה סוג של הזדמנות לעזור את עצמך למקד יום חמישי, אבל להתנחם בזה, כן, הכל נובע שישי. ואם אתה שולח אותם ב יום חמישי, זה נפלא. אין נקודות בונוס או נוספת אשראי לפגישת המועד האחרון ש. זה אמור להיות קב בלבד. ושעתי עבודה, שניהם כאן ובניו הייבן, באדם, אם ברצונך להיפגש עם כל אחד מהקורסים שלנו הוראת עמיתים ורשויות אישורים לקבלת סיוע. בסדר. אז עכשיו, בואו נעשה את זה יותר אמיתי. ולרגע שזה הולך להתחיל כדי לקבל קצת יותר מסתורי, אבל מאוד במהירות ביום שישי ו בשבוע הבא אנחנו נהיה מסוגל לעשות כל כך הרבה יותר מ שיכולנו עד כה בגרד. אז הצגנו קוד אחרון שבוע, אם כי pictoral. זה היה חלקי הפאזל. ואנחנו באופן רשמי שזה משהו שנקרא קוד מקור, אבל היה נראה? ובכן, זה נראה קצת משהו כזה. ואכן, רק כדי סוג של להקניט בו אנחנו יכולים ללכת עם זה. אני הולך קדימה ו לפתוח את חלון כאן, ואני רק הולך לבחור קובץ חדש. ואני הולך לשמור קובץ זה כמו משהו כמו נקודת שלום ג. עוד על בחירה של מילות ברגע. וכך אולי מישהו ללכת על כתיבת תכנית. כולל אני סטנדרטי / h נקודת O, int ראשי חלל, ולאחר מכן פתוח סד מתולתל, קרוב סד מתולתל, printf שלום עולם פסיק, n לוכסן, פסיק, שמור, עשה. אוקיי. שכתבתי הראשון שלי תכנית, אבל זה הולך להיות underwhelmed מאוד כי כשאני ממש להפעיל את התכנית, כמובן, על ידי הכתיבה הראשונה לעשות שלום, ולאחר מכן dot לקצץ שלום, ואנחנו לעבור את זה בפירוט רב יותר ברגע, זה כל מה שהיא עושה. לא פופ פתוח כל חלונות. זה לא עושה כלום במיוחד מפואר. כל שהיא עושה היא מה שאמרתי לו ל לעשות, אבל איך אנחנו מגיעים לזה? ואיך אנחנו בונים על זה? ובכן, בואו להציג כמה מושגים שונים כאן. אז אחד, אנחנו עומדים להתחיל באמצעות תכנית בשם מהדר. מהדר קיים עבור Mac OS, Windows, לינוקס, כל מספר של מערכות הפעלה, ואנחנו בקרוב נכיר לך סביבה שיהיה להשתמש, אבל מהדר הוא רק כללי טווח פיסת התוכנה שלוקח את קוד מקור ו מייצר קוד אובייקט מזה. במילים אחרות, אם אתה יש לך כמקור קלט קוד, משהו כמו מה שאני רק הקלדה, זה סופו של דבר מייצר קוד אובייקט. וקוד אובייקט הוא באמת רק דרך מפוארת של אומר שזה פלטי אפס של ואחד של. במילים אחרות, מקור קוד, למרות שזה הולך להיראות קצת מסתורית, וקצת פחות ידידותי מסריטות במבט ראשון, זה לפחות משהו כי אנחנו בני אדם יכול להבין. זה סוג של נראה ונשמע כמו אנגלית למרות שזה מאוד תמציתי. בעוד תכנות באפס של ו של אחד, כקודמינו היינו צריכים לעשות, לפני כמה שנים, לא היה אתגר במיוחד כיף. ובכל זאת, זה מה ש מחשב עדיין מבין. אז מהדר מקבל אותנו מ קוד המקור להתנגד קוד. זה כמו פתיחת קובץ עם מהדר, וכאשר אתה שומר אותו, אתה מקבל אותם אפסים ואחדים. אז אנחנו תראו איך לעשות כי ברגע. אבל בואו עכשיו תנסה לספק לגשר בין בשבוע שעבר וזה, כך שגם כאשר אנו נתקעים על דברים כמו סוגריים מסולסלים, ונקודה-פסיק, וסוגריים, ו כל אלה מעניינים מהבחינה האינטלקטואלית היבטים של תכנות, שמאוד מובן להכשיל את אנשים בשלב מוקדם, להבין שכל הרעיונות היום, הם אותו הדבר כמו שעבר. אז אחרון, שראינו בדוגמה זו כאן, תכנית שלום העולם. ובכן, החל מיום, אם אנחנו רוצים כדי ליישם אותה התכנית, זה הולך להיראות משהו קטן כמו זה. ונסביר מה לפני int הארוך, ועיקרי, ומבוטל, וכל זה הוא, אבל לפחות אני רואה כאן כבר שלום העולם המוכר. בינתיים, דברים כמו פונקציה, להגיד שלום, הוא מאוד פשוט הולך להיות הצהרה פשוטה מאוד כמו זה. Printf שלום עולם, עם כמה מצטט, עם קו נטוי, עם נקודה-פסיק, אבל עוד על כך שביבואו. לולאות, בינתיים, זה לולאה ש, כמובן, אומר שלום עולם לנצח, וזה אחד הולך להיראות קצת מוזר מאשר שבעבר, אבל אם אני אומר משהו כמו, תוך נכון, אני לאחר מכן ניתן להדפיס את שלום העולם שוב ושוב ושוב ושוב. ואז כמו שאתה יכול סוג של להתחיל להסיק כאן, אמנה זו של שימוש סוגריים מסולסלים הוא סוג כמו מחבק קו משונן של קוד שם. קו printf של קוד כמו חתיכת הפאזל הצהובה למעלה. אז אנחנו לא הולכים להגיד לנצח, אנחנו הולכים להגיד בעוד אמיתיים, אבל אנחנו אראה למה שהוא בקצת. בינתיים, אם יש לנו לולאה כמו זה, שבו אתה חוזר על משהו סופי פעמים מספר, זה אחד יותר מדי זה הולך לקחת קצת זמן להתרגל ל, אבל זה הולך לומר לint אני מקבל אפס, אני פחות מ -10, אני ++, ולאחר מכן printf שוב. אבל יש הולך להיות דפוסים. ועבור אלה מכם מוכרים עם AP מדעי מחשב, או ג'אווה, או כל מספר של שפות אחרות, כמעט כל המבנים הללו עד כה צריך להיראות בעיקר מוכר. אז משתנה. אז הנה קטע Scratch פשוט ש מגדיר משתנה בשם מונה לאפס, ואז לנצח אומר הדלפק, ו אז זה משנה את הדלפק אחד. אז זה מתחיל עם אפס, ואז אחד, שתיים, שלוש. ובכן, איך ייתכן שאנחנו מציגים ב שפה זו חדשה קצת דומה? דלפק int שווה אפס, בעוד אמיתי, ש הוא שאותו רעיון מלפני לעשות משהו לנצח, ואני רק הולך לprintf. ועכשיו זה מתחיל להיות קצת מוזר, אני אחוזים, אבל עוד על כך שיבואו, אבל הרעיונות האלה הם בדיוק אותו הדבר. אנחנו רק עכשיו צריכים לדבוק התחביר שהמחשב הולך לדרוש מאתנו. ביטוי בוליאני, משהו כמו פחות מ SX y, או x פחות מ y, וy פחות מ z. זה הולך להיראות משהו קטן ככה, עם סוגריים רק כמו במתמטיקה למידה טובה רק להבטיח שסדר פעולות הוא כפי שאנו מתכוונים. ועכשיו, תנאים. אז אם x פחות מ y, אומרים x הוא פחות מ y, אחר אם x גדול מ y, אומר x גדול מ y, אחרת מבחינה לוגית, x חייב להיות שווה ל- y. אז אתה יכול ליישם משהו כזה בגרד, או אולי אתה מיישם זה בתחביר זה. ושוב, הסוגריים המסולסלים הם סוג של נותן לנו באותה צורה כמו פאזל חתיכות, אבל התחביר, עכשיו, אולי מתחיל לעקוב אחרי כמה דפוסים. אז, מה זה נותן לנו כאן? אז אנחנו שוב לאחר מכן בתכנית העיקרית שלנו. בואו למעשה, עכשיו, לעשות משהו עם זה. אז בזה הראשון קו שאנחנו חדים ראו כוללים, אני סטנדרטי / פלט, h נקודה, ו אז כמה זווית מוזרה סוגריים מתחת לזה. עיקרי int ולאחר מכן printf שלום עולם חלל,. אז פשוט לקחת צעד. מישהו שמעולם לא תכנת לפני, לפחות להסביר אחד מהקווים האלה. באמצעות אולי חלק מ הז'רגון של שבוע שעבר. מה הוא printf, למשל? כן. קהל: [לא ברור] דוד י מלאן: כן. זה פונקציה, או הצהרה, מהטרמינולוגיה של השבוע שעבר. וזה פעולה שעושה משהו. עכשיו בפונקציה זו, או הצהרה זו, עושה זה מופיע לקחת איזשהו קלט? ובאיזה מובן עושה את זה נראה לקחת קלט, אם כן? קלט, מה אני מתכוון? כן. קהל: [לא ברור] דוד י מלאן: כן. אז גרד את כמה חתיכות הפאזל שבו אתה יכול parametrize זה. אתה יכול לספר לי חוזר לחסום כמה פעמים לחזור, כך שהיה קלט של מיני, ובדיוק כמו Scratch היה מציין מיקום לבן קטן למספר שתקליד ב, כך גם אנו משתמשים בזה סוגריים עולם טקסט לתת לנו שצורה עגולה שלתוכו אנו יכולים לחבר הקלט שלנו. אחרי הכל, לפני עשרות שנים כאשר שפה זו, הנקראת C, הומצא אף אחד צפוי שזה אחד מאיתנו, כמה שנים מאוחר יותר אלה, הייתי רוצה פונקציה שאומרת שלום. נכון? זה יהיה נחמד אם היו פיסת הפאזל, או מילות מפתח, זה נקרא שלום, ש פשוטו כמשמעו, רק אומר שלום. אבל אנחנו לא צריכים את זה. אנחנו יכולים להיות משהו הרבה יותר נמוך רמה, כמו הדפסה הגנרית הפקודה, שלוקח את הקלט, והדפסים מה שאנחנו רוצים. אז שם לב עכשיו הדפוס שיתחיל לצוץ. פתח סוגריים, קרובים סוגריים הוא כנראה מחבק את הקלט, ואז אני רואה כפול מצטט בשני הקצוות. יש עדיין קו נטוי מוזר n, אבל אני מקווה שעכשיו אתה יכול להתחיל לדמיין לפחות ש printf הוא לוקח בצורה כלשהי של קלט. לא ידידותי למשתמש כמו לגרד, אבל זה רק כמו שמחובר בחלק הערך שם. בסדר, עכשיו בואו למעשה לעשות משהו עם זה. אז כמה מכם אולי יודעים מ יש קניות בכיתה לפני, שוחחתי עם חברים, כי במשך שנים רבות היינו משהו שנקרא מכשיר CS50. זה היה מונח המתאר טכנולוגיה נקרא המכונה הווירטואלית, ש היא פיסת התוכנה ש קודמים היו להוריד את אתר האינטרנט של הקורס בחינם. הם היו גם להוריד חלק בחינם תוכנה בשם hypervisor, משהו שנקרא כמו VMware, או VirtualBox, או כל מספר של כלים אחרים, ועליהם מק או PC כל מה שהיה להם מחשב או בשנה שעברה ובשנים האחרונות, הם יכפיל לחץ על סמל כדי להפעיל את התוכנה נקרא hypervisor. ואז בתוך התכנית ש הם היו פותחים את מכשיר CS50. וההשפעה הייתה ש אם קודמו שלך היה מערכת הפעלת Mac OS או Windows, הוא או היא לאחר מכן לאחר מכן היה לי חלון חדש עליהם מסך פועל בסביבה של CS50. אז מכונה וירטואלית מאפשרת לך להריץ אחד מערכת הפעלה הפנימית של אחר, וזה בדיוק מה שעשינו. לאורך רובנו כמובן להשתמש במערכת הפעלה הנקראת לינוקס, במיוחד אובונטו לינוקס, וזה היא דרך נחמדה מאוד בשנים האחרונות של כדי לוודא שכולם שבקורס פשוט הייתה באותה הסביבה. ואתה יכול להשתמש בכל סוג של מחשב שאתה באמת רוצה. בין החסרונות, אם כי, היו זה היה כמו שתי ג'יגה-בייט להוריד את הדבר הזה. זה לא בהכרח עובד סופר גם על אנשים שמחשבים שאולי רק הייתה הופעה או כך של זיכרון RAM, או לא גיגה הרץ רב מדי של מהירות מעבד, וכך בשנה זו, ל זו ומסיבות אחרות, יש לנו כבר מעבר לסביבה זו. IDE CS50 מה שנקרא, שהוא המבוסס על תוכנת קוד פתוחה, ופלטפורמה נתמכת כי חברה בשם Cloud9 תומך באירופה, ש מאפשר לנו יש בעצם מדויקת שאותה סביבה כמו ב שנים עברו, אבל בענן שנקרא. אז מה הוא הענן? כנראה שלחצת הסמל שלו ב- Mac או במחשב האישי שלך. מהו הענן? כן? קצת יותר חזק. כן. זה פשוט חבורה של מחשבים במקום אחר כי נתוני בחנות וברח תוכנה וכדומה. אז זה באמת רק למילת דה יורה לתאר [? פנויים להשכרה?] מחשבים שגרים במקומות אחרים. שאתה, בעצמך, לא בעלים בהכרח. לכן, כאשר הנתונים שלך, או שלך תוכניות, נמצאות בענן, זה רק אומר שזה על מישהו של אחר מחשבים במקום אחר, ולא, סביר להניח, עליך מחשב נייד או שולחן עבודה פיזי. ואז זה מה שCS50 IDE עכשיו הוא. מכאן ואילך תלכו למסוים כתובת אתר שיכיר לך ל, בבעיה להגדיר 1, בהמשך שבוע, שאז, על כניסה, אתן לך סביבה זו. והיו הרבה סריטות כמו כמה פנלים שונים מעורבים, כך גם IDE של CS50 יש בדיוק את זה. בצד השמאלי העליון כאן, אתה הולך לראות דפדפן קבצים מוכר. אז כל אחד מהקבצים ש הכניס לתוך סביבה זו הם פשוט הולכים להיות רשומים שם. קבצים ותיקיות. בחלק העליון ממש כאן, אתה הולך לראות מקום שבו בעצם אתה יכול לכתוב את הקוד שלך. בתחילה ב- C, מאוחר יותר ב טווח בPHP ו- JavaScript, ואולי לסופי פרויקטים, רובי או Java או Python או כל מספר של שפות הם נתמך בסביבה זו. זה בכלל לא קשור לCS50 במיוחד. ולאחר מכן בפינה התחתונה כאן, במיוחד עבור אלה נוחים יותר, יש לך משהו נקרא חלון מסוף. וחלון מסוף זה מאפשר לך לבצע כל פקודה שאתה רוצה בסביבת ענן זה. זה מאפשר לך להתקין כל תוכנה נוספת שאתה רוצה, כי יש לך מה שנקרא שורש, או מנהל הרשאות. אז במילים אחרות, למרות שזה מתארח סופו של דבר בענן, ולמרות שיש לנו פישט אותו במידה מסוימת כברירת מחדל, פשוטו כמשמעו, החדרת, תודה לדן Armendariz, ודינו, ודן ברדלי בצוות של CS50 על עבר חודשים רבים, פחות נוח מצב שמסתיר הרבה הסחות דעת בתחילה מבלבלת. הכל קיים ל מייצג מערכת מחשב טיפוסית שיהיה אפשר להשתמש בעולם האמיתי. אז מה עושה את זה כל המשמעות, ו מה אנחנו יכולים בעצם לעשות עם זה? בואו בעצם להציץ בתכנית. אז אני הולך לפתוח את סביבה בפועל כאן, שהוא רק שלנו Chrome דפדפן, שיכול להיות בפיירפוקס, יכול להיות Internet Explorer, או כמה דפדפן אחר גם כן. זה מלא הוקרן כאן לרגע. ואני רוצה להקניט למעשה מלבד מה שתכנית זו הייתה. אז בואו נסתכל, על ידי התקרבות בעד ראש הדף, במה שעשיתי, ואיך הגיע לכאן. אז הנה אלה מדויקים אותו שורות קוד. אז זה ההצהרה, כפי שהזכרת קודם לכן. הפונקציה שאומרת שלום. הסוגריים המסולסלים, על קו ארבעה וקו שש, ככל הנראה סוג של מעטפת קו שכדי לקשר את זה עם המהות של התכנית שלי. אז אכן, עיקרי מילת מפתח זו, זה שם למעלה על קו שלושה, אתה יכול לחשוב על זה כשווה הערך של שכאשר הדגל ירוק לחץ, לחסום בגרד. אז זה כל מה שיש לנו כאן, הוא כאשר דגל ירוק לחץ, הדפסה, או אומר, שלום עולם. אבל בואו ניקח ניחוש, עכשיו, במה ש קו הראשון, מסתורי יותר זה, הוא. שארפ כולל, זווית פתוחה הסוגר, אני סטנדרטי / h נקודת O, לסגור הסוגר זווית. מה שהוא עושה אולי, במיוחד אם אתה כבר מתוכנת לפני בשפה אחרת. כן? קהל: [לא ברור] דוד י מלאן: כן. בדיוק. אז זה נותן לך גישה ל ספרייה, כביכול, של פונקציות. וספרייה של פונקציות היא פונקציות שמישהו אחר כתב, או לאחרונה או לפני זמן רב, כך שאתה לא צריך להמציא את הגלגל מחדש. לדוגמא, אנחנו לא צריך לדעת, בשנת 2015, איך לכתוב קוד שמעבירה דמות על המסך שלי. מישהו אחר חשב ש עם פונקצית printf כך שאני יכול למיין של מופשט מזה, או שכבה על גבי או שלה קוד, ועכשיו רק לקחת מובן מאליו שכל תכנית שאני כותב ניתן להדפיס משהו על המסך. אז השורה הראשונה זה שם בצעד אחד כולל את קובץ הכותרת שנקרא לספרייה סטנדרטית. אז תראה, השפה ב שאנחנו עובדים עכשיו הייתה בספרייה רגילה עם המון פונקציות. Printf הוא אחד מהם, ו שהשורה הראשונה של קוד פירוש לתת לי גישה ל אלה פונקציות, כדי ש לא צריך להמציא מחדש את הגלגל ש. עכשיו בואו נלך לחלון התחתון ולעשות בדיוק מה שעשיתי לפני. לפני רגע, כשהייתי בדהרה באמצעות הקוד, להקליד אותו בפעם הראשונה, אני מהר מאוד הקלדתי, לעשות שלום. מה היה כל זה היית לנחש? מה אני עושה? כן? לא חשוב. זה בסדר. כן. קהל: מעבד זה. דוד י מלאן: כן. זה פשוט היה קומפילציה זה. נכון? גם אם זה לא מוכר לחלוטין לך, זה יפה כמו אנגלית. זה בהחלט לא אפסים ואלה, כך אני עדיין צריך להפעיל אותו באמצעות שנקרא תכנית, מהדר, שהולכת לקחת את זה כקלט ופלט לייצר. ולפחות לעת עתה, ב סביבה זו לינוקס, אבל זה לא תנאי מוקדם, זה בדיוק איפה נתחיל, אתה בדרך כלל אינטראקציה עם מערכות מחשב כמו זה על ידי שורת הפקודה שנקרא. אז עם מהבהב מהיר והמקלדת שלך, ולא כל כך הרבה בעכבר, ולא כך חלונות וסמלים ותפריטים הרבה, ולא כל מה שהוא טקסטואלי. ולמרות שזה מרגיש, בהתחלה מבט, אולי, כמו צעד אחורה, זה בעצם הרבה יותר דרך רבת עוצמה והבעה של שליטה במחשב במיוחד כמו שאתה, את עצמך, להיות יותר נוח מפחות. זה הולך כדי לאפשר לך לעשות הרבה יותר דברים מאשר רק מה מיקרוסופט או אפל מאפשרת לך לעשות עם מערכת ההפעלה הגרפית שלהם. לכן, כאשר אני על Enter, עכשיו, שום דבר לא קורה הפעם כי כנראה שלום תכנית מעודכן. ומה היה הפקודה רצתי אחרי זה? דוט לקצץ שלום, ושלום עולם. עכשיו בואו ניקח צעד לגבות רק לרגע. מתברר שהופכים את שלום הוא רק דרך פשוטה של ​​עריכת תכנית. בואו רק להציג חתיכת ז'רגון אחד, אבל אז להתרחק מזה, מכיוון שזה לא כל מה שהמעניין למטרות של היום. מהדר אנחנו הולכים להתחיל להשתמש ב נקרא קלאנג, לשפת C. וזה תכנית שמנוהלת רק כמו שעשינו בשורת הפקודה יש. ולכן אם אני רוצה לקמפל תכנית ש כתב בקובץ בשם שלום נקודה ג, אני ממש פשוט להקליד צלצול ג שלום להיכנס. המצחיק הוא, מסיבות היסטוריות, אם אני לא לציין את שם התכנית כי אני רוצה פלט, אם אני לא לציין שם קובץ לאפסים האלה ואלה, מאוד מוזרים לפני שנות אמנה אומצה שבו הרגיש סוג של תשובה טובה בזמן, גם בואו רק באופן שרירותי לקרוא התכנית ראשונה שלקמפל את נקודה. מגיע ראשון באלף-הבית. מתוך, זה הפלט. אז אנו קוראים לתכנית כברירת מחדל נקודה החוצה. וזה בסדר, כי אם אני רוצה להפעיל את התכנית בטקסט זה מבוסס סביבה, אני פשוט להקליד נקודה לקצץ נקודה החוצה להיכנס. וזה היה רץ בדיוק כמו קודם. אז בואו לראות שממש מהר. אז אם אני חוזר לי קוד המקור בCS50 IDE, ואני במקום לעשות את זה, צלצול שלום עריסה ג להיכנס, שום דבר לא נראה הודעה לקרות, אבל כמעט תמיד ב סביבה זו לינוקס, כאשר שום דבר לא נראה רע לקרות, ש אומר משהו טוב שקרה בפועל. אם אתה לא רואה את שגיאה הודעה, כל היא כנראה כן. ואכן, אם אני עכשיו עושה נקודה לקצץ נקודה מתוך להיכנס, אני כבר לרוץ אותה התכנית שלי. עדיין יש לי את תכנית שלום מוקדם יותר כי אכן, זה הולך להיות כל כך הרבה יותר נחמד רק הקלד לעשות במקום לזכור לחשים של אלה פקודות, אבל בואו נראה איך אנחנו אולי לשפר את זה, בכל זאת. אז, זה הפקודה לקמפל את הקוד. זה הפקודה לרוץ הידור קוד לאחר מכן. איך אני יכול לציין שם קובץ? ובכן בואו פשוט להציג חתיכת ז'רגון אחד יותר. כשאתה בזה סביבה מבוססת טקסט, אתה הולך רוצה לציין דברים בשם טיעוני שורת הפקודה. וזה רק דרך מפוארת של אומר, מילות אחרות בפקודה ש לצבוט את ההתנהגות של כל מה ש תכנית שאתה מפעיל. אז במיוחד התכנית אני פועל, על ידי הקלדת שם הצלצול, היא התכנית בשם קלאנג. אז זה או בית הספר הישן מקבילה של לחיצה כפולה ב- Microsoft Word או הסמל של כמה תכנית. אני במקום פשוט להקליד את שמה, אבל בגרסה זו של הפקודה, אז יש לי מרחב o מקף שלום שלום חלל הנקודה ג. אז גם אם יש לך אף פעם לא שיחק בעולם הזה לפני, פשוט לקחת ניחוש מה אין o מקף שלום לעשות? או מה זה אומר לי צלצול לעשות? כן. קהל: [לא ברור] דוד י מלאן: כן. זה פשוט קובע פלט של הקובץ להיות שלום במקום מטופש נקודה החוצה. ואכן, בואו ננסה את זה. אז אם אני עכשיו לעשות, ראשון בואו נעשיתי את זה, שלום מ 'r. זה להסיר. וזה הולך לומר להסיר קובץ רגיל שלום, ש הוא שלא לצורך מסתורי, אבל זה פשוט אמצעים לעשות רצונך למחוק את הקובץ, ואני מקליד y עבור yes. ושים לב, אם היית מעיף מבט בראש עזב, זה לא ייעלם משם. עכשיו תן לי לעשות o מקף צלצול, ו אני הולך קדימה ולעשות שלום, בכל כמוסות, שלום הנקודה ג. עכשיו, אם אני עושה את הקו נטוי נקודה שלום, מה אתה מצפה? אולי זה מקרה רגיש. אולי זה לא. בוא נראה. אין כזה קובץ או תקייה. ואנחנו סוג של יכולים לרמות על ידי רק מסתכל על פינה שמאלית עליונה. מה עשה לי ברור ש להציל את התכנית כ? כל כובעי שלום. אז אכן, זה הולך כדי לעשות את הבדל. אז עכשיו שלום העולם הוא חזרה. עכשיו זה בסדר גמור וטוב, וכל-נפש האלחוש מאוד, לסוג של להסתבך באלה פרטים, אבל להבין אותם זה טוב. יותר ויותר להקליד את אלה לחשים ארוכים הוא לא הולך להיות במיוחד , כך שאנשים כיף בעולם המציא תכנית אחרת, לפני כמה שנים, בשם לעשות, כי די פשוט מאפשר לך להקליד איפור, שם התכנית אתה רוצה לעשות, ולעשות הוא חכם בכך שהוא ייראה ב התיקייה הנוכחית, aka ספרייה, ואם יש לך קובץ בשם שלום הנקודה ג, כי הוא הקובץ זה לקמפל בשבילך לתכנית בשם שלום. אז זה הרבה יותר פשוט דרך של עושה את הפקודות סתומות יותר שעשינו קודם לכן. ויש לנו מוגדר מראש CS50 IDE לדעת שהוא היה אמור לעשות o מקף ומספר דגלים אחרים, או טיעוני שורת הפקודה, שנראה לפני זמן רב. אבל בואו עכשיו בעצם לעשות משהו מעניין יותר. פשוט להקליד את שלום עולם כל הזמן הוא לא כל כך משכנע. אז תן לי ללכת קדימה ושינוי תכנית וזה אומר, שלום דוד. עכשיו אני הולך לרדת כאן. אני הולך קדימה ולעשות שלום. ושוב עכשיו אתה רואה עושה הוא מראה לך את כבר רצף של פקודות שזה עושה כי אנחנו כבר מוגדרים מראש את זה ככה, אבל אנחנו לא צריך לדאוג לעת עתה מה הוא עושה אחר ממה שהיא נקודת איסוף לקצץ שלום, שלום עולם. מה הבעיה? כן. קהל: [לא ברור] דוד י מלאן: כן. אז, טעות noobie. אני שם לב שזה סופר עדין, אבל הכוכבית כאן, בכרטיסייה, רק אומר שאתה לא הצלת אותו, ודפדפנים ותוכניות אחרות לעשות את זה לפעמים. אז של שליטה או הפקודה ים צריך לשמור אותו. עכשיו תנו לי ללכת קדימה ולהפעיל מחדש את התכנית. קומפילציה מחדש. ימין, כך שזה תהליך רב שלבים. אף אחד מהם הוא מורכב במיוחד, אבל כל פעם שאנחנו לשנות את הקובץ, אנחנו צריכים לשנות את התוצאה כך אפסים ואחדים, וקו נטוי נקודת שלום. וואו. אז זה מאוד משעמם שאנחנו פשוט הדפסנו את זה. בואו נעשה את הדברים קצת יותר דינמי, עכשיו. ובכן מתברר, שאוהבים שריטה, C תומך משתנים. ומתברר אם אתה רוצה יש משתנה שחנויות, לא מספר כמו ש בדרך כלל עשה עם שריטה, אבל כמו מילה, או ביטוי, או שם, אתה ניתן לציין משתנה להיות מהטיפוס String. אז אנחנו תראו יותר של אלה ברגע, אבל מסתבר שC, ו הרבה שפות כמותו, יש סוגים מסוימים מאוד של משתנים. זה לא בדיוק כמו אלגברה, בו אתה מקבל x, y, z ו ואלה הם רק תמיד מספרים, בשפת תכנות אתה יכול לאחסן מספרים, אתה יכול לאחסן תווים בודדים, אתה יכול לאחסן את כל מילות, אתה יכול לאחסן תמונות שלמות, קבצי קול כל, וכדומה. אז אנחנו צריכים לציין מה סוג המשתנה שלנו הוא. ועל ידי אמנה אני הולך לקרוא לשלי של משתנה רק בגלל שזה תמציתי, והים עומד על מחרוזת. ואז אני הולך לחנות בתוך משתנה זה, בדיוק כמו עם שריטה כאשר אני משתמש בבלוק הסט, אני הולך להשתמש ב מפעיל משימה בC, שיפה מספיק הוא שווה לחתום, אבל סימן השוויון עושה את זה. הוא נע משהו מהימין ל בצד שמאל של הביטוי. אז מה שעשיתי, להיות ברור ב קו חמש, הוא כבר הצהיר משתנה. כבר אמר לי את המחשב, תן לי זיכרון למשתנה, קורא לזה זה, ויודע מראש שאני הולך להיות לשים מחרוזת בזה. ומחרוזת היא פשוט רצף של תווים. זה מילה, או ביטוי, או סעיף, אבל זה רצף של תווים. זה לא מספרים. מה מחרוזת אני הולך להיות מכניס לתוך משתנה ש? ובכן, כנראה לצטט סוף ציטוט, "חנה". עכשיו שם לב לדפוס שהוא מתעורר. יש יד שמאל ביטוי. יש יד ביטוי נכון, מופרד על ידי סימן השוויון. ופשוט לקחת ניחוש, אם לא מוכר בכל זאת, עם מה שהוא עושה פסיק. מה זה כנראה עושה לנו? כן? קהל: [לא ברור] דוד י מלאן: כן. זה רק סיום הקו. נכון? המחשבים רוצים להיות בוטה אמר, פשוטו כמשמעו, מה לעשות. כמו חמאת הבוטנים ו דוגמא כריך ריבה, אם לא תציין בדיוק מה שאתה מתכוון, זה יכול להיות שמאל לשיפוט או שגיאה. פסיק אומר, זהו זה לפקודה זו. זה להיות סופר מדויק, וזה דבר קל מאוד לעזוב את. אז עכשיו תכנית זו לא נראית לי להיות מתנהג באופן שונה עד ש לעשות את זה יותר דינמי. אז במקום קשה יכול שם, תן לי לשים ערך מציין מיקום. ומתברר ש, ואני יודע את זה שמקרא בתיעוד, והשתמשתי בפונקציה לשנים, ש printf נועד להיות דינמי. אתה לא צריך לדעת מראש מה מילות שאתה רוצה לשים את זה. במקום שאתה יכול להיות מציין מיקום, כמו של אחוזים, ש הוא הולך לספר לי מחשב, לשים מחרוזת כאן. איזה מחרוזת אנחנו רוצים לשים שם? וויל מתברר כי בין אלה סוגריים, שזוכרים, לסמן הקלט לפונקציה, אם יש לך רשימה מופרדות בפסיקים של דברים כאן, אנחנו באמת עוברים במספר רב של תשומות לפונקציה. אז רק רוצה קצת סריטות בלוקים, אתה אולי לא שיחקתי איתם ל הפרויקטים שלך עדיין או בכלל, יש לי כמה בלוקים Scratch שתי כניסות. שתי קופסות הלבנות שאתה יכול להקליד מספרים או מילים ל. אז האם יש לC פונקציות כמו printf שיכול לקחת שתי כניסות. ושוב, זה פסיק הוא מפריד ביניהם. אז באנגלית, שוב, גם אם אתה אף פעם לא תכנתת לפני, על ידי שprintf ההיגיון היא פונקציה, לוקח שתי כניסות, אחת מהן הוא מציין מיקום, מה היית מקווה printf הוא הולך לעשות עם קלט זה? זה הולך להגיד שלום חנה, אני מקווה. אז כדי לעשות את זה אנחנו צריכים לשמור אותו. אני הולך להקטין את התצוגה. אני הולך לחזור לכאן ואומרים, לעשות שלום להיכנס. אה. משהו לא בסדר, ולמעשה זה די מדהים. יש לי שש שורות של קוד וכמו 12 שורות של טעויות. אז, מצפה לזה. אז מה קורה כאן? אז הכלל הטוב ביותר של אגודל כאן, במיוחד כאשר אתה מתחיל, לא להיות מוסח על ידי הדברים שבתחתית. למעשה, אני מאוד במכוון רק לגלול למעלה כי לעתים קרובות מאוד, מחשב הוא לא כל בהיר של מכשיר. זה הולך להתבלבל. אם הוא רואה דבר אחד ש הוא לא מבין, זה עלול לטעות אחר שורות של קוד שגויה כ, למרות שהם בסדר גמור. אז אתה תמיד רוצה לעבוד ראש מטה דרך הטעויות. ואמנם זה סופר מסתורי באותו הרגע. שגיאה, שימוש בלא מוצהר מחרוזת מזהה. האם אני מתכוון סטנדרטי ב? לא, התכוונתי מחרוזת. וזה מצביע על, אולי זה טעות דפוס. כמו סוג של, ב- בדיקת איות דרך מאוד חנונית, אבל הסיבה כאן, ואתה יודע את זה רק על ידי תרגול, הוא כי מתברר מחרוזת ש אינו קיים בג למעשה, C היא שפה במיוחד ישנה, וזה ברמה נמוכה מאוד, וזה לא הרבה תכונות כי ייתכן שגדלת עם אם יש לך, למעשה, מתוכנת ב- Java, כמו כמה מכם יש, אבל אתה יכול ללמד אותו דברים חדשים. ואכן, יש לנו לעשות CS50 זה, למרות שעד סוף הסמסטר, כל גלגלים עזר אלה יהיה כבר המריא, מה שאנחנו עושים באלה כמה שבועות הראשונים תחילה הוא גם שיש לנו אתה כולל h נקודת CS50. שהוא קובץ כותרת. נוסף על כך בעתיד. זה קובץ שמכיל פונקציות שיש לנו נכתב בשבילך. ובין הפונקציות אלה הוא פונקציות למקבלים קלט מהמשתמש, כמו מחרוזות, ו מספרים, ומספרים אמיתיים, ועוד. אבל יש לה גם כמה קיצורי דרך. הוא מגדיר בוליאנית כסוג נתונים. C אין אמת או שקר. אבל אנחנו יכולים לתת לו את הרעיון של אמת או שקר בדרך של ספרייה זו. וזה גם לא שיש לי מחרוזת נבנה בעד שכוללים את הקו הזה. אז הקו הזה של קוד אומר לי מהדר, היי, קלאנג, להסתכל בקובץ זה לכל חבורה של קוד שCS50 כתב כך ש כל מי שמשתמש בקובץ זה יכול לקחת כמובן מאליו תכונות שהם הוסיפו. אז עכשיו תן לי ללכת קדימה ולנקות את המסך, ואם סקרנים אני רק אומר שליטה l כל זמן כדי לנקות את המסך, או שאתה יכול להקליד ברור. אני רק הולך קדימה ועכשיו סוג לעשות שלום, והכל טוב. עדיין פלט מסתורי, אבל זה לא הודעה שגויה. עכשיו, אם אני עושה נקודה לקצץ שלום, וכמו בצד, קו נטוי נקודה אינו מוכר לרוב. זה רק אומר, אמצעי נקודה הספרייה הנוכחית. אז אם אי פעם השתמשו ב DOS, או לינוקס, או יוניקס ייתכן שעשית משהו כמו נקודת נקודת CD, בי נקודת נקודת הפירוש ללכת אחורה ב זמן, או ללכת אחורה, או גבוה יותר בספרייה שלך. דוט רק אומר להסתכל ב הספרייה הנוכחית. אני רוצה שלום, שנמצא ממש כאן. ואכן, עכשיו זה אומר שלום חנה. ואם אני משנה את זה שוב למריה, להדר מחדש זה יגרום שלום, קו נטוי נקודה שלום, התכנית משתנה כל הזמן. אבל זה עדיין תכנית די טיפשית. אם אני רוצה לשלוח את התכנית זו, או לתת אותו לחבר, או לתת למריה או חנה זה לצורך העניין, וזה בסדר. אני יכול להתאים אותו לשניהם, אבל זה אף פעם לא הולך להיות דינמי. הם לא יכולים לשנות את זה ברגע שהוא מלוקט לתוך אלה אפסים ואחדים. אז מה שעשינו משהו חכמה יותר? מה אם, במקום קשה קידוד לתכנית את שמו של אדם זה, מה אם אנחנו רק מקבלים המחרוזת על פי דרישה? אז במילים אחרות, תנו לי לעשות את זה. אני הולך להדר מחדש את תכנית. ותן לי להתמקד בתחתית החברה. הפוך שלום נטוי נקודת שלום. עכשיו שום דבר לא קורה. האם אנחנו יכולים לקבל מתנדבים מהירים לגרום למשהו לקרות? בואו למעלה. מה השם שלך? פאנצ'ו: פנצ'ו. דוד י מלאן: Pacho? בואו למעלה. ברגע שאתה קם כאן, זה הוא הולך להיות מאוד משעמם, אבל זה יותר מעניין ממני להקליד אותה. אם אתה רוצה להמשיך ולהקלידך שם, עשיתי את התכנית רק בשבילך. פשוט הקלד את השם שלך. הזן. נפלא. בסדר, תודה רבה לך. פאנצ'ו: תודה רבה לך. דוד י מלאן: אישור. [מחיאות כפות] זה היה מאוד נחמד. הנה לך. מה עשה? אז אנחנו סוף סוף, לפחות, עשה תכנית זו דינמית. עכשיו זה עדיין בהחלט על ידי משעמם עיצוב, אבל יש לנו סוף סוף היכולת עכשיו לכתוב קוד מראש, הרבה כמו הסופרים של printf, ולאחר מכן באופן דינמי להתאים מבוסס על הקלט אנחנו נמסר, בין אם על ידי מתכנת, או על ידי האדם שבעצם אינטראקציה עם התכנית. אז בואו בעצם עכשיו לנסות לעשות כמה מבנים אחרים ולראות אם אנחנו לא יכולים לעשות תוכניות עצמם מתוחכמים יותר. אז בואו נלך קדימה ובמקום כותב את זה אחד מהתחלה, אני הולך להיכנס לשל היום קוד מקור, וכל זה נגיש בקורס של אתר, ואתה יכול לגרור ולשחרר אותו לסביבה שלך הגעתי ביום שישי ברגע שהבעיה 1 סט נותן לך הוראות, או שאתה יכול לעשות את זה בשורת הפקודה כ גם, אבל יותר לבוא בעמ להגדיר 1. בואו לראות מה יש בתכנית זו כאן נקרא, נקודת האפעה ג. עכשיו אני כבר הגיב את זה, אבל מה חדש? במבט הראשון, מה קו קוד הוא חדש לחלוטין? כנראה שלא ביסוד לא מוכר עכשיו. קהל: [לא ברור] דוד י מלאן: כן, כך int x שווה לקבל n. אנחנו אף פעם לא ראינו את כל זה לפני, אבל int הוא כנראה הסמל לאיזה סוג של משתנה, [? מ?] שלם. אז int למספר שלם. זה פשוט להיות יותר תמציתי. x הוא פשוט שרירותי. x ו- y ו- z הם עדיין די סביר למספרים, אבל בדרך כלל אנחנו משתמשים במילים פעם אחת התוכניות שלנו לקבל יותר מורכבות. קבל int, כמובן, כמו מחרוזת גט, הוא כנראה הולך לקבל int מהמשתמש, ואז אנחנו הולכים ל לעשות את אותו הדבר עם y. וככל הנראה, למרות שזה השורה האחרונה, 24, נראית מורכבת יותר, זה הולך לומר את הסכום הזה וזה דבר אחר זה. ואני אחוזים הודעה כנראה מציין מה? מה המקום של אחוזים כנראה אני משרת? זה פשוט מצייני מיקום. נכון? אחוזים של היה למחרוזת, הוא אני אחוזים למספר שלם. יש הולך להיות F אחוזים לצפתי ערך נקודה, ש רק מספר עם נקודה עשרונית. במילים אחרות, מספר אמיתי. אז בואו למעשה לקמפל זה לתכנת ממש מהר ועושה האפעה. אופס. הזדמנות טובה. אז שם לב כאן, כל הזמן הזה המשתמש שלי שם עבור חשבון זה jharvard. אני בIDE CS50, aka IDE50. ועכשיו בכחול כאן, הוא אזכור, אבל מהסביבה, של איפה אני. ולמעשה, אם אני להגדיל עד לקצה כאן, שם לב שיש לי IDE50 ואני רואה את המילה הזאת, אם אתה סוג של לסובב את הראש שלך בצד, סביבת עבודה. על קצה המזלג, את העובדה ש אני רואה סביבת עבודה נטוי טילדה משמעות הדבר היא כי בטקסט זה סביבת הפקודה מבוססת, אני בשווה ערך הטקסט של זה גרפי תיקייה עד כאן. לכן, כאשר אני עושה קו נטוי נקודה האפעה, זה אומר לא כלל כדי להפוך את תחנת האפעה יעד. אני לא יודע מה זה אומר, אבל זה רע מסיבה כלשהי. אין כזה קובץ או תקייה עוד יותר ברור. איפה זה אז? בהתבסס על בי לחצתי כדי לפתוח את הקובץ קודם. איפה הוא יכול להיות? זה כנראה במקור w אחד, ליום רביעי, ואני יכול לראות את זה, אכן, אם אני פותח כי עד. יש האפעה הנקודה ג, אבל ב סביבה זו מבוססת טקסט, שוב, אני צריך להיות סופר מפורש. אם אני רוצה לשנות את הספריות ל מקור יום רביעי אחד, אני צריך להקליד, מקור חלל תקליטור אחד יום רביעי להיכנס ועכשיו השינויים המהיר שלי ל תן לי רמז חזותי ש אני, אכן, במקום אחר בסביבה שלי, אבל עכשיו אני יכול לעשות לעשות האפעה, נראה שזה יעבוד, נקודה לקצץ האפעה, לתת לי מספר שלם. אחד. שני. הסכום של אחד ושני הוא שלוש. אבל אם אני לא אשתף פעולה, בואו לראות מה תקבל int עושה. תן לי מספר שלם. מס ' נסה שוב. אוקיי. בסדר. 50. 50. בסדר. אז זה סוף סוף משתף פעולה. וזה חלק מ פונקציונלי שפונקציות אלה יכול להיות שנבנה בבשבילך. אז בתוך היישום של מקבל int, מה תכנות לבנות משבוע שעבר הוא כנראה ב יש לחייב את התנהגות של ניסיון חוזר זה, נסה שוב, לנסות שוב? כן, יש כנראה איזה לולאה. זה הולך להיראות מבחינה תחבירית שונה מהלוקים של Scratch, אבל זה אכן מה יש בפנים הקובץ. ובזמן כמה שבועות שנציע ב למעשה מסתכל על ספריית CS50 על מה יש בפנים, אבל יש לולאת הטלת בדיוק את זה. בואו לשחק קצת טיפשי משחק כאן עם קובץ זה. מצב אפס הנקודה ג. אנחנו רק הולכים בדרך כלל תתחיל לספור על אפס. ואני שומר את הגלילה האחרונה חלק מהדברים בראש. בכחול כאן, נתחם עם כל כוכבים אלה והחתכים, אלו מכם שלתכנת לפני, מה זה? למה אנחנו לשמור מדלגים על זה? מה? קהל: זה תגובה. דוד י מלאן: כן. זה פשוט תגובה. זו תגובה לבני אדם לקרוא, כי במקרה שלנו, אומר לנו מה השם של הקובץ הוא, שכתב אותו, ומה הוא עושה, כך שאין לך לקרוא את הקוד לדעת מה הוא קובץ זה כל עניין. זה רק תיאור, אבל פונקציונלי זה לא רלוונטי. ואני אפילו יכול למחוק אותו מ יש את התיק שלי ואין לה השפעה. הקווים העסיסיים הם אלה ראשון שני כאן, עכשיו. החלל המרכזי int הוא שווה הערך שלנו, כאשר הדגל ירוק לחץ, כך אנחנו הולכים לעזוב זה יהיה להיום, ואנחנו נחזור, סופו של דבר, על מה int ומבוטל הם, אבל עכשיו, שים לב למה שעשיתי גם כאן, אתה גם יכול, אם יש לך בשורה להגיב, אם יש לך חשבתי שאתה רוצה לחלוק על קו מסוים של קוד, כנס ב- C הוא לעשות נטוי לחתוך, ולאחר מכן כמה מילות תמציתיות, לא משפט מלא, בדרך כלל לא פסק, שרק מסביר לך, או שלך TF, או קוראים או עמיתים אחרים, מה הקוד שלך עושה. אז במקום צריך להסתכל בשלב זה ולהסיק מהקווים תשע ו -10, מה הוא זה עושה, בקו שמונה אני רק נותן תגובה ל לשאול את המשתמש למספר שלם, אז אני לא צריך לחשוב יותר מדי קשה על מה קווי תשע ו -10 הם. אני רק יודע שזה מה ש ביחד הם עושים. איך? ובכן, הנה הפקודה. הנה מקבל של int. ומבוסס על הקודם התנהגות, זה נראה כמו גט int הוא חכם מספיק כדי לוודא ש האדם משתף פעולה ונותן לה מספר שלם. אבל עכשיו אנחנו רואים את זה. וזה מזכיר Scratch. אני טוען שאני ניתוח הקלט של המשתמש, אבל לא מדויק במידה מה. וזה כנראה בC הוא איך אנו מביעים אם אחר, סניף, מזלג בכביש, אבל אני אומר לא מדויק במידה מה. מה באג בתכנית זו? אודות לגבות נוסף? כן. קהל: [לא ברור] אפס. דוד י מלאן: כן. אז אם אני מקליד באפס, הבה נבחן בדיוק שמקרה מקרה, או בפינה, אם אתה. אז אם אני מקליד באפס, מה ש בלוקים הולכים כנראה לתפוס אותו? או אחר אם? אחר, וזה הולך לומר, בחרת מספר שלילי. ואכן, אפס לא אמורה להיות חיובי או שלילי, וכדי שיהיה טעות. זה יהיה באג. אז איך אנחנו יכולים לתקן את זה? מישהו שמעולם לא תכנת לפני? האם אתה רוצה-- קהל: [לא ברור] דוד י מלאן: קירוב? קהל: [לא ברור] דוד י מלאן: אה, יש לך? מישהו שמעולם לא תכנת בעבר. רוצה לנסות את היד שלך ב זה, בחולצה האדומה? בואו למעלה. אה, כן, תבואו עליו, אם לא אכפת לך. אז מעולם לא מתוכנת לפני, מה שמך? לורן: לורן. דוד י מלאן: לורן, בסדר. אז לתקן את הבאג הזה עבורנו. אתה כבר לא ראית את C, ככל הנראה, וכנראה אין שפה אחרת. אז לתקן תכנית זו עבורנו. נחמד לפגוש אותך. בלי לחץ. לורן: כן. דוד י מלאן: אבל שוב, אם זה הימור הולך לפי תכנית, ממסעדה כאן להיות, רק שוב, להתחיל לשים לב דפוסים ו להסיק מתחביר קיים איך עוד אתה יכול להביע את עצמך, לא משחק מלים מיועדים, על מנת כדי ללכוד כמה תרחיש נוסף. אז אנחנו אומרים אם אחר. printf, טוב. ושים לב עם CS50 IDE, וIDE frankly-- עומד משולב סביבת פיתוח. זה רק דרך מפוארת של אומר תכנית שמסייעת לך תכנית. הוא עושה דברים ידידותיים למשתמש כמו בעת הקלדת סוגריים אחד, זה באופן אוטומטי נותן לך את זה. ההנחה היא שאתה סופו של דבר הולך רוצה להקליד ש, וזה גם עושה את זה עם ציטוטים. אז אני רוצה קו 23. 99% בדרך לשם. מישהו רוצה צלצול עם טיפ? שמעתי פסיק מהקהל. טוב. כדי שישלים את זה. ועכשיו, יש לי רק קצת תדהמה בקו 21. כיצד אנו רוצים להביע את זה? מה שאלה שאנחנו רוצים לעשות לשאול, מה אתה חושב? אז בעבר שאלנו את השאלה, אם n הוא גדול מאפס, לעשות את זה. אחר, לעשות את זה. אז אנחנו צריכים לבחור שאלה לשאול כאן. קהל: [לא ברור] דוד י מלאן: טוב. אז אם n שווה אפס. מצוין. אז בואו נעצור כאן. תודה רבה לך על אפן זה. תן לי לתת לך קצת גם ראוי לחץ כדור, אולי שם. אז אנחנו כמעט שם. למעשה, לורן, אם לא מוח, תן לי לעשות אחד לצבוט כאן, רק כדי להיות עקבי גם עם מה שראינו בסריטות, מה אני רוצה לעשות עם קווים 21 ו -24, המבוסס רק שוב על איך אנחנו עושים את זה בגרד, אולי? קהל: הזז אותו. דוד י מלאן: כן, להעביר אותו. אז המצב אחר, השלישי, או רביעי, או חמישי, או סניף סופי, אכן צריך לבוא אחר כך, וזה רק על ידי אמנה, רק בגלל שאם תרצה. אז אני צריך לעשות זה לצבוט. ואני צריך לשים את שלי סד מתולתל יחזרו לכאן. ועכשיו, תכנית זו לקמפל. אנחנו כל כך קרובים, אבל יש באג מאוד, מאוד עדין. בואו לראות מה קורה. ראשית, תנו לי ללכת קדימה ולהקטין את התצוגה. אני הולך קדימה ו הקלד להפוך מצב אפס. אה, שיקרתי. עכשיו הוא מהדר למעשה די חכם. ואני לא ממש מבין זה הודעת שגיאה. שימוש בתוצאה של משימה כתנאי ללא סוגריים, הוא רע כנראה. אבל מה זה אומר? ובכן שוב, מחפש דפוסים בקוד שראינו בעבר, מה הוא בעצם עושה קו 17, למרות שלורן נועדה מעט אחרת? כן. קהל: [לא ברור] דוד י מלאן: כן. אז לזכור סימן השוויון, כנראה כפי שאנו כבר השתמשנו בו בעבר, הוא לא שווה. המשימה שלה, מימין לשמאל. אז בשורה 17 באותו הרגע הוא מצב, וזה ביצוע קוד בתוך הסוגריים, אבל כאשר הקוד שמבצע, מה קורה לשווי אפס? מה קורה לערך של n? איך להיות אפס. אז אם n הופך אפס, ושוב, כמו בשבוע שעבר, אנחנו בדרך כלל אומרים שאפס הוא שקר ואחד הוא נכון, או כן הוא אחד ואין הוא אפס. כל כך נכון וכוזב, ואחד 0. אם n לקו 17 כבר נתן את הערך 0, הוא אפס אמיתי? מס ' על פי הגדרה, אפס הוא שקר. זה הכנס שאנחנו הולך לדבוק בלנוע קדימה. כך יהיה קווים 18, 19, ו -20 אי להחיל עכשיו, באופן הגיוני? הם לא יכולים. אז שאלנו את השאלה אבל לא ממש בדיוק, ולא היית יודע את זה, אלא אם כן אתה ראית את זה, הפתרון בC כאשר אתה רוצה להביע שוויון, אתה אומר שווה שווה. אז סימן שוויון היה כבר בשימוש עד על ידי הקצאה, מימין לשמאל. שווה שווה שווים אמצעים. ואם אתה באמת רוצה את דעתך להיות כפוף, בJavaScript ו- PHP, יש שווה שווה שווה, ש מתכוון למשהו אחר לגמרי, אבל אנחנו נגיע לזה לפני זמן רב. אז זה תיקון פשוט, אבל מבין סופר קל לעשות את הטעות הזאת, ולאחר מכן תוהה ומאבק במשך דקות, אם לא שעות, למה הוא הקוד שלי לא ביצוע שאני מתכוון? זה בגלל שלא אמרת לי זה בדיוק מה שהתכוון. אז זה היה כמעט מושלם, וזה היה נהדר שנתקלנו בשני קטן האלה דברים כי עכשיו אם לתקן אותם, ואני עושה לעשות אפס מצב נקודה לקצץ מצב אפס, אני רוצה בבקשה שלם. בוא נראה. מס ' זה הולך להכריח אותי לעשות את זה. אז 42. הרמתי מספר חיובי. אז עכשיו איך אני להוכיח תכנית זו נכונה? אם אתה מתמטיקאי, אתה לא יכול באמת להוכיח זאת על ידי ניסוי וטעייה, נכון? אתה לא יכול פשוט הוכחה על ידי דוגמא, אבל לפחות כמתכנת אנחנו לא הולך לנסות להוכיח לחברה שזה בעצם נכון, אבל אני כנראה צריך לבדוק כמה מקרים מייצגים. בדקתי 42. אני יכול לבדוק 43. אני יכול לבדוק 44. בדיקה 45. נכון? אבל אני יכול לעשות את זה ממש הרבה זמן. מה יהיה עוד קצת מקרים מעניינים לנסות? קהל: [לא ברור] אפס. דוד י מלאן: אז אפס. אין ספק. וטוב, יש לנו את זה הפעם, הודות לקוד החדש של לורן. מה מקרה טוב אחר לנסות? קהל: שלילי אחד. דוד י מלאן: שלילי אחת, ו אולי משהו קצת יותר גדול, אז אולי שלילי 42, אבל באופן כללי, כאשר בדיקת התוכניות שלך לנוע קדימה, אתה הולך רוצה לחשוב לעצמך, כמו מה ש הם המקרים השונים המהותיים. ואני מעז לומר מקרה שלילי, מקרה חיובי, ומקרה אפס די הרבה הסיבובים האלה. בואו נסתכל על גרסה של אף זו. תנאים אחד. זהו פתרון נכון כאן, כדי שתראו שני ומקוונים, אם אתה הולך ב ערוצים, בדרך כלל להגדיל בשלבים אלה עד ש מקבל בדיוק את הגישה הנכונה. מה אם אנחנו רוצים לשאול שתי שאלות בפעם אחת? תן לי לפתוח את זה במקום. ללא מתג, מסיבות אנו רואים בפעם אחרת. מה חדש מבחינה תחבירית כאן? אני כרגע משחק שבו המחשב אומר לי שלי, לתת לי מספר שלם בין אחד ו -10, ואז אני שופט את הקלט של המשתמש. באנגלית, המבוסס על הקוד שאתה רואה כאן בכחול, מה שעושה את התכנית? קהל: [לא ברור] הרים מספר גדול או קטן. דוד י מלאן: כן. זה פשוט דן אם הרמתי או בינוני גדולים,, או מספר קטן מבוסס על מאוד הגדרה שרירותית של קטן, בינוני, ו, אבל הודעה גדולה כאן התחביר זה חדש הוא זו. יש לא פחות מ int או שווה ל לחתום, או גדול או שווה לחתום, שבו אחד הוא מעל אחרים, ש יכול לבטא בכגון Microsoft Word. אז בשפת תכנות בדרך כלל רק לעשות שתי דמויות, אחד אחרי השני. ומה עושה את זה כנראה מייצג, אמפרסנד אמפרסנד. קהל: [לא ברור] דוד י מלאן: כן. זה רק אומר ובגלל זה מתברר כי מחברי C משמש אמפרסנד יחיד, שנדמה לך יהיה מושלם לרעיון של ו, כבר נמצא בשימוש עד, אמפרסנד אמפרסנד כך למעשה לוכד את המקרה שאנחנו באמת רוצים. אז בואו עכשיו להיתקל שני דברים. תן לי ללכת קדימה ולפתוח אחד. משהו שקצת מדאיג. נקודת ג חוסר הדיוק. הרשה לי להציג כאן שני דברים. אחד, הודעה שאנחנו יכולים לעשות מתמטיקה, כמו בדיוק כמו קודם, כאשר שעשינו בתוספת של שני מספרים, x ו- y. מה התכנית הזו עושה כנראה? אני כבר לא הגיב את זה עדיין, ואני כבר הצגתי F אחוזים, אבל אמרתי במהירות קודמת F אחוזים פירוש נקודה צפו ערך, שהוא מספר אמיתי. משהו עם עשרוני נקודה, שאינה שלם. מה אתה חושב תכנית זו היא מנסה להראות לי על המסך? כן? קהל: התוצאה של אחד מעל 10. דוד י מלאן: כן. מה התוצאה של אחד מחולקת ב -10. נכון, משום שכל מה שאתה צריך כנראה גדל בידיעה שאחד מעל 10 זה מה ש? כן, זה רק 1/10 או 0.1. נכון? אז בואו לראות מה זה בעצם. אז תן לי ללכת קדימה ולשמור את זה. תן לי לרדת כאן. הפוך לוכסן נקודת חוסר דיוק חוסר דיוק, והודעה, גם, בסביבת לינוקס, אתה לא יש להקליד את חוסר הדיוק ולקחת כל היום. זה בדרך כלל, אם אתה מכה Tab, זה אסיים המחשבה שלך בשבילך, המבוסס על המילים ש זמין בספרייה הנוכחית. אוקיי. אז אתה צודק. אחד מחולק 10 הוא, למעשה, 0.1. אבל אני קצת סקרן. ומתברר printf תומך כמה תכונות לפיה ניתן לציין יותר מ מספר ברירת המחדל של נקודות עשרוניות. אז אם אני רוצה לראות את 10 עשרוני נקודות שאני יכול לעשות אחוזים, לסמל מציין מיקום, נקודה 10 ל, תן לי 10 נקודות עשרוניות, ולאחר מכן עדיין נקודה צפה ערך, ו, במאמר מוסגר, מה הוא n לוכסן זה כנראה אנחנו ממשיכים להשתמש? מתברר שזה סמל לשורה חדשה. זו הדרך מאוד מפורשת לומר למחשב, להזיז את הסמן למקום הבא קו לאחר שתסיים. ונראה מה קורה כאשר אנחנו לא עושים את זה. תן לי לעשות הידור מחדש חוסר דיוק. עכשיו נקודה לקצץ חוסר דיוק. אוקיי. עדיין תקין. אחד מחולק ב -10. עכשיו אני מקבל קצת מוזר, אם כי. מה אם אני מסתכל 20 עשרוני מציין, הידור מחדש, שידור חוזר, וכמו בצד ל מהירות, אתה יכול גם להשתמש ב חצים מעלה ומטה כדי לגלול את ההיסטוריה שלך, אז אתה לא צריך לשמור להקליד מחדש בפקודות אלה, להיכנס. הא. אני לא למדתי, כי בבית הספר יסודי. בסדר, אז תנו לי לראות כמו 29 מקומות החוצה. אולי זה רק מזל. אולי המחשב שלי מתנהג מוזר. זה לא דבר, נכון? זה עושה משהו deterministically. אז להפוך את חוסר דיוק. אוקי, זה פישל. אז מה קורה פה? אז כנראה שלך מורה כבר שוכב לך כל הזמן הזה ל סיבות לכך שאנו רואים לפני זמן רב. אבל בואו לסיים עם תכנית אחת אחרת. זה קצת תוכניות מישהו כתב לפני כמה שנים, וזה בעצם חלק מתחרות. אף אחד לא באמת כותב קוד כמו זה, ואם אתה עושה, זה סגנונית בעיה. אבל אנשים עושים את זה לזכויות התרברבות. כדי לכתוב המבלבל ביותר תכנית מחפשת ש בכל זאת עושה משהו מעניין. וההערה חשבתי שכדאי להשאיר ב היום, לפני קולטון משחק אותנו כאן, הוא להפעיל תכנית זו, אשר, אפילו רק באמצעות C בבסיס טקסט זה הסביבה, נותנת לנו את זה. לכל הרוחות. [שחוק] המתנה. מ 'l מקף ג [לא ברור]. אתה הולך לראות קסום לחש שנראה לפני זמן רב. [לא ברור] בסדר. ועכשיו אתה יכול אפילו לעשות דברים כאלה. זה הכל. לנו CS50, יראה אותך ביום שישי. [השמעת מוסיקה] [מחיאות כפות]