1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: בסדר. 3 00:00:11,940 --> 00:00:16,470 אז זה CS50, ואת זה הוא עכשיו תחילת השבוע שלושה. 4 00:00:16,470 --> 00:00:19,960 >> אז עד עכשיו, יש לנו כבר בכתיבת תוכניות בשפת C 5 00:00:19,960 --> 00:00:23,210 שנראה קצת משהו כזה כאן. 6 00:00:23,210 --> 00:00:25,470 אז יש לנו כמה חד כולל בחלקו העליון. 7 00:00:25,470 --> 00:00:28,490 יש לנו int, עיקרי, חלל, ו אז משהו לעשות באמצע, 8 00:00:28,490 --> 00:00:30,590 כמה קצת קוד בתוך של פונקציה ש. 9 00:00:30,590 --> 00:00:34,170 אבל המפתח היה העובדה ש אנחנו כבר אומרים פה תהום. 10 00:00:34,170 --> 00:00:39,320 אז חלל, כל הזמן הזה, מציין כי תכנית זו, כאשר לרוץ, 11 00:00:39,320 --> 00:00:41,300 ניתן להפעיל רק באמצעות שמו. 12 00:00:41,300 --> 00:00:46,330 לא ניתן להקליד כל מילות אחרות או מספרים אחרי השם של התכנית כאשר 13 00:00:46,330 --> 00:00:46,830 מפעיל אותו. 14 00:00:46,830 --> 00:00:51,200 כך, למשל, אם התכנית היתה מלוקט לתוך קובץ בשם שלום, 15 00:00:51,200 --> 00:00:53,480 אתה יכול לעשות ./hello, אבל זה אותו. 16 00:00:53,480 --> 00:00:56,750 >> הדרך שאתה יכול רק לספק קלט לתכנית זו 17 00:00:56,750 --> 00:00:57,960 הוא על ידי קריאה לפונקציה. 18 00:00:57,960 --> 00:00:59,790 לדוגמא, מה פונקציה יש לנו כבר משתמש עד כה 19 00:00:59,790 --> 00:01:00,950 כדי לקבל קלט מהמשתמש? 20 00:01:00,950 --> 00:01:02,117 >> קהל: קבל מחרוזת. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: כדי לקבל מחרוזת, או לקבל int, או שראית אחרים, 22 00:01:04,700 --> 00:01:07,630 אפילו אם לא השתמש בהם עדיין, כמו לקבל ארוך, ארוך וכדומה. 23 00:01:07,630 --> 00:01:09,380 אבל נניח שאנחנו למעשה רוצה להתחיל 24 00:01:09,380 --> 00:01:12,760 תוכניות כתיבה, כי הם קצת יותר תכליתי, ולמען האמת, קצת יותר 25 00:01:12,760 --> 00:01:15,090 כמו פקודות שיש לך היה מקבל, אני מקווה, 26 00:01:15,090 --> 00:01:16,550 קצת רגיל. 27 00:01:16,550 --> 00:01:18,560 כמו Dropbox החלל cd. 28 00:01:18,560 --> 00:01:20,800 זה, כמובן, שינויים במדריך שלך, בהנחה 29 00:01:20,800 --> 00:01:23,590 אתה בביתו של ג'ון הרווארד ספרייה, לתיקיית Dropbox שלך. 30 00:01:23,590 --> 00:01:27,380 בינתיים, פיקוד כזה יוצר ספרייה חדשה בשם pset2, 31 00:01:27,380 --> 00:01:30,290 כפי שאולי כבר או בקרוב לבעיה להגדיר שני. 32 00:01:30,290 --> 00:01:33,970 הפוך שלום, כמובן, היא הפקודה שבונה תכנית בשם שלום 33 00:01:33,970 --> 00:01:35,770 מקובץ שנקרא שלום הנקודה ג. 34 00:01:35,770 --> 00:01:39,140 ובכל אחד מאלה מקרים, עכשיו, שהיו לנו 35 00:01:39,140 --> 00:01:43,620 לספק ויכוח על מה שנקרא שורת הפקודה, הפקודה המהבהבת, 36 00:01:43,620 --> 00:01:48,540 אז ודא שיודע מה לבנות, וכך mkdir שיודע מה תיקייה כדי ליצור, 37 00:01:48,540 --> 00:01:51,110 וכך cd שיודע שבו אתה רוצה ללכת. 38 00:01:51,110 --> 00:01:54,720 אבל עד עכשיו, אנחנו חוזרים ואומרים כי, פונקצית ברירת המחדל שלך העיקרית, 39 00:01:54,720 --> 00:01:58,500 יש ביטוי חלל בתוך הסוגריים אלה, 40 00:01:58,500 --> 00:02:01,250 מה שאומר שזה לא יכול לקחת את כל טיעונים. 41 00:02:01,250 --> 00:02:03,240 >> אז החל מיום, מה שאנחנו הולכים לעשות 42 00:02:03,240 --> 00:02:06,270 הוא, אנחנו הולכים להתחיל תמיכה דברים כמו גם זה. 43 00:02:06,270 --> 00:02:08,990 למעשה, במקרה, זה שבו אתה לא בדרך כלל להקליד באופן ידני, 44 00:02:08,990 --> 00:02:11,130 הפוך כבר עושה את זה עבורנו, אין 45 00:02:11,130 --> 00:02:15,840 אחד אבל אחד, שתיים, שלוש נוסף מחרוזות אחרי התכנית של שם 46 00:02:15,840 --> 00:02:16,850 צלצול. 47 00:02:16,850 --> 00:02:18,240 אז איך אנחנו משיגים את זה? 48 00:02:18,240 --> 00:02:20,260 >> ובכן, החל מיום, במקרים שבם אנחנו רוצים 49 00:02:20,260 --> 00:02:22,855 לספק קלט באמצעות מה שנקרא שורת הפקודה, 50 00:02:22,855 --> 00:02:24,980 אנחנו הולכים להתחיל להוסיף כאן מה שיש בyellow-- 51 00:02:24,980 --> 00:02:30,520 החלפת חלל עם פסיק argc int argv מחרוזת סוגר קרוב סוגר פתוח. 52 00:02:30,520 --> 00:02:32,520 עכשיו זה מעניין עבור כמה סיבות. 53 00:02:32,520 --> 00:02:35,690 אחד, זה הולך לתת לנו לכתוב תוכניות שהם קצת יותר דינמיים. 54 00:02:35,690 --> 00:02:37,570 אבל, יותר משכנע, זה הולך להיפתח 55 00:02:37,570 --> 00:02:40,340 עכשיו שיחה כל מה מערכים יכולים באמת 56 00:02:40,340 --> 00:02:43,300 לשמש, למה מחרוזת באמת מתחת למכסת המנוע, 57 00:02:43,300 --> 00:02:47,320 עד השבוע הבא, כאשר אנחנו מתחילים צלילה באפילו עמוק יותר לגבי איך המכונה 58 00:02:47,320 --> 00:02:48,590 מה שהופך את כל העבודה את החומר הזה. 59 00:02:48,590 --> 00:02:51,920 אבל לעת עתה, בואו לצייר, אולי, תמונה. 60 00:02:51,920 --> 00:02:54,950 >> כשאתה כותב תכנית עם הכריז עיקרי 61 00:02:54,950 --> 00:02:58,810 בדרך זו, באופן שראשי לוקח שני טיעונים, int 62 00:02:58,810 --> 00:03:03,233 and-- מה סוג הנתונים הוא הטיעון השני? 63 00:03:03,233 --> 00:03:04,529 >> קהל: מערך. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: מערך. 65 00:03:05,320 --> 00:03:09,170 כך זה נראה במבט ראשון כמו זה מחרוזת, אבל שים לב לסוגריים מרובעים. 66 00:03:09,170 --> 00:03:12,760 נזכיר פעם האחרונה שהצגנו הרעיון של מערך. 67 00:03:12,760 --> 00:03:16,210 ומערכים להשתמש בסוגריים מרובעים בכמה הקשרים. 68 00:03:16,210 --> 00:03:19,160 אתה יכול להשתמש בריבוע סוגריים להיכנס למערך 69 00:03:19,160 --> 00:03:22,710 ולקבל אלמנט מסוים, כמו סוגר 0 או 1 או סוגר סוגר 2. 70 00:03:22,710 --> 00:03:25,500 אבל ראינו, אם לזמן קצר, בשבוע שעבר, כי אתה גם 71 00:03:25,500 --> 00:03:28,790 השתמש בסוגריים מרובעים אלה להכריז על הגודל של מערך, 72 00:03:28,790 --> 00:03:31,790 אם אתה יודע מראש כמה ints או כמה חוטים או מה שאתה 73 00:03:31,790 --> 00:03:32,630 רוצה בעצם. 74 00:03:32,630 --> 00:03:34,790 אז מתברר של שם הקשר שלישי כאן 75 00:03:34,790 --> 00:03:37,890 שאין לו מספר בתוך של סוגריים מרובעים. 76 00:03:37,890 --> 00:03:41,920 כאשר אתה מציין, כמו שעשיתי כאן, שמו של משהו כמו argv, 77 00:03:41,920 --> 00:03:44,550 וזה רק דרך מפוארת של אומר וקטור טיעון, ש 78 00:03:44,550 --> 00:03:47,750 היא דרך מפוארת נוספת של אומר מערך של טיעונים, 79 00:03:47,750 --> 00:03:50,870 סוגר קרוב סוגר פתוח רק משמעות הדבר היא שאתה לא בהכרח 80 00:03:50,870 --> 00:03:52,960 לדעת מראש עד כמה גדול המערך הולך להיות, 81 00:03:52,960 --> 00:03:55,070 אבל אתה יודע שזה הולך להיות מערך. 82 00:03:55,070 --> 00:03:57,320 אז אם אתה לא יודע מספר לא לשים אותו שם, 83 00:03:57,320 --> 00:04:01,160 לסוגר קרוב סוגר פתוח משמעות הדבר היא כי argv הוא לא מחרוזת, 84 00:04:01,160 --> 00:04:03,124 אבל מערך של מחרוזות. 85 00:04:03,124 --> 00:04:05,040 אז מבחינה תחבירית, אם אתה נזכר בשבוע שעבר, 86 00:04:05,040 --> 00:04:09,460 זה מאוד דומה לאמירה משהו כמו גילאי int סוגר פתוח, 87 00:04:09,460 --> 00:04:10,984 ואז משהו לאחר מכן. 88 00:04:10,984 --> 00:04:12,150 אז מה זה נראה? 89 00:04:12,150 --> 00:04:13,399 בואו ממש לצייר תמונה. 90 00:04:13,399 --> 00:04:18,756 לכן, כאשר אתה מפעיל תכנית זו עם ראשי לאחר ששני טיעונים שהוגדרו בתוך 91 00:04:18,756 --> 00:04:21,339 של הסוגריים האלה, אתה יש לי בעצם לפחות שני גושים 92 00:04:21,339 --> 00:04:23,560 זיכרון מסר לך מתחת למכסה המנוע. 93 00:04:23,560 --> 00:04:26,550 אחת, כאני יהיה מושך כמלבן זה, הוא הולך להיקרא argc. 94 00:04:26,550 --> 00:04:30,645 ובדיוק כפי שסיכום מהיר, מה הוא סוג הנתונים של תכנית +? 95 00:04:30,645 --> 00:04:31,270 אז זה int. 96 00:04:31,270 --> 00:04:33,480 אז מספר הולך ללכת בסיבובי argc-- 97 00:04:33,480 --> 00:04:35,660 כי עומד לספירת טיעון. 98 00:04:35,660 --> 00:04:38,887 בינתיים, אני כבר נמשך argv כמערך. 99 00:04:38,887 --> 00:04:40,970 ואני לא ממש יודע כמה זמן זה הולך להיות, 100 00:04:40,970 --> 00:04:42,470 כך למטרות של היום dot dot dot. 101 00:04:42,470 --> 00:04:43,636 זה יכול להגיע לכמה אורך. 102 00:04:43,636 --> 00:04:45,640 אבל אני כבר כאן בתמונה לפחות ארבעה מלבנים. 103 00:04:45,640 --> 00:04:50,970 אז argv נתח של זיכרון שחנויות מחרוזת מחרוזת dot dot dot, 104 00:04:50,970 --> 00:04:53,950 וargc הוא רק חתיכה אחת זיכרון למספר שלם. 105 00:04:53,950 --> 00:04:55,710 >> אז עכשיו, בואו נהיה קצת יותר מדויק. 106 00:04:55,710 --> 00:04:59,200 אם, כאשר יש לי מיתרים במערך זה, הנקרא 107 00:04:59,200 --> 00:05:03,290 argv, אני רוצה לקבל עליהם בנפרד, בדיוק כמו בשבוע שעבר, 108 00:05:03,290 --> 00:05:05,670 אנחנו הולכים להשתמש בסימון כמו סוגר argv 0 109 00:05:05,670 --> 00:05:07,650 כדי לקבל את הדבר הראשון מערך. 110 00:05:07,650 --> 00:05:10,440 סוגר argv 1 כדי לקבל את דבר שני, וכן הלאה. 111 00:05:10,440 --> 00:05:14,597 המפתח כאן להיות אנחנו עדיין 0 indexed-- אנחנו עדיין סופרים מ0. 112 00:05:14,597 --> 00:05:16,430 אז עכשיו בואו למעשה לשים משהו בזה. 113 00:05:16,430 --> 00:05:21,670 אם הייתי לקמפל תכנית בשם שלום מקובץ שנקרא שלום הנקודה ג, 114 00:05:21,670 --> 00:05:24,340 ואז אני רץ תכנית ש עם נקודה לקצץ שלום, 115 00:05:24,340 --> 00:05:28,380 מה עושה המחשב, המחשב הנייד שלי שלי, נראה כמו מתחת למכסת המנוע 116 00:05:28,380 --> 00:05:31,300 הרגע אני רץ נקודה לקצץ שלום וקש Enter? 117 00:05:31,300 --> 00:05:33,500 ובכן, זה אולי מה שאנחנו יכולים לתאר 118 00:05:33,500 --> 00:05:37,010 כתוכן של המחשב שלך של זיכרון, או זיכרון RAM-- גישה אקראית. 119 00:05:37,010 --> 00:05:40,330 במילים אחרות, המחשב, איכשהו בשבילך באורח פלא, 120 00:05:40,330 --> 00:05:45,360 מכניס argc המספר 1, argcount AKA, וזה מכניס את המחרוזת, פשוטו כמשמעו, 121 00:05:45,360 --> 00:05:48,200 ./hello בסוגר argv 0. 122 00:05:48,200 --> 00:05:51,750 אין לי מושג, בכנות, מה בסוגר argv 1 או 2 או 3, 123 00:05:51,750 --> 00:05:55,550 כי אם למשתמש יש לא הקלדה כל דבר חוץ מזה ./hello, 124 00:05:55,550 --> 00:05:58,550 אנחנו הולכים להניח כי אלה הם ערכי אשפה הסביר ביותר, 125 00:05:58,550 --> 00:05:59,700 אם אפשר לומר כך. 126 00:05:59,700 --> 00:06:02,650 נתחים אלה של זיכרון קיימות, אבל זה לא תלוי בנו 127 00:06:02,650 --> 00:06:05,710 להסתכל עליהם, משום ש argcount הוא רק אחד. 128 00:06:05,710 --> 00:06:07,870 >> עכשיו, בינתיים, אם אני לכתוב להפעיל תכנית אחרת, 129 00:06:07,870 --> 00:06:12,250 cd, שהוא יותר כמו שצריך הפקודה, בחלל cd prompt-- המהבהב שלך 130 00:06:12,250 --> 00:06:17,200 Dropbox-- כאשר אני מפעיל את זה, בצורה יעילה, כאשר תכנית cd מנוהלת, argc, 131 00:06:17,200 --> 00:06:22,270 בתוך הזיכרון של המחשב שלי, הוא ל רוב קצרצר שני המספר 2. 132 00:06:22,270 --> 00:06:25,936 ולאחר מכן argv o הסוגר יש cd, סוגר argv 1 יש Dropbox, 133 00:06:25,936 --> 00:06:28,560 ואז כמובן את הפקודה משלים, ולכן כל הזיכרון הזה 134 00:06:28,560 --> 00:06:30,420 בעצם נעלמת ו משמש למשהו אחר. 135 00:06:30,420 --> 00:06:32,270 ובגלל זה אני אומר רק שבריר שני. 136 00:06:32,270 --> 00:06:35,720 >> בינתיים, אם אנחנו עושים pset2 mkdir, התמונה נראית כמעט אותו הדבר, 137 00:06:35,720 --> 00:06:37,900 אבל עם מחרוזות שונות בתוך argv. 138 00:06:37,900 --> 00:06:42,570 אם אני עושה את מקף צלצול שלום שלום הנקודה ג, אותו רעיון. 139 00:06:42,570 --> 00:06:47,060 יותר דברים מלאים ל argv, וargc, כמובן, הוא 4. 140 00:06:47,060 --> 00:06:49,150 אז במילים אחרות, למרות שמערך זה 141 00:06:49,150 --> 00:06:52,950 יכול להיות נקודה נקודת נקודה, של כמה אורך משתנה, אם אפשר לומר כך, 142 00:06:52,950 --> 00:06:56,720 אתה תמיד יודע איפה הסוף של זה הוא, כי argc הולך לספר לכם 143 00:06:56,720 --> 00:07:00,120 באיזה שלב אתה חייב להפסיק מסתכל על אלמנטים בargv. 144 00:07:00,120 --> 00:07:03,660 אתה יכול רק להסתכל על ארבעה בסך הכל במקרה הזה. 145 00:07:03,660 --> 00:07:06,600 >> אז בואו עכשיו נסתכל ב, אולי, תכנית פשוטה. 146 00:07:06,600 --> 00:07:09,070 אחד שרק אומר שלום למישהו כמו Zamyla. 147 00:07:09,070 --> 00:07:12,620 אז אני טוען שאני הולך לכתוב תכנית ברגע שדרכו אני יכול לעשות 148 00:07:12,620 --> 00:07:16,670 ./hello החלל Zamyla, ולאחר מכן אני רוצה התכנית שלי להדפיס משהו 149 00:07:16,670 --> 00:07:18,520 סופר פשוט כמו "שלום, Zamyla." 150 00:07:18,520 --> 00:07:20,100 עכשיו בעבר השתמשתי getstring. 151 00:07:20,100 --> 00:07:22,850 אז בעבר, גם אם אתה חדש בתכנות, 152 00:07:22,850 --> 00:07:27,180 רוב הסיכויים הם שאתה יכול להלהיב תכנית שמשתמשת בgetstring 153 00:07:27,180 --> 00:07:29,390 ולאחר מכן משתמש printf להגיד שלום לZamyla. 154 00:07:29,390 --> 00:07:31,290 אבל בואו לא להשתמש getstring הפעם. 155 00:07:31,290 --> 00:07:37,510 תן לי במקום ללכת לAppliant וכן כולל h נקודה אני O הסטנדרטי. 156 00:07:37,510 --> 00:07:41,160 תן לי גם כולל h נקודת CS50. 157 00:07:41,160 --> 00:07:44,730 עכשיו int ראשי, ועכשיו אני לא הולך לעשות את החלל היום. 158 00:07:44,730 --> 00:07:51,200 במקום זאת, אני הולך לעשות תכנית + int סוגר קרוב סוגר פתוח argv המחרוזת, 159 00:07:51,200 --> 00:07:52,640 לא מפרט מספר. 160 00:07:52,640 --> 00:07:54,644 ועכשיו כאן הוא שלי מה שנקרא לעשות. 161 00:07:54,644 --> 00:07:57,560 מה שאני הולך לעשות עכשיו הוא, אני הולך לעשות קצת קפיצה של אמונה, 162 00:07:57,560 --> 00:08:00,560 אני הולך להניח שהמשתמש של הולך להשתמש בתכנית זו בצורה נכונה, 163 00:08:00,560 --> 00:08:04,980 ואני פשוט הולך ל לעשות printf שלום, sn%. 164 00:08:04,980 --> 00:08:06,630 כך ששום דבר חדש שם. 165 00:08:06,630 --> 00:08:11,470 אבל אני רוצה עכשיו לשים את מה שמילה משתמש מקליד אחרי השם של התכנית. 166 00:08:11,470 --> 00:08:16,970 אז אם אני עושה ./hello חלל Zamyla, אני רוצה איכשהו תיכנותי גישה 167 00:08:16,970 --> 00:08:20,870 במירכאות, "Zamyla." אז אני יכול להיכנס לוקטור הטיעון שלי, 168 00:08:20,870 --> 00:08:25,980 המערך שלי של מחרוזות, ואם הפקודה, שוב, היה ./hello חלל Zamyla, 169 00:08:25,980 --> 00:08:29,340 מה מספר אני רוצה לשים בargv כאן? 170 00:08:29,340 --> 00:08:29,840 קהל: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, משום ש סוגר 0 מתברר 172 00:08:32,355 --> 00:08:34,230 הולך להיות שם של התכנית, כפי שראינו. 173 00:08:34,230 --> 00:08:37,789 אז סוגר 1 היא המילה הראשונה כי אני, המשתמש, הקליד. 174 00:08:37,789 --> 00:08:39,559 אני הולך קדימה ולשמור את זה. 175 00:08:39,559 --> 00:08:42,830 אני הולך להיכנס לתיקייה שלי שבו אני מיקמתי בקובץ זה. 176 00:08:42,830 --> 00:08:44,920 אני הולך לעשות לעשות שלום 3. 177 00:08:44,920 --> 00:08:46,230 אישור של Comp IO. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla הזן. 179 00:08:51,380 --> 00:08:54,480 מה עשה לא בסדר? 180 00:08:54,480 --> 00:08:57,270 תפסו אותי בהפתעה את עצמי לרגע שיש. 181 00:08:57,270 --> 00:08:58,230 מה עשה לא בסדר? 182 00:08:58,230 --> 00:08:59,220 >> קהל: שם. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: הקובץ של נקרא למעשה hello3.c. 184 00:09:01,767 --> 00:09:03,850 ואני עשיתי את זה רק בשביל עקביות, כי יש לנו 185 00:09:03,850 --> 00:09:06,550 hello.c של היה ב העבר בקוד באינטרנט. 186 00:09:06,550 --> 00:09:11,550 אז בואו לתקן ./hello זה סוגר מקף 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 הזן. 188 00:09:12,370 --> 00:09:14,030 ועכשיו יש לנו שלום, Zamyla. 189 00:09:14,030 --> 00:09:17,650 בינתיים, אני יכול לשנות את זה ל להיות רוב, או בעצם כל מילה אחרת. 190 00:09:17,650 --> 00:09:19,230 >> אבל הבה נבחן מקרה פינה. 191 00:09:19,230 --> 00:09:24,360 מה שהיה אפשר לצפות שיקרה אם אני לא מקליד את שמו של מישהו בכלל? 192 00:09:24,360 --> 00:09:25,270 >> קהל: שגיאה. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: שגיאה של איזה, אולי. 194 00:09:27,300 --> 00:09:28,200 בואו נראה. 195 00:09:28,200 --> 00:09:29,440 הזן. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 אז printf הוא למעשה להיות קצת הגנה שלנו 198 00:09:33,870 --> 00:09:38,131 כאן, והדפסה, פשוטו כמשמעו, פארן פתוח null, אבל דברים אפילו יותר גרועים יכולים לקרות. 199 00:09:38,131 --> 00:09:40,130 ורק כדי להוכיח משהו שאתה בהחלט 200 00:09:40,130 --> 00:09:42,800 לא צריך לעשות, בואו נלך ב כאן ולהתחיל לחטט. 201 00:09:42,800 --> 00:09:43,300 נכון? 202 00:09:43,300 --> 00:09:46,410 אם אני יודע שהתמונה ב זיכרון הוא למעשה זה, 203 00:09:46,410 --> 00:09:52,660 יש סוגר argv 1 Zamyla, argv סוגר 0 יש ./hello, או ./hello-3. 204 00:09:52,660 --> 00:09:55,400 מה הוא בסוגר 2? 205 00:09:55,400 --> 00:09:58,210 אז אני יכול לענות על זה תשאל את עצמי, נכון? 206 00:09:58,210 --> 00:10:00,460 אני יכול רק לשנות את 1 עד 2. 207 00:10:00,460 --> 00:10:07,270 עכשיו אני יכול להדר מחדש שלום 3, ./hello3 בואו להתקרב וקש Enter. 208 00:10:07,270 --> 00:10:08,270 אופס. 209 00:10:08,270 --> 00:10:10,660 אין סימן ציטוט. 210 00:10:10,660 --> 00:10:12,540 מעניין. 211 00:10:12,540 --> 00:10:15,530 אז זה סוג של מגניב לראות מה עוד יש כאן. 212 00:10:15,530 --> 00:10:17,130 >> אז מה עוד הוא בתוך המחשב הנייד שלי? 213 00:10:17,130 --> 00:10:20,390 בואו להציל בסוגר 3. 214 00:10:20,390 --> 00:10:25,190 הפוך hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 סקרן. 216 00:10:26,500 --> 00:10:30,560 ועכשיו בואו לקבל 50 באמת bold--. 217 00:10:30,560 --> 00:10:34,340 אז זה באמת צלילה עמוקה לזיכרון של המחשב שלי. 218 00:10:34,340 --> 00:10:35,930 50 מדדים ב. 219 00:10:35,930 --> 00:10:41,950 אז להפוך את שלום 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 סקרן. 221 00:10:42,680 --> 00:10:44,660 בסדר, עכשיו אני פשוט הולך לקבל פזיז. 222 00:10:44,660 --> 00:10:47,331 בואו נלך ל5,000. 223 00:10:47,331 --> 00:10:47,830 בסדר. 224 00:10:47,830 --> 00:10:49,520 אז תן לי הידור מחדש. 225 00:10:49,520 --> 00:10:51,460 הפוך hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 אישור. 228 00:10:56,460 --> 00:10:59,250 עכשיו חלק מכם, יש אולי להיות הנורה נוסעת. 229 00:10:59,250 --> 00:11:01,900 כמה מן יש לך ראה הודעה על זה קודם? 230 00:11:01,900 --> 00:11:03,440 אישור. 231 00:11:03,440 --> 00:11:04,420 אז, למה? 232 00:11:04,420 --> 00:11:07,250 >> סיכויי are-- ויש שונה דברים שיכולים לגרום לזה, 233 00:11:07,250 --> 00:11:09,730 וברור שאתה בטוב company-- יש לנו באופן ברור 234 00:11:09,730 --> 00:11:11,900 נגרם מה שנקרא אשמת פילוח. 235 00:11:11,900 --> 00:11:15,890 וסיפור ארוך קצר להיום, אני נגע קטע של זיכרון 236 00:11:15,890 --> 00:11:17,060 שאני לא צריך. 237 00:11:17,060 --> 00:11:19,970 איפה קטע רק אומר נתח זיכרון שלא הייתי צריך. 238 00:11:19,970 --> 00:11:25,530 עכשיו המחשב מבטיח שאם אני לרוץ ./helloZamyla שאני יכול לגעת בי argv 239 00:11:25,530 --> 00:11:27,760 להיות סוגר 0 וargv סוגר 1. 240 00:11:27,760 --> 00:11:32,730 אבל argc הוא ערך 2, זה אומר שאני רק allowed-- זה סוג של הכבוד 241 00:11:32,730 --> 00:11:35,180 system-- לגעת סוגר 0 וסוגר 1. 242 00:11:35,180 --> 00:11:37,990 אם אני הולך הלאה, יש הולך בהחלט להיות זיכרון יש. 243 00:11:37,990 --> 00:11:40,660 זיכרון RAM שלי קיים מבחינה פיזית במחשב. 244 00:11:40,660 --> 00:11:42,080 אבל מי יודע מה יש שם? 245 00:11:42,080 --> 00:11:44,450 ואכן, אני מפעיל מספר רב של תוכניות בו זמנית. 246 00:11:44,450 --> 00:11:46,910 אולי יש לי seen-- אם אני לא היה עושה את זה על Appliant 247 00:11:46,910 --> 00:11:49,937 אבל על Mac שלי או PC-- אולי יש לי ראה את התוכן של דואר אלקטרוני. 248 00:11:49,937 --> 00:11:52,270 אני יכול לראות מיידי הודעה ששלחתי לאחרונה. 249 00:11:52,270 --> 00:11:55,390 כל דבר שעלול להיות להשתהות בזיכרון 250 00:11:55,390 --> 00:11:59,180 היה יכול להיות נצפה בדרך של סימון זה שרירותי מרובע סוגר. 251 00:11:59,180 --> 00:12:02,850 או, גרוע מכך, אולי יש לך מצא אחד את סיסמאות שלי 252 00:12:02,850 --> 00:12:05,859 שהייתי מוקלד בזמן האחרון, ש תכנית שמאוחסנת בזיכרון באופן ש 253 00:12:05,859 --> 00:12:07,900 כדי לאמת אותי, ו אז פשוט סוג של השאיר אותו 254 00:12:07,900 --> 00:12:09,910 בזכרון RAM עד שעזבתי את תכנית ש. 255 00:12:09,910 --> 00:12:12,860 >> ואכן, זו אחת סכנה ואחד הכוחות 256 00:12:12,860 --> 00:12:15,980 של שימוש בשפה כמו ג יש לך גישה לא מוגבלת 257 00:12:15,980 --> 00:12:18,860 לכל התוכן הזיכרון של תכנית, 258 00:12:18,860 --> 00:12:21,340 ומה החבר 'ה רע יכול אפילו לעשות בcases-- אלה 259 00:12:21,340 --> 00:12:23,807 במיוחד כאשר אנו להגיע לתכנות אינטרנט 260 00:12:23,807 --> 00:12:26,890 לקראת סוף הסמסטר, אנחנו לבקר topic-- זה לחטט, 261 00:12:26,890 --> 00:12:31,660 פוטנציאל, של מישהו המחשב של זיכרון ולמצוא דברים מוזרים כאלה 262 00:12:31,660 --> 00:12:32,570 כפי שראינו שם. 263 00:12:32,570 --> 00:12:36,900 או אפילו גרוע מכך, סיסמאות שהוא או אז היא יכולה להשתמש בו כדי לעשות דברים רעים. 264 00:12:36,900 --> 00:12:40,240 >> אז ברור שאני לא הייתי צריך לעשות את זה, בגלל דברים מוזרים מתחילים לקרות. 265 00:12:40,240 --> 00:12:42,310 ואכן, זו היא מתרסקת תכנית. 266 00:12:42,310 --> 00:12:44,580 זה יהיה שווה הערך של מערכת הפעלה Mac או בWindows 267 00:12:44,580 --> 00:12:46,770 חלון תכנית רק הולך ונעלם. 268 00:12:46,770 --> 00:12:48,300 שגיאה בלתי צפויה. 269 00:12:48,300 --> 00:12:50,840 בסביבת שורת הפקודה אנו רואים משהו כזה. 270 00:12:50,840 --> 00:12:54,480 אבל בגלל זה, הוא שאני פשוט לגעת זיכרון שלא שייך לי. 271 00:12:54,480 --> 00:12:57,090 >> אז בואו להתגונן מפני זה קצת בצורה שונה 272 00:12:57,090 --> 00:12:59,010 על ידי התבוננות בתכנית זו כאן. 273 00:12:59,010 --> 00:13:01,000 אז, שוב, השלד שראינו earlier-- 274 00:13:01,000 --> 00:13:02,480 ואני כבר הדגיש int זמן זה. 275 00:13:02,480 --> 00:13:05,900 ויש לו את כל הזמן הזה עיקרי אכן חזר ערך. 276 00:13:05,900 --> 00:13:09,120 למרות שברוב ההרצאה שלנו דוגמאות שמעולם לא שימשו בעבר 277 00:13:09,120 --> 00:13:10,990 לחזור כל דבר בעיקרי. 278 00:13:10,990 --> 00:13:13,710 אנחנו פשוט לכתוב קרובים printf סד מתולתל וזהו. 279 00:13:13,710 --> 00:13:16,500 אבל בחינם, מה מהדר כבר עושה בשבילך, 280 00:13:16,500 --> 00:13:19,510 ביעילות, חוזר 0 בשבילך. 281 00:13:19,510 --> 00:13:22,950 מסתבר out-- וזה קצת counterintuitive-- ש0 הוא טוב. 282 00:13:22,950 --> 00:13:24,690 זה לא אומר ששקר כשלעצמו. 283 00:13:24,690 --> 00:13:29,080 0 הוא טובים, וכל מי שאינם 0 ערך, העולם החליט, 284 00:13:29,080 --> 00:13:30,619 יכול לסמן שגיאה. 285 00:13:30,619 --> 00:13:32,910 אז אם אי פעם פישל משהו במחשב שלך, 286 00:13:32,910 --> 00:13:36,600 או תכנית פשוט מתה עליך ו אתה כבר קיבלת כמה חלון שגוי 287 00:13:36,600 --> 00:13:40,360 על המסך שלך, שגיאה אומרת שלילי 49 או שגיאה 23-- 288 00:13:40,360 --> 00:13:44,170 כמה value-- לכאורה שרירותי זה כי מתכנת יש בקידוד קשיח 289 00:13:44,170 --> 00:13:49,370 ערך כמו שלילי 49 או חיובי 23 לייצג כל מספר, מעז לומר, 290 00:13:49,370 --> 00:13:53,340 של 4 מליארד דברים אפשריים שעלול להשתבש בתכנית. 291 00:13:53,340 --> 00:13:55,700 >> אז איך אני יכול לקחת יתרון של זה בעצמי? 292 00:13:55,700 --> 00:13:58,970 ובכן, הרשה לי לפתוח את תכנית שכתבתי מראש, 293 00:13:58,970 --> 00:14:01,450 ולחטט מקוון בשם שלום 4. 294 00:14:01,450 --> 00:14:05,650 וזה כמעט זהה, פרט לכך ש שלה קיבל קצת בדיקת שגיאות. 295 00:14:05,650 --> 00:14:09,660 במקרה זה, אני כבר הכריז שוב עיקרי כמו לקחת שני טיעונים, 296 00:14:09,660 --> 00:14:13,180 אבל הפעם, על קו 17, הודעה אני עושה קצת מבדיקת שפיות. 297 00:14:13,180 --> 00:14:17,100 אני מוודא ש argc שווה שווה 2. 298 00:14:17,100 --> 00:14:18,960 כי אם כן, ש משמעות הדבר היא בצורה בטוחה שאני יכול 299 00:14:18,960 --> 00:14:21,420 לגעת לא רק סוגר 0, אבל סוגר 1. 300 00:14:21,420 --> 00:14:24,330 ואני הולך קדימה ולהדפיס את, במקרה זה, Zamyla או רוב 301 00:14:24,330 --> 00:14:26,020 או מה מילה שאני הדפסתי. 302 00:14:26,020 --> 00:14:28,020 ועכשיו רק כדי לקבל קצת נכון יותר, 303 00:14:28,020 --> 00:14:31,910 אני הולך לחזור באופן מפורש 0 כדי לסמן הכל טוב. 304 00:14:31,910 --> 00:14:33,300 שום דבר לא קרה רע. 305 00:14:33,300 --> 00:14:38,590 >> אבל על ידי אמנה, אני הולך לחזור 1, או בכנות כל-0 אינו ערך, 306 00:14:38,590 --> 00:14:40,160 אם משהו ישתבש. 307 00:14:40,160 --> 00:14:43,270 עכשיו המשתמש לא הולך באמת שם לב מה קורה. 308 00:14:43,270 --> 00:14:50,410 ואכן, אם אני נכנסתי לספרייה זו, אנו להתקרב ועושים שלום 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla מתנהג כמו שאני מצפה. 310 00:14:54,210 --> 00:14:58,570 אבל אם אני במקום אל תקליד שום דבר שום דבר לא נראה, צריך לקרות, 311 00:14:58,570 --> 00:14:59,680 אבל זה לא לקרוס. 312 00:14:59,680 --> 00:15:04,660 ואם אני במקום לעשות משהו כמו רוב הוא משגיח 313 00:15:04,660 --> 00:15:07,550 בשיתוף Thayer-- מידע שרירותי. 314 00:15:07,550 --> 00:15:13,680 אבל שים לב, argv 1, 2, 3, 4, ו 5 צריכים עכשיו קיימים בזיכרון. 315 00:15:13,680 --> 00:15:16,540 גם את זה, זה לא מה ש התכנית שלי מצפה, 316 00:15:16,540 --> 00:15:20,300 כי אני כבר בדקתי אם argc שווה שווה 2 או לא. 317 00:15:20,300 --> 00:15:22,140 אז עכשיו אני מתגונן מפני זה. 318 00:15:22,140 --> 00:15:25,290 >> עכשיו, במאמר מוסגר, אנחנו programmer-- או לייתר דיוק אנו users-- 319 00:15:25,290 --> 00:15:29,670 אף פעם לא רואה ש0 או 1, אך באמצעות כלי שנקרא Debugger, או כלים אחרים, 320 00:15:29,670 --> 00:15:32,250 כפי שנראה לפני ארוך, אתה מתכנת 321 00:15:32,250 --> 00:15:36,590 יכול ממש לראות מה יכול להיות השתבש בתוך התכנית שלך. 322 00:15:36,590 --> 00:15:39,170 >> אז, על כל שאלות argc? 323 00:15:39,170 --> 00:15:40,873 כן. 324 00:15:40,873 --> 00:15:45,292 >> קהל: אני ראיתי בו הם לא היה לי האופי, [לא ברור] 325 00:15:45,292 --> 00:15:49,669 רק אמר ד כוכב המחרוזת, כמו פסיק כוכבית אופי. 326 00:15:49,669 --> 00:15:50,710 האם הם שווי ערך לכאן? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: הם. 328 00:15:51,626 --> 00:15:55,080 אז השאלה היא, יש לך תוכניות מדי פעם ראו 329 00:15:55,080 --> 00:15:57,270 כזה שלא אומר סוגר argv המחרוזת 330 00:15:57,270 --> 00:16:01,015 אבל במקום להגיד משהו כמו סוגר argv כוכב char. 331 00:16:01,015 --> 00:16:03,140 ויש אפילו אחר גרסאות שאתה עשוי לראות. 332 00:16:03,140 --> 00:16:04,264 הם אכן שווי ערך. 333 00:16:04,264 --> 00:16:06,240 לעת עתה, יש לנו אלה סוג של גלגלי עזר 334 00:16:06,240 --> 00:16:09,737 על בצורה של מחרוזת בCS50 ספרייה, אבל במרחק של קצת יותר בשבוע 335 00:16:09,737 --> 00:16:12,570 או אז אנחנו הולכים כדי להסיר ש חסימה לגמרי ולמעשה 336 00:16:12,570 --> 00:16:16,820 להסתכל על מה char והכוכב הם, וכיצד אלה קשורים לזיכרון 337 00:16:16,820 --> 00:16:18,140 ייצוג באופן כללי יותר. 338 00:16:18,140 --> 00:16:19,540 אז אנחנו נחזור לזה. 339 00:16:19,540 --> 00:16:21,540 >> שאלות אחרות על argv או argc שלנו? 340 00:16:21,540 --> 00:16:22,397 כן. 341 00:16:22,397 --> 00:16:24,438 קהל: מדוע זה לחזור שגיאה [לא ברור]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: למה עשה את זה תחזיר שגיאה only-- הו! 344 00:16:29,230 --> 00:16:31,813 במקרה הקודם, כאשר אנו היו לשפץ מסביב עם זיכרון, 345 00:16:31,813 --> 00:16:35,110 למה זה רק יחזיר שגיאה כאשר אני באמת הקלדת מספר גדול? 346 00:16:35,110 --> 00:16:36,620 תשובה קצרה היא, פשוט הייתה לנו מזל. 347 00:16:36,620 --> 00:16:39,240 באופן כללי, מחשב מקצה זיכרון בגושים, 348 00:16:39,240 --> 00:16:42,900 וזה נתן לי מספיק נתח גדול ש יש לי משם, בלי לשים לב, 349 00:16:42,900 --> 00:16:46,280 של סוגר נוגע ללב 2, סוגר 3, סוגר 50, אבל ברגע שאני דחפתי את 350 00:16:46,280 --> 00:16:49,080 המזל שלי, הלכתי מעבר גבולות של הנתח של זיכרון 351 00:16:49,080 --> 00:16:50,520 מערכת ההפעלה שנתנה לי. 352 00:16:50,520 --> 00:16:52,720 ואז זה הידקתי למטה ואמר, לא. 353 00:16:52,720 --> 00:16:54,580 שגיאת פילוח. 354 00:16:54,580 --> 00:16:55,692 כן. 355 00:16:55,692 --> 00:16:58,890 >> קהל: איך עושה את המחשב יודע את הערך של תכנית +? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: איך עושה מחשב יודע את הערך של תכנית +? 357 00:17:02,390 --> 00:17:07,920 כאשר אתה מפעיל את תכנית, תכנית ש, על ידי הטבע של הפקודה המהבהבת, 358 00:17:07,920 --> 00:17:11,359 הוא מסר את המערך של מילות שקליד גולשות 359 00:17:11,359 --> 00:17:13,300 בשורת הפקודה, שהיה הקליד בשורת הפקודה. 360 00:17:13,300 --> 00:17:16,569 וכך הוא ההפעלה שלך מערכת שבעצם 361 00:17:16,569 --> 00:17:20,329 מאכלס את טיעוניו של עיקרי בשבילך. 362 00:17:20,329 --> 00:17:22,829 אז זה אחד מהשירותים שאתה מקבל, סוג של בסתר 363 00:17:22,829 --> 00:17:24,869 מתחת למכסה המנוע של מערכת הפעלה. 364 00:17:24,869 --> 00:17:27,118 שאלות אחרות? 365 00:17:27,118 --> 00:17:27,618 כן. 366 00:17:27,618 --> 00:17:29,787 >> קהל: מה מזבלה ליבה זה אומרת? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: מה מזבלה ליבה זה אומרת? 368 00:17:31,370 --> 00:17:32,950 כך שזו שאלה טובה. 369 00:17:32,950 --> 00:17:35,312 ותן לי לחזור אל במדריך זה כאן. 370 00:17:35,312 --> 00:17:37,270 ותשים לב ש יש לי קובץ חדש שם. 371 00:17:37,270 --> 00:17:41,670 זה נקרא אכן ליבה, וזה למעשה בדרך כלל קובץ בגודל סביר. 372 00:17:41,670 --> 00:17:45,300 שהוא למעשה תמונת מצב של התוכן של זיכרון התכנית שלי 373 00:17:45,300 --> 00:17:46,902 או RAM כאשר הוא התרסק. 374 00:17:46,902 --> 00:17:49,110 וזה יהיה שימושי, פוטנציאל, אבחנה, 375 00:17:49,110 --> 00:17:52,850 ברגע שאנחנו מדברים בהרצאה עתיד וסעיף על ניפוי שגיאות, 376 00:17:52,850 --> 00:17:55,730 בגלל שאתה באמת יכול לעשות מקבילה של נתיחה שלאחר המוות דיגיטלי 377 00:17:55,730 --> 00:18:00,300 בקובץ שכדי לעזור להבין מה עשית לא בסדר בתכנית שלך. 378 00:18:00,300 --> 00:18:01,220 כן. 379 00:18:01,220 --> 00:18:04,450 >> קהל: האם argc פקודה ב עצמו, או יכול אתה שם את זה שום דבר? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: שאלה טובה. 381 00:18:05,575 --> 00:18:08,040 האם argc פקודה בעצמו, או שאתה יכול לנקוב בשמו משהו? 382 00:18:08,040 --> 00:18:09,290 זה בהחלט לא הפקודה. 383 00:18:09,290 --> 00:18:13,500 זה פשוט משתנה של שם או שם של ויכוח, 384 00:18:13,500 --> 00:18:15,481 וכך באופן מוחלט אנחנו אפשר לקרוא לזה foo, 385 00:18:15,481 --> 00:18:18,480 אנחנו יכולים לקרוא לזה בר, אשר נוטה להיות ללכת למילות שמחשב 386 00:18:18,480 --> 00:18:19,860 מדען הולך. 387 00:18:19,860 --> 00:18:22,820 אבל על ידי אמנה, אנו משתמשים argc וargv. 388 00:18:22,820 --> 00:18:25,360 אבל זה רק אנושי אמנה, לא יותר. 389 00:18:25,360 --> 00:18:25,860 בסדר. 390 00:18:25,860 --> 00:18:28,140 אז מתברר, שהייתי אומר לי קצת lie-- לבן 391 00:18:28,140 --> 00:18:31,264 ולמען אמת, בעתיד, אתה תראה אנחנו כבר לספר שקרים לבנים אחרים. 392 00:18:31,264 --> 00:18:33,510 אבל לעת עתה, אנחנו הולכים לקלף בחזרה אחד מאלה. 393 00:18:33,510 --> 00:18:37,310 במקרה זה כאן כשאני בעבר רץ תכנית כמו ./hello-3 ./hello או 394 00:18:37,310 --> 00:18:42,780 Zamyla, היה לנו את התוכן שלי הזיכרון של המחשב מחפש בערך כמו 395 00:18:42,780 --> 00:18:43,280 זה. 396 00:18:43,280 --> 00:18:45,070 אבל זוכר מה היא מחרוזת. 397 00:18:45,070 --> 00:18:49,279 מה אמרתי לפני שבוע מה מחרוזת בעצם היא מתחת למכסת המנוע? 398 00:18:49,279 --> 00:18:50,320 קהל: מערך של תווים. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: זה מערך של תווים, נכון? 400 00:18:52,111 --> 00:18:55,760 אז אולי יש לנו מערך של מחרוזות, אבל, בתורו, מחרוזת 401 00:18:55,760 --> 00:18:57,150 הוא מערך של תווים. 402 00:18:57,150 --> 00:19:00,010 אז אם אני באמת רוצה להיות אנאלי כשאני מצייר את התמונה הזאת, 403 00:19:00,010 --> 00:19:03,290 אני באמת צריך להיות ציור זה קצת יותר כמו זה, 404 00:19:03,290 --> 00:19:08,000 לפיה בכל אחד מאלה אינדקסים של מערך argv שלי, 405 00:19:08,000 --> 00:19:11,432 שם היא בעצמו כל מחרוזת כי הוא עצמו במערך. 406 00:19:11,432 --> 00:19:13,140 ועכשיו השקר הלבן אנחנו אומרים לי היום 407 00:19:13,140 --> 00:19:15,181 הוא שהתמונה לא נראה בדיוק כמו זה. 408 00:19:15,181 --> 00:19:19,110 למעשה, הריבועים הקטנים הם בדרך כלל מחוץ למלבנים הגדולים 409 00:19:19,110 --> 00:19:19,610 יש. 410 00:19:19,610 --> 00:19:21,280 אבל אנחנו נחזור לזה לפני זמן רב. 411 00:19:21,280 --> 00:19:25,440 אבל זה ./hello קו נטוי 0, כי להיות התו המיוחד ש 412 00:19:25,440 --> 00:19:28,310 תוחם את קצה חוט, ויש לנו עוד אחד לאחר 413 00:19:28,310 --> 00:19:29,360 שמו של Zamyla. 414 00:19:29,360 --> 00:19:30,900 אז מה זה אומר? 415 00:19:30,900 --> 00:19:33,410 >> ובכן, תן לי ללכת קדימה ו לפתוח את שתי דוגמאות אחרות 416 00:19:33,410 --> 00:19:35,220 כי הם זמינים באופן מקוון. 417 00:19:35,220 --> 00:19:40,590 אחד מהם נקרא argv1.c והשני הוא argv2. 418 00:19:40,590 --> 00:19:44,260 מדוברים בתכנית סופר פשוט ש שונה מתוכניות העבר 419 00:19:44,260 --> 00:19:47,260 בכי עכשיו אני משתמש argv עד argc וכאן. 420 00:19:47,260 --> 00:19:54,300 ועכשיו אני שילוב עם ללולאה בשורה 18, מi = 0 בעד argc. 421 00:19:54,300 --> 00:19:56,850 ומה שאני הולך לעשות עם הקו הזה של קוד כאן? 422 00:19:56,850 --> 00:19:58,270 באנגלית. 423 00:19:58,270 --> 00:20:00,510 זה כמובן מדגים שימוש בargc. 424 00:20:00,510 --> 00:20:03,670 אבל באנגלית, מה עושה זה לעשות אם אני מפעיל את תכנית זו? 425 00:20:03,670 --> 00:20:04,366 כן? 426 00:20:04,366 --> 00:20:07,386 >> קהל: זה הולך להדפיס שלך מסך פעמים רבות ככל שאתה רוצה. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: בדיוק. 428 00:20:08,260 --> 00:20:10,480 אז מה מילות ש הקלד בשורת הפקודה, זה 429 00:20:10,480 --> 00:20:13,120 הולך להקיא שלהם עליי אחד בכל שורה. 430 00:20:13,120 --> 00:20:14,370 אז בואו נלך קדימה ולעשות את זה. 431 00:20:14,370 --> 00:20:17,862 תן לי ללכת לספרייה שלי ולעשות לעשות ./argv1 argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 ועכשיו, בואו לשמור את זה פשוט. 434 00:20:21,770 --> 00:20:23,834 בואו לעשות כלום בהתחלה. 435 00:20:23,834 --> 00:20:26,750 זה עשה להדפיס את הדבר אחד, ו זה אכן השם של התכנית, 436 00:20:26,750 --> 00:20:28,240 כי זה במסגרת 0. 437 00:20:28,240 --> 00:20:33,290 אם אני עכשיו אומר foo, זה הולך לעשות שני אלה, ואם אני אומר בר foo, 438 00:20:33,290 --> 00:20:35,580 זה הולך לומר שלושה הדברים האלה. 439 00:20:35,580 --> 00:20:37,740 עכשיו זה מעניין במידה מסוימת, אולי. 440 00:20:37,740 --> 00:20:41,450 אבל זוכר argv ש הוא מערך של מחרוזות, 441 00:20:41,450 --> 00:20:45,960 אבל מחרוזת היא מערך של תווים, כדי שנוכל לקחת את הדברים צעד אחד קדימה 442 00:20:45,960 --> 00:20:48,560 ולהחיל שבסיסי היגיון ולהפוך את הקוד ש 443 00:20:48,560 --> 00:20:51,160 נראה קצת יותר ברורים מאליהם, יש להודות. 444 00:20:51,160 --> 00:20:53,540 אבל על ידי בעל מקונן לולאה, משהו דומה 445 00:20:53,540 --> 00:20:57,030 למה שאתם אולי זוכרים ממריו, למשל, אם עשית את זה בדרך זו. 446 00:20:57,030 --> 00:21:00,380 >> אז עכשיו שם לב על קו 19, אני iterating שוב על הטיעונים שלי, 447 00:21:00,380 --> 00:21:02,410 מ0 בעד argc. 448 00:21:02,410 --> 00:21:05,510 ועכשיו בשורה 21-- אני השאלת טריק מweek-- האחרונה 449 00:21:05,510 --> 00:21:11,090 אני בודק מה הוא אורכו של סוגר argv i. 450 00:21:11,090 --> 00:21:12,920 אני אחסון תשובה שבn. 451 00:21:12,920 --> 00:21:18,230 ואז אני משלב מj על עד n, כאשר j מאותחל ל -0. 452 00:21:18,230 --> 00:21:19,460 אז, כנס לספירה. 453 00:21:19,460 --> 00:21:22,335 לאחר שהשתמשת בi, אם יש לך לולאה מקוננת, לא תוכל להשתמש בi שוב, 454 00:21:22,335 --> 00:21:25,770 אחרת אתה מחטיף, שעלול להיות, הערך מחוץ ללולאה הפנימית. 455 00:21:25,770 --> 00:21:27,200 אז אני משתמש בj על ידי אמנה. 456 00:21:27,200 --> 00:21:28,020 אנו עשויים להשתמש k. 457 00:21:28,020 --> 00:21:31,080 אם יש לך יותר מ k, אתה כנראה יש יותר מדי קינון, בדרך כלל. 458 00:21:31,080 --> 00:21:33,800 אבל עכשיו, שם לב printf שלי הקו הוא מעט שונה. 459 00:21:33,800 --> 00:21:37,520 אני לא מדפיס% s, אני הדפסת% ג, אשר, כמובן, 460 00:21:37,520 --> 00:21:39,460 הוא מציין מיקום עבור char. 461 00:21:39,460 --> 00:21:40,770 >> ועכשיו שם לב תחביר זה. 462 00:21:40,770 --> 00:21:41,270 חדש. 463 00:21:41,270 --> 00:21:42,630 אנחנו לא ראינו את זה לפני. 464 00:21:42,630 --> 00:21:47,290 אבל באופן הגיוני, זה רק אומר ש לקבל את מחרוזת ith בargv 465 00:21:47,290 --> 00:21:50,067 ולקבל את JTH מה? 466 00:21:50,067 --> 00:21:50,900 קהל: תווים. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: תווים במחרוזת ש. 468 00:21:52,800 --> 00:21:57,100 זאת על ידי שימוש בסוגריים מרובעים ואחריו בסוגריים מרובעים, 469 00:21:57,100 --> 00:22:00,390 זו היא הצלילה ראשונה למחרוזות של argv, 470 00:22:00,390 --> 00:22:02,225 ולאחר מכן השני סוגריים מרובעים עם j 471 00:22:02,225 --> 00:22:06,580 הוא צלילה לתוך הדמויות של מחרוזת מסוימת שבargv. 472 00:22:06,580 --> 00:22:09,562 ואז, רק למען סדר טוב, אני מדפיס קו חדש כאן. 473 00:22:09,562 --> 00:22:12,020 אז עכשיו תן לי ללכת קדימה ולפתוח עד חלון מעט יותר גדול 474 00:22:12,020 --> 00:22:13,600 כדי שנוכל לראות את זה בפעולה. 475 00:22:13,600 --> 00:22:15,700 תן לי להיכנס לתיקייה ש. 476 00:22:15,700 --> 00:22:22,550 ועכשיו לעשות לעשות argv-2-- whoops-- לעשות argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 הזן. 478 00:22:23,110 --> 00:22:24,860 וזה קצת קשה לקרוא בצורה אנכית, 479 00:22:24,860 --> 00:22:27,920 אבל זה אכן שמו של תכנית, ואחריו שורה ריקה. 480 00:22:27,920 --> 00:22:30,210 עכשיו תנו לי ללכת ולעשות foo. 481 00:22:30,210 --> 00:22:33,210 בדומה לכך קשה לקריאה, אבל זה אכן הדפסת תו אחד בכל שורה. 482 00:22:33,210 --> 00:22:36,780 ואם אני עושה את הבר, זה עכשיו הדפסה אלה שורה אחרת השורה. 483 00:22:36,780 --> 00:22:40,140 אז ממסעדה כאן היא לא כל כך הרבה כי, וואו, תסתכל על טריק חדש מסודר זה 484 00:22:40,140 --> 00:22:44,750 שבו אתה יכול לקבל בתוכן של דמויות הספציפיות של מערך, 485 00:22:44,750 --> 00:22:48,380 אלא איך אנחנו לוקחים בסיסיים אלה רעיונות כמו אינדקס למערך, 486 00:22:48,380 --> 00:22:51,620 ולאחר מכן לאינדקס ל מערך שהיה במערך ש, 487 00:22:51,620 --> 00:22:56,180 ורק יישום אותם הרעיונות ל דוגמאות מעט יותר מתוחכמות. 488 00:22:56,180 --> 00:22:59,560 אבל את היסודות באמת יש לא השתנה, אפילו מאז שבוע שעבר. 489 00:22:59,560 --> 00:23:02,350 >> עכשיו זה סוג של הזמן, שב, זוכר, בשבוע אפס 490 00:23:02,350 --> 00:23:04,110 שיחקנו עם ספר טלפונים כמו זה. 491 00:23:04,110 --> 00:23:06,670 ולמרות שזה ברור ש חתיכות פיזיות של נייר, 492 00:23:06,670 --> 00:23:09,150 סוג של שאתה יכול לחשוב ספר טלפונים כמערך. 493 00:23:09,150 --> 00:23:12,770 אין ספק, אם היית reimplement זה חתיכות פיסות נייר הללו 494 00:23:12,770 --> 00:23:15,260 במחשב, כנראה היית משתמש במשהו 495 00:23:15,260 --> 00:23:20,270 כמו מערך כדי לאחסן את כל אלה שמות ומספרים מכל הדרך 496 00:23:20,270 --> 00:23:23,800 באמצעות Z. אז זה נחמד, כי היא מאפשרת לנו הזדמנות, 497 00:23:23,800 --> 00:23:28,310 אולי, לשקול כיצד תוכל למעשה ליישם משהו כזה. 498 00:23:28,310 --> 00:23:31,250 כמו בסדרה של דלתות כאן. 499 00:23:31,250 --> 00:23:36,380 אז אם אני could-- אנחנו צריכים אחד להתנדב לבוא בעד. 500 00:23:36,380 --> 00:23:36,980 בואו נראה. 501 00:23:36,980 --> 00:23:40,650 פנים לא מוכרים אולי, פנים לא מוכרים אולי. 502 00:23:40,650 --> 00:23:42,090 מה דעתך על בכתום? 503 00:23:42,090 --> 00:23:42,680 כאן. 504 00:23:42,680 --> 00:23:45,870 חולצה כתומה, באה על עד. 505 00:23:45,870 --> 00:23:52,230 >> בואו נלך קדימה עכשיו ומהלך דלתות אלה לצד, 506 00:23:52,230 --> 00:23:54,020 להעביר אלה את הדרך לרגע. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 מה שמך? 509 00:23:57,760 --> 00:23:58,580 >> אג'יי: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Malan: אג'יי. 511 00:23:58,655 --> 00:23:58,680 דוד. 512 00:23:58,680 --> 00:23:59,451 נחמד לפגוש אותך. 513 00:23:59,451 --> 00:23:59,950 בסדר. 514 00:23:59,950 --> 00:24:04,500 אז יש לנו מאחורי שישה אלה דלתות דיגיטלית על screen-- 515 00:24:04,500 --> 00:24:07,810 או, לייתר דיוק, שבע דלתות על screen-- חבורה של מספרים שלמות. 516 00:24:07,810 --> 00:24:10,099 ואמרתי לך שום דבר בadvance-- הסכים? 517 00:24:10,099 --> 00:24:11,140 אג'יי: שום דבר מראש. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: כל מה שאני רוצה שתעשה עכשיו הוא למצוא עבורי, ועבורנו, 519 00:24:14,730 --> 00:24:20,920 באמת, המספר 50, צעד אחד בכל פעם. 520 00:24:20,920 --> 00:24:21,830 >> אג'יי: מספר 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: המספר 50. 522 00:24:22,580 --> 00:24:24,746 ואתה יכול לחשוף מה מאחורי כל אחת מהדלתות האלה 523 00:24:24,746 --> 00:24:27,930 פשוט על ידי נגיעה בו עם אצבע. 524 00:24:27,930 --> 00:24:31,364 לעזאזל. [שחוק] 525 00:24:31,364 --> 00:24:34,560 >> [מחיאות כפות] 526 00:24:34,560 --> 00:24:39,540 >> מאוד יפה מאוד. 527 00:24:39,540 --> 00:24:40,400 אישור. 528 00:24:40,400 --> 00:24:44,090 יש לנו מתנה יפה הפרס לך כאן. 529 00:24:44,090 --> 00:24:46,520 הבחירה שלך של סרטים ש דן בשבוע שעבר. 530 00:24:46,520 --> 00:24:47,362 >> אג'יי: אה, גבר. 531 00:24:47,362 --> 00:24:49,050 אה, אף פעם לא ראיתי Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 בסדר. 534 00:24:50,140 --> 00:24:53,790 אז תחזיק מעמד רק רגע אחד. 535 00:24:53,790 --> 00:24:57,430 How-- בואו נעשה את זה moment-- למייד 536 00:24:57,430 --> 00:25:00,412 איך אתה הולך על מציאת המספר 50? 537 00:25:00,412 --> 00:25:01,370 אג'יי: אני בחרתי באופן אקראי. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: אז אתה בחרת באופן אקראי ויש לי מזל. 539 00:25:03,420 --> 00:25:03,790 אג'יי: כן. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: אישור. 541 00:25:04,456 --> 00:25:05,050 מצוין. 542 00:25:05,050 --> 00:25:08,470 אז עכשיו, שיש לך לא קיבל מזל, מה עוד 543 00:25:08,470 --> 00:25:10,210 אולי קרה מאחורי הדלתות האלה? 544 00:25:10,210 --> 00:25:12,930 אז אם אני הולך קדימה ו לחשוף את המספרים האלה כאן, 545 00:25:12,930 --> 00:25:15,180 הם בעצם בסדר אקראיים. 546 00:25:15,180 --> 00:25:17,750 יש לך את הטוב ביותר ויכול נעשה, בכנות, הוא על ידי, סופו של דבר, 547 00:25:17,750 --> 00:25:19,410 במקרה הגרוע ביותר, לבדוק את כולם. 548 00:25:19,410 --> 00:25:23,000 אז יש לך סופר בר מזל, ש זה לא מה שהיינו מכנה אלגוריתם. 549 00:25:23,000 --> 00:25:24,730 כן, מזל טוב. 550 00:25:24,730 --> 00:25:27,010 אבל עכשיו let's-- הומורי, אם אתה יכול. 551 00:25:27,010 --> 00:25:28,310 בואו נלך לכרטיסייה זו כאן. 552 00:25:28,310 --> 00:25:31,460 והנה המספרים באופן ברור מה שנראה בסדר אקראי, 553 00:25:31,460 --> 00:25:32,280 והם היו. 554 00:25:32,280 --> 00:25:35,160 אבל עכשיו אם אני במקום תביעה כי מאחורי דלתות אלה 555 00:25:35,160 --> 00:25:39,070 הם מספרים שמסודרים. 556 00:25:39,070 --> 00:25:41,780 המטרה עכשיו היא גם תמצא אותנו המספר 50. 557 00:25:41,780 --> 00:25:45,910 אבל לעשות את זה אלגוריתמי, ו לספר לנו איך אתה הולך על זה. 558 00:25:45,910 --> 00:25:48,020 ואם אתה מוצא את זה, אתה שומר את הסרט. 559 00:25:48,020 --> 00:25:49,520 אתה לא מוצא את זה, אתה נותן לו בחזרה. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 אג'יי: אז אני הולך לבדוק את הקצוות הראשון, כדי לקבוע אם there's-- 562 00:25:58,112 --> 00:26:02,048 [שחוק ומחיאות כפות] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: הנה לך. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 בואו נסתכל על אחד קודמיו של אג'יי, 567 00:26:21,700 --> 00:26:25,450 שון, שלא היה די בר מזל. 568 00:26:25,450 --> 00:26:28,670 אוקיי, אז המשימה שלך כאן, שון, הוא הבא. 569 00:26:28,670 --> 00:26:32,970 יש לי חבוי מאחורי אלה דלתות המספר שבע, 570 00:26:32,970 --> 00:26:37,200 אבל חבוי בחלק מהדלתות האלה כמו גם מספרים שאינם שליליים אחרים. 571 00:26:37,200 --> 00:26:40,730 והמטרה שלך היא לחשוב על זה שורה העליונה של מספרים כפשוט מערך. 572 00:26:40,730 --> 00:26:43,590 אנחנו רק רצף של חתיכות נייר עם מספרים שמאחוריהם. 573 00:26:43,590 --> 00:26:47,640 והמטרה שלך היא, רק באמצעות העליון מערך כאן, תמצא לי את המספר שבע. 574 00:26:47,640 --> 00:26:51,200 ואז נהיה לנו הולכים לביקורת איך אתה הולך על עושה את זה. 575 00:26:51,200 --> 00:26:52,920 מצא אותנו המספר שבע, בבקשה. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 מס ' 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 זה לא שאלה מכשילה. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 בשלב זה הציון שלך הוא לא מאוד טוב, אז אתה יכול גם להמשיך. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 ללכת על. 590 00:27:39,802 --> 00:27:42,510 למען האמת, אני לא יכול שלא לתהות מה גם אתה חושב על. 591 00:27:42,510 --> 00:27:44,990 >> שון: אני יכול לקחת מהשורה העליונה בלבד. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: רק השורה העליונה. 593 00:27:46,240 --> 00:27:47,281 אז יש לך שלושה שמאל. 594 00:27:47,281 --> 00:27:48,310 אז תמצא אותי 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [קהל צועק SUGGESTIONS] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 אז את שני אלה היו מדהימים מסיבות שונות מאוד. 599 00:28:26,130 --> 00:28:29,150 אז זה המקום שבנו נפסק לפני רגע, 600 00:28:29,150 --> 00:28:32,530 ותובנה המפתח כאן הייתה היו דלתות אלה מספרים 601 00:28:32,530 --> 00:28:37,390 מאחוריהם שמוינו, אידיאלי אוכל מוכן עבורו הוא שאתה יכול לעשות 602 00:28:37,390 --> 00:28:39,670 ביסודו טוב יותר ב example-- השני 603 00:28:39,670 --> 00:28:42,380 ואכן, זה היה שון של ניסיון ראשון עם מספרים אקראיים 604 00:28:42,380 --> 00:28:45,460 רק before-- כאבל ברגע מספרים אלה מסודרים, 605 00:28:45,460 --> 00:28:47,980 ממש כמו בספר טלפונים, מה שאתה יכול כמובן לעשות? 606 00:28:47,980 --> 00:28:50,090 או איך אתה יכול למנף את הידע הזה? 607 00:28:50,090 --> 00:28:51,530 כן. 608 00:28:51,530 --> 00:28:54,910 >> קהל: אתה הולך באמצע הדרך [לא ברור]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: כן. 610 00:28:55,660 --> 00:28:56,160 בדיוק. 611 00:28:56,160 --> 00:28:59,680 אז האינסטינקט הראשוני של אג'יי היה כדי לבדוק את הקצוות, ככל הזכור לי, 612 00:28:59,680 --> 00:29:02,320 ואז אנחנו סוג של מוגמר הדוגמא במהירות. 613 00:29:02,320 --> 00:29:05,220 אבל אם התחלנו לעשות את זה יותר באופן שיטתי לאורך שורות אלה, 614 00:29:05,220 --> 00:29:07,860 אך החל אולי ב אמצע, בגלל שהם מסודרים, 615 00:29:07,860 --> 00:29:10,900 ברגע שאנו חושפים מספר 16, ולכן אנו יודע-- 616 00:29:10,900 --> 00:29:14,850 ובואו נעשה בדיוק that-- לכן יודע ש50, במקרה של היום, 617 00:29:14,850 --> 00:29:16,080 חייב להיות לצד ימין. 618 00:29:16,080 --> 00:29:18,735 אז בדיוק כמו בשבוע שאפס כאשר קרענו את ספר טלפונים במחצית 619 00:29:18,735 --> 00:29:21,490 וזרקתי את מחצית בעיה משם, אותו הרעיון כאן. 620 00:29:21,490 --> 00:29:23,680 אנחנו יכולים לזרוק המחצית של הבעיה משם. 621 00:29:23,680 --> 00:29:25,730 וכנראה מה שאתה אולי לעשות אלגוריתמי, 622 00:29:25,730 --> 00:29:28,710 ברגע שאתה יודע ש50 חייבים להיות בצד הימין, אם זה בכל מקום, 623 00:29:28,710 --> 00:29:31,390 הוא לנסות שם, באמצע של הדלתות שנותרו. 624 00:29:31,390 --> 00:29:33,450 כמובן, 50 הוא גבוהים יותר מ 42, כדי שנוכל 625 00:29:33,450 --> 00:29:36,060 לזרוק זה שנותר רבע מהבעיה משם, 626 00:29:36,060 --> 00:29:38,510 ולבסוף, לזהות משהו כמו 50. 627 00:29:38,510 --> 00:29:41,050 אבל בדיוק כמו עם ספר טלפונים, מספרים אלה 628 00:29:41,050 --> 00:29:44,560 ניתנו לנו כבר ב בסדר ממוין, מה שמשאיר אותנו 629 00:29:44,560 --> 00:29:47,450 עם השאלה, איך אתה לקבל את הדברים בצו מסודרים? 630 00:29:47,450 --> 00:29:49,640 ולמען אמת, באיזה מחיר? 631 00:29:49,640 --> 00:29:51,390 זה דבר אחד להיות מסר את ספר טלפונים 632 00:29:51,390 --> 00:29:54,810 ואז להרשים את החברים שלך על ידי מציאת מספר טלפון ממש מהר, נכון? 633 00:29:54,810 --> 00:29:58,520 קורע את 32 דפים כדי למצוא אדם מתוך 4 מליארד דפים, 634 00:29:58,520 --> 00:30:00,470 אמרנו הייתה דוגמא אחת קיצונית. 635 00:30:00,470 --> 00:30:03,320 אבל כמה זמן זה לקח Verizon כדי למיין שספר טלפונים? 636 00:30:03,320 --> 00:30:06,170 כמה זמן לקח לנו כדי למיין שבעת המספרים האלה? 637 00:30:06,170 --> 00:30:10,110 זו שאלה שיש לנו כך התעלם רחוק לחלוטין. 638 00:30:10,110 --> 00:30:12,330 >> אז בואו לענות על שאלה זו כעת. 639 00:30:12,330 --> 00:30:15,920 ואנחנו כולנו מסרטים עכשיו, אבל יש לנו כמה כדורי לחץ. 640 00:30:15,920 --> 00:30:19,480 אם, לומר, שמונה מתנדב לא אכפת שהצטרף אלינו לכאן? 641 00:30:19,480 --> 00:30:24,100 בואו נלך קדימה ולעשות, מה דעתך על ארבעה מכם, שלוש מכם כאן? 642 00:30:24,100 --> 00:30:25,290 קבל כמה פרצופים חדשים. 643 00:30:25,290 --> 00:30:27,220 וארבעה שלך שם? 644 00:30:27,220 --> 00:30:30,760 וnow-- בואו לא ההטיה here-- ו מספר שמונה לכאן בסופו של הדבר. 645 00:30:30,760 --> 00:30:32,060 בואו למעלה. 646 00:30:32,060 --> 00:30:32,560 בסדר. 647 00:30:32,560 --> 00:30:37,480 אז מה יש לנו כאן ל כל אחד מכם הוא מספר. 648 00:30:37,480 --> 00:30:40,055 אם אתה רוצה ללכת קדימה, לקחת את המספר הזה. 649 00:30:40,055 --> 00:30:40,763 מה שמך? 650 00:30:40,763 --> 00:30:41,950 >> ארטי: ארטי. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: ארטי, בסדר. 652 00:30:43,100 --> 00:30:44,297 אתה מספר 1. 653 00:30:44,297 --> 00:30:45,310 >> אמין: אמין. 654 00:30:45,310 --> 00:30:46,060 DAVID Malan: אמין. 655 00:30:46,060 --> 00:30:46,820 דוד. 656 00:30:46,820 --> 00:30:47,530 אתה מספר 2. 657 00:30:47,530 --> 00:30:49,100 וללכת קדימה, כפי שאני מושיט אתה הגיליונות של נייר, 658 00:30:49,100 --> 00:30:52,130 בשורה עצמכם מול המוזיקה עומד באותו סדר כמו שם למעלה. 659 00:30:52,130 --> 00:30:52,660 >> אנדי: היי, אנדי. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: אנדי, זה נחמד לראות אותך. 661 00:30:53,970 --> 00:30:54,520 מספר 3. 662 00:30:54,520 --> 00:30:55,310 >> יעקב: יעקב. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: יעקב, מספר 4. 664 00:30:56,760 --> 00:30:57,549 ברוכים הבאים על סיפון. 665 00:30:57,549 --> 00:30:58,090 גרנט: גרנט. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: גרנט. 667 00:30:58,881 --> 00:31:00,348 מספר 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, מספר 6. 670 00:31:02,766 --> 00:31:03,589 >> פרנסס: פרנסס. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: פרנסס, מספר 7. 672 00:31:04,880 --> 00:31:05,200 ו? 673 00:31:05,200 --> 00:31:05,830 >> רחל: רחל. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: רחל, מספר 8. 675 00:31:06,815 --> 00:31:07,100 בסדר. 676 00:31:07,100 --> 00:31:08,766 קדימה, לקבל את עצמך בצו זה. 677 00:31:08,766 --> 00:31:11,440 תן לי לשים אחד שנותר מוסיקה לעמוד במקום. 678 00:31:11,440 --> 00:31:13,670 איפה אתה צריך לעמוד? 679 00:31:13,670 --> 00:31:14,170 אישור. 680 00:31:14,170 --> 00:31:18,710 קדימה, פשוט לשים את המספרים שלך שבו הקהל יכול לראות אותם על, 681 00:31:18,710 --> 00:31:20,340 המוזיקה עומדת כלפי חוץ. 682 00:31:20,340 --> 00:31:27,240 ואני מקווה, הראשון שלנו שפיות בדיקת here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 הו, הו. 684 00:31:27,890 --> 00:31:29,070 חכה רגע. 685 00:31:29,070 --> 00:31:31,140 אין לנו 8. 686 00:31:31,140 --> 00:31:35,180 אני צריך לפינוי לך מ הדוגמא איכשהו. 687 00:31:35,180 --> 00:31:35,680 מס ' 688 00:31:35,680 --> 00:31:36,940 לא, זה בסדר. 689 00:31:36,940 --> 00:31:37,890 בואו נראה. 690 00:31:37,890 --> 00:31:38,880 אנחנו יכולים לעשות את זה. 691 00:31:38,880 --> 00:31:39,440 Stand by. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 הנה אנחנו מתחילים. 694 00:31:45,740 --> 00:31:46,800 נכון. 695 00:31:46,800 --> 00:31:47,360 בסדר. 696 00:31:47,360 --> 00:31:50,260 אז, עכשיו יש לנו 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 אישור. 698 00:31:50,760 --> 00:31:51,360 מצוין. 699 00:31:51,360 --> 00:31:54,400 >> אז השאלה שעל הפרק היא, ב מה עלות, ובאמצעות מה שיטה, 700 00:31:54,400 --> 00:31:58,580 אנחנו יכולים למעשה למיין את המספרים האלה כאן כך שאנו סוג של יכולים לעבוד לאחור, 701 00:31:58,580 --> 00:32:02,759 סופו של דבר, וdecide-- האם זה באמת מרשים, האם זה באמת יעיל, 702 00:32:02,759 --> 00:32:04,550 שאני יכול להתחלק ו לכבוש ספר טלפונים? 703 00:32:04,550 --> 00:32:06,716 האם זה באמת יעיל, כי אני יכול להפריד ולמשול 704 00:32:06,716 --> 00:32:08,600 חתיכות דיגיטליות אלה נייר על הלוח, 705 00:32:08,600 --> 00:32:14,500 אם אולי זה הולך לעלות לנו מזל בזמן או מחזורי אנרגיה או CPU 706 00:32:14,500 --> 00:32:17,340 כדי לקבל למעשה הנתונים שלנו לקצת סדר ממוין? 707 00:32:17,340 --> 00:32:18,930 אז בואו לשאול את השאלה הזאת. 708 00:32:18,930 --> 00:32:22,077 >> את כל כך ראשונה, מספרים אלה הם בפחות או יותר בסדר אקראיים, 709 00:32:22,077 --> 00:32:24,160 ואני הולך להציע אלגוריתם אחד, או תהליך 710 00:32:24,160 --> 00:32:25,970 באמצעותו אנו יכולים למיין את האנשים האלה. 711 00:32:25,970 --> 00:32:28,100 אני הולך להתקרב זה די בתמימות. 712 00:32:28,100 --> 00:32:30,730 ואני הולך להכיר שזה סוג של הרבה בשבילי 713 00:32:30,730 --> 00:32:32,890 לעטוף את דעתי סביב כל הנתונים שנקבעו בפעם אחת. 714 00:32:32,890 --> 00:32:33,640 אבל אתה יודע מה? 715 00:32:33,640 --> 00:32:37,450 אני הולך לעשות כמה תיקונים שוליים מאוד פשוטים. 716 00:32:37,450 --> 00:32:41,152 4 ו -2 מקולקלים, אם מטרה היא ללכת מ1 בעד 8. 717 00:32:41,152 --> 00:32:41,860 אז אתה יודע מה? 718 00:32:41,860 --> 00:32:43,776 אני הולך יש לך חבר 'ה להחליף, אם תעבור 719 00:32:43,776 --> 00:32:46,380 מבחינה פיזית עמדות ו החתיכות שלך נייר. 720 00:32:46,380 --> 00:32:47,894 עכשיו 4 ו -6, אלה הם בסדר. 721 00:32:47,894 --> 00:32:49,060 אני הולך לעזוב להיות אלה. 722 00:32:49,060 --> 00:32:50,227 6 ו -8, אלה הם בסדר. 723 00:32:50,227 --> 00:32:51,185 הולך להשאיר אותם להיות. 724 00:32:51,185 --> 00:32:52,170 8 and1, מקולקל. 725 00:32:52,170 --> 00:32:54,790 אם שני לא הייתי מתנגד להחליף. 726 00:32:54,790 --> 00:32:57,300 עכשיו 8 ו -3, אם אתם יכולים להחליף. 727 00:32:57,300 --> 00:32:59,320 8 ו -7, אם אתם יכולים להחליף. 728 00:32:59,320 --> 00:33:01,790 ו8 ו -5, אם אתם יכולים להחליף. 729 00:33:01,790 --> 00:33:03,980 >> עכשיו, אני עושה? 730 00:33:03,980 --> 00:33:05,200 לא, ברור שלא. 731 00:33:05,200 --> 00:33:07,880 אבל אני עשיתי מצב טוב יותר, נכון? 732 00:33:07,880 --> 00:33:09,430 מה השם שלך שוב, מספר 8? 733 00:33:09,430 --> 00:33:10,055 >> רחל: רחל. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: אז יש רחל יעילות בעבע די רחוק, 735 00:33:12,850 --> 00:33:15,660 כל הדרך עד לסוף המערך של מספרים שלי כאן. 736 00:33:15,660 --> 00:33:17,310 וכך הבעיה שנפתרת סוג של. 737 00:33:17,310 --> 00:33:21,670 עכשיו, באופן ברור, 2 עדיין צריכה להזיז קצת, ו4 ו -6 ו1. 738 00:33:21,670 --> 00:33:24,420 אבל נדמה לי שקבלתי קצת יותר קרוב לפתרון. 739 00:33:24,420 --> 00:33:26,790 אז בואו ניישם את זה באותו היוריסטי נאיבי שוב. 740 00:33:26,790 --> 00:33:27,690 2 ו -4, על אישור. 741 00:33:27,690 --> 00:33:28,810 4 ו -6, על אישור. 742 00:33:28,810 --> 00:33:29,930 6 ו 1, מ"מ מ"מ. 743 00:33:29,930 --> 00:33:32,230 בואו החלפה. 744 00:33:32,230 --> 00:33:33,200 6 ו -3, מ"מ מ"מ. 745 00:33:33,200 --> 00:33:34,420 בואו החלפה. 746 00:33:34,420 --> 00:33:35,580 6 ו -7 הוא על אישור. 747 00:33:35,580 --> 00:33:36,590 7 ו -5, nope. 748 00:33:36,590 --> 00:33:37,790 בואו החלפה. 749 00:33:37,790 --> 00:33:38,470 ועכשיו 7 ו -8. 750 00:33:38,470 --> 00:33:39,862 ואיך קוראים לך שוב? 751 00:33:39,862 --> 00:33:40,570 פרנסס: פרנסס. 752 00:33:40,570 --> 00:33:41,445 DAVID Malan: פרנסס. 753 00:33:41,445 --> 00:33:44,230 אז עכשיו פרנסס הוא באפילו טוב יותר עמדה, כי עכשיו 7 ו -8 754 00:33:44,230 --> 00:33:46,440 כהלכה מבעבעים עד לקצה. 755 00:33:46,440 --> 00:33:47,510 אז 2 ו -4, על אישור. 756 00:33:47,510 --> 00:33:48,720 4 ו1, ההחלפה בואו. 757 00:33:48,720 --> 00:33:50,410 4 ו 3, ההחלפה בואו. 758 00:33:50,410 --> 00:33:51,550 4 ו -6, אתה בסדר. 759 00:33:51,550 --> 00:33:53,340 6 ו -5, ההחלפה בואו. 760 00:33:53,340 --> 00:33:54,590 ועכשיו החבר 'ה האלה הם טובים. 761 00:33:54,590 --> 00:33:55,780 אנחנו כמעט שם. 762 00:33:55,780 --> 00:33:57,706 2 ו -1, מקולקל, כך להחליף. 763 00:33:57,706 --> 00:33:59,080 ועכשיו תן לי לעשות בדיקת שפיות. 764 00:33:59,080 --> 00:34:03,080 2 ו -3, 3 ו -4, 4 ו 5, 5 ו -6, 6 ו -7, 8. 765 00:34:03,080 --> 00:34:05,060 אוקיי, אז אנחנו נעשה. 766 00:34:05,060 --> 00:34:09,310 >> אבל באיזה מחיר עשה לי למיין את המספרים האלה כאן? 767 00:34:09,310 --> 00:34:13,960 ובכן, כמה צעדים עשה לי פוטנציאל לקחת בעת מיון האנשים האלה? 768 00:34:13,960 --> 00:34:15,710 ובכן, אנחנו נחזור לשאלה זו. 769 00:34:15,710 --> 00:34:18,030 אבל, בכנות, אם יש לך קצת משועמם, זה 770 00:34:18,030 --> 00:34:22,270 סוג של חשיפה בכי זה לא היה אולי האלגוריתם יעיל ביותר. 771 00:34:22,270 --> 00:34:25,230 ואכן, בכנות, אני מזיע כל עוד הליכה הלוך ושוב. 772 00:34:25,230 --> 00:34:26,639 זה לא מרגיש יעיל במיוחד. 773 00:34:26,639 --> 00:34:27,805 אז בואו ננסה משהו אחר. 774 00:34:27,805 --> 00:34:31,870 אם אתם יכולים לאפס את עצמכם לשמונה ערכים אלה. 775 00:34:31,870 --> 00:34:32,969 עבודה טובה. 776 00:34:32,969 --> 00:34:36,570 >> בואו נסתכל באופן דיגיטלי, רק רגע לפני שאנחנו מנסים משהו אחר, 777 00:34:36,570 --> 00:34:38,179 על מה בדיוק קרה. 778 00:34:38,179 --> 00:34:41,330 עד כאן, אתה עומד לראות ויזואליזציה של שמונת בני אדם אלה 779 00:34:41,330 --> 00:34:44,719 לפי כחול ואדום ברים מייצגים מספרים. 780 00:34:44,719 --> 00:34:46,670 הגבוה על הבר, גדול יותר במספר. 781 00:34:46,670 --> 00:34:48,510 קצר על הבר, קטן המספר. 782 00:34:48,510 --> 00:34:51,560 ומה שאתה הולך לראות הוא ב בסדר אקראי יותר משמונה מהם. 783 00:34:51,560 --> 00:34:55,830 אתה הולך לראות את הברים אלה מקבל מסודרים על ידי אותו אלגוריתם, 784 00:34:55,830 --> 00:34:59,890 או סט של הוראות, אשר אנחנו קוראים לכאן ואילך מיון בועות. 785 00:34:59,890 --> 00:35:04,000 אז שם לב, בכל שנייה או כך, שני ברים מאירים את באדום, 786 00:35:04,000 --> 00:35:05,590 מתבצעים השוואה על ידי המחשב. 787 00:35:05,590 --> 00:35:08,630 ואז אם בר והגדול בר קטן מקולקל, 788 00:35:08,630 --> 00:35:11,220 הם נמצאים בהחליפו לי. 789 00:35:11,220 --> 00:35:15,120 >> עכשיו זה משעמם להפליא כדי לצפות בזה, ללא ספק, 790 00:35:15,120 --> 00:35:18,630 במשך זמן רב מאוד, אבל שמתי לב takeaway-- ברים גדולים נעו ימינה, 791 00:35:18,630 --> 00:35:20,460 ברים קטנים נעים שמאלה. 792 00:35:20,460 --> 00:35:23,380 בואו להפיל את התהליך הזה ולזרז את זה 793 00:35:23,380 --> 00:35:27,330 להיות הרבה יותר מהר, כדי שנוכל לקבל תחושה של מה ברמה גבוהה, 794 00:35:27,330 --> 00:35:29,970 אכן, מיון בועות הוא עושה. 795 00:35:29,970 --> 00:35:33,150 ואכן, זה מבעבע עד בצד ימין של הרשימה, 796 00:35:33,150 --> 00:35:35,260 או המערך, הברים גדולים יותר. 797 00:35:35,260 --> 00:35:40,020 ולהפך, בארים הקטנים הם מבעבע את דרכם למטה מהשמאל, 798 00:35:40,020 --> 00:35:42,950 אם כי בקצב מהיר יותר ממה שעשינו בעבר. 799 00:35:42,950 --> 00:35:45,850 אז, קשה יותר לראות עם בני אדם, אבל מבחינה ויזואלית זה אכן מה ש 800 00:35:45,850 --> 00:35:46,540 קורה. 801 00:35:46,540 --> 00:35:49,110 >> אבל בואו ננסה ביסוד גישה שונה עכשיו. 802 00:35:49,110 --> 00:35:52,387 בואו ננסה שונה אלגוריתם לפיו אנחנו צריכים אותך 803 00:35:52,387 --> 00:35:59,640 חבר 'ה תתחיל באלה מקוריים עמדות, שהיה צו זה כאן. 804 00:35:59,640 --> 00:36:00,827 ובואו נלך קדימה עכשיו. 805 00:36:00,827 --> 00:36:02,910 ואני הולך לעשות משהו אפילו פשוט יותר, נכון? 806 00:36:02,910 --> 00:36:06,710 במבט לאחור, החלפת pairwise שוב ושוב, כמעט קטן וחכם. 807 00:36:06,710 --> 00:36:10,460 בואו נעשה עוד יותר בתמימות דברים, שבו אם אני רוצה למיין את האנשים האלה, 808 00:36:10,460 --> 00:36:12,560 תן לי רק להמשיך לחפש לאלמנט הקטן ביותר. 809 00:36:12,560 --> 00:36:14,570 אז עכשיו, 4 הוא המספר הקטן ביותר שראיתי. 810 00:36:14,570 --> 00:36:15,695 אני הולך לזכור את זה. 811 00:36:15,695 --> 00:36:17,750 לא, 2 הוא טובים יותר, וזוכרים את זה. 812 00:36:17,750 --> 00:36:20,730 1 הוא קטן עוד יותר. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 אישור. 815 00:36:22,470 --> 00:36:23,750 One-- מה השם שלך שוב? 816 00:36:23,750 --> 00:36:24,400 >> ארטי: ארטי. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Malan: ארטי. 818 00:36:24,610 --> 00:36:25,460 אז, ארטי, קדימה. 819 00:36:25,460 --> 00:36:27,043 אני הולך להוציא אותך מהקו. 820 00:36:27,043 --> 00:36:28,400 אם הייתי יכול לחזור לכאן. 821 00:36:28,400 --> 00:36:30,790 ואני צריך לפנות לו מקום. 822 00:36:30,790 --> 00:36:32,040 יש לנו נקודת החלטה כאן. 823 00:36:32,040 --> 00:36:36,000 איך ייתכן שאנחנו עושים מקום לארטי כאן בתחילת שבו מספר 1 שייך? 824 00:36:36,000 --> 00:36:36,770 >> קהל: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: בסדר, אנחנו יכול להעביר את כולם. 826 00:36:38,950 --> 00:36:40,860 אבל מציע ייעול. 827 00:36:40,860 --> 00:36:43,410 זה מרגיש קצת מעצבן בשבילי לשאול את ארבעה אנשים 828 00:36:43,410 --> 00:36:44,620 להעביר את כל הדרך למטה. 829 00:36:44,620 --> 00:36:45,520 מה עוד אני יכול לעשות? 830 00:36:45,520 --> 00:36:46,360 >> קהל: לעבור אותם. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: לעבור אותם. 832 00:36:46,850 --> 00:36:47,900 ואיך קוראים לך שוב? 833 00:36:47,900 --> 00:36:48,441 >> יעקב: יעקב. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: יעקב, לעבור. 835 00:36:50,330 --> 00:36:54,440 הרבה יותר יעיל, רק כדי להיות החלפת מקומות יעקב עם ארטי, 836 00:36:54,440 --> 00:36:56,710 בניגוד למכריח כל ארבעת האנשים האלה, 837 00:36:56,710 --> 00:36:58,734 תודה רבה לך, ל המיקום הנכון שלהם. 838 00:36:58,734 --> 00:37:01,150 מה שיפה ארטי עכשיו, הוא במיקום הנכון שלו. 839 00:37:01,150 --> 00:37:02,060 בואו נעשה את זה שוב. 840 00:37:02,060 --> 00:37:03,730 2, זה המספר הקטן ביותר שראיתי. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 אישור. 843 00:37:06,190 --> 00:37:07,467 2 הוא בהחלט הקטנים ביותר. 844 00:37:07,467 --> 00:37:08,550 לא צריך לעשות את כל עבודה. 845 00:37:08,550 --> 00:37:09,320 בואו נעשה את זה שוב. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 הקטן ביותר? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 לא ולא. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 אוו. 852 00:37:12,220 --> 00:37:13,420 תן לי לזכור 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 תן לי לזכור 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 המספר הקטן ביותר יש לי ראינו במעבר זה הוא 3. 857 00:37:18,490 --> 00:37:20,340 אם הייתי בא והלאה. 858 00:37:20,340 --> 00:37:21,986 לאן אנחנו הולכים לשים לך? 859 00:37:21,986 --> 00:37:22,860 ואיך קוראים לך? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, אנחנו אצטרך לפנות אותך. 862 00:37:25,780 --> 00:37:28,670 אבל זה יעיל יותר, רק כדי להחליף שני אנשים, 863 00:37:28,670 --> 00:37:31,850 מאשר יש מספר רב של אנשים למעשה לעקוף מעל. 864 00:37:31,850 --> 00:37:32,850 עכשיו בואו נעשה את זה שוב. 865 00:37:32,850 --> 00:37:34,980 אני הולך כדי לבחור 4, כך צא החוצה. 866 00:37:34,980 --> 00:37:36,540 ומי הולך לעבור? 867 00:37:36,540 --> 00:37:37,750 מספר 8, כמובן. 868 00:37:37,750 --> 00:37:40,260 אם אני עכשיו למצוא מספר 5, צא החוצה. 869 00:37:40,260 --> 00:37:42,104 מספר 8 הולך לקבל פונתה שוב. 870 00:37:42,104 --> 00:37:43,770 עכשיו אני הולך למצוא את המספר 6 במקום. 871 00:37:43,770 --> 00:37:44,410 7 במקום. 872 00:37:44,410 --> 00:37:45,080 8 במקום. 873 00:37:45,080 --> 00:37:48,590 >> מה בדיוק עשינו כרגע הוא משהו שנקרא מיון בחירה, 874 00:37:48,590 --> 00:37:52,560 ואם אנחנו לדמיין את זה, זה הולך להרגיש קצת שונה. 875 00:37:52,560 --> 00:37:56,800 בואו נלך קדימה ומזה תפריט כאן, visualization-- זה 876 00:37:56,800 --> 00:38:02,920 בואו לשנות את זה to-- בחייך, פיירפוקס. 877 00:38:02,920 --> 00:38:07,610 בואו לשנות את זה למיון בחירה. 878 00:38:07,610 --> 00:38:11,830 ובואו לזרז אותו כמו קודם, ולהתחיל להדמיה עכשיו. 879 00:38:11,830 --> 00:38:13,990 ויש לו אלגוריתם זה תחושה שונה אליה. 880 00:38:13,990 --> 00:38:16,480 בכל איטרציה, בכנות, זה אפילו יותר פשוט. 881 00:38:16,480 --> 00:38:18,385 אני רק בחירת האלמנט הקטן ביותר. 882 00:38:18,385 --> 00:38:21,510 עכשיו, בכנות, יש לי קצת מזל ש זמן, בכך שהוא מסודרים על סופר מהיר. 883 00:38:21,510 --> 00:38:22,660 האלמנטים היו אקראיים. 884 00:38:22,660 --> 00:38:25,520 זה לא, כפי שבסוף לראות, ביסודו מהר יותר. 885 00:38:25,520 --> 00:38:29,400 אבל בואו נראה שלישי ואחרון מתקרב כאן על מה שקורה. 886 00:38:29,400 --> 00:38:36,230 אז בואו נלך קדימה ולאפס אתכם פעם האחרונה להיות בצו זה כאן. 887 00:38:36,230 --> 00:38:38,450 >> ועכשיו, אני הולך להיות קצת יותר חכם, 888 00:38:38,450 --> 00:38:40,220 רק כדי להשלים את האלגוריתמים שלנו. 889 00:38:40,220 --> 00:38:41,230 אני הולך לעשות את זה. 890 00:38:41,230 --> 00:38:43,140 אני הולך לא ללכת הלוך ושוב כל כך הרבה. 891 00:38:43,140 --> 00:38:44,900 למען האמת, נמאס לי אני כל חוצים זה. 892 00:38:44,900 --> 00:38:47,691 אני רק הולך לקחת את מה שאני ניתנו בתחילת הרשימה, 893 00:38:47,691 --> 00:38:49,460 ואני הולך כדי למיין כי אז ושם. 894 00:38:49,460 --> 00:38:50,140 אז הנה אנחנו. 895 00:38:50,140 --> 00:38:51,030 מספר 4. 896 00:38:51,030 --> 00:38:53,680 אני הולך להכניס מספר 4 לרשימה ממוינת. 897 00:38:53,680 --> 00:38:54,180 עשה. 898 00:38:54,180 --> 00:38:58,300 אני טוען עכשיו, ורק כדי להפוך את זה יותר ברור, חלק זה של הרשימה שלי הוא מסודר. 899 00:38:58,300 --> 00:39:02,610 זה סוג של טענה מטופשת, אבל אכן 4 מיון ברשימה של גודל אחד. 900 00:39:02,610 --> 00:39:04,210 עכשיו, אני הולך לקחת על מספר 2. 901 00:39:04,210 --> 00:39:07,670 מספר 2 אני עכשיו הולך להכניס לתוך המקום הנכון. 902 00:39:07,670 --> 00:39:08,680 אז איפה 2 שייכים? 903 00:39:08,680 --> 00:39:09,824 ברור, לכאן. 904 00:39:09,824 --> 00:39:11,490 אז קדימה ולחזור אחורה, אם אתה יכול. 905 00:39:11,490 --> 00:39:14,406 ולמה אין לך חבר 'ה פשוט לקחת המוזיקה שלך עומדת זה זמן איתך. 906 00:39:14,406 --> 00:39:17,020 ובואו בכוח להכניס אותך לתחילתה של הרשימה. 907 00:39:17,020 --> 00:39:17,936 עבודה יותר כך קטנה. 908 00:39:17,936 --> 00:39:20,890 הייתי צריך להזיז יעקב סביב, ואיך קוראים לך? 909 00:39:20,890 --> 00:39:21,420 >> אמין: אמין. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Malan: אמין. 911 00:39:22,270 --> 00:39:24,350 אבל לפחות אני לא הולך הלוך ושוב. 912 00:39:24,350 --> 00:39:25,739 אני רק לוקח את הדברים כמו שאני הולך. 913 00:39:25,739 --> 00:39:27,530 אני רק מכניס אותם במקום הנכון. 914 00:39:27,530 --> 00:39:29,220 6, זה בעצם די קל. 915 00:39:29,220 --> 00:39:31,510 בואו נכניס אותך לשם, אם אתה רק רציתי לעבור מעט. 916 00:39:31,510 --> 00:39:32,870 מספר 8, גם די קל. 917 00:39:32,870 --> 00:39:33,741 הנה, ממש שם. 918 00:39:33,741 --> 00:39:34,240 לעזאזל. 919 00:39:34,240 --> 00:39:37,590 מספר 1 אנחנו פשוט לא יכולים להחליף עם אמין כאן, 920 00:39:37,590 --> 00:39:39,340 כי זה הולך לבלגן את הסדר. 921 00:39:39,340 --> 00:39:40,660 אז אנחנו צריכים להיות קצת יותר חכמים. 922 00:39:40,660 --> 00:39:42,770 אז, ארטי, אם אתה יכול לגבות לרגע. 923 00:39:42,770 --> 00:39:46,550 בואו נלך קדימה ולהעביר עכשיו, בניגוד לאלגוריתמים הקודמים שלנו, 924 00:39:46,550 --> 00:39:50,910 כדי לפנות מקום לארטי ממש כאן בתחילת. 925 00:39:50,910 --> 00:39:54,690 אז בסופו של היום, אני סוג של עושה את מה שרציתי להימנע לפני. 926 00:39:54,690 --> 00:39:57,770 וכך האלגוריתם שלי הוא סוג של התהפך, מהבחינה האינטלקטואלית, 927 00:39:57,770 --> 00:39:59,070 ממה שהוא היה במקור. 928 00:39:59,070 --> 00:40:01,240 אני פשוט עושה הסטה בנקודה שונה. 929 00:40:01,240 --> 00:40:02,291 עכשיו אני ב3. 930 00:40:02,291 --> 00:40:02,790 אה, לעזאזל. 931 00:40:02,790 --> 00:40:04,039 אנחנו צריכים לעשות עבודה יותר שוב. 932 00:40:04,039 --> 00:40:05,060 אז בואו לדחוף אותך החוצה. 933 00:40:05,060 --> 00:40:09,360 בואו נעבור 8, 6, 4-- הו oh-- ו 3 הוא הולכים ממש שם. 934 00:40:09,360 --> 00:40:11,490 אז בחיסכון קל לפחות הפעם. 935 00:40:11,490 --> 00:40:13,100 7, לא יותר מדי עבודה שצריך לעשות. 936 00:40:13,100 --> 00:40:15,370 אז אם אתה רוצה לקפוץ בחזרה, בואו נכניס אותך. 937 00:40:15,370 --> 00:40:17,440 ולבסוף, 5, אם אתה רוצה לקפוץ אחורה, אנחנו 938 00:40:17,440 --> 00:40:22,610 צריך לשנות לך, לך, אתה, עד חמש נמצא במקום. 939 00:40:22,610 --> 00:40:25,670 >> אז עכשיו לראות את זה ב ברמה גבוהה באופן גרפי, 940 00:40:25,670 --> 00:40:31,080 בואו נעשה את האלגוריתם הזה הדמיה פעם אחת נוספת. 941 00:40:31,080 --> 00:40:33,580 אז אנחנו זה יקראו סוג הכנסה. 942 00:40:33,580 --> 00:40:37,700 אנו נפעיל אותו בדיוק כפי ש מהר, ולהתחיל אותו כאן. 943 00:40:37,700 --> 00:40:39,580 וזה, יותר מדי, יש לו תחושה שונה. 944 00:40:39,580 --> 00:40:42,180 זה סוג של משתפר ו , אבל עדיף לא מושלם 945 00:40:42,180 --> 00:40:44,630 עד שאני הולך ובחלק בפערים אלה. 946 00:40:44,630 --> 00:40:47,860 כי, שוב, אני לוקח רק את מה ש אני שניתנו משמאל לימין. 947 00:40:47,860 --> 00:40:50,350 אז לא אקבל כל כך בר מזל כל מה שהיה מושלם. 948 00:40:50,350 --> 00:40:54,190 זו הסיבה שהייתה לנו קטן האלה mispositions שקבוע לאורך זמן. 949 00:40:54,190 --> 00:40:58,890 >> אז כל האלגוריתמים האלה נראים לרוץ בצעדים שונים במקצת. 950 00:40:58,890 --> 00:41:02,030 למעשה, מה שאתה אומר הוא הכי טוב או המהיר ביותר עד כה? 951 00:41:02,030 --> 00:41:03,450 מיון בועות, הראשון? 952 00:41:03,450 --> 00:41:05,000 מיון בחירה, השני? 953 00:41:05,000 --> 00:41:08,450 סוג ההכנסה, השלישי? 954 00:41:08,450 --> 00:41:10,710 אני שומע כמה מיני בחירה. 955 00:41:10,710 --> 00:41:13,280 מחשבות אחרות? 956 00:41:13,280 --> 00:41:16,880 >> אז מתברר ש כל אלגוריתמים אלה 957 00:41:16,880 --> 00:41:22,400 ביסודם רק יעיל כמו כל other-- או, לחלופין, בדיוק כפי ש 958 00:41:22,400 --> 00:41:25,980 לא יעיל כמו כל אחד אחר, בגלל שאנחנו יכולים לעשות ביסוד 959 00:41:25,980 --> 00:41:28,120 יותר טוב מכל שלוש אלגוריתמים אלה. 960 00:41:28,120 --> 00:41:29,990 וזה קצת שקר לבן, מדי. 961 00:41:29,990 --> 00:41:32,580 כשאני אומר יעיל כ או כבלתי יעיל, 962 00:41:32,580 --> 00:41:35,040 זה לפחות עבור ערכי סופר גדולים של n. 963 00:41:35,040 --> 00:41:38,450 כאשר יש לנו רק שמונה אנשים כאן, או אולי 50 או כך ברים על המסך, 964 00:41:38,450 --> 00:41:41,645 אתה בהחלט תוכל להבחין הבדלים בין שלושת אלגוריתמים אלה. 965 00:41:41,645 --> 00:41:44,020 אבל כמו n, מספר האנשים, או מספר המספרים, 966 00:41:44,020 --> 00:41:46,350 או מספר האנשים בטלפון ספר, או מספר דפי האינטרנט 967 00:41:46,350 --> 00:41:48,230 במסד הנתונים של גוגל מקבל יותר ויותר גדול, 968 00:41:48,230 --> 00:41:51,650 אנחנו תראו שכל שלושת האלה אלגוריתמים הם למעשה עלובים למדי. 969 00:41:51,650 --> 00:41:54,060 ואנחנו יכולים לעשות ביסוד יותר טוב מזה. 970 00:41:54,060 --> 00:41:56,830 >> בואו נסתכל, סוף סוף, מה עשויים אלגוריתמים אלה 971 00:41:56,830 --> 00:41:59,520 נשמע כמו ב הקשר של כמה אחר 972 00:41:59,520 --> 00:42:03,550 כמו גם בדרך של זה הדמיה כאן 973 00:42:03,550 --> 00:42:06,860 שיציג לנו מספר האלגוריתמים. 974 00:42:06,860 --> 00:42:10,330 בואו נלך קדימה ולברך המשתתפים שלנו כאן, שכולם 975 00:42:10,330 --> 00:42:11,690 מסודרים על עצמם טובים מאוד. 976 00:42:11,690 --> 00:42:15,124 אם ברצונך לקחת את מתנת פרידה. 977 00:42:15,124 --> 00:42:16,540 אתה יכול לשמור על המספרים שלך גם כן. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 ומה שתראה, או לייתר דיוק לשמוע, עכשיו, 980 00:42:22,520 --> 00:42:25,710 הוא שככל שאנחנו שמים את הצלילים לכל אחד מברים אלה 981 00:42:25,710 --> 00:42:28,660 ולשייך אותו לתוכנה, תדר שונה של צליל, 982 00:42:28,660 --> 00:42:33,970 אתה יכול לעטוף audioly יותר את דעתך סביב מה כל אחד מהדברים האלה 983 00:42:33,970 --> 00:42:34,470 נראה כמו. 984 00:42:34,470 --> 00:42:39,325 הראשון שבם הוא סוג ההכנסה 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> זה מיון בועות. 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> מיון בחירה. 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> משהו שנקרא סוג מיזוג. 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> סוג Gnome. 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> זהו זה לCS50. 1000 00:44:09,430 --> 00:44:13,360 אנחנו אראה אותך ביום רביעי. 1001 00:44:13,360 --> 00:44:16,671 >> קריין: ועכשיו, "עמוק מחשבות, "על ידי ךייבן Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 למה זה ללולאה? 1004 00:44:21,590 --> 00:44:23,200 למה לא לעשות את זה טוב יותר? 1005 00:44:23,200 --> 00:44:25,970 הייתי עושה חמש לולאה. 1006 00:44:25,970 --> 00:44:28,720 >> [שחוק]