Tip:
Highlight text to annotate it
X
>> Ræðumaður 1: Hæ allir.
Við erum að fara að byrja.
Ég held að fólk er enn að fara til að sía inn
En í þágu tíma, þannig að við getum fá ykkur héðan á réttum tíma,
við erum að fara að byrja.
Svo velkomin í CS50 Spurningakeppni 0 endurskoðun.
Fyrir þá sem hafa ekki áttað sig á enn, hefur þú spurningu á miðvikudag.
Woo-hoo.
>> Ef þú hefur ekki byrjað að læra enn eða hafa ekki áttað sig á að þetta er til enn,
Eldri Skyndipróf og allar upplýsingar um quiz þín eru á cs50.net/quizzes.
There 'sumir laglegur góður efni á það, Eldri Skyndipróf frá síðustu 10
árum sem og upplýsingar um þetta próf og efni
sem verður að falla.
Svo skulum við hefjast handa.
>> Svo þú krakkar might muna, fyrsta dagur í flokki Davíð hafði þá perur á.
Svo í raun, allt sem fer á undir hetta af a tölva er
gert í tvöfaldur.
Binary þýðir það sem það hljómar eins, 0 og 1 er er.
Það hefur tvö gildi sem Hægt er að koma fram.
>> Svo bara eins og á fyrsta degi kafla Þegar Davíð sneri á ljósi
bulb til að tákna á, eða 1, tölva okkar skilur tvöfaldur sem 0 og
1 er á eða burt.
Grunnatriði Binary.
Sérhver staður er táknuð í stöð tvö.
Svo þú bæta 2 við 0 til 1 til 2 alla leið upp.
>> Að reikna út hvaða tvöfaldur þitt er að tugakerfið, þú fylgir bara þessum jöfnu
tegund hlutur.
Ef þú ert með 1 í einhverjum af þessum stöðum, þú margfaldar það með hvaða
byggja það á, að bæta það upp, og þú færð aukastaf.
Svo er þetta hvernig þú telja til 5 í tvöfaldur.
Rétt eins og hvað við vorum að gera á Síðasta mynd, þetta er hvernig þú myndir
tákna 1 til og með 5.
>> Á sama hátt, rétt eins og þú getur bætt við og draga í aukastaf eða basa 10, eða
virkilega einhver stöð, á geta bætt og draga í tvöfaldur.
Einmitt það sem þú vildi búast við þegar þú bæta tvo upp, ef það jafngildi meiri
en 1, bera þér 1, gera það 0, og gera the samlagning þannig, bara
eins og þú vildi búast við reglulega tugakerfið eða önnur stöð.
Cool.
>> Svo eins og ég sagði áður, allt að fer á undir hetta tölva okkar
er gert í 0 og 1 er, eða tvöfaldur.
Svo hvernig látum við, til dæmis, stafi eða tölur, eða stafi?
Og svarið við því er ASCII.
>> ASCII er kortlagning á milli stafa að við myndum venjulega sjá í
Enska eins, A, B, C, undirstrika, bandstrik og
eitthvað svoleiðis.
Og það kort sem við ASCII gildi.
ASCII gildi er bara tala sem er hægt að skilja af tölvunni þinni.
Og rétt eins og þú getur gert til viðbótar og frádráttur með tölur, getur þú gert
þá með ASCII gildi.
>> Þannig að í þessu dæmi, hvað mun þetta prentað út?
Já, svo bara pláss B rúm C rúm D. Hvaðan mús minn fara?
Eftir að þú getur skilgreint int á 65.
Og þegar þú hefur prentað það út með því að nota prósent C, verður það að túlka það sem að
eðli og mun prenta út A.
>> Á sama hátt getur þú lýsa það sem bleikju.
Og þegar þú hefur prentað það út með því að nota prósent C, verður það að túlka það sem
prósent D. Og rétt eins og þú getur bætt við númer, getur þú bætt stafir eru
Gildin ASCII, í þessu tilfelli.
>> Svo aðeins bendiprik fyrir alla.
5, sem streng, er ekki reyndar jafn 5.
Svo hvernig gætum við breyta string 5 til heiltölu 5?
Einhverjar hugmyndir?
Já.
>> Þannig að ef við höfum 5 sem streng, við getum draga 0.
Og það mun gefa okkur 5.
Og sömuleiðis, ef við höfum 5 sem heiltala, bæta því í strenginn 0.
Og það gefur okkur band 5.
Cool.
>> Nú, muna aftur fyrirlestur einn þar við ræddum um reiknirit.
Svo hvernig við viljum í raun tölva að gera áhugavert?
Þú veist, bara að bæta og draga tölur og prentun það út er ekki
sem spennandi.
Venjulega, við viljum tölvunni okkar til að framkvæma einhvers konar reiknirit.
Eitthvað svolítið flóknara en bara einföld stærðfræði.
>> Reiknirit er bara skref fyrir skref sett leiðbeiningar um hvernig á að framkvæma
tiltekið verkefni -
bara eins og uppskrift.
Þú might muna fyrsta degi bekknum þar sem Davíð hafði okkur að telja herbergi
af fólki og hversu margir voru í herberginu.
Þú gætir verið að nota til að telja eitt af öðru.
1, 2, 3, 4.
Í því tilfelli, línulegum tíma reiknirit.
>> En Davíð kynnti reiknirit fyrir þú að telja fólk í herberginu
þar sem allir stendur upp, segir þú þitt tala til annars aðila, bæta við að
tala upp, og ein manneskja situr niður.
Og þú endurtaka það.
Það er ein tegund af reiknirit.
Við getum greina hvernig duglegur að Líkanið byggir á það er litið er.
En við munum tala svolítið meira um það síðar.
>> Svo öll algrím geta einnig vera skrifuð í sauðakóðanum.
Sauðakóðanum er bara enskur eins setningafræði notað til að tákna
forritunarmál.
Til dæmis, ef við vildum að spyrja notanda að giska uppáhalds númerið mitt, við
gæti hafa sauðakóðanum sem slíkt.
>> Fá A notendur giska.
Ef giska er rétt, segja þeim þeir eru rétt, annars segja þeim
þeir eru ekki rétt.
Og sauðakóðanum er leið auðveldlega fulltrúi hugmynd eða reiknirit.
Svo nú erum við might vilja til raunverulega skrifa þetta á því tungumáli sem tölvan
gæti skilning.
Þannig að við gætum skrifað sauðakóðanum og túlka þessi inn frumkóða.
>> Svo langt, kóðinn verður að fylgja að vissu setningafræði
forritunarmál.
Og svo langt, í CS50, höfum við verið að nota aðallega c.
Þannig að þetta gæti verið uppspretta merkjamál fyrir c.
Seinna á námskeiðinu, þú kemur nótt í snertingu við önnur forritun
tungumálum eins og PHP.
Eða ef þú tekur jafnvel öðrum flokkum, þú gæti gert Java, Python, eða jafnvel OCML.
En í c okkar program tungumál, þetta er hvernig við gætum skrifað kóðann fyrir
að sauðakóðanum reiknirit sem Ég lýst bara áðan.
>> Svo er hvernig tölvan þín í raun skilja að?
Eins og ég sagði áður, það er í raun aðeins skilur núll og sjálfur.
Svo hvernig virkar það fá úr upptö*** kóða til að fá eitthvað sem hægt er að
skilið?
Jæja, höfum við eitthvað kallað þýðanda.
>> Ef þú manst aftur í mest af psets, þú hefðir einhvers konar áætlun
skrifað í punktur c skrá.
Og þá myndi slá gera.
Svo hvað er að gera?
>> Þú getur slegið gera að safna saman þinn program vegna þess að einhver -
hver skrifaði p sett þitt; sennilega David -
skapað gera skrá.
Og það segir gera að vita til að keyra þinn þýðanda, kallaði clang, sem mun
þá þýða kóðann þinn til mótmæla númer, sem er núll og sjálfur
að tölvan þín skilur.
En smá seinna, munum við fara meira í dýpt um vistþýðendur.
>> Svo muna pset 0, þar sem - já, þú ert með spurningu?
>> Áhorfendur: [inaudible]?
>> Ræðumaður 1: Já.
Ég held að þeir í raun og veru ætti að vera á netinu.
Já.
>> Áhorfendur: Er það eins og [inaudible]?
>> SPEAKER 1: Það er ekki.
The eru á cs50.net/quizzes.
>> Áhorfendur: Slash Skyndipróf, rista 2013, rista 0, og bara smelli
Skyndipróf 2013 og quiz 0, endurskoða kafla skyggnur.
>> Ræðumaður 1: Já, þannig að ef þú krakkar vilja til að rífa það upp og líta á það á þinn
eigin tölvu, það er fínt líka.
Segja það aftur.
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Já, [inaudible] er gervibreyta.
Ó, já?
>> Áhorfendur: [inaudible]?
>> Ræðumaður 1: Nei, verkföll eru ekki á prófinu.
Því miður, spurning hennar var, var verkföll á prófinu.
Og það er ekki.
Svo pset 0, þú krakkar ættu að hafa alla framkvæmda eitthvað sem nota klóra.
Og við lærðum sumir undirstöðu forritun kubbar með grunni.
>> Þannig að við skulum taka a líta á sumir þessara kubbar
að gera upp a program.
Fyrst er Boolean tjáningu.
Boole tjáning eru þær og 0 eða eitthvað sem hefur
tvö möguleg gildi.
Í þessu tilfelli, satt eða ósatt, á eða burt, og já eða nei.
Dæmi um einfalt, mjög einfalt, forrit sem notar Boole
tjáningu hér.
>> Svo í röð til Boolean tjáning til vera gagnlegt, höfum við Boolean rekstraraðila.
Þetta eru rekstraraðila sem hægt er að nota að bera saman ákveðin gildi.
Þannig að við höfum og eða ekki jafnt, minni en eða jafnt og stærra en eða
jafnt og, og minna en eða stærra en.
En þessir aðilar eru ekki mjög gagnlegt nema að við getum sameinað þær í
aðstæður.
>> Svo þú krakkar might muna úr grunni og frá bls þinn setur að við
hafði skilyrði.
Þeir eru, í raun, eins og gaffla í röksemdafærsla forritinu sem
keyrir eftir því hvort skilyrði er uppfyllt.
Svo eitt af skilyrðunum sem við þurftum notaður oft í þessu námskeiði er
ef, annars, ef, og annars aðstæður.
>> Hér er dæmi um hvernig þú gætir notað það.
Hjartarskinn einhver vita muninn á milli bara að nota ef yfirlýsingar allar
leið niður vísur ef, annars, ef, og annað saman?
Já?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Einmitt.
Þannig að ef ég hefði ef alla leið niður þessa hátt, jafnvel ef þetta ástand skilar
satt, það verður samt að halda áfram prófa næstu tvennu.
Þar sem, með að annað-hvort, að annar yfirlýsingu, ef maður skilar satt,
hinir eru ekki prófaðir.
Einhverjar spurningar um það?
Cool.
>> Svo þú notar if-else af annars yfirlýsingu ef þú veist að það er einungis
vera einn af þessum tilvikum.
Þannig að við vitum ef X er minna en 0, það er örugglega ekki að fara að vera
stærra en 0.
>> Næst, annar bygging blokk sem við lærðum eru lykkjur.
Við höfum þrjár tegundir af lykkjur.
Fyrir lykkjur, en lykkjur, og gera á meðan lykkjur.
Og almennt, þegar þú sest niður til að skrifa eitthvað, verður þú að ákveða
hver af þessum þremur sem þú vilt nota.
Svo hvernig gera við að ákveða hver einn?
>> Við notum yfirleitt for lykkju ef við vitum hversu oft við viljum iterate
í gegnum eitthvað eða hversu oft við viljum til að framkvæma verkefni.
Við notum meðan lykkjur, ef að við Skilyrði til að vera satt að halda í gangi.
Og við notum ekki en mjög svipuð meðan, en við viljum númerið okkar til að keyra á
kosti einu sinni.
>> Svo á meðan, hvað er í gera mun alltaf að hlaupa að minnsta kosti einu sinni.
En með tíma, það getur ekki keyrt á öllum ef
ástand er ekki sáttur.
Einhverjar spurningar með því?
>> Svo uppbyggingu for lykkju.
Þú krakkar hafa allir séð þetta.
Þú frumstilla hana.
Þú hafa einhvers konar ástandi.
Svo, til dæmis, við gætum frumstilla sem að ég er 0.
I er minni en 10.
Og ég + +.
Mjög einfalt eina sem við höfum gert.
>> Fyrir while lykkju, á sama hátt, hefur þú að hafa einhvers konar frumstilling,
einhvers konar ástandi, og einhvers konar uppfærslu.
Svo við getum innleiða fyrir lykkja okkar einnig sem while lykkju með þetta.
Og álíka með gera á meðan lykkja, við gætum hafa sumir frumstilling,
framkvæma eitthvað, endurnýja það, og þá stöðva the ástand.
>> Svo nú virka.
Við setjum allt saman.
Við gætum vilja til að skrifa nokkrar konar virkni.
Common aðgerð sem þú gætir hafa séð þegar er aðal.
Helsta er fall.
Það hefur aftur tegund, int.
Það hefur nafn virka, helstu.
Og það hefur rök, argc og argv.
Svo helstu er bara fall.
>> Aðrar aðgerðir sem þú gætir hafa notað, printf - printf er fall -
GetInt, toupper.
En þetta skyldir hafa verið framkvæmda fyrir okkur með
einhvers konar bókasafn.
Ef þú krakkar muna þ.mt þetta CS50.h bókasafn eða
staðall I / O bókasafn.
Já, spurning?
>> Áhorfendur: Er helsta bara felast í c?
Er það bara svona [inaudible]?
>> Ræðumaður 1: Spurningin er ef helstu felst í c.
Og já, allar aðgerðir hafa helstu hlutverk.
Það er góður af nauðsynlegt fyrir tölvuna að vita hvar á að byrja
keyra kóðann.
>> Áhorfendur: Svo þú myndi ekki [inaudible]?
>> Ræðumaður 1: No
Aðrar spurningar?
Cool.
Svo bara eins og þú getur notað virka sem er skrifuð fyrir þig, getur þú einnig
skrifa eigin virka.
Þetta er fall sem einhver fyndi hafa skrifað til að reikna rúmmál
af Q, til dæmis.
Það er aftur tegund hér, í þessu tilfelli INT, nafn virka okkar q og okkar
Listi af breytum.
>> Og athugaðu að þú þarft að skrifa gögn tegund af breytu sem þú vilt
nota eða annars virka ekki vita hvers konar
breytu ætti ég að samþykkja.
Svo, í þessu tilfelli, að við viljum heiltala sem inntak okkar.
Svo hvers vegna gætum við viljum að nota virka?
>> Fyrst af öllu, frábært fyrir stofnun.
Þeir hjálpa brjóta upp kóðann þinn inn í meira skipulagt klumpur og gera
það auðveldara að lesa.
Einföldun.
Þetta er gott fyrir hönnun.
Þegar þú ert að lesa stykki af kóða og helsta hlutverk er í raun,
virkilega lengi, það gæti verið erfiðara að Ástæðan um hvað er að gerast.
Þannig að ef þú brýtur það niður í aðgerðir, það gæti verið auðveldara að lesa.
Og endurnýta-getu.
Ef þú ert með klumpur af kóða sem er verið að heitir eða keyra mörgum sinnum,
í stað þess að endurskrifa kóðann 10 sinnum í helstu hlutverk þitt, þú gætir
langar að endurnýta það.
Og þá í hvert skipti sem þú þarft að nota það stykki af kóða, kalla aðgerðina.
>> Svo nú ef við minnumst aftur að klóra, við ræddum líka um nokkrar hugmyndir,
einn sem er að þræða.
Þráður er hugmyndin um margra runur af kóða
framkvæmd á sama tíma.
Svo hugsa til baka til fyrsta degi, þar sem Davíð hafði þú krakkar telja burt fjölda
fólk í herberginu.
>> Í meginatriðum, hvað var að gerast á er allt ykkur voru
gangi aðskilda þræði.
Og þessir þræðir komu saman til að fá einhvers konar svar.
Á sama hátt, í grunni, þegar þú hefur margar sprites, gætir þú
hafa kött og hund.
Og þeir myndu vera samtímis keyra eigin forskriftir þeirra.
Það er dæmi um þráður.
>> Og hitt hugtak sem var kynnt í grunni var viðburðir.
Og atburðir eru þegar margar hlutar númerið þitt samskipti við hvert annað.
Í grunni, þetta var þegar þú notaðir útvarpsþáttur stjórn og þegar ég
Fá blokkir.
>> Og einnig, í Heimadæmi 4, sáum við A lítill hluti af atburðum eins og heilbrigður.
Þú krakkar gætu hafa notað á Gevent bókasafn.
Og það var fall waitForClick þar sem þú varst að bíða
fyrir notandann til að smella.
Og þinn smellur, í þessu tilfelli, væri Atburðurinn og bíða eftir smell er þinn
atburður dýraþjálfari.
>> Og einnig, um að keyra psets þínum og vinna á psets þínum, þú
gæti hafa komið í snertingu við sumar af þessum skipunum.
Þetta er það sem þú slóst inn þinn endastöðvar eða hvað gluggi
sem sýnir sig á g breyta til, meginatriðum, sigla tölvuna þína.
>> Svo til dæmis, LS listi yfir innihald möppu.
Gerðu skrá skapar nýja möppu.
CD, breyting skrá.
RM, fjarlægja, eyðir skrá eða einhver skrá.
Og þá fjarlægja möppu fjarlægir möppu.
>> Áhorfendur: [inaudible]?
>> Ræðumaður 1: Vissulega.
Því miður, spurningin var hvort þú myndi stinga setja þetta
á Cheat Sheet.
Það gæti hjálpað.
Ef þú hefur pláss, getur þú sett það á.
Það er líka bara almennt nógu gott til muna vegna þess að þegar þú notar það
þú might vilja til bara hafa það á minnið.
Sem mun gera líf þitt mun auðveldara.
Gerði ég svara spurningunni þinni?
>> Svo nú, við ræddum svolítið stuttlega um bókasöfn.
En tvö helstu verkefnum sem við höfum verið nota svo langt í námskeiðinu eru
staðall I / O og cs50.
Hvaða góður af hlutur eru í venjulegu I / O bókasafn?
>> Já, svo langt að við höfum notað printf.
Í cs50, höfum við notað GetInt og GetString.
Og gögn gerð band gerist einnig að vera lýst í þessari cs50 bókasafni.
Við munum tala svolítið meira í dýpt um hvernig bókasöfn virka og hvernig þeir
samskipti við restina af kóðanum þínum.
En þeir eru tveir helstu sjálfur að við hafa komið í snertingu við svo langt í
Námskeiðið.
>> Gerðum.
Þetta eru góð til að muna hversu mikið hver tegund er táknuð með eða hvernig
margir bæti hverja gerð þarfnast -
INT, 4 bæti, bleikju, 1 bæti.
Fljóta er 4 bæti.
Hvað er að tvöfalda?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Já, þannig að fljóta en tvöfalda.
Hvað um lengi?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: OK.
Hvað er langur?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Já, tvöfaldur við int.
Já.
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Long [inaudible].
Og þá lengi lengi er tvöfalt a.
>> Áhorfendur: Nei, nei.
A langur er bara int.
Það veltur á arkitektúr áður en [inaudible]
og INT hafa sömu stærð.
[Inaudible].
>> Ræðumaður 1: Svo langur og int eru þeir sömu.
Og þá lengi lengi er tvöfalt Int.
Cool.
Og þá, hvað er síðasta tegund?
>> Áhorfendur: Pointer.
>> Ræðumaður 1: Já, þannig að við lærðum svolítið um ábendingum.
Og án tillits til þess hvað bendillinn er bendir til - það gæti verið char stjörnu
eða int stjörnu -
það er alltaf 4 bæti fyrir bendi.
Spurningar um það?
Já?
>> Áhorfendur: [inaudible]?
>> Ræðumaður 1: Svo lengi og int eru sama í þessu cs50 tæki.
>> Áhorfendur: The tæki eru alveg víxlanlegur.
>> Ræðumaður 1: Já.
Svo þá lengi lengi er tvöfaldur int.
>> Áhorfendur: Þetta er 32 bita?
>> Ræðumaður 1: 32 bita, já.
>> Áhorfendur: Svo [inaudible]?
>> Ræðumaður 1: Já, ef það virkar ekki beinlínis segja, þú
ætti að gera ráð fyrir 32-bita.
>> Áhorfendur: Það myndi segja eitthvað eins gefnu að
arkitektúr eins tækinu.
Fyrir 64 bita, aðeins það sem breyting eru þráir og ábendingum.
Þeir báðir [inaudible].
>> Ræðumaður 1: Já?
>> Áhorfendur: Spurning.
Svo á einn af æfa Skyndipróf, hún biður um að óundirritaður Int.
Svo hvernig væri að vera ákvörðuð frá int [inaudible]?
>> Ræðumaður 1: óundirritaður í er einnig 4 bæti.
En hvað er öðruvísi um að undirritaður int og óundirritaður INT?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Hægri.
Maður getur táknað neikvæð gildi.
En hvernig er það að gera það?
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Já, það spara 1 bita til að tákna tákn.
Undirrituð hefur einn hluti sem táknar skiltið.
Og óundirritaður bara er allt jákvæður.
>> Áhorfendur: OK.
Svo þú segir að tvöfalda er tvisvar sinnum stærri en flotholt?
>> Ræðumaður 1: Double er tvisvar á stærð við fljóta, já.
>> Áhorfendur: Hvernig virkar bendillinn til a lengi lengi [inaudible]?
>> Ræðumaður 1: Svo er spurningin hvernig virkar bendillinn til fyrir lengi -
hvernig er að aðeins fjórir bæti þegar langa 8 bæti hennar.
Svo man hvað er bendi, meginatriðum, á mjög grunngildi.
>> Áhorfendur: [inaudible].
>> Ræðumaður 1: Já, þannig að bendillinn er bara minni.
Þannig að það skiptir ekki máli hversu mikið pláss sem bendillinn bendir til.
Það þarf aðeins 4 bæti til að halda utan þess minni staðsetningu.
Aðrar spurningar?
Cool.
>> Svo það síðasta sem ég hef er staðall framleiðsla.
Þú ættir að nota þá oft nóg að þú getur munað.
En þetta er þegar við notum printf, til dæmis.
Og við höfum þessar staðgengla sem voru kallaðir snið númer.
>> Svo prósent c bleikju, prósent ég fyrir int, og við getum einnig notað prósent d.
Það er það sama.
En almennt, í CS50 við reyna að nota hlutfall i.
Hlutfall F fyrir fljóta.
Hlutfall LD lengi lengi og prósent s fyrir streng.
>> Álíka, höfum við verið að nota nokkrar þessara flýja röð.
Til dæmis, sviga n fyrir nýja línu.
Þetta er bara fyrir þegar þú ert að forsníða númerið þitt til prentunar f.
Já?
>> Áhorfendur: Hvað er prósent D fyrir?
>> Ræðumaður 1: Svo spurningin er hvað er prósent D fyrir?
Hlutfall d er fyrir ints.
Hlutfall d og prósent i eru þau sömu.
>> Áhorfendur: Hver er munurinn á milli sviga n og sviga r?
>> Ræðumaður 1: Svo spurningin er hvað er munur bakslag n og
bakslag r?
Ég held að sviga r er -
>> Áhorfendur: Svo sviga r felur bara skilar til the byrjun af the lína
án þess í raun að fara til a nýr lína.
Þannig að ef þú prentað sviga r og þú fara aftur til the byrjun af the lína
þá þú prenta meira dót, þú skrifa efni sem er þegar á
[Inaudible].
En, n raun fer í nýtt lína og fer til [inaudible].
>> Ræðumaður 1: Jæja, aðrar spurningar?
Allt í lagi.
Ég ætla að afhenda það burt til Dan sem mun halda áfram.
>> [Applause]
>> DAN: Allt righty.
Þannig að ég ætla að tala um annars breiður úrval af hugmyndum frá bekknum sem eru
u.þ.b. fulltrúi viku tvö og að byrja á viku þrjú að byrja á
með steypu, sem er bara leið til að að meðhöndla gildi af ákveðinni tegund eins og
gildi af annarri gerð.
Þannig að við getum gert þetta með stafir til ints, fljóta til ints, og
langur þráir að tvöfalda.
>> Öll þessi atriði er hægt að nota sem leiðir að meðhöndla nokkur tölugildi
mínus bleikju sem einhver annar tölugildi.
Þannig að það eru nokkur atriði með þetta, Auðvitað, sem kemur þegar þú kastar
hlutir eins og fljóta til ints.
Þannig að þetta er svolítið skrítið.
Við höfum fljóta sem er 1.31.
Við margfalda það með 10,000.
Og þá erum við að prenta það sem int.
Hvað þýðir þetta framleiðsla?
10.000 sinnum 1,31.
Svo er 13.000 að giska?
>> Áhorfendur: Ég held að það er 10.000.
>> DAN: Þannig að ég ætla að margfalda það með 10.000 áður en ég ætla að kasta því.
>> Áhorfendur: Ó.
Vildi ekki að það að vera ein 9 og sumir 0 tölur?
>> DAN: Þú gætir hafa sumir furðulegur tölustafir.
Svo rétt, það er 1,3 sinnum 10.000.
Svo er það 13.000.
Og þetta auka undarlegt -
>> Áhorfendur: 13.100.
>> DAN: 13.100.
Þakka þér, Rob.
Og þetta auka weirdness -
þetta 9,9 -
er einfaldlega vegna þess að þetta steypu endaði upp námundun niður þar
það ætti ekki að hafa.
Já.
>> Áhorfendur: The steypu gerist eftir allt annað?
>> DAN: Svo vegna þess að ég hef þetta á prenti, það er þetta margföldun áður en það
er þetta steypu.
>> Áhorfendur: [inaudible].
>> DAN: Ég held að það myndi varpa fyrst, já, sem væri 10.000.
Nokkuð fleira?
Cool.
Þannig að þetta er 13.099.
Hvers vegna virkar þetta gerast?
Imprecision.
>> Fljóta eru ekki fullkomin.
Þeir geta aðeins tákna númer til að ákveðinn fjölda marktækra tölustafa.
Þannig að ef við prentum út 8 Sig fíkjur á þetta fljóta, fáum við eins konar
ljót útlit númer.
Og það er vegna þess 1.31 getur ekki nákvæmlega að koma fram með einfalt
veldi af tveimur í vél.
Svo það endar að taka næst giska, sem endar
vera svolítið lágt.
Skynsamleg?
OK.
>> Nú, kveikt eru öðruvísi leið gera skilyrt yfirlýsingar þar sem allir
við vænt um er eitt breytu.
Þannig að í þessu tiltekna dæmi, við erum að fá heila tölu sem nær frá notandanum.
Og þá erum við að horfa á hvað sem heiltala er.
Væntanlega, það er númer milli eitt og fjögur.
Það er það sem við erum að biðja um.
>> Svo þú gerir skipta um breytan nafn.
Síðan sem þú setja upp tilvik hugsanlegra gildi það gæti verið.
Svo ef einn, segja að það er lágt.
Og þá þú brýtur til að fá út á rofi stöðu þannig
þú viðurværi ekki að fara.
>> Í næsta tilfelli -
svo málið tveir og ræða þrjú -
ef það er málið tvö það lækkar bara niður fyrsta lína af kóða það sér eins og með
tilfelli þrjú þar til hann sér hlé.
Svo ástæðan að þú færð ræða einn til aðeins prenta lágt er vegna þess að ég
hafa þessa pásu hér.
Ef ég, segjum, hunsa þetta brot - ef ég kastaði þessu skjöldu -
það myndi prenta lágt, og þá væri prenta miðju, og þá myndi brjóta.
>> Svo brot eru mikilvægur hluti af skipta aðstæður og
þeir ættu að vera þar.
Hvaða tilvikum sem ekki eru tilgreind sérstaklega eru meðhöndlaðar af sjálfgefið
ræða í rofi og ætti að kasta.
>> AUDIENCE: So 1, 2, 3, og 4 væri n?
>> DAN: Gildi sem n getur verið.
Já.
Já?
>> Áhorfendur: Svo þegar þú ert að [inaudible]?
>> DAN: Þú myndi prenta lágt, og þá það myndi prenta miðju og
þá myndi brjóta.
>> Áhorfendur: Hvers vegna vildi það prentað miðja ef [inaudible]?
>> DAN: Svo allt undir máls áður en brot fellur undir.
Svo er málið Einn Prenta undir mál einn sem er þessa eftirfarandi prenta.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Svo er bara sérstaklega þetta númer gildi sem þessi breyta
getur tekið, ekki satt?
Er að skynsamleg?
Já.
>> Áhorfendur: [inaudible]?
>> DAN: Já, málið tveir myndi prenta miðja og þá brjóta.
>> Áhorfendur: [inaudible]?
>> DAN: Ég held að allir?
Hvaða önnur tegund gagna hægt að skipta yfir?
>> Áhorfendur: Þú getur skipt yfir hvaða gerðir gagna.
En það þýðir bara nokkuð yfir stafir og ints og eitthvað svoleiðis, því
ef þú ert að skipta yfir músina sem er í raun ekki skynsamleg,
skipta yfir fullt, ef það láta jafnvel er þú gerir það, vegna fleytitölu
í nákvæmni, myndir þú ekki í raun langar að gera það engu að síður.
Svo ansi mikið, bara ints og stafir og eitthvað svoleiðis.
>> DAN: Já, það er þegar þú ert skýr gildi sem þú veist, ég held, getur verið
að rofi er raunverulega gagnlegur.
Gott?
OK.
>> Umfang er svið sem lýst breytu nær.
Þannig að í þessu litla klumpur af kóða sem ég hef, það væri full af villum.
Og ástæðan er að ég lýsti þessu int Ég innan gildissviðs um þetta fyrir lykkju.
Og þá er ég að reyna að vísa að Ég utan að fyrir lykkja gildissvið.
>> Svo í grundvallaratriðum, getur þú hugsa um umfang eins og nokkuð sem þú lýsa
með inni a setja af hrokkið axlabönd aðeins er innan þeirra hrokkið axlabönd.
Og ef þú reynir og nota þá breytu utan af þeim hrokkið axlabönd, þú munt
fá villu frá þýðanda.
Já?
>> Áhorfendur: svo þetta virkar ekki?
>> DAN: Þetta virkar ekki, já.
Strengir.
String char *.
Þeir eru nákvæmlega það sama.
Þeir eru bara ábendingar til stafi.
Og allir strengir sem þú hefur á að enda með sviga núll, sem er bara
A c venju.
>> Það er kallað NULL Ljúka.
Og NULL -
höfuðborg N, höfuðborg U, höfuðborg L, höfuðborg L -
er ekki það sama og að NULL Ljúka.
Þetta er músina.
Þetta er eðli.
Þeir eru mjög greinilegur.
Muna það.
Það mun vera á spurningakeppni, sennilega.
Ég hef ekki séð prófið.
Já?
>> Áhorfendur: Svo NÚLL er, segjum, bendillinn?
>> DAN: Já.
>> Áhorfendur: Hvað er [inaudible]?
>> DAN: Ef, segjum, malloc er kallað þegar þú hefur ekki nóg minni til að fá
hvað stærð þú ert að biðja um, malloc mun skila NULL.
Það er, í grundvallaratriðum, þegar fall er ætlast til að skila músina, þú
þarf að athuga gegn NÚLL vegna NULL er nokkuð góð -
það er, svona, sorp gildi.
Það er núll eins langt og ábendingum fara.
>> Alltaf þegar þú kalla virka, sem skilar bendi.
Þú ert að fara að vilja til skrá til að vera viss um að þessi bendillinn er ekki NÚLL
því NULL er mjög algengt.
Það er tegund af sorp aftur.
Þannig að ef eitthvað fór ekki rétt, bara skila NULL staðinn.
>> Áhorfendur: [inaudible]?
>> DAN: Já, og það er þetta.
>> Áhorfendur: [inaudible]?
>> DAN: Stafa það sem þetta.
Það er NULL Ljúka.
Það er lágstafir N-U-L-L ef þú ert stafsetningu það.
>> Áhorfendur: Og ég fór bara aftur og prófa það.
Og ef þú reynir að setja fljótandi punkt gildi í rofi, munum það æpa á þig
segja, yfirlýsing krefst tjáningu af heiltölu tegund.
>> DAN: Þar sem þú ferð.
En já, hver var spurningin aftur?
>> Áhorfendur: [inaudible]?
>> DAN: Svo höfuðborg N, höfuðborg U, höfuðborg L, höfuðborg L er í raun c hlutur.
Það er NÚLL músina og mun Aðeins er hægt að meðhöndla sem slíkt.
Þú munt ekki alltaf að reyna og stafsetja NULL eðli og sjá hvaða
önnur leið en þetta.
Já?
>> Áhorfendur: Svo aftur til bleikju max eða eitthvað í skýringum, myndi það
staðfest sömu aðgerð sem [inaudible]?
>> Áhorfendur: Svo ertu að vísa til aftur bleikju hámark frá getchar, eða
hvað sem það er?
>> Áhorfendur: Já.
>> Áhorfendur: Já, þannig að almenn orð fyrir öllum þeim hlutum
eru SENTINEL gildi.
Svo eins aftur int max frá GetInt og bleikju hámark frá getchar, það er
átti að vera eins og, allt í lagi, ef þetta eru aftur að okkur,
eitthvað fór úrskeiðis.
>> Fyrir ábendingum, erum skyldir bara að hafa þetta Sentinel gildi að allir
samþykkir á.
Og þetta er hlutur sem þú aftur þegar hlutirnir fara úrskeiðis.
Svo char max er það sem við erum að nota að tákna eitthvað
eins NULL Eða getchar.
>> Áhorfendur: Svo ef þú ert að prófa getchar, væri hægt að setja bara NÚLL?
Vildi að gera a mismunur?
>> DAN: Þú getur ekki bara að athuga NULL.
Þú vilt verða að athuga bleikju max því skilagildi frá fallinu er
eðli ekki músina.
Já?
>> Áhorfendur: Þessi spurning spyr fyrir streng lengd.
Er að innihalda NULL staf?
>> DAN: Nei
Og það er í raun hvernig band lengd veit að hætta vegna þess að það fer í gegnum
array yðar af stöfum þar til það sér NULL staf.
Og þá er það eins, allt rétt, ég er búin.
>> Áhorfendur: [inaudible] fimm?
>> DAN: Halló væri fimm.
Yep.
Svo fylki eru samfelld blokkir af minni.
Þeir hafa augnablik aðgangur því að segja að nafn fylkisins og þá, í hrokkið
axlabönd, hvað vísitalan þú vilt fara til, þá eru þeir vísa frá núlli í gegnum
lengd array mínus 1.
>> Og þeir eru lýst af tegund sem hlutur sem þú ætlar að geyma í
array, nafn fylkisins, og þá hvað stærð er þessi fylking.
Þannig að þetta er char fylki af lengd sex sem hefur þessi gildi.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Já.
>> Áhorfendur: [inaudible]?
>> DAN: Ef þú ert það sem er að gerast inn í array þegar gert.
Svo þú gætir tilgreina þetta í staðinn sem, segja, bleikju, hvað nafn þitt
array er, tóm sviga jafngildir hrokkið Brace H kommu E kommu L kommu L kommu
O kommu NULL eðli og hrokkið Brace.
Það myndi einnig starfa sem yfirlýsingu.
>> Áhorfendur: [inaudible]?
>> DAN: Þá þarftu að hafa stærð þegar gert.
>> Áhorfendur: [inaudible]?
>> DAN: Já.
Allt righty.
Stjórn lína rifrildi eru leið fá inntak frá notanda sem
rök að helstu.
Main tekur tvær breytur.
Fjölda rök sem verið er að framhjá eftir skipanalínu og a
band vektor eða streng array af öllum rö***.
>> Þannig að ef ég að segja, sem kallast aðgerð, svo sem punktur út 1 rúm, 2 rúm, þrír,
argc yrði 4.
Og argv 0 væri punktur út.
Argv1 væri 1.
argv2 myndi vera 2. argv3 væri 3, í því tilfelli.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Síðasti þáttur í array því fylki er lengd argc plús
einn af argb, síðustu þáttur er NULL músina.
Það er argc auk 1.
Svo í tilfelli sem ég sagði að ofan, það yrði argv 0 er punktur út.
argv 1 er 1. argv2 er 2. argv 3 er 3.
argv 4, sem er eitt stærri en argc væri NULL.
>> Og það er NULL músina.
Já.
Og það er vegna þess að strengur er char stjarna er bendillinn.
Svo það þarf að vera sama tegund.
Já?
>> Áhorfendur: Tvær spurningar.
Svo einn, hvað er munurinn á milli þetta og GetString annað en eina tegund
í the notandi vél?
Og tveir, er það geymt innan nýleg minni þitt?
Svo eins, GetString myndi vera [inaudible]?
>> DAN: Hvar er það geymt?
Ég veit ekki hvar það er geymt.
>> Áhorfendur: Svo, reyndar, þú veist hvernig allir aðgerð sem þú kalla það er rök
eru geymdar í stafla?
Svo argc og argv eru rök til helstu og þeir eru á mánudaginn, eða í raun
rétt fyrir ofan það sem þú hugsar sem the byrjun af the stakkur.
Hvað var annar hluti af þeirri spurningu?
>> Áhorfendur: Svo hvað er [inaudible]?
>> DAN: Já, það er bara öðruvísi leið að fá inntak frá the notandi.
Örlítið skilvirkari og þetta er það er handier fyrir forskriftir vegna þér
getur bara fara rök að helstu verkefni þín virka frekar en að þurfa að bíða
fyrir notendur ef þú ert ekki með neina notendur.
>> Áhorfendur: Og já, fá strengi væri [inaudible].
Það myndi geyma efni sem þú þarft.
>> DAN: Já?
>> Áhorfendur: [inaudible]?
>> DAN: Já, argv 0 nær alltaf punktur rista á virka símtalinu.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Já, hvert rök endaði í NULL staf vegna þess að þeir
eru strengir.
>> Áhorfendur: [inaudible]?
>> DAN: Já, argv argc er NULL músina.
>> Áhorfendur: [inaudible]?
>> DAN: Oh já.
Já, því miður.
>> Áhorfendur: Svo [inaudible]?
>> DAN: Svo er spurningin ef þú hefðir stjórn lína punktur rista punkt út 1, 2,
myndi fjöldi lína rök vera tveir eða myndi það vera þrír?
>> Áhorfendur: Ég held að það gerist ekki máli.
ÉG hafa tilhneigingu til að segja, ó, að þú ekki standast allir stjórn lína rifrildi þegar,
augljóslega, þú kallaðir aðgerðina.
Svo ég tilhneigingu til upphátt útiloka virka frá the stjórn lína
rök jafnvel þó að það er innifalinn í argv.
>> DAN: En ef það var á prófinu -
já - og líka ef þú segir eitthvað eins argc jafngildir 3,
þú ert í öruggum standandi.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Ég held að ef í stað þess að kalla þessa í argc og band argv sviga
en hélt sömu tegund og hringdi þá eitthvað öðruvísi eins og
og b, myndi það vinna enn?
Og það væri enn að vinna, Þú vildi bara -
stað þess að nota argc - þú vilt nota a og b.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Svo spurningin er GetString er að fara að geyma minni í hrúga
því GetString er char *.
Það geymir minni í hrúga því það Símtöl Nú malloc innan raunverulegt
framkvæmd GetString.
OK, áhrifamikill á.
>> Öryggi.
Svo til að vera sannarlega öruggur, treysta þér á engan einn og þú leyfa enginn aðgang að öllum
þínar, sem er ástæðan allir byggir eigin vél,
eigin rekstri þeirra kerfi, allt sitt forrit frá grunni, og augljóslega
ekki tengjast öðrum vélum gegnum internetið.
Svo tölvur eru óörugg.
Þeir eru í raun.
Við verðum að treysta á aðra.
>> Og hugmyndin um öryggi er að þú ert að reyna að takmarka magn af
treysta því að þú þarft.
Og einn af þeim aðferðum sem þú gert það er í gegnum dulmál.
Dulmál er, í meginatriðum, við höfum leyndarmál.
>> Stundum verðum við að fara leyndarmálum okkar ásamt með, segjum, internetinu eða
aðra hluti.
Og við viljum ekki fólk að vita þetta leyndarmál.
Þannig að við að dulkóða leyndarmál okkar í leiðinni sem við vonum að enginn getur fundið út.
>> Svo við notuðum -
í gegnum námskeiðið í þessum flokki -
hluti eins og Caesar dulmál og [Inaudible], eru sem bæði mjög, mjög
óörugg leiðir brengla hluti.
Þeir eru auðvelt að reikna út hvað þeir eru og hvað leyndarmál þín eru.
The raunverulegur veröld notar miklu meira flókinn dulkóðun kerfum.
Og við munum ekki fá inn miklu meira en það.
>> Kembiforrit.
GDB er bestur.
Ég ætla að leggja áherslu á þetta aftur.
Notaðu gdb allan tímann hvert þegar þú átt í vandræðum.
Skipanir sem eru gagnleg í gdb eru brjóta, sem þú framhjá annaðhvort línu
númer, fall nafn, fyrst og fremst hvar í númerið sem þú vilt hætta,
og vera fær um að taka stjórn.
>> Prenta tekur breytu og prentar út hvað sem breyta er á að
benda í framkvæmd þinn.
Næsta færist framkvæmd þinn ásamt einu skrefi.
Og stíga stíga inn fall í framkvæmd þinn.
>> Aðrir hlutir eru að keyra, sem er hvernig þú keyrir í raun kóðann þinn.
Halda áfram tekur öll þau skref sem þarf að fá til the næstur brot lið.
Og það eru margir, margir aðrir.
Líta þær upp.
Þeir eru frábær.
Já?
>> Áhorfendur: [inaudible]?
>> DAN: Já, sem er aflúsara.
Svo aflúsara er forrit sem gerir þér kleift að kemba program.
Það er ekki forrit sem finnur galla fyrir þú, þó að það væri frábært.
>> Og síðast fyrir mig er að leita.
Svo gerðir af Leita sem við ræddum um í þessum flokki eru línuleg leit,
sem er bara að þú horfir í gegnum hvert þáttur leit rúm, einn
þáttur í einu, þar til þú finnur það sem þú ert að leita að eða þar til þú nærð
í lok leit rúm þar sem Benda þú segir að þú getur ekki fundið
þáttur sem þú varst að leita að.
Og þetta tekur í besta föstu tíma, sem er 0 af 1 og í versta falli línuleg
tíma, sem er 0 á n.
>> Tvíundarleit, sem þarf sordid atriði.
Þú ferð til miðju þætti þínum, sjá hvort þátturinn sem þú ert að leita að
er stærri eða minni en frumefni að þú ert á miðju.
Það er það stór, þú segir að botn af leit rúm er þinn
núverandi staðsetningu, miðju, og þú endurræsa ferli.
Ef það er lítill, þú lítur segja að - já, hvað er uppi?
>> Áhorfendur: [inaudible]?
>> DAN: Já.
Hvers konar tegund sem er verið að kenna í bekknum er sanngjarn leikur fyrir próf.
>> [Hlátur]
>> DAN: Og sú staðreynd að þú hefur ekki haft að gera það fyrir Heimadæmi, að það sé óhætt
leikur fyrir próf.
>> Áhorfendur: Getum við farið yfir það hvernig á að -
>> DAN: Það verður farið yfir.
>> Ræðumaður 2: Raunveruleg kóða fyrir [Inaudible] er á study.cs50.net.
Þannig að ef þú horfir á æfingu vandamál í Mergesort síðu
study.cs50.net, það er númer um framkvæmd Mergesort.
Svo þú þarft ekki að framkvæma það sjálfur í kvöld.
En vertu viss um að þú skiljir það frekar en bara minnið það.
>> Áhorfendur: [inaudible]?
>> Ræðumaður 2: The Mergesort síðu á study.cs50.net, það er reynd
vandamál sem, ef þú smellir á vandamál, aftast er
Lausnin, sem er á sameiningu Raða framkvæmd.
En vertu viss um að þú skiljir það frekar en bara leggja á minnið það
eða afrita það niður.
>> Áhorfendur: Og fullkomlega gild Vandamálið fyrir prófið væri
eitthvað eins og hér er listi.
Hvað þýðir þessi listi líta út eftir eitt skref af vali konar eða
Innsetningarröðun eða hvað.
Einn fullur endurtekning af listanum.
Svo jafnvel ef þú endir ekki upp að þurfa að kóða fyrir það, þú þarft að skilja það
nóg að vita hvernig það er að fara til að breyta þessum array.
>> DAN: Það er það fyrir mig.
>> [Applause]
>> LUCAS: Hey allir.
Mitt nafn er Lucas.
Ég ætla að tala um endurkvæmni, allt þær tegundir sem við höfum lært, og
svolítið af öllum ábendingum.
OK?
Svo fyrst af öllu, endurkvæmni.
Hvað þýðir það að segja að fall er endurkvæma?
>> Áhorfendur: kallar sig.
>> LUCAS: OK, kallar sig, já.
Svo eins og þessi mynd, til dæmis.
Það er eins og á myndinni inni um mynd og svo framvegis.
Svo til dæmis, þú getur haft - Dan sem var að tala um tvöfaldur leit.
Ein leið sem tvöfaldur leit er endurkvæma er sú staðreynd að þú ert
að reyna að finna númerið.
Svo þú ferð að miðju.
Og þá þú athuga hvort tölurnar þar í vinstri og í hægri.
>> Og þá ef þú finnur út númerið er að fara að vera á vinstri, það er sama
hlutur sem gera leitina aftur en bara til vinstri á listanum.
Svo er það hvernig það hljómar eins og það er endurkvæma.
Svo að hvers vegna þú krakkar hafa endurkvæma lausn fyrir Mergesort.
>> OK, svo hér er dæmi.
Svo skulum segja að ég vil velja allar tölur frá 1 n.
Ég get átta sig að summa n tala er n plús n mínus 1 allt að 1.
En þá, ef ég horfi á N mínus 1 plús n mínus 2 plús 1, sem er sama
hlutur sem toppur tölur allt að n mínus 1.
Svo ég get sagt summu jafn summu jafngildir n auk Summa n mínus 1.
Er að skynsamleg?
>> Og ég líka hefði eitthvað annað kallað grunn tilfelli, sem er að
summa upp tölurnar að núll væri núll.
Svo um leið og ég kem til fjölda núll, ég hætti að telja.
Er að skynsamleg?
>> Svo er hér dæmi um hvernig Ég get framkvæma það.
Svo ég hef þessa aðgerð í sumar.
Sem tekur heiltölu n.
Svo hér er ég að athuga fyrst ef n er minna eða jafnt og núll.
Svo ef það er minna en eða jafnt og núll, I aftur núll, sem er undirstaða mál okkar.
Annars, get ég bara aftur n plús summan af tölum
einn til n mínus einn.
Skynsamleg?
OK.
>> Svo hér er það sem það lítur út.
Þú hefur summan af 2 jafningjar 2 plus summan af 1.
Og sumir af 1 er 1 plús summan af 0, sem er 0.
Skynsamleg?
Þannig að ef við skoðum stafla af þinn program, þetta er það sem það lítur út.
>> Fyrst höfum við helstu hlutverk.
Og þá helsta hlutverk kallað summa 2.
Og þá summa 2 er að fara að segja, ó, summa 2 jafngildir 2 plus summu einn.
Svo ég bæta summan af 1 til stafla.
Og summa 1 er að fara að hringja í summu 0, sem er líka að fara til að bæta við
að stafla.
Og þá hvert þessara þau sem eru ofan á aðra verða að snúa aftur
áður en annar sjálfur getur haldið áfram.
>> Svo til dæmis, hér, summan af 0, fyrst, er að fara að skila 0.
Og þá velja summan af 1.
Þá summan af 1 er að fara til skila 1 til summu 2.
Og að lokum, summan af 2 er að fara að skila 3 til helstu.
Er að skynsamleg?
>> Það er mjög mikilvægt að skilja hvernig stafla er að vinna og reyna að
sjá hvort það er vit í.
OK, svo flokkun.
Svo hvers vegna er flokkun mikilvægt, fyrst af öllu?
Hvers vegna ættum við að kæra?
Einhver?
Gefðu mér dæmi?
Já?
>> Áhorfendur: [inaudible].
>> LUCAS: Já, allt í lagi.
Svo þú getur leitað á skilvirkari hátt.
Það er góð leið.
Svo, til dæmis, höfum við mikið af hlutir, reyndar, í lífi okkar sem
eru flokkuð.
Til dæmis, orðabækur.
>> Það er mjög mikilvægt að hafa öll orð í einhvers konar röð sem við
geta nálgast á auðveldan hátt.
Svo er það það sem hann var að segja.
Hægt er að leita á skilvirkari hátt.
Hugsaðu um hversu erfitt það væri að hafa orðabók sem orðin eru í
handahófskenndri röð.
Þú þarft að líta á, ansi mikið, hvert einasta orð þar til þú finnur
orð sem þú ert að leita að.
>> Ef þú ert að nota Facebook líka, þegar þú ert að horfa á vini þína, þú ert
fara að sjá að Facebook setja þinn nær vinur er ofan á þær
að þú talar ekki það mikið.
Ef þú ferð alla leið til the botn af vinalista þinn, þú ert að fara að sjá
fólk sem þú sennilega ekki einu sinni mundu að þú ert vinur.
Og það er vegna þess að Facebook konar vinir þínir byggt á hvernig
langt þú ert til þá.
>> Svo skipuleggja gögn.
Einnig Pokemon.
Svo þú sérð að allir pokemons hafa tölur.
Og það er eins auðvelt vegur af aðgangur gögn.
>> Áhorfendur: Aðgangur Pokemon.
>> LUCAS: Já.
>> Áhorfendur: [inaudible].
>> LUCAS: Já.
OK, svo val konar.
Val tagi er að fara að velja Minnsta óflokkað gildi lista hvers
tími í hverri ítrun.
Það er góður af eins og því tagi sem þú gerir í hausnum þegar þú ert að reyna að
raða lista á hönd.
>> Í grundvallaratriðum, það eina sem þú gera er að þú horfir fyrir minnstu tölu.
Þú setur það í raðað listanum.
Og þá útlit fyrir Næsta minnsti fjöldi.
Og þá þú halda að gera sem og svo framvegis.
>> Svo er val konar grundvallaratriðum þú velja í hvert skipti sem minnstu
óflokkað gildi.
Setja í lok á tegund hluti af listanum.
Og halda að gera það.
Svo skulum sjá fljótt hvað þetta lítur út.
Svo hér er raðað og óflokkað lista.
>> Svo fyrir raðað á lista, það er tóm í upphafi.
Og þá ætla ég að velja Minnsta fjölda hér, sem er 2.
Svo ég fá númer 2 og ég setti í framan listanum.
Og þá er ég að leita að næsta minnstu þáttur, sem er 3.
Svo ég setti það í lok á raðað lista.
Og þá er ég að halda að gera það.
Mér finnst 4 og setja það í lokin.
Finna 5 og setja það í lokin.
>> Og líta á hvernig allar þær stundir sem Ég er að segja setja það í lok er,
grundvallaratriðum, skipta tvö gildi.
OK?
Og svo það síðasta, þú bara hafa einn fleiri frumefni.
Svo það er þegar raðað.
>> OK, svo Innsetningarröðun.
Innsetningarröðun þú ert að fara að hafa einnig að hlutur af having a raðað og
er óflokkað lista.
Það eina sem er að í hvert sinn sem þú ert að bæta stak til raðað
lista, þú velur bara þáttur sem er framan við óflokkaðs listanum.
Og svo þú ert að fara að finna það stöðu það ætti að vera í raðað
hluti af listanum.
>> Við skulum sjá hvað þetta er svo þetta gerir meira vit.
Svo fyrst, til dæmis, ég að reyna að setja númer þrjú Í
raðað hluti af lista.
Svo listinn hefur ekki neitt.
Svo ég get bara setja númer 3.
>> Nú, ég vil bæta við númer 5 til sem raðað hluti af listanum.
Svo ég líta á númer 5.
Ég tók eftir því að það er meiri en 3.
Þannig að ég veit að það þarf að vera eftir 3.
Svo ég setti 3 og 5.
>> Þá vil ég að setja númer 2.
Ég tók eftir því að númer 2 er í raun síðast þá both 3 og 5.
Svo ég hef í raun að setja það allt leið í upphafi listans.
Svo ég verð að, eins konar, skipta öllum þættir í raðað listanum svo ég get
búa til pláss fyrir númer 2..
>> Þá vil ég sjá fjölda 6.
Ég sé að það ætti að vera eftir 5.
Svo ég setti það þar.
Og að lokum, leita ég á númer 4.
Og ég tók eftir að það ætti að vera á milli 3 og 5 daga.
Og þá er ég sett hana þar og breyting allir aðrir þættir.
Skynsamleg?
>> Bubble Sort.
Svo er kúla tegund grundvallaratriðum það sem þú ert að fara að gera - við köllum það kúla
Raða vegna þess að þú ferð í gegnum listann - það er í raun betra ef ég sýna bara
þú eins og this -
og þú ert að fara að bera saman aðliggjandi númer.
Og þú ert að fara að skipta á sínum stöður ef þeir eru ekki
í réttri röð.
>> Svo í grundvallaratriðum, hvað er að fara að gerast er hér, til dæmis,
þú hefur 8 og 6.
Þú veist að raðað pöntunin raun að vera 6 og 5, ekki satt?
Svo þú ert að fara að skipta á skipunum.
Þá sé ég 8 og 4 hér.
Og ég gera það sama.
Ég skipti aftur.
Og að lokum, 2 og 8.
Ég skipta líka þá.
>> Það heitir Bubble Raða því eftir hvert þessara endurtekningar, reyndar,
mesti fjöldi á listanum fær allt leiðin til loka listanum.
Er að skynsamleg?
Því það heldur skipta um það og færa það til hægri.
>> OK, þannig að þetta er annað endurtekning.
Það væri það sama.
Ég skal gera eina skipti og þá seinast.
Ég að það eru engar skiptasamninga og listinn er flokkað.
Svo í Bubble Sort, halda við í rauninni fara í gegnum listann og skipta
hlutir þar til ég taka eftir að ég gerði það ekki allir samningar gera það endurtekning, sem
þýðir þessi listi er þegar raðað.
Skynsamleg?
>> Skulum tala svolítið um að keyra tíma.
Svo gera þú krakkar muna Big O, Omega, og Þeta?
Já?
OK, hvað er Big O, fyrst af öllu?
>> Áhorfendur: [inaudible].
>> LUCAS: Já, það er kallað versta afturkreistingur, sem þýðir bara að það er
hversu mikið þú átt von á forritið að taka að hlaupa.
Eins og, að því er varðar -
í þessu tilviki - n.
Fjöldi staka í lista í versta tilfelli.
Eins og í versta mögulegt tilfelli.
>> Svo fyrir Bubble tagi, til dæmis, Við höfum stóra O í n torginu.
Hvers vegna höfum við það?
Hvers vegna er kúla Raða Big O n veldi?
>> Áhorfendur: [inaudible].
>> LUCAS: Já, svo versta tilfelli verður að ég ætla að gera N endurtekningar.
Svo hvert endurtekningar er að fara að koma stærsti þátturinn til enda
af listanum.
Svo það er versta sem ég hef að gera þessi hlutur n sinnum.
Og fyrir hvert af þeim tímum, ég verð að gera N skiptasamninga vegna þess að ég þarf að bera
hver tvö atriði.
Svo er það hvers vegna það er n veldi því það er n sinnum n.
>> Þá val tegund er einnig n veldi því, fyrir hverja endurtekning, ég verð að
líta á hvert einasta frumefni í listanum.
Og þá finna minnstu, sem þýðir að ég þarf að
líta í gegnum N þætti.
Og ég verð að gera það n sinnum þar Ég verð að velja allt N þætti.
>> Innsetning tegund er einnig n veldi vegna versta falli mun
vera einn, ég verð að setja inn n tölur, ekki satt?
Þannig að ég veit nú þegar að ég er að fara að hafa n endurtekningar.
En fyrir hvern þær tölur, ef ég hefði að líta á allar tölur í
sem raðað lista og setja það alla leið í framan, sem mun vera n ferningur
því það verður n sinnum n aftur.
Skynsamleg?
Hvað um ómega?
>> Áhorfendur: [inaudible].
>> LUCAS: Það er Best Case atburðarás.
Svo það er eins, í fullt af tímum til flokkun, besta falli er
þegar listinn er þegar raðað.
Svo þú í raun ekki hafa að gera neitt.
Kúla hefur Raða besta falli á n.
Ert þú krakkar vita af hverju?
>> Áhorfendur: [inaudible].
>> LUCAS: Já, ef þú fylgst með hvort gögn sóknir hafði einhver skiptasamninga eða
ekki, ef þú ert eitthvað eins og sett á satt ef það væri endurtekning, ef
Listinn er þegar raðað, í grundvallaratriðum, hvað er að fara að gerast er að ég ætla að
reyna að skipta hverju tveggja aðliggjandi þætti.
Ég ætla að sjá um að það eru engar skiptasamninga.
Og ég aftur bara strax.
>> Svo það þýðir að ég þurfti bara að fara í gegnum listann einu sinni.
Svo er það n vegna þess að ég leita á N þætti.
Hvers vegna val Raða n veldi?
>> Já, jafnvel ef listi er flokkaður, fyrir hvert endurtekning af val tagi, ég
hafa til að velja lágmarki frumefni.
Svo það þýðir að ég hef út á að líta á alla þætti í óflokkað
listi og finna lágmarki fyrir hverja ítrun.
Er að skynsamleg?
>> Og innsetning sverð er N Vegna þess að í mál sem ég er að reyna að setja á
tölur og allar tölur, þegar ég reyna að setja þá, ég sé að þeir
eru í rétta stöðu.
Ég þarf ekki að fara að athuga alla aðra tölur í óflokkuðu listanum.
Svo að hvers vegna það verður n.
Skynsamleg?
Og hvað er þeta?
>> Áhorfendur: [inaudible].
>> LUCAS: Hvað, hryggur?
Segja það aftur.
>> Áhorfendur: [inaudible].
>> LUCAS: Einmitt.
Svo þú getur séð að aðeins val geymd í Mergesort hafa thetas.
Og það er vegna þess að þú hefur aðeins þeta ef bæði Big O og Omega eru þau sömu.
OK.
Og að lokum, steypa tagi er í log n.
>> Og þá, sem Dan var að segja, Mergesort er góður af eins og á sama hátt og
þú gera tvöfaldur leit.
Þannig að þú færð lista.
Og þú ert að fara að skera í tvennt.
Og svo þú skera þá í minni helminga.
Og þá þú sameina þá.
Þú krakkar muna að, ekki satt?
OK, eins og hann var að segja.
>> OK, ábendingum.
Svo er það bendi?
>> Áhorfendur: [inaudible].
>> LUCAS: An heimilisfang.
OK.
Ég veit að Davíð sýnir fullt af myndbönd af binky og hlutum sem bendir
hvert annað.
En ég eins og til hugsa af ábendingum sem eingöngu netfang.
Svo er það gildi sem er að fara að geyma veffang.
>> Svo það er bara þetta sérstaka breytu sem er fjögur bæti.
Mundu, að bendi á nokkuð er alltaf fjögur bæti fyrir okkar 32-bita
vél svo málið með tækið.
Og það hefur bara staðsetning breytilegs inni af því.
>> OK, þannig að það er þetta minni, í grundvallaratriðum.
Svo að hver blokk af minni hefur í raun merki, sem er heimilisfang
slotty minni.
Svo það þýðir að ég get haft bendi sem bendir til
eitthvað af þessum heimilisföngum.
Svo er ástæðan fyrir því að við munum nota ábendingum ef ég þarf að muna staðsetningu
að ákveðnar reglur um breytu er minni.
>> Og þú krakkar muna að einn af þeim tilvikum var ef ég er með virka
ef ég hef reyndar vil að þú skipti fyrir reals, ég reyndar
þurft að senda músina.
Ekki breytu.
Gera þú krakkar muna að?
Munurinn á milli -
hvað er nafnið?
Starf með gildi og kalla með tilvísun, ekki satt?
>> OK, já.
Svo Hringja eftir Gildi.
Þegar þú sendir bara breytu í virka þú ert bara að senda inn gildi.
Svo þú ert í raun að senda afrit af breytu.
Og program gæti ekki aðgát minna um það bil ef sama breytilegum raun
gerir afrit.
>> Og kallar með tilvísun þýðir að Ég er reyndar að senda afrit af
bendi á breytunni.
Svo þýðir það að ég er að senda staðsetning breytunni.
Svo skynja ég hef um staðsetningu breytu, þegar ég kalla aðgerðina
með ábendingum, ég er fær um að í raun og veru breyta gögnum sem var í aðal.
Skynsamleg?
>> Þó, bendillinn er afrit er bendillinn hefur enn raunverulegt veffang
breytan sem ég vil breyta.
Skynsamleg?
>> Svo að búa ábendingum.
Mundu, bendillinn alltaf gerð sem það er að benda
til og síðan stjörnu.
Og þá setja nafn.
Svo muna að þegar þú ert hvað stjörnu, það er eins og bendi á
að allt sem breytu gerð sem þú hefðir.
>> Svo hér í stjörnu, til dæmis, það er bendillinn og heiltala.
Og þá er char stjörnu bendillinn char stjörnu og svo framvegis.
Já?
>> Áhorfendur: Hvað ef við höfum bendillinn n að stjörnu x.
Ég veit að býr bendi á x.
Er það lýsi einnig x heiltala?
>> LUCAS: OK, þannig að þegar þú segir n star x, þú ert ekki að búa til bendi á að
Breytan x.
Þú ert að búa bendiprik heitir x.
>> Áhorfendur: [inaudible].
>> LUCAS: Svo þegar ég segi n stjörnu x, ég er segja, hey, í minni, ég ætla að
fá einn af þessum þremur reitum.
Og ég ætla að segja að það er að fara að vera x, sem er
fara til vera a bendiprik.
Og eitthvað áhugavert um ábendingum er að við segjum að þau hafa
4 bæti fyrir 32-bita vél.
Og ástæðan fyrir því er sú að 4 bæti eru 32-bita.
>> Og véla sem eru 64 bitar í raun hafa ábendingum heimilisföng
sem eru 64 bita langir.
Svo þýðir það bara að hann er stærð heimilisföng í vél er öðruvísi.
>> Svo tilvísun og Dereferencing.
Það eru tvær aðilar sem þú krakkar ættu að muna.
Í fyrsta lagi er merkið.
Annað er stjarna.
Ekki fá rugla með þessi stjarna og þetta stjörnu vegna muna að í
þessu tilfelli, hefur þú n stjörnu.
>> Það er eins og allt hlutur saman.
Það er engin n rúm stjörnu.
Svo það þýðir að það er tegund.
Mundu að þegar þú ert breytan stjörnu, þú ert
að tala um tegund.
>> Þegar þú hefur bara stjörnu og þá nafn breytu, þá þýðir það að
þú ert dereferencing músina, sem þýðir að þú ert að leita á
músina, finna tölu það er bendir til, að fara á þetta netfang,
og að horfa á þegar þú hefur þar.
Svo ég segi nemendum mínum að þegar þú hefur stjörnu, ættir þú að hugsa um að það er
stytting á efni.
>> Þannig að ef þú ert með músina og þú gera stjörnu músina, er það
innihald músina.
Svo þú ferð til hvað það er sem bendir til og líta á föstu efni.
Og merkið er hið sama hlutur sem heimilisfang.
>> Svo ef ég hafa breytilega a - eins og, við skulum segja að ég gerði INT A er 3 -
ef ég vil að finna veffang sem breytu minni, ég get bara gert
merkið a.
Svo það heimilisfang a.
Skynsamleg?
>> Svo er hér dæmi.
Þetta vantar int b og int c.
Svo INT A jafngildir 3 leiðir sem Ég ætla að fara til minni.
Og ég ætla að finna rauf og setja númer 3 hér.
>> Og þá Int B jafngildir 4.
Ég ætla að gera það sama.
Fara í minni og setja númerið 4 í einu af kassa.
Og Int jafngildir 5.
Finna annan kassann og setja númer 5.
>> Svo hvað er þetta lína gera út? n stjörnu ári jafngildir merkið a.
Svo fyrst af öllu, n stjörnu pa.
Hvað er það að gera?
>> Áhorfendur: [inaudible].
>> LUCAS: Já, svo n stjörnu ári, fyrst, segir músina heitir pa.
Og þá er það framselja verðmæti sem bendir til að vera heimilisfang a.
Svo merkið a.
Þá, ef ég geri stjörnu PB, hvað er stjarna PB?
>> Ó, fyrirgefðu.
Þetta er einnig saknað. n stjörnu PB.
Ég meina stjörnu stk.
Ég er svo leitt.
Það er það sama.
En nú er ég góður AR búa bendi í B og þá bendi til c.
Já?
>> Áhorfendur: [inaudible]?
>> LUCAS: Já.
Þannig að ef þú ferð í minni og þú ferð til kassi sem er designator fyrir pa,
þú ert í raun að fara að sjá veffang.
OK?
Já?
>> Áhorfendur: [inaudible]?
>> LUCAS: Já, bendillinn er heimilisfang.
Aldrei gleyma því.
Það er eins mikilvægasta hluti óður ábendingum.
Það er að geyma og heimilisfang að einhverju breyta.
Nokkuð fleira?
Aðrar spurningar?
OK.
>> Svo Ábendingum og Fylki.
Mundu að þegar ég int array 3, grundvallaratriðum, það sem ég er að gera er ég, góður
af, lýsa í bendi.
Svo er array konar eins bendi á að sérstaka stað í minninu þar sem ég
úthlutað þremur rifa fyrir heiltölur.
Er að skynsamleg?
>> Svo þegar ég int array 3, hvað ég er gera, í grundvallaratriðum, er að búa til þrjár
rifa í minni.
Svo finnst mér bara þrjár raufar í minni.
Svo ef ég geri, þá stjarna array, það þýðir í rauninni innihald array,
sem þýðir að ég eyða músina, fara ég að þeim stað sem það er að benda á,
og ég setti númer eitt.
>> Og þá, ef ég geri stjörnu array plús 1, sem er það sama og að gera array
sviga einn, sem þýðir bara að ég fer að staðurinn sem það er að benda á.
Og þá plús 1 gerir mig skipta einni stöðu.
Svo ég fer í þessa stöðu, reyndar, og setja númer tvö.
>> Og þá, þegar ég array plús 2, fara ég að þar
benda Array er á.
Og þá er ég að fara að minni blokkir.
Og þá setti ég númer þrjú hér.
Já?
>> Áhorfendur: Svo stjörnu array er einfaldlega sagði The mjög fyrstur benda.
Og þú getur bætt við 1, bara vegna þess að við erum bara virkilega
tilvísanir þessi fyrstu tölu.
>> LUCAS: Já.
Hvers vegna eigum við, til dæmis, segja array 0, array 1, og array 2?
Ég er að segja, af hverju gerirðu 0, 1, 2, 3 í stað 1, 2, 3?
Ein af ástæðunum er, einn, tölva forritari kjósa að byrja
talið frá 0.
Tvö er vegna þess að þegar þú gerir array 0, það er það sama og að gera array
plús 0, sem þýðir að ég fer að þeirri stöðu, og ég ekki
sleppa allir minni blokkir.
Svo ég ekki hreyfa ekki allir minni blokkir.
Já?
>> Áhorfendur: [inaudible]?
>> LUCAS: Svo hún er að spyrja hvað er munurinn gera
þetta eða gera malloc.
Einn af mismun er að INT array 3 er að búa til
array á mánudaginn.
Og þegar ég geri malloc, það skapar á hrúga.
Er að skynsamleg?
>> Svo hvernig virkar malloc raunverulega vinna?
Svo hvers vegna þurfum við jafnvel að nota malloc?
Þýðanda þinn konar tölum út alla breyturnar sem þú lýst.
Og hann skapar pláss fyrir alla Af þeim í stafla.
Svo allt breytur eru að fara að vera einhvers staðar í stafla.
Svo er hér umhverfið breytum.
>> Svo í grundvallaratriðum, pláss fyrir þá breytur í minni er úthlutað á
saman tíma.
Svo það þýðir að tölvan þín hefur að vita allar þessar breytur
fyrirfram.
Það þarf ekki að vita hvaða gildi þú ert að fara að setja í þá.
En það þarf að vita hvernig mikið minni þú þarft.
>> En nú skulum segja að, til dæmis, þú ert að búa til array eða taka
streng sem þú ert að taka frá notandanum.
Þú veist ekki hversu lengi strengurinn er að fara að vera, til dæmis.
Svo þú veist ekki nákvæmlega hversu margir minni blokkir sem þú úthluta, ekki satt?
>> Svo það er í raun ekki skynsamleg fyrir þú að segja setja 100 stafi.
Og hvað þá ef notandinn skrifar 150?
Þú ert að fara að vera ruglaður.
>> Svo í grundvallaratriðum, getur þú ekki verið viss um hvernig mikið minni þú þarft að úthluta
þegar að þýða forritið.
Þú bara veist að á hlaupa tíma.
Svo að hvers vegna þú hefur hrúga.
Svo að hrúga er að fara að hafa minni að þú ert að úthluta meðan á
lengd program hlaupandi.
>> Svo í grundvallaratriðum, þegar þú gerir malloc, hvað þú ert að gera er að úthluta minni á
afturkreistingur, sem þýðir að þú ert ákveða rétt á því augnabliki sem þú
ættu að hafa þessi minni.
Svo er það þegar þú ert að úthlutun hana.
Er að skynsamleg?
>> Svo man, stafla hefur breytur sem eru búnar á saman tíma.
Og þá þarf að hrúga breytur sem eru búnar eins og þú fara
með malloc, til dæmis.
>> Áhorfendur: [inaudible]?
>> LUCAS: Svo GetString er fara að kalla malloc.
Leyfðu mér að tala um malloc, og Ég skal útskýra GetString.
Svo er malloc sama sem minni úthlutun.
Svo það er að fara að úthluta minni á hrúga.
Og það er að fara að skila bendi á þar sem minni var úthlutað á.
>> Svo þegar þú gerir -
hér til dæmis -
n stjörnu músina.
Og þá bendi jafngildir malloc stærð tommu sinnum 10.
Ég er að stofna músina.
Og þá er ég framselja þessi bendi til gildi bendillinn að malloc
er að gefa mér.
>> Þannig að ég spyr malloc getur þú úthluta pláss fyrir 10 heiltölur.
Það er það sem það er að segja.
Og malloc gefur mér til baka bendi á þeim stað.
Skynsamleg?
OK.
Ég Og GetString er, í grundvallaratriðum, gera kalla til malloc svo þú getur tekið
minni á afturkreistingur.
>> Alltaf að muna eftir að athuga hvort null því malloc er að fara að skila NULL
ef það getur ekki tekið frá minni.
Segjum að þú biður um fáránlega magn af minni.
Tölvan þín er ekki að fara að vera fær að úthluta það mikið.
>> Svo malloc er bara að fara til að fara aftur null.
Svo alltaf að muna eftir að athuga hvort bendillinn sem þú fékkst frá malloc er
tómt eða ekki, því ef það er, þú might vera dereferencing músina og
veldur aukaverkunum galla.
Og að lokum, ekki gleyma frjáls minni þitt.
>> Malloc er að skapa minni í hrúga.
Og þú þarft að losa um minni áður en áætlunin lýkur.
OK, það er allt fyrir mig.
Því miður, Rob.
Takk.
>> [Applause]
>> LUCAS: Allur Síðustu spurningarnar áður Rob kemur?
Nei?
Já?
>> Áhorfendur: Ég vissi ekki að sjá þetta á netinu.
Hefur þú sent hana enn?
>> LUCAS: Ég held að Dave er hlaða það fljótlega.
>> DAVE: Það verður staða.
>> LUCAS: Það verður að vera á netinu.
>> Áhorfendur: Það er allt.
>> LUCAS: Það er allt?
OK.
Já?
>> Áhorfendur: [inaudible]?
>> LUCAS: Já, ættir þú að losa alla minni sem er sett í hrúga.
>> Áhorfendur: [inaudible]?
>> LUCAS: Já.
Í hvert sinn sem þú ert með menningu malloc, þú ættir að hafa menningu frjáls
eftir að þú hættir að nota þá breytu.
Svo malloc og ókeypis eru alltaf saman.
Bestu vinir þeirra.
Já.
Rob?
>> ROB: Ég fer fljótt.
Og einnig vídeó verður að setja upp.
Ég hef mic á.
>> OK, svo viku fimm efni.
Fyrsta sem við þurfum er að stafla.
Svo muna að það er bara einn stakkur ramma á virkum virka símtalinu.
Við munum sjá að í annað.
Og einnig muna hvað raunverulega fer í hverju stafla ramma eru að fara að vera
staðbundin breytur í aðgerðir okkar, Rökin sem eru liðin í okkar
aðgerðir, ásamt nokkrum aðrir hlutir sem þú í raun ekki
þurfa að hafa áhyggjur af.
>> Svo er hér dæmi program þar, tilkynning, helsta er printfing aftur
gildi foo 4.
foo er bara að fara að fara aftur á gildi bar 4 komma 6.
Og bar er að fara að setja nokkrar sveitarfélaga breytu n jafnt og 4 sinnum 6.
Og síðan aftur n.
>> Svo skulum líta á mánudaginn gegn raunverulegt endurtekning af þessu forriti.
Þannig að það er neðst á stafla okkar.
Mundu að stafla vex upp.
Svo neðst á stafla okkar, við hafa stafla ramma fyrir helstu.
Þegar forritið byrjar, helstu er alltaf að fara að vera á
neðst á stafla okkar.
>> Og hvað er inni af okkar stafla ramma fyrir helstu?
Svo jafnvel þó að það eru engin staðbundin breytur til helstu, eins og ég sagði áður,
við höfum argc og rgv taka upp pláss inni af helstu stafla ramma.
Svo aðal er nú að fara að kalla virka foo.
Og það þýðir foo er að fara að fá eigin stakkur ramma þess.
>> Svo nú erum við inni virka foo.
Og hvað þarf til að fara í stafla ramma Foo er?
Jæja, foo hefur rök n.
Og n er jafnt og 4 þar sem það er það Helsta er farið sem frumbreyta foo er.
>> Svo nú foo er að fara að hringja bar.
Hvað er bar að fara að hafa inni af 'stakkur ramma þess?
Það hefur x jafn og 4 Y jafnt og sex.
Það er ekki allt sem við erum að fara að hafa í stafla ramma vegna barnum
hefur einnig heimamaður breytu n.
Og n við erum að fara að setja jafn 24.
>> Svo nú bar er að fara að skila n.
Svo bar er aftur 24 til stafla ramma foo.
Og vegna þess að bar er nú aftur að þýðir að við erum pabbi stakkur ramma
fyrir bar burt af the stakkur.
Svo allt minni sem barinn hafði verið nota er nú burt stafla.
>> Nú, foo er líka að fara til að fara aftur 24 til helstu.
Svo nú er um að foo er aftur, minni að foo var að nota í þess '
stafla ramma er líka farin.
Og nú, helstu er að fara að hringja í printf.
Svo er printf bara annar virka.
Þegar við köllum printf, það er að fara að vera annar stafla ramma fyrir printf
virka símtalinu.
>> Hvað erum við brottför printf?
Það er það sem er að fara að fara á stafla ramma þess.
Minnsta kosti, við erum sem liggur sem prósent ég sviga n og
þau rök 24.
Það gæti hafa meira í það er stakkur ramma ef printf gerist að vera með nokkrar
staðværar breytur.
Við vitum það ekki.
>> En allt sem fer í printf áratugnum stafla ramma.
Það er að fara að framkvæma printf.
Þá printf er gert.
Það mun skila.
Loks helstu er gert.
Main mun skila.
Og þá áætlun okkar er lokið.
Já?
>> Áhorfendur: Ert þú að sjá [inaudible]
rök [inaudible]
breytur?
>> ROB: Svo er það lúmskur munur milli rök og breytum.
Og í raun, sameiginlegt tala, hafa tilhneigingu fólks bara blanda þeim upp allan tímann.
En breytur eru formleg Nafn hlutum.
>> Svo argc og argv eru breytur til helstu.
Rök eru það sem þú í raun og veru fara í eins þeim breytum.
Þannig að það þegar ég kalla foo af 4, 4 er þau rök sem ég er liggur inn
Og breytu n, inni foo, tekur á verðmæti 4
síðan 4 var rök.
>> Áhorfendur: [inaudible]?
>> ROB: n er staðbundin breytu að bar.
n er enn staðbundið foo, en það er breytu til að foo.
Það er ekki heimamaður breytu.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: foo er bara að hringja bar og aftur hvað sem bar aftur.
>> Áhorfendur: [inaudible]?
>> ROB: Já, bara til að sjá margar stafla ramma.
Já?
>> Áhorfendur: Hvers vegna var foo heitir áður printf?
>> ROB: Hvers vegna var foo kallað áður printf?
Svo ég gæti hafa, í stað þess, gert eitthvað eins int x jafngildir foo af 4
og síðan prentuð x.
En í staðinn, ég sameina the virka kalla í printf rifrildi.
>> En eftir því að við getum í raun ekki framkvæma símtalið til printf þar til við
reikna út hvað foo af 4 er.
Þannig að við ætlum að meta þetta.
Og aðeins einu sinni það er gert eru að fara að koma til baka og meta þetta.
Já?
>> Áhorfendur: Þar eð bar [inaudible]
gildi, hvers vegna höfum við ekki [inaudible]?
>> ROB: Þeir algerlega ættu að vera Int.
Það var ekki veiddur á margar líður.
Svo það ætti að vera INT bar og INT foo þar sem bæði þeirra
eru að skila heiltölur.
Tómarúmið er aðeins ef þeir eru ekki að fara til að fara aftur raunverulegt gildi.
Já?
>> Áhorfendur: Ef þú hefðir línu ofan aftur, [inaudible]?
>> ROB: A lína ofan staðinn?
>> Áhorfendur: Já.
Eins ef þú did printf og [inaudible], myndi það prenta tvisvar?
>> ROB: Svo inni í foo?
Ef við hefðum printf hérna?
>> Áhorfendur: Já.
>> ROB: Svo ef við hefðum printf rétt Hér væri að prenta einu sinni.
Þar sem við erum að kalla foo einu sinni rétt hér, þá munum við högg the printf.
Við munum þá kalla bar.
Og þá foo mun skila.
Og það er það.
Við lendum bara alltaf á printf einu sinni.
Já?
>> Áhorfendur: [inaudible]
printf starf foo vegna þess að við erum fyrst starf printf og þá erum við brottför
rökin.
>> ROB: Svo í orði, er ekki printf starf foo?
Svo neitun.
Bara röð sem c er að fara að framkvæma þessa hluti er, áður en við getum
hringja í aðgerð, öll rök að virka þarf að
vera fullkomlega metin.
Þannig að þetta er alveg metið?
Já, er það bara band.
Það er bara gildi.
>> Þá verðum við að alveg meta þetta.
Þegar þetta er gert, nú allar Rök hans eru metin.
Og nú getum við gert kalla til printf.
Já?
>> Áhorfendur: Ein spurning.
Ef þú ert með ógilt virka, verður þú hefur aftur semíkommu?
>> ROB: Þú gera ekki aftur semíkommu ef þú ert með ógilt virka.
OK.
Svo nú sumir hrúga efni.
Svo er hrúga hvernig við ætlum að takast á með dynamic minni stjórnun.
Og þetta beint andstæðum við stafla sem við myndum kalla sjálfvirka
minni stjórnun.
>> Svo á mánudaginn, aldrei virkilega hafa að takast á við hvernig staðbundin breytur
eru ýtt og smella á öll þessi stafla ramma og allt það efni.
Þú þarft ekki að hafa áhyggjur óður í það.
Það er sjálfvirk.
Svo er hrúga handbók.
Og [inaudible]
kemur frá þessum aðgerðum malloc og ókeypis.
>> Svo er hér annað forrit.
Allt sem við erum að gera er mallocing heiltala.
Við erum að geyma það í stjörnu x.
Að sjálfsögðu verðum við að athuga til að sjá hvort x er núll.
Svo ætlum við bara að setja hvað x er bendir til að 50.
Prenta það x bendir til, prenta x, og þá frjáls x.
>> Og hvernig er þetta í raun og veru að fara að horfa ef við skoðum stakkur okkar og hrúga?
Þannig að við munum hefja aftur.
The botn af stafla okkar eins og áður.
Mundu að þér hrúga beint móti stafla?
Þannig að við ætlum að hafa Efst á hrúga okkar þarna uppi.
>> Svo the botn af stakkur okkar, höfum við stafla ramma okkar fyrir helstu.
Það hefur pláss fyrir argc, argv, og við nú hafa a heimamaður breytu X, sem
er int stjörnu.
Þannig að við erum að fara að iterate í gegnum þetta forrit.
Fyrsta sem við þurfum er kalla til malloc.
>> Þannig að við erum að hringja til malloc.
Malloc er fall.
Það er að fara að fá stafla ramma.
Hvað erum við að brottför til malloc?
Það er að fara að fara inn staflans ramma.
Við erum sem liggur í stærð N, þar sem er 4.
Svo sem berst til malloc.
>> Hvað þýðir malloc gera?
Það grípur okkur nokkur pláss á hrúga.
Þannig að við ætlum að fara til hrúga.
Og við erum að fara að grípa 4 bæti úr hrúgunni.
Þannig að við skulum bara gefa sem handahófskennt heimilisfang.
0x123 Bara láta sem er heimilisfangið sem er á hrúga.
>> Svo er það í raun inni að svæði af minni á póstfang Ox123?
Sorp.
Svo við höfum ekki geymt neitt í það.
Svo eins langt eins og við vitum, það gæti verið hvað sem er.
Þú ættir ekki að taka það er núll.
Það er líklegast ekki núll.
>> Svo nú malloc ávöxtun.
Og hvað gerum við þegar malloc skilar?
Við setjum það sem það skilar.
Við setjum x jöfn hvað það er að fara aftur.
Svo hvað er það aftur?
Það er aftur 0x123 þar sem er heimilisfang blokk af minni sem það
bara úthlutað í hrúga.
>> Svo aftur 0x123 x er nú að fara að vera stillt jafnt 0x123 sem pictorially,
við drögum oft og x hafa raunveruleg örin bendir til þess að sýna í reitnum.
En x er bara að geyma þetta netfang.
Svo nú verðum við að athuga hvort x er núll.
Það er ekki null.
Við þykjast að það malloc tekist.
>> Svo nú stjörnu x jafngildir 50.
Svo stjörnu man það þýðir fara á þetta netfang.
Svo 0x123 Við erum að fara að fara á þetta netfang.
Svo að koma með okkur upp þarna.
Hvað erum við að gera á þetta netfang?
Við erum að geyma 50.
>> Svo eftir þessa línu, það er það hlutirnir eru að fara að líta út.
Svo nú er það ekki lengur sorp þarna uppi.
Nú vitum við að 50 er í að einkum heimilisfang vegna þess að
Við setjum það á því.
OK?
Svo nú erum við að fara að prenta f.
>> Svo fyrst við erum að fara að prenta stjörnu x.
Svo er það stjarna x?
Aftur, stjarna x þýðir að fara á hlutur sem x bendir til.
Svo x er sögufrægur 0x123 farið til að.
Við fáum 50.
Svo prenta F það.
Og það þýðir að það er að fara að prenta 50.
Og þá skilar það.
>> Og þá höfum við annað printf.
Við erum nú prósent p.
Ef þú hefur ekki séð það, það er bara hvernig þú prentað músina.
Þannig að við höfum prósent i, prósent F og allir þeir þegar.
Svo prósent p, prenta músina.
>> Svo er x bendillinn.
Þannig að ef við erum að fara að prenta x sjálfu sér, við erum að prenta það sem er í raun inni
X, sem er 0x123 Svo fyrsta prenta f er að fara að prenta 50.
Annað prenta f er að fara að prenta 0x123 Yeah?
>> Áhorfendur: Ert þú að nota prósent x að prenta músina?
>> ROB: Svo notarðu prósent x að prenta músina?
Svo þú getur en prósent x er bara, Almennt um eins og ef þið hafið einhverjar
tala og þú vilt prenta það sem sextánskur.
Það er bara hvernig þú gerir það.
>> En, prósent D myndi prenta sem aukastaf.
Sem voru við fáum prósent d. Ég er bara heiltala.
prósent p er sérstaklega fyrir ábendingum.
>> Svo er x bendillinn.
Við viljum að nota hlutfall bls.
En prósent x gæti heppnast.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Já.
Að minnsta kosti fyrir þessa kalla - svo ég ekki fela það í hér.
En þessir tveir rök eru endilega inni í þessum stafla ramma
ásamt öllum staðbundnum breytur printf gerist að vera með.
Og svo næsta símtal til printf nú inni printf stakkur ramma er
prósent p sviga n og hvað sem gildi X er, sem er 0x123.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Það verður að prenta eitthvað sem lítur svona út.
>> Áhorfendur: [inaudible].
>> ROB: Svo það prentar það í netfangið formi.
Það lítur út eins og heimilisfang.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Hvers vegna er það?
>> Áhorfendur: [inaudible]?
>> ROB: Hvers vegna er þetta bendi 4 bæti?
Þannig að það eru allt fullt af 0 fyrir framan þetta.
Svo það er eiginlega 0x0000000123.
Á 64-bita kerfi, það væri allt fullt af fleiri núllum.
Já?
>> Áhorfendur: [inaudible].
>> ROB: Svo fyrsta printf er að fara að prenta -
>> Áhorfendur: [inaudible].
>> ROB: Já, það er að fara að prenta hvað x er bendir til.
Star segir hvað er þetta hlutur sem bendir til.
Grípa það.
Svo hvað er það sem bendir til?
50.
Grípa það.
Það er það sem við erum að fara að prenta.
En, næsta einn, erum við bara prentun x sjálfu.
Hvað er inni í f?
0x123.
OK.
>> Og þá höfum við frjálsa.
Hvað erum við að brottför til að losa?
Við erum brottför x.
Þessi tími sem ég birtist í raun það í stafla ramma.
>> Þannig að við erum liggur verðmæti 0x123 til að losa.
Svo nú ókeypis veit, allt í lagi, Ég verð að fara upp í hrúgunni
og ókeypis að minni.
Það er ekki lengur að nota hvað er á netfangið 0x123.
>> Svo frjáls er að fara að gefa út að frá hrúga.
Nú er hrúga okkar tóm aftur.
Við höfum ekkert minni lekur.
Nú frjáls vilja koma aftur.
Takið eftir að x er enn 0x123.
En það er nú ekki gild minni.
Við ættum ekki lengur dereference x.
Já?
>> Áhorfendur: Er aftur 0 óþarfi?
>> ROB: Er returen 0 óþarfi?
Já.
Við setjum bara að það vegna þess að við höfum aftur einn fyrir loft.
Svo er það eins og, já, við skulum fela í return 0.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Svo eftir ókeypis x, hvað gerist ef við reynum að dereference músina?
Það er mögulegt að ekkert fer úrskeiðis.
Það er hugsanlegt að við munum samt fá 50.
>> Það er hægt, líka, að þessi minni er nú notað fyrir eitthvað annað.
Svo það er óskilgreindur hegðun.
Og óskilgreindar þýðir nokkuð getur gerst.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Nei, þannig að ef þú gefur x eitthvað annað.
Þannig að ef hérna við sögðum x jafngildir malloc eitthvað annað -
malloc stærð atburður -
þá að upprunalega blokk af minni er ekki leystur.
Og við höfum opinberlega misst það.
Það er minni leka.
Við höfum misst allar tilvísanir til að loka af minni.
Þannig að það er engin leið að við getum alltaf frjáls það.
OK, svo þá aftur 0 þýðir gert.
>> Allt í lagi, svo stafla flæða.
Hvað er hugmynd hér?
Svo man, hrúga er að fara niður.
Stack er að fara upp.
Þannig að þetta var dæmi úr fyrirlestri, Ég held, þar helsta er bara að fara að
kalla þessa aðgerð foo, sem er að fara að kalla sig endurkvæmt yfir og
aftur.
>> Svo stafla rammar eru að fara að vinna nákvæmlega það sama.
Þannig að við erum að fara að byrja með helstu sem neðri stafla ramma.
Þá helstu er að fara að hringja í foo, sem er að fara að fá stafla ramma.
>> Þá foo er að fara að hringja í foo aftur, sem er að fara að fá
annar stafla ramma.
Og svo aftur, og aftur, og aftur, og aftur þar til að lokum, hlaupa við
í hrúga.
Svo er þetta hvernig við fáum stafla flæða.
Og á þessum tímapunkti, seg þú kenna.
Eða þú vilt virkilega seg sök áður þetta lið en já.
>> Áhorfendur: Er algerlega sorphaugur sama og seg kenna?
>> ROB: Svo þú munt sjá skiptingu kenna algerlega varpað.
Þú færð algerlega sorphaugur þegar þú seg kenna.
Og það er eins og sorphaugur af öllum innihald núverandi minni þitt svo
að þú getur prófað og þekkja hvers vegna þú seg faulted.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Svo þýðir skiptingu kenna það er stafla flæða.
Svo er ekki endilega.
A skiptingu kenna þýðir að þú ert snerta minni á þann hátt
þú ættir ekki að vera.
Svo ein leið til að gerast er, þegar þú stafla flæða yfir, byrjum við að snerta
minni á þann hátt að við ættum ekki að vera.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Svo inni óendanlega lykkju.
Eins og þetta er eins og endurkvæma óendanlega lykkja og svo fáum við annan
stafla ramma í hvert skipti.
En bara inni á reglubundnum óendanlega meðan einn -
Jæja, við skulum ekki einu sinni prenta F -
gera eitthvað.
Whatever.
>> Við erum ekki að fara að fá annar stafla ramma.
Við erum bara að fara að halda að lykkja yfir þetta eina kennslu.
Stafla er ekki vaxandi.
Það er staðreynd að hver endurkvæma kalla er að gefa okkur stafla ramma.
Þess vegna höfum við fengið stafla flæða.
Já?
>> Áhorfendur: Svo ef þú segir að fá meðan lykkja og svo [inaudible]?
>> ROB: Svo ef inni á meðan lykkja það var printf, þú vildi samt
Ekki seg kenna.
Ég bara vildi ekki rugla saman hlutum.
Það væri lykkja.
Þú vilt fá einn stafla ramma fyrir printf.
>> Þá printf myndi koma aftur.
Þá þú vilt lykkju aftur.
Þú vilt fá einn stafla ramma fyrir printf.
Það myndi skila.
Single stafla ramma.
Svo þú ert ekki að fá þetta óendanlega hlóðust upp stakkur ramma.
>> Áhorfendur: [inaudible]?
>> ROB: Já.
Þannig að þetta stafla flæða gerist því enginn af þessir
kalla til foo eru að skila.
Þannig að ef við aftur, þá myndum við byrja að tapa stakkur ramma.
Og þá myndum við ekki stafla flæða.
Og það er hvers vegna þú þarft að grunntilvikið fyrir persónulegum störfum þínum.
Já?
>> Áhorfendur: Er möguleiki stærð og stafla fyrir hrúga sama fyrir
öll forrit?
>> ROB: U.þ.b..
Er möguleiki stærð stafla og að hrúga sama fyrir öll forrit?
U.þ.b..
Það er einhver slembivali til þar stafla byrjar og
þar sem hrúga hefst.
Ef þú skyldir hafa a heild einhver fjöldi af Global breytur og svoleiðis, gætir þú
taka í burtu frá sumum rúm fyrir hrúga þínu.
>> Á 64-bita kerfi, þú nánast hafa óendanlega minni.
Það er bara svo mikið.
Milli 32 bita og 64 bita, sem er marktækur munur.
>> Þú ert að fara að fá a heild einhver fjöldi fleiri stafla og hrúga rúm á 64-bita
kerfi vegna þess að það er bara meira tölvupóstföng sem þeir geta notað.
En á einstö*** kerfi, mun það vera um það bil sama magn af stafla
og hrúga rúm.
Allt í lagi.
>> Svo er síðasta sem samantekt.
Svo þú ættir að vita þetta ferli.
Það eru fjögur stór skref.
Svo sá fyrsti ætti að vera auðvelt að muna.
Pre-vinnslu.
Það hefur forskeyti fyrirfram í það.
Svo það kemur áður en allt annað.
>> The hlutur til muna er kjötkássa.
Svo kjötkássa skilgreinir og kjötkássa felur í öllum þeim.
Þeir eru allt fyrirfram örgjörva tilskipunum.
Þetta eru hlutir sem pre-örgjörva sér um.
>> Svo hvaða hjartarskinn a pre-örgjörva gera?
Það er mjög heimskulegt hlutur.
Allt það er fær um eru allar þessar Afrita, og skera, og líma aðgerðir.
>> Svo kjötkássa inniheldur staðlaða I0 punktur h.
Hvað er að gera?
Það er grabbing staðlaða I0 punktur h skrá og líma það inn í the toppur
hvar það segir kjötkássa felur staðall I0 punktur klst.
>> Og allir kjötkássa skilgreina sem við höfum séð, hvað er að gera?
Þess að afrita gildið sem kjötkássa skilgreint er skilgreint sem og líma sem
hvar sem þú ert að nota gildið.
Svo Preprocessor bara þýðir í raun einfaldur texti byggt starfsemi.
Það þýðir ekkert klár.
Svo er allt annað flóknara.
>> Svo nú er að Preprocessor gert, við saman reyndar.
Svo hvað þýðir samantekt meina?
Við erum nú að fara úr C kóða að samkoma númer.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Já, tók við að.
Svo saman.
Við erum að fara úr C í söfnuðinum.
Þannig að þetta er raunverulegt tungumál breytast.
Saman sig þýðir að fara frá hærra stigi tungumál til
lægri láréttur flötur tungumál.
>> Og c er a hár láréttur flötur tungumál samanborið við söfnuð.
Hvað er samkoma?
Leiðbeiningar hennar sem eru, nokkuð mikið, gerði fyrir CPU þinn.
En tölvunni enn virkar ekki skilja samkoma.
Það skilur bara sjálfur og núll.
Þannig að næsta skref er að setja saman, sem færir okkur frá þessum leiðbeiningum sem
CPU þinn skilur og raun þýðir þá, að
sem sjálfur og núll.
>> Svo C við söfnuð til tvöfaldur.
En ég hef ekki executable ennþá.
Svo hugsa um cs50 bókasafn.
Við höfum veitt þér með a tvöfaldur fyrir þetta cs50 bókasafn, sem hefur GetString
og GetInt og allt það.
>> En cs50 bókasafn -
í sjálfu sér - er ekki executable.
Það hefur ekki helsta hlutverk.
Það er bara fullt af tvöfaldur sem þú getur notað.
Svo er hlekkur hvernig við koma saman öll þessara mismunandi tvöfaldur skrá
í raunveruleg executable.
Eitt sem þú getur slegið punktur rista punkt út.
>> Svo er þetta eins og að skrá sem þú skrifaði, - sem forritið þitt er -
Ceaser punktur c.
En nú er það komið saman niður tvöfaldur.
Svo Ceaser punktur o.
Og þetta er bókasöfn cs50 okkar tvöfaldur.
Og þeir eru notaðir samhliða í eitt executable.
Já?
>> Áhorfendur: [inaudible]?
>> ROB: Svo fyrst nefna, muna, kjötkássa eru er í raun
pre-örgjörva skref.
En það er sérstakt.
Ef þú ert ekki að nota einhverjar aðgerðir sem eru utan eina skrá þína þá,
nei, þú þarft ekki að tengja neitt þar sem þú hefur allt.
>> Sem sagt, printf er orðaður inn
Ef þú alltaf nota printf, það er eitthvað sem þarf að vera tengdur í
vegna þess að þú hafi ekki skrifað það.
Og í raun, printf er sjálfkrafa tengd inn
Þú veist hvernig á stjórn lína eða þegar þú slærð gera, þú sérð það hafa
þjóta L cs50, sem hefur tengil í cs50 bókasafninu?
Printf, og efni eins og þessi, er að fara að tengjast sjálfkrafa.
Aðrar spurningar um neitt?
>> Áhorfendur: [inaudible]?
>> ROB: Krækjur?
Við hafa a heild búnt af Mismunandi tvöfaldur skrá.
Þetta er Canonical dæmi sem við notum er cs50 bókasafn.
Við höfum tekið saman og gefið í tvöfaldur fyrir þessa cs50 bókasafn.
>> Þú vilt nota GetString í forritinu.
Svo þú ferð og nota GetString.
En án tvíundarkóða minn fyrir GetString, þegar þú saman númerið þitt
niður, þú getur ekki í raun að keyra þinn forrit því GetString String er
ekki alveg skilgreint.
>> Það er aðeins þegar þú hlekkur í tvöfaldur minn sem inniheldur GetString sem nú, allir
rétt, ég get í raun framkvæma GetString.
Minn skrá er lokið.
Og ég get keyrt þetta.
Já?
>> Áhorfendur: Er tengja umbreyta tvöfaldur að Executable?
Svo jafnvel ef þú ert ekki annað bókasöfn, myndi það ekki vera enn
þarf að þýða á [inaudible]?
>> ROB: Svo keyrsluskrá er enn í tvöfaldur.
Það er bara að sameina í heild fullt af forritum.
>> Áhorfendur: Þakka þér svo mikið.
>> ROB: Ekkert mál.
Aðrar spurningar?
Annars, erum við tilbúnar.
Allt í lagi.
Takk.
>> [Applause]
>> Áhorfendur: Þakka þér.
>> ROB: Já.