1 00:00:00,000 --> 00:00:02,880 >> [השמעת מוסיקה] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> SPEAKER 1: זה CS50 ו זה הוא ההתחלה של שבוע שני. 4 00:00:13,500 --> 00:00:18,400 אז, בואו לצלול ישר לתוך משהו שהוא מרכבה, אם אפשר לומר כך. 5 00:00:18,400 --> 00:00:24,015 אז, כאן הוא IDE CS50 ולי עצרתי מראש זה screen-- ארור 6 00:00:24,015 --> 00:00:25,070 את זה. 7 00:00:25,070 --> 00:00:25,760 התראת ספוילר. 8 00:00:25,760 --> 00:00:26,260 בסדר. 9 00:00:26,260 --> 00:00:29,060 אני כבר משכתי את המסך הזה כאן, שבו יש תכנית מאוד פשוטה. 10 00:00:29,060 --> 00:00:32,659 אם לגלול למטה, רוב זה פשוט תגובות, 11 00:00:32,659 --> 00:00:36,730 אבל כאן בקווים 13 דרך 17 יש לנו תכנית. 12 00:00:36,730 --> 00:00:40,580 >> זה מבחינה תחבירית בתוקף, מה שאומר שאם אני לקמפל את זה, זה יהיה לקמפל ולהריץ, 13 00:00:40,580 --> 00:00:41,920 אבל זה עגלה. 14 00:00:41,920 --> 00:00:47,330 תכנית זו טוענת בתגובות למעלה שזה צריך להדפיס 10 כוכבים, 15 00:00:47,330 --> 00:00:48,870 אבל זה לא. 16 00:00:48,870 --> 00:00:53,290 ומבוסס על הניסיון שלך, או בקרוב להיות ניסיון עם C, 17 00:00:53,290 --> 00:00:56,820 אתה יכול להבחין באופן הגיוני מדוע זה, למעשה, מרכבה? 18 00:00:56,820 --> 00:00:57,804 כן? 19 00:00:57,804 --> 00:00:59,220 קהל: זה הולך מאפס עד 10. 20 00:00:59,220 --> 00:01:01,884 זה 11 חזרות. 21 00:01:01,884 --> 00:01:02,550 1 SPEAKER: כן. 22 00:01:02,550 --> 00:01:06,030 אז, זה הולך מאפס דרך ושווה ל 10, 23 00:01:06,030 --> 00:01:08,140 מה שכמובן הוא 11 חזרות. 24 00:01:08,140 --> 00:01:10,020 אז, זה הולך הדפסה, אכן, 11 כוכבים. 25 00:01:10,020 --> 00:01:13,040 אז, כנס מדעי מחשב ברוב שפות תכנות 26 00:01:13,040 --> 00:01:15,270 הוא, אכן, רק כדי תתחיל לספור על אפס, 27 00:01:15,270 --> 00:01:18,800 אבל לספור עד, אבל לא דרך ערך שאתה באמת אכפת. 28 00:01:18,800 --> 00:01:21,216 >> עכשיו, זה דבר אחד ש לוקח קצת זמן להתרגל ל 29 00:01:21,216 --> 00:01:25,350 ואפילו שריטה, שנועדה כפי שהיא למתכנתים שאינם או מחשב שאינו 30 00:01:25,350 --> 00:01:28,070 מדענים ולילדים במידה רבה, נועד לי 31 00:01:28,070 --> 00:01:29,570 אתה מתחיל לספור בדרך כלל באחד. 32 00:01:29,570 --> 00:01:30,277 וזה בסדר. 33 00:01:30,277 --> 00:01:33,110 בהחלט ניתן להתחיל לספור באחד אם זה יותר נוח. 34 00:01:33,110 --> 00:01:37,210 ולספור עד ועד 10, אבל אתה מבין במיוחד השבוע 35 00:01:37,210 --> 00:01:39,950 ומעבר לזה כל כך פשוט הרבה דברים בתכנות 36 00:01:39,950 --> 00:01:42,465 להניח כי 0 הוא ראשון ספרה שבה אתה לספור, 37 00:01:42,465 --> 00:01:45,590 שאתה הולך למצוא את זה קל יותר רק כדי לקבל להרגל הזה של התחלה 38 00:01:45,590 --> 00:01:49,490 מאפס ולספור עד הערך אכפת לך עכשיו מ 39 00:01:49,490 --> 00:01:49,990 לקבל ללכת. 40 00:01:49,990 --> 00:01:50,990 >> אז, שקבוע ש. 41 00:01:50,990 --> 00:01:53,670 אנחנו שינינו את פחות או שווה רק פחות מ. 42 00:01:53,670 --> 00:01:56,050 בואו נסתכל דוגמא שנייה כאן. 43 00:01:56,050 --> 00:01:59,585 >> אז, בתכנית זו גם טוענת בה תגובות למעלה שזה צריך להדפיס 44 00:01:59,585 --> 00:02:02,260 עשרה כוכבים, אבל זה לא. 45 00:02:02,260 --> 00:02:05,540 מה באג כאן? 46 00:02:05,540 --> 00:02:07,930 >> אז, what-- ומצטערים, בואו נהיה ברור. 47 00:02:07,930 --> 00:02:08,610 10 כוכבים. 48 00:02:08,610 --> 00:02:11,644 אחת בכל שורה, אבל זה לא. 49 00:02:11,644 --> 00:02:14,810 כך, למעשה, תן לי ללכת קדימה ולעבד זה אחד, כי זה קצת פחות 50 00:02:14,810 --> 00:02:16,900 לנקות מבוסס על תיאור זה. 51 00:02:16,900 --> 00:02:18,720 תן לי ללכת לספריית המקור שלנו. 52 00:02:18,720 --> 00:02:25,110 הפוך עגלה נטוי נקודה אחת, עגלה אחת. 53 00:02:25,110 --> 00:02:28,680 בסדר, אני רואה 11 כוכבים, ש עדיין בעייתי, 54 00:02:28,680 --> 00:02:30,090 אבל הם גם כל נמצאים בקו אחד. 55 00:02:30,090 --> 00:02:31,500 מה הבעיה כאן? 56 00:02:31,500 --> 00:02:32,339 כן. 57 00:02:32,339 --> 00:02:33,255 קהל: [לא ברור]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 1 SPEAKER: כן. 60 00:02:36,860 --> 00:02:40,210 אז זה עידון שייתכן זוכר אותי מה שהופך את אזכור קצר של. 61 00:02:40,210 --> 00:02:42,793 למרות שהכל נראה די, וזה יפה מסוכסך, 62 00:02:42,793 --> 00:02:45,850 וזה נראה כמו סוג של ניילון שבשורה 16 ​​ו -17 הן, 63 00:02:45,850 --> 00:02:47,600 אכן, עם כניסה תחת שללולאה. 64 00:02:47,600 --> 00:02:48,400 זה לא מהותי. 65 00:02:48,400 --> 00:02:50,460 המחשב אינו יודע או רואה שטח לבן. 66 00:02:50,460 --> 00:02:52,910 החלל לבן הוא רק ל שלנו בני אדם, מבחינה סגנונית. 67 00:02:52,910 --> 00:02:57,010 המחשב יודע מתי יש לך סוגריים מסולסלים, שהיית, אכן, 68 00:02:57,010 --> 00:02:58,280 לתקן את הבעיה. 69 00:02:58,280 --> 00:03:02,350 >> לכן, אם אנחנו באמת נכנסנו ו במפורש לשים בסוגריים המסולסלים אלה 70 00:03:02,350 --> 00:03:05,220 שלתקן בעיה זו על ידי להבהיר למהדר 71 00:03:05,220 --> 00:03:07,930 כי אני באמת רוצה לבצע שתי שורות של קוד שוב, 72 00:03:07,930 --> 00:03:09,220 ושוב, ושוב. 73 00:03:09,220 --> 00:03:11,680 אבל מה ההסבר הבסיסי? 74 00:03:11,680 --> 00:03:12,180 נכון? 75 00:03:12,180 --> 00:03:15,260 אנחנו לא צריכים בקפדנות מתולתל פלטה כל הזמן, 76 00:03:15,260 --> 00:03:18,210 למרות שזה כנראה הכי טוב בפועל להיכנס להרגל זה בכל מקרה 77 00:03:18,210 --> 00:03:20,878 למרות שזה מוסיף שני תווים לקוד שלך. למה? 78 00:03:20,878 --> 00:03:22,380 >> קהל: [לא ברור]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: כן אז זה פתרון אחר לגמרי. 80 00:03:24,630 --> 00:03:25,130 נכון? 81 00:03:25,130 --> 00:03:28,250 במיוחד אם במבט הראשון שאתה עושה לא באמת מעריך את מה שקורה. 82 00:03:28,250 --> 00:03:31,070 ובכן, אין ספק שאנחנו יכולים פשוט לעשות שני דברים בבת אחת 83 00:03:31,070 --> 00:03:32,710 ורק למנוע את הבעיה לחלוטין. 84 00:03:32,710 --> 00:03:36,080 וזה בסדר, אבל עכשיו, למטרות של היום, מה ש 85 00:03:36,080 --> 00:03:38,200 ההסבר לבאג? 86 00:03:38,200 --> 00:03:39,810 למה היו כל הכוכבים האלה בשורה אחת? 87 00:03:39,810 --> 00:03:40,806 כן? 88 00:03:40,806 --> 00:03:43,296 >> קהל: נראה כי אם יש לך שורה אחת של קוד, 89 00:03:43,296 --> 00:03:46,649 אתה יכול לעשות את זה בלי אלה. 90 00:03:46,649 --> 00:03:47,440 1 SPEAKER: בדיוק. 91 00:03:47,440 --> 00:03:48,750 זוהי רק מוסכמה אנושית. 92 00:03:48,750 --> 00:03:50,750 אנשים מבינים שזה קצת מעצבן או משעמם 93 00:03:50,750 --> 00:03:53,470 יש לשים סוגריים מסולסלים כל של הזמן אם כל מה שאתה רוצה לעשות 94 00:03:53,470 --> 00:03:55,090 הוא לבצע שורה אחת של קוד. 95 00:03:55,090 --> 00:03:57,660 אז, בני האדם החליטו כמה זמן לפני שזה בסדר. 96 00:03:57,660 --> 00:04:01,180 אם אתה רוצה לשים את כל הלולאה שלך על רק ששורה אחת כמו זה, 97 00:04:01,180 --> 00:04:04,030 זה בסדר עם אחד פסיק בסוף. 98 00:04:04,030 --> 00:04:07,210 אבל אתה רק יכול לעשות אחד כזה קו ללא סוגריים המסולסלים. 99 00:04:07,210 --> 00:04:09,900 >> לכן, כאשר מדריך סגנון CS50 כאצביע לך, 100 00:04:09,900 --> 00:04:11,980 תראה שבדרך כלל זה הרגל טוב 101 00:04:11,980 --> 00:04:14,920 להיכנס לזה עד שאתה תועה די נוח 102 00:04:14,920 --> 00:04:17,404 ממיני אמנות אלו ועושה את הדבר שלך. 103 00:04:17,404 --> 00:04:18,820 כל עוד אתה עצמי עולה בקנה אחד. 104 00:04:18,820 --> 00:04:21,540 ונדבר עוד על סגנון קצת מאוחר יותר היום. 105 00:04:21,540 --> 00:04:23,200 >> אז, תן לי לפתוח את תכנית אחת אחרת. 106 00:04:23,200 --> 00:04:24,930 כמובן, אנחנו צריכים לתקן 10 שגם כן. 107 00:04:24,930 --> 00:04:32,470 תן לי ללכת קדימה ולכתוב אמיתי תכנית מהירה שאני אתקשר, 108 00:04:32,470 --> 00:04:38,140 נניח, לולאת dot ג אז, לולאת נקודה ג ובנקודת C לולאה אני הולך יש לי, 109 00:04:38,140 --> 00:04:41,970 כולל אני סטנדרטי / פלט נקודת H int חלל מרכזי. 110 00:04:41,970 --> 00:04:44,020 ועכשיו בואו פשוט לעשות, אכן, לולאה. 111 00:04:44,020 --> 00:04:46,020 אז, 4 אני int מקבל אפס. 112 00:04:46,020 --> 00:04:48,660 אני פחות מאשר, למשל, 50. 113 00:04:48,660 --> 00:04:49,950 אני בתוספת, בתוספת. 114 00:04:49,950 --> 00:04:53,350 ולאחר מכן בכאן בואו קדימה, להדפיס פ 115 00:04:53,350 --> 00:04:56,400 ואז אני רוצה להדפיס אני וקו חדש, פסיק. 116 00:04:56,400 --> 00:05:00,015 >> ואת זה צריך להדפיס את כל מספרי מאפס עד 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 כמה ראש מהנהן. 119 00:05:03,680 --> 00:05:04,270 כמה nos. 120 00:05:04,270 --> 00:05:05,339 מה באג כבר? 121 00:05:05,339 --> 00:05:06,630 מה הטעות קלה שעשיתי? 122 00:05:06,630 --> 00:05:07,170 כן. 123 00:05:07,170 --> 00:05:08,544 >> קהל: [לא ברור]. 124 00:05:08,544 --> 00:05:09,210 1 SPEAKER: כן. 125 00:05:09,210 --> 00:05:11,520 אז למרות שזה נראה כמו זה מה שאני מתכוון, 126 00:05:11,520 --> 00:05:13,920 זוכר שגם רק תווי ASCII. 127 00:05:13,920 --> 00:05:14,955 >> לכן, אם אני אומר, "אני" הדפסה 128 00:05:14,955 --> 00:05:16,670 זה הולך ממש להדפיס I. אז, אם אני 129 00:05:16,670 --> 00:05:20,030 רוצה התוספת מציין מיקום ערך אני באמת צריך לעשות את זה 130 00:05:20,030 --> 00:05:22,630 ולאחר מכן חבר-ב ערך שלי באופן דינמי. 131 00:05:22,630 --> 00:05:25,200 אחרת אני פשוט הולך ל אני מקבל 50 של על המסך. 132 00:05:25,200 --> 00:05:28,140 >> אז, תן לי ללכת קדימה ו להפוך את הלולאה זו, להפעיל אותו, 133 00:05:28,140 --> 00:05:30,650 ואכן, יש לנו את כל בדרך למעלה דרך 49. 134 00:05:30,650 --> 00:05:34,140 ולי אם אני לגלול אחורה בזמן לראות המספר אפס בתחילת. 135 00:05:34,140 --> 00:05:36,050 >> ובכן, מה אם אני סוג של לפשל? 136 00:05:36,050 --> 00:05:37,800 מה אם אני עושה את זה? 137 00:05:37,800 --> 00:05:40,120 רק בגלל שאני לא חושב. 138 00:05:40,120 --> 00:05:40,970 מה בתכנית זו. 139 00:05:40,970 --> 00:05:43,970 ברגע מחדש לוקט ולרוץ, הולך לעשות באופן הגיוני? 140 00:05:43,970 --> 00:05:44,870 >> קהל: שום דבר. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: שום דבר. 142 00:05:45,661 --> 00:05:47,156 למה? 143 00:05:47,156 --> 00:05:49,124 >> קהל: אני מיועד לאפס. 144 00:05:49,124 --> 00:05:51,899 אז, המצב הוא שקר. 145 00:05:51,899 --> 00:05:52,940 1 SPEAKER: כן, בדיוק. 146 00:05:52,940 --> 00:05:55,110 כל הקוד הוא נכון, מבחינה תחבירית. 147 00:05:55,110 --> 00:05:57,310 זה יהיה לקמפל, זה קוד יפעל, אבל זה לא 148 00:05:57,310 --> 00:06:00,110 הולך לעשות משהו מועיל כי אני לאתחל אני לאפס. 149 00:06:00,110 --> 00:06:02,240 לאחר מכן, אנו בודקים, הוא שיותר מ -50? 150 00:06:02,240 --> 00:06:03,810 ברור, לא, זה לא. 151 00:06:03,810 --> 00:06:05,760 אז הלולאה לא מבצעת בכל. 152 00:06:05,760 --> 00:06:09,580 >> מה אם אנחנו עושים משהו קצת יותר פזיז? 153 00:06:09,580 --> 00:06:12,890 אז, מה אם אנחנו עושים כמו int אני מקבל אפס. 154 00:06:12,890 --> 00:06:15,640 ועכשיו תן לי להשתמש בזמן ש לולאה, שהייתה מצב אחר. 155 00:06:15,640 --> 00:06:21,810 ובעוד אני אומר, בזמן שאני גדול מ או שווה לאפס, ואז כאן אני 156 00:06:21,810 --> 00:06:26,070 קדימה, לשמור את הקובץ, לעשות לולאה. 157 00:06:26,070 --> 00:06:27,070 ואני עומד להפעיל אותו. 158 00:06:27,070 --> 00:06:30,230 מה אני הולך לראות את זה זמן עם לולאה בזמן? 159 00:06:30,230 --> 00:06:30,852 כן. 160 00:06:30,852 --> 00:06:32,120 >> קהל: לולאה אינסופית? 161 00:06:32,120 --> 00:06:35,360 >> 1 מרצה: לולאה אינסופית? 162 00:06:35,360 --> 00:06:36,662 כן, ומדוע? 163 00:06:36,662 --> 00:06:38,120 קהל: כי זה תמיד אפס. 164 00:06:38,120 --> 00:06:38,786 1 SPEAKER: כן. 165 00:06:38,786 --> 00:06:40,100 אז, אני מאותחל כמו אפס. 166 00:06:40,100 --> 00:06:44,470 כמובן שאני תמיד גדול או שווה ל 0 כתוצאה מכך. 167 00:06:44,470 --> 00:06:46,460 אז, אני רק הולך ל ראה לאין שיעור זה. 168 00:06:46,460 --> 00:06:49,850 ועכשיו, זה הגיע פעם אחת או פעמיים לראשים של הקורס. 169 00:06:49,850 --> 00:06:52,417 מה קורה כאשר אתה יש לולאה אינסופית? 170 00:06:52,417 --> 00:06:53,314 >> קהל: בקרת ג 171 00:06:53,314 --> 00:06:53,980 1 SPEAKER: כן. 172 00:06:53,980 --> 00:06:56,250 אז בקרת C סופו של דבר יגיב. 173 00:06:56,250 --> 00:06:59,520 למרבה הצער, אנחנו כבר הדפסנו מיליון ומיליון של אפסים כבר 174 00:06:59,520 --> 00:07:01,520 וכך המחשב יש סוג של לי לפניי. 175 00:07:01,520 --> 00:07:03,394 אז, זה הולך להתעלם שלי לקצת. 176 00:07:03,394 --> 00:07:06,560 אבל אם אתה רק פגע הבקרה C כמה פעמים במקלדת מק או למחשב, 177 00:07:06,560 --> 00:07:08,790 סופו של דבר זה צריך, אכן, לסיים. 178 00:07:08,790 --> 00:07:11,770 ואם לא, אנחנו אראה לך כמה טכניקות לפני זמן רב שבו אתה 179 00:07:11,770 --> 00:07:14,850 באמת יכול להרוג בכוח תוכניות, כמו ב- Windows ו- Mac OS, 180 00:07:14,850 --> 00:07:15,562 אם יהיה בכך צורך. 181 00:07:15,562 --> 00:07:16,770 אבל בואו ננסה משהו אחר. 182 00:07:16,770 --> 00:07:19,895 בואו למעשה להגדיל I. האם זה עדיין הולך להיות אינסופי? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 תן לי להפעיל את זה. 185 00:07:25,140 --> 00:07:27,090 ועכשיו אתה יכול סוג של לראות מה קורה. 186 00:07:27,090 --> 00:07:30,140 גם זה, הוא לולאה אינסופית. 187 00:07:30,140 --> 00:07:33,080 אבל זה קצת שאלה מכשילה. 188 00:07:33,080 --> 00:07:35,460 האם זה הולך להדפיס מספרים לנצח? 189 00:07:35,460 --> 00:07:36,647 >> קהל: מס ' 190 00:07:36,647 --> 00:07:37,230 SPEAKER 1: מס ' 191 00:07:37,230 --> 00:07:37,620 למה? 192 00:07:37,620 --> 00:07:38,820 שמעתי כמה nos כאן. 193 00:07:38,820 --> 00:07:41,859 Someone-- כן. 194 00:07:41,859 --> 00:07:44,275 קהל: אין לך מספיק ביטים באמת להמשיך. 195 00:07:44,275 --> 00:07:44,730 1 SPEAKER: בסדר. 196 00:07:44,730 --> 00:07:46,000 אז לא היה לי מספיק ביטים להמשיך. 197 00:07:46,000 --> 00:07:47,124 אז, מה יקרה? 198 00:07:47,124 --> 00:07:49,320 זה רק הולך לעצור? 199 00:07:49,320 --> 00:07:52,542 >> קהל: בשלב מסוים זה יהיה לסגור כל-- 200 00:07:52,542 --> 00:07:54,500 1 דובר: זה נסגר את הלולאה, אבל למה? 201 00:07:54,500 --> 00:07:57,950 מה הולך לקרות ב סוף מאוד של גבולותיה? 202 00:07:57,950 --> 00:07:58,479 כן? 203 00:07:58,479 --> 00:08:00,520 קהל: זה יהיה מחזור בחזרה למספרים שליליים. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: כדי מספרים שליליים, או אם רק היו טיפול חיובי, 205 00:08:02,900 --> 00:08:03,570 אפס לפחות. 206 00:08:03,570 --> 00:08:04,550 אז כן, בהחלט. 207 00:08:04,550 --> 00:08:08,059 נזכיר כי ראינו בפעם האחרונה שאם אתה להגדיל הפיסות שלך פעם אחת יותר מדי, 208 00:08:08,059 --> 00:08:10,225 ואתה יש קדמי גלישה הקיבולת של int שלך 209 00:08:10,225 --> 00:08:13,058 או מה סוג הנתונים הוא, שאתה הולך לעטוף, כנראה, 210 00:08:13,058 --> 00:08:14,020 שני מספרים שליליים. 211 00:08:14,020 --> 00:08:16,644 או אם יש לך לציין ש טווח צריך להיות חיובי בלבד, 212 00:08:16,644 --> 00:08:18,560 שבו אתה יכול לעשות, אבל אנחנו כבר לא ראינו את זה עדיין, 213 00:08:18,560 --> 00:08:21,420 אתה עלול בסוף לפחות חזרה על אפס. 214 00:08:21,420 --> 00:08:22,410 אמנם, בעצם כן. 215 00:08:22,410 --> 00:08:24,320 במקרה זה, שלילי מספרים, ובמקרה זה 216 00:08:24,320 --> 00:08:26,870 הלולאה הולכת לסיים כי אני לא, למעשה, 217 00:08:26,870 --> 00:08:29,220 גדול או שווה ל אפס אם זה שלילי. 218 00:08:29,220 --> 00:08:31,780 >> אז, למרבה הצער, איך ארוך היינו צריכים לחכות? 219 00:08:31,780 --> 00:08:35,490 עכשיו אנחנו עד מה, 2 מיליון איש-? 220 00:08:35,490 --> 00:08:37,705 אנחנו כמו 2 מליארד דולרים, אנחנו הולכים צריכים לחכות 221 00:08:37,705 --> 00:08:39,330 עד שבאמת יכול לראות את הסימפטום הזה. 222 00:08:39,330 --> 00:08:46,200 אבל אנחנו יכולים לראות את זה קצת יותר מהר, maybe-- בואו לראות אם אנחנו יכולים להפריע. 223 00:08:46,200 --> 00:08:46,700 בחייך. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 אפילו התפריטים מופיעים לאט. 226 00:08:51,331 --> 00:08:51,830 בסדר. 227 00:08:51,830 --> 00:08:54,270 אז, אנחנו נחזור לזה לפני זמן רב. 228 00:08:54,270 --> 00:08:56,320 זה טוב time-- לעזאזל, גורים. 229 00:08:56,320 --> 00:08:58,280 >> זה זמן טוב לכמה הודעות. 230 00:08:58,280 --> 00:09:01,225 לכן, אם אתם אולי תרצו לעסוק בYHack, 231 00:09:01,225 --> 00:09:03,600 הלהיות אירוע בחסות החברים שלנו באוניברסיטת ייל. 232 00:09:03,600 --> 00:09:05,990 ואכן, חלק מהקורס של TFS באוניברסיטת ייל מעורב עם זה. 233 00:09:05,990 --> 00:09:08,610 YHack הוא בינלאומי האק-תון בהנחיית והחזיק 234 00:09:08,610 --> 00:09:12,395 באוניברסיטת ייל, וקירוב 1500 כמו האקרים ותמלילים כל אופקים 235 00:09:12,395 --> 00:09:13,120 בכל העולם. 236 00:09:13,120 --> 00:09:14,610 אם זה עניין, תסתכל כאן. 237 00:09:14,610 --> 00:09:17,401 אם זה יותר מדי בקצרה על מסך, תסתכל על השקופיות של היום 238 00:09:17,401 --> 00:09:19,622 לכתובת האתר לyhack.org. 239 00:09:19,622 --> 00:09:21,080 אז, גם כמה הודעות מהירות. 240 00:09:21,080 --> 00:09:24,410 אז, באופן רשמי סעיפים יתחילו בשבוע הבא גם כאן וגם בניו הייבן. 241 00:09:24,410 --> 00:09:27,660 זכור אתה תהיה מקבל דוא"ל מאוחר יותר בסוף השבוע הקרוב לוודאי. 242 00:09:27,660 --> 00:09:29,390 זה לוקח הרבה זמן לCS50 לסעיף, 243 00:09:29,390 --> 00:09:32,080 כל האנשים נתון ב כיתה וכולם מסתובבים. 244 00:09:32,080 --> 00:09:34,871 וכל עמיתי ההוראה " לוחות זמנים גם הם עדיין ביסוס, 245 00:09:34,871 --> 00:09:38,110 אבל להישאר מכוון לדואר אלקטרוני ואם צורך להיות, אתה יכול מחדש סעיף שם אחרי. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 לכן, גם אם אתה משתתף קבוע בסעיפים, מבין שכמעט כל 248 00:09:43,280 --> 00:09:46,786 של המשאבים שאנו משתמשים בסעיפים הם זמינים לציבור בCS50 249 00:09:46,786 --> 00:09:48,460 ללמוד בכתובת אתר זו כאן. 250 00:09:48,460 --> 00:09:51,630 אז, אם היית אי פעם רוצה מחדש סקירה חומר מסעיף, או לקרוא קדימה, 251 00:09:51,630 --> 00:09:54,170 או שאתה לא יכול לעשות את זה כמה שבוע, להבין ששקופיות המדגם, 252 00:09:54,170 --> 00:09:58,210 ובעיות, והגדרות, ועוד כולם שם גם כן. 253 00:09:58,210 --> 00:10:00,645 >> שעות משרד לחדש את היום, ומחר, וביום רביעי, 254 00:10:00,645 --> 00:10:03,020 וביום חמישי לבדוק את הקורס אתר ללוח הזמנים. 255 00:10:03,020 --> 00:10:05,690 >> וגם, כעת משיק היום הוא CS50 דיון. 256 00:10:05,690 --> 00:10:09,230 לכן, אם וכאשר יש לך שאלות ל אחד את השני או לצוות של הקורס, 257 00:10:09,230 --> 00:10:12,099 ובדרך כלל עובד על כמה סט בעיה, 258 00:10:12,099 --> 00:10:15,015 להבין שאתה לא בהכרח יש לפנות לאדם הבא שאתה. 259 00:10:15,015 --> 00:10:17,810 אם אין אף אחד שם, אתה יכול להגיע אלינו וחבריו לכיתה 260 00:10:17,810 --> 00:10:19,890 באינטרנט באמצעות CS50 דיון. 261 00:10:19,890 --> 00:10:22,600 אז, זה דיון לוח לקורס, 262 00:10:22,600 --> 00:10:24,550 ומבין שזה אולי הכי טוב 263 00:10:24,550 --> 00:10:28,480 מקום להתחיל כאשר יש לך שאלות כאשר מחוץ לשעתי משרד 264 00:10:28,480 --> 00:10:29,470 באופן מיוחד. 265 00:10:29,470 --> 00:10:31,070 >> ארוחות הצהריים מדי יתחילו את השבוע. 266 00:10:31,070 --> 00:10:33,170 באש וקרח [לא ברור] בניו הייבן. 267 00:10:33,170 --> 00:10:35,379 תסתכל על הקורס של אתר על מנת לאשר השתתפות. 268 00:10:35,379 --> 00:10:36,753 כל הקודם לשמש לכך. 269 00:10:36,753 --> 00:10:39,380 אם אתה לא מקבל בשבוע אנחנו נעשה את רוב בכל יום שישי הבאים 270 00:10:39,380 --> 00:10:40,400 במהלך התקופה. 271 00:10:40,400 --> 00:10:41,830 >> אישור, ועכשיו מילה על דירוג. 272 00:10:41,830 --> 00:10:44,690 במיוחד כשאנחנו נכנסים בעיה להגדיר אחד, שיצא השבוע, 273 00:10:44,690 --> 00:10:46,670 והבעיה להגדיר שני ואילך. 274 00:10:46,670 --> 00:10:51,680 איך אנחנו הולכים על הערכת סטי P והערכת איכותם? 275 00:10:51,680 --> 00:10:55,560 אז, זה ארבעה צירים שאנו משתמשים ב CS50, והם ארבעה אלה כאן. 276 00:10:55,560 --> 00:10:59,200 >> היקף, אשר לוכד במספרים בסיס רק כמה מסט P 277 00:10:59,200 --> 00:10:59,860 לא לכם להתמודד עם. 278 00:10:59,860 --> 00:11:02,890 זה בערך מתכתב עם מאמץ, וזה בדרך של לכידה שלנו 279 00:11:02,890 --> 00:11:05,190 האם לנסות מחצית P נקבע, כל סט P. 280 00:11:05,190 --> 00:11:08,860 זה קל לקבל מושלם ציונים באם אתה עושה, אכן, 281 00:11:08,860 --> 00:11:11,020 מנסה בכל היבט של קבוצת P. 282 00:11:11,020 --> 00:11:12,010 אז, לזכור את זה. 283 00:11:12,010 --> 00:11:13,420 >> תקינות היא בדיוק זה. 284 00:11:13,420 --> 00:11:17,760 האם עבודתך כקוד המפרט וכמו פתרון המדגם 'הצוותים 285 00:11:17,760 --> 00:11:19,730 מצביע על כך שהקוד שלך צריך, למעשה, לעבוד. 286 00:11:19,730 --> 00:11:23,260 בדקו 50, אם לא פגש אותו עדיין, הוא בP להגדיר מפרט אחד 287 00:11:23,260 --> 00:11:25,060 ובאופן כללי יהיה אתן לך כן / לא תשובות 288 00:11:25,060 --> 00:11:26,518 באשר לשאלה האם הקוד שלך הוא נכון. 289 00:11:26,518 --> 00:11:30,680 לפחות עד כה כאנחנו הולכים להעריך את זה מבוסס על הבדיקות 290 00:11:30,680 --> 00:11:32,430 שאנו מפעילים במסגרת התכנית ש. 291 00:11:32,430 --> 00:11:33,850 >> עיצוב הוא הרבה יותר סובייקטיבי. 292 00:11:33,850 --> 00:11:35,994 כך גם נכתב הוא הקוד שלך. 293 00:11:35,994 --> 00:11:38,410 וזה משהו ש אתה תקבל יותר טוב בלאורך זמן, 294 00:11:38,410 --> 00:11:41,201 וזה משהו שנוסיף ל לספק משוב איכותי יותר ב. 295 00:11:41,201 --> 00:11:43,350 ועל ידי עיצוב אולי אני אומר לפני זמן אתה 296 00:11:43,350 --> 00:11:47,650 עשוי להתפתות בחלק P נקבע לעשות משהו loopingly, 297 00:11:47,650 --> 00:11:51,590 אבל יש אולי שלושה, או ארבעה, או חמש לולאות הקדמיות מקוננות או בזמן מקונן 298 00:11:51,590 --> 00:11:52,090 לולאות. 299 00:11:52,090 --> 00:11:54,130 כי בדרך כלל צריך תתחיל לעשות לך להתכווץ 300 00:11:54,130 --> 00:11:56,070 וככלל יהיה עיצוב רע נחשב. 301 00:11:56,070 --> 00:11:59,490 ואתה תתחיל לראות בכיתה ו מתוך דרכים טובות בכיתה של לעשות דברים, 302 00:11:59,490 --> 00:12:02,920 דרכים רעות לעשות דברים ש אולי כל להיות נכון, אבל לא 303 00:12:02,920 --> 00:12:04,304 בהכרח מתוכנן היטב. 304 00:12:04,304 --> 00:12:05,220 כמו כתיבת מאמר. 305 00:12:05,220 --> 00:12:08,100 ייתכן שתוכל לשים מילים ב דף שהם נכונים מבחינה דקדוקית, 306 00:12:08,100 --> 00:12:10,016 אבל המאמר או תזה שהם בהיא רק 307 00:12:10,016 --> 00:12:11,810 מבולבל לגמרי או לא משכנע. 308 00:12:11,810 --> 00:12:15,930 וכך זה יכול להיות אנלוגי ב עולם בכתב של עיצוב רע או טוב. 309 00:12:15,930 --> 00:12:18,490 >> וסגנון, גם הוא די סובייקטיבי. 310 00:12:18,490 --> 00:12:20,060 אבל לפחות אנחנו מצפים עקביות. 311 00:12:20,060 --> 00:12:21,480 זה כמה יפה הוא הקוד שלך. 312 00:12:21,480 --> 00:12:22,840 האם דברים יפה מסוכסך? 313 00:12:22,840 --> 00:12:26,600 האם המשתנים שלך בשם טוב / האם כל הסוגריים שלך וסוגריים מסולסלים 314 00:12:26,600 --> 00:12:27,920 מיושר כמו שהם צריכים להיות? 315 00:12:27,920 --> 00:12:31,490 יש לי מדריך סגנון CS50 כפי ש סט הבעיה יצביע לך ב. 316 00:12:31,490 --> 00:12:33,730 אלה נוחים יותר הם בברכה לסטות שמ 317 00:12:33,730 --> 00:12:35,771 כל עוד אתה עצמי עולה בקנה אחד. 318 00:12:35,771 --> 00:12:38,020 וזה, גם הוא שיעור אנו לחזק בסעיף. 319 00:12:38,020 --> 00:12:40,990 לכן, אם כל זה היה קצת , לממש את סט P המהיר וחתכים 320 00:12:40,990 --> 00:12:42,900 ייכנס יותר לעומק לפני זמן רב. 321 00:12:42,900 --> 00:12:45,490 >> אבל בדרך כלל יש לנו מעט מאוד דליים לCS50. 322 00:12:45,490 --> 00:12:48,170 ציונים הם בדרך כלל בקנה מידה של אחד לשלושה, או אחד לחמש. 323 00:12:48,170 --> 00:12:50,836 אנחנו literally-- ואני לא יכול להגיד זה מספיק בשבוע הראשון. 324 00:12:50,836 --> 00:12:51,582 שלוש הוא טובים. 325 00:12:51,582 --> 00:12:54,290 אז, למרות ש, כן, שלוש מתוך של חמש בדרך כלל, מבחינה מתמטית, 326 00:12:54,290 --> 00:12:57,240 יכול להיות 60 אחוזים או כמו מינוס D. 327 00:12:57,240 --> 00:12:58,840 שלושה הוא, למעשה, טובים. 328 00:12:58,840 --> 00:13:01,050 ואכן, אנו מצפים רוב התלמידים בכיתה 329 00:13:01,050 --> 00:13:04,280 כדי להתחיל את הטווח סביב זוגות, שלשות ו, וארבעה. 330 00:13:04,280 --> 00:13:05,510 חמישיות כנראה שלא כל כך הרבה. 331 00:13:05,510 --> 00:13:06,661 לא יותר מדי אלה. 332 00:13:06,661 --> 00:13:08,910 אבל בדרך כלל להתחיל ב נקודה מתוקה שבעקומה 333 00:13:08,910 --> 00:13:11,694 כך שככל שהזמן מתקדם, יש למעשה מקום ל, 334 00:13:11,694 --> 00:13:13,360 והזדמנויות להתקדמות עליונה. 335 00:13:13,360 --> 00:13:15,810 אז, אנא אל להשוות שלוש עם 60%. 336 00:13:15,810 --> 00:13:17,410 זה הרבה יותר מופשט מזה. 337 00:13:17,410 --> 00:13:20,160 הנוסחה שבה אנו מחשבים ציונים משוקלל כדלקמן. 338 00:13:20,160 --> 00:13:21,610 התקינות שווה ביותר. 339 00:13:21,610 --> 00:13:23,010 העיצוב הוא שווה קצת פחות. 340 00:13:23,010 --> 00:13:24,490 סגנון הוא שווה קצת פחות. 341 00:13:24,490 --> 00:13:26,950 וזה בדרך כלל לוכד את כמות הזמן 342 00:13:26,950 --> 00:13:29,800 כי נכנס מקבל כל צירים אלה בדיוק. 343 00:13:29,800 --> 00:13:31,810 סגנון הוא סופר קל, צריך להיות סופר מהיר, 344 00:13:31,810 --> 00:13:33,657 אבל זה הרגל קל כדי לקבל עצלן על. 345 00:13:33,657 --> 00:13:35,490 תקינות עלולה לקחת אתה רוב הזמן. 346 00:13:35,490 --> 00:13:38,990 רודף אחרי כמה כוח באג לקחת את זה שעה נוספת או יותר, 347 00:13:38,990 --> 00:13:41,737 וכך, את הניקוד סופו של דבר לוכד ש. 348 00:13:41,737 --> 00:13:43,070 וכך, עכשיו מילה רצינית יותר. 349 00:13:43,070 --> 00:13:45,240 מאז CS50 יש הבחנה, לטוב 350 00:13:45,240 --> 00:13:47,440 או לרע, של להיות אולי טוב יותר להכיר 351 00:13:47,440 --> 00:13:50,065 עם הבעיות של אקדמי יושר מרוב כל קורס אחר. 352 00:13:50,065 --> 00:13:53,720 ואכן, זה למיטב ידיעתי ש אנו שולחים יותר תלמידים, למרבה הצער, 353 00:13:53,720 --> 00:13:56,690 למטרות משמעתיות בכל שנה כתוצאה מכך. אז, 354 00:13:56,690 --> 00:13:59,040 בעניין של מלא גילוי, בואו נדבר לרגע 355 00:13:59,040 --> 00:14:02,820 על מה שקורה בCS50, ומה שאתה יכול לעשות, ומה שאתה יכול להיות מודע. 356 00:14:02,820 --> 00:14:05,530 >> אז, הנה מאז 2007, כאשר ירשתי כמובן, 357 00:14:05,530 --> 00:14:07,870 הוא מספר המקרים מודעות לוח. 358 00:14:07,870 --> 00:14:10,690 מודעת המועצה היא משמעתי של אוניברסיטת הרווארד גוף, או עכשיו יועץ הכבוד, 359 00:14:10,690 --> 00:14:13,790 לאילו מקרים מכונים כאשר תלמידים לעשות משהו שכמובן של 360 00:14:13,790 --> 00:14:15,470 סילבוס רואה בלתי סביר. 361 00:14:15,470 --> 00:14:17,220 אין דפוס אמיתי כאן, הייתי אומר. 362 00:14:17,220 --> 00:14:19,530 הוא נע על פני שנים אבל בדרך כלל 363 00:14:19,530 --> 00:14:22,262 זה מספר מקרים המכונים. 364 00:14:22,262 --> 00:14:23,970 מספר התלמידים כי הם מעורבים? 365 00:14:23,970 --> 00:14:25,290 זה גם משתנה. 366 00:14:25,290 --> 00:14:27,930 בדרך כלל, בשנה שעברה ל למשל, 29 סטודנטים באוניברסיטת הרווארד 367 00:14:27,930 --> 00:14:29,740 היו מודעות עלו, כביכול. 368 00:14:29,740 --> 00:14:32,670 29 תלמידים הנוכחיים, שניים מתלמידים לפניהם, 369 00:14:32,670 --> 00:14:35,610 ששתפו פעולה בדרך לא נעים. 370 00:14:35,610 --> 00:14:38,400 ולאחר מכן במונחים של אחוז, זה בדרך כלל כ -3% 371 00:14:38,400 --> 00:14:41,360 של המעמד זה, למרבה הצער, עושה החלטות מסוג זה. 372 00:14:41,360 --> 00:14:44,470 >> אז, בשנה שעברה זה היה 3.5% של הסטודנטים של CS50 373 00:14:44,470 --> 00:14:46,820 שהיה מודעות עלו, כביכול. 374 00:14:46,820 --> 00:14:48,490 >> אז, מה המשמעות של כל זה אומר? 375 00:14:48,490 --> 00:14:49,660 ומה אנחנו בעצם עושים? 376 00:14:49,660 --> 00:14:52,930 >> אז, לגילוי מלא, אנחנו בהחלט, כמו מדעני מחשב, 377 00:14:52,930 --> 00:14:57,620 יש כלי תוכנה שברשותנו וזה קל מאוד עבורנו, בהגינות, 378 00:14:57,620 --> 00:15:00,980 חבריו לכיתה ש של זה שאינם חציית קווים אלה לחצות להשוות 379 00:15:00,980 --> 00:15:04,570 כל הגשה השנה נגד כל הגשה לשמונה השנים האחרונות. 380 00:15:04,570 --> 00:15:05,445 תוכנה עושה את זה. 381 00:15:05,445 --> 00:15:07,440 וסופו של דבר זה עיני אדם שמחליטות 382 00:15:07,440 --> 00:15:11,410 אם לא להפנות חלק משנה לשפיטה נוספת, 383 00:15:11,410 --> 00:15:12,737 אבל תוכנה בהחלט עוזרת. 384 00:15:12,737 --> 00:15:15,820 וזה, בכנות, ולכן אני חושב ש יש לנו מספר גדול כזה בCS50. 385 00:15:15,820 --> 00:15:18,540 זה לא בגלל CS50 תלמידים או סטודנטים CS יותר 386 00:15:18,540 --> 00:15:20,840 בדרך כלל הם פחות כנה מכל תלמידים אחרים, 387 00:15:20,840 --> 00:15:22,340 זה רק שיש לנו כלים והטכניקות 388 00:15:22,340 --> 00:15:24,095 עם שלקחת ראשון לעבור את זה. 389 00:15:24,095 --> 00:15:25,960 >> אבל אנחנו עושים לפקוח עין על כל הדברים האלה 390 00:15:25,960 --> 00:15:30,340 כמו גם, שוב, באינטרסים של הכרה בעבודה זה להיות לשים 391 00:15:30,340 --> 00:15:32,397 ברוב העל של הכיתה. 392 00:15:32,397 --> 00:15:34,230 והמדיניות של הקורס על יושר אקדמי, 393 00:15:34,230 --> 00:15:37,021 למרות שזה חבורה של סעיפים ארוך עם חבורה של כדורים 394 00:15:37,021 --> 00:15:40,490 כי הם מקווים די קריאים, זה באמת מסתכם להיות סביר. 395 00:15:40,490 --> 00:15:44,000 והשלטון הטוב ביותר של אגודל ש אנו מציעים את תכנית הלימודים ב 396 00:15:44,000 --> 00:15:46,020 זה, מהות כל העבודה שאתה 397 00:15:46,020 --> 00:15:47,850 להגיש לקורס זה חייב להיות שלך. 398 00:15:47,850 --> 00:15:51,510 ואכן, בכל אותם כמעט מקרים הופנו להליך משמעתי 399 00:15:51,510 --> 00:15:55,640 זה היה בגלל איזה סטודנט מאוחר אחד הלילה בדרך כלל פנה הקוד שלו או שלה 400 00:15:55,640 --> 00:15:58,130 על הסף לכיתה, שלאחר מכן אימץ אותה 401 00:15:58,130 --> 00:16:00,840 בשלמותה או שלהם באופן משמעותי. 402 00:16:00,840 --> 00:16:02,680 >> אבל באמת, זה בסדר. 403 00:16:02,680 --> 00:16:04,684 ואכן, במשרד שעות, הפתקים 404 00:16:04,684 --> 00:16:07,850 אתה כבר מסר אם אתה נכנס למשרד של שעות בשבוע שעבר מעודד כמה שיותר. 405 00:16:07,850 --> 00:16:09,710 אתה בהחלט בברכה ועודדתי 406 00:16:09,710 --> 00:16:12,340 כדי לדון בסטי בעיה עם חבריו לכיתה. 407 00:16:12,340 --> 00:16:14,461 לעזור אחד לשני כאשר נגף. 408 00:16:14,461 --> 00:16:17,710 אבל בדרך כלל את כלל אצבע צריך להיות זה, "כאשר אתה מבקש עזרה, 409 00:16:17,710 --> 00:16:20,412 אתה עשוי להראות את הקוד שלך לאחרים, אבל אתה לא יכול להציגם. " 410 00:16:20,412 --> 00:16:22,620 אז, במילים אחרות, אם אני נאבק עם כמה סט P 411 00:16:22,620 --> 00:16:25,290 ואני יושב שם ב חדר אוכל, או בספרייה, 412 00:16:25,290 --> 00:16:28,470 או בכיתה מנסה למצוא איזה פגם, 413 00:16:28,470 --> 00:16:30,340 אני בהחלט יכול להראות הקוד שלי על המסך שלי 414 00:16:30,340 --> 00:16:32,590 לאדם שישב ליד לי, בהחלט צוות, 415 00:16:32,590 --> 00:16:33,600 אבל גם לכיתה. 416 00:16:33,600 --> 00:16:36,580 אבל אם הפתרון ש לכיתה שלי מציעה היא, אה, 417 00:16:36,580 --> 00:16:39,200 כאן רק תסתכל על מה ש אני עשיתי, שחוצה את הקו. 418 00:16:39,200 --> 00:16:43,120 >> והייתי מעז לומר שזה בדרך כלל דבר סביר עבור רוב האנשים 419 00:16:43,120 --> 00:16:45,030 לזהות בקלות את הקו. 420 00:16:45,030 --> 00:16:47,195 וכך, לראות את תכנית הלימודים לקבלת פרטים נוספים. 421 00:16:47,195 --> 00:16:49,070 ועכשיו אחד יותר היבטים שנויים במחלוקת 422 00:16:49,070 --> 00:16:52,529 של תכנית הלימודים CS50 שחשבתי היה מדבר במסקנה כאן 423 00:16:52,529 --> 00:16:53,820 הוא סעיף החרטה מה שנקרא. 424 00:16:53,820 --> 00:16:55,340 אז, הנה כל האותיות הקטנות. 425 00:16:55,340 --> 00:16:58,090 אבל באופן כללי שראינו מעל 8 השנים בתוספת האחרונות 426 00:16:58,090 --> 00:17:01,510 כי, אכן, כמעט כל CS50 של מקרים של חוסר יושר אקדמי 427 00:17:01,510 --> 00:17:04,390 הייתה התוצאה של עניים רק קבלת החלטות בשעת הלילה מאוחר. 428 00:17:04,390 --> 00:17:07,144 התוצאה של לחץ, התוצאה חוסר האכילה, חוסר השינה, 429 00:17:07,144 --> 00:17:09,560 סטי P יותר מדי, יותר מדי מועדים, התחייבויות רבות מדי. 430 00:17:09,560 --> 00:17:13,520 מתח בנייה ב2:00, 3:00 בבוקר, 4:00 לפנות בוקר, עם בדד. 431 00:17:13,520 --> 00:17:17,020 רוב התלמידים במקרים אלה עתה קבל החלטות רעות 432 00:17:17,020 --> 00:17:20,619 כי הם עלולים גם מאוד מתחרטים למחרת בבוקר, אם לא דקות מאוחר יותר, 433 00:17:20,619 --> 00:17:25,490 אבל עד השנה שעברה לא היה שסתום שחרור שתלמידים אלה יכולים 434 00:17:25,490 --> 00:17:29,140 למעשה לפתוח להתייחס למעשה בעיה על ראש בלי פחד להיות 435 00:17:29,140 --> 00:17:30,850 מאותחל מהמכללה לגמרי. 436 00:17:30,850 --> 00:17:33,260 >> ואכן, הצגנו סעיף זה חרטה בשנה שעברה, 437 00:17:33,260 --> 00:17:35,970 שאומר שאם בתוך 72 שעות, שלושה ימים, 438 00:17:35,970 --> 00:17:37,970 לחצות איזה קו שנקבע בתכנית הלימודים 439 00:17:37,970 --> 00:17:41,178 אתה בא קדימה לאחד מהקורס של ויהיו לנו ראשי צ'אט על זה. 440 00:17:41,178 --> 00:17:43,720 יש עדיין להיות חלק תוצאה, בניגוד למה ש 441 00:17:43,720 --> 00:17:44,990 דווח להיפך. 442 00:17:44,990 --> 00:17:49,190 יש עדיין כמה תוצאות ש הוא פעולה על ידי כמובן, 443 00:17:49,190 --> 00:17:51,611 בדרך כלל איפוס סט P או לקחת חלק בפעולה אחרת, 444 00:17:51,611 --> 00:17:53,610 אבל אנחנו, אכן, להתמודד עם זה בעצמנו ולא 445 00:17:53,610 --> 00:17:58,460 להפנות אותו גבוה יותר היו התוצאה יכול להיות הרבה יותר חמור. 446 00:17:58,460 --> 00:18:01,810 ואכן, לחלוק את מה שקרה בשנה שעברה, בשמונה השנים, ועכשיו 447 00:18:01,810 --> 00:18:04,950 תשע שנים, ללמד קורס זה ולאחר התעסקות עם ידיות שונות, 448 00:18:04,950 --> 00:18:07,866 הפיכת חוגות שונות על העבר כמה שנים על יושר אקדמי, 449 00:18:07,866 --> 00:18:11,920 ורואה לנתונים לא ברורים השפעה, אפילו נאומים כמו זה, 450 00:18:11,920 --> 00:18:15,490 זה היה ידיים למטה הדבר הטוב ביותר אנחנו כבר הצגנו פדגוגיים 451 00:18:15,490 --> 00:18:18,090 בשמונה שנים יחד קווים אלה בCS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 תלמידים הגיעו קדימה על פי סעיף זה בשנה שעברה. 453 00:18:21,010 --> 00:18:23,389 אנחנו לא נקטנו שום פעולה ל שבעה תלמידים אלה, 454 00:18:23,389 --> 00:18:25,430 קביעה שהם היו שלא לצורך מודאג. 455 00:18:25,430 --> 00:18:27,304 הם לא היו, למעשה, חציתי קו, אבל זה 456 00:18:27,304 --> 00:18:28,960 היה צ'אט טוב שיש בכל זאת. 457 00:18:28,960 --> 00:18:31,190 אנחנו מאופסים 11 של הציונים שהוגשו. 458 00:18:31,190 --> 00:18:33,840 ובמקרה אחד בקשנו תלמיד לעשות בעיה להגדיר. 459 00:18:33,840 --> 00:18:36,370 אבל משכנע יותר, בכנות, עם 19 שיחות אלה, 460 00:18:36,370 --> 00:18:39,020 שהיה יותר מדרך ש צפוי להיות, כל אחד מהם 461 00:18:39,020 --> 00:18:41,370 10 דקות לאולי שעה ארוכה, גם הביא 462 00:18:41,370 --> 00:18:44,920 להדליק מספר הסוגיות הנוגעות ל סוגיות משפחתיות, בעיות ידיד, 463 00:18:44,920 --> 00:18:46,940 נושאים בתחום בריאות נפש שלאחר מכן עוסקים, 464 00:18:46,940 --> 00:18:50,200 עם ברכתו של התלמיד, תושב דיקן, או חברים, או כל מספר אחר 465 00:18:50,200 --> 00:18:51,450 משאבי תמיכה. 466 00:18:51,450 --> 00:18:54,454 כך שזה היה ללא ספק אחד מהשימושים הטובים ביותר של זמננו 467 00:18:54,454 --> 00:18:55,870 ואחת מההתערבויות הטובות ביותר. 468 00:18:55,870 --> 00:18:58,870 >> עם זאת אמרה, לא היה לו קלט בשיעור של זיהוי 469 00:18:58,870 --> 00:19:00,909 של חוסר יושר אקדמי באופן כללי יותר. 470 00:19:00,909 --> 00:19:02,950 ואני מעז לומר, משנה זה סטודנטים בשנה שעברה 471 00:19:02,950 --> 00:19:06,350 היה דמוגרפי ש בעבר מעולם לא הזדהיתי לפני 472 00:19:06,350 --> 00:19:08,140 ומעולם לא קשור לקודם. 473 00:19:08,140 --> 00:19:10,020 וכך, אלה היו סיפורי הצלחה נפלאים 474 00:19:10,020 --> 00:19:13,390 למרות שהם הובאו לאור בנסיבות פחות אופטימליות. 475 00:19:13,390 --> 00:19:15,640 אז, לשמור את זה בחשבון כמו שאתה עושה, אולי, 476 00:19:15,640 --> 00:19:17,390 כמה החלטה גרועה את עצמך בשעתי הלילה מאוחר, 477 00:19:17,390 --> 00:19:20,151 שיש זכות חזרה כל כך הרבה זמן כתלמיד במצב ש 478 00:19:20,151 --> 00:19:23,400 בעלים ולבוא קדימה כדי שנוכל יש סוג כזה של צ'אט ולהתמודד עם זה 479 00:19:23,400 --> 00:19:27,310 בדרך זה חינוכי, ולאחר מכן אנחנו יכולים לשים את זה מאחורינו ביום שלמחרת. 480 00:19:27,310 --> 00:19:30,335 >> אז בלי עיכובים נוספים, לקחת את עוקץ של השיחה הזאת, 481 00:19:30,335 --> 00:19:35,080 סיבת הגורים עד כלומר רק כדי לשבור את הקרח לרגע. 482 00:19:35,080 --> 00:19:39,560 ולמרבה הצער, הם כולם לישון, אבל מה שהיה אמורה לקרות כאן 483 00:19:39,560 --> 00:19:41,760 היה כולם היה אמור יראת הכבוד וסוג של להירגע 484 00:19:41,760 --> 00:19:43,910 לאחר שהשיחה מאוד כבדה. 485 00:19:43,910 --> 00:19:46,930 אבל כנראה ששמתי הגורים לישון. 486 00:19:46,930 --> 00:19:50,070 אבל אם אתה הולך לCS50 של גורים הנטויים אתר, 487 00:19:50,070 --> 00:19:51,610 אתה יכול לצפות בם כל היום. 488 00:19:51,610 --> 00:19:55,280 במיוחד אולי 2:00, או 3:00, או 4:00 בלילה 489 00:19:55,280 --> 00:19:57,480 לראות הפגת מתחים קטנה שם. 490 00:19:57,480 --> 00:19:58,805 אז זה לקצץ גורים. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 בסדר. 493 00:20:02,200 --> 00:20:03,020 לא היה כיף? 494 00:20:03,020 --> 00:20:04,200 אוקיי. 495 00:20:04,200 --> 00:20:07,140 אז, בחזרה לחלק המחשב מדע, אם יורשה לי. 496 00:20:07,140 --> 00:20:10,600 >> אז, זוכר שהפעם האחרונה שהתחלנו מחפש לא רק בעיקרי, ש 497 00:20:10,600 --> 00:20:13,930 הייתה פונקצית ברירת המחדל, כאשר הדגל ירוק לחץ שווה ערך, 498 00:20:13,930 --> 00:20:16,999 אבל אנחנו גם התחלנו בקצרה כתיבת חלק מהפונקציות שלנו. 499 00:20:16,999 --> 00:20:20,040 ועד כה אף אחד מהתפקידים אלה היה גדול או בשרני במיוחד. 500 00:20:20,040 --> 00:20:24,570 אתה נכנסת לגדול יותר אלה פונקציות ככל הנראה, P להגדיר 2, P להגדיר 3, 501 00:20:24,570 --> 00:20:26,410 בהחלט P להגדיר 4 ואילך. 502 00:20:26,410 --> 00:20:29,340 עכשיו רוב התוכניות שלך, אם לא כולם, בוודאי לP 503 00:20:29,340 --> 00:20:31,550 1 סט ניתן לעשות לגמרי בעיקרי. 504 00:20:31,550 --> 00:20:33,810 אם התכנית שלך רק חמש שורות, 10 שורות, 505 00:20:33,810 --> 00:20:37,070 ארוך אפילו 20 שורות, בצורה מושלמת סביר לכתוב את זה 506 00:20:37,070 --> 00:20:40,930 כל בעיקרי ולא מעל לסבך הקוד שלך, אבל מה שאנחנו עושים היום 507 00:20:40,930 --> 00:20:44,360 ואילך מנסה גם להציג כמה טכניקות עיצוב טובות 508 00:20:44,360 --> 00:20:48,660 כך שבקוד שלך מקבל יותר מסובך וכמו הבעיות 509 00:20:48,660 --> 00:20:51,690 אתה רוצה לפתור מקבל יותר ויותר מעניין יותר שיש לך, סוג של, 510 00:20:51,690 --> 00:20:55,850 הכלים בארגז הכלים שלך עם ש לעצב פתרונות טובים לאלה. 511 00:20:55,850 --> 00:21:01,210 >> אז, בואו נעיף מבט מהיר לאחור ב תכנית זו מהשבוע האחרון שלי, ש 512 00:21:01,210 --> 00:21:06,550 היה פונקציות אפס נקודת C. ו שם לב ש, בפשטות, 513 00:21:06,550 --> 00:21:10,310 זה נראה כך עם שתי פונקציות, עיקרי ושם הדפסה. 514 00:21:10,310 --> 00:21:13,160 ולחשוב בחזרה או אולי הנדסה לאחור היום, 515 00:21:13,160 --> 00:21:16,880 מה היה המניע להצגה פונקציה בקו 28 בשם, 516 00:21:16,880 --> 00:21:18,180 שם הדפסה? 517 00:21:18,180 --> 00:21:21,745 או מה היה זו דוגמא ב מבחינת עיקרון או אוכל מהיר, 518 00:21:21,745 --> 00:21:22,605 אם היית. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 כמה מלמולים. 521 00:21:27,300 --> 00:21:28,830 מה? 522 00:21:28,830 --> 00:21:32,210 >> כן פירוק כל כך פונקציונלי הוא סוג של הדרך המפוארת של אומר, 523 00:21:32,210 --> 00:21:34,690 לפרק את התכנית שלך לחלקים המרכיבים אותה 524 00:21:34,690 --> 00:21:37,530 ולאחר מכן להשתמש בחלקים אלה להרכיב כולה. 525 00:21:37,530 --> 00:21:39,620 אז, שגם הוא רק סוג של פה מלא כבר, 526 00:21:39,620 --> 00:21:42,050 אבל זה אולי אפילו דוגמא טובה יותר של משהו 527 00:21:42,050 --> 00:21:43,081 רק בשם הפשטה. 528 00:21:43,081 --> 00:21:43,580 נכון? 529 00:21:43,580 --> 00:21:46,950 ההפשטה הולכת להיות אחד מהנושאים חוזרים ונשנים בCS50 530 00:21:46,950 --> 00:21:49,085 וגם מדעי מחשב באופן כללי יותר שכן היא 531 00:21:49,085 --> 00:21:53,060 טכניקה שבה אתה יכול לפתור בעיות בצורה יעילה יותר, כי אתה 532 00:21:53,060 --> 00:21:56,807 יכול לכתוב פתרונות יותר באופן אינטואיטיבי ובאופן שבו קשקשים 533 00:21:56,807 --> 00:21:58,390 ומובן על ידי אנשים אחרים. 534 00:21:58,390 --> 00:21:59,860 מה שאני מתכוון לעשות את זה? 535 00:21:59,860 --> 00:22:04,340 >> אז, ניתן לטעון שזה הרבה יותר קריא להסתכל על תכנית כמו זו, 536 00:22:04,340 --> 00:22:05,990 סופר קצר למרות שזה. 537 00:22:05,990 --> 00:22:10,050 כאשר אתה רואה בקו 22 שיש פונקציה שנקראת, שם הדפסה. 538 00:22:10,050 --> 00:22:12,620 שם זה לבד אומר מה שהיא עושה. 539 00:22:12,620 --> 00:22:15,780 הפונקציה שלוקחת כנראה קלט בין הסוגריים שלה, 540 00:22:15,780 --> 00:22:18,600 וכנראה עושה משהו, ככל הנראה מדפיס את השם. 541 00:22:18,600 --> 00:22:20,880 וכך, למרות שאנחנו בהחלט יכול להיות 542 00:22:20,880 --> 00:22:25,280 עשיתי את מה שעשינו לפני שבוע, שהיה פשוט לקחת קו בפועל זה של קוד, 543 00:22:25,280 --> 00:22:28,710 להיפטר מזה, ולקבל להיפטר מזה כולם ביחד, 544 00:22:28,710 --> 00:22:31,436 אנחנו סוג של הפשטה משם הרעיון של הדפסה שם. 545 00:22:31,436 --> 00:22:33,060 לא אכפת לי אם אתה משתמש בdef הדפסה. 546 00:22:33,060 --> 00:22:35,601 לא אכפת לי אם יש לך S אחוזים ונ 'קו נטוי אלה 547 00:22:35,601 --> 00:22:37,270 פרטים מסתוריים מאוד. 548 00:22:37,270 --> 00:22:40,090 מה אכפת לי כ מתכנת מדפיס שם. 549 00:22:40,090 --> 00:22:43,414 וכך, מה דרך טובה יותר לעשות את זה מ על ידי קורא, שם הדפסת פונקציה? 550 00:22:43,414 --> 00:22:46,330 וכך, שהיה אחד מהמניעים לעושה משהו כזה. 551 00:22:46,330 --> 00:22:50,370 מה שהופך את הקוד לקריא יותר, יותר לשימוש חוזר, וגם תיאורים עצמיים. 552 00:22:50,370 --> 00:22:52,120 עכשיו, בואו נסתכל בדוגמה נוספת, 553 00:22:52,120 --> 00:22:56,220 שהיה אחד פונקציות, שהיו לנו כאן. 554 00:22:56,220 --> 00:23:00,367 >> אז, זה אחד הוא אולי אפילו יותר משכנע, כי, במקרה זה, 555 00:23:00,367 --> 00:23:01,700 אני לא רוצה רק כדי לקבל int. 556 00:23:01,700 --> 00:23:03,320 אני רוצה לקבל int חיובי. 557 00:23:03,320 --> 00:23:06,470 ומתברר לקבל חיובי int אתה צריך לעשות חבורה של התרוצצות. 558 00:23:06,470 --> 00:23:06,969 נכון? 559 00:23:06,969 --> 00:23:09,600 זה לא קו אחד פשוט קורא כמו שם הדפסה היה, 560 00:23:09,600 --> 00:23:11,480 שהוא אמנם פחות משכנע. 561 00:23:11,480 --> 00:23:16,000 >> כדי לקבל int חיובי, logically-- תן לי לגלול למטה כדי להסתיר את זה. 562 00:23:16,000 --> 00:23:18,887 מה אתה חייב לעשות? 563 00:23:18,887 --> 00:23:20,720 כמו בכל הכלים ש יש כרגע הם 564 00:23:20,720 --> 00:23:24,440 דברים כמו def הדפסה מרגיל ספרייה וגם מספריית CS50 565 00:23:24,440 --> 00:23:26,990 יש לנו קבלו Int, וקבלו Float, קבל ארוך ארוך, קבל מחרוזת, 566 00:23:26,990 --> 00:23:29,260 אבל רק אחד, שיך, עכשיו הוא קבל Int. 567 00:23:29,260 --> 00:23:32,970 לכן, אם הכלי היחיד שיש לך בארגז הכלים שלך הוא קבל Int, 568 00:23:32,970 --> 00:23:35,505 איך אנחנו הולכים על יישום זה כדי לקבל int החיובי? 569 00:23:35,505 --> 00:23:35,929 >> קהל: יצירת יומן ולבדוק על אם הקלט שהם נתנו לי 570 00:23:35,929 --> 00:23:36,762 היה חיובי או לא. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: מושלם. 573 00:23:40,640 --> 00:23:41,200 בדיוק. 574 00:23:41,200 --> 00:23:43,950 כלי נוסף שיש לנו בנו ארגז כלים משבוע לפני או שתיים 575 00:23:43,950 --> 00:23:45,419 הוא רק מבנה לולאות. 576 00:23:45,419 --> 00:23:48,210 וכך, כן, אם אנו משתמשים בזמן לולאה, או לעשות בזמן הלולאה, או קדמי 577 00:23:48,210 --> 00:23:50,850 לולאה אנחנו כנראה יכולים לברוח עם כל אלה בצורה כלשהי. 578 00:23:50,850 --> 00:23:55,140 אנחנו יכולים ליישם את הרעיון של גט int חיובי רק על ידי השימוש קבל Int, 579 00:23:55,140 --> 00:23:57,830 ואז פשוט להמשיך לקרוא את זה שוב ולשמור להציק למשתמש 580 00:23:57,830 --> 00:24:00,320 עד שהוא או היא למעשה נותן לנו את מה שאנחנו רוצים. 581 00:24:00,320 --> 00:24:03,260 >> אז עכשיו, זה הפשטה של ​​התהליך 582 00:24:03,260 --> 00:24:05,680 של מקבל int חיובי לפונקציה שנקראת 583 00:24:05,680 --> 00:24:08,930 קבל Int החיוביים הוא קצת יותר משכנע, כי מסתכלים על זה. 584 00:24:08,930 --> 00:24:10,990 אלה הם כמו 10 פלוס שורות של קוד ש 585 00:24:10,990 --> 00:24:15,090 מעורבים במקבל int חיובי, ולא ממש אכפת לי איך אתה עושה את זה. 586 00:24:15,090 --> 00:24:17,850 כל אכפת לי הוא שאתה יכול לעשות את זה, ולכן יש לי 587 00:24:17,850 --> 00:24:21,660 כל הפרטים האלה מסתתרים מאחורי פונקציה שנקראת קבל חיובית int ש, 588 00:24:21,660 --> 00:24:23,430 אכן, יש לעשות את זה תוך לולאה. 589 00:24:23,430 --> 00:24:27,660 >> ותראה בשבוע שעבר לתחביר יש, אבל זה פשוט מצהיר N, 590 00:24:27,660 --> 00:24:29,800 והיא מדפיסה את הוראה למשתמש. 591 00:24:29,800 --> 00:24:33,330 זה קורא קבל Int ולאחר מכן הוא בודק מצב זה שוב, ושוב, 592 00:24:33,330 --> 00:24:35,230 ושוב עד שהמשתמש משתף פעולה. 593 00:24:35,230 --> 00:24:38,000 >> אז עכשיו, כמה בדיקות שפיות. 594 00:24:38,000 --> 00:24:40,370 למי שמכיר אולי עם כמה תכנות, 595 00:24:40,370 --> 00:24:46,410 מדוע N מוצהר, למה אני יוצר מחוץ N של לעשות בזמן לולאה? 596 00:24:46,410 --> 00:24:50,370 למה זה על קו 29 ולא על 33 כמו, למשל. 597 00:24:50,370 --> 00:24:53,529 >> קהל: כי כשאתה להכריז עליו מבחוץ, זה סוג 598 00:24:53,529 --> 00:24:56,688 של יותר, הגדול יותר scope-- 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: טוב. 600 00:24:58,146 --> 00:24:59,604 >> קהל: --and אם תכריז זה בתוך הלולאה, [לא ברורה] 601 00:24:59,604 --> 00:25:00,979 כי הוא לא יודע על זה. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 1 SPEAKER: בדיוק. 604 00:25:03,610 --> 00:25:06,330 אם אני יכול simplify-- זה נושא של היקף. 605 00:25:06,330 --> 00:25:11,530 והיקף מתייחס להקשר ב אשר משתנה קיים או שמיש. 606 00:25:11,530 --> 00:25:15,050 והכלל אצבע נחמד כאן הוא ש בדרך כלל כאשר אתה מצהיר או ליצור 607 00:25:15,050 --> 00:25:21,642 משתנה אתה יכול רק להשתמש בו בתוך של הקרוב מחבק סוגריים מסולסלים. 608 00:25:21,642 --> 00:25:22,600 אז מה זה אומר? 609 00:25:22,600 --> 00:25:26,551 אם אני, במקום, לבטל את זה וללכת עם משהו שמרגיש קצת יותר פשוט. 610 00:25:26,551 --> 00:25:27,050 נכון? 611 00:25:27,050 --> 00:25:29,360 >> קו 32 פשוט נראה נקי יותר לי עכשיו. 612 00:25:29,360 --> 00:25:31,500 אני עושה את שני הדברים ב הקצאה אחת ולאחר מכן 613 00:25:31,500 --> 00:25:33,070 יד ימין ביד השמאל. 614 00:25:33,070 --> 00:25:35,180 הבעיה עכשיו מבוססת על הגדרה זו של היקף 615 00:25:35,180 --> 00:25:41,130 הוא N, שניתן להשתמש בקווים 31 ו -32 בתוך לולאה זו, 616 00:25:41,130 --> 00:25:45,100 אבל איפה על ידי הגדרה ש זה יכול לא להיות בשימוש? 617 00:25:45,100 --> 00:25:45,660 בשורה מה? 618 00:25:45,660 --> 00:25:46,160 כן. 619 00:25:46,160 --> 00:25:47,490 >> קהל: 35. 620 00:25:47,490 --> 00:25:49,180 >> 1 מרצה: 35. 621 00:25:49,180 --> 00:25:50,480 בהחלט לא 35. 622 00:25:50,480 --> 00:25:52,349 וגם איפה עוד? 623 00:25:52,349 --> 00:25:52,890 קהל: 34. 624 00:25:52,890 --> 00:25:55,040 1 SPEAKER: גם 34 הוא בעייתי כי זה 625 00:25:55,040 --> 00:25:56,450 מחוץ לסוגריים המסולסלים. 626 00:25:56,450 --> 00:25:58,200 וכך למעשה, בואו לראות מה קורה. 627 00:25:58,200 --> 00:25:58,700 נכון? 628 00:25:58,700 --> 00:26:00,722 זה אולי נראה קצת אינטואיטיבי או אולי לא, 629 00:26:00,722 --> 00:26:02,680 אבל בואו נראה מה יש מהדר לומר כש 630 00:26:02,680 --> 00:26:04,730 אנחנו הולכים לספריית המקור של היום. 631 00:26:04,730 --> 00:26:08,950 הפוך פונקציה אחת. 632 00:26:08,950 --> 00:26:11,231 אלוהים אדירים. 633 00:26:11,231 --> 00:26:12,980 ובכן, סוף סוף סיימתי ש, דרך אגב. 634 00:26:12,980 --> 00:26:14,030 בסדר. 635 00:26:14,030 --> 00:26:15,510 ומה הבעיה כאן? 636 00:26:15,510 --> 00:26:17,430 מאוד מסתורי להסתכל. 637 00:26:17,430 --> 00:26:19,570 אבל הנה מה שאני typed-- להפוך את הפונקציה אחת. 638 00:26:19,570 --> 00:26:21,640 הנה מה לעשות מושרה, שהוא למעשה 639 00:26:21,640 --> 00:26:23,705 באמצעות צלצול מהדר עם חלק מהדגלים האלה 640 00:26:23,705 --> 00:26:25,080 שנראה שוב לפני זמן רב. 641 00:26:25,080 --> 00:26:26,829 ושוב, תמיד נראה בשגיאה הראשונה, 642 00:26:26,829 --> 00:26:30,540 כי זה עלול רק צריך מדורג השפעה חסרת משמעות בקווים אחרים. 643 00:26:30,540 --> 00:26:34,410 >> אז מה שזה אומר הוא ש בעיה היא בפונקצית 1 ג 644 00:26:34,410 --> 00:26:36,890 זה בקו 32. 645 00:26:36,890 --> 00:26:39,712 וזה בטור, או אופי, 13. 646 00:26:39,712 --> 00:26:42,670 לכן, כאשר שיכול עורך הטקסט שלך לעזור לך לזהות היכן הבעיה היא. 647 00:26:42,670 --> 00:26:47,079 אז אם אני לגלול מעלה, מה הוא קו 32? 648 00:26:47,079 --> 00:26:49,120 זה אכן זה אחד שכבר הדגיש 649 00:26:49,120 --> 00:26:50,607 n משתנה תקין כאן-- שאינו בשימוש. 650 00:26:50,607 --> 00:26:51,440 אבל זה לא שאינו בשימוש. 651 00:26:51,440 --> 00:26:52,320 אני משתמש בו. 652 00:26:52,320 --> 00:26:56,110 אבל מהדר של מבולבל, כי זה רק קיים בתוך היקף זה. 653 00:26:56,110 --> 00:26:57,727 ואז אני לא יכול להשתמש בו כאן. 654 00:26:57,727 --> 00:26:58,560 אני לא יכול להשתמש בו כאן. 655 00:26:58,560 --> 00:27:01,320 והמהדר, ולכן, אפילו לא אכפת שאני מנסה. 656 00:27:01,320 --> 00:27:03,940 זה נראה שאינו בשימוש בתוך היקפה בפועל. 657 00:27:03,940 --> 00:27:08,854 >> אז אנחנו יכולים להרחיב את ההיקף על ידי עושה בדיוק מה שהתחלנו with-- int n. 658 00:27:08,854 --> 00:27:11,020 ולמרות שזה לא נראה אלגנטי כמו, אולי, 659 00:27:11,020 --> 00:27:15,110 ואנחנו לוקחים את קו נוסף כאן, עכשיו זה בהיקף בכל מקום. 660 00:27:15,110 --> 00:27:15,970 אז בואו ננסה שוב. 661 00:27:15,970 --> 00:27:19,040 אז להפוך את הפונקציה אחת. 662 00:27:19,040 --> 00:27:19,610 נחמד. 663 00:27:19,610 --> 00:27:23,370 ועכשיו אם אני אם אני מפעיל פונקציה אחד, בוא לתת לו שלילי 10, 664 00:27:23,370 --> 00:27:27,170 שלילי 1, 0, 1, וזה אכן עובד. 665 00:27:27,170 --> 00:27:28,610 >> אז יש פתרון אחר כאן. 666 00:27:28,610 --> 00:27:29,280 אתה יודע מה? 667 00:27:29,280 --> 00:27:31,230 מה אם אני באמת מתמודד עם זה? 668 00:27:31,230 --> 00:27:33,140 אני לא יודע איפה n אמור ללכת. 669 00:27:33,140 --> 00:27:33,723 אתה יודע מה? 670 00:27:33,723 --> 00:27:39,220 אני רק הולך לשים את הכל דרך בחלק העליון של הקובץ שלי כאן. 671 00:27:39,220 --> 00:27:42,835 מה זה תעשה, מה אתה חושב? 672 00:27:42,835 --> 00:27:43,335 כן? 673 00:27:43,335 --> 00:27:44,251 >> קהל: [לא ברור]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 1 SPEAKER: כן. 676 00:27:48,630 --> 00:27:50,560 אז אני כבר עשיתי את זה בעולם, אם אפשר לומר כך. 677 00:27:50,560 --> 00:27:54,430 אם יש לך משתנה זה מחוץ כל הפונקציות שלך שמותר, 678 00:27:54,430 --> 00:27:58,780 והקוד צריך לקמפל, וn עכשיו יהיה נגיש לא רק בגט 679 00:27:58,780 --> 00:28:02,490 int החיובי, אלא גם בmain-- ש קצת מדאיג כי יש 680 00:28:02,490 --> 00:28:04,864 כבר n בעיקרי, כך יותר על שרק moment-- 681 00:28:04,864 --> 00:28:06,530 אבל זה ייחשב עיצוב רע. 682 00:28:06,530 --> 00:28:06,910 בסדר. 683 00:28:06,910 --> 00:28:08,570 אם אתה צריך לפנות אל משהו כמו, הו, אני 684 00:28:08,570 --> 00:28:10,125 פשוט לשים אותו כאן, כי נראה את הקוד לקמפל 685 00:28:10,125 --> 00:28:12,180 הוא בדרך כלל לא נוהג הטוב ביותר. 686 00:28:12,180 --> 00:28:14,590 במקום זאת אתה רוצה לבחור ההיקף המצומצם 687 00:28:14,590 --> 00:28:18,720 למשתנים שלך, שמשמעותה הולך עם התכנון הראשוני שלנו, ש 688 00:28:18,720 --> 00:28:19,920 הוא כאן. 689 00:28:19,920 --> 00:28:24,400 >> עכשיו במאמר מוסגר, אם היה לך בשם-זהה משתנה כאן, 690 00:28:24,400 --> 00:28:27,750 ג הדרך יטפל זה-- למרות שזה לא יקרה גם often-- 691 00:28:27,750 --> 00:28:30,150 הוא שזה עדיין בסדר גמור כאן. 692 00:28:30,150 --> 00:28:35,000 אבל הגדרה זו של n בקו 22 יהיו צל הגלובלי אחד. 693 00:28:35,000 --> 00:28:38,190 אז זה אחד יעבוד ב עיקרי, והגלובלי אחד 694 00:28:38,190 --> 00:28:41,670 יהיה למעשה להחיל כשאתה ב לקבל int חיובי אבל עוד על כך ב 695 00:28:41,670 --> 00:28:43,890 בפעם אחרת, אבל רק עבור אלה סקרנים. 696 00:28:43,890 --> 00:28:45,970 >> אז בקיצור, אנחנו לתקן כאן זה. 697 00:28:45,970 --> 00:28:49,220 עכשיו בואו להפריד שני חלקים אחרים לפני שאנחנו מסתכלים על השורה האחרונה של קוד 698 00:28:49,220 --> 00:28:50,170 בתכנית זו. 699 00:28:50,170 --> 00:28:52,170 קבל int החיובי. 700 00:28:52,170 --> 00:28:54,450 בצד השמאל של שלה מילה היא המילה int. 701 00:28:54,450 --> 00:28:56,860 מה זה מסמל לדעתך? 702 00:28:56,860 --> 00:28:58,900 עד כה יש לנו בעיקר ראו חלל. 703 00:28:58,900 --> 00:28:59,400 כן? 704 00:28:59,400 --> 00:29:01,810 >> קהל: זה הסוג של משתנה שאתה שואל על. 705 00:29:01,810 --> 00:29:04,550 >> 1 SPEAKER: כן זה הסוג של, תן לי לא אומר משתנה, אבל הסוג של ערך 706 00:29:04,550 --> 00:29:05,990 שאני מבקש לחזור ל. 707 00:29:05,990 --> 00:29:08,070 ואכן, זה אינטואיטיבי כאן, אני מקווה. 708 00:29:08,070 --> 00:29:08,200 נכון? 709 00:29:08,200 --> 00:29:10,250 אם אתה רוצה לקבל int החיובי, מה זה אתה 710 00:29:10,250 --> 00:29:12,920 רוצה function-- כמו שלנו מתנדב משבוע שעבר 711 00:29:12,920 --> 00:29:15,720 למסור לך בחזרה חתיכה נייר עם int על זה? 712 00:29:15,720 --> 00:29:19,190 וכך אנו כבר צוינו ש מה שנקרא טיפוס החזרה של פונקציה זו 713 00:29:19,190 --> 00:29:20,450 הוא לקבל int החיובי. 714 00:29:20,450 --> 00:29:22,990 אם אנחנו לא רוצים שזה לחזור כל דבר, אתה אומר חלל. 715 00:29:22,990 --> 00:29:25,270 אם אתה רוצה שזה יחזור מחרוזת, אתה אומר מחרוזת. 716 00:29:25,270 --> 00:29:27,310 אם אתה רוצה שזה יחזור לצוף, אתה אומר לצוף. 717 00:29:27,310 --> 00:29:30,440 אבל רק אחד שחל כאן מבחינה לוגית, כי אני משתמש int גט, 718 00:29:30,440 --> 00:29:34,130 למרות שאני מגביל אותו ל ערכים חיוביים, הוא להחזיר int. 719 00:29:34,130 --> 00:29:38,380 >> אז להפך, מה זה אומר שיש חלל בסוגריים? 720 00:29:38,380 --> 00:29:40,130 מה לעשות הסוגריים בדרך כלל להגדיר? 721 00:29:40,130 --> 00:29:40,588 כן? 722 00:29:40,588 --> 00:29:42,880 >> קהל: זה אומר פונקציה של לא ממש מקבל את זה. 723 00:29:42,880 --> 00:29:44,650 >> 1 דובר: זה אומר פונקציה של לא ממש מקבל את מה ש? 724 00:29:44,650 --> 00:29:45,430 >> קהל: קלט. 725 00:29:45,430 --> 00:29:46,763 >> 1 מרצה: קלט, שהיא. 726 00:29:46,763 --> 00:29:49,870 אז אכן, אם סוגריים כאן תציין חלל, 727 00:29:49,870 --> 00:29:51,650 זה רק אומר שאני לא רוצה כל קלט. 728 00:29:51,650 --> 00:29:53,269 אני אתמודד עם הבעיה בעצמי. 729 00:29:53,269 --> 00:29:55,810 ואכן, אין לך ל תגיד לי מקבל שום דבר חיובי int. 730 00:29:55,810 --> 00:29:59,630 אתה פשוט אומר, לקבל int החיובי, וש הפונקציה ללכת ולעשות את הדבר שלו. 731 00:29:59,630 --> 00:30:02,970 >> אבל יש כבר טריק קטן לי שיחק כאן כל הזמן הזה 732 00:30:02,970 --> 00:30:04,970 כדי לוודא את הקוד הזה הידור. 733 00:30:04,970 --> 00:30:09,620 שים לב שint-- לקבל חיובי void-- int הוא בקו 27. 734 00:30:09,620 --> 00:30:14,530 אבל מסיבה כלשהי לכאורה מוזרה זה גם כאן בקו 16. 735 00:30:14,530 --> 00:30:18,530 ורק למען סדר טוב אני חוזר זה כך שזה זהה בצורה מושלמת. 736 00:30:18,530 --> 00:30:21,640 ואני כבר אמרתי אב הטיפוס עם תגובה שורה אחת קטנה. 737 00:30:21,640 --> 00:30:28,850 מה קורה אם אני מוחק את זה, ו עכשיו שידור חוזר לעשות פונקצית 1, להיכנס. 738 00:30:28,850 --> 00:30:29,350 אופס. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 חכה דקה. 741 00:30:33,110 --> 00:30:34,764 איפה הכרטיסייה שלי? 742 00:30:34,764 --> 00:30:35,263 הא? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 המתנה. 745 00:30:39,620 --> 00:30:41,570 הפוך פונקצית 1. 746 00:30:41,570 --> 00:30:42,150 יש לנו ללכת. 747 00:30:42,150 --> 00:30:42,310 אוקיי. 748 00:30:42,310 --> 00:30:43,400 לא הציל אותו כראוי. 749 00:30:43,400 --> 00:30:45,220 אז, אני חושב שיש קצת באג כאן שבו אני לא 750 00:30:45,220 --> 00:30:46,636 לראות את שם הכרטיסייה באותו הרגע. 751 00:30:46,636 --> 00:30:47,940 אז מה קורה כאן? 752 00:30:47,940 --> 00:30:52,210 הצהרה סמויה של פונקציה לקבל int החיובי הוא לא חוקי בC99. 753 00:30:52,210 --> 00:30:53,940 כל כך מבלבל שוב. 754 00:30:53,940 --> 00:30:55,200 אז מה הוא מעיד זו של? 755 00:30:55,200 --> 00:30:57,287 ובכן, מתברר ש C הוא די טיפשי. 756 00:30:57,287 --> 00:30:59,912 ובכן, זה תכנות שפה, או לייתר דיוק מהדר הוא. 757 00:30:59,912 --> 00:31:02,940 זה רק יודע מה יש לך לימד אותו, וזה רק 758 00:31:02,940 --> 00:31:05,640 הולך יודע משהו אם אתה לימדת אותו לפני. 759 00:31:05,640 --> 00:31:07,960 במילים אחרות, ב עיקרי כרגע, אני 760 00:31:07,960 --> 00:31:10,900 מנסה לקרוא לפונקציה נקרא לקבל int החיובי. 761 00:31:10,900 --> 00:31:14,120 אבל מהדר לא הולך שם לב שמקבל int החיובי 762 00:31:14,120 --> 00:31:16,500 קיים עד קו 26. 763 00:31:16,500 --> 00:31:21,360 ואז מה עושה מהדר הוא רק שגיאות ברגע שהיא מגיעה לקו 17, 764 00:31:21,360 --> 00:31:23,700 אומר הצהרה סמויה של מקבל int החיובי, ש 765 00:31:23,700 --> 00:31:27,740 היא רק דרך מפוארת של אומר, אני לא יודע מה יקבל int החיובי הוא עדיין. 766 00:31:27,740 --> 00:31:31,240 >> שפות אחרות כמו Java ו פייתון ורובי אולי להסתכל קדימה. 767 00:31:31,240 --> 00:31:32,240 C לא. 768 00:31:32,240 --> 00:31:35,110 וכך הדרך בה אנו לתקן זו אחת משתי דרכים. 769 00:31:35,110 --> 00:31:40,160 כל אחד, אם הבעיה היא שיקבל int החיובי לא ראה לפני כן, 770 00:31:40,160 --> 00:31:42,150 טוב, תן לי רק להעביר אותה לחלק העליון. 771 00:31:42,150 --> 00:31:43,650 זה יהיה לתקן את הבעיה. 772 00:31:43,650 --> 00:31:46,790 אבל בדרך כלל, זה טכניקה טובה יותר נחשב 773 00:31:46,790 --> 00:31:50,220 לשים הפונקציה העיקרית שלך במאוד עליון, כך שאדם קורא את הקוד שלך 774 00:31:50,220 --> 00:31:52,710 יודע מה התכנית עושה, בגלל עיקרי הוא לא קבר את כל 775 00:31:52,710 --> 00:31:53,960 הדרך בתחתית או באמצע. 776 00:31:53,960 --> 00:31:55,130 זה בחלקו העליון. 777 00:31:55,130 --> 00:31:56,410 כך שלא מרגיש אידיאלי. 778 00:31:56,410 --> 00:31:58,326 ולמעשה אתה יכול לקבל למצבים שבם 779 00:31:58,326 --> 00:32:00,820 אם שיחות פונקציה אחת אחר, שקורא אחר, 780 00:32:00,820 --> 00:32:04,630 אתה יכול להיכנס לנושא שבו לא יכול ללכת מעל השני, באופן הגיוני. 781 00:32:04,630 --> 00:32:05,920 זה פשוט לא אפשרי. 782 00:32:05,920 --> 00:32:09,290 >> וכך בדרך לעבודה סביב זה רק לקחת 783 00:32:09,290 --> 00:32:13,200 החתימה של הפונקציה, כך לspeak-- הקו הראשון שבו זה declared-- 784 00:32:13,200 --> 00:32:16,850 ופשוט להעתיק, להדביק אותו ב עליון, אבל לא עם braces-- המתולתל 785 00:32:16,850 --> 00:32:17,980 רק עם נקודה-פסיק. 786 00:32:17,980 --> 00:32:20,840 זה כמו רמז קטן של מה לבוא. 787 00:32:20,840 --> 00:32:26,630 ואכן, כל זה זמן שבו ראו דברים כמו io.h הסטנדרטי 788 00:32:26,630 --> 00:32:33,040 וcs50.h, באופן דומה, בנקודה אלה קבצי h יש אבות טיפוס אחרים. 789 00:32:33,040 --> 00:32:35,250 ואנו רואים כי לפני זמן רב. 790 00:32:35,250 --> 00:32:39,340 >> אז בקיצור, כאשר יש לך תכנית בקובץ עם פונקציות מרובות 791 00:32:39,340 --> 00:32:42,300 חוץ מזה עיקרי, אתה כמעט תמיד רוצה להכריז עליהם 792 00:32:42,300 --> 00:32:45,360 רק בדרך שלהם ראשון קו, ואחריו פסיק, 793 00:32:45,360 --> 00:32:48,410 בחלקו העליון של הקובץ. 794 00:32:48,410 --> 00:32:50,460 זה היה הרבה בבת אחת. 795 00:32:50,460 --> 00:32:53,130 יש שאלות? 796 00:32:53,130 --> 00:32:53,920 יש שאלות? 797 00:32:53,920 --> 00:32:54,530 בסדר. 798 00:32:54,530 --> 00:32:59,760 >> אז בואו נעבור על לאחר מכן למשהו כמו שיעול. 799 00:32:59,760 --> 00:33:00,260 אה. 800 00:33:00,260 --> 00:33:00,570 איך הולם. 801 00:33:00,570 --> 00:33:01,220 בסדר. 802 00:33:01,220 --> 00:33:02,260 שיעול. 803 00:33:02,260 --> 00:33:05,080 אז הנה הוא ג יישום תכנית 804 00:33:05,080 --> 00:33:07,560 שעשינו לפני כמה ימים ב שריטה שמאוד פשוט רק 805 00:33:07,560 --> 00:33:08,691 אומר שיעול, שיעול, שיעול. 806 00:33:08,691 --> 00:33:09,190 בסדר. 807 00:33:09,190 --> 00:33:11,136 ומישהו אמר כמה לפני ימים שיש 808 00:33:11,136 --> 00:33:12,760 דרך של ניקוי קוד זה כבר. 809 00:33:12,760 --> 00:33:12,880 בסדר? 810 00:33:12,880 --> 00:33:15,440 ברגע שאתה מעתיק ו הדבקת עיצוב כנראה רע. 811 00:33:15,440 --> 00:33:18,725 לפחות פעם אחת שנגיע לארבעה או חמישה או 20 שיעול, זה מרגיש רע בפועל. 812 00:33:18,725 --> 00:33:19,850 אנחנו פשוט לשמור עותק, הדבקה. 813 00:33:19,850 --> 00:33:22,213 מה הפתרון הברור לניקוי תכנית את זה? 814 00:33:22,213 --> 00:33:23,120 >> קהל: Loop. 815 00:33:23,120 --> 00:33:23,350 >> 1 SPEAKER: כן. 816 00:33:23,350 --> 00:33:24,070 אז להשתמש בלולאה. 817 00:33:24,070 --> 00:33:27,697 ואנחנו יכולים להשתמש בלולאה ל, ואילו לולאה, כל מספר של גישות. 818 00:33:27,697 --> 00:33:29,780 ואכן, זה מה ש אנחנו עושים בגרסה אחת כאן. 819 00:33:29,780 --> 00:33:32,250 במקום שלשכתב אותו בגרסה אחת של cough.c 820 00:33:32,250 --> 00:33:35,170 להיות רק שיעול בתוך לולאה ל. 821 00:33:35,170 --> 00:33:38,240 בסדר, אבל יש הזדמנות עכשיו לסוג של התחלה 822 00:33:38,240 --> 00:33:41,630 לעצב את זה קצת יותר כמו השיעור שלימדנו לפני רגע, 823 00:33:41,630 --> 00:33:46,190 אשר הוא זה-- מניח שאני רוצה כדי ליצור פונקציה שנקראת שיעול, 824 00:33:46,190 --> 00:33:49,730 הבה נבחן לרגע מה זה הולך להיראות. 825 00:33:49,730 --> 00:33:51,900 אז אם אני רוצה משהו להשתעל, אני רק צריך 826 00:33:51,900 --> 00:33:53,800 להשתמש ו הדפסה בתוך הפונקציה. 827 00:33:53,800 --> 00:33:55,030 ואכן אני. 828 00:33:55,030 --> 00:33:56,990 ואכן, כל זה זמן, כל פעם שאתה 829 00:33:56,990 --> 00:33:59,000 הדפסת משהו המסך, מתכנת 830 00:33:59,000 --> 00:34:00,610 היה קורא לזה תופעת לוואי. 831 00:34:00,610 --> 00:34:02,990 זה לא לי והושיט בחזרה מישהו ערך. 832 00:34:02,990 --> 00:34:06,170 זה אני לוקח חלק בפעולה שעשוי להיות מבחינה ויזואלית ברור. 833 00:34:06,170 --> 00:34:10,672 אבל שיעול פונקציה זו, אין זה לחזור דבר מבוסס על השורה הראשונה שלה? 834 00:34:10,672 --> 00:34:12,880 לא, כי סוג החזרתו בטל, שרק אומר 835 00:34:12,880 --> 00:34:14,250 זה לא נתן לי שום דבר בחזרה. 836 00:34:14,250 --> 00:34:16,791 זה יכול לעשות משהו מבחינה ויזואלית, אבל זה לא נתן לי 837 00:34:16,791 --> 00:34:18,639 לגבות פיסת נייר כמו בשבוע שעבר. 838 00:34:18,639 --> 00:34:21,310 >> האם זה צריך כל קלט? 839 00:34:21,310 --> 00:34:21,810 מס ' 840 00:34:21,810 --> 00:34:23,134 ואז זה מבוטל גם כאן. 841 00:34:23,134 --> 00:34:25,600 אז גם זה סוג של על-הנדסת בעיה זו. 842 00:34:25,600 --> 00:34:26,099 נכון? 843 00:34:26,099 --> 00:34:28,820 אני כבר עשיתי את התכנית יותר מורכבים יותר קווים, של קוד, 844 00:34:28,820 --> 00:34:31,889 אני לא עשיתי את זה כל זה יותר פונקציונלי, אבל 845 00:34:31,889 --> 00:34:34,210 יהיה קרש קפיצה, אולי, לרחב יותר 846 00:34:34,210 --> 00:34:36,830 הקשר עם קוד מסובך יותר. 847 00:34:36,830 --> 00:34:38,150 אבל מה עם זה? 848 00:34:38,150 --> 00:34:42,050 מה לי וdone-- רק מעיף מבט ב זה בלי להסתכל על התגובה 849 00:34:42,050 --> 00:34:46,076 בחלקו העליון של file-- מה שיש לי אני ביסודו נעשה כאן עם השיעול שלי 850 00:34:46,076 --> 00:34:47,409 יישום זה שונה? 851 00:34:47,409 --> 00:34:48,327 כן, בגב? 852 00:34:48,327 --> 00:34:51,384 >> קהל: תעשה את זה כדי שתוכל יש אופי לכבות. 853 00:34:51,384 --> 00:34:52,050 1 SPEAKER: כן. 854 00:34:52,050 --> 00:34:53,270 אז זה מרגיש סוג של נחמד. 855 00:34:53,270 --> 00:34:53,389 נכון? 856 00:34:53,389 --> 00:34:56,600 זה כמו הוספת תכונה לך תכנית או הפונקציה שלך, במקרה זה. 857 00:34:56,600 --> 00:34:57,830 זה עדיין מחזיר שום דבר. 858 00:34:57,830 --> 00:35:00,538 אולי יש לו תופעת לוואי חזותי, כי זה מתקשר F הדפסה. 859 00:35:00,538 --> 00:35:02,800 אבל עכשיו יש לי parametrized הפונקציה, ש 860 00:35:02,800 --> 00:35:06,470 אומר שאני שציינת נלקחתי קלט של int הסוג וקורא לזה n, 861 00:35:06,470 --> 00:35:08,510 אבל אני יכול לקרוא לזה כל מה שאני רוצה. 862 00:35:08,510 --> 00:35:11,550 למעשה, זה יכול להיות רק פעמים כדי להיות עוד יותר מפורש. 863 00:35:11,550 --> 00:35:13,310 ואז אני יכול פשוט לשנות את זה כאן. 864 00:35:13,310 --> 00:35:16,450 אבל הנקודה היא שזה איך אני ליצור פונקציה שלוקחת קלט. 865 00:35:16,450 --> 00:35:19,530 ואם אתה זוכר מרפרף דרך אולי מקוון באחד 866 00:35:19,530 --> 00:35:23,000 של ההליכה-throughs, רביעי ודוגמא שיעול סופית, 867 00:35:23,000 --> 00:35:27,150 תוכל להבחין כאן אני כללי סוג further-- הקוד שלי של מופשט 868 00:35:27,150 --> 00:35:27,690 אותו עוד יותר. 869 00:35:27,690 --> 00:35:31,390 כמו שיעול ועיטוש, שניהם על כמו להגיד משהו או עושים 870 00:35:31,390 --> 00:35:32,330 איזה קול. 871 00:35:32,330 --> 00:35:34,725 שמור יהיה מתאים לחסום סריטות. 872 00:35:34,725 --> 00:35:37,350 ואז מה שעשיתי בגרסה זו, שבו אנו יכולים רק מבט חטוף ב, 873 00:35:37,350 --> 00:35:43,170 הוא שיעול הוא פשוט כמו להגיד, [שיעול], שיעול, ובינתיים, התעטשות היא 874 00:35:43,170 --> 00:35:44,570 כמו לומר, [אצ'ו]. 875 00:35:44,570 --> 00:35:46,900 ואז אני כבר להכליל יישומם של אלה 876 00:35:46,900 --> 00:35:48,970 על ידי החברה יישום פונקציה גנרית זה, 877 00:35:48,970 --> 00:35:51,490 אומר, שהוא מעניין למטרות של היום 878 00:35:51,490 --> 00:35:54,300 רק משום שהיא עדיין אין סוג תמורה. 879 00:35:54,300 --> 00:35:56,398 אבל כמה כניסות זה יש? 880 00:35:56,398 --> 00:35:56,981 קהל: שני. 881 00:35:56,981 --> 00:35:57,430 SPEAKER 1: שני. 882 00:35:57,430 --> 00:35:59,263 ולכן אם אתה רוצה לקחת בשתי טענות, 883 00:35:59,263 --> 00:36:00,710 רק להפריד ביניהם בפסיק. 884 00:36:00,710 --> 00:36:03,110 ואם אתה רוצה אז קורא לפונקציה זו, 885 00:36:03,110 --> 00:36:05,800 שמו לב שאתה רק קורא למשל, ציטוט, סוף ציטוט, 886 00:36:05,800 --> 00:36:09,090 לטענה הראשונה, נפוץ n, לטענה השנייה. 887 00:36:09,090 --> 00:36:12,130 אז שוב, אנחנו רק צריכים עכשיו אבני בניין, כך שבעצם אנחנו יכולים 888 00:36:12,130 --> 00:36:15,686 ליישם חלק מהפונקציות שלנו. 889 00:36:15,686 --> 00:36:16,570 בסדר. 890 00:36:16,570 --> 00:36:19,690 כל שאלות על אלה? 891 00:36:19,690 --> 00:36:22,400 >> אז עכשיו בואו לקלף שכבה אם כן. 892 00:36:22,400 --> 00:36:24,840 והמטרה, בסופו, היא קבוצת הבעיה של השבוע הבא 893 00:36:24,840 --> 00:36:27,710 הולך להיות על cryptogrophy-- האמנות של ערבול מידע. 894 00:36:27,710 --> 00:36:30,640 ובאופן ספציפי, המידע יהיה לך להצפין או לפענח 895 00:36:30,640 --> 00:36:31,605 הולך להיות טקסט. 896 00:36:31,605 --> 00:36:33,980 וכך זה סוג של מזמין השאלה היום כמו גם, 897 00:36:33,980 --> 00:36:38,480 מה קורה מתחת למכסת המנוע עם טקסט שחורגים מהשבוע ASCII אפס, 898 00:36:38,480 --> 00:36:40,730 ואיך אנחנו יכולים למעשה להתחיל לתפעל אותו? 899 00:36:40,730 --> 00:36:43,070 אז הנה הוא שמו של Zamyla. 900 00:36:43,070 --> 00:36:47,380 ובטקסט, שעשוי להיות הוזן כלפונקצית מחרוזת גט. 901 00:36:47,380 --> 00:36:52,540 ומתחיל עכשיו, כשאתה רואה מחרוזת כמו זה-- Z--M-Y-L-זה-- 902 00:36:52,540 --> 00:36:56,550 מתחיל לחשוב על זה כאילו כל תווים אלה הוא בתיבה שלה 903 00:36:56,550 --> 00:36:57,050 שלו. 904 00:36:57,050 --> 00:36:59,460 ואכן, בשבוע זה זמן, כל אחד מהתיבות הבאות 905 00:36:59,460 --> 00:37:04,280 הוא הולך לייצג באופן ספציפי מאוד בלוק של memory-- נשיכה של זיכרון. 906 00:37:04,280 --> 00:37:07,050 אז כל אחד מהמכתבים האלה, סופו של דבר, ייצג 8 סיביות. 907 00:37:07,050 --> 00:37:10,560 ואנחנו באמת תראו מה קורה במתחת למכסת המנוע במחשב שלי. 908 00:37:10,560 --> 00:37:13,440 >> אבל לזה לא מספיק רק להסתכל על Zamyla 909 00:37:13,440 --> 00:37:17,520 דרך העדשה, לפיה כל אחד מ המכתבים האלה הוא בתיבה משלו. 910 00:37:17,520 --> 00:37:22,697 ויפה מספיק ב- C שביכולתנו לגשת לכל תיבות אלה ישירות. 911 00:37:22,697 --> 00:37:25,530 אז אם אתם רוצים לקבל את ראשון מכתב של שמה, סופר קל בג 912 00:37:25,530 --> 00:37:28,410 אם אתה רוצה לקבל אחרון מכתב, סופר קל, כמו גם 913 00:37:28,410 --> 00:37:30,240 עם חתיכת התחביר חדש. 914 00:37:30,240 --> 00:37:36,250 >> אז אני הולך קדימה לCS50 IDE ולפתוח את המחרוזת אפס נקודה ג 915 00:37:36,250 --> 00:37:40,270 ובדוגמה זו כאן, יש כמה דברים חדשים קורה. 916 00:37:40,270 --> 00:37:44,360 אז קודם כל בשורה 19, יש לנו ראה מחרוזת גט before-- זה. 917 00:37:44,360 --> 00:37:49,840 אז רק כבדיקת שפיות מהירה, אם מישהו יכול להציע עד מילולי 918 00:37:49,840 --> 00:37:52,662 ההסבר של הדיוט של מה קורה בקו 19. 919 00:37:52,662 --> 00:37:55,370 סתם לתרגם את זה ל אנגלית ששותפה לא בCS50 920 00:37:55,370 --> 00:37:56,416 אפשר להבין. 921 00:37:56,416 --> 00:37:56,916 כן. 922 00:37:56,916 --> 00:37:59,749 >> קהל: יש לי קלט המשתמש מחרוזת ולאחסן אותו בים משתנה. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 SPEAKER 1: טוב. 925 00:38:02,600 --> 00:38:05,579 יש לי קלט משתמש מחרוזת ולאחסן אותו בים משתנה. 926 00:38:05,579 --> 00:38:06,120 זה מצוין. 927 00:38:06,120 --> 00:38:08,090 אז ביד ימין צד, אנחנו קוראים למחרוזת גט. 928 00:38:08,090 --> 00:38:10,340 שמחזיר ערך שלא לקבל שהוקצו 929 00:38:10,340 --> 00:38:14,230 מצד הימני לשמאלי צד לים נקרא משתנה זה 930 00:38:14,230 --> 00:38:15,950 נועד לאחסן מחרוזת. 931 00:38:15,950 --> 00:38:16,800 בדיוק. 932 00:38:16,800 --> 00:38:20,000 >> אז עכשיו קו 22, ל התגובה בקו 21, 933 00:38:20,000 --> 00:38:22,780 ברור שמדפיס מחרוזת ש דמות אחת בכל שורה. 934 00:38:22,780 --> 00:38:23,740 אבל איך? 935 00:38:23,740 --> 00:38:27,040 אז קודם כל, אנחנו לאתחלי 0. 936 00:38:27,040 --> 00:38:31,061 ואז איך אנחנו מגיעים ל סוף השם של Zamyla? 937 00:38:31,061 --> 00:38:32,810 ובכן, בסוף שמו של Zamyla, שיכולתי 938 00:38:32,810 --> 00:38:38,151 להקליד ידני את התו האחרון של שמה איכשהו, או מספר זה. 939 00:38:38,151 --> 00:38:38,650 נכון? 940 00:38:38,650 --> 00:38:43,500 אם נחזור כאן-- Z--M-L-- Y-L-זה-- כדי שאוכל להקליד. 941 00:38:43,500 --> 00:38:47,340 מה המדד של המכתב האחרון של Zamyla? 942 00:38:47,340 --> 00:38:52,517 אם זה 0-- מדבר כמו programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 אני heard-- כך אכן, המכתב האחרון בשמו של Zamyla הוא השישי, 944 00:38:56,570 --> 00:38:58,890 אבל אם אנו סופרים מ0, זה הולך להיות מספר 5. 945 00:38:58,890 --> 00:39:01,320 אז לזכור את זה כאן. 946 00:39:01,320 --> 00:39:04,929 >> מתברר שיש פונקציה ב C נקרא strlen, ובחזרה ביום 947 00:39:04,929 --> 00:39:06,720 ועד עצם היום הזה עדיין, הרבה מתכנתים 948 00:39:06,720 --> 00:39:09,524 לבחור לסנכרן שמות להם פונקציות שנשמעות כמו המילים 949 00:39:09,524 --> 00:39:10,440 הם מנסים לומר. 950 00:39:10,440 --> 00:39:12,590 אז strlen הוא אורך מחרוזת. 951 00:39:12,590 --> 00:39:18,168 ואז מה יהיה אורך מחרוזת של S לחזור כאשר Zamyla הוא הקלט? 952 00:39:18,168 --> 00:39:19,569 >> קהל: חמש. 953 00:39:19,569 --> 00:39:22,090 >> 1 מרצה: Z--M-Y-L. שש. 954 00:39:22,090 --> 00:39:22,590 נכון? 955 00:39:22,590 --> 00:39:23,940 מה אורכו של שמו של Zamyla? 956 00:39:23,940 --> 00:39:24,440 נכון? 957 00:39:24,440 --> 00:39:26,240 ורק במציאות, שש אותיות. 958 00:39:26,240 --> 00:39:26,740 נכון? 959 00:39:26,740 --> 00:39:28,940 ואז מה זה אומר ללולאה שלנו? 960 00:39:28,940 --> 00:39:32,130 אנחנו הולכים ללכת מ 0 עד שש, ש 961 00:39:32,130 --> 00:39:33,650 הוא הולך לתת לנו חמש חזרות. 962 00:39:33,650 --> 00:39:34,890 מה שאנחנו עושים בכל איטרציה? 963 00:39:34,890 --> 00:39:36,870 ובכן, C אחוזים, מישהו ניחש היום האחר, 964 00:39:36,870 --> 00:39:38,710 משמעות מיקום עבור מה? 965 00:39:38,710 --> 00:39:39,335 >> קהל: תו. 966 00:39:39,335 --> 00:39:40,293 1 SPEAKER: רק char. 967 00:39:40,293 --> 00:39:42,877 אז character-- אחת לא מספר תווים כמו מחרוזת. 968 00:39:42,877 --> 00:39:45,251 ואז הנה השורה החדשה שיש לנו הדפסה החוצה. 969 00:39:45,251 --> 00:39:46,580 ואז הנה התחביר החדש. 970 00:39:46,580 --> 00:39:51,130 אם אתה רוצה להדפיס את i-ה דמות במחרוזת S, כביכול, 971 00:39:51,130 --> 00:39:54,060 אתה יכול פשוט לומר שמו של S המחרוזת, 972 00:39:54,060 --> 00:39:58,230 ולאחר מכן פתח סוגריים מרובעים, ו אז סגר הסוגר מרובע, עם i 973 00:39:58,230 --> 00:39:58,780 האמצע. 974 00:39:58,780 --> 00:40:01,430 וזה סוג של נחמד שב זה נראה כמו סוג של ריבוע 975 00:40:01,430 --> 00:40:06,210 בדיוק כמו הריבועים שבי Zamyla של דמויות קיימות בתמונה שיש. 976 00:40:06,210 --> 00:40:09,970 >> אז אם אני באמת להפעיל את זה עכשיו, בואו לראות מה קורה. 977 00:40:09,970 --> 00:40:15,190 הפוך נטוי 0 נקודת מחרוזת מחרוזת 0, ולאחר מכן אני 978 00:40:15,190 --> 00:40:16,720 הולך להקליד את שמו של Zamyla. 979 00:40:16,720 --> 00:40:19,428 אין הנחיה, כי אני לא להשתמש ו הדפסה, אבל זה בסדר. 980 00:40:19,428 --> 00:40:20,660 אני רק יודע מה לעשות. 981 00:40:20,660 --> 00:40:23,240 ואכן, זה מדפיס שמו של Zamyla, אחת בכל שורה. 982 00:40:23,240 --> 00:40:25,760 >> עכשיו בואו להיות קצת פזיז. 983 00:40:25,760 --> 00:40:28,461 נניח שאני לא יודע על strlen וחשבתי, 984 00:40:28,461 --> 00:40:31,460 בסדר, אף אחד לא הולך לי שם גדול יותר כמו 50 תווים. 985 00:40:31,460 --> 00:40:36,360 בואו נלך קדימה ולהדר מחדש זה ולהפעיל מחדש את זה, ולאחר מכן הקלד בZamyla 986 00:40:36,360 --> 00:40:37,160 שוב. 987 00:40:37,160 --> 00:40:40,850 מבחינה הגיונית, מה הוא תכנית הולכת לנסות להדפיס? 988 00:40:40,850 --> 00:40:49,545 Z--M-Y-L-אז כמו 45 בתים לא ידועים של זיכרון. 989 00:40:49,545 --> 00:40:51,670 ואכן, אנחנו נחזור לרעיון הזה של זיכרון. 990 00:40:51,670 --> 00:40:54,180 אבל רק מבחינה לוגית, אם שמו של Zamyla הוא ארוך הזה, 991 00:40:54,180 --> 00:40:56,450 כמו לכל התמונה כאן, מה שאנחנו אומרים 992 00:40:56,450 --> 00:40:59,810 הוא להמשיך בהדפסה, להמשיך בהדפסה, לשמור הדפסה, להמשיך בהדפסה, להמשיך בהדפסה, 993 00:40:59,810 --> 00:41:03,781 כל הדרך לאופי ה -50, אשר מי יודע מה הולך לקרות. 994 00:41:03,781 --> 00:41:05,030 אז בואו באמת נסתכל. 995 00:41:05,030 --> 00:41:06,720 בואו נקליד בZamyla. 996 00:41:06,720 --> 00:41:07,250 מעניין. 997 00:41:07,250 --> 00:41:08,190 יש לנו מזל. 998 00:41:08,190 --> 00:41:09,700 רק חבורה שלמה של חלל לבן. 999 00:41:09,700 --> 00:41:09,930 אה. 1000 00:41:09,930 --> 00:41:11,120 יש דמות אחת פאנקי. 1001 00:41:11,120 --> 00:41:14,577 זה נראה כמו סוג של שאלה מוזרה לסמן שם, אבל יש שם של Zamyla. 1002 00:41:14,577 --> 00:41:15,660 בואו לקבל באמת פזיז. 1003 00:41:15,660 --> 00:41:20,000 מה דעתך עלינו להדפיס 500 בלוקים אל הלא הנודע? 1004 00:41:20,000 --> 00:41:24,380 בואו נלך קדימה ולהפוך את זה הפעל מחדש, כמו גם ולאחר מכן. 1005 00:41:24,380 --> 00:41:27,980 ובואו מסך מלא זה, כי אנחנו צריכים לראות יותר מקום. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 לי מזל שוב. 1008 00:41:31,830 --> 00:41:33,070 >> מעז אנחנו מקבלים פזיזים יותר? 1009 00:41:33,070 --> 00:41:36,070 בואו לקבל פזיז יותר. 1010 00:41:36,070 --> 00:41:39,350 50,000 תווים. 1011 00:41:39,350 --> 00:41:41,390 זה הכי בוודאי לא רעיון טוב. 1012 00:41:41,390 --> 00:41:41,890 בסדר. 1013 00:41:41,890 --> 00:41:42,990 הפוך מחרוזת 0. 1014 00:41:42,990 --> 00:41:44,720 זה יהיה ההדגמה האחרונה שלנו. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 איכס. 1017 00:41:48,632 --> 00:41:50,010 איכס. 1018 00:41:50,010 --> 00:41:50,680 אוקיי. 1019 00:41:50,680 --> 00:41:54,407 אז הזיכרון שלי הוא באמת ריק עכשיו, שהוא למעשה סוג של נוח. 1020 00:41:54,407 --> 00:41:55,990 מה שאני מנסה להשיג צריכה-- בסדר. 1021 00:41:55,990 --> 00:41:57,614 ועכשיו אני רק הולך לקבל פזיז. 1022 00:41:57,614 --> 00:41:58,570 500,000. 1023 00:41:58,570 --> 00:42:03,860 של Make-- לתת מסך מלא זה. 1024 00:42:03,860 --> 00:42:04,990 הזן. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 יש לנו ללכת. 1028 00:42:13,390 --> 00:42:15,610 יש לי מה שאין לי מושג הוא, אבל זה נשמע רע. 1029 00:42:15,610 --> 00:42:16,110 בסדר. 1030 00:42:16,110 --> 00:42:20,322 ואכן, עד מהרה, אם אתה בין כמה ברי מזל בשעתי עבודה 1031 00:42:20,322 --> 00:42:22,780 ובבעיה להגדיר אחד, אתה ייתכן מאוד להיתקל זה. 1032 00:42:22,780 --> 00:42:25,490 אשמת פילוח בעצם עושה יש משמעות מוגדרת היטב. 1033 00:42:25,490 --> 00:42:28,450 זה אומר איזה טעות הנוגע לקטע של זיכרון. 1034 00:42:28,450 --> 00:42:30,490 וגם במונחים של ההדיוט, זה אומר שאנחנו נגענו 1035 00:42:30,490 --> 00:42:34,780 memory-- השתמשנו RAM במחשב שלי שלא צריך יש לי גישה ל. 1036 00:42:34,780 --> 00:42:37,050 וזה מה ששניהם חזק וגם מסוכן 1037 00:42:37,050 --> 00:42:39,910 על C הוא שאתה בעצם יש להם גישה בלתי מוגבלת 1038 00:42:39,910 --> 00:42:45,910 לשלמות של הזיכרון של התכנית שלך או בתים או זיכרון RAM, לייתר דיוק. 1039 00:42:45,910 --> 00:42:49,510 >> אז למרות ששמו של Zamyla הוא ארוך רק שישה תווים, 1040 00:42:49,510 --> 00:42:51,450 אני עדיין יכול ללכת לשום מקום בזיכרון שאני רוצה. 1041 00:42:51,450 --> 00:42:53,491 וכמו בצד, אם יש לך אי פעם לקרוא כמה מאמר 1042 00:42:53,491 --> 00:42:55,610 לאורך השנים על כמה שרת או תכנית 1043 00:42:55,610 --> 00:42:58,654 מקבל סדוק או פרוצים זה נצל ממשהו 1044 00:42:58,654 --> 00:43:00,820 נקרא הצפת מאגר לנצל את זה בעצם אנחנו נעלה את 1045 00:43:00,820 --> 00:43:04,970 לדבר על בכמה שבועות, זה בדרך כלל מתייחס לאיכשהו הטעיית 1046 00:43:04,970 --> 00:43:09,090 מחשב להולך טוב מעבר לגבולות זיכרון 1047 00:43:09,090 --> 00:43:11,410 שיש לו, ו למצוא משהו עסיסי 1048 00:43:11,410 --> 00:43:13,530 שבmemory-- סיסמא, אולי, דרך 1049 00:43:13,530 --> 00:43:16,990 לעקוף כמה מספר סידורי לבדוק, או רק בדרך כלל מסוגל 1050 00:43:16,990 --> 00:43:20,360 להערים על המחשב מבצע קוד שלא נועד. 1051 00:43:20,360 --> 00:43:22,360 אבל בואו נחזור ל מציאות לרגע 1052 00:43:22,360 --> 00:43:24,550 שבו בתכנית זו הייתה מיושם עם strlen, 1053 00:43:24,550 --> 00:43:26,110 ולהציג את הדבר אחד כאן. 1054 00:43:26,110 --> 00:43:30,030 מה חדש בין שלושת קווים אלה העליונים? 1055 00:43:30,030 --> 00:43:30,910 >> אז h נקודת מחרוזת. 1056 00:43:30,910 --> 00:43:35,490 מתברר שיש ספרייה בשם מחרוזת דוט H, או ספריית המחרוזת, 1057 00:43:35,490 --> 00:43:38,490 שקובץ הכותרת, אם אפשר לומר כך, הוא h נקודת מחרוזת שנותן לי 1058 00:43:38,490 --> 00:43:40,860 גישה לפונקצית strlen זה. 1059 00:43:40,860 --> 00:43:43,841 אם אני להשמיט ש, מהדר הוא הולך לצעוק עליי בצורה כלשהי. 1060 00:43:43,841 --> 00:43:44,590 אבל אתה יודע מה? 1061 00:43:44,590 --> 00:43:46,090 עכשיו בואו לקבל באמת ניואנסים. 1062 00:43:46,090 --> 00:43:50,820 בקו 22, יש משהו נחמד של inefficient-- קשה שנועד, 1063 00:43:50,820 --> 00:43:53,990 arguably-- על הקו הזה של קוד. 1064 00:43:53,990 --> 00:43:56,280 היזכר איך מיושמים ללולאה 1065 00:43:56,280 --> 00:44:00,140 ומה צעדים יקרו שוב ו שוב וagain-- האתחול, 1066 00:44:00,140 --> 00:44:04,110 המצב, את הקוד ש מקבל להורג, אז תוספת 1067 00:44:04,110 --> 00:44:07,880 או השינוי, אז המצב, אז הקוד, אז השינוי, אז 1068 00:44:07,880 --> 00:44:11,280 המצב, אז את הקוד, אז השינוי, וכן הלאה. 1069 00:44:11,280 --> 00:44:15,320 אז מה יכול להיות קצת מדאיג או גרוע עשה כאן? 1070 00:44:15,320 --> 00:44:16,387 כן, בכחול. 1071 00:44:16,387 --> 00:44:18,220 קהל: strlen הוא נקרא פעמים רבות. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 1 SPEAKER: כן. 1074 00:44:21,320 --> 00:44:23,700 אז strlen נקרא פעמים רבות, אבל מה הוא 1075 00:44:23,700 --> 00:44:27,113 אורכו של שמו של Zamyla הפעם הראשונה הלולאה מבצעת? 1076 00:44:27,113 --> 00:44:27,860 >> קהל: שישה. 1077 00:44:27,860 --> 00:44:28,110 >> 1 מרצה: שש. 1078 00:44:28,110 --> 00:44:30,976 ובכן, מה הוא אורכו של שמה בפעם השנייה את הקוד מבצע? 1079 00:44:30,976 --> 00:44:31,432 >> קהל: שישה. 1080 00:44:31,432 --> 00:44:31,890 >> 1 SPEAKER: בסדר. 1081 00:44:31,890 --> 00:44:32,720 זה עדיין שש. 1082 00:44:32,720 --> 00:44:33,220 נכון? 1083 00:44:33,220 --> 00:44:35,260 שמו של Zarla יש לא שינה, גם אם אני מחפש 1084 00:44:35,260 --> 00:44:38,240 בהוא רק חלק מהאותיות בשם שלה. 1085 00:44:38,240 --> 00:44:41,349 וכך את העובדה שאני ביעילות שואל את השאלה הזאת, מה 1086 00:44:41,349 --> 00:44:44,640 אורכו של Zamyla, מה האורך של Zamyla, מה האורך של Zamyla, 1087 00:44:44,640 --> 00:44:47,990 שש פעמים נפרדות, או שבעה אפילו, הוא פשוט טפשים, 1088 00:44:47,990 --> 00:44:50,390 כי זה משתנה תשובה ש. 1089 00:44:50,390 --> 00:44:53,550 ואז מה שאני באמת יכול לעשות הוא זה-- במחרוזת אחת 1090 00:44:53,550 --> 00:44:55,680 יש לי גרסה שולית יותר טובה כאן. 1091 00:44:55,680 --> 00:45:00,110 יניהם-- מחרוזת whoops-- שתי יש לי גרסה שולית יותר טובה בי 1092 00:45:00,110 --> 00:45:05,010 אני עושה זה-- במקום רק אתחולי 0, אני גם בפסיק 1093 00:45:05,010 --> 00:45:07,990 להצהיר על משתנה בשם שני n-- אני לא צריך לומר int שוב. 1094 00:45:07,990 --> 00:45:09,220 אני לא צריך, למעשה. 1095 00:45:09,220 --> 00:45:10,380 אבל אני אומר n. 1096 00:45:10,380 --> 00:45:13,610 ואז אני לאתחל n ל strlen של n, כך שעכשיו 1097 00:45:13,610 --> 00:45:17,110 כמה פעמים אין strlen לקבל להורג בסך הכל? 1098 00:45:17,110 --> 00:45:17,610 רק פעם אחת. 1099 00:45:17,610 --> 00:45:20,257 ואז זה מה שאנחנו אומר מוקדם יותר על עיצוב טוב יותר. 1100 00:45:20,257 --> 00:45:23,090 למעשה פעם אחת את הקוד שלך הוא נכון, חוזר וחושב דרך, 1101 00:45:23,090 --> 00:45:26,820 אני משתמש במעט כ זיכרון או כמה שניות כ 1102 00:45:26,820 --> 00:45:30,409 או אלפיות שנייה של זמן מחשב כ ניתן ליישם כמה בעיה? 1103 00:45:30,409 --> 00:45:32,200 ואני הולך כדי לגלול ורק להזכיר 1104 00:45:32,200 --> 00:45:34,283 שיש אזכור זה של null בגרסה זו, 1105 00:45:34,283 --> 00:45:36,390 אבל אנחנו נחזור לזה לפני זמן רב. 1106 00:45:36,390 --> 00:45:41,010 משום לעכשיו, בואו נסתכל בלאן זה הולך להוביל אותנו. 1107 00:45:41,010 --> 00:45:44,110 אז אחד, מתברר ש עכשיו שיש לנו את היכולת 1108 00:45:44,110 --> 00:45:46,860 להסתכל על תווים בודדים, אנו יכולים למנף משהו 1109 00:45:46,860 --> 00:45:50,807 מהשבוע 0 שהיה מאוד מסתורי ו סוג של לא מעניין באותו הזמן. 1110 00:45:50,807 --> 00:45:53,390 אבל עכשיו, ובמיוחד כאשר אנו להגיע להצפנה בשבוע, 1111 00:45:53,390 --> 00:45:54,820 זה הולך להיות די חזק. 1112 00:45:54,820 --> 00:45:57,450 מתברר שעם קצת ints וצוף types-- נתונים 1113 00:45:57,450 --> 00:46:00,300 ותווים ומחרוזות ו אחר things-- כמה מהם 1114 00:46:00,300 --> 00:46:02,800 ניתן להמיר בקלות למשנהו. 1115 00:46:02,800 --> 00:46:05,840 >> לדוגמא, כאשר אנו מדברים על ASCII זמן ago-- הנה 1116 00:46:05,840 --> 00:46:07,796 האותיות באמצעות M, נקודה, נקודה, 1117 00:46:07,796 --> 00:46:12,530 dot-- אמר שיש מיפוי בין האותיות והמספרים האלה. 1118 00:46:12,530 --> 00:46:14,970 ואכן, זה נכון לאותיות קטנות גם כן. 1119 00:46:14,970 --> 00:46:17,470 אותיות קטנות הוא 97, הון הוא 65. 1120 00:46:17,470 --> 00:46:20,860 ויש מספר בASCII, וזה רק מיפוי זה 1121 00:46:20,860 --> 00:46:23,240 מערכת לכל מכתבים אחרים אלה. 1122 00:46:23,240 --> 00:46:25,030 אז מה זה אומר? 1123 00:46:25,030 --> 00:46:28,390 ובכן, אני הולך קדימה ופתוח עד אמיתי במהירות משהו שנקרא 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, שבם הוא הערות. 1125 00:46:31,240 --> 00:46:33,860 ושוב באינטרנט, אתה תמיד יכול מבט דרך התגובות. 1126 00:46:33,860 --> 00:46:36,180 >> ותסתכל מה זה הולך לעשות. 1127 00:46:36,180 --> 00:46:38,410 אז יש לו פונקציה העיקרית. 1128 00:46:38,410 --> 00:46:41,490 אני כבר בקידוד קשיח המספרים רק ל עכשיו, כי אני יודע מה אני עושה. 1129 00:46:41,490 --> 00:46:42,950 אני יודע מה אני רוצה לראות כאן. 1130 00:46:42,950 --> 00:46:45,220 ואני כבר אותחל אני עד 65. 1131 00:46:45,220 --> 00:46:48,490 ואני סומך על עד 26 אותיות בסך הכל. 1132 00:46:48,490 --> 00:46:52,990 ומה אני הולך להדפיס קו אחד בכל פעם 1133 00:46:52,990 --> 00:46:54,930 אם אתה יכול לפרש זה מודגש קו? 1134 00:46:54,930 --> 00:46:55,970 מה מקבל מודפסת? 1135 00:46:55,970 --> 00:46:56,797 כן. 1136 00:46:56,797 --> 00:46:57,264 >> קהל: האם אתה הולך כדי להדפיס את המכתב ש 1137 00:46:57,264 --> 00:46:59,805 תואם את המפה של ערך מכתב וערך מספר שלם? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 1 SPEAKER: בדיוק. 1140 00:47:01,990 --> 00:47:04,740 אני הולך להדפיס את המכתב מתאים לערך השלם, 1141 00:47:04,740 --> 00:47:06,131 ולהיפך, כדלקמן. 1142 00:47:06,131 --> 00:47:08,880 ובכן זה, מישהו אמר קודם לכן, רק מציין מיקום עבור char. 1143 00:47:08,880 --> 00:47:09,490 זה עדיין הוא. 1144 00:47:09,490 --> 00:47:12,280 זה, כמובן, הוא מציין מיקום לint-- לא קו חדש. 1145 00:47:12,280 --> 00:47:18,140 ועכשיו שם לב, הערך הראשון שלי ש אני חיבור למציין מיקום ש 1146 00:47:18,140 --> 00:47:22,320 לא רק אני שאני אומר, בסוגריים, אני char, 1147 00:47:22,320 --> 00:47:26,700 שchar הסוגריים הוא אומר למהדר, טיפול אני 1148 00:47:26,700 --> 00:47:28,490 לא כמו מה שזה לא יהיה, שהוא מספר. 1149 00:47:28,490 --> 00:47:30,490 להתייחס אליו כדמות ממשית. 1150 00:47:30,490 --> 00:47:34,490 ואילו הערך השני אני פקיקה in-- אני- צריך להיות רק מספר. 1151 00:47:34,490 --> 00:47:38,140 >> אז אם אני לקמפל program-- זה אז זה עושה ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 ASCII קו נטוי נקודת 0-- אני רק מקבל תרשים קטן זה שימושי ש 1153 00:47:41,720 --> 00:47:44,950 מראה לי את כל האפשרי מיפויים מבלי חושב ש 1154 00:47:44,950 --> 00:47:46,450 דרך או להבין את זה בעצמי. 1155 00:47:46,450 --> 00:47:48,783 ואני גם להדפיס את, שם לב האותיות קטנות, 1156 00:47:48,783 --> 00:47:51,410 בגלל כמה שורות לאחר מכן, אני גם להדפיס את מיפוי זה 1157 00:47:51,410 --> 00:47:53,737 כמו גם, וזה רק ל אומר שברגע שאתה מבין 1158 00:47:53,737 --> 00:47:55,570 מה קורה מתחת למכסת המנוע, אתה יכול 1159 00:47:55,570 --> 00:47:57,111 להמיר באופן אוטומטי קדימה ואחורה. 1160 00:47:57,111 --> 00:48:00,160 ולמעשה, אם מישהו מכם אי פעם עשיתי את זה בבית הספר יסודי 1161 00:48:00,160 --> 00:48:03,490 או שמע על מישהו מיתי לוקח פתק 1162 00:48:03,490 --> 00:48:05,620 והעברתו לו או חבר שלה בכיתה, 1163 00:48:05,620 --> 00:48:08,300 אבל אתה מקושקשת מכתבים כמו הופך B, 1164 00:48:08,300 --> 00:48:11,240 ו- B הופך C, או משהו יותר מסובך מזה, גם, 1165 00:48:11,240 --> 00:48:13,410 איך היית הולך על יישום שבתור ילד? 1166 00:48:13,410 --> 00:48:16,340 ובכן, אתה פשוט סוג של יודע הופך B, B הופך C, 1167 00:48:16,340 --> 00:48:19,700 אבל מבחינה מתמטית, מה עושה ילד זה? 1168 00:48:19,700 --> 00:48:22,050 מה הייתם מוסיף לכל אות? 1169 00:48:22,050 --> 00:48:23,340 יעילות, 1. 1170 00:48:23,340 --> 00:48:27,740 >> לכן, כאשר אתה משנה את A ל- B, זה כמו סוג של שינוי 65-66, 1171 00:48:27,740 --> 00:48:29,590 שפירוש מתמטי פשוט להוסיף 1. 1172 00:48:29,590 --> 00:48:33,300 ולכן אם היה לך ליישם טכניקה מטעה שקטנה 1173 00:48:33,300 --> 00:48:36,380 למורה שלך בקוד, אתה אולי לעשות בדיוק את זה רק 1174 00:48:36,380 --> 00:48:38,552 על ידי הוספת אות אחת ביחד. 1175 00:48:38,552 --> 00:48:40,260 אז לפני זמן רב, אנחנו הולך לראות איך אנחנו 1176 00:48:40,260 --> 00:48:43,300 יכול לנצל את זה לבעצם לטרוף ולפענח באמת 1177 00:48:43,300 --> 00:48:43,991 מידע. 1178 00:48:43,991 --> 00:48:47,240 בינתיים, יודע שאנחנו כבר התחלנו להציג כמה ספריות אחרות 1179 00:48:47,240 --> 00:48:48,990 כאן-- המחרוזת היום אחד. 1180 00:48:48,990 --> 00:48:51,180 ואתר מאוד מועיל אני מקווה שאתה תמצא 1181 00:48:51,180 --> 00:48:55,010 נקרא reference.cs50.net, ש סגל ההוראה יש להרכיב, 1182 00:48:55,010 --> 00:48:57,510 כך שאם אתה רוצה לחפש עבודות איך strlen, 1183 00:48:57,510 --> 00:48:59,300 אתה יכול להתחיל להקליד שמו של הפונקציה, 1184 00:48:59,300 --> 00:49:02,890 לחץ strlen שם, ולאחר מכן הסבר פחות נוח 1185 00:49:02,890 --> 00:49:03,700 עומד להופיע. 1186 00:49:03,700 --> 00:49:06,880 או אם אתה רוצה רשמי הסבר מבוסס לינוקס, 1187 00:49:06,880 --> 00:49:08,945 אתה יכול ללחוץ נוח יותר בצד ימין למעלה, וזה 1188 00:49:08,945 --> 00:49:12,070 יציג את אותו המידע, אבל במונחים מורכבים יותר. 1189 00:49:12,070 --> 00:49:15,070 זה משאב שימושי ל ממש יודע מה עושה כל דבר. 1190 00:49:15,070 --> 00:49:17,320 >> בפעם הבאה שאנחנו הולכים תסתכל על שוקו 1191 00:49:17,320 --> 00:49:20,070 ועוד, ולהציג את עצמנו לעולם של הצפנה. 1192 00:49:20,070 --> 00:49:21,930 לפני כן, אנחנו תראו שלך מאוחר יותר השבוע. 1193 00:49:21,930 --> 00:49:23,390 ועכשיו, קולטון אוגדן. 1194 00:49:23,390 --> 00:49:26,730 לראות אותך ביום רביעי. 1195 00:49:26,730 --> 00:49:30,216 >> [השמעת מוסיקה] 1196 00:49:30,216 --> 00:49:33,702 >> [השמעת מוסיקה] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> 1 דובר: מה אתה עושה [בליפ]? 1199 00:49:42,200 --> 00:49:45,720 >> 1 מרצה: אני אוכל קינוח שלי? 1200 00:49:45,720 --> 00:49:47,160 איך אוכל את זה? 1201 00:49:47,160 --> 00:49:47,860 עם הידיים שלך? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [השמעת מוסיקה] 1204 00:49:57,940 --> 00:50:03,453