[השמעת מוסיקה] דוד Malan: בסדר. ברוך שובך. זה CS50, ואת זה הוא שבוע אחד, המשיך. אז אחת הסיבות שאנחנו כבר עוברים סביב טכנולוגיות כמו גוגל הזכוכית היא שהם מגיעים עם משהו שנקרא API, ממשק תכנות יישומים. ומה זה אומר הוא שעם קבצים הנכונים ועם הזכות תיעוד, למעשה אתה יכול לכתוב תוכנה עבור מכשירים אפילו כמו אלה. ואז מה שיש לנו בראש לכיוון סוף הסמסטרים הוא, אם פרויקט מעורבת, למשל, גוגל עשויה זכוכית ערעור, נראה מה אנחנו יכולים לעשות ב מבחינת משדלת אותך עם כמה loaner חומרה, כמו גם API ציבורי נגיש, כך שאתה יכול למעשה להתחיל ליצור תוכנה שפועל על אותו שגוגל זכוכית. מכשיר נוסף שיש לנו כבר משחק עם של המנוח שחשבנו שיכולים להיות כיף בסוף הסמסטר הוא הדבר הקטן הזה כאן. זה נקרא Motion קפיצה, ומה שאתה עומד לראות הוא מבחינה טכנית פרסומת למכשיר, אבל זה אין מה לדבר זה בפרט מכשיר מסוגל. וזה גם מגיע עם ה-API באמצעות שבו אתה יכול לכתוב תוכנה כדי לשלוט במחשב שלך באופן ממש כמו סרט של דקה אחת זה כאן. [השמעת וידאו] [השמעת וידאו הסוף] אז עכשיו, מכשיר זה קורה לי ייעשה באופן קצת USB מחבר שאתה יכול לחבר אליך מחשב, אבל אני לא אתפלא אם לפני זמן רב שיש לנו סוגים שונים של אלה טכנולוגיות בקבוצה הבאה של מחשבים ומקינטוש, כך שאתה יכול, ואכן, אינטראקציה עימו ב אופן כזה. למעשה, מה שחשבתי שאני רוצה לעשות, יותר מדי, הוא אני משכתי את הפגנה קטנה תכנית שמגיע עם תוכנה זו. אז שמו לי חיישן הקטן מול המחשב הנייד שלי. וכמו שאתה יכול לראות, זה כבר מבין כי את היד שלי היא שיש השולט בה. וכל יישום שזה עושה זה swimmingly דברים קטנים כמו זה. אבל אתה יכול לראות כי, אכן, יש לי חמש אצבעות שם. אם אנחנו יכולים לקבל את זה כדי לעשות את כל 10, אתה יכול לדמיין פסנתר מסודר יישום או משהו דומה. אז אם אתה רוצה לבוא אחרי השיעור היום ולשחק עם זה כמו טוב, אתה מוזמן. נוסף על כך שלקראת סוף הסמסטר. אז כמה מנהלי הכרזות. אחד, לעשות סעיף על ידי ביום שישי הקרוב בצהריים בcs60.net/section. כתובת אתר שהוא על הקורס של דף הבית גם כן. בינתיים, אם כי, supersections יהיה הופעה ראשונה ביום ראשון הקרוב. Supersections הוא דבר חד פעמי, כי זה לוקח לנו קצת זמן לעבוד את מי שבסעיף ובו. אז יום ראשון הקרוב זה, יהיה אחד סעיף פחות נוח לאלה, סעיף אחד למי יותר נוח. ואלו מכם אי שם ב בין מוזמנים ללכת או בשניהם או אף אחד. שני אלה יהיו מצולמים. הם יהיו באולם גדול יותר סעיף בדרך כלל להיות בו אבל המטרה כאן היא לצייד אותך עם נחמה עם בעיה מוגדרת אחת, עם C, עם מכשיר CS50, זה בסוף השבוע, גם לפני שתמצא אותך הקצאת סעיף פורמאלית. אז אתה פוגש TF שלך ושלך קטן יותר קבוצה של sectionmates בכ הזמן של שבוע. שעתי עבודה, בינתיים, כבר קורה. האם לנצל אותם הלילה או הלילה אם אתה רוצה מחר. סט 0 בעיה הוא עקב ביום שישי. זהו יום יאוחר מ באופן קבוע, מתוכנן ביום חמישי. אבל עם 1 סט בעיה, אתה תראה שזה כולל כמה חימום תרגילים שבה אתה עצמך יכול להאריך אותך מועד אחרון להגשת יום חמישי ליום שישי. 1 סט בעיה, בינתיים, יהיה הופעה ראשונה באתר האינטרנט של הקורס הקרוב יום שישי, אם אתה רוצה להתכרבל עם זה כמו שעשיתי פעם, לפני הרבה זמן מאוחר יום שישי בלילה בחדר שלך. אז cs50.net/appliance הוא המקום שבו אתה יכול לקבל את מכשיר CS50 שהתחלנו להשתמש ביום שני. אנו נשתמש בזה קצת יותר היום. אבל היה סמוך ובטוח כי הבעיה להגדיר 1 המפרט תעבור בדיוק את השלבים שאתה צריך לקום ושהפעלתו. אז אל תדאגו לעשות את זה לפני 1 Pset אם אתה מעדיף שלא. בסדר. אז אנחנו נראים ביום שני בקוד מקור, אבל בהקשר של חדש שפת תכנות, כלומר ג ו-C, שלא כמו שריטה, לא גרפי. זה לא חידת חתיכות. זה יותר כמו אנגלית תחביר. ויש עוד כמה צעדים המעורבים בעצם כתיבה ובהפעלתו תכנית ב-C, משום שחוץ ממקור קוד כזה, אתה צריך משהו נקרא מהדר. ובמונחים של הדיוטות, מה אין מהדר לעשות עבורנו? כן. תלמיד: הוא ממיר את הקוד שאתה כותב ל0s ו 1s. דוד Malan: טוב. אז הוא ממיר את הקוד ש אנו כותבים כדי 0s ו 1s. הוא ממיר את קוד מקור של מה שנקרא ל קוד יעד, האחרון שבם נראה משהו קטן כזה. וזה המעבד שלך, את המוח בתוך של המחשב שלך, שבגלל אנשים שיצרו את המחשבים האלה, יודע מה הרצפים האלה ממוצע של 0s ו 1s. אולי זה אומר שהדפסה. אולי זה אומר שבנוסף. אולי זה אומר שחיסור. אולי זה אומר להציג בצורה גרפית. יש דפוסים מוגדרים מראש של ביטים שהעולם החליט אומר דברים מסוימים. אבל על פי רוב בקורס זה, אנחנו נעבוד ברמה גבוהה יותר, ו אנו לוקחים כמובן מאליו שקיימת דברים כמו מהדרים שיכולים להפוך את פונקצית קוד המקור שלנו בדרך בה אנו מתכוונים. אז התכנית הראשונה שכתבנו בשבוע שעבר ולאחר מכן החל לנמל, ולכן כדי לדבר, C האחרון יום שני, היה זה. כשלחץ על הדגל ירוק, לומר שלום. זה היה, כמובן, נכתב בסריטות. ואני טענו שאת המקבילה תכנית ב-C נראית קצת משהו כזה. אז מה חשבתי שאנחנו היינו עושים בהתחלה הוא, בואו להפריד את מה שנראה בתחילה מבט חטוף, יש להודות, כמסתורי למדי תחביר, אבל אתה מתחיל לשים לב דפוסים די מהר. מה שאנחנו נעשה גם היום הוא מספקים לך עם מודל המנטלי לחלק הקנונית, כמה מבנים סטנדרטיים בתכנות. ואז אנחנו באמת תוכלו לשים את ידינו מלוכלך עם כמה דוגמאות, כמו גם. אז לאלה מכם יותר נוחים, להבין שזה שבוע ולאחר מכן הבא שבוע עשוי להיות קצת ביקורת טובה מאוד. אבל במיוחד כאשר מהדורת ההאקר בעיה של 1 סט יוצא ב באתר הבית של הקורס ביום שישי, אני חושב תגלו שגם לך למלא כמה מקומות ריקים במהלך השבוע הבא או שתיים, אתה מתחיל לקבל יותר ויותר מאותגר ונתקל דברים חדשים וחדשים יותר. אז בואו להקניט מלבד תכנית זו כמה שורות בכל פעם. בחלקו העליון, יש לנו מה נקרא טכני הוראת preprocessor. זוהי רק שורת קוד שאומרת כדי לכלול את התוכן של קובץ, קרא לי סטנדרטי / N, קלט סטנדרטי - או, סליחה, קלט / פלט הסטנדרטי, תקן קלט / פלט,. שעות, בתוך בתכנית שלי. אז במילים אחרות, אם אני כתבתי את זה תכנית עם עורך טקסט פשוט כמו gedit, המקבילה הפשוטה יותר של משהו כמו Microsoft Word, ש הוראה, # כולל stdio.h, היא רק הולך לספר את המהדר, לתפוס תוכן של קובץ אחר ש, stdio.h, ולהדביק אותם כאן. עכשיו, למה אכפת לי? מה שאנחנו טוענים הוא בתוך קובץ זה קרא stdio.h, אשר מאוחסן מקום בכונן הקשיח שלי, או בזה מקרה, אי שם במכשיר CS50? מישהו אחר שם אותו שם בשבילי. אבל מה יש בו? כן, כך שזה הכרזה פונקציה בשם printf. אז נזכר printf הפונקציה ה מילים ותווים ומציגים מספרים המופיעים על המסך בהצעה שלי. אבל אני לא כתבתי את זה. CS50 לא כתב אותו. שנים לפני שמישהו כתבו אותו, והם בעצם נתן לנו את המתכון לזה בקובץ שנקרא stdio.h. כך שהשורה ראשונה רק נותנת לי לגשת לפונקציות שמישהו אחר כתב לפני שנים, בין אשר printf. עכשיו, בשורה הבאה אני הולך לנופפי ביד, לפחות עד השבוע הבא. אבל לעת עתה, יודע שהוא int הראשי (חלל) בעצם שווה ערך לכך פיסת הפאזל צהובה כאשר הדגל ירוק לחיצה עליו. העולם, לפני שנים, החליט שאם אתה כותב בתכנית שפה בשם C, אתה מתחיל התכנית שלך עם קו זה נראה ככה. כמעט בזמן של שבוע, זה יעשה תחושת int מה הוא, מה הוא חלל ריק. אבל לעת עתה, רק לחשוב על זה כפיסת הפאזל הצהובה הזה. עכשיו הבא, יש לנו סד מתולתל ואחרי על ידי סד מתולתל קרוב אחר, אם אפשר לומר כך. ואנו רואים בכל אלה תוכניות ב-C, כמו גם JavaScript ו-PHP. ואלה הם רק לתמצת קווים הקשורים של קוד. הסד המתולתל הפתוח למעשה אומר, הנה מגיע קצת קוד. וסד המתולתל הסגור, שהוא זווית לכיוון השני, בדיוק אמצעי, זהו זה ל הקוד הרלוונטי. אז השורה עסיסית בזה ראשון תכנית היא אחרון, printf, במרכאות, שלום עולם. ואני קראתי את הדבר בין ציטוטים מה הפעם האחרונה? אז זה מחרוזת. ומחרוזת היא רק טכנאי טווח עבור רצף של דמויות, מילה, משפט. יכלה אפילו אות אחת להיות מצוטט כפול. אבל זה רצף של אפס תווים או יותר. לוכסן-N, אם כי, נראה קצת מוזר. אבל זה פשוט התכוון למשהו פשוט למחשב. מה קו נטוי-n? קו חדש. אז זה פשוט רצף המיוחד של דמויות שהעולם החליט אמצעי לשים מעבר שורה ממש שם, בגלל המהדר למעשה יקבל מבולבל, בדרך כלל, אם אתה, מאוד מובן, אבל באופן שגוי, רק תתחיל להכות על Enter כדי לשים קווים חדשים בקוד שלך. אתה צריך להיות קצת יותר מפורש עם קו נטוי-n. ואנו רואים שיש כמה אחרים כגון דפוסים לתווים מיוחדים. למשל, אם אתה רוצה לתת לך אכפת לנדוד למקרה פינה, נניח שאני רוצה להדפיס ציטוט כפול על המסך עבור מהסיבה כלשהי, שהיה נראה להיות בעייתי, ממש קטן? כי אם אני שם את ציטוט כפול ב אמצע "שלום, העולם", לכל מה סיבה, מדוע שנראה פוטנציאל בעייתי? זה שובר את המחרוזת. מהדר הוא רק תכנית. תכנית כמו מהדר היא רק הולכת לקרוא את הקוד שלך למעלה עד למטה, משמאל לימין. ואם רואה שלוש מרכאות כפולות במקום לשתיים, זה לא הולך לדעת אם אתה אומר שהדבר שמשמאל צריכה להיות מחרוזת, או דבר הנכון, או את כל העניין. זה לא ברור, ואז מה טיפוסי מהדר הייתי לעשות הוא פשוט להתחרפן, ואתן לך הודעת שגיאה כלשהי, ו לגרום לך להתמודד עם הבעיה. אז בהתחשב בכך שהלוכסן-n פירוש חדש קו, מה היה האינסטינקטים שלך עכשיו להתחיל להיות בו אם אתה רוצה לכלול משהו חריג כמו כפול תצטט את החלק הפנימי של זה מצוטט אחרת מחרוזת? ציטוט נטוי הפוך כפול. וכך יהיה לנו לראות את זה סוג של דפוס מדי. אם אתה רוצה לעשות משהו קצת מוזר, אתה תמצא כי פתרונות לעתים קרובות לעקוב אחר דפוס, וקו הנטוי מציין רצף בריחה. וזה רק אומר שמשהו מיוחד שאנחנו צריכים לייצג ב דרך אחרת. באשר לאיך אתה מייצג קו נטוי, ובכן, אנחנו תחזור לזה. אבל התשובה, גם היא למעשה קצת ברור. אז בואו עכשיו להכניס קצת אחר תכנות בונה שראית בלגרד. יש לך כנראה מובן מאליו כבר אם כבר צלל לתוך בעיה מוגדרת 0. אבל בואו עכשיו להציג את התחביר ב-C לאלה אחרת אינטואיטיבי למדי רעיונות, לפחות חלק מהם. אז הרעיון הזה של תנאי או סניף, בעוד שבעברנו ייצג אותו עם קוד שנראה ככה בצד השמאל בלגרד - אם x קטן מ-y, אז אומרים כך - במקום כעת ב-C - תנו לי לחדד במקרה הפשוט ביותר - אנחנו פשוט הולכים להגיד, אם, פתחו סוגריים, משהו נכון - ביטוי בוליאני הוא הולך שבו שכבר אמר מצב - סגור סוגריים, אז מה בתוך הסוגריים המסולסלים האלה. אז גם כאן, בסוגריים המסולסלים הם כמו סוג של שריטה של חלקי הפאזל בצורת פרסה. לעשות את מה שבתוך סוגריים מסולסלים אלה. במקרה זה, לחתוך לקצץ. ומבחין זאת היא קדימה לקצץ, לא קו נטוי. קו נטוי, קו נטוי, למי הוא כבר מתוכנת בעבר, רק אומר - זה רק הערה. תגובה היא לא קו של קוד, כשלעצמה. זה קו של אנגלית שאתה, אנושי, שכתב לעצמך כדי אולי להזכיר לך לעשות משהו, כדי להסביר לעצמך, כדי להסביר לי מישהו אחר, מה הקוד שלך עושה. זה רק תגובה תיאורי. עכשיו, כמובן, אנחנו יכולים להיות דו סטרי מזלג על הכביש רק על ידי עושה את זה, מזלג שלוש דרך בכביש על ידי עושה זה, ואם ימשיכו כך דפוס, אתה יכול לקבל דרך ארבעה, חמישה כיוונים, שישה מזלגות דרך בכביש אם אתה צריך לטפל בו, ואכן, כי תנאים רבים. ואז שם לב להקבלה כאן - אם (תנאים), אחר אם (מצב), ורק אחד שזה קצת המוזר הוא שעבר, שבי כי הוא פשוט אחר. אבל שוב, זה זהה, מבחינה מושגית, על מה שעשינו כבר, למרות שהתחביר יהיה לוקח קצת זמן להתרגל. עכשיו, בדוגמה זו, יש חלק תחביר מוזר אחר. אנו רואים printf שוב, סוגריים פותחים, וסוגריים קרובים. ובתוך קיים מחרוזת מצוטטת. בסוגריים, בהקשר של printf, ללכת בצד השמאל וזכותו של מה? מה שאנו מתארים שצוטטנו מחרוזת כבאופן כללי יותר? אז זה ויכוח. בכל פעם שיש לך פונקציה, כמו printf, ולאחר מכן paren פתוח ו paren הקרוב ומשהו בתוך זה, בין אם זה מחרוזת, או מספר שלם, או כל דבר אחר, הדבר ב בין הסוגריים האלה נקרא טיעון. וויכוח רק משפיע ההתנהגות של הפונקציה. במקרה זה, זה די ברור איך. X