>> JASON Hirschhorn: Velkomin að viku þrjú, allir.
Við höfum mikið að gera en spennandi kafla á undan okkur.
Svo fyrst, vegna þess að við höfum gert nokkrar headway með áfangann en við enn
hafa a einhver fjöldi af að læra eftir að gera, ég er að fara að sýna ykkur nokkrar auðlindir
sem ætti að sanna til vera ótrúlega hjálpsamur eins og þú ekki aðeins nálgun þinni
Vandamálið setur, heldur einnig að melta allar Efnið sem við gefa þér krakkar í
fyrirlestrar og stuttbuxur og kafla.
>> Þá erum við að fara að eyða fyrstu 20 að 25 mínútur af kafla að fara yfir
GDB, sem þú mega eða mega ekki hafa notuð á þessum tímapunkti, en það er
ótrúlega gagnlegt tól sem mun hjálpa þú kemba forrit.
A einhver fjöldi af þú gætir hafa notað printf í miðja program til að reikna
hvað breytu jafn.
GDB er jafnvel betri en printf og ekki skrúfa upp númerið þitt vegna þess að þú
keyra það á executable skrá.
Þannig að við munum fara yfir 10 mest gagnlegt skipanir sem þú þarft fyrir gdb, og við erum
að fara að fara á æfingu saman svo í Heimadæmi þrír og utan, þú
getur notað GDB að hjálpa kemba áætlunum þínum.
Og að lokum, við erum að fara að fara yfir og flokkun og leita reiknirit
sem þú sást í fyrirlestri, og við erum að fara til raunverulega númer, ekki bara
sauðakóðanum, en númer Tvíundarleit, kúla flokka, og val konar.
>> Svo fyrst, ég vil fara yfir auðlindum.
Þetta er víðtækur lista, og það er Minna letur vegna þess að ég hafði mikið að
passa hér.
En þetta mun ekki aðeins hjálpa þér, aftur, með vandamál setur og
útdráttur upplýsingar sem þú lært, en örugglega, koma quiz tíma, þetta mun
verið ótrúlega hjálpsamur.
Svo fyrst, Fyrirlestur Skýringar.
Ef þú ferð til cs50.net/lectures og skruna að tiltekna viku og degi,
þú munt sjá að það eru athugasemdir fyrir hvert fyrirlestur, sem er ekki einfaldlega
afrit, en stytt útgáfa af hvað var fjallað í fyrirlestri með kóða
sýnishorn og fleiri nytsamlegar lostæti.
Ég mæli að fara yfir þær.
Og þá eins og heilbrigður, það er kóðinn í boði frá hverjum fyrirlestri.
Og aftur, þessi glærur mun einnig vera í boði á netinu á cs50.net/sections
í kvöld.
>> Svo annað eru stuttbuxur í hverri viku sem kápa efni, yfirleitt 5 til 15
mínútur að lengd.
Og þeir vonandi mun gefa þér mikill grunnur á mismunandi efni.
Þriðja -
og þetta er glæný þetta ári - er study.cs50.net.
Ef þú hefur ekki athugað það út, ég mjög mælum með að þú gerir það.
Þú færð að velja efni.
Við höfum heilmikið af efni á það.
Svo til dæmis, velja þér Aðgerðir.
Það gefur þér nokkrar glærur og bendir á aðgerðir.
Þeir eru í raun glærur sem TFS eru hvattir til að nota á okkar
kynningar í kafla.
Það er líka kenndur og bragðarefur fyrir að takast með virka, og það er
æfa vandamál sem hjálpa þú vinnur með aðgerðir.
Við gefum þér einnig tengla við stutt á virka og sinnum að virka
hafa komið upp í fyrirlestri.
Svo study.cs50.net, glæný þetta ári, frábær auðlind.
>> Næst hef ég maður, sem er handbók stjórn sem þú getur keyrt á
stjórn lína.
Svo ef þú hefur einhverjar spurningar um stjórn, til dæmis, Rand, sem við
fundur síðustu viku á kafla og þú hefur líklega komið í
vandamál þitt stillt þegar að fara í gegnum búa til kóða, en ef þú skrifar maður
Rand, munt þú fá síðu sem segir þér allt um Rand.
Það gefur þér hvað það tekur að breytur sem það tekur, auk arðsemi
tegund og stutt lýsing þeirrar starfsemi.
>> Svo kíkja Rand.
Það getur verið svolítið wordy og ruglingslegt, svo stundum finnst mér að
einfaldlega Googling það sem ég vil vita er besta leiðin til að finna svarið.
Svo æfa með Google.
Fá góður á Google.
Það mun verða besti vinur þinn.
>> Auk Google, ef þú getur ekki fundið það á Google, cs50.net/discuss, það er
á spjallvef.
Líklega er ef þú ert með spurningu, einn 700 þinna + jafningja hefur einnig að
spurning og kann að hafa spurt það þegar í ræða
ráðstefnur og hafa það svarað.
Þannig að ef þú ert með sameiginlegt spurningu eða þú hefur spurningu sem þú telur
kannski annað fólk gæti hafa rekið inn, kíkja cs50.net/discuss.
>> Að lokum, síðasta tveggja, ef þú vilt að tala við alvöru manneskju, skrifstofa
klst mánudagur til föstudags.
Það er einnig á vinnutíma um framlengingu nemenda.
Og síðast en alls ekki síst, mig, upphrópunarmerki.
Þú allir hafa samband við mig.
Ef þú þarft eitthvað skaltu aldrei hika við að hafa samband við mig.
Þér er alltaf velkomið að gera það.
Mjög fáir af ykkur hafa bætt mér á Gchat, svo að hafa valdið vonbrigðum,
en vonandi sem mun breytast á milli á þessu og næsta kafla.
Einhverjar spurningar svo langt á auðlindum?
Great.
>> Að lokum, annar stinga fyrir endurgjöf, sayat.me/cs50.
Þú getur gefið mér nafnlaus viðbrögð á hvernig ég er að gera.
Sem var mjög hjálpsamur í síðustu viku.
Ég fékk nokkrar athugasemdir frá ykkur rétt eftir kafla, auk frá
aðrir nemendur sem horfði á það á viku, og það
var ótrúlega hjálpsamur.
Ég er að fara að reyna að takmarka notkun mína orðið "sæt", en ég mun sýna minn
áhuga og spennu á annan hátt.
En það voru aðrar viðbótar efnisleg afturverkun,
bæði plús-merkjum og Delta.
Svo vinsamlegast, ég gef ykkur viðbrögð Á Vandamál setur þinn.
Feel frjáls til að gefa mér álit á kennslu mína.
Ég er hér fyrir ykkur.
>> Great.
Það er allt sem ég hef fyrir Í fyrsta kafla.
Hefur einhver hefur einhverjar spurningar svo langt?
Og ég er með í huga fyrir stjórnstöð.
Eftirnafn nemendur hafa messaged mig segja að þeir eru ekki að fá allir hljómflutnings-,
en það er út af mínu valdi til að festa.
Svo vonandi, sem fær leyst fljótlega.
Ef þú ert að horfa á netinu, hæ, en þú getur ekki heyra mig.
>> Svo fyrst, við erum að fara að fara í gegnum gdb.
GDB, eins og ég gaf í skyn í fyrr, er kembiforrit tól
miklu betri en printf.
Svo til að byrja með gdb, ykkur, ef þú vilt að opna tækið þitt
og taka skrána sem ég send til þín fyrr - þessa skrá mun einnig vera
í boði á netinu í smá -
og hlaupa gdb. / nafnið á skránni.
Fyrst, auðvitað, þú þarft að safna saman skrá því GDB virkar aðeins á
executable skrá.
>> En ef þú vilt alltaf að byrja GDB, the fyrstur hlutur þú gera,
þú keyrir gdb. / keisarann.
Svo er það nafn af the program við erum að fara með það núna.
Þannig að ég ætla að skrifa gera Caesar, sem mun gefa mér executable skrá
hér grænir.
Og þá ætla ég að keyra gdb. / Cesar.
>> Og þar sem þú ferð.
Þú sérð að við höfum einhver texti segja mér um útgáfu gdb, að gefa mér
sumir ábyrgð upplýsingar, og þá erum við hafa landsframleiðslu hvetja, sem lítur svoleiðis
af eins okkar stjórn lína hvetja, en þú sérð að það er opið
paren, gdb, loka paren.
Áður en við höldum áfram og kemba þessa skrá sem ég sendi til ykkar allra, við skulum líta á
nokkrar gagnlegar skipanir þannig að við höfum vit af því sem við ætlum að ná.
>> Þessar skipanir eru skráð hér í röð sem ég nota yfirleitt þá.
Svo ég byrja að forritið mitt því að keyra GBD. / Nafn af the program,
í þessu tilfelli, Caesar.
Og þá það fyrsta sem ég geri 99,9% af þeim tíma er gerð brot meina.
Sem setur brjóta benda á helstu.
Í meginatriðum, hvað þú ert að gera þarna er forrit er að fara að hætta á
Helstu svo þú getur byrjað að skoða hann línu með línu, frekar en að keyra alla
leið í gegnum.
Þú getur skemmt á mismunandi stöðum í númerið þitt, en helsta er yfirleitt
góður staður til að byrja.
>> Næsta stjórn sem ég hlaupa er litið.
Sem hefst program í gangi og ef þú þarft að slá inn skipunina lína
rök, hlaupa þú það sem skipun.
Hlaupa með þeim rökum.
Svo þar sem við erum að fara yfir útgáfu af C, sem er forritið sem þú krakkar
skrifaði fyrir pset tveimur -
þetta eitt, að sjálfsögðu, hefur sumir bugs í það að vonandi munum við finna -
við erum að fara að hlaupa hlaupa með einhverjum stjórn lína rifrildi vegna Caesar,
eins og þú krakkar vita á vandamálinu setja sérstakur, tekur nokkrar
stjórn lína rifrildi.
>> Næsta par af skipunum, næsta einn er í raun kallað næst.
Að einn tekur þér línu fyrir línu með forritinu.
Svo hitting n þá inn tekur þér í næstu línu, framkvæmd
fyrri línu.
Skref ekki aðeins tekur þig til næsta lína, en það
tekur þú inni aðgerðir.
Svo ef þú hefur skrifað fall í númerið þitt eða ef þú vilt að kanna
til i, til dæmis, getur þú högg s, og frekar en að fara í næstu línu
skráin sem þú ert að fara í gegnum hægri nú, þú munt í raun að stíga inn
Þessi aðgerð og sjá númerið hennar.
>> Listi sýnir þér, í mjög notendavænt snið, the 10 eða svo línurnar um
þar sem þú ert nú í kóðanum þínum svo þú getur raunverulega sjá skrána
frekar en að þurfa að skipta aftur og fram milli mismunandi skoðanir.
Prent er eins og printf, eins og nafn þess gefur til kynna.
Sem sýnir þér hvað breytu jafngildir.
>> Upplýsa heimamenn er mjög gagnlegt.
Þetta er sérstakt útgáfa af prenti.
Upplýsa heimamenn sýnir þér allt á staðnum breytur, prenta þær allar út fyrir þig
sem eru í boði.
Þannig að ég almennt, frekar en að þurfa að prenta út fjórum breytum sem ég er
forvitinn um hvort ég er á for lykkju, fyrir dæmi, ég skrifa bara upplýsa heimamenn,
og það mun sýna mér hvað gegn i minn jafngildir, sem og fylkingu sem I er
vinna á jafningja.
>> Að lokum, að halda áfram.
Lengd pásu stoppar þig á brot lið.
Hægt er að ganga í gegnum línu með lína með næsta og skref.
Halda áfram keyrir forritið til næstu þinn brjóta lið eða þar til lokið ef
það eru ekki fleiri brot stig.
Disable fjarlægir brot stig ef þú ákvað að brjóta á helstu var
óviðeigandi, þú vilt setja það einhvers staðar annars.
Og að lokum q, hætta, fær út frá gdb.
>> Þannig að þetta forrit,. / Caesar, við erum að fara að horfa í gegnum núna og við
eru að fara að nota GDB að finna galla í þessu forriti.
Ég hljóp þetta forrit áðan með Athugaðu 50, og ég fékk einn leiður.
Allt það hafi verið til, það saman, það samþykkti mikið af prófunum, en fyrir
sumir ástæða, gerði það ekki standast fimmtungur próf, beygja BARFOO, allar húfur, í
E-D-U-I-R-R, öll hettur, með þremur sem lykill.
Ég fékk ansi nálægt.
Ég fékk burt með einn staf.
Þannig að það er smá mistök hérna.
Ég hef litið í gegnum kóðann minn.
Ég gat ekki fundið það út.
Vonandi verður þú krakkar geta hjálpað mér reikna út hvað þessi villa er.
>> Svo er að villa við erum leita að.
Við skulum fara inn í gdb.
Aftur, ég hef keyrt gdb. / Caesar, svo nú erum við í gdb.
Og hvað er það fyrsta sem ég ætti að gera?
Ég hef bara gert gdb.
Einhver gefa mér gott skipunina til að slá inn.
>> STUDENT: Brot helstu.
>> JASON Hirschhorn: Brot helstu.
Frábær.
Skulum slá því inn
Þið getið horft upp hér eða fylgja eftir á tölvunni þinni.
Brjóta helstu, og þú munt sjá brot lið var sett á -
það gefur mér undarlegt minni heimilisfang, og það gefur mér líka línu númer.
Ef ég væri að horfa til baka á þessari skrá, Ég myndi átta að helstu
gerðist á línu 21.
Hvað ætti ég að hlaupa næst?
Er áætlun mín í gangi?
Nei
Svo hvað ætti ég að hlaupa næst?
>> STUDENT: Run.
>> JASON Hirschhorn: Run.
Ætti ég að keyra bara hlaupa, eða ætti Ég bæta nokkrum öðrum hlutum í?
>> STUDENT: Hlaupa með rök.
>> JASON Hirschhorn: Run með skipunin rök.
Og þar sem ég er kembiforrit mjög sérstakur ræða, ætti ég að slá inn að
stjórn lína rifrildi.
Svo ég keyri þrjú, sem er, aftur, framleiðsla sem ég fékk frá Check 50.
Byrjun program.
Við förum í gegnum a par af línum.
Þú munt nú sjá að við erum á línu 21.
Hvernig veit ég að við erum á línu 21?
Vegna þess að ef þú horfir til vinstri stöðvarinnar gluggann minn, þar
það segir línu 21.
Og það gefur mér, reyndar er kóða sem er á línu 21.
Svo ég misspoke áðan.
Helstu er í raun ekki í línu 21.
Helsta er a par af línum yfir 21.
En í línu 21, sem er þar sem við erum að brjóta.
Þessi lína af kóða er ekki enn framkvæmt.
Það er mikilvægt.
Línan sem þú sérð hefur ekki verið keyrð enn.
Það er næsta lína af kóða þú ert að fara að framkvæma.
>> Svo næsta lína, eins og þú krakkar eru líklega kunnugt, er þetta
ástand stöðva til að sjá hvort ég hef inn a stjórn lína rifrildi.
Og að ég, hvað er annað hluti af því að gera?
Hvað er að mér?
>> STUDENT: Breyting það til heiltala.
>> JASON Hirschhorn: Fyrirgefðu?
>> STUDENT: Það er að breytast og rök til heiltala.
>> JASON Hirschhorn: Svo að ég breytist Arg v1 úr streng til heiltala.
Og þá hvað er það að athuga?
>> STUDENT: Ef það er annað rök stjórn lína, innskot
frá hlaupandi the program.
>> JASON Hirschhorn: Og hvað er seinni hluta þessa
Boolean tjáningu stöðva?
Þessi hluti hérna, er til i?
>> STUDENT: Ef það er neikvætt.
>> JASON Hirschhorn: Gerð viss um hvað?
>> STUDENT: Gerð viss um að það er í raun jákvæður.
>> JASON Hirschhorn: Einmitt.
Þetta er stöðva til sjá ef það er neikvæð, og ef það er neikvætt, ég
hef á tilfinningunni að næsta lína kannski að mér að öskra á notanda.
Svo skulum högg enda til að framkvæma þessa línu.
Við sjáum ekki þessi lína sem þú krakkar kannski ráð að sjá æpa á
notandi og síðan aftur, því Þessi lína var ekki keyrt.
Ég gekk 3.
Svo ég gerði í raun, slá tvær stjórn lína rifrildi, og 3 er
hærri en núll.
Þannig að við sáum að línu, framkvæma við, en við vildum ekki stíga
inni í ef ástand.
>> Svo nú, næst, ég sé að ég er að setja INT lykill jafngildir að ég arg v1.
Svo er það mér að búa til breytu takkann.
Þannig að ef ég prenta út takkann núna, vegna þess að sem leyfir þér að sjá
gildi inni í breytu, lykill jafngildir 47.
Það er undarlegt, en auðvitað, það er vegna þess að ég hef ekki
framkvæma þessi lína ennþá.
Svo nú ef ég högg n, framkvæma þessi lína, og gera prenta takkann, lykill verður jafn 3,
sem er það sem við búast við það til að jafna.
>> Svo aftur, í gdb, línu sem þú sjá að þú hefur ekki framkvæmt ennþá.
Þú þarft að högg n eða S eða númer annarra skipanir til raunverulega
framkvæma þessi lína.
Print takkann.
Lykill er á 3.
Svo langt, svo góður.
Band er látlaus texti.
Skulum framkvæma þessi lína.
Ég fæ band af notanda.
>> Skulum sjá í ávísun frá mér 50, ég sláðu BARFOO allar húfur, svo
það er það sem ég ætla að slá inn.
Ef ég prenta nú texta.
Þú munt sjá það jafngildir streng.
Það gefur mér eitthvað annað skrýtið sextánskur tala, en það gerir í
staðreynd segja að strengur minn er BARFOO.
Ef ég vildi sjá hvað lykill jafn á þetta lið, hvernig gæti ég athuga lykillinn?
>> STUDENT: Print takkann.
>> JASON Hirschhorn: Print takkann, einmitt.
Og í raun, það er flýtileið.
Ef þú færð þreytt á að slá prenta, þú getur einfaldlega skrifað bls.
Svo p lykill hjartarskinn the sami nákvæmur hlutur.
Og aftur, ég sé að það er 3.
>> Ef ég vildi til að finna út hvað bæði lykil og BARFOO jafn á sama tíma
en ég var þreytt á því að slá hvert einn út fyrir sig, ég
gæti tegund upplýsa heimamenn.
Það gefur mér lykil jafn 3.
Látlaus texti jafngildir BARFOO.
Það gefur mér líka þessar tvær furðulegur hlutur efst, þessi breyta I og
þessa breytu n.
>> Þeir eru í raun að núverandi í helstu forrit mínu.
Við höfum ekki komið upp þá enn, en eins og sýnishorn, þá
til í mínum fyrir lykkju.
Svo núna, jafnt þeir sumir furðulegur tölur því þeir hafa ekki verið
frumstilla enn, en þeir eru ennþá í minni, svo þeir eru bara að setja
að einhverju sorp gildi.
En við sjáum lykill í látlaus texta rétt þar.
>> Þannig að ég ætla að framkvæma þessa línu, lína 34, for lykkjunnar.
Við erum að fara að stökkva inn í fyrir lykkju með hitting n.
Og við erum inni for lykkjunnar.
Við erum á fyrstu athugun okkar.
Og aftur, þetta ætti konar líta þekki þig því þetta var
Caesar forrit sem var skrifað, en aftur, hefur einhverskonar galla.
>> Og nú ef ég upplýsa heimamenn, því ég er inni að fyrir lykkju, munt þú sjá
sem ég er jafn núlli, eins og við gerum ráð fyrir.
Það er það sem við setjum það til og frumstillt það er til í for lykkju.
n er jafnt og 6.
Það gerir einnig skynsamlegt af því að við setjum það að strlen af ​​texta.
Svo ég vil gera upplýsa heimamenn eða prenta að breyta oft til að tryggja að
allt er alltaf það Ég von á því að jafna.
Í þessu tilviki, allt er hvað ég búast við það til að jafna.
>> Svo skulum byrja að flytja í gegnum þetta fyrir lykkju.
Línan Ég er á er lína 36, ​​ef látlaus texti I er meiri en a og venjuleg
texti I er minna en eða jafnt og z.
Ég veit vandamálið mitt er ekki með fyrsta minn bréf, er það með annan stafinn.
Ef við lítum til baka á Check 50, B fer til E fínn.
Ég ætla að taka á A og skilja það eins og er A, ekki breyta því að D. Svo
eitthvað er rangt við Annað bréf.
Þannig að ég ætla að flytja það í annað.
>> En ef ég gerði vil athuga hvað látlaus texti ég jafn í þessu tiltekna
mál, ég held að það ætti að vera hvað?
Hvað ætti látlaus texti ég jafn í þessu Fyrsta umferð í gegnum for lykkjunnar?
>> STUDENT: Zero?
>> JASON Hirschhorn: Ókóðuð I?
Þannig að það ætti að vera fé B. I, að sjálfsögðu, jafn núlli, en látlaus texti
krappi núll lokað krappi jafngildir B því strengir, eins og við sáum í síðustu viku,
eru array, þannig að við erum að fá fyrsta staf frá þeim.
Svo aftur, ef ég prenta út texta af Ég, ég, í raun, fá karakterinn
B. Og það er sniðugt, ekki satt?
Ég er ekki í raun hafa látlaus texti I. Það er ekki einn af þeim breytum sem ég sett
eða forsniðinn en þú getur prentað út a heild gestgjafi af hlutum
ef þú vilt.
>> En við skulum fara í gegnum.
Ef texta I er meiri en A og texta I er minna en eða jafnt og
Z, sem augljóslega er satt því við höfum höfuðborg B. Ég ætla að keyra
sumir stjórn á því.
Við sáum að stærðfræði í síðustu viku, þannig að við munum taka það sem sjálfsagðan hlut að það virkar
rétt samkvæmt Athugaðu 50.
>> Þessar hrokkið axlabönd, sá fyrsti sýndi að ég var að fara út úr ef
ástand, the second einn sýndi sem ég er spennandi for lykkjunnar.
Og svo núna þegar ég högg Næstur, við munum sjá við erum aftur á for lykkjunnar aftur.
Við erum að fara í gegnum fyrir lykkju aftur.
Skulum stíga í raun inn í annað endurtekning af for lykkjunnar og tegund
Upplýsa heimamenn.
>> Þannig að við erum í öðru endurtekning af fyrir lykkja okkar.
Ég er 1, sem við gerum ráð fyrir.
N jafngildir 6, sem við gerum ráð fyrir.
Lykilatriðið er 3, sem við gerum ráð fyrir.
Og látlaus texti, munt þú sjá, jafngildir EARFOO nú, ​​ekki BARFOO lengur því
í fyrri endurtekning okkar, B var breytt í hlutafé E. Þannig að við erum að fara
að lenda í vandræðum, þannig að þetta er þar sem við erum að fara að
kafa í kembiforrit.
En hefur einhver hafa einhverjar spurningar um hvað við höfum gert svo langt?
Frábær.
>> Þannig að við erum að fara að framkvæma þetta ef ástand, látlaus texti krappi ég loka
krappi meiri en A og látlaus texti I minna en eða jafnt og Z. En áður
Ég fer inn í það, því þetta er þar Ég veit villa mín er, ég vil benda
út látlaus texti I. Svo skulum setja prenta út.
Það er jafn staf, svo að virðist svo langt, allt er vel og gott.
>> Svo ég búast þessa línu á rökfræði minn, þessi lína ætti að vera satt.
Það er höfuðborg bréf.
En ef ég högg n, við grein fyrir því að þetta lína, í raun, ekki framkvæma.
Ég stökk niður til annars ef.
Hvers vegna gerðist það?
>> STUDENT: Þar sem þú hefur ástand þitt af texta er meiri
en A, ekki jöfn eða meiri en.
>> JASON Hirschhorn: Svo ég hafði texta minn I er meiri en A, sem er ekki meira
en eða jafnt og.
Svo skýrt, höfuðborg A gerði ekki kalla þetta ef ástand, og við gerðum
ekki stíga inn í það, og við gerðum ekki gera nauðsynlegar breyting.
Svo er það það, í raun.
Ég mynstrağur út galla mína.
Ég gæti farið aftur í uppspretta minn skrá, breyta því, og uppfæra hana og
hlaupa Athugaðu 50 aftur.
>> En við munum sjá, bara fyrir kennslufræði er sakir, ef ég halda áfram.
The annar ef ekki framkvæma heldur, en hvað í staðinn jafnt er skipunin
sem breytist ekki.
Svo það hefur ekki breytt á öllum, og ef ég prenta texta hér, munum við sjá fara
gegnum að fyrir lykkju gerði ekki, í raun, breyta því annað eðli yfirleitt.
Það er samt höfuðborg A.
>> Svo aftur, debugged við villu okkar.
Við komust að því að það var sumir rökfræði vantar.
Og við debugged það á undan tíma áður raunverulega framkvæmd þessi lína,
en þú hefði tekið eftir við höfðum bara högg á Next og hoppa til að annað hvort,
sem þýðir að að ef ástand var ekki satt.
Við vildum ekki, í raun, fá niðurstaðan sem við ráð fyrir.
Svo þá gætum við verið beðið, hafði við ekki verið svo astute, til að líta á
að ef ástand og athuga hvort í raun, ástand okkar ætti að meta til
sannur í núverandi samhengi.
>> Það er allt fyrir kembiforrit þetta forrit.
Hefur einhver hefur einhverjar spurningar?
Hvaða stjórn gæti ég högg að hætta GDB?
Q. Og þá ég vera beðin, hætta samt?
Já eða nei.
Ég lenti já, og ég ætla að hafa hætta gdb.
>> Svo það var a fljótur grunnur til gdb.
Reyndar í alvöru atburðarás, Ég gerði þetta á skrifstofutíma.
Ég GDBed þetta nákvæmlega áætlun á Viðtalstímar með nemanda.
Og ef við förum aftur á skipununum við sáum áður notuðum við brot helstu, fyrst
sem við gerðum.
Við notuðum hlaupa með stjórn lína rifrildi, Annað sem við gerðum.
Við notuðum næstu mikið að færa okkur í gegnum línurnar.
Og aftur, stutt útgáfa um er næst n.
Það er í sviga grár á mynd.
>> Við vildum ekki nota skref, en við gerðum ekki endilega að fyrir þessu tilviki.
En við gætum notað það í smá síðar á dag ef við erum kembiforrit, fyrir
dæmi, Tvíundarleit þegar tvöfaldur leit er kallað í sérstakri
virka en það er einhver villa með það.
Við erum að fara til að vilja stíga inn kalla til tvöfaldur leit og
reyndar kemba það.
Listi við vildum ekki nota annaðhvort því við vorum góða tilfinningu númerið okkar, en ef ég
gerði vilja til að fá tilfinningu fyrir því hvað númer ég var um, gæti ég bara nota listann.
>> Prenta sem við notuðum, upplýsa heimamenn við notuðum.
Höldum við ekki þurfa að nota í þessu ræða, hvorki gerði við þurfum að nota
slökkva, en við gerðum notkun hætta.
Aftur, þessir 10 skipanir, æfa þá.
Ef þú skilur þetta 10 skipanir, þú ættir að vera stillt fyrir kembiforrit allir
mál með gdb.
>> Þannig að við erum að fara að fara á, aftur, að því crux af kafla í dag, að fara yfir
þessir flokkun og leita reiknirit.
Áður en við gerum það, aftur, einhverjar spurningar, athugasemdir, áhyggjur fyrir gdb?
Svo eru allir að fara að nota GDB frekar en printf?
Svo allir, fyrir sakir perpetuity er, allir eru nodding rétt höfuð þeirra
nú, svo ég mun sjá þig á skrifstofutíma og allar TFS vilja sjá þig og
þeir segja, að sýna mér hvernig á að nota GDB, og þú munt geta
að sýna þeim, ekki satt?
Konar?
Kannski vonandi.
Cool.
>> Þannig að við erum að fara að flytja inn í flokkun og leita.
Þú munt sjá að ég hef lista þegar raðað fyrir okkur, en það er ekki að fara
að vera málið og alltaf.
Svo í Heimadæmi forskrift Heimadæmi þrjú, þú stuttbuxur
að þú getur horft á og það í raun og veru biður þig um að horfa á þær stuttbuxur.
Einnig í fyrirlestri í síðustu viku, fórum við yfir A einhver fjöldi af þessum reiknirit, þannig að ég er
ekki að fara að eyða tíma í bekknum fara yfir þessum reiknirit aftur eða teikningu
myndir um hvernig þessir reiknirit vinna.
Aftur, að upplýsingar sem þú getur aftur horfa fyrirlestur, eða að upplýsingar
er tekin framúrskarandi á stuttbuxur fyrir þessi leit, allar
sem eru í boði á cs50.net.
>> Svo í stað, hvað við erum að fara að gera er að skrifa þessi forrit.
Við höfum vit, andlegt líkan, um hvernig þeir vinna, og svo það sem við erum að fara
að gera er að kóða þá fyrir alvöru.
Við erum að fara að snúa að andlegri fyrirmynd, þessi mynd, ef þú vilt, inn í
Raunveruleg kóða.
Og ef þú varst lítill ruglaður eða hazy á andlega fyrirmynd, ég algerlega
skilja.
>> Við erum í raun ekki að fara að hoppa til að kóða strax.
Svo á meðan þetta hvetja í þessari mynd spyr þú að kóða tvöfaldur leit, og
reyndar, endurtekningu útgáfa af Tvíundarleit, það fyrsta sem ég
virkilega vil að þú gerir er að skrifa nokkur sauðakóðanum.
Svo þú hefur þetta andlega líkan um hvernig tvöfaldur leita virkar.
Taka út um pappír ef þú ert einn á reiðum höndum, eða opna upp
texti ritstjóri, og ég vil allir að skrifa.
Taktu fjórar mínútur til að skrifa sauðakóðanum fyrir tvöfaldur leit.
>> Aftur, hugsa um það andlega fyrirmynd.
Ég kem í kring ef þú hefur einhverjar spurningar og við getum draga myndina út.
En fyrst, áður en við byrjum forritun, Mig langar til að skrifa
sauðakóðanum fyrir tvöfaldur leit svo þegar við kafa í, höfum við sumir átt sem
hvar við ættum að fara.
>> STUDENT: Getum við ráð fyrir fjölda gildi við fáum er þegar raðað?
>> JASON Hirschhorn: Svo fyrir tvöfaldur leit að vinna - frábær spurning - þú
að taka í Raðað array af gildum.
Svo taka það vilja vinna.
Við munum fara aftur á þessa mynd.
Þú munt sjá í fjólubláa aðgerðina yfirlýsing er bool binary_search Int
gildi, int gildi, int n.
Þetta ætti að líta kunnuglegt ef þú hefur þegar nálgast eða fengið þinn
hendur óhreinum með Heimadæmi.
>> En það er virka yfirlýsing þín.
Aftur, ætti ekki að þurfa að hafa áhyggjur af það mikið á þessari stundu.
Það sem ég vil virkilega að gera er að taka fjórar mínútur sauðakóðanum tvöfaldur
leita, og þá munum við fara yfir að sem hópur.
Og ég mun koma í kring.
Ef þú hefur einhverjar spurningar, finnst frjáls til að hækka hönd þína.
>> Af hverju ertu ekki að taka tvær fleiri mínútur að ljúka upp sauðakóðanum?
Ég veit að þetta kann að virðast fáránlegt að við erum að eyða svo miklum tíma í
eitthvað sem er ekki einu sinni í raun í C, en sérstaklega fyrir þetta meira
krefjandi reiknirit og vandamál setur sem við höfum til að reikna út,
byrja í sauðakóðanum ekki áhyggjur um setningafræði, bara að hafa áhyggjur af
rökfræði, er ótrúlega gagnlegt.
Og þannig, þú ert ekki að leysa tvö ótrúlega erfitt vandamál í einu.
Þú ert bara með áherslu á rökfræði og þá þú fara inn í setningafræði.
>> OK.
Við skulum byrja að fara í gegnum á sauðakóðanum.
Ég hef skrifað hérna, tvöfaldur leita sauðakóðanum.
Við munum skrifa þetta á stjórn saman.
Eða ég skrifa það og þú munt gefa mig leiðbeiningunum sem ég þarf.
Svo getur hver sem er gefið mér fyrsta lína í sauðakóðanum þú
skrifaði fyrir tvöfaldur leit?
Já, Annie?
>> STUDENT: Þó að lengd listi er hærri en núll.
>> JASON Hirschhorn: Þó lengd upptalningar hærri en núll.
Og aftur, sjáum við nokkrar C-útlit syntactical hlutir hér.
En mest af þessu er á ensku.
Did einhver hafa einhverja línu sem þeir setja áður en þetta í þeirra gervi-kóða?
>> STUDENT: Fá fylki af raðað númer.
>> JASON Hirschhorn: Þú skrifaðir "færð array Raðað númer. "og á
virka yfirlýsingu munum við brottför fylki af raðað númer.
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Svo munum við hafa það.
En já, ef við vildum ekki hafa það, við þyrfti að raða array okkar
tölur, því Tvíundarleit aðeins virkar á raðað fylki.
Svo á meðan lengd lista er jafn núlli, ég er að fara að setja í sumum hrokkið axlabönd
til að gera það líta svolítið meira eins og C. En á meðan, virðist að kortleggja á a
meðan lykkja, svo innan þessa tíma lykkja hvað þurfum við að
gert fyrir tvöfaldur leit?
>> Einhver annar sem hefur ekki gefið mér svara enn en hver skrifaði þetta?
>> STUDENT: Farðu í miðjum listanum.
>> JASON Hirschhorn: Tom.
Fara á miðjum listanum.
Og eftirfylgni spurningu, hvað eigum við að gera þegar við erum í
miðjum listanum?
>> STUDENT: Ekki ávísun hvort sem er númerið sem þú ert að leita að.
>> JASON Hirschhorn: Excellent.
Go miðjum listanum og athuga ef gildi okkar er þarna -
frábær.
Did einhver hafa neitt annað sem var öðruvísi en þetta?
Það er einmitt rétt.
>> The fyrstur hlutur sem við gerum í tvöfaldur leit er að fara í miðjum listanum og
athuga hvort gildi okkar er þar.
Svo ég geri ráð fyrir ef gildi okkar er það, hvað gerum við?
>> STUDENT: Við skila núll [inaudible].
>> JASON Hirschhorn: Já, ef okkar gildi er þar, fannst við það.
Þannig að við getum sagt á einhvern hátt, þó þetta fall er skilgreint, segja við notanda
við fundum það.
Ef það er ekki þar, þó, það er þar sem þetta verður erfiður.
Þannig að ef það er ekki þar, einhver annar sem var að vinna á tvöfaldur leit eða
hefur hugmynd nú, hvað gerum við?
>> STUDENT: Spurning.
>> JASON Hirschhorn: Já?
>> STUDENT: Er array þegar raðað?
>> JASON Hirschhorn: Já, við erum að því gefnu array er þegar raðað.
>> STUDENT: Svo þá verður þú að athuga hvort gildi sem þú sérð er meiri en
gildi sem þú vilt, getur þú fært til miðju hinn helminginn.
>> JASON Hirschhorn: Svo ef um miðja listinn er meiri en það sem við erum
leita að, þá erum við að gera hvað?
Við færa hvar?
>> STUDENT: Þú vilt færa til helminginn af listanum með
tölur lægri en það.
>> JASON Hirschhorn: Þannig að við munum kalla að vinstri.
Þannig að ef miðjan er meiri, getum við leitað vinstri helminginn af listanum.
Og þá með því að leita, hvað ég meina með leit?
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Við förum í miðjunni.
Við endurtaka reyndar þetta.
Við förum aftur í gegnum while lykkju okkar.
Ég skal gefa þér það síðasta -
annars, ef, miðja er minna en það við gerum, hvað gerum við hér?
>> STUDENT: Fara til hægri.
>> JASON Hirschhorn: Leita rétt.
Þetta lítur vel út, en er einhver hafa eitthvað sem við kunna að vera vantar eða
eitthvað annað sem þú setur í þinn gervi-kóða?
Svo er þetta það sem við höfum hingað til.
Þó að lengd á listanum er meiri en núll, við erum að fara að fara
til miðjum listanum og athuga hvort gildi okkar er þar.
>> Ef miðjunni er meiri, þá ætlum við að leita eftir, annars ef miðjunni er
minna, við erum að fara að leita sér rétt.
Þannig að við höfum öll þurft sumir þekkingu með hugtök sem við notum í tölvunarfræði
og verkfæri sem við höfum.
En þú munt nú þegar taka við vorum tala á ensku, en við fundum
fullt af hlutum sem virtist kortinu á að tæki sem við höfum í erfðaskrá verkfærasett okkar.
Svo strax the kylfa, við erum ekki að fara til raunverulega kóða ennþá.
>> Hvað sjáum við hér í ensku að kort á hlutum sem við getum skrifað í C?
>> STUDENT: Þó.
>> JASON Hirschhorn: Þó.
Þannig að þetta á meðan hérna kort á að hvað?
>> STUDENT: A meðan lykkja.
>> JASON Hirschhorn: A meðan lykkja?
Eða líklega, meira almennt, lykkju.
Við viljum gera eitthvað aftur og aftur.
Þannig að við erum að fara að kóða lykkju.
Og við vitum nú þegar, vegna þess að við höfum gert þetta nokkrum sinnum og við
hafa nóg af dæmum þarna úti, hvernig í raun og veru að skrifa
Vísitalan fyrir lykkju.
Svo sem ætti að vera nokkuð auðvelt.
Við ættum að vera fær um að fá að byrjaði ansi fljótt.
>> Hvað annað sjáum við hér?
Hvaða önnur mannvirki syntaxes, hlutir að við erum kunnugir í C, gera við
þegar hafa tilfinningu Undirstaða burt af þeim orðum sem við notuðum?
Já, Anna?
[Inaudible]
bara að grínast.
Anna, fara fram í tímann.
>> STUDENT: Ef og annað.
>> JASON Hirschhorn: Ef og annað - hérna.
Svo hvað þeir líta út?
>> STUDENT: An ef annað yfirlýsingu.
>> JASON Hirschhorn: Já, aðstæður, ekki satt?
Þannig að við munum líklega þurfa að skrifa nokkrar aðstæður.
Og aftur, þó kannski ruglingslegt í fyrst, höfum við tilfinningu fyrir nú
um hvernig á að skrifa skilyrði og The setningafræði fyrir aðstæður.
Og ef við gerum ekki, horfum við bara upp setningafræði fyrir aðstæður, klippa og líma
að vegna þess að við vitum að við þurfa ástand hér.
Önnur atriði sjáum við að kort á hlutir sem við gætum þurft að gera í C?
Já, Aleha?
>> STUDENT: Þetta gæti verið augljós, bara með því að haka ef
gildi er eitthvað.
>> JASON Hirschhorn: Svo hvernig við athugum og - svo fara á miðjum listanum
og athuga hvort gildi okkar er þarna?
Hvernig gerum við það í C?
Hvað er setningafræði fyrir það?
>> STUDENT: Jafnt jafngildir.
>> JASON Hirschhorn: Jafnt jafngildir.
Þannig að þetta stöðva er líklega að fara að vera jafnfætis, jafngildir.
Þannig að við munum vita að við þurfum að einhvers staðar.
Og reyndar, bara í að skrifa það, sjáum við þá annað.
Við erum að fara til verða að gera sumir samanburður rekstraraðila þar -
frábær.
Svo það lítur út í raun eins og, með og stór, höfum við ekki skrifað
Orð C kóða ennþá.
En við fengum andlega fyrirmynd niður með fyrirlestrum og þeim stuttbuxur.
>> Við skrifaði gervi-kóða sem hópur.
Og þegar, höfum við 80% ef ekki 90% af því sem við þurfum að gera.
Nú þurfum við bara að kóða það, sem aftur er
non-léttvæg vandamál að leysa.
En að minnsta kosti við erum fastur á rökfræði.
Að minnsta kosti nú þegar við förum skrifstofutíma, Ég get sagt, ég veit hvað ég þarf
að gera, en getur þú minna mig setningafræði?
Eða jafnvel ef Viðtalstímar eru fjölmennur, þú getur Google fyrir setningafræði, frekar
en að vera fastur á rökum.
>> Og aftur, frekar en að reyna að leysa rökfræði og setningafræði öll vandamál
í einu, er það oft miklu betra að brjóta þá tvo harða vandamál burt í
tveir viðráðanlegri sjálfur og gera gervi-kóða fyrst og síðan númer í C.
Svo skulum sjá hvað ég gerði fyrir Gervi-kóðann til batnaðar.
>> Þó að lengd á listanum er meiri en núll, líta á miðjunni
af listanum.
Ef fjöldi fannst aftur satt, annars ef fjöldi hærri, leita eftir.
Annars ef fjöldi minni, leita rétt, return false.
Svo lítur það nánast eins ef ekki næstum eins og það sem við skrifuðum.
Reyndar, Tom, hvað þú sagðir fyrst, brjóta miðjum listanum og ef
fjölda í ljós í tveimur yfirlýsingum er í raun það sem ég gerði.
>> Ég sameina þá.
Ég ætti að hafa hlustað á þér í fyrsta sinn.
Svo er að gervi-kóða sem við höfum.
Ef þú vilt nú, því miður, fara aftur til byrjunar vandamál okkar.
Skulum kóða binary.c.
Svo framkvæma endurtekningu útgáfu af tvöfaldur leit með eftirfarandi
virka yfirlýsingu.
>> Og þú þarft ekki að afrita það niður strax.
Ég er reyndar að fara að opna upp hérna binary.c.
Svo er það sú aðgerð yfirlýsingu í the miðja af the skjár.
Og þú munt sjá að ég tók gervi-kóða frá um hliðum mínum, en nánast eins
að það sem við skrifuðum, og setja það í fyrir þig.
Svo nú skulum við taka fimm mínútur að kóða þessa aðgerð.
>> Og aftur, ef þú hefur einhverjar spurningar, hækka hönd þína, láttu mig vita, ég
koma í kring.
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Svo ég tók tvöfaldur Leita skilgreining á því
efst á línu 12.
Það er það sem ég fékk fyrir mynd mína.
Og þá allt þetta gervi-kóða ég bara afrita og líma úr mynd,
gervi-kóða renna.
Ég er enn ekki að heyra [inaudible].
>> Svo ef þú hefur lokið þinni framkvæmd, ég vilja til stöðva það.
Ég send þér helpers.h skrá fyrr í þessum flokki.
Og það verður í boði á netinu eins og heilbrigður til niðurhals fyrir fólk að horfa
Þessi hluti sinni frestað.
Og ég notaði bara almenna dreifingu kóða frá pset3.
Svo ég tók find.C, nota helpers.h minn skrá frekar en helpers.h skrá
sem er að finna í dreifingu kóða.
>> Og ég þurfti að gera eitt annað breytingu á find.C frekar en að hringja bara einfaldlega
leita, kalla binary_search.
Svo ef þú vilt prófa númerið þitt, vita að það er hvernig á að gera það.
Í raun, þegar við munum vera að keyra þennan kóða núna, ég gerði bara afrit af
pset3 skrá minn, aftur, skipti út að framreiðslu skrá og þá gert að
breyta í find.C að hringja binary_search frekar en einfaldlega leita.
>> JASON Hirschhorn: Já.
Þú ert með spurningu?
>> STUDENT: Nevermind.
>> JASON Hirschhorn: Engar áhyggjur.
Jæja, við skulum byrja.
Við mun tákna þetta sem hópur.
Eitt annað í huga.
Aftur, þetta er, getur auðveldlega vera skipti í fyrir Heimadæmi Three.
Ég hef helpers.h skrá mína, sem frekar en helpers.h við erum gefið,
segir Tvíundarleit, kúla flokka, og val konar.
Og í find.c þú munt taka eftir á línu, hvað er að, lína 68, er vér köllum tvöfaldur
leita frekar en að leita.
Svo aftur, kóðinn sem er í boði netinu eða kóða sem þú ert
búa núna getur hæglega skipti í fyrir p setja 3 að athuga það.
>> En fyrst skulum við kóða tvöfaldur leit.
Virka yfirlýsingu okkar, við skila bool.
Við tökum heiltölu kallast gildi.
Við tökum fjölda heiltölur kallast gildi, og við tökum n vera
stærð fylkisins.
Í línu 10, hérna, hef ég skarpur eru stdbool.h.
Hefur einhver vita hvers vegna það er þar?
Svo hvaða hjartarskinn þessi lína af kóða gera?
>> STUDENT: Það gerir þér kleift að nota bool aftur tegund.
>> JASON Hirschhorn: Einmitt.
>> STUDENT: Eða það er bókasafn sem gerir að nota bool aftur tegund.
>> JASON Hirschhorn: Svo skarpur eru stdbool.h lína gefur mér nokkrar
skilgreiningar og yfirlýsingar fyrir hluti að mér sé heimilt að nota í
Þetta safn.
Svo meðal þeirra er að segja að það er Þessi tegund heitir bool, og það getur verið
satt eða ósatt.
Svo er það sem þessi lína gerir.
Og ef ég var ekki búin að línu, myndi ég komast í vandræðum fyrir að skrifa þetta
orð hérna, bool, rétt þar.
Nákvæmlega rétt.
Þannig að ég þarf að í þessum kóða.
OK.
Svo þetta, aftur, er endurtekningu útgáfa, ekki endurkvæma einn.
Svo skulum við hefjast handa.
>> Skulum byrja á þessu fyrst lína af gervi kóða.
Og vonandi munum við - eða ekki vonandi.
Við ætlum að fara í kring the herbergi.
Við munum fara á milli lína, og ég mun hjálpa þú reikna út línu sem við þurfum
að skrifa fyrst.
Svo á meðan lengd lista er hærri en núll.
Við skulum byrja á að framan.
Hvaða línu ætti ég að skrifa hér, í kóða?
>> STUDENT: Þó sviga n er hærri en 0.
>> JASON Hirschhorn: Þó n er mikill en 0.
Svo er n á stærð við listann, og við erum að athuga hvort -
>> [INTERPOSING raddir]
>> JASON Hirschhorn: - Fyrirgefðu?
>> STUDENT: Hvernig vitum við að n er stærð af listanum?
>> JASON Hirschhorn: Því miður.
Og á pset forskrift, leita og raða aðgerðir þú þarft að skrifa,
n er stærð listanum.
Ég gleymdi að útskýra það hér.
En já. n er stærð listanum, í þessu tilfelli.
Svo er á meðan n hærri en 0..
OK.
Það gæti reynst dálítið erfið þó, ef hlutirnir fara á.
Þar sem við munum halda áfram að vita stærð listanum í gegnum þetta
virka, en segja við byrjað á með fjölda af 5 heiltalna.
Og við förum í gegnum og við höfum nú minnkað það niður í
fylki af 2 heiltölur.
Sem 2 heiltölur er það?
Stærð er 2 núna sem við viljum líta á, en sem 2 er það?
Er að skynsamleg, þessi spurning?
>> OK.
Ég spyr hann aftur.
Svo við byrjum burt með þessa fjölbreytta 5 heiltölur, og n er jafnt og 5, ekki satt?
Við munum keyra í gegnum hér.
trulega breytt stærð, rétt, eins og hlutirnir fara á.
Sem er það sem við segjum að við viljum gera.
Við viljum ekki að leita fullur hlutur aftur.
Svo segja við að breyta því í 2.
Við tökum helming lista sem er skrýtið.
Svo bara velja 2.
Svo nú n jafngildir 2.
Ég biðjumst velvirðingar á fátækum þurr eyða merkjum.
Satt?
Og við erum að leita í gegnum listann aftur með lista af stærð 2.
Jæja, array okkar er enn af stærð 5.
Við segjum að við viljum bara að Leita 2 blettur í henni.
Svo sem 2 blettir eru þeir?
>> Er að skynsamleg?
Eru þeir vinstri 2 bletti?
Eru þeir rétt 2 bletti?
Eru þeir miðjuna 2 bletti?
Við höfum brotið vandamál niður, en við reyndar veit ekki hvaða hluta af
Vandamálið sem við erum enn að leita á, bara með því að hafa þessar 2 breytur.
Þannig að við þurfum aðeins meira þá, á meðan n er hærri en 0.
Við þurfum að vita hvar það n er í eiginlegri array okkar.
>> Svo hjartarskinn einhver hafa a breyting í þessa línu?
Flest af þessari línu er fullkomlega rétt.
Er það annar samlagning?
Getum við skipta eitthvað út fyrir n að gera þessa línu svolítið betur?
Mm-HM?
>> STUDENT: Getur þú frumstilla breytu eins lengd til N sem mun þá vera notaður
síðar í aðgerðina?
>> JASON Hirschhorn: Svo frumstilla A breytilegri lengd á móti n,
og við notum það síðar?
En þá erum við að uppfæra bara lengd og viljum vér enn að keyra inn í þetta vandamál þar sem við
skera niður lengd vandamál okkar, en við vitum aldrei hvar, reyndar,
að lengd kort á.
>> STUDENT: Er ekki að fara að gerast síðar þegar þú ert að segja, leita til vinstri,
leita rétt?
Þú ert að fara að fara til annars svæði, -
>> JASON Hirschhorn: Við erum að fara að fara á svæði, en hvernig vitum við
sem eru að fara að?
Ef við höfum aðeins array og þetta n, hvernig vitum við hvar á að
Flýtival í array.
Í bak, já?
>> STUDENT: Áttu, eins og lægri bundið og efri bundið breytu eða
eitthvað svoleiðis?
>> JASON Hirschhorn: OK.
Svo er þetta önnur hugmynd.
Frekar en bara að halda utan um stærð, að halda við utan um neðri og
efri breytu.
Svo hvernig gera við að reikna út stærð frá lægri bundinn og efri?
>> [INTERPOSING raddir]
>> JASON Hirschhorn: Frádráttur.
Og einnig að halda utan um sem lægra bundið og efri bundið að láta okkur vita,
erum við að leita þessar tvær?
Erum við að leita þessar tvær hérna?
Erum við að leita á miðju tvær?
Líklega ekki miðja tvö, því þetta, í raun, er tvöfaldur leit.
En nú munum við vera fær til fá the stærð, en einnig marka fylkisins.
Í raun, ef við höfum risastór okkar símaskrá, rífa við það í tvennt.
Við vitum nú hvar þessi minni Síminn er bókin.
En við erum í raun ekki stórfínn Síminn bók í tvennt.
Við þurfum samt að vita hvar ný mörk af vanda okkar er.
Hefur einhver hefur einhverjar spurningar um það?
Já?
>> STUDENT: Myndi það vinna með því að skapa breytu, ég, að þú þá bara að skipta
stöðu I miðað við sínum núverandi stöðu, og lengd, n?
>> JASON Hirschhorn: Og hvað er ég?
>> STUDENT: Eins og ég sé eins konar -
Eins og þú vilt frumstilla ég að vera miðju stöðu vektorsins.
Og þá, ef gildi í stöðu i í um miðja array í ljós að
vera minna en gildið sem þú þarft, ég nú verður lengd fylkisins, auk
gildi i deilt með 2.
Eins, sjá, skipta þér i -
>> JASON Hirschhorn: Hægri.
>> STUDENT: - allt að því -
>> JASON Hirschhorn: Þannig að ég er næstum jákvæð sem vilja vinna.
En punkturinn vera, þú þarft tvo stykki af upplýsingar hér.
Þú getur gert það með upphaf og enda, eða þú getur gert það með stærð, og þá
sumir merkið.
En þú þarft tvo stykki upplýsinga hér.
Þú getur ekki fá með með bara einn.
Er að vit?
>> Þannig að við ætlum að fara í gegnum, og við erum að fara að gera [inaudible]
og búa sumir merki.
Svo Hvað þú skrifar í kóðanum þínum?
>> STUDENT: Ég bara sagði INT bundið einn er jafnt og 0.
>> JASON Hirschhorn: Við skulum kalla sem int hefst.
>> STUDENT: OK.
>> JASON Hirschhorn: Það gerir meira vit fyrir mig.
Og?
>> STUDENT: Ég sagði, að ég held, int endar.
>> JASON Hirschhorn: int lýkur.
>> STUDENT: Ég held, n mínus 1, eða eitthvað svoleiðis.
Eins, síðustu þáttur.
>> JASON Hirschhorn: Svo þú skrifar, int sem hefst jafngildir 0, semikommu, og INT
endingunni jafngildir n mínus 1, semíkommu.
Svo í raun, hvað við erum að gera hér, 0 fyrstu stöðunni.
Og eins og við vitum í fylki, gera þeir fara ekki upp til n, fara þeir upp til n mínus 1.
Þannig að við höfum nokkrar mörk fylking okkar.
Og þessar fyrstu mörk verður að vera fyrstu mörk af vanda okkar.
OK.
Svo hljómar það vel.
Þá ef við förum aftur í þessa línu, en lengd listanum er hærri en 0,
hvað, í stað þess sem í eru N, ættu við að setja hér inn?
>> STUDENT: Skrifa endar mínus upphafi.
>> JASON Hirschhorn: Þó endar mínus byrjun er stærra en 0?
OK.
Og við gátum, ef við vildum gera það svolítið betur, hvað
annars getum við gert?
Ef við vildum að hreinsa þetta númer upp a hluti?
Hvernig getum við að losna við 0?
Þetta er bara stíll spurning.
Það er rétt núna.
>> STUDENT: Ending ekki jafnt upphafi?
>> JASON Hirschhorn: Við getum gert hvað?
>> [INTERPOSING raddir]
>> STUDENT: Ending er meiri?
>> JASON Hirschhorn: Já.
Við getum bara gert á meðan endar er meiri en í upphafi.
Rétt.
Við bættum farin að hinum megin um það, og við got losa af the 0.
Þannig að þetta bara lítur svolítið hreinni.
OK.
Svo, á meðan lengd lista er 0, skrifaði við að á meðan að binda enda er meiri
en byrja.
Við erum að fara að setja inn nauðsynlegar okkar hrokkið axlabönd, og þá the fyrstur hlutur
við viljum gera er að líta á þá í smá lista.
Þú?
Getur þú gefið mér -
>> STUDENT: Ef sviga gildi ferningur krappi -
>> JASON Hirschhorn: Ef sviga gildi ferningur krappi.
>> STUDENT: Ending deilt með 2.
>> JASON Hirschhorn: Ending?
>> STUDENT: Ég sé vandamál með þinn -
>> JASON Hirschhorn: OK.
Jæja, líta á miðjunni.
Hvernig vitum við hvað miðjunni er?
Já.
Svo láta mig eyða kóðann.
Hvernig vitum við hvað miðjunni er?
Í öllu, þegar þú hefur í upphafi og endirinn, hvernig gera þú finna
miðjunni?
>> STUDENT: Þú meðaltali.
>> STUDENT: þú bætir við þeim saman og síðan -
>> JASON Hirschhorn: Bæta þeim saman og síðan?
>> STUDENT: Og þú að meðaltali.
Deila því með 2.
>> JASON Hirschhorn: Bæta þeim saman og deila með 2.
Svo jafnt Int miðja?
Tom, getur þú gefið mér það?
>> STUDENT: Frá plús lýkur -
>> JASON Hirschhorn: Upphaf plús lýkur.
>> STUDENT: All, krappi, deilt með 2.
>> JASON Hirschhorn: Allt í sviga, deilt með 2.
Svo gefur það mér á miðju um neitt, rétt?
>> STUDENT: Þú þarft einnig að umferð það upp.
>> JASON Hirschhorn: Hvað heldur þú meina, ég þarf að umferð það upp?
>> [INTERPOSING raddir]
>> STUDENT: Vegna þess að ef það er undarleg tala, þá er það eins -
>> JASON Hirschhorn: Jæja, OK.
Svo ég gæti umferð það upp.
En ef það er oddatala, 5, ég get taka 1 burtu frá miðju.
Eða ef það er slétt tala, heldur það er betra að ræða.
Ef það er 4, höfum við aðeins 4, get ég tekið fyrsta "miðju", vitna, unquote eða
annað "miðju" einn.
Annaðhvort vildi vinna fyrir tvöfaldur leit, svo ég get ekki raunverulega þörf til að umferð það.
En það er einn annar hlutur sem ég þarf að líta á þessari línu.
Við gætum ekki grein fyrir því ennþá, en við munum koma aftur til það.
Vegna þessa línu í raun enn þarf einn annar hlutur.
>> En svo langt, við höfum skrifað fjórar línur af kóða.
Við höfum fengið upphaf okkar og endar merkjum.
Við höfum meðan lykkja okkar, sem hringja með á beint sauðakóðanum.
Við erum að horfa á miðjunni sem Landakort beint á sauðakóðanum.
Ég myndi segja að þetta fer í miðju af listanum, þetta lína af kóða.
Og þá, þegar við förum í miðju lista, the næstur hlutur sem við þurfum að gera
er að athuga hvort gildi okkar er þar um að sauðakóðanum við skrifaði áðan.
>> Og hvernig eigum við að athuga hvort gildi okkar er á miðjum listanum?
Þú.
Af hverju ertu ekki að gera þetta?
>> STUDENT: Ef gildi er okkar í miðjunni er jafnt og
hvað við setjum -
Ég meina jafn jafn -
>> JASON Hirschhorn: Það -
OK.
>> STUDENT: Ég er ekki viss um hvað breytu við erum að leita
fyrir þó, er vegna þess að -
>> [INTERPOSING raddir]
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Einmitt.
Per virka yfirlýsingu, við erum að leita að verðmæti.
Þannig að við erum að leita að verðmæti í fjölda gildum.
Svo þú ert alveg rétt.
Þú verður að gera, ef opin paren gildi krappi miðja lokað krappi jafn
jafnt gildi, og þarna inni hvað þurfum við að gera?
Ef gildi er okkar þar, hvað þurfum við að gera?
>> [INTERPOSING raddir]
>> STUDENT: Return núll.
>> JASON Hirschhorn: Return satt.
>> STUDENT: Return satt.
>> JASON Hirschhorn: Michael, hvað er þetta lína gera?
>> STUDENT: [inaudible] forritið hefur keyrt auðvitað sitt, og það er yfir, og
þú hefur það sem þú þarft að gera?
>> JASON Hirschhorn: The program eða hvað?
Í þessu tilviki?
>> STUDENT: Fallið.
>> JASON Hirschhorn: Fallið.
Og svo, til að fara aftur til hvað heitir það og gefa því gildi, satt.
Nákvæmlega rétt.
Main.
Hvað er aftur tegund af helstu, Michael?
>> STUDENT: INT, heiltala?
>> JASON Hirschhorn: INT, einmitt.
Heiltala.
Það var bara spurning til að tryggja þú krakkar hafa verið ofan á það.
Hvað þýðir það aftur venjulega, ef allt er að vinna vel?
>> STUDENT: Zero.
>> JASON Hirschhorn: Zero.
Nákvæmlega rétt.
>> STUDENT: Ef þetta bara skilar satt, það er engar upplýsingar verið gefin
um hvað -
Ó, þetta er bara að segja að þessi gildi er inni í array.
>> JASON Hirschhorn: Einmitt.
Þetta forrit er ekki að gefa upplýsingar hvar nákvæmlega gildið er.
Það er bara að segja, já, fannst við það, eða nei, höfum vér ekki fundið það.
Þannig að ef númerið finnst, aftur satt.
Ja, reyndar við gerðum bara það virkilega fljótt með þeim eina línu af kóða.
Þannig að ég ætla að færa þá línu sauðakóðanum.
>> STUDENT: Eigum við ekki að þurfa að breyta array?
Það ætti að vera gildi, ekki gildi, ekki satt?
>> JASON Hirschhorn: Því miður.
Þakka þér.
>> STUDENT: Já.
>> JASON Hirschhorn: Þessi lína ætti að vera gildi.
Nákvæmlega rétt.
OK.
Þannig að við höfum horft á miðjum listanum.
Ef fjöldi fannst aftur satt.
Endurmenntun á með sauðakóðanum, ef miðja er meiri, leita eftir.
Svo ég hafði í hér, ef fjöldi hærri, leita eftir.
Constantine, getur þú gefið mér þessa línu af kóða?
>> STUDENT: Ef verðmæti miðju -
>> JASON Hirschhorn: Svo ef gildi -
ef opinn paren gildi krappi miðja loka krappi -
>> STUDENT: Er minni en virði?
>> JASON Hirschhorn: Er minna en.
>> STUDENT: Minna en gildi.
>> JASON Hirschhorn: Value.
Ja, reyndar, þú vilt athuga hvort tala -
Sorry.
Þetta er svolítið ruglingslegt.
En annars ef fjöldi í miðja listanum er meiri.
>> STUDENT: Oh, OK.
>> JASON Hirschhorn: Ég breyta því.
Annars ef miðja er hærri, við vilt leita vinstri, OK?
Og hvað gerum við inni þetta ef ástand?
>> STUDENT: Get ég gert smá breytingar á ástand, breyta því að annað hvort?
>> JASON Hirschhorn: Annars ef?
OK.
Þannig að þetta númer mun framkvæma um það sama.
En ágætur hlutur óður í using ef annað ef, annars ef eða ef, annars ef, annars
þýðir að aðeins einn af þeim er að fara að vera merkt, ekki öll þrjú af þeim,
hugsanlega.
Og það gerir það svolítið ágætur á tölvu sem er
hlaupandi program.
>> Svo [? Constantine,?]
við erum innan þessa línu, annars ef gildi, krappi miðja nærri krappi
er meiri en gildi.
Hvað þurfum við að gera?
Við þurfum að leita til vinstri.
Hvernig gerum við það?
Ég ætla að gefa þér að byrja.
>> Við höfum þessa tvo hluti sem kallast upphaf og endir.
Svo þarf það að gerast að í upphafi?
Ef þú vilt leita að vinstri á lista, fáum við núverandi upphaf okkar.
Hvað þurfum við að gera það?
>> STUDENT: Við settum í upphafi að miðju og 1.
>> JASON Hirschhorn: Svo ef við erum leita á vinstri?
>> STUDENT: Því miður, miðja mínus -
svo endirinn yrði miðja mínus 1 og byrjunin -
>> JASON Hirschhorn: Og hvað gerist í upphafi?
>> STUDENT: Það dvöl the sami.
>> JASON Hirschhorn: Svo merkingu helst óbreytt.
Ef við erum að leita á vinstri, við erum með sömu byrjun -
nákvæmlega rétt.
Og endar?
Því miður, hvað þýðir endar jafnt aftur?
>> STUDENT: Mið mínus 1.
>> JASON Hirschhorn: Mið mínus 1.
Nú, hvers vegna mínus 1, ekki bara miðjunni?
>> STUDENT: The Middle er kominn úr mynd nú þegar, vegna þess að við höfðum
athugað að það er út?
>> JASON Hirschhorn: Það er nákvæmlega rétt.
Miðjunni er út úr myndinni.
Við skoðuðum nú á miðju.
Þannig að við viljum ekki "miðju", vitna unquote, að halda áfram að vera í
array sem við erum að leita.
Þannig að þetta er frábær.
>> Annars ef gildi krappi miðja er meiri en gildi endar jafn
miðja mínus 1.
Jeff, hvað um þennan síðasta lína?
>> STUDENT: Else.
Values ​​miðja er minna en gildi?
>> JASON Hirschhorn: Við munum þú ert að gefa mér annað.
Þannig að ef þú gefur mér ekki -
>> STUDENT: Svo byrja væri miðja auk 1.
>> JASON Hirschhorn: Upphafið jafnfætis miðja auk 1, aftur, fyrir sama
Ástæðan fyrir því að Constantine gaf okkur áðan.
Og í lok, sem hefur ekki gefið mér línu af kóða enn?
Return false, Aleha, hvað gera við að skrifa hér?
>> STUDENT: return false.
>> JASON Hirschhorn: return false.
Og við þurfum að gera það, vegna þess að ef við ekki finna það, þurfum við að segja að við
fundum hann ekki.
Og við sögðum að við erum að fara að skila bool, þannig að við höfum ákveðið að fara aftur
A bool einhvers staðar.
>> Svo skulum hlaupa þennan kóða.
Ég er reyndar að fara til -
þannig að við erum í flugstöðinni.
Við munum hreinsa gluggann okkar.
Skulum gera allt.
Við fundum það er ein villa.
Það er villa á línu 15, vænta semíkommu í lok á
yfirlýsingu.
Og hvað gerði ég gleymi?
>> STUDENT: semíkommu.
>> JASON Hirschhorn: semíkommu rétt upp hér.
Ég held það hafi kóða Tom '.
Svo Tom, [inaudible].
Bara að grínast.
Skulum gera allt aftur.
>> STUDENT: Hvað Dropbox möppu ættum við að vera í fyrir þetta?
>> JASON Hirschhorn: Svo þú getur bara horfa á þessa hluti.
En aftur, ef þú vildir að færa þetta kóða í pset3 möppuna til að reyna
það út, það er það sem ég gerði.
Ef þú munt taka eftir hér - Því miður, góð spurning.
>> [? LS,?]
Ég hef hér að find.c númer frá þessari viku afvegaleiða kóða.
Ég hef helpers.h.
Ég hef a gera skrá, sem ég reyndar breytt svolítið að fela þessar nýju
skrár sem við erum að skrifa.
Öll þessi merkjamál vilja vera til staðar, ekki dreifingu kóða, en nýja
Gera skrá, nýja helpers.h skrá vilja vera á netinu til niðurhals.
Aftur, svo þeir eru auka kóðar við höfum.
>> Svo gera allt, og á þessari línu, gerir að finna, tvöfaldur, kúla val - gerir
öll þrjú af þeim og safnar inn þetta executable kóða find.
Svo almennt, gera við viljum ekki til beint til check50.
Við viljum að hlaupa sumir próf á okkar eigin.
En bara svo við getum flýta þessa hluti, check50 2013 pset3.find mun líða
í helpers.c-- my bad.
>> Ég hef ekki núna.
Þannig að við erum í raun að fara að keyra kóða fyrir alvöru.
Usage.find /, þú veist hvað það þýðir?
>> STUDENT: Þú þarft sekúndu stjórn lína á það.
>> JASON Hirschhorn: Ég þarf annað stjórn lína.
Og á forskrift, ég þarf til að slá inn það sem við erum að leita að.
Svo skulum líta á 42.
Við munum halda því í raðað, vegna þess að við hef ekki skrifað upp flokkunarkóða virka ennþá -
42, 43, 44.
>> Og Control D fann ekki nál í Heysátan.
Það er slæmt.
Það er ákveðið það.
Skulum reyna eitthvað annað.
Kannski er það vegna þess að ég setti það í upphafi.
>> Skulum gera 41, 42, 43.
Svona.
Það fann það.
Skulum setja það í lok núna, bara svo við getum verið ítarlegur -
40, 41, 42.
Fann ekki nál.
Svo ég nefndi þetta áðan.
Því miður, ég vissi þetta var að fara að gerast.
>> En fyrir kennslufræðilegum tilgangi, það er gott að kanna það.
Það virkar ekki.
Fyrir sumir ástæða, það geta ekki fundið það.
Við vitum hvað er í það, en við erum ekki að finna það.
Svo eitt sem við gætum gert er að fara í gegnum GDB að finna það, en ekki neinn,
án þess að fara í gegnum gdb, hafa tilfinningu hvar við ruglaður upp?
[? Madu? ?]
>> STUDENT: Ég held að það gæti verið þegar endar er jafn upphafi, og það er
bara einn-þáttur lista.
Þá hunsar hann bara í staðinn í raun og veru stöðva það.
>> JASON Hirschhorn: Það er nákvæmlega rétt.
Þegar endirinn jafngildir upphafi, gera við enn hafa stak í listanum okkar?
>> STUDENT: Já.
>> JASON Hirschhorn: Já, í raun, við hafa einn og aðeins einn þáttur.
Og það mun líklega gerast þegar, á kóða við prófað, erum við í
framan Heysátan eða á í lok Heysátan.
Það er þar sem upphaf og endir er að fara til jafn
einn, með tvöfaldur leit.
Svo í þessum tveimur tilfellum virkaði ekki, því að binda enda var jöfn upphafi.
>> En ef endirinn er jafn upphafi, hefur þetta á meðan lykkja framkvæma?
Það gerir það ekki.
Og við hefðum getað athugað sem aftur gegnum gdb.
Og hvernig getum við lagað þennan kóða, því þegar á meðan að binda enda á er jafn
upphafi, viljum við einnig þetta en lykkja að keyra.
>> Svo hvað festa getum við gert til að línu 18?
>> STUDENT: [inaudible] er meiri en eða jafnt og.
>> JASON Hirschhorn: Einmitt rétt.
Þó að endar er meiri en eða jafnt og upphafi.
Svo nú, gera við viss um að fá að Corner case í lokin.
Og við skulum sjá.
Skulum keyra þessa einu sinni enn.
>> Skulum gera allt.
Aftur, þú þarft bara að fylgja eftir hér.
Finna 41 að þessu sinni.
Bara að halda það stöðug.
>> Finna 42.
Skulum setja það í upphafi -
42, 43, 44.
Við fundum það.
Svo sem var örugglega breyting við þurftum að gera.
>> Það var mikið af forritun vér bara gerði, tvöfaldur leit.
Hefur einhver hefur einhverjar spurningar áður en Ég flyt á í línum við skrifuðum í
Tvíundarleit eða hvernig við mynstrağur hvað við gerðum reikna út?
Áður en við fara, ég vil líka að benda út að með því og stór, varpað við
okkar gervi-kóða einn til einn á númerið okkar.
>> Við gerðum hafa þessi erfiður hlutur að reikna út með
upphaf og endir.
En hefði þér ekki mynstrağur það út, sem þú hefði skrifað ansi mikið
eins númer, spara fyrir þessum efstu tveimur línum.
Og þá hefði veruleika þegar þú gerðir það í eftirlits og málum sem
þú þarft eitthvað annað.
Svo jafnvel ef þú hefðir fylgt okkar gervi-kóða línu til línu, myndi þú hefur
fengið allt en tvær línur af kóða sem þú þarf að skrifa.
>> Og ég væri til í að veðja að þú krakkar hefði allt mynstrağur það út
nokkuð fljótt, að þú þurftir að setja einhvers konar merki í það að reikna
út hvar þú varst.
Að aftur, er kraftur gera Gervi-kóðann til batnaðar.
Svo við getum gert rökfræði fyrst, og þá getum við áhyggjur af setningafræði.
>> Við höfðum verið ruglað saman um rökfræði en að reyna að skrifa þennan kóða í C,
við hefðum fengið allt boðberi upp.
Og þá erum við myndum vera að spyrja spurninga um rökfræði og setningafræði og ánetjun
þá alla saman.
Og við hefðum villst í hvað getur fljótt orðið
mjög erfitt vandamál.
Svo skulum fara nú að val tagi.
>> Við höfum 20 mínútur eftir.
Þannig að ég hef á tilfinningunni að við munum ekki vera fær um að komast í gegnum öll val tagi
og kúla tegund.
En við skulum að minnsta kosti tilraun að klára val konar.
Svo innleiða úrval konar nota eftirfarandi aðgerð yfirlýsingu.
>> Aftur, þetta er tekið úr Heimadæmi forskrift.
Int gildi er sviga, er fylki heiltalna.
Og int.n er stærð sem fylki.
Val tagi er að fara að raða þessu fylki.
>> Svo á andlegu fyrirmynd okkar val raða, draga við að -
fyrst förum við í gegnum listann í fyrsta tíma, finna minnsti fjöldi,
setja það í upphafi, finna annað Minnsta númer, setja það í
önnur staða ef við viljum Raða í hækkandi röð.
Ég ætla ekki að neyða þig til að skrifa Gervi-númer núna.
>> En áður en við gerum kóðann sem tegund í fimm mínútur, og við erum að fara að skrifa
gervi-kóða svo að við höfum eitthvað vit þar sem við erum að fara.
Svo reyna að skrifa gervi-kóða á eigin spýtur.
Og þá reyna að snúa því gervi-kóða inn kóðann.
Við munum gera það sem hópur í fimm mínútur.
>> Og auðvitað, láttu mig vita ef þú hefur einhverjar spurningar.
>> STUDENT: Að það?
>> JASON Hirschhorn: Sjá hversu langt þú hægt að fá í tveimur fleiri mínútur.
Ég skil að þú munt ekki að vera fær um að klára.
En við munum fara yfir þetta sem hópur.
>> Þú ert allt erfðaskrá svo [inaudible], þannig að ég er leitt að gera hlé hvað þú ert að gera.
En við skulum fara í gegnum þetta sem hópur.
Og aftur, tvöfaldur leita, þú gefa allt mér eitt ef ekki fleiri línur af kóða.
Þakka þér fyrir það.
Við erum að fara að gera það sama hér, númer saman sem hópur.
>> Svo val Raða - við skulum skrifa sumir fljótur gervi-kóða.
Per andlegu fyrirmynd, getur einhver gefið mér Fyrsta lína af gervi-kóða, vinsamlegast?
Hvað vil ég að gera?
>> STUDENT: Þótt listinn er út af röð.
>> JASON Hirschhorn: OK, en listinn er út af röð.
Og hvað áttu við "úr röð?"
>> STUDENT: Þó [inaudible]
hefur ekki verið flokkaður.
>> JASON Hirschhorn: Þótt listinn er út af röð, hvað gerum við?
Gefa mér í annarri línu, vinsamlegast, Marcus.
>> STUDENT: Svo finna næsta Minnsta fjölda.
Þetta verður inndreginn.
>> JASON Hirschhorn: Svo finna Næsta minnsti fjöldi.
Og þá einhver annar?
Þegar við finnum næsta minnstu númer, hvað gerum við?
Ég ætla að segja finna minnsti fjöldi.
Það er það sem við viljum gera.
>> Svo finna minnsti fjöldi.
Þá hvað gerum við?
>> STUDENT: [inaudible] að upphafi.
>> JASON Hirschhorn: Fyrirgefðu?
>> STUDENT: Settu það í upphafið af listanum.
>> JASON Hirschhorn: Svo að setja hana í upphaf listanum.
Og hvað gerum við til þings sem var í upphafi
af listanum, ekki satt?
Við erum að skrifa yfir eitthvað.
Svo ef við setjum það?
Já, Anna?
>> STUDENT: Hvar minnstu tala var?
>> JASON HIRSHHORN: Svo setti í upphafi af listanum þar sem
minnsti fjöldi var.
Svo á meðan listinn er út af röð, finna minnsti fjöldi, setja hana í
upphaf listanum, setja upphafið af listanum þar sem
minnsti fjöldi var.
Marcus, getur þú umorða þessa línu en listinn er út af röð?
>> STUDENT: Þó tölurnar hafa ekki verið raðað?
>> JASON HIRSHHORN: í lagi, svo í því skyni að vita að tölurnar hafi ekki verið
raðað, hvað þurfum við að gera?
Hversu mikið þurfum við að fara í gegnum þennan lista?
>> STUDENT: Svo ég giska á fyrir lykkja, eða á meðan, á meðan tölur merkt er minna
en lengd listanum?
>> JASON HIRSHHORN: OK, það er gott.
Ég held að ég misphrased spurning mín illa.
Ég var bara að reyna að komast á við erum að fara til verða að fara
í gegnum alla lista.
Svo á meðan listinn er út af röð, fyrir mig, er erfitt að kortleggja á.
En í grundvallaratriðum, það er hvernig Ég hugsa um þetta.
Fara í gegnum allan listann, finna Minnsta númer, setja hana í
hefst - í raun, þú ert rétt.
Skulum setja þá báða.
>> Svo á meðan listinn er út af röð, við þarf að fara í gegnum allan listann
einu sinni, finna minnstu númer, settu það í upphafi listanum, setja
upphaf listanum þar sem Minnsta fjölda var, og þá, ef
Listinn er enn út af þess, að við höfum fékk að fara í gegnum þetta
ferli aftur, ekki satt?
Þessi 'hvers vegna val tagi, Big-Ö afturkreistingur val tagi, einhver?
>> STUDENT: n veldi.
>> JASON HIRSHHORN: n veldi.
Því eins og Marcus og ég áttaði bara Hér erum við að fara til verða að
Fara í gegnum listann lista fjölda skipta.
Svo fara í gegnum eitthvað af lengd n n fjöldi af sinnum
er í raun n veldi.
>> Svo er þetta sauðakóðanum.
Þetta lítur mjög vel út.
Hefur einhver hefur einhverjar spurningar um sauðakóðanum?
Því í raun val Raða ætti sennilega koma 1-1, kóða frá
sauðakóðanum.
Svo einhverjar spurningar um rökfræði sauðakóðanum?
Vinsamlegast biðja hana núna.
>> Val tegund - en listinn er út röð, við erum að fara að fara í gegnum það
og finna minnstu hvert sinn og setja það í framan.
Svo á meðan listinn er út af röð, getur einhver gefa mér þessi lína af kóða sem
hefur ekki gefið mér línu af kóða enn, vinsamlegast?
Það hljómar eins og hvað?
>> STUDENT: Það er til hliðar.
>> JASON HIRSHHORN: Það hljómar eins for lykkju.
OK, getur þú gefið mér for lykkjunnar?
Fyrir -
>> STUDENT: i Jafnt 0.
>> JASON HIRSHHORN: i eða -
hvað erum við að vantar?
Hvað gengur hérna?
>> STUDENT: Int.
>> JASON HIRSHHORN: Einmitt.
(Int i = 0; -
>> STUDENT: i <n, ég + +).
>> JASON HIRSHHORN: neglt það, Jeff.
Við erum að fara í gegnum listann, ekki satt?
Við höfum séð að númerið áður.
Fullkominn.
Svo skulum við setja hrokkið axlabönd okkar hér.
Ég ætla að setja nokkrar hrokkið axlabönd hér.
>> Svo á meðan það er 0, þurfum við að fara í gegnum allt listanum.
Svo í hvert sinn sem við förum í gegnum listann, Hvað viljum við að halda utan um?
>> STUDENT: Ef einhver skiptasamninga eru gerðar.
>> JASON HIRSHHORN: Finna minnsti fjöldi.
Svo við ættum líklega að halda utan um minnsti fjöldi í hvert skipti.
Svo lína get ég gert til að halda utan af minnsti fjöldi?
Aleha, hvernig get ég haldið lag um eitthvað?
>> STUDENT: Hefja nýja breytu.
>> JASON HIRSHHORN: Hefja nýja breytu.
Svo skulum við búa til breytu.
Hvaða tegund?
>> STUDENT: Int.
>> JASON HIRSHHORN: Int.
Við skulum kalla það minnstu.
Og hvað þýðir það jafnháar þegar við erum bara að byrja út?
Við höfum ekki farið í gegnum listann ennþá.
Við erum í fyrsta hluta lista í fyrsta skipti okkar í gegnum.
Hvað er það jafnir, minnsti fjöldi?
>> STUDENT: Gildi i.
>> JASON HIRSHHORN: Gildi i.
Sem hljómar nákvæmlega rétt, ekki satt?
Minnsta fjölda í upphafi er þar sem við erum.
Svo nú höfum við minnstu okkar, og við þurfum að fara í gegnum allan listann og
bera þetta minnstu að allt annað.
Svo eigum við að fara í gegnum listann aftur?
Michael?
>> STUDENT: Þú þarft að gera annar fyrir lykkju.
>> JASON HIRSHHORN: Annar for lykkju.
Við skulum gera það.
Gefa mér nokkur númer.
>> STUDENT: Fyrir Loop -
fyrir minnstu -
bara int j, þú gætir sagt?
= 0; þannig að -
>> JASON HIRSHHORN: Jæja, ef við viljum að fara í gegnum allan listann -
>> STUDENT: J <n, J + +).
>> JASON HIRSHHORN: Frábær.
Við ætlum að fara í gegnum for lykkjunnar aftur.
Og hvernig eigum við að finna minnsti fjöldi?
Tom?
Við höfum núverandi minnsti fjöldi, svo hvernig eigum við að finna nýja minnstu?
>> STUDENT: Við getum athugað hvort minnstu fjöldi sem við höfum er meiri en
gildi BRACKET j.
>> JASON HIRSHHORN: Svo ef minnstu er meiri en gildin krappi j.
Þannig að ef núverandi minnstu okkar er meiri en -
Ég ætla að færa þessar tvær línur af kóða þarna úti fyrir sekúndu.
Því áður en við gerum allir Makaskipti, við þarf að fara í gegnum allan listann.
Þannig að þetta sauðakóðanum ætti í raun vera utan að innri for lykkju.
Svo fara í gegnum allan listann.
Ef lægsta er meiri en gildi J hvað þá?
>> STUDENT: Þá minnstu jafngildir gildin j.
>> JASON HIRSHHORN: Frábær.
Einn fljótur spurning -
í fyrsta skipti sem við förum í gegnum þessa lykkju, Ég er að fara til að jafna 0, J er að fara
að jafna 0 þegar við fáum hér.
Þannig að við erum að fara að bera saman tala við sig.
Er það duglegur?
Nei, það er ekki mjög duglegur.
Svo er J okkar þurfa að fara frá 0 til N í hvert skipti?
Þurfum við alltaf að athuga gegnum allan listann?
[Inaudible]?
>> STUDENT: Byrja með i staðinn.
>> JASON HIRSHHORN: G geti byrja með hvað?
>> STUDENT: i.
>> JASON HIRSHHORN: J getur byrjað með i.
Svo nú erum við bera byrja með einn við erum á.
En jafnvel þá, er að eins skilvirkt og mögulegt er?
>> STUDENT: i + 1.
>> JASON HIRSHHORN: i + 1 virðist vera skilvirkt, vegna þess að við
þegar hafa i.
Við erum þar sem fram kemur að eftir því sem minnsti í línu 15.
Við ætlum að byrja með Næsta einn sjálfkrafa.
Svo við förum í gegnum for lykkjunnar.
Við munum fara í gegnum hvert skipti.
Við munum fara í gegnum a tala af sinnum.
Nú höfum við fengið í gegnum Þessi innri for lykkju.
Við höfum minnstu gildi vistar.
Við þurfum að setja það á upphafið af listanum.
Og hvernig geri ég setja það á upphafið af listanum?
Hvað er breyta sem vísar til byrjun listanum?
Við erum í þessu úti fyrir lykkju, svo hvað er átt við að
upphafið af listanum?
>> STUDENT: Gildi i.
>> JASON HIRSHHORN: Einmitt rétt.
Gildi ég er upphafið af -
eða hryggur, ekki byrjunin.
Það var ruglingslegt.
Það er þar sem við erum í upphafi er óflokkað hluti á listanum.
Svo metur i.
Og hvað þýðir það jafnt?
>> STUDENT: Minnst.
>> JASON HIRSHHORN: Gildi ég jafnt hvað?
>> STUDENT: Minnst.
>> JASON HIRSHHORN: Minnst.
Nákvæmlega rétt.
Þannig að við erum að setja það í upphafi af listanum, og nú þurfum við að setja
upphaf listanum þar minnsti fjöldi var.
Svo hvernig skrifa ég þar minnsti fjöldi var?
Gildi af hverju?
>> STUDENT: 0.
>> JASON HIRSHHORN: The Small fjöldi er á 0?
>> STUDENT: Já.
>> JASON HIRSHHORN: Hvað ef minnstu tala var í lok
þetta óflokkað lista?
>> STUDENT: Því miður, hver var spurningin?
>> JASON HIRSHHORN: Hvar er minnsti fjöldi?
Við tók minnstu og setja það á upphafi, með þessari línu hérna.
>> STUDENT: Það ætti að hafa verið geymd í sumum -
>> STUDENT: Gildi j.
>> JASON HIRSHHORN: Jæja, það er ekki endilega gildi j.
Það skiptir ekki einu sinni til á þessum tímapunkti.
>> STUDENT: Þú þarft að lýsa breytu fyrr og
þá framselja það til -
þegar þú finnur minnsti fjöldi, úthluta vísitölu af þeim fjölda til
einhverju breyta eða eitthvað svoleiðis.
>> JASON HIRSHHORN: Svo getur þú segir þetta aftur?
>> STUDENT: Svo hvar sem þú lýst int Minnsta, ættir þú einnig að lýsa int
Minnsta vísitölu = i, eða eitthvað svoleiðis.
>> JASON HIRSHHORN: Svo þar sem ég int minnsta, ætti ég ekki bara að halda utan
af verðmæti en staðsetning.
INT smallest_location = í þessu tilfelli, munum við bara gera i.
Við þurfum að vita hvar það er.
Við fengum að lokum númerinu, og við áttaði við höfðum ekki hugmynd um hvar það var.
Og svo aftur, við erum kortlagning þetta á 0:59.
Þú krakkar erfðaskrá þetta á eigin vilja sennilega fá til sömu vandamál.
Hvernig Heck finn ég það?
Og þá þér grein fyrir, bíddu, ég þurfa að halda utan um það.
>> Þannig að ef minnstu er meiri en gildi j.
Við setjum minnstu jafngildir gildum j.
Hvað annað þurfum við að breyta?
Constantin, hvað annað gera við þurfum að breyta?
>> STUDENT: Staðsetningin.
>> JASON HIRSHHORN: Einmitt.
Svo gefa mér þessi lína í kóða.
>> STUDENT: smallest_location = j.
>> JASON HIRSHHORN: Einmitt.
Og svo niður í lokin, ef við viljum setja upphafið af listanum þar
minnsti fjöldi var, hvernig eigum við vísa til þar sem
minnsti fjöldi var?
Marcus?
>> STUDENT: Minnsta tala var sem staðsett er á minnstu stað.
>> JASON HIRSHHORN: Svo á gildum smallest_location.
Og hvað eigum við að setja þarna?
Upphafi lista, hvað er það?
>> STUDENT: Jæja, eigum við ekki raunverulega vita aftur því við overwrote.
Svo það er skipst stöðum af þessum tveimur línum?
Ef þú skiptir þeim tvær línur í kring.
>> JASON HIRSHHORN: OK, svo við gerum ekki lengur, vegna þess að við höfum endurstilla línuna
áður gildum i til minnstu.
Svo við misstum að fyrstu gildi.
Svo þú segir skipti þessar tvær línur.
Svo nú setja upphafið af listanum þar sem minnsti fjöldi var.
Svo smallest_location jafngildir gildi i.
Sem er að flytja í byrjun þessa óflokkað hluti af listanum til
Minnsta staðsetningu.
Og síðan inn gildum ég að við erum að flytja að minnsta talan.
>> Er að skynsamleg hvers vegna við þurfti að gera það skipti?
Við hefðum skrifað að gildi - Annar hlutur þú vildi sennilega hafa
mynstrağur út og finna í landsframleiðslu.
Þannig að við höfum gætt af allt sauðakóðanum.
Er eitthvað annað sem við þarf að skrifa hér?
Getur einhver hugsa um neitt?
>> STUDENT: Hvernig veistu þegar þú ert búinn?
>> JASON HIRSHHORN: Hvernig eigum við vita þegar við erum búin?
Frábær spurning.
Svo hvernig vitum við þegar við erum búin.
>> STUDENT: Búa til breytu til að halda telja um ef það er skipti á eða ekki
og fara í gegnum skarðið.
>> JASON HIRSHHORN: OK.
Sem myndi vinna í kúla tagi.
En fyrir val tagi, ef við gerum ekki gera skipti, sem gæti bara verið
vegna minnstu gildi er í það rétta staðsetningu hennar.
Við gætum hafa lista 1, 2, 4, 3.
Í annað sinn í gegnum vér mun ekki gera neinar skiptasamninga.
Við munum vera á númer 2, en við munum þurfa enn að halda áfram.
Svo þurfum við að halda utan um hvenær við erum búin, eða viljum við bara að fara
þar til þetta er búið?
>> STUDENT: Við getum bara farið þangað til það er búið.
>> JASON HIRSHHORN: Við getum bara fara þar til þetta er búið.
Í kúla tagi, þú ert nákvæmlega rétt, Jeff og Aleha, með lausn þína -
það er frábært að halda utan um hversu margir skiptasamningar þú gerðir, því að í kúla
raða, ef þú gerir í raun gera ekki skiptasamninga, þú ert búin og þú getur kannski skera þinn
vandamál niður hluti.
En fyrir val tagi, hefur þú virkilega fékk að fara í gegnum til the endir af the
í hvert sinn í kring.
>> Svo er þetta sem.
Við höfum tvær mínútur eftir.
Skulum gera allt.
Leyfðu mér bara að opna finna hér og gera viss um að ég er í raun að kalla upp -
Ég er ekki að boða kúla konar.
Skulum breyta þessu til val tagi.
gera allt. / finna.
Skulum finna 42.
Í þetta sinn ætlum við að standast óflokkað lista, vegna þess að það ætti að raða
fyrst á The finna númer - ætti að raða fyrst með sort fallið og þá
leita að einhverju.
Krossleggja fingur alla.
>> Ó góðvild mína.
Whoa, hjarta mitt var að berja.
Svo er það rétt.
Í staðreynd, ef við rann þetta meira mikið, kóðinn, eins langt og ég get
segja, er fullkomlega rétt.
Það eru nokkrar tillögur Ég myndi hafa fyrir þig.
Til dæmis, 15 og 16 virðast smá óþarfi.
Það virðist eins og þú ert ekki endilega þarf að vista bæði þeim.
Ef þú hefur minnstu staðsetningu, þér getur auðveldlega fundið minnstu gildi með
bara að slá gildi i.
>> Þannig að ef ég væri að flokka númerið þitt, sem ég mun í raun vera, myndi ég
líklega taka burt punkt ef þú með bæði af þessu, vegna þess að þú
þurfa ekki báðir þessir.
Ef þú ert með staðsetningu, þú getur mjög auðveldlega fá gildi.
Og það virðist svolítið undarlegt til að geyma þau bæði.
Kannski ekki einu sinni taka lið, en vissulega tjá sig að það er kannski
ekki stylistic val þú þarft að gera.
Auðvitað, kóðinn enn keyrir fullkomlega vel.
>> Svo því miður við gerðum ekki fá að kúla tagi.
Fyrirgefðu um það.
Við gerðum ljúka val konar.
Hefur einhver hafa allir endanlega spurningar um val konar?
>> OK, áður en við förum, ég vil þig að opna Chrome vafrann.
Því miður, það var bara blygðunarlausa stinga fyrir eina tegund af vafra.
Þú getur opnað upp hvaða gerð af vafra, en það mun sennilega vera Chrome.
Og fara að þessu eftirfarandi vefsíðu -
sayat.me/cs50.
Ef þú ert ekki að slá inn í tölvunni þinni núna, þú ert greinilega
ekki að gera það, Tom.
>> Og vinsamlegast gera það annað hvort rétt nú eða í næsta tíma -
gefa mér athugasemdir.
Þetta er aðeins hluti tvö.
Við höfum mörg fleiri saman, þannig að ég hafa a einhver fjöldi af herbergi til að bæta.
Ég vonandi líka gerði nokkra hluti vel.
Svo er hægt að láta mér líða allt slæmt, en ef þú vilt einnig að gefa mér broskarl
andlit, ég vildi þakka það sem vel.
Fylla það inn
>> Og með einni mínútu eftir, sem var viku þrjú.
Ég standa út fyrir smá ef þú hefur einhverjar spurningar.
Ég mun sjá ykkur í fyrirlestur á morgun.