[Powered by Google Translate] DAVID J. Malan: Allt í lagi.
Þetta er CS50, og það er í lok viku tvö.
Ef þú býst við að vera svöng í kringum þennan tíma á morgun, ég veit að við erum að fara
til boða sem lítill hópur á morgun, fimmtudaginn, 01:15.
Það er þetta URL hér ef þú vilt að RSVP.
Space er takmarkaður, svo vinsamlegast fyrirgefið ef eyðublaðið er fyllt upp með þeim tíma sem þú
fylla þetta út.
Annar URL þó að gæti verið áhugavert er þetta.
>> Svo bara um tíma mánaðar, sem auðvitað er að fara að vera í boði
allt í víðara samhengi gegnum EDX, um hvaða fólk á Netinu verður
fær að fylgja með, taka þátt í námskeiðinu alveg virkur, í raun.
Þeir ætla að nota CS50 Tæki og CS50 ræða og mest af
ýmsar hugbúnaði sem við þegar höfum verið að nota þessa önn.
Og eitt af þeim verkefnum sem við viljum að taka á sem tilraun á þessu ári
er að sjá hversu mikið efni við getum þýtt annað talað og
skrifað tungumál.
Svo ef þú gætir hafa áhuga á að taka þátt í þessu verkefni, þar sem
við munum veita ensku afrit og texti fyrir námskeiðið er
fyrirlestrum og stuttbuxur og málstofur og hlutar og þess háttar -
Ef þú talar reiprennandi eða skrifa reiprennandi nokkur önnur tungumál, við viljum
elska að taka þátt þig í þessu verkefni, þar sem þú tekur á einn eða fleiri af
myndbönd, þýða þær yfir á tungumál sem þú þekkir nokkuð vel.
Til að gefa þér hugmynd um tengi, það er þetta vefur-undirstaða notandi tengi
að við munum vera með sem vilja búa í raun UI svona.
Þetta var mér að kenna sumir Halloween síðan.
Og hægra megin í svörtu hliðina á þessum tíma frímerki,
þú munt sjá ýmislegt sem kom út úr munni mínum um daginn.
Og svo fyrir neðan það, munt þú vera fær um að þýða yfir einhverju öðru tungumáli.
Einmitt það sem kortlagning er á milli, í þessu tilfelli, ensku
og segja spænsku.
Svo það er í raun mjög notandi-vingjarnlegur tól.
Þú getur til baka og fljótur fram mjög auðvelt með flýtileiðum hljómborð.
Svo ef þú vilt taka þátt í þessari tilraun og hafa orð þín
séð og lesið af hugsanlega þúsundir af fólkinu þarna úti, þá skaltu ekki finnst
frjálst að taka þátt.
>> Nú eitt orð um kettlingur frá mánudagur, svo að við höfum sent óhóflega
ógnvekjandi skilaboð.
Gera grein fyrir því sem skrifstofutímarnir benda og sem hluta benda að
hönnun þess er mjög mikið að hafa nemendur í samstarfi og
að tala til að vinna í gegnum setur vandamál og vandamál saman.
Og í raun kemur línan bara niður aftur, vinna þú á endanum
skal leggja á að vera þitt eigið.
Og svo það, alveg heiðarlega - á skrifstofutíma, það er alveg eðlilegt -
Það er alveg að búast, jafnvel - að spjalla við nokkrar
vinir við hliðina á þér.
Ef hann eða hún er í erfiðleikum með einhverju efni, og þú ert eins og, ó, og láta
mér að gefa þér innsýn í einhverju línu af kóða sem ég skrifaði.
Það er allt í lagi.
Það gerist.
Og það er mjög mikið stuðla, held ég, með aðferð við að læra.
Ef lína, aftur, fær yfir er þegar höfuð er tegund af halla á
hér allt of margar sekúndur eða mínútur sem raunverulega hafa bara
verið Unblocking tækifæri fyrir vini þínum.
Og vissulega, þegar hlutirnir fá skipst með tölvupósti og Dropbox og
þess háttar, það líka er lína.
Svo fyrir alla muni, að líða vel og finnst hvattir til að spjalla við vini
og bekkjarfélagar um psets og fleira.
Og bara grein fyrir því að það sem þú sendir að lokum að í raun vera
vara sköpun og ekki einhver annar.
>> Svo í sama anda kelinn verur, gætir þú
vita af þessum gaur hérna.
Svo er þetta horrifically cheesy bíómynd frá árum.
Einhver séð hér Spaceballs?
Allt í lagi.
Svo góð tala hér.
Svo er þetta undursamlega fræðileg leið okkar að kynna í dag á endanum
hugmyndin um dulmál.
Og svo einn af ríki ákveðin vandamál fyrir pset 2, sem mun koma
út seint annað kvöld, er að kafa í heim dulmál, sem
er list dulkóða eða spæna upplýsingar.
Og þetta tengist að lokum til the veröld af öryggi.
>> Nú öryggi fyrir flest okkur kemur í formi nokkuð mundane leiðum.
Allar okkar hafa notendanöfn og lykilorð.
Og allir með mjög slæma notendanöfn og lykilorð, mest líklega.
Ef lykilorðið þitt er það sama á mörgum vefsíðum, það er líklega ekki
besta hugmynd sem við munum ræða í átt í lok hverrar annar.
Ef lykilorðið þitt er skrifað á Sticky huga - enginn brandari - á þinn
fylgjast með, sem líka er ekki endilega besta hönnun en alveg algengt
fyrirbæri.
Og ef þú ert ekki að nota dulmál til að dulkóða lykilorð, eru þeir
sérstaklega viðkvæm.
Svo ef þú heldur að þú ætlar að vera frábær snjall með því að hafa falinn Word
skjal einhvers staðar á harða disknum þínum sem hefur allar lykilorð þitt en
það er í möppu sem enginn er að fara að líta á, að of er ekki mjög
örugg kerfi.
Og svo hvað pset 2 munu kynna er þetta list dulmál og
spæna upplýsingar svo sem hlutur eins og lykilorð eru
öll öruggari.
Svo sem til að hvetja þessa mjög alvöru-heiminum vandamál með mjög ekki raunverulegur-veröld
atburðarás, láttu mig kynna þig fyrir einn af uppáhalds bréfaklemma okkar hérna frá þessu
bíómynd, Spaceballs.
>> [Vídeó spilun]
-Hjálm, fiend þú, hvað er að gerast?
Hvað ert þú að gera á dóttur mína?
-Leyfa mér að kynna frábæra unga plast skurðlæknir, Dr Philip
Schlotkin, mesta nef starf maður í öllu
alheimurinn og Beverly Hills.
-Your hátign.
-Nef starf?
Ég skil ekki.
Hún hefur þegar haft nefið starf.
Það var sætur 16 staðar.
-Nei, það er ekki það sem þú heldur.
Það er miklu, miklu verra.
Ef þú gefur mér ekki að blanda við loft skjöld, Dr Schlotkin mun
gefa dóttur þína aftur gamla nefið hennar.
-Nei!
Hvar fékkstu það?
-Allt í lagi.
Ég segi.
-Nei, pabbi, nei.
Þú má ekki.
-Ertu í lagi, elskan mín.
Ég sakna nýja nefið.
En ég mun ekki segja þeim samsetningu sama hvað.
-Gott og vel.
Dr Schlotkin, gera versta þinn.
-My ánægja.
-Nei!
Bíddu, bíddu.
Ég segi.
-Ég vissi að það myndi virka.
Allt í lagi, gefa mér.
-The samsetning er ein.
-Einn.
-Two.
-Three
-Three.
-Four.
-Fimm
-Fimm.
-Þannig að samsetning er einn, tveir, þrír, fjórir, fimm.
Það er stupidest samsetning sem ég hef nokkurn tíma heyrt í lífi mínu.
Það er góður af hlutur hálfviti hefði á farangri hans.
-Þakka þér, yðar hátign.
-Hvað gerðir þú?
-Ég slökkt á vegg.
-Nei, það hafið þér ekki.
Þú slökkt alla myndina.
-Ég þarf að hafa ýtt á rangan hnapp.
-Jæja, setja það aftur á.
Settu myndina aftur.
-Já, herra.
Já, herra.
-Við skulum fara, Erna.
Komdu, Gretchen.
Auðvitað þú veist ég samt að senda þér reikning fyrir þessu.
-Jæja, gerði það að vinna?
Hvar er hliðið?
-Það gekk, herra.
Við höfum samsetningu.
-Great.
Nú getum við tekið hvern anda fersku lofti frá plánetunni Druidia.
Hver er samsetning?
-Einn, tveir, þrír, fjórir, fimm.
-Einn, tveir, þrír, fjórir, fimm?
-Já.
-Það er ótrúlegt.
Ég hef fengið sömu samsetningu á töskunni minni.
Undirbúa Spaceball 1 fyrir næsta brottför.
-Já, herra.
-Og að breyta samsetningu á farangri mínum.
-Ow!
[END vídeó spilun]
>> DAVID J. Malan: Ótrúleg bíómynd sem þú ættir nú að allir sjá.
Þannig er samhengi hér að með óörugg gögn kemur tækifæri til að
dulkóða það og Scramble það.
Og svo þetta, til dæmis, er dæmi um dulkóðuðu skilaboð.
Þetta segir í raun eitthvað í ensku.
En það er greinilega ekki að fullu augljós.
Og við munum koma í hring í dag til að stríða í sundur hvað þetta leyndarmál
skilaboðin hér.
En í hinum raunverulega heimi tölvur, gera það ekki einu sinni líta út eins og þeir gætu
vera ensku setningar.
Til dæmis, þetta er það sem þú getur fundið á stöðluðu Linux eða Mac eða
Unix tölva í skrá sem var einu sinni kallað á lykilorð skrá.
Nú á dögum, það er verið flutt til annarra staða.
En ef þú horfir á réttum stað á kerfinu, verður þú ekki eini
notendanafn eða að öðru fólki á kerfinu, en þú munt sjá að
dulkóðuð útgáfa af aðgangsorði sínu.
Reyndar er orðið Crypt þar bendir til þess að eftirfarandi efni er dulkóðuð.
Og þetta röð af því er virðist af handahófi bókstafi og stafi og númer og
svo framvegis hægt að decrypted aðeins almennt vita nokkur leyndarmál -
leyndarmál orð, leyndarmál númer.
Og svo sannarlega er list dulmál endanum snýst allt um að treysta á sumum
tegund og vita eitthvað sem einhver annar gerir það ekki.
Við munum kanna þetta í aðeins meiri smáatriðum í dag og í pset að koma.
>> Og nú orð á staðið / ekki staðið.
Svo sérstaklega, hafa eins og sumir af þú kafa inn pset 1, tæki og
mjög nýr heimur fyrir þér, ljóst að óánægju og
rugl og aðeins tæknileg vandamál eru að vænta.
Sérstaklega með fyrsta pset, þar er bara svo mikið nýtt, bara að
þekki LS og CD og öllum þessum Bogagöng skipanir í nýju umhverfi.
Og það er aðskilið frá raunverulegum efni og forritun sig.
Svo grein líka, að það eru vissulega skrifstofutímarnir sem til sem
stuðningur uppbygging.
Deildir byrja þetta kemur sunnudagur.
En mest um vert, ef þú ert að tilfinning bara að þetta er ekki
heimur fyrir þér grein fyrir því að það er í raun er bara að taka tíma.
Og ef ekki væri fyrir þetta tækifæri árum fyrir mig að taka flokk
fullnægjandi / ófullnægjandi, heiðarleika, aldrei hefði ég jafnvel fæti í skólastofunni.
Og þú getur breytt þessu fram, segjum fimmta Mánudagur námskeiðinu.
Svo ef þú ert á brún nú átta sig á því frekar en höfuð í einhverju öðru
vatn með öllu, telja vissulega bara að breytast til að fara framhjá / mistakast.
Aftur, það er í raun ekki þessi menning hér á Harvard um að taka hlutina
framhjá / mistakast þar sem allir virkilega vill ná eða overachieve.
En hreinskilnislega, þetta er a dásamlegur leið til að reyna eitthvað sem gæti ekki
að þekkja þig.
Og þú munt á endanum að gera í flestum tilfellum alveg fínn, kannski
mikið að koma á óvart þinn.
Og í fleiri steypu hugtök, það sem ég held framhjá / mistakast yfirleitt gerir,
sérstaklega þar sem þú gætir hafa upplifað með pset 0, ef þú hefur sett
í 10 klukkustundir, 15 klukkustundir, 25 klukkustundir í einhvers pset - og þú ert bara að lemja
höfðinu við vegginn,
og það er að fá frábær seint á kvöldin,
en þú hefur tekið pset eins 90% af leiðinni,
þú veist að þú bara getur ekki fundið út eitt -
fara / ekki raunverulega tekur brún burt af bekknum eins og þetta, þar sem þú getur raða
af hamingjusamlega segja allt í lagi, ég veit að það er ekki fullkomið.
En ég vann rassinn minn burt á þessu.
Ég er nokkuð ánægð með þar sem það endaði.
Og það verður að mæta þeim væntingum til staðið / ekki staðið.
Svo halda það í huga.
>> Allt í lagi.
Svo þeir sem hafa barist við að nota Harvard University Wi-Fi vita
að það er CS50 SSID, Wi-Fi tengingu fljótandi um að þú
gæti hafa betri heppni fyrir.
Það er lítið kaldhæðnislegt að lykilorð fyrir þetta - ef þú vildi eins og til að reyna
tengjast þessu fyrir betri hraða og láta okkur vita ef það er ekki til betri -
er einn, tveir, þrír, fjórir, fimm, alla leið upp í átta vegna átta er
öruggari en fimm.
Svo ef þú þarft að Wi-Fi lykilorð tengjast CS50 þráðlaust hér.
Einn, tveir, þrír, fjórir, fimm, sex, sjö, átta.
Og eftir á CS50 Ræðið ef þú ert enn með hléum málefni tengingu,
og við munum láta völd hægt að vita fyrir þetta rými.
>> Allt í lagi.
Svo fljótur beitu, sérstaklega fyrir þá sem eru aðdáandi strákar eða stelpur
af öllu Apple.
Það sem ég gróf upp úr fyrir nokkrum árum var þessi skrá hér ilock.c, bara til að
konar gera meira steypu og flóknari sumir af the fleiri undirstöðu C
forrit sem við höfum verið að skrifa.
Þannig að ég opnaði þessa skrá, ilock.c.
Það er í boði á fyrirlestra síðunni í dag.
Á vinstri hönd hlið, þú sjá a langur listi af aðgerðum.
Svo maður sem skrifaði þetta skrifaði upp mikið af störfum,
meira en bara helstu.
Hann notaði heild búnt af bókasöfnum hér.
Og ef við byrjum að fletta, hvað þetta raunverulega er er mjög
fyrst, ég trúi, sprunga í upprunalegu iPhone.
Þegar þú vildir Flótti upprunalega iPhone, sem þýðir untether
það frá AT & T og í raun setja sérstakan hugbúnað á það og gera hlutina
að Apple vildi ekki fólk að gera -
Jæja, einhver tók tíma til að reikna út nákvæmlega hvernig þeir gætu hetjudáð
hugbúnaður galla, mistök, galla, í hugbúnaði Apple.
Og þannig fæddist ilock.c.
Að ef þú saman það á tölvu og setja í embætti það á iPhone sem
var tengd við tölvuna í gegnum, segja, USB snúru, þetta myndi gefa þér
stjórnsýslu eða rót forréttindi á iPhone og leyfa þér að gera nokkurn veginn
hvað sem þú vilt.
>> Og það hefur verið þessi heillandi köttur og mús leikur milli Apple og
restin af heiminum, einkum eins og þeir, eins og mörg fyrirtæki, að reyna að læsa
efni þeirra niður þannig að þú getur aðeins gert við það það sem þeir ætla.
En þökk sé fólki eins og þetta og skilningur þeirra á lágu stigi
upplýsingar og í þessu tilfelli, C forritun og fullt af kunnuglega býr
að við höfum byrjað að spila með, þú ert fær um að í raun nýta
vélbúnaður á þann hátt sem þú sérð vel á sig kominn og ekki endilega sumir lögaðila.
Svo til dæmis, ég hef ekki hugmynd um hvað allt þetta er að gera.
En GetVersion hljómar frekar einfalt.
Og það lítur út eins og þetta sé aðgerð sem þessi aðili skrifaði.
Taka einhverja heiltölu sem rök, ekki aftur neitt, en
virðist lykkju með for lykkju hér og ef ástand, ef skilyrði,
brot, og einhvern veginn tengist útgáfu númer.
Ef við skruna niður -
jafnvel þó að mikið af þessum leitarorðum eru að fara að vera ný, og það er
allt fullt af aðgerðum á hér höfum við aldrei séð og gæti aldrei sjá yfir
meðan á önn -
í lok dagsins, segir það sömu reglur og rökfræði sem við höfum verið
spila með svona langt.
Svo er þetta allt of gamall til að sprunga iPhone 3s þínar eða 4S eða fljótlega 5s, þessa dagana,
en vita að það er allt mjög mikið úr þessum heimi sem við höfum
kafa í.
>> Svo skulum taka a líta á a lítill fleiri einfalt dæmi.
This einn, bara til að fá hlýja upp með sumir setningafræði og einnig nokkur önnur gögn
tegund sem við höfum talað um, en hef í raun ekki séð í C. Þannig að þetta er
skrá sem kallast positive1.c.
Og á athugasemdum efst, þetta krefst bara að notandi veita
jákvæð tala.
Svo er það dæmi um do-while lykkju, sem er gott fyrir notanda gagnvirk
forrit þar sem þú þarft að segja notendur til að gera eitthvað.
Og ef þeir vinna ekki, æpa þú á þá eða hafna inntak þeirra.
Tilfelli í benda, ég er að fara að gera línur 19 í 24 svo lengi sem notandinn hefur
ekki gefið mér jákvæða tölu.
Nú þetta nánar hér á línu 18, af hverju gerði ég lýsa n yfir þetta allt
lykkja reisa öfugt að við hliðina á línu 22 þar sem ég
raunverulega aðgát til að fá n?
Já?
[Inaudible]
>> DAVID J. Malan: Já, þannig að þetta mál um gildissvið.
Og í orð leikmaður er, hvað þýðir svigrúm vísa til?
Já?
[Inaudible]
DAVID J. Malan: Getur þú talað svolítið hávær?
Hátalarar 1: Þar sem þú getur fengið aðgang að tiltekinni breytu.
DAVID J. Malan: Perfect.
Hvar er hægt að fá aðgang að tiltekna breytu.
Og almennt er þumalputtaregla svona langt hefur verið að umfang sumra
breyta er skilgreind með nýjustu hrokkið axlabönd sem þú hefur séð.
Og svo í þessu tilfelli, ef ég gerði mistök að lýsa N á línu 22,
þessi lína myndi vinna.
Ég myndi fá int, og ég myndi setja það inn í þá breytu n í línu 22.
En hvaða línu af kóða myndi nú hafa ekki hugmynd um hvað ég er að tala um?
Svo 25, og það reynist 24, eins og heilbrigður, því að í þessu tilfelli, það fellur utan
á hrokkið axlabönd.
Svo bara smá óþægindi en mjög auðvelt að leysa með því einfaldlega að lýsa
breytilega utan fallsins sig.
>> Nú munum við sjá seinna í dag, er hægt að fara einu skrefi lengra.
Og þú gætir jafnvel fá smá latur -
og þetta er ekki til að mæla með, almennt -
en þú gætir jafnvel fá latur og setja breytu heimsvísu, svo að segja, ekki
inni í aðgerð, ekki inni í lykkju, en í skrá sig, fyrir utan
á allar aðgerðir sem þú hefur skrifað, eins og ég gerði hér á línu 15.
En þetta er yfirleitt hleypa brúnum við.
En átta sig á þessu er lausn stundum til annarra vandamála, eins og við munum
loksins sjá.
Svo að nú munum við skilja það svona.
En við skulum sjá hvort við getum umrita þetta bara til að byrja að tjá okkur með
lítið öðruvísi.
>> Svo þetta forrit, bara að vera skýr, er positive1.
Leyfðu mér að fara á undan hér og Telnet minn gera positive1, Enter.
Safnar, allt í lagi.
Ég ætla að keyra positive1, Enter.
Ég krefst að þú gefur mér jákvæð heiltala.
Ég segi -1.
Það virkaði ekki.
0, 99, sem virðist virka.
Kannski ekki mest krefjandi próf.
En að minnsta kosti það er gott geðheilbrigði athuga að við erum á réttri leið.
Svo nú langar mig að fara á undan og opna útgáfu tvö af þessu.
Og það er öðruvísi þegar?
Það útfærir sama.
En hvað er stökk út eins og greinilega mismunandi að þessu sinni?
Já, þannig að þetta bool í grænu.
Gedit er lögð áhersla á grænt þetta leitarorð þekktur sem bool,
sem er gögn tegund.
Það kemur ekki innbyggður í öllum útgáfum af C. Þú þarft að fela í
sérstakur bókasafn.
Í okkar tilviki, ma ég CS50 bókasafn svo að við
hafa aðgang að bool.
En í línu 18, virðast við að hafa Boolean gildi hér kallast þakklát.
Þannig að ég hefði getað kallað þetta neitt.
En ég kallaði það þakklát bara að svona komi sumir merkingartækni merkingu.
Svo fyrst á línu 18, ég er greinilega ekki þakklát því
Boolean gildi þakklátur er frumstilla til falskur í línu 18.
Og svo virðist sem ég hef gert hér í línum 21 til 23 er ég hef bara
konar endurskrifa rökfræði mína.
Svo ekki virkni öðruvísi.
En í línu 22 núna, athuga ég hvort int notandinn hefur veitt er meiri en
0, þá breyti ég bara gildi þakklát satt.
Og hvers vegna þarf ég að gera það?
Vegna þess að í línu 25, greinilega, ég ætla að athuga með ástand.
Gera þessa lykkju en þakklátur er falskur.
>> Þannig að ég legg þetta í stað útgáfu eitt af því að það er að minnsta kosti
svolítið meira innsæi, kannski.
Það er aðeins meira grundvölluð á ensku.
Svo gera eftirfarandi þegar þú ert ekki þakklát eða meðan þakklátur er falskur.
Og í þetta sinn, líka, virðist að ég er alveg sama ekki að muna það sem notandinn slegið
í því fyrirvara að það er engin breytu n.
Svo í raun, ég -
smá hvít lygi þar.
Virkni, the program er a hluti ólíkur þegar við að fá til the botn af
það vegna þess að ég er ekki að muna hvað n er.
En ég vildi að sýna hér líka að jafnvel þó að við höfum séð GetInt og
GetString notuð á hægri hönd hlið af jafn skilti svona langt þannig að
við minnumst gildi, tæknilega, það er ekki nauðsynlegt.
Ef af einhverri ástæðu þú bara ekki sama að vista gildi, þú vilt bara
að athuga gildi, eftir því að við getum einfaldlega að skrifa þetta sem GetInt opinn
paren, loka paren.
Þessi aðgerð er að fara að skila gildi, eins og við höfum verið að segja.
Það er að fara að gefa þér aftur að int.
Og svo ef þú heldur andlega af þessu gerist, þegar ég slá í 99, GetInt
skilar númer 99.
Og svo eðli, það er eins og númerið mitt væri í raun það.
Svo ef 99 er örugglega meiri en 0, þá verður þakklát satt.
Þá áttar lína 25 ooh, erum við gert vegna þess að ég er nú þakklát.
Og í samræmi 26, við segjum einfaldlega, takk fyrir jákvæða heiltölu, hvað sem það
gerðist.
>> Nú skulum gera lítilsháttar syntactic sykur hér, svo að segja.
Við skulum sjá hvort við getum hreinsa upp þessa línu 25 með þessu þriðja og síðasta dreifni
í positive3.
Svo taka eftir Eini munurinn nú er það lína af kóða?
Já, svo 25.
Og við höfum ekki séð þetta bragð bara ennþá.
En við gerðum sjá upphrópunarmerki á mánudagur, sem gefur til kynna hvað?
Svo ekki, eða neitun.
Svo taka Boolean gildi og flettir gildi.
True verður falskur.
False verður satt.
Svo þetta, myndi ég leggja til, er jafnvel svolítið meira innsæi um leið
skrifa kóðann því ég frumstilla enn þakklát falskur.
Ég enn eftirfarandi.
Ég sett þakklát við þegar tíminn kemur.
En nú getur þú í raun bara þýða þennan kóða munnlega vinstri til hægri,
en ekki þakklát.
Vegna Bang, eða upphrópunarmerki, táknar hugmyndina um ekki, svo á meðan
ekki þakklát.
>> Svo aftur, við höfum ekki tekið neinar nýjar hugmyndir í sjálfu sér.
Við höfum talað um Booleans aftur þegar við spiluðum við grunni.
En átta sig nú getum við bara byrjað að skrifa kóðann okkar í
marga mismunandi vegu.
Svo sérstaklega í pset1, ef þú ert svona í erfiðleikum með að reikna út hvernig til
skrifa eitthvað forrit, líkur ert þú ert í heppni vegna þess að það er að fara að vera allir
Fjölda lausna sem hægt er að gerast á.
Til dæmis, þetta er bara þrír að jafnvel einföldustu áætlunum.
Allt í lagi.
Og nú muna á mánudag, eftir að við á þessari skýringu við gildi aftur.
Svo í fyrsta skipti, skrifaði við forrit sem er ekki bara aðal,
það hefur einnig eigin hlutverki sínu sem ég skrifaði hér.
Þannig að í línu 31 með 34, ég hef innleitt teningur virka.
Það er ekki flókið.
Það er bara sinnum á sinnum, í þessu tilfelli.
En hvað er mikilvægt um það er að ég ætla að taka inntak í formi og
Ég er aftur framleiðsla í formi sinnum sinnum a.
>> Svo nú er ég að hafa getu, mikið eins og ég nota til að með printf einn, til að hringja
þessa aðgerð með því að kalla teningur virka.
Og teningur virka tekur smá inntak.
Og teningur skilar sumir framleiðsla.
Og svo hins vegar printf bara gerði eitthvað.
Það skilaði ekki neitt sem við þótti vænt um - jafnvel þótt, eins og að
hliðar er það aftur gildi.
Þú bara almennt hunsa hana.
Printf bara gerði eitthvað.
Það var aukaverkun af prentun á skjáinn.
Með því móti hér, höfum við teningur virka sem
raun skilar einhverju.
>> Svo er þetta yfirleitt -
fyrir þá sem þekkja þetta, er það nokkuð augljóst hugmynd.
En fyrir þá sem minna þekkja þessa hugmynd liggur á aðföngum og fá
aftur framleiðsla, við skulum reyna bara eitthvað ofur einfalt.
Er einhver þægilegt að koma upp á sviðinu í stuttu máli?
Þú verður að vera ánægð með myndavél á þér, eins og heilbrigður.
Já.
Jæja, hvað er nafnið þitt?
KEN: Ken.
DAVID J. Malan: Ken.
Allt í lagi, Ken.
Komdu upp.
Svo Ken er að fara að vera fall af tegund hér.
Og við skulum fara á undan og gera það.
Skulum fá smá fínt.
Gaman að hitta þig.
Velkomin á miðju sviðinu.
Allt í lagi.
Við skulum ná þessu hnapp hér.
Allt í lagi.
Svo hér þú ert með nútíma chalkboard.
Og það sem ég er er helsta hlutverk, til dæmis.
Og ég hef ekki iPad í minni hendi.
Ég er ekki alveg að muna hvernig á að - ja, í raun ekki hægt að segja það.
Ég er ekki í raun að hafa góða rithönd.
Og svo því, ég vil að þú að prenta eitthvað á skjánum fyrir mig.
>> Svo er ég að vera helstu forrit.
Og ég er að fara að fá þig að segja þetta með því að skrifa það í grunni kjúklingur minn og
þá liggur þér inntak.
Svo eins kjánalegt þó að þessi æfing er hugmyndin um störf og kallar á
virka og skila virka raunverulega snýst um að þetta.
Ég er aðal.
Ég hef bara skrifað printf ("eitthvað") á skjánum.
Ég er að keyra þetta forrit.
Og eins fljótt og printf fær heitir, það tekur einn rök - eða einn stika,
stundum -
milli gæsalöppum.
Hér er þessi rök.
Ég farið með hana til Ken.
Nú er hann svartur kassi skrifað nokkur mörg ár síðan sem virðist
bara veit hvernig á að prenta það á skjánum.
>> Svo, framkvæma.
Það er ekki slæmt.
Svo, mjög góð.
Svo nú Ken er gert framkvæmd.
Er hann að skila mér neitt til baka?
Svo ekki að við höfum séð hingað til.
Aftur, printf er í raun skila fjölda.
En við erum að fara að hunsa það nú vegna þess að við höfum aldrei notað það.
Svo að það er fyrir Ken.
Og nú kemur aðal aftur að framkvæma -
Helstu tekur yfir stjórn á kerfinu aftur því þessi lína af kóða,
printf er gert framkvæmd.
Og við förum um leið okkar leiddar hvað aðrar línur eru.
>> Allt í lagi.
Svo nú skulum við reyna aðeins öðruvísi dæmi.
Og í þetta sinn hér, við skulum fyrst að hreinsa skjáinn hér.
Og í þetta sinn munum við gera cubing virka.
En í þetta sinn, ætla ég framleiðsla gildi.
Svo við skulum fara á undan og gera það.
Svo nú hef ég línu af kóða sem segir x = teningur (x).
Svo í raun let's -
lína af kóða, muna, lítur svona út.
x = teningur (x).
Svo hvernig er það að fara að vinna?
Svo við skulum fara á undan og gefa þér hvíta skjáinn.
Og ég er að fara að skrifa núna niður gildi af x, sem á þessari stundu í
tími kemur að, segjum, 2, að halda það einfalt.
Þannig að ég hef skrifað niður á blað og verðmæti 2,
sem er gildi x mín.
Ég hendi því í Ken.
KEN: Og ég skrifa bara svarið?
DAVID J. Malan: Já, við skulum bara skrifa svarið.
Allt í lagi.
Og nú hefur hann að skila mér eitthvað.
Svo -
fullkominn.
Nice segue.
>> Svo nú er hann réttir mér aftur gildi 8, í þessu tilfelli.
Og hvað á ég að gera við það?
Ja, reyndar, við skulum sjá.
Fá þetta rétt.
Hvað er ég að fara að gera við það?
Nú ætla ég að taka þetta gildi og reyndar geyma það í þeim
sömu bitar í minni.
En taka, ég er svona að berjast hér.
Ég er svolítið ruglaður því þegar ég skrifa reyndar gildi x?
Þar sem ég hef bara gert er líkamlega hönd Ken a stykki af pappír
sem hafði gildi 2, sem var x.
Og reyndar, það er einmitt það sem gerist.
Svo kemur í ljós að þegar þú hringir í aðgerð, og þú fara í rifrildi
eins og "Hello World" eða þú fara í rifrildi eins og 2, yfirleitt, þú ert
farið í afrit af þeim rök.
Og svo eins og ég skrifaði niður númer 2 hér og seldi það til Ken, sem verða
meina að ég er enn með afrit af gildi 2 einhversstaðar.
Þar reyndar, nú að ég hef fengið til baka gildið 8, þarf ég að fara aftur í
RAM og reyndar skrifa niður 8 þar sem ég hafði einu sinni númer 2.
>> Svo sjónrænt muna þessa hugmynd fyrir brottför í bókstaflega
afrit af gildi.
Ken er hlutur hans, hendur mér til baka eitthvað - í þessu tilviki,
gildi eins og 8.
Og þá verð ég að gera eitthvað með þessi gildi ef ég
vilja til að halda það í kring.
Svo allt þetta verður allt of kunnuglegt fyrir löngu.
Þakka þér svo mikið fyrir þessa kynningu hér, Ken.
Allt í lagi.
Mjög vel gert.
Svo skulum sjá hvernig sem á endanum tengist sumir af the virka
starf sem við höfum verið að gera hér.
Svo láta mig fara á undan og færa okkur aftur til cubing dæmi hér.
Athugið að ef við viljum í raun að byrja að taka þetta lengra, við erum að fara
að hafa til að hafa í huga þá staðreynd að fjöldi x sem er verið samþykkt í
hér er öðruvísi hvað er í raun verið að fara framhjá í aðgerðina.
Svo aftur, þetta fór með afrit er að fara að verða nokkuð
germane í bara smá stund.
>> Svo skulum taka a líta á eitthvað sem er ekki alveg að vinna rétt enn.
Ég ætla að fara á undan og opna þriðja þrjótur dæmi, sem
er gölluð í eðli sínu.
Og það heitir buggy3, og það áhald skipta virka.
Svo hér erum við með helsta hlutverk sem hefur x og y geðþótta frumstilla til
1 og 2.
Við gætum notað GetInt, en við þurfum bara einfalt æfingu.
Svo það er erfitt dulmáli eins og 1 og 2.
Í línum 21 og 22, prenta við virðist út x og y, einn í hverja línu.
Þá, á lína 23, segjast ég er skipta þessi gildi, punktur, punktur, punktur.
Ég kalla virðist fall á línu 24 sem heitir skipti
sem tekur tvær rök.
Það er alveg legit fyrir aðgerðir til að taka tvö rök.
Við höfum séð printf gera það nú þegar.
Svo tekur skipti virðist x og y.
Og eins og nafnið gefur til kynna, myndi ég vona að það er að fara að
skipta þessi tvö gildi.
Svo ég kröfu á línu 25, skipti.
Og ég prentaðu x og y samkvæmt þeirri forsendu að
þeir hafa örugglega verið skipti.
En ef ég hlaupa í raun þetta forrit -
láta mig opna Terminal glugga.
Leyfðu mér að gera buggy3.
Eins og nafnið gefur til kynna, þetta er ekki að fara að enda vel.
Því þegar ég lenti inn, eftir því að x er 1.
Y er 2.
Og enn í lok áætlunarinnar, þá eru þeir samt í raun sama.
>> Svo miðað við mótmælum bara nú með Ken, hvað er raunverulega að gerast?
Jæja, við skulum kafa inn í þetta skipti virka.
Það er frábær stutt.
Það er bara nokkrar línur af kóða langur.
En það er grundvallaratriði vandamál byggt á einföldu sögu sagði
upp hér með Ken?
Hvers vegna er skipti brotinn?
[Inaudible]
Einmitt.
Þannig að við erum að geyma til að afrita, ekki breytu sig.
Með öðrum orðum, skipti tekur greinilega tvær röksemdir, sem Int.
Og það er geðþótta kallað a og b.
Og hérna, ég hef samþykkt í x og y, sem eru hver um sig 1 og 2.
En ég er ekki bókstaflega farið í x.
Ég er ekki bókstaflega farið í y.
Ég er liggur afrit af x og afrit af y.
Það er eins og næstum eins og þú afritað og límt inn skipta þau gildi sem
þú vilt það til í raun og veru vinna.
Svo ef það er málið, þegar ég, the program, hefja framkvæmd
lína 35, þá 36 -
þegar ég fæ að línu 37, á þessum tímapunkti í sögunni, hvað er virði a?
Á þessum tímapunkti í sögunni, lína 37, hvað er gildi fyrir á þessum tímapunkti?
Svo það ætti bara að vera 1.
Hægri?
Þar x voru sett sem fyrsta rök.
Og þessi aðgerð bara geðþótta kallar fyrsta rök þess, a.
Á sama hátt er y, annað rifrildi.
Og það er bara geðþótta kalla Önnur rökin b.
>> Nú dichotomy er í raun nokkuð einfaldlega útskýrt.
Hugsaðu um það.
Ekkert af okkur hafa hitt mann sem skrifaði printf.
Svo sannarlega, hann eða hún hefur ekki hugmynd um hvað breytur okkar 30 árum síðar eru að fara
að vera gestur.
Svo hefur það að vera skil á milli þess sem þú kallar breytur í
aðgerðir sem þú ert að skrifa og það sem þú kallar breytur í aðgerðir sem þú ert
hringja eða nota.
Svo í öðrum orðum, hef ég skrifað breytur mína sem x og y.
En ef einhver annar hefði skrifað skipti virka, hann eða hún vissulega
vildi ekki vita hvaða breytur mín eru að fara að vera kölluð.
Svo grein fyrir að þetta er hvers vegna þú hefur þetta duality nafna.
Tæknilega gæti ég gert þetta fyrir tilviljun.
En þeir myndu samt vera samþykkt sem afrit.
Það myndi bara vera hrein tilviljun fagurfræðilega ef þessi manneskja sem skrifaði
skipti höfðu notað sömu nöfn.
>> Allt í lagi.
Svo á þessum tímapunkti í sögunni, línu 37, sem er 1.
B er 2.
Og nú er ég að halda áfram að skipta á þeim.
Jæja fyrst af öllu, láta mig gera í raun það mun einfaldlega.
Ég veit ekki hvað þessir þrjár línur af kóða var að gera.
Leyfðu mér að gera bara þetta.
B fær.
a fær b.
Lokið.
Hvers vegna er þetta brotinn, þá er rökrétt?
Það er góður af leiðandi hlutur, ekki satt?
Svo verður b.
Og B verður.
En vandamálið er að um leið og lína 37 keyrir, það er
gildi a og b?
Sama, 1.
Þar sem þú hefur stútað, svo að segja, þú hefur breytt B að jafna a.
Svo þegar lína 37 er keyrð, það er frábært.
Þú hefur nú tvö eintök af númer 1 inni þessa aðgerð.
Svo þegar þú segir í línu 38, sem fær B, vel, þú ert svona ruglaður.
Þar sem þú ert bara að framselja 1 til 1.
Þú hefur konar misst gildið sem þú aðgát óður í.
>> Svo í upprunalegu útgáfuna af þessu, eftir því sem ég gerði.
Ég hafði í stað þriðja línu af kóða sem líktist þessu.
Ég lýsi tímabundna breytu - tmp er mjög algengt nafn
fyrir tímabundna breytu.
Það er int vegna þess að það þarf að passa það sem ég vil gera afrit af.
Ég geyma afrit af inni tmp. Svo þegar lína 37 hefur framkvæmt,
verðmæti sem er -
fljótur geðheilbrigði athuga -
1.
Verðmæti b er 2.
Og verðmæti tmp er einnig 1.
Svo nú er ég framkvæma línu 38.
Svo þegar lína 38 keyrir, sem tekur gildi b.
Og b var 2.
Svo er nú 2.
Svo á þessum tímapunkti í sögunni, sem er 2, b er 2,
og tmp er 1.
Svo nú rökrétt, getum við gildi bara Plop tmp er í b.
Og við erum að gera.
>> Þannig að við höfum leyst þessi vandamál.
Því miður, þegar ég keyra þetta forrit í þessu formi, er það ekki í raun skipta
hvaða gildi.
En til að vera ljóst, hvers vegna?
Ég fastur rökrétt vandamál frá bara í smá stund síðan.
En aftur, ef ég keyra þetta forrit, vera x og y óbreytt í lok
forritsins framkvæmd.
[Inaudible]
DAVID J. Malan: Þannig að við höfum ekki skilað neinu.
Svo er það satt.
Er en það kemur í ljós að það er a hluti af a vandamál hér því svona langt
eina sem við höfum getað til að koma aftur er einn hlutur.
Og þetta er takmörkun á C. Þú getur aðeins aftur raun eitt gildi,
í því tilviki, ég er svona fastur hér
vegna þess að ég gæti aftur á nýju gildi x eða ég gæti skila
ný gildi y.
En ég vil bæði aftur.
Svo aftur er einföld lausn er ekki hér.
En vandamálið er í grundvallaratriðum hvers vegna?
Hvað höfum við skipti í raun og veru?
a og b.
En a og b eru afrit af x og y, sem þýðir að við gerðum bara allt þetta
vinna - við eytt eins þrjár mínútur að tala um skipti
virka og öll þrjú af þessum breytum.
Og það er frábært, alveg rétt í einangrun.
En og umfang B er aðeins í þessum línum hér.
Svo bara eins og a for lykkju, ef þú lýsa heiltölu i inni fyrir
lykkja - sama hátt, ef þú ert að lýsa a og b inni í aðgerð sem
þú hefur skrifað, þá eru þeir aðeins gild innan þess virka.
Sem þýðir að um leið og skipti er gert að framkvæma og við förum frá línu 24 til
lína 25, x og y hafi ekki verið breytt á öllum.
Þú sóa bara allt fullt af tíma að skipta um afrit af breytum.
>> Svo kemur í ljós að lausnin á þessu er í raun ekki augljós.
Það er ekki alveg nóg að skila gildi vegna þess að við getum
aðeins skila einu gildi.
Og ég virkilega vil að skipta bæði X og Y á sama tíma.
Þannig að við erum að fara að koma aftur á þetta.
En nú, átta sig á að málið grundvallaratriðum stafar af því
sem a og b eru afrit.
Og þeir eru í eigin umfang þeirra.
Jæja, við skulum reyna að leysa þetta á einhvern hátt.
Leyfðu mér að fletta í raun aftur hingað og opna upp, við skulum segja, fjórða afbrigði
þetta, buggy4.
Og hvað um það?
Þetta er svipað, en einfaldari vandamál að líta á áður en við taka a stunga á að
að leysa það.
Þetta forrit er kallað vöxtur.
Og það Frumstillir virðist að x heiltala að 1 línu 18.
Ég kröfu þá x er 1.
Ég þá kröfu incrementing, punktur, punktur, punktur.
Ég kalla þá vöxtur.
En þá í línum 22 og 23, ég beiti fyrir mig það hefur verið incremented.
Ég krafa x er nú hvað sem það er, 2 væntanlega.
>> En þetta forrit er þrjótur.
Hvað er vandamálið?
Já?
[Inaudible]
DAVID J. Malan: Einmitt.
Svo x hefur verið lýst augljóslega á línu 18.
Það er inni hrokkið axlabönd aðal.
Svo er einfalt svar hér er að, ja, x er hér.
Það er ekki til í takt 32.
Svo þetta forrit í raun ekki einu sinni saman.
The þýðanda, þegar ég reyni að setja saman þessa kóða, er að fara að æpa á mig
um einhverja óskilgreinda auðkenni eða eitthvað þar að lútandi.
Í staðreynd, við skulum reyna.
Þetta er að gera buggy4.
Það er það.
Notkun undeclared auðkenni x í takt 32.
Og í raun, við skulum vera hér skýr í dag þannig að þetta er gagnlegt í
skrifstofutímarnir og heima.
Takið eftir að það er lítið cryptically skrifað.
En sú staðreynd að Clang hefur öskraði á okkur og sagði:
buggy4.c: 32:5 er raunverulega gagnlegur.
Það þýðir að villa sé á línu 32 á stöðu eðli fimm.
Svo einn, tveir, þrír, fjórir, fimm.
Það er, í raun, þar sem vandamálið er.
Og einnig að hafa í huga á skrifstofutíma og heima, ég er heppinn hér.
Ég er með eina mistök.
Það er að fara að vera tiltölulega auðvelt að festa.
En ef þú færð allan skjáinn fullur af yfirþyrmandi villa skilaboð, aftur,
grein fyrir því að bottommost maður gæti bara verið einkenni um
hæstur sjálfur.
Svo alltaf elta niður galla þínum frá toppi og niður.
Þar gæti bara verið Daisy-keðja áhrif sem bendir þér
ráða fleiri vandamál en þú gerir í raun og veru.
>> Svo hvernig getum við lagað þetta ef markmið mitt er að hækka x?
Hvað er það?
Allt í lagi.
Þannig getum við gert x heimsvísu.
Við skulum taka flýtileið sem ég varaði fyrr.
En Heck, við þurfum bara fljótur festa.
Svo við skulum bara segja að int x upp hér.
Það gerir x GLOBAL.
Svo nú hefur helstu aðgang að henni.
Og vöxtur hefur aðgang að henni.
Og svo látið mig fara á undan og taka saman þetta núna.
Gera buggy4, Enter.
Virðist saman núna.
Við skulum hlaupa buggy4, og það virðist í raun og veru vinna.
Nú er þetta eitt af þessum hlutum -
gera eins og ég segi, ekki eins og ég, eins og ég hef bara gert hér.
Vegna almennt, eru áætlanir okkar að fara að fá mikið meira áhugavert og
mun lengur en þetta.
Og ef lausnin á vandamálum lífsins er bara Ah, setja alla
breytur efst á skránni, mjög fljótt að gera áætlanir fá
horrifically erfitt að stjórna.
Það verður erfiðara að hugsa upp nýja breytu nöfn.
Það verður erfiðara að skilja hvað breyta er að gera hvað.
>> Og svo almennt, þetta er ekki góð lausn.
Svo skulum gera þetta betur.
Við viljum ekki að nota alþjóðlegt breytu hér.
Ég vil að hækka x.
Þannig að ég gat auðvitað -
í lok dags, það konar kjánalegt sögu vegna þess að við gerum bara þetta.
En ef ég vissi ekki um það rekstraraðila, eða ég var ekki leyft að
breyta henni í helstu sjálft, hvernig annars gæti ég innleiða Ken hérna, þetta
tími ekki teningur heldur að hækka?
Hvernig breyti ég þetta í hér?
Já.
[Inaudible]
DAVID J. Malan: Allt í lagi, gott.
Svo hvers vegna gera ég ekki fara í x?
Og þá frekar en að skila því, hvers vegna ekki ég bara aftur x + 1?
Nú hafa nokkrar fleiri hlutir til að breyta hér.
Ég er á réttri leið.
Hvað annað þarf ég að fínstilla?
Einhver annar.
Já?
[Inaudible]
DAVID J. Malan: Ég þarf að skipta um aftur tegund vöxtur
því það er ekki ógilt.
Tóm þýðir ekkert er að koma aftur.
En greinilega, nú er það.
Svo þetta þarf að breyta til að int að vera í samræmi við það sem
Ég er reyndar að fara aftur.
>> Nú er eitthvað annað enn þrjótur hér.
Já?
[Inaudible]
DAVID J. Malan: Þannig að ég þarf að hækka x?
[Inaudible]
DAVID J. Malan: Ah, þannig að ég þarf að fara x.
Þannig að ég þarf að gera þetta hérna.
Svo frumgerð, ég verð að breyta þessu upp hér.
Svo hefur þetta að verða int.
Þetta er að verða -
Hmm.
Ég hef í raun villu hérna.
Við skulum laga þetta einn fyrst.
Hvað ætti þetta að vera í raun og veru?
Svo það hlýtur að vera int eitthvað.
Það gæti verið x.
En hreinskilnislega, ef þú byrjar að hringja allar breytur x þína, það er að fara að fá
minna og minna ljóst hver er hver.
Svo við skulum bara geðþótta velja mismunandi nafngiftir venju fyrir minn
hjálpar aðgerðir, aðgerðir sem ég er að skrifa.
Við munum kalla það.
Eða við gætum kalla það - við skulum kalla það even_number að vera enn skýrari.
Svo ég verð að fara aftur hvað númerið er auk 1.
Og nú þarf ég að breyta eitt annað hlutur upp hér og einn
annar hlutur upp hér.
Hvað þarf ég að breyta á línu 21 fyrst?
Ég verð að framselja það til x.
Svo ég get ekki bara hringt vöxtur x.
Ég þarf að muna að svar með því að breyta gildi x á
vinstri hönd.
Og jafnvel þó að x er nú á vinstri og hægri, það er algerlega allt í lagi vegna þess að
Hægra megin verður keyrð fyrst þá fær plopped í vinstri
hönd hlutur, x í þessu tilfelli.
Og svo loks, þetta er auðvelt festa núna.
Þetta ætti bara að passa hvað er þarna fyrir neðan.
Int númer.
>> Allt í lagi.
Svo allt fullt af breytingum fyrir mjög heimskur virka.
En fulltrúi af hlutum sem við munum í auknum mæli að gera.
Svo gera buggy4.
Ég hef ruglaður upp einhvers staðar.
Guð minn góður.
Fimm mistök í, eins og, sex lína program.
Svo er það rangt á línu 18, eðli 5?
Allt í lagi.
Þannig að ég verð að lýsa þessari int.
Allt í lagi.
Svo skulum við sjá, a heild búnt af annar villur.
Oh my god.
19, 18, 21.
En aftur, við skulum bara hreinsa skjáinn -
Control L hér - og aftur hlaupa Clang.
Svo fimm vandamál í raun bara eitt.
Svo nú skulum við hlaupa buggy4, Enter.
Whew.
x hefur verið incremented rétt.
>> Allt í lagi.
Einhverjar spurningar um hvernig á að hækka tölur?
Já?
Hátalarar 2: Hvers vegna er það að þú getur bara breytt X að tala í breytu
nafn og það mun vita hvað þú átt við?
DAVID J. Malan: Góð spurning.
Hvernig er það að ég get bara breyta x í tölu og the program vilja vita
strax?
Svo aftur, hugsa af það eins og þetta abstrakt.
Svo ef ég er aðal og Ken er stigvaxandi, hreinskilnislega, ég er sama
hvað Ken kallar iPad hans.
Mér er alveg sama hvað hann kallar eitthvað sem hefur að gera með framkvæmd hans
þessa virkni.
Svo er þetta framkvæmd smáatriði sem ég, helstu, ekki
þarft að hugsa um.
Og svo bara að breyta því stöðugt inni í virka, tala hér
og númer hér er allt það tekur svo lengi sem ég laun.
Það er tegund af eins og ef þú hugsa um - margir af okkur, þessir af þú með er ökumaður
leyfi sem hefur ekið, eða ef þú hefur jafnvel ekið á bíl -
flest okkar hafa ekki hugmynd um hvernig bíll virkar undir hetta.
Og bókstaflega, ef þú opna hetta, mest af okkur - ég sjálfur innifalinn -
er ekki að fara að raunverulega vita hvað við erum að horfa á.
Góður af eins og þú getur fundið með efni eins og þetta núna.
En við ekki í raun að sama hvernig bíllinn virkar.
Við þurfum ekki að hugsa hvað allt á stöngum og stimplum og snúrur inni
bíllinn er í raun að gera.
>> Svo eitthvað eins og það sem þú kallar að stimpla ekki máli
hér í þessu tilfelli.
Sama hugmynd.
Já?
[Inaudible]
DAVID J. Malan: Ef það voru fleiri notkun breytu Xa augnabliki síðan,
þú, sem forritari, þyrfti að breyta þeim alls staðar.
Eða þú gætir bókstaflega gert File Valmynd, og þá finna / skipta
eitthvað svoleiðis.
En þú ert að fara að þurfa að gera þessar breytingar sjálfur.
Þú verður að vera í samræmi.
[Inaudible]
DAVID J. Malan: A sérstakri röð eins og hér?
Ef þetta var int annað númer?
Já.
Svo skiptir máli til þess þegar þú ert að hringja í aðgerð.
Svo ef ég væri að hringja vöxtur hér með eitthvað kommu eitthvað,
það er bein kortlagning.
Fyrsta breyta, hvað sem það er kallað, er afrit af fyrsta
rök hérna.
Því miður, þetta ætti ekki að vera sviga.
Annað línur rök upp með seinni.
>> Svo til þess, já, mál.
Allt í lagi.
Því miður tók ég langa leið til að komast þangað.
Aðrar spurningar?
Allt í lagi.
Svo við skulum sjá hvort við getum ekki mála mynd af hvað er í raun að fara á
hér undir hetta, svo að segja.
Þannig að þetta er rétthyrningur sem gæti gefið minni tölvunnar.
Svo jafnvel ef þú hefur enga hugmynd um hvernig minni virkar eða hvernig RAM virkar, að minnsta kosti
gera ráð fyrir að þú hefur bunches af henni þessa dagana.
Þú hefur fengið megabæti af því.
Þú hefur fengið gígabæta af því.
Og við vitum frá núlli viku að bæti er bara hvað?
8 bitar.
Einmitt, svo 8 núllum og sjálfur.
Svo ef tölvan þín hefur tónleikum af RAM, tveir gigs af RAM þessa dagana, hefur þú a
milljarða eða 2 milljarðar bæti af minni, eða u.þ.b. 8 milljarða eða 16 milljarða
bits, inni á tölvunni þinni.
Nú ólíkt litla Sjaldgæf Willy dæmi, það er ekki segulmagnaðir agnir
yfirleitt lengur.
Æ, í fartölvur minnsta kosti, það er Solid State drif, SSDs, að
bara hafa enga hreyfanlega hluti.
Það er allt rafrænt.
Það er allt rafmagn byggt.
Svo held þó, þessa rétthyrnings sem bara alþingismaður einn eða tveir
gígabæta af minni sem þú hefur.
>> Svo það er klumpur af minni.
Nú hefur the veröld af tölvunarfræði konar skipt burt klumpur af
minni til að gera mismunandi hluti.
Svo til dæmis, ef þetta er RAM tölvunnar - sem leiðbeinandi við að
rétthyrningur þar - kemur í ljós að með því að venju, efst á RAM, þannig að
að tala, er yfirleitt það sem er kallað texta hluti.
Þeir eru núllum og þau sem þú hefur safnað saman.
Svo þegar við höfum litið undir hetta á það a.out er, allt
á núllum og sjálfur -
þegar þú keyrir forrit, eru þeir núllum og sjálfur hlaðinn úr harður
aka inn í eitthvað sem kallast RAM.
Og í RAM, þá eru þeir að setja efst.
Nú á meðan, hefur þú aðra hluti.
Frumstilla gögn forsniðinn gögn.
Þessir tveir swaths af minni átt að alþjóðlegum breytur sem
þú ert ekki nota oft.
En stundum ef þú gerir það, enda þeir upp þarna eins og heilbrigður.
Þá er einhver önnur efni.
Umhverfi breytur, sem við munum ekki eyða miklum tíma í.
En þá tvö mikilvæg atriði sem mun koma aftur um þetta
önn, stafla og hrúga.
>> Svo mest af minni tölvunnar er frátekið þegar í gangi áætlun um
eitthvað sem heitir á mánudaginn og eitthvað sem kallast hrúga.
Og við erum ekki að fara að tala um hrúga í dag, en við munum
tala um mánudaginn.
Og stafla er ætlað að töfra upp visual eins og matsal
máltíð stæði í Mather House, eða hvar sem þú verður að vera, þar sem
matsalur starfsfólk hreinsa þá á hverjum degi.
Þeir stafla þeim upp frá gólfi upp.
Og álíka í minni, er þessi hugmynd um að setja eitthvað á
stafla, setja eitthvað á mánudaginn, setja eitthvað á mánudaginn.
Og hvað er átt við með þessu?
Jæja, við skulum stækka bara neðri hluta myndarinnar, tölva er þinn
RAM, að leggja eftirfarandi.
Það kemur í ljós að þegar þú keyrir forrit eins a.out eða halló, hvað
The program er að þú hefur skrifað,
aftur, eru þeir núllum og sjálfur hlaðinn af harða disknum þínum - sem er
langtíma geymslu, helst þar, jafnvel þegar þú draga the tappi -
hlaðinn inn vinnsluminni.
RAM er hraðari en harða diska.
Það er minna en harða diska.
En það er þar sem forrit búa á meðan þú ert að keyra þá.
>> Svo þú tvöfaldur smellur forrit á Mac eða PC - það er hlaðinn úr
harður ökuferð inn í vinnsluminni.
Um leið og það er hlaðið inn RAM, fara á núllum og sjálfur á leiðinni ofan að
svokallaða texta hluti.
En svo um leið og forritið þitt raunverulega byrjar að keyra, helstu
virka er kallað.
Og helstu, eins og við höfum séð, hefur oft staðbundna breytum.
Og það hefur ints og strengir og chars og þess háttar.
Svo ef forritið þitt sem þú hefur skrifað eða forrit sem þú þarft
tvöfaldur smellt notað nokkrar breytur innan helstu, enda þeir upp á að
neðst á stafla þinn af minni, svo að segja.
Nú meira concretely, hvað þýðir þetta í raun?
Þetta þýðir bara að ef við værum að fara að telja það -
Ef við værum að fara að tala um bæti af RAM í tölvunni þinni, eftir því að
þetta gæti verið bæti númer núll.
Þetta gæti verið bæti númer eitt, tvö, þrjú, fjögur, fimm, sex, allt
leið upp að eins -
2 milljarðar yrði alla leið þarna efst.
Svo í öðrum orðum, þegar við tölum um RAM eða minni í skilmálar af bæti það
þýðir bara að einhver hefur ákveðið hvað ég á að telja hvert
þá klumpur af minni.
>> Svo þegar þú þarft 32 bita fyrir int eða þú þarft 8 bita fyrir bleikju, þar sem
þeir enda í minni?
Jæja eðli, enda þeir bara upp neðst á þessu
hlutur sem heitir stafla.
En það sem er áhugavert nú þegar helsta kallar virka.
Segjum fall kallast foo, bara handahófskennt nafn.
Hvað gerist er aðal er neðst í þessum stafla af minni.
Foo nú er sett ofan á helsta í minni.
Svo allir heimamaður breytur sem foo hefur endað konar hugtök yfir
þeir í haf.
Ef foo kallar annan valkost sem heitir Bar, þessir breytur endanum hér.
Ef símtöl eitthvað annað, hér, hér, hér.
Svo er það sem er áhugavert um að keyra forrit sem eins og þú kalla aðgerðir,
og eins og þeir aðgerðir kalla aðgerðir, og sem þær aðgerðir kalla aðgerðir,
þú byggja upp þessa stafla aðgerðir í minni.
Og aðeins einu sinni skilar þú byrjar að fá að minni aftur.
Svo er einn af the auðveldlega leiðir til að keyra út af minni í tölvuforriti til
skrifa aðgerðir sem aldrei koma aftur.
>> Svo til dæmis, við skulum sýna eins mikið með
viljandi þrjótur program.
Leyfðu mér að fara á undan og gera # include , int main (tóm).
Og ég ætla að gera á meðan (2> 1), sem verður að öllum líkindum ekki alltaf
breyting á okkur.
Og láta mig fara á undan núna og gera printf.
Raunverulega, það er að fara að vera minna sjónrænt áhugavert.
Við skulum gera þetta.
Fyrir int (i = 0; i> 0).
Við skulum gera þetta mistök, i + +.
Og við skulum ekki hér printf.
Við skulum æfa það sem ég var að predika.
Við skulum hafa a aðferð hér.
Tóm Chorus, og við munum segja int i.
Og þá ætla ég að segja, printf -
ó, við skulum gera þetta meira áhugavert.
Við skulum reyndar ekki prenta eitthvað.
Við skulum bara gera þetta.
Chorus (i).
>> Allt í lagi.
Svo er þetta gallaðir því hvers vegna?
Ég er að gera þetta upp eins og ég fer vegna þess að forritið er í raun ekki að gera neitt
af áhuga.
En það er ekki markmiðið.
Markmiðið er að skrifa forrit sem helsta virka ekki hvað, virðist?
Kalla sig.
Og í raun, þurfum við ekki lykkju.
Við skulum einfalda jafnvel þetta bara þannig að ekki missa sjónar á raunverulega
grundvallaratriði galla.
Helstu símtöl kór að syngja nokkur viðlaginu.
Og ég gerði eitthvað heimskulegt, og ég hafði Viðlag kalla kór því ég ráð
einhver annar var að fara að framkvæma það kannski.
Og nú er þetta ekki að fara að taka saman ennþá.
Ég þarf að gera hvað?
Ég þarf frumgerð, man.
Þannig að ég þarf að hafa þig hér ógilt kór (int i);.
>> Svo nú, ef ég fer niður -
í raun, við skulum nota stærri glugga.
Við skulum fara á undan og gera kór.
Notkun óþekkt declarer i.
Ó, það var heimskulegt.
Við þurfum ekki á rök.
Við skulum bara gera þetta.
Við viljum hafði byrjað á þennan hátt.
Það hefði verið miklu auðveldara forrit til að skrifa.
Þannig að það.
Nú skulum fara yfir til Terminal gluggann minn, með tilvísun til-hlaupa Clang.
Og hér við fara.
Það var mjög hratt.
Hvað í raun gerðist, þó?
Jæja, núna er ég mun bæta prenta lína, svo við getum séð.
Svo láta mig segja printf, við skulum segja, ég er hér.
Jæja, ekki breytur, munum við láta það svona.
Leyfðu mér aftur að keyra að.
Leyfðu mér aftur hlaupa Chorus.
Og koma á.
Halda áfram.
Sem hliðar, hvers vegna hefur það hrundi ekki enn?
Skiptingu kenna gerðist frábær hratt áður.
[Inaudible]
DAVID J. Malan: Einmitt.
Svo tekur það tíma til að prenta.
Það tekur bara meiri vinnu á hluta tölva '.
Og þarna er hún.
Skiptingu kenna.
>> Svo taka bara hversu hratt forrit keyra.
Ef þú ert ekki að prenta neitt, frábær fljótur.
En við fengum samt þessa skiptingu galli því hvað var að gerast?
Jæja, ef þú hugsar um hvernig minni tölvunnar er sett fram, þetta
verður að vera aðal.
En hér -
skulum kalla bara þessa viðlaginu, og við skulum kalla þennan kór.
Og nú ef ég fagurfræði rétt minn, þetta er bara að fara að segja kór,
Viðlag Viðlag Viðlag Viðlag Viðlag Viðlag auglýsingar nauseum.
Og að lokum, hvað er að fara að gerast?
Ef stór mynd bókstaflega er þetta, það gerist bara hugtök?
Stafla overruns hrúga.
Eða verra, Farið þér bara allt, þar á meðal texta hluti, sem er
á núllum og þau sem tákna program.
Í stuttu máli, þetta er bara frábær, frábær slæmt.
Hægri?
Program hefur stefnt úr böndunum.
Þú ert að nota vegur meira minni en þú ætlaðir allt vegna heimskulegt
mistök í þessu tilfelli.
Eða í þessu tilfelli, mjög vísvitandi gert virka kalla sig.
Nú er þetta ekki allt slæmt.
Aðgerðir kalla sig hefur í raun mikið vald
þegar þú notar það rétt.
Ég hef ekki notað það á réttan hátt hér.
>> Svo er þetta ekki allt slæmt.
En sú staðreynd að ég hef aldrei í raun að hætta að kalla mig er grundvallaratriði
slappleiki hér á þessari áætlun.
Hvar erum við að fara með þetta allt?
Jæja, hvað er raunverulega að gerast?
Þegar ég kalla vöxtur virka, eins og við vorum að gera í þessum dæmum,
Ég hafa gildi eins og 1 sem ég framhjá inn
Ég fara í afrit af númer eitt.
Svo gerist eftirfarandi.
Svo skulum við fara í aukningu dæmi.
Og þessi strákur rétt hérna.
Svo hér er það sem er raunverulega að gerast.
Þegar ég kallaði vöxtur, og ég fara í x, pictorially hvað er
fara hér er þetta -
ef ég gildi 1. geymdar hér, og ég kalla reyndar vöxtur sem
er nú kölluð kór -
Já, það er að henda mér út hér.
Svo við skulum kalla þessa vöxtur.
Og við vitum ekki hvað þetta næsta aðgerð er að fara til vera.
Svo hvað er raunverulega að gerast er hér einhvers staðar á helstu, ég er með klumpur af
minni sem er að geyma númer 1.
Þegar ég kalla vöxtur, ég nota annað klumpur af minni, en nú er ég
hafa afrit af 1.
Þegar ég hækka þessi gildi, þetta verður 2 - hræðilega skrifað á
skjár hér.
En þá, hvað gerist eins fljótt og skilar vöxtur?
Þetta minni bara fær afhent aftur til the stýrikerfi, sem þýðir allt
þú hefur gert er ekkert gagnlegt.
Sá sem var upphaflega að finna í Main er enn í raun þar.
>> Hvar erum við að fara með þetta?
Jæja, kemur í ljós að í minni þú hefur þetta aftur á bak röð
bytes sem hægt er að setja efni inn
Og það kemur í ljós að við höfum nú þegar séð eitthvað sem felur í sér að setja
það aftur til baka til baka til baka.
Hvað er band, byggt á viku eitt og nú viku tvö?
Svo það er bara safn af stöfum.
Svo kemur í ljós, rétt eins og þú getur sett númer í minni, sama hátt er hægt
setja stafi í minni.
Og þegar við erum að byrja að setja stafi í minni aftur til baka til baka til
aftur kemur það út að nota einföldustu hlutum eins og að lykkja eða
á meðan lykkja, getum við iterate -
frá vinstri til hægri á stöfum í streng -
og byrja að nudda þá í mismunandi stafi að öllu leyti.
A gæti orðið B. B gæti orðið C. Svo að lokum, getum við tekið
English setning sem raunverulega vit og breyta hverju þeirra
bréf eitt í einu með því að ganga í gegnum minni tölvunnar okkar vinstri til
rétt til raunverulega dulkóða.
>> Svo skulum taka fimm mínútna hlé okkar hér, og þegar við komum til baka, munum við
byrja þetta ferli spæna upplýsingar.
>> Allt í lagi.
Svo áður en við kafa í sumar Crypto og þetta kallast fylki, láttu mig
hlé fyrir einhverjar spurningar því mér finnst eins og ég virkilega svona muddled sumar
þessi efni.
Svo skulum við festa nú ef við getum.
Þannig að við töluðum bara um gildi aftur.
Við ræddum um rök.
Og við ræddum um þessa hugmynd, sem við munum koma til baka á næstu vikum til
koma, að skoða minni og a heild búnt af þessum stafla
stæði, svo að segja.
Frá botni á allt, þannig að hver bakki sem fær setja á stafla táknar
fall sem er nú að vera kölluð.
Einhverjar spurningar?
Svo hvernig um - láttu mig reyna að spyrja spurningu.
Ég að halda áfram að spilla því, en nú it's - you've allir séð andlit drengsins.
Svo komum við aftur að því.
>> Svo láta mig spyrja hér.
Leyfðu mér að einfalda þetta aftur hvað það var áður en sumir af fyrri Q & A.
Og sú staðreynd að vöxtur er opinn sviga, int númer, lokaður
sviga.
Hvað þýðir INT fjöldi tákna?
[Inaudible]
DAVID J. Malan: An rök.
Jæja, en það er óákveðinn greinir í ensku rifrildi?
[Inaudible]
DAVID J. Malan: Því miður, hvað er það?
Hátalarar 3: Eitthvað sem þú fara inn
DAVID J. Malan: Allt í lagi.
Svo eitthvað sem fara inn
Og almennt, það er bara að inntak.
Ef þú ert að skrifa hlutverk og tilgang sem virka í lífinu er að gera
eitthvað svolítið öðruvísi í hvert skipti sem þú notar það, þá er eina leiðin fyrir
að til þess að gerast raunverulega virðist vera að gefa því inntak þannig að það
getur gert eitthvað annað við það inntak í hvert skipti.
>> Svo þú þarft að tilgreina tvennt þegar aðgerð tekur inntak.
Þú þarft að tilgreina nafnið sem þú vilt gefa það inntak, eingöngu fyrir
eigin þægindi þín þannig að þú getur átt við það í aðgerð sem þú
sjálfur ert að skrifa, eins og ég gerði hér í línu 32.
En þú þarft líka að tilgreina tegund þess vegna C er forritunarmál
sem bara krefst
að ef þú vilt breyta, þú þarft að segja tölvunni hvað
gögn slá það er,
í stórum hluta þannig að hún veit hversu margir bita til
úthluta fyrir þá breytu.
Vegna þess að það gæti verið sex -
Því miður mun það ekki vera sex.
Það getur verið 16 ára.
Það getur verið 8.
Það getur verið 32, jafnvel 64.
En tölvan þarf að vita.
Nú táknar int vinstra megin hvað, hins?
[Inaudible]
DAVID J. Malan: Hvað er það?
[Inaudible]
DAVID J. Malan: The tegund af virka og, nánar tiltekið, að
tegund framleiðslu þeirra.
Hægri.
Svo stendur en málið í sviga inntak þess, ef einhverjar eru, og
hlutur til vinstri táknar afköst hennar.
Og í þessu tilfelli, vöxtur skilar greinilega við int.
Og svo er int aftur gerð þessa aðgerð.
>> Hvað þýðir það að skila?
Bókstaflega, þú nota leitarorð aftur.
Og svo ef það sem þú ert að fara aftur til hægri leitarorð er
heiltala, þá er það örugglega í samræmi við það sem við höfum lofað.
Þú getur ekki gert eitthvað eins og þetta -
halló, heimur -
vegna þess að það er strengur.
Vitanlega er það ekki heiltala.
Svo í stuttu máli, byrði er í raun á okkur, forritari, til að vera nákvæm og
við það sem við erum að fara aftur og þá í raun fara um aftur það.
Og svo til að gera tad skýrari samhengi -
Þarna er hann aftur.
Samhengi -
stór koma á óvart að koma í bara smá stund.
Samhengi hér er nú að minni tölvunnar er, aftur,
gígabæti, tveggja gígabæta, hvað sem er.
Kannski er það meira.
Kannski er það minna.
En tölvan lítur það eins og að hafa mismunandi kafla.
Eitthvað fer niður.
Eitthvað annað fer upp þar.
Mismunandi efni fer í miðju.
Og í dag, byrjum við bara að segja þessa sögu.
>> En við munum koma aftur til þetta með tímanum.
Fyrir nú, eina stykki af minni við umönnun í raun um er textinn hluti
því að rétt táknar zeroes og sjálfur
að Clang hefur outputted.
Svo þegar þú keyra skipun á lyklaborðinu eins a.out, eða þú tvöfaldur
Smelltu á táknið á Mac OS eða Windows, er program hlaðinn úr harður
aka inn í vinnsluminni.
Og það er plopped efst RAM tölvunnar, svo að segja.
Nú á meðan, eins og forritið byrjar að keyra og helstu fær kölluð
forrit sem þú skrifar eða forrit Microsoft eða Apple skrifaði einhverju sinni
staðbundnar breytur endanum niður á the botn af minni tölvunnar.
En ef helstu kallar aðra aðgerð sem sjálft hefur breytur eða
rök, enda þeir upp yfir það.
Og ef þessi aðgerð kallar eitthvað, enda þeir upp yfir það,
ofan, fyrir ofan hann.
Og aðeins einu sinni fall er gert framkvæmd gerir stafla af stæði, svo
að tala, byrja að fá lægri og lægri.
Og þetta er það þá, í ​​hnotskurn, útskýrir hvers vegna, þegar þú hringir teningur -
eða hringt vöxtur -
þú ert að labba framhjá í afrit af gildi.
Og hvað það þýðir pictorially er að þú ert bókstaflega að skrifa á
númer 1 í öðru hluta af minni, að breyta því 1 til 2, að því er varðar
vöxtur -
eða til 8, um er að ræða teningur -
og svo henda því minni í burtu um leið og vöxtur eða teningur
skilar.
>> Spurning.
[Inaudible]
DAVID J. Malan: Hvar - Global breytur eru geymdar í hvað er
nú kallast frumstilla gögn eða forsniðinn gögn.
Munurinn er, ef þú hafa a alheims breytu, og þú gefur því
strax gildi við samasem merkið, endar það upp á toppinn þar.
Og ef þú segir bara int x semíkommu án gildi, endar það upp aðeins
lægri í RAM einfaldlega með því að venju.
Aðrar spurningar.
Allt í lagi.
>> Svo þessari mynd mun koma til baka eins og við fáum fleiri öflugur með hvað við getum gert
við tölvuna.
En nú, við skulum hafa stutt hið innra í dulmál, ákveðin tegund af
dulmál sem ekki leysa öll vandamál heimsins, en hefur leyst
sumir af þeim.
Í þessu tilfelli hér, höfum við eitthvað sem kallast leyndarmál lykill dulmál.
Og leyndarmál lykill dulmál, eins og nafnið bendir til, sækir öryggi sitt
frá leyndarmál.
Svo til dæmis, ef þú ert aftur í grunnskóla og þú ert brottför
lítið leyndarmál ást bréf til strák eða stelpu sem þú ert alger á - ef þú
langaði að fara að með áhorfendur, sennilega þú vildi ekki skrifa
svo huga í ensku eða hvað sem móðurmál þitt er, heldur þú
gæti dulkóða það.
Eða þú gætir bara sent þeim textaskilaboð þessa dagana.
En þú gætir í raun fara þá athugasemd um kennslustofunni.
Og til að gera þetta á öruggan hátt, þannig að vinir þínir og kennarinn
veit ekki hvað þú ert að skrifa, getur þú koma upp með a sæmilega einfaldur
reiknirit -
ungur þó að þú gætir verið -
bara Scramble orð.
Svo í stað þess að skrifa, þú gætir skrifað B. Í stað B, gætir þú skrifað
C. Í stað þess C, þú gætir skrifað D, og ​​svo framvegis.
Eða þú gætir komið upp með a fleiri háþróaður þýðingu bréfa
til mismunandi stafi.
En aflinn er strákur eða stelpa sem þú ert að senda þetta í huga þarf að
vita eitthvað.
Hver er það, augljóslega?
Eins, hvað leyndarmálið er.
Eins, hvað er að kortlagning á milli eins og BS og CS og DS?
Er það að bæta bara einn, svo að segja, að hvert bréf til að fara frá
A til B, B til C?
Er það flóknara en það?
Svo þú og mylja þína að hafa þetta leyndarmál upplýsingar.
En það er góður af a grípa-22 hér.
Ef þetta er í fyrsta skipti sem þú ert að senda þetta ást bréf í gegnum
flokki, hvernig er það strákur eða stelpa að fara að vita hvað leyndarmál jafnvel er?
Svo leyndarmál lykill dulritunarstjórneiningunni ekki leyst öll vandamál heimsins.
Og það er í raun samband sem við munum koma til baka til
önn enda.
>> Á sama hátt, hefur ekkert af okkur sennilega alltaf sent -
álíka, flestir af okkur veit ekki einhver sem virkar, til dæmis, að
Amazon.com.
Og enn, hafa margir af okkur sennilega keypt efni á Amazon.com.
Og við höfum verið kennt að gera ráð fyrir að þessi E-verslun
viðskipti eru örugg.
Hægri?
The URL segir sennilega https.
Það er kannski kjánalegt lítill padlock helgimynd einhversstaðar.
Það er einhvers konar dulmál tryggja kreditkortið þitt
milli þín og Amazon.com.
Og enn, ef Dulmálsvísindi felur vita sumir leyndarmál, og enn ég get ekki
veit einhver á Amazon, og ég hef svo sannarlega ekki komið hvers konar
leyndarmál og einhver á Amazon, hvernig er tölvan mín eða vafrinn minn að gera þetta?
Jæja kemur í ljós, þarna er annars konar dulmál samtals að leysa
þessi vandamál.
En í dag, munum við leggja áherslu á einföld, þar sem þú getur raða í
fara að vita sumir leyndarmál, eins og plús 1 eða einhvern kortlagning milli eins og BS.
>> Og ferlið dulmál felur yfirleitt þetta.
Þú hafa sumir texta, sýnt er hér á eftir.
Þú keyra það í gegnum einhvers konar reiknirit eða málsmeðferð
til að dulkóða það.
Kannski er það bara verður B, B verður C. Og svo þú endir upp með
dulmál texta.
Á sama tíma, þegar fær mylja þína leyndarmál huga, hann eða hún hefur til að þá
hallmæla það því yfirleitt snúið að reiknirit þannig að fá
baka á texta.
Nú eru líkamleg incarnations þetta.
Til dæmis, þetta er smá leyndarmál tengd hringur.
Og þetta er hringur í þeim skilningi að það er tveir hringir hér.
Á utan jaðri þetta, það er bréf A í gegnum Z,
þó þeir eru í handahófskenndri röð.
Og að innan, það er í raun nokkrar tölur, svo að með þessari
hringur, þú getur konar snúa utan en ekki inni í því skyni að stilla upp
tölur með bókstöfum.
Og í klemmu sem þú ert að fara að sjá - sumir sem þú kannt að hafa séð 24/7
um jólahátíðina frá bíómynd sem heitir A Christmas Story.
Þú munt sjá að litla Ralphie var svo fús til að reikna út hvað litla munaðarlaus
Leyndarmál skilaboð Annie var að hann hafði verið miðlað, held ég, í
Form tölugildi skilaboð á raðnúmer kassi.
Og þú þurftir að safna öllum litlu spil sem kom
í korn kassi.
Þú þurfti að senda þær inn
Þú þurfti að komast aftur á leyndarmál leyniletri hringinn, svo að þú geta að lokum að reikna
hvað kortlagning er milli bókstafa og tölustafa,
eða bréf og bréf.
Þannig að ég gef þér þennan stutta bút úr jól Story að hvetja pset 2 og
umfjöllun okkar, í smá stund, í fylki.
Svo hér höfum við Ralphie.
>> [Vídeó spilun]
-Vera það kunnugt öllum og ýmis að Ralph Parker er hér með skipað
meðlimur Little munaðarlaus Annie Secret Circle og á rétt á öllum
heiður og bætur koma við hana.
-Kveðja, Little Orphan Annie.
Countersigned, Pierre Andre!
Í bleki!
Heiður og hlunnindi, sem þegar á aldrinum níu.
Komdu, við skulum fá á við það.
Ég þarf ekki allt sem djass um smyglara og sjóræningjum.
-Heyrðu morgun fyrir lýkur ævintýri The Black
Sjóræningjaskipi.
Nú er kominn tími fyrir leyndarmál skilaboð Annie fyrir þér meðlimir
á Secret Circle.
Mundu, börnin, einungis meðlimir Secret Circle Annie geta lesa
Leyndarmál Annie er skilaboð.
Mundu Annie er eftir þig.
Setja pinna til B2.
Hér eru skilaboðin.
12, 11 -
-Ég er í fyrsta leyndarmál fundi mínum.
-14, 11, 18, 16 -
-Pierre var í röddu í kvöld.
Ég gæti sagt að skilaboð kvöld var mjög mikilvægur.
-3, 25.
Það er skilaboð frá Annie sjálf.
Mundu að segja ekki neinum.
-90 Sekúndum síðar, er ég í eina herbergi í húsinu þar sem drengurinn níu
gæti setið í næði og lesa.
Hæ, B. fór ég til the næstur.
E. Fyrsta orðið er að vera.
S. Það var að koma auðveldara núna.
U.
-Oh, koma á, Ralphie.
Ég fékk að fara.
-Ég skal vera rétt niður, MA.
-Gee whiz.
-T, O. Vertu viss um að.
Vertu viss um að hvað?
Hvað var Little Orphan Annie að reyna að segja?
Vertu viss um að hvað?
-Ralphie!
Randy hefur fengið að fara.
Ætlarðu að vinsamlegast koma út?
-Allt í lagi, mamma.
Ég kem strax út.
-Ég var að fá nær núna.
Spennan var skelfilegt.
Hvað var það?
Örlög jörðinni getur hanga á bláþræði.
-Ralphie!
Randy fékk að fara.
-Ég skal vera rétt út, fyrir að gráta upphátt.
-Gee, næstum þar.
Fingur minn flaug.
Hugur minn var stál gildru.
Sérhver svitahola titra.
Það var nánast ljóst.
Já, já, já, já.
-Vertu viss um að drekka Ovaltine þínu.
Ovaltine?
A crummy auglýsing?
Skepnan.
[END vídeó spilun]
>> DAVID J. Malan: Svo þar höfum við dulmál.
Svo hvernig í tölvu getum við farið um framkvæmd eða
fulltrúi hluti eins og þetta?
Jæja, þurfum við leið til að tjá okkur smá sveigjanlegan en
breytur okkar svona langt hafa leyft.
Við höfum haft ints.
Við höfum haft tákn.
Við höfum fengið fljóta og tvöfaldar og nokkrum öðrum.
En þeir eru einstök stykki af minni sem í raun ekki að leyfa okkur að
tjá hluti eins og orð og setningar og setningar.
Reyndar höfum við kallað slíkt band.
En við lofum að þetta er í raun bara einföldun á CS50
Bókasafnið sem við erum að stefna á að afhýða aftur.
>> Og svo skulum byrja að gera það hér.
Leyfðu mér að fara á undan og opna skrá -
allar þessar skrár eru í boði eins og venjulega á netinu -
kallað array.c að leysa vandamál óskyld strengi en það málar
mynd hér af hvernig við gætum notað eitthvað sem kallast fylki.
An array er gögn tegund.
Það er tegund af breytu, nokkurs konar, sem hefur marga smærri gagnatög
inni um það aftur til baka til baka til baka.
Svo til dæmis, ef við viljum að skrifa lítið forrit sem gefur þér þína
quiz meðaltali á námskeið eins og 50 sem hefur tvö Skyndipróf, þú getur mjög auðveldlega
skrifa þetta forrit - byggir jafnvel á sum efni í síðustu viku -
með því að nota GetInt og a par af breytum.
Int quiz1, int quiz2, og það er frekar einfalt.
Það er kannski 10, 20 línur af kóða, max, til að hrinda í framkvæmd áætlun sem spyr
notandi fyrir tvo quiz skora og þá reiknar meðaltal þeirra með því að bæta þeim
saman, deila með tveimur, og þá prenta árangurinn.
Við gætum líklega gert það nokkuð auðvelt núna eftir
sumir tala um mínútur.
>> En vandamálið er að gera ráð fyrir að 50 voru þrjú skyndipróf eða fjögur.
Segjum að þú vildir að nota sama forrit fyrir flokk sem hafði
vikulega Skyndipróf.
Hugsaðu um flokk sem hefur vikulega Skyndipróf.
Ef það er eins og 16 eða svo vikur á önn, nú þú ert 16 breytur -
int quiz1, int quiz2, int quiz3, int quiz4.
Um leið og þú byrjar að sjá þetta offramboð, það afritar og límir
kóða, ætti að byrja á að gera sem þú vilt að það væri betri leið.
Og sem betur fer, vegna þess að fylki er.
Svo skulum gera þetta.
Í fyrsta lagi láta mig kynna mjög einfaldur hlutur sem við höfum ekki notað hingað til,
en þú munt sjá hann stundum í kóða.
Þetta er það sem er almennt kallað stöðug.
Svo er það stöðug í þeim skilningi að þetta gildi ekki breytingar.
Mannlegi venju egar stöðugt er að nota allt fjármagn
bréf, bara svo að það stendur í raun út í kóðann þinn.
Og sérstakt leitarorð sem þú notar í C ​​# skilgreina.
Svo ef þú segir # skilgreina, þá pláss, þá er orðið sem þú vilt nota fyrir
Samhengi á nafn, og þá verðmæti þeirra stöðug.
Svo fyrirvara, þetta er annað að fela eitthvað til breytu.
Það er ekki samasem merkið.
Það er engin semíkommu.
Þetta er það sem er almennt þekktur sem Preprocessor tilskipun, en meira um
að annar tími.
>> Fyrir nú, það skapar unchanging gildi kallað skyndipróf raun Hvers
tölustafir er 2.
Svo hvar sem þú sérð Skyndipróf, Skyndipróf, Skyndipróf um þessa skrá, sem er
bara númer 2.
Nú, ef ég líta á helstu skulum sjá hvernig þetta virkar.
Í fyrsta lagi lítur það svolítið dulinn.
En það er allt efni frá viku eitt.
Biddu notandann fyrir bekk.
Hvernig gerum við þetta?
Jæja, í línu 22 -
þetta er virkilega safaríkur hluti -
Ég lýsa fljóta, en ekki bara einn fljóta.
Ég er að lýsa, heldur fjölda Fleytitölugildi.
Þessi breyta er að fara að vera kölluð einkunna, sem gefið í skyn hér.
En eina stykki af nýjum setningafræði eru þá þessir hornklofum, sú staðreynd
sem ég hef sagt float bekk og þá opinn krappi og svo númer.
Takið eftir, ef þetta er fast, þetta er bara eins og við gerðum þetta.
Þetta þýðir hey tölva, gefa mér tvo fljóta, og við skulum sameiginlega kalla
þeim bekk.
Þetta er í mótsögn við miklu meira leiðinlegur aðferð eins og þessa.
Fljóta grade1, fljóta grade2, og svo framvegis.
Svo gerir fylki okkur að framkvæma þessa hugmynd, en mun minna messily í
þannig að við getum skrifað eina línu af kóða í staðinn, segjum, 16 fyrir 16
viku önn.
Þannig að ég vildi ekki harður-númer 2 vegna þess að ef þú hugsar um þetta núna
rökrétt - ráð næsta ári CS50 breytingar 3 Skyndipróf staðinn.
Og ég átti númer 2 hér.
Ég átti númer 2 hér.
Það verður mjög leiðinlegur og mjög auðvelt að skrúfa upp og tilviljun breyta
eitt gildi til 3 og missa einhver önnur verðmæti 2.
Þannig að ég ætla að í stað ágrip þetta í burtu og nota þetta stöðugt að þar sem hún
nafnið gefur til kynna, aldrei breytist.
Og nú, sama hvort við höfum mismunandi Skyndipróf á þessu ári eða næsta, ég
bara að breyta því á einum stað, upp hér á ofan.
>> Svo er það allt fasti er.
Á meðan, the nýr huglæg lögun er þessi af fylki.
Svo hornklofum gefa mér marga fljóta og lætur mig sameiginlega
kalla þá einkunna hér.
Svo nú skulum við sjá hvað ég ætla að gera.
Hér í línu 24 er upphaf a for lykkju.
Þetta er í raun ekkert fínt.
Það er bara að nota Skyndipróf stað harður-dulmáli númer.
En það er ekkert vitsmunalega það frábrugðin síðustu viku.
Þetta er bara printf.
Svo printf ("quiz númer% d af% d") því ég vil bara að prenta út gefa mér quiz
númer eitt tvö og þá tveir af tveimur.
Svo er þetta eingöngu fagurfræði hlutur.
En áhugaverður hluti er nú í línu 27.
Til þess að fylla í einn af tveimur staðgengla með fljótandi-lið
gildi, þú nota aftur hornklofum.
Í þessu tilfelli er ég að nota i því þetta fyrir lykkju hefur byrjað með i jafna
Hvaða gildi, virðist?
0.
>> Svo á fyrsta endurtekning þessa lykkju, það er eins og ég
skrifaði þetta í kóða.
En á seinni endurtekning þessa lykkju, það er eins og ég
skrifaði þetta í númerið mitt.
En sú staðreynd að ég er að nota breytu er fullkominn vegna þess, eins og nafnið
gefur til kynna, það er mismunandi gildi á hverri ítrun.
Þannig að ég ætla að fylla þennan fjölda einn blettur í einu.
Hvað er þetta array líta út?
Jæja, ástæðan sem ég teiknaði þetta frábær einfaldur rétthyrningur á skjánum hér
áður var af þessum sökum.
An array er bara klumpur af minni eftir öðru klumpur af minni,
eftir öðru klumpur af minni, og svo framvegis.
Svo ef array minn er stærð 2, í þessu tilfelli hér, allt sem ég væri að gera með því að
slá á stig quiz mínum, eins og hér.
Ég fékk 100 á þessu.
Og svo fékk ég 99 á þessu.
Þá er þetta minni kannski ekki einu sinni að nota vegna þess að ég hef bara spurði
tölva til fjölda stærð 2.
Þeir ferningar eru enn þarna.
Hægri?
Þú hefur enn tvo gígabæta vinnsluminni, jafnvel ef þú ert bara
að biðja um tvo fljóta.
Svo er hugmyndin á bak við fylki sem tölvan bara tekur klumpur af minni
og þá apportions smærri stykki aftur til baka til baka til baka.
Og svo er það allt fylki er.
Það er samliggjandi klumpur af minni, inni sem þú getur sett hluti.
>> Nú gerist það að þá gera bara sumir leiðinlegur tölur.
Ef ég skruna niður hér, þetta er þar sem ég iterate þá yfir fylki.
Ég kem upp með samantekt á öllum gildum í array.
Og svo ég nota umferð virka hér til að raunverulega gera
summa deilt með Skyndipróf.
En láta mig veifa hönd mína á það sem tegund af nógu tölur fyrir nú.
En allt sem er að gera fyrir mig að lokum er computing að meðaltali.
Svo fyrsta quiz plús annað quiz, deilt með 2 og þá prentun
það út sem heiltala.
>> En við skulum umskipti nú annað dæmi sem heitir string1,
sem málar svipaða mynd en með strengi.
Leyfðu mér að fara á undan og einfalda þetta fyrir réttlátur a augnablik.
Og fyrirgef inndrátt fyrir nú.
Tilkynning í línu 19 í þessu dæmi, fæ ég band frá notandanum.
En eftir það sem ég er næst að gera í línum 22 og áfram.
Ég er reyndar iterating frá I upp í - og þetta er nýtt bragð -
strlen, band lengd.
Þetta er fall sem kemur með C að ef þú standist það band, það segir
þú hversu margir stafir eru í því band.
Það er allt.
Sú staðreynd að það er strlen stað lengd strengur er bara vegna þess að það er
meira gagnorðar.
30 árum síðan, líkar að skrifa hlutina eins succinctly og mögulegt er.
Þannig að við höfum haldið að venju hér.
i + + þýðir bara hækka ég í hverri ítrun.
Og nú eftir þetta, sem er mjög áhugavert.
Svo í línu 24, ég segi tölva, gefa mér staf, átta
bits, og kalla það c.
En hvað er þetta á hægri hönd að segja?
Á ensku, hvað þýðir að tákna?
[Inaudible]
DAVID J. Malan: Einmitt.
Gefðu mér fyrsta stafinn í fylkinu.
Eða fleiri almennt, gefa mér i-ta staf í fylki.
Og átta sig á að það er mikilvægt núna að sem tölvunarfræðingar, við erum í raun og veru
talið frá 0.
Þú hefur ekki svigrúm núna til að byrja að gera þetta.
Nú verður þú að haga sér í samræmi við væntingar í tölvunni og
telja frá núlli því [0] er að fara til vera the fyrstur
staf í streng.
[1] er að fara að vera annað.
[2] er að fara að vera í þriðja, og svo framvegis.
Svo þessari áætlun, ef ég þýða það - þetta er, aftur, string1.
>> Svo gera string1.
Og nú er ég að keyra string1 í Telnet mínu.
Það er að bíða fyrir hjálpina, svo ég ætla að slá á, segja, Davíð.
Enter.
Og nú prentar það Davíð allt á mismunandi línum þar
taka eftir hvað ég er að gera.
Ég er að prenta einn staf í einu.
Nú munum við ekki fara inn í smáatriði í dag um þetta.
En ég eyddi smá stund síðan þessari skoðun hérna.
Það kemur í ljós að ef notandinn er að hegða sér illa, andstæðinga, eða bara
rugla, getur þú í raun ekki að gefa a band af einhverju lengd.
Ef þú högg the rangur lykill á lyklaborðinu, getur þú gefa
ekkert band á öllum.
Eða ef þú ert illgjarn, gætirðu reynt að líma á virði Gigabyte um að
ritgerð til að fylla þetta band.
Og ef tölvan keyrir út af minni, snýr það út að við erum að fara
að fá aftur þetta sérstaka gildi kallast null.
Svo í bili, bara vita að það er þetta sérstaka gildi kallast null að
mun gera okkur kleift að athuga þegar við erum út af minni, meðal annars.
>> En ef ég opna nú string2, taka einn munur hér.
Takið einn munur hér með string2.
Með string2, þetta for lykkju er svolítið öðruvísi.
Leyfðu mér að eyða nulls svo að við getum talað um þá seinna.
En hvað er öðruvísi um for lykkju í þetta sinn?
Og ég get farið aftur á fyrra dæmi.
Svo er þessi útgáfa tveggja.
Þetta er útgáfa einn.
Einn, tveir, einn tveir.
Svo er strlen hringja hvar?
Það er í fyrsta hluta til hliðar.
Allar hugsanir sem að hvers vegna ég er að gera þetta?
Já.
[Inaudible]
DAVID J. Malan: Svo við kalla ekki virka í hvert einasta skipti.
Einmitt.
Muna úr fyrir lykkjur sem þeir eru frábær einfalt þegar þú konar
skilja að þetta er frumstilling, sem
ástand, og uppfærslu.
Vandamálið er að ástand gerist á hverjum
endurtekning á lykkju.
Og svo í þessu dæmi hér, það sem er slæmt um þá staðreynd
að þetta er ástand mitt?
Þú ert að kalla strlen aftur og aftur og aftur.
En þegar ég hef slegið í Davíð lengd strengsins er fimm.
Og það er ekki að fara að breyta á hverjum endurtekning lykkju vegna þess að
band er enn D-A-V-I-D. Þannig að þetta er vísbending á hvað er að fara að gerast
sífellt mikilvægari hugmynd þekkt sem hönnun ákvörðun þar - bara ekki
gera tölvuna að gera óþarfa vinnu.
>> Nú bara sem laumast forsýning af pset 2, pset 2 í ​​venjulegu útgáfunni er
að fara að skora á þig að í raun innleiða fjölda dulmál, sumir
tala af reiknirit dulkóðun, svo að þú getur bæði dulkóða og hallmæla
leyndarmál skilaboð, eins og annars Ralphie afkóða þar.
Í spjallþráð útgáfu pset 2, við erum að fara aðeins lengra.
Við erum að fara að skila þér skrá úr raunverulegum tölvukerfi sem inniheldur
allt fullt af notendanöfnum og raunveruleg dulkóðuð lykilorð og áskorun
fyrir tölvusnápur útgáfa er að fara að vera að sprunga þá lykilorð og reikna
hvað dulmál eða hvað leyndarmál var notuð í raun
búa þau lykilorð.
Og við erum að fara að gera þetta með því að nota nýja lögun hér C sem ég gef
þú bara demo af, þekktur sem stjórn-lína rök.
>> Svo kemur í ljós, eins og sumir af þú mega hafa séð í hluta eða í kennslubókum,
Helstu ekki alltaf að vera niður í sviga.
Það kemur í ljós að helstu má einnig skrifað svona, með tveimur þáttum,
argc og argv, þar argc er fjöldi orða sem þú skrifar eftir
forritsins Nafn á línu stjórn þinni.
Og argv er í raun orð.
Og eins og hornklofum þar benda, argv er greinilega fylki.
Það er að fara til vera a band eftir band eftir streng í minni.
Svo það sem við erum að fara að vera fær um að gera, að byrja með pset 2 er
eitthvað eins og this.
Ef ég geri argv1, sem er dæmi sem við munum koma til baka á mánudag og hlaupa
það, eftir að það virðist ekki gera neitt enn.
Það prentar bara út nafnið sitt.
En ef ég segi bless flokki, eftir að þetta forrit virðist iterates
yfir hvert orð sem var slegið á the hvetja.
Og með hvaða hætti við munum fá aðgang að orð sem notandinn hefur
slegið á að hvetja með því að breyta aðal, byrjar um helgina, frá INT
Helstu (tóm) að int main (argc, argv).
Og þannig mun fæðast stjórn lína rifrildi.
Og þegar þú fá raunverulega háþróuð í þessu, verður þú að vera fær um að skrifa
virkilega trippað forrit, svo sem eins og þetta hér, sem fer umfram
Hluti af aðgerðum sem við höfum gert svona langt en allt mjög öflugur.
>> Þannig að við munum láta þetta með þetta á skjánum.
Og við munum sjá þig á mánudaginn.