[Powered by Google Translate] [3 skirsnis] [mažiau patogūs] [Nate Hardison] [Harvardo universiteto] [Tai CS50.] [CS50.TV] Viskas gerai, galime pradėti. Sveiki atvykę į CS50 4 savaičių. Jei jus vaikinai atverti interneto naršyklę ir atverti pset 3, Grumtynės su CS50, mes ketiname pradėti vyksta per ten klausimų skirsnyje. Tiesiog kaip ir praeitą savaitę, mes dirbti CS50 erdvėse, jei jūs taip pat traukti, kad iki, kaip gerai, ir jei jūs einate į priekį ir aplankykite šią nuorodą, kad aš turiu čia viršuje. Atėjo laikas pradėti. Mes turime mūsų mažai hi programą čia. Nieko iš proto. Vienas iš pirmųjų dalykų, aš noriu daryti su jumis, vaikinai, šiandien yra eiti per kelis sprendimus problemą, 1, natūra, pavyzdžiui, sprendimų, tik tokiu būdu jūs galite gauti už tai, ką rūšių kodinės matuoklės rašo jaustis, ką rašote rūšių kodų kitais studentais, ir turi atsižvelgti į jo išvaizdą, nes aš žinau, tai keista kai jūs pateikiate išspręsti problemą, ir gauti komentarus savo versiją, bet kartais tai naudinga pamatyti, kaip kiti žmonės tai padarė, ypač tie, kurie yra gražus ieškote. Nes didžioji dalis, buvau tikrai sužavėtas, kad jus vaikinai pagamintų sprendimų. Aš dar pradėjo ieškoti savo problemą, 2s, bet jei jie nieko kaip ir pirmasis, tai reiškia, kad nieko, bet gerų dalykų. Jei pažvelgti į mano peržiūrų, pradėkime visą kelią žemyn redakcijos 1, ir mes ketiname priimti greitai pažvelgti per Mario tirpalo. Jei jūs traukite tai padaryti, šios programos, kad mes ketiname pateikti duomenys yra teisingi. Nebuvo teisingumą klausimai su šių problemų, bet, norime pakalbėti šiek tiek apie skirtingus projektavimo klausimais buvo naudojami čia. Vienas iš dalykų, kad buvo įdomu, apie sprendimą yra tai, kad šią naują konstruktą, vadinamą svaras apibrėžti, kartais taip pat vadinamas maišos apibrėžti. Leiskite man priartinti jį čia. # Define leidžia jums suteikti vardus šių savo programos numerius. Tokiu atveju, didžiausią aukštį piramidės Mario buvo 23 ir užuot mano kodas 23 mes norėtų atkreipti dėmesį, kad 23 kodavimo kietajame - vietoj tai suteikia pavadinimas MAX_HEIGHT į šį numerį, taip, kad žemyn čia mano do-while cikle jūs iš tikrųjų galite kreiptis į MAX_HEIGHT Vietoj to, kad skaičių 23. [Studentų] Ką daryti, kad privalumas? Tai puikus klausimas. Vienas iš jų yra skaitomumas. Privalumas naudojant šią programinę įrangą, # define aiškumą. Kai aš skaitau šį kodą, matau, kas vyksta. Aš galiu pamatyti, ši sąlyga, kad čia mes išbandome aukščio yra <0, kurioje galėtume taip pat įvardija minimalus aukštis arba min aukštis. Kitas privalumas yra tai, kad aš galiu tada skaityti tos linijos poilsio , kad mes taip pat tikrinami, siekiant įsitikinti, kad aukštis yra ne didesnis nei maksimalus aukštis, nes mes ketiname toliau, o aukštis yra didesnis nei maksimalus aukštis. Kitas privalumas yra tai, jei aš nutolinti šiek tiek , jei aš paleisti šią programą, ir aš jį, tarkim, su 23 dabar, jis bus atspausdinti visus tik 23 eilutes, pavyzdžiui, kad. Bet pasakyti, kad aš norėjau pakeisti maksimalų aukštį, ir dabar noriu apriboti maksimalią piramidės aukštis būti tik pasakyti, kad žmogus, kad buvo madingas. # Include # define MAX_HEIGHT, ir tegul sako, kad mes norėjome nustatyti lygi 10. Dabar šiuo metu, viskas, ką aš turėjau padaryti, buvo jį pakeisti tai vienoje vietoje. Galiu perkompiliuoti kodą, ir dabar, jei aš pabandyti ir įrašykite 12, jis bus greitai man vėl. Šiuo atveju, mes tik naudojant MAX_HEIGHT vieną kartą. Tai nereiškia, kad didelis vargo eiti ir pakeiskite jį while cikle, jei jums reikia. Tačiau programose, kur jūs nuorodas į tą patį magišką skaičių vėl ir vėl, tai # define mechanizmas yra tikrai patogu nes jums tiesiog pakeisti jį vieną kartą failo tai paprastai, kur jūs juos viršuje ir pakeisti sunkiasi per likusią rinkmenos dalį. Kitų dalykų, aš norėjau atkreipti dėmesį į šią užduotį, kad aš maniau, atrodė tikrai gražus, kintamųjų pavadinimų. Jūs čia matote, kad mes turime sveikasis skaičius kintamųjų, vadinamas eilutė ir vadinamas aukštis. Erdves, maišos, ji padeda kodas šiek tiek lengviau skaityti, daro tai šiek tiek labiau suprantama, kas iš tikrųjų vyksta. Tai priešingai nei naudojant, tarkim, atsitiktines raides arba tiesiog visiškai nesuprantama. Paskutinis dalykas, aš atkreipti dėmesį yra tai, kad už kilpos, Dažnai šie Iterator kintamieji, šie skaitikliai, kad jums naudoti savo kilpas, ji standartas ir tradicinių pradėti juos arba i ir j, ir tada k ir vyksta iš ten, jei jums reikia daugiau kintamųjų, ir tai tik konvencija. Yra daug konvencijos. Tai priklauso nuo programavimo kalba, jūs naudojate. Tačiau C, mes paprastai prasideda su i. Tai nereiškia, kad prasminga naudoti, tarkim, a arba b priklausomai nuo situacijos. Štai ir viskas už šį vieną. Jei dabar atsigriebti peržiūrima 2, matysite kitą Mario, ir tai vienas yra panašus į kitą, kad mes tiesiog matė, tačiau ji kažką tipo kietas. Jei pažvelgsime į šiame skyriuje čia vidinis viduje už linijos, jie naudoja nors crazy ieškote čia sintaksė šioje eilutėje. Tai vadinama trijų komponentų operatorius. Tai yra jei else, sutrauktos į vieną eilutę. Sąlyga yra ši skliausteliuose. Tai tolygu pasakymui, jei j > Sam. Samas. Kaip Sam sakė, kad linijinis paieškos procesas bus labai lėtas, ir vietoj to, dvejetainis paieškos Kaip tai veikia, kad kiekvieną kartą, kai mes pereiti per mūsų ieško algoritmo iteracija, mes ketiname padalinti sąrašą per pusę, iš esmės, į du mažesnius sąrašus. Ir tada kitą iteracijos kilpos, mes padalinsime jį vėl į kitų mažesnių sąrašus. Kaip matote, problema nuolat vis mažiau ir mažesnių nes mes nuolat Priegaudos išmetimas į jūrą pusę sąrašo kiekvieną kartą. Kaip veikia ši priegaudos išmetimo į jūrą darbas? Tik kaip priminimas, ką mes ketiname daryti, jei mes kompiuteris ir mums buvo, tarkim, ieškant skaičiumi 5, šiame sąraše yra tai, kad mes turėtume pasirinkti per vidurį. Šio sąrašo viduryje, nes yra 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numerių, mes norime pasirinkti arba 4-ojoje padėtyje arba 5-oje padėtyje, ir mes vadiname, kad mūsų sąraše viduryje. Pasirinkti numerį viduryje. Tada, kaip pasakė Sam, mes patikrinti, kad, jei šis skaičius yra lygus į numerį, kad mes norime gauti ar mūsų norimą numerį. , Jei tai lygūs, tada mes ją radau. Mes laimėti. Jei ji nėra lygi, tada yra pora atvejų. Du atvejai, skaičius turi būti didesnis nei skaičius, mes ieškome, ar tai mažiau nei. Jei tai didesnis, mes einame į dešinę. Ir jei tai mažiau, mes einame į kairę. Ir tada mes pakartoti visą procesą iš naujo sąrašo arba dešinėje pusėje, arba kairę pusę. Šiandienos skyriuje Pirmoji problema yra išsiaiškinti, , kaip mes iš tikrųjų galėtų pradėti išreikšti tai C kodas. Mes turime pseudocode čia. Ką mes pradėti daryti aš atsigriebti visiškai naują erdvę, išsaugoti šią peržiūrą, kad mes turime šias pastabas vėliau, mes ištrinti visa tai, ir tada nukopijuokite ir įklijuokite problemą, šią informaciją į mūsų erdves, ir, tikiuosi, tai nėra pertrauka. Tobula. Jei jus vaikinai tai padaryti, nukopijuokite ir įklijuokite šį kodą į savo naują erdvę, į tuščią vienas. Pabandykime Danielių. Jei sudaryti ir vykdyti šią programą, ji veikia? Nr >> Koks jis sako? Ji sako kontrolė pasiekia ne void funkcija pabaigą. Taip, todėl leiskite man pabandyti paleisti jį. Ar jums, vaikinai, matė tai anksčiau? Ar žinote, ką tai reiškia? Gerai, tegul perpjauti šį šiek tiek. Jis sako file.c on line 9, 1 stulpelis turime klaidą, kaip jūs sakėte, ir ji sako, kad ji kyla iš klaidų perspėjimo ir grąžinimo tipą pateikiamas įspėjimas. Atrodo, kad kažkas vyksta su grįžimo tipo, kuris turi prasmę. Mes turime ne negaliojančiu funkciją, o tai reiškia, kad mes turime funkciją negrąžina negaliojančiu. Void funkcija yra vienas, kad atrodo taip: void foo (), ir jis yra niekinis, nes grįžimo tipas yra niekinis, tai reiškia, kad, jei mes turėjome kažką čia kaip return 1, mes norime gauti už tai kompiliatorius klaida. Tačiau, mes turime ne void funkcija. Mūsų ne niekinė funkcija šiuo atveju yra mūsų paieškos funkcija , nes jis turi grįžimo tipo Bool. , Kai jis sako, kad kontrolė pasiekia ne void funkcija pabaigą, tai reiškia, kad raktažodis neturi Grizimas. Jis negrįžta nieko tipo Bool. Mes galime nustatyti, kad ir ką jūs manote turėtų grįžti paieška pagal nutylėjimą? Koks turėtų būti pagal nutylėjimą paieškos gražinama reikšmė? Todėl, kad tai, ką mes galime įdėti pabaigoje. Charlotte, ar turite? True arba false? >> TRUE arba FALSE. Kuris iš jų? Klaidinga. Nežinau. Klaidingas? Pabandykime. Kodėl norėtumėte pasakyti Return FALSE? Tai puiku intuicija. [Charlotte] Nežinau. Mes ketiname gražins false šiuo atveju, nes tai bus mūsų nutylėjimą jei dėl kažkokių priežasčių sąrašas yra tuščias, arba adata , kad jūs ieškote, neegzistuoja. Tada pačioje pabaigoje, jei mes ne return true anksčiau šią funkciją, visada žinome, kad ši funkcija bus pasakyti, Ne, tai nėra masyve. Tai ne šieno kupetoje. Dabar, jei mes sukompiliuoti ir paleisti tai leiskite man išsaugoti, kad mes galėtume ją ištraukite. Dabar, jei mes sukompiliuoti ir paleisti mūsų programą, jis stato. Mes gauti mūsų šiek tiek greitai. Jei aš paspauskite 4-uh-oh. Nespausdinami nieko. Atrodo, kad viskas baigėsi gerai. Mes turime užpildyti šią in Mes kalbėjome apie algoritmas pseudocode šiek tiek atgal. Leiskite man pamatyti, išskyrus tai, ir aš traukti, kad algoritmas atgal į viršų dar kartą. Hito šį vaikiną. Nope. Ji yra. Kaip mes tai darome? Kokia turėtų būti gera strategija pradeda išjungti šį kodą? Jūs turite pasirinkti per vidurį. Kaip mes pasirinkti numerį masyvo viduryje? Kokių nors pasiūlymų? [Studentų] strlen padalinti iš 2. Strlen padalinti iš 2. Tai puikus. Strlen darbai su specialių rūšių masyvų. Kokių rūšių masyvų? String matricos, simbolių masyvai. Tai, kad tos pačios rūšies koncepcija, kad mes norime, bet mes negalime naudoti strlen nes mes neturime simbolių masyvą. Mes turime int masyvas. Bet ką strlen gauti už mus? Ar žinote, ką jis gauna už mus? [Studentų] strlen gauna ilgį. Tiksliai, ji pasireiškia mums ilgį. Strlen gauna masyvo ilgį už mus. Kaip mes gauname, kad į mūsų dvejetainis paieškos programa? Kaip sužinoti masyvo ilgį? [Studentų] strlen? Tinkamai suformatuotas C styginių masyvo ilgį galite gauti su strlen. Problema, nors, yra tai, kad mes neturime eilutę masyvo. Jei šiuo kodu mes žiūrime atgal, mes turime šį sveikąjį skaičių masyvą. Kaip mes žinome, kaip ilgai? [Studentų] Ar yra lygiavertis pasekmės, kaip int l ar kažką? Paaiškėjo, kad iš tikrųjų nėra, ir todėl tam tikra prasme, tai yra vienas iš tų dalykų, kad tiesiog gera žinoti, apie C, kad nėra jokio būdo sužinoti masyvo ilgį jei visi, Aš duosiu jums yra masyvas. Priežastis, ji dirba su stygos, strlen priežastis darbai, nes jei eilutė būtų tinkamai suformatuotas, ji turės, kad ypatingas \ 0 charakterį pačioje pabaigoje. Jūs taip pat galite įsivaizduoti,, jei turite netinkamai suformatuotas eilutę ir ten ne \ 0 charakteris, tada visa tai nėra dirbti. [Studentų] Ar galite pridėti \ 0? Mes galime šiuo atveju. Mes gali pridėti kažkokią \ 0 arba kažkoks pažymintis pobūdžio, ir tada naudoti, kad. Bet tai ne visai ketina dirbti , nes \ 0 yra char tipo, ir čia mes turime int. Kitas dalykas yra, jei mes naudoti ypatingą vertę kaip -1 pažymėti masyvo pabaigos tada mes niekada negalėjo laikyti -1 mūsų sveikųjų skaičių masyvai. Mes norime būti įstrigo. Pasirodo, kad vienintelis būdas gauti ilgį C masyvo yra faktiškai prisiminti kai jūs jį, o po to perduoti jį aplink su masyvo taip, kad, kai aš turėti funkciją, kuri ketina padaryti tam tikrą darbą, masyvo sveikųjų skaičių ar plūdes arba padvigubėja ar tai, ką jūs, Aš taip pat reikia suteikti funkciją, kad masyvo ilgį, ir tai, ką mes padarėme čia, paieškos funkciją. Jei jums atrodo, ką mes padarėme, kai mes pereiname mūsų masyvas čia, mes taip pat perduoti ilgio, dydžio. Jis tiesiog taip atsitinka, kad mes čia vadinamas šį kintamąjį, šis parametras ar argumentas. Tai vadinama funkcijos argumentas sąrašą arba parametrų sąrašas, ir jie taip pat vadinami argumentai arba parametrus. Žmonės naudoja skirtingus terminus skirtingu laiku. Aš kartais sukeiskite juos sau. Jis tiesiog taip atsitinka, kad šis kintamasis pavadintas panašiai to # define čia. Bet jie nėra tas pats dalykas. Kapitalizacija tikrai svarbu. Jei jums atrodo, kas vyksta čia, mes skelbiame mūsų int masyvas, kuris mes vadinami numeriai. Mes savo dydį, kuris atitinka mūsų # define viršuje. Tai bus 8. Ir tada, kai mes tada skambinkite į mūsų paieškos funkcija apačioje, mes pereiname numerį mes norime ieškoti, mes raginami, įgytas iš vartotojo. Mes pereiname masyvą, šiuos numerius, ir tada mes taip pat turi perduoti masyvo dydžio, 8 dydžio vertė pasireiškia saugomi arba perduoti šį kintamąjį, vadinamas dydis. Mes turime masyvo dydį. Dabar, jei mes grįžti į tai, ką mes kalbame apie anksčiau, Manau, kad Missy išvedė mintį, kad tai, ką reikia padaryti yra gauti iš masyvo ilgis ir padalinsime jį į 2, ir kad duos mums viduryje. Pažiūrėkime. Galiu turėti ką nors rašyti ir išsaugokite jį į savo erdvę? Kaip apie Leila? Ar aš jums rašyti šią? Rašyti pirmoje eilutėje, kur jūs imtis iš masyvo ilgį ir gauti viduryje ir laikyti jį į naują kintamąjį. Aš duosiu jums keletą sekundžių. Ar jūs pasiruošę? [Studentų nesigirdi] Žinoma, galėčiau Ar jūs apskaičiuoti viduryje kaugė masyvo viduje paieškos funkcija naudojant šieno kupetoje masyvo ilgį, kuris yra kintamas dydis? Nieko sudėtinga čia. [Leila] Tiesiog dydis / 2 ir "just- Ir išsaugokite jį ir paspauskite mygtuką "Išsaugoti" čia viršuje, ir mes ją ištraukite. Tobula. Čia mes eiti. Nuostabus. Kaip yra, tai bus sudaryti? [Leila] Ne, ji turi būti didesnė. [Nate] Taip, taip, ką mes turime daryti? [Leila] Kaip int Mediana ar kažką. Nuostabus. Taip, galime tai padaryti, int viduryje = dydis. Ar tai sudaryti? Tegul ištrinti šį komentarą ir gauti jį iš kelio. Kas nebus sudaryti apie tai? Mes nieko nedaryti su sveikojo skaičiaus, todėl mes turime jį išspausdinti ar kažkas panašaus. Taip, tiksliai. Mes susisieksime nenaudojamą kintamąjį. Ką dar nesiruošia dirbti apie tai? Manau, kad jūs kažką pasakė, Sam. Kabliataškiais. Taip, aš trūksta šių kabliataškiais. Jis bus pastovus dalykas visoje termino. Paskutinis dalykas, aš padarysiu, aš įdėti tam tikrą tarpą iš abiejų pusių šio operatoriaus čia, nes tai paprastai, kaip mes tai darome pagal mūsų stiliaus vadove. Mes turime mūsų masyvas įpusėjo. Dabar, jei mes prisimename mūsų algoritmas, tai, kas buvo antrasis žingsnis, kad mes turėjome daryti, kai mes turime viduryje? [Studentų] Jei tai didesnis [nesigirdi]. Taip, kad mes turime padaryti kažkokią palyginimo, ir ką mes čia palyginti? Jūs sakė, kad jei jis yra didesnis nei. Kas tai yra šiame sakinyje nuoroda į? Skaičius, kuris ateina, jei tai didesnis nei vidurį, tada eiti į masyvą? Tiksliai, todėl, kad ateina, kai mes- Adata, todėl mes palyginti adatos, ir ką mes, palyginti su adatos? Nes adata yra tai, ko mes ieškome. Mes lyginant jį patekti į vidurį. Bet ar tai prasminga patikrinti, jei adata = viduryje? Ar tai prasminga? Ar kas nors nesutinkate? Leiskite give it a try, jei (adatos == viduryje). [Studentų] Ar printf jūs ją radau. [Nate] printf ("Mes radome \ n"); Kitaip-Aš ketina pradėti daryti kažką kita čia. Aš ruošiuosi pradėti naudoti petnešos aplink, jei ataskaitų visą laiką tik todėl, kad, jei mes pridėti daugiau daiktų, po to mes negalime gauti kompiliatorius. Taip, Sam. Jūs turite tašką. Problema ta, kad viduryje atstovauja poziciją masyve, , bet jūs galite gauti jį atstovauti toje masyvo pozicijos vertę. Tai puikus klausimas. Ar visi išgirsti, ką pasakė Sam? Jis sakė, kad viduryje yra atstovauja tik masyvo poziciją, tačiau tai nėra faktinis elementas masyve. Jei manote, kad apie kodą, kaip parašyta dabar, , jei pažvelgsime į šio masyvo žemyn čia, kuris turi 8 elementai kas yra viduryje bus šią funkciją vertė? [Studentų] 4. [Nate] 4. Jei mes ieškome skaičiumi 4 - ir mes galime tiesiog paleisti šį kodą ir įdėti šiek tiek liūdna veido čia nes mes neturėjome rasti tai, jei mes paleisti šį kodą kaip yra dabar, įkelti jį, statybos, leiskite man slinkti žemyn, ir jei mes ieškome skaičiumi 4, mes nustatėme, bet mes ne gauti tai printf taip. Viena iš priežasčių yra tai, kad mes ne return true, bet ar mes tikrai rasti 4? Ir Sam sakydamas "ne". Ką mes rasti? Mes tikrai rado viduryje, o jei mes žiūrime į masyvo žemyn čia, tai bus 4 indeksuoti elementas, kad mes ieškome, kuris yra 23. Kaip mes faktiškai gauti per vidurį, kad elementas ir ne tik viduryje? [Studentų] Mes norėtume įvesti char arba kažkas? Ką tai padaryti, tiesiog iš smalsumo? Ar galite detaliau paaiškinti šiek tiek daugiau? Jūs turite pakeisti padėtį į numerį, todėl jūs turite padaryti tam tikrą ryšį, aš manau, kad char, bet ji gali būti. Taip, tai gera vieta. Mes jau daro daug šio konvertuojančio pozicijų į simbolių, šių simbolių, pirmųjų dviejų probleminių rinkinių. Pasirodo, kad čia, tai yra beveik panašios į patekti i-osios eilutės požymį, jei tai turi prasmę. Čia mes norime pasiekti viduryje elementas. Kaip mes tai darome? Kevin, jūs turite kokių nors pasiūlymų, kaip mes galime padaryti, kad? Jūs galite padaryti, kaugė, skliaustai atidaromi, viduryje, uždarytas laikiklį. Ar rašote, kad už mus? Išsaugokite jį čia, ir mes traukti, kad iki. Mes ieškome šioje eilutėje 9, ir mes supranta, kad mes nenorime, palyginti adatą į vidurį, bet vietoj to, mes norime palyginti adatą padėtyje Mediana per mūsų kaugė masyvo elementas. Cool. Čia mes eiti. Taip, kad atrodo gana gerai, jei (adatos == kaugė [viduryje]). Mes radome jį. Dabar, jei mes paleisti kodas-Mes šiek tiek atgal į viršų- , ji veikia, ji rengia ir dabar, jei mes ieškome 4, neradome, nes dabar mes iš tikrųjų gauti skaičių 23. Mes vis vertė 23, o tai, ką mes, lyginant su mūsų adata. Bet tai gerai. Tai yra žingsnis teisinga kryptimi. Kad tai, ką mes bandome padaryti. Mes nebandome palyginti adatą nuo masyvo pozicijų bet atsižvelgiant į faktinių masyvo elementų. Jei pažvelgsime atgal dabar sekantį žingsnį mūsų algoritmas, kas yra kitas žingsnis? Leila jau minėta trumpai. [Studentų] Patikrinkite, pamatyti, jei jis didesnis arba mažesnis nei ir tada nuspręsti, kuriuo keliu judėti. [Nate] Taip, taip, kaip tai darome, kad? Jūs galite įdėti kai kuriose I'll išsaugoti šią peržiūrą, ir tada, jei jūs įtraukėte į eilučių, kad bus padaryti, kad. Taip, Charlotte. >> Turiu klausimą. Neturėtų būti viduryje - 1, nes pirmas dalykas, tai 0 indeksuoti, todėl, jei mes įdėti 4, kad iš tikrųjų tai ne personažas, mes ieškome? Taip, ir su kita problema- tai puikus laimikis, nes tai, kas ketina baigti vyksta galbūt , jei mes nuolat juda, o mes neturime kada reguliuoti iš pradžių? Manau, ką mes galime galų gale padaryti bando prisijungti prie į 8-osios pozicijos masyvo elementas, , kuris šiuo atveju neegzistuoja. Mes už tai nori padaryti kažkokią apskaitos kad mes turime šiek tiek nulio indeksavimo. [Charlotte] Atsiprašau, aš reiškė įpusėjo - 1 laužtiniuose skliaustuose. Mes galime tai padaryti. Mes grįžti prie šio klausimo, tik šiek tiek. Kai mes pradedame patekti į faktinį Looping, tai, kai mes tikrai pamatyti ateiti į žaidimą. Šiuo metu, mes galime tai padaryti, bet jūs visiškai teisus. ,, Kad nulio indeksavimo turės įtakos, kad mes turime sudaryti. Pažiūrėkime. Kaip yra didesnis nei ir mažiau nei-? [Studentų] gaunu kaip padaryti didesnis nei ir mažiau nei dalis. Aš tiesiog nebuvo tikras, ką spausdinti, jei jūs suprato, kad tai yra mažiau nei šieno kupetoje Mediana, arba didesnis nei. Čia aš galiu išsaugoti tai, ką I've- [Nate] Taip, jei jums išsaugoti tai, ką turite, ir mes pasistengsime ją ištraukite. Čia mes eiti. [Studentų] Ir aš įdėti klaustukų, ką aš nežinojau. [Nate] Tai atrodo puikiai. Čia mes turime klaustukų, nes mes vis dar nežinome, tai, ką mes ketiname gana padaryti dar. Ką mes norime, do-Oi, mes turime keletą petnešos visi mus funky. Mes pakeisime šiuos petnešos. Čia mes eiti. Ir taip ką mes norime daryti, pagal algoritmą, jei mes negalime rasti adatą? Tuo atveju, pasakyti, kad adata yra mažesnė nei tai, ką mes ieškome. Kevin. Tik pažvelgti į kairę pusę. Teisus, todėl mes įdėti komentarą čia, kad sako: "pažvelgti į kairę pusę. Adata ir, jei yra didesnis nei per vidurį šieno kupetoje, ką norime daryti? [Studentų] Tada jums pažvelgti į dešinėje pusėje. Pažvelgti į dešinėje pusėje, dešinėje pusėje. " Ne per skurdus. Gerai, kad šiuo metu, ko ieškote gana gera. Kodą, kaip parašyta problema yra tai, ką? [Studentų] Jūs neturite baigtys, už per pusę. Teisus, mes neturime baigtys, už per pusę. Mes taip pat tik ketina pereiti per vieną kartą. Mes tik ketiname ieškoti vienu Mediana. Arba elementas yra, ar taip nėra. Siekiant užbaigti tai, mes jums reikia padaryti kažkokią pakartotos. Mums reikia nuolat kartoti, kol mes, kad arba elementas yra ten, nes mes susiaurinta ir pagaliau rado, ar tai ne ten, nes mes pažvelgė per visų dalykų atitinkamų masyvo pusės ir nustatė, kad ten nieko nėra. Kiekvieną kartą, kai mes turime tai kartojimas vyksta, ką mes ketiname naudoti? [Studentų] kilpa. Kai kilpa rūšiuoti. Taip. [Studentų] Ar mes darome do-while cikle ir turi tai padaryti, kad ir tada, o nėra lygi-Aš nežinote, kur einu su adata. Bet natūra, kaip padaryti, kad tol, kol ji nėra lygi, kad naudotojo įvesties vertė. Taip, todėl pažiūrėkime, kaip tai galėtų rašyti save? Jūs pasakėte, galime naudoti do-while cikle. Kur gi daryti pradėti? [Student] Iškart po / 2 dydžio. [Nate] Gerai, o ką mes ketiname daryti? Mes užpildyti, o vėliau. Ką mes ketiname daryti? [Studentų] Ar mes norime padaryti, visų dalykų, mes turime jei dalis? [Nate] Ar visa tai stuff, nuostabu. Kopijuoti ir įklijuoti. Oh, vyras. Leiskite pamatyti, jei tai veikia, jei mes galime skirtukas tai per. Gražus. Gerai, ir mes išgelbėti, todėl jūs vaikinai turite. Viskas bus gerai, ir mes ketiname tai padaryti, o tai, kas buvo, o būklė, jums buvo po? [Studentų] Nors adata nėra lygi, todėl kaip wykrzyknikiem. Tačiau aš nesu įsitikinęs, ką dar. [Nate] Taip, tai yra vienas iš būdų tai padaryti. Sam, turite pastabų? [Sam] aš prisiminiau, kai aš pažvelgė į vaizdo įrašus, Aš paėmė vieno-kaip ekrano, kai mes padarėme pseudocode už tai, ten buvo kai santykiai tarp max ir min. Manau, tai buvo kažkas panašaus, jei max yra vis mažiau ir mažiau nei min. Gavo jį. [Sam] Arba, pavyzdžiui, jei max yra ne mažiau nei min ar kažką panašaus, kad, nes tai reikštų, kad jūs ieškojote viską. Taip, taip, tai ką jis skamba kaip max ir min rėmėsi? [Sam] Vertybės, kad sveikieji skaičiai, kurie ketina keisti , palyginti su kai mes viduryje. Tiksliai. [Sam] Tuo metu jis ketina [nesigirdi] apskaičiuoti max ir min. Midpoint tai max ir min idėja. Ar tai prasminga, kad žmonės? Jeigu mes buvo pradėti žiūri, kaip mes ketiname tai padaryti iteracijos, jūs visiškai teisus, kad mes norime naudoti kažkokią do-while cikle. Bet aš manau, jei mes prisimename, kas vyksta šio masyvo vietoje ir tai, kas iš tikrųjų vyksta-Aš einu rašyti čia labai pirmajam iteracijos procesui dvejetainis paieškos, mes turime Aš ketinate naudoti B ir E žymi pradžią. Ir tada mūsų masyvas pabaiga. Mes žinome, kad pradžia yra 4 dešinę čia, ir mes žinome, kad galas yra bent 108. Pasakykite, mes ieškome už skaičių 15. Pirmas kartas, mes tai darome, kaip matėme anksčiau, viduryje arba bus 16 arba 23 priklausomai nuo to, kaip mes galime apskaičiuoti daiktus iš. Kadangi tolygiai padalinant viduryje suteiktų mums šią erdvę nuo 16 iki 23, mes negali tolygiai padalinti jį arba padalinti ir gauti tikrą Mediana. Mes pažvelgti į 16. Mes suprasti: "Ei, 16> 15, kad mes ieškome." Tada pažvelgti į kairę pusę masyvo ką mes galų gale padaryti šalinti " tai visa viršutinė dalis ir sako: "Gerai, dabar mūsų vertinamoji baigtis bus čia". Kito pakartojimo mūsų kilpa, mes dabar ieškote šio masyvo, efektyviai išpylus šią dalį, nes dabar jei mes viduryje būti skirtumas tarp pradžios ir pabaigos, mes rasti mūsų viduryje, gali būti 8, kuriuos tada galima išbandyti 8 pamatyti, kur jis yra, palyginti su skaičiumi, mes ieškome, 15, kad 15 yra didesnis, todėl mes turime pereiti prie dešiniajame sąraše, kuriuos mes žinome, nes mes, žmonės, ir mes galime matyti. Mes žinome, kad teisė dalis bus ten, kur mes galime ją rasti, bet kompiuteris nežino, kad tai, ką mes padarysime mes iš tikrųjų tai eiti, o dabar pradžia ir pabaiga yra toje pačioje vietoje,, todėl viduryje tampa tik numeris sąraše tuo momentu, kuris yra 15, ir mes ją radau. Ar tai mesti šiek tiek šviesos, kur vyksta visa ši max ir min notacijos, masyvo parametrus sekti, siekiant išsiaiškinti, kaip mažinti dalykų žemyn? , Kas nutiktų, jeigu tai nėra lygi 15? Ką daryti, jei mes ieškojome 15 ir, vietoj to, šis skaičius taip pat buvo 16? Mes norime pasakyti: "O, tai didesnis. Mes norime grįžti į kairę ". Ir mes perkelti mūsų e į dešinę, tuo momentu turime vertinamoji baigtis, kad būtų prieštaringi. Jis negalėtų ieškoti bet daugiau elementų nes dabar mes turime vertinamoji baigtis ir mūsų pradžios taškas, mūsų max ir mūsų min, dabar yra apversta. Mes paiešką per visą masyvą. Mes negalime rasti nieko. Tai taškas, kuriame mes norime noriu pasakyti: "Gerai, mes ketiname nutraukti šį algoritmą. Mums nepavyko rasti nieko. Mes žinome, tai ne čia. " Kaip tai vyksta? [Studentų] Kaip tiksliai veikia kompiuteris pereiti prie pabaigos? Kaip pabaigoje, prieš prasidedant? Pabaigoje baigiasi prieš prasidedant dėl matematikos, kad mes ketiname daryti kiekvieną kartą, kai mes tai darome. Mes apsikeitimo būdas yra, jei peržvelgsite pirmą kartą, mes tai darome apsikeitimo sandorius, kur mes turime už 4 pradžią ir pabaigą žemyn 108 būdas ir mūsų viduryje, tarkim, 16 - Aš einu iš naujo nustatyti šį atgal į 15-jei mes ieškome už 15, mes žinojome, kad tai, ką mes padarėme, kai mes patikrinome 16 ir pamačiau, kad jis buvo didesnis ir norėjo išmesti visą dešiniajame sąraše, pamatėme, kad tai, ką mes norėjome padaryti čia perkelti šį el. Efektyviai, e gavo perkelta iki vidurį. Be to, kai mes padarėme šį algoritmo iteracijos viduryje buvo 8, mes nustatėme, kad 8 <15, todėl norėjome perkelti B vienas pro vidurį. Dabar, pradžia ir pabaiga yra abu kartu šiuo 15. Jei būtume vyksta ieškoti kokios nors kitos vertės, o ne 15, arba, jei tai 15, o ne 16, būtume nustatė, kad e norime perkelti vieną prieš vidurį. Dabar bus ten e apversta mažiau nei b. Leiskite eiti per tai, kaip mes iš tikrųjų baigti kodavimo šį algoritmą. Mes žinome, kad mes norime, kad šis Midpoint skaičiavimą. Taip pat žinome, kad mes norime sekti masyvo pradžią ir pabaigą mūsų dabartinės masyvas, todėl mes galime išsiaiškinti, tai kairėje pusėje sąraše yra ir kur sąrašo dešinėje pusėje. Mes tai padarysime su arba prasideda ir baigiasi, arba mes galime paskambinti min ir max. Aš naudoti pradėti ir baigti šį kartą. Kai mes pradedame, jei mes žiūrime atgal mūsų pavyzdyje čia, mūsų pradžia buvo iš masyvo į pačią pradžią, kaip natūralus. , Ką indeksas? Ką reikėtų mūsų pradėti? Danielius. [Daniel] šieno kupetoje [0]. [Nate] Taip, kad mes galime nustatyti, kad jis lygus šieno kupetoje [0]. Problema, nors, yra tai, kad suteikia mums ne pirmojo elemento poziciją. Tai suteikia mums pirmojo elemento arba faktinės vertės indeksą tuo pirmąją poziciją. [Studentų] Tai bus konvertuoti į 0,20? [Nate] Kas tai padarys-gerai, ji negali padaryti bet Konvertavimas. Ką ji darys, jie bus saugomi 4, pradėti, ir tada ji bus sunku, kad būtų galima palyginti prieš pradėti nes begin surengs 4 vertę, kuris yra mūsų masyvas pradžia, tačiau mes norime sekti masyvo indeksai , palyginti su vertėmis. Mes iš tikrųjų naudoti "0", kaip kad. Už-Charlotte masyvo pabaigos, iki šiek tiek anksčiau. Tai kur mes atsižvelgti į nulinį indeksavimo. Charlotte, kas masyvo pabaigos? Kas yra pabaigos indeksas? [Charlotte] Dydis - 1. Aha, ir kurių dydis turėtume naudoti? Mes turėtume naudoti kapitalo dydžio arba mažosiomis dydį? Kapitalo dydis. Šiuo atveju, mes galime naudoti kapitalo dydžio. Jei norime, ši funkcija turi būti nešiojamas ir naudoti šią funkciją kitose programose, mes iš tikrųjų galite naudoti mažąją dydį. Tai gerai. Bet Charlotte yra visiškai teisinga, kad mes norime, kad dydis - 1. Šiuo metu- [Studentų] Kaip tai yra, kad jūs galite naudoti didžiąją dydį? Kaip tai, kad mes galime naudoti didžiąsias dydį? Pasirodo, kad tai # apibrėžia tikrai, po gaubtu, tekstą, kaip rasti ir pakeisti, jei tai turi prasmę. Kai renka savo kodą, pirminio apdorojimo etapas kompiliatorių eina per failą, ir atrodo visur, kad rašėte kapitalo dydžio, ir pakeičia šį tekstą pažodžiui su 8, kaip kad. Ta prasme, tai labai skiriasi nuo kintamojo. Tai nereiškia, imtis bet kokios vietos atmintyje. Tai paprastas tekstas, pakeiskite triukas. Šiuo atveju, mes ketiname naudoti dydžio. Iš čia mes norime padaryti kažkokią pakartotos, ir mes teisingame kelyje su do-while cikle. Mes norime daryti kažką, kol sąlyga neturi nebėra, kaip matėme anksčiau, mes matome, kad ši sąlyga iš tikrųjų buvo, kad mes nenorime pabaigą būti mažesnis nei pradėti. Tai yra mūsų sustojimo sąlyga. Jei taip atsitinka, mes norime sustoti ir paskelbti, pavyzdžiui, "Ei, mes nebuvo rasta nieko". Išreikšti tai, mes norime naudoti kažkokią kilpoje. Šiuo atveju, tai do-while cikle, už linijos, o linijos? Mes turime do-while cikle čia. Ar jūs vaikinai, kaip šį požiūrį? Ar manote, kad turėtume pabandyti kitokį požiūrį? Kevin, kokių nors minčių? Galėtume turėti while cikle, nes mes žinome, ne daugiau būtų didesnis nei pradžios anyways min. Taip, kad nėra iniciacijos, kad turi įvykti. Šie do-o kilpos puikus, kai jūs turite kažką inicijuoti prieš testując, nors čia mes žinome, kad esate nesiruošia išlaikyti reinitializing tiek prasideda ir baigiasi kiekvienas iš kilpos apvalios. Mes žinome, kad mes norime inicijuoti juos, tada patikrinkite mūsų būklę. Šiuo atveju, aš iš tikrųjų eiti su paprasta while cikle. It turns out, kad do-o kilpos naudojamos gana retai. Vietų, daug nereikia net mokyti nereikia, o kilpos. Jie gerai tvarkyti vartotojo įvestį, todėl mes matėme daug jų iki šiol. Bet normalus, o kilpos daug daugiau bendro. Pasirodo, kad ši sąlyga, kaip parašyta nebus tikrai mums daug gero, ir kodėl taip yra? Aš atsiprašau, aš nežinau savo vardą. Aš esu Džeris. >> Atsiprašome? Tai B-O-R-U-Aš. O, gerai. Aš nematau, mano sąraše. O, tai nes-oh, kad prasminga. Ar turite idėją, kodėl tai while cikle gali neveikti taip, kaip buvo numatyta, kaip parašyta su sąlyga? [Džeris] Tu turi omeny, kaip jūs norite visus medžiagos po to, kai į? Taip, taip, kad vienas. Mes gali turėti įdėti visą šią medžiagą į while cikle, kuris yra visiškai teisinga. Kitas dalykas, kad yra šiek tiek daugiau problemų, nors, yra tai, kad ši sąlyga neveikia. [Studentų] Jums reikia apversti jį. Teisus, todėl ši sąlyga nebus kada nors bus tiesa, iš pradžių mes kalbėjome apie tai. Mes norime daryti kažką, kol prasideda end < bet mes norime padaryti ką nors pradėti ≤ pabaigą. Yra, kad logika, atstatymas. Esu kaltas, kad šias klaidas visą laiką. [Studentų] Kodėl ji turi būti mažesnė kaip arba lygi? Nes Do You Remember bylą, kad mes turime ten, kur buvo tik vienas iš elementų, ir mes, buvo nustatytas, ir mes ieškojome ne tik 15 mūsų masyvas? Ir mūsų pradžia ir mūsų pabaiga buvo tas pats elementas. Mes norime įsitikinti, kad mes tvarkome, kad bylą. Jei mes tai tiesiai mažiau nei mes tik galės kibti į 2-elementų masyvas. Kai mes turime Tas paskutinis elementas, jei tai buvo mūsų elementas, mes niekada suprato, kad tai yra. Dabar čia, mes galime padaryti tiksliai taip, kaip jums buvo pasakyti. Mes galime pradėti plopping stuff tiesiai į mūsų while cikle viduryje. Mes galime pūkštelėti į mūsų Mediana. Mes galime imtis visų šių if, juos ištraukti šio do-while cikle, pūkštelėti juos, valyti viską šiek tiek, ir aš eiti į priekį ir išsaugoti šią peržiūrą. Ir šiuo metu, mes vis gana arti. Samas. Manau, kad jūs taip pat turi turėti LC Midpoint = Dydis - 1/2. Gavo tai, dydis - 1/2. Ar dar ką nors, mes turime pakeisti apie tos linijos? Tai buvo geras laimikis. Ką dydis daryti? Mes nuolat kinta dydį? Siekiant išlaikyti šią eilutę, mes turime keisti dydį. Mes turime pakeisti dydį kiekvieną kartą, mes einame aplink už linijos. Bet atsimenu, kai mes išgyvena mūsų pavyzdyje, tik šiek tiek anksčiau, ir mes turėjome pradžią 4 ir pabaiga per ne 108? Kaip mes apskaičiuoti viduryje? Mes buvome dydį? Ar mes buvome naudojant prasideda ir baigiasi, o ne? Tai skirtumas tarp Pabaiga ir pradžia. Tiksliai, ir kaip tiksliai man reikia rašyti, kad, Charlotte? Tiesiog baigti pradėti. Jums nereikia daryti - 1 nes - 1 buvo galų gale ir pradėti jau. [Nate] Puiku, jūs visiškai į dešinę. Mes neturime padaryti, nes tai - 1 - 1 buvo įtrauktas ir sudarė, kai mes inicijuoti pabaigos kintamąjį. Ar dar ką nors, man reikia padaryti, sintaksės, kad ši eilutė prasmės? [Studentų] Plius pradėti. >> Plius pradėti? [Studentų] pabaigoje. , Nes jis skaičiuojamos tik pusę ilgio. Jums reikia pridėti pradžioje. [Nate] Ką tai apskaičiuoti už mus? Jei mes galvojame apie pabaigos šiame pirmajame iteracijos kilpos, pabaiga bus padėtyje indekso 7. Pradėti yra "0" padėtį. Nepamirškite, kad mes ieškome arba padėtis 3 arba 4 pozicija. Jei pažvelgsime į šio matematikos, tik, kad ji šiek tiek labiau apčiuopiamas, įdėti kelis telefonų numerius čia, turime 7, 0, taip 7 - 0, ir tada / 2 sveikasis skaičius padalijimo 3 yra tai, kad yra. Tada mums reikia, tada pridėkite mūsų pradėti? Mes ne šiuo atveju. Labai pirmajam iteracijos procesui, tai bus gerai, nes pradėti yra 0. Bet kaip mes pažangą, mes tikrai visi, tiesiog reikia pabaiga - pradėti / 2. Yra vienas kitas triukas čia, ir kad yra būtent vienas iš pirmumo. [Studentų] Ar mums reikia skliaustus? [Nate] Būtent, ir tai todėl, kad, jei mes neturime šiuos skliaustus, tada ši eilutė bus būti aiškinama (pabaiga) - (pradėti / 2), kurį mes tikrai nenoriu. Watch out for šių pirmumo taisyklės. [Studentų] Kodėl ne baigti + pradėti? Kodėl nėra tai baigti + pradėti? [Studentų] Kodėl tai yra ne tai, kad? Kodėl tai būtų +? Aš manau, kad tu teisus. [Studentų] Nes tai vidurkis? [Nate] Galinė + prasideda, jūs visiškai teisus. Oho, aš visiškai goofed. Tu teisus. Jei mes darome minuso ženklą, mes norime pridėti prasidėti atgal. Šiuo atveju, jūs esate labai teisus, kad mes norime imtis dviejų vidutinių, todėl mes norime pridėti, o ne atimti. [Studentų] Jis taip pat dirbti, jei tu galą - pradėti / 2 + pradėti. Tai jei mes darome Manau, taip. Pavyzdžiui, jei mes ieškojome ne pradėti, ir mes persikėlė čia 15 d. Dabar pradėti 2 padėtyje. Pabaiga yra 7 padėtyje. Jei mes atimti juos, mes gauname 5. Padalinti, kad iš 2, gausime: 2. Ir tada pridedame 2 atgal, ir, kad jis pasireiškia mums į 4 padėtį, , kuris yra čia, kuris yra viduryje. [Studentų] Ar mums reikia rūpintis vyniojimo? Kokia prasme mums reikia rūpintis įpakavimo? Jei suma arba skirtumas tarp priklausomai nuo to, kaip mes tai darome ne lyginis skaičius. Tada kompiuteris sutrinki ar kai jis 2,5; jums judėti į kairę arba į dešinę nuspręsti, kuris yra viduryje? Gavo jį. Pasirodo, kad sveikasis skaičius padalijimo, mes neturime kada nors gauti šias slankiojo kablelio skaičius. Mes niekada dešimtųjų. Tai visiškai išmesti. Jei turite kompiuteris padalinti du int kintamieji, ir vienas yra 7, o kita yra 2, jūs negausite 3,5, kaip rezultatas. Jis gaus 3. Likusi dalis bus išmesti, todėl efektyviai apvalinimo ne apvalus, o grindų, jei jus vaikinai yra susipažinę su matematika, kur jūs visiškai išmesti dešimtainį kablelį, ir taip jūs iš esmės trumpinimo jį žemyn iki artimiausio visa pozicija, iki artimiausio sveikojo skaičiaus. [Studentų] Bet tada tai problematiška, nes jei turite 7 elementų masyvas tada automatiškai užima 3-ią elementą iš, o ne 4-oji Mediana. Kaip mes susidoroti su tuo? Tai problemiška, nes, jei mes turėjome iš 7 masyvo, jis būtų pasiimti vietoj 4-oji 3. Gal galėtumėte paaiškinti šiek tiek daugiau? [Studentų] Nes jeigu tu turi 7 elementus, po to 4-ąjį elementą būtų viduryje, tiesa? Įsiminti komentarą apie būti nulis indeksuoti, nors. [Studentų] Taip, kad 3 pozicijoje. , Kad būtų viduryje. Taip. O, gerai. Suprantu, ką turi galvoje. Tai tipo keista, kaip mes priprasti prie visos šios sąvokos atsikratyti po kablelio. Tai puikus klausimas. Leiskite baigti tai padaryti. Mes apskaičiavome, mūsų įpusėjo. Bandome, nes norime pamatyti, jei mūsų adata yra lygi vidutinės reikšmės. Mes spausdinti, kad mes nustatėme, bet iš tikrųjų, ką mes norime daryti šioje situacijoje? Mes pastebėjome, kad mes norime, skambinantysis žino, kad mes nustatėme, kad. Mes turime funkciją, kuri Būlio įvedėte funkcija. Tai, kaip mes signalizuoja, kad mūsų funkcija skambinančiojo, kad mes pasiruošę eiti mes sakome: "Ei, tai yra tiesa." Kaip mes tai padarysime, Kevin? Jūs linksinčią galvą. >> [Kevin] Pridėti grąža tiesa. [Nate] Būtent, return true. Dabar, jei jis nėra lygus, kaip mes pažvelgti į kairę pusę? Any ideas? Stella, kokių nors idėjų? Jums reikia nustatyti naują pabaigos poziciją. Taip. Taigi, mes turime padaryti, viduriniojo taško padėtį - The End. Didysis. Mums reikia nustatyti naują poziciją, galų gale pažvelgti į kairę pusę. Tai, ką mes kalbėjome apie tai prieš kur Aš nuolat grįžta į šiame pavyzdyje. Aš pradėti čia, ir tada aš galų gale, visi per čia. Vėlgi, jei mes ieškome 15, ir mūsų Mediana yra 16, ir mes suprantame, kad "Oi, 16 yra didesnis. Mes norime judėti į kairę pusę. " Mes tuomet perkelti pabaigoje į 15, ir tai mes darome, imdamasi vienos atokiau nuo vidurį ir nustatyti, kad mūsų naują pabaigoje. Be to, jei norime pažvelgti į dešinėje pusėje, kaip mes darome tai? Ar turite idėją? [Studentų] Jūs tiesiog nustatyti pradėti Midpoint + 1. [Nate] Didysis. Ir dabar tuo atveju, kad mes negali rasti nieko, kad gauti pasirūpinta už mus? Daniel, kad gauti pasirūpinta už mus? [Daniel] L. [Nate] Jei mes jį per visą masyvą ir mes negalime rasti nieko, kur būtų pasirūpinta, ar mes turėtume rūpintis ji? [Daniel] o sąlyga. [Nate] Taip, o būklė, tiksliai. Ji rūpinsis išgyvena visą masyvą, jei mes negalime rasti nieko. Tai, o kilpa baigsis. Mes niekada susidūrė su šią sąlygą, ir mes galime grįžti klaidinga. Mes taip pat galime palikti tai, jei čia kaip tai nes jei tuo atveju, jei teiginys yra teisingas, ir mūsų funkcija sugrįš, ir todėl mes iš esmės nutraukti tai šiuo metu funkcija kai mes grįžti tiesa. Bet kas atsitinka, šios struktūros čia? Ar šis darbas visiškai, ar yra tam tikra loginė klaida ten? Yra tam tikra loginė klaida ten, su tuo, kaip jis įsteigtas. Ką jis galėtų būti? [Studentų] Kodėl jums reikia - ir + 1s? , Kuris nustato mūsų masyvas iki mūsų naują kairėje pusėje ir Dešinė pusė. [Studentų] Bet kodėl negalėjo jums tai padaryti be - 1s ir + 1s? [Nate] Mes galime nustatyti, kad jis lygus vidurį? Kas gali būti problematiška? [Studentų] Manau, kad tai neefektyvus, nes jūs patikrinti vertę, kuri jau buvo patikrinta. [Nate] Būtent, todėl Sam yra visiškai teisus. Jei nustatysite pabaigos ir pradėti lygus vidurį vietoj - 1 iki + 1 refleksyviai, tam tikru momentu ateityje mes galų gale vėl patikrinti viduryje. [Studentų] aš pradėjau pset, ir tada aš kažką panašaus, kad Aš pamiršau + 1, ir ji įstrigo begalinis ciklas. Teisūs, nes tam tikru momentu jūs niekada gauti prasideda ir baigiasi iš tikrųjų iš dalies sutampa. Cool. Yra dar vienas loginis trūkumas, ir tai yra tai, kad tikrai turėtų būti else if. Kodėl gali būti? Taip yra todėl, jei tai ne dar, jei jūs jį pamatyti, Kevin? [Kevin] Taip, nes jūs pakeičiant pabaigos tašką. [Nate] Būtent. Mes keičiamės vertinamoji baigtis, ir, jei jis parašytas kaip šis-Mes tarpų tarp- ji bus patikrinti šį atvejį. Šiuo atveju, jei tai pavyks, bus nutraukti funkcijos. Tada jis bus patikrinti šį kitą bylą, ir jei tai pavyksta, jis bus pritaikyti vertinamoji baigtis, ir tada jis bus toliau ir patikrinti šį atvejį. Tačiau šiuo metu, mes ne norime, kad ji toliau tikrinsime. Laimei, mes ne iš naujo viduryje čia, ir mes žinome, kad šiuo atveju nepadės. Bet mes tikrai norite įdėti else, jei ten nors, kad galėtų šiuo atveju nes mes ne koreguojant viduryje, norėčiau, kad ką nors pakeisti? Ne, nes visi šie atvejai yra nesuderinami. Vėl, mano blogas. Mes neturime, manau, reikia šio else if. Mes galime suteikti jai pabandyti ir paleisti jį ir pamatyti, kas atsitiks. Statyba, įvyko klaida. Tai tikriausiai todėl, kad aš ant jų b ir e čia. Turiu bet tų up viršuje? Ji ne atrodo kaip jis. Mes nutolinti, statyti, ten jis eina, todėl dabar, jei mes ieškome 15 Taip. Leiskite man padidinti. 15, taip. Mes galime paleisti jį dar kartą. Įkelti kodą, statybos, veikia. Mes galime ieškoti kažką panašaus į 13, ir mes neturime nieko spausdinti, todėl ji negali rasti už mus. Tai puiku, nes tai nėra mūsų sąraše. Dabar mes esame pavėluotai. Kad ketina šią savaitę. Ačiū prisijungti, see you later. [CS50.TV]