[Powered by Google Translate] [3. osa] [Vähem Mugav]
>> [Nate Hardison] [Harvardi Ülikool]
>> [See on CS50.] [CS50.TV]
>> Olgu, hakkame pihta.
Tere tulemast 4. nädalal CS50.
Kui te avada veebibrauseri ja avab pset 3,
Rüselus koos CS50, me ei kavatse alustada läheb
kaudu osa küsimusi seal.
Täpselt nagu eelmisel nädalal, saadame töötavad CS50 Spaces,
kui sa ka pull, et suureneb,
ja kui sa minna ja külastada seda linki, et mul on siin üleval.
On aeg alustada.
Meil meie väike hi programm siin. Miski hull.
Üks esimesi asju, mida ma tahan teha koos teiega täna on minna üle mõned lahendused
kuni Ülesanded 1, omamoodi eeskuju lahendusi,
lihtsalt nii saad aimu, milliseid kood töötajad on kirjutamine,
milliseid kood teised õpilased kirjutavad,
ja kas te olete heita pilk seda, sest ma tean, et see on imelik
kui sisestate lahendust probleemile komplekt ja saada kommentaare
kohta oma versioon, kuid mõnikord on see kasulik vaadata, kuidas teised inimesed tegid seda,
eriti need, mis on kena välimusega.
Enamasti olin tõesti muljet lahendusi, mis te poisid toodetud.
Ma ei ole veel hakanud uurima oma Ülesanded 2s, kuid kui nad midagi nagu esimene,
see ei tähenda midagi, kuid häid asju.
>> Kui te vaatate minu parandusi, alustame täiesti alla kell 1. läbivaatamine,
ja me ei kavatse võtta kiire pilk Mario lahendus.
Kui te tõmmake see üles, need programmid, et me ei kavatse esitada on õiged.
Seal ei olnud õigsuse küsimusi nende probleemidega, vaid pigem
me tahame rääkida natuke erinev projekteerimise küsimusi
mida kasutatakse siin.
Üks asi, et oli huvitav lahendus
on see, et ta kasutas seda uut ehitada nimetatakse nael määratleda,
mõnikord nimetatakse ka räsi määratleda.
Lubage mul suumida see siin.
# Define võimaldab teil anda nimed need numbrid oma programmi.
Sel juhul maksimaalne kõrgus püramiid Mario
aastal 23 ja panemise asemel 23 minu kood-
me viitaks, et nii raske koodis 23 -
selle asemel annab see nimi MAX_HEIGHT, et number,
nii et siia alla oma do-kui ahela
saab tegelikult viidata MAX_HEIGHT
selle asemel, et number 23 tolli
[Student] Mis on see eelis, seda teeb?
See on hea küsimus.
Üks on loetavus.
Eelis kasutades seda # define on loetavus.
Kui ma loen seda koodi, ma näen, mis toimub.
>> Ma näen sellises seisundis siin, et testaamme
jaoks kõrguse <0, mis me oleks võinud ka määratletud
olema minimaalne kõrgus või min kõrgus.
Teine eelis on see, et ma saan siis loe ülejäänud rida näha
et me ka kontrollida veendumaks, et kõrgus ei ole suurem kui max kõrgus,
sest me kavatseme jätkata samas kõrgus on suurem kui kõrgus max.
Teine eelis on see, kui ma välja suumida natuke siin-
kui ma käivitada programm ja ma saan seda, ütleme, 23 just nüüd,
siis printida välja kõik 23 rida just niimoodi.
Aga öelda tahtsin muuta max kõrgus,
ja nüüd ma tahan, et piirata maksimaalse kõrgusega püramiidid
olla ainult öelda, mees, see oli funky.
# Include , # define MAX_HEIGHT,
ja ütleme et me tahtsime, et seada see võrdub 10.
Nüüd sel hetkel, kõik, mida ma pidin tegema oli muuta selles ühes kohas.
Ma ei kompileeri kood, ja nüüd, kui ma püüan ja kirjuta 12,
siis kiire mind jälle.
Sellisel juhul me kasutame ainult MAX_HEIGHT kord.
See ei ole nii suur probleemideta minna
ja muuta see samas loop kui teil on vaja.
Aga programmid kuhu viitamine sama maagiline number
ikka ja jälle, see # define mehhanism on tõesti mugav
sest sa lihtsalt muuta see üks kord ülaosas faili-see on tavaliselt kuhu need pandud-
ja muutus percolates läbi ülejäänud faili.
>> Muud asjad ma tahtsin märkida seda ülesannet, et ma arvasin tundus väga kena,
üks oli nimede muutujad.
Näete siin, et meil on täisarv muutujad nimega reas ja nn kõrgus.
Spaces, hashes, see aitab muuta koodi natuke paremini arusaadavaks,
muudab veidi arusaadavamaks, mis tegelikult toimub.
See on kontrastiks kasutades, ütleme, juhuslike tähtede
või lihtsalt mitmesugused märgid kokku.
Viimane asi, ma juhtida on see, et eest silmuseid,
sageli need iteraatori muutujad, nende vastu, et te kasutate oma jaoks silmuseid,
see on standard ja tava, et alustada neid kas i ja siis j ja siis k
ja läheb edasi sealt, kui teil on vaja rohkem muutujaid,
ja see on lihtsalt konventsioon.
Seal on palju konventsioone.
See sõltub programmeerimiskeelt te kasutate.
Aga C, me tavaliselt alustame i.
See ei ole mõtet kasutada, ütleme, või b
sõltuvalt olukorrast.
Ongi see.
Kui te nüüd tõmba Revision 2, näete teise Mario,
ja see on sarnane teine, et me just nägime,
kuid see teeb midagi sellist lahe.
Kui me vaatame seda osa siin sees sisemine jaoks silmus,
nad kasutavad mõned hull otsin süntaksi siin just seda joont.
Seda nimetatakse kolmekomponentsete operaator.
See on kui teine ​​avaldus lühendatud ühele reale.
Tingimus on see osa sulgudes.
See on samaväärne, kui öelda, kui j <kõrgus - i - 1.
Ja mis siis sisu, et kui plokk oleks on ruumi
ja siis sisu, mida muidu oleks on see #.
See on sisuliselt määrates ruumi seda muutujat.
See paneb ruumi sisu ploki muutuja,
kui see tingimus on täidetud, ja kui tingimus ei ole täidetud,
siis ploki muutuja muutub see #.
Ja siis muidugi asemel rajada kogu string
ja trükkimine kõik aasta lõpus selline lahendus prindib ühe märgi korraga.
Päris lahe.
>> Teine paar asja vaadata. Me liigume edasi ahne.
Nüüd, kui me vaatame ahne, see esimene lahendus
kasutab neid # määratleb üsna vähe.
Meil on üks pidev määratleda iga erineva numbrid selles programmis.
Meil üks senti dollari, üks kvartalit, Dimes, viiesendist, ja penne,
ja nüüd, kui me liikuge allapoole ja loe koodi,
näeme standard do-kui ahela trükkimine kõike välja.
Kind of tuum on selle probleemi mõistes, et
teil on vaja teisendada float, et sa lugeda alates kasutajal täisarv
täpselt ei matemaatikat, ja seda sellepärast,
koos ujukoma numbrid, nagu me rääkisime loeng lühidalt,
see ei ole võimalik täpselt iga väärtus arvteljel
sest seal on lõpmata palju väärtusi vahemikus 3 kuni, ütleme, 3,1 isegi.
Sul võib olla 3,01 ja 3,001 ja 3,0001, ja saate hoida läheb.
Tuleb välja, kui te töötate raha, siis sageli soovite teisendada see
arvesse täisarv formaadis, nii et sa ei kaota penne ja sellist kraami.
Kuidas saavutada, et ja ümardamise oli võti.
See lahendus kasutada täiesti arusaadav, suur algoritm,
mis decremented arvu senti alles, kõigepealt kvartalite
siis Dimes, siis viiesendist, siis penne,
ja lisades münti iga kord.
>> Teine lahendus, mida me näeme, nagu ma välja suumida ja minna Redaktsioon 4,
oli väga sarnane alguses, kuid selle asemel kasutatakse div ja mod
siinsamas arvutada arvu senti.
See, mitu kvartalit on võrdne arv senti jagatud 25,
ja põhjus, miks see töötab, sest me teeme täisarv jagunemine,
nii et see on kõrvaldades võimaliku ülejäänu.
[Student] Kas meil kommenteerida otsing?
On tõesti sõltub.
[Student] Sa kommenteerides rohkem kui koodi siin.
Jah, ja nii seal on hunnik erinevaid filosoofiaid selle.
Minu isiklik filosoofia on, et kood on tõesti tõde,
nagu teie kood on, mis tegelikult täidesaatva arvuti,
ja nii sinu kood peaks olema nii loetav kui võimalik ei vaja nii palju kommentaare.
See ütles, kui te teete asju, mis on omamoodi keeruline matemaatiliselt
või algoritmiliselt, see on hea kommenteerida neid nii, et saate
lisada mõõtme, pildi kiht kes loeb oma kood.
Nendes lahendusi, sageli on need kommenteeris kõrgemalt lihtsalt sellepärast
me tahame, et oleks võimalik levitada neid ja on inimesi valida neid
ja loe need üsna kergesti.
Aga kindlasti, olen nõus, et see on raske.
[Student] Aga kui kahtled, mine raskem?
Kui kahtled, mine raskemad.
Mõned inimesed mõnikord ütlevad return 0 või midagi sellist.
Ma arvan, et see naeruväärne kommentaari.
On selge, et see, mis toimub.
Ma ei vaja Inglise mulle öelda, et.
Vahel inimesed kirjutavad asju "kthxbai!"
See on omamoodi armas, kuid ka mitte-
et inimest ei tee vahet kommenteerides punkte või mitte.
Need tüüpi kommentaarid on lihtsalt ha, ha.
Lahe.
>> Sel hetkel, alustame tööd probleemi Set 3 osa küsimustele.
Kui te tõmmake see uuesti,
Nagu eelmisel nädalal, me ei kavatse vaadata lühikesed püksid käesolevas paragrahvis.
Me teavitame Teid teete, et oma aega ja rääkida küsimusi.
Aga nüüd selles osas me ei kavatse kulutada veidi rohkem aega
räägi vähem kodeerimine põhitõdesid
nagu me tegime eelmisel nädalal, ja selle asemel, me ei kavatse keskenduda rohkem
natuke rohkem teooria, et räägime binaarne otsing ja siis sorteerima.
Alates Neile, kes on jälginud koos loengu,
Kas keegi mulle anda sulgege milles erinevus seisneb
vahel binaarne otsing ja lineaarne otsing?
Mis toimub? Muidugi.
Lineaarne Otsing läbi iga element järjestatud nimekirja
ükshaaval ükshaaval ühe,
ja binaarne otsing jagab nimekiri jagatakse 2 rühma,
kontrollib, kas võtmed väärtus, mida te otsite on suurem või väiksem kui keskpunktis väärtus
et sa lihtsalt leida, ja kui see on alla, see läheb madalam nimekirja
ja siis jagab seda uuesti, teeb sama funktsiooni
täiesti alla, kuni ta leiab keskpunktis olema võrdne väärtus ise.
Õigus.
>> Miks me hoolime?
Miks me räägime binaarne otsing võrreldes lineaarne otsing?
Jah.
Binary on palju kiirem, nii et kui kahekordistada probleem
see võtab veel ühe sammu asemel kaks korda nii palju.
Täpselt.
See on hea vastus.
Lineaarne otsing on väga palju kontrollida üks element korraga,
ja nagu me nägime juba esimesel päeval loengu
Kui Taavet läks läbi tema telefoniraamat näiteks
ja ripitud välja ühe lehekülje telefoniraamatust korraga
ja hoida teed, et ikka ja jälle ja jälle,
see saab teda tõesti kaua aega, et leida keegi telefoniraamatust
kui muidugi, ta otsib kedagi alguses tähestikus.
Mis Kahendotsingupuu, võid minna palju kiiremini,
ja see ei ole lihtsalt kaks korda kiiremini või 3 korda kiiremini või 4 korda kiiremini.
Aga probleem muutub väiksemaks ja väiksemaks ja väiksemaks palju kiiremini.
Et illustreerida seda, hakkame rääkima, mis toimub
kui me kirjutame binaarne otsing.
Probleemiga on see, et kui mul on array numbrite
öelda, 1, 2, 3, 5, 7, 23, 45, 78, 12323,
ja siis 9 koos ton 0s pärast seda,
me tahame, et oleks võimalik aru saada, tõesti kiiresti, millised on
Selle massiivi numbrid.
Tean, et see tundub veidi tobe ja natuke kunstlik,
sest praegu on.
Meil on massiiv, et ei ole väga palju elemente ta,
ja kui ma küsin teie seast välja nuputada, kas
23 on massiiv, mida saate teha, et päris kiiresti
lihtsalt riivav seda ja mulle jah või ei.
Analoog kaaluma seda, kujutage ette, kui see oli, ütleme,
Exceli arvutustabeli koos 10.000 rida, 20000 rida.
Muidugi, võite teha käsu F või kontrolli F ja otsida midagi välja.
Võite kasutada ka filtreid ja otsing kraami,
aga kui sa pidid vaatama läbi selle faili rida-realt,
ta võtab teid kaua aega leida.
See on selline nagu telefoniraamat näiteks liiga, kus
keegi näeb läbi telefoniraamatust ühe lehe korraga.
Tavaliselt nad ei ava see keskel,
või kui tegemist on palju telefoni-ja sõnaraamatud, kus
tegelikult on see sisse lülitatakse sisse esimene täht,
te klapp selle esimene täht ja avada ja alustada läbimas seal.
>> Tuleta mulle su nimi oligi. >> Sam.
Sam.
Nagu Sam ütles, et lineaarne otsingu protsess saab olema väga aeglane,
ja selle asemel binaarne otsing, kuidas see toimib on see, et
iga kord kui me minna läbi iteratsiooni meie otsingu algoritm,
me ei kavatse jagada loetelu pooleks sisuliselt,
kaheks väiksemaks nimekirju.
Ja siis järgmisel iteratsiooni loop, siis me jagame seda uuesti
teistesse väiksemad nimekirjad.
Nagu näete, probleem peab üha väiksemaks ja väiksemaks
sest me peame visates poole nimekirja iga kord.
Kuidas see viskama toimib?
Lihtsalt meeldetuletuseks, mida me teeme, kui me olime arvutis
ja me olime, ütleme, otsides number 5 selles loetelus
on see, et meil oleks valida number keskel.
Keset seda nimekirja, sest seal on 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numbrit,
me tahaks valida number kas 4. kohal või 5. positsiooni,
ja me tahaks helistada, et keset meie nimekirjas.
Vali number keskel.
Siis, nagu Sam ütles, me proovida, kas see arv on võrdne
arvu, et me tahame saada või meie soovitud number.
Kui see on võrdne, siis me oleme selle leidnud. Meie võidame.
Kui see ei ole võrdne, siis seal on paar juhtudel.
Kahel juhul on kas peab number olema suurem kui arvu me vaatame,
või see on väiksem kui.
Kui see on suurem, astume õige.
Ja kui see on väiksem, me liigume vasakule.
Ja siis me kogu protsessi korrata uuesti
kas parem pool või vasakul pool nimekirjas.
>> Esimene probleem tänapäeva osa on välja mõelda
kuidas me saame tegelikult hakata väljendama seda C-koodi.
Meil pseudokoodi siin.
Mis me hakkame tegema on ma tõmba uus ruum,
salvestada selle muutmisega nii, et meil on need märkused hiljem
Me kustutame kõik selle, ja siis kopeeri ja kleebi probleem komplekt
seda informatsiooni meie ruumid, ja loodetavasti see ei purune.
Perfect.
Kui te kõik seda teha, kopeeri ja kleebi see kood oma uut ruumi,
arvesse tühi üks.
Proovime Daniel. Kui te kompileerida ja käivitada see programm, see töötab?
No >> Mis see räägib?
Ta ütleb kontrolli jõuab lõpuks mitte-tühine funktsioon.
Jah, nii ma püüan läbiviimist.
Kas te olete näinud seda varem? Kas sa tead, mida see tähendab?
Okei, lahkama seda natuke.
See ütlus on file.c real 9 veerus 1, saame viga, nagu sa ütlesid,
ja ta ütleb, et see tuleneb viga hoiatus ja tagastab tüüp hoiatus.
Tundub, et midagi toimub koos naasmise tüüp, mis on loogiline.
Meil ei ole tühine funktsioon, mis tähendab, et meil on funktsioon
et ei tagasta tühine.
Tühine funktsioon on üks, mis näeb välja selline:
void foo (), ja see on tühine, kuna tulu liik, on tühine,
mis tähendab, et kui meil oleks midagi siin
nagu return 1, me saame tõlkija viga selles.
Kuid meil ei ole tühine funktsioon.
Meie mitte-tühine funktsioon on sel juhul meie otsingu funktsiooni
sest see on tagasipöördumise tüüpi bool.
Kui ta ütleb, et kontrolli jõuab lõpuks mitte-tühine funktsioon,
see on sellepärast, et otsing ei ole tulu avaldusega.
See ei tule midagi tüüpi bool.
>> Saame kinnitada, et, ja mida te poisid arvate
otsing peaks tagasi vaikimisi?
Milline peaks olema vaikimisi tagastatav väärtus otsingut?
Sest see, mida me saame panna lõpus.
Charlotte, kas sul on-?
Õige või vale? >> Õige või vale.
Milline neist?
False. Ma ei tea.
Vale? Proovime seda.
Miks sa ütleksid tagasi false? See on suurepärane intuitsioon.
[Charlotte] Ma ei tea.
Me läheme tagasi false käesolevas asjas, kuna see on meie vaikimisi
kui mingil põhjusel loend on tühi või nõela
et me otsime ei ole olemas.
Siis päris lõpus, kui me ei anna tõsi varem seda funktsiooni,
me alati teame, et see funktsioon ütlevad nope, see ei ole massiiv.
See pole heinakuhjas.
Nüüd, kui oleme kompileerida ja käivitada see-las ma salvestada see, et me ei tõmba see üles.
Nüüd, kui oleme kompileerida ja käivitada meie programmi, see ehitab.
Me saame meie väike kiire.
Kui ma tabanud 4-uh-oh.
See ei prinditud välja midagi. See tundub kõik lõppes hästi.
Me peame täitma käesoleva sisse
Me rääkisime algoritmi pseudokoodi natuke tagasi.
Las ma vaatan, salvestage see,
ja ma pull, et algoritm tagasi jälle.
Olgem virutanud. Nope.
Siin see on.
Kuidas me seda teeme?
Milline oleks hea strateegia alustades maha selle koodi?
Sa pead valima number keskel.
Kuidas me valime arv keset massiivi?
Kõik soovitused?
[Student] strlen jagatud 2.
Strlen jagatud 2. See on suur üks.
Strlen töötab erilist liiki massiivid.
Milliseid massiivid?
String massiivid, iseloomu massiivid.
See on see sama liiki mõiste, et me tahame rakendada,
kuid me ei saa kasutada strlen sest meil ei ole array tähemärki.
Meil on hulgaliselt ints.
Aga mida see strlen saada meile?
Kas tead, mida ta saab meid?
[Student] strlen saab meile pikkus.
Täpselt, see läheb meile pikkus.
Strlen saab pikkus array meile.
>> Kuidas saame, et meie Kahendotsingupuu programm?
Kuidas sa saad pikkus massiivi?
[Student] strlen?
Saad pikkus õigesti vormindatud C string massiivi strlen.
Probleem on aga, et me ei pea stringi massiivi.
Kui me vaatame tagasi selle koodi, meil on see täisarv massiivis.
Kuidas me teame, kui kaua see on?
[Student] Kas samaväärne üks näitaja, nagu int l või midagi?
Tuleb välja, et tegelikult ei ole, ja seda viisil, et see on
üks nendest asjadest, mis on lihtsalt hea teada C,
et puudub võimalus saada pikkus massiivi
kui kõik ma annan teile on massiiv.
Seetõttu töötab stringid, põhjus strlen töid,
seetõttu, kui string on õigesti vormindatud,
see on selline eriline \ 0 märk päris lõpus.
>> Võite ette kujutada, kui teil on valesti vormindatud stringi
ja pole mingit \ 0 märk seal, siis kogu asi ei tööta.
[Student] Kas lisate \ 0?
Võiksime sel juhul.
Võiksime lisada mingi \ 0
või mingi tähistades iseloomu ja siis kasuta seda.
Aga see pole ju päris läheb tööle
sest \ 0 on char tüüpi,
ja siin on meil ints.
Teine asi on see, kui me kasutada erilise väärtusega
nagu -1 kuni kaubamärgi lõpuks massiiv
siis me ei saa kunagi hoida -1 meie täisarv massiivid.
Me tahaks olla ummikus.
Tuleb välja, et ainus viis saada pikkus
massiivi C on tegelikult mäletan seda
kui sa ehita ja siis andke seda ümber massiiv
nii et kui mul on funktsioon, mis läheb tegema mõned tööd
aasta array täisarvud või ujukite või kahekordistab või mida iganes,
Ma ka pead andma funktsioon massiivi pikkuse,
ja see on täpselt see, mida me oleme teinud siin allalaadimisfunktsioon.
Kui vaadata, mida me oleme teinud, kui võtame meie massiivi siin,
me ka läbida pikkus, suurus.
See lihtsalt juhtub, et me oleme nimetanud seda muutujat siin,
Selle parameetri või argument.
Seda nimetatakse funktsiooni argument nimekirja või parameetrite nimekirja,
ja neid nimetatakse ka argumente või parameetrid.
Inimesed kasutavad erinevaid termineid eri aegadel.
Ma mõnikord vahetada neid ise.
See lihtsalt nii juhtub, et see muutuja siin on oma nime sarnaselt
Käesoleva # define siin.
Aga nad ei ole sama asi.
Kapitaliseerimine ei küsimuses.
>> Kui te vaatate, mis juhtub siin, me kuulutame
meie int massiiv, mis me oleme numbreid.
Oleme andnud oma suuruse, mis vastab meie # define kuni ülaosas.
See saab olema 8.
Ja siis kui me siis nimetame oma otsingu funktsiooni allapoole,
võtame arvu tahame otsida, mis meil küsitakse,
hangitud kasutaja.
Me läbida massiiv, see numbrite
ja siis on meil ka läbida suurus massiiv,
ja siis väärtus suurus 8 saab ladustada
või edastatakse see täisarv muutuja nimega suurus.
Meil on suurus massiiv.
Nüüd kui me läheme tagasi, mida me rääkisime varem,
Ma arvan, et Missy tõid punkti, mida meil oli vaja teha on saada pikkus array
ja jagada seda 2, ja mis annab meile keskpunktis.
Vaatame.
Kas mul on keegi kirjutada see ja salvestada see oma ruumi?
Kuidas Leila?
Kas mul võib olla kirjutad seda?
Kirjutage esimene rida, kus te võtate pikkus array ja saada keskpunktis
ja hoidke seda uus muutuja.
Ma annan sulle paar sekundit. Oled sa valmis?
[Student kuuldamatu]
Muidugi, ma saaksin sulle arvutada keskpunktis
Euroopa heinakuhjas massiiv sees otsingu funktsiooni
kasutades pikkus heinakuhjas massiiv, mis on suuruse muutuja?
Miski keeruline siin.
[Leila] Lihtsalt suurus / 2 ja lihtsalt-
Ja salvesta see ja vajuta nuppu Salvesta siin üleval,
ja me tõmmake see üles.
Perfect.
Nii juba läheb. Awesome.
>> Nagu, kas see kompileerida?
[Leila] Ei, see tuleb suurem.
[Nate] Jah, siis mida me peaksime tegema?
[Leila] Nagu int keskpunktis või midagi.
Awesome. Jah, teeme seda, int keskpunktis = suurus.
Kas see kompileerida?
Teeme seda kommentaari kustutada ja saada see välja viis.
Mis ei kompileerida selle kohta?
Me ei tee midagi koos täisarv,
nii et me peame seda trükkida või midagi sellist.
Jah, täpselt.
Me saame kasutamata muutuja.
Mida veel ei kavatse teha sellest?
Ma arvan, et sa ütlesid midagi, Sam. Semikoolonit.
Jah, ma olen kadunud need semikooloniga.
See saab olema pidev asi vältel perspektiivis.
Viimane asi, ma teen on ma panen natuke tühja ruumi mõlemal pool
selle korraldaja siin, sest see on tavaliselt kuidas me seda teeme
vastavalt meie stiili juhend.
Meil keskpunktis meie massiivi.
Nüüd, kui me mäletame tagasi meie algoritm,
Mis oli teine ​​samm, et pidime tegema kui meil on keskpunktis?
[Student] Kui see on suurem [kuuldamatu].
Jah, nii me peame tegema mingi võrdlus ja mida me võrrelda siin?
Sa ütlesid, et kui see on suurem kui. Mis on see, mis lause viitab?
Number, mis kerkib, kui see on suurem kui keskpunktis, siis minna kuni massiivi?
Täpselt, nii arvu, mis kerkib kui me-
Nõela, nii et me oleme võrreldes nõela,
ja mida me võrrelda vastu nõela?
Kuna nõel on see, mida me otsime.
Me võrdleme seda saada keskpunktis.
>> Aga kas on mõtet vaadata,
kui nõel = keskpunktis?
Kas see on loogiline?
Kas keegi ei ole nõus?
Vaatame seda proovida, kui (nõel == keskpunktis).
[Student] Kas printf olete leidnud seda.
[Nate] printf ("Me leidsime selle! \ N");
Muidu-Ma hakkan midagi erinevat siin.
Ma lähen alustada pannes traksid ümber, kui avaldused kogu aeg
lihtsalt sellepärast, et kui me lisame rohkem kraami, siis
me ei saa koostajad.
Jah, Sam. Sul punkti.
Probleem on selles, et keskpunktis esindab positsiooni massiiv,
aga sa saad selle esindada väärtus sellel kohal on massiiv.
See on hea punkt.
Kas kõik kuulsid, mida Sam ütles?
Ta ütles, et keskpunktis nagu on
moodustab vaid ühe positsiooni massiiv, kuid see ei ole tegelik element massiivi.
Kui sa arvad koodi kirjutada kohe,
kui me vaatame seda massiivi siin all, mis on 8 elementi see,
Mis on väärtus keskpunktis saab olema see funktsioon?
[Student] 4.
[Nate] 4.
Kui vaatame number 4 -
ja me lihtsalt käivitada selle koodi ja panna veidi kurb nägu siin
sest me ei leidnud seda-kui me teeme selle koodi
nagu on praegu, laadige see, hoone, las ma liikuge allapoole
ja kui me vaatame number 4,
leidsime ta, kuid me ei saanud seda printf jah.
Üks põhjus on see, et me ei tulnud tagasi tõsi,
kuid kas me tõesti leida number 4?
Ja Sam ütleb ei.
Mida me leida?
Me tõesti leitud keskpunktis, mis, kui me vaatame massiivi siin all,
see saab olema elemendi indeks 4, et me vaatleme,
mis on 23.
>> Kuidas me tegelikult saada seda elementi keskpunktis
ja mitte ainult keskpunktis ise?
[Student] Me jõuaksid char või midagi?
Mis oleks, et teha, lihtsalt uudishimust?
Kas sa töötada natuke rohkem?
Sa pead muutma seisundit arv,
nii et sa pead tegema mingi side-Ma arvan, et see char, kuid see ei pruugi olla.
Jah, see on hea punkt.
Oleme teinud palju see konverteeriva ametikohad tähemärki, need märgid,
Kahes esimeses probleem seab.
Tuleb välja, et siin, see on peaaegu sarnane
tutvumise nda tähemärgi stringi, kui see on mõistlik.
Siin me tahame pääseda keskpunktis element.
Kuidas me seda teeme?
Kevin, kas sul on mingeid ettepanekuid, kuidas me võiksime seda teha?
Sa võiksid teha heinakuhjas, sulg, keskel, suletud sulg.
Kas sa kirjutad, et meie jaoks?
Salvesta see siin, ja me pull, et üles.
Me otsime seda rida 9,
ja me aru, et me ei taha võrrelda nõela keskpunktis,
kuid selle asemel, me tahame võrrelda nõela
element positsioonil keskpunktis jooksul meie heinakuhjas massiiv.
Lahe.
Nii juba läheb.
Jah, see tundub päris hea, kui (nõel == heinakuhjas [keskpunktis]).
Me leidsime selle.
Nüüd, kui me käivitada koodi-Me varundada natuke-
see kompileerib, ta jookseb, ja nüüd, kui vaatame 4,
me ei leia seda, sest nüüd me tegelikult saada number 23.
Saame väärtus 23, ja see, mida me võrrelda meie nõel.
Aga see on hea. See on samm õiges suunas.
>> See, mida me üritame teha.
Me ei püüa võrrelda nõela vastu positsioone massiivi
vaid pigem vastu tegeliku massiivi elementide.
Kui me vaatame tagasi nüüd järgmine samm meie algoritm,
Mis on järgmine samm?
Leila juba mainisin seda lühidalt.
[Student] Kontrollige, kas see on suurem või väiksem kui ja siis otsustada, mis suunas liikuda.
[Nate] Jah, nii kuidas me seda teeme?
Kas paned mõne-Ma salvestada see läbivaatamine,
ja siis kui paned mõned read, et teen seda.
Jah, Charlotte. >> Mul on küsimus.
Ei peaks see olema keskpunktis - 1, sest esimene asi on
see on 0 indekseeritud, nii et kui me paneme 4, see pole tegelikult märk me otsime?
Jah, ja teine ​​probleem, et on-
see on suur saak, sest see, mis läheb lõpuks juhtub võib-olla
kui me liigume edasi ja me ei ole kunagi kohandada esialgu?
Ma arvan, mida me võiksime lõpuks teed püüab kasutada
element kell 8. positsiooni massiiv,
mis antud juhul ei ole olemas.
Me tahame teha mingi arvestuse asjaolu
et meil on mõned null indekseerimist.
[Charlotte] Vabandust, ma mõtlesin keskpunktis - 1 Nurksulgudes.
Me ei saa seda teha.
Me tuleme selle küsimuse lihtsalt natuke.
Kui hakkame tundma tegelikku silmuspõletamise,
see on, kui me tõesti näeme seda mängu tulla.
Praegu saame seda teha, kuid sa oled täiesti õigus.
See null indekseerimine on mõju, et me peame arvele.
Vaatame.
>> Kuidas on suurem kui ja väiksem kui-?
[Student] ma saan, kuidas seda teha suurem ja väiksem osa.
Ma lihtsalt ei teadnud, mida printida, kui sa leiad, et see on vähem kui heinakuhjast keskpunktis või suurem.
Siin ma võib päästa mida Ma olen-
[Nate] Jah, kui salvestate mis sul ja me tõmmake see üles.
Nii juba läheb.
[Student] Ja ma panen küsimärke, mida ma ei teadnud.
[Nate] See näeb hea välja.
Siin on meil küsimärke, sest me ei tea siiani
mida me kavatseme üsna tegema veel.
Mida me tahame teha-oops, meil mõned traksid kõik funky meist.
Me parandada need traksid.
Nii juba läheb.
Ja nii et mida me tahame teha, vastavalt meie algoritm,
kui me ei leia nõela?
Ütle nii, et nõel on väiksem kui see, mida me vaatame. Kevin.
Ainult vaatate vasakule poole.
Õigus, nii et paneme kommentaar siin, mis ütleb "vaata vasakule poole võrra."
Ja kui nõel on suurem kui heinakuhjast keskpunktis, mida me tahame teha?
[Student] Siis te vaatate paremale poole.
Vaata paremale poole, "vaata paremale poole."
Mitte liiga räbal.
Okei, nii et sel hetkel, asjad otsivad päris hea.
Probleem kood kirjutatud on mis?
[Student] Sa ei pea tulemusnäitajad pooleks.
Õigus, meil ei ole tulemusnäitajad pooleks.
Samuti on ainult lähe läbi see üks kord.
Me ainult kavatse vaadata üks keskpunktis.
Kas element on olemas, või see ei ole.
Et viia lõpule selle, me peame tegema mingi kordamine.
Me peame hoidma korrata seni, kuni leiame, et
kas element on olemas, sest me oleme vähenenud alla ja lõpuks leidsin selle,
või see ei ole olemas, sest me vaatasime läbi kõik asjad,
vastavas poolitatud massiivi ja leidis, et midagi on seal.
>> Iga kord, kui meil see kordus toimub, mida me kavatseme kasutada?
[Student] silmus.
Mingi silmus. Jah.
[Student] Kas me teeme do-kui ahela ja on seda teha ja siis samas
Nõela ei võrdu-Ma ei tea, kust ma läksin sellega.
Aga selline nagu seda nii kaua, kui see ei võrdu väärtusega, et kasutaja sisend.
Jah, nii, vaatame, kuidas võiks seda kirjutada ise?
Sa ütlesid, et lähme kasutada tee-samas silmus.
Kui ei tee algus?
[Student] Kohe pärast suurus / 2.
[Nate] Okei, ja mida me nüüd teeme?
Me täitke aega hiljem.
Mida me nüüd teeme?
[Student] ei me tahame teha kõik asjad on meil siis, kui osa?
[Nate] Kas kõik see kraam, väga.
Kopeeri ja kleebi.
Oh, mees.
Vaatame, kas see töötab, kui me suudame lingile see üle.
Ilus.
Okei, ja me salvestada see nii teiega on see.
Olgu, ja me teeme seda-
milline oli samas seisukorras sa olid pärast?
[Student] Kuigi nõel ei võrdu, nii nagu hüüumärk.
Aga ma ei tea täpselt, mis see on veel.
[Nate] Jah, see on üks viis seda teha.
Sam, sa pead kommentaari?
[Sam] mulle meenus, kui ma vaatasin videod,
Võtsin pilt ühe-meeldib, kui me tegime pseudokoodi seda,
seal oli mingi seos max ja min.
Ma arvan, et see oli midagi, kui maks on kunagi alla min.
Käes.
[Sam] Või nagu kui maks ei ole väiksem kui min või midagi sellist,
sest see tähendaks, et olete otsinud kõik.
>> Jah, mis siis see tunduda max ja min viitasid?
[Sam] Väärtused et-täisarvud, et ei kavatse muuta
võrreldes, kus me paneme keskpunktis.
Täpselt.
[Sam] Sel hetkel, see läheb [kuuldamatu] arvutada max ja min.
Keskel on see max ja min idee.
Kas see mõttekas rahvas?
Kui me hakata uurima, kui me teeme seda iteratsiooni
sa oled täiesti õige, et tahame kasutada mingi tee-samas silmus.
Aga ma arvan, et kui me mäletame, mis toimub hetkekurss selle massiivi
ja mis tegelikult toimub-Ma kavatsen kirjutada siia-
päris esimese iteratsiooni binaarne otsing, meil-
Ma lähen kasutada B ja E tähistavad alguses.
Ja siis lõpuks meie massiivi.
Me teame, et alguses on kell 4 siinsamas,
ja me teame, et aasta lõpuks on 108.
Ütle me otsite number 15.
Esmakordselt teeme seda, nagu nägime,
keskpunktis on kas saab olema 16 või 23
sõltuvalt sellest, kuidas me arvutama asju teha.
Kuna ühtlaselt jagades keskel annaks meile selle ruumi
vahemikus 16 ja 23, ei saa me ühtlaselt jagada see
või jagada see ja saada on tõsi keskpunktis.
Me vaatame 16.
Me mõistame "Hei, 16> 15, et me otsime."
Et siis vaatate vasakule poole massiivi
mida me lõpuks teeme on vette
kogu see ülemine osa
ja ütles: "Okei, nüüd meie lõpp saab olema siin."
Järgmise iteratsiooni meie silmus, me nüüd vaatab seda massiivi
tõhusalt äraviskamist seda osa, sest nüüd
kui me võtame keskpunktis olla vahe algus ja lõpp,
leiame meie keskpunktis olla 8,
mida me saame siis katsetada 8 näha, kus see on seotud hulk me otsime,
15. leiab, et 15 on suurem,
nii et me peame liikuma paremale osa nimekirjast,
mida me teame, sest me oleme inimesed, ja me näeme seda.
Me teame, et õigus osa saab olema, kui me selle leiame,
kuid arvuti ei tea, et nii see, mida me teeme on me tegelikult
on see tõusevad, ja nüüd alguses ja lõpus
on sama kohapeal, nii keskpunktis muutub ainult nimestikus numbrit sel hetkel,
mis on 15, ja me leidsime ta.
Kas see valgustada, kus see kogu max ja min märge läheb,
jälgida otspunktid massiiv, et aru saada,
kuidas kitsas asju ette?
>> Mis juhtuks, kui see ei olnud võrdne 15 nüüd?
Mida teha, kui otsisime 15 ja selle asemel, see number oli ka 16?
Me ütleks: "Oh, see on suurem.
Me tahame minna tagasi vasakule. "
Ja me tahaks liikuda meie e paremale,
kus punkt on meil näitaja, mis oleks vastuolus.
See ei oleks võimalik otsida enam elemente
sest nüüd oleme meie lõpp ja meie lähtepunkt,
Meie max ja meie min, nüüd keerata.
Otsime läbi kogu massiiv. Me ei leia midagi.
See on koht, kus me tahaks öelda: "Okei, me lähme lõpetage see algoritm.
Me ei leidnud midagi. Me teame, et see pole siin. "
Kuidas see läheb?
[Student] Kuidas täpselt ei arvuti lülitab end?
Kuidas end lõpuks enne algust?
Lõpuks jõuab enne algust
sest matemaatika, et me teeme iga kord, kui me seda teha.
Kuidas me swap on, kui te vaatate esimest korda me seda swap
kus meil algab 4. ja lõpuks
kõik viis maha 108 ja meie keskpunktis, ütleme, vähemalt 16 -
Ma lähen taastama tagasi 15-kui me otsime 15,
Me teadsime, et see, mida me tegime, kui me kontrollisime 16 ja nägi, et see oli suurem
ja tahtis ära visata kogu õigus osa nimekirjast,
nägime, et see, mida me tahtsime teha on liikuda seda e siinsamas.
Tõhusalt, e sain kolis üks enne keskpunktis.
Samuti, kui me seda tegime iteratsiooni algoritm
ja keskpunktis oli kell 8,
leidsime, et 8 <15, siis me tahtsime minna b
1 viimase keskpunktis.
Nüüd, algus ja lõpp on nii kokku selles 15.
>> Kui me tahaks toimunud otsima mõnda muud väärtust, mitte 15,
või kui see oli 15 asemel olnud 16,
oleksime leidnud, et e soovime liikuda üks enne keskpunktis.
Nüüd e oleks seal keerata alla b.
Vaatame läbi kõndida, kuidas me tegelikult lõpuks kodeerimine seda algoritmi.
Me teame, et me tahame seda keskpunkti arvutamise.
Me teame ka seda, et me tahame jälgida alguses ja lõpus massiivi
Meie praegune massiivi nii saame nuputada
kui see vasakus pooles nimekiri on ja kus paremal pool nimekirjas on.
Me teeme seda kas algab ja lõpeb,
või me nimetame neid min ja max.
Ma kasutan algab ja lõpeb seekord.
Kui hakkame, kui me vaatame tagasi meie näide siin all,
meie alguses seati algusest massiiv, nagu loomulik.
Mis indeks oli? Mida peaks meie hakkavad olema?
Daniel.
[Daniel] heinakuhi [0].
[Nate] Jah, et me saaksime seada see võrdne heinakuhjas [0].
Probleem on aga, et see annab meile ei positsiooni esimese osaga.
See annab meile indeks esimese elemendi või tegelik väärtus tol esimesel kohal.
[Student] See teisendada 0,20?
[Nate] Mis see teha on-hästi, see ei tee midagi konverteeriva.
Mida ta teeb on see salvestab 4 alustada,
ja siis on raske teha võrdlusi vastu hakata
sest begin on ettevõtte väärtuse 4,
mis on algusest meie massiiv,
kuid me tahame jälgida indeksid massiivi
erinevalt väärtused.
Me tegelikult kasutavad 0, niimoodi.
Aasta lõpuks massiiv-Charlotte tõi see natuke varem.
See on koht, kus me võtame arvesse null indekseerimist.
>> Charlotte, mis on lõpuks massiivi?
Mis on indeks aasta lõpuks?
[Charlotte] Suurus - 1.
Jah, ja mis suurus peaks me kasutame?
Kui me kasutame kapitali suurus või väiketähed suurus?
Kapitali suurus.
Sel juhul saaksime kasutada kapitali suurus.
Kui me tahtsime seda funktsiooni kasutada teisaldatavaid
ja seda funktsiooni kasutada teistes programmides,
saame tegelikult kasutada väiketähti suurus.
See on hea ka.
Aga Charlotte on täiesti õige, et me tahame suurus - 1.
Sel hetkel-
[Student] Kuidas on võimalik, et saate suur suurus?
Kuidas on nii, et me võiksime kasutada suur suurus?
Tuleb välja, et need # määratleb tõesti,
kapoti alla, teksti nagu otsida ja asendada, kui see on mõistlik.
Kui kompileerida koodi, preprocessing etapp
koostaja läbib faili
ja ta otsib kõikjal, et olete kirjutanud kapitali suurus,
ja see asendab teksti sõna-sõnalt koos 8, just niimoodi.
Selles mõttes on see väga erinev muutuja.
See ei võta üldse ruumi mälu.
See on lihtne teksti asendama trikk.
Sel juhul me ei kavatse kasutada suurus.
Siit me tahame teha mingi kordus,
ja me oleme õigel teel meie tee-samas silmus.
Me tahame teha midagi, kuni tingimus ei ole enam
ja nagu me nägime, nägime, et see tingimus
oli tõesti, et me ei taha lõpuks
olla väiksem kui alata.
>> See on meie peatumine seisukorras.
Kui see juhtub, me tahame peatada ja kuulutada nagu: "Hei, me ei leidnud midagi."
Väljendada seda, me ei taha kasutada mingi loop.
Sel juhul oleks see siis do-kui ahela, loop, samas loop?
Meil on do-kui ahela siin.
Kas te niimoodi lähenemine?
Kas sa arvad, me peaksime püüdma teistsugust lähenemist?
Kevin, kõik mõtted?
Meil võiks olla samas loop sest me teame, maksimaalne
oleks suurem kui min alguses niikuinii.
Jah, seega ei ole initsialiseerimise, mis peab juhtuma.
Need teha-samas silmuseid on suur, kui teil on initsialiseerida midagi
enne katseid, kusjuures siin
me teame, et me ei kavatse hoida taasinitsialiseeris nii algavad ja lõpevad
iga vooru ring.
Me teame, et me tahame initsialiseerida neid, siis vaadake meie seisukorras.
Sel juhul ma tegelikult minna lihtsa samas silmus.
Selgub, et teha-samas silmuseid kasutatakse üsna harva.
Palju kohti ei ole isegi õpetada ei samas silmuseid.
Nad on head käitlemise kasutaja sisend, nii et me oleme näinud palju neid siiani.
Aga normaalne ja samas silmuseid on palju rohkem levinud.
Selgub, et see tingimus kirjaliku
ei tõesti meile palju head, ja miks see nii on?
Mul on kahju, ma ei tea su nime.
Mina olen Jerry. >> Vabandust?
See on B-O-R-U-I.
Oh, okei.
Ma ei näe sa mu nimekirjas.
Oh, see on sest-oh, see on mõistlik.
Kas teil on aimu, miks see samas silmus ei pruugi töötada nagu ette nähtud,
nagu kirjutatud tingimus?
[Jerry] Mõtled sa tahad kõik asjad pärast see-?
Jah, nii see on üks.
Oleksime panna kõik selle kraami samas loop, mis on täiesti tõsi.
Teine asi, mis on natuke rohkem probleeme, kuigi see, et see tingimus ei tööta.
[Student] Sa pead flip ta.
Õigus, nii et see tingimus ei ole kunagi tõsi olla esialgu, kuidas me rääkisime sellest.
Me tahame teha midagi lõpuni <alustada,
kuid me tahame teha midagi samal ajal
alustada ≤ lõppu.
>> Seal on, et vastasel korral loogika seal.
Ma olen süüdi nende vigu kogu aeg.
[Student] Miks see olema väiksem või võrdne?
Sest kas sa mäletad juhtuda, et me peame
kus oli ainult üks element, ja me olime alla
ja otsisime lihtsalt 15 meie massiivi?
Ja meie alguses ja meie lõpuks oli sama element.
Me tahame veenduda, et me ravime sel juhul.
Kui me tegime otse alla,
me ainult saaks pikali 2-element massiivi.
Kui me saime näha, et viimane element, kui see oleks meie element, me polnud kunagi leida.
Nüüd siin, me saame teha täpselt nii, nagu sa ütlesid.
Me saame alustada plopping kraami otse keset meie samas silmus.
Me ei saa sulpsti meie keskpunktis.
Me ei saa võtta kõiki neid kui avaldused,
tõmmake need seda do-kui ahela,
sulpsti neid,
puhastada asju natuke,
ja ma edasi minna ja päästa see läbi vaadata.
Ja sel hetkel, me saada päris lähedal.
Sam.
Ma arvan, et teil ka on int keskpunktis = suurus - 1/2.
Leidsin, suurus - 1/2.
Kas on midagi, me peame muutma umbes et liin?
See oli hea saak.
>> Mis suurus teha? Kas me pidevalt muutuva suurusega?
Selleks, et hoida sellist rida, meil on suurust muuta.
Me peame muutma suurus iga kord kui me minna umbes jaoks silmus.
Aga mäletan, kui me läheme läbi meie näiteks natuke varem,
ja meil oli alguses kell 4
ja lõpuks kogu tee üle on 108?
Kuidas me arvutada keskpunktis?
Kas me kasutame suurus?
Või olime kasutades alguse ja lõpu asemel?
See vahe on otsas ja algus.
Täpselt, ja kuidas täpselt ma peaksin kirjutama, et Charlotte?
Lihtsalt lõppu - alata.
Sa ei pea tegema - 1
sest - 1 on lisatud lõpus ja algab juba.
[Nate] Tore, et sa oled täiesti õigus.
Meil ei ole teha - 1, sest et - 1 on lisatud
ja moodustas kui me initsialiseerida lõpuks muutuja.
>> Kas on midagi, mida ma pean tegema süntaktiliselt on see liin on mõtet?
[Student] Plus hakata. >> Plus alustada?
[Student] lõpus.
Sest see on ainus arvutatud pool pikkust.
Peate lisama hakata.
[Nate] Mida see arvutab juures?
Kui me mõtleme end selle väga esimese iteratsiooni silmus,
lõpuks saab olema asendis indeks 7.
Alustada on asendis 0.
Pea meeles, me otsime kas
kohal 3 või positsioon 4.
Kui me vaatame seda matemaatikat, vaid teha seda veidi reaalsemaks,
panna mõned numbrid siin on meil 7, 0,
nii 7-0 ja seejärel / 2
on 3 täisarv rajoon, mis on.
Siis me peame siis lisage tagasi meie hakata?
Me ei käesolevas asjas.
On väga esimese iteratsiooni, siis on see hea, sest alustada on 0.
Aga nagu me edu, me teeme tõesti kõik lihtsalt vaja
lõppu - alustada / 2.
On veel üks trikk siin, ja see on nimelt üks tähtsam.
[Student] Kas meil on vaja sulgudes?
[Nate] Täpselt, ja see on, sest kui me ei pane neid sulgudes,
siis selle rea, siis tõlgendatakse asemel
kui (lõpp) - (algus / 2), mida me kindlasti ei taha.
Vaata ette nende prioriteetsuse eeskirjad.
[Student] Miks ei ole see lõpp + alustada?
Miks ei ole see lõpp + alustada?
[Student] Miks ei ole seda?
Miks see oleks +?
Ma arvan, et sul on õigus.
[Student] Sest see on keskmine?
[Nate] End + alustada, sa oled täiesti õigus.
Vau, ma täiesti goofed. Sul on õigus.
Kui me teeme miinus, me tahaks lisada alustada uuesti sisse
Sel juhul, sa oled väga hea, et me tahame võtta keskmiselt kaks,
nii et me ei taha neid lisada, mitte lahutama neid.
[Student] Oleks ka tööd kui sa lõpuks - alustada / 2 + alata.
See oleks kui me seda teeme, ma usun küll.
>> Näiteks, kui otsisime alustada,
ja me nihkunud selle siia
kuni 15.
Nüüd hakkavad on asendis 2.
Lõpp on asendis 7.
Kui me lahutame need, saame 5.
Jagada, et 2, me saame 2.
Ja siis me lisada 2 tagasi,
ja mis saab meid 4. kohal,
mis on siin, mis on keskpunktis.
[Student] Kas meil on vaja hoolitseda ümbriste?
Mis mõttes me peame hoolitsema pakkimine?
Kui summa või vahe
sõltuvalt sellest, kuidas me seda teeme, ei ole paarisarv.
Siis arvuti saab segaduses, kas siis, kui see on 2,5;
sa liikuda vasakule või paremale, et määrata, milline on keskpunktis?
Käes.
Tuleb välja, et on täisarv jagunemine,
me ei ole kunagi saada neid ujukoma numbrid.
Me ei saa kunagi kohaga.
See on täiesti hävitada.
Kui teil on arvuti jagada 2 int muutuja
ja üks on 7 ja teine ​​on 2,
sa ei saa 3,5 tulemusena.
See saab 3.
Ülejäänud ära visata, nii et see on tegelikult ümardamist
ei ümmargused, vaid põrandale, kui te olete tuttav, et matemaatika,
kus sa täiesti kõrvale kohaga,
ja nii sa oled sisuliselt ürita seda allapoole lähima
kogu positsiooni, lähima täisarvuni.
[Student] Aga see on problemaatiline, sest kui sul on array 7 elementi
siis mis teeb automaatselt 3. osa välja keskpunktis asemel 4..
Kuidas me sellega toime tulete?
See on problemaatiline, sest kui meil oleks massiivi 7,
see valiksid 3. asemel 4..
Kas te võiksite selgitada natuke rohkem?
[Student] Sest kui sul on 7 elementi siis 4. osa
oleks keskpunktis, eks?
Jäta oma kommentaar on null indekseeritud, kuigi.
[Student] Jah, nii asukohta 3. See oleks keskpunktis.
Jah.
Oh, okei. Ma näen, mida sa mõtled.
See on selline imelik, nagu me harjuda kogu see mõiste
vabanemiseks kümnendkohtade.
See on hea punkt.
Teeme sellele lõpu üles.
Meie arvutused meie keskpunktis.
>> Me katsetame, kas meie nõel on võrdne keskmise väärtuse.
Me printida, et me leidsime selle, aga tõesti, mida me tahame teha sellises olukorras?
Leidsime ta, et me tahame lase helistaja teate, et me leidsime selle.
Meil on funktsioon, mis on tõeväärtus tipitud funktsioon.
Kuidas me signaali, helistaja meie ülesanne, et me oleme valmis minema
on meil öelda: "Hei, see on tõsi."
Kuidas me seda teeme, Kevin?
Sa noogutab pead. >> [Kevin] Lisa tagastamise tõsi.
[Nate] Täpselt, tagasi true.
Nüüd, kui see ei ole võrdne, kuidas me vaatame vasakul pool?
Mingeid ideid?
Stella, mingeid ideid?
Teil tuleb määrata uus positsioon lõpus.
Jah.
Nii et me peame tegema positsiooni keskpunktis - lõpuks.
Suur.
Meil on vaja kehtestada uus seisukoht lõpuni
vaadata vasakul pool.
See oli see, mida me rääkisime enne, kui
Hoian minnes tagasi selle näite.
Olen algab siin, ja siis on mul lõpuks kogu tee siia.
>> Jällegi, kui me otsime 15, ja meie keskpunktis on kell 16,
ja me mõistame, "Oih, 16 on suurem.
Me tahame liikuda vasakule poole võrra. "
Meil oleks siis liikuda lõpp 15,
ja me teeme seda, võttes üks kaugusel keskpunktis
ja millega, et meie uus lõpus.
Samuti siis, kui me tahame vaadata paremal pool, kuidas me seda teeme?
Kas teil on idee?
[Student] Sa lihtsalt seatud hakata keskpunktis + 1.
[Nate] Tore.
Ja nüüd nii, et me ei leia midagi,
kas see saada hoolitsenud meie eest?
Daniel, kas see saada hoolitsenud meie eest?
[Daniel] nr
[Nate] Kui me teeme seda läbi kogu massiivi ja me ei leia midagi,
kus oleks, et tuleb hoolitseda, või peaks me hoolitseme selle eest?
[Daniel] samas seisukorras.
[Nate] Jah, samas seisukorras, täpselt.
See hoolitseb läbimas kogu antennide massiivi, kui me ei leia midagi.
See samas loop lõpeb.
Me ei ole kunagi kokku puutunud selle tingimuse,
ja me saame tagasi false.
Me ei saa jätta ka seda, kui siin niimoodi
sest kui see, kui väide on tõene,
ja meie funktsioon tagastab,
ja nii me sisuliselt katkestada see funktsioon selles punktis
kui me tagasi tõsi.
Aga mis juhtub selle struktuur here?
Kas see töö täielikult, või on mõned loogiline viga on?
>> On mõned loogiline viga on, sellega, kuidas see on loodud.
Mis võiks see olla?
[Student] Miks sa vajad - ja + 1s?
See seab meie massiivi kuni tuleb meie uus vasak pool ja paremal pool.
[Student] Aga miks ei võiks sa seda ilma - 1s ja + 1s?
[Nate] Võiksime seada see võrdne keskpunktis?
Mis võiks olla problemaatiline on?
[Student] Ma arvan, et see on ebaefektiivne, sest sa oled kontrollimise väärtus, mis on juba kontrollitud.
[Nate] Täpselt nii, Sam on täiesti õigus.
Kui seate end ja alustada võrdne keskpunktis
asemel - 1 ja + 1 reflektoorselt,
mingil hetkel tulevikus me lõpuks kontrollida keskpunktis uuesti.
[Student] hakkasin pset, ja siis mul oli midagi sellist
kus ma unustasin + 1, ja see takerdunud lõputu silmuse.
Jah, sest mingil hetkel sa oled kunagi saada alguse ja lõpu
tegelikult kattuvad.
Lahe.
Seal on veel üks loogiline viga, ja see on, et see peaks kindlasti olema
else if.
Miks see võiks olla?
>> Põhjuseks on, kui see ei ole else if-sa nägid seda, Kevin?
[Kevin] Jah, sest siis muutub ka lõpp-punkti.
[Nate] Täpselt.
Me muutume tulemusnäitaja,
ja kui see on kirjutatud niimoodi-Me teha ruumi vahel-
kontrollib ta käesolevas asjas.
Sel juhul, kui see õnnestub, siis lakkab välja funktsiooni.
Siis vaadake seda järgmisel korral,
ja kui see õnnestub, siis reguleerige lõpp,
ja siis see jätkub ja kontrollida käesolevas asjas.
Aga sel hetkel, me ei taha seda jätkata kontrollimist.
Õnneks me ei ole nullitud keskpunktis siin,
ja me teame, et sel juhul ei õnnestu.
Aga me kindlasti tahame panna muidu kui seal
isegi kui see võib-sel juhul
kuna me ei kohandades keskpunktis, kas see muudab midagi?
Ei, sest need juhtumid on kõik välistavad.
Jällegi, minu paha.
Me ei, ma arvan, tuleb see if.
Me võime seda proovida ja kasutada seda ja vaata, mis juhtub.
Ehitus, viga.
See on ilmselt seetõttu jätsin need B ja e on siin.
Kas mul on veel neid üles ülaosas?
See ei näe välja nagu see.
Me suumimiseks ehitada,
seal ta läheb, nii et nüüd, kui me otsida 15,
Jah.
Lubage mul suumimiseks
15, jah. Me võime kasutada seda uuesti.
Uploading lähtekoodi, hoone, töötab.
Me ei saa otsida midagi 13
ja me ei saa midagi printida, nii et see ei leia, et meie jaoks.
See on suurepärane, sest see ei ole meie nimekirjas.
>> Meil on nüüd aeg otsa saama.
See saab olema see sel nädalal.
Täname, ning näeme hiljem.
>> [CS50.TV]