דוד י מלאן: אז זה CS50. וזה היה קולטון אוגדנו של CS50, במשך יותר שממוסיקה שאתה יכול להוריד בsoundcloud.com/cs50. אז היום אנחנו מתמקדים כל עוד על האמנות של תכנות. ואנחנו לוקחים בו ירדנו את השבוע שעבר, תוך התמקדות על Scratch, שהיה זה שפת תכנות גרפית. ולקחת את הדברים לרמה נמוכה יותר, באמצעות תכנות מסורתי יותר אבל שפה ידועה כג לאורך הדרך, מימוש כי אותם הרעיונות שאנו דיבר על יום שישי האחרון יחזור על עצמו לא רק בזה C שפה, אך ברוב כל אחר שאנחנו מסתכלים על הסמסטר הזה. כך קראנו את הדבר הזה כאן מה שהפעם האחרונה? זה הוא נציג של הצהרה. כך קראנו זה הצהרה. וזה עושה משהו. זה הוראה ש מחשב או גירוד עלול לבצע. ומעתה, בואו גם להתחיל קורא משהו כזה פונקציה, מסיבות שנראים בהמשך. בינתיים, ראינו דברים כאלה. ואלה הם בדרך כלל הידוע בשם מה לבנות? קהל: Loop. דוד י מלאן: אז לולאה. אז די פשוט. זה ממש עושה מה שהוא אומר. ובגירוד, אם ברצונך לדחוס יותר חלקי הפאזל שם, החתיכה תגדל כדי להתאים אותו. ואנו רואים בC ש אנחנו יכולים לעשות את אותו הדבר. סוג נוסף של לולאה, אם כי, בגרד יכול להיות לנצח, או שיש כל מספר גישות אחרות. אבל בואו ניקח יותר מבט generalist, עם פנים שסביר להניח די מוכר, בלולאות באופן כללי יותר. מארק צוקרברג: אחת דבר שמחשבים הם באמת טובים הוא חוזר פקודות. כאדם, היית מקבל ממש משועמם אם אתה הייתי צריך לעשות את אותו הדבר הרבה פעמים ברציפות. אבל מחשב יכול לעשות את אותו הדבר מיליון או אפילו מיליארדים של פעמים, ולא להשתעמם, ולהיות מסוגלים לבצע את זה ממש טוב. כך למשל, אם אני רציתי לאחל לכולם בפייסבוק יום הולדת שמחה על ידי שליחתם בדוא"ל, זה עלול לקחת לי יותר מ המאה לכתוב בפועל כל אותם מיילים לכולם. אבל עם רק כמה שורות של קוד, שאני יכול יש לי מערכת לשלוח דוא"ל לכולם בפייסבוק שביקש שלהם יום הולדת שמחה. אז זה מה שהם לולאות ולמה הם יקרים ומשהו שמחשבים יכולים לעשות טוב מאוד. דוד י מלאן: אז אם אתה כבר הנמען של חלק מCS50 של ו החלל של Dropbox של מנוח, זה בעצם בדיוק מה שאנחנו לעשות, תוך שימוש בקוד ממש ככה. בעצם יש לנו גדול גיליון אלקטרוני שאליה אנשים כבר הזנה שלהם שמות וכתובות דואר אלקטרוני. וכתבנו כזית של קוד ש יכול לחזר על כתובות אלה ולירוק את כתובות ייחודיות ב למקרה שמישהו הגיש מספר רב של פעמים. ולאחר מכן, אנו שולחים אוטומטי דואר אלקטרוני מבוט של CS50, כולל קוד קופון. עכשיו אנחנו גם הסתכלנו זה לבנות בפעם האחרונה. וזה בפרט דוגמא למה? אז, כן, ביטוי בוליאני. והצורה נועדה כמו גם כדי ללכוד את זה. כזה כל השאלות של יוצר אמת או שקר בScratch ייראה קצת משהו כזה. ואנחנו קוראים לזה ביטוי בוליאני. זה אכן אמת או שקר, כן או לא. זוהי דרך של תשובה לשאלה. ובינתיים אתה יכול להשתמש בוליאנית אלה ביטויים בתוך מבנים כמו אלה, ש כמובן הם תנאים או סניפים, פתגמי מזלגות בכביש. והם יכולים להסתכל לא רק כמו זה, אבל הם גם יכולים קשר elses איתם. ואתה בעצם יכול להיות שלוש בדרך מזלג בכביש או מזלג ארבע דרך בכביש, פשוט על ידי קינון הדברים האלה, כפי שתראה בScratch אם אתה לא כבר יש. וכמו שאתה יכול לעשות, כמו גם בC. בואו ניקח generalist אחר מסתכל alumnist, כמו גם, ש אולי להציג גישה שונה לדברים אלה נקראים תנאים. ביל גייטס: אנשים עושים החלטות בכל יום. לדוגמא, לפני שאתה יוצא החוצה אתה יש לי סוג של אמירה, אם כי אומרת, אם יורד גשם אז אני צריך לקחת את המעיל שלי. ומחשבים הם מדהימים ברגע שאתה להחליט אלו סוגים של הצהרות, שהם מהימן יכולים לבצע אלה דברים במהירות שלא תיאמן. וכך תכנית מחשב באמת הוא קצת מתמטיקה וקצת אם דוחות שבי ההחלטה מקבלת עשתה. דוד י מלאן: אז כמו ש אולי אתה יודע, זה היה אנשים כמו ביל גייטס, פול אלן, ואחרים כי באמת בבעיטה מה שנקרא מחשב אישי מהפכה לפני כמה שנים. חשבתי, לפני שאנחנו צוללים לכמה administrivia, היינו מתייחס לסיפור מאלבוקרקי, מוזיאון ניו מקסיקו להיסטוריה של הטבע ומדע שבו חלק מביל גייטס " והסיפורים המוקדמים של פול אלן הם ספרו איך יש לנו עכשיו המחשבים של היום ומחשבי מקינטוש ועוד. לשם כך, אם כי, אנו זקוקים לשני מתנדבים שיש להם קולות קריינות טובים מאוד לקרוא תסריט בקול רם. בסדר, מה דעתך על לשם. בואו למעלה. ומה לגבי מול כאן. בואו למטה. קח את המקומות שלך כאן. כפי שאתם חבר 'ה לבוא, בני זוג של הודעות מנהליות. חתך, התהליך בחירת סעיף, יתחיל זה יום רביעי עד שישי. עוד על כך בקרוב יום רביעי בהרצאה. קטעים סופר, בינתיים, הם משהו שאנו מציעים בשבוע הבא לפי כל הכיתה מוזמנת להשתתף בקנה מידה גדולה למדי קטעים, אחד נוח יותר, אחד פחות נוח. ואנחנו נכריז פרטים כך, כמו גם, בהמשך השבוע. סעיפים בינתיים, עצמם, יתחילו בשבוע שלוש של הקורס, אפס מדד, מה שאומר שאלו הם כמה שבועות את. אז לא לדאוג. עדיין לא החמיצו משהו בכיוון הזה. בינתיים בינתיים, אם אתה יש לך שאלות מנהלית, דוא"ל עצמי ודבון וגייב ורוב בכתובת זו כאן. לבסוף, נקבעה בעיה 0 הוא, כמובן, את. ייתכן שתהיו לבו באתר האינטרנט של הקורס. זה אמור לספק לך כל התשובות לשאלות אולי יש לך בדרך ל התחלת עבודה עם סט הבעיה. אבל אם אתה מוצא את עצמך בצורך של יד לעזרה, בכל האמצעים להשתתף שעתי עבודה, יום שני, יום שלישי, רביעי, חמישי השבוע בערב בארבעה חדרי אוכל. תראה את כתובת אתר שיש לפרטים היכן שעתי עבודה תהיינה. עכשיו בואו ניפגש שני אורחים כאן היום. מה שמך? ג'יי פול: ג'יי פול. דוד י מלאן: ג'יי פול, נחמד לפגוש אותך. Hikari: Hikari. דוד י מלאן: Hikari? Hikari: Hikari. דוד י מלאן: Hikari. נחמד לפגוש אותך גם כן. יש לי ג'יי פול וHikari ב לפניהם על מוסיקה אלה עומד שני תסריטים שאני מודפס את הבוקר הזה מניו מקסיקו מוזיאון להיסטוריה של טבע ומדע. ומה שחשבתי הייתי עושה על תקורה הוא מלווה את הדקלום שלך של התסריט ואת ההיסטוריה הזאת עם כמה דימויים חזותיים, אין הפתעות. ומה שעשיתי מראש הוא prehighlight על התסריט שלך מה שאתה צריך לקרוא, ומה שאתה צריך לקרוא. ובעצם אנחנו תמצאו סעיפים רק חלופיים. אז זה הרבה כמו שאתה יכול עשה בכיתת אנגלית. כי באמת לחייב את הקהל להאמין בסיפור שלך כאן. מה דעתכם? אז הסיפור כאן הוא, שיש לנו BASIC, וזה מתחיל בקיימברידג. ג'יי פול: זה היה בחורף, 1974, בקיימברידג', מסצ'וסטס שבו החורפים יכולים להיות קרים. שיער מזוקן, ארוך נשירה במכללה בשם פול אלן היה drudging פני הרווארד הכיכר, השקוע במחשבותיו. העיסוק העיקרי שלו באותם ימים היה איך להגיע לחבר שלו, ביל גייטס, לעזוב את בית הספר וללכת לעסקים עימו. Hikari: שני כבר יצאו באמצעות מספר המיזמים העסקיים יחד, החל משעת Lakeside בית הספר בסיאטל בי הם שילמו בזמן מחשב פנוי ל לבדוק מחשב PDP-10 בזמן מקומי שיתוף חברה. התכנית האחרונה שלהם הייתה להפסיק בית ספר ולהקים חברת תוכנה. אלן עזב את וושינגטון אוניברסיטת מדינה. אבל ברגע האחרון, גייטס החלטתי להישאר עם הארוורד. ג'יי פול: באותו יום, חוצה הרווארד כיכר, אלן הבחין בינואר 1,975 נושא פופולרי האלקטרוניקה עם כותרת עצירת כדור הארץ, ערכת הראשונה minicomputer העולם של כדי להתחרות בדגמים מסחריים. מתחת לכותרת הייתה תמונה של קופסא קטנה מעוטר באורות ומתגים. היא נקראה MITS Altair 8800. ואלן ידע שזה מה ש הוא חיפש. Hikari: ימים של דיון ואחריו. אלן וגייטס הבינו משמעות של אלטאיר. הם דיברו לעתים קרובות על מעבדים וחיכינו לראות מה היה לעשות איתם. עכשיו הייתה ערכת minicomputer על הכיסוי של אלקטרוניקה פופולארית. כנראה שזה לא היה לו תוכנה עדיין. הם דמיינו אומה של מתכנתים יורדים על MITS. ואז הם קראו אד רוברטס, הראש של החברה, טוען שיש לה גרסה של שפת תכנות BASIC כמעט מוכנה לאלטאיר. הם לא עשו זאת. ורוברטס ודאי ידע שהם לא עשו זאת. הוא היה מקבל 10 שיחות ביום מ אנשים שהיו לי BASIC כמעט מוכן. ותגובת המניה שלו היה, "האדם הראשון מי מופיע עם עבודה BASIC מקבל החוזה. " ג'יי פול: גייטס ואלן מעולם לא ראה את אלטאיר. הם מעולם לא ראו אפילו המיקרו אינטל 8080 בלבו של אלטאיר. אבל כמה שנים קודם לכן אלן כתב תכנית על מחשב מרכזי שחיקה הפעולה של אינטל קודם המיקרו. והפעם הם הייתי עושה את אותו הדבר. Hikari: עם אינטל 8080 ידני בצד שלו, אלן התיישב ליד הרווארד PDP-10 מחשב וכתבתי אמולטור ותוכנה כלים דרושים כדי לבצע את תכנות. בינתיים גייטס הפסיק ללכת לשיעורים והקדיש את עצמו לעיצוב הבסיסי, משתמש בכל טריק הוא ידע להשיג את הגודל למטה 4 קילובייט. ג'יי פול: מתוך באלבוקרקי, אד רוברטס קבל טלפון מגייטס מבקש פרטים על אופן שבי Altair טיפל שגרה מסוימת. אף אחד לא ביקש שלפני. ורוברטס החל להתעניין. Hikari: עם ההתפתחות כלים והעיצוב מוכנים, גייטס ואלן כתבו הקוד על PDP-10, גיוס נוסף סטודנט באוניברסיטת הרווארד, מונטה דוידוף, לכתוב שגרות במתמטיקה. אחרי הלילה אחרון של תכנות, אלן עלה על מטוס כדי לספקם בסיסי לMITS. הוא בילה את המטוס לצאת בדאגה. ובחזרה בקיימברידג גייטס היה מדאיג. ובסיסי שלהם הם בדקו זה עבד על אמולטור. אבל מה אם אמולטור היה לא בסדר? ג'יי פול: כשהמטוס פנה אלבוקרקי, אלן הבין ש BASIC, עכשיו הכיל בצורה מסודרת על גליל קטן של אגרוף קלטת נייר, היה להיות חסר תועלת ללא נפרד תכנית, שנקרא מטעין, ש הייתי אומר לי Altair איך לקרוא את בן קלטת נייר מוזן לתוך מכונת הטלקס. הוא הוציא את פנקסו ומהר שרבט את תכנית מלגזה בשפת אסמבלי, לאחר מכן באופן ידני תרגמתי אותו ל1s ו 0s אלטאיר היה מבין. אלן ציפה: Hikari חברה נקייה, קטנה, גבוה טק מנוהל על ידי גברים בחליפות עסקים. אז הוא היה מופתע כאשר רוברטס נפגש שלו בשדה התעופה נראית כמו החווה יד. רוברטס היה גם מופתע. כשהוא ירד בהרווארד מתכנת במלון יקר, אלן נאלץ להודות ש הוא לא יכול היה להרשות לעצמו החדר. ג'יי פול: MITS, עצמו, היה ממוקם בקניון מאובק. בתוך על מבולגן שולחן העבודה הייתה Altair העמיס עם 5 קילובייט של זיכרון ומחובר על ידי כבל למכונה טלפרינטר. רוברטס ומהנדס ראשי, ביל ייטס, חיכה בציפייה כאלן toggled מטעינו תכנית לאלטאיר. הטלפרינטר החל לטרטר כפי שהוא משך קלטת נייר באמצעות קורא הקלטת. זה לקח אולי 15 דקות כדי לטעון את התכנית. אז הטלפרינטר מודפס בפתאומיות הפקודה זיכרון, אז הפקודה מוכנה, ואלן התחיל להקליד כמה מבחן פקודות. לתדהמה כולם, התוכנה עבדה. היו באגים, כמובן. אבל העיקר היה שזה עבד. Hikari: מאוחר יותר, בדרכם ל 3.00 $ ארוחת צהריים בפנצ'ו של, צרעה עפה בחלון של הטנדר משאית ועקצה את אלן על הזרוע. אבל באותו דבר נקודה יכול לקלקל את מצב הרוח. Altair עכשיו היה לו בסיסי, תוכנה מסחרית ראשונה לבית מחשב, שנעשה על ידי פול אלן וביל גייטס, עושה עסקים כמו מיקרוסופט. דוד י מלאן: רבים הודות לשני הקוראים שלנו. [מחיאות כפות] דוד י מלאן: עכשיו יש לך הבחירה שלך, לפני שאתה עוזב, של נוצץ או זוהר בdark-- הו, לחכות שנייה אחת, wait-- נוצץ וזוהר בפיל האפל מנג גונג של CS50. Hikari: או והאזור, תודה לך. דוד י מלאן: כל נכון, תודה רבה לך. [מחיאות כפות] דוד י מלאן: סיפור כל כך נכון. זה אומר שכל אלה מכונות והקלות שבה אנחנו להשתמש בם עכשיו לקחת כמובן מאליו, באמת התחיל כאן, רק כמה צעדים מתיאטרון בפועל זה. והנה היום, אם כבר לא היית, זה מקסוול דבורקין, המחשב בניין מדעים, גם מעבר לפינה. ובקומה השנייה של זה בניין עושה לתלות שלושה עמודים מקוד המקור המקורי ש ביל גייטס ופול אלן כתבו. למעשה, אם שימושך להתקרב באפשרותך לראות לא רק השמות שלהם ב סוג מקורי, אלא גם החתימות שלהם שהם מעוטרים לפני כמה שנים כשבקרו אחרון. אבל מה שהיה משכנע במיוחד על זה הוא מה שהם יצאו לעשות היה לכתוב תכנית שהיית לאפשר לאנשים אחרים לכתוב תוכניות משלהם. באותו הזמן כל מה שהיה עם מכונה זו Altair שנעשתה על ידי MITS. וכל מה שהם זקוקים לו דרך כלשהי מה שהופך את זה קל עבור חובבים ואנשים אוהב אותנו בחדר הזה בעצם תכנית כי בלי בהכרח הבנה קוד הרכבה, או במכונה קוד, או חס וחלילה, 0s ו 1s. אנו מתכנתים, כמו אלה בחדר הזה, אנחנו רוצה להיות מסוגל להביע את את עצמנו הרבה יותר כמו קוד פסאודו גם אם זה ניט קצת יותר בררן יותר ממה שדיברנו בשבוע שעבר. אנחנו לא רוצים לכתוב קוד כזה, שפול אלן וביל גייטס עשה. אנחנו, במקום, רוצים לכתוב קוד ש נראה קצת יותר ידידותי למשתמש. עכשיו זה הוא שפה הידועה כבסיס. ומספרי השורות יש את מה שאתה להשתמש פשוט למספר את שורות קוד שאתה כותב. אפילו אין לנו ל לעשות את זה בימים אלה. אבל אתם יכולים לראות כאן איך להדפיס "שלום, עולם" אכן ככל הנראה להדפיס בדיוק את זה. ואז מה ביל ופול עשו היה להעצים אנשים כדי לכתוב קוד כזה במקום of-- אם תסתכל על מדעי מחשב wall-- קוד כזה. למעשה, CS50 לאחרונה הייתה לו הזדמנות לשבת עם פרופ 'הארי לואיס בפקולטה למדעי המחשב, ש למעשה לימד את ביל גייטס לפני כמה שנים, והוא עומד כאן לפני שלושת עמודים של קטעים אלה. בואו נסתכל. הארי לואיס: מה יש לך כאן הוא רישום של פיסת תוכנה מוקדמת נכתב על ידי ביל גייטס ופול אלן, ממייסדי מיקרוסופט. אז הקוד הוא מעניין משתי סיבות. קודם כל, זה הפך המוצר הראשון של מיקרוסופט, שהיה מתורגמן עבור שפת תכנות BASIC. ושנית, זה היה אחד מהניסיונות הראשונים כדי ליצור מתורגמן כך רגיל אנשים יכולים להשתמש במחשבים אישיים. אז ביל גייטס היה סטודנט לתואר ראשון באוניברסיטת הרווארד. התחלתי ללמד באוניברסיטת הרווארד בשנת 1974. הדבר נעשה בשנת 1975. אז זה היה בשלב מוקדם בקריירה שלו ומוקדם בקריירה שלי. אני ממש לימדתי את ביל ב כמובן בסביבות הזמן הזה. פול אלן לא היה סטודנט באוניברסיטת הרווארד, אבל הוא היה בבית ספר גבוה כיתה של ביל גייטס. אם אתה בא ומסתכל ברשימה, שתצליח למעשה למצוא שליש שם, מונטה דוידוף, שהיה בן כיתתו של גייטס כאן בהרווארד. אוקיי, אז הנה תגובה עד מעניינת כאן. זה אומר "ב4K יכול למחוק את השורש הריבועי אבל ללולאות עדיין צריכה לעבוד. " אוקיי, אז מה זה אומר הוא שיש היו שתי דרכים כדי לקמפל תכנית זו. אחד מהם היה לרוץ על גרסה של מחשב Altair זה שרק 4K מילות של זיכרון, 4,096 מילות של זיכרון. אבל הגרסה הגדולה הייתה 8K. ואז מה זה אומר הוא כי בגרסת 4K היית צריך למחוק חלק קוד כדי להפוך אותו בכושר. ואחד הדברים שיימחק יהיה שגרתי השורש הריבועי. אבל, ככל הנראה, ללולאות עדיין צריכה לעבוד גם כאשר אתה קומפילציה למטה רק הגרסה של 4k המחשב. דוד י מלאן: אז אחד הנושאים, כפי שנראה במדעי מחשב, הוא הרעיון הזה של שכבות והפשטה, ובאמת עומד על הכתפיים של אנשים שבאו לפנינו, לא בניגוד לכמה מביל גייטס והנרטיב פול אלן כאן. ומה שזה אומר זה כי היום אנחנו יכולים לקחת ל מובן מאליו שדברים הם למעשה יותר קל לנו לכתוב קוד. ואכן קוד, כפי שאמרנו ביום שישי, הוא יותר מבחינה טכנית הידוע בשם קוד מקור. וזה אנגלית זה כמו תחביר זה יותר מתאים ומוגדר יותר טוב מ משהו כמו קוד פסאודו, ל שבו אין הגדרה פורמלית. והיום מה שאנחנו הולכים להתמקד בהוא קוד מקור שנראה כמו זה, ש אמנם במבט הראשון נראה סתום לחלוטין. ולמען אמת, זה הרבה יותר מבחינה אסתטית מורכב מהתכנית הבסיסית היא. כל התכנית הזאת עושה, כזכור, הוא מה שאנחנו אומרים? זה פשוט מדפיס "שלום עולם". ובכל זאת מסתכל על כל הדברים שאנחנו צריכים כדי לעטוף את אותו ביטוי פשוט מאוד. אבל לא עבר זמן רב כל קווים אלה ועוד יהיה הגיוני הרבה יותר טוב לך. והזרימה היא כדלקמן. מה שאנחנו צריכים שברשותנו הוא לקחת קוד, כמו מקור קוד שאנחנו רק ראינו. ואנחנו צריכים תכנית חדשה לרוץ דרכו. אנחנו צריכים אלגוריתמים שיכולים להמיר את קוד מקור, כמו זה, לתוך קוד אובייקט, 0s ו 1s. במילים אחרות, מה ש אנחנו הולכים ללמוד היום הוא איך לעשות את זה, לכתוב קוד מקור של למעלה, להעביר את זה כקלט למיוחד תכנית הידועה בשם מהדר, ואנחנו הולכים לייצר קוד אובייקט. וזה רק דרך מפוארת של אומר שאנחנו ניקח משהו שנראה כמו זה, להעביר את זה לתכנית בשם מהדר, הפקת קוד אובייקט שנראה כמו זה. אז אלו הם, פשוטו כמשמעו, הדפוסים של 0s ו 1s כי הם הבינו על ידי מחשב אינטל בימים אלה, שאם פירש על ידי המעבד, המוחות פנימיים של מחשב, יהיה ממש להדפיס, בפשטות, "שלום עולם". עכשיו יש הרבה יותר 0s ו 1s ממה שאתה מקווה ייתכן שיהיה צורך בכך. אבל זה בגלל שאנחנו בונים על עסקה טובה של מורכבות שאנחנו מכאן ואילך יכולים לקחת כמובן מאליו. במילים אחרות, הרבה אנשים חכמים נתנו לנו הרבה כלים מגניבים ותוכנה רבת עוצמה שבה אנו כעת ניתן לבצע את הפרויקטים שלנו. אז בואו נתחיל. ואילו ביום שישי האחרון, ו לבעית סט 0 שבוע, אתה יהיה משחק ב עולם שנראה כך. היום מתחיל ולבעיה להגדיר 1 בשבוע הבא, את הקוד הולך להיראות קצת יותר נסתר, אבל מבחינה תפקודית הוא הולך להיות אותו הדבר. אז הודעה, העליון הוא גרד, תחתון הוא Scratch ג בכנות הרבה יותר למשתמש ידידותי ונגיש. אבל אם אתה עכשיו להשוות מבחינה ויזואלית עליון ל תחתון, יש סוג של אחד לאחד התכתבות בין חלקי הפאזל והשפה אנחנו עומדים לשחק איתו. בפרט, אומרים, חידה כחולה עליון חתיכה עד, הוא שווה ערך ככל הנראה למה שמילת מפתח או ביטוי מיוחד בשפה זו בשם C? קהל: printf. דוד י מלאן: printf. כלומר, הדפסה מעוצב. וזה רק מפואר דרך לומר printf בC הולך להיות הצהרה או פונקציה שמדפיס משהו על המסך. מה זה להדפיס למסך? לא משנה מה אתה אומר את זה לבפנים ציטוטים, בתוך סוגריים. אז שוב, יש להודות, יש הרבה דברים כי אתה צריך לזכור, סוגריים, מרכאות, פסיק, וכל זה. אבל כל זה הוא סוג של לא לעניין. ממסעדה מעניינת לעת עתה הוא שהבלוק למשל בגרד הוא פחות או יותר שווה ערך ל הצהרת printf ב C. בינתיים, את פיסת הפאזל הצהובה למעלה, כאשר הדגל ירוק לחץ, כנראה שווה ערך למה מילת המפתח כאן? קהל: ראשי. דוד י מלאן: אז עיקרי. אולי int, אולי חלל. אבל סוג עיקרי של צלילים כמו זה חשוב, ואכן זה הוא. לכן, כאשר הדגל ירוק לחץ היא, שוב, את פיסת הפאזל כי בעיטות מחוץ כל תכנית Scratch. אבל אנחנו הולכים עכשיו להתחיל לקרוא שתפקידו העיקרי, זו הידועה בשם ראשי. עכשיו בינתיים שנציע ב להכליל זה כדלקמן. אנו יכולים לקרוא לי אומרים פונקציה. וזה עשוי להיראות במיוחד כמו זה. ובכן, מה עם לולאות? אם אנחנו רוצים להתחיל המרה או תרגום יותר בגירוד לC, הדבר הזה כאן, ככל הנראה, רק אומר "hello world" לנצח. אז אם אתה מקשר אלה תסריטים עם חתול בסריטות, זה פשוט הולך כל זמן אומר באיזה בועת קריקטורה, "שלום עולם, שלום עולם, שלום עולם, "מודעת nauseum, לנצח. אם אנחנו רוצים לעשות משהו דומה ב C, זה הולך להיראות קצת מסתורי. אבל אנחנו יכולים להשיג את אותו תוצאות, כפי שבסוף לגלות, עם תחביר כמו זה. אני הולך להשתמש printf שוב, כי בסופו של היום אני רוצה להדפיס "שלום עולם". ואני, ככל הנראה, אני משתמש מילת המפתח שהוא לא לנצח. זה במקום המילה בזמן. אבל רק מבחינה סמנטית ב אנגלית, ואילו סוג של מציע סוג מסוים של לולאה או מחזור. אז זה קורה להיות מילת המפתח שC משתמשת. ובעוד אמיתי, מדוע בזמן ש אמיתי ביעילות מתכוון לנצח? ובכן, בזמן ש, כפי שאנו בקרוב מעריך את כל יותר, יש בסוגריים זה לצד זה שבו אתה יכול לשים את ביטוי בוליאני. וכל עוד ש הביטוי נכון, את הקוד הזה, כמצוין בין שני אלה סוגריים מסולסלים כמו שאנחנו קוראים להם, פשוט להמשיך לרוץ שוב ושוב. אז נכון נכון. וכך, בעוד אמצעים אמיתיים פשוט לעשות את זה לנצח. זה כמעט טיפש לבנות להביע את עצמך. אבל לא היה לנצח מילת המפתח בג היה בזמן. והיה מאוד פשוט ביטוי בוליאני כמו אמיתי. וכך זה, אנחנו תראו, משיג את אותה התוצאה. אחרת איך אתה יכול ליישם את לולאה? ובכן, בגירוד אולי אתה קוד קשה מספר מסוים חזרות בלולאה כאן. ואז זה בדיוק מה שאנחנו יכול לעשות בגרסה זו של C, לפי שיש לנו מה שנקרא ללולאה. וללולאה כאן הולך ללחזר, בלי לפרש במידה מה, מהערך 0 בעד לאבל פחות מ -10. עכשיו משתנה בגרד. ייתכן שלא היו לי הזדמנות להשתמש באלה. אבל מה הטעם, באופן כללי, של משתנה לא שאנחנו אומרים בשבוע שעבר? מה זה? קהל: נקודות. דוד י מלאן: כדי להצביע? אה, מצביע. אישור, שמירה על מסלול של נקודות, למשל, במשחק. או באופן כללי יותר עושה מה עם משתנה? מה התועלת שלהם? קהל: זיכרון. דוד י מלאן: כן, כך זיכרון. זה לאחסון משהו. והסוג שלי חזותי טיפשי משמש הפעם האחרונה הייתה כמו קערת זכוכית זו. ואם אנחנו רוצים לאחסן משהו בתוך משתנה, למשל עכשיו ערך הוא שש כי יש שישה כדורי פינג פונג בכאן. זה פשוט סוג מסוים של אחסון מיכל שמתחת למכסת המנוע מיושם עם חתיכות, 0s ו 1s, עם זאת מחשב קורה לעשות את זה. אז בשריטה, אם רוצה שיהיה לי משתנה, אנו יכולים להשתמש בבלוק כתום כמו זה. אנחנו קוראים לדלפק ש במקרה הספציפי הזה. אני אותחל אותו ל0. ומה זה אז אני עושה? לנצח, אומרים מונה, שאם אתה משחק עם זה בגרד, אתה פשוט תראה סריטות. החתול או מה שתחפושת לך לשים על שלו ידבר המספר בשאלה. דלפק שינוי על ידי 1 הוא כמו להגדיל כל על ידי 1. וכך זה הולך לספור ממה אז מה? מ0 til אינסוף, או עד הפסקות Scratch, או עד שאתה סוג של לאבד עניין בצפייה כמה גבוה הוא יכול ממש לספור. אז איך אנחנו יכולים להמיר את זה לC? זה הולך להיראות קצת לא ברור מאליהם. אבל שוב, אם אתה מסתכל על כל שורות אלה בנפרד הם סוג של הרכב בדרך כלל. אז, ככל הנראה, int הולך יש להם משמעות מיוחדת בג אנחנו תראו את זה שוב. במאמר המוסגר זה אומר שלם. אז זה רק אומר שמספר. אז זה הסוג של זכוכית קערה אני רוצה, אחד שיכול לאחסן מספרים, לא לאותת כדורי פונג. ואני הולך להשתמש בסימן השוויון יש להקצות לו ערך של 0. אז זה די כמו סט בניגוד ל0, אבל בג בינתיים, בזמן שאמת, שהיה שווה ערך, כמובן, ללנצח, למרות שזה קצת לא ברור מאליהם, ולאחר מכן בתוך הסוגריים המסולסלים. ואתה יכול לחשוב על הסוגריים המסולסלים האלה, שבו אתה יכול להקליד במקלדת, כבאמת להיות כמו העקמומיות ב בלוקים אלה צהובים לולאה בגרד. הוא מחבק מספר שורות של קוד. Printf הוא מקבל כי קצת מפחיד עכשיו אני לראות מצטט לא רק בסוגריים. אבל מה עוד חדש מבחינה תחבירית בדוגמא זו? יש ד אחוזים. ולאחר מכן n הקו הנטוי ההפוך הוא שם. אנחנו לא רואים את זה לפני, אפילו למרות שאני לא הזכרתי את זה. ואז יש פסיק. ואז יש דלפק. אבל נראה בפשוט רגע שזה רק דרך סטנדרטית לומר הדפסה "מספר העשרוני", ציטוט, סוף ציטוט, כמה מספר עשרוני. אבל אני הולך להגיד לך מאוחר יותר מה הוא שהמספר העשרוני. אז העובדה שיש פסיק בprintf האמרה הקו הזה, משמעות הדבר היא ללכת קדימה ולהדפיס כמה מספר עשרוני. אה, ודרך אגב, המספר הוא מה ערכו של משתנה זה הוא. וכך כדי להפוך את זה יותר ברור, אנחנו תראו דוגמא לפני זמן רב היה מעורב בדיוק printf בהקשר של תוכניות C האמיתית. עכשיו רק כדי לעטוף את חלק שני המושגים הללו. ביטויים בוליאנית, ייתכן שאין לך הזדמנות להשתמש אלה בתכנית שלך אבל אתה גם מאוד אולי, במיוחד אם משתמש בתנאים. ולכן אלה שתי דוגמאות מ גרד מתכוון אם x קטן מ y, או אם x קטן מ y וy הוא פחות מ z, איך ייתכן שאנו מתרגמים את זה? ובכן, בC זה פשוט הולך להיראות כך. קצת יותר סוגריים נסתרים,, כמה סימן חיבור מוזר, אבל ביסודו הרעיונות הם פשוט כמו שהם נמצא בעולם פיסת הפאזל. אנחנו פשוט בודקים אם משהו הוא פחות ממשהו אחר. מה דעתך על תנאים? בקליפת אגוז באנגלית, מה שעושה את זה נתח של קוד Scratch אל היית אומר? קהל: משווה בין שני מספרים. דוד י מלאן: משווה בין שני מספרים, ואם x קטן מ y זה אומר כל כך הרבה. אם x גדול מ y זה אומר כל כך הרבה, אחר אם x שווה ל y זה אומר כל כך הרבה. עכשיו שבו x ו y לא באו? מי יודע. נתח זה של גרד קוד הוא מהקשרם. אבל מה שאנחנו רוצים לעשות עכשיו הוא לתרגם זה רק לרגע כדי לראות. אז כפי שאתה מקבל בנוח השבוע בבעית סט 0 שיחק בעולם הזה בצד השמאל, מבין שהרעיונות אינם משתנים השבוע. או הבא או מעבר אנחנו פשוט הולכים להתחיל לכתוב דברים בצורה שונה עימנו מקלדת במקום העכבר שלנו. אז אם x קטן מ y, ו יש כמה סוגריים יש, אז יש כמה סוגריים מסולסלים שוב כדי לתמצת אותו סוג של בדיוק כמו חלקי הפאזל הצהובים עושים. ואני הולך printf x הוא פחות מ y וכן הלאה. מה הוא נחמד על C, כפי שאתה יכול לראות כאן, הוא שאתה לא מקבל קינון זה, קינון, קינון זה בהכרח הולך לדחוף את הקוד שלך בצד הימין. במקום שאתה יכול להיות כל מה ש הרכב בצורה מסודרת אהב את זה. אבל זה רק אסתטי פרט שנראה שוב לפני זמן רב. בסדר. כך שמחזיר אותנו ל תכנית מחפשת מסתורית זה. בואו בעצם לכתוב קצת קוד. עכשיו איך אתה רוצה ללכת על כתיבת קוד? כל השנים האלה שאתה כבר בבעלות Mac או PC, מחשב שולחני או מחשב נייד, למעשה הייתה לך את היכולת להתחיל לכתוב קוד תכנות. אבל אתה כנראה חסר סוג מיוחד של תכנית. אתה בהחלט יכול לכתוב קוד. אבל אתה לא יכול בהכרח, מחוץ לקופסה, להמיר את קוד המקור ש לתוך קוד אובייקט, 0s ו 1s בלי מה במחשב שלך? קהל: מהדר. דוד י מלאן: אז מהדר, תקין. עכשיו רבים מכם ודאי לא בעלי מהדר, אף פעם לא הוריד מהדר. אבל אתה רואה שאתה יכול להוריד אותו כמו רוב כל פיסת תוכנה אחרת. בעולם של מערכת ההפעלה Mac OS, אתה עלול להוריד או שהורידו כבר משהו שנקרא Xcode או GCC או קלאנג. אם אתה בא מ עולמך Windows עלול הוריד Visual Studio, Visual Basic, סביבות כמו ש. יש עשרות מהדרים בימים אלה שיהיו אפשר להשתמש. אבל הקצר שלו כאן הוא שזה יהיה כאב ולמען אמת, טכנולוגי סיוט עבור מאות של אנשים עם שונה תצורות מחשב לכל להגדיר המכונות שלהם בדיוק באותה הדרך כך שכולנו יכולים להיות על אותו הדף. אז מה אנחנו, במקום, לעשות בCS50 הוא אנחנו נותנים לכם סביבה סטנדרטית, סביבת לינוקס זה הולך להסתכל קצת משהו כזה. אתה תראה יותר מזה ב בעיה סט מפרט 1 ש יהיה להיכנס לאינטרנט בלילה ביום שישי הקרוב. ומה זה אומר הוא שאתה מעתה ואילך הולכים להיות מסוגל להוריד ולהתקין את תכנית נקרא Appliance CS50. ואתה הולך להורדה ול להתקין תוכנה אחרת בשם hypervisor, הנמצא במרחק דרך מפוארת של השגת מטרה זו. בין אם בבעלותך מק או PC או מחשב לינוקס או מחשב Solaris, או הפעלה מטורפת מה ש מערכת המחשב שלך פועל, אתה הולך להוריד תוכנה נקרא hypervisor זה הולך לרוץ CS50 מכשיר במחשב שלך לא משנה מה היא מערכת ההפעלה שלך. Hypervisor במילים אחרות ממיר הדברים שלנו לכל שפה, מה הוראות שלך מחשב עצמו מבין. אז זה שכבות. ושוב, זה סוג של נושאיות במחשב מדע, הבניין על דברים. אולי יש לך Windows. אולי יש לך מערכת ההפעלה Mac OS. אבל החל מהשבוע הבא אתה הולך הוריד פיסת תוכנה חופשית נקרא hypervisor. אתה הולך להורדת חתיכה תוכנה בשם Appliance CS50. זה הולך לרוץ בhypervisor, שהוא הולך לרוץ במחשב שלך. והתוצאה הסופית היא שכולנו יהיה יש לי חלון פשוט כמו זה על Mac או למחשב שנותן לנו את האשליה של כל פועל באותה מערכת הפעלה, ללא כל אחר השפעה על המחשב שלך. ואתה יכול במסך מלא זה ובעצם להתנהג כאילו אתה מפעיל מערכת הפעלה בשם לינוקס, וזה מה שCS50 המכשיר מבוסס על. אז בואו באמת להשתמש בזה עכשיו לכתוב תכנית. אתה יכול לכתוב תכנית באמצעות Microsoft Word. אתה יכול לכתוב תכנית באמצעות TextEdit, או פנקס רשימות, או כתבן, או פחות או יותר כל מילה תכנית עיבוד השתמשו אי פעם. אבל המציאות היא שאתה לא צריך להשתמש באמת בתוכניות אלו. אתה בהחלט לא צריך להשתמש משהו כמו Microsoft Word, ש יש מול נועז וכתב נטוי, ו גופנים גדולים יותר וגופנים קטנים יותר, מכיוון שהמחשב לא אכפת מכל זה. כל המחשב הוא הולך אכפת הוא אנגלית כמו הוראות שנכתבו בג אז מה שנעשינו בתוך של מכשיר CS50 הוא משתמש בתכנית באופן חופשי זמין, וזה מותקן מראש בזה מכשיר, שנקרא gedit. וgedit הוא רק סופר פשוט עורך כמו TextEdit של מערכת ההפעלה Mac OS טקסט, כמו פנקס הרשימות של Windows שהולכות נראה קצת משהו כזה. אז בואו בעצם לא מסתכל על שקופיות של זה. אבל בואו באמת ללכת ל הסביבה עצמה. אני הולך קדימה, להיכנס, בחלון אחר זה, לCS50 מכשיר שלי, שיש לי מותקן מראש על המחשב הנייד שלי כאן. שים לב ש, כמו Windows ו Mac OS, יש לו כמה תפריטים. כמו Windows זה מכניס זה שם למטה במקום של Mac OS, אשר מניחה אותו שם. אבל המציאות היא שזה כל הסוג של אותו הדבר. וכאן הוא כל חבורה של תוכנה. יש Dropbox. יש חבורה של אבזרים שלמה, תוכניות גרפיות שאנחנו נעלה את להשתמש מאוחר יותר בטווח סטי בעיה. יש דפדפן אינטרנט המובנה בכך כי מדובר במחשב לכל דבר מלא בתוך מחשב. אבל אני הולך ללחוץ את זה השמאלי ביותר סמל לבן כאן, המהווה את הסמל לgedit. וזה הולך לפתוח חלון שיש לו שלושה פנלים לזה, אחד משמאל, אחד עליון, ואחד תחתון. עכשיו זה בזכות אחד עליון זה ש אני הולך לכתוב קצת קוד למעשה. אז בואו לעשות את זה ,. אני הולך ללכת לקובץ, שמור. וייתכן שלא ראה מעודי חלון המסוים הזה לפני. אבל זה כמו Mac OS או Windows. זה רק חלון עם כל התיקיות שיש לי בתוך מחשב זה. ואני הולך להציל את הקובץ כפי hello.c. ואני מתכוון ללכת קדימה ולחץ על שמירה. ועכשיו שמתי לב שיש לי כרטיסייה בצד השמאל למעלה בשם hello.c. אז כנראה די מוכר גם אם יש לך לא השתמשתי בתכנית מסוימת זה לפני. ועכשיו אני הולך להקליד באלה רצף די נסתר של פקודות שראינו לפני רגע. כולל, אני סטנדרטי / O.h. עוד על רגע ש. void main int, מתולתל פתוח סד, נסגר סד מתולתל. ואז בתוך משם אני חושב שזה שם היה לנו "שלום עולם", ופסיק. ועכשיו לחסוך. אז זה תכנית שנכתבה בשפת C, נכתב, ולכן, בקוד מקור. אבל אני לא יכול פשוט להפעיל את התכנית. אני סוג של רוצה להכפיל לחץ על סמל במקום, אבל אין סמל קיים אחר מקובץ קוד המקור. מה, שוב, הוא התהליך עכשיו ש אני צריך להפעיל קובץ זה דרך? קהל: מהדר. דוד י מלאן: אז מהדר. אז במחשבים השונים לעשות את זה בדרכים שונות. אבל מה שעשינו כאן ב מכשיר CS50 זה נציג של איך אתה יכול לעשות את זה במערכות רבות ושונות, הוא אני פשוט הולך להפעיל פקודה נקראת איפור. ולהפוך אותו, פשוטו כמשמעו, הולך לעשות את זה. לגרום לי תכנית. אז להפוך את הולך לרוץ מהדר עבורי. והשם של התכנית אני רוצה לעשות הוא שלום. עכשיו לעשות היא תכנית. ולהפוך הוא חכם מספיק כדי להבין שאם אני אומר לעשות שלום, זה הולך להיראות באופן אוטומטי לhello.c קובץ שנקרא רק בגלל זה דרך זה מוגדר. לכן, כאשר עכשיו אני מכה הכנס כאן, זה רק שורה נסתרות מטורפת קיבלה להורג. ותאמין לי, לפני ש ארוך, בתוך ימים ספורים, תוכל להבין מה כל של שאמצעי שטויות. אבל לעת עתה, רק יודע שיעשו ביצוע מאולץ של מהדר. במילים אחרות, זה מצא מהדר במחשב שלי זה מותקן מראש על מכשיר CS50 שניתן לכם בבעית הסט 1. ואת זה אז לקח hello.c כ קלט, והופק ככל הנראה 0s ו 1s כפלט. וכברירת מחדל מה שהיא עושה זה חוסך אלה 0s ו 1s בקובץ שנקראו שלום. ולמרות שתחביר זה אולי יותר מדי להיות חדש לך, פשוט באומרו נקודה לקצץ שלום הולך להיות משמעות הדבר היא שבאמצעותו אני מפעיל תכנית זו. לעת עתה ולפחות זוג של שבועות, כמעט כל התוכניות אנחנו כותבים הולכים להיות ב חלונות טקסט שחורים ולבן. לא עכברים, לא לחיצה, אין חלונות, אין סמלים. אנחנו הולכים לשמור את זה פשוט ולהתמקד ברעיונות שבבסיס בתחילה לפני שנגיע למשהו רמה גבוהה יותר, למשל, כמו משחק הפריצה שדיברנו על בהרצאה הראשונה בשבוע שעבר. לכן, כאשר אני מכה הכנס כאן, זה שווה ערך בטקסט בלבד סביבה להכפיל לחיצה על סמל שנקרא שלום. מה אתה מצפה שרצון יקרה כשאני על Enter לאחר מכן? קהל: זה יהיה להדפיס "hello world". דוד י מלאן: אני מקווה ש הוא יודפס "שלום עולם". ואכן הוא עשה. עכשיו יש כבר כמה תחביר נסתר כאן. בואו אחורה רק רגע ולראות אם אנחנו לא יכול להתחיל להסיק רק על ידי התעסקות, מנסה ונכשל, על מה שקורה כאן. מה אם אני להיפטר מn הקו הנטוי? עכשיו חלק מכם שיש לי לתכנת לפני כנראה יודע מייד מה זה אומר. אבל לאלו מכם שיש לי אף פעם לא מתוכנת לפני, לפחות חושב לעצמך מה קורה לשנות כאשר אני להפעיל מחדש תכנית זו? אז אני הולך לחזור אליי חלון שחור ולבן קטן, ש הוא החלון שבו אני יכול לקמפל זה. אני הולך להדר מחדש את שלום. אנחנו הולכים לראות אותו רצף מסתורי של פקודות. ואני הולך לעשות לוכסן נקודת שלום. ועכשיו מישהו, אם היית, שמעולם לא תכנת לפני, מה יכול להיות שונה הפעם? כן. קהל: זה לא יעצור "עולם שלום". הדפסה דוד י מלאן: זה הולך מצטער to--? קהל: זה לא יעצור הדפסתו? דוד י מלאן: זה לא קורה להפסיק להדפיס "hello world". אז רעיון לא רע. רעיונות אחרים? כן. קהל: הודעת שגיאה? דוד י מלאן: שגיאה הודעה, אישור, יכול להיות. מה עוד? קהל: זה יכול להדפיס סוגרים עם פסיק גם כן? דוד י מלאן: אולי להדפיס סוגרים עם פסיק, כמו גם. אז אולי קו נטוי שלאחר מכן הוא חלק סוג של terminous זה חשוב. כל מחשבות אחרות? רעיונות אז הכל טוב. ולמעשה, זה הולך להיות הודעת שגיאה. זה כנראה סביר ביותר להיות התשובה באופן כללי בשבועות הבאים כפי שאנו לומדים בקוד כאן. אבל לעת עתה זוכר שמחשבים רק לעשות מה שאתה אומר להם לעשות. בדומה הבוטנים המגוחכים חמאה וריבת דוגמא. המחשבים האנושיים שלנו היו אמור רק לעשות מה שאתה אמר להם לעשות. אז במקרה הזה, אם אתה לא מספר את המחשב כדי להעביר את הסמן מהבהב ל השורה הבאה, זה לא הולך לעשות את זה. לכן, כאשר אני מפעיל את תכנית זו עכשיו, תבחין בהבדל. נראה כמו באג. זה באג אסתטי, אולי. אבל מה הוא שונה על זה פלט מול האחרון ברורה? כן. קהל: היא לא עשתה קו חדש. דוד י מלאן: זה לא עשה קו חדש. עכשיו אלו מכם ש יש לי דפי אינטרנט אולי הפכו את לפני, אתה אולי יודע של תג BR או תג פסקה, דומה מאוד ברוחו. דפדפן אינטרנט יהיה להתעלם ממך עד אתה אומר את זה בדיוק מה לעשות. בדומה לכך, היא שפה כמו C רק הולך לעשות את מה שאתה אומר את זה לעשות. אז הסיבה ש כל דוגמאות הללו, עד כה, יש לי סוג של כבדרך אגב היה קו נטוי זה שם, זה האמצעי שבו אתה מבטא את עצמך כדמות קו חדשה, אם אפשר לומר כך. ואתה יכול סוג של מעריך, אולי, כי זה היה נראה די טיפשי אם שום דבר אחר. אם אני רוצה קו חדש, רק להכות הזן ולאחר מכן סוג לשחוט את הקוד כמו ש לא ממש צריך לשפשף אותך בדרך הנכונה. ואפילו אם לא ממש אכפת בשלב זה, אתה מבין ש זה לא במיוחד חתיכה נראית טובה של קוד. ואז מה העולם לפני שנים החליטו הוא כי כאשר אתה רוצה לשים סמן אל שורה חדשה באופן מפורש, באופן מפורש שאתה חייב לומר קו חדש, הקו הנטוי n. ויש כמה אחר סמלים כמו ש. אבל לעת עתה אנחנו פשוט להתמקד בn הקו הנטוי. עכשיו בואו להפוך את התכנית קצת יותר מעניין. אני הולך קדימה, זה זמן לפתוח את קובץ חדש. אני הולך להציל את זה כhello-1.c. וסתם בשביל הכיף, אני הולך ללכת הכניס אותו לתוך תיקיית Dropbox שלי. כפי שתראה בCS50 תיעוד של המכשיר, מאוחר יותר שבוע לבעיה זו Set 1, אנחנו נעודד כדי שתוכל להשתמש Dropbox או איזה שירות שווה ערך, כי אז כל הקוד שלך הולך להיות מגובים באופן אוטומטי. ואז זה למה לי הלך לתיקייה זו כאן. ועכשיו אני הולך לכתוב תכנית שונה במקצת. כולל, אני סטנדרטי / O.h void main int,. ולאחר מכן בכאן printf, שלום עולם, שזה בדיוק אותו הדבר כמו קודם. אבל עכשיו אני רוצה להדפיס משהו זה קצת שונה. אני רוצה להדפיס, אומר, "שלום, דוד." בסדר, אז ברור, אני מקווה שזה צריך להיות במקרה זה אם אני הידור מחדש תכנית זו, הפעל מחדש את זה, זה הולך לומר "שלום, דוד." אבל מה אם אני רוצה להציג זה סוג של משתנה, הרעיון של מיכל שקורה לאחסון D--v-i-d ולא קשה קוד זה לתכנית שלי. ובכן מה אם אני מתחיל עושה משהו כזה? מחרוזת של, אז זה משתנה. אם אתה רוצה מחרוזת, מוכר גם בשם מילה או ביטוי. רצף של תווים הוא מה אנחנו בתכנות קוראים מחרוזת. אנחנו רק הולכים הגנרי שיחה זה זה, כי זה שם פשוט נחמד. אבל אני יכול לקרוא לזה שום דבר. אני הולך לומר שווים של המחרוזת ציטוט סוף ציטוט, "דוד", פסיק. ועכשיו אני רוצה להכניס D--v-i-d למה שאני מדפיס. ולפני שראינו טיזר על המסך של כמה תחביר מיוחד שאיפשר לנו תחליף בשווי. מה היה מיוחד סמל לפני כמה שקופיות? אז אחוזים. בזמנו זה היה אחוזים ד למספר עשרוני. כי לא ממש נראה לי רלוונטי כאן. מתברר של שם עוד סמל אחוזים, שהוא של אחוזים, העומד למיקום עבור מחרוזת. אז עכשיו, מאוד פשוט, אני הולך לעשות שלום-1, כי קובץ זה נקרא שלום-1.c, וקש Enter. ואני דפוק. מה קורה? ובכן, כאן מקום שבו אנחנו צריכים להתחיל מעריך שאנחנו בפקודה זו סביבת שורה, זה טקסט הסביבה בלבד. אין לחיצה על אייקונים כמו תיקיות עכשיו. ונזכר לפני רגע. במה שהתיקייה עשתה אני אומר אני מציל את הקוד שלי? אז תיקיית Dropbox. אפשר היה נקרא כל דבר. אבל זה קורה להיקרא Dropbox. אז אני איכשהו צריך ללחוץ פעמים על שתיקיית Dropbox על מנת לקבל לתוך זה ולקבל בי הקוד נקרא שלום-1.c. למעשה, תן לי ללכת קדימה ולמזער חלון זה רק לרגע. בדיוק כמו Windows או Mac OS, יש תיקיות בלינוקס. ישנן תיקיות במכשיר CS50. זה רק עכשיו אנחנו מגבילים את עצמנו לסביבת הטקסט הזה. אבל אם אני לוחץ לחיצה כפולה על Dropbox, שים לב שיש הוא הקובץ שאני רוצה לקמפל. אבל אני צריך את זה שחור ולבן חלון מסוף, אם אפשר לומר כך. אבל אני צריך, לכן, כדי לעבור שלתיקייה או ספרייה. אז מעט מסתורי, אבל אתה תתרגל לזה יותר מדי. בעולם של לינוקס, ששוב היא ההפעלה מערכת שאנו פועלים בתוך CS50 מכשיר, יש פקודה שנקראת CD. מה שאומר שאני יכול לעשות CD, חלל, Dropbox. CD, שינוי בספרייה. ימין. חזרה ביום שבו אנשים היו המצאת מחשבים והפעלה מערכות דומות לזו, הם רצו הקלד את ההקשות כמה שפחות. אז הדרך הקלה ביותר לומר שינוי הספרייה הייתה CD. אז אם אני מכה CD, החלל Dropbox, שים לב מה השתנה כאן. בתוך סוגריים המכשיר הוא מסוג של מנסה לרצות אותי ו מזכיר לי איפה אני. אז התיקייה הפתוחה הוא Dropbox. אם אני עכשיו הקלד ls ל רשימה, שוב תמציתית, בגלל שאנשים לא רוצים הקלד בחזרה ביום-S-t l-i. אז הם עשו את זה במקום LS. הזן. שים לב שאני רואה את שני דברים, הלו-1.c, ולאחר מכן דבר נסתר זה, 1m המקור. זה רק דרך לומר שלי קוד מקור של השבוע השנייה 1. זה תיקייה אני הורדתי מ באתר CS50 שעשיתי מוקדם יותר היום ופשוט לשים אותו לתוך מכשיר מראש. אבל לעת עתה הדבר היחיד שאנחנו אכפת לי עושה תכנית זו. לכן, כאשר אני מקליד לעשות שלום-1, הזן. לעזאזל. משהו השתבש. אז בואו להקניט זה לגזרים. ולמרבה הצער, זו היא שבו דברים לקבל קצת מלחיץ בהתחלה, לפחות אם יש לך אף פעם לא מתוכנת לפני. אלוהים. כתבתי תכנית שני קו ו יש לי ארבע שורות של שגיאות. אז מה קורה כאן. בראש ובראשונה תמיד לגלול אחורה ולמצוא את הודעת השגיאה הראשונה, כי לעתים קרובות מהדרים רק מתבלבל ממה שאתה ואני עושה. מהדרים הם די מטומטמים. הם רק יעשו את מה ש אתה אומר להם לעשות. ואם אתה לבלבל אותם, הם פשוט הולך להקיא סוג של הידיים שלהם ואולי לזרוק יותר הודעות שגיאה מ רלוונטיים למעשה. אז בואו נסתכל בראשון. סופר מסתורי בהתחלה. אבל שימו לב, כאן זה שם קובץ שבו אני דפוק כנראה. קולון 5, מעי גס 5 רק אומר על קו 5 בדמות החמישית. אז הגיס החמישי של דמויות, אם תרצה, שגיאה. שימוש במחרוזת מזהה לא מוצהרת. האם התכוון ל n הסטנדרטי? לא, התכוונתי מחרוזת. ואז זה סוג של העתקה והדבקה מה אני הקלדתי באמת לצייר שלי תשומת לב למקום שבי דפוק. אז לכמה C סיבה, או לפחות מהדר אינו מבין את מילת מחרוזת. וזה בגלל שאנחנו המצאנו אותו. אז מחרוזת אינה קיימת בג מה CS50 עושה, בשבועות הראשונים רק של המעמד, הוא שאנו מספקים כמה אימונים גלגלים, אם אפשר לומר כך. ואנחנו שמים את גלגלי העזר הללו בתוך קובץ מיוחד בשם CS50.h. אז זה השני של שני קובץ שמות שככל הנראה יסתיימו בשעתי נקודה. בואו אחורה. Printf הוא הצהרה או פונקציה שככל הנראה מדפיס משהו למסך. אבל אתה לא ראית אותי ליישם printf, תקין. שנות מישהו לפני מיושמות printf. במה שקובץ היית מהמר שהוא או שהיא שמה את היישום לprintf, הקוד לprintf? בקובץ שנקרא סטנדרטי I / O.h. למעשה, זה כנראה ב שני קבצים, אני סטנדרטי / O.h, אשר עומד על כותרת קובץ, ואני רגיל / O.c, אשר מייצג את קוד מקור C. אז הוא או היא כמה שנים צנחו לפני הקוד שהם כתבו לקובץ ש כדי שאנשים כמונו שנים מאוחר יותר יכולות לכלול אותו, אם אפשר לומר כך, בתוכניות שלנו. ואכן, זה מה שהסולמית ואחריו את המילה כוללים עושה. זה נראה בכונן הקשיח המקומי, מוצא את הקובץ שנקרא אני סטנדרטי / O.h, ולאחר מכן ביעילות עותקים ו מדביק אותו בתוך הקובץ שלי. אז עכשיו התכנית שלי יודעת כיצד להדפיס למסך. אז לפי ההיגיון הזה, שבו מוגדרת מחרוזת? קהל: CS50.h. דוד י מלאן: CS50.h. ואכן, זה מה שאנחנו, צוות הליבה, עשה. אנחנו כבר המצאנו כמה סוגי נתונים, אם אפשר לומר כך, כמו מחרוזת, בנוסף לאלה שאתה לקבל בחינם, כמו int. ואנו רואים אחרים כמו char לאופי ועוד כמה. בתוך CS50.h הוא, ככל הנראה, לפחות חלק אזכור למחרוזת. אז עכשיו תן לי ללכת קדימה ואיפור בשידור חוזר שלום-1. אני להתקרב שוב ולחצות את האצבעות שלי. עכשיו על ידי שעשה אחד לשנות תקנתי את רוב הדברים. אבל לעזאזל. יותר אחוזים מאשר טיעוני נתונים. מה עשיתי לא בסדר הפעם? אז זה עדיין די מסתורי. אבל שגיאה זו היא על קו 7 ואופי 21. אז בואו נלך לחפש כאן. זה קצת עדין. אבל אם אתה חושב על מה ש הרעיונות הבסיסיים כאן הם, אולי אנחנו יכולים להפריד את זה. אז printf הוא השם של הפונקציה. סוגריים, עד כה, הוא בדיוק כמו מה שאנו מקימים סביב הדברים שאנו עוברים כתשומות לפונקציה. בסדר, רק אמנה אנושית שרירותית. להשתמש בסוגריים. בתוך סוגריים אלה אנחנו כבר לשים במרכאות כפולות, ואז מחרוזת כמו "עולם שלום." אבל שבדוגמא קודמת מאוד בקצרה עשו אנחנו מסתכלים עם סריטות. והיו לנו ד אחוזים, מה עוד היה בתוך סוגריים אלה שקראתי באופן מילולי? כן. קהל: אז זה מה שאתה לוקח [לא ברור] מבפנים [לא ברור] מה אלה [לא ברורים]? דוד י מלאן: בדיוק. אז היו לנו ד אחוזים. אבל אז הייתה לנו קרוב ציטוט, פסיק, דלפק. ימין. אנו שצוינו מה שאנחנו רוצים לעשות כמציין המיקום. אז מה אני הולך לעשות כאן הוא פסיק, מה אתה רוצה ממני לשים? קהל: ס דוד י מלאן: S, כי ים במקרה זה הוא השם של מיכל האחסון. זה שמו של שקערת הזכוכית. בעוד שבעבר זה היה נגדי שב דוגמא Scratch פשוט הסתכלנו. אז עכשיו אחרי שעשה שני שינויים, תנו לי להתקרב ולנסות פעם נוספת ל לקמפל תכנית זו. עכשיו אני רואה ששורה נסתרות. אבל זה בעצם שמו של המהדר. צלצול הוא השם של המהדר. לעשות הוא פשוט הציל אותי כאב הראש של אי פעם הקלדה כי הפקודה ארוכה מטורפת. אז עכשיו אם אני dot לקצץ שלום-1, אני צריך לראות את "שלום, דוד." די משעמם, אם כי, נכון? היינו יכולים לעשות זה הרבה יותר פשוט בלי לדבר על משתנים וCS50.h וכל זה. אז בואו נעשה את זה קצת יותר מעניין. בנוסף לCS50.h, יש דברים כמו מחרוזת הכריז, ספריית CS50 יש גם כמה פונקציות. לפני שנים אז בדיוק כמו, מישהו כתב printf ולשים אותו בתקן I / O.h וחלק אחר של קובץ. אנחנו, צוות CS50, כתבנו פונקציה נקרא GetChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, ואנחנו שמים אותם בתוך קובץ נקרא CS50.h וCS50.c. ואנחנו שמים אותם בתוך של מכשיר CS50. ואנשים גם יכולים להוריד אותם באינטרנט אם הם רוצה לשים אותם עליהם מחשב בביתם, כמו גם. כלומר שיצרנו פונקציות שמקבלות קלט מהמשתמש. אני לא יודע מה כל מסוגי הנתונים הם. GetInt הוא סוג של פשוט, כמו תקבל מספר שלם איכשהו מהמשתמש. וGetString הוא כנראה כמו גט מילה או משפט מהמשתמש. אז בואו נתמקד בזה. ואני הולך לחזור אל מכשיר ואני הולך קדימה ולשמור את הקובץ בשם, בואו נקרא זה שלום-2.ג כגרסה השנייה שלי. ובואו נעשה כמה שינויים. הפעם במקום קשה דוד קידוד, ש עושה עקבי להפליא אבל תכנית משעממת, מה אם אני במקום לעשות GetString? עכשיו שמו לב GetString יש סוגריים פתוחים, סוגריים סגורים, משום ש זה לא צריך כל קלט. זה פשוט הולך לקבל מחרוזת מהמשתמש. ועכשיו מילה על תחביר אחר. פסיק רק בסופו שורת קוד. אתה לא צריך אותם בכל מקום. אבל זה רק אומר שאני נעשה עם הקו הזה של קוד. תן לי לעבור על עוד הצהרה או פונקציה. המחרוזת מצהירה על משתנה. מחרוזת היא כמו להגיד תן לי קערה, בבקשה. ותנו לי לשים את מחרוזת בזה. ועכשיו סימן השוויון. מהו סימן השוויון בעצם שווה ערך ל? קהל: הקצאה. דוד י מלאן: כן, קביעת ערך. אז אם אני, למשל, שיחה GetString זה פונקציה, ואנו רואים ברגע זה הולך לבקש מהמשתמש מחרוזת. זה כמו שנתן לי אז לכתוב D--v-i-d על פיסת נייר. וכשאני אומר מחרוזת ים שווה GetString, שווה לא ממש מתכוון שווה בתכנות C. זה אומר להקצות מהימין צד לצד שמאל. אז אני כבר קיבלתי מחרוזת. וסימן שוויון פירושו לשים אותו באחסון בשם של מיכל. ואז להעביר את זה מחוץ ל printf בעצם לעשות את הדבר שלו. אז התוצאה סופית אז הוא הולכת להסתכל קצת שונה. בואו עושים שלום-2. כך או יכול לעבוד. אתה הבא יחד. הפוך עבד שלום-2. דוט לקצץ שלום-2, הזן. יש לי כנראה אינסופי לולאה או משהו. שום דבר לא קורה. למה? קהל: זה מה שהופך את לולאה אינסופית. דוד י מלאן: זה לולאה אינסופית. זה סוג של מחכה לי ל למעשה לספק אותו עם קצת קלט. אז תן לי ללכת קדימה והקלידו בדוד, וקש Enter. ועכשיו הוא אומר "הלו, דוד." אם אני מפעיל את זה שוב. בואו נקליד ברוב, "הלו, רוב." עכשיו זה הוא הגרוע ביותר ממשק משתמש אי פעם. המשתמש זה כנראה אמור לדעת מה לעשות. אבל לא משנה. באמצעות אלה אותו בניין בלוקים בדיוק כמו בגרד, אנחנו יכולים לפתור את הבעיה הזאת ולומר משהו כמו שמך בבקשה, מעי גס, חלל, סגור ציטוט, קרוב סוגריים, פסיק. כל כך הרבה שוב טיפשות עם התחביר. אבל שמתי לב רק אני הוספתי חתיכה מעל זה חידה ומעל זה. אז עכשיו אם אני מפעיל מחדש זה, hello-2, הזן. חכה רגע. מה קרה? זה לא מתנהג באופן שונה. כן. קהל: אתה לא רצת לעשות שוב. דוד י מלאן: אני לא לרוץ לעשות שוב, תקין. אז אני כבר שיניתי את קוד המקור שלי. אבל שוב, יש זרימה ש. קוד מקור באמצעות המהדר נותן אתה קוד אובייקט חדש, או 0s ו 1s. אז אני צריך בעצם איפור בשידור חוזר שלום-2 הזן. אישור, משהו כנראה קרה. דוט לקצץ שלום-2. השם שלך בבקשה. וכדי להיות ברור עכשיו, למה הוא הסמן באותה השורה? בדיוק. אני לא שמתי את הקו הנטוי n כאן בקוד שלי. אז עכשיו אני יכול לכתוב משהו כמו ךייבן, הזן. אני יכול להפעיל אותו שוב והקלד משהו כמו גייב, הזן, ואנחנו מקבלים בתכנית אחרת שוב ושוב ושוב. עכשיו סופו של דבר אנחנו הולכים צריכים להשתמש כמה יכולות שונות. אנחנו צריכים להציג את סופו של דבר כמה תנאים לעשות דברים על תנאי. אולי לולאות כדי שנוכל לעשות דברים שוב ושוב. אולי זה יהיה נחמד אם יכול ליישם פונקציות שלנו, כמו שאנחנו יכולים ליישמנו printf או הגרסה של GetString שלנו וGetFlow, כי גם סופו של דבר באמצעות סביבת שורת הפקודה זה אנחנו יכולים לעשות אפילו ביותר מעניין מבחינה ויזואלית של דברים. ואכן בסיום תן לי לעשות את זה. אני הולך קדימה ולסגור את החלונות האלה ולפתוח סמל זה כאן, וזה רק יותר גדול גרסה של שמוטבעת חלון מסוף. אז gedit יש לא רק המקום לקוד שלי, אלא גם בנוי בחלון מסוף, חלון שחור ולבן שבו אני יכול לרוץ פקודות. אני פשוט קרה כדי לפתוח גרסה גדולה יותר של זה. ועכשיו אני הולך להיכנס את התיקייה שיש לי כבר לשים מראש באתר האינטרנט של הקורס. ואני הולך קדימה, לפתוח קובץ שנקרא thadgavin.c, שנכתב על ידי מישהו אחר. אם אנחנו מסתכלים על זה ו, זה לא הסוג של קוד יהיה לנו כותבים מאז המטרה של הקוד הזה היה לכתוב יפה מחפש קוד שהוא או היא יכולה, ללא קשר לשאלה אם אדם אחר אי פעם יכל להבין את הקוד הזה. ואכן, בכל שנה יש מה ש בשם תחרות C לטשטש, ש הוא לחנונים אמיתיים שכותבים קוד שאף אחד אחר לא יכול לקרוא, אבל זה עושה משהו או ממש פשוט או באמת מדהים. ואנחנו חשבנו שהיינו תסיים במבט הזה במשהו שהוא די מדהים שאולי ראה פעם אחת לפני. אבל אנחנו בסופו של בזה פתק, לוכסן נקודה, thadgavin. אז זה מה שמחכה לי. זהו זה לCS50. אנחנו אראה אותך ביום רביעי. [השמעת מוסיקה]