1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> JASON HIRSCHHORN: Welcome a hét három, mindenkinek. 3 00:00:08,150 --> 00:00:11,650 Van egy elfoglalt, de izgalmas rész előttünk. 4 00:00:11,650 --> 00:00:17,010 Tehát az első, mert tettünk néhány térnyerése a kurzus, de még mindig 5 00:00:17,010 --> 00:00:20,570 sok tanulási maradt meg, én vagyok megmutatom nektek egyes erőforrások 6 00:00:20,570 --> 00:00:24,160 hogy kell bizonyítania, hogy hihetetlenül hasznos, mivel nem csak a megközelítés a 7 00:00:24,160 --> 00:00:28,130 probléma beállítja, hanem megemészteni összes az anyagot adunk srácok 8 00:00:28,130 --> 00:00:30,800 előadások és rövidnadrág és a részt. 9 00:00:30,800 --> 00:00:34,790 >> Ezután fogjuk tölteni az első 20 25 perces szakasz megy át 10 00:00:34,790 --> 00:00:38,630 GDB, amit lehet, vagy nem lehet használnak ezen a ponton, de ez egy 11 00:00:38,630 --> 00:00:42,570 hihetetlenül hasznos eszköz, amely segít hibakeresés a programokat. 12 00:00:42,570 --> 00:00:46,060 Sok lehet, hogy használt printf a közepén a programot kitalálni 13 00:00:46,060 --> 00:00:47,430 hogy mi a változó párja. 14 00:00:47,430 --> 00:00:52,060 GDB még jobb, mint a printf és nem csavarja fel a kódot, mert 15 00:00:52,060 --> 00:00:53,320 futtatni egy futtatható fájl. 16 00:00:53,320 --> 00:00:56,500 Akkor megyünk át a 10 leghasznosabb parancsok, amire szükség van GDB, és mi 17 00:00:56,500 --> 00:01:00,540 fog menni a gyakorlat együtt, így A probléma meg három és azon túl, akkor 18 00:01:00,540 --> 00:01:03,320 Használhatja GDB, hogy segítsen hibakeresés a programokat. 19 00:01:03,320 --> 00:01:06,420 És végül, fogunk menni át néhány rendezési és keresési algoritmusok 20 00:01:06,420 --> 00:01:10,590 hogy látott előadás, és mi fog valójában kód, nem csak 21 00:01:10,590 --> 00:01:17,360 pszeudokódját, de a kód bináris keresés, buborék sort, és a kiválasztás sort. 22 00:01:17,360 --> 00:01:20,090 >> Tehát először akarok menni át a forrásokat. 23 00:01:20,090 --> 00:01:23,530 Ez egy részletes listát, és ez kisebb betűkkel, mert sok volt a 24 00:01:23,530 --> 00:01:24,390 elfér itt. 25 00:01:24,390 --> 00:01:26,950 De ezek nem csak segít, ismét a problémát készletek és 26 00:01:26,950 --> 00:01:30,760 emésztés információkat tanult, de Határozottan, gyere kvíz idő, ezek 27 00:01:30,760 --> 00:01:32,130 hihetetlenül hasznos. 28 00:01:32,130 --> 00:01:34,700 Tehát először a jegyzet. 29 00:01:34,700 --> 00:01:39,480 Ha megy cs50.net/lectures és lapozzunk az adott héten, és nap, 30 00:01:39,480 --> 00:01:43,120 látni fogod, hogy vannak olyan megjegyzésekkel előadás, amely nem csupán egy 31 00:01:43,120 --> 00:01:47,250 átirat, hanem szerkesztett változata mi borította előadás kóddal 32 00:01:47,250 --> 00:01:49,610 töredék és más hasznos nyalánkságokat. 33 00:01:49,610 --> 00:01:52,220 Én nagyon ajánlom megy át azokat. 34 00:01:52,220 --> 00:01:55,340 És akkor is, ott van a forráskód elérhető minden előadást. 35 00:01:55,340 --> 00:02:00,050 És ismét, ezeket a diákat is online elérhető cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 ma este. 37 00:02:01,480 --> 00:02:06,860 >> Tehát a második a nadrág minden héten, hogy olyan témákat, általában 5 és 15 38 00:02:06,860 --> 00:02:08,090 perc hosszúságú. 39 00:02:08,090 --> 00:02:12,310 És ezek remélhetőleg kapsz egy nagy alapozó különböző témákban. 40 00:02:12,310 --> 00:02:12,870 Harmadik - 41 00:02:12,870 --> 00:02:16,370 és ez teljesen új ez a évben - study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 Ha még nem ellenőrizte, hogy ki, azt Javasoljuk, hogy erre. 43 00:02:20,110 --> 00:02:21,100 Kapsz, hogy válasszon egy témát. 44 00:02:21,100 --> 00:02:23,040 Jelenleg több tucat téma ott. 45 00:02:23,040 --> 00:02:24,770 Így például, akkor vedd funkciók. 46 00:02:24,770 --> 00:02:27,270 Ez ad egy kis diák és tudomásul veszi a funkciókat. 47 00:02:27,270 --> 00:02:31,190 Ezek valójában a diák, hogy a TFS arra ösztönzik, hogy közben a 48 00:02:31,190 --> 00:02:32,710 előadások részben. 49 00:02:32,710 --> 00:02:35,040 Van még tippek és trükkök kezelésére funkciókkal, és van 50 00:02:35,040 --> 00:02:37,290 gyakorlat problémák, amelyek segítenek dolgozik funkciókat. 51 00:02:37,290 --> 00:02:41,500 Azt is kapsz linkeket a rövid a funkciók és az idő, hogy a funkciók 52 00:02:41,500 --> 00:02:42,750 jöttek fel az előadás. 53 00:02:42,750 --> 00:02:46,550 Tehát study.cs50.net, új ez a évben egy fantasztikus erőforrás. 54 00:02:46,550 --> 00:02:52,180 >> Ezután már az ember, amely a kézi parancs futtatható a 55 00:02:52,180 --> 00:02:52,770 parancssorban. 56 00:02:52,770 --> 00:02:57,880 Tehát, ha bármilyen kérdése van a parancsot, például a rand, amit 57 00:02:57,880 --> 00:03:00,900 találkozott a múlt héten, a részben és akkor valószínűleg találkozott 58 00:03:00,900 --> 00:03:05,380 A probléma meg, ha megy keresztül a generál kódot, de ha beírja az ember 59 00:03:05,380 --> 00:03:09,980 rand, akkor kap az oldalon, hogy azt mondja, minden a rand. 60 00:03:09,980 --> 00:03:14,040 Ez ad ön mit vesz, a paraméterek tart, valamint a visszatérő 61 00:03:14,040 --> 00:03:16,530 típusa és leírása az ezt a funkciót. 62 00:03:16,530 --> 00:03:17,500 >> Tehát nézd meg rand. 63 00:03:17,500 --> 00:03:22,270 Ez lehet egy kicsit bőbeszédű és zavaros, így néha azt tapasztalom, hogy 64 00:03:22,270 --> 00:03:26,150 Egyszerűen Googling mit akarok tudni, a legjobb módja, hogy megtalálják a választ. 65 00:03:26,150 --> 00:03:27,940 Így a gyakorlatban a Google. 66 00:03:27,940 --> 00:03:28,600 Get jó Google. 67 00:03:28,600 --> 00:03:30,600 Ez lesz a legjobb barátod. 68 00:03:30,600 --> 00:03:34,300 >> Csakúgy, mint a Google, ha nem találja meg a Google, cs50.net/discuss, ez 69 00:03:34,300 --> 00:03:35,550 A vitafórum. 70 00:03:35,550 --> 00:03:39,390 Esélye van, ha van egy kérdés, az egyik a 700 + többiek is, hogy 71 00:03:39,390 --> 00:03:42,110 kérdés, és azt kérték már a megvitatására 72 00:03:42,110 --> 00:03:43,540 fórumok és azt válaszolta. 73 00:03:43,540 --> 00:03:48,130 Tehát, ha van egy közös kérdés, vagy van egy kérdés, hogy úgy gondolja 74 00:03:48,130 --> 00:03:52,300 Lehet, hogy mások esetleg befut, nézd meg cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> Végül az utolsó két, ha azt szeretnénk, hogy beszélni egy igazi emberi lény, iroda 76 00:03:55,450 --> 00:03:57,770 óra hétfőtől péntekig. 77 00:03:57,770 --> 00:04:00,850 Van még online irodai óra kiterjesztése a diákok. 78 00:04:00,850 --> 00:04:04,370 És végül, de nem utolsósorban, nekem, felkiáltójel. 79 00:04:04,370 --> 00:04:05,960 Mindannyian van a kapcsolat. 80 00:04:05,960 --> 00:04:11,940 Ha bármire szükséged van, kérlek soha habozzon kapcsolatba lépni velem. 81 00:04:11,940 --> 00:04:14,020 Mindig nyugodtan erre. 82 00:04:14,020 --> 00:04:17,490 Nagyon kevés a hozzáadott engem Gchat, így a kiábrándító, 83 00:04:17,490 --> 00:04:20,410 de remélhetőleg ez meg fog változni között ez és a következő fejezetben. 84 00:04:20,410 --> 00:04:22,105 Bármilyen kérdése eddig a forrásokat? 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 Remek. 87 00:04:27,450 --> 00:04:34,280 >> Végül egy másik dugó visszajelzés, sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 Adhat nekem névtelen visszajelzést hogyan csinálok. 89 00:04:37,050 --> 00:04:38,320 Ez nagyon hasznos, a múlt héten. 90 00:04:38,320 --> 00:04:41,890 Kaptam egy pár észrevétel srácok jobb szakasz után, valamint a 91 00:04:41,890 --> 00:04:44,750 másik diák, aki nézte a hét folyamán, és ez 92 00:04:44,750 --> 00:04:46,830 hihetetlenül hasznos. 93 00:04:46,830 --> 00:04:50,250 Én megyek, hogy megpróbálja korlátozni a használatát a "kedves", de megmutatom én 94 00:04:50,250 --> 00:04:52,410 lelkesedéssel és izgalommal más módon. 95 00:04:52,410 --> 00:04:56,550 De voltak más kiegészítő érdemi visszajelzések, 96 00:04:56,550 --> 00:04:57,600 mind pluses és delta. 97 00:04:57,600 --> 00:05:00,480 Ezért kérjük, adok nektek visszajelzést a probléma készletek. 98 00:05:00,480 --> 00:05:01,790 Nyugodtan adj visszajelzést én tanítás. 99 00:05:01,790 --> 00:05:04,010 Itt vagyok srácok. 100 00:05:04,010 --> 00:05:05,270 >> Remek. 101 00:05:05,270 --> 00:05:07,020 Ez minden, amit már a az első részben. 102 00:05:07,020 --> 00:05:08,565 Van valakinek kérdése eddig? 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 És van egy megjegyzés az irányító központ. 105 00:05:14,640 --> 00:05:21,200 Extension diákok üzenetben nekem mondván, hogy nem kapok semmilyen audio, 106 00:05:21,200 --> 00:05:23,870 de ez az én hatalom rögzíteni. 107 00:05:23,870 --> 00:05:25,280 Így remélhetőleg, hogy lesz oldani hamarosan. 108 00:05:25,280 --> 00:05:28,850 Ha nézed az interneten, hi, de nem hallanak. 109 00:05:28,850 --> 00:05:33,860 >> Tehát először fogunk hogy menjen át GDB. 110 00:05:33,860 --> 00:05:37,100 GDB, ahogy utalt korábban, egy hibakereső eszköz 111 00:05:37,100 --> 00:05:39,040 sokkal jobb, mint a printf. 112 00:05:39,040 --> 00:05:44,700 Szóval, az induláshoz a GDB, srácok, ha meg szeretné nyitni a készülék 113 00:05:44,700 --> 00:05:49,070 és megteszi a fájlt, amit e-mailben elküldjük korábban - ez a fájl is 114 00:05:49,070 --> 00:05:51,940 online elérhető egy kicsit - 115 00:05:51,940 --> 00:05:55,700 és fuss GDB. / a fájl nevét. 116 00:05:55,700 --> 00:05:58,580 Először is, persze, meg kell fordítanod fájlt, mert GDB csak akkor működik, 117 00:05:58,580 --> 00:05:59,890 futtatható fájlokat. 118 00:05:59,890 --> 00:06:02,300 >> De ha valaha is szeretne kezdeni GDB, az első dolog, amit teszel, 119 00:06:02,300 --> 00:06:04,550 fut GDB. / Caesar. 120 00:06:04,550 --> 00:06:08,340 Szóval ez a program neve vagyunk megyek vele most. 121 00:06:08,340 --> 00:06:12,810 Így fogok írni, hogy Caesar, amely ad nekem egy futtatható fájl 122 00:06:12,810 --> 00:06:14,100 Itt a zöld szín jelzi. 123 00:06:14,100 --> 00:06:19,250 És akkor fogok futni GDB. / Cesar. 124 00:06:19,250 --> 00:06:19,810 >> És már megy is. 125 00:06:19,810 --> 00:06:24,540 Látod van néhány szöveget mondja nekem a változat GDB, hogy nekem 126 00:06:24,540 --> 00:06:27,570 Néhány jótállási információk, aztán hogy a GDP gyors, ami úgy néz sort 127 00:06:27,570 --> 00:06:29,350 úgy, mint a parancssorból de látod, ez a nyílt 128 00:06:29,350 --> 00:06:32,510 paren, GDB, közel paren. 129 00:06:32,510 --> 00:06:36,520 Mielőtt folytatnánk és hibakeresés ezt a fájlt , hogy én küldtem neked is, nézzük meg 130 00:06:36,520 --> 00:06:40,220 néhány hasznos parancs így van értelme hogy mit fogunk fedezni. 131 00:06:40,220 --> 00:06:45,060 >> Ezek a parancsok listáját a sorrendben, én általában használja őket. 132 00:06:45,060 --> 00:06:50,230 Tehát elkezdem a programot futás GBD. / Program nevét, 133 00:06:50,230 --> 00:06:51,360 ebben az esetben, Cézár. 134 00:06:51,360 --> 00:06:57,430 És akkor az első dolog, amit 99,9% Az idő típusú szünetet jelentenek. 135 00:06:57,430 --> 00:06:59,070 Ez beállítja a töréspontot a fő. 136 00:06:59,070 --> 00:07:03,260 Lényegében, mit csinálsz ott a program fog megállni 137 00:07:03,260 --> 00:07:06,100 fő, így meg lehet kezdeni vizsgálja meg sorban sorra, és nem fut minden 138 00:07:06,100 --> 00:07:07,040 az utat. 139 00:07:07,040 --> 00:07:09,730 Lehet törni különböző pontjain a kódot, de a fő általában 140 00:07:09,730 --> 00:07:11,870 jó kiindulópont lehet. 141 00:07:11,870 --> 00:07:14,840 >> A következő parancs futok fut. 142 00:07:14,840 --> 00:07:17,400 Ez elindítja a program fut, és ha kell meg parancssorban 143 00:07:17,400 --> 00:07:19,090 érvek futtatod a parancsot. 144 00:07:19,090 --> 00:07:20,500 Fuss az érveket. 145 00:07:20,500 --> 00:07:25,000 Tehát, mivel mi megy át egy változata C, amely a program srácok 146 00:07:25,000 --> 00:07:26,160 írt Pset két - 147 00:07:26,160 --> 00:07:29,880 ez, persze, van néhány hiba benne, hogy remélhetőleg meg fogjuk találni - 148 00:07:29,880 --> 00:07:32,810 fogunk futni távon néhány parancs argumentumok mert Caesar, 149 00:07:32,810 --> 00:07:34,860 mint tudjátok, egy a probléma be spec, némi 150 00:07:34,860 --> 00:07:36,380 parancssori paramétereket. 151 00:07:36,380 --> 00:07:40,000 >> A következő néhány parancs, a következő egy valójában úgynevezett mellett. 152 00:07:40,000 --> 00:07:42,470 Hogy az egyik úgy, soronként keresztül a program. 153 00:07:42,470 --> 00:07:45,800 Így ütő n, majd az Entert visz a következő sorra, végrehajtása 154 00:07:45,800 --> 00:07:46,880 az előző sor. 155 00:07:46,880 --> 00:07:49,440 Lépés nem csak úgy, hogy a következő sorban, de a 156 00:07:49,440 --> 00:07:51,070 elvisz belül funkciókat. 157 00:07:51,070 --> 00:07:54,310 Tehát, ha már írt egy funkciót a kódot, vagy ha szeretné felfedezni a 158 00:07:54,310 --> 00:07:57,820 i, például, akkor nyomja meg s, és nem megy, hogy a következő sorban a 159 00:07:57,820 --> 00:08:02,390 fájl mész keresztül jobb Most, akkor valóban belép 160 00:08:02,390 --> 00:08:04,670 ezt a funkciót, és látni a kódját. 161 00:08:04,670 --> 00:08:12,300 >> List megmutatja, nagyon felhasználóbarát formátumban, a 10 vagy úgy vonalak körül 162 00:08:12,300 --> 00:08:14,940 ahol jelenleg van a kódban így valóban látni a fájl 163 00:08:14,940 --> 00:08:17,810 ahelyett, hogy a swap-vissza között oda különböző nézetek. 164 00:08:17,810 --> 00:08:21,890 Print, mint printf, mint a neve is mutatja. 165 00:08:21,890 --> 00:08:24,020 Ez azt mutatja, hogy milyen egy változó értéke. 166 00:08:24,020 --> 00:08:25,870 >> Info helyiek nagyon hasznos. 167 00:08:25,870 --> 00:08:27,740 Ez egy speciális változata a nyomtatás. 168 00:08:27,740 --> 00:08:31,770 Info helyiek azt mutatja, hogy az összes helyi változó, kiírja őket ki az Ön számára 169 00:08:31,770 --> 00:08:33,380 , amelyek jelenleg rendelkezésre állnak. 170 00:08:33,380 --> 00:08:36,360 Szóval általában, ahelyett, hogy nyomtassa ki a négy változó, hogy én vagyok 171 00:08:36,360 --> 00:08:39,929 kíváncsi, ha én vagyok a for ciklus, a Például, én csak annyit írj információkat helyiek, 172 00:08:39,929 --> 00:08:43,470 és megmutatom, hogy mi a számlálót én értéke, valamint az, hogy a tömb én 173 00:08:43,470 --> 00:08:45,130 dolgozik egyenlők. 174 00:08:45,130 --> 00:08:47,530 >> Végül is. 175 00:08:47,530 --> 00:08:49,300 Gépelési szünet megállít a töréspontot. 176 00:08:49,300 --> 00:08:51,380 Egy séta a vonalon összhangban a következő és lépésről. 177 00:08:51,380 --> 00:08:55,640 Folytatás fut a program, hogy a következő töréspontot vagy befejezéséig, ha 178 00:08:55,640 --> 00:08:57,180 nincs több szünet pont. 179 00:08:57,180 --> 00:09:00,060 Disable eltávolítja szünet pontot, ha úgy döntött, a szünet fő volt, 180 00:09:00,060 --> 00:09:01,890 nem megfelelő, azt szeretné, hogy meg azt valahol máshol. 181 00:09:01,890 --> 00:09:05,090 És végül q, kilép, kiszáll a GDB. 182 00:09:05,090 --> 00:09:10,784 >> Szóval ez a program. / Caesar fogunk , hogy nézze át, és most már 183 00:09:10,784 --> 00:09:13,490 fogják használni GDB találni a hibákat a programban. 184 00:09:13,490 --> 00:09:18,110 Futottam a program korábban Ellenőrizze a 50, és van egy ránc. 185 00:09:18,110 --> 00:09:22,310 Mindent, hogy létezik, akkor össze, azt telt sok a teszt, de 186 00:09:22,310 --> 00:09:27,950 Valamilyen oknál fogva, hogy nem felelt meg az ötödik teszt fordult BARFOO, csupa nagybetűvel, a 187 00:09:27,950 --> 00:09:33,350 E-D-I-U-R, R-, mind sapkák, segítségével három kulcsfontosságú. 188 00:09:33,350 --> 00:09:34,090 Kaptam elég közel. 189 00:09:34,090 --> 00:09:35,410 Kaptam ki egy betű. 190 00:09:35,410 --> 00:09:37,340 Szóval van valami kis hiba itt. 191 00:09:37,340 --> 00:09:38,070 Már néztem a kódomat. 192 00:09:38,070 --> 00:09:38,850 Nem tudtam rájönni. 193 00:09:38,850 --> 00:09:41,740 Remélhetőleg, ha tudtok segíteni rájönni, mi ezt a hibát is. 194 00:09:41,740 --> 00:09:44,610 >> Szóval ez a hiba vagyunk keres. 195 00:09:44,610 --> 00:09:46,090 Mozgás a GDB. 196 00:09:46,090 --> 00:09:51,100 Megint futni GDB. / Caesar, így most vagyunk GDB. 197 00:09:51,100 --> 00:09:54,290 És mi az első dolog, amit meg kell csinálni? 198 00:09:54,290 --> 00:09:56,680 Már csak be GDB. 199 00:09:56,680 --> 00:10:00,316 Valaki adjon nekem egy jó parancsot meg. 200 00:10:00,316 --> 00:10:01,140 >> DIÁK: Szünet fő. 201 00:10:01,140 --> 00:10:01,800 >> JASON HIRSCHHORN: Szünet fő. 202 00:10:01,800 --> 00:10:02,900 Fantasztikus. 203 00:10:02,900 --> 00:10:03,560 Nézzük írja, hogy be 204 00:10:03,560 --> 00:10:06,390 Ti lehet nézni itt vagy kövesse valamint a számítógép. 205 00:10:06,390 --> 00:10:09,410 Szünet fő-, és látni fogod a töréspontot határozták meg - 206 00:10:09,410 --> 00:10:12,340 ez ad nekem valami furcsa memória cím, és ez is ad nekem a sor számát. 207 00:10:12,340 --> 00:10:15,310 Ha én is nézz vissza ezt a fájlt, Azt is észre, hogy fő 208 00:10:15,310 --> 00:10:17,700 történt line 21. 209 00:10:17,700 --> 00:10:18,950 Mit kell futtatni a következő? 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 Az én futó program? 212 00:10:25,060 --> 00:10:25,650 Nem. 213 00:10:25,650 --> 00:10:27,175 Szóval mit kell futtatni a következő? 214 00:10:27,175 --> 00:10:27,520 >> DIÁK: Run. 215 00:10:27,520 --> 00:10:28,050 >> JASON HIRSCHHORN: Run. 216 00:10:28,050 --> 00:10:30,760 Ha én csak futni futni, vagy kell Én hozzá néhány más dolog? 217 00:10:30,760 --> 00:10:31,960 >> DIÁK: Fuss az érvelés. 218 00:10:31,960 --> 00:10:33,320 >> JASON HIRSCHHORN: Fuss A parancs érveket. 219 00:10:33,320 --> 00:10:36,420 És mivel én vagyok a hibakeresés egy nagyon konkrét esetben azt kell lépnie, hogy az 220 00:10:36,420 --> 00:10:37,120 parancssori argumentum. 221 00:10:37,120 --> 00:10:42,290 Szóval akkor nem fut a három, ami ismét A kimeneti kaptam Check 50. 222 00:10:42,290 --> 00:10:44,240 A program indulásakor. 223 00:10:44,240 --> 00:10:45,420 Átmegyünk egy pár sort. 224 00:10:45,420 --> 00:10:47,700 Akkor most látni, hogy mi vagyunk line 21. 225 00:10:47,700 --> 00:10:49,200 Honnan tudom, hogy mi vagyunk line 21? 226 00:10:49,200 --> 00:10:52,170 Mert ha megnézzük, hogy a bal oldalon én terminál ablak, ott 227 00:10:52,170 --> 00:10:53,120 azt mondja line 21. 228 00:10:53,120 --> 00:10:57,010 És ez ad nekem, tényleg, a kódot, hogy a line 21. 229 00:10:57,010 --> 00:10:58,440 Szóval misspoke korábban. 230 00:10:58,440 --> 00:10:59,770 Főoldal valójában nem a line 21. 231 00:10:59,770 --> 00:11:02,000 Main egy pár sort a fenti 21. 232 00:11:02,000 --> 00:11:04,300 De line 21, ez ahol vagyunk törés. 233 00:11:04,300 --> 00:11:06,280 Ez a vonal a kódot még nem teljesített. 234 00:11:06,280 --> 00:11:06,890 Ez fontos. 235 00:11:06,890 --> 00:11:09,120 A vonal látod még nem kivégezték még. 236 00:11:09,120 --> 00:11:12,650 Ez a következő kódsort fogsz végrehajtani. 237 00:11:12,650 --> 00:11:15,860 >> Így a következő sorban, ahogy vagytok valószínűleg ismeri, ez 238 00:11:15,860 --> 00:11:20,070 feltétel ellenőrzi, hogy ha van Megadott egy parancssori argumentum. 239 00:11:20,070 --> 00:11:22,140 És, hogy én, mi a második része, hogy van? 240 00:11:22,140 --> 00:11:23,457 Mi az, hogy én? 241 00:11:23,457 --> 00:11:24,950 >> DIÁK: Változó, hogy egy egész szám. 242 00:11:24,950 --> 00:11:25,450 >> JASON HIRSCHHORN: Tessék? 243 00:11:25,450 --> 00:11:27,400 >> DIÁK: Ez változó érv, hogy egy egész szám. 244 00:11:27,400 --> 00:11:30,890 >> JASON HIRSCHHORN: Tehát egy i megváltozik arg v1 egy stringet egy egész szám. 245 00:11:30,890 --> 00:11:32,140 És akkor mi is megnézni? 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> DIÁK: Ha van egy második parancssori argumentum, félre 248 00:11:37,112 --> 00:11:38,100 a futó program. 249 00:11:38,100 --> 00:11:39,460 >> JASON HIRSCHHORN: És mi a második felében ez a 250 00:11:39,460 --> 00:11:41,220 Logikai kifejezés ellenőrzés? 251 00:11:41,220 --> 00:11:42,540 Ez a rész itt, egy i? 252 00:11:42,540 --> 00:11:44,080 >> DIÁK: Ha ez a negatív. 253 00:11:44,080 --> 00:11:45,380 >> JASON HIRSCHHORN: gondoskodik arról, mi? 254 00:11:45,380 --> 00:11:47,120 >> DIÁK: Ügyelve arra, hogy van, sőt, pozitív. 255 00:11:47,120 --> 00:11:47,650 >> JASON HIRSCHHORN: Pontosan. 256 00:11:47,650 --> 00:11:50,600 Ez ellenőrzi, hogy ha ez a negatív, és ha ez negatív, azt 257 00:11:50,600 --> 00:11:53,220 van egy olyan érzésem, a következő sor hatalma kell nekem kiabál a felhasználó. 258 00:11:53,220 --> 00:11:55,930 Szóval hit vége, hogy végre ezen a vonalon. 259 00:11:55,930 --> 00:11:59,925 Nem látjuk, hogy a sort, hogy a srácok talán várható, hogy kiabál a 260 00:11:59,925 --> 00:12:03,030 felhasználót, majd visszatért, mert a ez a sor nem lett végrehajtva. 261 00:12:03,030 --> 00:12:03,840 Beléptem 3.. 262 00:12:03,840 --> 00:12:06,860 Szóval nem, sőt, meg két parancs paramétereket, és 3 263 00:12:06,860 --> 00:12:07,610 nagyobb, mint nulla. 264 00:12:07,610 --> 00:12:09,950 Így láttuk, hogy sorban, mi végre, de nem lépett 265 00:12:09,950 --> 00:12:11,300 belül, ha a feltétel. 266 00:12:11,300 --> 00:12:17,060 >> Tehát most, a következő, látom én beállítása int kulcs megegyezik egy i arg v1. 267 00:12:17,060 --> 00:12:18,840 Szóval ez nekem létre egy változót gombot. 268 00:12:18,840 --> 00:12:22,450 Tehát, ha azt kinyomtatni legfontosabb most, mert , amely lehetővé teszi, hogy a 269 00:12:22,450 --> 00:12:26,040 érték belül változó, kulcs értéke 47.. 270 00:12:26,040 --> 00:12:28,810 Ez furcsa, de természetesen, azért, mert én nem 271 00:12:28,810 --> 00:12:30,490 végre ezt a sort még. 272 00:12:30,490 --> 00:12:35,880 Tehát most, ha elütöttem n, végre ezt a vonalat, és nem print kulcs, kulcs egyenlő lesz 3, 273 00:12:35,880 --> 00:12:37,740 ami az, amit várunk, hogy egyenlő. 274 00:12:37,740 --> 00:12:41,170 >> Tehát még egyszer, a GDB, a vonal lásd még nem teljesített még. 275 00:12:41,170 --> 00:12:44,850 Meg kell, hogy elérje N, S vagy több Más parancsok valóban 276 00:12:44,850 --> 00:12:46,610 végre ezt a sort. 277 00:12:46,610 --> 00:12:47,380 Print gombot. 278 00:12:47,380 --> 00:12:48,280 Key 3. 279 00:12:48,280 --> 00:12:49,750 Eddig jó. 280 00:12:49,750 --> 00:12:51,000 Karakterlánc sima szöveget. 281 00:12:51,000 --> 00:12:52,270 Nézzük végre ezt a vonalat. 282 00:12:52,270 --> 00:12:53,970 Kezdek egy stringet felhasználó. 283 00:12:53,970 --> 00:12:58,690 >> Lássuk az én Check 50, azt meg BARFOO összes sapkát, így 284 00:12:58,690 --> 00:13:01,330 ez az, amit majd be. 285 00:13:01,330 --> 00:13:07,300 Ha már nyers szöveget nyomtatni. 286 00:13:07,300 --> 00:13:08,610 Majd meglátod, hogy egyenlő egy string. 287 00:13:08,610 --> 00:13:11,100 Ez ad nekem egy másik furcsa hexadecimális száma, de ez nem a 288 00:13:11,100 --> 00:13:13,620 tény, azt mondják, hogy a string BARFOO. 289 00:13:13,620 --> 00:13:19,308 Ha akartam, hogy mi fő megegyezett a Ezen a ponton, hogyan tudnám ellenőrizni kulcsot? 290 00:13:19,308 --> 00:13:20,710 >> DIÁK: Print gombot. 291 00:13:20,710 --> 00:13:22,010 >> JASON HIRSCHHORN: Nyomtatás gomb, pontosan. 292 00:13:22,010 --> 00:13:23,260 És valóban, van egy parancsikont. 293 00:13:23,260 --> 00:13:25,910 Ha elfárad a gépelés print, akkor csak írja p. 294 00:13:25,910 --> 00:13:28,340 Tehát p kulcs nem pontosan ugyanolyan dolog. 295 00:13:28,340 --> 00:13:29,730 És ismét, látom, hogy egyenlő 3. 296 00:13:29,730 --> 00:13:34,760 >> Ha akartam, hogy megtudja, mi a két legfontosabb BARFOO megegyezett és ugyanabban az időben 297 00:13:34,760 --> 00:13:37,215 de én fáradt gépelés minden egyet külön-külön, azt 298 00:13:37,215 --> 00:13:38,590 lehetett típusú információkat helyiek. 299 00:13:38,590 --> 00:13:41,170 Ez ad nekem kulcsot egyenlő 3. 300 00:13:41,170 --> 00:13:42,500 Egyszerű szöveg egyenlő BARFOO. 301 00:13:42,500 --> 00:13:45,265 Azt is ad nekem ez a két furcsa dolgokat a tetején, és ez az i változó 302 00:13:45,265 --> 00:13:46,590 ezt a változót n. 303 00:13:46,590 --> 00:13:48,460 >> Azok valóban létező az a fő programban. 304 00:13:48,460 --> 00:13:51,280 Még nem találkoztam velük még, de a preview, azok 305 00:13:51,280 --> 00:13:52,880 létezik a hurok. 306 00:13:52,880 --> 00:13:55,360 Tehát most, akkor egyenlő furcsa számokat, mert nem volt 307 00:13:55,360 --> 00:13:58,300 inicializált még, de ők továbbra is léteznek a memóriában, így ők csak meg 308 00:13:58,300 --> 00:14:00,220 néhány szemetet értéket. 309 00:14:00,220 --> 00:14:02,890 De azt látni kulcs egyszerű szöveg ott. 310 00:14:02,890 --> 00:14:06,390 >> Így fogom végrehajtani ezt a sort, 34. sorban, a for ciklus. 311 00:14:06,390 --> 00:14:08,220 Fogunk ugrani a A loop-et n. 312 00:14:08,220 --> 00:14:10,050 És mi vagyunk benne a for ciklus. 313 00:14:10,050 --> 00:14:11,360 Mi vagyunk az első csekket. 314 00:14:11,360 --> 00:14:14,300 És ismét, ezeket a fajta nézni ismerős, mert ez volt a 315 00:14:14,300 --> 00:14:18,080 Caesar programot írt, de ismét van valamilyen hiba. 316 00:14:18,080 --> 00:14:21,940 >> És most, ha én információkat a helyiek, mert én vagyok belül, hogy a for ciklus, látni fogod, 317 00:14:21,940 --> 00:14:23,900 hogy én nullával egyenlő, ahogy várnánk. 318 00:14:23,900 --> 00:14:26,820 Ez az, amit mi meg azt, és inicializált azt, hogy a for ciklus. 319 00:14:26,820 --> 00:14:27,560 n = 6. 320 00:14:27,560 --> 00:14:30,700 Ez is van értelme, mert mi meg azt a strlen sima szöveget. 321 00:14:30,700 --> 00:14:34,270 Szóval szeretem csinálni információkat helyiek vagy nyomtatási a változó gyakran, hogy megbizonyosodjon arról, hogy az 322 00:14:34,270 --> 00:14:36,370 minden mindig, amit Arra számítok, hogy egyenlő. 323 00:14:36,370 --> 00:14:39,800 Ebben az esetben, minden amit elvárják, hogy egyenlő. 324 00:14:39,800 --> 00:14:41,850 >> Tehát kezdjük halad keresztül Ez a for ciklus. 325 00:14:41,850 --> 00:14:45,715 A vonal vagyok a sorban 36, ha a sima i szöveg nagyobb, mint egy sima 326 00:14:45,715 --> 00:14:48,540 szöveg i kisebb vagy egyenlő, mint z. 327 00:14:48,540 --> 00:14:51,880 Tudom, hogy a probléma nem az első levél, ez a második betű. 328 00:14:51,880 --> 00:14:56,290 Ha visszatekintünk a Check 50, B megy E finom. 329 00:14:56,290 --> 00:14:59,010 Elviszem az A és az onnan azt A, nem változik meg a D. így 330 00:14:59,010 --> 00:15:00,200 Valami baj van A második betű. 331 00:15:00,200 --> 00:15:01,640 Így fogok mozogni ott egy másik. 332 00:15:01,640 --> 00:15:06,030 >> De ha én nem akarom, hogy ellenőrizze, milyen egyszerű text én megegyezett ebben a konkrét 333 00:15:06,030 --> 00:15:07,760 az esetben, azt hiszem, az, amit? 334 00:15:07,760 --> 00:15:10,980 Mit kell sima szöveges Én egyenlő ebben első körben az a hurok? 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> DIÁK: Zero? 337 00:15:15,110 --> 00:15:16,510 >> JASON HIRSCHHORN: Plain text I? 338 00:15:16,510 --> 00:15:21,180 Így kell lennie tőke B. Én, természetesen, nullával egyenlő, de a sima szöveg 339 00:15:21,180 --> 00:15:25,600 konzol nulla zárt konzol egyenlő B mert a húrok, ahogy azt a múlt héten, 340 00:15:25,600 --> 00:15:28,650 a tömb, szóval kezd a első karakterét ettől. 341 00:15:28,650 --> 00:15:34,960 Tehát még egyszer, ha kinyomtatható egyszerű szöveg Én, én, sőt, hogy a karakter 342 00:15:34,960 --> 00:15:36,560 B. És ez szép, nem? 343 00:15:36,560 --> 00:15:40,380 Én valójában nem is egyszerű szöveges I. Ez nem az egyik változót állítottam 344 00:15:40,380 --> 00:15:42,950 vagy inicializált, de kinyomtathatja egy egész sereg dolgot 345 00:15:42,950 --> 00:15:45,640 ha szeretne. 346 00:15:45,640 --> 00:15:47,340 >> De menjünk át. 347 00:15:47,340 --> 00:15:50,050 Ha sima szöveget én nagyobb, mint az A és egyszerű szöveg I-nél kisebb vagy egyenlő 348 00:15:50,050 --> 00:15:53,290 Z, amely egyértelműen igaz, mert van a tőke B. fogok futni 349 00:15:53,290 --> 00:15:54,230 Néhány parancs is. 350 00:15:54,230 --> 00:15:58,530 Láttuk, hogy a matematika a múlt héten, így fogunk magától értetődőnek, hogy ez működik 351 00:15:58,530 --> 00:16:00,900 joga szerint a Check 50. 352 00:16:00,900 --> 00:16:03,720 >> Ezek a kapcsos zárójelek, az első azt mutatták, hogy én kilép a ha 353 00:16:03,720 --> 00:16:07,030 állapot, a második azt mutatta , hogy én vagyok, hogy kilépne a for ciklus. 354 00:16:07,030 --> 00:16:10,400 És most, amikor elütöttem Ezután fogjuk látni vagyunk vissza a for ciklus újra. 355 00:16:10,400 --> 00:16:11,970 Mi megy át a for ciklus újra. 356 00:16:11,970 --> 00:16:18,110 Nézzük valóban belép a második iteráció a for ciklus és típusa 357 00:16:18,110 --> 00:16:20,520 Dátum helyiek. 358 00:16:20,520 --> 00:16:22,190 >> Tehát mi vagyunk a második iterációs mi a hurok. 359 00:16:22,190 --> 00:16:24,530 I értéke 1, amit várnánk. 360 00:16:24,530 --> 00:16:26,650 N = 6, amit várunk. 361 00:16:26,650 --> 00:16:28,810 Key értéke 3, amelyet várunk. 362 00:16:28,810 --> 00:16:32,625 És a sima szöveg, látni fogod, egyenlő EARFOO most, sem BARFOO többé, mert 363 00:16:32,625 --> 00:16:37,930 a korábbi iterációban, a B változott a főváros E. Úgyhogy mindjárt 364 00:16:37,930 --> 00:16:40,040 találkozik a problémát, így ez a ahol fogunk 365 00:16:40,040 --> 00:16:41,130 belevetik magukat a hibakeresés. 366 00:16:41,130 --> 00:16:43,365 De vajon bárki bármilyen kérdése van, arról, hogy mit tettünk eddig? 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 Fantasztikus. 369 00:16:47,910 --> 00:16:52,710 >> Így vagyunk, hogy végre ezt, ha állapot, egyszerű szöveges konzol Becsuktam 370 00:16:52,710 --> 00:16:57,500 tartó nagyobb, mint az A és egyszerű szöveges én kevesebb vagy egyenlő, mint Z. De mielőtt 371 00:16:57,500 --> 00:17:00,450 Megyek be, mert ez az, ahol Tudom, hogy hiba, szeretnék rámutatni 372 00:17:00,450 --> 00:17:06,859 ki egyszerű szöveges I. Tehát mondjuk kinyomtatni. 373 00:17:06,859 --> 00:17:12,020 Ez nem egyenlő a karakter egy, így a Úgy tűnik, eddig minden szép és jó. 374 00:17:12,020 --> 00:17:14,740 >> Így azt várom ezt a sort én egy logika, ezt a sort, hogy igaz legyen. 375 00:17:14,740 --> 00:17:16,099 Ez egy nagybetűvel. 376 00:17:16,099 --> 00:17:20,599 De ha megüt n, mi észre, hogy ez vonal, valójában nem lett végrehajtva. 377 00:17:20,599 --> 00:17:22,609 Ugrottam le a else if. 378 00:17:22,609 --> 00:17:25,460 Miért történt ez? 379 00:17:25,460 --> 00:17:27,480 >> DIÁK: Mert van az állapota sima szöveg nagyobb 380 00:17:27,480 --> 00:17:29,130 mint az A, nem egyenlő vagy nagyobb, mint. 381 00:17:29,130 --> 00:17:32,260 >> JASON HIRSCHHORN: Szóval volt a sima szöveg I Egy nagyobb, mint a, nem nagyobb 382 00:17:32,260 --> 00:17:32,850 kisebb vagy azzal egyenlő. 383 00:17:32,850 --> 00:17:38,130 Olyan tisztán, a főváros A nem kiválthatja ezt, ha a feltétel, és mi nem 384 00:17:38,130 --> 00:17:40,520 ne lépjen bele, és mi nem nem a szükséges elmozdulás. 385 00:17:40,520 --> 00:17:41,360 Szóval ennyi, tényleg. 386 00:17:41,360 --> 00:17:42,920 Rájöttem a bug. 387 00:17:42,920 --> 00:17:46,775 Mehetek vissza a forrás fájlban, változás, és frissíti azt, és 388 00:17:46,775 --> 00:17:47,855 futtassa Ellenőrizze 50. újra. 389 00:17:47,855 --> 00:17:52,590 >> De majd meglátjuk, csak a pedagógia a kedvéért, ha folyamatosan megy. 390 00:17:52,590 --> 00:17:59,580 Az else if nem hajt végre sem, de mi, hanem egyenlő a parancs 391 00:17:59,580 --> 00:18:00,500 ez nem változtat. 392 00:18:00,500 --> 00:18:04,840 Tehát ez nem változott, és ha nyers szövegek nyomtatására van, majd meglátjuk lesz 393 00:18:04,840 --> 00:18:08,250 ezen keresztül a hurok nem, sőt, változás, hogy a második karaktert egyáltalán. 394 00:18:08,250 --> 00:18:09,600 Ez még mindig a főváros A. 395 00:18:09,600 --> 00:18:12,690 >> Tehát újra, mi hibakeresés a hiba. 396 00:18:12,690 --> 00:18:17,380 Rájöttünk, hogy nem volt némi logika hiányzik. 397 00:18:17,380 --> 00:18:20,590 És mi kijavítottuk azt idő előtt, mielőtt tényleges végrehajtása ezt a vonalat, 398 00:18:20,590 --> 00:18:24,320 de akkor észre kellett már csak hit Tovább gombra, és ugrani, else if, 399 00:18:24,320 --> 00:18:26,710 azt jelenti, hogy, ha a feltétel nem volt igaz. 400 00:18:26,710 --> 00:18:29,550 Nem, sőt, hogy az eredmény is várható. 401 00:18:29,550 --> 00:18:33,240 Tehát akkor lehetett volna kérni, volt hogy nem volt olyan ügyes, hogy nézd meg 402 00:18:33,240 --> 00:18:38,510 hogy ha a feltétel, és ellenőrizze,, sőt, a feltételt kell értékelni, hogy 403 00:18:38,510 --> 00:18:41,150 igaz a jelenlegi helyzetben. 404 00:18:41,150 --> 00:18:42,880 >> Ez minden, hibakereső program. 405 00:18:42,880 --> 00:18:45,340 Van valakinek kérdése? 406 00:18:45,340 --> 00:18:50,486 Milyen parancsot is elütöttem szokni GDB? 407 00:18:50,486 --> 00:18:53,900 Kérdés: És akkor fogok kérni, kilép? 408 00:18:53,900 --> 00:18:54,390 Igen vagy nem. 409 00:18:54,390 --> 00:18:58,440 Én hit igen, és én is kilép GDB. 410 00:18:58,440 --> 00:19:00,860 >> Szóval ez egy gyors alapozó GDB. 411 00:19:00,860 --> 00:19:03,430 Valójában, egy valós forgatókönyv, Én ezt a munkaidőben. 412 00:19:03,430 --> 00:19:06,710 Én GDBed pontosan ezt a programot Munkaidőben a diák. 413 00:19:06,710 --> 00:19:12,410 És ha visszamegyünk a parancsok láttunk korábban használtuk szünetet fő, az első 414 00:19:12,410 --> 00:19:13,190 dolog, amit csináltunk. 415 00:19:13,190 --> 00:19:16,060 Használtunk távon parancssori argumentumok, a második dolog, amit csináltunk. 416 00:19:16,060 --> 00:19:18,520 Használtuk mellett sokat mozogni minket vonalak. 417 00:19:18,520 --> 00:19:20,310 És ismét, a rövid változat A következő n. 418 00:19:20,310 --> 00:19:22,920 Ez a zárójelben szürke a dián. 419 00:19:22,920 --> 00:19:28,590 >> Mi nem használjuk lépés, de nem feltétlenül kell, hogy ebben az esetben. 420 00:19:28,590 --> 00:19:32,150 De lehet használni egy kicsit később ma, ha a hibakeresés, a 421 00:19:32,150 --> 00:19:36,500 Például, bináris keresés során binary Keresés hívják külön 422 00:19:36,500 --> 00:19:38,200 funkciót, de van Néhány hiba vele. 423 00:19:38,200 --> 00:19:40,440 Fogunk szeretnénk belépni A hívás a bináris keresést, és 424 00:19:40,440 --> 00:19:41,840 valójában debug meg. 425 00:19:41,840 --> 00:19:45,130 Sorolja mi nem használjuk vagy azért, mert meg kellett egy jó értelemben vett a kódot, de ha 426 00:19:45,130 --> 00:19:48,420 nem szeretnénk, hogy egy értelemben, hogy mit kód I körül volt, tudtam csak használni listát. 427 00:19:48,420 --> 00:19:50,310 >> Print használtuk, info helyiek használtuk. 428 00:19:50,310 --> 00:19:53,260 Folytatás nem kellett használni ezt a esetben sem volt meg kell használni 429 00:19:53,260 --> 00:19:55,060 letiltja, de nem használja a kilép. 430 00:19:55,060 --> 00:19:57,850 Ismét, ez a 10 parancsokat, gyakorolni. 431 00:19:57,850 --> 00:20:00,770 Ha megérted a 10 parancsok, meg kell határozni az hibakeresési minden 432 00:20:00,770 --> 00:20:02,525 probléma GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> Így vagyunk arról, hogy menjen, ismét a kritikus szakasz ma megy át 435 00:20:08,420 --> 00:20:09,720 ezek a válogatás és keresés algoritmusok. 436 00:20:09,720 --> 00:20:14,075 Mielőtt ezt ismét, bármilyen kérdése van, megjegyzéseket, aggodalom GDB? 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 Tehát mindenki fogja használni GDB helyett printf? 439 00:20:20,960 --> 00:20:24,550 Tehát mindenkinek, örökre kedvéért, mindenki bólogat a fejét jobbra 440 00:20:24,550 --> 00:20:27,400 Most, úgyhogy találkozunk munkaidő és az összes TFs fogja látni, és 441 00:20:27,400 --> 00:20:29,460 azt mondják, mutasd meg, hogyan kell használni GDB, és akkor képes lesz arra, 442 00:20:29,460 --> 00:20:31,240 mutatni nekik, nem igaz? 443 00:20:31,240 --> 00:20:31,760 Valami? 444 00:20:31,760 --> 00:20:32,640 Talán reménykedve. 445 00:20:32,640 --> 00:20:33,670 Cool. 446 00:20:33,670 --> 00:20:35,790 >> Így fogunk beköltözni válogatás és a keresést. 447 00:20:35,790 --> 00:20:40,710 Látni fogod, van egy lista már rendezett nekünk, de ez nem megy 448 00:20:40,710 --> 00:20:42,220 hogy a helyzet mindig. 449 00:20:42,220 --> 00:20:49,170 Így a probléma meg specifikáció probléma meg három, akkor rövidnadrág 450 00:20:49,170 --> 00:20:51,410 hogy meg lehet nézni, és ez valóban kéri, hogy vigyázzon ezekre a rövidnadrág. 451 00:20:51,410 --> 00:20:55,090 Szintén előadás a múlt héten, átmentünk sok ilyen algoritmusok, tehát vagyok 452 00:20:55,090 --> 00:20:59,150 nem fog időt osztályban folyik mint ezek az algoritmusok újra, vagy rajz 453 00:20:59,150 --> 00:21:01,130 képek, hogy ezek a algoritmusok működnek. 454 00:21:01,130 --> 00:21:04,030 Ismét, ez az információ akkor újra óra előadás, vagy ezt az információt 455 00:21:04,030 --> 00:21:08,570 elfogták kiemelkedően a rövidnadrág ezek a keresések, az összes 456 00:21:08,570 --> 00:21:10,920 amelyek rendelkezésre állnak cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> Tehát ahelyett, hogy mit fogunk tennie, hogy írjon ezeket a programokat. 458 00:21:14,200 --> 00:21:18,190 Van értelme, a mentális modellje, hogy miként dolgoznak, és akkor mi megyünk 459 00:21:18,190 --> 00:21:20,210 tennie, hogy kódot őket az igazi. 460 00:21:20,210 --> 00:21:23,430 Mi fog fordulni, hogy a mentális modell azt a képet, ha úgy tetszik, a 461 00:21:23,430 --> 00:21:24,960 tényleges kódot. 462 00:21:24,960 --> 00:21:28,460 És ha egy kicsit zavaros, vagy ködös a mentális modell, én teljesen 463 00:21:28,460 --> 00:21:28,770 megérteni. 464 00:21:28,770 --> 00:21:30,540 >> Mi valójában nem fog ugrás kód azonnal. 465 00:21:30,540 --> 00:21:36,030 Tehát míg ez a prompt ezen a slide kéri hogy kódot bináris keresés, és a 466 00:21:36,030 --> 00:21:39,470 tulajdonképpen egy iteratív változata bináris keresés, az első dolog, amit 467 00:21:39,470 --> 00:21:42,370 igazán akar, hogy nem is írni egy pszeudokódja. 468 00:21:42,370 --> 00:21:47,020 Szóval van ez a mentális modell hogy hogyan bináris keresés működik. 469 00:21:47,020 --> 00:21:50,060 Vegye ki a lapot, ha egy könnyen elérhető, vagy nyisson meg egy 470 00:21:50,060 --> 00:21:52,520 szövegszerkesztő, és szeretném, ha mindenkit, hogy írjon. 471 00:21:52,520 --> 00:21:57,470 Vegyünk négy perc alatt megírni a pszeudokódját bináris keresést. 472 00:21:57,470 --> 00:21:58,990 >> Ismét gondolj, hogy a mentális modellt. 473 00:21:58,990 --> 00:22:01,980 Majd magához tér, ha kérdése van és felhívni a kép ki. 474 00:22:01,980 --> 00:22:06,220 De először is, mielőtt elkezdenénk programozás, Szeretnék írni a 475 00:22:06,220 --> 00:22:09,920 pszeudokódját bináris keresést, így amikor merülés, van néhány irányba 476 00:22:09,920 --> 00:22:12,110 ahol kellene mennünk. 477 00:22:12,110 --> 00:22:15,330 >> DIÁK: tudjuk vállalja a sor értékeket kapunk már sorrendje? 478 00:22:15,330 --> 00:22:17,960 >> JASON HIRSCHHORN: Tehát a bináris keresés dolgozni - jó kérdés - akkor 479 00:22:17,960 --> 00:22:20,970 kell, hogy egy rendezett tömb értékeket. 480 00:22:20,970 --> 00:22:22,290 Így feltételezem, hogy ez működni fog. 481 00:22:22,290 --> 00:22:23,480 Majd menj vissza ezt a diát. 482 00:22:23,480 --> 00:22:27,220 Látni fogod a lila funkció nyilatkozat bool binary_search int 483 00:22:27,220 --> 00:22:29,230 érték, int értékeket int n. 484 00:22:29,230 --> 00:22:32,910 Ez ismerős, ha már már megközelítette vagy ütött meg 485 00:22:32,910 --> 00:22:34,580 keze piszkos a probléma meg. 486 00:22:34,580 --> 00:22:35,910 >> De ez a függvény deklaráció. 487 00:22:35,910 --> 00:22:39,080 Még egyszer, nem kell aggódnia hogy sok ebben a pillanatban. 488 00:22:39,080 --> 00:22:43,660 Amit igazán akar, hogy nem az, hogy négy perc alatt pszeudokódja bináris 489 00:22:43,660 --> 00:22:46,380 keresés, aztán megyünk Ez alatt az egy csoportban. 490 00:22:46,380 --> 00:22:47,500 És én magához tér. 491 00:22:47,500 --> 00:22:49,590 Ha kérdése van, úgy érzi, szabad, hogy emelje fel a kezét. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> Miért nem veszel két perc befejezni a pszeudokód? 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 Tudom, hogy ez nevetségesnek tűnhet, hogy az költünk olyan sok időt 496 00:25:15,820 --> 00:25:20,350 valamit, ami nem is valójában C, de különösen az ilyen több 497 00:25:20,350 --> 00:25:24,030 kihívást algoritmusok és a probléma meghatározza, hogy mi van, hogy kitaláljuk, 498 00:25:24,030 --> 00:25:27,210 kezdve pszeudokódja nem aggasztó a szintaxis, csak aggódni 499 00:25:27,210 --> 00:25:29,150 A logika, hihetetlenül hasznos. 500 00:25:29,150 --> 00:25:32,720 És így, akkor nem oldja meg a két Hihetetlenül nehéz problémát egyszerre. 501 00:25:32,720 --> 00:25:35,390 Te csak összpontosítva a logika, és a akkor beköltözik a szintaxis. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> OK. 504 00:26:01,385 --> 00:26:03,680 Kezdjük megy keresztül A pszeudokód. 505 00:26:03,680 --> 00:26:05,380 Írtam itt, bináris keresés pszeudokódja. 506 00:26:05,380 --> 00:26:07,360 Majd írni ezt a fórumon együtt. 507 00:26:07,360 --> 00:26:10,040 Vagy írok, és akkor kapsz nekem az utasításokat amire szükségem van. 508 00:26:10,040 --> 00:26:15,010 Így tud valaki adni nekem az első sorában pszeudokód meg 509 00:26:15,010 --> 00:26:18,350 írt bináris keresés? 510 00:26:18,350 --> 00:26:20,258 Igen, Annie? 511 00:26:20,258 --> 00:26:22,698 >> DIÁK: Míg a hossza a lista nagyobb, mint nulla. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> JASON HIRSCHHORN: Amíg hossza A lista nullánál nagyobb. 514 00:26:34,880 --> 00:26:38,810 És ismét azt látjuk, néhány C külsejű szintaktikai dolgokat itt. 515 00:26:38,810 --> 00:26:41,550 De ennek nagy része angol nyelvű. 516 00:26:41,550 --> 00:26:43,980 Volt bárki bármilyen vonalon raktak mielőtt ezt a pszeudo-kód? 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> DIÁK: Kap egy tömb A számok sorrendje. 519 00:26:50,210 --> 00:26:53,600 >> JASON HIRSCHHORN: Ön írta: "kap egy tömb rendezett számok. "Per a 520 00:26:53,600 --> 00:26:56,140 függvény deklaráció, akkor halad egy sor sorrendje számokat. 521 00:26:56,140 --> 00:26:57,280 >> DIÁK: [hallható]. 522 00:26:57,280 --> 00:26:59,030 >> JASON HIRSCHHORN: Tehát mi lesz, hogy. 523 00:26:59,030 --> 00:27:01,820 De igen, ha nem volt, hogy mi kellene rendezni a tömb 524 00:27:01,820 --> 00:27:04,850 számokat, mert a bináris keresés csak akkor működik, sorrendje tömbök. 525 00:27:04,850 --> 00:27:11,300 Tehát míg a hosszú lista nullával egyenlő, én vagyok megy, hogy néhány kapcsos zárójelek 526 00:27:11,300 --> 00:27:15,420 hogy úgy nézzen ki egy kicsit, mint a C. De közben, úgy tűnik, hogy térkép rá a 527 00:27:15,420 --> 00:27:19,550 while ciklus, így ezen belül, míg loop mit kell 528 00:27:19,550 --> 00:27:22,000 tenni bináris keresés? 529 00:27:22,000 --> 00:27:25,530 >> Valaki, aki nem adott nekem választ még, de ki írta ezt? 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> DIÁK: Menj a közepén a lista. 532 00:27:33,320 --> 00:27:33,980 >> JASON HIRSCHHORN: Tom. 533 00:27:33,980 --> 00:27:35,230 Ugrás a közepén a lista. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 És a következő kérdés, hogy mi tegyünk, ha mi vagyunk a 536 00:27:45,530 --> 00:27:46,870 közepén a lista? 537 00:27:46,870 --> 00:27:49,310 >> Tanítvány: A Ellenőrizze, hogy ez A szám, amit keresel. 538 00:27:49,310 --> 00:27:50,120 >> JASON HIRSCHHORN: Kiváló. 539 00:27:50,120 --> 00:28:05,500 Menj a közepén a listát, és ellenőrizze ha a mi értéke van - 540 00:28:05,500 --> 00:28:06,515 fantasztikus. 541 00:28:06,515 --> 00:28:10,460 Volt bárki másra már volt más, mint ez? 542 00:28:10,460 --> 00:28:11,210 Ez pontosan így van. 543 00:28:11,210 --> 00:28:13,800 >> Az első dolog, amit a bináris keresés hogy megy a közepén a listán, és 544 00:28:13,800 --> 00:28:15,870 ellenőrizze, hogy az érték van. 545 00:28:15,870 --> 00:28:19,682 Tehát feltételezem, ha az érték ott, mit tegyünk? 546 00:28:19,682 --> 00:28:21,610 >> DIÁK: Visszatérünk nullát [hallható]. 547 00:28:21,610 --> 00:28:23,400 >> JASON HIRSCHHORN: Igen, ha a érték van, megtaláltuk. 548 00:28:23,400 --> 00:28:27,950 Így azt lehet mondani valamilyen módon, de ez a funkció határozza meg, mondjuk a felhasználó 549 00:28:27,950 --> 00:28:28,520 megtaláltuk. 550 00:28:28,520 --> 00:28:30,950 Ha ez nincs, azonban, hogy ez ahol ez lesz bonyolult. 551 00:28:30,950 --> 00:28:35,120 Tehát, ha nincs ott, valaki más, aki dolgozott bináris keresés vagy 552 00:28:35,120 --> 00:28:36,830 van egy ötlete, most mit tegyünk? 553 00:28:36,830 --> 00:28:37,830 >> DIÁK: kérdés. 554 00:28:37,830 --> 00:28:38,100 >> JASON HIRSCHHORN: Igen? 555 00:28:38,100 --> 00:28:39,920 >> DIÁK: A tömb már rendezve? 556 00:28:39,920 --> 00:28:42,200 >> JASON HIRSCHHORN: Igen, mi feltételezzük a tömb már rendezve. 557 00:28:42,200 --> 00:28:46,480 >> DIÁK: igen, akkor kell ellenőrizni, ha az az érték, amit lát, az nagyobb, mint 558 00:28:46,480 --> 00:28:51,745 a kívánt értéket, akkor mozog , hogy a közepén a másik felét. 559 00:28:51,745 --> 00:28:54,110 >> JASON HIRSCHHORN: Tehát, ha a közepén A lista több, mint amit mi 560 00:28:54,110 --> 00:28:57,440 keres, akkor mit csináljon? 561 00:28:57,440 --> 00:28:58,320 Haladunk hol? 562 00:28:58,320 --> 00:29:01,400 >> DIÁK: akarsz költözni a fele a lista 563 00:29:01,400 --> 00:29:02,780 alacsonyabb, mint a számok. 564 00:29:02,780 --> 00:29:04,460 >> JASON HIRSCHHORN: így fogunk hívja fel, hogy a bal oldali. 565 00:29:04,460 --> 00:29:15,435 Tehát, ha középen nagyobb, kereshetünk a bal fele a listán. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 És akkor a kereső, amit értek keresést? 568 00:29:22,980 --> 00:29:24,010 >> DIÁK: [hallható]. 569 00:29:24,010 --> 00:29:24,410 >> JASON HIRSCHHORN: Mi megy a közepén. 570 00:29:24,410 --> 00:29:25,740 Igazából ismételje meg ezt a dolgot. 571 00:29:25,740 --> 00:29:29,210 Visszamegyünk keresztül while ciklus. 572 00:29:29,210 --> 00:29:31,480 Adok az utolsó - 573 00:29:31,480 --> 00:29:39,047 mást, ha középen kevesebb, mint amit mi, mit csinálunk itt? 574 00:29:39,047 --> 00:29:40,360 >> DIÁK: Menj jobbra. 575 00:29:40,360 --> 00:29:41,610 >> JASON HIRSCHHORN: Keresés jobbra. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 Ez jól néz ki, de nem valakinek bármi, amit lehet, hogy hiányzik, vagy 578 00:29:51,710 --> 00:29:53,200 bármi más, amit tesz a pszeudo-kód? 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 Tehát ez az, amit eddig. 581 00:29:58,410 --> 00:30:00,960 Míg a hossza nagyobb, a lista mint nulla, fogunk menni 582 00:30:00,960 --> 00:30:03,220 a közepén a listán, és ellenőrizze, hogy mi érték van. 583 00:30:03,220 --> 00:30:06,970 >> Ha a középső nagyobb, megyünk keresés balra, még ha a középső 584 00:30:06,970 --> 00:30:09,230 kevesebbet fogunk keresni a jobb. 585 00:30:09,230 --> 00:30:14,430 Így már minden volt némi jártasságot feltételek használjuk a számítástechnikában 586 00:30:14,430 --> 00:30:15,550 és azokat az eszközöket, amink van. 587 00:30:15,550 --> 00:30:18,300 De akkor már észre voltunk beszél angolul, de találtunk egy 588 00:30:18,300 --> 00:30:24,790 Sok dolog, hogy úgy tűnt, hogy a térkép a eszközök már a mi kódolási szerszámkészlet. 589 00:30:24,790 --> 00:30:27,210 Így rögtön a denevér, nem vagyunk majd ténylegesen kódot sem. 590 00:30:27,210 --> 00:30:33,300 >> Mit látunk itt, angolul, hogy térképek az a dolog, amit írni C-ben? 591 00:30:33,300 --> 00:30:34,560 >> DIÁK: Bár a. 592 00:30:34,560 --> 00:30:35,320 >> JASON HIRSCHHORN: Bár. 593 00:30:35,320 --> 00:30:40,610 Tehát ez a míg itt térképeket, hogy mit? 594 00:30:40,610 --> 00:30:42,630 >> DIÁK: A while ciklus. 595 00:30:42,630 --> 00:30:43,200 >> JASON HIRSCHHORN: A while ciklus? 596 00:30:43,200 --> 00:30:44,540 Vagy talán még általánosabban a hurok. 597 00:30:44,540 --> 00:30:46,260 Azt akarjuk, hogy tegyen valamit, újra és újra. 598 00:30:46,260 --> 00:30:49,050 Így fogunk kódot a hurok. 599 00:30:49,050 --> 00:30:51,640 És mi már tudjuk, mert már kész ezt egy párszor, és mi 600 00:30:51,640 --> 00:30:54,180 rengeteg példa, hogyan ténylegesen írni 601 00:30:54,180 --> 00:30:55,310 ez a mutató a hurok. 602 00:30:55,310 --> 00:30:56,160 Annak érdekében, hogy legyen elég egyszerű. 603 00:30:56,160 --> 00:30:58,070 Meg kell lennie arra, hogy, hogy kezdett elég gyorsan. 604 00:30:58,070 --> 00:31:01,830 >> Mi mást látunk itt? 605 00:31:01,830 --> 00:31:06,820 Milyen egyéb építmények szintaxist, a dolgok hogy mi vagyunk tisztában a C-ben mi is 606 00:31:06,820 --> 00:31:09,790 már van egyfajta alapú le a szavakat használt? 607 00:31:09,790 --> 00:31:10,830 Igen, Anna? 608 00:31:10,830 --> 00:31:11,360 [Nem hallható] 609 00:31:11,360 --> 00:31:12,990 csak vicceltem. 610 00:31:12,990 --> 00:31:13,540 Anna, megy előre. 611 00:31:13,540 --> 00:31:14,530 >> DIÁK: Ha és más. 612 00:31:14,530 --> 00:31:16,260 >> JASON HIRSCHHORN: Ha és más - itt. 613 00:31:16,260 --> 00:31:18,840 Szóval, mit ezek néznek ki? 614 00:31:18,840 --> 00:31:20,420 >> DIÁK: Egy, ha más nyilatkozatot. 615 00:31:20,420 --> 00:31:21,560 >> JASON HIRSCHHORN: Igen, körülmények között, nem igaz? 616 00:31:21,560 --> 00:31:24,650 Tehát akkor valószínűleg szükség van, hogy levelet bizonyos feltételek mellett. 617 00:31:24,650 --> 00:31:31,185 És ismét, bár lehet zavaró először, akkor általában van egy értelme most 618 00:31:31,185 --> 00:31:34,010 hogyan kell írni feltételek és A szintaxis feltételeket. 619 00:31:34,010 --> 00:31:36,850 És ha nem, akkor csak nézz fel a szintaxist feltételek, kivágás és beillesztés 620 00:31:36,850 --> 00:31:39,950 hogy azért, mert tudjuk, hogy szükség van egy feltétele van. 621 00:31:39,950 --> 00:31:44,910 Minden más dolog, azt látjuk, hogy térképet rá dolog, amit talán meg kell csinálni a C? 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 Igen, Aleha? 624 00:31:48,960 --> 00:31:50,370 >> DIÁK: Ez talán nyilvánvaló, mindössze ellenőrzésére, ha a 625 00:31:50,370 --> 00:31:51,990 értéke egyenlő valamit. 626 00:31:51,990 --> 00:31:54,578 >> JASON HIRSCHHORN: Szóval hogyan lehet ellenőrizni és - így megy, hogy a közepén a lista 627 00:31:54,578 --> 00:31:55,610 és ellenőrizze, hogy az érték van? 628 00:31:55,610 --> 00:31:56,570 Hogyan csináljuk, hogy a C? 629 00:31:56,570 --> 00:31:58,450 Mi a szintaxis ez? 630 00:31:58,450 --> 00:31:59,235 >> DIÁK: Egyenlő, egyenlő. 631 00:31:59,235 --> 00:32:00,650 >> JASON HIRSCHHORN: Egyenlő, egyenlő. 632 00:32:00,650 --> 00:32:03,540 Tehát ez az ellenőrzés valószínűleg lesz hogy egy egyenrangú, egyenlő. 633 00:32:03,540 --> 00:32:04,510 Így tudni fogjuk, szükségünk van valahol. 634 00:32:04,510 --> 00:32:07,510 És valóban, csak írásban is, látjuk azokat a más dolog. 635 00:32:07,510 --> 00:32:11,400 Fogunk, hogy némi összehasonlító operátorok ott - 636 00:32:11,400 --> 00:32:12,010 fantasztikus. 637 00:32:12,010 --> 00:32:14,980 Így néznek ki által és nagy, még nem írt a 638 00:32:14,980 --> 00:32:16,390 szó C kódot sem. 639 00:32:16,390 --> 00:32:20,610 De mi van a mentális modell le keresztül előadások és a rövidnadrág. 640 00:32:20,610 --> 00:32:22,350 >> Írtunk pszeudo-kód, mint egy csoport. 641 00:32:22,350 --> 00:32:27,110 És már, hogy van 80%-os, ha nem 90%-a, amit meg kell tennie. 642 00:32:27,110 --> 00:32:28,550 Most már csak meg kell kódot meg, ami megint egy 643 00:32:28,550 --> 00:32:30,110 nem triviális probléma megoldására. 644 00:32:30,110 --> 00:32:31,890 De legalább mi ragadtunk a logika. 645 00:32:31,890 --> 00:32:38,040 Legalábbis most, amikor megyünk munkaidő, Azt lehet mondani, tudom, hogy mire van szükségem 646 00:32:38,040 --> 00:32:40,160 csinálni, de emlékeztetsz nekem a szintaxis? 647 00:32:40,160 --> 00:32:42,940 Vagy akkor is, ha munkaidőn zsúfoltak, akkor akkor a Google a szintaxis, hanem 648 00:32:42,940 --> 00:32:45,040 mint hogy megragadt a logika. 649 00:32:45,040 --> 00:32:48,570 >> És ismét, ahelyett, hogy megoldani A logika és a szintaxis problémák minden 650 00:32:48,570 --> 00:32:51,900 egyszerre, gyakran sokkal jobb, hogy szünet a két nehéz problémák off-ba 651 00:32:51,900 --> 00:32:58,280 két kezelhetőbb is, és ezt a pszeudo-kód, majd az első kódot C. 652 00:32:58,280 --> 00:33:00,620 Akkor lássuk, mit tettem a pszeudó-kódja idő előtt. 653 00:33:00,620 --> 00:33:04,060 >> Míg a hossza nagyobb, a lista mint nulla, nézd meg a középen 654 00:33:04,060 --> 00:33:05,090 a listán. 655 00:33:05,090 --> 00:33:09,610 Ha a szám megtalálható vissza igaz, más Ha a szám nagyobb, keresés balra. 656 00:33:09,610 --> 00:33:13,200 Else Ha a szám kisebb, keresés jobb, return false. 657 00:33:13,200 --> 00:33:18,710 Tehát úgy néz ki, közel azonos, ha nem közel azonos azzal, amit írtam. 658 00:33:18,710 --> 00:33:23,030 Valójában, Tom, mit mondott az első, törés a közepén a listán, és ha a 659 00:33:23,030 --> 00:33:24,880 szám található a két állítás valójában, amit tettem. 660 00:33:24,880 --> 00:33:25,507 >> Én össze őket. 661 00:33:25,507 --> 00:33:27,100 Kellett volna hallgatnom akkor az első alkalommal. 662 00:33:27,100 --> 00:33:30,640 Tehát ez a pszeudo-kód van. 663 00:33:30,640 --> 00:33:35,060 Ha azt szeretné, hogy most, sajnálom, menj vissza a kiinduló problémát. 664 00:33:35,060 --> 00:33:37,780 Nézzük kód binary.c. 665 00:33:37,780 --> 00:33:40,870 Így végre egy iteratív változata bináris keresés a következő 666 00:33:40,870 --> 00:33:42,420 függvény deklaráció. 667 00:33:42,420 --> 00:33:44,550 >> És akkor nem kell másolni le csak még. 668 00:33:44,550 --> 00:33:49,470 Én valóban fog nyitni akár itt binary.c. 669 00:33:49,470 --> 00:33:52,880 Tehát a függvény nyilatkozat a képernyő közepén. 670 00:33:52,880 --> 00:33:57,570 És látni fogod vettem a pszeudo-kód az én oldalon, de közel azonos 671 00:33:57,570 --> 00:33:59,740 ahhoz, amit írtam, és fel, hogy az Ön számára. 672 00:33:59,740 --> 00:34:06,010 Tehát most, vessünk öt perc alatt kódot ezt a funkciót. 673 00:34:06,010 --> 00:34:08,199 >> És ismét, ha bármilyen kérdése van, tegye fel a kezét, hadd tudjam meg, én 674 00:34:08,199 --> 00:34:08,710 magához tér. 675 00:34:08,710 --> 00:34:09,800 >> DIÁK: [hallható]. 676 00:34:09,800 --> 00:34:12,380 >> JASON HIRSCHHORN Szóval vettem a bináris Keresés meghatározása a 677 00:34:12,380 --> 00:34:14,429 fel, a 12. sorban. 678 00:34:14,429 --> 00:34:16,429 Ez az, amit én kaptam az én slide. 679 00:34:16,429 --> 00:34:20,940 És akkor ez a pszeudo-kód csak másolás és beillesztett dia, 680 00:34:20,940 --> 00:34:22,190 pszeudo-kód slide. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 Én még mindig nem hallotta [hallható]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> Tehát, ha befejezte a végrehajtás, azt akarom, hogy ellenőrizze azt. 685 00:37:15,820 --> 00:37:19,410 Én e-mailben, hogy a helpers.h fájl korábban ebben az osztályban. 686 00:37:19,410 --> 00:37:22,360 És ez elérhető lesz az interneten is letölthető az ember nézi 687 00:37:22,360 --> 00:37:24,750 Ebben a részben késleltetett. 688 00:37:24,750 --> 00:37:29,350 És én csak használt az általános eloszlás kódot pset3. 689 00:37:29,350 --> 00:37:34,590 Így vettem beolvasása sikertelen, akkor az én helpers.h fájl nem pedig a fájl helpers.h 690 00:37:34,590 --> 00:37:36,280 ez megadta az elosztó kódot. 691 00:37:36,280 --> 00:37:39,310 >> És volt, hogy egy másik változás elérése sikertelen ahelyett, hívja egyszerűen 692 00:37:39,310 --> 00:37:42,770 keresés, hívja binary_search. 693 00:37:42,770 --> 00:37:49,080 Tehát, ha szeretné, hogy tesztelje a kódot, tudjuk, hogy az, hogy hogyan kell csinálni. 694 00:37:49,080 --> 00:37:52,530 Valójában, amikor mi fut a kód most, én csak tett egy példányát 695 00:37:52,530 --> 00:37:59,820 én pset3 könyvtár, újra cserélték ki A segítők fájlokat, majd arról, hogy 696 00:37:59,820 --> 00:38:04,695 változik elérése sikertelen hívni binary_search ahelyett, hogy egyszerűen keresni. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> JASON HIRSCHHORN: Igen. 699 00:40:09,120 --> 00:40:11,258 Van kérdése? 700 00:40:11,258 --> 00:40:12,150 >> DIÁK: Nevermind. 701 00:40:12,150 --> 00:40:12,600 >> JASON HIRSCHHORN: Semmi gond. 702 00:40:12,600 --> 00:40:13,370 Nos, kezdjük. 703 00:40:13,370 --> 00:40:15,090 Mi fogja ezt a kódot, mint egy csoport. 704 00:40:15,090 --> 00:40:16,050 Még egy megjegyzés. 705 00:40:16,050 --> 00:40:20,600 Ismét, ez van, könnyen cserélhetők in Probléma Set Három. 706 00:40:20,600 --> 00:40:25,530 Ott van a helpers.h fájl, hanem mint a helpers.h vagyunk adni, 707 00:40:25,530 --> 00:40:28,560 kijelenti, bináris keresés, buborék sort, és a kiválasztás sort. 708 00:40:28,560 --> 00:40:37,400 És beolvasása sikertelen, észre fogod venni on-line, mi az, hogy a 68. soráig, nevezzük bináris 709 00:40:37,400 --> 00:40:39,160 keresés helyett keresést. 710 00:40:39,160 --> 00:40:42,930 Tehát újra, a kód, ami elérhető on-line, vagy a kódot, amit a 711 00:40:42,930 --> 00:40:46,590 létre most könnyen cserélhetők in p szett 3, hogy ellenőrizze azt. 712 00:40:46,590 --> 00:40:50,620 >> De először nézzük kódot bináris keresést. 713 00:40:50,620 --> 00:40:53,690 A függvény deklaráció, visszatérünk a bool. 714 00:40:53,690 --> 00:40:55,810 Veszünk egy egész nevű értéket. 715 00:40:55,810 --> 00:40:59,285 Veszünk egy sor egész számok nevezett értékek, és mi n is 716 00:40:59,285 --> 00:41:00,850 a méret a tömb. 717 00:41:00,850 --> 00:41:05,640 On line 10 itt, én éles közé stdbool.h. 718 00:41:05,640 --> 00:41:07,360 Tudja valaki, hogy miért van ott? 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 Tehát mit kódsort csinálni? 721 00:41:16,600 --> 00:41:19,880 >> DIÁK: Ez lehetővé teszi, hogy egy bool visszatérési típus. 722 00:41:19,880 --> 00:41:20,350 >> JASON HIRSCHHORN: Pontosan. 723 00:41:20,350 --> 00:41:22,300 >> DIÁK: Vagy ez egy könyvtár, amely lehetővé teszi a hogy egy bool visszatérési típus. 724 00:41:22,300 --> 00:41:27,590 >> JASON HIRSCHHORN: Tehát az éles közé stdbool.h vonal ad nekem egy kis 725 00:41:27,590 --> 00:41:31,340 definíciók és nyilatkozatok a dolgok , hogy én vagyok szabad használni 726 00:41:31,340 --> 00:41:32,400 ezt a könyvtárat. 727 00:41:32,400 --> 00:41:36,570 Tehát azok között, azt mondja, hogy van Az ilyen típusú úgynevezett bool, és lehet 728 00:41:36,570 --> 00:41:37,750 igaz vagy hamis. 729 00:41:37,750 --> 00:41:39,010 Szóval ez a vonal nem. 730 00:41:39,010 --> 00:41:41,680 És ha én nem ezt a vonalat, én bajba írom ezt a 731 00:41:41,680 --> 00:41:43,520 szó itt, bool, ott. 732 00:41:43,520 --> 00:41:44,140 Pontosan így van. 733 00:41:44,140 --> 00:41:46,430 Szóval kell, hogy ezt a kódot. 734 00:41:46,430 --> 00:41:47,690 OK. 735 00:41:47,690 --> 00:41:51,860 Szóval ez megint egy iteratív verzió, nem rekurzív egyet. 736 00:41:51,860 --> 00:41:53,820 Így hát az induláshoz. 737 00:41:53,820 --> 00:41:56,200 >> Kezdjük az első sor pszeudo kódot. 738 00:41:56,200 --> 00:41:58,770 És remélhetőleg, mi lesz - vagy sem reménykedve. 739 00:41:58,770 --> 00:42:00,530 Fogunk menni körül a szobában. 740 00:42:00,530 --> 00:42:05,110 Elmegyünk sorról sorra, és én segítek kitalálni a sort, amire szükségünk van 741 00:42:05,110 --> 00:42:06,310 írni az első. 742 00:42:06,310 --> 00:42:10,550 Tehát míg a hosszú lista nagyobb, mint nulla. 743 00:42:10,550 --> 00:42:12,680 Kezdjük az első. 744 00:42:12,680 --> 00:42:15,190 Mit sort írjak itt a kód? 745 00:42:15,190 --> 00:42:19,470 >> DIÁK: Míg a zárójel n értéke 0-nál nagyobb. 746 00:42:19,470 --> 00:42:21,900 >> JASON HIRSCHHORN: Amíg n nagy, mint a 0-ra. 747 00:42:21,900 --> 00:42:26,550 Tehát n akkora, mint egy lista, és mi ellenőrizni kell, - 748 00:42:26,550 --> 00:42:26,800 >> [Közbeiktatásával VOICES] 749 00:42:26,800 --> 00:42:27,660 >> JASON HIRSCHHORN: - Tessék? 750 00:42:27,660 --> 00:42:29,360 >> DIÁK: Honnan tudjuk, hogy n a méret a lista? 751 00:42:29,360 --> 00:42:29,690 >> JASON HIRSCHHORN: Elnézést. 752 00:42:29,690 --> 00:42:34,690 Per a Pset specifikáció, a keresés és rendezés funkciókat kell írni, 753 00:42:34,690 --> 00:42:36,230 n jelentése a méret a listán. 754 00:42:36,230 --> 00:42:37,710 Elfelejtettem elmagyarázni, hogy itt van. 755 00:42:37,710 --> 00:42:41,310 De igen. n a mérete A lista, ebben az esetben. 756 00:42:41,310 --> 00:42:44,740 Tehát, míg n értéke 0-nál nagyobb. 757 00:42:44,740 --> 00:42:45,580 OK. 758 00:42:45,580 --> 00:42:50,090 Ez lehet bizonyítani egy kicsit problémás azonban, ha a dolgok tovább. 759 00:42:50,090 --> 00:42:54,510 Mert továbbra is tudni, hogy az a lista mérete ez alatt 760 00:42:54,510 --> 00:43:06,640 funkciót, de azt mondom, elindul egy sor 5 egész. 761 00:43:06,640 --> 00:43:08,950 És mi megy keresztül, és mi már most már szűkült le, hogy 762 00:43:08,950 --> 00:43:10,310 egy sor 2. egészek. 763 00:43:10,310 --> 00:43:12,160 Ebből 2 egész számok ez? 764 00:43:12,160 --> 00:43:15,895 A méret 2, most, hogy szeretnénk nézd meg, de 2, hogy? 765 00:43:15,895 --> 00:43:17,720 Van ennek értelme, ez a kérdés? 766 00:43:17,720 --> 00:43:18,020 >> OK. 767 00:43:18,020 --> 00:43:19,120 Megkérdezem újra. 768 00:43:19,120 --> 00:43:26,640 Tehát elindul ez a tömb 5 egész, és n értéke 5, ugye? 769 00:43:26,640 --> 00:43:28,050 Fogunk végigmenni itt. 770 00:43:28,050 --> 00:43:31,560 akkor talán változtatni a méretét, van, a dolgok mennek tovább. 771 00:43:31,560 --> 00:43:32,700 Melyik az, amit mondani akarunk csinálni. 772 00:43:32,700 --> 00:43:34,150 Nem akarjuk keresni teljes a dolog újra. 773 00:43:34,150 --> 00:43:35,480 Tehát azt mondom, változtassa meg a 2.. 774 00:43:35,480 --> 00:43:36,970 Vesszük a fele a listán, ez furcsa. 775 00:43:36,970 --> 00:43:38,800 Szóval, csak vedd 2.. 776 00:43:38,800 --> 00:43:40,590 Tehát most n = 2. 777 00:43:40,590 --> 00:43:42,780 Elnézést kérek a szegények szárazon törölhető markerek. 778 00:43:42,780 --> 00:43:43,080 Nem igaz? 779 00:43:43,080 --> 00:43:45,670 És keresi a listában Ismét egy listát a 2-es méret. 780 00:43:45,670 --> 00:43:48,580 Nos, a sor még az 5-ös. 781 00:43:48,580 --> 00:43:51,920 Azt mondjuk, mi csak azt akarjuk, hogy Keresés 2 foltok is. 782 00:43:51,920 --> 00:43:53,590 Tehát melyik 2. foltok azok? 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> Van ennek értelme? 785 00:43:58,815 --> 00:44:00,290 Ők a bal 2 foltok? 786 00:44:00,290 --> 00:44:01,940 Vajon a jobb 2 foltok? 787 00:44:01,940 --> 00:44:03,540 Vajon a középső 2 foltok? 788 00:44:03,540 --> 00:44:06,350 Mi tört a problémát le, de Igazából nem tudom, melyik része 789 00:44:06,350 --> 00:44:11,600 A probléma, hogy még mindig nézett, csak azáltal, hogy a 2 változó. 790 00:44:11,600 --> 00:44:16,450 Tehát szükségünk van egy kicsit több, mint, míg n értéke 0-nál nagyobb. 791 00:44:16,450 --> 00:44:21,410 Tudnunk kell, hogy ha ez a n a mi tényleges tömbben. 792 00:44:21,410 --> 00:44:26,660 >> Tehát nem valakinek a változik ez a sor? 793 00:44:26,660 --> 00:44:27,970 A legtöbb ilyen sor tökéletesen megfelelő. 794 00:44:27,970 --> 00:44:29,170 Van egy másik mellett? 795 00:44:29,170 --> 00:44:32,510 Tudunk cserélni valamit ki n hogy ez a vonal egy kicsit jobban? 796 00:44:32,510 --> 00:44:32,865 Mm-hm? 797 00:44:32,865 --> 00:44:38,040 >> DIÁK: Tud inicializálni a változót mint a hossza n, hogy lesz ezután használható 798 00:44:38,040 --> 00:44:39,600 később a funkciót? 799 00:44:39,600 --> 00:44:42,060 >> JASON HIRSCHHORN: Tehát inicializálja egy változó hosszúságú n, 800 00:44:42,060 --> 00:44:42,900 és használni, hogy később? 801 00:44:42,900 --> 00:44:47,070 De aztán csak frissíteni hossza és még befut ez a probléma, ahol 802 00:44:47,070 --> 00:44:51,180 vágja le a hossza a probléma, de soha nem tudni, hogy hol, valóban, 803 00:44:51,180 --> 00:44:52,510 ilyen hosszú térképek rá. 804 00:44:52,510 --> 00:44:54,790 >> Tanítvány: Nem fog megtörténni később, amikor azt mondod, keresés balra, 805 00:44:54,790 --> 00:44:55,746 Keresés igaz? 806 00:44:55,746 --> 00:44:57,640 Fogsz menni egy másik terület a - 807 00:44:57,640 --> 00:44:59,110 >> JASON HIRSCHHORN: fogunk menni egy olyan területre, de hogyan tudjuk 808 00:44:59,110 --> 00:45:01,150 amelyek menni? 809 00:45:01,150 --> 00:45:03,800 Ha csak a tömb, és ez n, honnan tudjuk, hogy hol 810 00:45:03,800 --> 00:45:05,050 menj a tömbben. 811 00:45:05,050 --> 00:45:05,900 A hátsó, igen? 812 00:45:05,900 --> 00:45:07,507 >> DIÁK: Van, mint a kisebb kötött, és egy felső korlátot változót vagy 813 00:45:07,507 --> 00:45:08,586 valami ilyesmi? 814 00:45:08,586 --> 00:45:09,060 >> JASON HIRSCHHORN: OK. 815 00:45:09,060 --> 00:45:10,780 Tehát ez egy másik ötlet. 816 00:45:10,780 --> 00:45:13,490 Ahelyett, hogy csak nyomon követése a méret, akkor nyomon követni az alsó és 817 00:45:13,490 --> 00:45:14,770 felső határa változó. 818 00:45:14,770 --> 00:45:17,840 Szóval hogyan lehet kiszámítani a méret egy alsó határ, és a felső határ? 819 00:45:17,840 --> 00:45:18,520 >> [Közbeiktatásával VOICES] 820 00:45:18,520 --> 00:45:19,710 >> JASON HIRSCHHORN: kivonás. 821 00:45:19,710 --> 00:45:23,650 És azt is, hogy nyomon követhetőek az alsó kötött és a felső kötött, hogy tudassa velünk, 822 00:45:23,650 --> 00:45:26,215 vagyunk keresi a két? 823 00:45:26,215 --> 00:45:28,220 Vajon keresi a két itt? 824 00:45:28,220 --> 00:45:29,540 Vagyunk keresni a középső két? 825 00:45:29,540 --> 00:45:32,810 Valószínűleg nem a középső két, mert a ez valójában bináris keresést. 826 00:45:32,810 --> 00:45:37,320 De most már képes lesz arra, hogy a méret, hanem a korlátokat a tömb. 827 00:45:37,320 --> 00:45:40,020 Lényegében, ha van az óriás telefonkönyv, mi rip félbe. 828 00:45:40,020 --> 00:45:42,990 Ma már tudjuk, ha ez a kisebb telefonkönyv. 829 00:45:42,990 --> 00:45:45,260 De valójában nem szakító A telefonkönyv felét. 830 00:45:45,260 --> 00:45:48,570 Meg kell még tudni, hogy hol a új határai a probléma. 831 00:45:48,570 --> 00:45:51,645 Van valakinek kérdése erről? 832 00:45:51,645 --> 00:45:52,440 Igen? 833 00:45:52,440 --> 00:45:56,020 >> DIÁK: Vajon működik létrehozásával változót, i, hogy akkor csak váltani 834 00:45:56,020 --> 00:46:00,770 a helyzetét i képest a aktuális pozíciót, és a hossza, n? 835 00:46:00,770 --> 00:46:01,710 >> JASON HIRSCHHORN: És mi az én? 836 00:46:01,710 --> 00:46:04,110 >> DIÁK: Mint én, hogy mint egyfajta - 837 00:46:04,110 --> 00:46:08,040 Mint akkor inicializálni én, hogy a középső pozícióban a tömb. 838 00:46:08,040 --> 00:46:12,540 És aztán, ha az érték az i-es pozícióban a közepén, a tömb találták 839 00:46:12,540 --> 00:46:17,870 lehet kevesebb, mint az érték van szüksége, most válik, a hossza a tömb, plusz 840 00:46:17,870 --> 00:46:19,215 az i értéke 2 osztva. 841 00:46:19,215 --> 00:46:20,270 Mint látod, műszak i - 842 00:46:20,270 --> 00:46:20,770 >> JASON HIRSCHHORN: Így van. 843 00:46:20,770 --> 00:46:21,165 >> DIÁK: - akár a - 844 00:46:21,165 --> 00:46:24,010 >> JASON HIRSCHHORN: Tehát én vagyok majdnem pozitív, hogy működni fog. 845 00:46:24,010 --> 00:46:26,800 De a lényeg, hogy meg kell két információkat itt. 846 00:46:26,800 --> 00:46:30,050 Meg tudod csinálni a kezdete és vége, vagy meg tudod csinálni a méretet, majd 847 00:46:30,050 --> 00:46:31,060 Néhány marker. 848 00:46:31,060 --> 00:46:32,630 De nem kell két darab információ itt. 849 00:46:32,630 --> 00:46:34,160 Nem lehet kapni az csak egy. 850 00:46:34,160 --> 00:46:35,830 Van ennek értelme? 851 00:46:35,830 --> 00:46:39,560 >> Szóval megyek át, és fogunk csinálni [hallhatatlan] 852 00:46:39,560 --> 00:46:41,330 és hozzon létre egy markerek. 853 00:46:41,330 --> 00:46:42,690 Szóval mit írsz a kódot? 854 00:46:42,690 --> 00:46:46,190 >> DIÁK: Csak annyit mondtam int kötött az egyik a 0-val egyenlő. 855 00:46:46,190 --> 00:46:47,790 >> JASON HIRSCHHORN: Nevezzük hogy int, kezdetét. 856 00:46:47,790 --> 00:46:49,140 >> DIÁK: OK. 857 00:46:49,140 --> 00:46:50,590 >> JASON HIRSCHHORN: Ez teszi több értelme számomra. 858 00:46:50,590 --> 00:46:51,670 És? 859 00:46:51,670 --> 00:46:54,340 >> DIÁK: Azt mondtam, azt hiszem, int véget. 860 00:46:54,340 --> 00:46:55,870 >> JASON HIRSCHHORN: int véget. 861 00:46:55,870 --> 00:46:57,640 >> DIÁK: Azt hiszem, n mínusz 1, vagy valami ilyesmi. 862 00:46:57,640 --> 00:46:59,100 Hasonlóan, az utolsó elem. 863 00:46:59,100 --> 00:47:02,310 >> JASON HIRSCHHORN: Szóval azt írta, int kezdet értéke 0, pontosvessző, és int 864 00:47:02,310 --> 00:47:04,320 vége egyenlő n mínusz 1, pontosvessző. 865 00:47:04,320 --> 00:47:06,850 Tehát lényegében, amit csinálunk itt, 0 az első helyzetbe. 866 00:47:06,850 --> 00:47:09,570 És mint tudjuk, tömbök, nem mennek n-ig mennek fel n mínusz 1. 867 00:47:09,570 --> 00:47:11,110 Tehát van néhány határain a tömb. 868 00:47:11,110 --> 00:47:15,730 És ezek a kezdeti határait történetesen A kezdeti határai a probléma. 869 00:47:15,730 --> 00:47:16,640 OK. 870 00:47:16,640 --> 00:47:19,200 Szóval ez jól hangzik. 871 00:47:19,200 --> 00:47:22,380 Akkor, ha megyünk vissza ezt a sort, míg a lista hossza nagyobb, mint 0, 872 00:47:22,380 --> 00:47:24,752 mit, n helyett, amennyiben teszünk itt? 873 00:47:24,752 --> 00:47:28,820 >> DIÁK: Írja vége mínusz kezdet. 874 00:47:28,820 --> 00:47:34,780 >> JASON HIRSCHHORN: Amíg véget mínusz elején nagyobb, mint 0-ra? 875 00:47:34,780 --> 00:47:35,480 OK. 876 00:47:35,480 --> 00:47:37,730 És mi volna, ha azt akartuk, hogy tenni, hogy egy kicsit szebb, mit 877 00:47:37,730 --> 00:47:38,980 mást tehettünk volna? 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 Ha akartuk, hogy tiszta ez a kód egy kicsit? 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 Hogyan lehet megszabadulni a 0-ra? 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 Ez csak stílus kérdése. 884 00:47:52,690 --> 00:47:53,690 Ez így van most. 885 00:47:53,690 --> 00:47:54,870 >> DIÁK: Ending nem egyenlő elején? 886 00:47:54,870 --> 00:47:55,740 >> JASON HIRSCHHORN: Meg tudjuk csinálni, mi? 887 00:47:55,740 --> 00:47:56,730 >> [Közbeiktatásával VOICES] 888 00:47:56,730 --> 00:47:57,330 >> DIÁK: Ending nagyobb? 889 00:47:57,330 --> 00:47:57,720 >> JASON HIRSCHHORN: Igen. 890 00:47:57,720 --> 00:48:01,110 Mi is csak csinálni, miközben véget nagyobb, mint az elején. 891 00:48:01,110 --> 00:48:03,580 Rendben. 892 00:48:03,580 --> 00:48:06,240 Adtunk kezdik a másik oldalon az, hogy mi megszabadultak a 0-ra. 893 00:48:06,240 --> 00:48:08,000 Tehát ez csak úgy néz ki, a kicsit tisztább. 894 00:48:08,000 --> 00:48:08,990 OK. 895 00:48:08,990 --> 00:48:11,460 Így, míg a hosszú listán 0, írtunk , hogy míg a nagyobb végződő 896 00:48:11,460 --> 00:48:12,240 , mint a kezdet. 897 00:48:12,240 --> 00:48:19,840 Fogunk tenni a szükséges kapcsos zárójelek között, és akkor az első dolog 898 00:48:19,840 --> 00:48:22,090 akarunk tenni, hogy nézd meg őket egy kis lista. 899 00:48:22,090 --> 00:48:22,510 Önnek? 900 00:48:22,510 --> 00:48:23,320 Tudna nekem - 901 00:48:23,320 --> 00:48:26,460 >> DIÁK: Ha a zárójel értéke szögletes zárójel - 902 00:48:26,460 --> 00:48:30,450 >> JASON HIRSCHHORN: Ha a zárójelben érték szögletes zárójel. 903 00:48:30,450 --> 00:48:33,210 >> DIÁK: Ending osztva 2-vel. 904 00:48:33,210 --> 00:48:33,952 >> JASON HIRSCHHORN: vége? 905 00:48:33,952 --> 00:48:35,280 >> DIÁK: Látom, hogy a probléma a - 906 00:48:35,280 --> 00:48:35,750 >> JASON HIRSCHHORN: OK. 907 00:48:35,750 --> 00:48:39,150 Nos, nézd meg a közepén. 908 00:48:39,150 --> 00:48:41,226 Honnan tudjuk, hogy mi a közepén van? 909 00:48:41,226 --> 00:48:42,450 Igen. 910 00:48:42,450 --> 00:48:43,070 Hadd törölje a kódot. 911 00:48:43,070 --> 00:48:46,360 Honnan tudjuk, hogy mi a közepén van? 912 00:48:46,360 --> 00:48:48,003 A semmit, ha már az elején és a végén, hogyan találja 913 00:48:48,003 --> 00:48:48,876 a közepén? 914 00:48:48,876 --> 00:48:49,590 >> Diák: átlag. 915 00:48:49,590 --> 00:48:51,820 >> DIÁK: felveszi őket együtt, és akkor - 916 00:48:51,820 --> 00:48:53,150 >> JASON HIRSCHHORN: Add, együtt, és akkor? 917 00:48:53,150 --> 00:48:54,090 >> DIÁK: És te átlag. 918 00:48:54,090 --> 00:48:55,050 Osszuk meg 2-vel. 919 00:48:55,050 --> 00:48:56,500 >> JASON HIRSCHHORN: Add, együtt, és oszd 2. 920 00:48:56,500 --> 00:48:59,400 Így int közepén egyenlő? 921 00:48:59,400 --> 00:49:01,120 Tom, tudsz adni nekem? 922 00:49:01,120 --> 00:49:03,550 >> DIÁK: Beginning plus végződő - 923 00:49:03,550 --> 00:49:04,950 >> JASON HIRSCHHORN: Beginning plus véget. 924 00:49:04,950 --> 00:49:06,880 >> DIÁK: Minden, konzol, osztva 2-vel. 925 00:49:06,880 --> 00:49:10,940 >> JASON HIRSCHHORN: Minden, zárójelben, 2. osztva. 926 00:49:10,940 --> 00:49:16,300 Ahhoz, hogy ad nekem a középső semmit, igaz? 927 00:49:16,300 --> 00:49:18,980 >> DIÁK: Akkor is meg kell, hogy kerek fel. 928 00:49:18,980 --> 00:49:19,990 >> JASON HIRSCHHORN: Mit azt jelenti, meg kell, hogy kerek fel? 929 00:49:19,990 --> 00:49:20,400 >> [Közbeiktatásával VOICES] 930 00:49:20,400 --> 00:49:24,520 >> DIÁK: mert ha egy furcsa számot, akkor ez olyan, mint - 931 00:49:24,520 --> 00:49:25,440 >> JASON HIRSCHHORN: Nos, rendben. 932 00:49:25,440 --> 00:49:26,360 Így tudtam kerek fel. 933 00:49:26,360 --> 00:49:33,350 De ha ez egy páratlan szám, egy 5, tudok figyelembe 1-re a közepén. 934 00:49:33,350 --> 00:49:35,665 Vagy ha ez egy páros szám, inkább ez jobb esetben. 935 00:49:35,665 --> 00:49:39,600 Ha ez 4, már csak 4, tudok venni Az első "középső", idézet, idézet vége vagy 936 00:49:39,600 --> 00:49:41,760 A második "középső" egy. 937 00:49:41,760 --> 00:49:46,390 Vagy működne a bináris keresés, így valójában nem kell kerekíteni. 938 00:49:46,390 --> 00:49:48,640 De van egy másik dolog, amit kell nézni ezt a sort. 939 00:49:48,640 --> 00:49:50,530 Lehet, hogy nem veszik észre, hogy még, de majd jön vissza rá. 940 00:49:50,530 --> 00:49:53,200 Mivel ez a vonal valójában még szüksége van egy másik dolog. 941 00:49:53,200 --> 00:49:55,990 >> De eddig is írtam négy sornyi kódot. 942 00:49:55,990 --> 00:49:58,120 Megvan a kezdet és vége markerek. 943 00:49:58,120 --> 00:50:01,320 Megvan a while, ami leképezi A közvetlenül a pszeudokódja. 944 00:50:01,320 --> 00:50:05,790 Keressük a középső, hogy a térképeket közvetlenül a pszeudokódja. 945 00:50:05,790 --> 00:50:09,070 Azt mondanám, hogy ez megy a középső A lista, ezt a kódsort. 946 00:50:09,070 --> 00:50:11,560 És akkor, ha már megy a közepén A lista a következő dolog, amit tennie kell 947 00:50:11,560 --> 00:50:14,880 hogy ellenőrizze, ha a érték van a A pszeudokód írtunk korábban. 948 00:50:14,880 --> 00:50:17,100 >> Szóval hogyan lehet ellenőrizni, ha az érték van a közepén a listán? 949 00:50:17,100 --> 00:50:17,300 Önnek. 950 00:50:17,300 --> 00:50:18,511 Miért nem ezt teszed? 951 00:50:18,511 --> 00:50:23,070 >> DIÁK: Ha a mi érték-kór a középső egyenlő 952 00:50:23,070 --> 00:50:24,592 amit mi meg a - 953 00:50:24,592 --> 00:50:26,190 Úgy értem, egyenlő egyenlő - 954 00:50:26,190 --> 00:50:26,690 >> JASON HIRSCHHORN: It - 955 00:50:26,690 --> 00:50:27,940 OK. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> DIÁK: Nem vagyok biztos benne, mi a változó keresünk 958 00:50:32,170 --> 00:50:32,850 mert bár, mert - 959 00:50:32,850 --> 00:50:33,330 >> [Közbeiktatásával VOICES] 960 00:50:33,330 --> 00:50:34,520 >> DIÁK: [hallható]. 961 00:50:34,520 --> 00:50:35,060 >> JASON HIRSCHHORN: Pontosan. 962 00:50:35,060 --> 00:50:37,260 Per a funkciót nyilatkozat keresünk egy értéket. 963 00:50:37,260 --> 00:50:39,760 Így keres egy értéket egy sor értékek. 964 00:50:39,760 --> 00:50:41,080 Szóval pontosan így van. 965 00:50:41,080 --> 00:50:45,040 Azt fogja tenni, ha a nyitott paren érték zárójel közepén zárt konzol egyenlő 966 00:50:45,040 --> 00:50:49,930 egyenlő értékű, és belül van Mit kell tennünk? 967 00:50:49,930 --> 00:50:51,230 Ha az érték ott van, mi nem kell tennünk? 968 00:50:51,230 --> 00:50:51,420 >> [Közbeiktatásával VOICES] 969 00:50:51,420 --> 00:50:52,160 >> DIÁK: vissza nullára. 970 00:50:52,160 --> 00:50:53,070 >> JASON HIRSCHHORN: vissza igaz. 971 00:50:53,070 --> 00:50:54,790 >> DIÁK: vissza igaz. 972 00:50:54,790 --> 00:50:57,856 >> JASON HIRSCHHORN: Michael, mit jelent ez a sor nem? 973 00:50:57,856 --> 00:51:01,105 >> DIÁK: [hallható] a program fut a maga útján, és ez a vége, és 974 00:51:01,105 --> 00:51:01,920 akkor már mit kell csinálni? 975 00:51:01,920 --> 00:51:03,030 >> JASON HIRSCHHORN: A program, vagy mi? 976 00:51:03,030 --> 00:51:03,700 Ebben az esetben? 977 00:51:03,700 --> 00:51:04,210 >> DIÁK: A funkció. 978 00:51:04,210 --> 00:51:05,170 >> JASON HIRSCHHORN: A funkció. 979 00:51:05,170 --> 00:51:08,420 És így, hogy visszatérjen, amit az úgynevezett , és adja meg az értéket, igaz. 980 00:51:08,420 --> 00:51:09,890 Pontosan így van. 981 00:51:09,890 --> 00:51:10,170 Main. 982 00:51:10,170 --> 00:51:12,035 Mi a visszatérési típus fő, Michael? 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> DIÁK: int, integer? 985 00:51:17,150 --> 00:51:18,080 >> JASON HIRSCHHORN: int, pontosan. 986 00:51:18,080 --> 00:51:18,680 Egy egész szám. 987 00:51:18,680 --> 00:51:20,980 Ez csak az a kérdés, hogy megbizonyosodjon arról, srácok már a tetején. 988 00:51:20,980 --> 00:51:24,250 Mit jelent ez általában vissza, ha a minden dolog jól működik? 989 00:51:24,250 --> 00:51:24,520 >> DIÁK: Zero. 990 00:51:24,520 --> 00:51:24,820 >> JASON HIRSCHHORN: Zero. 991 00:51:24,820 --> 00:51:25,430 Pontosan így van. 992 00:51:25,430 --> 00:51:28,790 >> DIÁK: Ha ez csak igazat ad vissza, nincs adatokat kell 993 00:51:28,790 --> 00:51:30,675 arról, hogy mi az - 994 00:51:30,675 --> 00:51:34,040 Ó, ez csak azt mondom, hogy ez érték van benne a tömbben. 995 00:51:34,040 --> 00:51:35,350 >> JASON HIRSCHHORN: Pontosan. 996 00:51:35,350 --> 00:51:38,080 Ez a program nem ad információt Az, hogy pontosan hol az érték. 997 00:51:38,080 --> 00:51:41,850 Ez csak azt mondom, igen, találtunk , vagy nem, azt nem találta meg. 998 00:51:41,850 --> 00:51:42,990 Tehát, ha a szám található, vissza igaz. 999 00:51:42,990 --> 00:51:45,500 Nos, valójában mi csak volt, ami igazán gyorsan, hogy egy sor kódot. 1000 00:51:45,500 --> 00:51:47,500 Így fogok mozgatni, hogy a vonal a pszeudokódja. 1001 00:51:47,500 --> 00:51:50,045 >> DIÁK: Nem kell változtatni a tömb? 1002 00:51:50,045 --> 00:51:52,830 Meg kell értékek nem érték, nem igaz? 1003 00:51:52,830 --> 00:51:53,430 >> JASON HIRSCHHORN: Elnézést. 1004 00:51:53,430 --> 00:51:54,010 Köszönöm. 1005 00:51:54,010 --> 00:51:54,800 >> DIÁK: Igen. 1006 00:51:54,800 --> 00:51:55,850 >> JASON HIRSCHHORN: Ez a sor értékeket kell lennie. 1007 00:51:55,850 --> 00:51:57,150 Pontosan így van. 1008 00:51:57,150 --> 00:51:57,920 OK. 1009 00:51:57,920 --> 00:51:59,170 Szóval néztem a középső listából. 1010 00:51:59,170 --> 00:52:00,790 Ha a szám megtalálható return true. 1011 00:52:00,790 --> 00:52:04,470 Folytatva a mi pszeudokódja, ha középen nagyobb, keresés balra. 1012 00:52:04,470 --> 00:52:09,640 Szóval volt itt, ha a szám magasabb, keresés balra. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 Constantine, tudsz adni nekem ezt a kódsort? 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> DIÁK: Ha az érték a közép - 1017 00:52:23,520 --> 00:52:24,890 >> JASON HIRSCHHORN: Tehát, ha az érték - 1018 00:52:24,890 --> 00:52:28,890 ha nyitott paren értékek tartó közepes záró zárójel - 1019 00:52:28,890 --> 00:52:31,500 >> DIÁK: kisebb érték? 1020 00:52:31,500 --> 00:52:32,760 >> JASON HIRSCHHORN: Kevesebb, mint. 1021 00:52:32,760 --> 00:52:33,800 >> DIÁK: Kevesebb, mint érték. 1022 00:52:33,800 --> 00:52:34,060 >> JASON HIRSCHHORN: érték. 1023 00:52:34,060 --> 00:52:35,310 Nos, valóban, szeretnénk ellenőrizze, hogy a szám - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 Bocsánat. 1026 00:52:38,490 --> 00:52:39,140 Ez egy kicsit zavaros. 1027 00:52:39,140 --> 00:52:43,920 De még ha a szám a lista közepén nagyobb. 1028 00:52:43,920 --> 00:52:45,170 >> DIÁK: Oh, OK. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> JASON HIRSCHHORN: fogom változtatni. 1031 00:52:50,410 --> 00:52:55,060 Else if középen magasabb, akkor keresni kívánt balra, OK? 1032 00:52:55,060 --> 00:52:57,310 És mit tegyünk benne ezt, ha a feltétel? 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> DIÁK: Lehet, hogy egy kis változás A feltétel a változás, hogy más, ha? 1035 00:53:07,510 --> 00:53:08,380 >> JASON HIRSCHHORN: Else, ha? 1036 00:53:08,380 --> 00:53:09,270 OK. 1037 00:53:09,270 --> 00:53:12,840 Tehát ezt a kódot hajt végre közel azonos. 1038 00:53:12,840 --> 00:53:18,620 De a szép dolog használatával, ha más if, else ha vagy, else if, else 1039 00:53:18,620 --> 00:53:22,320 azt jelenti, hogy csak az egyik ilyen fog ellenőrizni kell, nem mind a hárman, 1040 00:53:22,320 --> 00:53:23,290 potenciálisan. 1041 00:53:23,290 --> 00:53:25,530 És ez teszi, hogy egy kicsit szebb a számítógép, hogy a 1042 00:53:25,530 --> 00:53:26,670 fut a program. 1043 00:53:26,670 --> 00:53:27,620 >> Tehát [? Constantine,?] 1044 00:53:27,620 --> 00:53:31,330 bent vagyunk ebben a sorban, még ha az értékek, konzol közepén záró zárójel 1045 00:53:31,330 --> 00:53:32,260 érték nagyobb, mint. 1046 00:53:32,260 --> 00:53:33,150 Mit kell tennünk? 1047 00:53:33,150 --> 00:53:33,970 Meg kell keresni a bal oldalon. 1048 00:53:33,970 --> 00:53:35,220 Hogyan csináljuk ezt? 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 Meg fogom adni neked a kezdet. 1051 00:53:48,720 --> 00:53:52,210 >> Van ez a két dolog az úgynevezett kezdetét és végét. 1052 00:53:52,210 --> 00:53:57,340 Tehát mi kell történnie az elején? 1053 00:53:57,340 --> 00:53:59,640 Ha szeretné keresni a bal oldalon a lista, megkapjuk a jelenlegi elején. 1054 00:53:59,640 --> 00:54:01,080 Mit kell csinálni? 1055 00:54:01,080 --> 00:54:04,220 >> DIÁK: Mi meg az elején a közepes plusz 1. 1056 00:54:04,220 --> 00:54:05,120 >> JASON HIRSCHHORN: Tehát, ha vagyunk keresi a bal? 1057 00:54:05,120 --> 00:54:06,250 >> DIÁK: Sajnálom, közép mínusz - 1058 00:54:06,250 --> 00:54:11,310 így a vége lenne a közép- mínusz 1 és kezdet - 1059 00:54:11,310 --> 00:54:12,450 >> JASON HIRSCHHORN: És mi történik, hogy az elején? 1060 00:54:12,450 --> 00:54:13,210 >> DIÁK: Ez ugyanaz marad. 1061 00:54:13,210 --> 00:54:14,120 >> JASON HIRSCHHORN: Tehát a jelentése ugyanaz marad. 1062 00:54:14,120 --> 00:54:16,040 Ha keresi a bal oldalon vagyunk használja ugyanazt a kezdet - 1063 00:54:16,040 --> 00:54:16,860 pontosan így van. 1064 00:54:16,860 --> 00:54:17,870 És a vége? 1065 00:54:17,870 --> 00:54:19,390 Sajnáljuk, mit jelent a véget egyenlő megint? 1066 00:54:19,390 --> 00:54:20,750 >> DIÁK: Közép-mínusz 1. 1067 00:54:20,750 --> 00:54:21,620 >> JASON HIRSCHHORN: Közép-mínusz 1. 1068 00:54:21,620 --> 00:54:23,470 Nos, miért mínusz 1, nem csak a közepén? 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> DIÁK: A középső ki a kép már, mert nem volt 1071 00:54:35,570 --> 00:54:36,700 ellenőrizte, hogy ez ki? 1072 00:54:36,700 --> 00:54:37,630 >> JASON HIRSCHHORN: Ez pontosan így van. 1073 00:54:37,630 --> 00:54:38,580 A középső ki a kép. 1074 00:54:38,580 --> 00:54:39,800 Már ellenőrizte a közepén. 1075 00:54:39,800 --> 00:54:44,730 Tehát nem akarjuk "a középső," idézet idézet vége, hogy továbbra is a 1076 00:54:44,730 --> 00:54:46,110 tömb, amit keresünk. 1077 00:54:46,110 --> 00:54:47,670 Szóval ez fantasztikus. 1078 00:54:47,670 --> 00:54:50,670 >> Else if értékek tartó közepén nagyobb mint érték véget egyenlő 1079 00:54:50,670 --> 00:54:51,920 közepén mínusz 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 Jeff, mi van az utolsó sorban? 1082 00:54:57,340 --> 00:54:58,590 >> DIÁK: Else. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 Értékek közepén kevesebb, mint érték? 1085 00:55:06,000 --> 00:55:07,570 >> JASON HIRSCHHORN: Majd ad nekem mást. 1086 00:55:07,570 --> 00:55:09,310 Tehát, ha nem ad nekem - 1087 00:55:09,310 --> 00:55:12,270 >> DIÁK: Akkor kezdődik lenne közepes plusz 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> JASON HIRSCHHORN: Beginning egyenlő középső plusz 1, ismét, ugyanezen 1090 00:55:19,070 --> 00:55:20,820 oka, hogy Konstantin adott nekünk korábban. 1091 00:55:20,820 --> 00:55:24,280 És a végén, aki nem adott nekem egy sor kódot még? 1092 00:55:24,280 --> 00:55:26,600 Vissza hamis, Aleha, milyen nem írunk itt? 1093 00:55:26,600 --> 00:55:28,590 >> DIÁK: return false. 1094 00:55:28,590 --> 00:55:29,320 >> JASON HIRSCHHORN: return false. 1095 00:55:29,320 --> 00:55:33,340 És meg kell csinálni, mert ha nem találják, meg kell mondani, hogy 1096 00:55:33,340 --> 00:55:34,080 nem találtam meg. 1097 00:55:34,080 --> 00:55:36,270 És mi azt mondtuk megyünk vissza bool, ezért mindenképpen vissza kell 1098 00:55:36,270 --> 00:55:38,150 a bool valahol. 1099 00:55:38,150 --> 00:55:42,590 >> Szóval ezt a kódot. 1100 00:55:42,590 --> 00:55:44,520 Én valóban fog - 1101 00:55:44,520 --> 00:55:45,930 így vagyunk a terminál. 1102 00:55:45,930 --> 00:55:47,230 Majd törölje az ablakot. 1103 00:55:47,230 --> 00:55:49,270 Csináljunk All. 1104 00:55:49,270 --> 00:55:50,340 Találtunk van egy hiba. 1105 00:55:50,340 --> 00:55:54,280 Van egy error on line 15 várható pontosvesszővel végén a 1106 00:55:54,280 --> 00:55:54,890 nyilatkozat. 1107 00:55:54,890 --> 00:55:56,454 Szóval mit elfelejteni? 1108 00:55:56,454 --> 00:55:57,230 >> DIÁK: Pontosvessző. 1109 00:55:57,230 --> 00:56:00,200 >> JASON HIRSCHHORN: Pontosvessző egészen itt. 1110 00:56:00,200 --> 00:56:00,950 Azt hiszem, ez volt Tom kódot. 1111 00:56:00,950 --> 00:56:01,870 Tehát Tom, [nem hallható]. 1112 00:56:01,870 --> 00:56:03,120 Csak vicceltem. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 Csináljuk Make újra. 1115 00:56:07,310 --> 00:56:10,180 >> Diák: És mi Dropbox könyvtár kellene lennie e? 1116 00:56:10,180 --> 00:56:11,345 >> JASON HIRSCHHORN: így csak nézni ezt kicsit. 1117 00:56:11,345 --> 00:56:16,380 De ismétlem, ha akart lépni ezen a kódot a pset3 könyvtárba kipróbálni 1118 00:56:16,380 --> 00:56:17,050 ki, ez az, amit én tettem. 1119 00:56:17,050 --> 00:56:18,600 Ha észre fogod venni, itt - sajnálom, jó kérdés. 1120 00:56:18,600 --> 00:56:19,460 >> [? LS,?] 1121 00:56:19,460 --> 00:56:24,700 Van itt a kód beolvasása sikertelen e heti disztribúció kódot. 1122 00:56:24,700 --> 00:56:26,300 Van helpers.h. 1123 00:56:26,300 --> 00:56:30,010 Van olyan, hogy a fájl, hogy én valóban szerkesztett egy kicsit, hogy ezeket az új 1124 00:56:30,010 --> 00:56:30,710 fájlok írunk. 1125 00:56:30,710 --> 00:56:34,120 Mindez kód lesz elérhető, nem az elosztási kód, de az új 1126 00:56:34,120 --> 00:56:39,510 Legyen fájlt, az új helpers.h fájl elérhető online letölthető. 1127 00:56:39,510 --> 00:56:41,800 Újra, így ezek a extra kódokat van. 1128 00:56:41,800 --> 00:56:46,130 >> Tehát, hogy az összes, egy ezt a sort teszi meg, bináris, buborék választás - teszi 1129 00:56:46,130 --> 00:56:50,930 mind a hárman, és elkészíti a ez végrehajtható kódot találni. 1130 00:56:50,930 --> 00:56:54,090 Tehát általában, nem akarjuk hogy egyenesen check50. 1131 00:56:54,090 --> 00:56:57,580 Azt akarjuk, hogy néhány tesztet a miénk. 1132 00:56:57,580 --> 00:57:11,750 De csak így lehet felgyorsítsa ezt egy kicsit, check50 2013 pset3.find fog múlni 1133 00:57:11,750 --> 00:57:14,630 A helpers.c-- a rossz. 1134 00:57:14,630 --> 00:57:16,050 >> Nem kell, hogy most. 1135 00:57:16,050 --> 00:57:20,670 Szóval tényleg lesz futtatja a kódot az igazi. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /, tudod, hogy ez mit jelent? 1137 00:57:23,570 --> 00:57:25,970 >> DIÁK: Szüksége van egy második parancssorban rajta. 1138 00:57:25,970 --> 00:57:26,980 >> JASON HIRSCHHORN: Szükségem van egy második parancssor. 1139 00:57:26,980 --> 00:57:30,640 És egy a specifikáció, szükségem adja meg, amit keresünk. 1140 00:57:30,640 --> 00:57:33,750 Tehát nézzük 42. 1141 00:57:33,750 --> 00:57:37,030 Majd tartsa rendezett, mert még nem írt egy sort funkció még - 1142 00:57:37,030 --> 00:57:41,830 42., 43., 44. 1143 00:57:41,830 --> 00:57:46,240 >> És Control D nem találja a tűt a szénakazalban. 1144 00:57:46,240 --> 00:57:46,505 Ez rossz. 1145 00:57:46,505 --> 00:57:47,200 Tuti, hogy ott van. 1146 00:57:47,200 --> 00:57:48,090 Próbáljunk valami mást. 1147 00:57:48,090 --> 00:57:49,860 Talán azért, mert tettem ez az elején. 1148 00:57:49,860 --> 00:57:54,490 >> Csináljuk 41, 42, 43. 1149 00:57:54,490 --> 00:57:55,012 Ott vagyunk. 1150 00:57:55,012 --> 00:57:56,400 Úgy ítélte meg azt. 1151 00:57:56,400 --> 00:58:00,040 Tegyük fel, hogy a végén már csak így lehet alapos - 1152 00:58:00,040 --> 00:58:03,580 40, 41, 42. 1153 00:58:03,580 --> 00:58:05,760 Nem találja a tűt. 1154 00:58:05,760 --> 00:58:07,550 Szóval említette ezt korábban. 1155 00:58:07,550 --> 00:58:08,980 Sajnos, tudtam, hogy ez fog történni. 1156 00:58:08,980 --> 00:58:11,490 >> De pedagógiai célú ez jó, hogy vizsgálja meg. 1157 00:58:11,490 --> 00:58:12,990 Ez nem működik. 1158 00:58:12,990 --> 00:58:16,020 Valamilyen oknál fogva, hogy nem találom. 1159 00:58:16,020 --> 00:58:18,970 Tudjuk, hogy mi van ott, de mi nem találja. 1160 00:58:18,970 --> 00:58:24,140 Tehát az egyik dolog, amit tehetünk, hogy menjen át GDB megtalálni, de nem akárki, 1161 00:58:24,140 --> 00:58:27,850 anélkül, hogy a GDB, van egy értelemben, ahol elrontottam? 1162 00:58:27,850 --> 00:58:28,480 [? Madu? ?] 1163 00:58:28,480 --> 00:58:30,960 >> DIÁK: Azt hiszem, lehet, hogy ha véget egyenlő kezdet, és ez 1164 00:58:30,960 --> 00:58:33,090 csak egy elem listából. 1165 00:58:33,090 --> 00:58:35,560 Akkor csak figyelmen kívül hagyja azt, hanem A tényleges ellenőrzés is. 1166 00:58:35,560 --> 00:58:36,940 >> JASON HIRSCHHORN: Ez pontosan így van. 1167 00:58:36,940 --> 00:58:41,110 Amikor vége egyenlő elején, mi is mindig van egy eleme a listán? 1168 00:58:41,110 --> 00:58:42,480 >> DIÁK: Igen. 1169 00:58:42,480 --> 00:58:45,450 >> JASON HIRSCHHORN: Igen, sőt, azt van egy és csak egy elem. 1170 00:58:45,450 --> 00:58:50,500 És ez valószínűleg történni, ha, egy a kódot teszteltük, mi vagyunk a 1171 00:58:50,500 --> 00:58:54,640 előtt a szénakazalban, vagy a végén a szénakazalban. 1172 00:58:54,640 --> 00:58:56,000 Ez az, ahol kezdetét és vége lesz egyenlő 1173 00:58:56,000 --> 00:58:57,820 egy, a bináris keresés. 1174 00:58:57,820 --> 00:59:01,440 Tehát ebben a két esetben nem működik, mert véget egyenlő volt kezdet. 1175 00:59:01,440 --> 00:59:06,030 >> De ha vége egyenlő kezdet, ez while ciklus végre? 1176 00:59:06,030 --> 00:59:06,390 Ez nem. 1177 00:59:06,390 --> 00:59:08,660 És mi volna ellenőrizhető hogy újra át GDB. 1178 00:59:08,660 --> 00:59:14,000 Szóval hogyan lehet megjavítani ezt a kódot, mert a amikor amíg véget egyenlő 1179 00:59:14,000 --> 00:59:16,070 elején, mi is szeretnénk ezt a while ciklus futtatni. 1180 00:59:16,070 --> 00:59:18,620 >> Szóval mit fix tehetjük sorban 18 éves? 1181 00:59:18,620 --> 00:59:21,060 >> DIÁK: [Nem hallható] nagyobb kisebb vagy azzal egyenlő. 1182 00:59:21,060 --> 00:59:21,700 >> JASON HIRSCHHORN: Pontosan így van. 1183 00:59:21,700 --> 00:59:24,600 Míg a végződés nagyobb, mint vagy egyenlő elején. 1184 00:59:24,600 --> 00:59:27,300 Tehát most, akkor győződjön meg róla, hogy kap, hogy a sarok esetében a végén. 1185 00:59:27,300 --> 00:59:27,870 És lássuk. 1186 00:59:27,870 --> 00:59:29,560 Fussunk ezt még egyszer. 1187 00:59:29,560 --> 00:59:31,266 >> Nézzük, hogy minden. 1188 00:59:31,266 --> 00:59:33,910 Ismét, akkor meg kell, hogy csak kövesse végig itt. 1189 00:59:33,910 --> 00:59:36,280 Keresd 41. ebben az időben. 1190 00:59:36,280 --> 00:59:37,360 Csak tartsa következetes. 1191 00:59:37,360 --> 00:59:38,210 >> Keresés 42. 1192 00:59:38,210 --> 00:59:38,930 Tegyük fel, hogy az elején - 1193 00:59:38,930 --> 00:59:41,630 42., 43., 44. 1194 00:59:41,630 --> 00:59:42,860 Megtaláltuk. 1195 00:59:42,860 --> 00:59:47,710 Ahhoz, hogy valóban a változás mi szükség van, hogy a. 1196 00:59:47,710 --> 00:59:51,090 >> Ez volt a sok kódolás is csináltam, bináris keresés. 1197 00:59:51,090 --> 00:59:55,760 Van valakinek bármilyen kérdése van, mielőtt Én lépni sorok írtuk 1198 00:59:55,760 --> 00:59:58,750 bináris keresés, vagy hogyan gondoltam ki, mi volt kitalálni? 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 Mielőtt továbblépnénk, én is szeretnék mutatni arra, hogy nagyjából, feltérképeztük 1201 01:00:06,270 --> 01:00:09,300 a pszeudo-kód egy- az egyik fel a kódot. 1202 01:00:09,300 --> 01:00:11,550 >> Mi volt, hogy trükkös dolog kitalálni, hogy a 1203 01:00:11,550 --> 01:00:12,890 kezdetét és végét. 1204 01:00:12,890 --> 01:00:17,380 De még akkor sem gondoltam, hogy ki, akkor írt volna, nagyjából 1205 01:00:17,380 --> 01:00:20,740 azonos kódot, kivéve azok a felső két sor. 1206 01:00:20,740 --> 01:00:23,380 És akkor lett volna megvalósítani, ha tette, hogy az ellenőrzések és esetekben 1207 01:00:23,380 --> 01:00:24,840 ha kell valami mást. 1208 01:00:24,840 --> 01:00:28,510 Tehát akkor is, ha követte a pszeudo-kódot sorról sorra, akkor már 1209 01:00:28,510 --> 01:00:31,130 ütött minden, de két sor kódot kell írni. 1210 01:00:31,130 --> 01:00:33,900 >> És én lennék hajlandó fogadni, hogy a srácok volna, mind rájött, hogy ki 1211 01:00:33,900 --> 01:00:37,940 elég gyorsan, hogy meg kell, hogy valamilyen marker ott kitalálni 1212 01:00:37,940 --> 01:00:39,190 , hol voltál. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 Ez ismét a hatalom csinál pszeudó-kódja idő előtt. 1215 01:00:44,550 --> 01:00:47,310 Így meg tudjuk csinálni a logika az első, majd a akkor aggódni a szintaxis. 1216 01:00:47,310 --> 01:00:51,470 >> Vajon mi lett zavaros a logika közben írni ezt a kódot C, 1217 01:00:51,470 --> 01:00:53,110 mi ütött volna minden összezavarodik. 1218 01:00:53,110 --> 01:00:56,340 És akkor mi lenne kérdéseket a logika és a szintaxis és hálózás 1219 01:00:56,340 --> 01:00:57,320 őket együtt. 1220 01:00:57,320 --> 01:01:02,170 És mi volna, eltévedt milyen hamar 1221 01:01:02,170 --> 01:01:04,000 nagyon nehéz probléma. 1222 01:01:04,000 --> 01:01:08,680 Akkor lépjünk tovább már kiválasztási sort. 1223 01:01:08,680 --> 01:01:10,760 >> Jelenleg 20 perc van hátra. 1224 01:01:10,760 --> 01:01:14,130 Szóval van egy olyan érzésem, hogy nem lesz képes a hogy az összes kiválasztás sort 1225 01:01:14,130 --> 01:01:15,940 és a buborék sort. 1226 01:01:15,940 --> 01:01:20,670 De nézzük legalább kísérlet befejezni kiválasztás sort. 1227 01:01:20,670 --> 01:01:23,540 Így végre kiválasztása sort a következő funkció nyilatkozatot. 1228 01:01:23,540 --> 01:01:27,530 >> Ismét, ez a ki kell venni a probléma meg specifikáció. 1229 01:01:27,530 --> 01:01:31,560 Int értékek zárójelben, az egy sor egész. 1230 01:01:31,560 --> 01:01:33,490 És int.n a méret, hogy a tömb. 1231 01:01:33,490 --> 01:01:36,840 Selection sort megy rendezni ezt a tömböt. 1232 01:01:36,840 --> 01:01:43,580 >> Tehát egy mentális modellje kiválasztás sort, akkor húzza ki a - 1233 01:01:43,580 --> 01:01:47,720 Először megyünk végig a listát az első idő, meg a legkisebb számot, 1234 01:01:47,720 --> 01:01:52,860 tedd az elején, meg a második legkisebb számot, tedd azt a 1235 01:01:52,860 --> 01:01:56,380 második helyen, ha azt akarjuk, hogy Rendezés növekvő sorrendben. 1236 01:01:56,380 --> 01:01:58,440 Én nem arra kényszerítve, hogy írni ál-kód most. 1237 01:01:58,440 --> 01:02:01,350 >> De mielőtt ezt a kódot, mint egy osztály Öt perc, fogunk írni 1238 01:02:01,350 --> 01:02:03,550 pszeudo-kódot, így van némi értelme hová megyünk. 1239 01:02:03,550 --> 01:02:05,630 Így próbál írni pszeudo-kód saját. 1240 01:02:05,630 --> 01:02:08,610 Majd próbálja meg bekapcsolni, hogy pszeudo-kódot kódot. 1241 01:02:08,610 --> 01:02:10,740 Mi fog tenni, hogy egy csoport öt perc alatt. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> És persze, hadd tudjam meg, ha bármilyen kérdése van. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> DIÁK: Ennyi? 1246 01:03:58,230 --> 01:04:00,280 >> JASON HIRSCHHORN: Látod, milyen messze van kap két percet. 1247 01:04:00,280 --> 01:04:01,790 Megértem, hogy nem fog képes befejezni. 1248 01:04:01,790 --> 01:04:03,050 De mi megy át ezt a csoportot. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> Mindannyian kódolási így [hallható], tehát vagyok sajnálom, hogy szünet, amit csinálsz. 1251 01:05:00,630 --> 01:05:02,530 De nézzük végig ezt a csoportot. 1252 01:05:02,530 --> 01:05:07,590 És ismét, bináris keresés, mindenkinek ad nekem, ha nem több sornyi kódot. 1253 01:05:07,590 --> 01:05:08,530 Köszönjük, hogy az. 1254 01:05:08,530 --> 01:05:11,730 Fogjuk, hogy nem ugyanaz a dolog Itt code együtt, egy csoportban. 1255 01:05:11,730 --> 01:05:15,170 >> Tehát kiválasztása sort - írjunk néhány gyors pszeudo-kódot. 1256 01:05:15,170 --> 01:05:20,380 Per mentális modell, tud valaki adjon nekem Az első sorban a pszeudo-kód, kérem? 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 Mit akarok? 1259 01:05:24,270 --> 01:05:27,070 >> DIÁK: Míg a lista meghibásodott. 1260 01:05:27,070 --> 01:05:30,630 >> JASON HIRSCHHORN: OK, míg a a lista elromlott. 1261 01:05:30,630 --> 01:05:33,540 És mi az, hogy "out of order?" 1262 01:05:33,540 --> 01:05:34,960 >> DIÁK: Míg a [Nem hallható] 1263 01:05:34,960 --> 01:05:36,210 nem volt rendezve. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> JASON HIRSCHHORN: Míg a lista meghibásodott, mit tegyünk? 1266 01:05:40,290 --> 01:05:44,200 Add nekem a második sorban, Kérlek, Marcus. 1267 01:05:44,200 --> 01:05:47,186 >> DIÁK: Így talál a következő a legkisebb szám. 1268 01:05:47,186 --> 01:05:49,000 Ez lesz beljebb. 1269 01:05:49,000 --> 01:05:55,140 >> JASON HIRSCHHORN: Így talál a következő kisebb szám. 1270 01:05:55,140 --> 01:05:56,460 És akkor valaki más? 1271 01:05:56,460 --> 01:06:01,030 Ha megtaláljuk a következő kisebb szám, mit tegyünk? 1272 01:06:01,030 --> 01:06:03,010 Fogom mondani, meg a legkisebb szám. 1273 01:06:03,010 --> 01:06:04,820 Ez az, amit akarok. 1274 01:06:04,820 --> 01:06:06,210 >> Így megtalálja a legkisebb szám. 1275 01:06:06,210 --> 01:06:08,061 Akkor mit tegyünk? 1276 01:06:08,061 --> 01:06:09,480 >> DIÁK: [hallhatatlan] a kezdet. 1277 01:06:09,480 --> 01:06:10,680 >> JASON HIRSCHHORN: Tessék? 1278 01:06:10,680 --> 01:06:12,700 >> DIÁK: Vidd azt a a lista elejére. 1279 01:06:12,700 --> 01:06:18,540 >> JASON HIRSCHHORN: Tehát tegyük az elején a listán. 1280 01:06:18,540 --> 01:06:20,140 És mit tegyünk, hogy a dolog ez volt az elején 1281 01:06:20,140 --> 01:06:20,830 a lista, nem igaz? 1282 01:06:20,830 --> 01:06:21,910 Mi felülírás valamit. 1283 01:06:21,910 --> 01:06:23,130 Szóval, ha nem tesszük ezt? 1284 01:06:23,130 --> 01:06:24,120 Igen, Anna? 1285 01:06:24,120 --> 01:06:25,520 >> DIÁK: Ahol a legkisebb szám volt? 1286 01:06:25,520 --> 01:06:32,530 >> JASON Hirshhorn: Szóval fel a kezdet a lista, ahol a 1287 01:06:32,530 --> 01:06:35,180 a legkisebb szám volt. 1288 01:06:35,180 --> 01:06:38,510 Így, miközben a lista elromlott, meg a legkisebb számot, tedd azt 1289 01:06:38,510 --> 01:06:40,630 A lista elején, tedd a a lista elejére, ahol a 1290 01:06:40,630 --> 01:06:42,900 a legkisebb szám volt. 1291 01:06:42,900 --> 01:06:45,780 Marcus tudja fogalmazzam ezt a sort míg a lista elromlott? 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> DIÁK: Bár a számok nem rendezve? 1294 01:06:53,900 --> 01:06:55,920 >> JASON Hirshhorn: OK, így annak érdekében, hogy tudják, hogy a számok nem voltak 1295 01:06:55,920 --> 01:06:58,670 sorrendje, mit kell tennünk? 1296 01:06:58,670 --> 01:07:00,640 Mennyivel kell végig ez a lista? 1297 01:07:00,640 --> 01:07:09,650 >> DIÁK: Szóval azt hiszem, egy for ciklus, vagy közben, míg a számok ellenőrzött kevésbé 1298 01:07:09,650 --> 01:07:11,900 mint a hossza a lista? 1299 01:07:11,900 --> 01:07:13,160 >> JASON Hirshhorn: OK, ez jó. 1300 01:07:13,160 --> 01:07:15,000 Azt hiszem, misphrased a kérdés rosszul. 1301 01:07:15,000 --> 01:07:15,990 Én csak próbálok a fogunk menni 1302 01:07:15,990 --> 01:07:17,580 az egész listát. 1303 01:07:17,580 --> 01:07:20,490 Így, miközben a lista elromlott, Számomra nehéz térkép tovább. 1304 01:07:20,490 --> 01:07:24,940 De alapvetően, hogy hogyan Azt hiszem, erről. 1305 01:07:24,940 --> 01:07:28,880 Menj át a teljes lista, meg az legkisebb szám, tegyük a 1306 01:07:28,880 --> 01:07:30,130 elején - valóban, igazad van. 1307 01:07:30,130 --> 01:07:31,380 Tegyük mindkettőt. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> Így, miközben a lista elromlott, akkor kell, hogy menjen át a teljes lista 1310 01:07:39,050 --> 01:07:42,250 egyszer megtalálja a legkisebb számot, helyét már az elején a lista, tedd 1311 01:07:42,250 --> 01:07:45,430 az elején a lista, ahol a legkevesebb volt, és ha a 1312 01:07:45,430 --> 01:07:47,460 lista még mindig nincs rend, most már van, hogy menjen át a 1313 01:07:47,460 --> 01:07:48,620 folyamatot újra, igaz? 1314 01:07:48,620 --> 01:07:51,610 Ezért kiválasztás sort, Big-O runtime A kiválasztás sort, valaki? 1315 01:07:51,610 --> 01:07:52,830 >> DIÁK: n négyzeten. 1316 01:07:52,830 --> 01:07:53,590 >> JASON Hirshhorn: n négyzeten. 1317 01:07:53,590 --> 01:07:57,040 Mivel, mint Marcus és én csak rájöttem itt, mi kell majd 1318 01:07:57,040 --> 01:08:00,310 menjen végig a list számú alkalommal. 1319 01:08:00,310 --> 01:08:03,420 Így megy keresztül valami n hosszúságú n számú alkalommal 1320 01:08:03,420 --> 01:08:04,990 van valójában n négyzeten. 1321 01:08:04,990 --> 01:08:08,100 >> Szóval ez a mi pszeudokódja. 1322 01:08:08,100 --> 01:08:09,360 Ez nagyon jól néz ki. 1323 01:08:09,360 --> 01:08:11,870 Van valakinek kérdése a pszeudokód? 1324 01:08:11,870 --> 01:08:14,440 Mert tényleg kiválasztás sort kell valószínűleg jön 1-1, kódot 1325 01:08:14,440 --> 01:08:14,980 pszeudokódja. 1326 01:08:14,980 --> 01:08:17,569 Tehát bármilyen kérdése van a logikája pszeudokód? 1327 01:08:17,569 --> 01:08:18,819 Kérje most. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> Selection sort -, míg a lista ki A rend, fogunk menni rajta 1330 01:08:25,379 --> 01:08:27,529 és megtalálni a legkisebb minden alkalommal és tedd az első. 1331 01:08:27,529 --> 01:08:33,470 Így, miközben a lista elromlott, lehet valaki adjon nekem, hogy a kódsort, aki 1332 01:08:33,470 --> 01:08:39,689 nem adott nekem egy vonal kód mégis, kérem? 1333 01:08:39,689 --> 01:08:40,939 Úgy hangzik, mint mi? 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> DIÁK: Ez a hurok. 1336 01:08:44,649 --> 01:08:45,830 >> JASON Hirshhorn: Ez úgy hangzik, mint egy for ciklus. 1337 01:08:45,830 --> 01:08:47,653 OK, tudsz adni nekem a for ciklus? 1338 01:08:47,653 --> 01:08:48,925 For - 1339 01:08:48,925 --> 01:08:50,219 >> DIÁK: i értéke 0-ra. 1340 01:08:50,219 --> 01:08:52,705 >> JASON Hirshhorn i vagy - 1341 01:08:52,705 --> 01:08:55,111 Mit hagytunk ki? 1342 01:08:55,111 --> 01:08:56,819 Mi folyik itt? 1343 01:08:56,819 --> 01:08:57,550 >> DIÁK: INT. 1344 01:08:57,550 --> 01:08:59,270 >> JASON Hirshhorn: Pontosan. 1345 01:08:59,270 --> 01:09:02,590 (Int i = 0; - 1346 01:09:02,590 --> 01:09:07,843 >> DIÁK: i 01:09:09,319 >> JASON Hirshhorn: Felvettek, Jeff. 1348 01:09:09,319 --> 01:09:10,660 Megyünk végig a listán, igaz? 1349 01:09:10,660 --> 01:09:11,880 Láttuk, hogy a kód előtt. 1350 01:09:11,880 --> 01:09:12,850 Tökéletes. 1351 01:09:12,850 --> 01:09:14,790 Tehát mondjuk a kapcsos zárójelek itt. 1352 01:09:14,790 --> 01:09:17,859 Megyek egy kis kapcsos zárójelek itt. 1353 01:09:17,859 --> 01:09:21,660 >> Tehát miközben ez 0, mennünk kell az egész listát. 1354 01:09:21,660 --> 01:09:26,612 Így minden alkalommal megyünk végig a listán, mit szeretnénk nyomon követni? 1355 01:09:26,612 --> 01:09:28,260 >> DIÁK: Ha cserék alkalmazása esetén. 1356 01:09:28,260 --> 01:09:29,069 >> JASON Hirshhorn: Keresés a legkisebb szám. 1357 01:09:29,069 --> 01:09:31,479 Így valószínűleg nyomon követni A legkisebb szám minden egyes alkalommal. 1358 01:09:31,479 --> 01:09:34,590 Így vonal tehetek, hogy nyomon követhesse A legkisebb szám? 1359 01:09:34,590 --> 01:09:37,720 Aleha, hogyan tudom tartani track valamit? 1360 01:09:37,720 --> 01:09:38,460 >> DIÁK: Indítson el egy új változót. 1361 01:09:38,460 --> 01:09:39,390 >> JASON Hirshhorn: Indítson el egy új változó. 1362 01:09:39,390 --> 01:09:40,069 Tehát hozzunk létre egy változót. 1363 01:09:40,069 --> 01:09:41,830 Milyen? 1364 01:09:41,830 --> 01:09:42,930 >> DIÁK: INT. 1365 01:09:42,930 --> 01:09:43,710 >> JASON Hirshhorn: INT. 1366 01:09:43,710 --> 01:09:44,939 Nevezzük ezt a legkisebb. 1367 01:09:44,939 --> 01:09:47,600 És mit egyenlő, ha mi csak most kezdődik el? 1368 01:09:47,600 --> 01:09:48,910 Még nem ment át a listát még. 1369 01:09:48,910 --> 01:09:50,540 Vagyunk az első része a lista első alkalommal át. 1370 01:09:50,540 --> 01:09:51,930 Mit jelent ez megegyezik, a legkisebb számot? 1371 01:09:51,930 --> 01:09:54,140 >> DIÁK: Értékek i. 1372 01:09:54,140 --> 01:09:54,900 >> JASON Hirshhorn: Értékek i. 1373 01:09:54,900 --> 01:09:56,980 Ez úgy hangzik, pontosan így van, ugye? 1374 01:09:56,980 --> 01:09:59,590 A legkisebb szám az elején az, ahol vagyunk. 1375 01:09:59,590 --> 01:10:01,960 Tehát most már a legkisebb, és szükségünk van hogy menjen át az egész listát, és 1376 01:10:01,960 --> 01:10:05,080 összehasonlítani ezt a legkisebb minden mást. 1377 01:10:05,080 --> 01:10:08,150 Tehát nem megyünk végig a listát újra? 1378 01:10:08,150 --> 01:10:08,630 Michael? 1379 01:10:08,630 --> 01:10:10,000 >> DIÁK: Be kell, hogy a másik a loop. 1380 01:10:10,000 --> 01:10:10,383 >> JASON Hirshhorn: Egy másik a loop. 1381 01:10:10,383 --> 01:10:11,276 Csináljuk. 1382 01:10:11,276 --> 01:10:12,540 Adj egy kis kódot. 1383 01:10:12,540 --> 01:10:13,790 >> DIÁK: A loop - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 a legkisebb - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 csak int j, tudnál mondani? 1388 01:10:25,770 --> 01:10:31,150 = 0; oly módon, hogy - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> JASON Hirshhorn: Nos, ha azt akarjuk, hogy menjen át a teljes lista - 1391 01:10:35,710 --> 01:10:37,847 >> DIÁK: j 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> JASON Hirshhorn: Fantasztikus. 1394 01:10:42,405 --> 01:10:46,100 Fogunk átmenni A for ciklus újra. 1395 01:10:46,100 --> 01:10:51,380 És hogyan találjuk meg a legkisebb számot? 1396 01:10:51,380 --> 01:10:52,630 Tom? 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 Megvan az aktuális legkisebb számot, így hogyan találjuk meg az új legkisebb? 1399 01:11:00,520 --> 01:11:07,200 >> DIÁK: tudjuk ellenőrizni, hogy a legkisebb szám már nagyobb, mint 1400 01:11:07,200 --> 01:11:09,040 értékek konzol j. 1401 01:11:09,040 --> 01:11:14,740 >> JASON Hirshhorn: Tehát, ha a legkisebb a nagyobb, mint érték konzol j. 1402 01:11:14,740 --> 01:11:19,350 Tehát, ha a jelenlegi legkisebb nagyobb, mint - 1403 01:11:19,350 --> 01:11:21,770 Fogom mozgatni a két vonal A kód ott egy pillanatra. 1404 01:11:21,770 --> 01:11:26,010 Mert mielőtt mi bármilyen csere, akkor kell, hogy menjen át az egész listát. 1405 01:11:26,010 --> 01:11:28,880 Tehát ez pszeudokódja ténylegesen kívül, hogy a belső a hurok. 1406 01:11:28,880 --> 01:11:30,390 Így megy át az egész listát. 1407 01:11:30,390 --> 01:11:34,520 Ha nagyobb, mint a legkisebb értékek j akkor mi van? 1408 01:11:34,520 --> 01:11:37,830 >> DIÁK: Akkor a legkisebb egyenlő értékek j. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> JASON Hirshhorn: Fantasztikus. 1411 01:11:42,600 --> 01:11:44,580 Egy gyors kérdés - 1412 01:11:44,580 --> 01:11:47,236 Az első alkalom, hogy menjen át a hurok, i fog egyenlő 0, j folyik 1413 01:11:47,236 --> 01:11:50,710 egyenlő 0, ha mi vagyunk itt. 1414 01:11:50,710 --> 01:11:52,410 Szóval lesz összehasonlítása egy számot is. 1415 01:11:52,410 --> 01:11:53,660 Ez hatékony? 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 Nem, ez nem igazán hatékony. 1418 01:11:58,390 --> 01:12:02,915 Tehát nem a j kell menni 0-tól n minden alkalommal? 1419 01:12:02,915 --> 01:12:06,310 Nem mindig ellenőrizni kell a teljes lista? 1420 01:12:06,310 --> 01:12:06,520 [Nem hallható]? 1421 01:12:06,520 --> 01:12:07,564 >> DIÁK: Kezdje i helyett. 1422 01:12:07,564 --> 01:12:09,405 >> JASON Hirshhorn: j lehet kezdeni, amit? 1423 01:12:09,405 --> 01:12:09,990 >> DIÁK: i. 1424 01:12:09,990 --> 01:12:13,040 >> JASON Hirshhorn: j indulhat az i. 1425 01:12:13,040 --> 01:12:18,840 Tehát most összehasonlítjuk induló az egy vagyunk. 1426 01:12:18,840 --> 01:12:21,020 De még akkor is, az, hogy az a lehető leghatékonyabban? 1427 01:12:21,020 --> 01:12:22,320 >> DIÁK: i + 1. 1428 01:12:22,320 --> 01:12:25,420 >> JASON Hirshhorn: i + 1 úgy tűnik, hogy a leghatékonyabb, mert mi 1429 01:12:25,420 --> 01:12:26,120 már i. 1430 01:12:26,120 --> 01:12:28,100 Mi arról, hogy a legkisebb 15. sor. 1431 01:12:28,100 --> 01:12:29,350 Fogunk kezdeni a következő alkalommal automatikusan. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 Tehát végig a for ciklus. 1434 01:12:38,540 --> 01:12:39,620 Majd megy át minden egyes alkalommal. 1435 01:12:39,620 --> 01:12:40,860 Elmegyünk, számos alkalommal. 1436 01:12:40,860 --> 01:12:42,860 Most már ütött át ez a belső for ciklus. 1437 01:12:42,860 --> 01:12:44,350 Megvan a legkisebb érték takarít meg. 1438 01:12:44,350 --> 01:12:46,045 Meg kell, hogy azt a a lista elejére. 1439 01:12:46,045 --> 01:12:48,390 Szóval, hogyan helyezze a elején a lista? 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 Mi az a változó, amely utal , hogy az elején a lista? 1442 01:12:55,926 --> 01:13:00,500 Vagyunk ezt a külső for ciklus, Tehát mi utal az 1443 01:13:00,500 --> 01:13:01,280 elején a lista? 1444 01:13:01,280 --> 01:13:02,880 >> DIÁK: Értékek i. 1445 01:13:02,880 --> 01:13:03,510 >> JASON Hirshhorn: Pontosan így van. 1446 01:13:03,510 --> 01:13:04,650 Értékek i az elején - 1447 01:13:04,650 --> 01:13:06,320 vagy bocs, nem az elején. 1448 01:13:06,320 --> 01:13:07,090 Ez volt zavaró. 1449 01:13:07,090 --> 01:13:11,620 Ez az, ahol vagyunk, az elején a rendezetlen része a lista. 1450 01:13:11,620 --> 01:13:12,800 Így értékeli azt. 1451 01:13:12,800 --> 01:13:14,050 És mit is egyenlő? 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> DIÁK: legkisebb. 1454 01:13:17,326 --> 01:13:18,862 >> JASON Hirshhorn: Értékek i értéke, mi? 1455 01:13:18,862 --> 01:13:19,310 >> DIÁK: legkisebb. 1456 01:13:19,310 --> 01:13:20,030 >> JASON Hirshhorn: legkisebb. 1457 01:13:20,030 --> 01:13:20,980 Pontosan így van. 1458 01:13:20,980 --> 01:13:23,510 Szóval helyezi az elején a lista, és most meg kell tenni 1459 01:13:23,510 --> 01:13:25,710 az elején a lista, ahol a a legkisebb szám volt. 1460 01:13:25,710 --> 01:13:29,700 Szóval hogyan írok, ahol a legkisebb szám volt? 1461 01:13:29,700 --> 01:13:31,670 Értékek, mi? 1462 01:13:31,670 --> 01:13:33,170 >> DIÁK: 0-ra. 1463 01:13:33,170 --> 01:13:34,090 >> JASON Hirshhorn: A kis szám van a 0-ra? 1464 01:13:34,090 --> 01:13:35,340 >> DIÁK: Igen. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> JASON Hirshhorn: Mi lenne, ha a legkisebb szám volt a végén 1467 01:13:39,910 --> 01:13:40,860 ez a rendezetlen lista? 1468 01:13:40,860 --> 01:13:42,460 >> DIÁK: Bocs, mi volt a kérdés? 1469 01:13:42,460 --> 01:13:44,020 >> JASON Hirshhorn: Hol van a legkevesebb? 1470 01:13:44,020 --> 01:13:46,940 Mi volt a legkisebb, és tedd a kezdődik, és ez a sor itt. 1471 01:13:46,940 --> 01:13:48,987 >> DIÁK: Meg kellett volna tárolták néhány - 1472 01:13:48,987 --> 01:13:50,510 >> DIÁK: Értékek j. 1473 01:13:50,510 --> 01:13:51,520 >> JASON Hirshhorn: Nos, ez nem feltétlenül értékek j. 1474 01:13:51,520 --> 01:13:54,100 Ez nem is létezik ezen a ponton. 1475 01:13:54,100 --> 01:13:55,960 >> DIÁK: Meg kell nyilatkozni változó korábban 1476 01:13:55,960 --> 01:13:58,230 akkor rendelje hozzá - 1477 01:13:58,230 --> 01:14:01,150 , ha megtalálja a legkisebb szám, hozzá az index, hogy a szám 1478 01:14:01,150 --> 01:14:02,480 változó, vagy valami ilyesmi. 1479 01:14:02,480 --> 01:14:04,790 >> JASON Hirshhorn: Így lehet azt mondod, hogy megint? 1480 01:14:04,790 --> 01:14:08,390 >> DIÁK: Szóval, ahol kijelentette, int a legkisebb, akkor is kijelenti int 1481 01:14:08,390 --> 01:14:10,750 legkisebb indexet = i, vagy valami ilyesmi. 1482 01:14:10,750 --> 01:14:13,280 >> JASON Hirshhorn: Hol tudom int a legkisebb, én nem csak nyomon követni 1483 01:14:13,280 --> 01:14:16,150 Az érték, de a hely. 1484 01:14:16,150 --> 01:14:20,850 int smallest_location = ebben esetben, akkor csak nem nekem. 1485 01:14:20,850 --> 01:14:22,390 Tudnunk kell, hogy hol van. 1486 01:14:22,390 --> 01:14:26,820 Megvan, hogy a végén a kódot, és rájött, hogy fogalma sem volt, hol nem volt. 1487 01:14:26,820 --> 01:14:29,810 És megint, mi feltérképezése ezt 00:59. 1488 01:14:29,810 --> 01:14:32,890 Srácok kódolás ezt a saját akaratát talán kap ugyanaz a probléma. 1489 01:14:32,890 --> 01:14:34,130 Hogy a fenébe találom meg? 1490 01:14:34,130 --> 01:14:36,720 És akkor rájössz, várj, kell nyomon követni, hogy a. 1491 01:14:36,720 --> 01:14:38,500 >> Tehát, ha a legkisebb nagyobb mint értékek j. 1492 01:14:38,500 --> 01:14:39,740 Mi meg a legkisebb egyenlő értékek j. 1493 01:14:39,740 --> 01:14:42,090 Mi mást meg kell változtatni? 1494 01:14:42,090 --> 01:14:43,710 Constantin, mi mást meg kell változtatni? 1495 01:14:43,710 --> 01:14:44,560 >> DIÁK: A hely. 1496 01:14:44,560 --> 01:14:45,270 >> JASON Hirshhorn: Pontosan. 1497 01:14:45,270 --> 01:14:46,925 Így add nekem ezt a sort a kódot. 1498 01:14:46,925 --> 01:14:53,310 >> DIÁK: smallest_location = j. 1499 01:14:53,310 --> 01:14:54,790 >> JASON Hirshhorn: Pontosan. 1500 01:14:54,790 --> 01:14:58,210 És akkor le a végén, ha azt akarjuk, hogy fel az elején a lista, ahol a 1501 01:14:58,210 --> 01:15:00,790 a legkevesebb volt, hogy milyen nem utalunk, ahol a 1502 01:15:00,790 --> 01:15:02,200 legkisebb szám volt? 1503 01:15:02,200 --> 01:15:03,580 Marcus? 1504 01:15:03,580 --> 01:15:08,530 >> DIÁK: A legkisebb szám volt található a legkisebb helyen. 1505 01:15:08,530 --> 01:15:12,230 >> JASON Hirshhorn: Tehát értékek smallest_location. 1506 01:15:12,230 --> 01:15:14,700 És mit tesz oda? 1507 01:15:14,700 --> 01:15:17,600 Az elején a lista, mi ez? 1508 01:15:17,600 --> 01:15:19,710 >> DIÁK: Nos, nem igazán tudom, többé, mert felülírta. 1509 01:15:19,710 --> 01:15:23,250 Tehát ez egy cserélték helyen a két vonal? 1510 01:15:23,250 --> 01:15:26,110 Ha bekapcsolja a két vonal körül. 1511 01:15:26,110 --> 01:15:30,740 >> JASON Hirshhorn: OK, így nem többé, mert már vissza a vonal 1512 01:15:30,740 --> 01:15:31,960 mielőtt értékek i legkisebb. 1513 01:15:31,960 --> 01:15:33,810 Így elvesztette a kezdeti értéke. 1514 01:15:33,810 --> 01:15:37,350 Szóval azt mondta csere a két vonal. 1515 01:15:37,350 --> 01:15:41,780 Tehát most is a lista elején ahol a legkevesebb volt. 1516 01:15:41,780 --> 01:15:47,060 Tehát smallest_location egyenlő értékeket i. 1517 01:15:47,060 --> 01:15:51,310 Ez mozog az elején ezt rendezetlen része a listát a 1518 01:15:51,310 --> 01:15:52,090 legkisebb helyen. 1519 01:15:52,090 --> 01:15:54,860 És akkor értékekre i haladunk hogy az a legkisebb szám. 1520 01:15:54,860 --> 01:15:57,450 >> Van ennek értelme, hogy miért kellett tenni, hogy a csere? 1521 01:15:57,450 --> 01:15:59,650 Mi volna, felülírja ezt az értéket - Egy másik dolog, amit valószínűleg már 1522 01:15:59,650 --> 01:16:02,740 rájött, és megállapította, a GDP-ben. 1523 01:16:02,740 --> 01:16:05,310 Így már gondoskodott a pszeudokód. 1524 01:16:05,310 --> 01:16:10,935 Van-e bármi más, amit kell ide írni? 1525 01:16:10,935 --> 01:16:14,911 Tudna valaki valamit? 1526 01:16:14,911 --> 01:16:16,180 >> DIÁK: Honnan tudod ha végeztél? 1527 01:16:16,180 --> 01:16:17,680 >> JASON Hirshhorn: Hogyan tudni, hogy ha végeztünk? 1528 01:16:17,680 --> 01:16:18,890 Nagy kérdés. 1529 01:16:18,890 --> 01:16:21,684 Szóval, honnan tudjuk, ha végeztünk. 1530 01:16:21,684 --> 01:16:24,720 >> DIÁK: Hozzon létre egy változót, hogy gróf Az, hogy van egy csere történt-e vagy sem 1531 01:16:24,720 --> 01:16:27,810 és végig a pass. 1532 01:16:27,810 --> 01:16:30,180 >> JASON Hirshhorn: OK. 1533 01:16:30,180 --> 01:16:31,800 Ez lenne dolgozni buborék sort. 1534 01:16:31,800 --> 01:16:35,210 De kiválasztás sort, ha nem hogy a swap, hogy talán csak 1535 01:16:35,210 --> 01:16:38,670 mert a legkisebb érték benne a megfelelő helyen. 1536 01:16:38,670 --> 01:16:41,240 Mi lehet, hogy egy 1-lista-, 2, 4, 3. 1537 01:16:41,240 --> 01:16:42,830 A második alkalommal a mi nem tesz swap. 1538 01:16:42,830 --> 01:16:47,260 Mi lesz a 2-es szám, de majd továbbra is szükség van, hogy folyamatosan megy. 1539 01:16:47,260 --> 01:16:49,390 Tehát meg kell nyomon követni, ha kész vagyunk, vagy nem csak azt, hogy menni 1540 01:16:49,390 --> 01:16:50,640 amíg ez kész? 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> DIÁK: Mi csak megy amíg ez kész. 1543 01:16:56,740 --> 01:16:58,090 >> JASON Hirshhorn: mi csak addig, amíg ez be nem fejeződik. 1544 01:16:58,090 --> 01:17:01,720 A buborék sort, akkor pontosan így van, Jeff és Aleha, és a megoldás - 1545 01:17:01,720 --> 01:17:04,990 ez jó nyomon követni, hogy hány swap amit tett, mert a buborék 1546 01:17:04,990 --> 01:17:07,920 sort, ha nem az a tény, hogy nincs swap, kész, és akkor lehet, csökkenteni a 1547 01:17:07,920 --> 01:17:09,000 probléma le egy kicsit. 1548 01:17:09,000 --> 01:17:11,440 De kiválasztás sort, akkor már tényleg van, hogy menjen át a végén a 1549 01:17:11,440 --> 01:17:14,940 lista minden egyes alkalommal. 1550 01:17:14,940 --> 01:17:16,200 >> Tehát az, hogy. 1551 01:17:16,200 --> 01:17:18,530 Van két perc van hátra. 1552 01:17:18,530 --> 01:17:21,560 Nézzük, hogy minden. 1553 01:17:21,560 --> 01:17:24,340 Hadd nyitott talál itt, és Biztos vagyok valójában szólítanak fel - 1554 01:17:24,340 --> 01:17:25,610 Nem hívom bubble sort. 1555 01:17:25,610 --> 01:17:29,230 Változtassuk meg ezt a kiválasztási fajta. 1556 01:17:29,230 --> 01:17:31,060 hogy minden. / itt. 1557 01:17:31,060 --> 01:17:32,360 Keressük 42.. 1558 01:17:32,360 --> 01:17:38,110 Ez alkalommal megyünk át egy rendezetlen lista, mert meg kell rendezni 1559 01:17:38,110 --> 01:17:43,790 Először is, egy a lelet kód - meg kell rendezni először használja a szortírozás, majd 1560 01:17:43,790 --> 01:17:44,995 keresni valamit. 1561 01:17:44,995 --> 01:17:46,245 Ujjak keresztbe mindenkinek. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> Te jó ég. 1564 01:17:49,370 --> 01:17:50,800 Hé, szívem dobog. 1565 01:17:50,800 --> 01:17:52,320 Annak érdekében, hogy ez helyes-e. 1566 01:17:52,320 --> 01:17:57,270 Sőt, ha mi ezt még széles körben, a kódot, amennyire csak tudok 1567 01:17:57,270 --> 01:17:59,280 mondani, tökéletesen helytálló. 1568 01:17:59,280 --> 01:18:02,150 Vannak olyan javaslatok Szerettem volna neked. 1569 01:18:02,150 --> 01:18:06,215 Például úgy tűnik, 15 és 16. egy kicsit felesleges. 1570 01:18:06,215 --> 01:18:09,450 Úgy tűnik, nem feltétlenül kell, hogy mentse azokat. 1571 01:18:09,450 --> 01:18:12,790 Ha a legkisebb helyen, könnyen megtalálják a legkisebb értéket 1572 01:18:12,790 --> 01:18:14,750 csak gépelés értékei i. 1573 01:18:14,750 --> 01:18:18,100 >> Tehát, ha én is osztályozó a kódot, amit majd valójában, én 1574 01:18:18,100 --> 01:18:21,160 talán vegye le egy pontot, ha tartalmazza mindkét, mert 1575 01:18:21,160 --> 01:18:22,670 Nem kell mindkét. 1576 01:18:22,670 --> 01:18:25,400 Ha van hely, akkor nagyon könnyen kap az értéket. 1577 01:18:25,400 --> 01:18:27,520 És úgy tűnik, egy kicsit furcsa tárolni mindkettő. 1578 01:18:27,520 --> 01:18:31,070 Lehet, hogy nem is egy pont, de bizonyára megjegyzést, hogy ez talán 1579 01:18:31,070 --> 01:18:32,670 nem stilisztikai választás meg kell tenni. 1580 01:18:32,670 --> 01:18:35,290 Természetesen továbbra is a kód fut tökéletesen. 1581 01:18:35,290 --> 01:18:36,860 >> Így sajnos nem hogy a buborék sort. 1582 01:18:36,860 --> 01:18:37,940 Sajnálom, hogy az. 1583 01:18:37,940 --> 01:18:39,135 Mi volt kivitelben kiválasztás sort. 1584 01:18:39,135 --> 01:18:41,450 Van valakinek végső kérdése a kiválasztás sort? 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> OK, mielőtt fejét, azt akarom, , hogy nyissa fel a Chrome böngészőt. 1587 01:18:47,690 --> 01:18:54,340 Sajnos, ez csak egy otromba dugót az egyik típusú internet böngésző. 1588 01:18:54,340 --> 01:18:57,770 Akkor nyit bármilyen típusú böngésző de akkor valószínűleg Chrome. 1589 01:18:57,770 --> 01:19:01,250 És megy ez a következő weboldalon - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 Ha nem a gépelés a számítógépen Most, akkor egyértelműen 1592 01:19:07,685 --> 01:19:10,210 nem csinálom, Tom. 1593 01:19:10,210 --> 01:19:12,870 >> És kérjük, tegye meg vagy jobb most vagy a következő órában - 1594 01:19:12,870 --> 01:19:14,260 adj egy kis visszajelzést. 1595 01:19:14,260 --> 01:19:15,660 Ez csak részben kettő. 1596 01:19:15,660 --> 01:19:18,060 Van több együtt, így van egy csomó hely, hogy javítsa. 1597 01:19:18,060 --> 01:19:19,620 Én remélhetőleg is volt néhány dolog is. 1598 01:19:19,620 --> 01:19:22,160 Így érzem magam olyan rossz, de ha a Ön is szeretné, hogy adjon nekem egy smiley 1599 01:19:22,160 --> 01:19:24,250 arc, hálás lennék, hogy is. 1600 01:19:24,250 --> 01:19:25,330 Töltse ki, hogy be 1601 01:19:25,330 --> 01:19:28,210 >> És egy percig maradt, ez volt a héten három. 1602 01:19:28,210 --> 01:19:30,750 Én állok kint egy kicsit Ha bármilyen kérdése van. 1603 01:19:30,750 --> 01:19:32,220 Találkozunk srácok előadás holnap. 1604 01:19:32,220 --> 01:19:34,742