1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Bone. 3 00:00:11,940 --> 00:00:16,470 Do ĉi tiu estas CS50, kaj ĉi tiu estas Nun la komenco de la semajno tri. 4 00:00:16,470 --> 00:00:19,960 >> Do ĝis nun, ni verkis programojn en C 5 00:00:19,960 --> 00:00:23,210 aspektas iom iu kiel ĉi tie. 6 00:00:23,210 --> 00:00:25,470 Do ni hvas kelkaj akra inkluzivas je la supro. 7 00:00:25,470 --> 00:00:28,490 Ni havas int, ĉefa, dezerta, kaj tiam ion fari en la mezo, 8 00:00:28,490 --> 00:00:30,590 kelkaj iom da kodo interne de tiu funkcio. 9 00:00:30,590 --> 00:00:34,170 Sed ŝlosilo estis la fakto, ke ni estis dirante malplenon tie. 10 00:00:34,170 --> 00:00:39,320 Do malplenon, ĉiuj ĉi tempo, specifas ke tiu programo, kiam kuri, 11 00:00:39,320 --> 00:00:41,300 nur povas kuri tra lia nomo. 12 00:00:41,300 --> 00:00:46,330 Vi ne povas tajpi neniun Alivorte aŭ numeroj post la programo nomo kiam 13 00:00:46,330 --> 00:00:46,830 kurante ĝin. 14 00:00:46,830 --> 00:00:51,200 Do, ekzemple, se la programo estis kompilita en dosiero nomita saluton, 15 00:00:51,200 --> 00:00:53,480 Vi povus fari ./hello, sed tio estas. 16 00:00:53,480 --> 00:00:56,750 >> La sola maniero kiun vi povis havigi enigo al tiu programo 17 00:00:56,750 --> 00:00:57,960 Estas nomante funkcio. 18 00:00:57,960 --> 00:00:59,790 Ekzemple, kio funkcio ni estis uzante ĝis nun 19 00:00:59,790 --> 00:01:00,950 akiri eniron de la uzanto? 20 00:01:00,950 --> 00:01:02,117 >> Publiko: Get kordo. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Por akiri ŝnuro, aŭ akiri int, aŭ vi vidis aliajn, 22 00:01:04,700 --> 00:01:07,630 eĉ se vi ne uzas ilin ankoraŭ, kiel akiri longan, longan kaj similaj. 23 00:01:07,630 --> 00:01:09,380 Sed supozu, ke ni fakte volas komenci 24 00:01:09,380 --> 00:01:12,760 skribo programoj kiuj estas iom pli versátil, kaj, sincere, iom pli 25 00:01:12,760 --> 00:01:15,090 kiel la komandojn kiujn vi havas estis atingi, espereble, 26 00:01:15,090 --> 00:01:16,550 iom Kutimi. 27 00:01:16,550 --> 00:01:18,560 Kiel cd spaco Dropbox. 28 00:01:18,560 --> 00:01:20,800 Tiu, kompreneble, ŝanĝoj via dosierujo, supozante 29 00:01:20,800 --> 00:01:23,590 vi estas en John Harvard hejmo dosierujo, al via Dropbox dosierujo. 30 00:01:23,590 --> 00:01:27,380 Dume, jenan ordonon kreas novan dosierujon nomita pset2, 31 00:01:27,380 --> 00:01:30,290 kiel vi eble jam aŭ baldaŭ por problemo starigis du. 32 00:01:30,290 --> 00:01:33,970 Faru Saluton, kompreneble, estas komando kiuj konstruas programo nomata saluton 33 00:01:33,970 --> 00:01:35,770 el dosiero nomata saluton dot c. 34 00:01:35,770 --> 00:01:39,140 Kaj en ĉiu el tiuj kazoj, nun, ni devis 35 00:01:39,140 --> 00:01:43,620 provizi argumenton sur la tn komandlinio, la palpebrumantaj prompto, 36 00:01:43,620 --> 00:01:48,540 tiel ke make scias kion konstrui, ktp ke mkdir scias kion dosierujo krei, 37 00:01:48,540 --> 00:01:51,110 kaj tial cd scias kie vi deziras iri. 38 00:01:51,110 --> 00:01:54,720 Sed ĝis nun, ni observu dirante ke ĉefa, vian defaŭltan funkcio, 39 00:01:54,720 --> 00:01:58,500 havas malplenon esprimo ene de tiuj krampoj, 40 00:01:58,500 --> 00:02:01,250 kio signifas ke ne povas preni ajnan argumentoj. 41 00:02:01,250 --> 00:02:03,240 >> Do ekde hodiaŭ, kion ni faros 42 00:02:03,240 --> 00:02:06,270 estas, ni tuj komencos subteni aĵojn kiel ĉi vespero. 43 00:02:06,270 --> 00:02:08,990 Fakte, en tiu kazo, kion vi ne tipe permane tajpi, 44 00:02:08,990 --> 00:02:11,130 Faru estis farante ĉi por ni, estas ne 45 00:02:11,130 --> 00:02:15,840 krom unu, du, tri pliaj kordoj post la programo nomata 46 00:02:15,840 --> 00:02:16,850 tin. 47 00:02:16,850 --> 00:02:18,240 Do kiel ni sukcesos tion? 48 00:02:18,240 --> 00:02:20,260 >> Nu, ekde hodiaŭ, en kazoj kie ni volas 49 00:02:20,260 --> 00:02:22,855 havigi enigo per la tn komandlinio, 50 00:02:22,855 --> 00:02:24,980 Ni tuj komenci aldonante jen kio estas en yellow-- 51 00:02:24,980 --> 00:02:30,520 anstataŭante malplenon kun int argc komo kordo argv malferma krampo proksime krampo. 52 00:02:30,520 --> 00:02:32,520 Nun tiu estas interesa por kelkaj kialoj. 53 00:02:32,520 --> 00:02:35,690 Unu, ĝi tuj ni skribi programoj kiuj estas iom pli dinamika. 54 00:02:35,690 --> 00:02:37,570 Sed, pli compellingly, ĝi tuj malfermi 55 00:02:37,570 --> 00:02:40,340 nun konversacion pri kio arrays povas vere 56 00:02:40,340 --> 00:02:43,300 esti uzita, kia kordo vere estas sub la kapuĉo, 57 00:02:43,300 --> 00:02:47,320 ĝis la proksima semajno, kiam ni komencos subnaĝado en eĉ pli profunde, kiamaniere la maŝino estas 58 00:02:47,320 --> 00:02:48,590 fari ĉion ĉi laboro. 59 00:02:48,590 --> 00:02:51,920 Sed nuntempe, ni desegni, eble, foton. 60 00:02:51,920 --> 00:02:54,950 >> Kiam vi skribas programon kun ĉefaj deklaris 61 00:02:54,950 --> 00:02:58,810 tiamaniere, tiel ke ĉefa prenas du argumentojn, la int 62 00:02:58,810 --> 00:03:03,233 kaj- kio datumtipo Estas la dua argumento? 63 00:03:03,233 --> 00:03:04,529 >> Publiko: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Tiel ĝi aspektas unuavide kiel ĝi estas kordo, sed rimarki la kvadrataj krampoj. 66 00:03:09,170 --> 00:03:12,760 Memori lastan tempon ni enkondukis la nocio de tabelo. 67 00:03:12,760 --> 00:03:16,210 Kaj arrays uzi kvadrataj krampoj en kelkaj kuntekstoj. 68 00:03:16,210 --> 00:03:19,160 Vi povus uzi la kvadrato krampoj iri en tabelo 69 00:03:19,160 --> 00:03:22,710 kaj akiri apartan elementon, kiel krampo 0 aŭ krampo 1 aŭ krampo 2. 70 00:03:22,710 --> 00:03:25,500 Sed ni vidis, se mallonge, pasintsemajne ke vi ankaŭ 71 00:03:25,500 --> 00:03:28,790 uzi tiujn kvadrataj krampoj por deklari la grandecon de tabelo, 72 00:03:28,790 --> 00:03:31,790 se vi scias anticipe kiom ints aŭ kiom da ŝnuroj aŭ kion ajn vi 73 00:03:31,790 --> 00:03:32,630 fakte volas. 74 00:03:32,630 --> 00:03:34,790 Do rezultas tie estas tria kuntekston tie 75 00:03:34,790 --> 00:03:37,890 kiu ne havas numeron interne el la kvadrataj krampoj. 76 00:03:37,890 --> 00:03:41,920 Kiam vi specifas, kiel mi havas ĉi tie, la nomo de iu kiel argv, 77 00:03:41,920 --> 00:03:44,550 kio estas nur ornama metodo dirante argumento vektoro, kiu 78 00:03:44,550 --> 00:03:47,750 Estas alia ornama metodo dirante tabelo de argumentoj, 79 00:03:47,750 --> 00:03:50,870 malferma krampo proksime krampo simple signifas ke vi ne bezone 80 00:03:50,870 --> 00:03:52,960 scii anticipe kiom granda la tabelo tuj estos, 81 00:03:52,960 --> 00:03:55,070 sed vi scias ĝi tuj estos tabelo. 82 00:03:55,070 --> 00:03:57,320 Do se vi ne konas la nombro ne metis ĝin tien, 83 00:03:57,320 --> 00:04:01,160 por malferma krampo proksime krampo signifas ke argv estas cxeno, 84 00:04:01,160 --> 00:04:03,124 sed tabelo de kordoj. 85 00:04:03,124 --> 00:04:05,040 Do sintakse, se vi pensas reen pasintsemajne, 86 00:04:05,040 --> 00:04:09,460 ĝi estas tre simila al diri ion kiel int aĝoj malferma krampo, 87 00:04:09,460 --> 00:04:10,984 kaj tiam ion poste. 88 00:04:10,984 --> 00:04:12,150 Do kion signifas tio aspektas kiel? 89 00:04:12,150 --> 00:04:13,399 Ni fakte desegni bildon. 90 00:04:13,399 --> 00:04:18,756 Do kiam vi kuros ĉi programo kun Main esti du argumentoj difinitaj interne 91 00:04:18,756 --> 00:04:21,339 de tiuj krampoj, vi esence havi almenaŭ du pecoj 92 00:04:21,339 --> 00:04:23,560 de memoro enmanigis al vi sub la kapuĉo. 93 00:04:23,560 --> 00:04:26,550 Unu, kiel mi nomas kiel tiu rektangulo, tuj nomos argc. 94 00:04:26,550 --> 00:04:30,645 Kaj ĝuste kiel rapida recap, kio estas la datumtipo de argc? 95 00:04:30,645 --> 00:04:31,270 Do ĝi estas int. 96 00:04:31,270 --> 00:04:33,480 Do nombro tuj iri argc-- turnoj 97 00:04:33,480 --> 00:04:35,660 el kiu elstaras por argumento grafo. 98 00:04:35,660 --> 00:04:38,887 Dume, mi desegnis argv kiel tabelo. 99 00:04:38,887 --> 00:04:40,970 Kaj mi ne vere scias kiom longe tuj estos, 100 00:04:40,970 --> 00:04:42,470 tiel por la hodiaŭa celoj dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Ĝi povus ricevi de iu longo. 102 00:04:43,636 --> 00:04:45,640 Sed mi bildigis ĉi tie almenaŭ kvar rektangulojn. 103 00:04:45,640 --> 00:04:50,970 Do argv eron de memoro kiu stokas kordo kordo kordo dot dot dot, 104 00:04:50,970 --> 00:04:53,950 kaj argc estas nur unu eron de memoro por entjero. 105 00:04:53,950 --> 00:04:55,710 >> Do nun, ni estu iom pli preciza. 106 00:04:55,710 --> 00:04:59,200 Se, kiam mi havas kordoj en tiu tabelo, nomita 107 00:04:59,200 --> 00:05:03,290 argv, mi volas ricevi ilin individue, kiel pasintsemajne, 108 00:05:03,290 --> 00:05:05,670 Ni tuj uzos skribmaniero kiel argv krampo 0 109 00:05:05,670 --> 00:05:07,650 akiri la unuan aferon tabelo. 110 00:05:07,650 --> 00:05:10,440 Argv krampo 1 akiri la duan aferon, kaj tiel plu. 111 00:05:10,440 --> 00:05:14,597 La ŝlosilo tie estas ni ankoraŭ 0 indexed-- ni ankoraŭ rakonti de 0. 112 00:05:14,597 --> 00:05:16,430 Do nun ni reale meti ion en ĉi tio. 113 00:05:16,430 --> 00:05:21,670 Se mi estus kompili programon nomata saluton el dosiero nomata saluton dot c, 114 00:05:21,670 --> 00:05:24,340 kaj tiam mi kuris ke programo kun skalara slash saluton, 115 00:05:24,340 --> 00:05:28,380 kion faras mia komputilo, miaj portebla, aspektas kiel sub la kapuĉo 116 00:05:28,380 --> 00:05:31,300 Dume mi kuros dot slash saluton kaj batis Entajpu? 117 00:05:31,300 --> 00:05:33,500 Nu, tio eble estas kion ni povus priskribi 118 00:05:33,500 --> 00:05:37,010 kiel la enhavo de via komputilo memoron, aŭ RAM-- Hazarda Access Memory. 119 00:05:37,010 --> 00:05:40,330 En aliaj vortoj, la komputilon, iel vi magie, 120 00:05:40,330 --> 00:05:45,360 metas la numeron 1 en argc, AKA argcount, kaj ĝi metas laŭvorte la kordo 121 00:05:45,360 --> 00:05:48,200 ./hello en argv krampo 0. 122 00:05:48,200 --> 00:05:51,750 Mi havas neniun ideon, sincere, kio estas en argv krampo 1 aŭ 2 aŭ 3, 123 00:05:51,750 --> 00:05:55,550 ĉar se la uzanto ne havas tajpis ion krom ./hello, 124 00:05:55,550 --> 00:05:58,550 Ni tuj supozas, ke tiuj Estas plej verŝajne rubo valoroj 125 00:05:58,550 --> 00:05:59,700 por tiel diri. 126 00:05:59,700 --> 00:06:02,650 Tiuj blokoj de memoro ekzistas, sed ne estas al ni 127 00:06:02,650 --> 00:06:05,710 rigardi ilin, ĉar la argcount estas nur unu. 128 00:06:05,710 --> 00:06:07,870 >> Nun, dume, se mi skribi kuri alia programo, 129 00:06:07,870 --> 00:06:12,250 cd, kiu estas pli propre komando, en via palpebrumante prompt-- cd spaco 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kiam mi kuris ke, efektive, kiam la cd programo kuras, argc, 131 00:06:17,200 --> 00:06:22,270 interne de mia komputilo memoro, estas por la plej briefest dua la nombro 2. 132 00:06:22,270 --> 00:06:25,936 Kaj tiam argv krampo o havas cd, argv krampo 1 havas Dropbox, 133 00:06:25,936 --> 00:06:28,560 kaj tiam kompreneble la komando kompleta, tial ĉiuj ĉi memoro 134 00:06:28,560 --> 00:06:30,420 esence iras kaj estas uzata por io alia. 135 00:06:30,420 --> 00:06:32,270 Kaj tio estas kial mi diras nur split dua. 136 00:06:32,270 --> 00:06:35,720 >> Dume, se ni faras mkdir pset2, la bildo aspektas preskaŭ la sama, 137 00:06:35,720 --> 00:06:37,900 sed kun malsamaj ĉenoj ene argv. 138 00:06:37,900 --> 00:06:42,570 Se mi faras tin haltostreko saluton saluton dot c, sama ideo. 139 00:06:42,570 --> 00:06:47,060 Pli ŝtofo estas plenigitaj por argv kaj argc, kompreneble, estas 4. 140 00:06:47,060 --> 00:06:49,150 Do alivorte, kvankam tiu tabelo 141 00:06:49,150 --> 00:06:52,950 eble dot dot dot, de iu ŝanĝiĝema longitudo, por tiel diri, 142 00:06:52,950 --> 00:06:56,720 vi ĉiam scias kie la fino de ĝi Estas, ĉar argc tuj rakontos vin 143 00:06:56,720 --> 00:07:00,120 en kio punkto vi devas halti rigardas elementoj en argv. 144 00:07:00,120 --> 00:07:03,660 Vi povas nur rigardi kvar entute en tiu kazo. 145 00:07:03,660 --> 00:07:06,600 >> Do ni nun rigardu, eble, simpla programo. 146 00:07:06,600 --> 00:07:09,070 Oni kiu ĵus diras saluton al iu kiel Zamyla. 147 00:07:09,070 --> 00:07:12,620 Do mi asertas mi verkos programon en nur momento tra kiu mi povus fari 148 00:07:12,620 --> 00:07:16,670 ./hello spaco Zamyla, kaj tiam mi volas mia programo por printi ion 149 00:07:16,670 --> 00:07:18,520 súper simpla kiel "saluton, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Nun en la pasinteco ni uzis getstring. 151 00:07:20,100 --> 00:07:22,850 Do, en la pasinteco, eĉ se vi estas nova al programado, 152 00:07:22,850 --> 00:07:27,180 _odds_ estas vi povis vipi supre Programo kiu uzas getstring 153 00:07:27,180 --> 00:07:29,390 kaj tiam uzas printf por saluti al Zamyla. 154 00:07:29,390 --> 00:07:31,290 Sed ni ne uzas getstring tiu tempo. 155 00:07:31,290 --> 00:07:37,510 Lasu min anstataŭ iri en la Appliant kaj ili inkludas normon mi ho dot h. 156 00:07:37,510 --> 00:07:41,160 Permesu al mi ankaŭ inkludas CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Nun int ĉefa, kaj nun mi estas Ne tuj faros malplenon hodiaŭ. 158 00:07:44,730 --> 00:07:51,200 Anstataŭe, mi faros int argc kordo argv malferma krampo proksime krampo, 159 00:07:51,200 --> 00:07:52,640 ne specifante numero. 160 00:07:52,640 --> 00:07:54,644 Kaj nun jen estas mia tn fari. 161 00:07:54,644 --> 00:07:57,560 Kion mi faros nun estas, mi estas faros iom de salto de fido 162 00:07:57,560 --> 00:08:00,560 Mi tuj supozus ke la uzanto tuj uzos tiun programon korekte, 163 00:08:00,560 --> 00:08:04,980 kaj mi simple tuj fari printf saluton,% sn. 164 00:08:04,980 --> 00:08:06,630 Do nenio nova tie. 165 00:08:06,630 --> 00:08:11,470 Sed mi volas nun meti ajn vorto la uzanto tipoj post la programo nomo. 166 00:08:11,470 --> 00:08:16,970 Do se mi faras ./hello spaco Zamyla mi volas iel programmatically aliro 167 00:08:16,970 --> 00:08:20,870 citi unquote "Zamyla." tial mi povas eniri en mian argumenton vektoro, 168 00:08:20,870 --> 00:08:25,980 mia tabelo de kordoj, kaj se la komando, denove estis ./hello spaco Zamyla, 169 00:08:25,980 --> 00:08:29,340 kio numero mi volas meti en argv tie? 170 00:08:29,340 --> 00:08:29,840 Publiko: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, ĉar krampo 0 Rezultas 172 00:08:32,355 --> 00:08:34,230 tuj estos la programo nomo, kiel ni vidis. 173 00:08:34,230 --> 00:08:37,789 Do krampo 1 estas la unua vorto ke mi, la uzanto, enigis. 174 00:08:37,789 --> 00:08:39,559 Mi tuj iros antaŭen kaj savi ĉi. 175 00:08:39,559 --> 00:08:42,830 Mi tuj iros en mia dosierujo kie mi metis tiun dosieron. 176 00:08:42,830 --> 00:08:44,920 Mi tuj faros fari saluton 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO estas okej. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Entajpu. 179 00:08:51,380 --> 00:08:54,480 Kion mi faru al vi? 180 00:08:54,480 --> 00:08:57,270 Mi estis kaptita de surprizo min por momento tie. 181 00:08:57,270 --> 00:08:58,230 Kion mi faru al vi? 182 00:08:58,230 --> 00:08:59,220 >> Publiko: Nomo. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: La dosiero fakte nomita hello3.c. 184 00:09:01,767 --> 00:09:03,850 Kaj mi faris tion nur por consistencia, ĉar ni 185 00:09:03,850 --> 00:09:06,550 havis hello.c de la pasinteco en la linio de kodo. 186 00:09:06,550 --> 00:09:11,550 Do ni ripari ĉi ./hello krampo haltostreko 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Eniri. 188 00:09:12,370 --> 00:09:14,030 Kaj nun ni havas saluton, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Dume, mi povas ŝanĝi ĉi tion al esti Rob, aŭ vere neniu alia vorto. 190 00:09:17,650 --> 00:09:19,230 >> Sed ni konsideru angulo kazo. 191 00:09:19,230 --> 00:09:24,360 Kio povus atendi okazos se Mi ne tajpas ies nomon en cxiuj? 192 00:09:24,360 --> 00:09:25,270 >> Publiko: Eraro. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: Eraro de iu speco, eble. 194 00:09:27,300 --> 00:09:28,200 Ni vidu. 195 00:09:28,200 --> 00:09:29,440 Eniri. 196 00:09:29,440 --> 00:09:30,210 Nula. 197 00:09:30,210 --> 00:09:33,870 Do printf estas reale esti iom protekta nin 198 00:09:33,870 --> 00:09:38,131 tie kaj laŭvorte presado malfermita paren nula, sed eĉ pli malbona aĵoj povas okazi. 199 00:09:38,131 --> 00:09:40,130 Kaj ĝuste por pruvi io vi absolute 200 00:09:40,130 --> 00:09:42,800 ne devus fari, ni iru en tie kaj komenci ŝovas ĉirkaŭ. 201 00:09:42,800 --> 00:09:43,300 Ĝuste? 202 00:09:43,300 --> 00:09:46,410 Se mi scias, ke la foton en memoro estas esence ĉi: 203 00:09:46,410 --> 00:09:52,660 argv krampo 1 havas Zamyla, argv krampo 0 havas ./hello aux ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Kio estas en krampo 2? 205 00:09:55,400 --> 00:09:58,210 Do mi povas respondi ke pridemandi min, ĉu ne? 206 00:09:58,210 --> 00:10:00,460 Mi povas nur ŝanĝi la 1 al 2. 207 00:10:00,460 --> 00:10:07,270 Mi povas nun recompilar saluton 3 ./hello3 Ni zomi kaj batis Enter. 208 00:10:07,270 --> 00:10:08,270 Whoops. 209 00:10:08,270 --> 00:10:10,660 Neniu citilo. 210 00:10:10,660 --> 00:10:12,540 Interesa. 211 00:10:12,540 --> 00:10:15,530 Do tio estas speco de malvarmeta al vidu kio alia estas tie. 212 00:10:15,530 --> 00:10:17,130 >> Do kio alia estas ene de mia portebla komputilo? 213 00:10:17,130 --> 00:10:20,390 Ni savu ĝin per krampo 3. 214 00:10:20,390 --> 00:10:25,190 Faru hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Scivola. 216 00:10:26,500 --> 00:10:30,560 Kaj nun ni iru vere bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Do tio estas vere subnaĝado profundo en mia komputilo la memoro. 218 00:10:34,340 --> 00:10:35,930 50 indeksoj en. 219 00:10:35,930 --> 00:10:41,950 Do fari saluton 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Scivola. 221 00:10:42,680 --> 00:10:44,660 Bone, nun mi estas nur tuj senzorge. 222 00:10:44,660 --> 00:10:47,331 Ni iru al 5.000. 223 00:10:47,331 --> 00:10:47,830 Bone. 224 00:10:47,830 --> 00:10:49,520 Do lasu min recompilar. 225 00:10:49,520 --> 00:10:51,460 Faru 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 Nun kelkaj el vi, eble esti ampolo pafante. 229 00:10:59,250 --> 00:11:01,900 Kiel multaj el vi havas vidis tiun mesaĝon antaŭe? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Do, kial? 232 00:11:04,420 --> 00:11:07,250 >> Odds are-- kaj ekzistas malsamaj aĵoj kiuj povas kaŭzi ĉi, 233 00:11:07,250 --> 00:11:09,730 kaj klare vi estas en bona company-- ni devas klare 234 00:11:09,730 --> 00:11:11,900 kaŭzis kio nomiĝas oni segmentación kulpo. 235 00:11:11,900 --> 00:11:15,890 Kaj longan rakonton mallonga por hodiaŭ, mi tuŝis segmento de memoro 236 00:11:15,890 --> 00:11:17,060 ke mi ne havas. 237 00:11:17,060 --> 00:11:19,970 Kie segmento simple signifas eron de memoro, ke mi ne havas. 238 00:11:19,970 --> 00:11:25,530 Nun la komputilo garantias ke se mi kuri ./helloZamyla ke mi povas tuŝi argv 239 00:11:25,530 --> 00:11:27,760 esti krampo 0 kaj argv krampo 1. 240 00:11:27,760 --> 00:11:32,730 Sed argc estas valoro 2, kiu signifas mi estas nur allowed-- estas varo de la honoro 241 00:11:32,730 --> 00:11:35,180 system-- tuŝi krampo 0 kaj krampo 1. 242 00:11:35,180 --> 00:11:37,990 Se mi iras plu, ekzistas absolute tuj estos memoro tie. 243 00:11:37,990 --> 00:11:40,660 Mia RAM ekzistas fizike en la komputilo. 244 00:11:40,660 --> 00:11:42,080 Sed kiu scias, kio estas tie? 245 00:11:42,080 --> 00:11:44,450 Ja, mi kuras multnombraj programojn unu fojo. 246 00:11:44,450 --> 00:11:46,910 Mi havu seen-- se mi ne faras tion en la Appliant 247 00:11:46,910 --> 00:11:49,937 sed sur mia Mac aŭ PC-- mi havu vidis la enhavon de email. 248 00:11:49,937 --> 00:11:52,270 Mi povus esti vidita momenteto mesaĝo mi ĵus sendis. 249 00:11:52,270 --> 00:11:55,390 Anything ke eblus konstanta ĉirkaŭ en memoro 250 00:11:55,390 --> 00:11:59,180 povus esti alirita per vojo de tiu arbitra kvadrata krampo skribmaniero. 251 00:11:59,180 --> 00:12:02,850 Aŭ, plej malbona ankoraŭ, Vi povus havi trovi unu el miaj pasvortoj 252 00:12:02,850 --> 00:12:05,859 ke mi ĵus tajpis, en kiu oni programo estis stokitaj en memoro tiel kiel 253 00:12:05,859 --> 00:12:07,900 aŭtentigi min kaj tiam nur ia lasis ĝin 254 00:12:07,900 --> 00:12:09,910 en RAM ĝis mi forlasis tiun programon. 255 00:12:09,910 --> 00:12:12,860 >> Kaj efektive, tiu estas unu el la danĝero kaj la potencoj 256 00:12:12,860 --> 00:12:15,980 uzi lingvon kiel C. Vi havas senbrida aliro 257 00:12:15,980 --> 00:12:18,860 al la tuta enhavo de programo memoro, 258 00:12:18,860 --> 00:12:21,340 kaj kio malbona infanoj povas eĉ fari en tiuj cases-- 259 00:12:21,340 --> 00:12:23,807 speciale kiam ni atingi ttt programado 260 00:12:23,807 --> 00:12:26,890 al la fino de la semestro, ni reviziti ĉi topic-- estas poke ĉirkaŭe, 261 00:12:26,890 --> 00:12:31,660 potenciale, ies komputilo memoro kaj trovi tiajn kuriozaĵojn 262 00:12:31,660 --> 00:12:32,570 kiel ni vidis tie. 263 00:12:32,570 --> 00:12:36,900 Aŭ eĉ pli malbone ankoraŭ, pasvortoj kiujn li aŭ ŝi povas tiam uzi fari malbonajn agojn. 264 00:12:36,900 --> 00:12:40,240 >> Do klare mi ne faris tion, ĉar bizara aĵoj komencas okazi. 265 00:12:40,240 --> 00:12:42,310 Ja, tiu estas programo plorkriado. 266 00:12:42,310 --> 00:12:44,580 Ĉi tiu estus la ekvivalento de Mac OS aŭ Vindozo 267 00:12:44,580 --> 00:12:46,770 programo fenestro simple malaperi. 268 00:12:46,770 --> 00:12:48,300 Neatendita eraro okazis. 269 00:12:48,300 --> 00:12:50,840 En la komandlinion medio ni vidas ion kiel tiu. 270 00:12:50,840 --> 00:12:54,480 Sed tio kial, estas mi simple tuŝi memoro kiu ne apartenas al mi. 271 00:12:54,480 --> 00:12:57,090 >> Do ni defendas kontraŭ tio oni iom alimaniere 272 00:12:57,090 --> 00:12:59,010 rigardante tiun programon tie. 273 00:12:59,010 --> 00:13:01,000 Do, denove, la skeleto ke ni vidis earlier-- 274 00:13:01,000 --> 00:13:02,480 kaj mi reliefigis tiu tempo int. 275 00:13:02,480 --> 00:13:05,900 Kaj ĉiu tiu tempo ĉefa havas ja revenis valoro. 276 00:13:05,900 --> 00:13:09,120 Kvankam en la plejmulto de nia prelego ekzemploj ni neniam iam uzita 277 00:13:09,120 --> 00:13:10,990 reveni ion ĉefa. 278 00:13:10,990 --> 00:13:13,710 Ni nur skribi printf proksime frizita streĉa kaj tio estas ĝi. 279 00:13:13,710 --> 00:13:16,500 Sed por libera, kion la tradukilo estis faranta vin, 280 00:13:16,500 --> 00:13:19,510 efektive, estas reveni 0 por vi. 281 00:13:19,510 --> 00:13:22,950 Turns out-- kaj estas iom counterintuitive-- ke 0 estas bona. 282 00:13:22,950 --> 00:13:24,690 Ĝi ne signifas falsan mem. 283 00:13:24,690 --> 00:13:29,080 0 estas bona, kaj ĉiu ne-0 valoro, la mondo decidis, 284 00:13:29,080 --> 00:13:30,619 povas signifi eraro. 285 00:13:30,619 --> 00:13:32,910 Do se vi iam paneas ion sur vian komputilon, 286 00:13:32,910 --> 00:13:36,600 aŭ programo ĵus mortis sur vin kaj vi alveninta kelkaj eraraj fenestro 287 00:13:36,600 --> 00:13:40,360 sur via ekrano, dirante eraro negativa 49 aŭ eraro 23-- 288 00:13:40,360 --> 00:13:44,170 iuj ŝajne arbitra value-- tio ĉar programisto estas malfacile-kodita 289 00:13:44,170 --> 00:13:49,370 valoron kiel negativa 49 aŭ pozitiva 23 reprezenti ajnan numeron, kuraĝas diri, 290 00:13:49,370 --> 00:13:53,340 de 4 miliardoj eblaj aĵoj kiuj povus iri malbone en programo. 291 00:13:53,340 --> 00:13:55,700 >> Do kiel eble mi prenu avantaĝo de ĉi mi? 292 00:13:55,700 --> 00:13:58,970 Nu, lasu min malfermi programon ke mi skribis anticipe, 293 00:13:58,970 --> 00:14:01,450 kaj poke ĉirkaŭ linio nomita hello 4. 294 00:14:01,450 --> 00:14:05,650 Kaj estas preskaŭ identaj, krom ke lia akiris iom de eraro-kontrolado. 295 00:14:05,650 --> 00:14:09,660 En tiu kazo, mi denove deklaris ĉefa prenado du argumentoj, 296 00:14:09,660 --> 00:14:13,180 sed tiu tempo, sur linio 17, avizo Mi faras iom de prudento ĉeko. 297 00:14:13,180 --> 00:14:17,100 Mi certigante ke argc egalas egalas 2. 298 00:14:17,100 --> 00:14:18,960 Ĉar se ĝi estas, ke signifas mi povas sekure 299 00:14:18,960 --> 00:14:21,420 tuŝi ne nur krampo 0, sed krampo 1. 300 00:14:21,420 --> 00:14:24,330 Kaj Mi iros antaŭen kaj presi, en tiu kazo, Zamyla aŭ Rob 301 00:14:24,330 --> 00:14:26,020 aŭ kion ajn vorton mi tajpis ekstere. 302 00:14:26,020 --> 00:14:28,020 Kaj nun simple por akiri iom pli taŭga, 303 00:14:28,020 --> 00:14:31,910 Mi iras al eksplicite reveni 0 por signifi ĉio bonas. 304 00:14:31,910 --> 00:14:33,300 Nenio malbona okazis. 305 00:14:33,300 --> 00:14:38,590 >> Sed per konvencio, mi tuj reveni 1 aux sincere ĉiu ne-0 valoro, 306 00:14:38,590 --> 00:14:40,160 se iu iris malbone. 307 00:14:40,160 --> 00:14:43,270 Nun la uzanto ne tuj vere rimarkas kio okazas. 308 00:14:43,270 --> 00:14:50,410 Ja se mi iros en tiun dosierujon, ni zomi kaj kreos hello 4 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla kondutas kiel mi atendis. 310 00:14:54,210 --> 00:14:58,570 Sed se mi anstataŭe ne tajpas io, nenio ŝajnas okazi, 311 00:14:58,570 --> 00:14:59,680 sed ne frakasi. 312 00:14:59,680 --> 00:15:04,660 Kaj se mi anstataŭ fari ion kiel Rob estas Proctor 313 00:15:04,660 --> 00:15:07,550 en Thayer-- interŝanĝo arbitrajn informojn. 314 00:15:07,550 --> 00:15:13,680 Sed rimarki, argv 1, 2, 3, 4, kaj 5 devus nun ekzistas en la memoro. 315 00:15:13,680 --> 00:15:16,540 Tio ankaŭ ne estas kion mia programo atendas, 316 00:15:16,540 --> 00:15:20,300 ĉar mi kontrolis ĉu argc egalas egaluloj 2 aŭ ne. 317 00:15:20,300 --> 00:15:22,140 Do mi nun defendas kontraŭ tio. 318 00:15:22,140 --> 00:15:25,290 >> Nun, kiel flanken, ni la programmer-- aŭ prefere ni la users-- 319 00:15:25,290 --> 00:15:29,670 neniam vidos ke 0 aŭ 1 sed uzanta ilo nomita sencimigilo aŭ aliaj iloj, 320 00:15:29,670 --> 00:15:32,250 kiel ni vidos antaŭe longe vi la programisto 321 00:15:32,250 --> 00:15:36,590 povas fakte vidi kio povus esti iri malbone ene de via programo. 322 00:15:36,590 --> 00:15:39,170 >> Do, demandojn pri argc? 323 00:15:39,170 --> 00:15:40,873 Yeah. 324 00:15:40,873 --> 00:15:45,292 >> Publiko: Mi vidis kie ne havis la karaktero, [inaudible] 325 00:15:45,292 --> 00:15:49,669 nur diris kordo stelo d, kiel karaktero asterisko komo. 326 00:15:49,669 --> 00:15:50,710 Ĉu ili ekvivalentan tie? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Estas. 328 00:15:51,626 --> 00:15:55,080 Do la demando estas, vi havas foje vidinta programojn 329 00:15:55,080 --> 00:15:57,270 kiel tiu kiu ne diru kordo argv krampo 330 00:15:57,270 --> 00:16:01,015 sed anstataŭ diri ion kiel char stelo argv krampo. 331 00:16:01,015 --> 00:16:03,140 Kaj estas eĉ aliaj variantoj ke vi povus vidi. 332 00:16:03,140 --> 00:16:04,264 Ili estas ja ekvivalentaj. 333 00:16:04,264 --> 00:16:06,240 Nuntempe, ni havas tiujn speco de trejnado radoj 334 00:16:06,240 --> 00:16:09,737 en la formo de ŝnuro en la CS50 bibliotekon, sed en malmulta pli de semajno 335 00:16:09,737 --> 00:16:12,570 aŭ tiel ni tuj forigos ke obstrukco entute kaj reale 336 00:16:12,570 --> 00:16:16,820 rigardi kion la signo kaj la stelo estas, kaj kiel tiuj rilatas al memoro 337 00:16:16,820 --> 00:16:18,140 reprezento pli ĝenerale. 338 00:16:18,140 --> 00:16:19,540 Do ni revenu al tiu. 339 00:16:19,540 --> 00:16:21,540 >> Aliaj demandoj en nia argv aŭ argc? 340 00:16:21,540 --> 00:16:22,397 Yeah. 341 00:16:22,397 --> 00:16:24,438 Publiko: Kial ĝi revenos eraro [inaudible]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Kial ĝi reveni eraro only-- ho! 344 00:16:29,230 --> 00:16:31,813 En la antaŭa kazo, kiam ni estis futzing ĉirkaŭe kun memoro, 345 00:16:31,813 --> 00:16:35,110 kial nur reveni eraro kiam mi vere tajpas granda nombro? 346 00:16:35,110 --> 00:16:36,620 Mallonga respondo estas, ni ĵus bonŝanca. 347 00:16:36,620 --> 00:16:39,240 Ĝenerale parolante, komputilo atribuas memoro en pecojn, 348 00:16:39,240 --> 00:16:42,900 kaj li donis al mi sufiĉe grandan pecon, kiu Mi forkuris, sen esti rimarkita, 349 00:16:42,900 --> 00:16:46,280 de tuŝi krampo 2, krampo 3 krampo 50, sed kiam mi puŝis 350 00:16:46,280 --> 00:16:49,080 mia sorto, mi iris preter la limoj de la eron de memoro 351 00:16:49,080 --> 00:16:50,520 la mastruma sistemo estis donita al mi. 352 00:16:50,520 --> 00:16:52,720 Kaj tio estas kiam krampita malsupren kaj diris: Ne. 353 00:16:52,720 --> 00:16:54,580 Segmentación eraro. 354 00:16:54,580 --> 00:16:55,692 Yeah. 355 00:16:55,692 --> 00:16:58,890 >> Publiko: Kiel funkcias la komputilo konas la valoron de argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Kiel funkcias la komputila konas la valoron de argc? 357 00:17:02,390 --> 00:17:07,920 Kiam vi kuri programon, tiu programo, por naturo de la palpebrumantaj prompto, 358 00:17:07,920 --> 00:17:11,359 Estas enmanigis la tabelo de vortoj kiuj tajpas 359 00:17:11,359 --> 00:17:13,300 ĉe la prompto, kiu estis tajpita ĉe la prompto. 360 00:17:13,300 --> 00:17:16,569 Kaj tial estas via mastruma sistemo kiu esence 361 00:17:16,569 --> 00:17:20,329 popolas ĉefaj argumentoj por vi. 362 00:17:20,329 --> 00:17:22,829 Do tio estas unu el la servoj ke vi ricevas, ia sekrete 363 00:17:22,829 --> 00:17:24,869 sub la kapuĉo de mastruma sistemo. 364 00:17:24,869 --> 00:17:27,118 Aliaj demandoj? 365 00:17:27,118 --> 00:17:27,618 Yeah. 366 00:17:27,618 --> 00:17:29,787 >> Publiko: Kion kerno nekropsia signifas? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Kion kerno nekropsia signifas? 368 00:17:31,370 --> 00:17:32,950 Do, tio estas bona demando. 369 00:17:32,950 --> 00:17:35,312 Kaj lasu min reiri en ĉi dosierujo tie. 370 00:17:35,312 --> 00:17:37,270 Kaj vi rimarkos ke Mi havas novan dosieron tie. 371 00:17:37,270 --> 00:17:41,670 Ĝi estas ja nomata kerno, kaj ĝi estas fakte tipe decan grandeco de dosiero. 372 00:17:41,670 --> 00:17:45,300 Tio estas esence instantánea La enhavo de mia programo memoro 373 00:17:45,300 --> 00:17:46,902 aŭ RAM kiam frakasis. 374 00:17:46,902 --> 00:17:49,110 Kaj ĉi tio estos utila, potenciale, diagnostically, 375 00:17:49,110 --> 00:17:52,850 iam ni parolas en futura prelego kaj sekcio pri sencimigo, 376 00:17:52,850 --> 00:17:55,730 ĉar vi efektive povas fari ekvivalento de cifereca nekropsio 377 00:17:55,730 --> 00:18:00,300 sur tiu dosiero helpi elkompreni kion vi faris malbonon en via programo. 378 00:18:00,300 --> 00:18:01,220 Yeah. 379 00:18:01,220 --> 00:18:04,450 >> Publiko: Ĉu argc komando en mem, aŭ vi povas nomumi ĝin io? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Bona demando. 381 00:18:05,575 --> 00:18:08,040 Ĉu argc komando en sin, aŭ vi povas nomumi ĝin io? 382 00:18:08,040 --> 00:18:09,290 Estas definitive ne komando. 383 00:18:09,290 --> 00:18:13,500 Estas simple variablo La nomo aŭ argumento nomo, 384 00:18:13,500 --> 00:18:15,481 kaj tiel absolute ni povus voki ĉi foo, 385 00:18:15,481 --> 00:18:18,480 ni povus nomi tiun stangon, kiu inklinas esti la go-vortoj ke komputilo 386 00:18:18,480 --> 00:18:19,860 sciencisto tuj. 387 00:18:19,860 --> 00:18:22,820 Sed per konvencio, ni uzas argc kaj argv. 388 00:18:22,820 --> 00:18:25,360 Sed tio estas nur homaj konvencio, nenio pli. 389 00:18:25,360 --> 00:18:25,860 Bone. 390 00:18:25,860 --> 00:18:28,140 Do rezultas, mi estis rakontante iom de blanka lie-- 391 00:18:28,140 --> 00:18:31,264 kaj sincere, en la estonteco, vi vidos ni estis rakontante aliaj blankaj mensogoj. 392 00:18:31,264 --> 00:18:33,510 Sed nuntempe, ni iras senŝeligi reen unu el tiuj. 393 00:18:33,510 --> 00:18:37,310 En tiu kazo tie kiam mi antaŭe kuris programon kiel ./hello aŭ ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, ni havis la enhavon de mia komputilan memoron rigardante malafable ŝatas 395 00:18:42,780 --> 00:18:43,280 ĉi. 396 00:18:43,280 --> 00:18:45,070 Sed memoru kion ŝnuro estas. 397 00:18:45,070 --> 00:18:49,279 Kion ni diru semajno kia kordo fakte estas sub la kapuĉo? 398 00:18:49,279 --> 00:18:50,320 Publiko: Array de signoj. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Ĝi estas tabelo de signoj, dekstra? 400 00:18:52,111 --> 00:18:55,760 Do ni havu tabelo de kordoj, sed, siavice, ŝnuro 401 00:18:55,760 --> 00:18:57,150 estas tabelo de signoj. 402 00:18:57,150 --> 00:19:00,010 Do, se mi vere volas esti anal kiam mi desegni tiun bildon, 403 00:19:00,010 --> 00:19:03,290 Mi devus vere esti desegnante ĝin iom pli kiel tiu, 404 00:19:03,290 --> 00:19:08,000 per en ĉiu de ĉi tiuj indeksoj de mia argv tabelo, 405 00:19:08,000 --> 00:19:11,432 tie estas sin tutajn kordo kiuj mem estas en tabelo. 406 00:19:11,432 --> 00:19:13,140 Kaj nun la blanka mensogo ni diras hodiaŭ 407 00:19:13,140 --> 00:19:15,181 estas ke la bildo ne aspektas tute kiel tiu. 408 00:19:15,181 --> 00:19:19,110 Fakte, la malgrandaj kvadratoj estas tipe ekster la grandaj rektanguloj 409 00:19:19,110 --> 00:19:19,610 tie. 410 00:19:19,610 --> 00:19:21,280 Sed ni revenu al tio antaŭ longe. 411 00:19:21,280 --> 00:19:25,440 Sed tio estas ./hello backslash 0, kiu estante la speciala karaktero kiun 412 00:19:25,440 --> 00:19:28,310 demarca la finon de ŝnuro, kaj ni havas alian post 413 00:19:28,310 --> 00:19:29,360 Zamyla nomo. 414 00:19:29,360 --> 00:19:30,900 Do kion signifas tio? 415 00:19:30,900 --> 00:19:33,410 >> Nu, lasu min antaŭeniri kaj malfermi du aliaj ekzemploj 416 00:19:33,410 --> 00:19:35,220 ke estas haveblaj rete. 417 00:19:35,220 --> 00:19:40,590 Oni nomas argv1.c kaj la alia estas argv2. 418 00:19:40,590 --> 00:19:44,260 Estas súper simpla programo kiu Estas malsama de pasintaj programoj 419 00:19:44,260 --> 00:19:47,260 en tiu momento mi uzas argc kaj argv tien. 420 00:19:47,260 --> 00:19:54,300 Kaj nun mi integrante kun buklo en linio 18, de i = 0 sur ĝis argc. 421 00:19:54,300 --> 00:19:56,850 Kaj kion mi povos fari kun tiu linio de kodo tien? 422 00:19:56,850 --> 00:19:58,270 En la angla. 423 00:19:58,270 --> 00:20:00,510 Tiu evidente pruvas uzon de argc. 424 00:20:00,510 --> 00:20:03,670 Sed en la angla, kion faras ĝi farus se mi kuros ĉi programo? 425 00:20:03,670 --> 00:20:04,366 Yeah? 426 00:20:04,366 --> 00:20:07,386 >> Publikon: ĝi tuj presi viajn screen kiel multaj tempoj kiel vi deziras. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Ĝuste. 428 00:20:08,260 --> 00:20:10,480 Do kion ajn vortojn mi tajpu ĉe la prompto, estas 429 00:20:10,480 --> 00:20:13,120 tuj vomas ilin al mi unu por linio. 430 00:20:13,120 --> 00:20:14,370 Do ni iru antaŭen kaj fari tion. 431 00:20:14,370 --> 00:20:17,862 Lasu min iri en mia dosierujo kaj do fari argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Kaj nun, ni tenu ĝin simpla. 434 00:20:21,770 --> 00:20:23,834 Ni faras nenion en komenco. 435 00:20:23,834 --> 00:20:26,750 Ĝi faris presi ion kaj tio estas ja la nomo de la programo, 436 00:20:26,750 --> 00:20:28,240 ĉar tio estas en krampo 0. 437 00:20:28,240 --> 00:20:33,290 Se mi nun diras foo, ĝi tuj faros tiuj du, kaj se mi diros foo trinkejo, 438 00:20:33,290 --> 00:20:35,580 ĝi estas dironta tiujn tri aferojn. 439 00:20:35,580 --> 00:20:37,740 Nun ke estas iom interesa, eble. 440 00:20:37,740 --> 00:20:41,450 Sed memoru ke argv estas tabelo de kordoj, 441 00:20:41,450 --> 00:20:45,960 sed ŝnuro estas tabelo de signoj, tiel ni povas preni aĵojn muesca 442 00:20:45,960 --> 00:20:48,560 kaj apliki tiun bazan logiko kaj fari kodon 443 00:20:48,560 --> 00:20:51,160 aspektas iom pli kripta, rekoni. 444 00:20:51,160 --> 00:20:53,540 Sed por havi ingita buklo, io simila 445 00:20:53,540 --> 00:20:57,030 kion vi eble memoras de Mario, Ekzemple, se vi faris ĝin tiamaniere. 446 00:20:57,030 --> 00:21:00,380 >> Do nun rimarkas sur linio 19, mi denove ripetanta super miaj argumentoj, 447 00:21:00,380 --> 00:21:02,410 de 0 je ĝis argc. 448 00:21:02,410 --> 00:21:05,510 Kaj nun en linio 21-- min pruntado truko de lasta week-- 449 00:21:05,510 --> 00:21:11,090 Mi kontrolis, kio estas la longo de argv krampo i. 450 00:21:11,090 --> 00:21:12,920 Mi stokante tiu respondo en n. 451 00:21:12,920 --> 00:21:18,230 Kaj tiam mi integrante de j je ĝis n, kie j estas inicializado al 0. 452 00:21:18,230 --> 00:21:19,460 Do, konvencio por kalkula. 453 00:21:19,460 --> 00:21:22,335 Kiam vi uzas i, se vi havas ingita iteracio, vi ne povas uzi i denove, 454 00:21:22,335 --> 00:21:25,770 alikaze vi clobber, potenciale, la valoron ekster la interna banto. 455 00:21:25,770 --> 00:21:27,200 Do mi uzas j por konvencio. 456 00:21:27,200 --> 00:21:28,020 Ni povus uzi k. 457 00:21:28,020 --> 00:21:31,080 Se vi havas pli ol k, vi probable havi tro multe nestumado, kutime. 458 00:21:31,080 --> 00:21:33,800 Sed nun rimarkos mian printf linio estas iomete malsamaj. 459 00:21:33,800 --> 00:21:37,520 Mi ne presado% s, mi presi% c, kiu, kompreneble, 460 00:21:37,520 --> 00:21:39,460 Estas lokokupilon por char. 461 00:21:39,460 --> 00:21:40,770 >> Kaj nun rimarkas tiun sintakson. 462 00:21:40,770 --> 00:21:41,270 Nova. 463 00:21:41,270 --> 00:21:42,630 Ni ne vidis lin antaŭe. 464 00:21:42,630 --> 00:21:47,290 Sed logike, ĉi simple signifas akiri la Ith ĉenon en argv 465 00:21:47,290 --> 00:21:50,067 kaj akiri la jth kio? 466 00:21:50,067 --> 00:21:50,900 Publiko: Karaktero. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Karaktero en tiu ĉeno. 468 00:21:52,800 --> 00:21:57,100 Do per rektaj krampoj sekvata de kvadrataj krampoj, 469 00:21:57,100 --> 00:22:00,390 tio estas subnaĝado unua en argv la kordoj, 470 00:22:00,390 --> 00:22:02,225 kaj tiam la dua rektaj krampoj kun j 471 00:22:02,225 --> 00:22:06,580 Estas submarinismo en la karakteroj de ke aparta ĉenon en argv. 472 00:22:06,580 --> 00:22:09,562 Kaj tiam, nur por bonan mezuron, Mi presi novan linion tie. 473 00:22:09,562 --> 00:22:12,020 Do lasu min antaŭeniri kaj malfermi supren iomete pli granda fenestro 474 00:22:12,020 --> 00:22:13,600 do ni povas vidi tion en ago. 475 00:22:13,600 --> 00:22:15,700 Lasu min iri en tiu dosierujo. 476 00:22:15,700 --> 00:22:22,550 Kaj nun faros argv-2-- whoops-- fari argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Eniri. 478 00:22:23,110 --> 00:22:24,860 Kaj ĝi estas iom malfacila legi vertikale, 479 00:22:24,860 --> 00:22:27,920 sed tio estas ja la nomo de la programo, sekvita de malplenan linion. 480 00:22:27,920 --> 00:22:30,210 Nun lasu min antaŭeniri kaj fari foo. 481 00:22:30,210 --> 00:22:33,210 Simile malfacile legi, sed estas ja presi unu karaktero por linio. 482 00:22:33,210 --> 00:22:36,780 Kaj se mi faros trinkejo, estas nun presi tiujn linio por linio. 483 00:22:36,780 --> 00:22:40,140 Do la takeaway tie ne estas tiom ke, wow, rigardu ĉi neta nova lertaĵo 484 00:22:40,140 --> 00:22:44,750 kie vi povas akiri la enhavon de tabelo de specifaj karakteroj, 485 00:22:44,750 --> 00:22:48,380 sed prefere kiel ni prenas tiujn bazajn ideoj kiel la indeksita en tabelo, 486 00:22:48,380 --> 00:22:51,620 kaj tiam indeksado enen tabelo kiu estis en tiu tabelo, 487 00:22:51,620 --> 00:22:56,180 kaj ĝuste apliki la samajn ideojn iomete pli kompleksaj ekzemploj. 488 00:22:56,180 --> 00:22:59,560 Sed la basics vere ne ŝanĝiĝis, eĉ ekde la pasinta semajno. 489 00:22:59,560 --> 00:23:02,350 >> Nun tiu estas speco de oportuna, en tiu, memoras, en semajno nulo 490 00:23:02,350 --> 00:23:04,110 Ni ludas kun telefona libro kiel ĉi. 491 00:23:04,110 --> 00:23:06,670 Kaj eĉ se tio estas evidente fizika pecoj de papero, 492 00:23:06,670 --> 00:23:09,150 Vi povas ia pensi telefono libro kiel tabelo. 493 00:23:09,150 --> 00:23:12,770 Certe, se vi estus al reimplement tiu pecoj tiujn pecojn de papero 494 00:23:12,770 --> 00:23:15,260 en komputilo, verŝajne vi uzus ion 495 00:23:15,260 --> 00:23:20,270 kiel tabelo por stoki ĉiuj tiuj nomojn kaj numerojn de A tuta vojo 496 00:23:20,270 --> 00:23:23,800 tra Z. Do tio estas agrabla, ĉar permesu al ni ŝancon, 497 00:23:23,800 --> 00:23:28,310 eble, konsideri kiom vi povus fakte implementar iu simila. 498 00:23:28,310 --> 00:23:31,250 Kiel kun serio de pordoj tie. 499 00:23:31,250 --> 00:23:36,380 Do se mi could-- ni bezonas volontulo veni supren. 500 00:23:36,380 --> 00:23:36,980 Ni vidu. 501 00:23:36,980 --> 00:23:40,650 An familiarizados vizaĝon eble, familiarizados vizaĝon eble. 502 00:23:40,650 --> 00:23:42,090 Kiom proksimume en oranĝo? 503 00:23:42,090 --> 00:23:42,680 Tie. 504 00:23:42,680 --> 00:23:45,870 Oranĝkolora ĉemizo, venis supren. 505 00:23:45,870 --> 00:23:52,230 >> Ni iru antaŭen nun kaj movado tiuj pordoj sur la flanko, 506 00:23:52,230 --> 00:23:54,020 movi tiujn de la vojo dum momento. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Kio estas via nomo? 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 David. 512 00:23:58,680 --> 00:23:59,451 Agrable renkonti vin. 513 00:23:59,451 --> 00:23:59,950 Bone. 514 00:23:59,950 --> 00:24:04,500 Do ni havas malantaŭ tiuj ses pordojn per cifereca sur la screen-- 515 00:24:04,500 --> 00:24:07,810 aŭ, pli ĝuste, sep pordoj sur la screen-- tutan faskon da nombroj. 516 00:24:07,810 --> 00:24:10,099 Kaj mi diris al vi nenion en advance-- interkonsentis? 517 00:24:10,099 --> 00:24:11,140 Ajay: Nenio anticipe. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Ĉiuj mi deziras vin fari nun estas trovi por mi kaj por ni, 519 00:24:14,730 --> 00:24:20,920 vere, la numero 50, unu paŝon samtempe. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: Numero 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: La nombro 50. 522 00:24:22,580 --> 00:24:24,746 Kaj vi povas malkaŝi kio estas malantaŭ ĉiu el tiuj pordoj 523 00:24:24,746 --> 00:24:27,930 simple tuŝante ĝin per fingro. 524 00:24:27,930 --> 00:24:31,364 Damn ĝin. [Ridado] 525 00:24:31,364 --> 00:24:34,560 >> [Aplaŭdo] 526 00:24:34,560 --> 00:24:39,540 >> Tre bone farita. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Ni havas belan donacon premion por vi ĉi tie. 529 00:24:44,090 --> 00:24:46,520 Via elekto de filmoj ni diskutis pasintsemajne. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: Ho viro. 531 00:24:47,362 --> 00:24:49,050 Ho, mi neniam vidis Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Bone. 534 00:24:50,140 --> 00:24:53,790 Do tenas nur unu momenton. 535 00:24:53,790 --> 00:24:57,430 How-- ni faru ĉi oni teachable moment-- 536 00:24:57,430 --> 00:25:00,412 kiel vi irad trovanta la numero 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: Mi elektis hazarde. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Do vi elektis hazarde kaj akiris bonŝanca. 539 00:25:03,420 --> 00:25:03,790 Ajay: Jes. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: Bone. 541 00:25:04,456 --> 00:25:05,050 Bonega. 542 00:25:05,050 --> 00:25:08,470 Do nun vi havis ne alveninta bonŝanca, kion alian 543 00:25:08,470 --> 00:25:10,210 eble okazis malantaŭ tiuj pordoj? 544 00:25:10,210 --> 00:25:12,930 Do, se mi iru antaŭen kaj malkaŝi tiujn numerojn tie, 545 00:25:12,930 --> 00:25:15,180 ili reale estas en hazarda ordo. 546 00:25:15,180 --> 00:25:17,750 Kaj la plej bona vi povus havi farita, sincere, estas por, fine, 547 00:25:17,750 --> 00:25:19,410 en la plej malbona kazo, kontrolanta ilin cxiujn. 548 00:25:19,410 --> 00:25:23,000 Do vi havas super-bonŝanca, kiu ne estas kion ni volas nomi algoritmon. 549 00:25:23,000 --> 00:25:24,730 Jes, Congrats. 550 00:25:24,730 --> 00:25:27,010 Sed nun let's-- humuro min, se vi povus. 551 00:25:27,010 --> 00:25:28,310 Ni iru al tiu langeto tie. 552 00:25:28,310 --> 00:25:31,460 Kaj tie ĉi estas la nombroj en klara kio ŝajnas esti hazarda ordo, 553 00:25:31,460 --> 00:25:32,280 kaj ili estis. 554 00:25:32,280 --> 00:25:35,160 Sed nun se mi anstataŭ reklamon ke malantaŭ tiuj pordoj 555 00:25:35,160 --> 00:25:39,070 estas nombroj kiuj estas ordo. 556 00:25:39,070 --> 00:25:41,780 La celo nun estas ankaŭ trovi ni la numeron 50. 557 00:25:41,780 --> 00:25:45,910 Sed faru algorítmicamente kaj diru al ni, ke vi tuj ĝin. 558 00:25:45,910 --> 00:25:48,020 Kaj se vi trovas ĝin, vi observos la filmon. 559 00:25:48,020 --> 00:25:49,520 Vi ne trovos ĝin, donu gxin returne. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Do mi tuj kontrolu la finoj unue, por determini se there's-- 562 00:25:58,112 --> 00:26:02,048 [Ridado kaj aplaŭdo] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Jen vi iras. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Ni rigardu unu de Ajay la antaŭuloj, 567 00:26:21,700 --> 00:26:25,450 Sean, kiu estis ne tiom bonŝanca. 568 00:26:25,450 --> 00:26:28,670 OK, do via tasko ĉi tie, Sean, estas la jena. 569 00:26:28,670 --> 00:26:32,970 Mi kaŝis malantaŭ tiuj pordojn la nombro sep, 570 00:26:32,970 --> 00:26:37,200 sed kaŝita for en iu el tiuj pordoj tiel estas alia nenegativa nombroj. 571 00:26:37,200 --> 00:26:40,730 Kaj via celo estas elpensi ĉi supera vico de nombroj kiel ĝuste tabelo. 572 00:26:40,730 --> 00:26:43,590 Ni estas nur vico da pecoj de papero kun ciferoj malantaŭ ili. 573 00:26:43,590 --> 00:26:47,640 Kaj via celo estas, uzante nur la supro tabelo tie trovos mi la nombro sep. 574 00:26:47,640 --> 00:26:51,200 Kaj ni tiam tuj kritiko kiel vi iri pri faranta ĝin. 575 00:26:51,200 --> 00:26:52,920 Trovu ni la nombro sep, bonvolu. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 No. 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 Tio ne estas lertaĵo demando. 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 Je ĉi tiu punkto via partituro ne estas tre bona, do vi eble tiel plu iri. 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 Daŭrigu. 590 00:27:39,802 --> 00:27:42,510 Sincere, mi ne povas helpi sed scivolas kion vi eĉ pensi. 591 00:27:42,510 --> 00:27:44,990 >> Sean: mi povas preni el nur la supera vico. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Nur la supro vico. 593 00:27:46,240 --> 00:27:47,281 Do vi havas tri maldekstren. 594 00:27:47,281 --> 00:27:48,310 Do trovu min 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Spektantaro krias Sugestoj] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Do ambaŭ el tiuj estis miriga por tre malsamaj kialoj. 599 00:28:26,130 --> 00:28:29,150 Do ĉi tiu estas kie ni cxesis antaŭ momento, 600 00:28:29,150 --> 00:28:32,530 kaj la ŝlosilo _insight_ tie Estis tiuj pordoj devis nombroj 601 00:28:32,530 --> 00:28:37,390 malantaŭ ili kiu estis ordigitaj, la ideala takeaway por kio vi povus fari 602 00:28:37,390 --> 00:28:39,670 fundamente bona en tiu dua example-- 603 00:28:39,670 --> 00:28:42,380 kaj, efektive, tiu estis Sean La unua provo kun numeroj aleatorios 604 00:28:42,380 --> 00:28:45,460 same before-- sed tuj kiel tiuj nombroj estas ordo, 605 00:28:45,460 --> 00:28:47,980 multe kiel la telefono libro, kion vi povas evidente faros? 606 00:28:47,980 --> 00:28:50,090 Kiel vi povas utiligi tiun konon? 607 00:28:50,090 --> 00:28:51,530 Yeah. 608 00:28:51,530 --> 00:28:54,910 >> Publiko: Vi iros duonvoje [inaudible]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Jes. 610 00:28:55,660 --> 00:28:56,160 Ĝuste. 611 00:28:56,160 --> 00:28:59,680 Do Ajay komenca instinkto estis por kontroli la ekstremaj, kiel mi memoras, 612 00:28:59,680 --> 00:29:02,320 kaj tiam ni ia finita la ekzemplo rapide. 613 00:29:02,320 --> 00:29:05,220 Sed se ni komencis fari tion pli metode kune tiuj linioj, 614 00:29:05,220 --> 00:29:07,860 sed komencante eble en la meza, ĉar ili estas ordigitaj, 615 00:29:07,860 --> 00:29:10,900 Kiam ni malkaŝos la numeron 16, ni do know-- 616 00:29:10,900 --> 00:29:14,850 kaj ni faru ĝuste that-- ni do scias ke 50, en hodiaŭa kazo, 617 00:29:14,850 --> 00:29:16,080 kiu alvenis al esti dekstre. 618 00:29:16,080 --> 00:29:18,735 Do ĝuste kiel en semajno nulo kiam ni ŝiris la telefono libro en duono 619 00:29:18,735 --> 00:29:21,490 kaj ĵetis la duonon de la problemo for, sama ideo tie. 620 00:29:21,490 --> 00:29:23,680 Ni povas ĵeti ĉi duone de la problemo malaperas. 621 00:29:23,680 --> 00:29:25,730 Kaj verŝajne vi plenumadu algorítmicamente, 622 00:29:25,730 --> 00:29:28,710 kiam vi scias, ke 50 devas esti dekstren, se ĝi estas ie, 623 00:29:28,710 --> 00:29:31,390 estas provi tie, en la mezo de la ceteraj pordoj. 624 00:29:31,390 --> 00:29:33,450 Kompreneble, 50 estas pli altaj ol 42, do ni povas 625 00:29:33,450 --> 00:29:36,060 ĵeti ĉi ceteraj kvaronon de la problemo for, 626 00:29:36,060 --> 00:29:38,510 kaj, fine, identigi iu kiel 50. 627 00:29:38,510 --> 00:29:41,050 Sed kiel kun la telefono libro, tiuj numeroj 628 00:29:41,050 --> 00:29:44,560 estis donita al ni jam ordo ordo, kiu lasas nin 629 00:29:44,560 --> 00:29:47,450 kun la demando, kiel vi preni aferojn en ordo ordo? 630 00:29:47,450 --> 00:29:49,640 Kaj, sincere, je kio kosto? 631 00:29:49,640 --> 00:29:51,390 Estas unu afero esti enmanigis la telefono libro 632 00:29:51,390 --> 00:29:54,810 kaj tiam impresi viaj amikoj per trovanta numeron de telefono vere rapide, ĉu ne? 633 00:29:54,810 --> 00:29:58,520 Ŝirante 32 paĝoj por trovi persono el 4 miliardoj paĝoj 634 00:29:58,520 --> 00:30:00,470 Ni diris unu ekstrema ekzemplo. 635 00:30:00,470 --> 00:30:03,320 Sed kiom da tempo li bezonos Verizon ordigi ke telefono libro? 636 00:30:03,320 --> 00:30:06,170 Kiom da tempo ni bezonis ordigi tiujn sep numerojn? 637 00:30:06,170 --> 00:30:10,110 Tio estas demando kiun ni tiel malproksime tute ignoris. 638 00:30:10,110 --> 00:30:12,330 >> Do ni respondos tiun demandon nun. 639 00:30:12,330 --> 00:30:15,920 Kaj ni ĉiuj el filmojn nun, sed ni ja havas iujn streso pilkojn. 640 00:30:15,920 --> 00:30:19,480 Se diri, ok volontuloj ne bonvolus kunigi nin tie? 641 00:30:19,480 --> 00:30:24,100 Ni iru antaŭen kaj faru, kiel pri kvar el vi tri el vi tien? 642 00:30:24,100 --> 00:30:25,290 Akiri novajn vizaĝojn. 643 00:30:25,290 --> 00:30:27,220 Kaj la kvar de vi tie? 644 00:30:27,220 --> 00:30:30,760 Kaj now-- ni ne emo here-- kaj numeron ok tien je la fino. 645 00:30:30,760 --> 00:30:32,060 Venu supren. 646 00:30:32,060 --> 00:30:32,560 Bone. 647 00:30:32,560 --> 00:30:37,480 Do kion ni havas ĉi tie ĉiun el vi estas nombro. 648 00:30:37,480 --> 00:30:40,055 Se vi ŝatus iri antaŭe, preni tiun numeron. 649 00:30:40,055 --> 00:30:40,763 Kio estas via nomo? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, okay. 652 00:30:43,100 --> 00:30:44,297 Vi estas la numero 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 David. 656 00:30:46,820 --> 00:30:47,530 Vi numero 2. 657 00:30:47,530 --> 00:30:49,100 Kaj iri antaŭen, kiel Mi transdonis vi la folioj de papero, 658 00:30:49,100 --> 00:30:52,130 vicigi vin sur fronto de la muziko staras en la sama ordo kiel supre. 659 00:30:52,130 --> 00:30:52,660 >> Andy: Saluton, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, estas agrable vidi vin. 661 00:30:53,970 --> 00:30:54,520 Numero 3. 662 00:30:54,520 --> 00:30:55,310 >> Jacob: Jakob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jakob numero 4. 664 00:30:56,760 --> 00:30:57,549 Bonvenon surŝipe. 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 Numero 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, numero 6. 670 00:31:02,766 --> 00:31:03,589 >> Frances: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, numero 7. 672 00:31:04,880 --> 00:31:05,200 Kaj? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rahxel, numero 8. 675 00:31:06,815 --> 00:31:07,100 Bone. 676 00:31:07,100 --> 00:31:08,766 Iru antaŭen kaj akiri vin en tiu ordo. 677 00:31:08,766 --> 00:31:11,440 Lasu min metis unu restanta muziko staras en loko. 678 00:31:11,440 --> 00:31:13,670 Kie vi bezonos piedestalon? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Antaŭeniri kaj simple meti viajn numerojn kie la spektantaro povas vidi ilin, 681 00:31:18,710 --> 00:31:20,340 la muzikon stari alfrontas eksteren. 682 00:31:20,340 --> 00:31:27,240 Kaj espereble, nia unua prudento ĉeko here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Ho-oh. 684 00:31:27,890 --> 00:31:29,070 Atendu minuton. 685 00:31:29,070 --> 00:31:31,140 Ni ne havas 8. 686 00:31:31,140 --> 00:31:35,180 Mi bezonas elhejmigi vin de la ekzemplo iel. 687 00:31:35,180 --> 00:31:35,680 No. 688 00:31:35,680 --> 00:31:36,940 Ne, tio estas okej. 689 00:31:36,940 --> 00:31:37,890 Ni vidu. 690 00:31:37,890 --> 00:31:38,880 Ni povas fari ĉi tion. 691 00:31:38,880 --> 00:31:39,440 Staras. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Tie ni iru. 694 00:31:45,740 --> 00:31:46,800 Korekta. 695 00:31:46,800 --> 00:31:47,360 Bone. 696 00:31:47,360 --> 00:31:50,260 Do, nun ni havas 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Bonega. 699 00:31:51,360 --> 00:31:54,400 >> Do la demando en mano estas, kio kosto, kaj tra kia metodo 700 00:31:54,400 --> 00:31:58,580 ĉu ni povas efektive ordigi tiujn numerojn tie tiel ke ni povas ia labori malantaŭen, 701 00:31:58,580 --> 00:32:02,759 finfine kaj decide-- estas vere impona, estas vere efika, 702 00:32:02,759 --> 00:32:04,550 ke mi povas dividi kaj konkeri telefono libro? 703 00:32:04,550 --> 00:32:06,716 Ĉu vere efikaj ke Mi povas dividi kaj venki 704 00:32:06,716 --> 00:32:08,600 tiuj ciferecaj pecoj de papero sur la tabulo, 705 00:32:08,600 --> 00:32:14,500 se eble tuj kostis al ni fortuno en tempo aŭ energio aŭ CPU ciklojn 706 00:32:14,500 --> 00:32:17,340 por reale preni nian datumoj en iu ordo ordo? 707 00:32:17,340 --> 00:32:18,930 Do ni petas, ke demando. 708 00:32:18,930 --> 00:32:22,077 >> Do unue for, tiuj nombroj estas en preskaŭ hazarda ordo, 709 00:32:22,077 --> 00:32:24,160 kaj mi tuj proponos unu algoritmo, aŭ procezo 710 00:32:24,160 --> 00:32:25,970 per kiu ni povas ordigi tiujn ulojn. 711 00:32:25,970 --> 00:32:28,100 Mi iras al alproksimigi tiu bela naive. 712 00:32:28,100 --> 00:32:30,730 Kaj mi tuj rekonas ke estas speco de multe por mi 713 00:32:30,730 --> 00:32:32,890 envolver mia menso ĉirkaŭ la tutaj datumoj metis samtempe. 714 00:32:32,890 --> 00:32:33,640 Sed vi scias kion? 715 00:32:33,640 --> 00:32:37,450 Mi tuj faros iun tre simpla marĝena korektoj. 716 00:32:37,450 --> 00:32:41,152 4 kaj 2 estas misfunkcias, se la celo estas iri de 1 sur ĝis 8. 717 00:32:41,152 --> 00:32:41,860 Do vi scias pri kio? 718 00:32:41,860 --> 00:32:43,776 Mi tuj vin infanoj interŝanĝi, se vi ŝanĝos 719 00:32:43,776 --> 00:32:46,380 fizike pozicioj viajn pecojn de papero. 720 00:32:46,380 --> 00:32:47,894 Nun 4 kaj 6, tiuj estas en ordo. 721 00:32:47,894 --> 00:32:49,060 Mi iras al forlasi tiujn esti. 722 00:32:49,060 --> 00:32:50,227 6 kaj 8, tiuj estas en ordo. 723 00:32:50,227 --> 00:32:51,185 Lasos ilin esti. 724 00:32:51,185 --> 00:32:52,170 8 and1, el ordo. 725 00:32:52,170 --> 00:32:54,790 Se vi du ne gravas interŝanĝi. 726 00:32:54,790 --> 00:32:57,300 Nun 8 kaj 3, se vi uloj povus interŝanĝi. 727 00:32:57,300 --> 00:32:59,320 8 kaj 7, se vi uloj povus interŝanĝi. 728 00:32:59,320 --> 00:33:01,790 Kaj 8 kaj 5, se vi uloj povus interŝanĝi. 729 00:33:01,790 --> 00:33:03,980 >> Nun, mi faris? 730 00:33:03,980 --> 00:33:05,200 Ne, evidente ne. 731 00:33:05,200 --> 00:33:07,880 Sed mi faris la situacion pli bone, ĉu ne? 732 00:33:07,880 --> 00:33:09,430 Kio estis via nomo denove, numero 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Do Rachel havas efike bobelis supren bela nun, 735 00:33:12,850 --> 00:33:15,660 la tutan vojon al la fino de mia tabelo de nombroj ĉi tie. 736 00:33:15,660 --> 00:33:17,310 Kaj por ke problemo estas speco de solvita. 737 00:33:17,310 --> 00:33:21,670 Nun, klare, 2 ankoraŭ bezonas movi iom, kaj 4 kaj 6 kaj 1. 738 00:33:21,670 --> 00:33:24,420 Sed ŝajne mi akiris iom pli proksima al la solvo. 739 00:33:24,420 --> 00:33:26,790 Do ni apliku tiun ĉi saman naiva heŭristiko denove. 740 00:33:26,790 --> 00:33:27,690 2 kaj 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 kaj 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 kaj 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Ni swap. 744 00:33:32,230 --> 00:33:33,200 6 kaj 3 mm-mm. 745 00:33:33,200 --> 00:33:34,420 Ni swap. 746 00:33:34,420 --> 00:33:35,580 6 kaj 7 estas okej. 747 00:33:35,580 --> 00:33:36,590 7 kaj 5, nope. 748 00:33:36,590 --> 00:33:37,790 Ni swap. 749 00:33:37,790 --> 00:33:38,470 Kaj nun 7 kaj 8. 750 00:33:38,470 --> 00:33:39,862 Kaj kio estas via nomo denove? 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 Do nun Frances estas eĉ pli bonan pozicio, ĉar nun 7 kaj 8 754 00:33:44,230 --> 00:33:46,440 estas korekte bobelis ĝis la supro. 755 00:33:46,440 --> 00:33:47,510 Do 2 kaj 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 kaj 1, ni swap. 757 00:33:48,720 --> 00:33:50,410 4 kaj 3, ni swap. 758 00:33:50,410 --> 00:33:51,550 4 kaj 6, vi estas en ordo. 759 00:33:51,550 --> 00:33:53,340 6 kaj 5, Ni swap. 760 00:33:53,340 --> 00:33:54,590 Kaj nun tiuj infanoj estas bonaj. 761 00:33:54,590 --> 00:33:55,780 Ni estas preskaŭ tie. 762 00:33:55,780 --> 00:33:57,706 2 kaj 1, el ordo, tiel interŝanĝi. 763 00:33:57,706 --> 00:33:59,080 Kaj nun lasu min fari prudento ĉeko. 764 00:33:59,080 --> 00:34:03,080 2 kaj 3, 3 kaj 4, 4 kaj 5, 5 kaj 6, 6 kaj 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, do ni faris. 766 00:34:05,060 --> 00:34:09,310 >> Sed je kia kosto faris mi ordigi tiujn numerojn tie? 767 00:34:09,310 --> 00:34:13,960 Nu, kiom da paŝoj faris mi potenciale preni kiam ordiga tiuj uloj? 768 00:34:13,960 --> 00:34:15,710 Nu, ni revenos al tiu demando. 769 00:34:15,710 --> 00:34:18,030 Sed, sincere, se vi havas iom enuas, tio 770 00:34:18,030 --> 00:34:22,270 speco de malkaŝi en tiu ĉi ne estis eble la plej kompetenta algoritmo. 771 00:34:22,270 --> 00:34:25,230 Kaj efektive, sincere, mi ŝvitis des pli marŝante tien kaj reen. 772 00:34:25,230 --> 00:34:26,639 Tio ne sentas aparte efika. 773 00:34:26,639 --> 00:34:27,805 Do ni provu ion alian. 774 00:34:27,805 --> 00:34:31,870 Se vi uloj povis malaktivigi vin al tiuj ok valoroj. 775 00:34:31,870 --> 00:34:32,969 Bonan laboron. 776 00:34:32,969 --> 00:34:36,570 >> Ni rigardu ciferece, por ĝuste momenton antaŭ ni provu ion alian, 777 00:34:36,570 --> 00:34:38,179 je kio ĵus okazis. 778 00:34:38,179 --> 00:34:41,330 Ĝis tie, vi estas proksimume vidi videbligo de tiuj ok homoj 779 00:34:41,330 --> 00:34:44,719 per blua kaj ruĝa stangoj reprezentas nombroj. 780 00:34:44,719 --> 00:34:46,670 La alta la lato, La pli granda la nombro. 781 00:34:46,670 --> 00:34:48,510 Malplilongigita la trinkejo, la pli malgranda la nombro. 782 00:34:48,510 --> 00:34:51,560 Kaj kion vi tuj vidos estas hazarda ordo pli ol ok de ili. 783 00:34:51,560 --> 00:34:55,830 Vi tuj vidos tiujn riglilojn akiranta ordigitaj laŭ tiu sama algoritmo, 784 00:34:55,830 --> 00:34:59,890 aŭ aro de instrukcioj, kiuj ni vizitos nun bobelo varo. 785 00:34:59,890 --> 00:35:04,000 Do rimarki, ĉiun duan aŭ tiel, du stangoj lumigante en ruĝa, 786 00:35:04,000 --> 00:35:05,590 estas komparita de la komputilo. 787 00:35:05,590 --> 00:35:08,630 Kaj tiam se la granda trinkejo kaj la iom trinkejo estas el ordo, 788 00:35:08,630 --> 00:35:11,220 ili estas interŝanĝitaj por mi. 789 00:35:11,220 --> 00:35:15,120 >> Nun tio estas nekredeble teda rigardi tion, certe, 790 00:35:15,120 --> 00:35:18,630 por tre longa, sed rimarkas la takeaway-- grandaj stangoj movas dekstren, 791 00:35:18,630 --> 00:35:20,460 iom riglilojn movanta maldekstren. 792 00:35:20,460 --> 00:35:23,380 Ni aborti tiun procezon kaj akceli ĉi supren 793 00:35:23,380 --> 00:35:27,330 esti multe pli rapide, do ni povas akiri altnivelan senso de kio, 794 00:35:27,330 --> 00:35:29,970 ja bobelo varo estas faranta. 795 00:35:29,970 --> 00:35:33,150 Efektive, ĝi estas fluanta ĝis la dekstre de la lerta, 796 00:35:33,150 --> 00:35:35,260 aŭ la tabelo, la grandaj stangoj. 797 00:35:35,260 --> 00:35:40,020 Kaj male, la eta stangoj estas bobelanta sian vojon malsupren al la maldekstra, 798 00:35:40,020 --> 00:35:42,950 kvankam al rapida ritmo ol ni antaŭe faris. 799 00:35:42,950 --> 00:35:45,850 Do, malfacilas vidi kun homoj, sed vide jen ĝuste kion 800 00:35:45,850 --> 00:35:46,540 okazis. 801 00:35:46,540 --> 00:35:49,110 >> Sed ni provu fundamente malsaman alproksimiĝon nun. 802 00:35:49,110 --> 00:35:52,387 Ni provu alian algoritmo per kiu ni havi vin 803 00:35:52,387 --> 00:35:59,640 infanoj komencas en tiuj originalaj pozicioj, kiu estis tiu ordo tie. 804 00:35:59,640 --> 00:36:00,827 Kaj ni iru antaŭen nun. 805 00:36:00,827 --> 00:36:02,910 Kaj Mi faros ion eĉ pli simple, ĉu ne? 806 00:36:02,910 --> 00:36:06,710 Retrospektive interŝanĝante paroj denove kaj denove, preskaŭ iom ruza. 807 00:36:06,710 --> 00:36:10,460 Ni faros tion eĉ pli naive, kie se mi volas ordigi tiujn ulojn, 808 00:36:10,460 --> 00:36:12,560 lasu min nur observu rigardante por la plej eta ero. 809 00:36:12,560 --> 00:36:14,570 Do nun, 4 estas la malgranda nombro mi vidis. 810 00:36:14,570 --> 00:36:15,695 Mi tuj memoros tion. 811 00:36:15,695 --> 00:36:17,750 Ne, 2 estas pli bona, kaj memoru tion. 812 00:36:17,750 --> 00:36:20,730 1 Estas eĉ pli malgranda. 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-- kio estas via nomo denove? 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 Do, Artie, iru antaŭen. 819 00:36:25,460 --> 00:36:27,043 Mi tuj eltiros vin el la linio. 820 00:36:27,043 --> 00:36:28,400 Se vi povus veni tien. 821 00:36:28,400 --> 00:36:30,790 Kaj mi bezonas por fari lokon por li. 822 00:36:30,790 --> 00:36:32,040 Ni havas decidon punkto tie. 823 00:36:32,040 --> 00:36:36,000 Kiel povus ni cedu al Artie tie komence kie numero 1 apartenas? 824 00:36:36,000 --> 00:36:36,770 >> Publiko: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: Bone, ni povus ŝanĝi ĉiujn. 826 00:36:38,950 --> 00:36:40,860 Sed proponi optimumigo. 827 00:36:40,860 --> 00:36:43,410 Kiu sentas iom ĝena por min demandi kvar personoj 828 00:36:43,410 --> 00:36:44,620 movi la tutan vojon malsupren. 829 00:36:44,620 --> 00:36:45,520 Kion alian mi povis fari? 830 00:36:45,520 --> 00:36:46,360 >> Publiko: Switch ilin. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: Switch ilin. 832 00:36:46,850 --> 00:36:47,900 Kaj kio estas via nomo denove? 833 00:36:47,900 --> 00:36:48,441 >> Jacob: Jakob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jakob movi. 835 00:36:50,330 --> 00:36:54,440 Multe pli eficiente simple havi Jakob swap lokoj kun Artie, 836 00:36:54,440 --> 00:36:56,710 kontraste al devigante ĉiuj kvar el tiuj uloj, 837 00:36:56,710 --> 00:36:58,734 dankon tre multa por ilia ĝusta pozicio. 838 00:36:58,734 --> 00:37:01,150 Kio estas agrabla pri Artie nun, li estas en sia ĝusta pozicio. 839 00:37:01,150 --> 00:37:02,060 Ni faru tion denove. 840 00:37:02,060 --> 00:37:03,730 2, kiu estas la plej malgranda nombro mi vidis. 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 estas definitive la plej malgranda. 844 00:37:07,467 --> 00:37:08,550 Ne devas fari ajnan laboron. 845 00:37:08,550 --> 00:37:09,320 Ni faru ĝin denove. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Malgranda? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Nope. 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 Lasu min memoras 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Lasu min memoras 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Malgranda nombro Mi havas vidi sur tiu paŝo estas 3. 857 00:37:18,490 --> 00:37:20,340 Se vi ŝatus veni eksteren. 858 00:37:20,340 --> 00:37:21,986 Kie ni tuj metos vin? 859 00:37:21,986 --> 00:37:22,860 Kaj kio estas via nomo? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, ni tuj devos elhejmigi vi. 862 00:37:25,780 --> 00:37:28,670 Sed kiu estas pli efikaj, justaj interŝanĝi du personoj, 863 00:37:28,670 --> 00:37:31,850 ol havi multoblajn homoj fakte deflankiĝo super. 864 00:37:31,850 --> 00:37:32,850 Nun ni faru tion denove. 865 00:37:32,850 --> 00:37:34,980 Mi iras al selekti 4, do venu eksteren. 866 00:37:34,980 --> 00:37:36,540 Kaj kiu tuj movi? 867 00:37:36,540 --> 00:37:37,750 Numero 8, kompreneble. 868 00:37:37,750 --> 00:37:40,260 Se mi nun trovas numeron 5, venu eksteren. 869 00:37:40,260 --> 00:37:42,104 Numero 8 tuj get elhejmigis denove. 870 00:37:42,104 --> 00:37:43,770 Mi nun tuj trovos numeron 6 en loko. 871 00:37:43,770 --> 00:37:44,410 7 en loko. 872 00:37:44,410 --> 00:37:45,080 8 en loko. 873 00:37:45,080 --> 00:37:48,590 >> Kion ni ĵus faris nun estas iu nomita selektado speco, 874 00:37:48,590 --> 00:37:52,560 kaj se ni visualizar ĉi, ĝi estas tuj sentas iom malsama. 875 00:37:52,560 --> 00:37:56,800 Ni iru antaŭen kaj de tiu menu tie ĉi visualization-- 876 00:37:56,800 --> 00:38:02,920 ni ŝanĝi tiun to-- iras, Firefox. 877 00:38:02,920 --> 00:38:07,610 Ni ŝanĝu tion al selektado varo. 878 00:38:07,610 --> 00:38:11,830 Kaj ni plirapidigi ĝin kiel antaŭe, kaj komenci la visualización nun. 879 00:38:11,830 --> 00:38:13,990 Kaj tiu algoritmo havas malsaman takton al ĝi. 880 00:38:13,990 --> 00:38:16,480 Sur ĉiu ripeto, sincere, ĝi estas eĉ pli simpla. 881 00:38:16,480 --> 00:38:18,385 Mi simple elektanta la plej malgranda elemento. 882 00:38:18,385 --> 00:38:21,510 Nun, sincere, mi alvenis iom bonŝanca ke tempo, en kiu gxi ordo super-rapida. 883 00:38:21,510 --> 00:38:22,660 La elementoj estis hazardo. 884 00:38:22,660 --> 00:38:25,520 Ne, ĉar ni finfine vidu, funde rapida. 885 00:38:25,520 --> 00:38:29,400 Sed ni vidu la tria kaj fina alproksimigi tie kiel al kio okazas. 886 00:38:29,400 --> 00:38:36,230 Do ni iru antaŭen kaj malaktivigi vi uloj unu fina tempo esti en tiu ordo tie. 887 00:38:36,230 --> 00:38:38,450 >> Kaj nun, mi tuj esti iom pli saĝa, 888 00:38:38,450 --> 00:38:40,220 nur por grupigi niajn algoritmoj. 889 00:38:40,220 --> 00:38:41,230 Mi tuj faros. 890 00:38:41,230 --> 00:38:43,140 Mi iras al ne iros reen tiom. 891 00:38:43,140 --> 00:38:44,900 Sincere, mi estas laca ĉiuj ĉi petolanta. 892 00:38:44,900 --> 00:38:47,691 Mi simple tuj prenos kion mi donita al la komenco de la listo, 893 00:38:47,691 --> 00:38:49,460 kaj mi tuj ordigi kiu tiam kaj tie. 894 00:38:49,460 --> 00:38:50,140 Do jen ni estas. 895 00:38:50,140 --> 00:38:51,030 Numero 4. 896 00:38:51,030 --> 00:38:53,680 Mi iras al insertar nombro 4 en ordo listo. 897 00:38:53,680 --> 00:38:54,180 Farita. 898 00:38:54,180 --> 00:38:58,300 Mi asertas nun, kaj ĝuste por fari tion pli klara, tiu parto de mia listo estas ordigita. 899 00:38:58,300 --> 00:39:02,610 Estas speco de stulta aserto, sed ja 4 estas ordigitaj en lerta de grandeco unu. 900 00:39:02,610 --> 00:39:04,210 Nun, mi tuj transpreni numero 2. 901 00:39:04,210 --> 00:39:07,670 Numero 2 Mi nun iras al enmeti en la ĝusta loko. 902 00:39:07,670 --> 00:39:08,680 Do kie ankoraŭ 2 aparteni? 903 00:39:08,680 --> 00:39:09,824 Evidente, ĉi tien. 904 00:39:09,824 --> 00:39:11,490 Do bonvolu kopii dorson, se vi povus. 905 00:39:11,490 --> 00:39:14,406 Kaj kial vi ne infanoj simple preni via muziko staras kun vi tiun tempon. 906 00:39:14,406 --> 00:39:17,020 Kaj ni perforte enmeti vin en la komenco de la listo. 907 00:39:17,020 --> 00:39:17,936 Do iom pli da laboro. 908 00:39:17,936 --> 00:39:20,890 Mi devis movi Jakob ĉirkaŭe, kaj kio estas via nomo? 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 Sed almenaŭ mi ne iros tien kaj reen. 912 00:39:24,350 --> 00:39:25,739 Mi simple prenas tion kiel mi iras. 913 00:39:25,739 --> 00:39:27,530 Mi nur enmeto ilin en la ĝusta loko. 914 00:39:27,530 --> 00:39:29,220 6, tiu estas efektive sufiĉe facila. 915 00:39:29,220 --> 00:39:31,510 Ni enigi vi tie, se vi nur volis movi super iomete. 916 00:39:31,510 --> 00:39:32,870 Numero 8, ankaŭ sufiĉe facila. 917 00:39:32,870 --> 00:39:33,741 Ĝuste tie. 918 00:39:33,741 --> 00:39:34,240 Damn ĝin. 919 00:39:34,240 --> 00:39:37,590 Numero 1 ne povas simple interŝanĝi kun Amin tie, 920 00:39:37,590 --> 00:39:39,340 ĉar tio okazas por salato supren la ordon. 921 00:39:39,340 --> 00:39:40,660 Do ni devas esti iom pli saĝa. 922 00:39:40,660 --> 00:39:42,770 Do, Artie, se vi povus asist momente. 923 00:39:42,770 --> 00:39:46,550 Ni iru antaŭen kaj ŝanĝi nun, kontraste nia antaŭa algoritmoj, 924 00:39:46,550 --> 00:39:50,910 por fari lokon por Artie ĉi tie en la komenco. 925 00:39:50,910 --> 00:39:54,690 Do, je la fino de la tago, mi estas speco de faris kion mi volis eviti antaŭe. 926 00:39:54,690 --> 00:39:57,770 Kaj do mia algoritmo estas speco de dorsflankita, intelekte, 927 00:39:57,770 --> 00:39:59,070 el kio origine estis. 928 00:39:59,070 --> 00:40:01,240 Mi nur faras la vagantaj ĉe malsama punkto. 929 00:40:01,240 --> 00:40:02,291 Nun mi estas ĉe 3. 930 00:40:02,291 --> 00:40:02,790 Ho, malbenita. 931 00:40:02,790 --> 00:40:04,039 Ni devas fari pli da laboro denove. 932 00:40:04,039 --> 00:40:05,060 Do ni puŝi vin ekstere. 933 00:40:05,060 --> 00:40:09,360 Ni movi 8, 6, 4-- ho oh-- kaj 3 tuj iros dekstren tie. 934 00:40:09,360 --> 00:40:11,490 Do almenaŭ malpeza ŝparadoj tiu tempo. 935 00:40:11,490 --> 00:40:13,100 7, ne tro da laboro farenda. 936 00:40:13,100 --> 00:40:15,370 Do se vi volas pop reen, ni enŝovu vi. 937 00:40:15,370 --> 00:40:17,440 Kaj laste, 5, se vi volas pop reen, ni 938 00:40:17,440 --> 00:40:22,610 bezonas movi vin, vin, vi ĝis kvin estas en loko. 939 00:40:22,610 --> 00:40:25,670 >> Do nun vidi tiun en altnivela grafike, 940 00:40:25,670 --> 00:40:31,080 ni faros ĉi algoritmo videbligo unu plian tempon. 941 00:40:31,080 --> 00:40:33,580 Tiel ĉi ni nomos inserción varo. 942 00:40:33,580 --> 00:40:37,700 Ni kuras tiel, kiel rapida, kaj komenci tie. 943 00:40:37,700 --> 00:40:39,580 Kaj ĝi ankaŭ havas malsaman senton. 944 00:40:39,580 --> 00:40:42,180 Ĝi estas speco de iĝi pli kaj bona, sed ĝi neniam perfekta 945 00:40:42,180 --> 00:40:44,630 gxis mi venos kaj milda en tiuj mankoj. 946 00:40:44,630 --> 00:40:47,860 Ĉar, denove, mi nur prenas kion Mi transdonitan de maldekstre al dekstre. 947 00:40:47,860 --> 00:40:50,350 Do mi ne tiom bonŝanca ke ĉio estis perfekta. 948 00:40:50,350 --> 00:40:54,190 Tial ni havis tiujn iom mispositions ke ni fiksita tempo. 949 00:40:54,190 --> 00:40:58,890 >> Do ĉiu el tiuj algoritmoj ŝajnas kuri je iomete malsamaj pasxojn. 950 00:40:58,890 --> 00:41:02,030 Fakte, kion vi diras estas la plej bona aŭ la plej rapida ĝis nun? 951 00:41:02,030 --> 00:41:03,450 Bobelo varo, la unuan? 952 00:41:03,450 --> 00:41:05,000 Selektado varo, la dua? 953 00:41:05,000 --> 00:41:08,450 Inserción varo, la tria? 954 00:41:08,450 --> 00:41:10,710 Mi aŭdis iun selektado varoj. 955 00:41:10,710 --> 00:41:13,280 Aliaj pensoj? 956 00:41:13,280 --> 00:41:16,880 >> Do rezultas ke ĉiuj tiuj algoritmoj 957 00:41:16,880 --> 00:41:22,400 estas fundamente same efika kiel ĉiu alia lando aŭ, inverse, kiel 958 00:41:22,400 --> 00:41:25,980 ineficiente kiel ĉiu alia, ĉar ni povas fari fundamente 959 00:41:25,980 --> 00:41:28,120 pli ol tri de tiuj algoritmoj. 960 00:41:28,120 --> 00:41:29,990 Kaj tio estas iom de blanka mensogo, tro. 961 00:41:29,990 --> 00:41:32,580 kiam Mi diras, kiel efika aŭ kiel senutila, 962 00:41:32,580 --> 00:41:35,040 tio almenaŭ super-grandaj valoroj de n. 963 00:41:35,040 --> 00:41:38,450 Kiam ni havas nur ok homoj ĉi tie, aŭ eble 50 aŭ tiel stangoj sur la ekrano, 964 00:41:38,450 --> 00:41:41,645 vi absolute rimarki diferencojn inter tiuj tri algoritmoj. 965 00:41:41,645 --> 00:41:44,020 Sed kiel n, la nombro de homoj, aŭ la nombron de ciferoj, 966 00:41:44,020 --> 00:41:46,350 aŭ la nombro de homoj en la telefono libro, aŭ la nombro de retpaĝoj 967 00:41:46,350 --> 00:41:48,230 en Google datenbazo ricevas pli kaj pli, 968 00:41:48,230 --> 00:41:51,650 ni vidos, ke ĉiuj tri el ĉi tiuj algoritmoj estas vere bela malriĉa. 969 00:41:51,650 --> 00:41:54,060 Kaj ni povas fari fundamente pli ol tio. 970 00:41:54,060 --> 00:41:56,830 >> Ni rigardu, fine, je kio tiuj algoritmoj multobligita 971 00:41:56,830 --> 00:41:59,520 sonas kiel en la kunteksto de kelkaj aliaj 972 00:41:59,520 --> 00:42:03,550 tiel pere de tiu videbligo tie 973 00:42:03,550 --> 00:42:06,860 kiuj enkondukos nin numeron de algoritmoj. 974 00:42:06,860 --> 00:42:10,330 Ni iru antaŭen kaj gratuli niaj partoprenantoj tie, ĉiuj el kiuj 975 00:42:10,330 --> 00:42:11,690 ordo sin tre bone. 976 00:42:11,690 --> 00:42:15,124 Se vi ŝatus preni adiaŭa donaco. 977 00:42:15,124 --> 00:42:16,540 Vi povas subteni vian nombroj kiel bone. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Kaj kion vi vidos, aŭ pli ĝuste aŭdi, nun, 980 00:42:22,520 --> 00:42:25,710 estas kiu kiel ni metis sonoj al ĉiu el tiuj stangoj 981 00:42:25,710 --> 00:42:28,660 kaj asocii ĝin kun la programaro, malsaman oftecon de sono, 982 00:42:28,660 --> 00:42:33,970 vi povas envolver vian menson pli audioly ĉirkaŭ kio ĉiu de ĉi tiuj aferoj 983 00:42:33,970 --> 00:42:34,470 aspekti. 984 00:42:34,470 --> 00:42:39,325 La unua el ili estas la inserción speco 985 00:42:39,325 --> 00:42:44,275 >> [Tonoj] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Tiu estas bobelo varo. 988 00:42:49,720 --> 00:42:54,175 >> [Tonoj] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Selektado varo. 991 00:43:18,222 --> 00:43:22,596 >> [Tonoj] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Iu nomita merge varo. 994 00:43:35,150 --> 00:43:38,140 >> [Tonoj] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome varo. 997 00:43:51,278 --> 00:43:56,390 >> [Tonoj] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Estas tio por CS50. 1000 00:44:09,430 --> 00:44:13,360 Ni vidos vin merkredon. 1001 00:44:13,360 --> 00:44:16,671 >> Rakontanto: Kaj nun, "Deep Pensoj "de Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Kial a por buklo? 1004 00:44:21,590 --> 00:44:23,200 Kial ne fari ĝin pli bone? 1005 00:44:23,200 --> 00:44:25,970 Mi ŝatus fari kvin buklo. 1006 00:44:25,970 --> 00:44:28,720 >> [Ridado]