1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Në rregull. 3 00:00:11,940 --> 00:00:16,470 Pra, kjo është CS50, dhe kjo është tani fillimi i javës së tre. 4 00:00:16,470 --> 00:00:19,960 >> Pra, deri tani, ne kemi qenë i shkruar programe në C 5 00:00:19,960 --> 00:00:23,210 se duket pak diçka si kjo këtu. 6 00:00:23,210 --> 00:00:25,470 Pra, ne kemi marrë një çift të mprehtë përfshin në krye. 7 00:00:25,470 --> 00:00:28,490 Ne kemi marrë int, kryesor, i pavlefshëm, dhe pastaj diçka për të bërë në mes, 8 00:00:28,490 --> 00:00:30,590 disa pak e kodit brenda e atë funksion. 9 00:00:30,590 --> 00:00:34,170 Por kryesore ka qenë fakti se ne kemi qenë duke thënë pavlefshme këtu. 10 00:00:34,170 --> 00:00:39,320 Pra pavlefshme, të gjithë këtë kohë, specifikon se ky program, kur të drejtuar, 11 00:00:39,320 --> 00:00:41,300 mund të drejtohet vetëm përmes emrit të saj. 12 00:00:41,300 --> 00:00:46,330 Ju nuk mund të shtypni ndonjë fjalë të tjera ose numra pas emrin e programit kur 13 00:00:46,330 --> 00:00:46,830 drejtimin e tij. 14 00:00:46,830 --> 00:00:51,200 Kështu, për shembull, nëse programi ishin hartuar në një skedar të quajtur hello, 15 00:00:51,200 --> 00:00:53,480 ju mund të bëni ./hello, por kjo është ajo. 16 00:00:53,480 --> 00:00:56,750 >> Vetmja mënyrë që ju mund të të sigurojë të dhëna për këtë program 17 00:00:56,750 --> 00:00:57,960 është duke e quajtur një funksion. 18 00:00:57,960 --> 00:00:59,790 Për shembull, çfarë funksioni kemi qenë duke përdorur deri tani 19 00:00:59,790 --> 00:01:00,950 për të marrë të dhëna nga përdoruesit? 20 00:01:00,950 --> 00:01:02,117 >> Audienca: Get string. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Për të marrë varg, ose merrni int, apo ju kam parë të tjerët, 22 00:01:04,700 --> 00:01:07,630 edhe në qoftë se ju nuk e kanë përdorur ato ende, si të marrë kohë të gjatë, të gjatë dhe si. 23 00:01:07,630 --> 00:01:09,380 Por mendoj se ne në të vërtetë duan të fillojnë 24 00:01:09,380 --> 00:01:12,760 shkrim programet që janë pak më të dhunti të shumta, dhe, sinqerisht, pak më shumë 25 00:01:12,760 --> 00:01:15,090 si komandat që ju keni qenë duke marrë, me shpresë, 26 00:01:15,090 --> 00:01:16,550 pak i mësuar me. 27 00:01:16,550 --> 00:01:18,560 Ashtu si hapësirë ​​cd Dropbox. 28 00:01:18,560 --> 00:01:20,800 Kjo, natyrisht, ndryshimet Lista tuaj, duke supozuar 29 00:01:20,800 --> 00:01:23,590 ju jeni në shtëpi John Harvardit directory, në dosjen tuaj Dropbox. 30 00:01:23,590 --> 00:01:27,380 Ndërkohë, një komandë si kjo krijon një directory të re të quajtur pset2, 31 00:01:27,380 --> 00:01:30,290 tashmë si ju mund të keni ose shpejt për problemin do të vendosur dy. 32 00:01:30,290 --> 00:01:33,970 Bëni Përshëndetje, sigurisht, është një komandë që ndërton një program të quajtur përshëndetje 33 00:01:33,970 --> 00:01:35,770 nga një skedar të quajtur përshëndetje dot c. 34 00:01:35,770 --> 00:01:39,140 Dhe në secilin prej këtyre raste, tani, ne kemi pasur 35 00:01:39,140 --> 00:01:43,620 sigurojnë një argument në të ashtuquajturat command line, keq të shpejtë, 36 00:01:43,620 --> 00:01:48,540 në mënyrë që të bëjë e di se çfarë për të ndërtuar, dhe kështu se mkdir di se çfarë dosje për të krijuar, 37 00:01:48,540 --> 00:01:51,110 dhe kështu që cd di ku ju doni të shkoni. 38 00:01:51,110 --> 00:01:54,720 Por deri tani, do të vazhdojmë duke thënë: që kryesor, funksioni juaj i parazgjedhur, 39 00:01:54,720 --> 00:01:58,500 ka një shprehje të pavlefshëm brenda këtyre kllapa, 40 00:01:58,500 --> 00:02:01,250 që do të thotë se ajo nuk mund të marrë argumente. 41 00:02:01,250 --> 00:02:03,240 >> Pra duke filluar nga sot, ajo që ne jemi duke shkuar për të bërë 42 00:02:03,240 --> 00:02:06,270 po, ne jemi duke shkuar për të filluar mbështetjen gjëra si kjo edhe. 43 00:02:06,270 --> 00:02:08,990 Në fakt, në këtë rast, të cilat ju mos zakonisht me dorë të tipit, 44 00:02:08,990 --> 00:02:11,130 Bëni ka bërë këtë për ne, nuk janë 45 00:02:11,130 --> 00:02:15,840 një por një, dy, tre shtesë vargjet pas programi të quajtur 46 00:02:15,840 --> 00:02:16,850 tingëllimë. 47 00:02:16,850 --> 00:02:18,240 Deri sa nuk kemi arritur këtë? 48 00:02:18,240 --> 00:02:20,260 >> E pra, duke filluar nga sot, në rastet kur ne duam 49 00:02:20,260 --> 00:02:22,855 për të siguruar të dhëna me anë të ashtuquajtura command line, 50 00:02:22,855 --> 00:02:24,980 ne jemi duke shkuar për të filluar duke shtuar këtu atë që në yellow-- 51 00:02:24,980 --> 00:02:30,520 zëvendësuar boshllëkun me int argc presje string argv kllapa hapur kllapa ngushtë. 52 00:02:30,520 --> 00:02:32,520 Tani kjo është interesante për disa arsye. 53 00:02:32,520 --> 00:02:35,690 Një, ajo do të na shkruani Programet që janë pak më dinamike. 54 00:02:35,690 --> 00:02:37,570 Por, më shumë imponuese, ajo do të hapë 55 00:02:37,570 --> 00:02:40,340 tani një bisedë si për çfarë vargjeve mund të vërtetë 56 00:02:40,340 --> 00:02:43,300 të përdoren, për atë që një varg me të vërtetë është nën kapuç, 57 00:02:43,300 --> 00:02:47,320 deri javën e ardhshme, kur ne fillojmë zhytjeje në edhe më thellë se si makinë është 58 00:02:47,320 --> 00:02:48,590 duke e bërë gjithë këtë punë sende. 59 00:02:48,590 --> 00:02:51,920 Por tani për tani, le të nxjerrë, ndoshta, një foto. 60 00:02:51,920 --> 00:02:54,950 >> Kur ju shkruani një program me kryesore deklaruar 61 00:02:54,950 --> 00:02:58,810 në këtë mënyrë, e tillë që kryesor merr dy argumente, një int 62 00:02:58,810 --> 00:03:03,233 and-- çfarë lloji të dhënave është argumenti i dytë? 63 00:03:03,233 --> 00:03:04,529 >> Audienca: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Pra, duket në shikim të parë si ajo e një string, por njoftim kllapa katrore. 66 00:03:09,170 --> 00:03:12,760 Kujtojnë herë të fundit kemi futur nocioni i një grup. 67 00:03:12,760 --> 00:03:16,210 Dhe vargjeve përdorin kllapa katrore në disa kontekste. 68 00:03:16,210 --> 00:03:19,160 Ju mund të përdorni sheshin kllapa për të shkuar në një grup 69 00:03:19,160 --> 00:03:22,710 dhe për të marrë një element të veçantë, si kllapa 0 ose 1 ose kllapa kllapa 2. 70 00:03:22,710 --> 00:03:25,500 Por ne pamë, nëse shkurtimisht, javën e kaluar se edhe ju 71 00:03:25,500 --> 00:03:28,790 përdorin këto kllapa katrore të deklarojnë madhësinë e një grup, 72 00:03:28,790 --> 00:03:31,790 në qoftë se ju e dini që më parë se sa Ints ose sa vargjet ose çdo gjë që 73 00:03:31,790 --> 00:03:32,630 në të vërtetë dëshironi. 74 00:03:32,630 --> 00:03:34,790 Pra, rezulton se ka një kontekst të tretë këtu 75 00:03:34,790 --> 00:03:37,890 që nuk ka numër brenda nga kllapa katrore. 76 00:03:37,890 --> 00:03:41,920 Kur ju të specifikojë, pasi unë kam këtu, Emri i diçka si argv, 77 00:03:41,920 --> 00:03:44,550 e cila është vetëm një mënyrë e sofistikuar për të duke thënë vektor argument, i cili 78 00:03:44,550 --> 00:03:47,750 është një tjetër mënyrë e sofistikuar për të duke thënë se një grup të argumenteve, 79 00:03:47,750 --> 00:03:50,870 kllapa e hapur kllapa ngushtë vetëm do të thotë se ju nuk e bëni domosdoshmërisht 80 00:03:50,870 --> 00:03:52,960 dini që më parë se sa i madh grup do të jetë, 81 00:03:52,960 --> 00:03:55,070 por ju e dini se do të jetë një grup. 82 00:03:55,070 --> 00:03:57,320 Pra, nëse ju nuk e dini numër nuk e vënë atë në atje, 83 00:03:57,320 --> 00:04:01,160 për parantezë parantezë të hapur të ngushtë do të thotë se argv nuk është një varg, 84 00:04:01,160 --> 00:04:03,124 por një grup i strings. 85 00:04:03,124 --> 00:04:05,040 Pra sintaksore, në qoftë se ju mendoj përsëri javën e kaluar, 86 00:04:05,040 --> 00:04:09,460 kjo është shumë e ngjashme me thënë diçka si int moshave kllapa e hapur, 87 00:04:09,460 --> 00:04:10,984 dhe pastaj diçka pas kësaj. 88 00:04:10,984 --> 00:04:12,150 Pra, çfarë e bën këtë të duket si? 89 00:04:12,150 --> 00:04:13,399 Le të vërtetë të nxjerrë një foto. 90 00:04:13,399 --> 00:04:18,756 Pra, kur ju të drejtuar këtë program me Qendrori ka dy argumente të përcaktuara brenda 91 00:04:18,756 --> 00:04:21,339 nga ato kllapa, ju në thelb kanë të paktën dy chunks 92 00:04:21,339 --> 00:04:23,560 e kujtesës dorëzuar për ju nën kapuç. 93 00:04:23,560 --> 00:04:26,550 Një, si unë do të tërheq si ky drejtkëndësh, do të quhet argc. 94 00:04:26,550 --> 00:04:30,645 Dhe vetëm si një radhitje të shpejtë, çfarë është lloji i të dhënave argc? 95 00:04:30,645 --> 00:04:31,270 Pra, kjo është një int. 96 00:04:31,270 --> 00:04:33,480 Pra, një numër që po ndodh për të shkuar në kthen argc-- 97 00:04:33,480 --> 00:04:35,660 se qëndron për numërimin e argumentit. 98 00:04:35,660 --> 00:04:38,887 Ndërkohë, unë kam tërhequr argv si një grup. 99 00:04:38,887 --> 00:04:40,970 Dhe unë vërtetë nuk e di sa kohë do të jetë, 100 00:04:40,970 --> 00:04:42,470 kështu që për qëllime të sotme dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Ajo mund të marrë nga ndonjë gjatësi. 102 00:04:43,636 --> 00:04:45,640 Por unë e kam foto këtu të paktën katër drejtkëndëshe. 103 00:04:45,640 --> 00:04:50,970 Pra argv një copë e kujtesës asaj dyqane string string string dot dot dot, 104 00:04:50,970 --> 00:04:53,950 dhe argc është vetëm një copë e kujtesës për një numër të plotë. 105 00:04:53,950 --> 00:04:55,710 >> Deri tani, le të jetë pak më të saktë. 106 00:04:55,710 --> 00:04:59,200 Nëse, kur unë kam strings në këtë grup, i quajtur 107 00:04:59,200 --> 00:05:03,290 argv, unë dua të të marrë me ta individualisht, ashtu si javën e kaluar, 108 00:05:03,290 --> 00:05:05,670 ne jemi duke shkuar për të përdorur simbol si argv kllapa 0 109 00:05:05,670 --> 00:05:07,650 për të marrë gjëja e parë që një grup. 110 00:05:07,650 --> 00:05:10,440 Argv kllapa 1 për të marrë Gjëja e dytë, e kështu me radhë. 111 00:05:10,440 --> 00:05:14,597 Kyçe këtu qenit ne jemi ende 0 indexed-- ne jemi ende duke numëruar nga 0. 112 00:05:14,597 --> 00:05:16,430 Pra, tani le të vërtetë vënë diçka në këtë. 113 00:05:16,430 --> 00:05:21,670 Nëse unë do të hartojë një program të quajtur përshëndetje nga një skedar të quajtur përshëndetje dot c, 114 00:05:21,670 --> 00:05:24,340 dhe pastaj unë të drejtuar këtë program me dot çaj hello, 115 00:05:24,340 --> 00:05:28,380 ajo që e bën kompjuterin, laptop tim tim, duken si nën kapuç 116 00:05:28,380 --> 00:05:31,300 Momenti I drejtuar dot pakësojë përshëndetje dhe hit Enter? 117 00:05:31,300 --> 00:05:33,500 E pra, kjo është ndoshta ajo që ne mund të përshkruajnë 118 00:05:33,500 --> 00:05:37,010 si përmbajtjen e kompjuterit tuaj kujtesës, ose RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Me fjalë të tjera, kompjuter, disi për ju magjike, 120 00:05:40,330 --> 00:05:45,360 vë numrin 1 në argc, AKA argcount, dhe kjo e vë fjalë për fjalë të vargut 121 00:05:45,360 --> 00:05:48,200 ./hello në argv kllapa 0. 122 00:05:48,200 --> 00:05:51,750 Unë nuk kam asnjë ide, sinqerisht, çfarë është në argv grupim 1 ose 2 ose 3, 123 00:05:51,750 --> 00:05:55,550 sepse në qoftë se përdoruesi nuk ka shtypur asgjë përveç ./hello, 124 00:05:55,550 --> 00:05:58,550 ne do të supozojmë se këto janë vlerat më të mundshme e plehrave, 125 00:05:58,550 --> 00:05:59,700 mënyrë që të flasin. 126 00:05:59,700 --> 00:06:02,650 Këto chunks e kujtesës ekzistojnë, por kjo nuk varet nga ne 127 00:06:02,650 --> 00:06:05,710 të shohin me ta, sepse argcount është vetëm një. 128 00:06:05,710 --> 00:06:07,870 >> Tani, ndërkohë, në qoftë se unë shkruaj drejtuar një program, 129 00:06:07,870 --> 00:06:12,250 cd, e cila është më e duhur një komandë, në ndriçon hapësirën prompt-- tuaj cd 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kur kam drejtuar që, në mënyrë efektive, kur programi cd është drejtuar, argc, 131 00:06:17,200 --> 00:06:22,270 brenda kujtesën e kompjuterit tim, është për më më të shkurtër e dytë numri 2. 132 00:06:22,270 --> 00:06:25,936 Dhe pastaj argv kllapa o ka cd, argv kllapa 1 ka Dropbox, 133 00:06:25,936 --> 00:06:28,560 dhe pastaj natyrisht komanda përfundon, kështu që të gjithë këtë kujtesës 134 00:06:28,560 --> 00:06:30,420 në thelb shkon larg dhe është përdorur për diçka tjetër. 135 00:06:30,420 --> 00:06:32,270 Dhe kjo është arsyeja pse unë them vetëm një ndarje të dytë. 136 00:06:32,270 --> 00:06:35,720 >> Ndërkohë, në qoftë se ne bëjmë mkdir pset2, foto duket pothuajse i njëjtë, 137 00:06:35,720 --> 00:06:37,900 por me vargjet e ndryshme brenda argv. 138 00:06:37,900 --> 00:06:42,570 Nëse unë bëj tingëllim dash përshëndetje përshëndetje dot c, të njëjtën ide. 139 00:06:42,570 --> 00:06:47,060 Më shumë gjëra është e mbushur në për argv, dhe argc, natyrisht, është 4. 140 00:06:47,060 --> 00:06:49,150 Pra, me fjalë të tjera, edhe pse këtë koleksion 141 00:06:49,150 --> 00:06:52,950 mund të jetë dot dot dot, e disa gjatësi variabile, si të thuash, 142 00:06:52,950 --> 00:06:56,720 ju gjithmonë e di se ku në fund të tij është, për shkak argc do të ju tregojnë se 143 00:06:56,720 --> 00:07:00,120 në atë pikë që ju keni për të ndaluar duke kërkuar në elemente në argv. 144 00:07:00,120 --> 00:07:03,660 Ju mund të shikoni vetëm në katër në total, në këtë rast. 145 00:07:03,660 --> 00:07:06,600 >> Pra, le të marrë tani një vështrim në, ndoshta, një program i thjeshtë. 146 00:07:06,600 --> 00:07:09,070 Një që vetëm të thotë përshëndetje për dikë si Zamyla. 147 00:07:09,070 --> 00:07:12,620 Kështu që unë pretendojnë që unë jam duke shkuar për të shkruar një program në vetëm një moment me anë të cilën unë mund të bëj 148 00:07:12,620 --> 00:07:16,670 ./hello hapësirë ​​Zamyla, dhe pastaj unë dua Programi im për të shtypur nga diçka 149 00:07:16,670 --> 00:07:18,520 super-thjeshtë si "Hello, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Tani në të kaluarën ne kemi përdorur getstring. 151 00:07:20,100 --> 00:07:22,850 Pra, në të kaluarën, edhe në qoftë se jeni të ri të programimit, 152 00:07:22,850 --> 00:07:27,180 shanset janë që ju mund të rrëmbej një program që përdor getstring 153 00:07:27,180 --> 00:07:29,390 dhe pastaj përdor printf për të thënë hi për Zamyla. 154 00:07:29,390 --> 00:07:31,290 Por le të mos e përdorin getstring këtë kohë. 155 00:07:31,290 --> 00:07:37,510 Më lejoni në vend të shkuar në Appliant dhe përfshijnë standarde unë o dot h. 156 00:07:37,510 --> 00:07:41,160 Më lejoni gjithashtu të përfshijë CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Tani int kryesore, dhe tani unë jam i nuk do të bëni pavlefshme sot. 158 00:07:44,730 --> 00:07:51,200 Në vend të kësaj, unë jam duke shkuar për të bërë int argc string argv kllapa hapur parantezë të ngushtë, 159 00:07:51,200 --> 00:07:52,640 nuk specifikon një numër. 160 00:07:52,640 --> 00:07:54,644 Dhe tani këtu është e mia të ashtu-quajtur për të bërë. 161 00:07:54,644 --> 00:07:57,560 Ajo që unë jam duke shkuar për të bërë tani është, unë jam duke shkuar për të bërë një grimë e një hap të besimit, 162 00:07:57,560 --> 00:08:00,560 Unë jam duke shkuar për të supozojmë se e përdoruesit do të përdorni këtë program të saktë, 163 00:08:00,560 --> 00:08:04,980 dhe unë jam thjesht duke shkuar për të bëjnë printf hello,% sn. 164 00:08:04,980 --> 00:08:06,630 Pra, asgjë të re atje. 165 00:08:06,630 --> 00:08:11,470 Por unë dua të tani të vënë çdo gjë fjala Llojet përdorues pas emrin e programit. 166 00:08:11,470 --> 00:08:16,970 Pra, në qoftë se bëj ./hello hapësirë ​​Zamyla, unë doni të disi programuar qasje 167 00:08:16,970 --> 00:08:20,870 citoj siç janë quajtur "Zamyla." kështu që unë mund të shkoni në vektor tim argumenti, 168 00:08:20,870 --> 00:08:25,980 array ime e vargjeve, dhe nëse komanda, përsëri, ishte ./hello hapësirë ​​Zamyla, 169 00:08:25,980 --> 00:08:29,340 atë numër nuk dua për të vënë në argv këtu? 170 00:08:29,340 --> 00:08:29,840 Audienca: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, sepse kllapa 0 rezulton 172 00:08:32,355 --> 00:08:34,230 do të jetë Emri i programit, siç e pamë. 173 00:08:34,230 --> 00:08:37,789 Pra kllapa 1 është fjala e parë që unë, përdoruesi, kanë shtypur. 174 00:08:37,789 --> 00:08:39,559 Unë jam duke shkuar për të shkuar përpara dhe për të shpëtuar këtë. 175 00:08:39,559 --> 00:08:42,830 Unë jam duke shkuar për të shkuar në dosjen time ku unë kam vendosur këtë fotografi. 176 00:08:42,830 --> 00:08:44,920 Unë jam duke shkuar për të bërë të bërë përshëndetje 3. 177 00:08:44,920 --> 00:08:46,230 OK comp io. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Çfarë të bëj gabim? 180 00:08:54,480 --> 00:08:57,270 Unë u kap në befasi veten për vetëm një moment atje. 181 00:08:57,270 --> 00:08:58,230 Çfarë të bëj gabim? 182 00:08:58,230 --> 00:08:59,220 >> Audienca: Emri. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: Dosja e quhet në të vërtetë hello3.c. 184 00:09:01,767 --> 00:09:03,850 Dhe unë e bëri që vetëm për qëndrueshmëri, sepse ne kemi 185 00:09:03,850 --> 00:09:06,550 kishin hello.c së në kaluara në kodin online. 186 00:09:06,550 --> 00:09:11,550 Pra, le të rregulluar këtë ./hello kllapa dash 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Shkruani. 188 00:09:12,370 --> 00:09:14,030 Dhe tani ne kemi hello, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Ndërkohë, unë mund të ndryshojë këtë për të të jetë Rob, apo me të vërtetë ndonjë fjalë tjetër. 190 00:09:17,650 --> 00:09:19,230 >> Por le të konsiderojmë një rast qoshe. 191 00:09:19,230 --> 00:09:24,360 Çfarë mund të prisni ju do të ndodhë nëse Unë nuk e shkruani emrin e askujt në të gjitha? 192 00:09:24,360 --> 00:09:25,270 >> Audienca: Gabim. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: Një gabim e disa lloj, ndoshta. 194 00:09:27,300 --> 00:09:28,200 Le të shohim. 195 00:09:28,200 --> 00:09:29,440 Shkruani. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Pra printf është në të vërtetë duke u një mbrojtës pak prej nesh 198 00:09:33,870 --> 00:09:38,131 këtu, dhe fjalë për fjalë shtypjen Paren hapura null, por gjërat edhe më keq mund të ndodhë. 199 00:09:38,131 --> 00:09:40,130 Dhe vetëm për të demonstruar diçka që ju absolutisht 200 00:09:40,130 --> 00:09:42,800 nuk duhet të bëjë, le të shkojë në këtu dhe të fillojnë poking rreth. 201 00:09:42,800 --> 00:09:43,300 E drejta? 202 00:09:43,300 --> 00:09:46,410 Në qoftë se unë e di se në foto memorie është në thelb kjo, 203 00:09:46,410 --> 00:09:52,660 argv kllapa 1 ka Zamyla, argv kllapa 0 ka ./hello, apo ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Ajo që është në kllapa 2? 205 00:09:55,400 --> 00:09:58,210 Kështu që unë mund të përgjigjem se pyetje veten time, apo jo? 206 00:09:58,210 --> 00:10:00,460 Unë vetëm mund të ndryshojë në 1 me një 2. 207 00:10:00,460 --> 00:10:07,270 Unë tani mund të recompile përshëndetje 3, ./hello3 Le të zoom në dhe hit Enter. 208 00:10:07,270 --> 00:10:08,270 Uh. 209 00:10:08,270 --> 00:10:10,660 Asnjë shenjë kuotë. 210 00:10:10,660 --> 00:10:12,540 Interesante. 211 00:10:12,540 --> 00:10:15,530 Pra, kjo është lloj i ftohtë, për të parë se çfarë tjetër është këtu. 212 00:10:15,530 --> 00:10:17,130 >> Pra, çfarë tjetër është brenda laptop tim? 213 00:10:17,130 --> 00:10:20,390 Le të shpëtuar atë me kllapa 3. 214 00:10:20,390 --> 00:10:25,190 Bëni hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Kurioz. 216 00:10:26,500 --> 00:10:30,560 Dhe tani le të marrë me të vërtetë bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Pra, kjo është me të vërtetë zhytje të thellë në kujtesë të kompjuterit tim. 218 00:10:34,340 --> 00:10:35,930 50 indekseve në. 219 00:10:35,930 --> 00:10:41,950 Pra, ti përshëndetje 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Kurioz. 221 00:10:42,680 --> 00:10:44,660 Në rregull, tani unë jam vetëm do të merrni pamatur. 222 00:10:44,660 --> 00:10:47,331 Le të shkojnë në 5,000. 223 00:10:47,331 --> 00:10:47,830 Të gjithë të drejtë. 224 00:10:47,830 --> 00:10:49,520 Pra më lejoni të përpiluar. 225 00:10:49,520 --> 00:10:51,460 Bëni 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 Tani disa prej jush, nuk mund të jetë një llambë të lehta plaste. 229 00:10:59,250 --> 00:11:01,900 Sa e keni parë këtë mesazh para? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Pra, pse? 232 00:11:04,420 --> 00:11:07,250 >> Mosmarrëveshje are-- dhe nuk ka ndryshe gjëra që mund të shkaktojnë këtë, 233 00:11:07,250 --> 00:11:09,730 dhe në mënyrë të qartë që ju jeni në të mirë company-- ne kemi në mënyrë të qartë 234 00:11:09,730 --> 00:11:11,900 shkaktuar atë që quhet një defekt segmentimit. 235 00:11:11,900 --> 00:11:15,890 Dhe histori të gjatë të shkurtër për sot, unë kanë prekur një segment të kujtesës 236 00:11:15,890 --> 00:11:17,060 se unë nuk duhet të ketë. 237 00:11:17,060 --> 00:11:19,970 Kur një segment do të thotë vetëm një copë të e kujtesës që unë nuk duhet të ketë. 238 00:11:19,970 --> 00:11:25,530 Tani kompjuteri garanton se në qoftë se unë drejtuar ./helloZamyla që unë mund të prek argv 239 00:11:25,530 --> 00:11:27,760 jetë kllapa 0 dhe argv kllapa 1. 240 00:11:27,760 --> 00:11:32,730 Por argc është vlera 2, që do të thotë unë jam vetëm allowed-- kjo është lloj i nderit 241 00:11:32,730 --> 00:11:35,180 system-- për të prekur kllapa 0 dhe kllapa 1. 242 00:11:35,180 --> 00:11:37,990 Nëse unë shkoj më larg, nuk ka absolutisht do të jetë kujtesë atje. 243 00:11:37,990 --> 00:11:40,660 RAM im ekziston fizikisht në kompjuter. 244 00:11:40,660 --> 00:11:42,080 Por kush e di se çfarë është atje? 245 00:11:42,080 --> 00:11:44,450 Në të vërtetë, Unë jam duke shumta programe në një kohë. 246 00:11:44,450 --> 00:11:46,910 Unë mund të ketë seen-- nëse unë nuk ishin duke bërë këtë në Appliant 247 00:11:46,910 --> 00:11:49,937 por në Mac tim ose PC-- unë mund të ketë parë përmbajtjen e një e-mail. 248 00:11:49,937 --> 00:11:52,270 Unë mund të keni parë një çast Mesazhi që unë kam dërguar kohët e fundit. 249 00:11:52,270 --> 00:11:55,390 Çdo gjë që mund të jetë vazhdueshme rreth në kujtesën 250 00:11:55,390 --> 00:11:59,180 do të mund të arrihen me anë të kjo arbitrare katror simbol kllapa. 251 00:11:59,180 --> 00:12:02,850 Ose, më keq akoma, ju mund të keni takoi një nga fjalëkalimet e mia 252 00:12:02,850 --> 00:12:05,859 që unë do të shtypur kohët e fundit në, se një Programi kishte ruajtur në kujtesë në mënyrë që 253 00:12:05,859 --> 00:12:07,900 të vërtetoj mua, dhe atëherë vetëm lloj i lënë 254 00:12:07,900 --> 00:12:09,910 në RAM deri sa unë të lë atë program. 255 00:12:09,910 --> 00:12:12,860 >> Dhe në të vërtetë, kjo është një nga rreziku dhe një fuqitë 256 00:12:12,860 --> 00:12:15,980 e duke përdorur një gjuhë si C. Ju keni qasje të lirë 257 00:12:15,980 --> 00:12:18,860 për të gjithë përmbajtjen e kujtesës së një programit, 258 00:12:18,860 --> 00:12:21,340 dhe çfarë liq mund edhe ne ato cases-- 259 00:12:21,340 --> 00:12:23,807 sidomos kur ne merrni në programimin e web 260 00:12:23,807 --> 00:12:26,890 drejt përfundimit të semestrit, ne do të sërish këtë topic-- është thes rreth, 261 00:12:26,890 --> 00:12:31,660 potencialisht, dikush e kompjuterit kujtesës dhe për të gjetur gjëra të tilla kurioz 262 00:12:31,660 --> 00:12:32,570 siç e pamë atje. 263 00:12:32,570 --> 00:12:36,900 Ose edhe më keq akoma, fjalëkalimet që ai ose ajo pastaj mund të përdorni për të bërë gjëra të këqija. 264 00:12:36,900 --> 00:12:40,240 >> Pra, në mënyrë të qartë që unë nuk duhet të ketë bërë këtë, sepse gjërat pazakontë të fillojë të ndodhë. 265 00:12:40,240 --> 00:12:42,310 Në të vërtetë, kjo është një zhurmë e program. 266 00:12:42,310 --> 00:12:44,580 Kjo do të ishte ekuivalente i Mac OS ose në Windows 267 00:12:44,580 --> 00:12:46,770 një dritare program vetëm zhduken. 268 00:12:46,770 --> 00:12:48,300 Një gabim i papritur ka ndodhur. 269 00:12:48,300 --> 00:12:50,840 Në mjedisin e linjës së komandës ne shohim diçka si kjo. 270 00:12:50,840 --> 00:12:54,480 Por, kjo është arsyeja pse, po unë jam thjesht duke prekur kujtesës që nuk i përket mua. 271 00:12:54,480 --> 00:12:57,090 >> Pra, le të mbrojtur kundër kësaj a pak në një mënyrë të ndryshme 272 00:12:57,090 --> 00:12:59,010 duke shikuar në këtë program këtu. 273 00:12:59,010 --> 00:13:01,000 Pra, përsëri, skelet që pamë earlier-- 274 00:13:01,000 --> 00:13:02,480 dhe unë e kam theksuar këtë kohë int. 275 00:13:02,480 --> 00:13:05,900 Dhe e gjithë kjo kohë kryesore ka vërtetë u kthye një vlerë. 276 00:13:05,900 --> 00:13:09,120 Edhe pse në shumicën e ligjëratës tonë shembuj ne kurrë nuk kam përdorur një herë 277 00:13:09,120 --> 00:13:10,990 asgjë në kryesore të kthehen. 278 00:13:10,990 --> 00:13:13,710 Ne vetëm të shkruani ngushtë printf mbajtëse kaçurrel dhe kjo është ajo. 279 00:13:13,710 --> 00:13:16,500 Por për të lira, çfarë përpilues qenë duke bërë për ju, 280 00:13:16,500 --> 00:13:19,510 mënyrë efektive, është kthyer 0 për ju. 281 00:13:19,510 --> 00:13:22,950 Turns out-- dhe kjo është pak counterintuitive-- se 0 është e mirë. 282 00:13:22,950 --> 00:13:24,690 Kjo nuk do të thotë të rreme në vetvete. 283 00:13:24,690 --> 00:13:29,080 0 është e mirë, dhe çdo jo-0 vlera, bota ka vendosur, 284 00:13:29,080 --> 00:13:30,619 mund të ditur një gabim. 285 00:13:30,619 --> 00:13:32,910 Pra, nëse ju keni messed ndonjëherë diçka deri në kompjuterin tuaj, 286 00:13:32,910 --> 00:13:36,600 ose një program ka vdekur vetëm për ju dhe ju keni marrë disa dritare të gabuar 287 00:13:36,600 --> 00:13:40,360 në ekranin tuaj, duke thënë gabim negative 49 apo gabim 23-- 288 00:13:40,360 --> 00:13:44,170 disa value-- dukje arbitrare që është sepse një programues ka vështirë-koduar 289 00:13:44,170 --> 00:13:49,370 një vlerë negative si 49 apo pozitiv 23 të përfaqësojnë ndonjë numër, guxoj të them, 290 00:13:49,370 --> 00:13:53,340 nga 4 miliardë gjërat e mundshme që mund të shkojnë keq në një program. 291 00:13:53,340 --> 00:13:55,700 >> Pra, si mund unë të marrë Avantazhi i kësaj veten time? 292 00:13:55,700 --> 00:13:58,970 E pra, më lejoni të hapur një program që kam shkruar më parë, 293 00:13:58,970 --> 00:14:01,450 dhe thes rreth në internet e quajtur Përshëndetje 4. 294 00:14:01,450 --> 00:14:05,650 Dhe kjo është pothuajse identike, përveç se e saj mori një pak e kontrollit të gabimeve. 295 00:14:05,650 --> 00:14:09,660 Në këtë rast, unë kam deklaruar sërish kryesore si duke marrë dy argumente, 296 00:14:09,660 --> 00:14:13,180 por këtë herë, on line 17, njoftim Unë jam duke bërë një grimë e një kontroll mendje e shëndoshë. 297 00:14:13,180 --> 00:14:17,100 Unë jam duke e bërë të sigurtë që argc barabartë është e barabartë me 2. 298 00:14:17,100 --> 00:14:18,960 Sepse në qoftë se ajo është, se do të thotë unë mund të sigurtë të 299 00:14:18,960 --> 00:14:21,420 prek jo vetëm kllapa 0, por kllapa 1. 300 00:14:21,420 --> 00:14:24,330 Dhe unë të shkojnë përpara dhe të shtypura nga, në këtë rast, Zamyla ose Rob 301 00:14:24,330 --> 00:14:26,020 apo çfarëdo fjalë i shtypur jashtë. 302 00:14:26,020 --> 00:14:28,020 Dhe tani vetëm për të marrë pak më të duhur, 303 00:14:28,020 --> 00:14:31,910 Unë jam duke shkuar për të kthyer në mënyrë të qartë 0 për të ditur të gjithë është i mirë. 304 00:14:31,910 --> 00:14:33,300 Asgjë nuk ka ndodhur e keqe. 305 00:14:33,300 --> 00:14:38,590 >> Por nga konventë, unë jam duke shkuar për të kthehen 1, apo sinqerisht çdo jo-0 vlera, 306 00:14:38,590 --> 00:14:40,160 nëse diçka shkoi keq. 307 00:14:40,160 --> 00:14:43,270 Tani përdoruesit nuk do të me të vërtetë vini re se çfarë po ndodh. 308 00:14:43,270 --> 00:14:50,410 Në të vërtetë, nëse unë shkoj në këtë directory, ne zoom në dhe të bëjnë përshëndetje 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla sillet si unë pres. 310 00:14:54,210 --> 00:14:58,570 Por në qoftë se unë në vend që nuk e tipit çdo gjë, asgjë nuk duket të ndodhë, 311 00:14:58,570 --> 00:14:59,680 por kjo nuk ka përplasje. 312 00:14:59,680 --> 00:15:04,660 Dhe në qoftë se unë në vend që të bëjë diçka si Rob është një kujdestar 313 00:15:04,660 --> 00:15:07,550 në ndarjen Thayer-- Informata arbitrare. 314 00:15:07,550 --> 00:15:13,680 Por njoftimi, argv 1, 2, 3, 4, dhe 5 tani duhet të ekzistojnë në memorie. 315 00:15:13,680 --> 00:15:16,540 Kjo, gjithashtu, nuk është çfarë programi im pret, 316 00:15:16,540 --> 00:15:20,300 sepse unë kam kontrolluar nëse argc barabartë është e barabartë me 2 ose jo. 317 00:15:20,300 --> 00:15:22,140 Kështu që unë jam tani mbrojtur kundër kësaj. 318 00:15:22,140 --> 00:15:25,290 >> Tani, si një mënjanë, ne programmer-- ose më mirë ne users-- 319 00:15:25,290 --> 00:15:29,670 kurrë nuk e shihni se 0 ose 1, por duke përdorur një mjet i quajtur Debugger, apo mjete të tjera, 320 00:15:29,670 --> 00:15:32,250 si ne do të shohim përpara të gjatë, ju programues 321 00:15:32,250 --> 00:15:36,590 fakt mund të shihni se çfarë mund të jetë do të gabuar brenda programit tuaj. 322 00:15:36,590 --> 00:15:39,170 >> Pra, ndonjë pyetje në argc? 323 00:15:39,170 --> 00:15:40,873 Po. 324 00:15:40,873 --> 00:15:45,292 >> Audienca: Unë e kam parë ku ata nuk kanë pasur karakterin, [e padëgjueshme] 325 00:15:45,292 --> 00:15:49,669 vetëm tha yll varg d, si karakter yll presje. 326 00:15:49,669 --> 00:15:50,710 A janë ata të barabartë këtu? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Ata janë. 328 00:15:51,626 --> 00:15:55,080 Pra, pyetja është, ju keni Programet e parë herë pas here 329 00:15:55,080 --> 00:15:57,270 si kjo që nuk bëjnë thonë string argv kllapa 330 00:15:57,270 --> 00:16:01,015 por në vend të thonë diçka si char yll argv kllapa. 331 00:16:01,015 --> 00:16:03,140 Dhe ka edhe të tjera variante që ju mund të shihni. 332 00:16:03,140 --> 00:16:04,264 Ata janë me të vërtetë ekuivalente. 333 00:16:04,264 --> 00:16:06,240 Tani për tani, ne kemi këto lloj të rrotave të trajnimit 334 00:16:06,240 --> 00:16:09,737 on në formën e vargut në CS50 bibliotekë, por në pak më shumë se një jave 335 00:16:09,737 --> 00:16:12,570 ose kështu që ne jemi duke shkuar për të hequr se pengesë krejt e vërtetë 336 00:16:12,570 --> 00:16:16,820 Shikoni çfarë char dhe ylli janë, dhe se si ata i përkasin kujtesës 337 00:16:16,820 --> 00:16:18,140 Përfaqësimi në përgjithësi. 338 00:16:18,140 --> 00:16:19,540 Pra, ne do të kthehen me atë. 339 00:16:19,540 --> 00:16:21,540 >> Pyetje të tjera në argv tona ose argc? 340 00:16:21,540 --> 00:16:22,397 Po. 341 00:16:22,397 --> 00:16:24,438 Audienca: Pse e bëri atë të kthehet një gabim [padëgjueshme]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Pse e bëri atë kthehet një gabim only-- oh! 344 00:16:29,230 --> 00:16:31,813 Në rastin e mëparshëm, kur ne u futzing rreth me kujtesën, 345 00:16:31,813 --> 00:16:35,110 pse e bëri atë vetëm të kthehet një gabim kur unë me të vërtetë shtypur një numër të madh? 346 00:16:35,110 --> 00:16:36,620 Përgjigja e shkurtër është, ne e mori vetëm fat. 347 00:16:36,620 --> 00:16:39,240 Në përgjithësi, një kompjuter ndan kujtesës në chunks, 348 00:16:39,240 --> 00:16:42,900 dhe ai më dha një copë të madhe të mjaftueshme që I kam larg, pa u vënë re, 349 00:16:42,900 --> 00:16:46,280 i kllapa prekur 2, 3 kllapa, kllapa 50, por sa më shpejt që kam shtyrë 350 00:16:46,280 --> 00:16:49,080 fat e mi, unë shkova përtej Kufijtë e copë e kujtesës 351 00:16:49,080 --> 00:16:50,520 sistemi operativ i kishte dhënë. 352 00:16:50,520 --> 00:16:52,720 Dhe se kur ajo clamped poshtë dhe tha, jo. 353 00:16:52,720 --> 00:16:54,580 Gabim segmentimit. 354 00:16:54,580 --> 00:16:55,692 Po. 355 00:16:55,692 --> 00:16:58,890 >> Audienca: Si kompjuter di vlerën e argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Si kompjuter e di vlerën e argc? 357 00:17:02,390 --> 00:17:07,920 Kur ju drejtuar një program, se programi, nga natyra e ndriçon, e shpejtë, 358 00:17:07,920 --> 00:17:11,359 është dorëzoi sërë fjalët që ishin shtypur 359 00:17:11,359 --> 00:17:13,300 në të shpejtë, që ishte shtypur në ftim. 360 00:17:13,300 --> 00:17:16,569 Dhe kështu kjo është operativ juaj sistem që në thelb 361 00:17:16,569 --> 00:17:20,329 populates argumentet kryesore për ju. 362 00:17:20,329 --> 00:17:22,829 Pra, kjo është një nga shërbimet që ju të merrni, lloj fshehurazi 363 00:17:22,829 --> 00:17:24,869 nën kapuç e një sistem operativ. 364 00:17:24,869 --> 00:17:27,118 Pyetje të tjera? 365 00:17:27,118 --> 00:17:27,618 Po. 366 00:17:27,618 --> 00:17:29,787 >> Audienca: Çfarë do të thotë thelbi hale? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Çfarë do të thotë thelbi hale? 368 00:17:31,370 --> 00:17:32,950 Pra, kjo është një pyetje e mirë. 369 00:17:32,950 --> 00:17:35,312 Dhe më lejoni të kthehem në kjo dosje këtu. 370 00:17:35,312 --> 00:17:37,270 Dhe ju do të vëreni se Unë kam një fotografi të re atje. 371 00:17:37,270 --> 00:17:41,670 Është quajtur me të vërtetë thelbësore, dhe kjo është në fakt zakonisht një fotografi të mirë-sized. 372 00:17:41,670 --> 00:17:45,300 Kjo është në thelb një fotografi e përmbajtja e kujtesës programit tim 373 00:17:45,300 --> 00:17:46,902 ose RAM kur ajo u rrëzua. 374 00:17:46,902 --> 00:17:49,110 Dhe kjo do të jetë e dobishme, potencialisht, diagnostikuese, 375 00:17:49,110 --> 00:17:52,850 herë ne flasim në një leksion të ardhmen dhe seksioni për debugging, 376 00:17:52,850 --> 00:17:55,730 sepse në të vërtetë ju mund të bëni ekuivalent i një autopsi dixhitale 377 00:17:55,730 --> 00:18:00,300 në këtë dosje për të ndihmuar të kuptoj se çfarë keni bërë gabim në programin tuaj. 378 00:18:00,300 --> 00:18:01,220 Po. 379 00:18:01,220 --> 00:18:04,450 >> Audienca: A argc një komandë në vetë, ose mund të ju emrin ndonjë gjë? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Pyetje e mirë. 381 00:18:05,575 --> 00:18:08,040 A është argc një komandë në vetvete, ose mund të ju atë emër ndonjë gjë? 382 00:18:08,040 --> 00:18:09,290 Kjo nuk është patjetër një komandë. 383 00:18:09,290 --> 00:18:13,500 Është thjesht një variabël të emrin ose emrin e një argument s, 384 00:18:13,500 --> 00:18:15,481 dhe kështu absolutisht ne mund të quajmë këtë foo, 385 00:18:15,481 --> 00:18:18,480 ne mund të quajmë këtë bar, të cilat kanë tendencë të jetë go-për të fjalëve që një kompjuter 386 00:18:18,480 --> 00:18:19,860 shkencëtar shkon për të. 387 00:18:19,860 --> 00:18:22,820 Por nga konventa, ne përdorim argc dhe argv. 388 00:18:22,820 --> 00:18:25,360 Por kjo është vetëm një njeri konventë, asgjë më shumë. 389 00:18:25,360 --> 00:18:25,860 Të gjithë të drejtë. 390 00:18:25,860 --> 00:18:28,140 Pra rezulton, unë kam qenë thënë pak e një lie-- bardhë 391 00:18:28,140 --> 00:18:31,264 dhe sinqerisht, në të ardhmen, ju do të shihni ne kemi qenë të thënë gënjeshtra të tjera të bardhë. 392 00:18:31,264 --> 00:18:33,510 Por tani për tani, ne jemi duke shkuar të zhvishem përsëri një nga këto. 393 00:18:33,510 --> 00:18:37,310 Në këtë rast këtu kur kam parë u zhvillua një program si ./hello ose ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, kemi pasur përmbajtjen e mia memorie kompjuterit kërkim afërsisht si 395 00:18:42,780 --> 00:18:43,280 këtë. 396 00:18:43,280 --> 00:18:45,070 Por kujtojnë çfarë një varg është. 397 00:18:45,070 --> 00:18:49,279 Çfarë të themi para një jave atë që një string në fakt është nën kapuç? 398 00:18:49,279 --> 00:18:50,320 Audienca: Array e karaktere. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Kjo është një array e karaktere, e drejtë? 400 00:18:52,111 --> 00:18:55,760 Pra, ne mund të kemi një rrjet të vargjet, por, nga ana tjetër, një varg 401 00:18:55,760 --> 00:18:57,150 është një grup të karaktereve. 402 00:18:57,150 --> 00:19:00,010 Pra, nëse unë me të vërtetë duan të jenë të anal kur kam nxjerrë këtë foto, 403 00:19:00,010 --> 00:19:03,290 Unë duhet të vërtetë të tërhequr atë një pak më shumë si kjo, 404 00:19:03,290 --> 00:19:08,000 ku në secilën nga këto Indekset e array tim argv, 405 00:19:08,000 --> 00:19:11,432 ka në vetvete një varg të tërë që vetë është në një grup. 406 00:19:11,432 --> 00:19:13,140 Dhe tani gënjeshtër e bardhë ne jemi duke u thënë sot 407 00:19:13,140 --> 00:19:15,181 është se foto nuk ka duken krejt si kjo. 408 00:19:15,181 --> 00:19:19,110 Në fakt, sheshet e vogla janë zakonisht jashtë rectangles të mëdha 409 00:19:19,110 --> 00:19:19,610 atje. 410 00:19:19,610 --> 00:19:21,280 Por ne do të kthehen me atë para se të gjatë. 411 00:19:21,280 --> 00:19:25,440 Por kjo është ./hello backslash 0, se të jesh karakteri të veçantë që 412 00:19:25,440 --> 00:19:28,310 shënon fundin e një varg, dhe ne kemi marrë një tjetër pas 413 00:19:28,310 --> 00:19:29,360 Emri Zamyla-së. 414 00:19:29,360 --> 00:19:30,900 Pra, çfarë do të thotë kjo? 415 00:19:30,900 --> 00:19:33,410 >> E pra, më lejoni të shkoj përpara dhe të hapur dy shembuj të tjerë 416 00:19:33,410 --> 00:19:35,220 që janë në dispozicion online. 417 00:19:35,220 --> 00:19:40,590 Njëri është quajtur argv1.c dhe tjetri është argv2. 418 00:19:40,590 --> 00:19:44,260 Është një program super-thjeshtë që është i ndryshëm nga programet kaluara 419 00:19:44,260 --> 00:19:47,260 në se tani unë jam duke përdorur argc dhe argv deri këtu. 420 00:19:47,260 --> 00:19:54,300 Dhe tani unë jam duke integruar me një për lak në linjë 18, nga i = 0 në deri në argc. 421 00:19:54,300 --> 00:19:56,850 Dhe ajo që unë jam duke shkuar për të bërë me këtë linjë të kodit këtu? 422 00:19:56,850 --> 00:19:58,270 Në anglisht. 423 00:19:58,270 --> 00:20:00,510 Kjo padyshim tregon përdorimin e argc. 424 00:20:00,510 --> 00:20:03,670 Por në anglisht, ajo që e bën të bëjë nëse unë të drejtuar këtë program? 425 00:20:03,670 --> 00:20:04,366 Po? 426 00:20:04,366 --> 00:20:07,386 >> Audienca: Ajo do të shtypura tuaj ekran sa herë të doni. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Pikërisht. 428 00:20:08,260 --> 00:20:10,480 Pra, çfarëdo fjalë I shkruani në ftim, është e 429 00:20:10,480 --> 00:20:13,120 do të derdh mbrapa ata në mua një për rresht. 430 00:20:13,120 --> 00:20:14,370 Pra, le të shkojnë përpara dhe të bëjë këtë. 431 00:20:14,370 --> 00:20:17,862 Më lejoni të shkoj në directory time dhe të bëjë të bëjë ./argv1 argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Dhe tani, le të mbani të thjeshtë. 434 00:20:21,770 --> 00:20:23,834 Le të bëjë asgjë në të parë. 435 00:20:23,834 --> 00:20:26,750 Ajo e bëri të shtypura nga një gjë, dhe kjo është me të vërtetë emri i programit, 436 00:20:26,750 --> 00:20:28,240 sepse kjo është në kllapa 0. 437 00:20:28,240 --> 00:20:33,290 Nëse unë tani them foo, ajo do të bëjë ata të dy, dhe në qoftë se unë them bar foo, 438 00:20:33,290 --> 00:20:35,580 ajo do të thonë këto tri gjëra. 439 00:20:35,580 --> 00:20:37,740 Tani që është disi interesante, ndoshta. 440 00:20:37,740 --> 00:20:41,450 Por kujtojmë se argv është një grup i strings, 441 00:20:41,450 --> 00:20:45,960 por një varg është një grup i karaktere, kështu që ne mund të marrë gjërat një nivel 442 00:20:45,960 --> 00:20:48,560 dhe të aplikojnë që themelore Logjika dhe të bëjë kodin që 443 00:20:48,560 --> 00:20:51,160 duket pak më i fshehtë, pa dyshim. 444 00:20:51,160 --> 00:20:53,540 Por duke pasur një mbivendosur loop, diçka e ngjashme 445 00:20:53,540 --> 00:20:57,030 me atë që ju mund të kujtojnë nga Mario, për shembull, në qoftë se ju e bëri atë në këtë mënyrë. 446 00:20:57,030 --> 00:21:00,380 >> Deri tani vini re on line 19, unë jam përsëri iterating mbi argumentet e mia, 447 00:21:00,380 --> 00:21:02,410 nga 0 deri ne argc. 448 00:21:02,410 --> 00:21:05,510 Dhe tani në linjë 21-- unë jam huamarrjes një mashtrim nga week-- fundit 449 00:21:05,510 --> 00:21:11,090 Unë jam duke kontrolluar se çfarë është Gjatësia e kllapa argv i. 450 00:21:11,090 --> 00:21:12,920 Unë jam klasifikoni përgjigje në n. 451 00:21:12,920 --> 00:21:18,230 Dhe atëherë unë jam i integruar nga j në deri n, ku J është nisur në 0. 452 00:21:18,230 --> 00:21:19,460 Pra, Konventa për numërim. 453 00:21:19,460 --> 00:21:22,335 Pasi të keni përdorur i, në qoftë se ju keni një loop mbivendosur, ju nuk mund të përdorni i përsëri, 454 00:21:22,335 --> 00:21:25,770 përndryshe ju do të plaçkë, potencialisht, vlera jashtë lak brendshme. 455 00:21:25,770 --> 00:21:27,200 Kështu që unë jam duke përdorur j nga konventa. 456 00:21:27,200 --> 00:21:28,020 Ne mund të përdorin k. 457 00:21:28,020 --> 00:21:31,080 Nëse ju keni më shumë se k, ju ndoshta kanë shumë shkatërroj fole, zakonisht. 458 00:21:31,080 --> 00:21:33,800 Por tani, vini re printf tim Linja është paksa e ndryshme. 459 00:21:33,800 --> 00:21:37,520 Unë nuk jam shtypjen% s, unë jam shtypjen% c, e cila, natyrisht, 460 00:21:37,520 --> 00:21:39,460 është një placeholder për një char. 461 00:21:39,460 --> 00:21:40,770 >> Dhe tani vini re këtë sintaksë. 462 00:21:40,770 --> 00:21:41,270 Re. 463 00:21:41,270 --> 00:21:42,630 Ne nuk e kemi parë atë më parë. 464 00:21:42,630 --> 00:21:47,290 Por logjikisht, kjo thjesht do të thotë merrni string me shërbimin në argv 465 00:21:47,290 --> 00:21:50,067 dhe për të marrë jth çfarë? 466 00:21:50,067 --> 00:21:50,900 Audienca: Karakteri. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Karakteri në atë varg. 468 00:21:52,800 --> 00:21:57,100 Pra, duke përdorur kllapa katrore ndjekur nga kllapa katrore, 469 00:21:57,100 --> 00:22:00,390 kjo është zhytja e parë në vargjet argv-së, 470 00:22:00,390 --> 00:22:02,225 dhe pastaj dytë kllapa katrore me j 471 00:22:02,225 --> 00:22:06,580 është zhytja në personazhet e që string veçantë në argv. 472 00:22:06,580 --> 00:22:09,562 Dhe pastaj, vetëm për masë të mirë, Unë jam shtypjen e një linjë të re këtu. 473 00:22:09,562 --> 00:22:12,020 Deri tani më lejoni të shkoj përpara dhe të hapur up një dritare paksa më të madh 474 00:22:12,020 --> 00:22:13,600 kështu që ne mund të shohim këtë në veprim. 475 00:22:13,600 --> 00:22:15,700 Më lejoni të shkoj në atë dosje. 476 00:22:15,700 --> 00:22:22,550 Dhe tani do të bëjë argv-2-- whoops-- bëjnë argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Shkruani. 478 00:22:23,110 --> 00:22:24,860 Dhe kjo është një e vështirë pak për të lexuar vertikalisht, 479 00:22:24,860 --> 00:22:27,920 por kjo është me të vërtetë emri i program, e ndjekur nga një linjë bosh. 480 00:22:27,920 --> 00:22:30,210 Tani më lejoni të shkoj përpara dhe të bëjë foo. 481 00:22:30,210 --> 00:22:33,210 Në mënyrë të ngjashme e vështirë të lexohen, por është e vërtetë shtypjen një karakter për linjë. 482 00:22:33,210 --> 00:22:36,780 Dhe në qoftë se unë bëj bar, kjo është tani shtypjen ato rresht pas rreshti. 483 00:22:36,780 --> 00:22:40,140 Pra takeaway këtu nuk është aq shumë që, wow, shikoni në këtë mashtrim i zoti të ri 484 00:22:40,140 --> 00:22:44,750 ku ju mund të merrni në përmbajtjen e karaktereve të veçanta një grup-së, 485 00:22:44,750 --> 00:22:48,380 por më tepër se si ne jemi duke marrë këto themelore Idetë si indeksim në një grup, 486 00:22:48,380 --> 00:22:51,620 dhe pastaj indeksimin në një array që ishte në atë grup, 487 00:22:51,620 --> 00:22:56,180 dhe vetëm duke aplikuar të njëjtat ide të shembuj pak më të sofistikuara. 488 00:22:56,180 --> 00:22:59,560 Por bazat me të vërtetë nuk kanë ndryshuar, madje edhe pasi që javën e kaluar. 489 00:22:59,560 --> 00:23:02,350 >> Tani kjo është lloj i në kohë, ajo qe, mend, në javë zero 490 00:23:02,350 --> 00:23:04,110 ne kemi luajtur me një libër telefoni si kjo. 491 00:23:04,110 --> 00:23:06,670 Dhe, edhe pse kjo është e qartë copa fizike të letrës, 492 00:23:06,670 --> 00:23:09,150 ju mund të lloj të mendojnë për një libër telefon si një grup. 493 00:23:09,150 --> 00:23:12,770 Sigurisht, në qoftë se keni qenë për të reimplement kjo pjesë këto copa letre 494 00:23:12,770 --> 00:23:15,260 në një kompjuter, ndoshta ju do të përdorni diçka 495 00:23:15,260 --> 00:23:20,270 si një grup për të ruajtur të gjithë ata emrat dhe numrat nga një të gjithë rrugën 496 00:23:20,270 --> 00:23:23,800 përmes Z. Pra, kjo është e bukur, sepse kjo na lejon një mundësi, 497 00:23:23,800 --> 00:23:28,310 ndoshta, të marrin në konsideratë se si ju mund të edhe të implementojë diçka të tillë. 498 00:23:28,310 --> 00:23:31,250 Si me një seri të dyerve këtu. 499 00:23:31,250 --> 00:23:36,380 Pra, nëse unë could-- ne kemi nevojë për një të tillë vullnetarë të ardhur në dorë. 500 00:23:36,380 --> 00:23:36,980 Le të shohim. 501 00:23:36,980 --> 00:23:40,650 Një fytyrë të panjohura ndoshta, fytyra të panjohura ndoshta. 502 00:23:40,650 --> 00:23:42,090 Si për në portokalli? 503 00:23:42,090 --> 00:23:42,680 Këtu. 504 00:23:42,680 --> 00:23:45,870 Shirt Orange, eja lart. 505 00:23:45,870 --> 00:23:52,230 >> Le të shkojmë përpara tani dhe veprim këto dyer mbi në anën, 506 00:23:52,230 --> 00:23:54,020 lëvizin këto nga rruga për një moment. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Si e keni emrin? 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 Gëzohem që u njohëm. 513 00:23:59,451 --> 00:23:59,950 Të gjithë të drejtë. 514 00:23:59,950 --> 00:24:04,500 Pra, ne kemi pas këtyre gjashtë dyert digjitale në screen-- 515 00:24:04,500 --> 00:24:07,810 ose, në vend, shtatë dyert në screen-- një bandë e tërë e numrave. 516 00:24:07,810 --> 00:24:10,099 Dhe unë e kam thënë ju asgjë në pajtua advance--? 517 00:24:10,099 --> 00:24:11,140 AJAY: Asgjë paraprakisht. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Të gjitha unë dua që ju të bëni tani është për të gjetur për mua, dhe për ne, 519 00:24:14,730 --> 00:24:20,920 me të vërtetë, numri 50, një hap në një kohë. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Numri 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: Numri 50. 522 00:24:22,580 --> 00:24:24,746 Dhe ju mund të zbulojë se çfarë është pas secili prej këtyre dyerve 523 00:24:24,746 --> 00:24:27,930 thjesht duke prekur atë me një gisht. 524 00:24:27,930 --> 00:24:31,364 Damn atë. [Qeshura] 525 00:24:31,364 --> 00:24:34,560 >> [Duartrokitje] 526 00:24:34,560 --> 00:24:39,540 >> Bërë shumë mirë. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Ne kemi një dhuratë të bukur Çmimi për ju këtu. 529 00:24:44,090 --> 00:24:46,520 Marr tuaj filmave ne diskutuar javën e kaluar. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Oh, njeri. 531 00:24:47,362 --> 00:24:49,050 Oh, unë kurrë nuk kam parë Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Të gjithë të drejtë. 534 00:24:50,140 --> 00:24:53,790 Pra, të mbajë në vetëm një moment. 535 00:24:53,790 --> 00:24:57,430 How-- le të bëjmë këtë një moment-- aftë për shkollë 536 00:24:57,430 --> 00:25:00,412 si e keni shkoni në lidhje me gjetja e numrit 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Unë zgjodha rastësisht. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Pra keni zgjedhur rastësisht dhe mori me fat. 539 00:25:03,420 --> 00:25:03,790 AJAY: Po. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Excellent. 542 00:25:05,050 --> 00:25:08,470 Deri tani, kishte ju nuk marrë me fat, çfarë tjetër 543 00:25:08,470 --> 00:25:10,210 mund të ketë ndodhur pas këtyre dyerve? 544 00:25:10,210 --> 00:25:12,930 Pra, nëse unë shkoj përpara dhe të zbulojnë këto numra këtu, 545 00:25:12,930 --> 00:25:15,180 ata në të vërtetë janë në mënyrë të rastit. 546 00:25:15,180 --> 00:25:17,750 Dhe më të mirë që ju mund të ketë bërë, sinqerisht, është nga, në fund të fundit, 547 00:25:17,750 --> 00:25:19,410 në rastin më të keq, duke kontrolluar të gjithë. 548 00:25:19,410 --> 00:25:23,000 Kështu që ju mori super-fat, e cila nuk është ajo që ne do të thërrasë një algoritmi. 549 00:25:23,000 --> 00:25:24,730 Po, Congrats. 550 00:25:24,730 --> 00:25:27,010 Por tani let's-- Humor mua, nëse ju mund të. 551 00:25:27,010 --> 00:25:28,310 Le të shkojnë në këtë tab këtu. 552 00:25:28,310 --> 00:25:31,460 Dhe këtu janë numrat në mënyrë të qartë atë që duket të jetë një mënyrë të rastit, 553 00:25:31,460 --> 00:25:32,280 dhe ata ishin. 554 00:25:32,280 --> 00:25:35,160 Por tani në qoftë se unë në vend pretendim se pas këtyre dyerve 555 00:25:35,160 --> 00:25:39,070 janë numra që janë të renditura. 556 00:25:39,070 --> 00:25:41,780 Tani qëllimi është edhe na gjeni numrin 50. 557 00:25:41,780 --> 00:25:45,910 Por të bëjë atë algorithmically, dhe na tregoni se si ju jeni duke shkuar për të. 558 00:25:45,910 --> 00:25:48,020 Dhe në qoftë se ju të gjeni atë, ju mbani filmin. 559 00:25:48,020 --> 00:25:49,520 Ju nuk e gjeni atë, ju jepni atë. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Kështu që unë jam duke shkuar për të kontrolluar skajet së pari, për të përcaktuar nëse there's-- 562 00:25:58,112 --> 00:26:02,048 [Qeshura dhe duartrokitje] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Këtu ju shkoni. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Le të bëjmë një vështrim në një nga paraardhësit e Ajay, 567 00:26:21,700 --> 00:26:25,450 Sean, i cili nuk ishte mjaft si fat. 568 00:26:25,450 --> 00:26:28,670 OK, kështu detyrën tuaj këtu, Sean, është në vijim. 569 00:26:28,670 --> 00:26:32,970 Unë kam fshehur pas këto dyert numri shtatë, 570 00:26:32,970 --> 00:26:37,200 por tucked larg në disa nga këto dyer si dhe një numër të tjera jo-negative. 571 00:26:37,200 --> 00:26:40,730 Dhe qëllimi juaj është që të mendojnë për këtë rresht i lartë i numrave si vetëm një grup. 572 00:26:40,730 --> 00:26:43,590 Ne jemi vetëm një sekuencë e copa letër me numra pas tyre. 573 00:26:43,590 --> 00:26:47,640 Dhe qëllimi juaj është, vetëm duke përdorur të lartë array këtu, të gjetur me numrin shtatë. 574 00:26:47,640 --> 00:26:51,200 Dhe atëherë ne jemi duke shkuar për të kritikuar se si ju shkoni për të bërë atë. 575 00:26:51,200 --> 00:26:52,920 Na gjeni numrin shtatë, ju lutem. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Nr 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 Kjo nuk është një pyetje mashtrim. 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 Në këtë pikë Rezultati juaj nuk është shumë e e mirë, kështu që ju mund edhe të mbajë. 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 Shkoni në. 590 00:27:39,802 --> 00:27:42,510 Sinqerisht, unë nuk mund të ndihmojnë por pyes veten çfarë jeni duke menduar për. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Unë mund të marrë nga vetëm rreshtin e lartë. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Vetëm në radhën e lartë. 593 00:27:46,240 --> 00:27:47,281 Pra, ju keni marrë tre majtë. 594 00:27:47,281 --> 00:27:48,310 Pra gjeni më 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Audienca Thirrjet PROPOZIME] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Pra, të dy ata ishin të mahnitshme për arsye shumë të ndryshme. 599 00:28:26,130 --> 00:28:29,150 Pra, kjo është ajo ku ne lënë jashtë një moment më parë, 600 00:28:29,150 --> 00:28:32,530 dhe depërtim kyç këtu ishte këto dyer kishte numrat 601 00:28:32,530 --> 00:28:37,390 pas tyre që ishin të renditura, ideal takeaway për të cilat është që ju mund të bëni 602 00:28:37,390 --> 00:28:39,670 krejtësisht më të mirë në kjo example-- dytë 603 00:28:39,670 --> 00:28:42,380 dhe, në të vërtetë, kjo ishte Sean së përpjekja e parë me numra të rastit 604 00:28:42,380 --> 00:28:45,460 po aq before-- por sa më shpejt pasi këto numra janë të renditura, 605 00:28:45,460 --> 00:28:47,980 shumë si librin e telefonit, çfarë mund të bëni të qartë? 606 00:28:47,980 --> 00:28:50,090 Ose, si mund të levave atë njohuri? 607 00:28:50,090 --> 00:28:51,530 Po. 608 00:28:51,530 --> 00:28:54,910 >> Audienca: Ju shkoni në gjysmë të rrugës [padëgjueshme]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Po. 610 00:28:55,660 --> 00:28:56,160 Pikërisht. 611 00:28:56,160 --> 00:28:59,680 Pra instinkti fillestar Ajay ishte për të kontrolluar në skajet, si unë kujtoj, 612 00:28:59,680 --> 00:29:02,320 dhe pastaj ne lloj përfunduar shembull shpejt. 613 00:29:02,320 --> 00:29:05,220 Por nëse kemi filluar ta bëjmë këtë më shumë metodike në këto linja, 614 00:29:05,220 --> 00:29:07,860 por duke filluar ndoshta në e mesme, sepse ata janë të renditura, 615 00:29:07,860 --> 00:29:10,900 sa më shpejt që ne të zbulojë numër 16, ne prandaj know-- 616 00:29:10,900 --> 00:29:14,850 dhe le të bëjë pikërisht that-- ne prandaj e dimë se 50, në rastin e sotme, 617 00:29:14,850 --> 00:29:16,080 ka marrë të jetë në të djathtë. 618 00:29:16,080 --> 00:29:18,735 Pra, ashtu si në javë zero kur ne grisi librin e telefonit në gjysmë 619 00:29:18,735 --> 00:29:21,490 dhe hodhën gjysmën e Problemi larg, të njëjtën ide këtu. 620 00:29:21,490 --> 00:29:23,680 Ne mund të hedhin në këtë pjesë e problemit larg. 621 00:29:23,680 --> 00:29:25,730 Dhe ndoshta ajo që ju mund të bëjë algorithmically, 622 00:29:25,730 --> 00:29:28,710 një herë ju e dini se 50 duhet të jenë të në të djathtë, nëse është e kudo, 623 00:29:28,710 --> 00:29:31,390 është të përpiqen atje, në mes e dyerve mbetur. 624 00:29:31,390 --> 00:29:33,450 Natyrisht, 50 është më e lartë shumë se 42, kështu që ne mund 625 00:29:33,450 --> 00:29:36,060 hedhin kjo e mbetur katërta e problemit larg, 626 00:29:36,060 --> 00:29:38,510 dhe, më në fund, për të identifikuar diçka si 50. 627 00:29:38,510 --> 00:29:41,050 Por ashtu si me librin e telefonit, këto shifra 628 00:29:41,050 --> 00:29:44,560 janë dhënë për ne tashmë në mënyrë të renditur, i cili na lë 629 00:29:44,560 --> 00:29:47,450 me pyetjen, si mund të marrë gjërat në mënyrë të renditura? 630 00:29:47,450 --> 00:29:49,640 Dhe, sinqerisht, me çfarë kosto? 631 00:29:49,640 --> 00:29:51,390 Kjo është një gjë që të jetë e dorëzoi librin e telefonit 632 00:29:51,390 --> 00:29:54,810 dhe pastaj të lë përshtypje miqtë tuaj duke gjetur një numër telefoni të vërtetë të shpejtë, e drejtë? 633 00:29:54,810 --> 00:29:58,520 Marramendës 32 faqe për të gjetur një Personi nga 4 miliardë faqe, 634 00:29:58,520 --> 00:30:00,470 kemi thënë ishte një shembull ekstrem. 635 00:30:00,470 --> 00:30:03,320 Por, se sa kohë u desh Verizon për të zgjidhur atë libër telefoni? 636 00:30:03,320 --> 00:30:06,170 Sa kohë u desh na për të zgjidhur këto shtatë numra? 637 00:30:06,170 --> 00:30:10,110 Kjo është një pyetje që ne kemi duke injoruar tani plotësisht. 638 00:30:10,110 --> 00:30:12,330 >> Pra, le të përgjigjen në këtë pyetje tani. 639 00:30:12,330 --> 00:30:15,920 Dhe ne jemi të gjithë nga filmat tani, por ne kemi disa topa stresit. 640 00:30:15,920 --> 00:30:19,480 Në qoftë se, të themi, tetë vullnetarë nuk do mend të na u bashkuar këtu? 641 00:30:19,480 --> 00:30:24,100 Le të shkojnë përpara dhe të bëjë, si për katër prej jush, tre nga ju këtu? 642 00:30:24,100 --> 00:30:25,290 Merr disa fytyra të reja. 643 00:30:25,290 --> 00:30:27,220 Dhe katër prej jush atje? 644 00:30:27,220 --> 00:30:30,760 Dhe now-- mos të paragjykim here-- dhe Numri tetë mbi këtu në fund. 645 00:30:30,760 --> 00:30:32,060 Eja lart. 646 00:30:32,060 --> 00:30:32,560 Të gjithë të drejtë. 647 00:30:32,560 --> 00:30:37,480 Pra, ajo që ne kemi këtu për çdo njëra është një numër. 648 00:30:37,480 --> 00:30:40,055 Nëse ju dëshironi të shkoni përpara, të marrë këtë numër. 649 00:30:40,055 --> 00:30:40,763 Si e keni emrin? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, në rregull. 652 00:30:43,100 --> 00:30:44,297 Ju jeni numri 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 Ju jeni numër 2. 657 00:30:47,530 --> 00:30:49,100 Dhe të shkojnë përpara, si unë dorë ju fletët e letrës, 658 00:30:49,100 --> 00:30:52,130 vijë veten deri në frontin e muzikës qëndron në të njëjtën mënyrë si deri atje. 659 00:30:52,130 --> 00:30:52,660 >> Andy: Hi, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, është e mirë për të parë ju. 661 00:30:53,970 --> 00:30:54,520 Numri 3. 662 00:30:54,520 --> 00:30:55,310 >> Jacob: Jakobi. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jakobi, numër 4. 664 00:30:56,760 --> 00:30:57,549 Mirësevini në fluturake. 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 Numri 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, numri 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, numër 7. 672 00:31:04,880 --> 00:31:05,200 Dhe? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, numri 8. 675 00:31:06,815 --> 00:31:07,100 Të gjithë të drejtë. 676 00:31:07,100 --> 00:31:08,766 Shkoni përpara dhe për të marrë veten në këtë mënyrë. 677 00:31:08,766 --> 00:31:11,440 Më lejoni të vënë një e mbetur muzikë të qëndrojë në vend. 678 00:31:11,440 --> 00:31:13,670 Ku keni nevojë për një qëndrim? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Shkoni përpara dhe të vetëm të vënë numrat tuaj ku publiku mund të shohin ato në, 681 00:31:18,710 --> 00:31:20,340 muzikë qëndrojë përballet jashtëm. 682 00:31:20,340 --> 00:31:27,240 Dhe shpresojmë se, së pari ynë mendje e shëndoshë kontrolloni here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Prisni një minutë. 685 00:31:29,070 --> 00:31:31,140 Ne nuk kemi një 8. 686 00:31:31,140 --> 00:31:35,180 Unë kam nevojë për të nxjerrë ju nga shembull disi. 687 00:31:35,180 --> 00:31:35,680 Nr 688 00:31:35,680 --> 00:31:36,940 Jo, kjo është në rregull. 689 00:31:36,940 --> 00:31:37,890 Le të shohim. 690 00:31:37,890 --> 00:31:38,880 Ne mund ta bëjmë këtë. 691 00:31:38,880 --> 00:31:39,440 Sehir. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Ka ne do të shkojmë. 694 00:31:45,740 --> 00:31:46,800 Correct. 695 00:31:46,800 --> 00:31:47,360 Të gjithë të drejtë. 696 00:31:47,360 --> 00:31:50,260 Pra, tani ne kemi 8, 1, 3, 7 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Excellent. 699 00:31:51,360 --> 00:31:54,400 >> Pra, pyetja e parë është, në çfarë kosto, dhe me anë të asaj që metoda, 700 00:31:54,400 --> 00:31:58,580 mund të kemi në të vërtetë të zgjidhur këto numra këtu në mënyrë që ne mund të lloj të punojnë prapa, 701 00:31:58,580 --> 00:32:02,759 në fund të fundit, dhe decide-- është me të vërtetë mbresëlënëse, është me të vërtetë efikas, 702 00:32:02,759 --> 00:32:04,550 që unë mund të ndajnë dhe pushtuar një libër telefoni? 703 00:32:04,550 --> 00:32:06,716 A është me të vërtetë efikas se Unë mund të ndajnë dhe të pushtuar 704 00:32:06,716 --> 00:32:08,600 ato copa dixhitale e letrës në bord, 705 00:32:08,600 --> 00:32:14,500 në qoftë se ndoshta ajo do të na kushtojë një pasuri në kohë ose të energjisë ose CPU cikle 706 00:32:14,500 --> 00:32:17,340 që në fakt të marrë të dhënat tona në një mënyrë të renditura? 707 00:32:17,340 --> 00:32:18,930 Pra, le të pyes këtë pyetje. 708 00:32:18,930 --> 00:32:22,077 >> Off Pra, së pari, këto shifra janë në mënyrë që shumë e shumë të rastit, 709 00:32:22,077 --> 00:32:24,160 dhe unë jam duke shkuar për të propozuar një algoritmi, ose procesi 710 00:32:24,160 --> 00:32:25,970 nga të cilat ne mund të lloj këto folks. 711 00:32:25,970 --> 00:32:28,100 Unë jam duke shkuar për t'iu qasur kjo goxha naivitet. 712 00:32:28,100 --> 00:32:30,730 Dhe unë jam duke shkuar për të njohur se kjo është lloj i një shumë për mua 713 00:32:30,730 --> 00:32:32,890 të përfundojë mendjen time rreth dhënave të tëra të vendosur në të njëjtën kohë. 714 00:32:32,890 --> 00:32:33,640 Por ju e dini se çfarë? 715 00:32:33,640 --> 00:32:37,450 Unë jam duke shkuar për të bërë disa fixes shumë e thjeshtë margjinale. 716 00:32:37,450 --> 00:32:41,152 4 dhe 2 janë jashtë rendit, nëse Qëllimi është për të shkuar nga 1 në deri në 8. 717 00:32:41,152 --> 00:32:41,860 Pra, ju e dini se çfarë? 718 00:32:41,860 --> 00:32:43,776 Unë jam do të ketë të djema bie në ujdi, nëse ju kaloni 719 00:32:43,776 --> 00:32:46,380 fizikisht pozicionet dhe copa tuaj të letrës. 720 00:32:46,380 --> 00:32:47,894 Tani 4 dhe 6, këto janë në rregull. 721 00:32:47,894 --> 00:32:49,060 Unë jam duke shkuar për të lënë ata të jenë. 722 00:32:49,060 --> 00:32:50,227 6 dhe 8, ato janë në rregull. 723 00:32:50,227 --> 00:32:51,185 Duke shkuar për të lënë ata të jenë. 724 00:32:51,185 --> 00:32:52,170 8 And1, prej të rendit. 725 00:32:52,170 --> 00:32:54,790 Në qoftë se ju të dy nuk do mend shkëmbejnë. 726 00:32:54,790 --> 00:32:57,300 Tani 8 dhe 3, në qoftë se ju djema mund të bie në ujdi. 727 00:32:57,300 --> 00:32:59,320 8 dhe 7, në qoftë se ju djema mund të bie në ujdi. 728 00:32:59,320 --> 00:33:01,790 Dhe 8 dhe 5, në qoftë se ju djema mund të bie në ujdi. 729 00:33:01,790 --> 00:33:03,980 >> Tani, jam unë bërë? 730 00:33:03,980 --> 00:33:05,200 Jo, natyrisht jo. 731 00:33:05,200 --> 00:33:07,880 Por unë kam bërë Situata më e mirë, e drejtë? 732 00:33:07,880 --> 00:33:09,430 Cili ishte emri juaj përsëri, numri 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Pra Rachel ka bubbled në mënyrë efektive deri goxha larg, 735 00:33:12,850 --> 00:33:15,660 gjithë mënyrë që fundi i array ime e numrave këtu. 736 00:33:15,660 --> 00:33:17,310 Dhe kështu që problemi është lloj i zgjidhur. 737 00:33:17,310 --> 00:33:21,670 Tani, në mënyrë të qartë, 2 ende ka nevojë për të lëvizë një grimë, dhe 4 dhe 6 dhe 1. 738 00:33:21,670 --> 00:33:24,420 Por unë duket të ketë marrë një pak më afër zgjidhjes. 739 00:33:24,420 --> 00:33:26,790 Pra, le të aplikojnë këtë njëjtë deduktive naive përsëri. 740 00:33:26,790 --> 00:33:27,690 2 dhe 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 dhe 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 dhe 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Le të swap. 744 00:33:32,230 --> 00:33:33,200 6 dhe 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Le të swap. 746 00:33:34,420 --> 00:33:35,580 6 dhe 7 është rregull. 747 00:33:35,580 --> 00:33:36,590 7 dhe 5, Jo. 748 00:33:36,590 --> 00:33:37,790 Le të swap. 749 00:33:37,790 --> 00:33:38,470 Dhe tani 7 dhe 8. 750 00:33:38,470 --> 00:33:39,862 Dhe çfarë është emri juaj përsëri? 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 Deri tani Frances është edhe një më të mirë pozita, për shkak se tani 7 dhe 8 754 00:33:44,230 --> 00:33:46,440 janë bubbled saktë deri në majë. 755 00:33:46,440 --> 00:33:47,510 Pra, 2 dhe 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 dhe 1, shkëmbim le. 757 00:33:48,720 --> 00:33:50,410 4 dhe 3, shkëmbim le. 758 00:33:50,410 --> 00:33:51,550 4 dhe 6, ju jeni OK. 759 00:33:51,550 --> 00:33:53,340 6 dhe 5, shkëmbim le. 760 00:33:53,340 --> 00:33:54,590 Dhe tani ata djemtë janë të mira. 761 00:33:54,590 --> 00:33:55,780 Ne jemi pothuajse atje. 762 00:33:55,780 --> 00:33:57,706 2 dhe 1, jashtë funksionit, kështu që bie në ujdi. 763 00:33:57,706 --> 00:33:59,080 Dhe tani më lejoni të bëj një kontroll mendje e shëndoshë. 764 00:33:59,080 --> 00:34:03,080 2 dhe 3, 3 dhe 4, 4 dhe 5, 5 dhe 6, 6 dhe 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, kështu që ne jemi duke bërë. 766 00:34:05,060 --> 00:34:09,310 >> Por në çfarë kosto bëri I zgjidhur këto numra këtu? 767 00:34:09,310 --> 00:34:13,960 E pra, sa hapa bëri I potencialisht marrë kur zgjidhja e këtyre folks? 768 00:34:13,960 --> 00:34:15,710 E pra, ne do të kthehen në këtë pyetje. 769 00:34:15,710 --> 00:34:18,030 Por, sinqerisht, në qoftë se ju mori një mërzitur pak, kjo është 770 00:34:18,030 --> 00:34:22,270 lloj zbuluar në se kjo nuk ishte e ndoshta algorithm më efikase. 771 00:34:22,270 --> 00:34:25,230 Dhe me të vërtetë, sinqerisht, unë jam djersitje të gjithë më këmbë mbrapa dhe me radhë. 772 00:34:25,230 --> 00:34:26,639 Kjo nuk e ka ndier veçanërisht efikase. 773 00:34:26,639 --> 00:34:27,805 Pra, le të provojmë diçka tjetër. 774 00:34:27,805 --> 00:34:31,870 Nëse ju djema mund të rishkruhet veten për këto tetë vlerave. 775 00:34:31,870 --> 00:34:32,969 Punë të mirë. 776 00:34:32,969 --> 00:34:36,570 >> Le të bëjmë një vështrim digjitale, për vetëm një moment para se të provoni diçka tjetër, 777 00:34:36,570 --> 00:34:38,179 në atë që ka ndodhur vetëm. 778 00:34:38,179 --> 00:34:41,330 Deri këtu, ju jeni gati për të parë një vizualizimi i këtyre tetë njerëzve 779 00:34:41,330 --> 00:34:44,719 ku blu dhe të kuqe bare përfaqësojnë numrat. 780 00:34:44,719 --> 00:34:46,670 Shtatlartë bar, më e madhe numri. 781 00:34:46,670 --> 00:34:48,510 Shkurtër bar, më i vogël numri. 782 00:34:48,510 --> 00:34:51,560 Dhe atë që ju jeni duke shkuar për të parë është në mënyrë të rastësishme më shumë se tetë prej tyre. 783 00:34:51,560 --> 00:34:55,830 Ju jeni duke shkuar për të parë këto bare duke u renditur nga e njëjta algorithm, 784 00:34:55,830 --> 00:34:59,890 ose grup i udhëzime, të cilat ne do të thërrasë tani e tutje flluskë lloj. 785 00:34:59,890 --> 00:35:04,000 Pra njoftim, çdo i dyti apo më shumë, dy bare janë të ndezjes së dritave të kuqe, 786 00:35:04,000 --> 00:35:05,590 janë duke u krahasuar nga kompjuteri. 787 00:35:05,590 --> 00:35:08,630 Atëherë, nëse bar i madh dhe pak bar janë nga e rendit, 788 00:35:08,630 --> 00:35:11,220 ata janë duke u swapped për mua. 789 00:35:11,220 --> 00:35:15,120 >> Tani kjo është tepër e lodhshme për të parë këtë, sigurisht, 790 00:35:15,120 --> 00:35:18,630 për shumë kohë, por njoftim takeaway-- bare mëdha lëvizin në të djathtë, 791 00:35:18,630 --> 00:35:20,460 bare pak lëvizin në të majtë. 792 00:35:20,460 --> 00:35:23,380 Le të ndërpresin shtatzëninë këtë proces dhe shpejtuar këtë ide 793 00:35:23,380 --> 00:35:27,330 të jetë shumë më të shpejtë, kështu që ne mund të marrë një kuptim të nivelit të lartë të asaj që, 794 00:35:27,330 --> 00:35:29,970 në të vërtetë, flluskë lloj është duke bërë. 795 00:35:29,970 --> 00:35:33,150 Në të vërtetë, kjo është bubbling deri në djathtë anën e listës, 796 00:35:33,150 --> 00:35:35,260 ose array, baret më të mëdha. 797 00:35:35,260 --> 00:35:40,020 Dhe anasjelltas, bare pak janë bubbling rrugën e tyre poshtë në të majtë, 798 00:35:40,020 --> 00:35:42,950 megjithëse me një ritëm më të shpejtë se ne e parë e bëri. 799 00:35:42,950 --> 00:35:45,850 Pra, më e vështirë për të parë me njerëzit, por vizualisht kjo është me të vërtetë se çfarë 800 00:35:45,850 --> 00:35:46,540 po ndodhte. 801 00:35:46,540 --> 00:35:49,110 >> Por le të përpiqemi një krejtësisht qasje të ndryshme tani. 802 00:35:49,110 --> 00:35:52,387 Le të provoni një tjetër algorithm ku ne kemi të 803 00:35:52,387 --> 00:35:59,640 djemtë fillojnë në këto origjinal pozicione, e cila ishte ky urdhër këtu. 804 00:35:59,640 --> 00:36:00,827 Dhe le të shkojë përpara tani. 805 00:36:00,827 --> 00:36:02,910 Dhe unë jam duke shkuar për të bërë diçka edhe më të thjeshta, e drejtë? 806 00:36:02,910 --> 00:36:06,710 Në retrospektivë, shkëmbejnë pairwise përsëri dhe përsëri, pothuajse pak i zgjuar. 807 00:36:06,710 --> 00:36:10,460 Le të bëjë gjëra edhe më shumë naivitet, ku në qoftë se unë dua të zgjidhur këto folks, 808 00:36:10,460 --> 00:36:12,560 më lejoni vetëm të vazhdoni të kërkoni për të elementit të vogël. 809 00:36:12,560 --> 00:36:14,570 Deri tani, 4 është Numri më i vogël i kam parë. 810 00:36:14,570 --> 00:36:15,695 Unë jam duke shkuar për të kujtuar se. 811 00:36:15,695 --> 00:36:17,750 Jo, 2 është më e mirë, dhe mos harroni se. 812 00:36:17,750 --> 00:36:20,730 1 është edhe më i vogël. 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-- si e ke emrin përsëri? 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 Pra, Artie, të shkojnë përpara. 819 00:36:25,460 --> 00:36:27,043 Unë jam duke shkuar për t'ju tërhequr nga linjë. 820 00:36:27,043 --> 00:36:28,400 Nëse ju mund të kthehet këtu. 821 00:36:28,400 --> 00:36:30,790 Dhe unë duhet të bëjë vend për të. 822 00:36:30,790 --> 00:36:32,040 Ne kemi një pikë vendim këtu. 823 00:36:32,040 --> 00:36:36,000 Si mund ta bëjë vend për Artie këtu në fillim ku numri 1 takon? 824 00:36:36,000 --> 00:36:36,770 >> Audienca: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: OK, ne mund të zhvendoset të gjithë. 826 00:36:38,950 --> 00:36:40,860 Por propozojë një optimization. 827 00:36:40,860 --> 00:36:43,410 Që ndihet pak i bezdisshëm për mua të pyes katër persona 828 00:36:43,410 --> 00:36:44,620 për të lëvizur të gjithë rrugën poshtë. 829 00:36:44,620 --> 00:36:45,520 Çfarë tjetër mund të bëj? 830 00:36:45,520 --> 00:36:46,360 >> Audienca: Switch ato. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: Switch ato. 832 00:36:46,850 --> 00:36:47,900 Dhe çfarë është emri juaj përsëri? 833 00:36:47,900 --> 00:36:48,441 >> Jacob: Jakobi. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jakobi, lëvizin. 835 00:36:50,330 --> 00:36:54,440 Shumë më të efektshme vetëm që të ketë Vende Jakobi swap me Artie, 836 00:36:54,440 --> 00:36:56,710 në krahasim me duke e detyruar të katër këto folks, 837 00:36:56,710 --> 00:36:58,734 ju faleminderit shumë, për të pozita e tyre e saktë. 838 00:36:58,734 --> 00:37:01,150 Çfarë është e mirë në lidhje me Artie tani, ai është në pozitën e tij të saktë. 839 00:37:01,150 --> 00:37:02,060 Le të bëjë këtë përsëri. 840 00:37:02,060 --> 00:37:03,730 2, që është numri më i vogël që unë kam parë. 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 është padyshim më i vogël. 844 00:37:07,467 --> 00:37:08,550 A nuk duhet të bëni asnjë punë. 845 00:37:08,550 --> 00:37:09,320 Le të bëjë atë përsëri. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Më të vogël? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Jo. 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 Më lejoni të kujtuar 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Më lejoni të kujtojmë 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Numri më i vogël unë kam parë në këtë të kaluar është 3. 857 00:37:18,490 --> 00:37:20,340 Nëse ju do të dalë më jashtë. 858 00:37:20,340 --> 00:37:21,986 Ku do të shkojmë për të vënë ju? 859 00:37:21,986 --> 00:37:22,860 Dhe si e ke emrin? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, ne jemi do të duhet të nxjerrë ju. 862 00:37:25,780 --> 00:37:28,670 Por kjo është më efikase, të vetëm të bie në ujdi dy persona, 863 00:37:28,670 --> 00:37:31,850 se sa të ketë njerëz të shumta në të vërtetë ngelet në bisht mbi. 864 00:37:31,850 --> 00:37:32,850 Tani le ta bëjmë këtë përsëri. 865 00:37:32,850 --> 00:37:34,980 Unë jam duke shkuar për të zgjedhur 4, kështu që eja jashtë. 866 00:37:34,980 --> 00:37:36,540 Dhe kush do të shkojë? 867 00:37:36,540 --> 00:37:37,750 Numri 8, natyrisht. 868 00:37:37,750 --> 00:37:40,260 Nëse unë tani gjeni numrin 5, eja jashtë. 869 00:37:40,260 --> 00:37:42,104 Numri 8 do të merrni dëbuar përsëri. 870 00:37:42,104 --> 00:37:43,770 Unë tani jam duke shkuar për të gjetur numrin 6 në vend. 871 00:37:43,770 --> 00:37:44,410 7 në vend. 872 00:37:44,410 --> 00:37:45,080 8 në vend. 873 00:37:45,080 --> 00:37:48,590 >> Ajo që ne vetëm e bëri tani është diçka që quhet përzgjedhje lloj, 874 00:37:48,590 --> 00:37:52,560 dhe në qoftë se ne e kujtoj këtë, është e do të ndjehen pak më ndryshe. 875 00:37:52,560 --> 00:37:56,800 Le të shkojnë përpara dhe nga kjo menu këtu, kjo visualization-- 876 00:37:56,800 --> 00:38:02,920 le të ndryshojë kjo to-- eja, Firefox. 877 00:38:02,920 --> 00:38:07,610 Le të ndryshojë këtë për të përzgjedhjes lloji. 878 00:38:07,610 --> 00:38:11,830 Dhe le të shpejtuar atë si më parë, dhe të fillojnë vizualizimi tani. 879 00:38:11,830 --> 00:38:13,990 Dhe kjo algorithm ka një të ndjehen të ndryshme për të. 880 00:38:13,990 --> 00:38:16,480 Në çdo përsëritje, sinqerisht, është edhe më i thjeshtë. 881 00:38:16,480 --> 00:38:18,385 Unë jam vetëm duke zgjedhur elementin më të vogël. 882 00:38:18,385 --> 00:38:21,510 Tani, sinqerisht, kam marrë një fat pak se kohë, në atë që zgjidhet super-shpejtë. 883 00:38:21,510 --> 00:38:22,660 Elementet ishin të rastit. 884 00:38:22,660 --> 00:38:25,520 Kjo nuk është, si ne do të përfundimisht shikoni, krejtësisht më të shpejtë. 885 00:38:25,520 --> 00:38:29,400 Por le të shohim një të tretë dhe të fundit qasje këtu se çfarë po ndodh. 886 00:38:29,400 --> 00:38:36,230 Pra, le të shkojnë përpara dhe të rivendosur djema një kohë final të jetë në këtë mënyrë këtu. 887 00:38:36,230 --> 00:38:38,450 >> Dhe tani, unë jam duke shkuar për të të jetë pak më të zgjuar, 888 00:38:38,450 --> 00:38:40,220 vetëm për të rrumbullakët algoritme tonë. 889 00:38:40,220 --> 00:38:41,230 Unë jam duke shkuar për të bërë këtë. 890 00:38:41,230 --> 00:38:43,140 Unë jam duke shkuar për të mos shkuar mbrapa dhe me radhë aq shumë. 891 00:38:43,140 --> 00:38:44,900 Sinqerisht, unë jam i lodhur nga e gjithë kjo traversing. 892 00:38:44,900 --> 00:38:47,691 Unë jam vetëm duke shkuar për të marrë atë që unë jam dhënë në fillim të lista, 893 00:38:47,691 --> 00:38:49,460 dhe unë jam duke shkuar për të zgjidhur që atëherë dhe atje. 894 00:38:49,460 --> 00:38:50,140 Pra, ja ku jemi. 895 00:38:50,140 --> 00:38:51,030 Numër 4. 896 00:38:51,030 --> 00:38:53,680 Unë jam duke shkuar për të futur numrin 4 në një listë të renditura. 897 00:38:53,680 --> 00:38:54,180 Done. 898 00:38:54,180 --> 00:38:58,300 Unë pretendojnë tani, dhe vetëm për të bërë këtë më shumë qartë, kjo pjesë e listës sime është renditura. 899 00:38:58,300 --> 00:39:02,610 Kjo është lloj i një pretendimi budallaqe, por me të vërtetë 4 është renditur në një listë të njëjtën masë. 900 00:39:02,610 --> 00:39:04,210 Tani, unë jam duke shkuar për të marrë në numrin 2. 901 00:39:04,210 --> 00:39:07,670 Numri 2 Unë tani jam duke shkuar për të futur në vendin e duhur. 902 00:39:07,670 --> 00:39:08,680 Pra, ku ka 2 takon? 903 00:39:08,680 --> 00:39:09,824 Natyrisht, mbi këtu. 904 00:39:09,824 --> 00:39:11,490 Kështu që të shkojnë përpara dhe për të shkuar mbrapa, në qoftë se ju mund. 905 00:39:11,490 --> 00:39:14,406 Pse nuk ju djema të marrë vetëm muzikë tuaj qëndron me ju këtë herë. 906 00:39:14,406 --> 00:39:17,020 Dhe le forcë futur ju në fillim të lista. 907 00:39:17,020 --> 00:39:17,936 Pra, pak më shumë punë. 908 00:39:17,936 --> 00:39:20,890 Unë kisha për të lëvizur përreth Jakobin, dhe si e ke emrin? 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 Por të paktën unë nuk ka shkuar mbrapa dhe me radhë. 912 00:39:24,350 --> 00:39:25,739 Unë jam vetëm duke marrë gjërat si të shkoj. 913 00:39:25,739 --> 00:39:27,530 Unë jam vetëm duke futur ato në vendin e duhur. 914 00:39:27,530 --> 00:39:29,220 6, kjo është në të vërtetë shumë e lehtë. 915 00:39:29,220 --> 00:39:31,510 Le të futur ju atje, nëse ju vetëm për të kërkuar për të lëvizur gjatë pak. 916 00:39:31,510 --> 00:39:32,870 Numri 8, gjithashtu shumë e lehtë. 917 00:39:32,870 --> 00:39:33,741 E drejta atje. 918 00:39:33,741 --> 00:39:34,240 Damn atë. 919 00:39:34,240 --> 00:39:37,590 Numri 1 ne nuk mund vetëm të bie në ujdi me Amin këtu, 920 00:39:37,590 --> 00:39:39,340 sepse kjo do të bela deri rendit. 921 00:39:39,340 --> 00:39:40,660 Pra, ne duhet të jetë pak më të zgjuar. 922 00:39:40,660 --> 00:39:42,770 Pra, Artie, në qoftë se ju mund të mbështetur për një moment. 923 00:39:42,770 --> 00:39:46,550 Le të shkojnë përpara dhe të zhvendoset tani, ndryshe nga algoritme tona të mëparshme, 924 00:39:46,550 --> 00:39:50,910 për të bërë vend për Artie të drejtë këtu në fillim. 925 00:39:50,910 --> 00:39:54,690 Pra, në fund të ditës, unë jam natyrë e duke bërë atë që kam kërkuar për të shmangur para. 926 00:39:54,690 --> 00:39:57,770 Dhe kështu algoritmi im është lloj i kundërt, intelektualisht, 927 00:39:57,770 --> 00:39:59,070 nga ajo që ishte fillimisht. 928 00:39:59,070 --> 00:40:01,240 Unë jam vetëm duke bërë kalimin në një pikë të ndryshme. 929 00:40:01,240 --> 00:40:02,291 Tani unë jam në 3. 930 00:40:02,291 --> 00:40:02,790 Oh, mallkuar. 931 00:40:02,790 --> 00:40:04,039 Ne duhet të bëjmë më shumë punë përsëri. 932 00:40:04,039 --> 00:40:05,060 Pra, le të shtyjë jashtë. 933 00:40:05,060 --> 00:40:09,360 Le të lëvizin 8, 6, 4-- oh oh-- dhe 3 do të shkojë drejtë atje. 934 00:40:09,360 --> 00:40:11,490 Pra në kursime të paktën të vogla këtë herë. 935 00:40:11,490 --> 00:40:13,100 7, jo shumë punë për të bërë. 936 00:40:13,100 --> 00:40:15,370 Pra, nëse ju dëshironi të pop prapa, le të futur ju. 937 00:40:15,370 --> 00:40:17,440 Dhe së fundi, 5, në qoftë se ju dëshironi të pop mbrapa, ne 938 00:40:17,440 --> 00:40:22,610 duhet të zhvendoset ju, ju, ju, deri në pesë është në vend. 939 00:40:22,610 --> 00:40:25,670 >> Deri tani për të parë këtë në një nivelit të lartë grafikisht, 940 00:40:25,670 --> 00:40:31,080 le të bëjmë këtë algoritëm vizualizimi një kohë shtesë. 941 00:40:31,080 --> 00:40:33,580 Pra, kjo do të thërrasë futje lloj. 942 00:40:33,580 --> 00:40:37,700 Ne do të drejtuar atë vetëm si të shpejtë, dhe të fillojnë këtu. 943 00:40:37,700 --> 00:40:39,580 Dhe, gjithashtu, ka një të ndjehen të ndryshme. 944 00:40:39,580 --> 00:40:42,180 Është lloj i shkojnë më mirë dhe më të mirë, por kjo nuk është e përsosur 945 00:40:42,180 --> 00:40:44,630 deri sa të shkoj në dhe të qetë në këto boshllëqe. 946 00:40:44,630 --> 00:40:47,860 Sepse, përsëri, unë jam vetëm duke marrë atë Unë jam duke u dhënë nga e majta në të djathtë. 947 00:40:47,860 --> 00:40:50,350 Kështu që unë nuk e kam marrë aq me fat se çdo gjë ishte e përkryer. 948 00:40:50,350 --> 00:40:54,190 Kjo është arsyeja pse kemi pasur këto pak mispositions që ne fikse me kalimin e kohës. 949 00:40:54,190 --> 00:40:58,890 >> Pra, të gjitha këto algoritme duket se drejtuar me ritme pak më të ndryshme. 950 00:40:58,890 --> 00:41:02,030 Në fakt, e cila do të ju thonë se është më të mirë apo më të shpejtë deri më tani? 951 00:41:02,030 --> 00:41:03,450 Lloj Bubble, i pari? 952 00:41:03,450 --> 00:41:05,000 Përzgjedhja lloj, e dyta? 953 00:41:05,000 --> 00:41:08,450 Lloj futje, i treti? 954 00:41:08,450 --> 00:41:10,710 Dëgjoj disa llojet e përzgjedhjes. 955 00:41:10,710 --> 00:41:13,280 Mendime të tjera? 956 00:41:13,280 --> 00:41:16,880 >> Pra, rezulton se të gjitha këto algoritme 957 00:41:16,880 --> 00:41:22,400 janë krejtësisht të po aq efikase sa çdo other-- ose, anasjelltas, ashtu si 958 00:41:22,400 --> 00:41:25,980 jo efikase si njëri tjetri, sepse ne mund të bëjmë në thelb 959 00:41:25,980 --> 00:41:28,120 më mirë se të tre nga këto algoritme. 960 00:41:28,120 --> 00:41:29,990 Dhe kjo është pak e një gënjeshtër të bardhë, too. 961 00:41:29,990 --> 00:41:32,580 kur them si efikase ose si joefikas, 962 00:41:32,580 --> 00:41:35,040 kjo është të paktën për Vlerat super-të mëdha të n. 963 00:41:35,040 --> 00:41:38,450 Kur ne kemi vetëm tetë njerëz këtu, apo ndoshta 50 apo më shumë bare në ekran, 964 00:41:38,450 --> 00:41:41,645 ju do absolutisht të vëreni dallimet në mesin e këtyre tre algoritme. 965 00:41:41,645 --> 00:41:44,020 Por si n, numri i njerëzve, ose numri i numrave, 966 00:41:44,020 --> 00:41:46,350 ose numri i njerëzve në telefon libër, ose numri i faqeve web 967 00:41:46,350 --> 00:41:48,230 në bazën e të dhënave të Google merr më të mëdha, 968 00:41:48,230 --> 00:41:51,650 ne do të shohim se të tre këto algoritme të vërtetë janë mjaft të varfër. 969 00:41:51,650 --> 00:41:54,060 Dhe ne mund të bëjmë në thelb më mirë se kaq. 970 00:41:54,060 --> 00:41:56,830 >> Le të bëjmë një vështrim, më në fund, në atë që këto algoritme mund 971 00:41:56,830 --> 00:41:59,520 tingëllojë si në Konteksti i disa të tjerë 972 00:41:59,520 --> 00:42:03,550 gjithashtu me anë të kësaj vizualizimi këtu 973 00:42:03,550 --> 00:42:06,860 që do të na njoftojë me një numër i algoritmeve. 974 00:42:06,860 --> 00:42:10,330 Le të shkojnë përpara dhe të përgëzoj Pjesëmarrësit tanë këtu, të gjithë prej të cilëve 975 00:42:10,330 --> 00:42:11,690 renditura veten shumë mirë. 976 00:42:11,690 --> 00:42:15,124 Nëse ju dëshironi të marrë një dhuratë lamtumire. 977 00:42:15,124 --> 00:42:16,540 Ju mund të mbani numrat tuaj si. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Dhe ajo që ju do të shihni, ose më mirë dëgjojnë, tani, 980 00:42:22,520 --> 00:42:25,710 është se si ne të vënë tinguj me secilën nga këto bare 981 00:42:25,710 --> 00:42:28,660 dhe e lidhin atë me software, frekuenca të ndryshme të shëndoshë, 982 00:42:28,660 --> 00:42:33,970 ju mund të përfundojë mendjen tuaj më shumë audioly rreth asaj që secili nga këto gjëra 983 00:42:33,970 --> 00:42:34,470 duken si. 984 00:42:34,470 --> 00:42:39,325 Parë e cila është futje lloj 985 00:42:39,325 --> 00:42:44,275 >> [Tone] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Kjo është flluskë lloj. 988 00:42:49,720 --> 00:42:54,175 >> [Tone] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Përzgjedhja lloj. 991 00:43:18,222 --> 00:43:22,596 >> [Tone] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Diçka quajtur bashkojë lloj. 994 00:43:35,150 --> 00:43:38,140 >> [Tone] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Lloj Gnome. 997 00:43:51,278 --> 00:43:56,390 >> [Tone] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Kjo është ajo për CS50. 1000 00:44:09,430 --> 00:44:13,360 Ne do të ju shohim të mërkurën. 1001 00:44:13,360 --> 00:44:16,671 >> Transmetuesi: Dhe tani, "Deep Mendime, "nga Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Pse është një për lak? 1004 00:44:21,590 --> 00:44:23,200 Pse nuk e bëjnë atë më të mirë? 1005 00:44:23,200 --> 00:44:25,970 Unë do të bëjë një pesë lak. 1006 00:44:25,970 --> 00:44:28,720 >> [Qeshura]