[השמעת מוסיקה] 

DAVID Malan: בסדר זה CS50 וזה הסוף של שבוע אחד. אז אני רוצה להציג את שלי לשעבר advisee, Andel דאף, שלא רק עושה iPhone 5 עומד גם כן, כמו זה דוכן, הוא גם עושה את המכוניות. אנסל DUFF: איך זה הולך, כולם? אני רק רוצה לספר לכם קצת קצת על פורמולה SAE, מהם אני אני הקפטן. זה צוות של MIT. אני רק רוצה להגיד לך החבר 'ה קצת על זה ואנו מקווים ליצור קצת עניין. 

אז תן לי רק לרוץ דרך כמה דברים על הקבוצה שלנו. אז אנחנו לחלוטין ריצת סטודנט, שבו כל של עיצוב החברים, לדמות, מבחן, ויצרן משנה של המכונית. יש לנו מכונת החנות שלנו ומוסכים, וN52-- או מצטער, N51-- שנמצא באותו הבניין כMIT מוזיאון המדע. ואנחנו האנשים המניע את המכונית. יש תחרות ארצית בתחילת הקיץ, ואז יש קרב יריות קטנות יותר תחרויות לאורך כל השנה. ואז אנחנו עושים אימוני נהג ימים כדי לקבל חברים חדשים להכיר. 

הימים לבנות שלנו הם על שבת 11:00-20:00. ארוחות צהריים וערב מטפלים של, מBertucci של וBeantown בהתאמה. יש לנו פגישה שבועית ו סמינר, שהוא לאשראי כמובן. שהיא חדשה כשל הסמסטר הזה, ו זה יהיה גם לסמסטר הבא, כך שאתה יכול לחצות-reg בשביל זה. ולאחר מכן יש לנו עיצוב, חנות, וימי CAD במהלך השבוע, ואילו חברים באופן עצמאי יהיו חלקי CAD, המניה כדי וכולי. 

אז לחשמלי הנדסה בצוות יש לנו המשיכה שלנו, מערכת מתח גבוה, אשר פועל בנומינלי 300 וולט, הכולל מנועים, בקרי מנוע, ומארזי סוללות. אז יש לנו נמוך מערכת מתח, אשר פועלת ב12 וולט, הכולל פקדים, יכולים צומת, המוח תיבה, ולוח המחוונים. ככל CS הולך, אנחנו עושים יש לי תחזוקת אתר שאנחנו צריכים לעשות לאירועים, חברות שינויים, תמונות חדשות, וחומר הסברה. ולאחר מכן יש לנו קוד ששולט מכונית לבקרת משיכה, ההשקה שלנו שליטה, שליטת מקף, vectoring מומנט, ומערכות בלימת רגנרטיבית, ש לרוץ בדרך כלל בMATLAB, Simulink, וLabView. 

אני אגיד לך קצת על המכונית. אז זה כ -500 ק"ג. זה כללים מוגבלים ל85 קילוואט. יש לו 2 207 מנועים EMRAX ב בחזרה, אחד לכל גלגל אחורי. יש לו סוללה חבילות שהותקן מתאי נרתיק A123 מנסרתיים, בהיקף של 300 וולט ו 5.6 קילוואט. וזה כונן ישיר עם יחס 2.64-1 כונן. הנה כמה תמונות ש לקח ממנו בתחרות. הנה קונוס גב, האף, וכאן הם מנועים, הדיסקים שחורים הגדולים האלה מתחת et mens manus. הנה שקופית שמשכתי מתוך תכנית התחרות שלנו. וזו רק השוואת המכונית שלנו ל כמה מכוניות זמינות מסחרי, כמו KTM XBOW, אריאל Atom, וCaterha M 7-280. אם אתה מכיר עם מחיר, כוח למשוך במשקל, דולרים לכוחות סוס, דולרים למומנט, והמכונית שלנו מפוצץ את כולם מחוץ למים. אם יש לך שאלות, לרשום כתובת דוא"ל זו. לירות לנו דוא"ל בfsae@mit.edu. 

אנו שמחים לדבר על כל דבר שאתה רוצה. הסטודנטים באוניברסיטת הרווארד הם סוג של המיעוט בקבוצה. אם יש לך שאלות כלשהן על שיעשה בבקשה לירות לנו דוא"ל, שמח לדבר, ואני הולך כדי לחזור חזרה אל דוד. תודה. אני מעריך את זה, חבר 'ה. [מחיאות כפות] 

DAVID Malan: אנסל בילה את הקיץ לעבוד איתנו כאן בקמפוס בCS50 בקיץ הזה. ובנוסף לעבודה על דברים כמו הנורות בינארי, הוא ממש ממש נפתח eyes-- ושלי בparticular-- למה שבאמת הצומת של לא של חומרה ותוכנה יכול להיות. למעשה הרבה דברים שהוא פשוט סיירתי אותך בסופו של דבר הם נוצר לראשונה בתוכנה, ולאחר מכן מפוברק סופו של דבר בעולם האמיתי בחומרה. אז אם אתה מעוניין ב לחקור צומת ש, אולי לקחת את הקבוצה. 

עכשיו בינתיים, אלו מכם מי הם אוהדים של טכנולוגיה, ומוצרי אפל ב יודעים בפרט שיש היה כמה הודעות אתמול. אבל חשבתי שכדאי להראות אתה אחד שיצא כמה ימים לפני ש ייתכן שלא ראה. 

יורגן EGHAMMER: אתה יודע, פעם אחת במשהו לזמן מה מגיע יחד ש משנה את הדרך בה אנו חיים. מכשיר כל כך פשוט ואינטואיטיבי באמצעות זה מרגיש כמעט מוכר. היכרות 2,015 קטלוג איקאה. זה לא ספר דיגיטלי או ספר אלקטרוני, זה ספר ספר. 

הדבר הראשון שיש לציין הוא לא כבלים, אפילו לא כבל חשמל. קטלוג איקאה 2,015 מגיע טעון במלואו, וחיי הסוללה הוא נצחיים. הממשק הוא 7.5 ב -8 סנטימטרים, אבל יכול להרחיב ל15 ב -8 סנטימטרים. הניווט מבוסס על מישוש מגע טכנולוגיה שאתה יכול ממש להרגיש. 

תוכן מגיע מותקן מראש באמצעות 328 דפים בחדות גבוהה של רעיונות מעוררי השראה ריהוט הבית. כדי להתחיל לגלוש, פשוט לגעת ולגרור. מימין לשמאל כדי לנוע קדימה, משמאל לימין כדי להזיז לאחור. 

שים לב למשהו אחר? זה נכון. אין פיגור. כל עמוד צלול עומסים באופן מיידי, לא משנה כמה מהר אתה לגלול. אם אתה רוצה לקבל סקירה מהירה, רק להחזיק אותו בכף היד שלך, ורק באמצעות האגודל שלך, מהירות גלישה בתוכן. 

אם אתה מוצא משהו שאתה רוצה לשמור למועד מאוחר יותר, אתה יכול פשוט לסמן אותו. וגם אם אתה סוגר את היישום, אתה יכול למצוא בקלות את הסימנייה שוב. מדהים. 

[שחוק] [מחיאות כפות] אז זה מביא אותנו ל סוף השבוע אחד. כמה הודעות עכשיו. אז חתך כרגע הוא בתהליך. עבור אל כתובת האתר כאן מתישהו בין עכשיו ויום שישי בצהריים כדי לציין למעשה אם אתה בין אלה פחות נוחים, יותר נוח, או איפשהו באמצע. 

זה בדרך כלל אחד מאותם דברים שאתה פשוט סוג של יודע. ולמעשה אלו מכם שפחות נוח כנראה יודעים כל כך הרבה, אלו מכם שהם יותר נוח יודע כל כך הרבה, ושוב, אם אתה לא בטוח ש של דליים אלה שאתה נופל לתוך אתה כנראה איפשהו באמצע. אבל היה סמוך ובטוח שאתה יכול להחליף לאחר כמה שבועות, אם יהיה בכך צורך. 

בינתיים, בשבוע הקרוב לא יתחילו סעיפים כשלעצמם, אבל קטעים סופר, ש פתוחים לכל התלמידים. זה ביום ראשון הקרוב במיקום ל יוכרז באתר הקורס תהיה לנו אחד ל אלה פחות נוחים, כמו גם אחד עבור אלה נוחים יותר. ואלה איפשהו באמצע יכול לבחור איזו משני אלה, או שניהם, אם תרצה, לשבת-ב. והמוקד של אלה יהיה סופו של דבר על C, שנמשיך שיחה של היום. 

בעיה להגדיר 0 בינתיים היא בתקווה בידיים שלך. באופן רשמי מחר בשל, יום חמישי, בשעתי הצהריים. אלא אם כן אתה במזומן באחד 5 הימים שלך בסוף, שיביא אותו עד יום שישי בצהריים. בעיה להגדיר בינתיים 1 תהיה פורסם באתר האינטרנט של הקורס. וזה יהיה ראשון שלנו פשיטה כתובענה לג ושמפרט הבעיה להגדיר ינחה אותך דרך הרבה מכניקה של מה התחלנו לדבר על יום שני, ואנחנו נמשיך לדבר על היום. C, Linux, CS50 מכשיר, כל ש יחכה לכם במפרט. 

שעות פעילות משרד הן בינתיים בהתקדמות, בחדר האוכל לתואר הראשון. ראש לכתובת אתר זו כאן כדי לראות לתזמן להערב ומחר, אם ברצונכם לקחת חלק. שאלות בינתיים, כך שאתה יש לי הזדמנויות לשאול שאלות באופן אסינכרוני, 24/7, מבין שאתה לא מוגבל לסעיפים ומשרד שעות, אלא בכלי זה כאן, CS50 דיון בכתובת האתר ש יהיה מקוון של הקורס תוכנת לוח מודעות, שדרכו אתה יכול לשאול את השאלות של חבריו לכיתה וגם צוות. אז לזכור משאב זה גם כן. בינתיים מסורת מתחיל ביום שישי הקרוב. כפי שאולי הבחין בם מן וידאו טיזר של יום רביעי שעבר, יש לנו מסורת ביותר בכל יום שישי בתקופת כהונתו לקחת כמה 50 תלמידים ו צוות למסעדה מקומית בשם אש וקרח, שבו אנו נמצאים הצטרף בדרך כלל על ידי כמה בוגרים או חברים מתעשייה לבדרך כלל שואפים כדי להפוך את כיתה גדולה מרגישה קטנה יותר. אז זה ארוחת צהריים מזדמנים לחלוטין. חבורה שלנו, צוות במיוחד, ישחק כיסאות מוזיקליים ולשוחח עם תלמידים על 50, חיים מחוץ ל50, חיים בעתיד, בעולם האמיתי, על הזדמנויות עבודה אני מדבר עם חברים בתעשייה. 

אז אם אתה רוצה להצטרף אלינו ביום שישי הקרוב, הראש לכתובת אתר זו כאן. מספר המקומות מוגבל, אבל אנחנו נעשה את זה recurringly לאורך הטווח. הראש יש לcs50.harvard.edu/rsvp. ואם אתה לא מקבל ב הפעם, לא לדאוג. אנחנו נעשה את זה שוב ב בשבועות הקרובים גם כן. 

אז זה התמונה צבענו בשבוע שעבר, ויש לך כנראה היה מתעסק בעד כה. אבל בואו ננסה להתחבר זה עכשיו למה שאנחנו הולכים לעשות היום ואילך. האם אני יכול לקבל מתנדב אחד? בסדר, או כמה. מה דעתך על כאן על הסוף, בחולצה הכחולה. בואו למעלה, מה השם שלך? ALANA: אלאנה. DAVID Malan: אלאנה. אז אלאנה, רק moment-- נחמד לפגוש את you-- הוא הולך לשחק את התפקיד של פונקציה זו כאן. הבלוק הסגול יש לנו נקרא עד כה פונקציה. אז מה שאני מתכוון ללכת קדימה כאן ולהציע אלאנה הוא מעט תג שם, כדי להפוך את ברור מה התפקיד שאתה משחק. 

אז אתה יהיה הבלוק למשל. אם אתה רוצה ללכת קדימה ולשים את זה על. ואנחנו הולכים לשמור את זה פשוט סופר. אם המטרה בהישג היד היא פשוט עכשיו ליישם עם אלאנה, זה מה שנקרא אומר בלוק, הנה איך זה הולך לעבוד. אני have-- בוא נקראים לזה טיעון או פרמטר, זה באמת רק גיליון נייר ריק. וזה לבן כדי להיות סוג של מזכיר של הקופסה הלבנה שלתוכו אתה יכול לכתוב מילות. 

בינתיים אני הולך ללכת כאן. אני הולך קדימה, לכתוב H-E-L-L-O פסיק עולם. ועכשיו אני, כמו אומר מתכנת, לא ממש יודע איך לומר משהו. אני יכול לבוא עם המילים, אבל אני לא בהכרח יודע איך לבטא את עצמי מילולי או על המסך. ואז מה אני הולך לעשות הוא לקחת את הקטע הזה פונקציונאלית, שinput-- או טענה, כפי שאנו קוראים לזה, שכתבתי על פיסת paper-- זה ואני הולך למיקור חוץ את זה. 

ואכן זה התפקיד ש פונקציות בשפת תכנות יכול לשחק. משהו כמו למשל בלוק יכול להיות במיקור חוץ למי שבאמת יודע מה שהיא או שהוא מדבר על. אז אם אתה דורך על כאן רק לרגע, אני הולך לעבור קלט זה כדי אלאנה, ומבקשת ממך לומר קלט זה. 

ALANA: שלום, עולם. DAVID Malan: זהו זה. כך שיש פונקציה. עכשיו אנחנו יכולים לקחת את זה קצת יותר, אנחנו יכולים לקחת צעד קדימה כאן. מכיוון שהיה ברור שהן משעממות. אז בואו עכשיו להמיר את זה ל משהו קצת יותר מתוחכם. 

אז זה כמובן הוא גרסת C שלנו. אז עכשיו אם אתה רוצה לקחת את זה את אחד, שתג שם מ, ובואו יש לך לשים על שם חדש. אבל ביסודו אתה משחק את אותו התפקיד, זה פשוט כל כך קורה ל להיקרא printf עכשיו. 

הסיפור הוא, כמובן, הולך be-- כנראה בדיוק כפי שunderwhelming-- הוא הולך להיות הבא. כעת אתה printf הפונקציה. אני מתקשר, או מתכנת, מי שרוצה לעמוד על כתפיהם של אנשים בעבר כמוך, שכבר הבינו איך לבעצם לכתוב משהו למטה. ואז זה זמן, ולא אומר את זה בוא למעשה להשתמש במסך שלנו כאן. אז אם אתם רוצים לשלב כאן, אני הולך לעבור את זה שוב כ קלט לחבר printf שלי. אם אתה יכול ללכת קדימה ו להדפיס כי על המסך, פשוט על ידי ציור עם שלך אצבע על המסך השחור. מצוין. בסדר, כל כך הרבה מתח ל איך זה הולך לשחק בחוץ. 

אז עכשיו בואו ניקח את דברים אחד סופי חריץ, אם היינו יכולים, באופן הבא. אז זה תכנית C כפי שאמרנו בפעם האחרונה. וזה פשוט עושה את מה שעשה, זה מדפיס למסך, שלום, העולם. למרות שיש באופן ברור הרבה דברים מסיחים את דעת שם למעלה. אבל בואו ניקח את דברים ברמה גבוהה ו להציג את הגרסה זו, שזוכרת הייתה הגרסה השלישית ש זה הסתיים עם זמן שעבר. 

ועכשיו יש באופן ברור שני שימושים של printf. יש 2 שיחות לאלאנה במקרה זה לprintf, אבל יש גם שיחה לפונקציה אחרת. מה הפונקציה שבבירור? Getstring. 

האם אנחנו יכולים לקבל מתנדבים יותר? אישור, בחייך עד. מה שמך? 

חאבייר: חבייר. 

DAVID Malan: חבייר, לבוא בעד. אז התפקיד של חוויאר הוא על זה חתיכת נייר. שאני הולך לקרוא בשמה הגנרי של. עכשיו זה משתנה, זה של מחרוזת סוג, כפי שמשתמע על ידי שהשורה שנייה באמצע יש. ואני רוצה שתלך להביא לי מחרוזת. באופן ספציפי את הראש למטה לתזמורת סעיף ותשיג לי את שמו של מישהו, ולחזור עם משתנה המכיל ערך ש. זה יכול להיות מי שאתה רוצה. 

הנה אנחנו מתחילים. בסדר, חוויאר הוא כותב את שמו. בסדר. כולנו יכול כנראה לנחש איך זה הולך לשחק בחוץ. אנחנו להמשיך ולהציק אולי הנקודה של מה ש פונקציה היא עושה, אבל בכל זאת תודה רבה לך. 

אז חאבייר חזר במחרוזת זו כאן, ש, לא ממש יכול לראות, יהונתן הוא המחרוזת שאנחנו כבר קיבלנו. אז עכשיו מה שאני בעצם הולך אם כי כדי לספק לאלאנה הוא משהו קצת שונה. משום שבגרסה זו של תכנית, ראשון יש לציין את השם שלך. אז הטיעון הראשון אני צריך לספק אלאנה עם הולך להיות פשוטו כמשמעו לציין את השם שלך. בסדר, כל כך פשוט כמו ש אני היה נותן לך את זה. וכשאני כותב את הטיעון הבא, אם אתה רוצה ללכת קדימה ולכתוב את זה על הלוח, בואו נלך קדימה ולעשות את הדוגמא האחרונה כאן כדי להפוך את לנקות את מה שסופו של הדבר הגיע ליקרו. אז תציין את השם שלך, לכתוב אותו לכיוון החלק העליון אם לא אכפת לך, רק כדי ש יש לנו מקום לשורה אחת שנייה. כי הדבר האחרון שאני הולך כדי לספק לך עכשיו עם לא אחד, אבל שתי פיסות נייר. 

בסדר. H-E-L-L-O פסיק ולאחר מכן שורה ריקה. אז מה שאני עומד למסור אלאנה עכשיו הוא משהו קצת שונה. לא רק שהיא מקבלת את זה, שבו למלא את החסר מייצג שpercent-- מה היה מציין מיקום אנחנו כבר משתמשים? כן, כל כך אחוזים של. בינתיים אני הולך לעבור שלה בטענה שנייה, ש זה בדיוק מה שחאבייר שנאסף מיונתן. 

אז תן לי לתת לך את שני אלה. אם אתה רוצה, ללכת קדימה והדפסה שהשפעה. מה סופו של דבר שקורה עכשיו היא, אלאנה שוב הוא משחק את התפקיד של printf. חאבייר שיחק התפקיד של GetString. כדי שיהיה המזכרת שלך. וסופו של דבר מה שקורה, למרות זה כן hello-- קדימה ופסיק. ALANA: האם אני מקבל עדיין או לא זה? DAVID Malan: כן, אתה קיבל את שניהם בבת אחת. אז הרעיון הוא שאתה עכשיו יכול להעיף את הדף כדי לטפל בשני של שתי כניסות אלה. אז זה רק לפטיש הבית להצביע ואילו אלאנה להורג ש קו ירוק זה כאן, ולאחר מכן חוויאר עשה את זה עבורנו ותחזור אליי משהו אנחנו קוראים לזה, אבל זה היה באמת רק פיסת נייר משלו. ועכשיו אלאנה עשתה שורה שלישית זה. 

ולמרות שכל זה נראה כך לא ברור מאליהם מאוד אולי במבט ראשון, זה באמת הוא פשוט כמו ש. עובר תשומות מסביב, מקבל תפוקות, או שהחזיר פיזי משהו, או לראות תופעת לוואי כמו זה. משהו מבחינה ויזואלית נכתב על המסך. אז בואו נלך קדימה ו תודה אלאנה וחבייר, מי שהיה כאן למטה, ל מצטרף אלינו לכאן. 

[מחיאות כפות] 

אז עכשיו בואו ניקח כמובן מאליו עד כמה פשוט כל זה יכול להיות. ובואו להמשיך למעשה לעשות משהו בקוד עצמו. אז על המסך כאן הוא מסך של מכשיר CS50 מה שנקרא. ואם היה לך ב, כ 2:00 ביום רביעי אחר הצהריים, להסביר לכמה חבר מה מכשיר CS50 הוא, איך אתה הייתי מגדיר אותו במשפט? כל משפט אחד? כן? סטודנט: זה כמו תכנית זה עושה את המחשב של כולם לרוץ עם אותה המערכת. DAVID Malan: טוב! מדוברים בתכנית המאפשרת לכולם מחשב לפעול עם אותה המערכת. זה סוג של משלך עותק של הפעלה מערכת שקורה לי ייקרא אובונטו לינוקס. והיא פועלת ביעילות בתוך חלון על מק שלך או במחשב אישי, כך שזה דרך נכונה מחוץ לשער בשבוע 1, כולם כאן בכיתה יש לו גישה לאותם כלים, אותה התצורה, ואין ספציפי עקומה למידה לMac או מחשב אישי בפרט. 

עכשיו אנחנו נפתחתי, בתוך CS50 מכשיר ביום שני, בתכנית זו כאן. זה קורה להיקרא gedit. אבל זה באמת רק עורך גרפי. זה משהו כמו פנקס רשימות או טקסט ערוך על Windows או Mac OS, בהתאמה. ואני הצעתי שהיו באמת שלושה חלקים חשובים במסך זה. הצד העליון שבו אתה תכתוב את הקוד שלך. וזה שבו אנחנו מבלים הרבה משלנו שלוש דוגמאות בהרצאה של יום שני. התחתון אנו נקראים מה, החלון השחור הזה, כן? 

סטודנט: מהדר? 

DAVID Malan: אנחנו מהדר גישה בדרך של חלון ש. אבל באופן כללי יותר. כן, זה היה רק ​​חלון מסוף. זהו טווח גיל ישן שרק מתאר בעצם מצמוץ הפקודה, שהשנים השתמשו לפני להיות על אחד מהצגים הגדולים בסגנון CRT אלה. אבל בימינו זה מעין וירטואלי בתוכנה. וחלונות המסוף בואו לנו להקליד פקודות. זה סוג של הגרסה הפשוטה יותר של ממשק המשתמש או ממשק המשתמש. זה לא גרפי ממשק משתמש או GUI, זה ממשק מבוסס טקסט או ממשק שורת הפקודה. 

ואכן זה המקום שבי סופו של דבר הייתי מסוגל לכתוב קצת קוד. ברגע שכתבתי קצת קוד אם כי, זוכר שהייתי בפקודה זו. וכפי שהוא שם סוג של מציע, זה מאפשר לי לעשות תכנית בשם שלום. אבל מה זה באמת עושה? ובכן האיפור היה לוקח שלי קלט, קוד המקור שלי, והמרת אותו למה, סופו של דבר? 

קוד אובייקט. וקוד אובייקט הוא רק אשליה דרך לומר אפסים ואחדים. ואז ברגע שאני רוצה לרוץ כי קוד אובייקט, פעם אחת רציתי לעבור כקלט אלה אפסים ואחדים למחשב שלי המוח, המעבד שנקרא או יחידת עיבוד מרכזית, הייתי צריך להפעיל את התכנית. אבל זה לא היה די פשוט ביום שני כרק לחיצה כפולה על סמל מסוים. מה במקום שיש לי ל לעשות כדי להפעיל תכנית? 

מה זה הייתה הפקודה שנייה? אני שומע קצת נטוי? כן, כן? 

סטודנט: דוט סלאש שמו של התכנית. DAVID Malan: בדיוק. דוט סלאש שם של התכנית. עכשיו מה זה אומר? ובכן הנקודה היא רק דרך מסתורית לומר ספרייה נוכחית. לא משנה מה תיקייה שנמצא בהוא הפניה כ, מיוצג כנקודה. הקו הנטוי הוא בדיוק מה שראית בMac OS ושל Windows במשך שנים, זה מפריד בין ספרייה או תיקייה ושאר כמה שם. בWindows זה קורה ללכת לאחור, בלינוקס ומק מערכת הפעלה זה קורה ללכת קדימה. אבל זה רק המפריד, כך שזה רק פרט תחבירי לא מעניין. 

החלק העסיסי של קורס הוא השם של התכנית, שלום. וזה מה שהופך אותו יצר למעננו. זה ישודר קובץ שעבורנו. אבל איך הגיע לנקודה ש? עכשיו בואו תשאלו את שאלה, מה היה באמת קורה כאן, לפחות עם ביחס לחלק מתחביר זה? 

אז במשפט או כך, איך אנחנו מסבירים שם שורה הראשונה זה זה מסומן בירוק? מה זה היה השורה הראשונה עושה, ביחס לתכנית שלי? כן? 

סטודנט: [לא ברור]. DAVID Malan: תגיד את זה שוב? סטודנט: כולל והורדה הפונקציות האחרונות [לא ברור]. DAVID Malan: טוב. כולל, אני לא אגיד הורדה, אבל בואו נגיד ש אנשים כוללים פונקציות ש כתב בעבר. ופונקציות אלה מיושמות אי שם במחשב שלי. מישהו כתב קובץ לפני שנים, ושקובץ הוא אי שם בתוך CS50 מכשיר, או על הכונן הקשיח שלי באופן כללי יותר. וכך הקו הזה אומר בעצם, ללכת למצוא את הקובץ, אני סטנדרטי / נקודת O h, ולהעתיק ולהדביק את התוכן שלה ממש כאן בחלק העליון של התיק שלי כך שאין לי ל לעשות את זה באופן ידני את עצמי. 

ובין החתיכות העסיסיות ביותר בתוך הקובץ שטענו היה מה פונקציה? מה פונקציה שאנחנו אומרים הוכרזו או מוזכר באני סטנדרטי / h הנקודה O רוב? סביר Printf, נכון? לא אנחנו כתבנו את printf על יום שני, זה פשוט קיים. בדומה אלאנה באה רק על במה והיא פשוט קיים וידע איך לצייר משהו על המסך, כך אין printf קיים במשך שנים רבות. ואז זה איך אנחנו לגשת אליו. עכשיו, אם אנחנו עוברים כאן, עיקרי היו שאנחנו דומים אמר לפיסת הפאזל נקרא כאשר הדגל ירוק לחץ בעולם של גרד. זה פשוט סוג של שם ברירת מחדל שבני אדם החליט ייצג את ברירת מחדל נקודת כניסה לתכנית. הנתח של קוד תכנות שמקבל להורג ראשון. 

בינתיים סוגריים המסולסלים אלה כמו סוג של הצורה המעוגלת של הרבה חתיכות צהובות שריטה אלה. הם סוג של לתמצת כל חבורה של הוראות יחד. אז זה פשוט סוג של נקשר יחד חלק מהפונקציונליות נלווה. printf כמובן הוא פונקציה ש מדפיס את המסך, כפי שאנו רק עשינו. 

מה לגבי הסוגריים האלה? איך היית define-- גם אם יש לך אף פעם לא מתוכנת לפני, אבל רק על סמך עכשיו בהגדלה אינטואיציה בתקווה, מה ש הם הסוגריים עושים לנו כאן? או את מה שהם מקיפים? כן? 

סטודנט: הם אומרים מה ש אתה הולך להדפיס עם printf. 

DAVID Malan: כן, הם אומרים את מה ש אתה הולך להדפיס עם printf. או באופן כללי יותר, הם המקיף את התשומות לפונקציה. אז אתה כמעט יכול לחשוב של סוגריים אלה כמו להיות כמו המתכת קליפ על לוח זה. זה מה שמחזיק, זה מה ש הולך לשמש כדי לספק טיעונים לפונקציה, אשר ב מקרה זה נקרא printf. 

אז באופן כללי כמעט בכל זמן שאנו מכנים פונקציה, אנחנו הולכים לראות סוגריים זוג. אולי עם משהו בזה, כמו עכשיו, אולי בזה שום דבר. אבל זה שבו היית לשים התשומות או טיעונים שנקרא לפונקציה. 

הנה טיעון אחד כזה. אני כבר הדגיש את הכל בין הציטוטים, כי מתברר בשפה זו נקראת C, כאשר אתה רוצה לייצג string-- שהיא מילה או צירוף מילים או אפילו paragraph-- שיש לך להקיף אותו במרכאות כפולות. ציטוטים לא יחידים, במרכאות כפולות. וזה בדיוק מה שעשיתי כאן. 

בינתיים יש פאנקי סמל לקראת הסוף שם. N הקו הנטוי. מה שאנחנו לא אומרים את זה מיוצג? כן? 

סטודנט: קו חדש. 

DAVID Malan: קו חדש. נכון, אתה לא בדרך כלל על Enter כאשר אתה רוצה תכנית לירוק את קו חדש. במקום זאת אתה אומר את זה באופן מפורש עם החתיכה אמנם המסתורית הזה של תחביר, n הקו הנטוי, ש אתה רוצה קו חדש ללכת לשם. לבסוף פסיק. אנחנו לא ממש מדברים יותר מדי על זה, וללא ספק זה יהיה הקללה של כמה הקיום שלך לבעיה הראשונה נקבע, כאשר אתה פשוט לא מבין שכחת משהו כמו טיפשים כפסיק. ובאופן כללי לשים את זה יהיה לתקן את בעיה. אבל מה זה עושה עבורנו, היית אומר? 

סטודנט: [לא ברור]. 

DAVID Malan: מצטער? 

סטודנט: [לא ברור]. DAVID Malan: גימור הצהרה. זה כמו סוג של תקופה ב סוף המשפט אנגלי, ואילו בשפה זו C זה מסתיים בהצהרה. הוראה של תכנות קוד שאתה רק רוצה לומר, אני גמרתי עם זה. עכשיו שם לב שזה אחד רק כאן. אז אתה לא רוצה לקבל ב הרגל של פסיק לשים אחרי כל סוגריים סגורים. למשל יש אף אחד הבא לביטול, ואנו תחזור בעתיד למה חלל אמצעים. אבל במקרה הזה printf שלך הוא פונקציה, או בשימוש הצהרה, וכך אנחנו רוצים שיהיו לי ש תחנה סופית בסוף מאוד שלו. 

ואני בכוונה אני קולט על ג ו בכנות הרבה שפות כמו C, C ++, Java, JavaScript, וכל מספר של יש לי שפות אחרות הרבה מאלה סוג של פרטים תחביריים. זה בהחלט אם אתה חדש תכנות יכול באמת להכשיל אותך. ואתה, לסמן שלי מילות, כמה מכם יש להם ניסיון זה בשעתי עבודה או בסוף בלילה עובד על כמה p-סט, שבו התכנית הארורה שלך פשוט לא לקמפל, זה לא לרוץ, יש לך אין לי מושג מה לא בסדר, זה נראה לגמרי מבחינה לוגית נכון לך. וזה בגלל ששכחת משהו כמו להכות פסיק בסוף איזה קו. 

אבל אלה הם הסוגים של דברים שאתה הולך ללמוד באופן מיידי כדי לראות. ואכן אלה הם הדברים שיש לי וTF של של CA הוכשר סוג של לראות הרבה יותר מהר ממה שאתה. ואז זה רק כדי לומר, כפי שאתה לצלול לתוך בעיה מוגדרת 1 במיוחד, לא מקבל מתוסכל מהחומר הזה. ברגע שאתה סוג של מתאקלם לעולם, אתה מתחיל לראות דברים שאתה אולי לא לראות במבט ראשון בשבוע ראשון זה. 

אז קוד המקור הוא משהו כזה. אנחנו רוצים להעביר אותו ל מהדר מה שנקרא. והמהדר כי כ אמרנו מספק פלט הידועה בשם קוד אובייקט, מה שנקרא אפסים ואחדים. אבל משם, מה שנותן לנו? ובכן, זה נותן לנו את הדפוסים הללו. ושוב המחשב שלך, אינטל שלך בפנים, מבין את הדפוסים הללו של אפסים ואחדים. ולפעמים הדפוס מייצג מספר עשרוני בפועל כפי שראינו בשבוע שעבר, לפעמים הוא מייצג מכתב כמו שראינו בשבוע שעבר, לפעמים היא מייצגת הוראה, כמו הדפסת משהו למסך. 

אז printf לinstance-- אלא, תן לי אחורה. אנחנו כבר לוקחים כמובן מאליו כי מי אפסים ואחדים הם המיוצר על ידי איפור בפקודה זו. אבל איפור הוא לא מהדר. לעשות הוא לא הדבר באמצע שמייצר אפסים ואחדים. ולא לעשות הוא פשוט מאוד נוח תכנית בשם מטרתם בחיים הוא למעשה כדי להבין איך לקמפל את התכנית שלך. ואנחנו משתמשים בו באלה שבועות הראשונים כי זה פשוט חוסך לנו הרבה צרות. 

אבל מה לעשות הוא באמת עושה כאשר אתה מהדר את שלום, הוא, כפי שאמרנו בפעם האחרונה, זה מחפש בכונן הקשיח או בתיקייה הנוכחית, ל קובץ בשם מה, כנראה? Hello.c, נכון? זה פשוט סוג של מוסכמה. זה שרירותי, אבל ככה דברים. הפוך, אם אתה רק לציין את השם של תכנית שאינו קיימת עדיין, זה הולך לחפש את קוד המקור בקובץ, כברירת מחדל פירוש hello.c. ואם הוא מוצא אותו, גדול. זה הולך להמיר מקור ש קוד לקוד אובייקט בשבילך. 

אבל הזן בכל פעם שאני כבר פגע לאחר שרץ לעשות שלום, אתה זוכר שראית בפעם האחרונה ארוך למדי ורצף נסתר של אותיות הלבנות אחרות ו דמויות על המסך? ובכן זה היה הפקודה בפועל, מהדר בפועל, שפעל. אז מהדר בפועל אנו נשתמש ביותר של הסמסטר הוא משהו שנקרא צלצול. חלק מכם אולי השתמש של Visual Studio לפני, או GCC, או כל מספר של מהדרים אחרים. אנו נשתמש בצלצול. 

וצלצול מאפשר לנו להמיר למעשה קוד המקור שלהתנגד קוד. מה עושה את זה בפועל אומר בפועל? ובכן תן לי להיכנס לאחד התיקיות שלי מעת האחרונה. בתוך מכשיר CS50. ותנו לי ללכת קדימה וליצור את זה אותו קובץ, כולל h נקודת קלט / פלט הסטנדרטי. void main int. ואנחנו נחזור בעתיד כ למה int אמצעים ומה אמצעי חלל. אבל לעת עתה בואו נעשה שלום n הקו הנטוי עולם, בדיוק כמו שעשינו על הלוח. 

תן לי לשמור את הקובץ הזה שנקרא hello.c. ועכשיו אם אני רוצה לקמפל את זה אני could-- תן לי להתקרב in-- ריצה לעשות שלום להיכנס. וזה היה שוב כי קו מאוד ברורים מאליהם. אבל מילה עכשיו לפחות אחד כנראה קופץ עליך. צלצול הוא קו שראינו לפני. עכשיו יש הרבה דברים אחרים בכנות שננפנף בידות שלנו להיום. אבל יש כמה תת קבוצות, כמה תווים בכאן שיש בם עניין. אבל אני הולך קדימה ולעשות את זה. אני הולך לריצה הראשונה שלום, רק כדי להוכיח כי זה עובד כמו שזה היה ביום שני. אבל עכשיו אני הולך למחוק את התכנית. וממש כמו שהיו לנו אלה שמות קצרים בפעם האחרונה, הפקודה להסרת משהו הוא rm, להסיר, להיכנס. אתה הולך לקבל קצת שאלות למדי נסתרות. קשה להאמין שאתה יכול לעשות אפילו על שאלה זו קשה להבנה. אבל להסיר את שלום קובץ רגיל פשוט אמצעי לעשות רצונך למחוק שלום. 

ואני יכול להמשיך ולהקליד y עבור כן, הזן, ועכשיו זה נעלם. מה שזה אומר עכשיו, אם אני לנקות המסך שלי, הוא שבמקום עושה לעשות hello-- יודע מה, אני מקבל טוב בזה. אני הולך להפעיל את המהדר עצמי. אני לא צריך איזה תכנית ל להבין מה הקובץ שלי נקרא. כתבתי hello.c, אני יודע מה זה נקרא, אני בבירור מסוגל להקליד ש. אז אני הולך קדימה ואל מצלצל hello.c הזן. 

נראה שזה עובד. ואין שום פלט נוסף, כי צלצול הוא מהדר. זה מה שההמרה קוד מקור לאפסים ואחדים. אז אם אני עכשיו עושה נקודה לקצץ שלום הזן, HM. הודעת שגיאה חדשה היום. אז bash הוא רק שמו של מהבהב הפקודה שבו אנו משתמשים. זה פשטני ברוטו, אך לעת עתה זה כל מה שהוא, זה הפקודה המהבהבת. וזו הסיבה שהוא צועק עלינו. 

אין כזה קובץ או ספרייה היא קצת יותר פשוט. אבל אין ספק שאני עשיתי שהקוד האובייקט. אבל המלכוד הוא, ש אם אני מקליד את הפקודה לפירוט התוכן של זה ספרייה, שהוא מה? ls לרשימה. יש כל מיני דברים בפה, שחלקם הגיע עם המכשיר, כמו תיקיית שולחן העבודה שלי, הורדות תיקייה, תיקיית Dropbox, וכל דברים ש. אבל מה שמעניין הוא hello.c, ש אני יצרתי לפני רגע עם gedit. ומה הכי המוזר מחפש שם לכאן, אולי כי אנחנו לא לראות בפעם האחרונה בכלל? 

a.out, נכון? אז בחזרה ביום, זה שרק הוחלט כאשר אתה לקמפל תכנית בפעם הראשונה, ולא תציינו את השם של קובץ, בואו נקראים לזה. וa.out רק אומר שזה היה הפלט של המהדר. אז זה שם נורא לתכנית. אבל לפי ההיגיון הזה, נקודה לקצץ ל ספרייה נוכחית, לקצץ a.out, צריך לומר שיש בעובדה שלי שלום תכנית העולם. עכשיו קצת יותר מדי לחמם את התרגיל,. אם אני רוצה לשנות את השם הזה קובץ, מתברר שאתה להעביר קובץ משם אחד למשנהו. a.out אז MV, ולאחר מכן אני אפשר לקרוא לזה שלום על Enter. אז זה הפקודה בלינוקס. היה לי DOS את זה לפני שנים, Windows יש חלון מסוף מסוג כלשהו שנראה ככה, לינוקס ומקינטוש יש להם מחשבים מהיר מהבהב זה. למרות שרובנו כנראה רק לעתים רחוקות, אם בכלל, להשתמש בו. 

אבל מה שעשיתי הוא לרוץ תכנית, ששמה MV, ואני כבר סיפקנו אותו עם שני טיעונים, אם אפשר לומר כך. שתי כניסות. a.out הוא השם המקורי. שלום הוא שמו החדש. אז אם אני עכשיו לעשות לוכסן נקודה שלום, הזן, שקיים. ואם אני עושה את a.out לוכסן נקודה, מה אתה מצפה שאני צריך לראות? 

Bash, אין כזה קובץ או ספרייה. כי אני פשוט שיניתי את שמו. אז זה לוקח קצת הזמן להתרגל אליו. אבל הבעיה להגדיר 1 מפרט באמת יהיה להחזיק את היד שלך דרך חלק מminutae זה. בגלל זה הוא מלא הסחת דעת אינטלקטואלית ממעניין יותר רעיונות בהישג היד, ש הוא יצירת למעשה משהו מתוך קוד. אבל בואו נעשה שינוי אחד עכשיו לתכנית זו. 

נזכיר כי הפעם האחרונה שעשיתי משהו ככה, printf לציין את השם שלך. ואכן אנחנו פשוט עשינו את זה על המסך הגדול שם. ואז עשיתי מחרוזת של מקבל GetString פארן פתוח, קרוב פארן. ורק קצרנות פארן סימון לסוגריים. אז האם GetString לקחת כל טיעונים? אין תשומות שלא, אבל זה צריך הסוגריים, כי זה מה שתוחם הייעוד של פונקציה. 

אז אני הולך קדימה ולנסות להפעיל את המהדר על תכנית זו עכשיו. hello.c הצלצול, כי אני לא שינה את שמה לעת עתה. ויש לי חבורה של טעויות. בואו להקטין את התצוגה כאן. אם אני לגלול מעלה שוב, כמו שאמרתי בפעם האחרונה, ל, אותה השגיאה הראשונה כי יש לי בפעם האחרונה. על קו 6 של hello.c היה לי מחרוזת מזהה לא מוצהרת, לא אני מתכוון סטנדרטי ב? אני לא עשיתי זאת. כי מה שיש לי טעות שנעשה בזה תכנית, אם אתה זוכר מפעם האחרונה? כן, אנחנו צריכים מה שנקרא גלגלי עזר שאנחנו פשוט להשתמש במשך כמה שבועות. אבל אני צריך לציין שגם, אי שם בתוך המכשיר, מקורו של קובץ שכתבנו רק לפני כמה שנים. בתוך שהם פונקציות כמו כנראה GetString. אז עכשיו אם אני חוזר לכאן, להגדיל את התצוגה, וhello.c צלצול להפעיל מחדש. לעזאזל, שגיאה אחרת. אבל אנחנו לא ראינו את זה לפני. 

זה אחד זה קצת יותר אזוטרי להבין. אבל זה בכוונה תחילה על המסך, כי רצינו לספר את הסיפור הזה. כאשר אתה מהדר את hello.c, בדיוק כפי ש התמונה מהציעה לפני, אתה ממיר רק ש קוד מקור לאפסים ואחדים. עכשיו צוות CS50 לפני כמה שנים כתב CS50.h, וקובץ מקביל, CS50.c. ואנחנו, לפני כמה שנים, הידור קבצים אלה לקובץ שקורה להיקרא CS50.o. 

או ניתן לשנות את שמו כמה דברים שונים. אבל זה דרך פשוטה לחשוב על זה. אז אנחנו מלוקט CS50 של ספרייה לאפסים ואחדים. אבל בשום מקום שאני צוינו כי אני רוצה לשלב אפסים שלי ואלה לעולם שלומי תכנית עם האפסים ואחדים שצוות CS50 יצר כמה שנים לפני לתוך תכנית אחת שלמה. כל מה שצוינתי על ידי כתיבה hello.c צלצול הוא לקמפל hello.c. 

כבר לא אמר לי צלצול ל קישור באפסים ואחדים שצוות CS50 נוצר בשבילך לפני כמה זמן. אז זה תיקון קל, מקף l לקישור, CS50. ואנו רואים את זה שוב לא עבר זמן רב שוב ושוב. אבל שם לב עכשיו שלא היו תלונות. אז עכשיו אם אני מפעיל את הקו נטוי נקודה שלום, עכשיו זה עובד. למרות שזה קצת מטעה מאז אני פשוט מחדש מה קובץ? a.out. 

אז תן לי אחורה לרגע. התכנית אנחנו רק הידור יש לו שלוש השורות של קוד. כשרצתי שלום עולם, שלום רגע לפני, אני לא ראיתי את שמך. וזה משום שרצתי גרסה ישנה של התכנית. אבל אם אני אכן מפעיל a.out לוכסן הנקודה הזן, תציין את השם שלך, רוב, שלום, עולם. הממ. זה סוג של באג. התכוון כנראה לומר רוב, נכון? אז מה התיקון כאן בקוד. סטודנט: [לא ברור]. DAVID Malan: בדיוק. אז אני פשוט צריך לעשות את זה לצבוט סופי כך שאני מעביר במציין מיקום, כמו למלא את החסר, כמו שעשינו לפני רגע. אבל אחוזים של עכשיו הממלא את החסר. אז לבסוף בואו לגלות אחת אחרון פרט כל כך שאין קסמים. אני הולך קדימה כדי להיפטר מhellow. אני הולך קדימה כדי להיפטר מa.out. אז עכשיו אין לי תוכניות, רק קוד המקור שלי. ואני הולך לרוץ הפקודה מעט ארוכה יותר, צלצול מקף o שלום LCS50 מקף hello.c. 

עכשיו זה מתחיל סוג של ללכת באוזן אחת ויצאתי מהשנייה אולי. אבל רק להפריד את מה שזה עושה. צלצול הוא מהדר, LCS50 המקף בכוונה ממש בסוף עושה מה במשפט? קישורים לספריית CS50. תופס את האפסים ו אלה שצוות עשה ודוחס אותם לתוך התכנית שלי. אז השאלה האחרונה שעל הפרק היא, מה הוא מקף o שלום כנראה עושה, גם אם יש לך אף פעם לא ראה תחביר זה קודם? 

פלט תכנית זה לא בשם a.out ברירת המחדל. ולא שזה בשם שלום. אז עכשיו אין a.out. אין כזה קובץ או ספרייה, כי אני במפורש אמרתי קורא תכנית זו שלום, כך ש עכשיו אני יכול להקליד שם כמו ש ויש לו להתנהג. 

עכשיו בכנות, ילד הוא ש לא מעניין שיש לזכור את כל זה פרטים קטנים קטנים, נכון? אז בואו נלך קדימה ו להיפטר משלום שוב. ובואו עכשיו לחזור לעולם ב שזה מספיק כדי לומר לעשות שלום. אבל זה הקסם ש לעשות הוא עושה בשבילך, זה השעמום ש זה עושה לך. והתוכניות שלנו ו בעיות לקבל יותר מורכבות, לעשות יהיה באמת להיות חבר שלך. מכיוון שלא ארוך מדי מעכשיו אנחנו הולכים יש תוכניות שנכתבו לא עם מספר קבצי קובץ אחד, אבל, ולעשות יהיה להפוך את התהליך של קומפילציה יחד את כל זה בשבילנו. 

אז עכשיו להדפיס. printf הוא בתוך קובץ זה, סטנדרטי I / h נקודת O, שראינו לפני, אבל יש עוד printf מזה. יש n הקו הנטוי ההפוך, אבל יש גם חבורה של רצפי בריחה אחרים. ורצף בריחה הוא רק דרך מפוארת לומר משהו שמתחיל עם קו נטוי, לא קו נטוי, קו נטוי, ועושה משהו מיוחד. ואנחנו לא להתעכב על רוב אלה, אבל למה הוא שם מהלך סרק ציטוט כפול, מה אתה חושב? מדוע יש הרצף המוזר הזה של דמויות, ציטוט כפול קו נטוי, מדוע ייתכן שיהיה שימושי? סטודנט: [לא ברור]. DAVID Malan: בדיוק, נכון? היזכר תכנית שלום העולם שלנו שראינו כמה וכמה פעמים עכשיו, בכל פעם שראינו שעולם שלום תכנית שהיו לנו במרכאות כפולות בתוך מהם הוא שלום פסיק n הקו הנטוי עולם. אבל חושב לעצמך, מה אם אתה באמת רציתי להדפיס את סימן מרכאות? האינסטינקט הראשון שלך יכול להיות, אני לא יודע למה אולי אני רוצה do-- כאן, אנחנו יכולים להיות קצת פסיביים שלום חבר אגרסיווי,. אנחנו אולי רוצים לעשות משהו כזה. 

אבל למה זה עכשיו בעייתי? התעלמות הציטוטים המתולתל בצד ש מרכזי שנעשה עבורנו באופן אוטומטי. למה זה בעייתי? 

בדיוק. בגלל שיש לי כמו 4 מרכאותינו. ובכן הראשון כנראה הולך עם השני, ואולי הרביעי אחד הולך עם שליש, או, אני אומר שאני אפילו לא בטוח, ולא הוא המחשב הולך להיות. מחשבים שוב, מהדרים שוב, הם די מטומטמים. הם רק יעשו את מה ש אתה אומר להם לעשות. ואם אתה לא חד משמעי שהם כנראה הולך לזרוק שגיאה. 

אם אתה לא חד משמעי לגבי איך להפוך את כריך חמאת בוטנים וריבה דברים מוזרים יכולים להגיע. זה אותו הרעיון. עכשיו די אם נאמרתי שיש כמה רצפי בריחה אחרים, אבל אנחנו נבוא לאלה לפני זמן רב. בעיקרו של דבר בריחה אלה רצפים מייצגים משהו שייתכן שלא תוכל בקלות רבה מדי על המקלדת, בלי לבלבל את המחשב. 

עכשיו בינתיים יש לנו מצייני מיקום בprintf. ד אחוזים, אשר יכול גם להיות כתוב כמעט בכל המקרים שאני אחוזים, הוא מציין מיקום עבור איזה סוג של נתונים? איזה סוג של ערך? מספר עשרוני. אז בעצם נתחיל באמצעות i אחוזים כי זה קצת פשוטה יותר, כמו מספר שלם. אני אחוזים. מספר שלם שקורה להיות עשרוני. 

אחוזים שלנו כבר אמרתי היה מציין מיקום של מחרוזת. אשר היא רק מילה, ביטוי, סעיף, מאמר, כל מה. זה רצף של תווים של כמה אורך. ואנו רואים לפני זמן רב כמה מאלה ואחרים. אבל אחוזים ג הוא לתו בודד. f אחוזים היא ל מספר עשרוני, כמו מספר אמיתי שיש נקודה עשרונית בזה, ש הוא כמובן אינו מספר שלם. ויש כל כמו גם חבורה של אחרים. 

בינתיים בC, ו בהרבה שפות, יש לנו נתונים מסוגים שונים. סוגים שונים של זכוכית קערות אם תרצה. הקערה הייתי בפעם האחרונה היה לכדורי פינג פונג, אבל אנחנו גם יכולים לאחסן שונים ערכים כמו תווים ומחרוזות ומספרים שלמים במכל, כמו משתנה, יש וC אלה. תו הוא הסוג של נתונים, סוג משתנה, שבו אתה יכול לאחסן אופי. Float הוא סוג של משתנה ב שבו אתה יכול לאחסן מספר אמיתי. 

Int הוא כמובן לint. ולא עד כדי גיחוך שם ארוך ארוך המקום שבו אתה יכול לאחסן במהות מספר ממש ארוך, עם אף יותר ספרות אז חנות כוח int טיפוסית. אבל אנחנו נחזור לזה לפני זמן רב. 

בשעתי נקודת CS50 בינתיים קובץ הכותרת האחר שראינו כמה פעמים בשימוש, יש שני סוגי נתונים אחרים ש לא קיים בC בדרך כלל. אחד מהם הוא מחרוזת, ואנו רואים ב כמה שבועות מה מחרוזות באמת הם מתחת למכסת המנוע. ואחד הוא בול. וbool הוא משתנה ש רק יכול לקחת על ערכים מסוימים. ורק על סמך השבוע שעבר הסבר של Scratch, ולאחרונה ג, מה היית לנחש שני ערכים אפשריים עבור כמה מיכל שהוא של bool הסוג? 

כן ולא. אחת ואפס. אמת או שקר. ואכן זה האחרון שנוטה להיות קונבנציונלי בתכנות שפה, משהו אומר כמו אמת או שקר. 

בינתיים ספריית CS50 מגיעה עם חבורה של פונקציונליות שצוות כתב לך, חוץ מזה פשוט מקבל מחרוזת. שכתבנו בפונקציות מראש ש יכול לקבל מספר שלם מהמשתמש, לקבל תו בודד, לקבל לצוף, ש הוא רק מספר עם הנקודה העשרונית. קבל ארוך ארוך, באמת ערך גדול מהמשתמשים. אז שראינו את זה רק ב פעולה בצורה של GetString. אבל באמצעות פונקציות אלה בקרוב תוכל לכתוב תוכניות שתקבלנה קלט מהמשתמש. 

בינתיים לשקול את זה תכנית, ולשקול איך אנחנו יכולים עכשיו להתחיל להוסיף לזה עם מבנים חדשים. סיור מערבולת מהיר ואז נראים בחלק כתיבת חלק תוכניות באופן ידני את עצמנו. מכאן ואילך אם אנחנו רוצים ליישם תנאי, זה לא הולך להיראות כמו חתיכה קטנה ונחמדה די חידה. זה הולך להיראות קצת יותר מסתורי. אבל זה הקנונית מבנה של מצב בג 

המילה אם, שני סוגריים, ובתוכה הוא הולך להיות מסוג כלשהו ביטוי בוליאני. עכשיו לוכסן הלוכסן באמצע, זה הוא ברגע כמו סוג של מציין מיקום קוד pseudocode. אבל יותר כראוי, כל שורת קוד בC שמתחילה עם קו נטוי קו נטוי היא תגובה. 

זה כמו פתק דביק, כי ייתכן לשים על מאמר, מודפס על נייר. זה פתק לעצמך. אין לו פונקציונלי השפעה על התכנית. זה סוג של תזכורת, זה שלך תיעוד על מה שקורה. אז לעשות את זה באותו הרגע הוא סוג של שומר מקום לכל מה שיש בפנים של סוגריים המסולסלים אלה סופו של דבר הוא הולך לעשות משהו. 

בינתיים יש לך שני מזלגות ב כביש, אם אחר לבנות כזה. אתה יכול אם, elseif, אחר. עכשיו זה ראוי לציין, במיוחד אם אתה כבר Googling סביב מקוון למשאבים מתוך סקרנות, או אם אתה מרים אחד מהקורס של ספרים מומלצים על C, אתה תראה שבני האדם יש הרבה העדפות שונות של איך לבטא את עצמם בקוד. יש אנשים שאוהבים לשים את סוגריים מסולסלים כפי שעשיתי כאן. יש אנשים שאוהבים לשים מתולתל פלטה למשל כאן. 

יש אנשים שאוהבים לשים את elses עד כאן ואז זה כאן. יש כל מספר של דרכים קוד כתיבה, ואף אחד מהם צודק כשלעצמו. למרות שיש כמה כי הם די בסדר. אבל יש no-- אם זה סופו של דבר ויכוח דתי מאוד. למעשה, אחד מהכי מעצבן דברים על מדעי מחשב איך דעתן מדעני מחשב יכולים להיות. ואתה תגלה עם זמן ש אפילו לך לפתח את העדפות אישיות לגבי איך הקוד שלך צריך להיראות. 

לא רק להתנהג, לא רק ליצור פלט, אבל איך זה צריך להיראות מבחינה אסתטית. אז מה שנעשינו הוא ידריך אותך לאורך את הדרך ל, לעת עתה לפחות, סגנון CS50 סטנדרטי שלפחות שומר על דברים אחידים וקל לקריאה. אבל נוסף על אלה הבחנות לפני זמן רב. 

ביטוי בוליאני בC, אם אתה רציתי לומר אם מצב זה הוא אמיתי ומצב אחר זה הוא נכון, אתה לא כותב את המילה ו, כפי שהיית באנגלית. אתה במקום להשתמש אמפרסנד אמפרסנד, מסיבות שנחזור ל. אם אתה רוצה לומר או שאתה משתמש בשני קווים אנכיים, שעל לוח מקשים של ארה"ב הוא בדרך כלל מעל לזן הבא מפתח לקו הנטוי. וזה רק אומר שאם מצב זה או מצב אחר זה נכון לעשות את זה. 

בינתיים יש את זה דבר מטורף, ש יהיה לך הזדמנות להשתמש פעם בכמה זמן. אבל זה רק חלופי דרך להביע את עצמך. זה, לעת עתה, בוא קובע, זה רק דרך פאנקי נוספת להביע אם, elseif, elseif, elseif, elseif. זה פשוט מעוצב במונחים של מקרים, שבו אתה, פשוטו כמשמעו, למנות את הערכים ש אולי כדאי לך לבדוק. 

בינתיים לולאות. ראינו השוואה של גרד עם לולאה. ואני הולך לנופף את היד שלי ב מה כל אחד מהדברים האלה אומר. אבל שים לב שלולאה יהיה מאוד לעתים קרובות להתחיל עם מילת המפתח. או שזה יתחיל עם זמן שמילת המפתח. או שזה יתחיל עם מילות מפתח לעשות, ומסתיים בעת שמילת המפתח. 

אבל מה שאנחנו עומדים לראות הוא דברים יותר כמו זה. הנה, באופן כללי בC, איך אתה יכול להצהיר על משתנה ולתת לו ערך. ב C זה לא יספיק, כמו בסריטות, אתה פשוט אומר לי משהו משתנה בשם. אתה צריך להגיד לי C, ולספר לי המהדר שלך, לייתר דיוק, איזה סוג של ערך אתה רוצה לשים בקערת הזכוכית. 

האם זה מספר שלם? אם כך, יש לך ל פשוטו כמשמעו אומר int ולאחר מכן השם המשתנה, לאחר מכן פסיק. אם, במקום זאת רצה מחרוזת וקרא זה זה כמו שאני עשיתי בקוד שלי כאן היום, היית אומר פסיק של המחרוזת. ברגע שאתה רוצה לתת לו ערך אז אתה יכול להשתמש בסימן השוויון, הידוע גם ב אופרטור השמה. ושים לב איך כל אחד שורות קוד הבאות יש פסיק בסוף זה. 

אבל בכנות, זה פשוט נראה קצת מכוער. למה אני לא יכול להגיד למחשב, לתת לי שלי משתנה ולאתחל אותו לאפס. כלומר, תן לי קערת זכוכית ריקה. בזמן שאתה יכול. וכך אחד של פסק הדין קורא יגיד לך צריך לעשות בחינה סגנונית לאורך זמן הוא, אתה כותב את הקוד שלך כמו זה, או אתה סוג של לנקות אותו ולהרשים אנשים על ידי כתיבת שני קווים כאחד. וזה ייחשב בדרך כלל דרך אלגנטית יותר כתיבת הקוד שלך מבחינה סגנונית. 

פונקציות אנחנו כמובן ראינו. הם הולכים לקחת את הפורמט הזה. השם של פונקציה, כמה סוגריים, ולאחר מכן אולי קצת דברים בפנים. או שאולי אתה רואה את השימושים של צד פונקציות מרובות לצד זה, כמו משהו כזה. עכשיו כמשיק, עושה הבדיחה הזאת עכשיו הגיונית? 

[שחוק] זה לא אומר שזה מצחיק, אבל זה אין אולי לעשות יותר הגיוני. אז עכשיו בואו נלך ל מכשיר CS50 לרגע. ותנו לי לפתוח את טיזר אחד כאן. 

ואכן אחת הסיבות להצגת קטלוג איקאה ומהבהב התמונה של iPhone לפני קצת היה למעשה לקשור ביחד עובדה שרק לפני כמה שנים, בשנת 2007, פיסת הקוד זה הייתה שוחרר, ש אחד מיישום הראשון של פיסת התוכנה שעושה מה שנקרא jailbreaking. למי שלא מכיר, jailbreaking משהו כמו טלפון או iPhone משמעות הדבר היא במהות חישוב איך לעשות את הדברים עם זה שהחברה שעשה את זה לא התכוון. כמו שאתה רוצה להתקין מסוים תוכנה שלא בחנות היישומים, Jailbreaking הטלפון שלך ש אתה עושה את דברים כמו ושעוד. אבל מה שהיה כיף ב 2007-- ויש כבר עשרות גרסאות שונות מהדברים האלה מאז, בכל מיני languages-- הוא ש תכנית זו כאן, בשם iUnlock, למעשה נכתב בג ולכן אני עצרתי את קוד המקור של זה, רק כדי להראות סוג של לך כמה קווי הדמיון עם בונה אנחנו כבר דנים בכך הרבה. עכשיו יש הרבה יותר מורכבות כאן ממה שראינו כבר בכיתה. תן לי לגלול למעלה קצת כאן. 

אבל שים לב these-- גם אנחנו שמים לב כמה things-- שלא להבחין שורות אלה כאן, כולל h נקודת קלט / פלט הסטנדרטי. וall-- קו 24, please-- שם לב שאני סטנדרטי / פלט h נקודה וחבורה של אחרת לגמרי קבצים שאנשים אחרים כנראה כתב. ואם אנחנו לגלול למטה דרך זה, קטן באופן שרירותי, שים לב אני לא יודע איך לכתוב כל זה בעצמי בהכרח עדיין, אבל יש אם. אז כנראה יש לזה סניף. 

ואם אני לגלול למטה קצת עוד יש עוד אם. אם אני לגלול למעלה, אני חושב ש סביב קו 100 ראיתי ל. אז אני לא ממש בטוח איך זה עובד עדיין, אבל זה ללולאה שהולכת תן לי לחזר כמה וכמה פעמים. ואם אני לגלול את כל בדרך לתחתית אני רואה שיש לתפקד כאן למטה נקרא עיקרי, וכמה נקודות זכות נוספות להנאת הקריאה שלך. 

אז זה רק לsay-- ונשים את זה באינטרנט בין המקור של הקורס קוד today-- שאפילו חלק מאלה מכשירים שאנחנו לוקחים כמובן מאליו, בסופו של היום אתה עדיין באמצעות מבנים בסיסיים אלה שיש לנו כבר מציג כבר עד כה. זה מספיק שאחד. בסדר, אז עכשיו בואו למעשה לבנות משהו. 

בואו נלך מעבר למשהו כמו hello.c, ולפתוח את זה, בואו לכתוב תכנית זו כאן. אני הולך קדימה, לכתוב תכנית בשם adder.c, מטרתם בחיים הולכת להיות כמו המחשבון פשוט הסופר הראשון שלי זה מוסיף כמה מספרים רק. לא בגלל שזה קשה בעיה, אלא משום שהיא מאפשר לי לקשור עכשיו יחד כמה דברים. אז אני הולך קדימה ולכלול אני סטנדרטי / h נקודת O וh נקודת CS50. אני הולך לומר void main int. ושוב בעתיד אנחנו נחזור אליו בהקשר זה ובאמצעים החלל. 

ועכשיו אני הולך להגיד משהו כמו printf, תן לי את מספר שלם. ועכשיו על הקו השני שלי, איך אני מבטא את עצמי כזה כי אני רוצה להצהיר על משתנה זה הולך לאחסן int? פשוטו כמשמעו מה אני מקליד אם אני רוצה ליצור משתנה שמאחסן int היית אומר? int שווה getint. בטוח, כך שעובד. ורק לשם עקביות עם קוד שתהיה לראות באינטרנט, תן לי שינוי זה לx, רק בגלל שx הוא שם משתנה נפוץ להשתמש, לפחות באלגברה. עכשיו תנו לי ללכת קדימה ולעשות printf שוב. תן לי את מספר שלם אחר. ועכשיו אני הולך לסוג של ללמוד מדפוס ש, אני הולך לומר y int מקבל GetInt. 

ואנחנו כבר לא בשימוש GetInt לפני, אבל רק כמו GetString הולך ומקבל מחרוזת, כמו חוויאר עשה מהקהל, באופן דומה עושה GetInt תתחיל להבהב הפקודה. וביעילות מחכה למשתמש כדי לתת לו מספר שלם, על ידי ההקלדה ב ולהכות על Enter. עכשיו סוף סוף אני הולך לעשות זה, printf הסכום of-- ותן לי להביא now-- המפואר אני אחוזים ואני אחוזים הוא הווה אני קריאת n קו נטוי נקודה. ומה אתה חושב שאני הולך ל לשים בחברה כתשומות נוספות לprintf? 

אני לא רוצה לומר פשוטו כמשמעו לצטט x סוף ציטוט. אני רוצה לכיתה בx ו לאחר מכן, ועכשיו בואו לקבל מפואר ובואו פשוט להניח אנחנו יכולים לעשות מה שאנחנו רוצים. מה אתה רוצה להגיד? X ועוד Y. ואכן זה יעבוד. זה מינימאלי שפות תכנות מבין חשבון בסיסי, וכך זה צריכה למעשה עבודה. 

אז תן לי ללכת קדימה ועושים אפעה בחלון השחור ולבן שלי כאן למטה, הזן. שורה נסתר, אבל אין שגיאה הודעה, כך שזה טוב. דוט לקצץ אפעה, לתת לי מספר שלם, 1. תן לי את מספר שלם אחר, 2. הסכום של 1 ו -2 הוא 3. 

בסדר, אז די טריוויאלי תכנית, אבל מה זה נעשה? זה אפשר לי להשתמש בפונקציה קורא כאן, לקרוא לפונקציה אחרת כאן, שתי שיחות לGetInt, שיחה שלישית לprintf, ולאחר מכן באמצעות מצייני מיקום אלה. אז זה קצת יותר מתוחכם יותר מהפעם האחרונה. אבל מה אם אני רוצה לקבל קצת מגדלת? 

תן לי ללכת קדימה ועכשיו לעשות את זה. תן לי ללכת קדימה וליצור קובץ חדש בשם תנאים אפס. ואני הולך להציל כמה זמן למען כיתות ופשוט להדביק שב קוד כנקודת התחלה. ועכשיו אני רק הולך לשים משהו חדש כאן באמצע. אז printf הייתי רוצה שלם בבקשה. וכל הקוד הזה הוא זמין באתר האינטרנט של הקורס, אתה לא צריך להקליד את כל זה בכיתה אם אתה מעדיף שלא. int, ועכשיו אני הולך להשתמש, במקום x, y, אני הולך להשתמש בn, שהוא כנראה השם הנפוץ ביותר עבור מספר שלם בתוכנת מחשב. ועכשיו אני רוצה לעשות פסק דין קטן כאן. אני הולך כדי לראות אם n גדול מ 0, אז אני הולך לומר אופס printf--, printf-- שבחרת מספר חיובי, n קו נטוי סימן קריאה. סגור את זה. אחר אני הולך להדפיס את printf אתה הרים מספר שלילי. 

עכשיו לפני שאתה צועק עליי, בואו נריץ את התכנית. תן לי ללכת לכאן. וכיצד אוכל לקמפל תכנית נקרא מקף תנאי 0? הפוך מקף תנאי 0. סוג של שם טיפשי, but-- לכל הרוחות. אישור, רגע הוראה טוב. למה שתשבור? 

מה שאני לא קורא בטעות קובץ זה? סוג של אתה יכול להסיק מהכרטיסייה עד כאן. אז זה לא רע שאני עשה את זה, כי זה יקרה אולי לחלק מכם. אז אני בשם בטעות שלי מצב קוד מקור 0. אבל צריך את קוד המקור שלי על ידי אמנה להיות בקובץ שנקרא מצב 0 מקף ג, או מה שהנקודה ג. 

אז תן לי לתקן את זה. בדיוק כמו Microsoft Word אני יכול לעלות לשמירה ובלעשות מצב 0 נקודה ג. עכשיו רק כדי להיות מסודר אני הולך קדימה ולהסיר מצב 0, שהיה הגרסה הישנה שלי. ועכשיו בואו עושים מצב 0, הזן. אישור, נראה טוב. 

מצב 0, הזן. אני רוצה שלם בבקשה, 50, אתה הרים מספר חיובי. עכשיו מה דעתך על 50 שליליים? אתה הרים מספר שלילי. מה דעתך על עכשיו, 0. די בטוח ש0 לא שליליים. 

אז זה סוג של באג לוגי. כיצד אוכל לתקן את זה? אחר אם n הוא פחות מ 0, לעשות את זה, אחר יכול להיות לנו סניף שלוש דרך לכאן, printf שבחרת 0. אז עכשיו אם אני מפעיל מחדש זה תכנית, לאחר קומפילציה זה שוב עם איפור, ועכשיו הפעל מחדש מצב 0, מה שאני רואה כאן הוא 0 נותן לי פלט ש. אז לאן אנחנו הולכים עם זה? 

ובכן זה קל מאוד לאבד את הראייה של היער מרוב העצים. וכך לאפשר לנו להגיע למסקנה עם וידאו 2 ו1/2 רגע זה שסופו של דבר הוא קצת של מודעה של גוגל, אבל זה באמת הוא עדות ל מה גם באמצעות בניין הבסיסי אלה לוקינו סופו של דבר יכולים לעשות פעם אחת יש לנו קצת תכנות מתמצא תחת חגורות שלנו. 

[השמעת מוסיקה] 

SAROO ברירלי (קריינות): זה היה לפני 26 שנים, ובדיוק עמד להפוך 5. הגענו לתחנת הרכבת ו על על הרכבת שלנו יחד. האח שלי פשוט אמרתי שאני להישאר כאן, ואני אחזור. ואני רק חשבתי, גם אתה יודע, אני יכול גם פשוט ללכת לישון והוא פשוט להעיר אותי. וכשהתעוררתי הבא היום, כל הקרון הייתה ריק ברכבת דוהרת, רוח רפאים רכבת לוקחת אותי אני לא יודע מאיפה. 

אני מאומץ מחוץ לאוסטרליה, למשפחה אוסטרלית. ואמא קשטה חדר עם המפה של הודו, שהיא הניחה ליד המיטה שלי. התעוררתי כל בוקר רואה מפה ש, ומכאן זה המשיך סוג של הזיכרונות בחיים. אנשים היו אומרים, אתה מנסה למצוא מחט בערימת שחת, Saroo אף פעם לא תמצא את זה. 

הייתי הבזיק של המקומות שאני נהג ללכת, ההבזקים של המשפחה שלי פרצופים. הייתה התמונה של האמא שלי, יושב ברגליים משוכלות, רק צופה לה לבכות. חיים הוא פשוט כל כך קשה. זה היה אוצר שלי. ואני מסתכל על מפת גוגל ו הבין שיש Google Earth, וכן. בעולם שבו אתה יכול להתקרב ל, התחלתי לקבל את כל המחשבות האלה ומה אפשרויות כי זה יכול לעשות בשבילי. אמרתי לעצמי, אתה יודע, יש לך קיבלתי את כל זכרונות צילום אלה וציוני דרך מאיפה אתה, ו אתה יודע מה העיר נראית כמו. זה יכול להיות יישום ש אתה יכול להשתמש בו כדי למצוא את הדרך חזרה. 

חשבתי, גם אני אשים נקודה על תחנת רכבת בכלכתה, וקו רדיוס, אתה יודע, שאתה יש בחיפוש באזור זה. באתי סוג של מעבר פסי רכבת אלה. ואני התחלתי לעקוב אחריו, ו הגעתי לתחנת רכבת ש שיקף את אותה תמונה שהיה בזיכרונות שלי. כל מה שתאם. אני רק חשבתי שכן, אני יודע לאן אני הולך. אני רק הולך לתת לי המפה שיש לי בראש שלי להוביל אותי ולקחת אותי בחזרה לעיר הולדתו שלי. 

הגעתי לפתחה של הבית שאני נולדתי. והסתובבתי -15 מטר מעבר לפינה, היה שלוש נשים עומדות מחוץ, צמוד זה לזה. ואמצע אחד צעד קדימה, ו אני רק חשבתי, זה הוא האמא שלך. היא התקרבה אליו, חיבק אותי, ו היינו שם בערך חמש דקות. 

היא תפסה את היד שלי ו היא לקחה אותי לבית ולי בטלפון, שבו היא צלצל לאחותי ואחי לומר את זה, אתה יודע, האח שלך יש רק כל פתאומי הופיע כמו רוח רפאים. ולאחר מכן המשפחה התאחדה שוב. כל מה שהכל טוב, אני עזרתי לי האמא שלי, היא לא חייבת להיות עמל בפרך. היא יכולה לחיות את שארית חייה בשלום. 

זה היה מחט בערימת שחת, אבל המחט הייתה שם. כל מה שיש שם. כל מה שיש לנו בעולם הוא ברז של כפתור. אבל אתה צריך שתהיה לו הרצון ו הנחישות לרצות את זה. 

[השמעת מוסיקה] DAVID Malan: להפליא המלצה מתוקה רק מה שאתה יכול עכשיו לעשות עם טכנולוגיה. אנחנו אראה אותך בשבוע הבא.