[Powered by Google Translate] [Vika 2, Áframhaldandi]
[David J. Malan, Harvard University]
[Þetta er CS50. - CS50.TV]
Allt í lagi. Þetta er CS50, og það er í lok 2. viku.
Ef þú býst við að vera svöng í kringum þennan tíma á morgun,
vita að við erum að fara að boða sem lítill hópur á morgun, fimmtudaginn, 13: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 þú fyllir þetta út.
Önnur slóð, þó að það gæti verið áhugavert er þetta.
Í réttlátur óður í 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 hægt að fylgjast með,
taka þátt í námskeiðinu alveg virkur, í raun.
Þeir ætla að nota CS50 Tæki og CS50 Ræddu
og flestir af hinum ýmsu hugbúnað 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
í öðrum töluð 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 fyrirlestra á námskeiði um
og stuttbuxur og málstofur og hlutar og þess háttar,
Ef þú talar reiprennandi eða skrifa reiprennandi nokkur önnur tungumál,
langar mikið til að taka þátt þig í þessu verkefni þar sem þú tekur á einn eða fleiri af the vídeó,
þýða þau 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 fyrir,
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ð sem þú munt vera fær um að þýða í einhverjum öðrum tungumálum
nákvæmlega þ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 spóla á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ð
um hugsanlega þúsundir af fólkinu þarna úti, þá skaltu ekki hika við að taka þátt.
Eitt orð um kettlingur frá mánudag.
Svo að við höfum sent óhóflega skelfilegur skilaboð, gera grein fyrir því, eins og skrifstofa klst benda
og eins kafla benda, hönnun þess er mjög mikið
hafa nemendur í samstarfi og að tala til að vinna í gegnum setur vandamál
og vandamál saman og í raun línan bara kemur niður á,
aftur, að vinna þú sendir að lokum ætti að vera þitt eigið.
Og svo alveg heiðarlega, á skrifstofutíma það er alveg eðlilegt,
Það er alveg að búast jafnvel, að spjalla við einhvern vin við hliðina á þér.
>> Ef hann eða hún er í erfiðleikum með nokkrum efni og þú ert eins og,
"Oh, jæja, láta mig gefa þú a svipinn af einhverju línu af kóða sem ég skrifaði," það er allt í lagi,
sem gerist, og það er mjög mikið stuðla, held ég, með aðferð við að læra.
Ef línan verður farið yfir er þegar höfuð er tegund af halla hérna í allt of margar sekúndur
eða mínútur til að virkilega að hafa bara verið Unblocking tækifæri fyrir vini þínum,
og örugglega þegar hlutirnir fá skipst með tölvupósti og Dropbox og þess háttar,
það líka er lína.
Svo fyrir alla muni líða vel og finnst hvattir til að spjalla við vini
og bekkjarfélagar um psets og fleira og bara gera sér grein fyrir að það sem þú sendir að lokum
ætti í raun að vera að vara við sköpun og ekki einhver annar.
Og svo einn af tilteknum lénum vandamál fyrir pset2,
sem mun koma út seint annað kvöld, er að kafa í heim dulmál,
sem er list að dulkóða eða spæna upplýsingar,
og þetta tengist að lokum til the veröld af öryggi.
Nú, öryggi fyrir flest okkar koma í 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 skjár,
sem er of ekki endilega besta hönnun en alveg algengt fyrirbæri.
Og ef þú ert ekki að nota dulmál til að dulkóða lykilorð,
þau eru 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 diskinum sem er öll lykilorð
en það er í möppu sem enginn er að fara að líta á, að of er ekki mjög öruggt kerfi.
Og svo hvað pset2 munu kynna er þetta list dulmál
og spæna upplýsingar svo að hlutirnir eins og lykilorð eru allir öruggari.
Samhengi hér er 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 leynileg skilaboð hér.
En í hinum raunverulega heimi tölvur, gera það ekki einu sinni líta út eins og þeir gætu verið á 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ú það hefur verið flutt til annarra staða.
En ef þú horfir á réttum stað á kerfinu, verður þú ekki aðeins notandanafn
eða að öðru fólki á kerfinu, en þú munt sjá 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
er hægt að decrypted aðeins almennt vita nokkur leyndarmál -
leyndarmál orð, leyndarmál númer -
og svo örugglega, að list dulmál endanum snýst allt um að treysta á einhvers konar
og vita eitthvað sem einhver annar gerir það ekki.
Þannig að við munum kanna þetta í aðeins meiri smáatriðum í dag og í pset að koma.
Og nú orð á staðið / ekki staðið.
Sérstaklega eins og sumir af þú hefur kafa í pset1, tækið,
og mjög nýr heimur fyrir þig, grein fyrir því að óánægju og rugl
og bara tæknilegir erfiðleikar eru alveg að vænta,
sérstaklega með fyrsta pset, þar sem það er bara svo mikið nýtt,
bara að fá kunnuglegur með LS og CD og allar þessar Bogagöng skipanir
og nýtt 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 styðja uppbyggingu.
>> Deildir byrja þetta kemur sunnudagur.
En mest um vert, ef þú ert að tilfinning bara að það er ekki heimur fyrir þig,
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 bekknum framhjá / mistakast,
heiðarlega, aldrei hefði ég jafnvel fæti í skólastofunni.
Og þú getur breytt þessu fram, segjum fimmta Mánudagur námskeiðsins,
þannig að ef þú ert á brún nú átta sig á því frekar en höfuð í nokkur önnur hafsvæði með öllu,
gera vissulega íhuga bara að breyta til að fara framhjá / mistakast.
Aftur, það er í raun ekki þessi menning hér á Harvard um að taka hlutina framhjá / mistakast
þar sem allir vilja í raun að ná eða overachieve,
en satt, þetta er a dásamlegur leið til að reyna eitthvað út
sem gæti ekki þekkja þig, og þú munt á endanum að gera, í flestum tilvikum, alveg fínn,
kannski mikið til 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ð pset0,
Ef þú setur í 10 klst, 15 klst, 25 klst í sumar pset
og þú ert bara að lemja höfðinu við vegg og það er að fá frábær seint á kvöldin
en þú hefur tekið pset 90% af leiðinni og þú 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ð mun uppfylla væntingar um staðið / ekki staðið.
Svo halda það í huga. Allt í lagi.
>> Svo þeir sem hafa barist við að nota Harvard University Wi-Fi,
veit að það er CS50 SSID, Wi-Fi tengingu, fljótandi í kring
sem þú gætir hafa betri heppni fyrir.
Það er lítið kaldhæðnislegt að lykilorð fyrir þetta, ef þú vildi eins og til að reyna að tengjast þessu
fyrir betri hraða - og láttu okkur vita ef það er ekki til betri - er 12345, alla leið upp í 8
því 8 er öruggari en 5.
Svo ef þú þarft að Wi-Fi lykilorð tengjast CS50 þráðlaust hér, 12345678,
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 drengir eða stúlkur af öllu Apple.
Það sem ég gróf upp úr fyrir nokkrum árum var þessi skrá hér iUnlock.c,
bara svona 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á, iUnlock.c. Það er í boði á fyrirlestra síðunni í dag.
Á vinstri hönd hlið þú sérð langan lista 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 í gegnum,
hvað þetta raunverulega er er mjög fyrstur, é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 það sem Apple vildi ekki fólk að gera,
einhver tók tíma til að reikna út nákvæmlega hvernig þeir gætu nýta hugbúnað galla,
mistök, galla, í Apple hugbúnaði, og þannig fæddist iUnlock.c--
að ef þú saman það upp á tölvunni þinni og setja í embætti það á iPhone
sem var tengt við tölvuna í gegnum, segja, USB snúru,
þetta myndi gefa þér stjórnsýslu eða rót forréttindi á iPhone
og láta þig gera nokkurn veginn hvað sem þú vilt.
Og það hefur verið þessi heillandi köttur og mús leikur
milli Apple og the hvíla af the veröld sérstaklega eins og þeir, eins og mörg fyrirtæki,
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 skilning á lágmark-láréttur flötur upplýsingar -
og í þessu tilfelli C forritun - og mikið af kunnuglega býr
að við höfum byrjað að spila með, þú ert fær um að raunverulega nýta vélbúnað
á þ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 nokkuð augljóst,
og það lítur út eins og þetta sé aðgerð sem þessi aðili skrifaði.
Það tekur einhvers konar heiltala sem rök, ekki aftur neitt,
en virðist lykkja með for lykkju hér og ef skilyrði, ef brot ástand,
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ýr.
Og það er allt fullt af aðgerðum á hér höfum við aldrei séð og gæti aldrei sjá
á meðan á önn.
>> Í lok dagsins, segir það sömu reglur og rökfræði sem við höfum verið að 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 í.
Við skulum taka a líta á a lítill fleiri einfalt dæmi:
þetta, 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.
Þetta er skrá sem heitir positive1.c og á athugasemdum efst,
þetta krefst bara að notandi að veita jákvæð tala.
Svo er það dæmi um do-while lykkju, sem er gott fyrir notandann gagnvirka forrit
þar sem þú þarft að segja notendur til að gera eitthvað,
og ef þeir vinna ekki að æpa á hana eða hafna inntak þeirra.
Tilfelli í benda: Ég er að fara að gera línur 19 með 24
svo lengi sem notandinn hefur ekki gefið mér jákvæða tölu.
Þetta smáatriði hér á línu 18, af hverju gerði ég lýsa n yfir allri þessari lykkja reisa
eins og til hægri við hliðina á línu 22 þar sem ég í raun sama til að fá n? Já.
[Nemandi] Gildissvið. >> Já, þannig að þetta mál um gildissvið.
Og í skilmálum leikmaður er, hvað þýðir svigrúm vísa til?
Já. >> [Inaudible nemandi svar] >> Getur þú talað svolítið hávær?
[Nemandi] Þar sem þú getur fengið aðgang að breytu. >> Perfect.
Hvar er hægt að fá aðgang að tiltekna breytu.
Og almennt er þumalputtaregla svona langt hefur verið að umfang sumra breytu
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 virka.
É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? >> [Nemandi] 25.
[Malan] 25, og það kemur í ljós 24 og vegna þess að í þessu tilviki það fellur utan hrokkið axlabönd.
Svo bara smá óþægindi en mjög auðvelt að leysa með því einfaldlega að lýsa því yfir að breyta
utan aðgerðina sjálfa.
Við munum 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 í fall, ekki inni í lykkju
en í skránni sjálfri, utan allar aðgerðir sem þú hefur skrifað, eins og ég gerði hér á línu 15.
Þetta er yfirleitt hleypa brúnum yfir, en gera sér grein fyrir að þetta er lausn stundum til annarra vandamála,
eins og við munum að lokum sjá.
Þannig að nú munum við skilja það svona, en við skulum sjá hvort við getum umrita þetta
bara að byrja að tjá okkur smá öðruvísi.
Þetta forrit, bara til að vera skýr, er positive1.
Leyfðu mér að fara á undan hér og Telnet minn gera positive1, Enter.
Safnar 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. Það virðist virka.
Kannski ekki mest krefjandi próf, en á minnstur það er gott geðheilbrigði stöðva
að við erum á réttri leið.
>> Svo nú langar mig að fara á undan og opna útgáfu 2 af þessu,
og hvað er öðruvísi nú þegar?
Það útfærir það sama, en það er stökk út eins og greinilega mismunandi að þessu sinni?
Þetta bool í grænu. Það er lögð áhersla á grænt, þetta leitarorð þekktur sem bool, sem er gagna tegund.
Það kemur ekki innbyggður í öllum útgáfum af C.
Þú þarft að fela tiltekna bókasafn.
Í okkar tilviki, ma ég CS50 bókasafn svo að við höfum aðgang að bool.
En í línu 18, virðast við að hafa Boolean gildi hér kallast þakklát.
Ég gæti hafa kallað þetta neitt, en ég kallaði það þakklát
bara svona segja 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 bara svona endurskrifa rökfræði mína.
Svo ekki virka öðruvísi, en í línu 22 núna er ég að athuga 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, virðist ég ætla að athuga með ástand.
Gera þessa lykkju en þakklátur er falskur.
Svo ég lagði þetta í stað útgáfu 1
vegna þess 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 að ég virðist ekki gætt að muna það sem notandinn slegið inn
vegna fyrirvara það er engin breyta n, svo í raun, lítið hvítt lygi þarna.
>> Virkni, the program er a hluti ólíkur þegar við að fá til the botn af því
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 jafngildir merki svona langt
svo að við minnumst gildi, tæknilega, það er ekki nauðsynlegt.
Ef af einhverri ástæðu þú bara ekki sama að vista gildi,
þú vilt bara til að athuga gildi, eftir því að við getum einfaldlega að skrifa þetta sem GetInt,
opna 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 að það gerist,
þegar ég tegund í 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, segjum við einfaldlega: "Takk fyrir jákvæða heiltölu!"
hvað það gerðist að vera.
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 afbrigði í positive3.
>> Tilkynning eini munurinn nú er það lína af kóða? >> [Nemandi] 25. >> [Malan] Já, 25.
Og við höfum ekki séð þetta bragð bara enn, en við fengum að sjá upphrópunarmerki á mánudag,
sem táknar hvað? >> [Nemandi] ekki. >> Ekki eða neitun.
Svo taka Boolean gildi og flettir gildi.
True verður rangar, rangar verður satt.
Svo þetta, myndi ég leggja til, er jafnvel svolítið meira innsæi leið að skrifa kóðann
því ég frumstilla enn þakklát falskur, ég enn eftir,
Ég sett þakklát við þegar þar að kemur,
en nú getur þú í raun bara þýða þennan kóða munnlega vinstri til hægri,
meðan (þakklátur!), vegna þess að 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ð ræddum um Booleans aftur þegar við spiluðum við grunni,
en átta sig nú getum við bara byrjað að skrifa kóðann á margan mismunandi hátt.
Svo sérstaklega í pset1 ef þú ert svona í erfiðleikum með að reikna út hvernig á að skrifa eitthvað forrit,
Líkurnar eru að þú ert í heppni vegna þess að það getur verið hvaða tala af lausnir
sem þú getur gerst á.
Til dæmis, þetta er bara 3 fyrir jafnvel einföldustu áætlunum. Allt í lagi.
Og nú muna á mánudaginn fórum við á þessari skýringu við gildi aftur.
Svo í fyrsta skipti sem við skrifaði forrit sem er ekki bara aðal;
það hefur einnig eigin hlutverki sínu sem ég skrifaði hér.
Svo í línu 31 í 34 Ég hef innleitt teningur virka.
Það er ekki flókið. Það er bara * a * a í þessu tilfelli.
En hvað er mikilvægt um það er að ég ætla að taka inntak í formi
og ég er aftur framleiðsla í formi a * a * a.
Svo nú er ég að hafa getu, mikið eins og ég nota til að með prinf einan
að kalla þessa aðgerð með því að kalla teningur virka.
>> Og teningur virka tekur smá inntak og teningur skilar sumir framleiðsla.
Með því móti printf gerði bara eitthvað.
Það skilaði ekki neitt sem við þótti vænt um, jafnvel þó eins og innskot 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 fyrir þá sem þekkja þetta, er það nokkuð augljóst hugmynd.
En fyrir þá sem minna þekkja þessa hugmynd liggur á aðföngum og komast aftur framleiðsla,
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 á þig eins og heilbrigður. Já? Allt í lagi.
Hvað er nafn þitt? >> [Nemandi] Ken. >> Ken. Allt í lagi. Ken, koma upp.
Ken er að fara að vera fall af tegund hér.
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ð - Jæja, ég get ekki sagt það.
Ég er ekki í raun að hafa góða rithönd,
og svo því að ég vil að þú að prenta eitthvað á skjánum fyrir mig.
Ég er að vera the aðalæð program, og ég ætla að þú segir þetta
með því að skrifa það í grunni kjúklingur minn og þá liggur þér inntak.
Svo kjánalegt þó að þessi æfing er hugmyndin um störf og kallar á aðgerð
og aftur fall raun snýst allt um það.
Ég er aðal, ég hef bara skrifað printf, vitna-unquote 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.
Hann er svartur kassi skrifað nokkur mörg ár síðan
sem virðist vita aðeins hvernig á að prenta það á skjánum.
Svo framkvæma.
Það er ekki slæmt. Mjög gott.
Svo nú Ken er gert framkvæmd. Er hann að skila mér neitt til baka?
Ekki það að við höfum séð hingað til.
Aftur, printf er reyndar aftur a tala, 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 svo nú 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, framkvæmd hvað aðrar línur eru.
Svo nú skulum við reyna aðeins öðruvísi dæmi.
Að þessu sinni skulum hér er fyrst að hreinsa skjáinn og í þetta sinn við munum gera cubing virka,
en í þetta skiptið, búast ég framleiðsla gildi.
>> Svo við skulum fara á undan og gera það.
Nú hef ég línu af kóða sem segir x fær teningur af x.
The lína af kóða, muna, lítur svona út: x = teningur (x);
Svo hvernig er það að fara að vinna? Við skulum fara á undan og gefa þér hvíta skjáinn.
Ég er að fara að skrifa niður núna gildi x,
sem á þessari stundu í tíma verður að vera, segjum, 2 að halda það einfalt.
Ég hef skrifað niður á blað og verðmæti 2, sem er gildi x mín.
Ég hendi því í Ken. >> Og ég skrifa bara svarið? >> Já, við skulum bara skrifa svarið.
Allt í lagi. Og nú hefur hann að skila mér eitthvað. Perfect. Nice segue.
Svo nú er hann réttir mér aftur gildi 8 í þessu tilfelli, og hvað á ég að gera við það?
Reyndar - við skulum sjá, að fá þennan rétt. Hvað er ég að fara að gera við það?
Nú ætla ég að taka þetta gildi og reyndar geyma það í sömu bita í minni.
En eftir að ég er svona að berjast hér.
Ég er svolítið ruglaður því þegar ég skrifa reyndar gildi x,
því það 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 gerðist.
Svo kemur í ljós að þegar þú hringja í aðgerð og þú fara í rifrildi
eins og halló, heimur eða þú fara í rifrildi eins og 2,
almennt, þú ert liggur í 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ður að þýða að ég er enn með afrit af verðmæti 2 einhversstaðar
því reyndar, nú að ég hef fengið til baka verðmæti 8, þarf ég að fara aftur í vinnsluminni
og í raun og veru að skrifa niður 8 þar sem ég hafði einu sinni númer 2.
Svo sjónrænt, muna þessa hugmynd um brottför í, bókstaflega, afrit af gildi.
>> Ken er hlutur hans, hendur mér til baka eitthvað - í þessu tilfelli gildi eins 8 -
og þá verð ég að gera eitthvað með þessi gildi ef ég vil halda því í kring.
Svo allt þetta mun koma aftur til að vera allt of kunnuglegt fyrir löngu.
Þakka þér svo mikið fyrir þessa kynningu hér, Ken. [Lófaklapp]
Mjög vel gert.
Við skulum sjá hvernig sem á endanum tengist sumir af the virka starf sem við höfum verið að gera hér.
Leyfðu mér að fara á undan og færa okkur aftur til cubing dæmi hér.
Takið eftir því að ef við viljum í raun að byrja að taka þetta lengra,
við erum að fara til verða að vera vakandi fyrir þeirri staðreynd að fjöldi x sem er verið samþykkt hér
er frábrugðið því sem er í raun verið að fara framhjá á að virka.
Svo aftur, þetta líða afrit er að fara að verða alveg germane í bara smá stund.
Við 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ð er kallað buggy3 og það áhald skipta virka.
Hér höfum við meginhlutverki sem x og y geðþótta frumstilla í 1 og 2.
Við gætum notað GetInt, en við þurfum bara einfalt æfa,
svo það er erfitt dulmáli eins og 1 og 2.
Í línum 21 og 22, prenta við virðist út x og y, 1 í hverja línu.
Þá á línu 23, segjast ég er skipta þessi gildi, punktur, punktur, punktur.
Ég kalla virðist fall á línu 24 kallast skipti sem tekur 2 rök.
Það er algjörlega legit um aðgerðir til að taka 2 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,
Ég vona að það er að fara að skipta þessum 2 gildi.
Svo ég kröfu á línu 25 "skipti!" og ég prentaðu X og Y
undir þeirri forsendu að þeir hafa örugglega verið skipti.
En ef ég hlaupa í raun þetta forrit - láta mig opna Terminal glugga,
láta mig 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 enn, í raun það sama.
Svo miðað við mótmælum bara nú með Ken, hvað er raunverulega að gerast?
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 hérna með Ken?
Hvers vegna er skipti brotinn?
[Nemandi] Þú ert að geyma í afriti, ekki breytilega.
Einmitt. Við erum að geyma til að afrita, ekki breytu sig.
Með öðrum orðum, skipti tekur greinilega 2 rök, 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 nánast eins og þú afritað og límt inn í skipti
þau gildi sem þú vilt hafa það til raunverulega vinna.
Svo ef það er málið, þegar ég forritið byrja framkvæmd línu 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? >> [Nemandi] 1.
[Malan] Það ætti bara að vera 1, rétt, því x voru sett sem fyrsta rifrildi,
og þetta virka bara geðþótta kallar fyrstu röksemd sínum.
Á sama hátt er Y annað rifrildi, og það er bara geðþótta kalla Önnur rökin b.
>> Þetta 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 til að vera gestur.
Svo hefur það að vera skil á milli þess sem þú kallar breytur í aðgerðir sem þú ert að skrifa
og hvað þú kalla breytur í aðgerðir sem þú ert að 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 vissulega myndi ekki vita
hvaða breytur mín eru að fara að kallast,
svo grein fyrir því 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.
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.
Fyrst af öllu, láta mig gera í raun það mun einfaldlega.
Ég veit ekki hvað þessir 3 línur af kóða var að gera.
Leyfðu mér að gera bara þetta: b = a, a = b; gert.
Hvers vegna er þetta brotinn, þá er rökrétt?
Það er góður af leiðandi hlutur, ekki satt?
Svo verður B And B verður,
en vandinn er að um leið og lína 37 keyrir, það er gildi a og b?
Sama, 1, af því að þú hefur stútað, svo að segja, þú hefur breytt B að jafna a.
Svo þegar lína 37 er framkvæmd, það er frábært, ert þú nú 2 afrit af númer 1
inni á þessum eiginleika, svo þá þegar þú segir í línu 38 a = b,
þú ert góður af ruglaður vegna þess að þú 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ímabundið breytu.
>> Tmp er mjög algengt nafn fyrir tímabundna breytu, og þ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.
Þegar lína 38 keyrir, sem tekur gildi b. Og B var 2, þannig að nú er 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 allir 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 framkvæmd áætlunarinnar.
[Inaudible nemandi athugasemd] >> Við höfum ekki skilað neitt, svo það er satt.
En það kemur í ljós að það er a hluti af a vandamál hér því svona langt,
það eina sem við höfum getað til að koma aftur er eitt, og þetta er takmörkun á C.
Þú getur aðeins aftur raun eitt gildi, þar sem ef ég er svona fastur hér
vegna þess að ég gæti aftur á nýju gildi x eða ég gæti aftur á nýju 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?
[Nemandi] a og b. >> A og b.
En a og b eru afrit af x og y, sem þýðir að við gerðum bara allt þetta starf,
við eyddum bara 3 mínútur að tala um skipti virka og allar 3 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 til hliðar,
sama hátt, ef þú ert að lýsa a og b inni í valkost sem þú hefur skrifað,
þeir eru aðeins í gildi innan þeirrar virkni, sem þýðir að um leið og skipti er gert framkvæmd
og við förum frá línu 24 á línu 25, hafa x og y ekki breyst.
Þú 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 1 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 á því að málið í grundvallaratriðum úr því að A og B eru eintök
og þeir eru í eigin umfang þeirra.
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 af þessu, buggy4.
Hvað um þetta?
Þetta er svipað, en einfaldari vandamál að líta á áður en við taka a stunga á 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, segjast ég þá "Incrementing ..."
Ég kalla þá vöxtur, en þá í línum 22 og 23, ég krafa þ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 nemandi svar] >> 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 að á meðan x er hér,
það er ekki til í línu 32, þannig að þ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 'X' undeclared auðkenni í línu 32.
Og í raun, við skulum vera skýr hér í dag þannig að þetta er gagnlegt
á skrifstofutíma 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 5.
Svo 1, 2, 3, 4, 5. Það er, í raun, þar sem vandamálið er.
Og einnig, líka, 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 einn.
Svo alltaf elta niður galla þínum frá toppi og niður
vegna þess að það gæti bara verið Daisy keðja áhrif
sem bendir til að þú hefur leið til fleiri vandamál en þú gerir í raun og veru.
Svo hvernig getum við lagað þetta ef markmið mitt er að hækka x? >> [Nemandi] Gerðu x heimsvísu.
Jæja, svo við getum gert x GLOBAL.
Við skulum taka flýtileið sem ég varaði fyrr, en Heck, við þurfum bara fljótur festa,
þannig að við skulum bara segja int x upp hér. Það gerir x GLOBAL.
Svo nú helstu hefur aðgang að henni og vöxtur hefur aðgang að henni,
og svo láta 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 raunverulega vinnu.
Þetta er einn af þessum hlutum sem er að gera eins og ég segi, ekki eins og ég,
eins og ég hef bara gert hér, vegna þess að almennt,
áætlanir okkar eru að fara að fá mikið meira áhugavert og mun lengur en þetta,
og ef lausnin á vandamálum lífsins er bara að setja allar breytur efst á skrána,
mjög fljótt gera forrit fá horrifically erfitt að stjórna.
Það verður erfiðara að hugsa upp nýja breytilegum nöfn,
það verður erfiðara að skilja hvað breyta er að gera það,
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, svo ég gæti augljóslega -
í lok dags, það er eins konar kjánalegt sögu vegna þess að við gerum bara þetta -
en ef ég vissi ekki um það með þeim eða ég var ekki leyft að breyta því í Main sig,
Hvernig annars gæti ég innleiða Ken hérna að þessu sinni ekki teningur heldur að hækka?
Hvernig breyti ég þetta í hér? Já.
[Nemandi] Pass í x og síðan aftur [inaudible] >> Jæja, gott.
Svo hvers vegna gera ég ekki fara í x og þá frekar en að skila henni,
af hverju get ég ekki bara aftur x + 1.
A par fleiri hlutir að breytast hér. Ég er á réttri leið.
Hvað annað þarf ég að fínstilla? Einhver annar. Já.
[Inaudible nemandi svar]
Ég þarf að breyta aftur tegund vöxtur vegna þess að það er ekki ógilt.
Tóm þýðir ekkert að koma aftur, en greinilega er það,
þannig að þetta þarf að breyta til - >> [nemandi] int.
int til að vera í samræmi við það sem ég er í raun að fara aftur.
Nú er eitthvað annað enn þrjótur hér. Já.
[Inaudible nemandi svar] >> [Malan] Þannig að ég þarf að hækka x?
[Inaudible nemandi svar] >> [Malan] Ah, þannig að ég þarf að fara x.
Þannig að ég þarf að gera þetta hérna. >> [Inaudible nemandi athugasemd]
[Malan] Svo frumgerð, ég verð að breyta þessu upp hér.
Þannig að þetta þarf að verða int, þetta þarf að gerast -
Hmm, ég hef í raun villu hérna. Við skulum laga þetta einn fyrst.
Hvað ætti þetta að vera í raun og veru? Það er got 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 virka hjálpar mínum,
aðgerðir sem ég er að skrifa. Við munum kalla það, eða við getum kalla það -
Við skulum kalla það númer til að vera enn skýrari.
Svo ég verð að fara aftur hvað númerið er plús 1,
og nú þarf ég að breyta 1 annar hlutur upp hér og einn annar hlutur upp hér.
Hvað þarf ég að breyta á línu 21 fyrst? >> [Inaudible nemandi svar]
[Malan] ég að framselja það til x. Ég get ekki bara hringt vöxtur (x).
Ég þarf að muna að svar með því að breyta gildi X á vinstri-hönd hlið.
Og jafnvel þó að x er nú á vinstri og hægri, það er alveg fínt
vegna þess að hægra megin verður keyrð fyrst þá fær plopped í vinstra hlutur -
x í þessu tilfelli.
Og svo loks, þetta er auðvelt festa núna.
Þetta ætti bara að passa hvað er niðri, int númer.
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. Fimm mistök í 6-lína forrit.
Svo er það rangt á línu 18, eðli 5?
Þannig að ég verð að lýsa þessu, int.
Við skulum sjá. There ert a heild búnt af annar villur.
Ó, Guð minn - 19, 18, 21 - en aftur, við skulum bara hreinsa skjáinn, Control L hér,
og endursýning Clang.
Svo er 5 vandamál í raun bara að 1.
Svo nú skulum við hlaupa buggy4, Enter. Whew hefur x verið incremented rétt.
Allt í lagi. Einhverjar spurningar um hvernig á að hækka tölur? Já.
[Inaudible nemandi spurning] >> Góð spurning.
Hvernig er það að ég get bara breyta x í tölu og the program vilja vita strax?
>> Aftur, hugsa af það eins og þetta abstrakt.
Svo ef ég er aðal og Ken er vöxtur, hreinskilnislega, ég 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.
Þetta er framkvæmd smáatriði sem ég, helstu, þarf ekki að hugsa um.
Og svo bara að breyta því stöðugt inni á virka - fjöldi hér og tala hér -
er allt það tekur svo lengi sem ég laun.
Það er tegund af eins og ef þú hugsa um marga af okkur, þessir af þú með leyfi ökumanns
sem hafa 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 á,
konar 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ílnum
eru í raun að gera.
Svo eitthvað eins og það sem þú kallar að stimpla ekki máli hér í þessu tilfelli. Sama hugmynd.
Já. >> [Inaudible nemandi spurning]
Ef það eru fleiri not af 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ð svona -
en þú ert að fara að þurfa að gera þessar breytingar sjálfur.
Þú verður að vera í samræmi. >> [Nemandi] Ef það eru margar breytur [inaudible]
A sérstakri röð eins og hér, ef þetta væri int annað númer? >> [Nemandi] Rétt.
[Malan] Já. Röð máli þ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 rifrildi 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. Ég tók langa leið til að fá það. Aðrar spurningar? Allt í lagi.
Svo við skulum sjá hvort við getum ekki mála mynd af hvað er í raun að gerast hér
undir hetta, svo að segja.
Þetta er rétthyrningur sem gæti gefið minni tölvunnar.
Jafnvel ef þú hefur ekki hugmynd um hvernig minni virkar eða hvernig RAM virkar,
að minnsta kosti 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á viku 0 sem bæti er bara hvað? >> [Nemandi] 8 bitar.
8 bitar, ekki satt? Svo 8 núllum og 1.
Svo ef tölvan þín hefur tónleikum af RAM, 2 Projects af vinnsluminni þessa dagana,
þú ert með milljarð eða 2 milljarða bæti af minni eða um 8 milljarða eða 16 milljarða bita
inni á tölvunni þinni.
Ólíkt litlu Wooly Willy dæmi, það er ekki segulmagnaðir agnir yfirleitt lengur.
Æ - í fartölvur minnsta kosti - það er Solid State drif, SSDs,
sem bara enga hreyfanlega hluti. Það er allt rafrænt. Það er allt rafmagn byggir.
Svo hugsa um þessa rétthyrnings sem bara fulltrúi 1 eða 2 gígabæta af minni sem þú hefur.
>> Svo það er klumpur af minni.
The veröld af tölvunarfræði hefur konar skipt burt
klumpur af minni til að gera mismunandi hluti.
Til dæmis, ef þetta er RAM tölvunnar, sem leiðbeinandi við rétthyrningsins þar,
það kemur í ljós að með því að venju, efst á RAM, svo að segja,
er yfirleitt það sem er kallað texta hluti.
Þeir eru 0s og 1s sem þú hefur safnað saman.
Svo þegar við höfum litið undir hetta á hvaða a.out er,
Allar þessar 0s og 1s, þegar þú keyrir forrit,
þá 0s og 1s eru sóttar af harða disknum þínum í eitthvað sem kallast RAM,
og í RAM þeir setja efst.
Á sama tíma hefur þú annað: frumstilla gögn, aftengja gögn.
Þessir 2 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 það einhver önnur efni: umhverfisbreytur, sem við munum ekki eyða miklum tíma í,
en þá 2 mikilvæg atriði sem mun koma aftur um önn,
stafla og hrúga.
Svo mest af minni tölvunnar er frátekið þegar keyra forrit
fyrir eitthvað sem heitir á mánudaginn og eitthvað sem kallast hrúga.
Við erum ekki að fara að tala um hrúga í dag, en við munum tala um mánudaginn.
The stakkur er ætlað að töfra upp visual höllinni veitingastöðum máltíð stæði í Mather House
eða hvar sem þú verður að vera þar sem sal veitingastöðum starfsfólk hreinsa þá á hverjum degi,
Þeir stafla þeim upp úr gólfinu á upp,
og sömuleiðis, í minni, er þessi hugmynd um að setja eitthvað á mánudaginn,
setja eitthvað á mánudaginn, setja eitthvað á mánudaginn.
Og hvað er átt við með þessu?
>> Skulum zoom í á bara neðri hluta myndarinnar, RAM tölvunnar,
að leggja eftirfarandi.
Það kemur í ljós að þegar þú keyrir forrit eins a.out eða Hello -
hvað forritið er að þú hefur skrifað -
aftur, 0s og 1s sem eru sóttar af harða diskinum, sem er langtíma geymsla,
dvöl þar jafnvel þegar þú draga the tappi, hlaðinn inn í vinnsluminni.
RAM er hraðari en harða diska - það er minni 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 disknum í RAM.
Um leið og það er hlaðið inn RAM, the 0s og 1s fara á leiðinni ofan,
svokallaða texta hluti, en svo um leið og forritið þitt raunverulega byrjar að keyra,
The aðalæð virka er kallað, og helstu, eins og við höfum séð, hefur oft staðbundnar breytur,
og það hefur ints og strengir og chars og þess háttar.
Svo ef forritið þitt sem þú hefur skrifað eða forrit sem þú hefur tvöfalda smellt
notað nokkrar breytur innan helstu,
þeir enda upp neðst á stafla þinn af minni, svo að segja.
Meira concretely, hvað þýðir þetta í raun?
Þetta þýðir bara að ef við værum að fara að tala um bæti af RAM í tölvunni,
eftir því að þetta gæti verið bæti númer 0, þetta gæti verið bæti númer 1, 2, 3, 4, 5, 6,
alla leið upp í 2 ma.kr. 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 þeim klumpur af minni.
Svo þegar þú þarft 32 bita fyrir heiltala eða þú þarft 8 bita fyrir bleikju,
hvar enda þeir upp í minni?
>> Eðli, enda þeir bara upp neðst á þessari hlutur kallast stafla.
En það sem er áhugavert nú þegar helsta kallar fall -
ráð 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 þá í 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 þau verk sem kalla aðgerðir,
þú byggja upp þessa stafla aðgerðir í minni.
Og aðeins einu sinni skilar þú byrjar að fá að minni aftur.
Þá kom einn af the auðveldlega leiðir til að keyra út af minni í tölvuforriti
er að skrifa aðgerðir sem aldrei koma aftur.
Svo til dæmis, við skulum sýna eins mikið með viljandi buggy program.
Leyfðu mér að fara á undan og gera # include ,
int helstu (tóm),
og ég ætla að gera á meðan (2> 1), sem líklega mun aldrei breytast á 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, ógilt kór, og við munum segja int i,
og þá ætla ég að segja printf - nei, við skulum gera þetta meira áhugavert.
Við skulum reyndar ekki prenta eitthvað. Við skulum bara gera þetta: kór (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 sem vekur á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 grundvallar galla.
Helstu símtöl kór að syngja nokkur kór,
svo ég gerði eitthvað heimskulegt og ég hafði Viðlag kalla kór
vegna þess að ég ráð að einhver annar var að fara að framkvæma það ef til vill,
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 - reyndar, við skulum nota stærri glugga.
Við skulum fara á undan og gera kór.
Notkun undeclared auðkenni i.
Ó, það var heimskulegt. Við þurfum ekki á rök. Við skulum bara gera þetta.
Ég vildi að við hafði byrjað á þennan hátt. Það hefði verið miklu auðveldara forrit til að skrifa.
There. Nú skulum fara yfir til stöðvarinnar gluggann minn, endursýning 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ínu svo við getum séð.
Leyfðu mér að segja printf ("Ég er hér") - engin breytur. Við munum láta það svona.
Leyfðu mér að endursýning gera. Leyfðu mér að endursýning kór.
Og ... svona. Halda áfram.
Sem hliðar, hvers vegna hefur það hrundi ekki enn?
Skiptingu kenna gerðist frábær hratt áður.
[Inaudible nemandi svar] >> Einmitt. Svo tekur það tíma til að prenta út, ekki satt?
Það tekur bara meiri vinnu á hluta tölva '.
Og það er það: Sundurliðun 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?
Ef þú hugsa um hvernig minni tölvunnar er sett fram,
þetta verður að vera aðal, en hér skulum bara kalla þetta 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 Viðlag Viðlag Viðlag
Viðlag Viðlag Viðlag Viðlag Ad 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 0s og 1s sem tákna program.
Í stuttu máli, þetta er bara frábær, frábær slæmt.
Program hefur stefnt úr böndunum.
Þú ert að nota vegur meira minni en þú ætlaðir
allt vegna heimskulegt mistök í þessu tilviki,
eða í þessu tilfelli mjög vísvitandi gert virka kalla sig.
Nú, þetta er 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 hætta að kalla mig
er grundvallaratriði veikleiki hér í þessari áætlun.
Hvar erum við að fara með þetta allt? 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 1, þannig að eftirfarandi gerist.
Við skulum fara í aukningu dæmis, þessi strákur rétt hérna.
Hér er það sem er raunverulega að gerast.
Þegar ég kalla vöxtur og ég fara í x, pictorially, hvað er að gerast hér er þetta.
>> Ef ég hef verðmæti 1 geymdar hér og ég kalla reyndar vöxtur,
sem nú heitir Viðlag - iPad er að kasta mér út hér.
Við skulum kalla þetta 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 klumpur af minni
sem geyma númer 1.
Þegar ég kalla vöxtur, ég nota annað klumpur af minni,
en nú hef ég eintak af 1.
Þegar ég hækka þessi gildi, þetta verður 2,
en þá hvað gerist eins fljótt og skilar vöxtur?
Þetta minni bara fær afhent aftur til stýrikerfi,
sem þýðir allt sem þú hefur gert er ekkert gagnlegt.
The 1 sem var upphaflega að finna í Main er enn í raun þar.
Hvar erum við að fara með þetta?
Það kemur í ljós að í minni þú hefur þetta bak-til-bak röð bytes
sem þú getur sett efni á, 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 1 og nú viku 2?
Þetta er bara safn af stöfum.
Svo kemur í ljós eins og þú getur sett númer í minni,
álíka er hægt að setja stafi í minni.
Og þegar við erum að byrja að setja stafi í minni aftur til baka til baka til baka,
það kemur í ljós að notkun á einföldustu hlutum eins og að lykkja eða while lykkju,
við getum 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ð ensku setningu sem raunverulega vit
og breyta öllum þeim bréfum eitt í einu
með því að ganga í gegnum minni tölvunnar okkar vinstri til hægri til að 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.
Áður en við kafa í sumar Crypto og þetta kallast fylki,
láta mig hlé fyrir einhverjar spurningar því mér finnst eins og ég virkilega svona muddled
sumir af þeim viðfangsefnum. Svo skulum við festa nú ef við getum.
Við töluðum bara um gildi aftur, talaði við um rök,
og við ræddum um þessa hugmynd, sem við munum koma til baka á næstu vikum til að 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 á mánudaginn
táknar fall sem er nú að vera kölluð.
Einhverjar spurningar?
Leyfðu mér að spyrja hér.
Leyfðu mér að einfalda þetta aftur hvað það var áður en sumir af fyrri Q & A.
Sú staðreynd að vöxtur er opinn sviga, int númer, lokaður sviga -
hvað þýðir INT fjöldi tákna?
[Nemandi] An rök. >> Rök. Allt í lagi. En hvað er rifrildi?
[Inaudible nemandi svar] >> Hvað er það? >> [Nemandi] Eitthvað sem þú fara inn
Jæja, svo eitthvað sem þú fara inn og almennt, það er bara að inntak.
Ef þú varst 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ð að gerast í raun virðist vera að gefa það með inntak
þannig að það er hægt að gera eitthvað öðruvísi með þessi 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 hentar þ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
það þarf bara að ef þú vilt breyta, þú þarft að segja tölvunni hvað gögn tegund það er,
í stórum hluta þannig að það veit hversu margir bitar til að úthluta til að breyta
vegna þess að það gæti verið 6 - því miður, það mun ekki vera 6.
Það getur verið 16, það getur verið 8, það geta verið 32, jafnvel 64,
en tölvan þarf að vita.
Nú int á the vinstri-hönd hlið sýnir hvað, hins?
[Inaudible nemandi svar] >> Hvað er það? >> [Nemandi] Tegund virka.
The tegund af virka og, nánar tiltekið, hvaða framleiðsla þess. Hægri.
Svo stendur en málið í sviga inntak þess, ef einhverjar eru,
hlutur til vinstri táknar afköst hennar.
Og í þessu tilfelli, vöxtur skilar greinilega int
og svo er int aftur gerð þessa aðgerð.
Hvað þýðir það að skila?
Bókstaflega, þú nota leitarorð aftur og ef það sem þú ert að skila
til hægri leitarorð er heiltala,
þá er örugglega í samræmi við það sem við höfum lofað.
Þú getur ekki gert eitthvað eins og this - Halló heimur - því það er strengur.
>> Vitanlega er það ekki heiltala.
Svo í stuttu máli, byrði er í raun á okkur, forritari, til að vera nákvæm
um hvað við erum að fara aftur og þá í raun að ganga um aftur það.
Samhengi hér er nú að minni tölvunnar er gígabæti, 2 gígabæta -
hvað - kannski það sem meira er, 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ðjunni, og í dag við byrjum bara að segja söguna,
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 0s og 1s að Clang hefur outputted.
Svo þegar þú keyra skipun á lyklaborðinu eins a.out
eða þú tvísmellir á táknið á Mac OS eða Windows,
program er hlaðinn af harða diskinum í RAM
og það er plopped efst RAM tölvunnar, svo að segja.
Á sama tíma, eins og forritið byrjar að keyra og helstu fær kallað
í forritið sem þú skrifar eða forrit Microsoft eða Apple skrifaði
einhver heimamaður breytur hennar endar þarna neðst á minni tölvunnar.
En ef helstu símtöl annar 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ð, fyrir ofan það, fyrir ofan hann.
>> Og aðeins einu sinni aðgerð er lokið framkvæmd er stafla af stæði, svo að segja,
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 liggur í 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 aukningu
eða á 8 er að ræða teningur og síðan henda því minni í burtu
um leið og vöxtur eða virka teningur skilar. Spurning.
[Nemandi] Hvar eru alþjóðlegt breytur geymdar?
Global breytur eru geymdar í það sem nú heitir frumstilla gögn eða forsniðinn gögn,
Munurinn er ef þú hafa a alheims breytu og þú gefur það strax gildi
með jafn skilti, endar það upp efst þar,
og ef þú segir bara int x, með ekkert gildi, endar það upp örlítið lægri í RAM
einfaldlega með því að venju.
Aðrar spurningar? Allt í lagi.
Svo þessari mynd mun koma til baka eins og við fá öflugri
við það sem við getum gert við tölvuna,
En nú, við skulum hafa stutta inngang dulmál,
ákveðin tegund af dulkóðun sem ekki leysa öll vandamál heimsins
en er að leysa sumir af þeim.
Í þessu tilfelli hér, höfum við eitthvað sem kallast leyndarmál-lykill dulmál.
Secret-lykill dulmál, eins og nafnið bendir til, sækir öryggi sitt frá leyndarmál.
>> Fyrir dæmi, ef þú varst aftur í grunnskóla og þú varst liggur smá leyndarmál ást bréf
við strák eða stelpu sem þú varst alger á, ef þú vildir fara að huga um áhorfendur,
þú sennilega myndi ekki skrifa svona athugasemd á ensku eða hvað sem móðurmál þitt er.
Frekar, gætir þú 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 þú komið upp með nokkuð einfalt reiknirit,
ungur þó að þú gætir verið, bara Scramble orð.
Svo í stað þess að skrifa að þú gætir skrifað b,
stað b þú gætir skrifað c,
stað 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ð, sem er það, augljóslega? >> [Nemandi] Það sem þú ert að senda.
Hvaða leyndarmál er, eins og það er að kortlagning á milli og er b og er c og d's.
Er það að bæta bara 1 á 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 í bekknum,
Hvernig er það strákur eða stelpa að fara að vita hvað leyndarmál jafnvel er?
Svo leyndarmál-lykill dulritunarstjórneiningunni ekki leysa öll vandamál heimsins,
og það er í raun samband hér að við munum koma aftur til að enda hverrar annar.
Sama flestir af okkur veit ekki einhver sem virkar, til dæmis á Amazon.com,
og enn margir af okkur hafa líklega keypt efni á Amazon.com,
og við höfum verið kennt að gera ráð fyrir að þessir e-verslun viðskipti eru örugg.
The URL segir sennilega https, það er kannski kjánalegt lítill padlock helgimynd einhvers staðar,
það er einhvers konar dulmál tryggja kreditkortið þitt
milli þín og Amazon.com.
Og enn ef Dulmálsvísindi felur vita nokkur leyndarmál
og enn ég veit ekki hver á Amazon og ég hef svo sannarlega ekki komið hvers konar leyndarmál
við einhvern á Amazon, hvernig er tölvan mín eða vafrinn minn að gera þetta?
Það kemur í ljós að það er annars konar dulmál alveg að leysa þessi vandamál.
En í dag, munum við leggja áherslu á einfalda einn
þar sem þú getur gengið fyrirfram að vita nokkur leyndarmál
eins +1 eða sumir kortlagning milli og er B.
Og ferlið dulmál felur yfirleitt þetta.
Þú hafa sumir texta, sýnt er hér til vinstri,
að keyra það í gegnum einhvers konar reiknirit eða aðferð til að dulkóða það -
Kannski er það bara verður b, B verður C -
og þá endar með ciphertext.
Á sama tíma, þegar fær mylja þína þetta leyndarmál huga,
hann eða hún hefur að hallmæla það þá því yfirleitt snúið að reiknirit
svo sem til að fá til baka texta.
Það 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 af handahófi,
og að innan, það er í raun nokkrar tölur
svo að með þessum hring er hægt konar snúa úti en ekki inni
í því skyni að stilla upp tölur með bókstöfum.
Frá bíómynd sem heitir A Christmas Story, munt þú sjá að lítill Ralphie
var svo fús til að reikna út hvað leyndarmál skilaboð Little munaðarlaus Annie var að hann
sem hafði verið send, að ég held, í formi tölugildi skilaboð á korn kassa
og þú þurftir að safna öllum litlu spil sem kom í korn kassi,
þú þarft að senda þeim, var að fá til baka leyndarmál leyniletri hringinn
þannig að þú getur loksins fundið út hvað kortlagning er milli bókstafa og tölustafa
eða bréf og bréf.
Hvernig í tölvu getum við farið um framkvæmd eða hönd hlutina eins og þetta?
Við þurfum a vegur til að tjá okkur smá sveigjanlegan
en breytum okkar svona langt hafa leyft.
Við höfum haft ints, við höfum haft chars, höfum við fengið fljóta og tvöfaldar og nokkrum öðrum,
en þeir sem eru einstök stykki af minni sem í raun ekki að leyfa okkur að tjá hlutina
eins og orð og setningar og setningar.
Reyndar höfum við kallað slíkt strengi,
en við lofum því að þetta er í raun bara einföldun á CS50 bókasafni
að 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 - kallast array.c
til að leysa vandamál óskyld strengi en það málar mynd hér
um hvernig við gætum notað eitthvað sem kallast fylki.
>> An array er gögn tegund.
Það er tegund af breytu af tegund sem hefur marga smærri gagnatög inni í því
aftur til baka til baka til baka.
Svo til dæmis, ef við vildum að skrifa lítið forrit sem gefur þér quiz meðaltali þinn
í námskeiði eins og 50 sem hefur 2 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 nokkuð augljóst.
Það er kannski 10, 20 línur af kóða max til að framkvæma áætlun
sem spyr notanda um 2 quiz skora og þá reiknar meðaltal þeirra
með því að bæta þeim saman, deila með 2, og þá prenta árangurinn.
Við gætum líklega gert það nokkuð auðvelt núna eftir nokkurn fjölda mínútna.
En vandamálið er að gera ráð fyrir að 50 höfðu 3 Skyndipróf eða 4.
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 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ð, þetta afrita og líma af kóða,
það ætti að fara að gera sem þú vilt að það væri betri leið.
Og sem betur fer, því 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 skapa stöðug
er að nota alla hástafi bara svo að það stendur í raun út í kóðanum þínum,
og sérstakt leitarorð sem þú notar í C ​​# skilgreina.
Þannig að við segjum # skilgreina, þá pláss, þá er orðið sem þú vilt nota fyrir nafni Constant er
og þá verðmæti þeirra stöðug.
Tilkynning er annar framselja eitthvað til breytu.
Það er ekkert samasem merkið, það er engin semíkommu.
Þetta er það sem er almennt þekktur sem Preprocessor tilskipun
en meira um það seinna.
Fyrir nú, það skapar unchanging verðmæti heitir test
raunverulegt Hvers tölustafir er 2.
Svo hvar sem þú sérð Skyndipróf, Skyndipróf, Skyndipróf um þessa skrá,
það er bara númer 2.
Ef ég horfi á helstu skulum sjá hvernig þetta virkar.
Fyrst lítur það svolítið dulinn, en það er allt efni frá viku 1..
Biddu notandann fyrir bekk. Hvernig gerum við þetta?
Í línu 22 - þetta er í raun safaríkur hluti - ég lýsa yfir fljóta
en ekki bara einn fljóta. Ég er að lýsa, heldur fjölda fljótandi punkta gildi.
Þ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 að ég hef sagt float bekk og þá opinn krappi og þá tala -
eftir ef þetta er stöðug þetta er bara eins og við gerðum þetta -
þetta þýðir, "Hey tölva, gefa mér 2 fljóta og við skulum sameiginlega kalla þá einkunna."
>> Þ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,
á þann hátt sem við getum skrifað 1 lína af kóða í staðinn, segjum, 16 fyrir 16 vikna önn.
Ég vildi ekki harður-númer 2 vegna þess að ef þú hugsar um þetta núna rökrétt,
Segjum næsta ári CS50 breytingar 3 Skyndipróf staðinn
og ég var númer 2 hér, var ég númer 2 hér,
Ég átti númer 2 hér á númer 2 hér.
Það verður mjög leiðinlegur og mjög auðvelt að skrúfa upp
og tilviljun breyta 1 gildi 3 og missa einhver önnur verðmæti 2.
Þannig að ég ætla að í stað ágrip þetta í burtu og nota þetta stöðugt að
eins og nafn þess gefur til kynna, aldrei breytist.
Og nú Skyndipróf sama hvort við höfum mismunandi á þessu ári eða næsta,
Ég er bara að breyta því á einum stað hérna efst.
Svo það er 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 kalla saman þá 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 með 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 #% d af% d:")
vegna þess að ég vil bara að prenta út gefa mér quiz númer 1 af 2 og svo 2 af 2.
Þannig að þetta er eingöngu fagurfræðilegu hlutur.
En áhugaverður hluti er nú í línu 27.
Til þess að fylla í einn af tveimur staðgengla með fljótandi punkta gildi,
þú notar aftur hornklofum.
Í þessu tilfelli er ég að nota i því þetta fyrir lykkju hefur byrjað með i sporði hvaða gildi, virðist?
[Nemandi] 0. >> [Malan] 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, því eins og nafnið gefur til kynna,
það er mismunandi gildi á hverjum endurtekning,
þannig að ég ætla að fylla þennan fjölda einn blettur í einu.
Hvað er þetta array líta út?
Ástæðan Ég teiknaði frábær einfalt rétthyrningur á skjánum hér var áður 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 minn eins og hér - ég fékk 100 á þessu og þá fékk ég 99 á þessu -
þá minni gæti ekki einu sinni hægt að nota vegna þess að ég hef bara beðið í tölvunni
fyrir fjölbreytta stærð 2.
Þeir ferningar eru enn þarna, ekki satt?
Þú hefur enn 2 gígabæta vinnsluminni, jafnvel ef þú ert bara að biðja um 2 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 inni minni sem hægt er að setja hlutina.
Þetta gerist þá 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 þá vil ég nota umferð virka hér til raunverulega gera summan 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 þá prenta þ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.
Fyrirgefðu 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 það líður það band,
það segir þér hversu margir stafir eru í því band. Það er allt.
Og sú staðreynd að það er strlen stað lengd strengur er bara vegna þess að það er meira gagnorðar.
Þrjátíu á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.
Í línu 24, segi ég, "Computer, gefa mér staf, 8 bita, og kalla það c."
En hvað er þetta á hægri hönd hlið að segja?
Á ensku, hvað þýðir að tákna?
[Nemandi] Fyrsti stafurinn í fylki.
Einmitt. Gefðu mér fyrsta stafinn í fylkinu.
Eða, almennt, gefa mér ith staf í fylki.
Og átta sig á að það er mikilvægt nú að eins tölvunarfræðinga,
við erum í raun að telja frá 0.
>> Þú ert ekki með ákvörðun nú að byrja að gera þetta.
Nú verður þú að haga sér í samræmi við væntingar í tölvunni og telja frá 0
þ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 þetta forrit ef ég þýða það, þetta er aftur string1, svo að string1,
og nú hef ég keyrt string1 í Telnet mínu.
Það er að bíða fyrir hjálpina, svo ég ætla að slá í Davíð, Enter,
og nú prentar það Davíð allt á mismunandi línum því taka eftir hvað ég er að gera.
Ég er að prenta einn staf í einu.
Við munum 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, gætir þú gefur ekki band á öllum,
eða ef þú ert illgjarn, gætirðu reynt að líma á virði Gigabyte um ritgerð
að fylla þetta band, og ef tölvan keyrir út af minni,
það kemur í ljós 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 sem heitir NULL
sem 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.
Hvað er öðruvísi um for lykkju í þetta sinn?
Ég get farið aftur á fyrra dæmi.
Svo það er útgáfa 2, þetta er útgáfa 1. 1, 2.
1, 2.
The strlen símtal er hvar?
Það er í fyrsta hluta til hliðar.
Allar hugsanir sem að hvers vegna ég er að gera þetta? Já.
[Nemandi] Svo þú kalla ekki virka hvert einasta skipti.
[Malan] Svo við kalla ekki virka í hvert einasta skipti. Einmitt.
Muna úr fyrir lykkjur sem þeir eru frábær einföld
Þegar þú skilja tegund af því að þetta er frumstilling, á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?
[Nemandi] Þú ert að kalla strlen.
[Malan] Þú ert að hringja strlen aftur og aftur og aftur.
En þegar ég hef slegið í Davíð, lengd strengsins er 5,
og það er ekki að fara að breytast á hverjum endurtekning á lykkju
vegna þess að strengurinn er enn D-a-V-i-d.
Þannig að þetta er vísbending á hvað er að fara að verða sífellt mikilvægari hugmynd
þekkt sem hönnun ákvörðun sem bara gera ekki tölva gera óþarfa vinnu.
>> Rétt eins og laumast sýnishorn af pset2, pset2 í venjulegri útgáfu
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ð líkt annars Ralphie þar lesa úr leyniletri.
Í spjallþráð útgáfu pset2, þá ætlum við að fara aðeins lengra.
Við erum að fara að skila þér skrá úr raunverulegum tölvukerfi
sem inniheldur a heild búnt af notendanöfnum og raunverulegum brengla lykilorð,
og áskorun á spjallþráð útgáfa er að fara að vera að sprunga þá lykilorð
og reikna út hvaða dulmál eða hvað leyndarmál var notað til að í raun að 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 ætla að gefa þér bara demo af kallast stjórn-lína rök.
Það 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
að þú skrifar eftir nafni áætlunarinnar á lína þ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 keyra hana,
eftir því 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
er með því að breyta aðal byrja helgina frá int main (tóm) að int main (argc, argv)
og þannig mun fæðast stjórn-lína rök.
Og þegar þú fá raunverulega háþróuð í þessu, verður þú að vera fær um að skrifa mjög trippað forrit
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.
>> [CS50.TV]