DAVID MALAN: Allt í lagi.
Svo er þetta CS50, og þetta er nú að byrja á viku þrjú.
>> Svo allt þar til nú, höfum við verið að skrifa forrit í C
að líta svolítið eitthvað eins og þetta hér.
Þannig að við höfum fengið nokkrar Mikil inniheldur að ofan.
Við höfum fengið int helstu, ógild, og þá eitthvað að gera í miðju,
sumir hluti af kóða inni þeirrar starfsemi.
En lykill hefur verið sú staðreynd að við höfum verið að segja ógilt hér.
Svo ógild, allan tíma, skilgreinir að þessi forrit þegar keyrt,
aðeins hægt að keyra í gegnum nafnið.
Þú getur ekki slá önnur orð eða tölur eftir nafni forritsins er þegar
keyra það.
Svo, til dæmis, ef forritið væri saman í skrá sem heitir halló,
þú gætir gert ./hello, en það er það.
>> Eina leiðin sem þú gætir leggja til þessarar áætlunar
er með því að kalla á aðgerð.
Til dæmis, hvað virka höfum við verið að nota svona langt
til að fá inntak frá notanda?
>> Áhorfendur: Fá band.
DAVID MALAN: Til að fá band, eða fá int, eða þú hefur séð aðra,
jafnvel ef þú hefur ekki notað þá enn, eins og fá löng, löng og þess háttar.
En geri ráð fyrir að við reyndar langar að byrja
skrifa forrit sem eru lítið meira fjölhæfur, og, hreinskilnislega, lítið meira
eins og skipanir sem þú hefur verið að fá, vonandi,
svolítið vanur.
Eins cd rúm Dropbox.
Þetta er að sjálfsögðu, breytingar möppuna, hrokafullur
þú ert á heimili John Harvard er skrá, til Dropbox möppu.
Á sama tíma, stjórn eins og þetta skapar nýja möppu sem heitir pset2,
eins og þú might hafa nú þegar eða mun brátt fyrir vandamál setja tvö.
Gerðu Halló, auðvitað, er stjórn sem byggir forrit sem heitir halló
úr skrá sem heitir halló punktur c.
Og í hvert af þessum tilvikum, nú höfum við haft
veita rök á svokölluðum stjórn lína, blikkandi hvetja,
þannig að gera veit hvað á að byggja, og svo að mkdir veit hvað mappa til að búa til,
og þannig að CD veit þar sem þú vilt fara.
En allt þar til nú, að halda við að segja sem helstu sjálfgefið virka þinn,
hefur ógilt tjáningu inni af þeim sviga,
sem þýðir að það Ekki er hægt að taka neinar rök.
>> Svo byrja í dag, hvað við erum að fara að gera
er, við erum að fara að byrja styðja hluti eins og þetta jafnvel.
Í staðreynd, í þessu tilfelli, sem þér ekki venjulega með höndunum tegund,
Gera hefur verið að gera þetta fyrir okkur, það eru ekki
einn en einn, tveir, þrír til viðbótar strengir eftir að forritið er heitir
clang.
Svo hvernig gera við að ná þessu?
>> Jæja, hefst í dag, í þeim tilvikum þar sem við viljum
að leggja í gegnum það svokallaða stjórn lína,
við erum að fara að byrja að bæta hér er það í yellow--
skipta ógilt með int argc kommu band argv opna krappi loka krappi.
Nú er þetta áhugavert fyrir a par af ástæða.
Einn, það er að fara að láta okkur skrifa forrit sem eru aðeins meira dynamic.
En meira compellingly, það er að fara að opna
nú samtal sem að hvað fylki getur raunverulega
að nota, fyrir það streng raunverulega er undir hetta,
fyrr en í næstu viku þegar við byrjum köfun í enn dýpra um hvernig vélin er
gera allt þetta stuff vinnu.
En nú skulum teikna, kannski mynd.
>> Þegar þú skrifar forrit með helstu lýst
á þennan hátt, þannig að helstu tekur tvær breytur, við int
and-- hvaða gögn tegund er annað rifrildi?
>> Áhorfendur: Array.
DAVID MALAN: Array.
Svo það lítur út við fyrstu sýn eins og það er band, en taka eftir hornklofum.
Muna síðasta skipti sem við kynnt hugmyndin um fylki.
Og fylki nota hornklofa í nokkra samhengi.
Þú gætir notað veldi sviga til að fara inn í array
og fá ákveðna einingu, eins og Bríkin 0 eða Bríkin 1 eða Bríkin 2.
En við sáum, ef stuttlega, í síðustu viku að þú líka
nota þessar hornklofum til lýsa stærð af fjölda,
ef þú veist fyrirfram hversu margir ints eða hversu margir strengir eða hvað sem þú
raunverulega vilt.
Svo kemur í ljós að það er þriðja samhengi hér
sem hefur enga tala inni af hornklofum.
Þegar þú tilgreinir, eins og ég hef hér, nafn eitthvað eins argv,
sem er bara fínt leið til að segja rök vektor, sem
er annar ímynda sér vegur af segja array af rökum,
opna krappi loka krappi bara þýðir að þú ert ekki endilega
vita fyrirfram hversu stór array er að fara að vera,
en þú veist það er að fara að vera fylki.
Svo ef þú veist ekki Fjöldi ekki setja það þar,
fyrir opinn krappi loka krappi þýðir að argv er ekki band,
en fylki af strengjum.
Svo setningafræðilega, ef þú hugsa til baka í síðustu viku,
það er mjög líkur til að segja eitthvað eins vaxtagr aldri opinn krappi,
og svo eitthvað eftir það.
Svo hvað þýðir þetta að líta út?
Við skulum teikna raunverulega mynd.
Svo þegar þú keyrir þetta forrit með Main hafa tvær breytur skilgreindar inni
af þeim sviga, þú meginatriðum hafa að minnsta kosti tvær klumpur
minni afhent til þín undir hetta.
Einn, sem ég ætla teiknar eins og þetta rétthyrningsins er að fara að vera kölluð argc.
Og rétt eins og a fljótur ágrip, hvað er gögn tegund argc?
Svo er það int.
Svo tala er að fara að fara í argc-- snýr
út stendur að fyrir rifrildi telja.
Á sama tíma, ég hef dregið argv sem fylki.
Og ég í raun ekki vita hversu lengi það er að fara að vera,
svo fyrir tilgangi í dag punktur punktur punktur.
Það gæti fengið af tiltekinni lengd.
En ég hef á myndinni hér að minnsta kosti fjórir ferhyrninga.
Svo argv klumpur af minni sem geymir band band band punktur punktur punktur,
og argc er bara einn klumpur af minni heiltala.
>> Svo nú skulum við vera svolítið nákvæmari.
Ef, þegar ég hef strengi í þessu fylki, sem heitir
argv, ég vil fá á þá sig, rétt eins og í síðustu viku,
við erum að fara að nota tákn eins argv krappi 0
til að fá það fyrsta sem fylki.
Argv krappi 1 til að fá Annað sem, og svo framvegis.
Lykillinn hér að við erum enn 0 indexed-- við erum enn að telja frá 0.
Svo nú skulum raunverulega setja eitthvað í þessu.
Ef ég væri að safna saman forrit sem heitir halló úr skrá sem heitir halló punktur c,
og þá er ég að keyra þessi forrit með punkti rista halló,
hvað gerir tölvuna mína, fartölvuna mína, líta út eins og undir hetta
í augnablikinu Ég keyrt punktur rista halló og ýttu á Enter?
Jæja, þetta er kannski hvað við gætum lýsa
sem efni tölvan þín er minni, eða RAM-- Random Access Memory.
Með öðrum orðum, the tölva, einhvern veginn fyrir þig dularfullur,
setur númer 1 í argc, AKA argcount, og það setur bókstaflega streng
./hello í argv krappi 0.
Ég hef ekki hugmynd, hreinskilnislega, hvað er í argv bracket 1 eða 2 eða 3,
vegna þess að ef notandi hefur ekki slegið neitt nema ./hello,
við erum að fara að gera ráð fyrir að þessar eru líklegust sorp gildi,
svo að segja.
Þeir klumpur af minni fyrir hendi, en það er ekki allt að okkur
að líta á þá, vegna þess að að argcount er aðeins einn.
>> Nú, á meðan, ef ég skrifa keyra annað forrit,
CD, sem er meira rétt að stjórn, í blikkandi prompt-- CD rúm
Dropbox-- þegar ég hlaupa að, í raun, þegar CD forrit er keyrt, argc,
inni minni tölvunnar minnar, er fyrir mest briefest annað númer 2.
Og þá hefur argv krappi o CD, argv krappi 1 hefur Dropbox,
og svo auðvitað stjórn lýkur, þannig að allir af þessum minni
meginatriðum fer í burtu og er notað fyrir eitthvað annað.
Og það er hvers vegna ég segi bara hættu annað.
>> Á sama tíma, ef við gerum mkdir pset2, myndin lítur nánast sama,
en með mismunandi strengi inni argv.
Ef ég clang þjóta halló halló punktur c, sama hugmyndin.
Meira efni er fyllt í fyrir argv, og argc, að sjálfsögðu, er 4.
Svo í öðrum orðum, jafnvel þótt þetta array
gæti verið punktur punktur punktur, sum breytilegum lengd, svo að segja,
þú veist alltaf hvar enda það er, því argc er að fara að segja þér
á hvaða tímapunkti sem þú þarft að hætta horfa á þætti í argv.
Þú getur aðeins líta á fjórum samtals í þessu tilfelli.
>> Svo skulum nú kíkja á, kannski, einföld forrit.
Eitt sem bara segir halló við einhvern eins Zamyla.
Svo ég kröfu að ég ætla að skrifa forrit á aðeins augnablik gegnum sem ég gæti gert
./hello rúm Zamyla, og þá vil ég áætlun mín að prenta út eitthvað
frábær-einfalt eins og "halló, Zamyla."
Nú í fortíðinni sem við höfum notað getstring.
Svo í fortíðinni, jafnvel þótt þú ert nýr til að forritun,
Líkurnar eru að þú gætir svipa upp a forrit sem notar getstring
og þá notar printf að segja hæ við Zamyla.
En við skulum ekki nota getstring þessa tíma.
Leyfðu mér að fara í staðinn í Appliant og innihalda staðlaða I O punktur h.
Leyfðu mér eru einnig CS50 punktur h.
Nú int helstu, og nú er ég ekki að fara að gera ógilt í dag.
Í staðinn ætla ég að fara að gera int argc band argv opna krappi loka krappi,
ekki tilgreina númer.
Og nú hér er minn svokallaða að gera.
Það sem ég ætla að gera núna er ég að fara að gera a hluti af a áræðni,
Ég ætla að gera ráð fyrir að notandi að fara að nota þetta forrit rétt,
og ég ætla einfaldlega að fara að gera printf halló,% Sn.
Svo ekkert nýtt þar.
En ég vil nú setja hvað orð sem notandinn slær eftir nafni forritsins.
Svo ef ég ./hello pláss Zamyla, ég vilt einhvern veginn kerfisbundið aðgang
vitna unquote "Zamyla." svo ég getur farið inn rök vektor minn,
array minn strengi, og ef stjórn, aftur, var ./hello rúm Zamyla,
hvað fjölda ég vil að setja í argv hér?
Áhorfendur: 1.
DAVID MALAN: 1, vegna þess að krappi 0 reynist
er að fara að vera nafn áætlunarinnar, eins og við sáum.
Svo krappi 1 er fyrsta orðið að ég, sem notandi, hefur skrifað.
Ég ætla að fara á undan og vista þessa.
Ég ætla að fara inn í möppuna mína þar sem ég hef sett þessa skrá.
Ég ætla að gera gera halló 3.
OK Comp IO er.
./hello Zamyla Enter.
Hvað gerði ég rangt?
Ég hrökk sjálfur fyrir aðeins augnablik þar.
Hvað gerði ég rangt?
>> Áhorfendur: Nafn.
>> DAVID MALAN: Skráin er í raun kallað hello3.c.
Og ég gerði það bara fyrir samkvæmni, vegna þess að við höfum
hafði hello.c er í framhjá í the online kóða.
Svo skulum laga þetta ./hello krappi þjóta 3 Zamyla.
Enter.
Og nú höfum við halló, Zamyla.
Á sama tíma, ég get breytt þessu til vera Rob, eða bara önnur orð.
>> En við skulum íhuga horn tilfelli.
Hvað gætir þú búist mun gerast ef Ég slegið nafn neinum yfirleitt?
>> Áhorfendur: Villa.
>> DAVID MALAN: Villa af einhverju tagi, kannski.
Við skulum sjá.
Enter.
Null.
Svo printf er í raun að vera smá verndar okkur
hér, og bókstaflega prentun opnum paren null, en jafnvel verri hlutir geta gerst.
Og bara til að sýna fram á eitthvað sem þú algerlega
ætti ekki að gera, við skulum fara í hér og byrja að poking í kring.
Ekki satt?
Ef ég veit að myndin í minni er í raun þetta,
argv krappi 1 hefur Zamyla, argv krappi 0 hefur ./hello eða ./hello-3.
Hvað er í krappi 2?
Svo ég get svarað því að spurning mig, ekki satt?
Ég get bara breytt 1 til 2.
Ég get nú að endurþýða halló 3, ./hello3 skulum súmma inn og ýta á Enter.
Úpps.
Engin tilvitnun merkja.
Áhugavert.
Svo er það góður af kaldur til sjá hvað er hér.
>> Svo hvað er inni fartölvuna mína?
Við skulum spara það með bracket 3.
Gera hello3, ./hello-3.
Forvitinn.
Og nú skulum við fá raunverulega bold-- 50.
Svo er það virkilega köfun djúpt í minni tölvunnar minnar.
50 Vísitölur í.
Svo gera halló 3 ./hello-3.
Forvitinn.
Allt í lagi, nú er ég bara að fara að fá kærulaus.
Förum í 5000.
Allt í lagi.
Svo láta mig að endurþýða.
Gera hello3, ./hello-3.
OK.
Nú sumir af þú, það gæti vera ljósapera fara burt.
Hversu margir af þú hafa séð þennan póst áður?
OK.
Svo, hvers vegna?
>> Stuðlar are-- og það er mismunandi hlutir sem geta valdið þessu,
og greinilega þú ert í góðu company-- við höfum greinilega
olli það er kallað a skiptingu kenna.
Og langa sögu stutta í dag, ég hafa snert hluti af minni
að ég ætti ekki að hafa.
Ef hluti þýðir bara klumpur minni að ég ætti ekki að hafa.
Nú tryggir að tölvan að ef ég hlaupa ./helloZamyla að ég get snerta argv
vera krappi 0 og argv krappi 1.
En argc er gildi 2, sem þýðir að ég er aðeins allowed-- það er tegund af heiðri
system-- að snerta Bríkin 0 og Bríkin 1.
Ef ég fer lengra, það er algerlega að fara að vera minni þar.
RAM minn er til líkamlega í tölvunni.
En hver veit hvað er þarna?
Reyndar, ég er að keyra margar forrit í einu.
Ég gæti hafa seen-- ef ég væri ekki gera þetta á Appliant
en á Mac minn eða Einkatölva ég gæti hafa séð innihald tölvupósti.
Ég gæti hafa séð augnablik skilaboðin sem ég hef nýlega sent.
Nokkuð sem gæti verið langvarandi í kring í minni
gæti hafa verið skoðuð með því að þetta handahófskennt ferningur krappi tákn.
Eða verri enn, þú might hafa fundið einn af lykilorðum mínum
að ég vil nýlega slegið í, að program hafði geymd í minni þannig
til að auðkenna mig, og þá bara svona eftir það
í vinnsluminni til að ég hætti þessi forrit.
>> Og reyndar, þetta er einn af hætta og einn völd
um að nota tungumál eins C. Þú hefur ótakmarkaðan aðgang
að allt innihald minni forrits,
og hvað slæmt krakkar geta jafnvel gera í þeim cases--
sérstaklega þegar við fá að forritun vefur
undir lok misseris, við munum skoðunar topic-- er pota í kring,
hugsanlega einhver er tölva ' minni og finna svo forvitinn hluti
eins og við sáum þarna.
Eða jafnvel verra enn, lykilorð sem hann eða hún getur þá notað til að gera slæma hluti.
>> Svo greinilega að ég ætti ekki að hafa gert þetta, því undarlegir atburðir að gerast.
Reyndar, þetta er forrit hrun.
Þetta myndi vera ígildi Mac OS eða Windows
a program gluggi bara hverfa.
Óvænt villa átti sér stað.
Í stjórn-lína umhverfi við sjáum eitthvað þessu líkt.
En það er hvers vegna, er ég ætla einfaldlega að snerta minni sem ekki tilheyra mér.
>> Svo skulum verja gegn þessu a svolítið á annan hátt
með því að horfa á þetta forrit hér.
Svo aftur, beinagrind sem við sáum earlier--
og ég hef hápunktur þessa tíma int.
Og allan þennan tíma helstu hefur örugglega aftur gildi.
Jafnvel þótt í flestum fyrirlestrinum okkar dæmi sem við höfum aldrei einu sinni notuð
aftur eitthvað í aðal.
Við að skrifa bara printf loka hrokkið Brace og það er það.
En fyrir frjáls, hvað þýðanda verið að gera fyrir þig,
á áhrifaríkan hátt, er að fara aftur 0 fyrir þig.
Snýr out-- og það er lítið counterintuitive-- að 0 er gott.
Það þýðir ekki falskur í sjálfu sér.
0 er gott, og allir non-0 gildi, heimurinn hefur ákveðið,
getur signify villu.
Þannig að ef þú hefur einhvern tíma boðberi eitthvað upp á tölvunni þinni,
eða áætlun hefur bara lést þig og þú hefur fengið einhverja rangra glugga
á skjánum, sagði villa neikvæð 49 eða villa 23--
sumir virðist handahófskennt value-- sem er vegna þess að forritarinn hefur harður-dulmáli
gildi eins neikvæð 49 eða jákvæð 23 til að tákna hvaða númer, þora að segja,
af 4 milljarða mögulegum hlutum sem gæti farið úrskeiðis í forriti.
>> Svo hvernig gæti ég tekið Kosturinn við þetta sjálfur?
Jæja, láttu mig opna forrit að ég skrifaði í fyrirfram,
og pota í kring á netinu sem heitir Halló 4.
Og það er nánast eins, nema að þess fékk smá villa-stöðva.
Í þessu tilfelli, hef ég aftur lýst Helstu og taka tvö rök,
en í þetta skiptið, á línu 17, tilkynning Ég er að gera a hluti af a geðheilsu stöðva.
Ég er að gera viss um að argc jafngildir jafngildir 2.
Vegna þess að ef það er, að þýðir að ég get örugglega
snerta ekki aðeins krappi 0, en krappi 1.
Og ég fer á undan og prenta út, í þessu tilfelli, Zamyla eða Rob
eða hvað orð ég slóst út.
Og nú bara að fá smá meira viðeigandi,
Ég ætla að beinlínis aftur 0 að signify allt er vel.
Ekkert slæmt gerðist.
>> En með því að venju, ég ætla að aftur 1, eða satt allir non-0 gildi,
ef eitthvað fór úrskeiðis.
Nú er notandinn ekki að fara að virkilega taka eftir hvað er að gerast.
Reyndar ef ég fer inn í þessa möppu, við zoom í og ​​gera Halló 4,
./hello-4 Zamyla haga sér eins og ég búist við.
En ef ég í staðinn ekki slá eitthvað, ekkert virðist gerast,
en það þýðir ekki að hrun.
Og ef ég geri staðinn eitthvað eins Rob er PROCTOR
í Thayer-- hlutdeild handahófskennt upplýsingar.
En fyrirvara, argv 1, 2, 3, 4, og 5 ætti nú til í minni.
Það líka, er ekki hvað áætlun mín gerir ráð fyrir,
vegna þess að ég hef athugað hvort argc jafnt jafn 2 eða ekki.
Þannig að ég ætla nú að verja gegn þessu.
>> Nú, eins og innskot, við að programmer-- eða frekar við að users--
aldrei sjá að 0 eða 1, en með því að nota tól sem kallast aflúsara, eða önnur verkfæri,
eins og við munum sjá fyrir langur, þú forritari
getur raunverulega sjá hvað gæti verið fara úrskeiðis inni á áætlun þinni.
>> Svo, einhverjar spurningar um argc?
Já.
>> Áhorfendur: Ég hef séð þar sem þeir hafa ekki haft staf [inaudible]
bara sagt band stjörnu d, eins eðli stjörnu komma.
Eru þeir jafngildi hér?
>> DAVID MALAN: Þeir eru.
Svo spurningin er, hefur þú stundum séð forrit
eins og þetta sem gera ekki segja string argv krappi
heldur segja eitthvað eins bleikju stjörnu argv krappi.
Og það er jafnvel annar afbrigði sem þú gætir séð.
Þeir eru örugglega jafngildi.
Fyrir nú, við höfum þetta konar þjálfun hjól
á í formi streng í CS50 bókasafn, en í rúmlega viku
eða svo við erum að fara að fjarlægja það Teppa öllu og í raun
líta á það sem bleikja og stjarnan eru og hvernig þeir taka til minni
framsetning almennt.
Þannig að við munum koma aftur til það.
>> Aðrar spurningar um argv okkar eða argc?
Já.
Áhorfendur: Hvers vegna var það aftur villa [inaudible]?
DAVID MALAN: Hvers vegna gerði það skila villu only-- ó!
Í fyrra tilvikinu, þegar við voru futzing kring með minni,
af hverju gerði bara það aftur villu þegar ég slóst í raun stórt númer?
Stutta svarið er, við fengum bara heppinn.
Almennt talað, tölva úthlutar minni í bitum,
og það gaf mér nógu stór klumpur sem Ég slapp, án þess að taka,
af snerta krappi 2. krappi 3, krappi 50, en um leið og ég ýtti
heppni mína, fór ég út að Mörk klumpur af minni
stýrikerfi hafði gefið mér.
Og það er þegar það clamped niður og sagði, nei.
Skiptingu villa.
Já.
>> Áhorfendur: Hvernig virkar tölvan vita verðmæti argc?
>> DAVID MALAN: Hvernig virkar tölva veit gildi argc?
Þegar þú keyrir forritið, sem program, og eðli blikkandi hvetja,
er afhent array orð sem voru slegið
á að hvetja, sem var slegið á the hvetja.
Og svo er það stýrikerfi þitt kerfi sem í raun
populates rök Main fyrir þig.
Svo er það einn af þeim þjónustu sem þú færð, svona leynilega
undir hetta stýrikerfi.
Aðrar spurningar?
Já.
>> Áhorfendur: Hvað algerlega sorphaugur meina?
DAVID MALAN: Hvað algerlega sorphaugur meina?
Svo er það góð spurning.
Og láta mig fara aftur í þessari skrá hér.
Og þú munt taka eftir því að ÉG hafa a nýr skrá þar.
Það er reyndar kallað algerlega, og það er reyndar yfirleitt ágætis-stór skrá.
Það er í raun mynd af innihald minni forritsins míns
eða RAM þegar það hrundi.
Og þetta mun vera gagnlegt, hugsanlega, sjúkdómsgreiningar,
þegar við tölum í framtíðinni fyrirlestri og kafla um kembiforrit,
vegna þess að þú getur í raun og veru að gera jafngildir um stafræna krufninguna
á að skrá til að hjálpa reikna út hvað þú gerðir rangt í forritinu.
Já.
>> Áhorfendur: Er argc skipun í sig, eða getur þú nefnt það nokkuð?
>> DAVID MALAN: Góð spurning.
Er argc skipun í sjálfu sér, eða getur þú nafn það nokkuð?
Það er örugglega ekki a stjórn.
Það er einfaldlega breytu er heiti eða rifrildi er,
og svo algerlega við gæti kalla þetta foo,
við gætum kalla þetta bar, sem hafa tilhneigingu til að vera að fara til orð sem tölva
vísindamaður fer að.
En með því að venju, við notum argc og argv.
En það er bara mannlegur venju, ekkert meira.
Allt í lagi.
Svo kemur í ljós, ég hef verið segja smá hvítt lie--
og hreinskilnislega, í framtíðinni, þú munt sjá við höfum verið að segja öðrum hvítum lygar.
En nú erum við að fara að afhýða aftur einn af þessum.
Í þessu tilfelli hér þegar ég áður hljóp forrit eins ./hello eða ./hello-3
Zamyla, við höfðum innihald minn minni tölvunnar leita u.þ.b. eins
þetta.
En muna hvað strengur er.
Hvað gerði við segjum viku síðan hvað band er í raun undir hetta?
Áhorfendur: Array stafir.
DAVID MALAN: Það er array stafir, ekki satt?
Svo við gætum haft fjölbreytta strengir, en aftur á móti, a band
er fylki af stöfum.
Svo ef ég vil virkilega að vera endaþarms þegar ég teikna þessa mynd,
Ég ætti í raun að vera að teikna það svolítið meira eins og þetta,
þar sem í hvert þessara Vísitölur argv array minn,
það er sjálft í heild band að sjálft er í fylki.
Og nú hvíta lygi við erum að segja í dag
er að myndin er ekki líta alveg eins og þetta.
Í raun eru litlu ferninga yfirleitt utan stóru rétthyrninga
þar.
En við munum koma aftur til að áður en langur.
En þetta er ./hello sviga 0, að vera sérstakur karakter sem
aðskilur fyrir endann á band, og við höfum fengið annað eftir
Nafn Zamyla er.
Svo hvað þýðir þetta?
>> Jæja, láttu mig fara á undan og opna tvær önnur dæmi
sem eru í boði á netinu.
Einn er kölluð argv1.c og hitt er argv2.
Það er frábær-einfalt forrit sem er frábrugðin síðustu programs
í því núna er ég að nota argc og argv upp hér.
Og nú er ég að samþætta með for lykkju í samræmi 18, frá i = 0 á allt að argc.
Og hvað er ég að fara að gera með þessari línu af kóða hér?
Á ensku.
Þetta sýnir augljóslega notkun argc.
En í ensku, hvað þýðir það að gera ef ég keyra þetta forrit?
Já?
>> Áhorfendur: Það er að fara að prenta þinn skjár eins oft og þú vilt.
DAVID MALAN: Einmitt.
Svo hvað orð I slegið á the hvetja, það er
að fara að kasta upp þá á mig eitt í hverja línu.
Svo skulum fara á undan og gera þetta.
Leyfðu mér að fara inn í möppuna mína og gera að argv1 ./argv1.
Og nú, við skulum halda það einfalt.
Við skulum gera ekkert í fyrstu.
Það gerði prenta út eitt, og það er örugglega nafnið á forritinu,
því það er í krappi 0.
Ef ég segi nú foo, það er að fara að gera þessir tveir, og ef ég segi foo bar,
það er að fara að segja þeim þremur hlutum.
Nú er það nokkuð áhugavert, kannski.
En muna að argv er fylki á strengi,
en band er fylki á stafir, svo við getum tekið það upp hak
og gilda að undirstöðu rökfræði og gera kóða sem
lítur svolítið meira dulinn, að vísu.
En með því að hafa hreiður lykkja, eitthvað í ætt
við hvað þú gætir muna frá Mario, til dæmis, ef þú gerðir það með þessum hætti.
>> Svo nú taka á línu 19, ég er aftur iterating yfir málflutningi mínum,
frá 0 á allt að argc.
Og nú í samræmi 21-- ég lántökur bragð frá síðasta week--
Ég er að skoða hvað er lengd argv krappi i.
Ég geyma það svar í n.
Og þá er ég að samþætta frá j á allt að n, þar sem j er frumstilla til 0.
Svo, samningur fyrir talningu.
Þegar þú hefur notað i, ef þú hafa a hreiður lykkja, þú getur ekki notað i aftur,
annars munt þú clobber hugsanlega gildi fyrir utan um innri lykkju.
Þannig að ég ætla að nota j eftir venju.
Við gætum notað k.
Ef þú ert með fleiri en k, þú sennilega hafa of mikið hreiður, venjulega.
En nú, eftir printf minn lína er örlítið öðruvísi.
Ég ætla ekki að prentun% s, ég er prentun% c, sem, að sjálfsögðu,
er staðgengill fyrir bleikju.
>> Og nú taka þessa setningafræði.
New.
Við höfum ekki séð það áður.
En rökrétt, þetta þýðir bara fá ith band í argv
og fá jth hvað?
Áhorfendur: Eðli.
DAVID MALAN: Eðli í strengsins.
Svo með því að nota hornklofa eftir hornklofum,
þetta er köfun fyrst í strengi argv er,
og þá seinni hornklofum með j
er köfun í stafina sem einkum band í argv.
Og þá, bara fyrir gott mál, Ég prenta nýja línu hér.
Svo nú láta mig fara á undan og opna upp örlítið stærri glugga
svo við getum séð þetta í aðgerð.
Leyfðu mér að fara inn í þessi mappa.
Og nú gera gera argv-2-- whoops-- gera argv-2, ./argv 2.
Enter.
Og það er svolítið erfitt að lesa lóðrétt,
en það er örugglega nafnið á program, fylgt eftir með auða línu.
Nú láta mig fara á undan og gera foo.
Álíka erfitt að lesa, en það er örugglega prentun einn staf í hverja línu.
Og ef ég bar, það er nú prentun þá línu fyrir línu.
Svo er takeaway hér ekki svo mikið að, vá, líta á þetta snyrtilegur nýja bragð
þar sem þú getur fengið á innihaldi af sérstökum stafi í fylki er,
heldur hvernig við erum að taka þetta undirstöðu hugmyndir eins flokkun í fylki,
og þá flokkun inn í array sem var í þeirri fylking,
og bara beita sömu hugmyndir að örlítið flóknari dæmi.
En grundvallaratriði hafa í raun ekki breyst, jafnvel frá síðustu viku.
>> Nú er þetta svona tímanlega, í því, muna, í viku núll
við spiluðum með símaskrá eins og þetta.
Og jafnvel þótt það sé augljóslega líkamlega stykki af pappír,
þú getur konar hugsa um a símaskrá sem fylki.
Vissulega, ef þú varst að reimplement þetta stykki þessi stykki af pappír
í tölvunni, sennilega þú myndir nota eitthvað
eins fylki til að geyma allar þessar nöfn og númer úr alla leið
gegnum Z. Svo er þetta gott, vegna þess að það gerir okkur tækifæri,
kannski að íhuga hvernig þú gætir reyndar innleiða eitthvað svona.
Eins og með a röð af hurðum hér.
Þannig að ef ég could-- við þurfum eitt sjálfboðaliða til að koma upp.
Við skulum sjá.
Framandi andlit kannski, framandi andlit kannski.
Hvað um í appelsínugulum?
Hér.
Appelsína skyrta, koma upp.
>> Við skulum fara á undan núna og hreyfa Þessar dyr yfir til hliðar,
færa þeim út af the vegur í smástund.
Hvað er nafn þitt?
>> Ajay:
>> DAVID MALAN: Ajay.
David.
Gaman að hitta þig.
Allt í lagi.
Þannig að við höfum á bak við þessar sex hurðir stafrænt á screen--
Eða frekar, sjö hurðir á að screen-- a heild búnt af tölum.
Og ég hef sagt þér neitt í advance-- sammála?
Ajay: Ekkert fyrirfram.
DAVID MALAN: Allt sem ég vil að þú að gera nú er að finna fyrir mig, og fyrir okkur,
í raun hefur fjöldi 50, eitt skref í einu.
>> Ajay: Númer 50?
>> DAVID MALAN: Fjöldi 50.
Og þú geta sýna hvað er á bak við hvert þessara hurðum
einfaldlega með því að snerta það með fingri.
Andskotans. [Hlátur]
>> [Applause]
>> Mjög vel gert.
OK.
Við höfum yndislega gjöf verðlaun fyrir þig hér.
Velja þinn bíó við rætt í síðustu viku.
>> Ajay: Ó, maður.
Ó, ég hef aldrei séð Spaceballs.
>> DAVID MALAN: Spaceballs.
Allt í lagi.
Svo halda á bara eitt augnablik.
How-- skulum gera þetta a teachable moment--
hvernig fannst þér að fara um finna númer 50?
Ajay: Ég valdi af handahófi.
DAVID MALAN: Svo þú valdir handahófi og fékk heppinn.
Ajay: Já.
DAVID MALAN: OK.
Excellent.
Svo nú, hafði þig ekki fengið heppinn, hvað annað
gæti hafa gerst á bak við þessar dyr?
Þannig að ef ég fer á undan og sýna þessar tölur hér,
þeir eru í raun í handahófskenndri röð.
Og það besta sem þú gætir hafa gert, hreinskilnislega, er með, að lokum,
í versta tilfelli, að haka við þá alla.
Svo þú got frábær-heppinn, sem er ekki það sem við myndum kalla reiknirit.
Já, hamingju.
En nú let's-- húmor mig, ef þú gætir.
Við skulum fara á þennan flipa hér.
Og hér eru tölurnar í greinilega það virðist vera af handahófi röð,
og þeir voru.
En nú ef ég krafa staðinn að á bak við þessar dyr
eru tölur sem eru raðað.
Markmiðið er nú að líka finna okkur númerið 50.
En gera það algorithmically, og Segðu okkur hvernig þú ert að fara um það.
Og ef þú finnur það, halda þér myndina.
Þú finnur ekki það, sem þú gefa það til baka.
Ajay: Þannig að ég ætla að athuga endana í fyrsta lagi að ákveða hvort there's--
[Hlátur og lófaklapp]
DAVID MALAN: Hérna.
Við skulum taka a líta á einn forverar Ajay er,
Sean, sem var ekki alveg eins heppinn.
Allt í lagi, þannig að þitt verkefni hér, Sean, er eftirfarandi.
Ég hef falið bak þessum hurðir sem númer sjö,
en matur burt í sumum þessara hlera svo eru aðrar neikvæðar tölur.
Og markmið þitt er að hugsa um þetta Efst á tölur sem bara fylki.
Það nægir að taka röð af stykki af pappír með tölum á bak við þá.
Og markmið þitt er aðeins að nota efst array hér, finna mér númer sjö.
Og við erum svo að fara að gagnrýna hvernig þú ferð um að gera það.
Finndu okkur númerið sjö, takk.
Nei
5, 19, 13.
Það er ekki bragð spurning.
1.
Á þessum tímapunkti skora er ekki mjög gott, svo þú might eins og heilbrigður halda áfram.
3.
Fara á.
Frankly, ég get ekki annað en furða hvað þú ert jafnvel að hugsa um.
>> SEAN: Ég get tekið frá eini efstu röðinni.
DAVID MALAN: Aðeins efsta línan.
Svo þú hefur fengið þrjú eftir.
Svo finna mig 7.
>> [Áhorfendur hrópar Tillögur]
Svo bæði þeirra voru ótrúlega fyrir mjög mismunandi ástæðum.
Svo er þetta þar sem við horfið í smá stund síðan,
og lykillinn innsýn hér var þessi hurðir höfðu tölur
að baki þeim sem voru raðað, kjörinn takeaway sem er að þú gætir gert
grundvallaratriðum betur í þessi seinni example--
og reyndar það var Sean er Fyrsta tilraun með handahófi tölur
bara eins before-- en um leið eins og þessar tölur eru flokkuð,
mikið eins og símaskrá, hvað getur þú gert augljóslega?
Eða hvernig er hægt að nýta þá þekkingu?
Já.
>> Áhorfendur: Þú ferð á miðri leið [inaudible].
DAVID MALAN: Já.
Nákvæmlega.
Svo upphaflega eðlishvöt Ajay var að athuga endana, eins og ég man,
og þá erum við konar lokið dæmi fljótt.
En ef við byrjuðum að gera þetta meira skipulega meðfram þeim línum,
en byrja kannski í miðja, vegna þess að þeir eru raðað,
eins fljótt og við sýna að númer 16, know-- við því
og við skulum gera nákvæmlega that-- vér Hygg að 50, ef í dag,
hefur got til vera til hægri.
Svo bara eins og í viku núll þegar Við reif símaskrána í tvennt
og kastaði helmingur af vandamál í burtu, sama hugmynd hér.
Við getum kastað þessum helmingur á vandamálinu í burtu.
Og sennilega það sem þú gæti gert algorithmically,
þegar þú veist að 50 verður að vera til hægri, ef það er einhvers staðar,
er að reyna það, í miðju af hinum hurðir.
Að sjálfsögðu, 50 er hærra en 42, þannig að við getum
kasta þetta eftir fjórðungur af vandamálinu í burtu,
og að lokum, þekkja eitthvað eins og 50.
En rétt eins og með símaskrá, þessar tölur
voru gefin okkur þegar í Raðað röð, sem skilur okkur
við spurningunni, hvernig þér fá það í raðað röð?
Og hreinskilnislega, á hvaða kostnað?
Það er eitt að vera afhent símaskrána
og þá komdu vinum þínum með því að finna a símanúmer virkilega hratt, ekki satt?
Rífa 32 síður út til að finna maður af 4 milljarða flettinga,
við sögðum var einn öfgafullt dæmi.
En hversu mikinn tíma gerði það að taka Regin að raða að símaskránni?
Hversu mikill tími fór það að taka okkur að raða þessum sjö tölur?
Það er spurning sem við höfum svona langt alveg hunsað.
>> Svo skulum svara þessari spurningu núna.
Og við erum öll úr bíó núna, en við höfum nokkrar streitu kúlur.
Ef, segjum, átta sjálfboðaliðar myndi ekki hugur hopinn upp hér?
Við skulum fara á undan og gera, hvernig um fjórir þig, þið þrír hér?
Fá ný andlit.
Og fjórir af þér þarna?
Og now-- skulum ekki hlutdrægni here-- og númer átta hérna á enda.
Komdu upp.
Allt í lagi.
Svo það sem við höfum hér fyrir hver ykkar er tala.
Ef þú vilt fara undan, að taka þetta númer.
Hvað er nafn þitt?
>> Artie: Artie.
>> DAVID MALAN: Artie, allt í lagi.
Þú ert númer 1.
>> Amin: Amin.
DAVID MALAN: Amin.
David.
Þú ert númer 2.
Og fara á undan, eins og ég hendi þú blöð af pappír,
lína ykkur upp fyrir framan tónlist stendur í sömu röð og allt það.
>> ANDY: Hi, Andy.
>> DAVID MALAN: Andy, það er gott að sjá þig.
Númer 3.
>> JACOB: Jakob.
>> DAVID MALAN: Jakob, númer 4.
Velkomin um borð.
GRANT: Grant.
DAVID MALAN: Grant.
Númer 5.
>> Alanna: Alanna.
>> DAVID MALAN: Alanna, númer 6.
>> FRANCES: Frances.
DAVID MALAN: Frances, númer 7.
Og?
>> RACHEL: Rachel.
>> DAVID MALAN: Rakel, númer 8.
Allt í lagi.
Fara á undan og fá sjálfur í þessari röð.
Leyfðu mér að setja einn eftir tónlist standa í stað.
Hvar þarft þú að standa?
OK.
Fara á undan og bara setja númer þitt þar sem áhorfendur geta séð þá á,
tónlistin standa frammi út á við.
Og vonandi, fyrst okkar Sanity athuga here-- 4, 2, 6.
Oh-ó.
Bíddu í eina mínútu.
Við höfum ekki í 8.
Ég þarf til evict þig úr dæmi einhvern veginn.
Nei
Nei, það er allt í lagi.
Við skulum sjá.
Við getum gert þetta.
Standa eftir.
Það sem við förum.
Rétt.
Allt í lagi.
Svo nú höfum við 8, 1, 3 7, 5.
OK.
Excellent.
>> Svo spurningin hendi er, á hvað kostar, og í gegnum hvaða aðferð,
getum við raða í raun þessar tölur hér svo að við getum konar vinna aftur á bak,
lokum, og decide-- er það í raun áhrifamikill, er það virkilega duglegur,
að ég get skipta og sigra símaskrá?
Er það virkilega duglegur að Ég get skipta og sigra
þessir stafrænn stykki af pappír á borðinu,
ef til vill það er að fara að kosta okkur a örlög í tíma eða orku eða CPU hringrás
að í raun og veru að fá gögn okkar í sumum flokkaðs röð?
Svo skulum spyrja þessi spurning.
>> Svo fyrst burt, eru þessar tölur í nánast af handahófi,
og ég ætla að leggja einn reiknirit eða ferli
sem við getum flokkað þessum fólkinu.
Ég ætla að nálgast þetta nokkuð naively.
Og ég ætla að viðurkenna að það er góður af a einhver fjöldi fyrir mig
að vefja huga minn um að heil gögnum í einu.
En þú veist hvað?
Ég ætla að gera nokkrar mjög einfalt lélegur fastur.
4 og 2 eru úr röð, ef Markmiðið er að fara frá 1 á allt að 8.
Svo þú veist hvað?
Ég ætla að hafa þig krakkar skipti, ef þú kveikir
líkamlega stöðu og stykki af pappír.
Nú 4 og 6, þær eru í röð.
Ég ætla að láta þá vera.
6 og 8, eru þeir í röð.
Að fara að yfirgefa þá vera.
8 og1, út af röð.
Ef þið viljir ekki huga að skipta.
Nú 8 og 3, ef þú krakkar gætu skipta.
8 og 7, ef þú krakkar gætu skipta.
Og 8 og 5, ef þú krakkar gætu skipta.
>> Nú er ég að gera?
Nei, augljóslega ekki.
En ég hef gert Ástandið betra, ekki satt?
Hvað var nafn þitt aftur, númer 8?
>> RACHEL: Rachel.
DAVID MALAN: Svo hefur Rachel raun bullað upp ansi langt,
alla leið til loka array minn tölum hér.
Og svo að vandamálið er eins konar leyst.
Nú, augljóslega, 2 enn þarf að færa hluti, og 4. og 6. og 1.
En ég virðist hafa fengið að smá nær lausninni.
Svo skulum beita þetta sama barnaleg leitandi aftur.
2 og 4, OK.
4 og 6, OK.
6 og 1, mm-mm.
Skulum skipti.
6 og 3, mm-mm.
Skulum skipti.
6 og 7 er í lagi.
7 og 5, nei.
Skulum skipti.
Og nú 7 og 8.
Og hvað er nafnið þitt aftur?
FRANCES: Frances.
DAVID MALAN: Frances.
Svo nú er Frances í jafnvel betri stöðu, því nú 7 og 8
séu rétt bullað upp á toppinn.
Svo 2 og 4, OK.
4 og 1, skipti skulum.
4 og 3, skipti skulum.
4 og 6, þú ert í lagi.
6 og 5, skipti skulum.
Og nú þessir krakkar eru góð.
Við erum næstum þarna.
2 og 1, út af röð, svo skipta.
Og nú láta mig gera geðheilsu stöðva.
2 og 3, 3 og 4, 4 og 5, 5 og 6, 6 og 7, 8.
Allt í lagi, þannig að við erum búin.
>> En á hvaða kostnað gerði ég raða þessar tölur hérna?
Jæja, hversu mörg skref gerði ég hugsanlega taka þegar flokkun þessum fólkinu?
Jæja, munum við koma aftur við þeirri spurningu.
En hreinskilnislega, ef þú got smá leiðindi, það er
konar sýna, að hér var ekki kannski mest duglegur reiknirit.
Og reyndar, hreinskilnislega, ég er sviti allt meira ganga fram og til baka.
Það var ekki finnst sérstaklega duglegur.
Svo skulum reyna eitthvað annað.
Ef þú krakkar gætu endurstilla Sjálfir til þessara átta gildum.
Gott starf.
>> Við skulum taka a líta á stafrænt, fyrir aðeins stund áður en við reynum eitthvað annað,
hvað bara gerðist.
Upp hér, þú ert að fara að sjá visualization af þessum átta mönnum
þar blár og rauður bars tákna tölur.
The hærri sem stikan er, stærri fjölda.
Því styttra sem bar, minni fjölda.
Og hvað þú ert að fara að sjá er í handahófi röð meira en átta af þeim.
Þú ert að fara að sjá þessar bars fá raðað eftir sama reiknirit,
eða setja af leiðbeiningar, sem Við munum kalla héðan kúla tegund.
Svo taka, hvert annað eða svo, tveir barir eru lýsing upp í rauðu,
Verið er að bera saman við tölvuna.
Og þá ef stór bar og litla barnum eru í ólagi,
þau eru skipst fyrir mig.
>> Nú er þetta ótrúlega leiðinlegur að horfa á þetta, vissulega,
mjög lengi, en taka eftir því takeaway-- stór bars flytja til hægri,
little barir flytja til vinstri.
Við skulum hætta þessu ferli og flýta þessu upp
að vera miklu hraðar, þannig að við getum fá a hár-láréttur flötur tilfinningu hvað,
reyndar, kúla raða er að gera.
Reyndar, það er freyðandi upp að hægri hönd hlið af listanum,
eða fylki, stærri bars.
Og öfugt, eru litlu barir freyðandi leið sína niður til vinstri,
að vísu á meiri hraða en við gerðum áður.
Svo, erfiðara að sjá með mönnum, en sjónrænt er það örugglega hvað
var að gerast.
>> En við skulum reyna að grundvallaratriðum mismunandi nálgun núna.
Við skulum reyna annað reiknirit þar sem við höfum þér
krakkar byrja í þessum upprunalega stöðu, sem var í þessari röð hér.
Og við skulum fara á undan núna.
Og ég ætla að gera eitthvað jafnvel einfaldari, ekki satt?
Eftir á að hyggja, skipta pöruðum aftur og aftur, næstum smá snjall.
Skulum gera hlutina enn meira naively, þar sem ef ég vil raða þessum fólkinu,
láta mig halda bara að leita fyrir minnstu frumefni.
Svo núna, 4 er minnsti fjöldi sem ég hef séð.
Ég ætla að muna það.
Nei, 2 er betri, og muna það.
1 er jafnvel minni.
3, 7, 5.
OK.
One-- hvað heitirðu aftur?
>> Artie: Artie.
>> DAVID MALAN: Artie.
Svo, Artie, fara fram í tímann.
Ég ætla að draga þig út af the lína.
Ef þú gætir komið aftur hingað.
Og ég þarf að búa til pláss fyrir hann.
Við höfum ákvörðun benda hér.
Hvernig gætum við gert pláss fyrir Artie hér í upphafi þar sem fjöldi 1 tilheyrir?
>> Áhorfendur: Shift.
>> DAVID MALAN: OK, við gæti skipta alla.
En leggjum til hagræðingu.
Það líður svolítið pirrandi fyrir mig að spyrja fjóra manns
að færa alla leið niður.
Hvað annað gat ég gert?
>> Áhorfendur: Switch þá.
>> DAVID MALAN: Switch þá.
Og hvað er nafnið þitt aftur?
>> JACOB: Jakob.
DAVID MALAN: Jakob, færa.
Mun skilvirkari bara að hafa Jacob skiptasamningar stöðum með Artie,
öfugt við þvingunar allir fjórir af þessum fólkinu,
þakka þér kærlega fyrir, að réttri stöðu þeirra.
Hvað er gott um Artie núna, hann er í réttri stöðu hans.
Við skulum gera þetta aftur.
2, sem er minnsti fjöldi sem ég hef séð.
3, 7, 5.
OK.
2 er ákveðið minnstu.
Þarft ekki að gera allir vinna.
Við skulum gera það aftur.
6.
Minnst?
8.
Nei.
4?
Ooh.
Leyfðu mér að muna 4.
3.
Leyfðu mér að muna 3.
7, 5.
Minnsti fjöldi sem ég hef sést á skarðinu er 3.
Ef þú vilt koma á út.
Hvar erum við að fara að setja þig?
Og hvað er nafnið þitt?
>> Alanna: Alanna.
>> DAVID MALAN: Alanna, erum við fara að hafa til evict þig.
En það er fleiri duglegur, að bara skipta tvær manneskjur,
en að hafa marga menn reyndar vikið yfir.
Nú skulum gera þetta aftur.
Ég ætla að velja 4, svo komdu fram.
Og hver er að fara að flytja?
Fjöldi 8, auðvitað.
Ef ég finn nú númer 5, komdu út.
Númer 8 er að fara að fá evicted aftur.
Ég er nú að fara að finna í 6. sæti í stað.
7 í stað.
8 í stað.
>> Það sem við gerðum bara núna er eitthvað sem kallast val tagi,
og ef við sjón þessa, það er að fara að finna svolítið öðruvísi.
Við skulum fara á undan og frá þessu matseðill hér, þetta visualization--
skulum breyta þessu to-- koma á, Firefox.
Við skulum breyta þessu við val tagi.
Og við skulum hraða það upp eins og áður, og hefja visualization núna.
Og þetta reiknirit er mismunandi feel til það.
Á hverjum endurtekning, hreinskilnislega, það er jafnvel meira einföld.
Ég ætla bara að velja minnstu frumefni.
Nú, hreinskilnislega, ég fékk smá heppin að tíma, í að það raðað frábær-fljótur.
Þættir voru af handahófi.
Það er ekki, eins og við munum að lokum sjá, í grundvallaratriðum hraðar.
En við skulum sjá þriðja og síðasta nálgast hér um hvað er að gerast.
Svo skulum fara á undan og endurstilla ykkur ein endanleg tími til að vera í þessari röð hér.
>> Og nú, ég ætla að vera a lítill fleiri snjall,
bara að umferð út reiknirit okkar.
Ég ætla að gera þetta.
Ég ætla að ekki fara fram og til baka svo mikið.
Frankly, ég er þreyttur á allt þetta að fara yfir.
Ég ætla bara að fara að taka það sem ég er gefið í upphafi listanum,
og ég ætla að raða að þá og þar.
Svo hér erum við.
Númer 4.
Ég ætla að setja inn númer 4 í raðað lista.
Lokið.
Ég krafa nú, og bara til að gera þetta meira ljóst, þessi hluti af listanum mínum er raðað.
Það er góður af a heimskur kröfu, en örugglega 4 er raðað í lista yfir stærð einn.
Nú er ég að fara að taka á númer 2.
Númer 2 Ég er nú að fara til setja inn á réttum stað.
Svo hvar 2 tilheyra?
Vitanlega, hérna.
Svo fara á undan og flytja aftur ef þú gætir.
Og hví ekki að þú krakkar bara taka tónlist stendur með þér í þetta sinn.
Og við skulum valdi setja þig í upphafi listanum.
Svo smá meiri vinnu.
Ég þurfti að færa Jakob kring, og hvað er nafnið þitt?
>> Amin: Amin.
>> DAVID MALAN: Amin.
En að minnsta kosti ég vissi ekki að fara fram og til baka.
Ég ætla bara að taka það sem ég fer.
Ég ætla bara að setja þá á réttum stað.
6, þetta er í raun frekar auðvelt.
Skulum setja þig þarna, ef þú langaði bara að færa yfir örlítið.
Fjöldi 8, einnig nokkuð auðvelt.
Þarna.
Andskotans.
Númer 1 við getum ekki bara skipti með Amin hér,
því það er að fara að skipta sér upp í röð.
Þannig að við verðum að vera svolítið meira snjall.
Svo, Artie, ef þú gætir aftur upp í smástund.
Við skulum fara á undan og skipta nú, ólíkt fyrri reiknirit okkar,
að gera pláss fyrir Artie hérna í upphafi.
Svo í lok dagsins, ég er svona gera það sem ég vildi koma í veg fyrir áður.
Og svo er reiknirit mitt raða af baka, vitsmunalega,
frá því sem það var upphaflega.
Ég ætla bara að gera slíkt hið breytast á sama stað.
Nú er ég á 3.
Ó, fjandinn.
Við verðum að gera meiri vinnu á ný.
Svo skulum ýta þér út.
Við skulum færa 8, 6, 4-- ó oh-- og 3 er að fara að fara þarna.
Svo að minnsta kosti smá sparnað í þetta sinn.
7, ekki of mikið verk að gera.
Svo ef þú vilt að skjóta aftur, við skulum setja þig.
Og loks, 5, ef þú langar að skjóta aftur, sem við
þarf að skipta þér, þér, þú, þangað til fimm er á sínum stað.
>> Svo nú að sjá þetta á a mikil myndrænt,
skulum gera þetta reiknirit visualization eitt meiri tíma.
Þannig að þetta skulum við kalla insertion sort.
Við munum keyra hana eins og hratt, og hefja það hér.
Og það líka, hefur mismunandi tilfinningu.
Það er tegund af að fá betri og betur, en það er aldrei fullkomin
þangað til ég fer í og ​​slétt í þeim eyður.
Vegna þess, aftur, ég ætla bara að taka það Ég sé gefið frá vinstri til hægri.
Svo ég komst ekki svo heppinn að allt var fullkomið.
Það er þess vegna sem við höfðum þetta litla mispositions sem við föst með tímanum.
>> Svo allar þessar reiknirit virðast hlaupa á örlítið mismunandi skref.
Í raun, sem vildi þú segja besta eða festa svo langt?
Bubble tegund, fyrst?
Val tagi, annað?
Insertion sort, þriðja?
Ég heyri sumir val konar.
Aðrar hugsanir?
>> Svo kemur í ljós að allar þessar reiknirit
eru í grundvallaratriðum eins skilvirkt og hver other-- eða öfugt, rétt eins og
óhagkvæm og hvert annað, vegna þess að við getum gert í grundvallaratriðum
betri en allir þrír þessara reiknirit.
Og það er dálítið af hvítri lygi líka.
þegar ég segi eins duglegur eða eins og óhagkvæm,
það er að minnsta kosti fyrir Super-stór gildi á n.
Þegar við höfum bara átta manns hér, eða kannski 50 eða svo bars á skjánum,
þú munt alveg taka mismun meðal þessara þriggja reiknirit.
En eins og n er fjöldi fólks, eða fjölda af tölum,
eða fjöldi fólks í símanum bók, eða fjöldi vefsíðna
hjá Google fær stærri og stærri,
Við munum sjá að öll þrjú af þessum reiknirit eru í raun mjög lítið.
Og við getum gert í grundvallaratriðum betur en það.
>> Við skulum taka a líta, að lokum, á hvað þessi reiknirit gæti
hljóma í samhengi nokkrum öðrum
eins vel með því að þetta visualization hér
sem mun kynna okkur að a tala af reiknirit.
Við skulum fara á undan og hamingju þátttakendur okkar hér, sem allir
raðað sér mjög vel.
Ef þú vilt taka skilnaði gjöf.
Þú getur haldið tölur eins og heilbrigður.
Og það sem þú munt sjá, eða frekar heyra, nú,
er að þegar við setja hljóð á hvert þessara börum
og tengja það með the hugbúnaður, mismunandi tíðni hljóðs,
þú getur sett þinn hugur meira audioly um hvað hver af þessum hlutum
líta út.
Fyrsta sem er insertion sort
>> [Tónar]
>> Þetta er kúla tegund.
>> [Tónar]
>> Val tegund.
>> [Tónar]
>> Eitthvað sem kallast Mergesort.
>> [Tónar]
>> Gnome tegund.
>> [Tónar]
>> Það er það fyrir CS50.
Við munum sjá þig á miðvikudag.
>> Sögumaður: Og nú, "Deep Hugsun, "eftir Daven Farnham.
Hvers vegna er það for lykkju?
Hvers vegna ekki að gera það betra?
Ég myndi gera fimm lykkju.
>> [Hlátur]