1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [3. osa] [Vähem Mugav] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvardi Ülikool] 3 00:00:05,000 --> 00:00:08,000 >> [See on CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Olgu, hakkame pihta. 5 00:00:10,000 --> 00:00:13,000 Tere tulemast 4. nädalal CS50. 6 00:00:13,000 --> 00:00:19,000 Kui te avada veebibrauseri ja avab pset 3, 7 00:00:19,000 --> 00:00:23,000 Rüselus koos CS50, me ei kavatse alustada läheb 8 00:00:23,000 --> 00:00:26,000 kaudu osa küsimusi seal. 9 00:00:26,000 --> 00:00:32,000 Täpselt nagu eelmisel nädalal, saadame töötavad CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 kui sa ka pull, et suureneb, 11 00:00:35,000 --> 00:00:43,000 ja kui sa minna ja külastada seda linki, et mul on siin üleval. 12 00:00:43,000 --> 00:00:45,000 On aeg alustada. 13 00:00:45,000 --> 00:00:51,000 Meil meie väike hi programm siin. Miski hull. 14 00:00:51,000 --> 00:00:55,000 Üks esimesi asju, mida ma tahan teha koos teiega täna on minna üle mõned lahendused 15 00:00:55,000 --> 00:00:58,000 kuni Ülesanded 1, omamoodi eeskuju lahendusi, 16 00:00:58,000 --> 00:01:03,000 lihtsalt nii saad aimu, milliseid kood töötajad on kirjutamine, 17 00:01:03,000 --> 00:01:07,000 milliseid kood teised õpilased kirjutavad, 18 00:01:07,000 --> 00:01:10,000 ja kas te olete heita pilk seda, sest ma tean, et see on imelik 19 00:01:10,000 --> 00:01:14,000 kui sisestate lahendust probleemile komplekt ja saada kommentaare 20 00:01:14,000 --> 00:01:18,000 kohta oma versioon, kuid mõnikord on see kasulik vaadata, kuidas teised inimesed tegid seda, 21 00:01:18,000 --> 00:01:22,000 eriti need, mis on kena välimusega. 22 00:01:22,000 --> 00:01:27,000 Enamasti olin tõesti muljet lahendusi, mis te poisid toodetud. 23 00:01:27,000 --> 00:01:31,000 Ma ei ole veel hakanud uurima oma Ülesanded 2s, kuid kui nad midagi nagu esimene, 24 00:01:31,000 --> 00:01:34,000 see ei tähenda midagi, kuid häid asju. 25 00:01:34,000 --> 00:01:40,000 >> Kui te vaatate minu parandusi, alustame täiesti alla kell 1. läbivaatamine, 26 00:01:40,000 --> 00:01:47,000 ja me ei kavatse võtta kiire pilk Mario lahendus. 27 00:01:47,000 --> 00:01:54,000 Kui te tõmmake see üles, need programmid, et me ei kavatse esitada on õiged. 28 00:01:54,000 --> 00:01:56,000 Seal ei olnud õigsuse küsimusi nende probleemidega, vaid pigem 29 00:01:56,000 --> 00:01:59,000 me tahame rääkida natuke erinev projekteerimise küsimusi 30 00:01:59,000 --> 00:02:03,000 mida kasutatakse siin. 31 00:02:03,000 --> 00:02:08,000 Üks asi, et oli huvitav lahendus 32 00:02:08,000 --> 00:02:11,000 on see, et ta kasutas seda uut ehitada nimetatakse nael määratleda, 33 00:02:11,000 --> 00:02:15,000 mõnikord nimetatakse ka räsi määratleda. 34 00:02:15,000 --> 00:02:18,000 Lubage mul suumida see siin. 35 00:02:18,000 --> 00:02:24,000 # Define võimaldab teil anda nimed need numbrid oma programmi. 36 00:02:24,000 --> 00:02:28,000 Sel juhul maksimaalne kõrgus püramiid Mario 37 00:02:28,000 --> 00:02:34,000 aastal 23 ja panemise asemel 23 minu kood- 38 00:02:34,000 --> 00:02:37,000 me viitaks, et nii raske koodis 23 - 39 00:02:37,000 --> 00:02:43,000 selle asemel annab see nimi MAX_HEIGHT, et number, 40 00:02:43,000 --> 00:02:48,000 nii et siia alla oma do-kui ahela 41 00:02:48,000 --> 00:02:51,000 saab tegelikult viidata MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 selle asemel, et number 23 tolli 43 00:02:55,000 --> 00:02:57,000 [Student] Mis on see eelis, seda teeb? 44 00:02:57,000 --> 00:02:59,000 See on hea küsimus. 45 00:02:59,000 --> 00:03:03,000 Üks on loetavus. 46 00:03:03,000 --> 00:03:08,000 Eelis kasutades seda # define on loetavus. 47 00:03:08,000 --> 00:03:11,000 Kui ma loen seda koodi, ma näen, mis toimub. 48 00:03:11,000 --> 00:03:15,000 >> Ma näen sellises seisundis siin, et testaamme 49 00:03:15,000 --> 00:03:19,000 jaoks kõrguse <0, mis me oleks võinud ka määratletud 50 00:03:19,000 --> 00:03:22,000 olema minimaalne kõrgus või min kõrgus. 51 00:03:22,000 --> 00:03:25,000 Teine eelis on see, et ma saan siis loe ülejäänud rida näha 52 00:03:25,000 --> 00:03:30,000 et me ka kontrollida veendumaks, et kõrgus ei ole suurem kui max kõrgus, 53 00:03:30,000 --> 00:03:35,000 sest me kavatseme jätkata samas kõrgus on suurem kui kõrgus max. 54 00:03:35,000 --> 00:03:40,000 Teine eelis on see, kui ma välja suumida natuke siin- 55 00:03:40,000 --> 00:03:49,000 kui ma käivitada programm ja ma saan seda, ütleme, 23 just nüüd, 56 00:03:49,000 --> 00:03:52,000 siis printida välja kõik 23 rida just niimoodi. 57 00:03:52,000 --> 00:03:54,000 Aga öelda tahtsin muuta max kõrgus, 58 00:03:54,000 --> 00:03:57,000 ja nüüd ma tahan, et piirata maksimaalse kõrgusega püramiidid 59 00:03:57,000 --> 00:04:06,000 olla ainult öelda, mees, see oli funky. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 ja ütleme et me tahtsime, et seada see võrdub 10. 62 00:04:18,000 --> 00:04:22,000 Nüüd sel hetkel, kõik, mida ma pidin tegema oli muuta selles ühes kohas. 63 00:04:22,000 --> 00:04:27,000 Ma ei kompileeri kood, ja nüüd, kui ma püüan ja kirjuta 12, 64 00:04:27,000 --> 00:04:30,000 siis kiire mind jälle. 65 00:04:30,000 --> 00:04:33,000 Sellisel juhul me kasutame ainult MAX_HEIGHT kord. 66 00:04:33,000 --> 00:04:37,000 See ei ole nii suur probleemideta minna 67 00:04:37,000 --> 00:04:40,000 ja muuta see samas loop kui teil on vaja. 68 00:04:40,000 --> 00:04:44,000 Aga programmid kuhu viitamine sama maagiline number 69 00:04:44,000 --> 00:04:47,000 ikka ja jälle, see # define mehhanism on tõesti mugav 70 00:04:47,000 --> 00:04:52,000 sest sa lihtsalt muuta see üks kord ülaosas faili-see on tavaliselt kuhu need pandud- 71 00:04:52,000 --> 00:04:57,000 ja muutus percolates läbi ülejäänud faili. 72 00:04:57,000 --> 00:05:02,000 >> Muud asjad ma tahtsin märkida seda ülesannet, et ma arvasin tundus väga kena, 73 00:05:02,000 --> 00:05:05,000 üks oli nimede muutujad. 74 00:05:05,000 --> 00:05:14,000 Näete siin, et meil on täisarv muutujad nimega reas ja nn kõrgus. 75 00:05:14,000 --> 00:05:20,000 Spaces, hashes, see aitab muuta koodi natuke paremini arusaadavaks, 76 00:05:20,000 --> 00:05:25,000 muudab veidi arusaadavamaks, mis tegelikult toimub. 77 00:05:25,000 --> 00:05:31,000 See on kontrastiks kasutades, ütleme, juhuslike tähtede 78 00:05:31,000 --> 00:05:35,000 või lihtsalt mitmesugused märgid kokku. 79 00:05:35,000 --> 00:05:39,000 Viimane asi, ma juhtida on see, et eest silmuseid, 80 00:05:39,000 --> 00:05:45,000 sageli need iteraatori muutujad, nende vastu, et te kasutate oma jaoks silmuseid, 81 00:05:45,000 --> 00:05:51,000 see on standard ja tava, et alustada neid kas i ja siis j ja siis k 82 00:05:51,000 --> 00:05:54,000 ja läheb edasi sealt, kui teil on vaja rohkem muutujaid, 83 00:05:54,000 --> 00:05:56,000 ja see on lihtsalt konventsioon. 84 00:05:56,000 --> 00:05:58,000 Seal on palju konventsioone. 85 00:05:58,000 --> 00:06:00,000 See sõltub programmeerimiskeelt te kasutate. 86 00:06:00,000 --> 00:06:04,000 Aga C, me tavaliselt alustame i. 87 00:06:04,000 --> 00:06:08,000 See ei ole mõtet kasutada, ütleme, või b 88 00:06:08,000 --> 00:06:13,000 sõltuvalt olukorrast. 89 00:06:13,000 --> 00:06:15,000 Ongi see. 90 00:06:15,000 --> 00:06:25,000 Kui te nüüd tõmba Revision 2, näete teise Mario, 91 00:06:25,000 --> 00:06:29,000 ja see on sarnane teine, et me just nägime, 92 00:06:29,000 --> 00:06:32,000 kuid see teeb midagi sellist lahe. 93 00:06:32,000 --> 00:06:38,000 Kui me vaatame seda osa siin sees sisemine jaoks silmus, 94 00:06:38,000 --> 00:06:44,000 nad kasutavad mõned hull otsin süntaksi siin just seda joont. 95 00:06:44,000 --> 00:06:47,000 Seda nimetatakse kolmekomponentsete operaator. 96 00:06:47,000 --> 00:06:53,000 See on kui teine ​​avaldus lühendatud ühele reale. 97 00:06:53,000 --> 00:06:57,000 Tingimus on see osa sulgudes. 98 00:06:57,000 --> 00:07:05,000 See on samaväärne, kui öelda, kui j 00:07:10,000 Ja mis siis sisu, et kui plokk oleks on ruumi 100 00:07:10,000 --> 00:07:16,000 ja siis sisu, mida muidu oleks on see #. 101 00:07:16,000 --> 00:07:20,000 See on sisuliselt määrates ruumi seda muutujat. 102 00:07:20,000 --> 00:07:24,000 See paneb ruumi sisu ploki muutuja, 103 00:07:24,000 --> 00:07:29,000 kui see tingimus on täidetud, ja kui tingimus ei ole täidetud, 104 00:07:29,000 --> 00:07:32,000 siis ploki muutuja muutub see #. 105 00:07:32,000 --> 00:07:37,000 Ja siis muidugi asemel rajada kogu string 106 00:07:37,000 --> 00:07:43,000 ja trükkimine kõik aasta lõpus selline lahendus prindib ühe märgi korraga. 107 00:07:43,000 --> 00:07:48,000 Päris lahe. 108 00:07:48,000 --> 00:07:53,000 >> Teine paar asja vaadata. Me liigume edasi ahne. 109 00:07:53,000 --> 00:07:58,000 Nüüd, kui me vaatame ahne, see esimene lahendus 110 00:07:58,000 --> 00:08:00,000 kasutab neid # määratleb üsna vähe. 111 00:08:00,000 --> 00:08:06,000 Meil on üks pidev määratleda iga erineva numbrid selles programmis. 112 00:08:06,000 --> 00:08:12,000 Meil üks senti dollari, üks kvartalit, Dimes, viiesendist, ja penne, 113 00:08:12,000 --> 00:08:15,000 ja nüüd, kui me liikuge allapoole ja loe koodi, 114 00:08:15,000 --> 00:08:22,000 näeme standard do-kui ahela trükkimine kõike välja. 115 00:08:22,000 --> 00:08:25,000 Kind of tuum on selle probleemi mõistes, et 116 00:08:25,000 --> 00:08:29,000 teil on vaja teisendada float, et sa lugeda alates kasutajal täisarv 117 00:08:29,000 --> 00:08:32,000 täpselt ei matemaatikat, ja seda sellepärast, 118 00:08:32,000 --> 00:08:36,000 koos ujukoma numbrid, nagu me rääkisime loeng lühidalt, 119 00:08:36,000 --> 00:08:41,000 see ei ole võimalik täpselt iga väärtus arvteljel 120 00:08:41,000 --> 00:08:47,000 sest seal on lõpmata palju väärtusi vahemikus 3 kuni, ütleme, 3,1 isegi. 121 00:08:47,000 --> 00:08:54,000 Sul võib olla 3,01 ja 3,001 ja 3,0001, ja saate hoida läheb. 122 00:08:54,000 --> 00:09:00,000 Tuleb välja, kui te töötate raha, siis sageli soovite teisendada see 123 00:09:00,000 --> 00:09:05,000 arvesse täisarv formaadis, nii et sa ei kaota penne ja sellist kraami. 124 00:09:05,000 --> 00:09:09,000 Kuidas saavutada, et ja ümardamise oli võti. 125 00:09:09,000 --> 00:09:14,000 See lahendus kasutada täiesti arusaadav, suur algoritm, 126 00:09:14,000 --> 00:09:17,000 mis decremented arvu senti alles, kõigepealt kvartalite 127 00:09:17,000 --> 00:09:19,000 siis Dimes, siis viiesendist, siis penne, 128 00:09:19,000 --> 00:09:24,000 ja lisades münti iga kord. 129 00:09:24,000 --> 00:09:31,000 >> Teine lahendus, mida me näeme, nagu ma välja suumida ja minna Redaktsioon 4, 130 00:09:31,000 --> 00:09:40,000 oli väga sarnane alguses, kuid selle asemel kasutatakse div ja mod 131 00:09:40,000 --> 00:09:44,000 siinsamas arvutada arvu senti. 132 00:09:44,000 --> 00:09:50,000 See, mitu kvartalit on võrdne arv senti jagatud 25, 133 00:09:50,000 --> 00:09:53,000 ja põhjus, miks see töötab, sest me teeme täisarv jagunemine, 134 00:09:53,000 --> 00:09:58,000 nii et see on kõrvaldades võimaliku ülejäänu. 135 00:09:58,000 --> 00:10:02,000 [Student] Kas meil kommenteerida otsing? 136 00:10:02,000 --> 00:10:05,000 On tõesti sõltub. 137 00:10:05,000 --> 00:10:08,000 [Student] Sa kommenteerides rohkem kui koodi siin. 138 00:10:08,000 --> 00:10:16,000 Jah, ja nii seal on hunnik erinevaid filosoofiaid selle. 139 00:10:16,000 --> 00:10:21,000 Minu isiklik filosoofia on, et kood on tõesti tõde, 140 00:10:21,000 --> 00:10:24,000 nagu teie kood on, mis tegelikult täidesaatva arvuti, 141 00:10:24,000 --> 00:10:29,000 ja nii sinu kood peaks olema nii loetav kui võimalik ei vaja nii palju kommentaare. 142 00:10:29,000 --> 00:10:33,000 See ütles, kui te teete asju, mis on omamoodi keeruline matemaatiliselt 143 00:10:33,000 --> 00:10:38,000 või algoritmiliselt, see on hea kommenteerida neid nii, et saate 144 00:10:38,000 --> 00:10:43,000 lisada mõõtme, pildi kiht kes loeb oma kood. 145 00:10:43,000 --> 00:10:49,000 Nendes lahendusi, sageli on need kommenteeris kõrgemalt lihtsalt sellepärast 146 00:10:49,000 --> 00:10:52,000 me tahame, et oleks võimalik levitada neid ja on inimesi valida neid 147 00:10:52,000 --> 00:10:56,000 ja loe need üsna kergesti. 148 00:10:56,000 --> 00:11:05,000 Aga kindlasti, olen nõus, et see on raske. 149 00:11:05,000 --> 00:11:07,000 [Student] Aga kui kahtled, mine raskem? 150 00:11:07,000 --> 00:11:10,000 Kui kahtled, mine raskemad. 151 00:11:10,000 --> 00:11:17,000 Mõned inimesed mõnikord ütlevad return 0 või midagi sellist. 152 00:11:17,000 --> 00:11:20,000 Ma arvan, et see naeruväärne kommentaari. 153 00:11:20,000 --> 00:11:22,000 On selge, et see, mis toimub. 154 00:11:22,000 --> 00:11:25,000 Ma ei vaja Inglise mulle öelda, et. 155 00:11:25,000 --> 00:11:28,000 Vahel inimesed kirjutavad asju "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 See on omamoodi armas, kuid ka mitte- 157 00:11:32,000 --> 00:11:35,000 et inimest ei tee vahet kommenteerides punkte või mitte. 158 00:11:35,000 --> 00:11:41,000 Need tüüpi kommentaarid on lihtsalt ha, ha. 159 00:11:41,000 --> 00:11:43,000 Lahe. 160 00:11:43,000 --> 00:11:48,000 >> Sel hetkel, alustame tööd probleemi Set 3 osa küsimustele. 161 00:11:48,000 --> 00:11:52,000 Kui te tõmmake see uuesti, 162 00:11:52,000 --> 00:11:55,000 Nagu eelmisel nädalal, me ei kavatse vaadata lühikesed püksid käesolevas paragrahvis. 163 00:11:55,000 --> 00:12:00,000 Me teavitame Teid teete, et oma aega ja rääkida küsimusi. 164 00:12:00,000 --> 00:12:05,000 Aga nüüd selles osas me ei kavatse kulutada veidi rohkem aega 165 00:12:05,000 --> 00:12:11,000 räägi vähem kodeerimine põhitõdesid 166 00:12:11,000 --> 00:12:15,000 nagu me tegime eelmisel nädalal, ja selle asemel, me ei kavatse keskenduda rohkem 167 00:12:15,000 --> 00:12:22,000 natuke rohkem teooria, et räägime binaarne otsing ja siis sorteerima. 168 00:12:22,000 --> 00:12:27,000 Alates Neile, kes on jälginud koos loengu, 169 00:12:27,000 --> 00:12:30,000 Kas keegi mulle anda sulgege milles erinevus seisneb 170 00:12:30,000 --> 00:12:35,000 vahel binaarne otsing ja lineaarne otsing? 171 00:12:35,000 --> 00:12:37,000 Mis toimub? Muidugi. 172 00:12:37,000 --> 00:12:42,000 Lineaarne Otsing läbi iga element järjestatud nimekirja 173 00:12:42,000 --> 00:12:45,000 ükshaaval ükshaaval ühe, 174 00:12:45,000 --> 00:12:50,000 ja binaarne otsing jagab nimekiri jagatakse 2 rühma, 175 00:12:50,000 --> 00:12:57,000 kontrollib, kas võtmed väärtus, mida te otsite on suurem või väiksem kui keskpunktis väärtus 176 00:12:57,000 --> 00:13:00,000 et sa lihtsalt leida, ja kui see on alla, see läheb madalam nimekirja 177 00:13:00,000 --> 00:13:03,000 ja siis jagab seda uuesti, teeb sama funktsiooni 178 00:13:03,000 --> 00:13:07,000 täiesti alla, kuni ta leiab keskpunktis olema võrdne väärtus ise. 179 00:13:07,000 --> 00:13:10,000 Õigus. 180 00:13:10,000 --> 00:13:12,000 >> Miks me hoolime? 181 00:13:12,000 --> 00:13:20,000 Miks me räägime binaarne otsing võrreldes lineaarne otsing? 182 00:13:20,000 --> 00:13:22,000 Jah. 183 00:13:22,000 --> 00:13:24,000 Binary on palju kiirem, nii et kui kahekordistada probleem 184 00:13:24,000 --> 00:13:27,000 see võtab veel ühe sammu asemel kaks korda nii palju. 185 00:13:27,000 --> 00:13:29,000 Täpselt. 186 00:13:29,000 --> 00:13:31,000 See on hea vastus. 187 00:13:31,000 --> 00:13:36,000 Lineaarne otsing on väga palju kontrollida üks element korraga, 188 00:13:36,000 --> 00:13:39,000 ja nagu me nägime juba esimesel päeval loengu 189 00:13:39,000 --> 00:13:42,000 Kui Taavet läks läbi tema telefoniraamat näiteks 190 00:13:42,000 --> 00:13:45,000 ja ripitud välja ühe lehekülje telefoniraamatust korraga 191 00:13:45,000 --> 00:13:47,000 ja hoida teed, et ikka ja jälle ja jälle, 192 00:13:47,000 --> 00:13:51,000 see saab teda tõesti kaua aega, et leida keegi telefoniraamatust 193 00:13:51,000 --> 00:13:55,000 kui muidugi, ta otsib kedagi alguses tähestikus. 194 00:13:55,000 --> 00:14:00,000 Mis Kahendotsingupuu, võid minna palju kiiremini, 195 00:14:00,000 --> 00:14:05,000 ja see ei ole lihtsalt kaks korda kiiremini või 3 korda kiiremini või 4 korda kiiremini. 196 00:14:05,000 --> 00:14:13,000 Aga probleem muutub väiksemaks ja väiksemaks ja väiksemaks palju kiiremini. 197 00:14:13,000 --> 00:14:17,000 Et illustreerida seda, hakkame rääkima, mis toimub 198 00:14:17,000 --> 00:14:21,000 kui me kirjutame binaarne otsing. 199 00:14:21,000 --> 00:14:27,000 Probleemiga on see, et kui mul on array numbrite 200 00:14:27,000 --> 00:14:40,000 öelda, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 ja siis 9 koos ton 0s pärast seda, 202 00:14:47,000 --> 00:14:52,000 me tahame, et oleks võimalik aru saada, tõesti kiiresti, millised on 203 00:14:52,000 --> 00:14:57,000 Selle massiivi numbrid. 204 00:14:57,000 --> 00:15:00,000 Tean, et see tundub veidi tobe ja natuke kunstlik, 205 00:15:00,000 --> 00:15:02,000 sest praegu on. 206 00:15:02,000 --> 00:15:05,000 Meil on massiiv, et ei ole väga palju elemente ta, 207 00:15:05,000 --> 00:15:08,000 ja kui ma küsin teie seast välja nuputada, kas 208 00:15:08,000 --> 00:15:11,000 23 on massiiv, mida saate teha, et päris kiiresti 209 00:15:11,000 --> 00:15:16,000 lihtsalt riivav seda ja mulle jah või ei. 210 00:15:16,000 --> 00:15:20,000 Analoog kaaluma seda, kujutage ette, kui see oli, ütleme, 211 00:15:20,000 --> 00:15:27,000 Exceli arvutustabeli koos 10.000 rida, 20000 rida. 212 00:15:27,000 --> 00:15:31,000 Muidugi, võite teha käsu F või kontrolli F ja otsida midagi välja. 213 00:15:31,000 --> 00:15:33,000 Võite kasutada ka filtreid ja otsing kraami, 214 00:15:33,000 --> 00:15:37,000 aga kui sa pidid vaatama läbi selle faili rida-realt, 215 00:15:37,000 --> 00:15:40,000 ta võtab teid kaua aega leida. 216 00:15:40,000 --> 00:15:42,000 See on selline nagu telefoniraamat näiteks liiga, kus 217 00:15:42,000 --> 00:15:44,000 keegi näeb läbi telefoniraamatust ühe lehe korraga. 218 00:15:44,000 --> 00:15:47,000 Tavaliselt nad ei ava see keskel, 219 00:15:47,000 --> 00:15:50,000 või kui tegemist on palju telefoni-ja sõnaraamatud, kus 220 00:15:50,000 --> 00:15:54,000 tegelikult on see sisse lülitatakse sisse esimene täht, 221 00:15:54,000 --> 00:16:01,000 te klapp selle esimene täht ja avada ja alustada läbimas seal. 222 00:16:01,000 --> 00:16:03,000 >> Tuleta mulle su nimi oligi. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Nagu Sam ütles, et lineaarne otsingu protsess saab olema väga aeglane, 225 00:16:11,000 --> 00:16:15,000 ja selle asemel binaarne otsing, kuidas see toimib on see, et 226 00:16:15,000 --> 00:16:21,000 iga kord kui me minna läbi iteratsiooni meie otsingu algoritm, 227 00:16:21,000 --> 00:16:27,000 me ei kavatse jagada loetelu pooleks sisuliselt, 228 00:16:27,000 --> 00:16:33,000 kaheks väiksemaks nimekirju. 229 00:16:33,000 --> 00:16:39,000 Ja siis järgmisel iteratsiooni loop, siis me jagame seda uuesti 230 00:16:39,000 --> 00:16:44,000 teistesse väiksemad nimekirjad. 231 00:16:44,000 --> 00:16:48,000 Nagu näete, probleem peab üha väiksemaks ja väiksemaks 232 00:16:48,000 --> 00:16:55,000 sest me peame visates poole nimekirja iga kord. 233 00:16:55,000 --> 00:16:59,000 Kuidas see viskama toimib? 234 00:16:59,000 --> 00:17:05,000 Lihtsalt meeldetuletuseks, mida me teeme, kui me olime arvutis 235 00:17:05,000 --> 00:17:11,000 ja me olime, ütleme, otsides number 5 selles loetelus 236 00:17:11,000 --> 00:17:15,000 on see, et meil oleks valida number keskel. 237 00:17:15,000 --> 00:17:26,000 Keset seda nimekirja, sest seal on 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numbrit, 238 00:17:26,000 --> 00:17:32,000 me tahaks valida number kas 4. kohal või 5. positsiooni, 239 00:17:32,000 --> 00:17:38,000 ja me tahaks helistada, et keset meie nimekirjas. 240 00:17:38,000 --> 00:17:42,000 Vali number keskel. 241 00:17:42,000 --> 00:17:51,000 Siis, nagu Sam ütles, me proovida, kas see arv on võrdne 242 00:17:51,000 --> 00:17:59,000 arvu, et me tahame saada või meie soovitud number. 243 00:17:59,000 --> 00:18:06,000 Kui see on võrdne, siis me oleme selle leidnud. Meie võidame. 244 00:18:06,000 --> 00:18:12,000 Kui see ei ole võrdne, siis seal on paar juhtudel. 245 00:18:12,000 --> 00:18:15,000 Kahel juhul on kas peab number olema suurem kui arvu me vaatame, 246 00:18:15,000 --> 00:18:19,000 või see on väiksem kui. 247 00:18:19,000 --> 00:18:25,000 Kui see on suurem, astume õige. 248 00:18:25,000 --> 00:18:33,000 Ja kui see on väiksem, me liigume vasakule. 249 00:18:33,000 --> 00:18:41,000 Ja siis me kogu protsessi korrata uuesti 250 00:18:41,000 --> 00:18:48,000 kas parem pool või vasakul pool nimekirjas. 251 00:18:48,000 --> 00:18:51,000 >> Esimene probleem tänapäeva osa on välja mõelda 252 00:18:51,000 --> 00:18:55,000 kuidas me saame tegelikult hakata väljendama seda C-koodi. 253 00:18:55,000 --> 00:18:58,000 Meil pseudokoodi siin. 254 00:18:58,000 --> 00:19:04,000 Mis me hakkame tegema on ma tõmba uus ruum, 255 00:19:04,000 --> 00:19:09,000 salvestada selle muutmisega nii, et meil on need märkused hiljem 256 00:19:09,000 --> 00:19:20,000 Me kustutame kõik selle, ja siis kopeeri ja kleebi probleem komplekt 257 00:19:20,000 --> 00:19:26,000 seda informatsiooni meie ruumid, ja loodetavasti see ei purune. 258 00:19:26,000 --> 00:19:28,000 Perfect. 259 00:19:28,000 --> 00:19:33,000 Kui te kõik seda teha, kopeeri ja kleebi see kood oma uut ruumi, 260 00:19:33,000 --> 00:19:43,000 arvesse tühi üks. 261 00:19:43,000 --> 00:19:47,000 Proovime Daniel. Kui te kompileerida ja käivitada see programm, see töötab? 262 00:19:47,000 --> 00:19:49,000 No >> Mis see räägib? 263 00:19:49,000 --> 00:19:53,000 Ta ütleb kontrolli jõuab lõpuks mitte-tühine funktsioon. 264 00:19:53,000 --> 00:19:55,000 Jah, nii ma püüan läbiviimist. 265 00:19:55,000 --> 00:19:59,000 Kas te olete näinud seda varem? Kas sa tead, mida see tähendab? 266 00:19:59,000 --> 00:20:01,000 Okei, lahkama seda natuke. 267 00:20:01,000 --> 00:20:10,000 See ütlus on file.c real 9 veerus 1, saame viga, nagu sa ütlesid, 268 00:20:10,000 --> 00:20:16,000 ja ta ütleb, et see tuleneb viga hoiatus ja tagastab tüüp hoiatus. 269 00:20:16,000 --> 00:20:18,000 Tundub, et midagi toimub koos naasmise tüüp, mis on loogiline. 270 00:20:18,000 --> 00:20:21,000 Meil ei ole tühine funktsioon, mis tähendab, et meil on funktsioon 271 00:20:21,000 --> 00:20:24,000 et ei tagasta tühine. 272 00:20:24,000 --> 00:20:27,000 Tühine funktsioon on üks, mis näeb välja selline: 273 00:20:27,000 --> 00:20:35,000 void foo (), ja see on tühine, kuna tulu liik, on tühine, 274 00:20:35,000 --> 00:20:38,000 mis tähendab, et kui meil oleks midagi siin 275 00:20:38,000 --> 00:20:45,000 nagu return 1, me saame tõlkija viga selles. 276 00:20:45,000 --> 00:20:49,000 Kuid meil ei ole tühine funktsioon. 277 00:20:49,000 --> 00:20:51,000 Meie mitte-tühine funktsioon on sel juhul meie otsingu funktsiooni 278 00:20:51,000 --> 00:20:56,000 sest see on tagasipöördumise tüüpi bool. 279 00:20:56,000 --> 00:20:59,000 Kui ta ütleb, et kontrolli jõuab lõpuks mitte-tühine funktsioon, 280 00:20:59,000 --> 00:21:02,000 see on sellepärast, et otsing ei ole tulu avaldusega. 281 00:21:02,000 --> 00:21:04,000 See ei tule midagi tüüpi bool. 282 00:21:04,000 --> 00:21:09,000 >> Saame kinnitada, et, ja mida te poisid arvate 283 00:21:09,000 --> 00:21:13,000 otsing peaks tagasi vaikimisi? 284 00:21:13,000 --> 00:21:16,000 Milline peaks olema vaikimisi tagastatav väärtus otsingut? 285 00:21:16,000 --> 00:21:19,000 Sest see, mida me saame panna lõpus. 286 00:21:19,000 --> 00:21:21,000 Charlotte, kas sul on-? 287 00:21:21,000 --> 00:21:23,000 Õige või vale? >> Õige või vale. 288 00:21:23,000 --> 00:21:26,000 Milline neist? 289 00:21:26,000 --> 00:21:28,000 False. Ma ei tea. 290 00:21:28,000 --> 00:21:30,000 Vale? Proovime seda. 291 00:21:30,000 --> 00:21:32,000 Miks sa ütleksid tagasi false? See on suurepärane intuitsioon. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Ma ei tea. 293 00:21:35,000 --> 00:21:39,000 Me läheme tagasi false käesolevas asjas, kuna see on meie vaikimisi 294 00:21:39,000 --> 00:21:44,000 kui mingil põhjusel loend on tühi või nõela 295 00:21:44,000 --> 00:21:46,000 et me otsime ei ole olemas. 296 00:21:46,000 --> 00:21:50,000 Siis päris lõpus, kui me ei anna tõsi varem seda funktsiooni, 297 00:21:50,000 --> 00:21:55,000 me alati teame, et see funktsioon ütlevad nope, see ei ole massiiv. 298 00:21:55,000 --> 00:21:58,000 See pole heinakuhjas. 299 00:21:58,000 --> 00:22:03,000 Nüüd, kui oleme kompileerida ja käivitada see-las ma salvestada see, et me ei tõmba see üles. 300 00:22:03,000 --> 00:22:08,000 Nüüd, kui oleme kompileerida ja käivitada meie programmi, see ehitab. 301 00:22:08,000 --> 00:22:12,000 Me saame meie väike kiire. 302 00:22:12,000 --> 00:22:20,000 Kui ma tabanud 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 See ei prinditud välja midagi. See tundub kõik lõppes hästi. 304 00:22:25,000 --> 00:22:35,000 Me peame täitma käesoleva sisse 305 00:22:35,000 --> 00:22:39,000 Me rääkisime algoritmi pseudokoodi natuke tagasi. 306 00:22:39,000 --> 00:22:44,000 Las ma vaatan, salvestage see, 307 00:22:44,000 --> 00:22:49,000 ja ma pull, et algoritm tagasi jälle. 308 00:22:49,000 --> 00:22:51,000 Olgem virutanud. Nope. 309 00:22:51,000 --> 00:22:58,000 Siin see on. 310 00:22:58,000 --> 00:23:03,000 Kuidas me seda teeme? 311 00:23:03,000 --> 00:23:11,000 Milline oleks hea strateegia alustades maha selle koodi? 312 00:23:11,000 --> 00:23:16,000 Sa pead valima number keskel. 313 00:23:16,000 --> 00:23:23,000 Kuidas me valime arv keset massiivi? 314 00:23:23,000 --> 00:23:25,000 Kõik soovitused? 315 00:23:25,000 --> 00:23:27,000 [Student] strlen jagatud 2. 316 00:23:27,000 --> 00:23:32,000 Strlen jagatud 2. See on suur üks. 317 00:23:32,000 --> 00:23:35,000 Strlen töötab erilist liiki massiivid. 318 00:23:35,000 --> 00:23:38,000 Milliseid massiivid? 319 00:23:38,000 --> 00:23:44,000 String massiivid, iseloomu massiivid. 320 00:23:44,000 --> 00:23:48,000 See on see sama liiki mõiste, et me tahame rakendada, 321 00:23:48,000 --> 00:23:52,000 kuid me ei saa kasutada strlen sest meil ei ole array tähemärki. 322 00:23:52,000 --> 00:23:55,000 Meil on hulgaliselt ints. 323 00:23:55,000 --> 00:23:58,000 Aga mida see strlen saada meile? 324 00:23:58,000 --> 00:24:01,000 Kas tead, mida ta saab meid? 325 00:24:01,000 --> 00:24:03,000 [Student] strlen saab meile pikkus. 326 00:24:03,000 --> 00:24:05,000 Täpselt, see läheb meile pikkus. 327 00:24:05,000 --> 00:24:09,000 Strlen saab pikkus array meile. 328 00:24:09,000 --> 00:24:14,000 >> Kuidas saame, et meie Kahendotsingupuu programm? 329 00:24:14,000 --> 00:24:18,000 Kuidas sa saad pikkus massiivi? 330 00:24:18,000 --> 00:24:20,000 [Student] strlen? 331 00:24:20,000 --> 00:24:25,000 Saad pikkus õigesti vormindatud C string massiivi strlen. 332 00:24:25,000 --> 00:24:31,000 Probleem on aga, et me ei pea stringi massiivi. 333 00:24:31,000 --> 00:24:36,000 Kui me vaatame tagasi selle koodi, meil on see täisarv massiivis. 334 00:24:36,000 --> 00:24:38,000 Kuidas me teame, kui kaua see on? 335 00:24:38,000 --> 00:24:44,000 [Student] Kas samaväärne üks näitaja, nagu int l või midagi? 336 00:24:44,000 --> 00:24:49,000 Tuleb välja, et tegelikult ei ole, ja seda viisil, et see on 337 00:24:49,000 --> 00:24:52,000 üks nendest asjadest, mis on lihtsalt hea teada C, 338 00:24:52,000 --> 00:24:57,000 et puudub võimalus saada pikkus massiivi 339 00:24:57,000 --> 00:24:59,000 kui kõik ma annan teile on massiiv. 340 00:24:59,000 --> 00:25:02,000 Seetõttu töötab stringid, põhjus strlen töid, 341 00:25:02,000 --> 00:25:06,000 seetõttu, kui string on õigesti vormindatud, 342 00:25:06,000 --> 00:25:12,000 see on selline eriline \ 0 märk päris lõpus. 343 00:25:12,000 --> 00:25:16,000 >> Võite ette kujutada, kui teil on valesti vormindatud stringi 344 00:25:16,000 --> 00:25:20,000 ja pole mingit \ 0 märk seal, siis kogu asi ei tööta. 345 00:25:20,000 --> 00:25:22,000 [Student] Kas lisate \ 0? 346 00:25:22,000 --> 00:25:24,000 Võiksime sel juhul. 347 00:25:24,000 --> 00:25:29,000 Võiksime lisada mingi \ 0 348 00:25:29,000 --> 00:25:33,000 või mingi tähistades iseloomu ja siis kasuta seda. 349 00:25:33,000 --> 00:25:36,000 Aga see pole ju päris läheb tööle 350 00:25:36,000 --> 00:25:40,000 sest \ 0 on char tüüpi, 351 00:25:40,000 --> 00:25:43,000 ja siin on meil ints. 352 00:25:43,000 --> 00:25:46,000 Teine asi on see, kui me kasutada erilise väärtusega 353 00:25:46,000 --> 00:25:49,000 nagu -1 kuni kaubamärgi lõpuks massiiv 354 00:25:49,000 --> 00:25:54,000 siis me ei saa kunagi hoida -1 meie täisarv massiivid. 355 00:25:54,000 --> 00:25:56,000 Me tahaks olla ummikus. 356 00:25:56,000 --> 00:26:00,000 Tuleb välja, et ainus viis saada pikkus 357 00:26:00,000 --> 00:26:03,000 massiivi C on tegelikult mäletan seda 358 00:26:03,000 --> 00:26:08,000 kui sa ehita ja siis andke seda ümber massiiv 359 00:26:08,000 --> 00:26:14,000 nii et kui mul on funktsioon, mis läheb tegema mõned tööd 360 00:26:14,000 --> 00:26:18,000 aasta array täisarvud või ujukite või kahekordistab või mida iganes, 361 00:26:18,000 --> 00:26:22,000 Ma ka pead andma funktsioon massiivi pikkuse, 362 00:26:22,000 --> 00:26:26,000 ja see on täpselt see, mida me oleme teinud siin allalaadimisfunktsioon. 363 00:26:26,000 --> 00:26:30,000 Kui vaadata, mida me oleme teinud, kui võtame meie massiivi siin, 364 00:26:30,000 --> 00:26:36,000 me ka läbida pikkus, suurus. 365 00:26:36,000 --> 00:26:41,000 See lihtsalt juhtub, et me oleme nimetanud seda muutujat siin, 366 00:26:41,000 --> 00:26:43,000 Selle parameetri või argument. 367 00:26:43,000 --> 00:26:46,000 Seda nimetatakse funktsiooni argument nimekirja või parameetrite nimekirja, 368 00:26:46,000 --> 00:26:51,000 ja neid nimetatakse ka argumente või parameetrid. 369 00:26:51,000 --> 00:26:53,000 Inimesed kasutavad erinevaid termineid eri aegadel. 370 00:26:53,000 --> 00:26:55,000 Ma mõnikord vahetada neid ise. 371 00:26:55,000 --> 00:27:00,000 See lihtsalt nii juhtub, et see muutuja siin on oma nime sarnaselt 372 00:27:00,000 --> 00:27:03,000 Käesoleva # define siin. 373 00:27:03,000 --> 00:27:06,000 Aga nad ei ole sama asi. 374 00:27:06,000 --> 00:27:11,000 Kapitaliseerimine ei küsimuses. 375 00:27:11,000 --> 00:27:14,000 >> Kui te vaatate, mis juhtub siin, me kuulutame 376 00:27:14,000 --> 00:27:18,000 meie int massiiv, mis me oleme numbreid. 377 00:27:18,000 --> 00:27:23,000 Oleme andnud oma suuruse, mis vastab meie # define kuni ülaosas. 378 00:27:23,000 --> 00:27:27,000 See saab olema 8. 379 00:27:27,000 --> 00:27:35,000 Ja siis kui me siis nimetame oma otsingu funktsiooni allapoole, 380 00:27:35,000 --> 00:27:40,000 võtame arvu tahame otsida, mis meil küsitakse, 381 00:27:40,000 --> 00:27:43,000 hangitud kasutaja. 382 00:27:43,000 --> 00:27:46,000 Me läbida massiiv, see numbrite 383 00:27:46,000 --> 00:27:51,000 ja siis on meil ka läbida suurus massiiv, 384 00:27:51,000 --> 00:27:57,000 ja siis väärtus suurus 8 saab ladustada 385 00:27:57,000 --> 00:28:01,000 või edastatakse see täisarv muutuja nimega suurus. 386 00:28:01,000 --> 00:28:08,000 Meil on suurus massiiv. 387 00:28:08,000 --> 00:28:11,000 Nüüd kui me läheme tagasi, mida me rääkisime varem, 388 00:28:11,000 --> 00:28:14,000 Ma arvan, et Missy tõid punkti, mida meil oli vaja teha on saada pikkus array 389 00:28:14,000 --> 00:28:20,000 ja jagada seda 2, ja mis annab meile keskpunktis. 390 00:28:20,000 --> 00:28:22,000 Vaatame. 391 00:28:22,000 --> 00:28:25,000 Kas mul on keegi kirjutada see ja salvestada see oma ruumi? 392 00:28:25,000 --> 00:28:27,000 Kuidas Leila? 393 00:28:27,000 --> 00:28:31,000 Kas mul võib olla kirjutad seda? 394 00:28:31,000 --> 00:28:35,000 Kirjutage esimene rida, kus te võtate pikkus array ja saada keskpunktis 395 00:28:35,000 --> 00:28:41,000 ja hoidke seda uus muutuja. 396 00:28:41,000 --> 00:28:44,000 Ma annan sulle paar sekundit. Oled sa valmis? 397 00:28:44,000 --> 00:28:46,000 [Student kuuldamatu] 398 00:28:46,000 --> 00:28:50,000 Muidugi, ma saaksin sulle arvutada keskpunktis 399 00:28:50,000 --> 00:28:55,000 Euroopa heinakuhjas massiiv sees otsingu funktsiooni 400 00:28:55,000 --> 00:29:03,000 kasutades pikkus heinakuhjas massiiv, mis on suuruse muutuja? 401 00:29:03,000 --> 00:29:08,000 Miski keeruline siin. 402 00:29:08,000 --> 00:29:12,000 [Leila] Lihtsalt suurus / 2 ja lihtsalt- 403 00:29:12,000 --> 00:29:17,000 Ja salvesta see ja vajuta nuppu Salvesta siin üleval, 404 00:29:17,000 --> 00:29:19,000 ja me tõmmake see üles. 405 00:29:19,000 --> 00:29:22,000 Perfect. 406 00:29:22,000 --> 00:29:28,000 Nii juba läheb. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Nagu, kas see kompileerida? 408 00:29:30,000 --> 00:29:32,000 [Leila] Ei, see tuleb suurem. 409 00:29:32,000 --> 00:29:34,000 [Nate] Jah, siis mida me peaksime tegema? 410 00:29:34,000 --> 00:29:36,000 [Leila] Nagu int keskpunktis või midagi. 411 00:29:36,000 --> 00:29:41,000 Awesome. Jah, teeme seda, int keskpunktis = suurus. 412 00:29:41,000 --> 00:29:44,000 Kas see kompileerida? 413 00:29:44,000 --> 00:29:47,000 Teeme seda kommentaari kustutada ja saada see välja viis. 414 00:29:47,000 --> 00:29:50,000 Mis ei kompileerida selle kohta? 415 00:29:50,000 --> 00:29:52,000 Me ei tee midagi koos täisarv, 416 00:29:52,000 --> 00:29:55,000 nii et me peame seda trükkida või midagi sellist. 417 00:29:55,000 --> 00:29:58,000 Jah, täpselt. 418 00:29:58,000 --> 00:30:00,000 Me saame kasutamata muutuja. 419 00:30:00,000 --> 00:30:02,000 Mida veel ei kavatse teha sellest? 420 00:30:02,000 --> 00:30:06,000 Ma arvan, et sa ütlesid midagi, Sam. Semikoolonit. 421 00:30:06,000 --> 00:30:08,000 Jah, ma olen kadunud need semikooloniga. 422 00:30:08,000 --> 00:30:14,000 See saab olema pidev asi vältel perspektiivis. 423 00:30:14,000 --> 00:30:17,000 Viimane asi, ma teen on ma panen natuke tühja ruumi mõlemal pool 424 00:30:17,000 --> 00:30:23,000 selle korraldaja siin, sest see on tavaliselt kuidas me seda teeme 425 00:30:23,000 --> 00:30:26,000 vastavalt meie stiili juhend. 426 00:30:26,000 --> 00:30:29,000 Meil keskpunktis meie massiivi. 427 00:30:29,000 --> 00:30:32,000 Nüüd, kui me mäletame tagasi meie algoritm, 428 00:30:32,000 --> 00:30:37,000 Mis oli teine ​​samm, et pidime tegema kui meil on keskpunktis? 429 00:30:37,000 --> 00:30:42,000 [Student] Kui see on suurem [kuuldamatu]. 430 00:30:42,000 --> 00:30:48,000 Jah, nii me peame tegema mingi võrdlus ja mida me võrrelda siin? 431 00:30:48,000 --> 00:30:53,000 Sa ütlesid, et kui see on suurem kui. Mis on see, mis lause viitab? 432 00:30:53,000 --> 00:30:57,000 Number, mis kerkib, kui see on suurem kui keskpunktis, siis minna kuni massiivi? 433 00:30:57,000 --> 00:31:05,000 Täpselt, nii arvu, mis kerkib kui me- 434 00:31:05,000 --> 00:31:10,000 Nõela, nii et me oleme võrreldes nõela, 435 00:31:10,000 --> 00:31:12,000 ja mida me võrrelda vastu nõela? 436 00:31:12,000 --> 00:31:15,000 Kuna nõel on see, mida me otsime. 437 00:31:15,000 --> 00:31:18,000 Me võrdleme seda saada keskpunktis. 438 00:31:18,000 --> 00:31:21,000 >> Aga kas on mõtet vaadata, 439 00:31:21,000 --> 00:31:27,000 kui nõel = keskpunktis? 440 00:31:27,000 --> 00:31:32,000 Kas see on loogiline? 441 00:31:32,000 --> 00:31:35,000 Kas keegi ei ole nõus? 442 00:31:35,000 --> 00:31:40,000 Vaatame seda proovida, kui (nõel == keskpunktis). 443 00:31:40,000 --> 00:31:42,000 [Student] Kas printf olete leidnud seda. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Me leidsime selle! \ N"); 445 00:31:51,000 --> 00:31:56,000 Muidu-Ma hakkan midagi erinevat siin. 446 00:31:56,000 --> 00:32:00,000 Ma lähen alustada pannes traksid ümber, kui avaldused kogu aeg 447 00:32:00,000 --> 00:32:05,000 lihtsalt sellepärast, et kui me lisame rohkem kraami, siis 448 00:32:05,000 --> 00:32:07,000 me ei saa koostajad. 449 00:32:07,000 --> 00:32:09,000 Jah, Sam. Sul punkti. 450 00:32:09,000 --> 00:32:12,000 Probleem on selles, et keskpunktis esindab positsiooni massiiv, 451 00:32:12,000 --> 00:32:15,000 aga sa saad selle esindada väärtus sellel kohal on massiiv. 452 00:32:15,000 --> 00:32:17,000 See on hea punkt. 453 00:32:17,000 --> 00:32:19,000 Kas kõik kuulsid, mida Sam ütles? 454 00:32:19,000 --> 00:32:22,000 Ta ütles, et keskpunktis nagu on 455 00:32:22,000 --> 00:32:28,000 moodustab vaid ühe positsiooni massiiv, kuid see ei ole tegelik element massiivi. 456 00:32:28,000 --> 00:32:30,000 Kui sa arvad koodi kirjutada kohe, 457 00:32:30,000 --> 00:32:35,000 kui me vaatame seda massiivi siin all, mis on 8 elementi see, 458 00:32:35,000 --> 00:32:39,000 Mis on väärtus keskpunktis saab olema see funktsioon? 459 00:32:39,000 --> 00:32:41,000 [Student] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Kui vaatame number 4 - 462 00:32:51,000 --> 00:32:54,000 ja me lihtsalt käivitada selle koodi ja panna veidi kurb nägu siin 463 00:32:54,000 --> 00:32:58,000 sest me ei leidnud seda-kui me teeme selle koodi 464 00:32:58,000 --> 00:33:04,000 nagu on praegu, laadige see, hoone, las ma liikuge allapoole 465 00:33:04,000 --> 00:33:09,000 ja kui me vaatame number 4, 466 00:33:09,000 --> 00:33:18,000 leidsime ta, kuid me ei saanud seda printf jah. 467 00:33:18,000 --> 00:33:23,000 Üks põhjus on see, et me ei tulnud tagasi tõsi, 468 00:33:23,000 --> 00:33:26,000 kuid kas me tõesti leida number 4? 469 00:33:26,000 --> 00:33:28,000 Ja Sam ütleb ei. 470 00:33:28,000 --> 00:33:31,000 Mida me leida? 471 00:33:31,000 --> 00:33:35,000 Me tõesti leitud keskpunktis, mis, kui me vaatame massiivi siin all, 472 00:33:35,000 --> 00:33:38,000 see saab olema elemendi indeks 4, et me vaatleme, 473 00:33:38,000 --> 00:33:42,000 mis on 23. 474 00:33:42,000 --> 00:33:46,000 >> Kuidas me tegelikult saada seda elementi keskpunktis 475 00:33:46,000 --> 00:33:48,000 ja mitte ainult keskpunktis ise? 476 00:33:48,000 --> 00:33:52,000 [Student] Me jõuaksid char või midagi? 477 00:33:52,000 --> 00:33:55,000 Mis oleks, et teha, lihtsalt uudishimust? 478 00:33:55,000 --> 00:33:57,000 Kas sa töötada natuke rohkem? 479 00:33:57,000 --> 00:34:02,000 Sa pead muutma seisundit arv, 480 00:34:02,000 --> 00:34:05,000 nii et sa pead tegema mingi side-Ma arvan, et see char, kuid see ei pruugi olla. 481 00:34:05,000 --> 00:34:07,000 Jah, see on hea punkt. 482 00:34:07,000 --> 00:34:12,000 Oleme teinud palju see konverteeriva ametikohad tähemärki, need märgid, 483 00:34:12,000 --> 00:34:14,000 Kahes esimeses probleem seab. 484 00:34:14,000 --> 00:34:18,000 Tuleb välja, et siin, see on peaaegu sarnane 485 00:34:18,000 --> 00:34:24,000 tutvumise nda tähemärgi stringi, kui see on mõistlik. 486 00:34:24,000 --> 00:34:30,000 Siin me tahame pääseda keskpunktis element. 487 00:34:30,000 --> 00:34:34,000 Kuidas me seda teeme? 488 00:34:34,000 --> 00:34:39,000 Kevin, kas sul on mingeid ettepanekuid, kuidas me võiksime seda teha? 489 00:34:39,000 --> 00:34:44,000 Sa võiksid teha heinakuhjas, sulg, keskel, suletud sulg. 490 00:34:44,000 --> 00:34:46,000 Kas sa kirjutad, et meie jaoks? 491 00:34:46,000 --> 00:34:51,000 Salvesta see siin, ja me pull, et üles. 492 00:34:51,000 --> 00:34:56,000 Me otsime seda rida 9, 493 00:34:56,000 --> 00:34:59,000 ja me aru, et me ei taha võrrelda nõela keskpunktis, 494 00:34:59,000 --> 00:35:03,000 kuid selle asemel, me tahame võrrelda nõela 495 00:35:03,000 --> 00:35:07,000 element positsioonil keskpunktis jooksul meie heinakuhjas massiiv. 496 00:35:07,000 --> 00:35:10,000 Lahe. 497 00:35:10,000 --> 00:35:12,000 Nii juba läheb. 498 00:35:12,000 --> 00:35:15,000 Jah, see tundub päris hea, kui (nõel == heinakuhjas [keskpunktis]). 499 00:35:15,000 --> 00:35:18,000 Me leidsime selle. 500 00:35:18,000 --> 00:35:22,000 Nüüd, kui me käivitada koodi-Me varundada natuke- 501 00:35:22,000 --> 00:35:26,000 see kompileerib, ta jookseb, ja nüüd, kui vaatame 4, 502 00:35:26,000 --> 00:35:30,000 me ei leia seda, sest nüüd me tegelikult saada number 23. 503 00:35:30,000 --> 00:35:33,000 Saame väärtus 23, ja see, mida me võrrelda meie nõel. 504 00:35:33,000 --> 00:35:35,000 Aga see on hea. See on samm õiges suunas. 505 00:35:35,000 --> 00:35:37,000 >> See, mida me üritame teha. 506 00:35:37,000 --> 00:35:40,000 Me ei püüa võrrelda nõela vastu positsioone massiivi 507 00:35:40,000 --> 00:35:44,000 vaid pigem vastu tegeliku massiivi elementide. 508 00:35:44,000 --> 00:35:49,000 Kui me vaatame tagasi nüüd järgmine samm meie algoritm, 509 00:35:49,000 --> 00:35:51,000 Mis on järgmine samm? 510 00:35:51,000 --> 00:35:57,000 Leila juba mainisin seda lühidalt. 511 00:35:57,000 --> 00:36:00,000 [Student] Kontrollige, kas see on suurem või väiksem kui ja siis otsustada, mis suunas liikuda. 512 00:36:00,000 --> 00:36:03,000 [Nate] Jah, nii kuidas me seda teeme? 513 00:36:03,000 --> 00:36:07,000 Kas paned mõne-Ma salvestada see läbivaatamine, 514 00:36:07,000 --> 00:36:13,000 ja siis kui paned mõned read, et teen seda. 515 00:36:13,000 --> 00:36:15,000 Jah, Charlotte. >> Mul on küsimus. 516 00:36:15,000 --> 00:36:19,000 Ei peaks see olema keskpunktis - 1, sest esimene asi on 517 00:36:19,000 --> 00:36:26,000 see on 0 indekseeritud, nii et kui me paneme 4, see pole tegelikult märk me otsime? 518 00:36:26,000 --> 00:36:30,000 Jah, ja teine ​​probleem, et on- 519 00:36:30,000 --> 00:36:35,000 see on suur saak, sest see, mis läheb lõpuks juhtub võib-olla 520 00:36:35,000 --> 00:36:42,000 kui me liigume edasi ja me ei ole kunagi kohandada esialgu? 521 00:36:42,000 --> 00:36:46,000 Ma arvan, mida me võiksime lõpuks teed püüab kasutada 522 00:36:46,000 --> 00:36:49,000 element kell 8. positsiooni massiiv, 523 00:36:49,000 --> 00:36:53,000 mis antud juhul ei ole olemas. 524 00:36:53,000 --> 00:36:56,000 Me tahame teha mingi arvestuse asjaolu 525 00:36:56,000 --> 00:36:59,000 et meil on mõned null indekseerimist. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Vabandust, ma mõtlesin keskpunktis - 1 Nurksulgudes. 527 00:37:05,000 --> 00:37:08,000 Me ei saa seda teha. 528 00:37:08,000 --> 00:37:10,000 Me tuleme selle küsimuse lihtsalt natuke. 529 00:37:10,000 --> 00:37:13,000 Kui hakkame tundma tegelikku silmuspõletamise, 530 00:37:13,000 --> 00:37:16,000 see on, kui me tõesti näeme seda mängu tulla. 531 00:37:16,000 --> 00:37:21,000 Praegu saame seda teha, kuid sa oled täiesti õigus. 532 00:37:21,000 --> 00:37:28,000 See null indekseerimine on mõju, et me peame arvele. 533 00:37:28,000 --> 00:37:30,000 Vaatame. 534 00:37:30,000 --> 00:37:34,000 >> Kuidas on suurem kui ja väiksem kui-? 535 00:37:34,000 --> 00:37:36,000 [Student] ma saan, kuidas seda teha suurem ja väiksem osa. 536 00:37:36,000 --> 00:37:41,000 Ma lihtsalt ei teadnud, mida printida, kui sa leiad, et see on vähem kui heinakuhjast keskpunktis või suurem. 537 00:37:41,000 --> 00:37:43,000 Siin ma võib päästa mida Ma olen- 538 00:37:43,000 --> 00:37:47,000 [Nate] Jah, kui salvestate mis sul ja me tõmmake see üles. 539 00:37:47,000 --> 00:37:49,000 Nii juba läheb. 540 00:37:49,000 --> 00:37:51,000 [Student] Ja ma panen küsimärke, mida ma ei teadnud. 541 00:37:51,000 --> 00:37:54,000 [Nate] See näeb hea välja. 542 00:37:54,000 --> 00:37:58,000 Siin on meil küsimärke, sest me ei tea siiani 543 00:37:58,000 --> 00:38:06,000 mida me kavatseme üsna tegema veel. 544 00:38:06,000 --> 00:38:12,000 Mida me tahame teha-oops, meil mõned traksid kõik funky meist. 545 00:38:12,000 --> 00:38:15,000 Me parandada need traksid. 546 00:38:15,000 --> 00:38:19,000 Nii juba läheb. 547 00:38:19,000 --> 00:38:22,000 Ja nii et mida me tahame teha, vastavalt meie algoritm, 548 00:38:22,000 --> 00:38:27,000 kui me ei leia nõela? 549 00:38:27,000 --> 00:38:32,000 Ütle nii, et nõel on väiksem kui see, mida me vaatame. Kevin. 550 00:38:32,000 --> 00:38:34,000 Ainult vaatate vasakule poole. 551 00:38:34,000 --> 00:38:40,000 Õigus, nii et paneme kommentaar siin, mis ütleb "vaata vasakule poole võrra." 552 00:38:40,000 --> 00:38:46,000 Ja kui nõel on suurem kui heinakuhjast keskpunktis, mida me tahame teha? 553 00:38:46,000 --> 00:38:48,000 [Student] Siis te vaatate paremale poole. 554 00:38:48,000 --> 00:38:53,000 Vaata paremale poole, "vaata paremale poole." 555 00:38:53,000 --> 00:38:58,000 Mitte liiga räbal. 556 00:38:58,000 --> 00:39:05,000 Okei, nii et sel hetkel, asjad otsivad päris hea. 557 00:39:05,000 --> 00:39:13,000 Probleem kood kirjutatud on mis? 558 00:39:13,000 --> 00:39:15,000 [Student] Sa ei pea tulemusnäitajad pooleks. 559 00:39:15,000 --> 00:39:18,000 Õigus, meil ei ole tulemusnäitajad pooleks. 560 00:39:18,000 --> 00:39:20,000 Samuti on ainult lähe läbi see üks kord. 561 00:39:20,000 --> 00:39:23,000 Me ainult kavatse vaadata üks keskpunktis. 562 00:39:23,000 --> 00:39:27,000 Kas element on olemas, või see ei ole. 563 00:39:27,000 --> 00:39:34,000 Et viia lõpule selle, me peame tegema mingi kordamine. 564 00:39:34,000 --> 00:39:39,000 Me peame hoidma korrata seni, kuni leiame, et 565 00:39:39,000 --> 00:39:43,000 kas element on olemas, sest me oleme vähenenud alla ja lõpuks leidsin selle, 566 00:39:43,000 --> 00:39:46,000 või see ei ole olemas, sest me vaatasime läbi kõik asjad, 567 00:39:46,000 --> 00:39:52,000 vastavas poolitatud massiivi ja leidis, et midagi on seal. 568 00:39:52,000 --> 00:39:56,000 >> Iga kord, kui meil see kordus toimub, mida me kavatseme kasutada? 569 00:39:56,000 --> 00:39:58,000 [Student] silmus. 570 00:39:58,000 --> 00:40:00,000 Mingi silmus. Jah. 571 00:40:00,000 --> 00:40:03,000 [Student] Kas me teeme do-kui ahela ja on seda teha ja siis samas 572 00:40:03,000 --> 00:40:10,000 Nõela ei võrdu-Ma ei tea, kust ma läksin sellega. 573 00:40:10,000 --> 00:40:18,000 Aga selline nagu seda nii kaua, kui see ei võrdu väärtusega, et kasutaja sisend. 574 00:40:18,000 --> 00:40:21,000 Jah, nii, vaatame, kuidas võiks seda kirjutada ise? 575 00:40:21,000 --> 00:40:23,000 Sa ütlesid, et lähme kasutada tee-samas silmus. 576 00:40:23,000 --> 00:40:26,000 Kui ei tee algus? 577 00:40:26,000 --> 00:40:33,000 [Student] Kohe pärast suurus / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Okei, ja mida me nüüd teeme? 579 00:40:42,000 --> 00:40:44,000 Me täitke aega hiljem. 580 00:40:44,000 --> 00:40:46,000 Mida me nüüd teeme? 581 00:40:46,000 --> 00:40:49,000 [Student] ei me tahame teha kõik asjad on meil siis, kui osa? 582 00:40:49,000 --> 00:40:52,000 [Nate] Kas kõik see kraam, väga. 583 00:40:52,000 --> 00:40:55,000 Kopeeri ja kleebi. 584 00:40:55,000 --> 00:40:59,000 Oh, mees. 585 00:40:59,000 --> 00:41:03,000 Vaatame, kas see töötab, kui me suudame lingile see üle. 586 00:41:03,000 --> 00:41:08,000 Ilus. 587 00:41:08,000 --> 00:41:16,000 Okei, ja me salvestada see nii teiega on see. 588 00:41:16,000 --> 00:41:21,000 Olgu, ja me teeme seda- 589 00:41:21,000 --> 00:41:25,000 milline oli samas seisukorras sa olid pärast? 590 00:41:25,000 --> 00:41:31,000 [Student] Kuigi nõel ei võrdu, nii nagu hüüumärk. 591 00:41:31,000 --> 00:41:37,000 Aga ma ei tea täpselt, mis see on veel. 592 00:41:37,000 --> 00:41:39,000 [Nate] Jah, see on üks viis seda teha. 593 00:41:39,000 --> 00:41:41,000 Sam, sa pead kommentaari? 594 00:41:41,000 --> 00:41:43,000 [Sam] mulle meenus, kui ma vaatasin videod, 595 00:41:43,000 --> 00:41:48,000 Võtsin pilt ühe-meeldib, kui me tegime pseudokoodi seda, 596 00:41:48,000 --> 00:41:52,000 seal oli mingi seos max ja min. 597 00:41:52,000 --> 00:41:58,000 Ma arvan, et see oli midagi, kui maks on kunagi alla min. 598 00:41:58,000 --> 00:42:00,000 Käes. 599 00:42:00,000 --> 00:42:04,000 [Sam] Või nagu kui maks ei ole väiksem kui min või midagi sellist, 600 00:42:04,000 --> 00:42:06,000 sest see tähendaks, et olete otsinud kõik. 601 00:42:06,000 --> 00:42:13,000 >> Jah, mis siis see tunduda max ja min viitasid? 602 00:42:13,000 --> 00:42:16,000 [Sam] Väärtused et-täisarvud, et ei kavatse muuta 603 00:42:16,000 --> 00:42:18,000 võrreldes, kus me paneme keskpunktis. 604 00:42:18,000 --> 00:42:20,000 Täpselt. 605 00:42:20,000 --> 00:42:24,000 [Sam] Sel hetkel, see läheb [kuuldamatu] arvutada max ja min. 606 00:42:24,000 --> 00:42:29,000 Keskel on see max ja min idee. 607 00:42:29,000 --> 00:42:35,000 Kas see mõttekas rahvas? 608 00:42:35,000 --> 00:42:39,000 Kui me hakata uurima, kui me teeme seda iteratsiooni 609 00:42:39,000 --> 00:42:43,000 sa oled täiesti õige, et tahame kasutada mingi tee-samas silmus. 610 00:42:43,000 --> 00:42:49,000 Aga ma arvan, et kui me mäletame, mis toimub hetkekurss selle massiivi 611 00:42:49,000 --> 00:42:53,000 ja mis tegelikult toimub-Ma kavatsen kirjutada siia- 612 00:42:53,000 --> 00:42:58,000 päris esimese iteratsiooni binaarne otsing, meil- 613 00:42:58,000 --> 00:43:05,000 Ma lähen kasutada B ja E tähistavad alguses. 614 00:43:05,000 --> 00:43:10,000 Ja siis lõpuks meie massiivi. 615 00:43:10,000 --> 00:43:14,000 Me teame, et alguses on kell 4 siinsamas, 616 00:43:14,000 --> 00:43:18,000 ja me teame, et aasta lõpuks on 108. 617 00:43:18,000 --> 00:43:23,000 Ütle me otsite number 15. 618 00:43:23,000 --> 00:43:27,000 Esmakordselt teeme seda, nagu nägime, 619 00:43:27,000 --> 00:43:30,000 keskpunktis on kas saab olema 16 või 23 620 00:43:30,000 --> 00:43:34,000 sõltuvalt sellest, kuidas me arvutama asju teha. 621 00:43:34,000 --> 00:43:37,000 Kuna ühtlaselt jagades keskel annaks meile selle ruumi 622 00:43:37,000 --> 00:43:42,000 vahemikus 16 ja 23, ei saa me ühtlaselt jagada see 623 00:43:42,000 --> 00:43:47,000 või jagada see ja saada on tõsi keskpunktis. 624 00:43:47,000 --> 00:43:49,000 Me vaatame 16. 625 00:43:49,000 --> 00:43:55,000 Me mõistame "Hei, 16> 15, et me otsime." 626 00:43:55,000 --> 00:43:59,000 Et siis vaatate vasakule poole massiivi 627 00:43:59,000 --> 00:44:03,000 mida me lõpuks teeme on vette 628 00:44:03,000 --> 00:44:07,000 kogu see ülemine osa 629 00:44:07,000 --> 00:44:16,000 ja ütles: "Okei, nüüd meie lõpp saab olema siin." 630 00:44:16,000 --> 00:44:22,000 Järgmise iteratsiooni meie silmus, me nüüd vaatab seda massiivi 631 00:44:22,000 --> 00:44:25,000 tõhusalt äraviskamist seda osa, sest nüüd 632 00:44:25,000 --> 00:44:30,000 kui me võtame keskpunktis olla vahe algus ja lõpp, 633 00:44:30,000 --> 00:44:34,000 leiame meie keskpunktis olla 8, 634 00:44:34,000 --> 00:44:40,000 mida me saame siis katsetada 8 näha, kus see on seotud hulk me otsime, 635 00:44:40,000 --> 00:44:44,000 15. leiab, et 15 on suurem, 636 00:44:44,000 --> 00:44:49,000 nii et me peame liikuma paremale osa nimekirjast, 637 00:44:49,000 --> 00:44:51,000 mida me teame, sest me oleme inimesed, ja me näeme seda. 638 00:44:51,000 --> 00:44:54,000 Me teame, et õigus osa saab olema, kui me selle leiame, 639 00:44:54,000 --> 00:45:01,000 kuid arvuti ei tea, et nii see, mida me teeme on me tegelikult 640 00:45:01,000 --> 00:45:04,000 on see tõusevad, ja nüüd alguses ja lõpus 641 00:45:04,000 --> 00:45:11,000 on sama kohapeal, nii keskpunktis muutub ainult nimestikus numbrit sel hetkel, 642 00:45:11,000 --> 00:45:16,000 mis on 15, ja me leidsime ta. 643 00:45:16,000 --> 00:45:21,000 Kas see valgustada, kus see kogu max ja min märge läheb, 644 00:45:21,000 --> 00:45:24,000 jälgida otspunktid massiiv, et aru saada, 645 00:45:24,000 --> 00:45:35,000 kuidas kitsas asju ette? 646 00:45:35,000 --> 00:45:42,000 >> Mis juhtuks, kui see ei olnud võrdne 15 nüüd? 647 00:45:42,000 --> 00:45:52,000 Mida teha, kui otsisime 15 ja selle asemel, see number oli ka 16? 648 00:45:52,000 --> 00:45:54,000 Me ütleks: "Oh, see on suurem. 649 00:45:54,000 --> 00:45:57,000 Me tahame minna tagasi vasakule. " 650 00:45:57,000 --> 00:46:01,000 Ja me tahaks liikuda meie e paremale, 651 00:46:01,000 --> 00:46:06,000 kus punkt on meil näitaja, mis oleks vastuolus. 652 00:46:06,000 --> 00:46:09,000 See ei oleks võimalik otsida enam elemente 653 00:46:09,000 --> 00:46:13,000 sest nüüd oleme meie lõpp ja meie lähtepunkt, 654 00:46:13,000 --> 00:46:16,000 Meie max ja meie min, nüüd keerata. 655 00:46:16,000 --> 00:46:23,000 Otsime läbi kogu massiiv. Me ei leia midagi. 656 00:46:23,000 --> 00:46:27,000 See on koht, kus me tahaks öelda: "Okei, me lähme lõpetage see algoritm. 657 00:46:27,000 --> 00:46:34,000 Me ei leidnud midagi. Me teame, et see pole siin. " 658 00:46:34,000 --> 00:46:36,000 Kuidas see läheb? 659 00:46:36,000 --> 00:46:40,000 [Student] Kuidas täpselt ei arvuti lülitab end? 660 00:46:40,000 --> 00:46:45,000 Kuidas end lõpuks enne algust? 661 00:46:45,000 --> 00:46:48,000 Lõpuks jõuab enne algust 662 00:46:48,000 --> 00:46:54,000 sest matemaatika, et me teeme iga kord, kui me seda teha. 663 00:46:54,000 --> 00:47:00,000 Kuidas me swap on, kui te vaatate esimest korda me seda swap 664 00:47:00,000 --> 00:47:03,000 kus meil algab 4. ja lõpuks 665 00:47:03,000 --> 00:47:13,000 kõik viis maha 108 ja meie keskpunktis, ütleme, vähemalt 16 - 666 00:47:13,000 --> 00:47:20,000 Ma lähen taastama tagasi 15-kui me otsime 15, 667 00:47:20,000 --> 00:47:25,000 Me teadsime, et see, mida me tegime, kui me kontrollisime 16 ja nägi, et see oli suurem 668 00:47:25,000 --> 00:47:28,000 ja tahtis ära visata kogu õigus osa nimekirjast, 669 00:47:28,000 --> 00:47:36,000 nägime, et see, mida me tahtsime teha on liikuda seda e siinsamas. 670 00:47:36,000 --> 00:47:44,000 Tõhusalt, e sain kolis üks enne keskpunktis. 671 00:47:44,000 --> 00:47:48,000 Samuti, kui me seda tegime iteratsiooni algoritm 672 00:47:48,000 --> 00:47:51,000 ja keskpunktis oli kell 8, 673 00:47:51,000 --> 00:47:55,000 leidsime, et 8 <15, siis me tahtsime minna b 674 00:47:55,000 --> 00:48:00,000 1 viimase keskpunktis. 675 00:48:00,000 --> 00:48:07,000 Nüüd, algus ja lõpp on nii kokku selles 15. 676 00:48:07,000 --> 00:48:10,000 >> Kui me tahaks toimunud otsima mõnda muud väärtust, mitte 15, 677 00:48:10,000 --> 00:48:14,000 või kui see oli 15 asemel olnud 16, 678 00:48:14,000 --> 00:48:20,000 oleksime leidnud, et e soovime liikuda üks enne keskpunktis. 679 00:48:20,000 --> 00:48:33,000 Nüüd e oleks seal keerata alla b. 680 00:48:33,000 --> 00:48:39,000 Vaatame läbi kõndida, kuidas me tegelikult lõpuks kodeerimine seda algoritmi. 681 00:48:39,000 --> 00:48:44,000 Me teame, et me tahame seda keskpunkti arvutamise. 682 00:48:44,000 --> 00:48:48,000 Me teame ka seda, et me tahame jälgida alguses ja lõpus massiivi 683 00:48:48,000 --> 00:48:51,000 Meie praegune massiivi nii saame nuputada 684 00:48:51,000 --> 00:48:56,000 kui see vasakus pooles nimekiri on ja kus paremal pool nimekirjas on. 685 00:48:56,000 --> 00:49:03,000 Me teeme seda kas algab ja lõpeb, 686 00:49:03,000 --> 00:49:07,000 või me nimetame neid min ja max. 687 00:49:07,000 --> 00:49:10,000 Ma kasutan algab ja lõpeb seekord. 688 00:49:10,000 --> 00:49:15,000 Kui hakkame, kui me vaatame tagasi meie näide siin all, 689 00:49:15,000 --> 00:49:20,000 meie alguses seati algusest massiiv, nagu loomulik. 690 00:49:20,000 --> 00:49:25,000 Mis indeks oli? Mida peaks meie hakkavad olema? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] heinakuhi [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Jah, et me saaksime seada see võrdne heinakuhjas [0]. 694 00:49:37,000 --> 00:49:40,000 Probleem on aga, et see annab meile ei positsiooni esimese osaga. 695 00:49:40,000 --> 00:49:45,000 See annab meile indeks esimese elemendi või tegelik väärtus tol esimesel kohal. 696 00:49:45,000 --> 00:49:47,000 [Student] See teisendada 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Mis see teha on-hästi, see ei tee midagi konverteeriva. 698 00:49:52,000 --> 00:49:56,000 Mida ta teeb on see salvestab 4 alustada, 699 00:49:56,000 --> 00:49:59,000 ja siis on raske teha võrdlusi vastu hakata 700 00:49:59,000 --> 00:50:03,000 sest begin on ettevõtte väärtuse 4, 701 00:50:03,000 --> 00:50:06,000 mis on algusest meie massiiv, 702 00:50:06,000 --> 00:50:08,000 kuid me tahame jälgida indeksid massiivi 703 00:50:08,000 --> 00:50:11,000 erinevalt väärtused. 704 00:50:11,000 --> 00:50:17,000 Me tegelikult kasutavad 0, niimoodi. 705 00:50:17,000 --> 00:50:20,000 Aasta lõpuks massiiv-Charlotte tõi see natuke varem. 706 00:50:20,000 --> 00:50:23,000 See on koht, kus me võtame arvesse null indekseerimist. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, mis on lõpuks massiivi? 708 00:50:25,000 --> 00:50:28,000 Mis on indeks aasta lõpuks? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Suurus - 1. 710 00:50:30,000 --> 00:50:32,000 Jah, ja mis suurus peaks me kasutame? 711 00:50:32,000 --> 00:50:35,000 Kui me kasutame kapitali suurus või väiketähed suurus? 712 00:50:35,000 --> 00:50:37,000 Kapitali suurus. 713 00:50:37,000 --> 00:50:42,000 Sel juhul saaksime kasutada kapitali suurus. 714 00:50:42,000 --> 00:50:45,000 Kui me tahtsime seda funktsiooni kasutada teisaldatavaid 715 00:50:45,000 --> 00:50:48,000 ja seda funktsiooni kasutada teistes programmides, 716 00:50:48,000 --> 00:50:50,000 saame tegelikult kasutada väiketähti suurus. 717 00:50:50,000 --> 00:50:52,000 See on hea ka. 718 00:50:52,000 --> 00:51:01,000 Aga Charlotte on täiesti õige, et me tahame suurus - 1. 719 00:51:01,000 --> 00:51:03,000 Sel hetkel- 720 00:51:03,000 --> 00:51:05,000 [Student] Kuidas on võimalik, et saate suur suurus? 721 00:51:05,000 --> 00:51:07,000 Kuidas on nii, et me võiksime kasutada suur suurus? 722 00:51:07,000 --> 00:51:13,000 Tuleb välja, et need # määratleb tõesti, 723 00:51:13,000 --> 00:51:19,000 kapoti alla, teksti nagu otsida ja asendada, kui see on mõistlik. 724 00:51:19,000 --> 00:51:24,000 Kui kompileerida koodi, preprocessing etapp 725 00:51:24,000 --> 00:51:27,000 koostaja läbib faili 726 00:51:27,000 --> 00:51:31,000 ja ta otsib kõikjal, et olete kirjutanud kapitali suurus, 727 00:51:31,000 --> 00:51:39,000 ja see asendab teksti sõna-sõnalt koos 8, just niimoodi. 728 00:51:39,000 --> 00:51:42,000 Selles mõttes on see väga erinev muutuja. 729 00:51:42,000 --> 00:51:45,000 See ei võta üldse ruumi mälu. 730 00:51:45,000 --> 00:51:52,000 See on lihtne teksti asendama trikk. 731 00:51:52,000 --> 00:51:57,000 Sel juhul me ei kavatse kasutada suurus. 732 00:51:57,000 --> 00:52:01,000 Siit me tahame teha mingi kordus, 733 00:52:01,000 --> 00:52:03,000 ja me oleme õigel teel meie tee-samas silmus. 734 00:52:03,000 --> 00:52:08,000 Me tahame teha midagi, kuni tingimus ei ole enam 735 00:52:08,000 --> 00:52:12,000 ja nagu me nägime, nägime, et see tingimus 736 00:52:12,000 --> 00:52:19,000 oli tõesti, et me ei taha lõpuks 737 00:52:19,000 --> 00:52:24,000 olla väiksem kui alata. 738 00:52:24,000 --> 00:52:26,000 >> See on meie peatumine seisukorras. 739 00:52:26,000 --> 00:52:35,000 Kui see juhtub, me tahame peatada ja kuulutada nagu: "Hei, me ei leidnud midagi." 740 00:52:35,000 --> 00:52:43,000 Väljendada seda, me ei taha kasutada mingi loop. 741 00:52:43,000 --> 00:52:49,000 Sel juhul oleks see siis do-kui ahela, loop, samas loop? 742 00:52:49,000 --> 00:52:51,000 Meil on do-kui ahela siin. 743 00:52:51,000 --> 00:52:53,000 Kas te niimoodi lähenemine? 744 00:52:53,000 --> 00:52:59,000 Kas sa arvad, me peaksime püüdma teistsugust lähenemist? 745 00:52:59,000 --> 00:53:01,000 Kevin, kõik mõtted? 746 00:53:01,000 --> 00:53:06,000 Meil võiks olla samas loop sest me teame, maksimaalne 747 00:53:06,000 --> 00:53:11,000 oleks suurem kui min alguses niikuinii. 748 00:53:11,000 --> 00:53:14,000 Jah, seega ei ole initsialiseerimise, mis peab juhtuma. 749 00:53:14,000 --> 00:53:17,000 Need teha-samas silmuseid on suur, kui teil on initsialiseerida midagi 750 00:53:17,000 --> 00:53:21,000 enne katseid, kusjuures siin 751 00:53:21,000 --> 00:53:26,000 me teame, et me ei kavatse hoida taasinitsialiseeris nii algavad ja lõpevad 752 00:53:26,000 --> 00:53:28,000 iga vooru ring. 753 00:53:28,000 --> 00:53:32,000 Me teame, et me tahame initsialiseerida neid, siis vaadake meie seisukorras. 754 00:53:32,000 --> 00:53:38,000 Sel juhul ma tegelikult minna lihtsa samas silmus. 755 00:53:38,000 --> 00:53:44,000 Selgub, et teha-samas silmuseid kasutatakse üsna harva. 756 00:53:44,000 --> 00:53:49,000 Palju kohti ei ole isegi õpetada ei samas silmuseid. 757 00:53:49,000 --> 00:53:53,000 Nad on head käitlemise kasutaja sisend, nii et me oleme näinud palju neid siiani. 758 00:53:53,000 --> 00:53:59,000 Aga normaalne ja samas silmuseid on palju rohkem levinud. 759 00:53:59,000 --> 00:54:03,000 Selgub, et see tingimus kirjaliku 760 00:54:03,000 --> 00:54:09,000 ei tõesti meile palju head, ja miks see nii on? 761 00:54:09,000 --> 00:54:11,000 Mul on kahju, ma ei tea su nime. 762 00:54:11,000 --> 00:54:13,000 Mina olen Jerry. >> Vabandust? 763 00:54:13,000 --> 00:54:15,000 See on B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Oh, okei. 765 00:54:18,000 --> 00:54:23,000 Ma ei näe sa mu nimekirjas. 766 00:54:23,000 --> 00:54:26,000 Oh, see on sest-oh, see on mõistlik. 767 00:54:26,000 --> 00:54:31,000 Kas teil on aimu, miks see samas silmus ei pruugi töötada nagu ette nähtud, 768 00:54:31,000 --> 00:54:38,000 nagu kirjutatud tingimus? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Mõtled sa tahad kõik asjad pärast see-? 770 00:54:43,000 --> 00:54:46,000 Jah, nii see on üks. 771 00:54:46,000 --> 00:54:49,000 Oleksime panna kõik selle kraami samas loop, mis on täiesti tõsi. 772 00:54:49,000 --> 00:54:55,000 Teine asi, mis on natuke rohkem probleeme, kuigi see, et see tingimus ei tööta. 773 00:54:55,000 --> 00:54:57,000 [Student] Sa pead flip ta. 774 00:54:57,000 --> 00:55:04,000 Õigus, nii et see tingimus ei ole kunagi tõsi olla esialgu, kuidas me rääkisime sellest. 775 00:55:04,000 --> 00:55:08,000 Me tahame teha midagi lõpuni 00:55:13,000 kuid me tahame teha midagi samal ajal 777 00:55:13,000 --> 00:55:21,000 alustada ≤ lõppu. 778 00:55:21,000 --> 00:55:24,000 >> Seal on, et vastasel korral loogika seal. 779 00:55:24,000 --> 00:55:27,000 Ma olen süüdi nende vigu kogu aeg. 780 00:55:27,000 --> 00:55:31,000 [Student] Miks see olema väiksem või võrdne? 781 00:55:31,000 --> 00:55:33,000 Sest kas sa mäletad juhtuda, et me peame 782 00:55:33,000 --> 00:55:36,000 kus oli ainult üks element, ja me olime alla 783 00:55:36,000 --> 00:55:43,000 ja otsisime lihtsalt 15 meie massiivi? 784 00:55:43,000 --> 00:55:47,000 Ja meie alguses ja meie lõpuks oli sama element. 785 00:55:47,000 --> 00:55:50,000 Me tahame veenduda, et me ravime sel juhul. 786 00:55:50,000 --> 00:55:54,000 Kui me tegime otse alla, 787 00:55:54,000 --> 00:55:58,000 me ainult saaks pikali 2-element massiivi. 788 00:55:58,000 --> 00:56:06,000 Kui me saime näha, et viimane element, kui see oleks meie element, me polnud kunagi leida. 789 00:56:06,000 --> 00:56:10,000 Nüüd siin, me saame teha täpselt nii, nagu sa ütlesid. 790 00:56:10,000 --> 00:56:15,000 Me saame alustada plopping kraami otse keset meie samas silmus. 791 00:56:15,000 --> 00:56:20,000 Me ei saa sulpsti meie keskpunktis. 792 00:56:20,000 --> 00:56:24,000 Me ei saa võtta kõiki neid kui avaldused, 793 00:56:24,000 --> 00:56:30,000 tõmmake need seda do-kui ahela, 794 00:56:30,000 --> 00:56:34,000 sulpsti neid, 795 00:56:34,000 --> 00:56:39,000 puhastada asju natuke, 796 00:56:39,000 --> 00:56:48,000 ja ma edasi minna ja päästa see läbi vaadata. 797 00:56:48,000 --> 00:56:53,000 Ja sel hetkel, me saada päris lähedal. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Ma arvan, et teil ka on int keskpunktis = suurus - 1/2. 800 00:56:58,000 --> 00:57:01,000 Leidsin, suurus - 1/2. 801 00:57:01,000 --> 00:57:05,000 Kas on midagi, me peame muutma umbes et liin? 802 00:57:05,000 --> 00:57:10,000 See oli hea saak. 803 00:57:10,000 --> 00:57:14,000 >> Mis suurus teha? Kas me pidevalt muutuva suurusega? 804 00:57:14,000 --> 00:57:17,000 Selleks, et hoida sellist rida, meil on suurust muuta. 805 00:57:17,000 --> 00:57:21,000 Me peame muutma suurus iga kord kui me minna umbes jaoks silmus. 806 00:57:21,000 --> 00:57:25,000 Aga mäletan, kui me läheme läbi meie näiteks natuke varem, 807 00:57:25,000 --> 00:57:30,000 ja meil oli alguses kell 4 808 00:57:30,000 --> 00:57:33,000 ja lõpuks kogu tee üle on 108? 809 00:57:33,000 --> 00:57:35,000 Kuidas me arvutada keskpunktis? 810 00:57:35,000 --> 00:57:38,000 Kas me kasutame suurus? 811 00:57:38,000 --> 00:57:40,000 Või olime kasutades alguse ja lõpu asemel? 812 00:57:40,000 --> 00:57:42,000 See vahe on otsas ja algus. 813 00:57:42,000 --> 00:57:50,000 Täpselt, ja kuidas täpselt ma peaksin kirjutama, et Charlotte? 814 00:57:50,000 --> 00:57:52,000 Lihtsalt lõppu - alata. 815 00:57:52,000 --> 00:57:55,000 Sa ei pea tegema - 1 816 00:57:55,000 --> 00:57:58,000 sest - 1 on lisatud lõpus ja algab juba. 817 00:57:58,000 --> 00:58:00,000 [Nate] Tore, et sa oled täiesti õigus. 818 00:58:00,000 --> 00:58:03,000 Meil ei ole teha - 1, sest et - 1 on lisatud 819 00:58:03,000 --> 00:58:08,000 ja moodustas kui me initsialiseerida lõpuks muutuja. 820 00:58:08,000 --> 00:58:11,000 >> Kas on midagi, mida ma pean tegema süntaktiliselt on see liin on mõtet? 821 00:58:11,000 --> 00:58:13,000 [Student] Plus hakata. >> Plus alustada? 822 00:58:13,000 --> 00:58:15,000 [Student] lõpus. 823 00:58:15,000 --> 00:58:20,000 Sest see on ainus arvutatud pool pikkust. 824 00:58:20,000 --> 00:58:26,000 Peate lisama hakata. 825 00:58:26,000 --> 00:58:31,000 [Nate] Mida see arvutab juures? 826 00:58:31,000 --> 00:58:35,000 Kui me mõtleme end selle väga esimese iteratsiooni silmus, 827 00:58:35,000 --> 00:58:40,000 lõpuks saab olema asendis indeks 7. 828 00:58:40,000 --> 00:58:43,000 Alustada on asendis 0. 829 00:58:43,000 --> 00:58:47,000 Pea meeles, me otsime kas 830 00:58:47,000 --> 00:58:52,000 kohal 3 või positsioon 4. 831 00:58:52,000 --> 00:58:56,000 Kui me vaatame seda matemaatikat, vaid teha seda veidi reaalsemaks, 832 00:58:56,000 --> 00:59:02,000 panna mõned numbrid siin on meil 7, 0, 833 00:59:02,000 --> 00:59:10,000 nii 7-0 ja seejärel / 2 834 00:59:10,000 --> 00:59:19,000 on 3 täisarv rajoon, mis on. 835 00:59:19,000 --> 00:59:26,000 Siis me peame siis lisage tagasi meie hakata? 836 00:59:26,000 --> 00:59:28,000 Me ei käesolevas asjas. 837 00:59:28,000 --> 00:59:31,000 On väga esimese iteratsiooni, siis on see hea, sest alustada on 0. 838 00:59:31,000 --> 00:59:36,000 Aga nagu me edu, me teeme tõesti kõik lihtsalt vaja 839 00:59:36,000 --> 00:59:42,000 lõppu - alustada / 2. 840 00:59:42,000 --> 00:59:46,000 On veel üks trikk siin, ja see on nimelt üks tähtsam. 841 00:59:46,000 --> 00:59:49,000 [Student] Kas meil on vaja sulgudes? 842 00:59:49,000 --> 00:59:53,000 [Nate] Täpselt, ja see on, sest kui me ei pane neid sulgudes, 843 00:59:53,000 --> 00:59:58,000 siis selle rea, siis tõlgendatakse asemel 844 00:59:58,000 --> 01:00:09,000 kui (lõpp) - (algus / 2), mida me kindlasti ei taha. 845 01:00:09,000 --> 01:00:11,000 Vaata ette nende prioriteetsuse eeskirjad. 846 01:00:11,000 --> 01:00:15,000 [Student] Miks ei ole see lõpp + alustada? 847 01:00:15,000 --> 01:00:17,000 Miks ei ole see lõpp + alustada? 848 01:00:17,000 --> 01:00:19,000 [Student] Miks ei ole seda? 849 01:00:19,000 --> 01:00:24,000 Miks see oleks +? 850 01:00:24,000 --> 01:00:26,000 Ma arvan, et sul on õigus. 851 01:00:26,000 --> 01:00:28,000 [Student] Sest see on keskmine? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + alustada, sa oled täiesti õigus. 853 01:00:31,000 --> 01:00:34,000 Vau, ma täiesti goofed. Sul on õigus. 854 01:00:34,000 --> 01:00:39,000 Kui me teeme miinus, me tahaks lisada alustada uuesti sisse 855 01:00:39,000 --> 01:00:43,000 Sel juhul, sa oled väga hea, et me tahame võtta keskmiselt kaks, 856 01:00:43,000 --> 01:00:45,000 nii et me ei taha neid lisada, mitte lahutama neid. 857 01:00:45,000 --> 01:00:49,000 [Student] Oleks ka tööd kui sa lõpuks - alustada / 2 + alata. 858 01:00:49,000 --> 01:00:55,000 See oleks kui me seda teeme, ma usun küll. 859 01:00:55,000 --> 01:01:00,000 >> Näiteks, kui otsisime alustada, 860 01:01:00,000 --> 01:01:04,000 ja me nihkunud selle siia 861 01:01:04,000 --> 01:01:08,000 kuni 15. 862 01:01:08,000 --> 01:01:12,000 Nüüd hakkavad on asendis 2. 863 01:01:12,000 --> 01:01:15,000 Lõpp on asendis 7. 864 01:01:15,000 --> 01:01:21,000 Kui me lahutame need, saame 5. 865 01:01:21,000 --> 01:01:24,000 Jagada, et 2, me saame 2. 866 01:01:24,000 --> 01:01:27,000 Ja siis me lisada 2 tagasi, 867 01:01:27,000 --> 01:01:30,000 ja mis saab meid 4. kohal, 868 01:01:30,000 --> 01:01:33,000 mis on siin, mis on keskpunktis. 869 01:01:33,000 --> 01:01:36,000 [Student] Kas meil on vaja hoolitseda ümbriste? 870 01:01:36,000 --> 01:01:39,000 Mis mõttes me peame hoolitsema pakkimine? 871 01:01:39,000 --> 01:01:43,000 Kui summa või vahe 872 01:01:43,000 --> 01:01:45,000 sõltuvalt sellest, kuidas me seda teeme, ei ole paarisarv. 873 01:01:45,000 --> 01:01:49,000 Siis arvuti saab segaduses, kas siis, kui see on 2,5; 874 01:01:49,000 --> 01:01:52,000 sa liikuda vasakule või paremale, et määrata, milline on keskpunktis? 875 01:01:52,000 --> 01:01:54,000 Käes. 876 01:01:54,000 --> 01:01:56,000 Tuleb välja, et on täisarv jagunemine, 877 01:01:56,000 --> 01:01:59,000 me ei ole kunagi saada neid ujukoma numbrid. 878 01:01:59,000 --> 01:02:01,000 Me ei saa kunagi kohaga. 879 01:02:01,000 --> 01:02:04,000 See on täiesti hävitada. 880 01:02:04,000 --> 01:02:08,000 Kui teil on arvuti jagada 2 int muutuja 881 01:02:08,000 --> 01:02:11,000 ja üks on 7 ja teine ​​on 2, 882 01:02:11,000 --> 01:02:13,000 sa ei saa 3,5 tulemusena. 883 01:02:13,000 --> 01:02:16,000 See saab 3. 884 01:02:16,000 --> 01:02:19,000 Ülejäänud ära visata, nii et see on tegelikult ümardamist 885 01:02:19,000 --> 01:02:24,000 ei ümmargused, vaid põrandale, kui te olete tuttav, et matemaatika, 886 01:02:24,000 --> 01:02:27,000 kus sa täiesti kõrvale kohaga, 887 01:02:27,000 --> 01:02:31,000 ja nii sa oled sisuliselt ürita seda allapoole lähima 888 01:02:31,000 --> 01:02:33,000 kogu positsiooni, lähima täisarvuni. 889 01:02:33,000 --> 01:02:38,000 [Student] Aga see on problemaatiline, sest kui sul on array 7 elementi 890 01:02:38,000 --> 01:02:43,000 siis mis teeb automaatselt 3. osa välja keskpunktis asemel 4.. 891 01:02:43,000 --> 01:02:46,000 Kuidas me sellega toime tulete? 892 01:02:46,000 --> 01:02:49,000 See on problemaatiline, sest kui meil oleks massiivi 7, 893 01:02:49,000 --> 01:02:54,000 see valiksid 3. asemel 4.. 894 01:02:54,000 --> 01:02:56,000 Kas te võiksite selgitada natuke rohkem? 895 01:02:56,000 --> 01:02:59,000 [Student] Sest kui sul on 7 elementi siis 4. osa 896 01:02:59,000 --> 01:03:04,000 oleks keskpunktis, eks? 897 01:03:04,000 --> 01:03:07,000 Jäta oma kommentaar on null indekseeritud, kuigi. 898 01:03:07,000 --> 01:03:10,000 [Student] Jah, nii asukohta 3. See oleks keskpunktis. 899 01:03:10,000 --> 01:03:12,000 Jah. 900 01:03:12,000 --> 01:03:16,000 Oh, okei. Ma näen, mida sa mõtled. 901 01:03:16,000 --> 01:03:19,000 See on selline imelik, nagu me harjuda kogu see mõiste 902 01:03:19,000 --> 01:03:22,000 vabanemiseks kümnendkohtade. 903 01:03:22,000 --> 01:03:26,000 See on hea punkt. 904 01:03:26,000 --> 01:03:30,000 Teeme sellele lõpu üles. 905 01:03:30,000 --> 01:03:32,000 Meie arvutused meie keskpunktis. 906 01:03:32,000 --> 01:03:37,000 >> Me katsetame, kas meie nõel on võrdne keskmise väärtuse. 907 01:03:37,000 --> 01:03:41,000 Me printida, et me leidsime selle, aga tõesti, mida me tahame teha sellises olukorras? 908 01:03:41,000 --> 01:03:46,000 Leidsime ta, et me tahame lase helistaja teate, et me leidsime selle. 909 01:03:46,000 --> 01:03:49,000 Meil on funktsioon, mis on tõeväärtus tipitud funktsioon. 910 01:03:49,000 --> 01:03:54,000 Kuidas me signaali, helistaja meie ülesanne, et me oleme valmis minema 911 01:03:54,000 --> 01:03:58,000 on meil öelda: "Hei, see on tõsi." 912 01:03:58,000 --> 01:04:00,000 Kuidas me seda teeme, Kevin? 913 01:04:00,000 --> 01:04:02,000 Sa noogutab pead. >> [Kevin] Lisa tagastamise tõsi. 914 01:04:02,000 --> 01:04:06,000 [Nate] Täpselt, tagasi true. 915 01:04:06,000 --> 01:04:12,000 Nüüd, kui see ei ole võrdne, kuidas me vaatame vasakul pool? 916 01:04:12,000 --> 01:04:16,000 Mingeid ideid? 917 01:04:16,000 --> 01:04:18,000 Stella, mingeid ideid? 918 01:04:18,000 --> 01:04:21,000 Teil tuleb määrata uus positsioon lõpus. 919 01:04:21,000 --> 01:04:23,000 Jah. 920 01:04:23,000 --> 01:04:29,000 Nii et me peame tegema positsiooni keskpunktis - lõpuks. 921 01:04:29,000 --> 01:04:33,000 Suur. 922 01:04:33,000 --> 01:04:36,000 Meil on vaja kehtestada uus seisukoht lõpuni 923 01:04:36,000 --> 01:04:38,000 vaadata vasakul pool. 924 01:04:38,000 --> 01:04:41,000 See oli see, mida me rääkisime enne, kui 925 01:04:41,000 --> 01:04:44,000 Hoian minnes tagasi selle näite. 926 01:04:44,000 --> 01:04:50,000 Olen algab siin, ja siis on mul lõpuks kogu tee siia. 927 01:04:50,000 --> 01:04:53,000 >> Jällegi, kui me otsime 15, ja meie keskpunktis on kell 16, 928 01:04:53,000 --> 01:04:56,000 ja me mõistame, "Oih, 16 on suurem. 929 01:04:56,000 --> 01:04:59,000 Me tahame liikuda vasakule poole võrra. " 930 01:04:59,000 --> 01:05:02,000 Meil oleks siis liikuda lõpp 15, 931 01:05:02,000 --> 01:05:06,000 ja me teeme seda, võttes üks kaugusel keskpunktis 932 01:05:06,000 --> 01:05:09,000 ja millega, et meie uus lõpus. 933 01:05:09,000 --> 01:05:12,000 Samuti siis, kui me tahame vaadata paremal pool, kuidas me seda teeme? 934 01:05:12,000 --> 01:05:14,000 Kas teil on idee? 935 01:05:14,000 --> 01:05:22,000 [Student] Sa lihtsalt seatud hakata keskpunktis + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Tore. 937 01:05:24,000 --> 01:05:29,000 Ja nüüd nii, et me ei leia midagi, 938 01:05:29,000 --> 01:05:32,000 kas see saada hoolitsenud meie eest? 939 01:05:32,000 --> 01:05:36,000 Daniel, kas see saada hoolitsenud meie eest? 940 01:05:36,000 --> 01:05:38,000 [Daniel] nr 941 01:05:38,000 --> 01:05:40,000 [Nate] Kui me teeme seda läbi kogu massiivi ja me ei leia midagi, 942 01:05:40,000 --> 01:05:42,000 kus oleks, et tuleb hoolitseda, või peaks me hoolitseme selle eest? 943 01:05:42,000 --> 01:05:44,000 [Daniel] samas seisukorras. 944 01:05:44,000 --> 01:05:48,000 [Nate] Jah, samas seisukorras, täpselt. 945 01:05:48,000 --> 01:05:51,000 See hoolitseb läbimas kogu antennide massiivi, kui me ei leia midagi. 946 01:05:51,000 --> 01:05:53,000 See samas loop lõpeb. 947 01:05:53,000 --> 01:05:56,000 Me ei ole kunagi kokku puutunud selle tingimuse, 948 01:05:56,000 --> 01:06:03,000 ja me saame tagasi false. 949 01:06:03,000 --> 01:06:10,000 Me ei saa jätta ka seda, kui siin niimoodi 950 01:06:10,000 --> 01:06:14,000 sest kui see, kui väide on tõene, 951 01:06:14,000 --> 01:06:16,000 ja meie funktsioon tagastab, 952 01:06:16,000 --> 01:06:21,000 ja nii me sisuliselt katkestada see funktsioon selles punktis 953 01:06:21,000 --> 01:06:24,000 kui me tagasi tõsi. 954 01:06:24,000 --> 01:06:28,000 Aga mis juhtub selle struktuur here? 955 01:06:28,000 --> 01:06:34,000 Kas see töö täielikult, või on mõned loogiline viga on? 956 01:06:34,000 --> 01:06:37,000 >> On mõned loogiline viga on, sellega, kuidas see on loodud. 957 01:06:37,000 --> 01:06:40,000 Mis võiks see olla? 958 01:06:40,000 --> 01:06:43,000 [Student] Miks sa vajad - ja + 1s? 959 01:06:43,000 --> 01:06:47,000 See seab meie massiivi kuni tuleb meie uus vasak pool ja paremal pool. 960 01:06:47,000 --> 01:06:51,000 [Student] Aga miks ei võiks sa seda ilma - 1s ja + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Võiksime seada see võrdne keskpunktis? 962 01:06:53,000 --> 01:07:04,000 Mis võiks olla problemaatiline on? 963 01:07:04,000 --> 01:07:08,000 [Student] Ma arvan, et see on ebaefektiivne, sest sa oled kontrollimise väärtus, mis on juba kontrollitud. 964 01:07:08,000 --> 01:07:11,000 [Nate] Täpselt nii, Sam on täiesti õigus. 965 01:07:11,000 --> 01:07:15,000 Kui seate end ja alustada võrdne keskpunktis 966 01:07:15,000 --> 01:07:18,000 asemel - 1 ja + 1 reflektoorselt, 967 01:07:18,000 --> 01:07:22,000 mingil hetkel tulevikus me lõpuks kontrollida keskpunktis uuesti. 968 01:07:22,000 --> 01:07:26,000 [Student] hakkasin pset, ja siis mul oli midagi sellist 969 01:07:26,000 --> 01:07:30,000 kus ma unustasin + 1, ja see takerdunud lõputu silmuse. 970 01:07:30,000 --> 01:07:34,000 Jah, sest mingil hetkel sa oled kunagi saada alguse ja lõpu 971 01:07:34,000 --> 01:07:39,000 tegelikult kattuvad. 972 01:07:39,000 --> 01:07:41,000 Lahe. 973 01:07:41,000 --> 01:07:44,000 Seal on veel üks loogiline viga, ja see on, et see peaks kindlasti olema 974 01:07:44,000 --> 01:07:48,000 else if. 975 01:07:48,000 --> 01:07:55,000 Miks see võiks olla? 976 01:07:55,000 --> 01:07:59,000 >> Põhjuseks on, kui see ei ole else if-sa nägid seda, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Jah, sest siis muutub ka lõpp-punkti. 978 01:08:02,000 --> 01:08:05,000 [Nate] Täpselt. 979 01:08:05,000 --> 01:08:07,000 Me muutume tulemusnäitaja, 980 01:08:07,000 --> 01:08:12,000 ja kui see on kirjutatud niimoodi-Me teha ruumi vahel- 981 01:08:12,000 --> 01:08:14,000 kontrollib ta käesolevas asjas. 982 01:08:14,000 --> 01:08:18,000 Sel juhul, kui see õnnestub, siis lakkab välja funktsiooni. 983 01:08:18,000 --> 01:08:21,000 Siis vaadake seda järgmisel korral, 984 01:08:21,000 --> 01:08:24,000 ja kui see õnnestub, siis reguleerige lõpp, 985 01:08:24,000 --> 01:08:28,000 ja siis see jätkub ja kontrollida käesolevas asjas. 986 01:08:28,000 --> 01:08:31,000 Aga sel hetkel, me ei taha seda jätkata kontrollimist. 987 01:08:31,000 --> 01:08:35,000 Õnneks me ei ole nullitud keskpunktis siin, 988 01:08:35,000 --> 01:08:39,000 ja me teame, et sel juhul ei õnnestu. 989 01:08:39,000 --> 01:08:44,000 Aga me kindlasti tahame panna muidu kui seal 990 01:08:44,000 --> 01:08:48,000 isegi kui see võib-sel juhul 991 01:08:48,000 --> 01:08:52,000 kuna me ei kohandades keskpunktis, kas see muudab midagi? 992 01:08:52,000 --> 01:08:54,000 Ei, sest need juhtumid on kõik välistavad. 993 01:08:54,000 --> 01:08:58,000 Jällegi, minu paha. 994 01:08:58,000 --> 01:09:01,000 Me ei, ma arvan, tuleb see if. 995 01:09:01,000 --> 01:09:05,000 Me võime seda proovida ja kasutada seda ja vaata, mis juhtub. 996 01:09:05,000 --> 01:09:08,000 Ehitus, viga. 997 01:09:08,000 --> 01:09:12,000 See on ilmselt seetõttu jätsin need B ja e on siin. 998 01:09:12,000 --> 01:09:14,000 Kas mul on veel neid üles ülaosas? 999 01:09:14,000 --> 01:09:16,000 See ei näe välja nagu see. 1000 01:09:16,000 --> 01:09:20,000 Me suumimiseks ehitada, 1001 01:09:20,000 --> 01:09:24,000 seal ta läheb, nii et nüüd, kui me otsida 15, 1002 01:09:24,000 --> 01:09:28,000 Jah. 1003 01:09:28,000 --> 01:09:30,000 Lubage mul suumimiseks 1004 01:09:30,000 --> 01:09:33,000 15, jah. Me võime kasutada seda uuesti. 1005 01:09:33,000 --> 01:09:36,000 Uploading lähtekoodi, hoone, töötab. 1006 01:09:36,000 --> 01:09:41,000 Me ei saa otsida midagi 13 1007 01:09:41,000 --> 01:09:45,000 ja me ei saa midagi printida, nii et see ei leia, et meie jaoks. 1008 01:09:45,000 --> 01:09:51,000 See on suurepärane, sest see ei ole meie nimekirjas. 1009 01:09:51,000 --> 01:09:53,000 >> Meil on nüüd aeg otsa saama. 1010 01:09:53,000 --> 01:09:55,000 See saab olema see sel nädalal. 1011 01:09:55,000 --> 01:10:00,000 Täname, ning näeme hiljem. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]