1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: pob hawl. 3 00:00:11,940 --> 00:00:16,470 Felly mae hyn yn CS50, ac mae hyn yn bellach yn dechrau'r wythnos tri. 4 00:00:16,470 --> 00:00:19,960 >> Felly, hyd yn hyn, rydym wedi bod yn ysgrifennu rhaglenni yn C 5 00:00:19,960 --> 00:00:23,210 sy'n edrych ychydig yn rhywbeth fel hyn yma. 6 00:00:23,210 --> 00:00:25,470 Felly, mae gennym ni un neu ddau o miniog yn cynnwys ar y brig. 7 00:00:25,470 --> 00:00:28,490 Mae gennym int, prif, yn ddi-rym, a Yna, rhywbeth i'w wneud yn y canol, 8 00:00:28,490 --> 00:00:30,590 rhyw ychydig o cod yn y tu mewn o'r swyddogaeth honno. 9 00:00:30,590 --> 00:00:34,170 Ond allweddol oedd y ffaith fod rydym wedi bod yn ei ddweud yn ddi-rym yma. 10 00:00:34,170 --> 00:00:39,320 Felly ddi-rym, i gyd y tro hwn, yn pennu bod y rhaglen hon, pan fydd yn rhedeg, 11 00:00:39,320 --> 00:00:41,300 dim ond yn cael ei redeg trwy ei enw. 12 00:00:41,300 --> 00:00:46,330 Ni allwch deipio unrhyw eiriau eraill neu rhifau ar ôl enw'r rhaglen pan 13 00:00:46,330 --> 00:00:46,830 redeg. 14 00:00:46,830 --> 00:00:51,200 Felly, er enghraifft, pe bai'r rhaglen yn grynhoi mewn ffeil o'r enw helo, 15 00:00:51,200 --> 00:00:53,480 gallech ei wneud ./hello, ond dyna ni. 16 00:00:53,480 --> 00:00:56,750 >> Yr unig ffordd i chi a allai rhoi mewnbwn i'r rhaglen hon 17 00:00:56,750 --> 00:00:57,960 yw drwy ffonio swyddogaeth. 18 00:00:57,960 --> 00:00:59,790 Er enghraifft, pa swyddogaeth rydym wedi bod yn defnyddio hyd yn hyn 19 00:00:59,790 --> 00:01:00,950 i gael mewnbwn gan y defnyddiwr? 20 00:01:00,950 --> 00:01:02,117 >> CYNULLEIDFA: Get llinyn. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Er mwyn cael llinyn, neu cael int, neu os ydych wedi gweld pobl eraill, 22 00:01:04,700 --> 00:01:07,630 hyd yn oed os nad ydych wedi eu defnyddio eto, hoffi cael hir, hir ac yn y blaen. 23 00:01:07,630 --> 00:01:09,380 Ond mae'n debyg ein bod yn gwirionedd am ddechrau 24 00:01:09,380 --> 00:01:12,760 ysgrifennu rhaglenni sy'n ychydig yn fwy amryddawn, ac, a dweud y gwir, ychydig yn fwy 25 00:01:12,760 --> 00:01:15,090 fel y gorchmynion yr ydych wedi bod yn cael, gobeithio, 26 00:01:15,090 --> 00:01:16,550 ychydig yn gyfarwydd â. 27 00:01:16,550 --> 00:01:18,560 Fel Dropbox gofod cd. 28 00:01:18,560 --> 00:01:20,800 Mae hyn, wrth gwrs, newidiadau eich cyfeiriadur, gan dybio 29 00:01:20,800 --> 00:01:23,590 ydych chi mewn cartref John Harvard cyfeiriadur, at eich ffolder Dropbox. 30 00:01:23,590 --> 00:01:27,380 Yn y cyfamser, mae gorchymyn fel hyn creu cyfeiriadur newydd o'r enw pset2, 31 00:01:27,380 --> 00:01:30,290 eisoes fel y gallai fod gennych neu Bydd yn fuan ar gyfer problem gosod dau. 32 00:01:30,290 --> 00:01:33,970 Gwnewch Helo, wrth gwrs, yn gorchymyn sy'n adeiladu rhaglen o'r enw helo 33 00:01:33,970 --> 00:01:35,770 o ffeil o'r enw helo dot c. 34 00:01:35,770 --> 00:01:39,140 Ac ym mhob un o'r rhain achosion, erbyn hyn, rydym wedi cael 35 00:01:39,140 --> 00:01:43,620 rhoi dadl ar yr hyn a elwir yn llinell orchymyn, mae'r brydlon amrantu, 36 00:01:43,620 --> 00:01:48,540 fel bod yn gwneud yn gwybod beth i'w adeiladu, ac yn y blaen bod yn gwybod pa mkdir folder i greu, 37 00:01:48,540 --> 00:01:51,110 ac fel y cd yn gwybod lle rydych eisiau mynd. 38 00:01:51,110 --> 00:01:54,720 Ond hyd yn hyn, yr ydym yn dal i ddweud mai prif, eich swyddogaeth ddiofyn, 39 00:01:54,720 --> 00:01:58,500 Mae mynegiant ddi-rym tu mewn cromfachau hynny, 40 00:01:58,500 --> 00:02:01,250 sy'n golygu ei fod yn Ni ellir cymryd unrhyw ddadleuon. 41 00:02:01,250 --> 00:02:03,240 >> Felly cychwyn heddiw, yr hyn rydym yn mynd i'w wneud 42 00:02:03,240 --> 00:02:06,270 yw, rydym yn mynd i ddechrau cefnogi pethau fel hyn hyd yn oed. 43 00:02:06,270 --> 00:02:08,990 Yn wir, yn yr achos hwn, yr ydych yn nid ydynt fel arfer llaw deipio, 44 00:02:08,990 --> 00:02:11,130 Gwnewch wedi bod yn gwneud hyn i ni, nid oes 45 00:02:11,130 --> 00:02:15,840 un ond un, dau, tri ychwanegol llinynnau ar ôl y rhaglen a enwir 46 00:02:15,840 --> 00:02:16,850 chlang. 47 00:02:16,850 --> 00:02:18,240 Felly sut rydym yn cyflawni hyn? 48 00:02:18,240 --> 00:02:20,260 >> Wel, gan ddechrau heddiw, mewn achosion lle yr ydym am 49 00:02:20,260 --> 00:02:22,855 i roi mewnbwn drwy'r llinell gorchymyn fel y'u gelwir, 50 00:02:22,855 --> 00:02:24,980 rydyn ni'n mynd i ddechrau ychwanegu dyma beth sydd yn yellow-- 51 00:02:24,980 --> 00:02:30,520 ddi-rym disodli gyda atalnod argc int argv llinyn braced braced agored agos. 52 00:02:30,520 --> 00:02:32,520 Yn awr mae hyn yn ddiddorol am ychydig o resymau. 53 00:02:32,520 --> 00:02:35,690 Un, mae'n mynd i adael i ni ysgrifennu rhaglenni sy'n ychydig yn fwy deinamig. 54 00:02:35,690 --> 00:02:37,570 Ond, yn fwy nerthol, mae'n mynd i agor 55 00:02:37,570 --> 00:02:40,340 bellach sgwrs ynghylch hyn y gall araeau mewn gwirionedd 56 00:02:40,340 --> 00:02:43,300 cael eu defnyddio, ar gyfer yr hyn llinyn mewn gwirionedd o dan y cwfl, 57 00:02:43,300 --> 00:02:47,320 tan yr wythnos nesaf, pan fyddwn yn dechrau deifio yn hyd yn oed yn ddyfnach ynghylch sut mae'r peiriant yn 58 00:02:47,320 --> 00:02:48,590 gan wneud hyn oll waith stwff. 59 00:02:48,590 --> 00:02:51,920 Ond am nawr, gadewch i ni tynnu, efallai, llun. 60 00:02:51,920 --> 00:02:54,950 >> Pan fyddwch yn ysgrifennu rhaglen gyda phrif datgan 61 00:02:54,950 --> 00:02:58,810 yn y modd hwn, fel bod prif yn cymryd dwy ddadl, mae int 62 00:02:58,810 --> 00:03:03,233 ac-- pa fath ddata yw'r ail ddadl? 63 00:03:03,233 --> 00:03:04,529 >> CYNULLEIDFA: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Felly, mae'n edrych ar yr olwg gyntaf fel ei fod yn llinyn, ond yn sylwi ar y cromfachau sgwâr. 66 00:03:09,170 --> 00:03:12,760 Dwyn i gof y tro diwethaf i ni gyflwyno y syniad o amrywiaeth. 67 00:03:12,760 --> 00:03:16,210 Ac araeau yn defnyddio cromfachau sgwâr mewn un neu ddau o gyd-destunau. 68 00:03:16,210 --> 00:03:19,160 Efallai y byddwch yn defnyddio'r sgwâr cromfachau i fynd i mewn i arae 69 00:03:19,160 --> 00:03:22,710 a chael elfen benodol, fel braced 0 neu fraced 1 neu fraced 2. 70 00:03:22,710 --> 00:03:25,500 Ond rydym yn gweld, os yn fyr, yr wythnos diwethaf eich bod hefyd 71 00:03:25,500 --> 00:03:28,790 defnyddio'r rhain cromfachau sgwâr i ddatgan faint o fyrdd, 72 00:03:28,790 --> 00:03:31,790 os ydych yn gwybod ymlaen llaw faint o ints na faint o linynnau neu beth bynnag yr ydych 73 00:03:31,790 --> 00:03:32,630 mewn gwirionedd eisiau. 74 00:03:32,630 --> 00:03:34,790 Felly, mae'n troi allan yno yn trydydd cyd-destun yma 75 00:03:34,790 --> 00:03:37,890 sydd heb unrhyw rif y tu mewn y cromfachau sgwâr. 76 00:03:37,890 --> 00:03:41,920 Pan fyddwch yn nodi, fel yr wyf wedi yma, enw rhywbeth fel argv, 77 00:03:41,920 --> 00:03:44,550 sydd ychydig yn ffordd ffansi o gan ddweud fector ddadl, a oedd 78 00:03:44,550 --> 00:03:47,750 yn ffordd ffansi arall o gan ddweud amrywiaeth o ddadleuon, 79 00:03:47,750 --> 00:03:50,870 braced braced agored agos yn unig yn golygu nad ydych yn ei wneud o reidrwydd 80 00:03:50,870 --> 00:03:52,960 gwybod ymlaen llaw pa mor fawr yr amrywiaeth yn mynd i fod, 81 00:03:52,960 --> 00:03:55,070 ond eich bod yn gwybod ei fod yn mynd i fod yn arae. 82 00:03:55,070 --> 00:03:57,320 Felly os nad ydych yn gwybod y Nid yw nifer yn ei roi i mewn 'na, 83 00:03:57,320 --> 00:04:01,160 gyfer braced agored braced cau yn golygu nad yw argv yn llinyn, 84 00:04:01,160 --> 00:04:03,124 ond mae amrywiaeth o dannau. 85 00:04:03,124 --> 00:04:05,040 Felly syntactically, os ydych yn meddwl yn ôl yr wythnos diwethaf, 86 00:04:05,040 --> 00:04:09,460 mae'n debyg iawn i ddweud rhywbeth fel int oedrannau braced agored, 87 00:04:09,460 --> 00:04:10,984 ac yna rhywbeth ar ôl hynny. 88 00:04:10,984 --> 00:04:12,150 Felly beth mae hyn yn edrych? 89 00:04:12,150 --> 00:04:13,399 Gadewch i ni mewn gwirionedd yn tynnu llun. 90 00:04:13,399 --> 00:04:18,756 Felly pan fyddwch yn rhedeg y rhaglen hon gyda Main ar ôl dau dadleuon a ddiffinnir y tu mewn 91 00:04:18,756 --> 00:04:21,339 y cromfachau hynny, byddwch yn yn y bôn gael o leiaf ddau ddarnau 92 00:04:21,339 --> 00:04:23,560 o gof rhoi i chi o dan y cwfl. 93 00:04:23,560 --> 00:04:26,550 Un, fel y 'n annhymerus' yn tynnu fel petryal hwn, yn mynd i gael ei alw argc. 94 00:04:26,550 --> 00:04:30,645 Ac yn union fel ailadrodd cyflym, beth yw'r math data o argc? 95 00:04:30,645 --> 00:04:31,270 Felly, ei fod yn int. 96 00:04:31,270 --> 00:04:33,480 Felly, mae nifer yn mynd i fynd yn eu tro argc-- 97 00:04:33,480 --> 00:04:35,660 sylw at y ffaith yn sefyll am cyfrif ddadl. 98 00:04:35,660 --> 00:04:38,887 Yn y cyfamser, rwyf wedi tynnu argv fel arae. 99 00:04:38,887 --> 00:04:40,970 Ac nid wyf yn wir yn gwybod pa mor hir y mae'n mynd i fod, 100 00:04:40,970 --> 00:04:42,470 felly at ddibenion heddiw dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Efallai ei fod yn ei gael o ryw hyd. 102 00:04:43,636 --> 00:04:45,640 Ond dw i wedi y llun yma o leiaf pedwar petryal. 103 00:04:45,640 --> 00:04:50,970 Felly argv darn o gof y storfeydd llinyn llinyn llinyn dot dot dot, 104 00:04:50,970 --> 00:04:53,950 ac argc Dim ond un darn o gof ar gyfer cyfanrif. 105 00:04:53,950 --> 00:04:55,710 >> Felly nawr, gadewch i ni fod ychydig yn fwy manwl gywir. 106 00:04:55,710 --> 00:04:59,200 Os, pan fyddaf yn cael llinynnau yn y arae hwn, a elwir yn 107 00:04:59,200 --> 00:05:03,290 argv, yr wyf am gael gafael arnynt yn unigol, yn union fel yr wythnos diwethaf, 108 00:05:03,290 --> 00:05:05,670 rydym yn mynd i ddefnyddio nodiant fel braced argv 0 109 00:05:05,670 --> 00:05:07,650 i gael y peth cyntaf arae. 110 00:05:07,650 --> 00:05:10,440 Argv braced 1 i gael y ail beth, ac yn y blaen. 111 00:05:10,440 --> 00:05:14,597 Yr hyn sy'n allweddol yma yw ein bod yn dal i fod yn 0 indexed-- rydym yn dal i gyfrif o 0. 112 00:05:14,597 --> 00:05:16,430 Felly nawr gadewch i ni mewn gwirionedd roi rhywbeth yn hyn. 113 00:05:16,430 --> 00:05:21,670 Pe bawn yn llunio rhaglen o'r enw helo o ffeil o'r enw helo dot c, 114 00:05:21,670 --> 00:05:24,340 ac yna yr wyf yn rhedeg y rhaglen gyda dot slaes helo, 115 00:05:24,340 --> 00:05:28,380 beth mae fy nghyfrifiadur, fy laptop, edrych fel o dan y cwfl 116 00:05:28,380 --> 00:05:31,300 hyn o bryd Rwy'n rhedeg dot slaes helo a daro Chofnoda? 117 00:05:31,300 --> 00:05:33,500 Wel, mae hyn yn bosibl beth y gallem ei ddisgrifio 118 00:05:33,500 --> 00:05:37,010 gan gynnwys eich cyfrifiadur cof, neu RAM-- Cof Mynediad ar hap. 119 00:05:37,010 --> 00:05:40,330 Mewn geiriau eraill, y cyfrifiadur, rywsut i chi hudol, 120 00:05:40,330 --> 00:05:45,360 rhoi'r rhif 1 yn argc, AKA argcount, ac mae'n rhoi llythrennol y llinyn 121 00:05:45,360 --> 00:05:48,200 ./hello mewn braced argv 0. 122 00:05:48,200 --> 00:05:51,750 Does gen i ddim syniad, a dweud y gwir, beth sydd mewn braced argv 1 neu 2 neu 3, 123 00:05:51,750 --> 00:05:55,550 oherwydd os nad yw'r defnyddiwr wedi deipio unrhyw beth ar wahân ./hello, 124 00:05:55,550 --> 00:05:58,550 rydym yn mynd i gymryd yn ganiataol bod y rhain yn werthoedd garbage fwyaf tebygol, 125 00:05:58,550 --> 00:05:59,700 fel petai. 126 00:05:59,700 --> 00:06:02,650 Mae'r rhai darnau o gof bodoli, ond nid mae i fyny i ni 127 00:06:02,650 --> 00:06:05,710 i edrych arnynt, oherwydd y argcount dim ond un. 128 00:06:05,710 --> 00:06:07,870 >> Yn awr, yn y cyfamser, os wyf ysgrifennu redeg rhaglen arall, 129 00:06:07,870 --> 00:06:12,250 cd, sy'n fwy priodol gorchymyn, yn eich amrantu gofod cd prompt-- 130 00:06:12,250 --> 00:06:17,200 Dropbox-- pan fyddaf yn rhedeg hynny, i bob pwrpas, pan fydd y rhaglen yn cael ei rhedeg cd, argc, 131 00:06:17,200 --> 00:06:22,270 tu mewn cof fy cyfrifiadur, ar gyfer y byrraf ail fwyaf y rhif 2. 132 00:06:22,270 --> 00:06:25,936 Ac yna argv braced o wedi cd, argv braced 1 Mae Dropbox, 133 00:06:25,936 --> 00:06:28,560 ac yna, wrth gwrs y gorchymyn cwblhau, felly i gyd o gof hwn 134 00:06:28,560 --> 00:06:30,420 ei hanfod yn mynd i ffwrdd ac ei ddefnyddio ar gyfer rhywbeth arall. 135 00:06:30,420 --> 00:06:32,270 A dyna pam yr wyf yn dweud dim ond hanner eiliad. 136 00:06:32,270 --> 00:06:35,720 >> Yn y cyfamser, os ydym yn ei wneud pset2 mkdir, y llun yn edrych bron yr un fath, 137 00:06:35,720 --> 00:06:37,900 ond gyda gwahanol dannau y tu mewn argv. 138 00:06:37,900 --> 00:06:42,570 Os byddaf yn gwneud dash chlang helo un syniad, dot helo c. 139 00:06:42,570 --> 00:06:47,060 Mae mwy o stwff yn cael ei lenwi i mewn ar gyfer argv, a argc, wrth gwrs, yw 4. 140 00:06:47,060 --> 00:06:49,150 Felly, mewn geiriau eraill, er bod amrywiaeth hwn 141 00:06:49,150 --> 00:06:52,950 gellid ei dot dot dot, o rai hyd newidiol, fel petai, 142 00:06:52,950 --> 00:06:56,720 byddwch bob amser yn gwybod ble y diwedd yw, oherwydd bod argc yn mynd i ddweud wrthych 143 00:06:56,720 --> 00:07:00,120 ar ba bwynt yn rhaid i chi roi'r gorau i edrych ar elfennau yn argv. 144 00:07:00,120 --> 00:07:03,660 Gallwch ond edrych ar bedwar yn y cyfanswm yn yr achos hwn. 145 00:07:03,660 --> 00:07:06,600 >> Felly, gadewch i ni yn awr yn edrych ar, efallai, rhaglen syml. 146 00:07:06,600 --> 00:07:09,070 Un sydd dim ond yn dweud helo i rywun fel Zamyla. 147 00:07:09,070 --> 00:07:12,620 Felly, yr wyf yn honni fy mod i'n mynd i ysgrifennu rhaglen mewn dim ond eiliad drwy lle gallwn i ei wneud 148 00:07:12,620 --> 00:07:16,670 ./hello gofod Zamyla, ac yna yr wyf am fy rhaglen i argraffu rhywbeth 149 00:07:16,670 --> 00:07:18,520 super-syml fel "helo, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Nawr yn y gorffennol rydym wedi defnyddio getstring. 151 00:07:20,100 --> 00:07:22,850 Felly, yn y gorffennol, hyd yn oed os ydych yn newydd i raglennu, 152 00:07:22,850 --> 00:07:27,180 groes yn y gallech chwip i fyny a rhaglen sy'n defnyddio getstring 153 00:07:27,180 --> 00:07:29,390 ac wedyn yn defnyddio printf i ddweud helo i Zamyla. 154 00:07:29,390 --> 00:07:31,290 Ond gadewch i ni ddefnyddio getstring y tro hwn. 155 00:07:31,290 --> 00:07:37,510 Gadewch i mi yn lle mynd i mewn i'r Appliant ac yn cynnwys safonol Rwy'n O dot h. 156 00:07:37,510 --> 00:07:41,160 Gadewch i mi hefyd yn cynnwys CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Nawr int prif, ac erbyn hyn rwy'n ddim yn mynd i wneud yn ddi-rym heddiw. 158 00:07:44,730 --> 00:07:51,200 Yn lle hynny, yr wyf i'n mynd i wneud argc int argv llinyn braced braced agored agos, 159 00:07:51,200 --> 00:07:52,640 Nid yw pennu rhif. 160 00:07:52,640 --> 00:07:54,644 Ac yn awr dyma yw fy hyn a elwir yn ei wneud. 161 00:07:54,644 --> 00:07:57,560 Yr hyn yr wyf i'n mynd i wneud yn awr yw, rwy'n mynd i wneud yn dipyn o naid o ffydd, 162 00:07:57,560 --> 00:08:00,560 Rydw i'n mynd i gymryd yn ganiataol bod y defnyddiwr mynd i ddefnyddio rhaglen hon yn gywir, 163 00:08:00,560 --> 00:08:04,980 ac rwy'n yn syml yn mynd i gwneud printf helo,% sn. 164 00:08:04,980 --> 00:08:06,630 Felly dim byd newydd yno. 165 00:08:06,630 --> 00:08:11,470 Ond yr wyf am roi yn awr beth bynnag air y Mathau o ddefnyddiwr ar ôl enw'r rhaglen. 166 00:08:11,470 --> 00:08:16,970 Felly, os wyf yn gwneud ./hello gofod Zamyla, yr wyf yn eisiau rhywsut programmatically mynediad 167 00:08:16,970 --> 00:08:20,870 unquote dyfynnu "Zamyla." felly yr wyf yn yn gallu mynd i mewn i fy fector ddadl, 168 00:08:20,870 --> 00:08:25,980 fy amrywiaeth o linynnau, ac os bydd y gorchymyn, unwaith eto, roedd ./hello gofod Zamyla, 169 00:08:25,980 --> 00:08:29,340 pa rif ydw i'n ei eisiau i roi mewn argv yma? 170 00:08:29,340 --> 00:08:29,840 CYNULLEIDFA: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, oherwydd braced 0 troi allan 172 00:08:32,355 --> 00:08:34,230 yn mynd i fod y enw'r rhaglen, fel y gwelsom. 173 00:08:34,230 --> 00:08:37,789 Felly braced 1 fod ar ddechrau'r fy mod i, y defnyddiwr, wedi eu teipio. 174 00:08:37,789 --> 00:08:39,559 Rydw i'n mynd i fynd yn ei flaen ac arbed hyn. 175 00:08:39,559 --> 00:08:42,830 Rydw i'n mynd i fynd i mewn i fy ffolder lle rwyf i wedi eu rhoi y ffeil. 176 00:08:42,830 --> 00:08:44,920 Dw i'n mynd i wneud gwneud helo 3. 177 00:08:44,920 --> 00:08:46,230 OK IO yn comp. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Beth wnes i ei wneud o'i le? 180 00:08:54,480 --> 00:08:57,270 Yr wyf yn ei ddal gan syndod fy hun am ychydig funudau'n yno. 181 00:08:57,270 --> 00:08:58,230 Beth wnes i ei wneud o'i le? 182 00:08:58,230 --> 00:08:59,220 >> CYNULLEIDFA: Enw. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: Mae'r ffeil yn Gelwir hello3.c mewn gwirionedd. 184 00:09:01,767 --> 00:09:03,850 Ac yr wyf yn gwneud hynny yn unig ar gyfer cysondeb, gan ein bod i wedi 185 00:09:03,850 --> 00:09:06,550 Roedd gan hello.c yn y gorffennol yn y cod ar-lein. 186 00:09:06,550 --> 00:09:11,550 Felly gadewch i ni atgyweiria ./hello hwn braced llinell doriad 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 Ac yn awr mae gennym helo, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Yn y cyfamser, gallaf newid hyn i fydd Rob, neu'n wir unrhyw air arall. 190 00:09:17,650 --> 00:09:19,230 >> Ond gadewch i ni ystyried achos cornel. 191 00:09:19,230 --> 00:09:24,360 Beth y byddech yn disgwyl fydd yn digwydd os Dydw i ddim deipio enw unrhyw un o gwbl? 192 00:09:24,360 --> 00:09:25,270 >> CYNULLEIDFA: Gwall. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: gwall o ryw fath, efallai. 194 00:09:27,300 --> 00:09:28,200 Gadewch i ni weld. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Felly printf mewn gwirionedd yn cael ei ychydig yn amddiffynnol ohonom 198 00:09:33,870 --> 00:09:38,131 yma, ac yn llythrennol argraffu paren agored null, ond gall pethau hyd yn oed yn waeth yn digwydd. 199 00:09:38,131 --> 00:09:40,130 A dim ond i ddangos rhywbeth yr ydych yn hollol 200 00:09:40,130 --> 00:09:42,800 Ni ddylid ei wneud, gadewch i ni fynd yn yma a dechrau procio o gwmpas. 201 00:09:42,800 --> 00:09:43,300 Hawl? 202 00:09:43,300 --> 00:09:46,410 Os wyf yn gwybod bod y darlun yn cof yn ei hanfod hyn, 203 00:09:46,410 --> 00:09:52,660 argv braced 1 Mae gan Zamyla, argv braced 0 Mae ./hello, neu ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Beth sydd yn braced 2? 205 00:09:55,400 --> 00:09:58,210 Felly gallaf ateb hynny cwestiynu fy hun, dde? 206 00:09:58,210 --> 00:10:00,460 Gall Fi jyst newid y 1 i 2. 207 00:10:00,460 --> 00:10:07,270 Gallaf yn awr ail-grynhoi helo 3, ./hello3 Gadewch i chwyddo i mewn a daro Chofnoda. 208 00:10:07,270 --> 00:10:08,270 Wps. 209 00:10:08,270 --> 00:10:10,660 Dim dyfyniad marc. 210 00:10:10,660 --> 00:10:12,540 Diddorol. 211 00:10:12,540 --> 00:10:15,530 Felly dyna fath o oer i weld beth arall sydd yn fan hyn. 212 00:10:15,530 --> 00:10:17,130 >> Felly, beth arall sydd tu mewn fy ngliniadur? 213 00:10:17,130 --> 00:10:20,390 Gadewch i ni ei chadw gyda braced 3. 214 00:10:20,390 --> 00:10:25,190 Gwneud hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Chwilfrydig. 216 00:10:26,500 --> 00:10:30,560 Ac yn awr gadewch i ni gael 'n sylweddol bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Felly dyna wir yn deifio dwfn i mewn i gof fy cyfrifiadur. 218 00:10:34,340 --> 00:10:35,930 50 mynegeion yn. 219 00:10:35,930 --> 00:10:41,950 Felly gwnewch helo 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Chwilfrydig. 221 00:10:42,680 --> 00:10:44,660 Mae pob hawl, yn awr Im 'jyst mynd i gael di-hid. 222 00:10:44,660 --> 00:10:47,331 Gadewch i ni fynd i 5,000. 223 00:10:47,331 --> 00:10:47,830 Mae pob hawl. 224 00:10:47,830 --> 00:10:49,520 Felly, gadewch i mi ail-grynhoi. 225 00:10:49,520 --> 00:10:51,460 Gwneud hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 OK. 228 00:10:56,460 --> 00:10:59,250 Nawr mae rhai ohonoch chi, efallai bod fod yn bwlb golau yn mynd i ffwrdd. 229 00:10:59,250 --> 00:11:01,900 Faint ohonoch chi wedi gweld y neges hon o'r blaen? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Felly, pam? 232 00:11:04,420 --> 00:11:07,250 >> Odds yw-- ac mae gwahanol bethau a all achosi hyn, 233 00:11:07,250 --> 00:11:09,730 ac yn amlwg eich bod yn dda company-- gennym glir 234 00:11:09,730 --> 00:11:11,900 achosi hyn a elwir nam segmentu. 235 00:11:11,900 --> 00:11:15,890 A stori fer hir ar gyfer heddiw, yr wyf yn wedi cyffwrdd segment o gof 236 00:11:15,890 --> 00:11:17,060 na ddylai gen i. 237 00:11:17,060 --> 00:11:19,970 Pan fo segment yn unig yn golygu darn o gof na ddylwn gael. 238 00:11:19,970 --> 00:11:25,530 Nawr bod y cyfrifiadur yn gwarantu bod os byddaf yn rhedeg ./helloZamyla y gallaf gyffwrdd argv 239 00:11:25,530 --> 00:11:27,760 fod braced 0 a argv braced 1. 240 00:11:27,760 --> 00:11:32,730 Ond argc yw gwerth 2, mae hynny'n golygu fy mod Dim ond allowed-- mae'n fath o anrhydedd 241 00:11:32,730 --> 00:11:35,180 system, i gyffwrdd braced 0 a braced 1. 242 00:11:35,180 --> 00:11:37,990 Os byddaf yn mynd unrhyw farther, mae gwbl yn mynd i fod yn gof yno. 243 00:11:37,990 --> 00:11:40,660 Mae fy RAM yn bodoli yn gorfforol yn y cyfrifiadur. 244 00:11:40,660 --> 00:11:42,080 Ond pwy a ŵyr beth sydd yno? 245 00:11:42,080 --> 00:11:44,450 Yn wir, rwy'n rhedeg lluosog rhaglenni ar un adeg. 246 00:11:44,450 --> 00:11:46,910 Efallai fy mod wedi seen-- pe na byddwn yn gwneud hyn ar y Appliant 247 00:11:46,910 --> 00:11:49,937 ond ar fy Mac neu PC-- allai fod gennyf gweld cynnwys e-bost. 248 00:11:49,937 --> 00:11:52,270 Efallai fy mod wedi gweld ar unwaith neges Rwyf wedi anfon yn ddiweddar. 249 00:11:52,270 --> 00:11:55,390 Mae unrhyw beth a allai fod yn lingering o gwmpas er cof 250 00:11:55,390 --> 00:11:59,180 gellid bod wedi defnyddio gan ffordd o hwn nodiant braced sgwâr mympwyol. 251 00:11:59,180 --> 00:12:02,850 Neu, yn waeth hyd yn hyn, efallai y bydd gennych hyd i un o fy cyfrineiriau 252 00:12:02,850 --> 00:12:05,859 y byddwn i'n teipio yn ddiweddar, y byddai rhaglen wedi ei storio mewn cof er 253 00:12:05,859 --> 00:12:07,900 i ddilysu mi, a yna dim ond fath o adael ei 254 00:12:07,900 --> 00:12:09,910 mewn RAM nes i mi roi'r gorau iddi y rhaglen honno. 255 00:12:09,910 --> 00:12:12,860 >> Ac yn wir, mae hyn yn un o y perygl ac un pwerau 256 00:12:12,860 --> 00:12:15,980 o ddefnyddio iaith fel C. Mae gennych fynediad dilyffethair 257 00:12:15,980 --> 00:12:18,860 i holl gynnwys o gof rhaglen yn, 258 00:12:18,860 --> 00:12:21,340 a gall yr hyn y guys ddrwg hyd yn oed yn ei wneud yn y cases-- y rhai 259 00:12:21,340 --> 00:12:23,807 yn enwedig pan fyddwn yn cyrraedd rhaglennu ar y we 260 00:12:23,807 --> 00:12:26,890 tuag at ddiwedd y semester, rydym annhymerus ailedrych topic-- hwn yn cael ei brocio o gwmpas, 261 00:12:26,890 --> 00:12:31,660 o bosibl, rhywun yn cyfrifiadur cof ac yn dod o hyd i bethau rhyfedd o'r fath 262 00:12:31,660 --> 00:12:32,570 fel y gwelsom yno. 263 00:12:32,570 --> 00:12:36,900 Neu hyd yn oed yn waeth eto, cyfrineiriau ei fod neu gall hi wedyn yn eu defnyddio i wneud pethau drwg. 264 00:12:36,900 --> 00:12:40,240 >> Felly, mae'n amlwg na ddylwn i wedi gwneud hyn, gan fod pethau rhyfedd yn dechrau digwydd. 265 00:12:40,240 --> 00:12:42,310 Yn wir, mae hon yn rhaglen chwilfriwio. 266 00:12:42,310 --> 00:12:44,580 Byddai hyn yn cyfateb o Mac OS neu mewn Ffenestri 267 00:12:44,580 --> 00:12:46,770 rhaglen ffenestri yn unig diflannu. 268 00:12:46,770 --> 00:12:48,300 Mae gwall annisgwyl wedi digwydd. 269 00:12:48,300 --> 00:12:50,840 Yn yr amgylchedd gorchymyn-lein rydym yn gweld rhywbeth fel hyn. 270 00:12:50,840 --> 00:12:54,480 Ond dyna pam, yn yr wyf yn syml i'n cyffwrdd cof nad yw'n perthyn i mi. 271 00:12:54,480 --> 00:12:57,090 >> Felly gadewch i amddiffyn yn erbyn hwn ychydig bach mewn ffordd wahanol 272 00:12:57,090 --> 00:12:59,010 drwy edrych ar y rhaglen hon yma. 273 00:12:59,010 --> 00:13:01,000 Felly, unwaith eto, y sgerbwd a welsom earlier-- 274 00:13:01,000 --> 00:13:02,480 ac rwyf wedi tynnu sylw at yr amser int. 275 00:13:02,480 --> 00:13:05,900 A holl brif amser mae hyn yn ei yn wir dychwelyd gwerth. 276 00:13:05,900 --> 00:13:09,120 Er bod yn y rhan fwyaf o'n darlith enghreifftiau nid ydym erioed wedi eu defnyddio unwaith 277 00:13:09,120 --> 00:13:10,990 dychwelyd unrhyw beth yn y prif. 278 00:13:10,990 --> 00:13:13,710 Rydym yn unig yn ysgrifennu printf agos Brace cyrliog a dyna ni. 279 00:13:13,710 --> 00:13:16,500 Ond ar gyfer rhad ac am ddim, yr hyn y mae'r compiler bod yn ei wneud ar eich rhan, 280 00:13:16,500 --> 00:13:19,510 effeithiol, yn dychwelyd 0 ar eich cyfer chi. 281 00:13:19,510 --> 00:13:22,950 Troi out-- ac mae ychydig yn counterintuitive-- bod 0 yn dda. 282 00:13:22,950 --> 00:13:24,690 Nid yw'n golygu ffug fel y cyfryw. 283 00:13:24,690 --> 00:13:29,080 0 yn dda, ac unrhyw di-0 gwerth, mae'r byd wedi penderfynu, 284 00:13:29,080 --> 00:13:30,619 Gall arwydd gwall. 285 00:13:30,619 --> 00:13:32,910 Felly, os ydych wedi llanast erioed rhywbeth i fyny ar eich cyfrifiadur, 286 00:13:32,910 --> 00:13:36,600 neu raglen yn unig wedi marw ar chi a eich bod wedi gotten rhywfaint o ffenestr gwallus 287 00:13:36,600 --> 00:13:40,360 ar eich sgrin, gan ddweud gwall negyddol 49 neu wall 23-- 288 00:13:40,360 --> 00:13:44,170 rhywfaint value-- ymddangos yn fympwyol dyna oherwydd bod rhaglennydd wedi-godio galed 289 00:13:44,170 --> 00:13:49,370 gwerth fel negyddol 49 neu gadarnhaol 23 i gynrychioli unrhyw rif, mentraf ddweud, 290 00:13:49,370 --> 00:13:53,340 o 4000000000 bethau posibl a allai fynd o'i le mewn rhaglen. 291 00:13:53,340 --> 00:13:55,700 >> Felly, sut y gallwn eu cymryd manteisio ar hyn fy hun? 292 00:13:55,700 --> 00:13:58,970 Wel, gadewch i mi agor rhaglen i mi ysgrifennu o flaen llaw, 293 00:13:58,970 --> 00:14:01,450 a poke o gwmpas elwir lein helo 4. 294 00:14:01,450 --> 00:14:05,650 Ac mae'n bron yn union yr un fath, ac eithrio bod ei got ychydig o wall-gwirio. 295 00:14:05,650 --> 00:14:09,660 Yn yr achos hwn, rwyf wedi datgan eto prif â chymryd dau dadleuon, 296 00:14:09,660 --> 00:14:13,180 ond y tro hwn, ar linell 17, rhybudd Dwi'n gwneud ychydig o wiriad bwyll. 297 00:14:13,180 --> 00:14:17,100 Fy mod yn gwneud yn siŵr bod argc yn dychwelyd yn dychwelyd 2. 298 00:14:17,100 --> 00:14:18,960 Oherwydd os yw, bod golygu fy mod yn gallu ddiogel 299 00:14:18,960 --> 00:14:21,420 gyffwrdd nid yn unig yn braced 0, ond braced 1. 300 00:14:21,420 --> 00:14:24,330 Ac yr wyf yn mynd yn ei flaen ac argraffu, yn yr achos hwn, Zamyla neu Rob 301 00:14:24,330 --> 00:14:26,020 neu beth bynnag air i mi deipio allan. 302 00:14:26,020 --> 00:14:28,020 Ac yn awr dim ond i gael ychydig yn fwy priodol, 303 00:14:28,020 --> 00:14:31,910 Rydw i'n mynd i ddychwelyd yn benodol 0 i ddynodi popeth yn iawn. 304 00:14:31,910 --> 00:14:33,300 Nid oes dim wedi digwydd yn ddrwg. 305 00:14:33,300 --> 00:14:38,590 >> Ond erbyn confensiwn, yr wyf i'n mynd i dychwelyd 1, neu'n dweud y gwir unrhyw-0 heb fod yn werth, 306 00:14:38,590 --> 00:14:40,160 os aeth rhywbeth o'i le. 307 00:14:40,160 --> 00:14:43,270 Nawr, nid yw'r defnyddiwr yn mynd i wir yn sylwi ar beth sy'n mynd ymlaen. 308 00:14:43,270 --> 00:14:50,410 Yn wir, os byddaf yn mynd i mewn i cyfeiriadur, rydym yn chwyddo i mewn ac yn gwneud helo 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla yn ymddwyn fel yr wyf yn ei ddisgwyl. 310 00:14:54,210 --> 00:14:58,570 Ond os wyf nid yn lle hynny ddim yn teipio unrhyw beth, nid oes dim yn ymddangos i ddigwydd, 311 00:14:58,570 --> 00:14:59,680 ond nid yw'n damwain. 312 00:14:59,680 --> 00:15:04,660 Ac os wyf yn gwneud rhywbeth yn lle hynny fel Rob yn proctor 313 00:15:04,660 --> 00:15:07,550 yn rhannu Thayer-- Gwybodaeth mympwyol. 314 00:15:07,550 --> 00:15:13,680 Ond rhybudd, argv 1, 2, 3, 4, a Dylai 5 bodoli erbyn hyn yn y cof. 315 00:15:13,680 --> 00:15:16,540 Hynny, hefyd, nid yr hyn yw fy rhaglen yn disgwyl, 316 00:15:16,540 --> 00:15:20,300 am fy mod i wedi gwirio a yw argc hafal hafal 2 ai peidio. 317 00:15:20,300 --> 00:15:22,140 Felly rwy'n awr yn amddiffyn yn erbyn hyn. 318 00:15:22,140 --> 00:15:25,290 >> Yn awr, wrth fynd heibio, yr ydym yn y programmer-- neu yn hytrach yr ydym yn y users-- 319 00:15:25,290 --> 00:15:29,670 byth yn gweld bod 0 neu 1, ond gan ddefnyddio offeryn o'r enw Dadfygiwr, neu offer eraill, 320 00:15:29,670 --> 00:15:32,250 fel y byddwn yn gweld cyn hir, byddwch yn y rhaglennydd 321 00:15:32,250 --> 00:15:36,590 Gall mewn gwirionedd yn gweld yr hyn a allai fod yn mynd o'i le tu mewn i'ch rhaglen. 322 00:15:36,590 --> 00:15:39,170 >> Felly, unrhyw gwestiynau ar argc? 323 00:15:39,170 --> 00:15:40,873 Yeah. 324 00:15:40,873 --> 00:15:45,292 >> CYNULLEIDFA: Rwyf wedi gweld lle maent yn Nid yw wedi cael y cymeriad, [Anghlywadwy] 325 00:15:45,292 --> 00:15:49,669 newydd ei ddweud seren llinyn d, fel atalnod cymeriad seren. 326 00:15:49,669 --> 00:15:50,710 A ydynt yn cyfateb yma? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Maent yn. 328 00:15:51,626 --> 00:15:55,080 Felly, y cwestiwn yw, mae gennych rhaglenni a welir o bryd i'w gilydd 329 00:15:55,080 --> 00:15:57,270 fel hyn nad ydynt dweud braced argv llinyn 330 00:15:57,270 --> 00:16:01,015 ond yn lle dweud rhywbeth fel torgoch braced argv seren. 331 00:16:01,015 --> 00:16:03,140 Ac mae hyd yn oed eraill amrywiadau y gallech eu gweld. 332 00:16:03,140 --> 00:16:04,264 Maent yn wir cyfwerth. 333 00:16:04,264 --> 00:16:06,240 Ar gyfer hyn, mae gennym y rhain math o olwynion hyfforddiant 334 00:16:06,240 --> 00:16:09,737 ar ffurf llinyn yn yr CS50 llyfrgell, ond mewn ychydig dros wythnos 335 00:16:09,737 --> 00:16:12,570 neu felly rydym yn mynd i gael gwared ar y rhwystr yn gyfan gwbl ac mewn gwirionedd yn 336 00:16:12,570 --> 00:16:16,820 edrych ar yr hyn y torgoch a'r seren yw, a sut mae'r rhai berthnasol i gof 337 00:16:16,820 --> 00:16:18,140 cynrychiolaeth yn fwy cyffredinol. 338 00:16:18,140 --> 00:16:19,540 Felly, byddwn yn dod yn ôl at hynny. 339 00:16:19,540 --> 00:16:21,540 >> Cwestiynau eraill ar ein argv neu argc? 340 00:16:21,540 --> 00:16:22,397 Yeah. 341 00:16:22,397 --> 00:16:24,438 CYNULLEIDFA: Pam ei bod yn dychwelyd gwall [Anghlywadwy]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Pam gwneud hynny dychwelyd gwall only-- oh! 344 00:16:29,230 --> 00:16:31,813 Yn yr achos blaenorol, pan fyddwn yn Roedd futzing gwmpas gyda'r cof, 345 00:16:31,813 --> 00:16:35,110 pam wnaeth dim ond yn dychwelyd gwall pan Fi 'n sylweddol deipio nifer fawr? 346 00:16:35,110 --> 00:16:36,620 Yr ateb byr yw, rydym yn unig got 'n ffodus. 347 00:16:36,620 --> 00:16:39,240 A siarad yn gyffredinol, cyfrifiadur dyrannu cof yn ddarnau, 348 00:16:39,240 --> 00:16:42,900 a rhoddodd ddigon darn mawr mi fod Ges i ffwrdd, heb gael sylwi, 349 00:16:42,900 --> 00:16:46,280 o gyffwrdd braced 2, braced 3, braced 50, ond cyn gynted ag yr wyf yn gwthio 350 00:16:46,280 --> 00:16:49,080 fy lwc, yr wyf yn mynd y tu hwnt i'r ffiniau'r darn o gof 351 00:16:49,080 --> 00:16:50,520 y system weithredu wedi rhoi i mi. 352 00:16:50,520 --> 00:16:52,720 A dyna pryd y mae'n glampio i lawr a dweud, dim. 353 00:16:52,720 --> 00:16:54,580 Gwall segmentu. 354 00:16:54,580 --> 00:16:55,692 Yeah. 355 00:16:55,692 --> 00:16:58,890 >> CYNULLEIDFA: Sut mae'r cyfrifiadur gwybod gwerth argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Sut mae'r cyfrifiadur yn gwybod gwerth argc? 357 00:17:02,390 --> 00:17:07,920 Pan fyddwch yn rhedeg rhaglen, y rhaglen, yn ôl natur y brydlon amrantu, 358 00:17:07,920 --> 00:17:11,359 yn cael ei rhoi yr amrywiaeth o geiriau a gafodd eu teipio 359 00:17:11,359 --> 00:17:13,300 wrth yr anogwr, a oedd yn teipio wrth yr anogwr. 360 00:17:13,300 --> 00:17:16,569 Ac felly mae'n eich gweithredu system sydd yn ei hanfod 361 00:17:16,569 --> 00:17:20,329 poblogi'r dadleuon prif ar eich cyfer chi. 362 00:17:20,329 --> 00:17:22,829 Felly dyna un o'r gwasanaethau eich bod yn cael, math o gyfrinachol 363 00:17:22,829 --> 00:17:24,869 o dan y cwfl o system weithredu. 364 00:17:24,869 --> 00:17:27,118 Cwestiynau eraill? 365 00:17:27,118 --> 00:17:27,618 Yeah. 366 00:17:27,618 --> 00:17:29,787 >> CYNULLEIDFA: Beth mae tomen craidd yn ei olygu? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Beth mae tomen craidd yn ei olygu? 368 00:17:31,370 --> 00:17:32,950 Felly dyna gwestiwn da. 369 00:17:32,950 --> 00:17:35,312 A gadewch i mi fynd yn ôl i mewn i cyfeiriadur hwn yma. 370 00:17:35,312 --> 00:17:37,270 A byddwch yn sylwi bod Mae gen i ffeil newydd yno. 371 00:17:37,270 --> 00:17:41,670 Mae'n wir ei alw craidd, ac mae'n mewn gwirionedd yn nodweddiadol ffeil gweddus o faint. 372 00:17:41,670 --> 00:17:45,300 Yn ei hanfod, yn giplun o cynnwys y cof fy rhaglen yn 373 00:17:45,300 --> 00:17:46,902 neu RAM pan chwalodd. 374 00:17:46,902 --> 00:17:49,110 A bydd hyn yn ddefnyddiol, o bosibl, ddiagnostig, 375 00:17:49,110 --> 00:17:52,850 unwaith y byddwn yn siarad mewn darlith yn y dyfodol ac adran am debugging, 376 00:17:52,850 --> 00:17:55,730 oherwydd gallwch ei wneud mewn gwirionedd y cyfateb i awtopsi digidol 377 00:17:55,730 --> 00:18:00,300 ar y ffeil er mwyn helpu i chyfrif i maes beth wnaethoch chi o'i le yn eich rhaglen. 378 00:18:00,300 --> 00:18:01,220 Yeah. 379 00:18:01,220 --> 00:18:04,450 >> CYNULLEIDFA: Ydy argc gorchymyn yn ei hun, neu gallwch chi enwi ei unrhyw beth? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Cwestiwn da. 381 00:18:05,575 --> 00:18:08,040 Yw argc gorchymyn yn ei hun, neu gallwch ei enw unrhyw beth? 382 00:18:08,040 --> 00:18:09,290 Nid yw'n bendant yn gorchymyn. 383 00:18:09,290 --> 00:18:13,500 Mae'n syml newidyn yn enwi neu enw dadl yn, 384 00:18:13,500 --> 00:18:15,481 ac felly yr ydym yn gwbl Gallai galw foo hwn, 385 00:18:15,481 --> 00:18:18,480 gallem alw bar hwn, sy'n tueddu i fod yn y golau-i eiriau y cyfrifiadur 386 00:18:18,480 --> 00:18:19,860 gwyddonydd yn mynd i. 387 00:18:19,860 --> 00:18:22,820 Ond erbyn confensiwn, rydym yn defnyddio argc a argv. 388 00:18:22,820 --> 00:18:25,360 Ond dim ond yn ddynol confensiwn, dim byd mwy. 389 00:18:25,360 --> 00:18:25,860 Mae pob hawl. 390 00:18:25,860 --> 00:18:28,140 Felly troi allan, dwi wedi bod dweud yn dipyn o lie-- gwyn 391 00:18:28,140 --> 00:18:31,264 a dweud y gwir, yn y dyfodol, byddwch yn gweld rydym wedi bod yn dweud celwydd gwyn arall. 392 00:18:31,264 --> 00:18:33,510 Ond am y tro, rydym yn mynd i blicio gefn un o'r rhain. 393 00:18:33,510 --> 00:18:37,310 Yn yr achos yma pan oeddwn yn flaenorol rhedeg rhaglen fel ./hello neu ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, cawsom cynnwys fy cof cyfrifiadur yn edrych yn fras fel 395 00:18:42,780 --> 00:18:43,280 hyn. 396 00:18:43,280 --> 00:18:45,070 Ond yn cofio beth yw llinyn yn. 397 00:18:45,070 --> 00:18:49,279 Beth wnaethon ni ei ddweud wythnos yn ôl yr hyn y mae llinyn mewn gwirionedd o dan y cwfl? 398 00:18:49,279 --> 00:18:50,320 CYNULLEIDFA: Array o chars. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Mae'n amrywiaeth o chars, dde? 400 00:18:52,111 --> 00:18:55,760 Felly, efallai y byddwn yn cael amrywiaeth o llinynnau, ond, yn ei dro, llinyn 401 00:18:55,760 --> 00:18:57,150 yn amrywiaeth o gymeriadau. 402 00:18:57,150 --> 00:19:00,010 Felly os wyf wir eisiau bod yn rhefrol pan fyddaf yn tynnu y llun, 403 00:19:00,010 --> 00:19:03,290 Dylid Fi 'n sylweddol yn cael eu tynnu mae'n ychydig yn fwy fel hyn, 404 00:19:03,290 --> 00:19:08,000 lle ym mhob un o'r rhain mynegeion o fy array argv, 405 00:19:08,000 --> 00:19:11,432 mae hun yn llinyn cyfan bod ei hun mewn arae. 406 00:19:11,432 --> 00:19:13,140 Ac yn awr y gorwedd gwyn rydym yn dweud heddiw 407 00:19:13,140 --> 00:19:15,181 yw nad yw'r darlun yn edrych yn eithaf fel hyn. 408 00:19:15,181 --> 00:19:19,110 Yn wir, mae'r sgwariau bach yn fel arfer y tu allan i'r petryalau mawr 409 00:19:19,110 --> 00:19:19,610 yno. 410 00:19:19,610 --> 00:19:21,280 Ond byddwn yn dod yn ôl at hynny cyn bo hir. 411 00:19:21,280 --> 00:19:25,440 Ond mae hyn yn ./hello slaes 0, fod bod cymeriad arbennig y 412 00:19:25,440 --> 00:19:28,310 tynnu llinell rhwng pen llinyn, ac rydym wedi cael un arall ar ôl 413 00:19:28,310 --> 00:19:29,360 Zamyla yn enw. 414 00:19:29,360 --> 00:19:30,900 Felly beth mae hyn yn ei olygu? 415 00:19:30,900 --> 00:19:33,410 >> Wel, gadewch i mi fynd yn ei flaen a agor dwy enghraifft arall 416 00:19:33,410 --> 00:19:35,220 sydd ar gael ar-lein. 417 00:19:35,220 --> 00:19:40,590 Cael ei alw'n un argv1.c ac mae'r llall yn argv2. 418 00:19:40,590 --> 00:19:44,260 Mae'n rhaglen super-syml sy'n yn wahanol i raglenni yn y gorffennol 419 00:19:44,260 --> 00:19:47,260 yn hynny nawr rwy'n defnyddio argc a argv i fyny yma. 420 00:19:47,260 --> 00:19:54,300 Ac yn awr yr wyf i'n integreiddio gyda gyfer dolen yn unol 18, gan i = 0 ar hyd at argc. 421 00:19:54,300 --> 00:19:56,850 A beth ydw i'n mynd i wneud gyda llinell hon o god yma? 422 00:19:56,850 --> 00:19:58,270 Yn Saesneg. 423 00:19:58,270 --> 00:20:00,510 Mae hyn yn amlwg yn dangos defnydd o argc. 424 00:20:00,510 --> 00:20:03,670 Ond yn Saesneg, beth mae ei wneud os wyf yn rhedeg y rhaglen hon? 425 00:20:03,670 --> 00:20:04,366 Yeah? 426 00:20:04,366 --> 00:20:07,386 >> CYNULLEIDFA: Mae'n mynd i argraffu eich sgrinio gymaint o weithiau ag y dymunwch. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Yn union. 428 00:20:08,260 --> 00:20:10,480 Felly, beth bynnag eiriau yr wyf yn teipiwch wrth yr anogwr, 'i' 429 00:20:10,480 --> 00:20:13,120 mynd y mae ailadrodd nhw ar mi un i bob llinell. 430 00:20:13,120 --> 00:20:14,370 Felly, gadewch i ni fynd yn ei flaen ac yn gwneud hyn. 431 00:20:14,370 --> 00:20:17,862 Gadewch i mi fynd i mewn i fy cyfeiriadur ac yn gwneud ./argv1 argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Ac yn awr, gadewch i ni gadw'n syml. 434 00:20:21,770 --> 00:20:23,834 Gadewch i ni wneud dim byd ar y dechrau. 435 00:20:23,834 --> 00:20:26,750 Oedd yn argraffu un peth, ac dyna wir enw'r rhaglen, 436 00:20:26,750 --> 00:20:28,240 oherwydd dyna yn y braced 0. 437 00:20:28,240 --> 00:20:33,290 Os wyf yn awr yn dweud foo, mae'n mynd i wneud dau hynny, ac os wyf yn dweud bar foo, 438 00:20:33,290 --> 00:20:35,580 mae'n mynd i ddweud y tri pheth. 439 00:20:35,580 --> 00:20:37,740 Nawr bod yn braidd yn ddiddorol, efallai. 440 00:20:37,740 --> 00:20:41,450 Ond yn dwyn i gof bod argv yn amrywiaeth o dannau, 441 00:20:41,450 --> 00:20:45,960 ond mae llinyn yn amrywiaeth o chars, fel y gallwn gymryd pethau i fyny hollt 442 00:20:45,960 --> 00:20:48,560 a chymhwyso hynny sylfaenol rhesymeg a gwneud cod sy'n 443 00:20:48,560 --> 00:20:51,160 yn edrych ychydig yn fwy cryptig, rhaid cyfaddef. 444 00:20:51,160 --> 00:20:53,540 Ond drwy gael nythu dolen, rhywbeth tebyg 445 00:20:53,540 --> 00:20:57,030 i hyn y gallech ei gofio o Mario, er enghraifft, os ydych yn gwneud hynny fel hyn. 446 00:20:57,030 --> 00:21:00,380 >> Felly nawr yn sylwi ar linell 19, rwy'n eto yn ailadrodd dros fy dadleuon, 447 00:21:00,380 --> 00:21:02,410 o 0 ar hyd at argc. 448 00:21:02,410 --> 00:21:05,510 Ac yn awr yn unol 21-- rwy'n benthyca tric gan week-- diwethaf 449 00:21:05,510 --> 00:21:11,090 Yr wyf yn gwirio beth yw'r hyd y braced argv i. 450 00:21:11,090 --> 00:21:12,920 Im 'yn storio yr ateb hwnnw yn n. 451 00:21:12,920 --> 00:21:18,230 Ac yna i ddim yn integreiddio o j ar hyd at n, lle mae j ei ymgychwyn i 0. 452 00:21:18,230 --> 00:21:19,460 Felly, confensiwn ar gyfer cyfrif. 453 00:21:19,460 --> 00:21:22,335 Unwaith y byddwch wedi ei ddefnyddio i, os oes gennych dolen nythol, ni allwch ei ddefnyddio i eto, 454 00:21:22,335 --> 00:21:25,770 fel arall byddwch yn trosysgrifo'r, o bosibl, gwerth y tu allan i'r ddolen mewnol. 455 00:21:25,770 --> 00:21:27,200 Felly, Im 'yn arfer j yn ôl confensiwn. 456 00:21:27,200 --> 00:21:28,020 Efallai y byddwn yn defnyddio k. 457 00:21:28,020 --> 00:21:31,080 Os oes gennych fwy nag k, rydych yn ôl pob tebyg cael gormod nythu, fel arfer. 458 00:21:31,080 --> 00:21:33,800 Ond yn awr, yn sylwi fy printf llinell yn ychydig yn wahanol. 459 00:21:33,800 --> 00:21:37,520 Dydw i ddim yn argraffu% s, rwy'n argraffu% c, sydd, wrth gwrs, 460 00:21:37,520 --> 00:21:39,460 yn dalfan ar gyfer torgoch. 461 00:21:39,460 --> 00:21:40,770 >> Ac yn awr yn sylwi cystrawen hwn. 462 00:21:40,770 --> 00:21:41,270 Newydd. 463 00:21:41,270 --> 00:21:42,630 Nid ydym wedi ei weld o'r blaen. 464 00:21:42,630 --> 00:21:47,290 Ond yn rhesymegol, mae hyn yn unig yn golygu cael y llinyn ith yn argv 465 00:21:47,290 --> 00:21:50,067 a chael y jth beth? 466 00:21:50,067 --> 00:21:50,900 CYNULLEIDFA: Cymeriad. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Cymeriad yn y llinyn. 468 00:21:52,800 --> 00:21:57,100 Felly, trwy ddefnyddio cromfachau sgwâr ddilyn gan bachau petryal, 469 00:21:57,100 --> 00:22:00,390 mae hyn yn deifio cyntaf i mewn i llinynnau argv yn, 470 00:22:00,390 --> 00:22:02,225 ac yna yr ail cromfachau sgwâr gyda j 471 00:22:02,225 --> 00:22:06,580 yn plymio i mewn i'r cymeriadau o y llinyn penodol mewn argv. 472 00:22:06,580 --> 00:22:09,562 Ac yna, yn unig ar gyfer mesur da, Rydw i'n argraffu llinell newydd yma. 473 00:22:09,562 --> 00:22:12,020 Felly nawr gadewch i mi fynd yn ei flaen ac yn agor i fyny ychydig yn fwy ffenestr 474 00:22:12,020 --> 00:22:13,600 fel y gallwn weld hyn ar waith. 475 00:22:13,600 --> 00:22:15,700 Gadewch i mi fynd i mewn i'r ffolder. 476 00:22:15,700 --> 00:22:22,550 Ac yn awr yn gwneud argv-2-- whoops-- gwneud argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 Ac mae'n ychydig yn anodd i ddarllen yn fertigol, 479 00:22:24,860 --> 00:22:27,920 ond mae hynny'n wir enw'r rhaglen, wedi'i ddilyn gan y llinell wag. 480 00:22:27,920 --> 00:22:30,210 Nawr gadewch i mi fynd yn ei flaen ac yn gwneud foo. 481 00:22:30,210 --> 00:22:33,210 Yn yr un modd anodd darllen, ond mae'n yn wir argraffu un cymeriad bob llinell. 482 00:22:33,210 --> 00:22:36,780 Ac os wyf yn gwneud bar, 'i' nawr argraffu rhai fesul llinell. 483 00:22:36,780 --> 00:22:40,140 Felly, nid yw'r cludfwyd yma yn gymaint hynny, wow, edrychwch ar y tric newydd daclus 484 00:22:40,140 --> 00:22:44,750 lle gallwch gael yn y cynnwys o gymeriadau penodol arae yn, 485 00:22:44,750 --> 00:22:48,380 ond yn hytrach sut rydym yn cymryd y rhain sylfaenol syniadau fel mynegeio i mewn arae, 486 00:22:48,380 --> 00:22:51,620 ac yna'n mynegeio i mewn i amrywiaeth a oedd yn y arae, 487 00:22:51,620 --> 00:22:56,180 a dim ond yn gwneud cais yr un syniadau i enghreifftiau ychydig yn fwy soffistigedig. 488 00:22:56,180 --> 00:22:59,560 Ond y pethau sylfaenol yn ddim wir wedi newid, hyd yn oed ers yr wythnos diwethaf. 489 00:22:59,560 --> 00:23:02,350 >> Yn awr mae hyn yn fath o yn amserol, yn hynny, yn galw i gof, yn wythnos sero 490 00:23:02,350 --> 00:23:04,110 rydym yn chwarae gyda llyfr ffôn fel hyn. 491 00:23:04,110 --> 00:23:06,670 Ac er bod hyn yn amlwg yn darnau ffisegol o bapur, 492 00:23:06,670 --> 00:23:09,150 gallwch chi fath o feddwl am llyfr ffôn fel arae. 493 00:23:09,150 --> 00:23:12,770 Yn sicr, pe baech yn reimplement mae hyn darnau darnau hyn o bapur 494 00:23:12,770 --> 00:23:15,260 mewn cyfrifiadur, yn ôl pob tebyg byddech yn defnyddio rhywbeth 495 00:23:15,260 --> 00:23:20,270 fel arae i storio pob un o'r rheini enwau a rhifau o A y ffordd i gyd 496 00:23:20,270 --> 00:23:23,800 drwy Z. Felly, mae hyn yn braf, oherwydd mae'n caniatáu cyfle inni, 497 00:23:23,800 --> 00:23:28,310 efallai, er mwyn ystyried sut y gallech chi mewn gwirionedd yn gweithredu rhywbeth fel 'na. 498 00:23:28,310 --> 00:23:31,250 Fel gyda chyfres o ddrysau yma. 499 00:23:31,250 --> 00:23:36,380 Felly os wyf could-- arnom angen un wirfoddoli i ddod ar i fyny. 500 00:23:36,380 --> 00:23:36,980 Gadewch i ni weld. 501 00:23:36,980 --> 00:23:40,650 Mae wyneb anghyfarwydd efallai, wyneb anghyfarwydd efallai. 502 00:23:40,650 --> 00:23:42,090 Beth am yn oren? 503 00:23:42,090 --> 00:23:42,680 Yma. 504 00:23:42,680 --> 00:23:45,870 Crys oren, yn dod ar i fyny. 505 00:23:45,870 --> 00:23:52,230 >> Gadewch i ni fynd yn ei flaen yn awr ac yn symud y drysau hyn drosodd i'r ochr, 506 00:23:52,230 --> 00:23:54,020 symud y rhain allan o'r ffordd am eiliad. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Beth yw eich enw? 509 00:23:57,760 --> 00:23:58,580 >> Ajay: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Malan: Ajay. 511 00:23:58,655 --> 00:23:58,680 Dafydd. 512 00:23:58,680 --> 00:23:59,451 Neis i gwrdd â chi. 513 00:23:59,451 --> 00:23:59,950 Mae pob hawl. 514 00:23:59,950 --> 00:24:04,500 Felly mae gennym y tu ôl y chwe drysau yn ddigidol ar y screen-- 515 00:24:04,500 --> 00:24:07,810 neu, yn hytrach, saith drysau ar y screen-- criw cyfan o rifau. 516 00:24:07,810 --> 00:24:10,099 Ac yr wyf wedi dweud wrthych beth yn advance-- gytunwyd? 517 00:24:10,099 --> 00:24:11,140 Ajay: Nid oes dim o flaen llaw. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Y cyfan yr wyf am i chi ei wneud yn awr yw dod o hyd i mi, ac i ni, 519 00:24:14,730 --> 00:24:20,920 mewn gwirionedd, mae'r rhif 50, un cam ar y tro. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: Rhif 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: Y rhif 50. 522 00:24:22,580 --> 00:24:24,746 A gallwch ddatgelu beth sydd y tu ôl i bob un o'r drysau hyn 523 00:24:24,746 --> 00:24:27,930 syml drwy gyffwrdd 'i ag a bys. 524 00:24:27,930 --> 00:24:31,364 Damia. [Chwerthin] 525 00:24:31,364 --> 00:24:34,560 >> [Cymeradwyaeth] 526 00:24:34,560 --> 00:24:39,540 >> Gwneud yn dda iawn. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Mae gennym anrheg hyfryd gwobr i chi yma. 529 00:24:44,090 --> 00:24:46,520 Eich dewis o ffilmiau yr ydym drafodwyd yr wythnos diwethaf. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: O, dyn. 531 00:24:47,362 --> 00:24:49,050 O, nid wyf erioed wedi gweld Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Mae pob hawl. 534 00:24:50,140 --> 00:24:53,790 Felly dal ar ddim ond un eiliad. 535 00:24:53,790 --> 00:24:57,430 How-- gadewch i ni wneud hyn a moment-- teachable 536 00:24:57,430 --> 00:25:00,412 sut yr aethoch chi ati i ddod o hyd i'r rhif 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: Dewisais hap. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Felly yr ydych yn dewis ar hap a got 'n ffodus. 539 00:25:03,420 --> 00:25:03,790 Ajay: Ydw. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: Iawn. 541 00:25:04,456 --> 00:25:05,050 Ardderchog. 542 00:25:05,050 --> 00:25:08,470 Felly nawr, nid oedd gennych gotten lwcus, beth arall 543 00:25:08,470 --> 00:25:10,210 allai fod wedi digwydd tu ôl i ddrysau hyn? 544 00:25:10,210 --> 00:25:12,930 Felly, os wyf yn mynd yn ei flaen a datgelu rhifau hyn yma, 545 00:25:12,930 --> 00:25:15,180 maent mewn gwirionedd mewn trefn ar hap. 546 00:25:15,180 --> 00:25:17,750 A'r gorau y gallech gael wneud, a dweud y gwir, yn ôl, yn y pen draw, 547 00:25:17,750 --> 00:25:19,410 yn yr achos gwaethaf, i gyd gwirio. 548 00:25:19,410 --> 00:25:23,000 Felly, rydych got super-ffodus, a oedd yn Nid yw hyn y byddem yn galw algorithm. 549 00:25:23,000 --> 00:25:24,730 Oes, congrats. 550 00:25:24,730 --> 00:25:27,010 Ond yn awr let's-- hiwmor i mi, os ydych yn gallu. 551 00:25:27,010 --> 00:25:28,310 Gadewch i ni fynd i'r tab hwn yma. 552 00:25:28,310 --> 00:25:31,460 A dyma yw'r rhifau yn amlwg yr hyn sy'n ymddangos i fod yn unrhyw drefn, 553 00:25:31,460 --> 00:25:32,280 ac yr oeddent yn. 554 00:25:32,280 --> 00:25:35,160 Ond yn awr, os wyf yn lle hynny hawliad y tu ôl i ddrysau hyn 555 00:25:35,160 --> 00:25:39,070 niferoedd sy'n cael eu didoli. 556 00:25:39,070 --> 00:25:41,780 Y nod nawr yw hefyd ddod o hyd i ni y rhif 50. 557 00:25:41,780 --> 00:25:45,910 Ond yn ei wneud algorithmically, ac dywedwch wrthym sut rydych chi'n mynd am y peth. 558 00:25:45,910 --> 00:25:48,020 Ac os ydych yn ei chael yn, eich bod yn cadw y ffilm. 559 00:25:48,020 --> 00:25:49,520 Nid ydych yn ei chael yn, byddwch yn ei roi yn ôl. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Felly, yr wyf i'n mynd i edrych ar y ddau ben yn gyntaf, i bennu os there's-- 562 00:25:58,112 --> 00:26:02,048 [Chwerthin a chymeradwyaeth] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Yma byddwch yn mynd. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Gadewch i ni edrych ar un o ragflaenwyr Ajay yn, 567 00:26:21,700 --> 00:26:25,450 Sean, nad oedd cweit mor lwcus. 568 00:26:25,450 --> 00:26:28,670 Iawn, felly mae eich tasg yma, Sean, yw'r canlynol. 569 00:26:28,670 --> 00:26:32,970 Yr wyf wedi cuddio tu ôl i'r rhain drysau y rhif saith, 570 00:26:32,970 --> 00:26:37,200 ond cuddio yn rhai o'r drysau hyn yn ogystal niferoedd nad ydynt yn negyddol eraill. 571 00:26:37,200 --> 00:26:40,730 A bod eich nod yw i feddwl am hyn rhes uchaf o rifau fel dim ond arae. 572 00:26:40,730 --> 00:26:43,590 Rydym yn unig dilyniant o ddarnau o bapur gyda rhifau y tu ôl iddynt. 573 00:26:43,590 --> 00:26:47,640 Ac mae eich nod yw, dim ond yn defnyddio'r top amrywiaeth yma, yn dod o hyd i mi y rhif saith. 574 00:26:47,640 --> 00:26:51,200 Ac rydym yn wedyn yn mynd i feirniadu sut yr ydych yn mynd ati i wneud hynny. 575 00:26:51,200 --> 00:26:52,920 Dewch o hyd i ni y rhif saith, os gwelwch yn dda. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Rhif 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 Nid yw'n gwestiwn tric. 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 Ar y pwynt hwn nad yw eich sgôr yn iawn dda, felly efallai y byddwch yn ogystal yn dal i fynd. 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 Ewch amdani. 590 00:27:39,802 --> 00:27:42,510 A siarad yn blaen, ni allaf helpu ond meddwl hyn yr ydych yn hyd yn oed yn meddwl am. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Yr wyf yn gallu cymryd o dim ond y rhes uchaf. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Dim ond y rhes uchaf. 593 00:27:46,240 --> 00:27:47,281 Felly, mae gennych dri chwith. 594 00:27:47,281 --> 00:27:48,310 Felly dod o hyd i mi 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [CYNULLEIDFA gweiddi AWGRYMIADAU] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Felly, y ddau o'r rhai oedd yn anhygoel am resymau gwahanol iawn. 599 00:28:26,130 --> 00:28:29,150 Felly, dyma lle yr ydym yn chwith oddi funud yn ôl, 600 00:28:29,150 --> 00:28:32,530 ac mae'r mewnwelediad allweddol yma Cafodd y drysau hyn rhifau 601 00:28:32,530 --> 00:28:37,390 y tu ôl iddynt a gafodd eu didoli, mae'r delfrydol bwyd parod ar eu cyfer fel y gallech ei wneud 602 00:28:37,390 --> 00:28:39,670 sylfaenol yn well yn yr ail example-- 603 00:28:39,670 --> 00:28:42,380 ac, yn wir, yr oedd Sean yn ymgais gyntaf gyda rhifau ar hap 604 00:28:42,380 --> 00:28:45,460 un mor before-- ond cyn gynted gan fod y niferoedd hyn yn cael eu datrys, 605 00:28:45,460 --> 00:28:47,980 yn debyg iawn i'r llyfr ffôn, beth allwch chi ei wneud yn amlwg? 606 00:28:47,980 --> 00:28:50,090 Neu sut y gallwch trosoledd wybodaeth honno? 607 00:28:50,090 --> 00:28:51,530 Yeah. 608 00:28:51,530 --> 00:28:54,910 >> CYNULLEIDFA: Rydych yn mynd hanner ffordd [Anghlywadwy]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Yeah. 610 00:28:55,660 --> 00:28:56,160 Yn union. 611 00:28:56,160 --> 00:28:59,680 Felly greddf gyntaf Ajay oedd i wirio y ddau ben, fel yr wyf yn cofio, 612 00:28:59,680 --> 00:29:02,320 ac yna rydym yn fath o gorffenedig yr enghraifft yn gyflym. 613 00:29:02,320 --> 00:29:05,220 Ond pe baem yn dechrau i wneud hyn yn fwy drefnus ar y llinellau hynny, 614 00:29:05,220 --> 00:29:07,860 ond yn dechrau efallai yn y canol, oherwydd eu bod yn didoli, 615 00:29:07,860 --> 00:29:10,900 cyn gynted ag y byddwn yn datgelu'r rhif 16, yr ydym felly know-- 616 00:29:10,900 --> 00:29:14,850 a gadewch i ni wneud yn union that-- i ni Felly, yn gwybod bod 50, rhag ofn heddiw, 617 00:29:14,850 --> 00:29:16,080 wedi mynd i fod ar y dde. 618 00:29:16,080 --> 00:29:18,735 Felly, yn union fel yn wythnos sero pan rydym rhwygodd y llyfr ffôn yn ei hanner 619 00:29:18,735 --> 00:29:21,490 ac yn taflu hanner y broblem i ffwrdd, un syniad yma. 620 00:29:21,490 --> 00:29:23,680 Gallwn daflu hanner hwn o'r broblem i ffwrdd. 621 00:29:23,680 --> 00:29:25,730 Ac mae'n debyg yr hyn yr ydych Gallai wneud algorithmically, 622 00:29:25,730 --> 00:29:28,710 unwaith y byddwch yn gwybod bod yn rhaid i 50 fod ar y dde, os yw'n unrhyw le, 623 00:29:28,710 --> 00:29:31,390 yn ceisio yno, yn y canol y drysau ar ôl. 624 00:29:31,390 --> 00:29:33,450 Wrth gwrs, 50 yn uwch na 42, felly gallwn 625 00:29:33,450 --> 00:29:36,060 taflu hyn sy'n weddill chwarter o'r broblem i ffwrdd, 626 00:29:36,060 --> 00:29:38,510 ac, yn olaf, yn nodi rhywbeth fel 50. 627 00:29:38,510 --> 00:29:41,050 Ond, yn union fel gyda'r llyfr ffôn, rhifau hyn 628 00:29:41,050 --> 00:29:44,560 eu rhoi i ni eisoes mewn drefn ddidoli, sy'n gadael i ni 629 00:29:44,560 --> 00:29:47,450 gyda'r cwestiwn, sut ydych chi'n gael pethau mewn trefn sortio? 630 00:29:47,450 --> 00:29:49,640 Ac, a dweud y gwir, ar ba gost? 631 00:29:49,640 --> 00:29:51,390 Mae'n un peth i fod yn rhoi y llyfr ffôn 632 00:29:51,390 --> 00:29:54,810 ac yna argraff ar eich ffrindiau drwy ddod o hyd rhif ffôn yn gyflym iawn, dde? 633 00:29:54,810 --> 00:29:58,520 Rhwygo 32 tudalen allan i ddod o hyd i person allan o 4000000000 dudalennau, 634 00:29:58,520 --> 00:30:00,470 dywedasom yn un enghraifft eithafol. 635 00:30:00,470 --> 00:30:03,320 Ond faint o amser oedd yn ei gymryd Verizon i ddatrys y llyfr ffôn? 636 00:30:03,320 --> 00:30:06,170 Faint o amser gymerodd hi mynd â ni didoli rhain saith rhifau? 637 00:30:06,170 --> 00:30:10,110 Dyna gwestiwn a rydym wedi felly hanwybyddu yn hyn yn gyfan gwbl. 638 00:30:10,110 --> 00:30:12,330 >> Felly gadewch i ni ateb y cwestiwn hwn yn awr. 639 00:30:12,330 --> 00:30:15,920 Ac rydym ni i gyd allan o ffilmiau nawr, ond mae gennym rai peli straen. 640 00:30:15,920 --> 00:30:19,480 Os, yn dweud, wyth o wirfoddolwyr Ni fyddai ots ymuno â ni i fyny yma? 641 00:30:19,480 --> 00:30:24,100 Gadewch i ni fynd yn ei flaen ac yn ei wneud, beth am y pedwar ohonoch, tri o chi fan hyn? 642 00:30:24,100 --> 00:30:25,290 Cael rhai wynebau newydd. 643 00:30:25,290 --> 00:30:27,220 A phedwar o chi yno? 644 00:30:27,220 --> 00:30:30,760 Ac now-- gadewch i ni beidio rhagfarn Yma-- a rhif wyth dros yma ar y diwedd. 645 00:30:30,760 --> 00:30:32,060 Dewch ar i fyny. 646 00:30:32,060 --> 00:30:32,560 Mae pob hawl. 647 00:30:32,560 --> 00:30:37,480 Felly, yr hyn sydd gennym yma am ddau ohonoch yn rhif. 648 00:30:37,480 --> 00:30:40,055 Os byddech chi'n hoffi mynd yn ei flaen, yn cymryd y nifer hwn. 649 00:30:40,055 --> 00:30:40,763 Beth yw eich enw? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, iawn. 652 00:30:43,100 --> 00:30:44,297 Rydych yn rhif 1. 653 00:30:44,297 --> 00:30:45,310 >> Amin: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID Malan: Amin. 655 00:30:46,060 --> 00:30:46,820 Dafydd. 656 00:30:46,820 --> 00:30:47,530 Rydych yn rhif 2. 657 00:30:47,530 --> 00:30:49,100 Ac yn mynd yn ei flaen, gan fy mod yn llaw chi y dalen o bapur, 658 00:30:49,100 --> 00:30:52,130 llinell eich hunain i fyny o flaen y gerddoriaeth yn sefyll yn yr un drefn ag i fyny yno. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Hi, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, mae'n braf eich gweld chi. 661 00:30:53,970 --> 00:30:54,520 Rhif 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jacob, rhif 4. 664 00:30:56,760 --> 00:30:57,549 Croeso ar fwrdd. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: Grant. 667 00:30:58,881 --> 00:31:00,348 Rhif 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, rhif 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, rhif 7. 672 00:31:04,880 --> 00:31:05,200 A? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, rhif 8. 675 00:31:06,815 --> 00:31:07,100 Mae pob hawl. 676 00:31:07,100 --> 00:31:08,766 Mynd yn ei flaen ac yn cael eich hun yn y drefn hon. 677 00:31:08,766 --> 00:31:11,440 Gadewch i mi roi un sy'n weddill cerddoriaeth yn sefyll yn eu lle. 678 00:31:11,440 --> 00:31:13,670 Ble ydych chi angen stondin? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Mynd yn ei flaen a dim ond rhowch eich rhifau lle gall y gynulleidfa weld nhw ar, 681 00:31:18,710 --> 00:31:20,340 mae'r gerddoriaeth yn sefyll yn wynebu tuag allan. 682 00:31:20,340 --> 00:31:27,240 A, gobeithio, ein cyntaf gwiriad pwyll Yma-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Arhoswch funud. 685 00:31:29,070 --> 00:31:31,140 Nid oes gennym 8. 686 00:31:31,140 --> 00:31:35,180 Angen i mi i'ch troi allan yr enghraifft rywsut. 687 00:31:35,180 --> 00:31:35,680 Rhif 688 00:31:35,680 --> 00:31:36,940 Na, mae hynny'n iawn. 689 00:31:36,940 --> 00:31:37,890 Gadewch i ni weld. 690 00:31:37,890 --> 00:31:38,880 Gallwn wneud hyn. 691 00:31:38,880 --> 00:31:39,440 Sefyll yn ôl. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Dyna ni. 694 00:31:45,740 --> 00:31:46,800 Cywir. 695 00:31:46,800 --> 00:31:47,360 Mae pob hawl. 696 00:31:47,360 --> 00:31:50,260 Felly, erbyn hyn mae gennym 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Ardderchog. 699 00:31:51,360 --> 00:31:54,400 >> Felly, y cwestiwn dan sylw yw, ar beth yw'r gost, a thrwy ba ddull, 700 00:31:54,400 --> 00:31:58,580 allwn ni mewn gwirionedd yn didoli rhifau hyn yma fel y gallwn fath o gweithio tuag yn ôl, 701 00:31:58,580 --> 00:32:02,759 yn y pen draw, ac decide-- mae 'n sylweddol drawiadol, mae 'n sylweddol yn effeithlon, 702 00:32:02,759 --> 00:32:04,550 y gallaf rannu a goncro llyfr ffôn? 703 00:32:04,550 --> 00:32:06,716 A yw'n wir yn effeithlon sy'n Gallaf rannu a gorchfygu 704 00:32:06,716 --> 00:32:08,600 darnau digidol y rhai o bapur ar y bwrdd, 705 00:32:08,600 --> 00:32:14,500 os efallai mae'n mynd i gostio i ni ffortiwn mewn amser neu feiciau ynni neu CPU 706 00:32:14,500 --> 00:32:17,340 i gael ein data mewn gwirionedd yn i mewn i rai drefn ddidoli? 707 00:32:17,340 --> 00:32:18,930 Felly, gadewch i ni ofyn y cwestiwn hwnnw. 708 00:32:18,930 --> 00:32:22,077 >> Off Felly cyntaf, rhifau hyn yn yn 'n bert lawer unrhyw drefn, 709 00:32:22,077 --> 00:32:24,160 ac yr wyf i'n mynd i gynnig un algorithm, neu broses 710 00:32:24,160 --> 00:32:25,970 y gallwn ddatrys Folks hyn. 711 00:32:25,970 --> 00:32:28,100 Rydw i'n mynd i fynd at mae hyn yn eithaf ddiniwed. 712 00:32:28,100 --> 00:32:30,730 Ac yr wyf i'n mynd i gydnabod ei fod yn fath o lawer i mi 713 00:32:30,730 --> 00:32:32,890 i lapio fy meddwl o amgylch y gosod data cyfan ar unwaith. 714 00:32:32,890 --> 00:32:33,640 Ond eich bod yn gwybod beth? 715 00:32:33,640 --> 00:32:37,450 Dw i'n mynd i wneud rhai atebion ymylol syml iawn. 716 00:32:37,450 --> 00:32:41,152 4 a 2 yn allan o drefn, os bydd y nod yw i fynd o 1 ar hyd at 8. 717 00:32:41,152 --> 00:32:41,860 Felly, rydych yn gwybod beth? 718 00:32:41,860 --> 00:32:43,776 Rydw i'n mynd i gael i chi guys cyfnewid, os byddwch yn newid 719 00:32:43,776 --> 00:32:46,380 gorfforol swyddi a eich darnau o bapur. 720 00:32:46,380 --> 00:32:47,894 Nawr 4 a 6, mae'r rhain mewn trefn. 721 00:32:47,894 --> 00:32:49,060 Rydw i'n mynd i adael hynny fod. 722 00:32:49,060 --> 00:32:50,227 6 ac 8, y rhai mewn trefn. 723 00:32:50,227 --> 00:32:51,185 Mynd i adael iddyn nhw fod. 724 00:32:51,185 --> 00:32:52,170 8 and1, allan o drefn. 725 00:32:52,170 --> 00:32:54,790 Os ydych na fyddai dau meddwl cyfnewid. 726 00:32:54,790 --> 00:32:57,300 Nawr 8 a 3, os gallech chi guys gyfnewid. 727 00:32:57,300 --> 00:32:59,320 8 a 7, pe baech guys gyfnewid. 728 00:32:59,320 --> 00:33:01,790 Ac 8 a 5, pe baech guys gyfnewid. 729 00:33:01,790 --> 00:33:03,980 >> Yn awr, ydw i'n ei wneud? 730 00:33:03,980 --> 00:33:05,200 Na, yn amlwg nid. 731 00:33:05,200 --> 00:33:07,880 Ond yr wyf wedi gwneud y sefyllfa yn well, dde? 732 00:33:07,880 --> 00:33:09,430 Beth oedd eich enw eto, rhif 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Felly Rachel Mae gan bubbled i fyny 'n bert yn effeithiol yn hyn, 735 00:33:12,850 --> 00:33:15,660 yr holl ffordd hyd at ddiwedd fy amrywiaeth o rifau yma. 736 00:33:15,660 --> 00:33:17,310 Ac felly y broblem honno yn fath o datrys. 737 00:33:17,310 --> 00:33:21,670 Yn awr, yn amlwg, 2 sydd angen symud ychydig, a 4 a 6 a 1. 738 00:33:21,670 --> 00:33:24,420 Ond yr wyf yn ymddangos i fod wedi gotten ychydig yn agosach at yr ateb. 739 00:33:24,420 --> 00:33:26,790 Felly, gadewch i ni wneud cais yr un hewristig naïf eto. 740 00:33:26,790 --> 00:33:27,690 2 a 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 a 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 a 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Gadewch i gyfnewid. 744 00:33:32,230 --> 00:33:33,200 6 a 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Gadewch i gyfnewid. 746 00:33:34,420 --> 00:33:35,580 6 a 7 yn iawn. 747 00:33:35,580 --> 00:33:36,590 7 a 5, Na. 748 00:33:36,590 --> 00:33:37,790 Gadewch i gyfnewid. 749 00:33:37,790 --> 00:33:38,470 Ac yn awr 7 ac 8. 750 00:33:38,470 --> 00:33:39,862 A beth yw eich enw eto? 751 00:33:39,862 --> 00:33:40,570 FRANCES: Frances. 752 00:33:40,570 --> 00:33:41,445 DAVID Malan: Frances. 753 00:33:41,445 --> 00:33:44,230 Felly nawr Frances yn hyd yn oed gwell sefyllfa, oherwydd erbyn hyn 7 a 8 754 00:33:44,230 --> 00:33:46,440 yn cael eu bubbled yn gywir hyd at y brig. 755 00:33:46,440 --> 00:33:47,510 Felly, 2 a 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 a 1, gadewch i ffeirio. 757 00:33:48,720 --> 00:33:50,410 4 a 3, gadewch i ffeirio. 758 00:33:50,410 --> 00:33:51,550 4 a 6, eich bod yn iawn. 759 00:33:51,550 --> 00:33:53,340 6 a 5, gadewch i ffeirio. 760 00:33:53,340 --> 00:33:54,590 Ac yn awr y rhai guys yn dda. 761 00:33:54,590 --> 00:33:55,780 Rydym yn bron yno. 762 00:33:55,780 --> 00:33:57,706 2 ac 1, allan o drefn, felly cyfnewid. 763 00:33:57,706 --> 00:33:59,080 Ac yn awr gadewch i mi wneud gwiriad pwyll. 764 00:33:59,080 --> 00:34:03,080 2 a 3, 3 a 4, 4 a 5, 5 a 6, 6 a 7, 8. 765 00:34:03,080 --> 00:34:05,060 Iawn, felly rydym yn ei wneud. 766 00:34:05,060 --> 00:34:09,310 >> Ond ar ba gost a wnaeth i mi didoli rhifau hyn yma? 767 00:34:09,310 --> 00:34:13,960 Wel, faint o gamau y gwnaeth i mi o bosibl cymryd wrth ddidoli Folks hyn? 768 00:34:13,960 --> 00:34:15,710 Wel, byddwn yn dod yn ôl at y cwestiwn hwnnw. 769 00:34:15,710 --> 00:34:18,030 Ond, a dweud y gwir, os ydych yn cael ychydig yn diflasu, dyna 770 00:34:18,030 --> 00:34:22,270 fath o ddatgelu yn y nad oedd hyn yn efallai yr algorithm mwyaf effeithlon. 771 00:34:22,270 --> 00:34:25,230 Ac yn wir, dweud y gwir, dw i'n chwysu oed yn fwy gerdded yn ôl ac ymlaen. 772 00:34:25,230 --> 00:34:26,639 Nad oedd yn teimlo'n arbennig o effeithlon. 773 00:34:26,639 --> 00:34:27,805 Felly gadewch i ni roi cynnig ar rywbeth arall. 774 00:34:27,805 --> 00:34:31,870 Pe gallech guys ailosod eich hunain i'r rhain wyth werthoedd. 775 00:34:31,870 --> 00:34:32,969 Gwaith da. 776 00:34:32,969 --> 00:34:36,570 >> Gadewch i ni edrych yn ddigidol, am ddim ond eiliad cyn i ni roi cynnig ar rywbeth arall, 777 00:34:36,570 --> 00:34:38,179 ar beth yn union a ddigwyddodd. 778 00:34:38,179 --> 00:34:41,330 Hyd yma, rydych chi ar fin i weld delweddu o'r rhain wyth bobl 779 00:34:41,330 --> 00:34:44,719 lle glas a choch bariau yn cynrychioli rhifau. 780 00:34:44,719 --> 00:34:46,670 Mae'r talach y bar, po fwyaf y rhif. 781 00:34:46,670 --> 00:34:48,510 Mae'r byrrach y bar, y lleiaf yw'r rhif. 782 00:34:48,510 --> 00:34:51,560 A beth rydych chi'n mynd i weld yn trefn ar hap yn fwy nag wyth ohonynt. 783 00:34:51,560 --> 00:34:55,830 Rydych yn mynd i weld bariau hyn cael trefnu yn ôl yr un algorithm, 784 00:34:55,830 --> 00:34:59,890 neu set o gyfarwyddiadau, sy'n byddwn yn galw hyn allan fath swigen. 785 00:34:59,890 --> 00:35:04,000 Felly sylwi, pob eiliad neu hynny, dau far yn goleuo i fyny mewn coch, 786 00:35:04,000 --> 00:35:05,590 yn cael eu cymharu gan y cyfrifiadur. 787 00:35:05,590 --> 00:35:08,630 Ac yna os bydd y bar mawr a'r Ychydig bar yn allan o drefn, 788 00:35:08,630 --> 00:35:11,220 maent yn cael eu cyfnewid i mi. 789 00:35:11,220 --> 00:35:15,120 >> Yn awr mae hyn yn hynod ddiflas i wylio hyn, yn sicr, 790 00:35:15,120 --> 00:35:18,630 am hir iawn, ond yn sylwi ar y takeaway-- bariau mawr symud i'r dde, 791 00:35:18,630 --> 00:35:20,460 bariau bach yn symud i'r chwith. 792 00:35:20,460 --> 00:35:23,380 Gadewch i erthylu broses hon a chyflymu hyn i fyny 793 00:35:23,380 --> 00:35:27,330 i fod yn llawer cyflymach, felly gallwn cael ymdeimlad lefel-uchel o'r hyn, 794 00:35:27,330 --> 00:35:29,970 yn wir, didoli swigen yn ei wneud. 795 00:35:29,970 --> 00:35:33,150 Yn wir, mae'n byrlymu i fyny at y ochr dde'r y rhestr, 796 00:35:33,150 --> 00:35:35,260 neu yr amrywiaeth, y bariau mwy. 797 00:35:35,260 --> 00:35:40,020 Ac i'r gwrthwyneb, mae'r bariau bach yn byrlymu eu ffordd i lawr i'r chwith, 798 00:35:40,020 --> 00:35:42,950 er ar gyflymder gyflymach nag a wnaethom o'r blaen. 799 00:35:42,950 --> 00:35:45,850 Felly, yn fwy anodd i weld â phobl, ond ar eu golwg dyna wir beth 800 00:35:45,850 --> 00:35:46,540 oedd yn digwydd. 801 00:35:46,540 --> 00:35:49,110 >> Ond gadewch i ni roi cynnig ar sylfaenol agwedd wahanol yn awr. 802 00:35:49,110 --> 00:35:52,387 Gadewch i ni roi cynnig ar wahanol algorithm lle rydym yn rhaid i chi 803 00:35:52,387 --> 00:35:59,640 guys yn dechrau yn y gwreiddiol swyddi, a oedd y gorchymyn yma. 804 00:35:59,640 --> 00:36:00,827 A gadewch i ni fynd yn ei flaen yn awr. 805 00:36:00,827 --> 00:36:02,910 Ac yr wyf i'n mynd i wneud rhywbeth hyd yn oed yn symlach, dde? 806 00:36:02,910 --> 00:36:06,710 Wrth edrych yn ôl, cyfnewid pairwise eto ac unwaith eto, mae bron ychydig yn glyfar. 807 00:36:06,710 --> 00:36:10,460 Gadewch i ni wneud pethau hyd yn oed yn fwy ddiniwed, lle os ydw i am roi trefn Folks hyn, 808 00:36:10,460 --> 00:36:12,560 gadewch i mi jyst cadw chwilio gyfer yr elfen lleiaf. 809 00:36:12,560 --> 00:36:14,570 Felly ar hyn o bryd, 4 yw'r nifer lleiaf Rwyf wedi gweld. 810 00:36:14,570 --> 00:36:15,695 Rydw i'n mynd i gofio hynny. 811 00:36:15,695 --> 00:36:17,750 Na, 2 yn well, a chofiwch fod. 812 00:36:17,750 --> 00:36:20,730 1 yn oed yn llai. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 OK. 815 00:36:22,470 --> 00:36:23,750 One-- beth yw eich enw eto? 816 00:36:23,750 --> 00:36:24,400 >> Artie: Artie. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Malan: Artie. 818 00:36:24,610 --> 00:36:25,460 Felly, Artie, mynd yn ei flaen. 819 00:36:25,460 --> 00:36:27,043 Rydw i'n mynd i dynnu chi allan o'r llinell. 820 00:36:27,043 --> 00:36:28,400 Pe gallech ddod yn ôl yma. 821 00:36:28,400 --> 00:36:30,790 Ac mae angen i mi wneud lle ar gyfer iddo. 822 00:36:30,790 --> 00:36:32,040 Mae gennym bwynt penderfyniad yma. 823 00:36:32,040 --> 00:36:36,000 Sut y gallem wneud lle ar gyfer Artie yma ar y dechrau lle mae rhif 1 yn perthyn? 824 00:36:36,000 --> 00:36:36,770 >> CYNULLEIDFA: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: Iawn, rydym yn Gallai symud pawb. 826 00:36:38,950 --> 00:36:40,860 Ond yn cynnig optimization. 827 00:36:40,860 --> 00:36:43,410 Mae hynny'n teimlo ychydig yn blino i mi i ofyn i bedwar o bobl 828 00:36:43,410 --> 00:36:44,620 i symud yr holl ffordd i lawr. 829 00:36:44,620 --> 00:36:45,520 Beth arall allwn i ei wneud? 830 00:36:45,520 --> 00:36:46,360 >> CYNULLEIDFA: Switch nhw. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: eu Switch. 832 00:36:46,850 --> 00:36:47,900 A beth yw eich enw eto? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jacob, yn symud. 835 00:36:50,330 --> 00:36:54,440 Llawer mwy effeithlon yn unig i gael Lleoliadau cyfnewid Jacob gyda Artie, 836 00:36:54,440 --> 00:36:56,710 yn hytrach na gorfodi pob un o'r pedwar o'r Folks hyn, 837 00:36:56,710 --> 00:36:58,734 diolch yn fawr iawn, at eu sefyllfa gywir. 838 00:36:58,734 --> 00:37:01,150 Beth sy'n braf am Artie yn awr, ei fod yn ei safle cywir. 839 00:37:01,150 --> 00:37:02,060 Gadewch i ni wneud hyn eto. 840 00:37:02,060 --> 00:37:03,730 2, dyna y nifer lleiaf dwi wedi gweld. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 OK. 843 00:37:06,190 --> 00:37:07,467 2 yn bendant y lleiaf. 844 00:37:07,467 --> 00:37:08,550 Nid oes rhaid i wneud unrhyw waith. 845 00:37:08,550 --> 00:37:09,320 Gadewch i ni wneud hynny eto. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Lleiaf? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Na. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Gadewch i mi gofio 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Gadewch i mi gofio 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Rhif lleiaf Rwyf wedi gweld ar tocyn hwn yw 3. 857 00:37:18,490 --> 00:37:20,340 Os byddech chi'n dod ar allan. 858 00:37:20,340 --> 00:37:21,986 Ble ydyn ni'n mynd i roi i chi? 859 00:37:21,986 --> 00:37:22,860 A beth yw eich enw? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, rydym yn mynd i gael eich troi chi allan. 862 00:37:25,780 --> 00:37:28,670 Ond mae hynny'n fwy effeithlon, i ychydig gyfnewid dau o bobl, 863 00:37:28,670 --> 00:37:31,850 na chael pobl lluosog mewn gwirionedd yn ochrgamu'r drosodd. 864 00:37:31,850 --> 00:37:32,850 Nawr, gadewch i ni wneud hyn eto. 865 00:37:32,850 --> 00:37:34,980 Rydw i'n mynd i ddewis 4, felly dewch ar allan. 866 00:37:34,980 --> 00:37:36,540 A phwy sy'n mynd i symud? 867 00:37:36,540 --> 00:37:37,750 Rhif 8, wrth gwrs. 868 00:37:37,750 --> 00:37:40,260 Os byddaf yn dod o hyd yn awr rhif 5, dewch allan. 869 00:37:40,260 --> 00:37:42,104 Rhif 8 sy'n mynd i gael eich troi allan eto. 870 00:37:42,104 --> 00:37:43,770 Rwyf nawr yn mynd i ddod o hyd i rif 6 ar waith. 871 00:37:43,770 --> 00:37:44,410 7 yn ei le. 872 00:37:44,410 --> 00:37:45,080 8 yn ei le. 873 00:37:45,080 --> 00:37:48,590 >> Yr hyn yr ydym yn unig oedd yn awr yw rhywbeth o'r enw math dethol, 874 00:37:48,590 --> 00:37:52,560 ac os ydym yn ddychmygu'r hyn, mae'n mynd i deimlo ychydig yn wahanol. 875 00:37:52,560 --> 00:37:56,800 Gadewch i ni fynd yn ei flaen ac o hyn ddewislen yma, visualization-- hwn 876 00:37:56,800 --> 00:38:02,920 gadewch i ni newid hyn canlynol-- dod ar, Firefox. 877 00:38:02,920 --> 00:38:07,610 Gadewch i ni newid hyn i'r fath dethol. 878 00:38:07,610 --> 00:38:11,830 A gadewch i ni gyflymu pethau fel o'r blaen, a dechrau y delweddu nawr. 879 00:38:11,830 --> 00:38:13,990 Ac mae algorithm hwn wedi teimlad gwahanol iddo. 880 00:38:13,990 --> 00:38:16,480 Ar bob iteriad, dweud y gwir, mae hyd yn oed yn symlach. 881 00:38:16,480 --> 00:38:18,385 Im 'jyst yn dewis yr elfen lleiaf. 882 00:38:18,385 --> 00:38:21,510 Yn awr, a dweud y gwir, yr wyf yn got ychydig yn lwcus bod amser, gan ei fod yn datrys hynod o gyflym. 883 00:38:21,510 --> 00:38:22,660 Yr elfennau yn hap. 884 00:38:22,660 --> 00:38:25,520 Dyw hi ddim, gan ein bod yn y pen draw annhymerus gweld, yn y bôn yn gyflymach. 885 00:38:25,520 --> 00:38:29,400 Ond gadewch i ni weld trydydd a therfynol cysylltu yma ynghylch yr hyn sy'n digwydd. 886 00:38:29,400 --> 00:38:36,230 Felly, gadewch i ni fynd yn ei flaen ac yn ailosod chi guys un tro olaf i fod yn y drefn yma. 887 00:38:36,230 --> 00:38:38,450 >> Ac yn awr, yr wyf i'n mynd i fod ychydig yn fwy clyfar, 888 00:38:38,450 --> 00:38:40,220 dim ond i rownd allan ein algorithmau. 889 00:38:40,220 --> 00:38:41,230 Rydw i'n mynd i wneud hyn. 890 00:38:41,230 --> 00:38:43,140 Rydw i'n mynd i beidio â mynd yn ôl ac ymlaen cymaint. 891 00:38:43,140 --> 00:38:44,900 Dweud y gwir, Dw i wedi blino o gyd tramwyo hwn. 892 00:38:44,900 --> 00:38:47,691 Im 'jyst yn mynd i gymryd yr hyn yr wyf i'n a roddwyd ar ddechrau'r rhestr, 893 00:38:47,691 --> 00:38:49,460 ac yr wyf i'n mynd i ddidoli hynny fan a'r lle. 894 00:38:49,460 --> 00:38:50,140 Felly dyma ni. 895 00:38:50,140 --> 00:38:51,030 Rhif 4. 896 00:38:51,030 --> 00:38:53,680 Rydw i'n mynd i fewnosod rif 4 i mewn i restr datrys. 897 00:38:53,680 --> 00:38:54,180 Done. 898 00:38:54,180 --> 00:38:58,300 Allaf hawlio nawr, a dim ond er mwyn gwneud hyn yn fwy glir, y rhan hon o fy rhestr yn cael ei datrys. 899 00:38:58,300 --> 00:39:02,610 Mae'n fath o hawliad dwp, ond yn wir 4 yn cael ei ddidoli mewn rhestr o faint un. 900 00:39:02,610 --> 00:39:04,210 Yn awr, yr wyf i'n mynd i fynd ar rif 2. 901 00:39:04,210 --> 00:39:07,670 Rhif 2 Yn awr rwy'n mynd i mewnosod i mewn i'r lle iawn. 902 00:39:07,670 --> 00:39:08,680 Felly, lle mae 2 yn perthyn? 903 00:39:08,680 --> 00:39:09,824 Yn amlwg, dros yma. 904 00:39:09,824 --> 00:39:11,490 Felly, mynd yn ei flaen ac yn symud yn ôl, os ydych yn gallu. 905 00:39:11,490 --> 00:39:14,406 A pham ydych nad ydych guys yn unig yn cymryd sefyll eich cerddoriaeth gyda chi y tro hwn. 906 00:39:14,406 --> 00:39:17,020 A gadewch i ni rymus mewnosod chi i mewn i ddechrau'r rhestr. 907 00:39:17,020 --> 00:39:17,936 Felly, ychydig mwy o waith. 908 00:39:17,936 --> 00:39:20,890 Roedd rhaid i mi symud o gwmpas Jacob, a beth yw eich enw? 909 00:39:20,890 --> 00:39:21,420 >> Amin: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Malan: Amin. 911 00:39:22,270 --> 00:39:24,350 Ond o leiaf doeddwn i ddim yn mynd yn ôl ac ymlaen. 912 00:39:24,350 --> 00:39:25,739 Im 'jyst yn cymryd pethau fel yr wyf yn mynd. 913 00:39:25,739 --> 00:39:27,530 Im 'jyst yn eu mewnosod yn y lle iawn. 914 00:39:27,530 --> 00:39:29,220 6, mae hyn yn eithaf hawdd mewn gwirionedd. 915 00:39:29,220 --> 00:39:31,510 Gadewch i chi mewnosoder dros yno, os ydych yn dim ond eisiau symud drosodd ychydig. 916 00:39:31,510 --> 00:39:32,870 Rhif 8, hefyd yn eithaf hawdd. 917 00:39:32,870 --> 00:39:33,741 Hawl dros yno. 918 00:39:33,741 --> 00:39:34,240 Damia. 919 00:39:34,240 --> 00:39:37,590 Rhif 1 na allwn yn unig cyfnewid gyda Amin yma, 920 00:39:37,590 --> 00:39:39,340 oherwydd mae hynny'n mynd i llanast i fyny y gorchymyn. 921 00:39:39,340 --> 00:39:40,660 Felly mae'n rhaid i ni fod ychydig yn fwy clyfar. 922 00:39:40,660 --> 00:39:42,770 Felly, Artie, os gallech yn ôl i fyny am funud. 923 00:39:42,770 --> 00:39:46,550 Gadewch i ni fynd yn ei flaen ac yn symud yn awr, yn wahanol ein algorithmau blaenorol, 924 00:39:46,550 --> 00:39:50,910 i wneud lle i Artie i'r dde yma ar y dechrau. 925 00:39:50,910 --> 00:39:54,690 Felly, ar ddiwedd y dydd, rwy'n fath o gwneud yr hyn yr oeddwn am i osgoi blaen. 926 00:39:54,690 --> 00:39:57,770 Ac felly mae fy algorithm yn fath o wrthdroi, yn ddeallusol, 927 00:39:57,770 --> 00:39:59,070 i'r hyn oedd yn wreiddiol. 928 00:39:59,070 --> 00:40:01,240 Im 'jyst yn gwneud y newidiol ar bwynt gwahanol. 929 00:40:01,240 --> 00:40:02,291 Nawr fy mod yn 3. 930 00:40:02,291 --> 00:40:02,790 O, damn. 931 00:40:02,790 --> 00:40:04,039 Mae'n rhaid i ni wneud mwy o waith eto. 932 00:40:04,039 --> 00:40:05,060 Felly gadewch i ni gwthio chi allan. 933 00:40:05,060 --> 00:40:09,360 Gadewch i ni symud 8, 6, 4-- oh oh-- a 3 yn mynd i fynd yn iawn yno. 934 00:40:09,360 --> 00:40:11,490 Felly, ar ychydig arbedion o leiaf y tro hwn. 935 00:40:11,490 --> 00:40:13,100 7, dim gormod o waith i'w wneud. 936 00:40:13,100 --> 00:40:15,370 Felly os ydych am i pop yn ôl, gadewch i chi fewnosod. 937 00:40:15,370 --> 00:40:17,440 Ac yn olaf, 5, os ydych yn awyddus i pop yn ôl, rydym yn 938 00:40:17,440 --> 00:40:22,610 angen i symud i chi, i chi, chi, tan bump yn ei le. 939 00:40:22,610 --> 00:40:25,670 >> Felly nawr i weld hyn ar lefel uchel ar ffurf graff, 940 00:40:25,670 --> 00:40:31,080 gadewch i ni wneud algorithm hwn delweddu un amser ychwanegol. 941 00:40:31,080 --> 00:40:33,580 Felly, byddwn yn galw hyn yn fath gosod. 942 00:40:33,580 --> 00:40:37,700 Byddwn yn rhedeg yn union fel y gyflym, a dechrau yma. 943 00:40:37,700 --> 00:40:39,580 Ac mae'n, hefyd, mae 'na olwg gwahanol. 944 00:40:39,580 --> 00:40:42,180 Mae'n fath o yn gwella ac yn well, ond nid yw byth yn berffaith 945 00:40:42,180 --> 00:40:44,630 nes i mi fynd i mewn ac yn llyfn yn y bylchau hynny. 946 00:40:44,630 --> 00:40:47,860 Oherwydd, unwaith eto, rwy'n dim ond yn cymryd yr hyn Im 'yn cael ei roi o'r chwith i'r dde. 947 00:40:47,860 --> 00:40:50,350 Felly doeddwn i ddim yn mynd mor lwcus bod popeth yn berffaith. 948 00:40:50,350 --> 00:40:54,190 Dyna pam yr oedd gennym y rhain ychydig mispositions ein bod yn sefydlog dros amser. 949 00:40:54,190 --> 00:40:58,890 >> Felly yr holl o'r algorithmau hyn yn ymddangos i rhedeg ar ychydig yn wahanol gyflymdra. 950 00:40:58,890 --> 00:41:02,030 Yn wir, a fyddech chi'n ei ddweud yw y gorau neu'r cyflymaf hyd yn hyn? 951 00:41:02,030 --> 00:41:03,450 Didoli Bubble, y cyntaf? 952 00:41:03,450 --> 00:41:05,000 Didoli Dethol, yr ail? 953 00:41:05,000 --> 00:41:08,450 Didoli Mewnosod, y trydydd? 954 00:41:08,450 --> 00:41:10,710 Yr wyf yn clywed rhai mathau dethol. 955 00:41:10,710 --> 00:41:13,280 Sylwadau eraill? 956 00:41:13,280 --> 00:41:16,880 >> Felly, mae'n ymddangos bod pob un o'r algorithmau hyn 957 00:41:16,880 --> 00:41:22,400 yn eu hanfod yr un mor effeithlon â pob other-- neu, i'r gwrthwyneb, yn union fel 958 00:41:22,400 --> 00:41:25,980 aneffeithlon â'i gilydd, oherwydd y gallwn ei wneud yn sylfaenol 959 00:41:25,980 --> 00:41:28,120 well na bob un o'r tri o algorithmau hyn. 960 00:41:28,120 --> 00:41:29,990 A dyna dipyn o gorwedd gwyn, hefyd. 961 00:41:29,990 --> 00:41:32,580 wrth ddweud mor effeithlon neu fel aneffeithlon, 962 00:41:32,580 --> 00:41:35,040 dyna o leiaf ar gyfer gwerthoedd super-mawr o n. 963 00:41:35,040 --> 00:41:38,450 Pan fyddwn wedi dim ond wyth o bobl yma, neu efallai 50 neu lai bariau ar y sgrin, 964 00:41:38,450 --> 00:41:41,645 byddwch chi'n hollol sylwi gwahaniaethau ymhlith y rhain tri algorithmau. 965 00:41:41,645 --> 00:41:44,020 Ond fel n, mae nifer y bobl, neu nifer o rifau, 966 00:41:44,020 --> 00:41:46,350 neu nifer y bobl yn y ffôn llyfr, neu nifer o dudalennau gwe 967 00:41:46,350 --> 00:41:48,230 yn y gronfa ddata Google mynd yn fwy ac yn fwy, 968 00:41:48,230 --> 00:41:51,650 byddwn yn gweld bod pob un o'r tri o'r rhain algorithmau yn eithaf gwael mewn gwirionedd. 969 00:41:51,650 --> 00:41:54,060 A gallwn wneud yn sylfaenol yn well na hynny. 970 00:41:54,060 --> 00:41:56,830 >> Gadewch i gymryd golwg, yn olaf, ar yr hyn y gallai'r algorithmau hyn 971 00:41:56,830 --> 00:41:59,520 swnio fel yn y cyd-destun ychydig o rai eraill 972 00:41:59,520 --> 00:42:03,550 yn ogystal drwy hyn delweddu yma 973 00:42:03,550 --> 00:42:06,860 fydd yn ein cyflwyno i nifer o algorithmau. 974 00:42:06,860 --> 00:42:10,330 Gadewch i ni fynd yn ei flaen ac yn llongyfarch ein cyfranogwyr yma, pob un ohonynt 975 00:42:10,330 --> 00:42:11,690 didoli eu hunain yn dda iawn. 976 00:42:11,690 --> 00:42:15,124 Os hoffech gymryd anrheg Parting. 977 00:42:15,124 --> 00:42:16,540 Gallwch chi gadw eich rhifau hefyd. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 A beth byddwch yn gweld, neu yn hytrach yn clywed, yn awr, 980 00:42:22,520 --> 00:42:25,710 yw bod wrth i ni roi synau i bob un o'r bariau hyn 981 00:42:25,710 --> 00:42:28,660 ac yn ei gysylltu â'r meddalwedd, wahanol amledd y sain, 982 00:42:28,660 --> 00:42:33,970 gallwch lapio eich meddwl mwy audioly gwmpas hyn y mae pob un o'r pethau hyn 983 00:42:33,970 --> 00:42:34,470 edrych fel. 984 00:42:34,470 --> 00:42:39,325 Y cyntaf o'r rhain yw gosod fath 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 >> Mae hyn yn fath swigen. 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 >> Didoli dethol. 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 >> Rywbeth o'r enw math uno. 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 >> Didoli 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 >> Dyna ni am CS50. 1000 00:44:09,430 --> 00:44:13,360 Byddwn yn eich gweld ar ddydd Mercher. 1001 00:44:13,360 --> 00:44:16,671 >> Adroddwr: Ac yn awr, "Deep Meddyliau, "gan Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Pam ei fod yn i dolen? 1004 00:44:21,590 --> 00:44:23,200 Beth am wneud yn well? 1005 00:44:23,200 --> 00:44:25,970 Byddwn yn gwneud pum dolen. 1006 00:44:25,970 --> 00:44:28,720 >> [Chwerthin]