דוד Malan: זה CS50, וזה היא ההתחלה של שבוע אחד. ומה שחשבנו שהיינו לעשות היא למשוך בחזרה המסך של מכשיר שרבים מיש לך כנראה עבר עכשיו במשך שנים, אבל אולי לא ממש ידוע מה זה. אז המכשיר הזה כנראה ייראה מוכר לרובכם עד עכשיו. [השמעת וידאו] -נצחון מתמטי ו מיומנות מכאנית היא חדשה גדול מחשבון אוטומטי ב אוניברסיטת הרווארד. בעיות סבוכות במתמטיקה לשים באמצעות מכונת בצורה מקודדת על קלטת נפתרות מדויק בדקה חלק קטן מהזמן הנדרש ל חישוב אנושי. שנועד לזרז את כל צורות מחקר מתמטי ומדעי, המוח מכאני הענק יהיה עובד עבור ארצות הברית חיל הים עד סוף המלחמה. [השמעת וידאו הסוף] דוד Malan: אז זה מה שאתה רואה ב מרכז המדע, שבה מכונה ששוכן כעת. אתה בעצם רואה רק חלק ממנה. רק חלק נמצא כעת בתצוגה, וזה מכשיר שנקרא מארק אני, וזה היה למעשה מחשבון באמת ענק. הוא הצליח על ידי Mark II, ו זה מMark II שאנחנו באמת תקבל קצת מלקסיקון. זהו המקרה המתועד הראשון של משהו שאתה עומד להיות כל מכיר יותר מדי עם מעל במהלך הסמסטר - כלומר, באג. אז התברר בשלב מסוים סמן את המכשיר השני לא תפקד כמו שצריך, ואחרי בדיקה מדוקדקת יותר, אכן היה באג - עש - עש ש-- בפנים. ומאז, יש לנו מכונים טעויות בתוכניות כמו חרקים. אז עוד על כך לבוא. אם כבר מדברים על וידאו, כמו גם, אם אתה עדיין לא עשיתי זאת, יודע שהיא CS50 ברור שצולם. את ההרצאות בדרך כלל לעלות מייד אחרי כיתה בסוג של טרום שחרור פורמט לא ערוך, ולאחר מכן יום או ימים מאוחר יותר, אנחנו מעלים את רזולוציה גבוהה יותר וגרסה באיכות גבוהה יותר. אולי אתה זוכר ונסה, שהיה לו מזל של לשחק עם Google זכוכית, שזכרתי לחייב את הזמן הזה. אז אם אתה רוצה לבוא אחרי השיעור ולשחק, הם צריכים לעבוד היום. ואם אתה רוצה לראות את מה שונסה ראית לפני כמה ימים, מה שתראה כאן - תנו לי להעלות את עוצמת הקול כאן, על המחשב הנייד שלי. [השמעת וידאו] -אז תן לי בתור זה הוא למעלה. בסדר. אז לגעת בזה. בסדר. אוקיי, זכוכית. להקליט וידאו. בסדר. ונסה? [השמעת וידאו הסוף] דוד Malan: בסדר, אז הסיבה שזה לא עובד עבור רובכם ב סוף השיעור היה בגלל שהמשכתי כדי להקליט שעה של ש צילומים הצביעו על עצמי אחרי הנחתי את משקפיים. אז היום, אני אשאיר אותם, אבל תודה לך ונסה להיות כזה ספורט טוב. בינתיים, כמה הכרזות לפני שאנחנו לפרוץ קדימה היום. אז יש אחד, CS50 מסורת של עשייה מה שאנחנו יכולים כדי לנסות להפוך מאוד כיתה גדולה מרגישה קטנה יותר. ולקראת הסוף, כי, רוב בכל יום שישי, אנו מתכנסים במסעדה ב כיכר, אש וקרח, עם 30 או 40 חבריו לכיתה שלך, בעצמי, חלק מן סגל ההוראה, ואנחנו פשוט יש ארוחת צהריים נינוחות מאוד. לעתים קרובות אנו מזמינים את חברים מתעשייה, בוגרים של הכיתה, בוגרים של מכללה, באמת רק כדי לשוחח אחד את השני, לדבר על חיים שאחרי מכללה, חיים במכללה, וכיוצא בזה. אז אם אתם רוצים לקחת חלק בזה ארוחת הצהריים ראשונות מסוגו ביום שישי הקרוב בשעה 13:15, ועד ראש ש כתובת אתר בשלב מסוים. מספר המקומות מוגבל, ולכן אנחנו נעשה כל קודם זוכה. אבל אנחנו נעשה את זה שוב בחוזר בסיס, אז לא לדאוג אם לא להפוך אותו למנה ראשונה זה. עכשיו, במונחים של המשאבים הניתנים curricularly ידי כמובן, יש שורה ארוכה כולו, ואם יש לך לא משך את אתר האינטרנט של הקורס כבר, בפרט, בהרצאות, אתה תמצא את כל מה ש אנחנו עשינו בשבוע שעבר הוא שם, גם בוידאו ואיזה של צורה אלקטרונית. אבל מעבר לקטעי וידאו, אתה תמצא כי עכשיו יש טקסט מלא תמלילים, למשל, בכל הרצאה. אז אם אנחנו באמת לחזור למסך הזה כאן עם ונסה, ולנווט לפינה התחתונה של המסך, תגלו שבעצם, לא בשביל הרצאתו של יום שישי, אבל אם נחזור ל יום רביעי, שכן תכונה זו לוקחת כמה ימים, אתה תמצא כי אתה יכול למעשה להרים, לטוב או ל גרוע מכך, כל מילה שאני או מתנדב על במה, אמר. ויותר מזה פשוט. למעשה אתה יכול לחפש אותו, אתה יכול לחץ על כל אחד מהמשפטים האלה, לקפוץ לנקודה זו בוידאו, בכל הכיוון והסוף של כל מה שהופך את החומר יותר לניווט. אבל אם אתה מעדיף שלא לעקוב אחריו בפירוט כזה, אתה תמצא, עבור למשל, בתפריט זה קצת כאן ל1.5x מהירות, מהירות 2x, או i F אני כבר מדבר מהר מדי בשבילך, מהירות 0.75x. אז מבין את כל זה הוא זמין שם בשבילך. אבל מעבר לכך, להרצאות, מבין כי אנחנו גם עושים במשאבים אלה זמין גם כן. שקופיות, קוד לדוגמה, כל דבר שאני עושה על במה או מראש של כיתה, אנחנו מתכוונים לכתוב לשם, כך שאתה יכול לשחק יחד בבית או בסנדרס. אבל מה גם שחשבנו שאנחנו היינו עושים את זה שנה בפעם הראשונה היא גם לספק לך את ערוצים מדוגמאות אלה. יותר ויותר, כפי שבאתי לידי ביטוי על ערך של ההרצאות של CS50, אני כבר החל לשאלה עד כמה שימושי זה הוא עבור אתם לשבת שם, בשבילי לעמוד כאן, ולי לדבר אליך, במיוחד כחומר, דוגמאות, לקבל יותר מורכבות. כי תמיד, לאחר מספר דקות, מישהו יהיה מתוך אזור, ו אז אתה מתגעגע לתובנה עיקרית של חלק למשל, ואז אתה בעצם הלך לחלק הנותר של כיתה, וזה לא השימוש הטוב ביותר של הזמן שלך, או, באמת, שלנו קולקטיבית כמעמד. וכן מה שחשבנו שהיינו מנסה לעשות, במיוחד עבור חלק מיותר דוגמאות מורכבות שאני לא יכול לעשות צדק עימו בכיתה, שאנחנו לא יכולים יש לי זמן בכיתה, או שאולי רק אזור בזמן, הוא שאנחנו יהיו לייצר סדרה של ערוצים של אלה דוגמאות, כך שאם אתה הולך, ל למשל, בעמוד הווידאו של יום שישי שעבר כאן תחת דוגמאות, אתה תראה ש ליום שישי, יש עכשיו זה לקשר לערוצים. והפורמט של אלה ישתנה עם הזמן. לעת עתה, אנו משתמשים פשוטים YouTube רשימת השמעה. אבל מה שעשיתי עם צוות ההפקה שלנו אחר כך היה הולך דרך כל ובכל אחת מדוגמאות האלה שוב, אני מקווה שהצבעתי בהרבה יותר גדול בהירות בדיוק מה את המזנונים יכול להיות או צריך להיות מכל אחד. אז אתה תמצא, למשל, שמעברת שבוע, כל דוגמאות הגירוד שעברנו עלינו נעשים ליניארי בדרך זו. אז תרגיש חופשי לעסוק או לא לעסוק בחומר זה. באמת נושא של קורס המסוים הזה הוא שיש כנראה יותר בדרכה של משאבים ממה שאתה יכול לספוג מעל במהלך סמסטר. אבל זה מכוון. זה אמור להיות, כך שאתה כ תלמידים בודדים יכולים עצמי לבחור המבוסס על סגנון הלמידה שלך. אז אם הרצאות לעבוד בשבילך, נהדר. אם חלקים יעבדו בשבילך, נהדר. אם ערוצים לעבודה אתה יותר טוב, נהדר. זה באמת יהיה תלוי בך כדי לבחור מה משאבים יעבדו הכי טובים בשבילך. לבסוף, תודה לבוגר כמובן, אנחנו גם מספקים הקנונית סדרה של הערות סופר. אז במקום להיות ראשי חבר 'ה למטה בהרצאות ורשמו דברים שעולים בכיתה, אנחנו, צוות, יספק לך את מה שאנחנו מרגיש הם קבוצה הקנונית של הערות ל לשחרר אותך מהסחת הדעת ש, כך אם אתה נמצא כאן ועוסק, אתה באמת עוסק במה שקורה, עם החברים לכיתה שלך עושים על במה, עם מה שקורה על המסך, ולא רק לכתוב את מילה במילה מה שקרה לי כבר אמר. אז מבין את כל המשאבים האלה הם זמינים לך. חתך, בתשובה לשאלות נפוצות, יתחיל ביום רביעי הקרוב. אנחנו בעצם לחכות עד לאחר שרוב כיתות אחרות עשו זאת, כי אנחנו יכולים לצמצם את מספר השינויים שאנחנו צריכים לעשות. אבל לבוא בסוף השבוע הזה, החל יום ראשון, יהיה מופע חד פעמי של מה שאנו מכנים סעיפי העל. אלה להצטלם למי שלא יכולים להשתתף, ובעצם, הראשים של הקורס ללוות אותנו דרך כמה של חלק ג'של הקורס, לקראת סוף הבעיה סט אחד, אשר הולך להיות C הראשון שלנו המבוסס סט בעיה. ואלה הם רק יהיו סעיפים אופציונליים בציפייה מה יהיה הפכו סעיפים חד פעמים הובילו ב -50 בתוספת של הקורס ללמד בחורים שבועי. בימי ראשון או בימים שני או שלישי, אנחנו יש 90 סעיפים בדקה מאוד מובן מסורתי, אשר יהיה הזדמנויות לידיים וביותר ביקורת אינטימית של החומר של הקורס. בלי שהיות, הרשה לי להציג את הראשים של הקורס, שהם מאחורי הקלעים עימי, מה שהופך את כל מה שיקרה. אם אלה כאן היום יכולים להצטרף אליי, רוב ולורן ויוסף ולוקאס, כל מהם היינו עם כמובן במשך זמן מה. RJ הוא כזה שלישי חבר בצוות שלנו. הוא לא יכול להיות כאן היום, אבל הוא ביקש ממני להראות את תמונה שלו. אני לא בטוח שהוא רוצה את זה אחד, אבל הנה הוא. ותנו לי רק לאפשר לצוות לומר שלום ולהציג את עצמם, כך ש אתה לומד להכיר אותם, כמו גם שלך עמית הוראה של מונח זה. LAUREN קרבאליו: היי. השם שלי הוא לורן קרבאליו. אני מורה תושב בבית וורט. אני גם נרגש סופר להיות ראש טלוויזיה לCS50 השנה. CS50 היא ברמה מאוד מאתגרת, כמו גם כמעמד גדול מאוד, כך שאם אתה יש כל חששות, אם מתחשק לך אתה נופל מאחורי, תרגיש חופשי להושיט יד לכל אחד מאיתנו ב heads@cs50.het, או אליי, אם אתה הייתי אוהבים לשחק עם הזהב שלי גור רטריבר. הנה לוקאס. לוקאס פרייטס: היי, חבר 'ה. השם שלי הוא לוקאס פרייטס. אני זוטר [לא ברור] מדעי מחשב ובלשנות. אני בעצם מברזיל, ואני גם מבין לימודי מזרח אסיה. אז אם יש לך שאלות כלשהן על מדע או שפת מחשב או שום דבר, רק תודיע לי. או CS50, במיוחד. יוסף ONG: היי. אני יוסף. אני לומד מחשב בכיר מדע בבית אליוט. אז, בואו נראה. אתה רואה סביב נושא אותי אחת המצלמות האלה עצומים. אני צלם צוות תושב ל50, כמו גם, ולעתים קרובות תלמידים לפעמים מבלבל אותי עם תייר האסיאתי. אז אם אתם רואים אותי עם מצלמה, לא לברוח. רק לחייך ואל תתבייש. ואני מקווה שאתה נהנה מ50. אני נהניתי מאוד כשלקחתי אותו, ובגלל זה אני כבר TFing עבור שלוש השנים האלה. ROB אודן: היי. אני רוב. זה הסמסטר הרביעי שלי עם CS50. אני רק סיים את לימודיו בחודש מאי. הייתי בקירקלנד. אני מתרגש לסמסטר זה, ואני מקווה שגם את. דוד Malan: תודה לך לשנה זו של ראשים, ול RJ גם כן. אז כמה הערות אחרונות במשאבים. אחד, עמ '0 הוא מוגדר כבר. אחד זה קיים רק בתקן מהדורה, שנועדה עבור שלמותו של המעמד. החל עמ 'סט 1, לא יהיה מהדורות האקרים של רוב הקבוצות בעייתי, אשר, שוב, יכסה את החומר עם קצת יותר אתגר, ואילו עדיין נוגע בכמה באותם נושאים. האם תסתכל באתר האינטרנט של הקורס למפרט שעבור p סט 0. שעתי עבודה, יותר מדי, תתחיל השבוע, הלילה, מחר, יום רביעי, וביום חמישי באוכל שונים אולמות בקמפוס. עזיבה cs50.net/ohs למשרד שעות לקורס, ומבין את זה יהיו הזדמנויות מאוד מזדמנים, בהחלט, בתחילת סמסטר, לבוא עימך מחשב נייד במהלך פריצת המוח. תביא כמה חברים ולשוחח עד TFS של קורס ועם כל CAS שאלות שאולי יש לך. ואני לא יכול להדגיש מספיק, אפילו עבור שריטה והבעיה סט 0, יש באמת אין שום שאלה מטומטמת. אין תלמיד שלא בנוח מדי כדי לשאול שאלות. אל תהסס לנצל של משאב זה. זה יהיה שם recurringly במהלך הסמסטר, כידון CS50. זהו הדיון המקוון של הקורס פורומים בכתובת שיש. מה שאנחנו נעשה גם במהלך הרצאות היא גם לפקח על זה, בזכות צוות ההוראה של הקורס. ולכן אם יש לך שאלה ב להרצות, משום שאמרתי משהו גרוע או בכלל לא, בכל האמצעים, לשאול כי בזמן אמת אם יש לך שלך מחשב נייד או טלפון באתר, ו אנחנו נעשה את הכי טובים שלנו בזמן אמת בסמוך ל להגיב על זה. האם יש שאלות על CS 50? אז אחד הצלילים אחרונים שלי. נושא זה של יום שבת UNSAT. כפי שאתם לסיים כרטיסי הלימוד שלך, אם אתה עדיין לא עשיתי זאת, מבין כי חזון העל של SAT UNSAT, זמין עבור כל התלמידים, הוא באמת כדי לעזור לקחת את העוקץ של קורס ככה, אם אפשר לומר כך, כך שאם אתה למצוא את עצמך בשעתי הלילה מאוחרת, 2:00, 3:00, באמת לדפוק את הראש שלך נגד הקיר שבו אתה יודע שאתה 99% בדרך לשם ועד לסיום, אבל אתה יש כל כך הרבה דברים אחרים לעשות, אני חושב ששימוש טוב יותר, לעתים קרובות, של הזמן של התלמידים הוא להעביר אכן על אותם דברים אחרים, כך שאתה יכול לייעל את הזמן שלך בכל מקום. וישב UNSAT הוא מנגנון אחד שבאמצעותה אתה יכול להתנחם בעובדה כי 99% מהדרך לשם היא עדיין די לתקן טוב. בדומה לכך, גם אם אתה כבר נכנס כמובן ללא רקע קודם או כמעט באותה המידה כמו שאתה לא רקע חושב שהכיתה שלך שאולי יש לי, אמיתית או שקר, מבין שזה הזדמנות לקבל את הידיים מלוכלכות עם כמובן, לשים את האצבעות שלך ב מים, אם אפשר לומר כך, ממש כמו שאני עצמי עשה לפני שנים עם עובר / נכשל. כפי שאמרתי בשבוע שעבר, היה זה כמובן, כמו אחרים, לא היו זמינה עוברים / נכשל בזמן, בטח הייתי פעם לא היינו דורכים ב בכיתה, למרות שאני עשיתי, חמישה שבועות לאחר מכן, לשנות את דעתי, שבו אתה ייתכן גם כן, ולעבור ל או ממעמד מדורג מכתב. בסדר. אז הסתכלנו על דברים כאלה יום שישי, ואנחנו הולכים מהר מאוד למעבר למשהו ש נראה מסתורי יותר היום. אבל זה בכל זאת אותו הרעיון בסיסי. מה היה המונח הכללי שאנחנו משמש לתיאור פיסת הפאזל שנראה כמו זה? לכן, הצהרה. ואתה יכול לקרוא לזה בכל מספר דברים. אבל אנחנו פשוט קוראים לזה משפט, ושמירה על רק אומר לתכנית - או במקרה של גרד, ספרייט - לעשות משהו. תגיד שלום במקרה זה. משהו כמו זה שאנו קרא במקום מה? כן, כך ביטוי בוליאני. ביטוי בוליאני הוא רק משהו זה נכון או לא נכון, וכל כך גרד מושך אותם עם צורה זו, אלא גם עם סימן שאלה כדי להעביר את רעיון שהתשובה לשאלה זו הוא אמת או שקר, כן או לא אחד, 1 או 0. ואנחנו משתמשים בביטויים בוליאניים אלה בתוך מבנים כמו אלה, אשר קראנו מה? לכן, תנאי או סניף. והמצב שאתה רואה כאן ב יש שריטה קטנה למציינת מיקום פיסת הפאזל של צורה ש, המטרה שבם הוא, כך שאתה יכול גרור אותו ושחרר אותו על גבי ולאחר מכן להכתיב לתכנית אם זה בוליאני הביטוי נכון, לעשות את זה קבוצה של הוראות, זו קבוצה של ההצהרות, אחר לעשות את הסט שני זה של הוראות. ותזכור שאתה יכול קן הדברים האלה. למרות שאין הרבה מקום מבחינה ויזואלית בפיסת הפאזל ש, סריטות יגדל ולהתכווץ כדי להתאים מה חלקי הפאזל לגרור ולשחרר ב שם, כך שאתה יכול למעשה קן וזה יש מזלג דרך שלוש בדרך. אם, אם אחר, אחר. ואתה יכול גם ללכת מעבר לכך על ידי עוד קינון ובהמשך במידה צורך. אז לבסוף, ראינו מבנים כמו זה, הידוע גם בלולאה. וזה רק משהו שעושה משהו שוב ושוב ושוב. במקרה זה, זה קורה להיות סופי מספר הפעמים, אבל אנחנו גם ראה דוגמה שבו מספר פעמים הגיעו ממשתנות, כך שזה יכול להשתנות. וראינו גם בלוק אחר לגמרי קרא לנצח בלוק ש אפשרו לנו הלולאה אינסופית ארוך. אז מבנה אחד שסריטות יש 2.0 - ואלו מכם יותר נוח עם רקע קודם הם כבר מכיר את זה היטב לבנות - הדברים האלה שקראנו מה? אז אנחנו נקראים הפונקציות האלה, אחרת המכונה הליכים. יש הבדל סמנטי קל, אבל אנחנו קוראים להם רק פונקציות. ופונקציה, במקרה של גרד, היא פיסת הפאזל מותאמת אישית ה אתה בעצמך יכול ליצור, כך שיש לך פיסת הפאזל חדשה, כי בזה מקרה, היה קורא לשיעול, ש מופיע בין כל אחרים חלקי הפאזל זמינים בלגרד. למרות MIT לא המציא פיסת הפאזל הזה, שעשית. אז פונקציה מאפשרת לך ליצור חדש התנהגות, נותן לו שם פונקציה, ו אז קורא לזה, אם אפשר לומר כך. באמת להשתמש בו בתוכניות ושוב שוב ושוב ללא צורך לחכות עבור מישהו כמו MIT במורד הכביש אל להמציא פונקציונלי חדש מאפס. אתה בעצמך יכול לבנות פאזל אלה חתיכות בעצמך, ולאחר מכן שימוש חוזר בהם בתוכניות שלך. ואנו רואים דוגמה חוזרת שמהיום והלאה. אז היום, אנחנו עכשיו מעבר למשהו מסתורי יותר. אבל בסופו של היום, משהו יותר חזק ויכולת הבעה ועוד נציג של הנתיב שנהיה בכל הסמסטר בכל מספר של שפות - זה של קוד או קוד מקור. קוד מקור, מתברר, זה לא מה שמחשב בדרך כלל פועל למעשה. קוד המקור נראה משהו כזה. אז זה, הוא, שוב אולי הפשוט תכנית שאנחנו יכולים לכתוב ב שפה בשם C. אנחנו נתחיל להקניט זה מזה לפני זמן רב, ואם זה באמת נראה כמו יווני , לך עכשיו יאמין לי. בתוך שבוע בדיוק או שתיים של זמן, זה יהיה מוכרת מדי ולמעשה די מייצג של יותר ויותר דוגמאות מורכבות שבה אתה גם מקבל יותר בנוח. אבל אתה לא יכול פשוט להפעיל את זה סוג של קוד בדרך כלל. אתה צריך להפוך אותו למשהו ש המחשב עצמו מבין. וכל כך לזה, אנחנו צריכים משהו אנחנו הולכים לקרוא למהדר. מהדר הוא תכנית שלוקחת קוד מקור, כמו שראית, כמו קלט, והיא מייצרת ואפסים אלה כפלט, אחרת הידוע בשם קוד אובייקט. וזה אלה אפסים ואחדים ש עשויים להיראות ממש כמו זה ש סופו של דבר הם הבינו על ידי-Mac או במחשב האישי שלך. אם אי פעם שמע את השיווק ביטוי Intel Inside, שרק משמעות דבר הוא כי חברה בשם אינטל ייצרה מוח של המחשב שלך - הידוע גם במעבד, יחידת עיבוד מרכזית - וזה הדבר שפשוט מבין דפוסים של אפסים ואחדים. וזאת על ידי המרת קוד מקור לתוך קוד אובייקט דרך תהליך זה כאן שנעשה עם כמה פקודות בקצת, אתה דפוסי יצירה של אפסים ואחדים כי לעובדים באינטל החליט לייצג את ההצהרות מסוימות. עכשיו, אני לא ממש יודע באיזה הוא שרק על ידי מציץ ב האפסים האלה ואחדים. רוב בני אדם בימים אלה שלא. אבל באיזשהו מקום הוא דפוס של אפסים ואחדים המייצגים הדפסת הצהרה. אי שם ביכול להיות שיש שונה קבוצה של אפסים ואחדים ש מייצג את הרעיון של לנצח או לחזור 10 פעמים או אפילו מיאו, אם זה דווקא תכנית שיכולה כולל כמה צלילים. אז בקיצור, בני אדם פשוט החליטו, ממש כמו שעשינו לASCII - לאותיות האלפבית - בשבוע שעבר בני אדם החליטו שגם תבניות מורכבות יותר של אפסים ואחדים מייצג התנהגות מורכבת יותר כמו הדפסה או אומר או מיילל. וכך במשך היום, ובמידה רבה ואילך בסמסטר, ניקח ל מובן מאליו שמישהו הבין איך לעשות את המיפוי הזה. אבל אנחנו, עולים בקנה אחד עם הרעיון הזה של שכבות על גבי עבודתם של אנשים שבאת לפנינו, ייקח ל מובן מאליו את העובדה שזה קורה מתחת למכסת המנוע. אבל אנחנו הרבה יותר מעוניינים בניית דברים שהם יותר מעניין בחלק העליון של כל זה. וכך, אכן, התכנית הראשונה שלנו כתב בגרד היה פשוט סופר זה אחד, שלום העולם. ואתה יכול לחשוב על זה כעל תכנית הראשית שמסדירה סריטות של התנהגות כמו של יום שישי האחרון. היום, אנחנו הולכים להתחיל לתרגם גרד חתיכות הפאזל לתוך קוד מקור בשפה זו נקראת C, כך שזה מה שנראה כמו על יום שישי, החל מהיום והלאה, הוא עכשיו הולך להיראות כך. אמנם יותר מסתורי. זה די מסיח את הדעת וסוג של המוח משתק כדי לראות את כל הציטוטים ואת פסיק ואת סוגריים וכן הלאה. אבל אם אתה מתחיל להתעלם מכל דבר שאתה לא מבין, ובאמת נראה במהותו של הטקסט הלבן על מסך, אין ספק שאתם מבינים, כמו שאני עושה, "שלום, עולם". כי שורות עם הצהרה סגולה למעלה, ומתברר כי מילת המפתח הראשי הולך בשורה רעיונית עם כשירוקה דגל לחיצה עליו. אז במילים אחרות, בעוד שבסריטות, שלנו ליישם את תכנית שלום העולם הזה עם שתי החתיכות הפאזל הללו, ב-C, אנחנו הולכים ליישם את זה עם אלה ארבע שורות סתומות במקצת. אבל כפי שאנחנו לצלול עמוק יותר לתוך זה, אתה לראות שכל אחד מאלה תווים לבנים על המסך למעשה יש לו קצת משמעות משמעותית, ורוב התוכניות שלנו הולכים נראה בדיוק אותו הדבר מבחינה מבנית. אז הצהרה, שיהיה ברור, מה נראה כמו "העולם אומר שלום" על יום שישי הולך להתחיל לחפש אוהב את זה ביום שני. printf ("שלום, העולם"). ויש איזה קו נטוי מוזר n, יש סוגריים, יש פסיק. אבל בסופו של היום, את המפתח ממסעדה היום היא שכל מה שאנחנו עושים הוא תרגום דברים מתמונה בצורה לצורת טקסט. אז לולאה שנראית כמו זה בשבוע שעבר הוא הולך עכשיו להסתכל משהו כזה. ותנו לי להתכחש לה, בדיוק כמו ב שריטה, יש דרכים שונות כדי להשיג את אותה המטרה. אותו דבר בג אני לא מראה לך רק דרך לעשות את הדברים, אבל דרך אחת לתרגם את זה לנצח לחסום ללולאה בג זה אחד כאן, לחזור 10 פעמים. באמת זה סוג אחד של כפיפות אכפת הפעם הראשונה שאתה רואה את זה. אבל כדי ליישם את שלהלן, אנחנו הולכים להשתמש ללולאה, אם אפשר לומר כך. וברור שיש איזה תחביר זה קצת מורכב ואני שם עם שווה ו0, אבל ברגע שאנחנו צוללים לתוך כי היום ואילך, אתה פשוט הולך כדי לראות שזה כל פשוט עושה קצת חשבון בסיסי כדי להוציא אותנו מ0 על עד 9 או 10 במקרה זה. לבסוף, עם משתנים, אתה זוכר שמשתנה הוא פיסה של שטח האחסון. ובכן, מה היה לנו בצד השמאל יש האחרון בשבוע שהוא הולך להסתכל קצת משהו כמו זה בשבוע זה. אבל שוב, עוד על כך שביבואו. היו לנו ביטויים בוליאניים, אשר בשבוע שעבר, שנראה כמו זה. הלאה השבוע, הם הולכים מתחיל להיראות קצת ככה. וזה בעצם אחד קצת מרגיע. זה בעצם כמעט כל כך פשוט כאובניים הירוק. אבל כאן יש לנו, שוב, כמה תחביר חדש עם אמפרסנד, אבל אתה יכול אולי לנחש אילו בסריטות, אתה אומרים-N-D, כנראה ב-C, אנחנו הולך להגיד אמפרסנד אמפרסנד. אבל כל זה יהפוך טבעי לפני זמן רב. תנאים. בשבוע שעבר, זה נראה כמו זה בצד השמאל. בשבוע זה, בצד ימין, זה הולך להיראות ככה. אבל שוב, היא ממסעדה המפתח כאן כי כפי שאתה רואה דברים כאלה על מימין, ובמיוחד אם פחות נוח, שזה סוג של מעליך ראש, אתה מקבל קצת המום כי באמת אין לי מושג איך אני יכול אולי לבוא עם כי מהתחלה - משחק מילים לא התכוונו - רק מבין שזה באמת אותו רעיון שכנראה הרגיש כל כך הרבה יותר טבעי בשבוע הקודם. ואפילו אם לא צלל לתוך סט הבעיה 0, אני מעז לומר לך תמצא כי את חלקי הפאזל למדי אינטואיטיבי, או לפחות הפך להיות כל כך לאורך זמן. אז בואו לצלול פנימה בואו לקבל את ידי מלוכלכות שלנו כאן עם תכנית פשוטה זו ראשונה. ופשוט הוא, כמובן, קרוב משפחה. לשם כך, אני הולך לשנות את המסכים למכשיר שנקרא CS50 מכשיר. מכשיר CS50 הוא חתיכה תוכנה שפועלת בתוך חלון ב-Mac שלי, ואתה יכול גם לרוץ בחלון הפנימי של המחשב שלך, שזה מאפשר לי יש את אותה מדויקת סביבת מחשב כמו כל TF, כפי כל CA, כמו כל תלמיד בכיתה. בגלל מכשיר CS50 הוא, פשוטו כמשמעו, מערכת הפעלה אחרת קרא לינוקס - במיוחד פדורה לינוקס - ואנחנו, צוות, הגדירו תהליך ההתקנה של זה הפעלת מערכת באופן כזה שאף אחד, יש לוגו קטן בCS50 באמצע, שתיים, יש תפריט מותאם אישית ב תחתון, ושלוש, מבחינה פדגוגית, אנחנו כבר פישט את ממשק המשתמש כ עד כמה שניתן, כך שכאשר אתה ראשון לאתחל את הדבר הזה בעצמך Mac או PC, יש לך את אותו סביבה, כמו כל אחד אחר, ואתה יש את כל הכלים שאתה צריך לקורס מבלי להבין איך להתקין כל אחד ו כל כלי בנפרד. אז זה נראה יחסית כמו Mac OS או Windows. בפינה השמאלית התחתונה, אתה יש תפריט התחל של מהות מיני, או תפריט Apple. ואז יש לך את מה שאנחנו חושדים שיהיו להיות שלושת הסמלים הנפוצים ביותר שלך. אחת מהן הוא כרום. יש בתוך דפדפן של המכשיר. שתיים היא תכנית בשם gedit, אשר ראינו בקצרה בשבוע שעבר, שהוא רק עורך גרפי. ושלוש הוא תכנית מסוף, אשר הוא חלון שחור ולבן מ פעם שמאפשרת לנו להקליד יותר פקודות מסתוריות אך חזקה יותר ב המקלדת שלנו. אז אני הולך קדימה, ולחץ על gedit, והיה סמוכים ובטוח שבעיה להגדיר 1, להשתחרר ביום שישי, יהיה ללוות אותך לאורך כל אותם צעדים. שים לב שיש לי די פשוט ממשק משתמש בשלושה חלקים. בצד השמאל, יש לי גדול ריק חלון בשם קוד מקור. זה המקום שבי אני הולך לראות סיכום של כל קוד שאני כותב. בצד ימין, יש לי גדול כרטיסייה, שלא נשמרו כרגע, וזה שם הקוד שלי הולך ללכת. ועל החלק התחתון, יש לי מוטבע חלון מסוף, שחור ולבן תבקש שבבו אני יכול להקליד פקודות ל לקמפל ולהריץ התוכניות שלי - כי הוא, לבצע ולהפעיל התוכניות שלי. אז בואו נתחיל פשוט. תן לי לעלות לקובץ, שמור. אני הולך קדימה להיכנס jharvard. אז את המכשיר, בלי קשר למה השם שלך הוא, שייך לאחד בשם ג'ון הרווארד, שיש לו בית jharvard ספרייה הפנימית של שכל שלך קבצים ילכו. זה עותק של החשבון שלו משלך, כך שאנחנו לא כל השיתוף אותו הכונן הקשיח. פשוט יש לך את האשליה משלו של ג'ון הרווארד. מראש, אני ממש מותקן Dropbox. המכשיר מגיע עם preprepared Dropbox, כך שאם משהו ישתבש במהלך הסמסטר, אם יש לך מוגדר המכשיר שלך עם חינם חשבון Dropbox, כל הקבצים שלך להיות מגובה באופן אוטומטי, כך שאתה בקלות רבה ניתן לשחזר אותם. ואני הולך להיכנס לDropbox שלי בספרייה, ויש כבר הולך להיות כמה דברים אחרים שם. אבל אני הולך קדימה וללכת קובץ, שמור. אני הולך להיכנס לjharvard, Dropbox, ועד כאן, אני הולך לתת התכנית שלי פשוט סופר שם, hello.c, ולאחר מכן לשמור. אז יש לי את אותו ממשק עכשיו. דבר היחיד שהשתנה היא הלשונית למעלה. אז אני הולך מהר מאוד לשחזר תכנית שמן מחליק לפני רגע. אז לעיקרי (הריק), ולאחר מכן printf, "שלום, עולם", סתום במקצת הקו הנטוי N, קרוב הצעת מחיר, לסגור סוגריים, פסיק, ו אז Ctrl S כדי לשמור. והודעה כבצד את מה בדיוק הופיע כאן בצד השמאל למעלה. וזה לא שימושי היום, אבל יהיה שימושית לאורך זמן. אתה פשוט רואה, שוב, סיכום של את הקוד שכתבת. ובגלל שכתבתי משהו שנקרא עיקרי, זאת הסיבה העיקרית צצה המילה עד לשם. אבל על פי רוב, אנחנו לא צריך את זה היום. בסדר, אז אני טוען שזה שלי התכנית ראשונה שנכתבה בתכנות שפה בשם C. אנחנו יודעים מיום שישי כי מה שהדבר הזה הולך לעשות uninterestingly מאוד כש להפעיל אותו הוא פשוט להציג - במילים אחרות, להדפיס, כמו מחשב מדען הייתי אומר - שלום עולם על המסך. אז כדי לעשות את זה, תוכל להבחין שיש לי לרדת כאן למסוף שלי חלון, ועכשיו יש לי מצמוץ מהיר. אבל זה כרגע גרסה של מקלדת ספריית הבית שלי ג'ון הרווארד. זה מקלדת דרך שבאמצעותה כדי לנווט הכונן הקשיח שלי. אז אני לא ממש יכול להקליד כמו שאני עשיתי בשבוע שעבר לעשות שלום, כי זה הולך להגיד שום כלל כדי להפוך את היעד - משהו לא בסדר. אני לא ממש יודע מה זה הודעה אמצעים, אבל זה בגלל שברירת מחדל, כאשר חלון שחור ולבן זה פתחתי, אני פנימי של ג'ון הרווארד של ספריית הבית. אבל איפה שאני לא יחסוך תכנית ש? בתיקיית Dropbox שלי. עכשיו, כל אחד מאיתנו גדלנו עם מחשבים שבו אתה פשוט לחץ לחיצה כפולה על הסמל של תיקייה, זה נפתח, וזהו. זה מקום שבי הקובץ שנקרא hello.c יהיה. אז למעשה, בואו נעשה את זה. תן לי להמשיך ולמזער gedit בדיוק כמו שהיית על Windows או Mac OS. תן לי להיכנס לבית תיקייה בצד שמאל למעלה. אני אראה כאן חבורה של תיקיות. הנה תיקיית Dropbox שלי. את הסימנים ואומרים שזה היה מסונכרן. ויש עוד כמה דברים בפה, אבל שם לב שhello.c הוא אכן שם. וכך, ב-Mac OS או Windows, בדרך כלל, אני הייתי כפול לחץ על זה, זה פותח ב כל מה בתכנית, ואני טוב ללכת. אבל עכשיו, לפחות החל מיום, אנחנו צריך לקחת צעד אחורה רק כדי אתן לך כמה כלים בסיסיים לשלך ערכת כלי שבעזרתו לעשות יותר דברים רבי עוצמה לפני זמן רב. אז בהנחיה זו, שאני צריך לעשות מקבילה של לחיצה כפולה תיקיית Dropbox. וכדי לעשות את זה, אני הולך לפורמט CD לשנות את הספרייה, Dropbox, להיכנס. ועכשיו שים לב לסוגריים בי מה שנקרא הפקודה עכשיו אומרת שאני ב טילדה, קצת משורבטת סמל בפינה השמאלית העליונה של רוב המקלדות, / Dropbox. זהו רק סימון מקוצר עבור אומר אדם, אתה נמצא עכשיו בתוך תיקיית Dropbox, ממש כאילו היה לך לחיצה כפולה על זה. אז עכשיו אם אני הולך קדימה ולהפוך את הקלד הלו, להיכנס אליו, אני רואה מאוד מסתורי הפקודה, אבל לא הודעת שגיאה, כך נראה, ולאחר מכן עוד מהבהב הפקודה. ואם אתה זוכר, אי פעם כל כך מהר ביום שישי, עשינו את זה. . / שלום. מה אתה עומד לראות הוא התוצאה של הריצה שלי בתכנית זו, או, ב-Mac מבחינת מערכת הפעלה ומחשב, אם הייתי בדרך כלל כפול לחץ על תכנית -. אפליקציה תכנית או. exe, הוא נפתח חלון וריצות. הקלדה. / שלום היא בדיוק כמו כפול לחיצה על תכנית כדי להפעיל אותו, אבל שימוש במקלדת שלי. הזן, שלום עולם. וזהו זה. אז בואו להקניט זה מלבד לכך שהוא לא מרגיש יותר מדי כמו יווני. אז. / מה זה אומר? כל מי שאי פעם לנווט מקלדת סביבה כזאת, מה זה נקודה בהתייחסו ל? הספרייה הנוכחית. אז הספרייה הנוכחית היא רק שם נרדף לתיקייה. אז באומרו נקודת לוכסן, שאני אומר, לחפש תכנית בשם שלום ב ספרייה נוכחית - בתיקייה הנוכחית. במילים אחרות, תיקיית Dropbox שלי. וזו הסיבה שמכת הזן ואילך בעצם פועלת תכנית. אם אני עכשיו סוג LS, שם לב שאני רואה את הכל בתיקיית Dropbox שלי. קבלת Started.pdf, שDropbox נותן לך, לתמונות שלי בחינם הספרייה, ספרייה ציבורית, שלא נשמרו מסמך 1 שאני עשיתי בטעות לפני רגע, foo.c, שעשיתי קודם לכן היום, ולאחר מכן שתי שורות - hello.c ושלום. Hello.c היא התכנית שכתבתי עם gedit, ומה הוא שלום בירוק? שלום בירוק הוא ההפעלה. במילים אחרות, כאשר רצתי בפקודה זו לפני רגע - תנו לי לגלגל אחורה בזמן - כשרצתי לעשות שלום, זה צעד ביניים כאן. וזה לקח hello.c כקלט - קוד מקור AKA - והיא הניבה קובץ בשם שלום כפלט, אשר מכיל את כל האפסים האלה ואחדים. ולכן, בסופו של הדבר, אני יכול למעשה להפעיל פקודה כמו. / שלום. בגלל Intel Inside, ההפעלה שלי המערכת, לינוקס, פותחת את האפסים האלה ואלה, מזינים אותם לתוך מוח של המחשב שלי - מעבד - ושהמעבד יודע, הו, הנה דפוס של אפסים ואחדים שאומר להדפיס את הדבר הבא על המסך. מה הדבר הבא? מירכאות, "שלום העולם". בסדר, אז סיכום מהיר של כמה פקודות אלה, כדי שנוכל להתחיל לוקח אותם כמובן מאליו. הרשה לי לדלג קדימה כדי שבו הפסקנו. ואתה זוכר שהיה לנו תקליטור בגב שלנו בסופו לפני רגע. אלה, אני מעז לומר, ל מטרות של היום - אולי בשבוע זה - את הפקודות רק ייתכן שיצטרך להקליד בשורת חוץ מזה יבקש לעשות. אז התקליטור עמד על מה? לשנות את הספרייה. זה פשוט שווה הערך לכפול לחיצה על תיקייה. וכמאמר מוסגר, אם אתה מקבל איבד אי פעם בתוכך מכשיר, כך שDropbox - אני רוצה לחזור לי ספריית jharvard - במקרה של ספק, תקליטור, להיכנס אליו, עם לא אחרים מילים, וזה רק רוכסנים אותך בחזרה למקום בו התחלת, אשר הוא קיצור דרך קטנה ונחמדה. בסדר, אז עכשיו פקודות אחרות. LS. אני הקלדתי את זה לפני רגע. מה אתה חושב LS מייצג? לכן, רשימה, נכון? חזרה היום, כאשר בני האדם באים עם פקודות אלה, שהם ניסינו להיות יעיל, ולא הקלד את L-I-S-T ENTER, הם החליט LS. זה בסדר. זה נשמע די כמו רשימה. בואו רק סוג LS להיכנס, וכי מפרט את הקבצים או תיקיות בי תיקייה נוכחית. mkdir, כנראה שאתה יכול לנחש. הפוך את הספרייה. אז אתה לא הולך לתפריט קובץ וכמה לבחור תיקייה חדשה בסביבה זו. במקום זאת, אתה מקליד את פקודת mkdir החלל ולאחר מכן את שמה של התיקייה שברצונך ליצור, וזה ייעשה. rm, אתה יכול לנחש. להסיר או למחוק. אז אם ברצונך למחוק קובץ, אתה רואה בסט הבעיה איך אתה יכול לעשות את זה. וrmdir, להסיר את הספרייה. אז, שוב, אני נוטה לטוס דרך כמה של פרטים אישיים, אחד, כי הם לא כל כך כיף לבלות זמן, אבל שתיים, אנו נספק לך ב פירוט רב יותר בכל אחת הבעיה של הקורס קובעת, במיוחד המהדורות הסטנדרטיות, כל אחד מהשלבים שאולי אתה צריך להקליד כל כך שאתה מקבל יותר ויותר נוח עם הדברים האלה. אבל עכשיו תן לי להפריד עוד דבר אחד. כשהקלדנו לעשות שלום לפני רגע, ראינו רצף מסתורי של פקודות. ראינו, שוב, לעשות שלום. אוקיי, בואו נעשינו את זה. אני עומד לעשות טעות, אבל [לא ברור] עכשיו להודות שאני עומד ולעשות את זה בכוונה. מה עשיתי לא בסדר רק עכשיו? כן, אז אני לא בDropbox ספרייה, כי לפני רגע תקליטור מוקלד ופשוט הקישו על Enter. שנסק בחזרה אותי למקום שבו התחלתי, וזה לא שבו הקובץ שלי הוא, ולכן אני באמת צריך לעשות Dropbox התקליטור להיכנס, ועכשיו אני יכול לעשות שלום rm הכנס, להסיר קובץ רגיל שלום. אני לא יודע למה זה כל כך ברור מאליהם. זה רק אומר שאתה בטוח אתה רוצה למחוק את שלום? אתה יכול להקליד Y לכן, הזן, ועכשיו זה נעלם. ועכשיו, אם אני מקליד לעשות שלום שוב, זה הולך לשחזר את קוד היעד שלי, לשחזר את אותם אפסים ואחדים. אבל מה הוא להתמודד עם הפקודה הארוכה מאוד הזה? ובכן, אנחנו להקניט זה לגזרים לפני זמן רב, אבל לעשות - אמרתי לי קצת שקר לבן לפני - לא מהדר. הפוך היא תכנית באופן אוטומטי דמויות איך להפעיל מהדר עבורך. אז הפקודה שאתה באמת צריך להיות פועל על מנת להמיר hello.c לשלום באמת נראה קצת יותר כמו זה. וחס ושלום יש לנו בעצם זוכר שאי פעם להקליד שכל רצף של פקודות בחוץ. המטרה לעשות בחיים היא זוכר שמידה של מורכבות עבור אותנו ולהפוך את מה שהיית אחר צעדים להיות מאוד משעממים. אבל אני יכול משוער ש. אז בכל הגיליון לרמות כאן הקטן הזה, אני יכול משוער מה היא הפקודה ש עושה פשוט על ידי הקלדת צלצול, שהוא שמו של מהדר נהיה שימוש בסמסטר הזה. אם מישהו מכם אי פעם עשו את iOS פיתוח עבור iPhone או iPad, צלצול הוא התכנית שבה השתמשת בתוך Xcode כדי להפוך את היישומים שלך. צלצול, אם כי, הוא רק עוד תכנית שמו אנו יכולים להקליד בשורת הפקודה, ועל ידי החדרת זה עכשיו, אני יכול להציג משהו שהוא נציג קטן של פקודות הבאות. אז תן לי לעשות את זה באופן ידני. אז RM שלום, ועכשיו שם לב במקרה אני, בדיוק כמו שפיות לבדוק - . / הלו, מה אתה חושב שאני צריך לראות אם אני עושה את זה? איזה סוג של שגיאה. אין ספריית קובץ כזה. כך שאף אחד בעצם די ישיר. אז עכשיו תן לי לנקות את המסך. שליטת S פשוט מנקה את המסך כדי להסיר חלק מסח הדעת. ועכשיו אני הולך באופן ידני סוג הצלצול-o שלום hello.c. אז מה הוא עומד לעשות את זה? בדיוק את אותו הדבר שעשה בשביל להפוך לנו, אבל אני לא זורק את חלק את המילים המיותרות. צלצול הוא התכנית שהולכת לקחת את הקובץ. ג כקלט ולייצר אפסים ואחדים כפלט. אבל-o להלן אקרא מתג או דגל. זוהי רק ז'רגון טכנאי לאמר זו מילה שהקלדת בשורת שאיכשהו משפיע על ההתנהגות של התכנית שאתה מפעיל. אז האם מישהו רוצה לנחש מה-O מעביר? פלט. זה פשוט מישהו החליט-o פירושו פלט קובץ בשם שלום ולקחת כמו קלט מה המילה האחרונה על הנחיה היא, hello.c, כך שאם אני מכה הזן עכשיו, שום דבר לא נראה שיקרה. ולמרבה הפלא, בעולם הזה של תכנות, אם לא קורה כלום, זה כנראה דבר טוב משום שאין שום שגיאה הודעה על המסך. שלום, Enter. התכנית שלי עכשיו יש להפעיל. אבל אני יכול לעשות דברים קטנים ומטופשים כמו זה. צלצול-O, hihihi, hello.c, להיכנס, ועכשיו יש לי זהה תכנית בשם hihihi. הוא מתנהג אותו הדבר, אבל השם שונה. אז זה רק אומר שאם אתה רוצה כדי להשפיע על ההתנהגות של תכנית, שאנחנו הולכים יותר ויותר לראות דברים בשם טיעוני שורת הפקודה. זהו קו. אתה מקליד פקודות. מכאן, שורת הפקודה. וטיעוני שורת הפקודה הם רק מילים או חתיכות קטנות של שתחביר איכשהו להשפיע על ההתנהגות של תוכניות שאנו מפעילים. בסדר, שהוא אולי הכי תכנית משעממת אנחנו יכולים לכתוב ולראות. עכשיו בואו נעשה משהו מעניין יותר. תן לי להמשיך וליצור קובץ חדש. אני הולך קדימה ולשמור את זה ב ספריית ביתו של ג'ון הרווארד כ, בואו נקראים לזה custom.c, להיות תכנית מותאמת אישית קטנה. אני הולך להתמקד בראש שלי את הלשוניות פה ולהתחיל מחדש. כולל stdio.h הסטנדרטי. עוד על כך באותו רגע. int הראשי (חלל), נוסף על כי ברגע. printf ("שלום, דוד"). הרבה יותר מעניין, נכון? אז עכשיו, אם - לא בגלל השם שלי, רק בגלל שזה שונה - להפוך את המנהג להיכנס. אישית, הלו, דוד. אבל גם זה, גם זה שקר לבן. תכנית זו, כמו גם שניתן לכנות david.c, כי זה לא מותאם אישית התנהגות בכלל. באמת, אני רוצה תכנית ששואלת המשתמש לשם שלהם. אז איך אני עושה את זה? ובכן, הרשה לי לגלול למעלה לכאן. ולפני שאני משתמש במשפט שריטה, לפני שאני משתמש printf, הידוע גם בתפקוד, תן לי הראשון לשאול את המשתמש לכמה קלט. אז כדי לעשות את זה, אני צריך לעשות כמה דברים. אחד, אני צריך מקום לאחסון של המשתמש שם אחרי ששאלתי אותו או שלה על כך. מה לבנות אני צריך להשתמש כנראה כדי לאחסן את ערך כזה? משתנה. אז שלא כמו גרד, שבו אתה רק מקבל פיסת הפאזל נחמדה, הנה, יש לנו כדי להשתמש, כמובן, למילים לבטא את עצמנו. ומעתה, בכל עת שתרצה מילה או משפט, בתכנות, אנחנו הולכים לקרוא לזה מחרוזת. אז מחרוזת היא מילה או ביטוי. זה רצף של אפס או יותר דמויות, יותר באופן רשמי. ואם אתה רוצה משתנה כזה קיימים, יש לך לומר לי אחד. והדרך שבה אתה עושה את זה היא כדי אומר מחרוזת של פסיק, שבו ים יכול להיות כל דבר שאתה רוצה. למעשה, זה הוא underwhelming קטן. תן לי ללכת קדימה ועוד ברור קוראים לזה שם. תן לי את מחרוזת בשם שם. אבל עכשיו, מהו של האדם שם כברירת מחדל? ובכן, אם האדם לא יקליד דבר ב, כמובן, שיש הולך להיות שום ערך בשמו. ומתברר ב-C, אם אתה לא נותן משתנה ערך, זה הולך יש ערך זבל. אולי יש לו כמה אפסים ואקראיים אלה, אז אתה פשוט הולך לראות אשפה,, באמת על המסך אם אתה מנסה להציג אותו. אבל אני יכול לתקן את זה באומרו, למעשה, בתוך חנות בשם בעקבות ערך. הדרך בה אתה לאחסן ערכים במשתנים היא אם יש לך שם משתנה על עזב, אתה צריך לשים את מה שאתה איכשהו רוצה לאחסן אותו בצד הימין, ו תחביר שלקורה להיות כדלקמן. אנחנו כבר לא ראינו את זה קודם, אבל לקחת על אמונה לרגע שיש קיים הצהרה אחרת בעולם שאני הולך לקרוא לפונקציה שוב, ופונקציה זו היא קרא את המחרוזת. והיא עושה ממש את זה. זה איכשהו מקבל רצף של תווים מהאדם ולאחר מכן עושה משהו עם זה. וזה נראה כמו תחביר סתום. בדרך כלל, אם אתה משתמש בסימנים שווים - אתה בעולם של, יניח, אלגברה, ואתה בעצם X אומר שווה 1. כאן אנחנו לא אומרים ש שם שווה מקבלים מחרוזת. אנחנו אומרים חנות בשם מה בצד ימין זה סימן שוויון. סימן שוויון מייצג אופרטור ההשמה. זה התחביר שאומר את מה שעל יד ימין הצד בתוך מה בצד השמאל. אז לקבל מחרוזת היא חתיכה חדשה פונקציונלי, שלא רק עושה משהו - שואל את המשתמש למחרוזת - זה גם מחזיר אותו, אם אפשר לומר כך. אז בואו נראה מה קורה שיקרה כאן. אני הולך קדימה עכשיו ולהקטין את התצוגה, ואני הולך לקבל כמה טעויות בהנחיה שלי. אני הולך לעשות הקלד מותאם אישית, הזן. וואו. חבורה שלמה של טעויות. בסדר, אז זה סוג של מכריע, בוודאי בהתחלה, אבל מתברר כל אלה מאוד אמנם הודעות שגיאה מסתוריות הן בהתייחסו לכמה דפוסים ש אנחנו נתחיל לראות לאורך זמן. אז זה אחד אני לתלוש, בגלל שזה ראשון. שימוש במחרוזת מזהה לא מוצהרת. זה רק אומר שgedit, או קלאנג, במקרה זה, לא יודע מה שאני מתכוון במחרוזת. וזה בגלל בC, תכנות שפה, יש למעשה אין משתנים מסוג מחרוזת. C לא יודע שמחרוזות קיימות. אבל אנחנו, CS50 צוות, לעשות. וכך, לקראת מעמד, אנחנו יצר קובץ שנקרא CS50.h. ובתוך קובץ זה - ו נוסף על התחביר לבוא - בתוך קובץ זה הוא הגדרה של מה שהגדרתי מילולית כמחרוזת. אז פשוט על ידי סיום שורה אחת זה של קוד בתכנית שלי, אני נמצא עכשיו הוראת gedit ולעשות וקלאנג כל יהפכו במה היא מחרוזת. אני לא יודע איך עדיין. בעוד כמה שבועות, אנחנו יהיו לקלף בחזרה כי שכבה. אבל לעת עתה, יודע שזה מלמד מה מהדר מחרוזת היא למעשה. אז עכשיו תן לי לנקות אותי מסוף כאן למטה. תן לי להפעיל מחדש לעשות מותאם אישית, ואני פתר את כל הבעיות האלה. אז גם את זה, הוא הולך להיות מוטיב חוזר. כתבתי תכנית 9 קו בלבד, ו עדיין היה לי 18 שורות של שגיאות. זה סוג של הפחדה. אבל מבין שהם לעתים קרובות מפל כזה שטעות אחת קטנה מעוררת הבלבול למהדר, ו זה נראה הרבה יותר גרוע מזה. אז עכשיו צופה נבון יודע שאני מקבל ממחרוזת למשתמש, אבל אני לא ממש עושה את מה עם זה? אני לא ממש עושה עם זה כלום. אז אם בעצם אני מפעיל שוב מותאם אישית, זה הולך רק כדי לשבת שם. מה קורה? התכנית שלי נראית תקועה על מה קו, היית אומר? אז זה בעצם תקוע על קו 7. ואנחנו כבר לא ראינו את זה קודם, אבל על קו 7, יש, שוב, זה הצהרה, מקבלת מחרוזת. והיא עושה מה שהיא אומרת. היא מחכה כעת לאדם לקחת את המחרוזת. זה לגמרי unintuitive לי, האדם, בגלל שלא נאמר לי מה לעשות. אבל תן לי ללכת קדימה באמונה ו הרשה לי להעמיד פנים שרוב. Enter. זה לא התכנית שהתכוונתי. אז יש לנו את הבלוג הראשון שלנו. אבל בואו ננסה לחשוב בהיגיון באמצעות מדוע זה המקרה. ראשית, הרשה לי לתקן את הבעיה ראשונה. הרשה לי להוסיף כאן קו שאומר printf, מה השם שלך? בואו פשוט נעשה קרוב ציטוט, לסגור סוגריים. עכשיו תן לי להפעיל מחדש את התכנית. בעיה. אני לא רואה את זה. נכון. אני לא הידור מחדש את זה. אז בשפה כמו C, בגלל שאתה לשנות את קוד המקור לא אומר שיש לך שינה את קוד האובייקט שלך כדי ליצור קוד אובייקט חדש, אפסים ואחדים. חדשים אתה צריך להדר מחדש. אם אני עכשיו להפעיל מחדש מותאם אישית, הזן, אה, קצת יותר ברור. השם שלי הוא רוב. עדיין עגלה. ואני טוען שיש כמה באגים עכשיו. זה פשוט נראה מחריד, בכנות. אוהבים, מינימאלי, אני צריך מרחב שם, או להעביר סמן לשורה החדשה. ובעצם, קו חדש. זה סוג של ביטוי מפתח כאן, כי שראינו אך לא מוגדר. אופן שבו אתה מקבל טקסט כדי לעבור על השורה הבאה, אתה לא עושה את זה. זה מבלבל את המחשב. זה נראה כמו שני קווים נפרדים של קוד, אף אחת מהן הוא נכון באופן מושלם. אתה במקום להיות מפורש יותר ו אומר, תן לי קו חדש, שבו אנו מייצג בג עם הקו הנטוי n. אז יש כמה דמויות כאלה. הקו הנטוי N יהיה לתקן אסתטי ש. תן לי הידור מחדש את התכנית שלי. תן לי להפעיל מחדש את התכנית שלי. זה נראה טוב יותר. זה עדיין די פרימיטיבי, אבל זה גם עדיין עגלה. אז יש אחד - אפילו אם אף פעם לא מתוכנת לפני, כנראה שאתה יכול לקחת ניחוש במה תכנית זו עדיין לוקה בחסרה. מה אני צריך לעשות את זה אני לא עשיתי עדיין? אז אני צריך לעשות בעצם משהו עם שם. בדיוק כמו בהתחלה, אתה באמת עשוי להקצות משתנה כמו N או מתפרצות כמו שעשינו שעבר שבוע - ערך. אבל אם אתה לא עושה שום דבר עם את זה, שום דבר לא הולך לקרות. בסדר, אז בואו נתקן. תן לי סוג המשתנה שלי שם, ותן לי ללכת לכאן. תן לי הידור מחדש, תן לי להפעיל מחדש, רוב. עכשיו אני סתם אידיוט, נכון? אז זה לא ממש מקבל לי יותר. אבל זה היה טבעי לחלוטין אינסטינקט, הייתי מתווכח, נכון? אם משתנה נקרא שם, ואני רוצים אותו ללכת לשם, למה שאני לא פשוט הקלד אותו שם? ובכן, כמובן, יש לנו כדי להבדיל את החברה בין מה שהיא מחרוזת? שימו לב שהמרכאות כאן, הלו שם? זה למעשה עצמו הוא מחרוזת. זה קוד קשה. זה לא מהאדם. זה ממני, המתכנת המקורית, אבל זה עדיין מחרוזת. אז אם אתה ממש לכתוב N--M-E בתוך של מחרוזת, מה הולך לקבל מודפס? ובכן, N--M-E. אנחנו צריכים במקום לספר printf, אינו מודפס את ממש שם. הדפס את ערכו של השם. וכדי לעשות את זה, אנחנו עושים את הפעולות הבאות. וזו רק מוסכמה אנושית. אנחנו במקום לומר% s, וכי עומד על חוט. ואז בסוף הציטוטים הקרובים שלי, אני הולך לשים פסיק ו תעבור טיעון שני להצהרה זו. אני הולך הקלד את השם לשם. אז עכשיו שם לב שיש לנו תחביר חדש במקצת. עדיין יש לנו שני סוגריים, ו מעתה הרשה לי לומר שהדברים בין סוגריים מייצג טיעונים לפונקציה - תשומות שאיכשהו הולכים כדי להשפיע על ההתנהגות שלה. אז לפי ההיגיון הזה, כמה ויכוחים באמת נראה printf להיות לוקח ברגע זה? כך זה נראה כי זה לוקח שתיים, ושאכן משתמע על ידי הפסיק כאן. אז זה טיעון אחד בין הצעות מחיר. למרות שיש לו פסיק בזה, הכל במרכאות, מה שאומר זה מחרוזת אחת ארוכה. פסיק, שם משתנה. אז עכשיו תן לי להתרחק. תן לי להפעיל מחדש את זה. רוב. לעזאזל, מה עשה לא בסדר? בסדר, אז אתה צריך להדר מחדש. אז שוב, טעויות קלות לעשות כבר בשלב מוקדם שוב ושוב. אז עכשיו מנהג להפעיל מחדש, רוב, להיכנס, וזהו. עכשיו יש לנו תכנית מותאמת אישית. אז עכשיו יש לי תכנית ש באמצעות כמה מאפיינים שהם ראויים לציון. אחד, אני משתמש CS50.h, אחרת המכונה ספריית CS50. ובתוך ספריית CS50 הם פונקציות שאנשים אחרים כתבו - כלומר צוות - כדי שתוכלו להשתמש בו, ולקבל מחרוזת היא אחד מהם. חלק הפנימי של קו 2 הוא stdio.h, ולמה זה שם? קח ניחוש. מה שקיים בתוך הורה IO סטנדרטי? Printf. אז printf, אתה לא רואה את זה בכל מקום אחר על המסך. זה חייב לבוא עם מחשב איכשהו. מאיפה זה בא? זה חלק פנימי של - זה הכריז, כביכול, בתוך קובץ שנקרא stdio.h. כעת, לדברים האלה, אנחנו נחזור לסופו של דבר, בגלל שזה קצת מסיח את הדעת לעת עתה. זה מתייחס לסוג ההחזרה שלנו. זה מתייחס לויכוח. אבל היום, אנחנו מתמקדים רק כאן בקווים אלה. אז שם מיתרים, רק כדי לסכם, מה זה עושה לי? אז זה הכריז על משתנה מסוג המחרוזת. אז זה אמור להיות למילים, לא למספרים. בדיוק כמו בצד, אם אני לא רוצה שזה יהיה מספר, הייתי אומר משהו כמו int. אם אני רוצה להיות נקודה צפה ערך, משהו עם נקודה עשרונית, הייתי אומר לצוף. אבל היום, אני רק אמרתי מחרוזת. ונתתי לי משתנה זה שמו של שמו, אבל לא יכולתי קראתי לו שום דבר. למעשה, במקור, אני קורא לזה ס זה כאן, הוא רק עוד הצהרה. כמה ויכוחים הוא זה הצהרה לוקחת? אז זה פשוט לוקח אחד, וכי הוא פשוט פירוט אסתטי של הצגת משהו על המסך אליי. מהו הקו הזה עושים 8 במונחים של ההדיוט? זה מתחיל מערך משתמש - כלומר, מחרוזת - ומה הוא עושה עם זה? זה בעצם המסירה ל בחור בצד השמאל של סימן שוויון כך שבמקרה הזה, שם משתנה יכול למעשה לאחסן אותו. ולאחר מכן printf הוא אחר מופע של פונקציה. ואנחנו אומרים לקרוא לפונקציה. כדי להשתמש בפונקציה היא לקרוא לפונקציה. הדבר הזה כנראה לוקח שני טיעונים. זה אחד, פסיק, זה אחד. אחד זה עצמו הוא רק מחרוזת המכיל מציין מיקום. אמצעי% s לשים מחרוזת אחרת כאן. וזאת על ידי לשים את השם לאחר הפסיק, שהחדרה דבר זה בשבילי. אז אני יכול לעשות דברים אחרים עדיין. תן לי ללכת קדימה עכשיו ולעשות קצת תכנית טיפשית, אבל תן לי למחוק זאת, ותן לי ליצור לולאה. אמנם נכון. הסמל האמיתי הוא כמובן תמיד יהיה נכון. אז איזה סוג של לולאה אני גרימת על ידי כתיבת קו כזה? אז לולאה אינסופית, נכון? בדיוק בזמן נכון. אין דרך שאני יכול לשנות את המילה נכון להיות כל דבר אחר, אז זה פשוט הולך לרוץ לנצח. אז אם אי פעם באמת היה לך תכנית ב-Mac או במחשב האישי שלך, שנראה היה נעול, או שהוא עושה משהו ומשהו, ואתה פשוט לא יכול לקבל את הדבר לפרוש, אלא אם כן הפעל מחדש את המחשב שלך או למשוך את מנהל משימות או משהו דומה, הנה דוגמה לכך. אני יכול לומר, "אני תכנית מרכבה". ציטוט קרוב, קרוב סוגריים, פסיק. אז שוב, שים לב לדפוסים. אף שחלק מהתחביר שלנו הוא חדש, בעוד מילת מפתח, מילת מפתח נכון, ירגישו כי יש לי את אותה סוג של סוגריים מסולסלים. יש לי נקודה פסיק וסוגריים. אז עכשיו בואו נלך קדימה ולעבד את זה. הפוך מותאם אישית, מותאמת אישית. לכן בשלב זה, אתה לא צריך הפעל מחדש את המכשיר שלך, בסדר? אז הלקח כאן הוא קל עם שתי אצבעות, הבקרה C, אנחנו נפסיק את תכנית. אבל אתה יכול לראות בדיוק למה הדבר הזה היה חוזר על עצמו שוב ושוב. אני יכול לעשות משהו קטן מורכב יותר כמו טיזר. אני הולך קדימה לומר את הדברים הבאים. לint, שהוא מספר שלם, אני הוא רק שם גנרי שאנו נותנים לרוב משתנים בתכנות כשאתה פשוט לספור, שווה 0. תן לי ללכת קדימה ואומרים בזמן שאני הוא, נניח, פחות מ 100, אני ועוד תוספת. אנחנו לגבות לתחביר זה, אבל זה רק אומר להגדיל לי שוב ושוב. ומה שאני רוצה לעשות כאן? Printf, "אני יכול לספור עד שאני." זוהי תכנית מרכבה. מה שאני באמת מתכוון לכאן? אחוזים לא ים, אבל לא היית מניח זה. % D הוא מספר עשרוני. אני פסיק. תן לי לחזור. עכשיו תן לי לעשות עם הידור מחדש. עכשיו תן לי שידור חוזר עם מנהג. אני יכול לספור ממש מהר ארור כש אני כותב תכנית כמו זו. עכשיו בואו נעשה משהו קצת לא מכוון. מה דעתך על בואו נעשינו את זה בזמן שאני הוא גדול או שווה ל -0. מה זה הולך לגרום? אז באופן הגיוני, זה לא כל כך חכם, כי עכשיו אם אני שידור חוזר זה, לספר, עכשיו אני יכול לסמוך באמת, באמת גבוה. למרבה הצער, על גבוה ככל שאני יכול ספירה היא 4 מליארד דולרים, כך זה הולך לקחת זמן מה. אז למה שלא ישאירו את זה כמונו סחרור מסוכן, והבטיח כי ביום יום רביעי, נראה אם תכנית זו נעשה. שתיים, שנציג את עצמך איך אתה לכתוב פונקציה משלך, כך שמאוד במהירות, עד יום רביעי, אנחנו יהיו, כמו שאנחנו מעבר מסריטות לתוך C, להתחיל כתיבה אי פעם יותר ויותר מורכבת תוכניות לעשות הרבה, הרבה יותר מזה. אנחנו אראה אותך לאחר מכן. [מחיאות כפות] רמקול 1: בCS50 הבא, יום פאזל היה הצלחה.