[Powered by Google Translate] DAVID J. MALAN: Selvä.
Tämä on CS50, ja tämä on loppuun viikolla kaksi.
Jos odottaa nälkäinen aikoihin huomenna tiedämme, että olemme menossa
koolle niin pieni ryhmä huomenna, torstaina 13:15.
On tämä URL täällä jos haluat vastata kutsuun.
Avaruus on rajoitettu, joten anteeksi jos lomake on täytetty kasvoi kun
Täyttäkää tämä.
Toinen URL vaikka se saattaisi kiinnostaa tämä.
>> Eli vain noin kuukauden ajan, kurssi tulee olemaan saatavilla
kaikki laajemmin kautta EDX, jonka kautta ihmiset Internetissä on
voivat seurata mukana, harjoittaa tietenkin melko aktiivisesti, itse asiassa.
He käyttää CS50 Appliance ja CS50 Keskustele ja useimmat
erilaisia ​​ohjelmistoja, joita meillä jo on käytössä tällä lukukaudella.
Ja yksi aloitteista haluaisimme ottaa koska kokeilu tänä vuonna
on nähdä, kuinka paljon sisältöä voimme kääntää muille puhuttu ja
kirjoitettu kielellä.
Joten jos saatat olla kiinnostunut osallistumaan tähän hankkeeseen, jossa
annamme Englanti selostukset ja tekstitykset kurssin
luentoja ja shortsit sekä seminaareja ja osat ja niiden kaltaiset -
jos puhut sujuvaa tai kirjoittaa sujuvasti muulla kielellä, olisimme
Rakastan harjoittaa sinua tässä hankkeessa, jossa otat yhden tai useamman
videoita, kääntämällä ne kieli tiedätte varsin hyvin.
Annan teille tunteen käyttöliittymä on tämä web-pohjainen käyttöliittymä
että me voidaan käyttää joka luo lähinnä UI näin.
Tämä minua opettamaan joitakin Halloween sitten.
Ja oikealla puolella on musta vieressä näiden aikaleimat,
näet eri asioita, jotka tulivat suustani joka päivä.
Ja sitten sen alla, voit kääntää muulla kielellä.
Mitä kartoitus välillä, tässä tapauksessa, Englanti
ja vaikkapa espanja.
Joten se on todella hyvin käyttäjäystävällinen työkalu.
Voit pikakelaavat erittäin helposti näppäimistöltä.
Joten jos haluat osallistua tähän kokeiluun ja pyydä sanoja
nähdä ja lukea mahdollisesti tuhansia ihmisiä siellä, älä tunne
vapaasti osallistua.
>> Nyt sanaakaan pennun maanantaista, ettemme ole lähettänyt liian
pelottava viesti.
Ymmärräthän, että virka ehdottaa ja osat ehdottaa,
suunnittelu kurssi on erittäin paljon on opiskelijoita yhteistyötä ja
puhuu työn kautta ongelma sarjaa ja ongelmia yhdessä.
Ja oikeastaan ​​linja vain tulee alas jälleen työn te lopulta
olisi toimitettava pitäisi olla oma.
Ja niin se on, rehellisesti - toimisto tuntia, se on täysin normaalia -
se on täysin odotettavissa, vaikka - on chattailuun joitakin
ystävät vieressäsi.
Jos hän kamppailee jonkin aiheen, ja olet kuin, oh, syvä
kerron teille välähdyksen joidenkin koodiriviä, että olen kirjoittanut.
Se on hienoa.
Se tapahtuu.
Ja se on erittäin suotuisa, luulen, jossa oppimisprosessi.
Jos linja, jälleen, saa ylitti on silloin, kun pää on tavallaan kallistetaan yli
täällä aivan liian monta sekuntia tai minuuttia, joka todella on juuri
ollut Unblocking mahdollisuus ystäväsi.
Ja varmasti, kun asiat saavat vaihtaa sähköpostitse ja Dropbox ja
kuten, sielläkin on viiva.
Joten kaikki keinot, tuntea olonsa mukavaksi ja rohkaistava jutella ystävien kanssa
ja luokkatoverit noin psets ja enemmän.
Ja juuri ymmärtää, että mitä lopulta jättää pitäisi oikeastaan ​​olla
tuotteen oman luomisen eikä joku muu.
>> Joten samalla linjalla ja pehmoinen olentoja, saatat
tiedä tämä kaveri täällä.
Joten tämä on järkyttävän cheesy elokuvan vuotta sitten.
Kukaan täällä nähnyt Spaceballs?
Selvä.
Joten hyvä numero täällä.
Joten tämä on meidän ihanan akateeminen tapa ottaa käyttöön tänään lopulta
käsite salauksen.
Ja niin yksi verkkotunnus erityisiä ongelmia PSET 2, joka tulee
myöhään huomisiltana, on sukeltaa maailmaan salauksen, joka
on taidetta salaamisesta tai muokkaamisella tietoja.
Ja tämä lopulta liittyy maailman turvallisuutta.
>> Nyt turvallisuus useimmille meistä tulee muodossa melko arkipäiväinen mekanismeja.
Kaikilla meillä on käyttäjänimiä ja salasanoja.
Ja meillä kaikilla on erittäin huono käyttäjätunnuksia ja salasanoja, todennäköisesti.
Jos salasana on sama useita sivustoja, se luultavasti ei
paras idea, koska tulemme keskustelemaan kohti lukukauden loppua.
Jos salasana on kirjoitettu tarralapulle - no vitsi - teidän
näyttö, sekin ole välttämättä paras malli, mutta melko yhteinen
ilmiö.
Ja jos et käytä salausta salata salasanat, ne ovat
Erityisen haavoittuvia.
Joten jos luulet on erittäin nokkela pyytämällä piilotettu sana
dokumentoida jonnekin kiintolevyllesi, että on kaikki salasanat, mutta
se on kansiossa että kukaan menee katsomaan, sekin ole kovin
turvallinen mekanismi.
Ja niin mitä PSET 2 esittelee tämä taidetta salauksen ja
salaus tietoa, jotta asiat kuten salasanat ovat
kaikki varmempi.
Jotta motivoida tähän hyvin reaalimaailman ongelma hyvin kuin reaalimaailman
skenaario, haluan esitellä sinut yksi meidän suosikki leikkeitä täältä tästä
elokuva, Spaceballs.
>> [VIDEO PLAYBACK]
-Kypärä, sinä riiviö, mitä on tekeillä?
Mitä teet tyttäreni?
-Saanen esitellä loistava nuori plastiikkakirurgi, tohtori Philip
Schlotkin, suurin nenä työtä mies koko
maailmankaikkeus ja Beverly Hills.
-Teidän korkeutenne.
-Nenä työtä?
En ymmärrä.
Hän oli jo nenä työtä.
Se oli makea 16 läsnä.
-Ei, se ei ole mitä luulet.
Se on paljon, paljon pahempi.
Jos et anna minulle yhdistelmän ilmasuojan, Dr. Schlotkin tulee
anna tyttäresi takaisin hänen vanhan nenä.
-Ei!
Mistä sait tuon?
-Selvä.
Kerron.
-Ei, isä, ei.
Et saa.
-Olet oikeassa, kultaseni.
Kaipaan uuden nenän.
Mutta en aio kertoa heille yhdistelmä mitä.
-Oikein hyvin.
Tohtori Schlotkin, tee pahin.
-Mielelläni.
-Ei!
Odota, odota.
Kerron.
-Tiesin, että se onnistuisi.
Selvä, anna se minulle.
-Yhdistelmä on yksi.
-One.
-Kaksi.
-Kolme
-Kolme.
-Neljä.
-Viisi
-Viisi.
-Joten yhdistelmä on yksi, kaksi, kolme, neljä, viisi.
Se typerin yhdistelmä olen koskaan kuullut elämässäni.
Se on sellainen asia, idiootti olisi hänen matkatavaroita.
-Kiitos, teidän korkeutenne.
-Mitä teit?
-Käännyin pois seinästä.
-Ei, sinä et.
Olet sammuttanut koko elokuvan.
-Minun on painanut väärää nappia.
-No, laita se takaisin päälle.
Laita elokuva takaisin.
-Kyllä, sir.
Kyllä, sir.
-Mennään, Erna.
Tule, Gretchen.
Tietenkin tiedät Otan vielä laskuttaa sinua tästä.
-No, se toimi?
Missä on portti?
-Se toimi, sir.
Meillä on yhdistelmä.
-Loistava.
Nyt voimme ottaa viimeinenkin raitista ilmaa planeetalta druidi.
Mikä yhdistelmä?
-Yksi, kaksi, kolme, neljä, viisi.
-Yksi, kaksi, kolme, neljä, viisi?
-Kyllä.
-Uskomatonta.
Minulla sama yhdistelmä minun matkatavarat.
Valmistaudu Spaceball 1 välitöntä lähtöä.
-Kyllä, sir.
Ja muuttaa yhdistelmän minun matkatavarat.
-Hetkinen!
[END VIDEO PLAYBACK]
>> DAVID J. MALAN: amazing elokuvan pitäisi nyt kaikki ks.
Joten yhteydessä tässä on, että suojaamatonta tiedot tulee tilaisuus
salata sitä ja muokkaamaan sitä.
Ja niin tämä, esimerkiksi, on esimerkki salatun viestin.
Tämä sanoo jotakin Englanti.
Mutta se ei selvästikään täysin ilmeinen.
Ja me tulemme täysi ympyrä tänään erottaa toisistaan ​​mitä tämä salaisuus
viesti tässä on.
Mutta todellisessa maailmassa tietokoneiden, asiat eivät edes näyttävät ne saattavat
olla Englanti lauseita.
Esimerkiksi tämä on mitä saatat löytää standardi Linux tai Mac tai
Unix tietokone tiedosto oli aikoinaan nimeltään salasana tiedosto.
Nykyään se on siirretty muualle.
Mutta jos tarkastellaan oikeassa paikassa järjestelmään, näet ei vain
Käyttäjätunnus tai muiden ihmisten järjestelmään, mutta näet
salattu versio salasanansa.
Itse asiassa sana krypta siellä ehdottaa, että seuraavat jutut on salattu.
Ja tämä sarja sattumanvaraiselta kirjaimia ja merkkejä ja numeroita
jne. voidaan purkaa vain yleisesti tietää joitakin salaisia ​​-
salainen sana, salainen numero.
Ja niin tosiaan, taiteen salauksen lopulta kuihtuu luottaa joidenkin
lajitella ja tietää jotain, että joku muu ei.
Me tutkia tätä hieman tarkemmin tänään ja PSET tulla.
>> Ja nyt sana pass / fail.
Niin varsinkin, kuten jotkut teistä ovat sukelsi PSET 1, laite, ja
aivan uusi maailma itse, tajusi että pettymyksiä ja
sekavuus ja vain teknisiä ongelmia on odotettavissa.
Varsinkin ensimmäinen PSET, missä on vain niin paljon uutta, vain saada
tuntee ls ja cd ja kaikki nämä mystistä komennot uuteen ympäristöön.
Ja se on erillään varsinaisesta materiaalista ja ohjelmoinnin itse.
Joten ymmärtää myös, että on varmasti virka että olemassa
tukirakenteen.
Osiot alkaa tulevana sunnuntaina.
Mutta mikä tärkeintä, jos et tunne vain, että tämä ei ole
maailman teille, ymmärtää, että se todella vain ottaa aikaa.
Ja jos se ei tätä tilaisuutta vuotta sitten minulle ottaa luokan
hyväksytty / hylätty, rehellisesti, en koskaan olisi edes asettaa jalka luokkahuoneessa.
Ja voit muuttaa saakka, sanovat, viides maanantaina kurssin.
Joten jos olet reunalla nyt ymmärtää, että mieluummin kuin pää johonkin toiseen
vedet kokonaan, älä varmasti harkita vain vaihtamalla hyväksytty / hylätty.
Jälleen, ei ole oikeastaan ​​tätä kulttuuria täällä Harvardissa ottaa asioita
hyväksytty / hylätty, koska jokainen todella haluaa saavuttaa tai ylittääkseen.
Mutta suoraan sanottuna, tämä on loistava tapa yrittää jotain, että ei ehkä
olla tutulta.
Ja voit päätyä tekemään useimmissa tapauksissa varsin hieno, ehkä
paljon teidän yllätys.
Ja konkreettisemmin, mitä luulen hyväksytty / hylätty yleensä tekee,
varsinkin kun olet ehkä kokenut PSET 0, jos olet laittaa
10 tuntia, 15 tuntia, 25 tuntia johonkin PSET - ja olet vain hakkaamista
päätäsi seinään,
ja se alkaa erittäin myöhään yöllä,
mutta olet ottanut PSET kuin 90% tavalla,
tiedät vain voi selvittää yksi asia -
hyväksytty / hylätty todella vie reunan pois luokan kuten tämä, jossa voit lajitella
ja onneksi sanoa okei, tiedän, että se ei ole täydellinen.
Mutta olen työskennellyt my ass off tästä.
Olen melko tyytyväinen, jos se päätyi.
Ja jotka täyttävät odotukset hyväksytty / hylätty.
Joten älä pidä mielessä.
>> Selvä.
Joten ne teistä, jotka ovat taistelleet käyttää Harvardin yliopiston Wi-Fi tietää
että siellä CS50 SSID, Wi-Fi-yhteyden kelluva noin, että
saattaa olla parempi onni.
Se on vähän ironista, että salasana tähän - jos haluat kokeilla
yhteyden tähän paremmin nopeuksilla ja kerro meille jos se yhtään parempi -
on yksi, kaksi, kolme, neljä, viisi, aina jopa kahdeksan, koska kahdeksan on
turvallisempi kuin viisi.
Joten jos tarvitset Wi-Fi-salasanan, yhteyden CS50 langattomasti täällä.
Yksi, kaksi, kolme, neljä, viisi, kuusi, seitsemän, kahdeksan.
Ja viesti CS50 Keskustele jos sinulla on vielä ajoittaisia ​​yhteysongelmia,
ja me ilmoitamme, että vallanpitäjät tietävät tämän tilan.
>> Selvä.
Joten nopea teaser, erityisesti niille teistä, jotka ovat fani poikia tai tyttöjä
kaiken Apple.
Mitä minä kaivetaan muutama vuosi sitten oli tämä tiedosto täällä, ilock.c, vain
Tällainen antaa konkreettisempi ja monimutkaisempia joitakin enemmän perus C
ohjelmat olemme kirjallisesti.
Joten olen avannut tämän tiedoston, ilock.c.
Se on saatavissa luentojen sivulla tänään.
Vasemmalla puolella, näet pitkän luettelon toiminnoista.
Joten kaveri joka kirjoitti tämän kirjoitti jopa paljon toimintoja,
enemmän kuin vain tärkeimmät.
Hän käytti koko joukko kirjastoja täältä.
Ja jos aloitamme selata, mitä tämä on on hyvin
ensimmäinen, uskon, purtavaksi alkuperäisen iPhonen.
Kun halusi karkaaminen alkuperäinen iPhone, joka tarkoittaa untether
se AT & T ja itse asentaa erityisiä ohjelmistoja sitä ja tehdä asioita
että Apple ei halua ihmisten tehdä -
No, joku vei aikaa selvittää, miten he voisivat hyödyntää
ohjelmisto puutteita, virheitä, vikoja, Applen ohjelmisto.
Ja näin syntyi ilock.c.
Että jos käännetty sen tietokoneeseen ja asentaa sen päälle iPhone että
oli kytketty tietokoneeseen kautta, vaikkapa USB-kaapelilla, tämä antaisi sinulle
hallinnollisia tai root oikeudet iPhonessa ja voit tehdä aika paljon
mitä haluat.
>> Ja niin siellä on ollut tämä kiehtova kissa ja hiiri-leikkiä välillä Apple ja
muualla maailmassa erityisesti ne, kuten monet yritykset, yrittävät lukita
niiden juttuja alas niin, että voit vain tehdä sen kanssa mitä he aikovat.
Mutta kiitos ihmisiä kuten tämä ja ymmärrystä matalan tason
yksityiskohtia, ja tässä tapauksessa C ohjelmointi ja paljon tuttuja rakenteita
että olemme alkaneet leikkiä, voit todella hyödyntää
laitteisto tavalla näette eikä välttämättä jotkut yritystoimija.
Niinpä esimerkiksi, minulla ei ole aavistustakaan mitä tämä kaikki tekee.
Mutta GetVersion kuulostaa melko yksinkertainen.
Ja se näyttää tältä on toiminto, että tämä henkilö kirjoitti.
Ota jonkinlainen kokonaisluvun argumenttina, ei palauta mitään, mutta
näyttää silmukka ja silmukka täällä ja jos tila, jos tila,
rikkoa, ja jotenkin liittyy versionumerot.
Jos me selaa -
vaikka monet näistä avainsanoista tulevat olemaan uusia, ja siellä
paljon toimintoja täällä olemme koskaan nähneet ja ehkä koskaan näe yli
aikana lukukauden -
lopussa päivä, se seuraa samoja sääntöjä ja logiikkaa, että olemme olleet
leikkii toistaiseksi.
Joten tämä on aivan liian vanha halki iPhoneen 3s tai 4s tai pian 5s, näinä päivinä,
mutta tiedän, että se on kaikki hyvin johdettu tästä maailmasta, että olemme
sukelsi.
>> Joten katsomaan hieman yksinkertainen esimerkki.
Tämä yksi, vain saada lämmennyt joitakin syntaksia ja myös joitakin muita tietoja
tyyppi, että me olemme puhuneet, mutta ei oikeastaan ​​nähty C. Joten tämä on
tiedosto nimeltä positive1.c.
Ja kohti kommentit yläosassa, tämä vain vaatii, että käyttäjä antaa
positiivinen numero.
Joten se on esimerkki do-while-silmukka, joka on mukavaa käyttäjän interaktiivinen
ohjelmia, joissa sinun täytyy kertoa käyttäjälle tehdä jotain.
Ja jos he eivät tee yhteistyötä, huudat niitä tai hylätä heidän panostaan.
Olevassa tapauksessa aion tehdä linjat 19 kautta 24 niin kauan kuin käyttäjä on
ei antanut minulle positiivinen numero.
Nyt tämä yksityiskohta täällä line 18, miksi Vakuutan n yläpuolella koko tämän
looping rakentaa toisin kuin vieressä rivi 22, jossa olen
todella kiinnostaa saada n?
Niin?
[Kuulumattomissa]
>> DAVID J. MALAN: Joo, niin tämä kysymys soveltamisalaa.
Ja maallikon aikavälillä, mitä soveltamisala viittaa?
Niin?
[Kuulumattomissa]
DAVID J. MALAN: Voitko puhua hieman kovempaa?
SPEAKER 1: Mistä voit käyttää tietty muuttuja.
DAVID J. MALAN: Perfect.
Mistä voit käyttää tietty muuttuja.
Ja yleensä nyrkkisääntö on tähän mennessä ollut, että soveltamisala joidenkin
muuttuja määritellään viimeisimmän aaltosulkeita että olet nähnyt.
Ja niin tässä tapauksessa, jos tein virheen julistamalla n verkossa 22,
että linja toimisi.
Haluaisin saada int, ja haluaisin laittaa sitä, että muuttujan n mukainen 22.
Mutta mikä koodiriviä olisi nyt ei ole aavistustakaan, mitä puhun?
Joten 25, ja se kääntyy pois 24 samoin, koska tässä tapauksessa se ei kuulu
ja aaltosulkeita.
Joten vähän haittaa, mutta hyvin helposti ratkaistavissa yksinkertaisesti julistamalla
muuttujan ulkopuolella funktion itse.
>> Nyt näemme myöhemmin tänään, voit mennä askeleen pidemmälle.
Ja voit jopa saada hieman laiska -
ja tämä ei ole suositeltavaa, yleensä -
mutta voit jopa saada laiska ja laittaa muuttuja maailmanlaajuisesti, niin sanotusti, ei
sisällä funktio, ei ole silmukan sisällä, mutta itse tiedosto ulkopuolella
kaikkien toimintojen olet kirjoittanut, niin kuin tein täällä line 15.
Mutta tämä on yleensä paheksutaan.
Mutta ymmärtää tämä on ratkaisu joskus muita ongelmia, kuten tulemme
lopulta ks.
Joten nyt, jätämme sen näin.
Mutta katsotaanpa jos voimme kirjoittaa tämän vain käynnistää ilmaista itseämme
hieman eri tavalla.
>> Joten tämä ohjelma vain olla selkeä, on positive1.
Anna minun mennä eteenpäin tänne ja minun pääteikkunaan tehdä positive1, Enter.
Kokoaa, okei.
Aion ajaa positive1, Enter.
Vaadin, että annat minulle positiivinen kokonaisluku.
Sanon -1.
Se ei toimi.
0, 99, joka tuntuu toimivan.
Ehkä ei kaikkein ankarimmat testin.
Mutta ainakin se on kiva järki tarkistaa, että olemme oikealla tiellä.
Joten nyt haluan mennä eteenpäin ja avata versio kaksi tämän.
Ja mikä on erilainen jo?
Se toteuttaa sama asia.
Mutta mitä hyppäämällä ulos selvästi erilaista tällä kertaa?
Joo, niin tämä bool vihreä.
Gedit on korostettu vihreällä avainsanan tunnetaan bool,
joka on tietotyyppi.
Se ei tule rakennettu kaikki versiot C. Sinun täytyy sisällyttää
erityisiä kirjasto.
Meidän tapauksessa olen mukana CS50 kirjastoon, jotta voimme
pääsevät bool.
Mutta linja 18, meillä näyttää olevan totuusarvon täällä kutsutaan kiitollinen.
Joten olen voinut soittaa tätä kaikkea.
Mutta kutsuin sitä kiitollinen vain eräänlainen välittää joidenkin semanttinen.
Joten aluksi linja 18, en ilmeisesti ole kiitollinen, koska
Boolen arvo kiitollisia alustetaan arvoksi false linjassa 18.
Ja sitten näyttää mitä olen tehnyt täällä linjat 21 kautta 23 on olen juuri
Tällainen uusiksi minun logiikkaa.
Joten ei toiminnallisesti erilaisia.
Mutta linja 22 nyt, voin tarkistaa jos int käyttäjä on antanut on suurempi kuin
0, niin en yksinkertaisesti muuttaa arvoa kiitolliset totta.
Ja miksi niin?
Koska linja 25, ilmeisesti, aion tarkistaa kunnossa.
Tee tämä silmukka taas kiitollinen on väärä.
>> Joten ehdotan tätä vaihtoehtoa versioon, koska se on ainakin
hieman intuitiivinen, ehkä.
Se on hieman enemmän maadoitettu Englanti.
Joten tee seuraavat kun et ole kiitollinen tai kun kiitollinen on väärä.
Ja tälläkin kertaa, en ilmeisesti välitä muistaa mitä käyttäjä kirjoittaa
in koska ilmoituksessa ei ole mitään muuttujan n.
Joten oikeastaan, minä -
pieni valkoinen valhe sinne.
Toiminnallisesti ohjelma on hieman erilainen, kun saamme pohjaan
sitä, koska en muistaa mitä n on.
Mutta halusin osoittaa myös tässä, että vaikka olemme nähneet GetInt ja
GetString käytetään oikealla puolella yhtäläisyysmerkki tähän mennessä niin, että
muistamme arvon, teknisesti, se ei ole välttämätöntä.
Jos jostain syystä et vain välitä tallentaa arvon, haluat vain
tarkistaa arvoa, huomaat, että voimme yksinkertaisesti kirjoittaa tätä GetInt auki
Paren, sulje paren.
Tämä toiminto tulee palauttaa arvo, kuten olemme sanoneet.
Se tulee antamaan sinulle takaisin int.
Ja niin jos henkisesti ajatella näin tapahtuu, kun kirjoitat 99, GetInt
palauttaa numero 99.
Ja niin käsitteellisesti, se on ikään kuin minun koodi olisi todella tätä.
Joten jos 99 on todellakin suurempi kuin 0, niin kiitollisia tulee tosi.
Sitten line 25 tajuaa ooh, olemme tehneet koska olen nyt kiitollinen.
Ja linja 26, me yksinkertaisesti sanoa, kiitos positiivinen kokonaisluku, mitä se
sattui olemaan.
>> Nyt tehdä hieman syntaktinen sokeri täällä, niin sanoakseni.
Katsotaan jos voimme siivota tämä rivi 25 ja tämä kolmas ja viimeinen varianssi
vuonna positive3.
Joten huomaat ainoa ero on nyt mitä rivi koodia?
Joo, niin 25.
Ja olemme oikeastaan ​​nähnyt tämän tempun vielä.
Mutta teimme nähdä huutomerkki maanantaina, joka tarkoittaa mitä?
Joten ei, tai kieltämistä.
Joten ota totuusarvon ja kääntää sen arvoa.
True tulee epätosi.
False tulee totta.
Joten tämä, ehdotan, on vielä hieman enemmän intuitiivinen ja tavan
kirjallisesti koodi koska en vieläkään alustaa kiitollinen vääriä.
Olen edelleen toimi seuraavasti.
Asetin kiitollinen totta, kun sen aika tulee.
Mutta nyt voit todella vain kääntää tämän koodin suullisesti vasemmalta oikealle,
vaikka ei kiitollisia.
Koska bang, tai huutomerkki, tarkoittaa käsite ei, joten vaikka
ei kiitollisia.
>> Joten jälleen, emme ole ottaneet käyttöön mitään uusia käsitteitä sinänsä.
Olemme puhuneet booleans takaisin, kun soitimme Scratch.
Mutta ymmärtää nyt voimme vain alkaa kirjoittaa meidän koodi
monin eri tavoin.
Joten varsinkin pset1, jos olet tavallaan kamppailee selvittää tapa
kirjoittaa joitakin ohjelma, kertoimet ovat olet onnea, koska siellä tulee olla
useita ratkaisuja, joita voit tapahtua heti.
Esimerkiksi, tämä on vain kolme edes yksinkertaisimpia ohjelmia.
Selvä.
Ja nyt muistaa maanantaina, jätimme tämän merkille paluuarvot.
Joten ensimmäistä kertaa, kirjoitimme ohjelma, joka ei vain ole tärkein,
se on myös oma custom-toiminto, jonka kirjoitin tänne.
Joten linjan 31 kautta 34, olen toteuttanut datakuutiofunktioiden.
Se ei ole monimutkaista.
Se on vain kerran kertaa, tässä tapauksessa.
Mutta mikä on tärkeää on se, että otan syöttää muodossa ja
Olen palaamassa tuotoksen muodossa kertaa kertaa.
>> Joten nyt minulla on kyky, aivan kuten käytin kanssa printf yksin, soittaa
tätä toimintoa kutsumalla datakuutiofunktioiden.
Ja datakuutiofunktioiden vie jonkin tulon.
Ja kuution funktio palauttaa jonkin lähtö.
Ja niin sen sijaan printf vain teki jotain.
Se ei palauta mitään, että me välittänyt - vaikka, kuten
syrjään, se palauttaa arvon.
Sinä vain yleisesti sivuuttaa sitä.
Printf vain teki jotain.
Se oli sivuvaikutus tulostamisen näytölle.
Sitä vastoin tässä, meillä on kuutio-toiminto, joka
tosiasiallisesti palauttaa jotain.
>> Joten tämä on yleensä -
niille tuttu, se on melko yksinkertainen idea.
Mutta niille vähemmän tuttu ajatus kulkee Panosten ja saada
takaisin lähdöt, yritetään vain jotain erittäin yksinkertaista.
Onko joku mukava tulossa lavalle hetkeksi?
Sinun täytyy olla mukava kamera sinulle samoin.
Joo.
Okei, mikä on nimesi?
KEN: Ken.
DAVID J. MALAN: Ken.
Selvä, Ken.
Tule ylös.
Joten Ken tulee olemaan funktio lajittelee tässä.
Ja mennään eteenpäin ja tehdä tätä.
Mennään hieman fancy.
Hauska tavata.
Tervetuloa keskiöön.
Selvä.
Katsotaanpa osuma tätä painiketta täällä.
Selvä.
Joten tässä on moderni liitutaulu.
Ja mitä minä olen on tärkein ominaisuus, esimerkiksi.
Ja minulla ei ole iPad kädessäni.
En todellakaan muista, miten - no, oikeastaan, ei voi sanoa.
En todellakaan ole hyvä käsiala.
Ja siksi haluan voit tulostaa jotain ruudulla minulle.
>> Olen siis olla pääohjelma.
Ja aion saada sanot tämän kirjoittamalla se minun kanaa naarmu ja
sitten kulkee sinun syöttää.
Niin typerä vaikka tämä harjoitus on käsite toimintoja ja kutsuvan
toiminta ja palauttaa funktio todella kuihtuu tätä.
Olen pääasiassa.
Olen juuri kirjoittanut printf ("jotain") näytöllä.
Olen käynnissä ohjelman.
Ja heti printf saa kutsutaan, se kestää yksi argumentti - tai yksi parametri,
joskus -
välillä lainausmerkkeihin.
Tässä on tämän väitteen.
Olen ohimennen sen Ken.
Nyt hän on musta laatikko kirjoittanut joitakin vuosia sitten, että ilmeisesti
vain osaa tulostaa asiat näytöltä.
>> Niin, suorita.
Se ei ole paha.
Joten, erittäin hyvä.
Joten nyt Ken on tehty täytäntöönpanovaltion.
Tarvitseeko hän luovuttaa minulle mitään takaisin?
Joten ei, että olemme nähneet tähän mennessä.
Jälleen printf ei oikeastaan ​​palata numero.
Mutta aiomme sivuuttaa, että nyt, koska emme ole koskaan käyttänyt sitä.
Niin, että se Ken.
Ja nyt tärkein palaa toteuttaa -
pääasiallinen ottaa haltuunsa ohjelman uudelleen, koska se koodirivin
printf, tehdään täytäntöönpanovaltion.
Ja me menemme noin tiemme täytäntöönpanovaltion mitä muut linjat ovat siellä.
>> Selvä.
Joten nyt yritetään hieman erilainen esimerkki.
Ja tällä kertaa täällä, katsotaanpa ensin tyhjentää ruudun täällä.
Ja tällä kertaa teemme cubing toimintoa.
Mutta tällä kertaa, odotan lähtöarvo.
Joten mene eteenpäin ja tehdä tämän.
Joten nyt minulla on rivi koodia, joka sanoo x = cube (x).
Joten oikeastaan ​​let's -
koodirivin, Recall, näyttää tältä.
x = cube (x).
Joten miten tämä tulee toimimaan?
Joten mene eteenpäin ja antaa sinulle valkokangas uudelleen.
Ja aion kirjoittaa nyt alas arvo x, joka tällä hetkellä
aikaa sattuu olemaan, sanotaanko, 2, pitää se yksinkertainen.
Joten olen kirjoittanut alas paperille arvo 2,
mikä on minun arvo x.
Minä ojennan sen Ken.
KEN: Ja minä vain kirjoittaa vastauksen?
DAVID J. MALAN: Joo, mennään vain kirjoittaa vastauksen.
Okei.
Ja nyt hän on takaisin minulle jotain.
So -
täydellinen.
Nice SEGUE.
>> Joten nyt hän ojentaa minulle takaisin arvoon 8, tässä tapauksessa.
Ja mitä teen sen kanssa?
No, oikeastaan, katsotaanpa.
Kuntoon.
Mitä aion tehdä?
Nyt aion ottaa tämän arvon ja todella säilytä ne
samat bitit muistiin.
Mutta ilmoitus, olen sellainen kamppailee täällä.
Olen hieman hämmentynyt, sillä mistä minä itse kirjoittaa arvon x?
Koska mitä olen juuri tehnyt on fyysisesti käsin Ken paperinpala
, joka oli arvo 2, joka oli x.
Ja todellakin, se on juuri mitä tapahtuu.
Joten näyttää siltä, ​​että kun soitat toiminnon ja ohitat argumentti
kuten "Hello World" tai ohitat argumentti kuten 2, yleensä, olet
ohimennen kopio tätä väitettä.
Ja niin aivan kuten kirjoitin numero 2 täällä ja ojensi sen Ken; että on
tarkoittaa, että minulla on vielä kopio arvo 2 jonnekin.
Koska tosiaan, nyt kun olen saanut takaisin arvoon 8, minun täytyy mennä takaisin
RAM ja oikeastaan ​​kirjoittaa 8 jossa minulla oli kerran numero 2.
>> Joten visuaalisesti muistaa tämä käsite kulkee kirjaimellisesti
jäljennös arvon.
Ken tekee hänen asia, ojentaa minulle jotain - tässä tapauksessa
arvo kuin 8.
Ja sitten minun täytyy tehdä jotain, että arvo jos
haluamme pitää sen ympärillä.
Joten kaikki tämä on liiankin tuttu ennen pitkää.
Kiitos paljon tästä demo täällä, Ken.
Selvä.
Hyvin tehty.
Joten miten se lopulta liittyy joitakin funktion
soittamalla että olemme täällä.
Joten anna minun mennä eteenpäin ja tuoda meidät takaisin cubing esimerkki tästä.
Ja huomaa, että jos haluamme todella aloitat edelleen menemme
sen täytyy olla tietoinen siitä, että määrä x, joka on parhaillaan kului
tässä on erilainen mitä todellisuudessa johdetaan toiminto.
Joten jälleen, tämä ohitti kopio on tulossa varsin
Germane vain hetken.
>> Joten katsomaan jotain, joka ei ole aivan toimi oikein vielä.
Aion mennä eteenpäin ja avata kolmas buginen esimerkki, joka
on virheellinen luonteeltaan.
Ja sitä kutsutaan buggy3, ja se toteuttaa vaihtamalla toiminto.
Joten tässä meillä on tärkein tehtävä, joka on x ja y mielivaltaisesti alustetaan
1 ja 2, vastaavasti.
Voisimme käyttää GetInt, mutta meidän täytyy vain yksinkertainen käyttää.
Joten se kovakoodatuilla kuin 1 ja 2.
Riveillä 21 ja 22, me ilmeisesti tulostaa x ja y, yksi per rivi.
Sitten on line 23, väitän minä vaihtava näitä arvoja, piste, piste, piste.
Olen ilmeisesti soittaa funktio linjalla 24 kutsutaan swap
että ottaa kaksi argumenttia.
Se on täysin legit toiminnoissa ottaa kaksi argumenttia.
Olemme nähneet printf tehdä se jo.
Joten swap ilmeisesti vie x ja y.
Ja kuten nimikin, toivon että se tulee
vaihtaa näiden kahden arvon.
Joten Väitän linjalla 25, vaihtoi.
Ja minä uusintapainoksia x ja y olettaen, että
he todellakin vaihdettu.
Mutta jos olen itse suorittaa tämän ohjelman -
haluan avata terminaali-ikkunan.
Haluan tehdä buggy3.
Kuten nimestä voi päätellä, tämä ei lopu hyvin.
Koska kun minä Enter, huomaat, että x on 1.
y on 2.
Ja vielä lopussa ohjelman, ne ovat yhä itse asiassa sama.
>> Joten perustuvat mielenosoitus juuri nyt Ken, mitä todella tapahtuu?
No, katsotaanpa sukeltaa tähän swap toiminto.
Se on super lyhyt.
Se on vain muutaman rivin koodia pitkä.
Mutta mitä perusongelma perustuu yksinkertainen tarina kerrotaan
täällä Ken?
Miksi swap rikki?
[Kuulumattomissa]
Aivan.
Joten olemme tallennetaan kopioon, ei muuttuja itse.
Toisin sanoen, swap ilmeisesti ottaa kaksi argumenttia, int.
Ja se on mielivaltaisesti kutsutaan a ja b.
Ja täällä, olen läpäissyt vuonna x ja y, jotka ovat vastaavasti 1 ja 2.
Mutta en kirjaimellisesti ohimennen x.
En kirjaimellisesti kulkee y.
Olen ohimennen kopio x ja kopion y.
Se on kuin melkein kuin olisit kopioida ja liittää vaihtaa arvot
haluat todella manipuloida.
Eli jos näin on, kun minä, ohjelma, käynnistä täytäntöönpanovaltion
linja 35, sitten 36 -
kun saan linja 37, tässä vaiheessa tarinan, mikä on arvo?
Tässä vaiheessa tarinan, rivi 37, mikä on arvo tässä vaiheessa?
Joten se pitäisi olla vain 1.
Oikea?
Koska x hyväksyttiin ensimmäisenä argumenttina.
Ja tämä toiminto vain mielivaltaisesti soittaa Ensimmäisessä väitteessään.
Samoin on y, toinen argumentti.
Ja se on vain mielivaltaisesti soittaa toinen argumentti b.
>> Nyt tämä kahtiajako on oikeastaan ​​melko yksinkertaisesti selitetty.
Mieti sitä.
Kukaan meistä ovat tavanneet henkilö kirjoitti printf.
Niin varmasti, hänellä ei ole aavistustakaan, mitä muuttujia 30 vuotta myöhemmin menossa
kutsua.
Joten siellä on tehtävä ero, mitä te kutsutte muuttujien
toiminnot kirjoitat ja mitä te kutsutte funktioissa olet
soittamalla tai käyttämällä.
Eli toisin sanoen, olen kirjoittanut minun muuttujat x ja y.
Mutta jos joku muu oli kirjoittanut swap-toiminto, hän varmasti
eivät tiedä, mitä minun muuttujia aiotaan kutsua.
Niin ymmärtää, että tämä on siksi sinulla on kaksinaisuuden nimiä.
Teknisesti voisin tehdä tämän sattumalta.
Mutta ne olisivat kuitenkin kului kuin kopioita.
Se olisi vain sattumaa esteettisesti jos henkilö, joka kirjoitti
swap oli käytetty samoja nimiä.
>> Selvä.
Joten tässä vaiheessa tarinan, rivi 37, on 1.
b on 2.
Ja nyt lähden vaihtaa niitä.
No ensinnäkin haluan todella tehdä tämän paljon yksinkertaisemmin.
En tiedä mitä nuo kolme riviä koodia tekivät.
Haluan vain tehdä tämän.
b saa.
saa b.
Valmis.
Miksi tämä rikki, loogisesti?
Se on tavallaan intuitiivinen asia, eikö?
Joten tulee b.
Ja b. muuttuu.
Mutta ongelma on, että heti kun linja 37 teloitetaan, mikä on
arvon a ja b?
Sama, 1.
Koska olet clobbered, niin sanotusti, olet muuttanut b yhtä.
Joten kun linja 37 suoritetaan, se on hienoa.
Sinulla on nyt kaksi kappaletta numero 1 sisällä tätä toimintoa.
Joten sitten kun sanot linjassa 38, saa b, hyvin, olet sellainen ruuvattu.
Koska olet vain määrittämällä 1-1.
Olet tavallaan menetetty arvo, jota välittänyt.
>> Joten alkuperäinen versio, huomaa mitä tein.
Minä sen sijaan oli kolmannella rivillä koodia, joka näytti tältä.
Julistan väliaikainen muuttuja - tmp on hyvin yleinen nimi
ja väliaikainen muuttuja.
Se int koska sen vastaamaan mitä haluan tehdä kopion.
Minä tallentaa kopion sisällä tmp. Joten kun linja 37 on suoritettu,
arvo on -
nopeasti järki tarkistaa -
1.
Arvo b on 2.
Ja arvo tmp on myös 1.
Joten nyt toteuttaa linjan 38.
Joten kun linja 38 suorittaa, vie arvo b.
Ja B 2.
Joten nyt 2.
Joten tässä vaiheessa tarinan, on 2, b on 2,
ja tmp on 1.
Joten nyt loogisesti, voimme vain plop tmp arvo tulee b.
Ja olemme tehneet.
>> Joten olemme ratkaisseet tämän ongelman.
Valitettavasti, kun ohjelma suoritetaan tässä muodossa, se ei varsinaisesti vaihda
mitä tahansa arvoja.
Mutta on selvää, miksi?
Korjasin looginen ongelma juuri hetki sitten.
Mutta jälleen kerran, jos en suorita tämä ohjelma, x ja y säilyvät ennallaan vuoden
ohjelman toteuttamista.
[Kuulumattomissa]
DAVID J. MALAN: Eli emme ole palautettu mitään.
Niin se on totta.
Mutta se muuttuu siellä on hieman ongelma, sillä tähän mennessä
Ainoa asia, olemme voineet palata on yksi asia.
Ja tämä on rajoitus C. Voit palauttaa oikeastaan ​​yksi arvo,
jolloin, olen sellainen jumissa täällä
koska voisin palata uusi arvo x tai voisin palata
uusi arvo y.
Mutta haluan molemmat takaisin.
Joten takaisin ei yksinkertaista ratkaisua.
Mutta ongelma pohjimmiltaan on miksi?
Mitä me oikeastaan ​​vaihdettu?
a ja b.
Mutta a ja b ovat kopioita x ja y, mikä tarkoittaa, teimme tämän kaiken
työtä - me juuri viettänyt kuten kolme minuuttia puhua swap
toiminto ja kaikki kolme näistä muuttujista.
Ja se on hyvä, aivan oikein erikseen.
Mutta ja b soveltamisala vain on näitä rivejä tänne.
Eli aivan kuten varten silmukka, jos julistaa kokonaisluvun I Inside varten
loop - Samoin, jos olet julistamista ja b sisällä toiminto
olet kirjoittanut, he vain pätevä sisällä tätä toiminnallisuutta.
Mikä tarkoittaa heti vaihto tapahtuu täytäntöönpanovaltiossa ja menemme linjan 24
linja 25, x ja y eivät ole muuttuneet lainkaan.
Olet juuri tuhlannut paljon aikaa vaihtava kopioita muuttujia.
>> Joten näyttää siltä, ​​että ratkaisu tähän on todella ei-ilmeinen.
Se ei ole aivan riittävää palauttaa arvoja, koska voimme
vain palauttaa yhden arvon.
Ja en todellakaan halua vaihtaa sekä x ja y samanaikaisesti.
Joten aiomme palata tähän.
Mutta nyt, ymmärtää, että kysymys pohjimmiltaan johtuu siitä
että a ja b ovat kopioita.
Ja ne ovat omassa soveltamisalaan.
No, yritetään ratkaista jollakin tavalla.
Saanen todella siirry takaisin tänne ja avata, sanokaamme, neljättä
Tämän buggy4.
Ja mitä tästä?
Tämä on samanlainen, mutta yksinkertaisempi ongelma katsoa ennen kuin ryhdymme puukottaa
ratkaisemiseksi.
Tämä ohjelma on nimeltään lisäys.
Ja se ilmeisesti alustaa x kokonaisluvun 1 mukainen 18.
Sitten väittävät x on 1.
En sitten vaatia mukaa, piste, piste, piste.
Sitten soittaa lisäys.
Mutta sitten linjat 22 ja 23, väitän se on kasvatettu.
Väitän x on nyt mitä se on, 2 oletettavasti.
>> Mutta tämä ohjelma on buginen.
Mikä on ongelmana?
Niin?
[Kuulumattomissa]
DAVID J. MALAN: Aivan.
Joten x on julistettu ilmeisesti linjalla 18.
Se on sisällä tärkein on aaltosulkeita.
Niin yksinkertainen vastaus tähän on, että hyvin, x on olemassa täällä.
Se ei ole linjassa 32.
Joten tämä ohjelma itse ei edes kääntää.
Kääntäjä, kun yritän koota tätä koodia, tulee huutaa minulle
joitakin pimeän tunnus tai jotakin tämänsuuntaista.
Itse asiassa yritetään.
Tämä on merkki buggy4.
Siellä se on.
Käytä pimeän tunnisteen x linjassa 32.
Ja itse asiassa, olkaamme selkeämpi täällä tänään, jotta tämä on hyödyllistä
virka ja kotona.
Huomaa, että se on hieman arvoituksellisesti kirjoitettu.
Mutta se, että clang on huusi meille sanoen
buggy4.c: 32:5, on todella hyödyllinen.
Se tarkoittaa, että virhe on linjalla 32 klo merkkipaikkaan viisi.
Joten yksi, kaksi, kolme, neljä, viisi.
Se on, itse asiassa, missä ongelma on.
Ja myös pitää mielessä virka ja kotona, olen onnekas täällä.
Minulla on yksi virhe.
Se tulee olemaan suhteellisen helppo korjata.
Mutta jos saat koko ruudun täynnä ylivoimainen virheilmoituksia, jälleen,
ymmärtää, että alimmainen voisi vain olla oire
ylimmän kanssa.
Joten aina jahdata alas bugeja ylhäältä alaspäin.
Koska siellä voi olla juuri ketjuttamalla mukaan ehdottaa sinulle
on paljon enemmän ongelmia kuin sinä itse tehdä.
>> Joten miten voisimme korjata tämän, jos tavoite on kasvattaa x?
Mikä tuo on?
Okei.
Joten voimme tehdä x maailmanlaajuisia.
Otetaan pikakuvakkeen että olen varoitti aiemmin.
Mutta pahus, meidän täytyy vain hätäratkaisu.
Joten vain sanoa int x tänne.
Se tekee x maailmanlaajuisesti.
Joten nyt tärkein on pääsy siihen.
Ja lisäys on pääsy siihen.
Ja niin haluan mennä eteenpäin ja kokoaa nyt.
Tee buggy4, Enter.
Näyttää koota nyt.
Katsotaanpa juosta buggy4, ja se näyttää todella toimivat.
Nyt tämä on yksi näistä asioista -
niin kuin minä sanon, ei niin kuin minä teen, koska olen juuri tehnyt tänne.
Koska yleensä, meidän ohjelmat menevät paljon mielenkiintoista ja
paljon kauemmin kuin tämä.
Ja jos ratkaisu elämän ongelmiin on vain ah, laita kaikki
muuttujat yläreunassa tiedoston, nopeasti tehdä ohjelmia saada
järkyttävän vaikea hallita.
Se saa vaikeampi keksiä uusia muuttujan nimeä.
Se saa vaikeampi ymmärtää, mitä muuttuja tekee mitä.
>> Ja niin yleensä, tämä ei ole hyvä ratkaisu.
Joten tehdä tämän paremmin.
Emme halua käyttää globaali muuttuja täällä.
En halua kasvattaa x.
Niin voisin tietysti -
lopussa päivä, se on tavallaan typerä tarina, koska me vain teemme tätä.
Mutta jos en tiedä, että operaattori tai en saa
muuttaa sitä pääasiassa itse, miten muuten voisin toteuttaa Ken tänne, tämä
aikaa ei kuutio vaan kasvattaa?
Miten voin muuttaa tämän asian täällä?
Joo.
[Kuulumattomissa]
DAVID J. MALAN: Okei, hyvä.
Miksi en kulkea x?
Ja sitten kuin palauttaa se, miksi en vain tee paluuta x + 1?
Nyt, pari enemmän asioiden on muututtava täällä.
Olen oikealla tiellä.
Mitä muuta pitää nipistää?
Joku muu.
Niin?
[Kuulumattomissa]
DAVID J. MALAN: Minun täytyy vaihtaa paluuta tyyppiä kasvu
koska se ei mitätöidä.
Void tarkoittaa mitään ei ole palautettu.
Mutta selvästi, nyt se on.
Joten tämä tarvitsee vaihtaa INT oltava tahansa
Olen oikeastaan ​​takaisin.
>> Nyt jotain muuta on vielä buginen täällä.
Niin?
[Kuulumattomissa]
DAVID J. MALAN: Joten minun täytyy kasvattaa x?
[Kuulumattomissa]
DAVID J. MALAN: Ah, niin minun täytyy kulkea x.
Joten minun täytyy tehdä tämä täällä.
Joten prototyyppi, minun täytyy muuttaa tänne.
Joten tämä on tullut int.
Tämä on tullut -
hmm.
Minulla on oikeastaan ​​vika täällä.
Katsotaanpa korjata ensin.
Mitä pitäisi tämä oikeastaan ​​on?
Joten se täytyy olla int jotain.
Se voisi olla x.
Mutta rehellisesti, jos alkaa soittaa kaikki muuttujat x, se tulee saamaan
vähemmän selvää, mikä on mikäkin.
Joten vain mielivaltaisesti valita eri nimeämiskäytäntöä minun
auttaja toimintoja, toiminnot Kirjoitan.
Me kutsumme sitä.
Tai voisimme kutsua sitä - kutsukaamme sitä even_number olla vieläkin selvempi.
Joten sitten on palattava lukumäärästä riippumatta on plus 1.
Ja nyt minun täytyy muuttaa yhden asian tänne ja yksi
toinen asia täällä.
Mitä minun täytyy vaihtaa linjan 21 ensin?
Minun täytyy antaa se x.
Joten en voi vain soittaa lisäys x.
Minun täytyy muistaa vastauksen muuttamalla arvoa x on
vasemmalla puolella.
Ja vaikka x on nyt vasemmalle ja oikealle, se on täysin hieno, sillä
oikea puoli saa suoritetaan ensin sitten saa plopped vasempaan
käsi juttu, x tässä tapauksessa.
Ja sitten lopuksi, tämä on helppo korjata nyt.
Tämä pitäisi vain vastata mitä alhaalla.
Int numero.
>> Selvä.
Joten koko joukko muutoksia todella tyhmä toimintoa.
Mutta edustaja asioita me yhä haluamme tehdä.
Joten tee buggy4.
Olen mokasin jonnekin.
Voi luoja.
Viisi virheitä, kuten, kuusi linja-ohjelman.
Joten mikä hätänä linjalla 18, merkki 5?
Selvä.
Joten minun on ilmoitettava tästä int.
Selvä.
Joten katsotaanpas, koko joukko muita virheitä.
Oh my god.
19, 18, 21.
Mutta jälleen kerran, haluan vain tyhjentää ruudun -
Ohjaus L täällä - ja re-run clang.
Joten viisi tehtävää on oikeastaan ​​vain se yksi.
Joten nyt mennään juosta buggy4, Enter.
Vau.
x on kasvatetaan oikein.
>> Selvä.
Kaikki kysymykset siitä, miten kasvattaa numeroita?
Niin?
SPEAKER 2: Miksi et voi vain muuttaa x numeroon muuttujan
nimi ja se tiedät mitä tarkoitat?
DAVID J. MALAN: Hyvä kysymys.
Miten on mahdollista, että voin vain vaihtaa x numeroon ja ohjelma tietää
heti?
Joten jälleen, ajattele sitä tällä abstraktio.
Joten jos olen tärkein ja Ken on laajentuva suoraan sanottuna, en välitä
mitä Ken kutsuu iPad.
En välitä, mitä hän kutsuu mitään, että on tekemistä hänen täytäntöönpanoon
Tämän toiminnallisuuden.
Joten tämä on täytäntöönpanon yksityiskohta, että minä, tärkein, älä
tarvitse välittää.
Ja niin yksinkertaisesti muuttamalla sitä johdonmukaisesti sisällä toimintoa, numero tästä
ja numero täällä on kaikki se kestää niin kauan kuin minä kääntää.
Se on tavallaan kuin jos ajattelee - monet meistä, ne teistä, joilla kuljettajan
lisenssejä, jotka olet ajanut, tai jos olet jo ajettu auto -
useimmat meistä ei ole aavistustakaan siitä, miten auto toimii alla huppu.
Ja kirjaimellisesti, jos avaa huppu, useimmat meistä - minä mukaan lukien -
aio todellakaan tiedä mitä me tarkastelemme.
Kind of kuten saatat tuntea juttuja kuten tämä nyt.
Mutta meidän ei todellakaan tarvitse huolehtia kuinka auto toimii.
Meillä ei tarvitse välittää mitä kaikki tangot ja männät ja kaapelit sisällä
auto todella tekevät.
>> Eli jotain mitä te kutsutte mäntä ei ole väliä
täällä tässä tapauksessa.
Sama idea.
Niin?
[Kuulumattomissa]
DAVID J. MALAN: jos olisi enemmän käyttöä muuttujan XA hetki sitten,
te, ohjelmoija, olisi muutettava niitä kaikkialla.
Tai voit kirjaimellisesti tehdä Tiedosto-valikko, ja valitse sitten Etsi / Korvaa-
jotain.
Mutta olet menossa täytyy tehdä nämä muutokset itse.
Sinun täytyy olla johdonmukainen.
[Kuulumattomissa]
DAVID J. MALAN: tietyssä järjestyksessä kuin täällä?
Jos tämä oli KANS toiseen numeroon?
Joo.
Joten jotta asiat kun soitat toimintoa.
Joten jos olisin vaativat lisäys tänne jotain pilkulla jotain,
siellä suoraan kartoitus.
Ensimmäinen muuttuja, riippumatta sitä kutsutaan, on tehty kopio ensimmäisen
argumentti tänne.
Anteeksi, tämän ei pitäisi olla suluissa.
Toinen perustelu on linjassa toinen.
>> Joten tilaa, kyllä ​​asiat.
Selvä.
Anteeksi Otin pitkä matka sinne.
Muita kysymyksiä?
Selvä.
Joten jos voimme olla maalata kuvan siitä, mitä todella tapahtuu
Tässä alla huppu, niin sanoakseni.
Joten tämä on suorakulmio, joka voisi edustaa tietokoneen muistiin.
Joten vaikka sinulla ei ole aavistustakaan siitä, miten muisti toimii ja miten RAM toimii ainakin
olettaa, että sinulla on rypäleterttuja se näinä päivinä.
Sinulla megatavua se.
Sinulla gigatavua sitä.
Ja me tiedämme viikolla nollasta että tavu on juuri mitä?
8 bittiä.
Oikea, joten 8 nollia ja ykkösiä.
Joten jos tietokoneessa on keikka RAM, kaksi keikkaa RAM näinä päivinä, olet
miljardia tai 2 miljardia tavua muistia, eli noin 8 miljardia euroa tai 16000000000
bittiä, tietokoneesi sisälle.
Nyt toisin pikku Woolly Willy esimerkiksi se ei ole magneettisia hiukkasia
tyypillisesti enää.
Yhä läppäreissä ainakin se on solid state drives, SSD, että
vain ei ole liikkuvia osia.
Se on sähköinen.
Se kaikki sähkö perusteella.
Niin kuitenkin sitä mieltä, tämän suorakulmion kuin vain edustaa yksi tai kaksi
gigatavua muistia, että sinulla on.
>> Joten se kimpale muistia.
Nyt maailma tietojenkäsittelytieteen on eräänlainen osioitu pois palasina
muisti tehdä eri asioita.
Niinpä esimerkiksi, jos tämä on tietokoneen RAM - ehdottaman
suorakulmio siellä - käy ilmi, että sopimuksen mukaan, yläreunassa teidän RAM, joten
puhua, on yleensä mitä kutsutaan tekstin segmenttiin.
Nämä ovat nollia ja ne, jotka olet kääntänyt.
Joten kun teimme alla huppu, mitä a.out on, kaikki
nollat ​​ja ykköset -
kun suoritat ohjelman, nuo nollia ja ykkösiä ladataan kiintolevyltä
ajaa jotain kutsutaan RAM.
Ja RAM, he laittaa yläosassa.
Nyt välin, sinulla on muita asioita.
Alustettu data, alustamattoman tietoja.
Nämä kaksi karhoa muistia viittaavat globaaleja muuttujia, jotka
et käytä usein.
Mutta joskus jos et, he päätyvät sinne myös.
Sitten on joitakin muita juttuja.
Ympäristömuuttujat, joita emme viettää paljon aikaa.
Mutta sitten kaksi tärkeää asiaa, jotka tulevat takaisin koko tämän
lukukausi, pino ja keko.
>> Joten useimmat tietokoneen muistista on varattu, kun käynnissä ohjelma
jotain kutsutaan pino ja jotain kutsutaan kasaan.
Ja emme aio puhua kasan tänään, mutta me
puhua pino.
Ja pino on tarkoitus loihtia visuaalisen samankaltaisten ruokasali
ateria lokerot Mather Talo tai missä satut olemaan, jos
ruokasali henkilökunta puhdistaa niitä joka päivä.
He pinota ne ylös lattiasta ylöspäin.
Ja samalla muistissa, on tämä ajatus, että laittaisit jotain
pino, laittaa jotain pino, laittaa jotain pinoon.
Ja mitä me tarkoitamme tällä?
No, katsotaanpa lähentää vain alaosassa Kuvan, tietokoneen
RAM, ehdottaa seuraavaa.
On käynyt ilmi, että kun ajaa ohjelmaa, kuten a.out tai hei riippumatta
ohjelma on, että olet kirjoittanut,
taas näitä nollia ja ykkösiä ladataan kiintolevyltä - mikä on
pitkäaikaisen varastoinnin, pysyy siellä vaikka vedät pistokkeen -
ladataan RAM.
RAM on nopeampaa kuin kiintolevyt.
Se on pienempi kuin kiintolevyt.
Mutta se jos ohjelmia elää kun käytät niitä.
>> Joten kaksoisnapsautat ohjelman Mac tai PC - se on ladattu
kiintolevy RAM.
Heti kun se on ladattu RAM, nollat ​​ja ykköset mennä way top,
ns tekstin segmenttiin.
Mutta sitten heti kun ohjelma todella käynnistyy, tärkeimmät
toimintoa kutsutaan.
Ja tärkein, kuten olemme nähneet, on usein paikallisia muuttujia.
Ja se on ints ja jousille sekä merkkiä ja vastaavat.
Joten jos ohjelma että olet kirjoittanut tai ohjelma, joka olet
kaksinkertainen napsautti käyttää joitakin muuttujia sisällä tärkein, he päätyvät
pohjassa pinon muistin, niin sanoakseni.
Nyt konkreettisemmin, mitä tämä oikeastaan ​​tarkoittaa?
Tämä tarkoittaa vain sitä, että jos aioimme numeroida asioita -
jos aioimme määrän tavua RAM tietokoneen, huomaat, että
tämä voi olla tavu numero nolla.
Tämä voi olla tavu numero yksi, kaksi, kolme, neljä, viisi, kuusi, kaikki
asti pitävän -
2000000000 olisi aina siellä huipulla.
Eli toisin sanoen, kun puhumme RAM tai muistin kannalta tavua, se
vain sitä, että joku on päättänyt mitä numeroida kukin
ne paloina muistia.
>> Joten kun tarvitset 32 ​​bittiä int tai tarvitset 8 bittiä char, jossa
he päätyvät muistissa?
No käsitteellisesti, ne vain päätyvät alareunassa tämän
asia kutsutaan pino.
Mutta mitä mielenkiintoista nyt kun tärkein kutsuu toimintoa.
Oletetaan toiminto nimeltään foo vain mielivaltainen nimi.
Mitä tapahtuu, on tärkein on alaosassa tämän pinon muistia.
Foo nyt laittaa päälle tärkeimmistä muistiin.
Joten kaikki paikalliset muuttujat foo on lopulta eräänlainen käsitteellisesti edellä
kuin pääasiassa.
Jos foo kutsuu toista toiminto nimeltään baari, nuo muuttujat päätyvät tänne.
Jos palkki soittaa jotain muuta, täällä, täällä, täällä.
Joten mitä kiinnostavaa käynnissä ohjelma on, että soitat toimintoja,
ja koska nämä toiminnot puhelutoimintoja, ja kuin toiminnot edellyttävät toiminnot,
voit rakentaa tämän pinon toimintoja muistiin.
Ja vain kerran funktio palaa sinä alkaa saada että muisti takaisin.
Joten yksi helpoimmista tavoista loppuu muisti tietokoneohjelma on
kirjoittaa toimintoja, jotka eivät koskaan palaa.
>> Niinpä esimerkiksi mennään osoittaa niin paljoa
tarkoituksellisesti buginen ohjelma.
Anna minun mennä eteenpäin ja tehdä # include , int main (void).
Ja aion tehdä, kun (2> 1), joka luultavasti ei koskaan
muuttaa meitä.
Ja anna minun mennä eteenpäin nyt ja tehdä printf.
Oikeastaan, se tulee olemaan vähemmän visuaalisesti kiinnostavia.
Tehdään tämä.
INT (i = 0; i> 0).
Tehdään tätä virhettä, i + +.
Ja älkäämme printf täällä.
Katsotaanpa käytännössä mitä olin saarnaamassa.
Mennään menetelmänä.
Void chorus, ja me sanomme int i.
Ja sitten aion sanoa, printf -
oh, tehkäämme tähän mielenkiintoisempia.
Katsotaanpa oikeastaan ​​ei tulosta mitään.
Toivotaan vain tehdä tämän.
Chorus (i).
>> Selvä.
Joten tämä on buginen koska miksi?
Teen tämän ylös kuin menen, koska ohjelma ei oikeastaan ​​tee mitään
kiinnostuksen.
Mutta se ei ole tavoite.
Tavoitteena on kirjoittaa ohjelma, jonka päätehtävä tekee mitä, ilmeisesti?
Soita itse.
Ja itse asiassa, emme tarvitse silmukka.
Katsotaanpa vaikka yksinkertaistaa tätä juuri niin kuin ei unohtaa todella
perustavanlaatuinen vika.
Tärkeimmät puhelut kertosäe laulamaan kuorossa.
Sitten tein jotain typerää, ja minulla oli kuoro soittaa kertosäkeen koska oletin
joku muu aikoi toteuttaa sen ehkä.
Ja nyt tämä ei tule kerätä vielä.
Minun täytyy tehdä mitä?
Tarvitsen prototyyppi, muistan.
Joten minun täytyy olla täällä void kuoro (int i);.
>> Joten nyt, jos menen tänne -
Oikeastaan ​​Katsotaanpa käyttää isompi ikkuna.
Mennään eteenpäin ja tehdä kertosäkeen.
Käyttö tunnistamattomia ilmoittajan i.
Voi, se oli typerää.
Emme tarvitse väitettä.
Toivotaan vain tehdä tämän.
Olisipa aloittanut tällä tavalla.
Olisi ollut paljon helpompi ohjelma kirjoittaa.
Niin siellä.
Nyt mennään yli minun pääteikkunaa uusinnassa clang.
Ja tässä mennään.
Se oli todella nopea.
Mitä oikeastaan ​​vain tapahtui, vaikka?
No, nyt minä lisätä Print linjaa, jotta voimme nähdä.
Sallikaa minun sanoa printf, sanotaanko, että olen täällä.
Okei, no muuttujia, jätämme sen sellaista.
Saanen uusinnassa tekevät.
Saanen uusinnassa kuoro.
Ja tulla.
Jatka.
Sivuhuomautuksena, miksi se ei ole kaatunut vielä?
Segmentointi vika tapahtui erittäin nopeasti ennen.
[Kuulumattomissa]
DAVID J. MALAN: Aivan.
Joten se vie aikaa tulostaa.
Se vain vie enemmän työtä tietokoneen osa.
Ja siinä se on.
Segmentointi vika.
>> Joten huomaa miten nopeasti ohjelmista.
Jos et pysty tulostamaan mitään, huippunopea.
Mutta saimme kuitenkin tämän segmentoitumisen vika koska mitä oli tapahtumassa?
No, jos ajattelee, miten tietokoneen muisti on vahvistetut, tämä
sattuu olemaan tärkein.
Mutta täällä -
Haluan vain soittaa tähän chorus, ja kutsukaamme tätä Chorus.
Ja nyt jos minä teen estetiikka oikeassa, tämä on juuri menossa sanoa kuoro,
chorus, kuoro, kuoro, kuoro, kuoro, kuoro, loputtomiin.
Ja lopulta, mitä tulee tapahtumaan?
Jos iso kuva kirjaimellisesti tämä, mitä vain tapahtuu käsitteellisesti?
Pino ylitykset kasaan.
Tai pahempaa, juuri ylittynyt kaiken, myös tekstin segmentti, joka on
nollia ja ne, jotka edustavat ohjelman.
Lyhyesti sanottuna tämä on aivan super, super huono.
Oikea?
Ohjelmasi on kasvaneet käsistä.
Käytät paljon enemmän muistia kuin sinä tarkoitettu kaikille, koska tyhmä
virhe, tässä tapauksessa.
Tai tässä tapauksessa, hyvin tietoisesti tehnyt toiminnon kutsuvan itseään.
Nyt tämä ei ole lainkaan huono.
Toiminnot, jotka kutsuvat itseään todella on suuri voima
kun käytät sitä oikein.
En ole käyttänyt sitä oikein täällä.
>> Joten tämä ei ole lainkaan huono.
Mutta se, että en koskaan lopeta kutsuvan itseäni on perustavanlaatuinen
heikkous täällä tämän ohjelman.
Joten missä olemme menossa tämän kaiken kanssa?
No, mitä todella tapahtuu?
Kun Kutsun lisäys toiminto, kuten teimme näissä esimerkeissä,
Minulla arvo kuin 1 että välitän sisään
Minä kulkea kopion numero yksi.
Niin tapahtuu seuraavaa.
Joten mennä lisäyksen esimerkki.
Ja tämä kaveri on täällä.
Joten tässä mitä todella tapahtuu.
Kun kutsuin lisäys, ja välitän vuonna x, kuvallisesti mitä
täällä on tämä -
jos minulla on arvo 1 varastoitu täällä, ja olen todella soittaa lisäys, joka
on nyt nimeltään Chorus -
Joo, heittää minut pois täältä.
Joten kutsuvat tätä lisäystä.
Ja emme tiedä, mitä tämä seuraavaksi toiminto tulee olemaan.
Joten mitä todella tapahtuu on täällä jossain pääasiassa olen kimpale
muistin, joka on tallentamiseksi numero 1.
Kun pyydän lisäys, olen käyttäen toista kimpale muistia, mutta nyt
on kopio 1.
Kun minä kasvattaa tätä arvoa, tämä tulee 2 - hirvittävän kirjoitettu
näyttö tästä.
Mutta sitten, mitä tapahtuu kun kasvu palaa?
Tämä muisti vain saa luovuttaa takaisin käyttöjärjestelmä, joka tarkoittaa kaikkia
olet tehnyt mitään hyödyllistä.
Joka alun perin sisältyvä tärkein on yhä todella siellä.
>> Joten missä olemme menossa tähän?
No, käy ilmi, että muisti on tämä seläkkäin järjestyksessä
tavua, että voit laittaa kamaa sisään
Ja näyttää siltä, ​​että olemme jo nähneet jotain liittyy käyttöön
asiat takaisin takaisin takaisin takaisin.
Mikä on merkkijono, joka perustuu Viikko sitten ja nyt viikon kaksi?
Joten se on vain kokoelma merkkiä.
Joten se kääntyy pois, aivan kuten voit laittaa numerot muistiin, samalla voit
laittaa merkit muistiin.
Ja kun aloitamme laittamalla merkkejä muistin takaisin takaisin takaisin
takaisin, käy ilmi, että käyttämällä yksinkertaisimpia asioita, kuten for-silmukka tai
while-silmukka, voimme toistaa -
vasemmalta oikealle yli merkkijonon merkkejä -
ja alkaa hierovat niitä eri merkkiä kokonaan.
Voisi tulla B. B voisi tulla C. Joten lopulta, voimme ottaa
Englanti lause, että todella järkevää ja muuntaa kunkin
kirjaimia yksi kerrallaan kävelemällä läpi tietokoneen muistin jäljellä
oikeus todella salata.
>> Joten otamme viiden minuutin tauon, ja kun palaamme, hyvitämme
aloittaa tämän prosessin sekoitus tietoa.
>> Selvä.
Joten ennen kuin sukeltaa joitakin crypto ja näitä asioita kutsutaan paneelit, haluan
tauko kysyttävää, koska minusta tuntuu todella sellainen sekava joidenkin
näitä aiheita.
Joten korjata nyt, jos voimme.
Joten me vain puhuimme paluuarvot.
Puhuimme argumentteja.
Ja puhuimme tästä käsitteestä, jonka tulemme takaisin vuonna viikon
tulevat, katsella muistiin koko joukko näistä stacked
tarjottimet, niin sanoakseni.
Alhaalta ylös, niin että jokainen lokero että saa laittaa pinoon edustaa
toiminto, joka on parhaillaan kutsutaan.
Kysyttävää?
Miten siis - Yritän kysyä kysymyksen.
Pidän pilaa, mutta nyt Se on - you've kaikki nähneet pojan kasvot.
Joten Palaamme tähän.
>> Kysyn kysymyksen tänne.
Saanen yksinkertaistaa tämän takaisin siihen, mitä se oli ennen joitakin aikaisempien Q & A.
Ja että kasvu on avoin sulkumerkki, int numero, suljettu
suluissa.
Mitä int numero edustaa?
[Kuulumattomissa]
DAVID J. MALAN: argumentti.
Okei, mutta mikä argumentti?
[Kuulumattomissa]
DAVID J. MALAN: Anteeksi, mikä se on?
SPEAKER 3: Jotain ohitat sisään
DAVID J. MALAN: Okei.
Joten jotain välität sisään
Ja yleisemmin, se on vain tulo.
Jos kirjoitat funktion ja että toiminta on tarkoitus elämässä on tehdä
jotain hieman erilaista joka kerta käytät sitä, niin ainoa tapa
sen tapahtua todella näyttäisi olevan toimittamaan panos niin, että se
voi tehdä jotain erilaista, joka syöttää joka kerta.
>> Joten sinun täytyy määrittää kaksi asiaa, kun toiminto vie tuloja.
Sinun täytyy määrittää nimi, jonka haluat antaa, että tulo, puhtaasti
oman mukavuuden, jotta voit viitata siihen toimintoon
itse kirjoittavat, kuten tein täällä line 32.
Mutta sinun on myös määrittää huoneen tyyppi, koska C on ohjelmointikieli
että vain vaatii
että jos haluat muuttuja, sinun täytyy kertoa tietokoneen mitä
tietotyyppi on,
suurimmaksi osaksi siten, että se tietää, kuinka monta bittiä
osoittaa kyseisen muuttujan.
Koska se voisi olla kuusi -
Anteeksi, se ei olisi kuusi.
Se voi olla 16.
Se voi olla 8.
Se voi olla 32, jopa 64.
Mutta tietokone tarvitsee tietää.
Nyt int vasemmalla puolella edustaa mitä vastoin?
[Kuulumattomissa]
DAVID J. MALAN: Mikä se on?
[Kuulumattomissa]
David J. MALAN: toimintonäppäimen tyypin ja tarkemmin sanottuna
tyyppi sen tuotannosta.
Oikea.
Joten taas asia suluissa edustaa sen tulon, jos jokin,
asia vasemmalle edustaa sen lähtöön.
Ja tässä tapauksessa, lisäys ilmeisesti palauttaa int.
Ja niin int on palautuva tämän toiminnon.
>> Mitä se tarkoittaa palaamaan?
Kirjaimellisesti, voit käyttää avainsanan paluuta.
Ja sitten jos mitä olet palaamassa oikealla avainsana on
kokonaisluku, niin se on todella sopusoinnussa sen kanssa, mitä olemme luvanneet.
Voisit tehdä jotain tällaista -
Hei, maailma -
koska se on merkkijono.
Ilmeisesti se ei ole kokonaisluku.
Eli lyhyesti sanottuna, taakka on todella meille, ohjelmoija, olevan erityisiä
mitä olemme palaamassa ja sitten itse mennä noin palauttamalla sen.
Ja sitten tehdä tad selvemmin yhteydessä -
siellä hän on taas.
Konteksti -
Suuri yllätys tulossa vain hetken.
Konteksti tässä nyt on, että tietokoneen muistiin on jälleen
Gigabyte, kaksi gigatavua riippumatta.
Ehkä se on enemmän.
Ehkä se on vähemmän.
Mutta tietokone näkee sen olevan eri osissa.
Jotain menee sinne.
Jotain muuta menee sinne.
Eri tavaraa menee keskellä.
Ja tänään, me vain aloittaa kertoa tämän tarinan.
>> Mutta me palaamme tähän ajan.
Toistaiseksi ainoa pala muistia emme välitä on teksti segmentti
koska juuri edustaa nollat ​​ja ykköset
että clang on lähtönä.
Joten kun suoritat komennon näppäimistön kuten a.out tai tuplaat
klikkaa kuvaketta Mac OS tai Windows-ohjelma on ladattu kiintolevyn
ajaa RAM.
Ja se plopped yläreunassa tietokoneen RAM, niin sanoakseni.
Nyt puolestaan, kuin ohjelma käynnistyy ja pääasialliset saa kutsui
Ohjelma kirjoitit tai ohjelman Microsoft tai Apple kirjoitti, mikään sen
paikallisia muuttujia päätyvät sinne alareunassa tietokoneen muistiin.
Mutta jos pääasiallinen kutsuu toista toiminto on itse muuttujia tai
argumentteja, he päätyvät sen yläpuolella.
Ja jos se funktio kutsuu jotain, he päätyvät sen yläpuolella,
sen yläpuolella, sen yläpuolella.
Ja vain kerran toiminto tapahtuu täytäntöönpanovaltion tekee pino tarjottimia, joten
puhua, alkaa saada vähemmän ja vähemmän.
Ja tämä on mitä sitten, pähkinänkuoressa, selittää, kun soitat kuutio -
tai soitat lisäys -
olet ohimennen kopion arvosta.
Ja mitä se tarkoittaa kuvallisesti että olet kirjaimellisesti kirjallisesti
numero 1 toisessa osassa muistia, muuttuvat, että 1-2, kun kyseessä on
lisäys -
tai 8, jos kyseessä on kuution -
ja sitten heittää että muisti pois heti lisäyksen tai kuution
toiminto palaa.
>> Kysymys.
[Kuulumattomissa]
DAVID J. MALAN: Missä - maailmanlaajuinen muuttujat tallennetaan mitä
nykyisin kutsutaan alustetaan tiedot tai alustamattoman tietoja.
Ero on, jos sinulla on globaali muuttuja, ja liität sen
välittömästi arvo yhtäläisyysmerkkiä, se päätyy huipulla siellä.
Ja jos vain sanoa int x puolipiste ilman arvoa, se päätyy hieman
pienempi RAM yksinkertaisesti yleissopimuksessa.
Muut kysymykset.
Selvä.
>> Joten tämä kuva tulee takaisin kun saamme tehokkaampi, mitä voimme tehdä
tietokoneen kanssa.
Mutta nyt, nyt on lyhyt esittely salausta, tietyntyyppiset
salausta, joka ei ratkaise kaikkia maailman ongelmia, mutta ei ratkaise
joitakin niistä.
Tässä tapauksessa täällä meillä on jotain kutsutaan salaisen avaimen salausta.
Ja salainen avain salausta, kuten nimestä voi päätellä, saa sen turvallisuus
alkaen salaisuus.
Niinpä esimerkiksi, jos olet takaisin alakoulussa ja olet ohimennen
pikku salaisuus rakkauskirje poika tai tyttö olet murskaamalla päälle - jos
halusi kulkea että läpi yleisö, luultavasti ei kirjoittaa
tällainen huomautus Englanti tai mikä äidinkieli on, vaan sinun
voisi salata sitä.
Tai voit vain lähettää heille tekstiviestin näinä päivinä.
Mutta ehkä todella välittää heille huomautuksen koko luokkahuoneessa.
Ja tehdä tämän turvallisesti, niin että ystävien ja opettaja
eivät tiedä, mitä olet kirjallisesti, saatat keksiä melko yksinkertainen
algoritmi -
Nuoret vaikka saatat olla -
vain ryntäily sanat.
Joten kirjoittamisen sijaan, saatat kirjoittaa B. sijaan B, saatat kirjoittaa
C. sijaan C, saatat kirjoittaa D, ja niin edelleen.
Tai voit keksiä entistä kehittyneempiä käännös kirjeitä
eri kirjaimia.
Mutta saalis on poika tai tyttö, jolle olet lähetät huomautuksen tarvitsee
tietää jotain.
Mikä on mitä, ilmeisesti?
Kuten, mitä salaisuus on.
Kuten, mitä se kartoitus Koska ja Bs ja Cs ja Ds?
Onko se vain lisätään yksi, niin sanotusti, kullekin kirjeitä mennä
A-B, B-C?
Onko se monimutkaisempaa kuin?
Joten sinun ja murskata tarvitsevat tätä salaista tietoa.
Mutta on eräänlainen catch-22 täällä.
Jos tämä on ensimmäinen kerta, kun lähetät tämän rakkauskirje kautta
luokka, miten se poika vai tyttö menossa tietää, mitä salaisuus edes on?
Joten salainen avain salaus ei ratkaise kaikkia maailman ongelmia.
Ja siellä todella suhde, tulemme takaisin kohti
lukukauden lopussa.
>> Samoin on kukaan meistä luultavasti koskaan lähettänyt -
Samoin, älä useimmat meistä eivät tiedä joku, joka toimii esimerkiksi osoitteessa
Amazon.com.
Ja vielä, monet meistä ovat luultavasti ostanut kamaa Amazon.com.
Ja olemme opetettu olettaa, että nämä verkkokaupan
liiketoimet ovat turvallisia.
Oikea?
URL luultavasti sanoo https.
On ehkä typerä pikku riippulukon kuvake jonnekin.
On jonkinlainen salauksen turvata luottokorttisi tiedot
sinun ja Amazon.com.
Ja vielä, jos salakirjoitus liittyy tietää joitakin salaisia, ja silti en
tiedä ketään Amazon, ja olen varmasti ole järjestetty minkäänlaista
salainen jonkun Amazon, miten tietokone tai selain tekee tämän?
No, kääntyy siellä on muita salausta kokonaan, jotka ratkaisevat
että ongelma.
Mutta nyt, me keskitymme yksinkertainen, jossa voit järjestää vuonna
etukäteen tietää joitakin salaisia, kuten plus 1 tai jotkut kartoitus Koska ja Bs.
>> Ja prosessi salauksen liittyy yleensä tätä.
Sinulla on joitakin pelkkää tekstiä, kuvattu tässä vasemmalla.
Te ajaa se läpi jonkinlaisen algoritmin tai menettelyn
salaamiseen sitä.
Ehkä se on vain muuttuu B, B tulee C. Ja sitten voit päätyä
salakirjoitetun.
Samalla kun ihastus saa salaisuus huomautuksen, hän on silloin
purkaa se yleisesti kääntämällä että algoritmi jotta saat
takaisin tekstimuodossa.
Nyt on olemassa fyysisiä inkarnaatioihin tästä.
Esimerkiksi tämä on pieni salaisuus dekooderin rengas.
Ja tämä on rengas siinä mielessä, että siellä on kaksi soittaa täällä.
Ulkopuolella kehän tämä asia, siellä on kirjaimet A-Z,
vaikka he ovat satunnaisessa järjestyksessä.
Ja sisäpuolella, siellä on todella joitakin numeroita, niin että tämä
rengas, voit tavallaan kääntää ulkopuolelta, mutta ei sisällä jotta riviin
numeroita kirjaimia.
Ja leikkeen olet aikeissa nähdä - joista olet ehkä nähnyt 24/7
ympärille joulun kausi elokuvan nimeltä Christmas Story.
Huomaat, että pikku Ralphie oli niin innokas selvittää, mitä vähän orpo
Annien salainen viesti oli hänelle ollut ilmoitettu, luulen, että
muodostaa numeerisia viestejä sarja laatikko.
Ja sinun piti kerätä kaikki pikku kortit mukana
viljan ruutuun.
Sinun piti postittaa ne tuumaa
Sinun piti saada takaisin salaisuus dekooderi rengas, joten voit vihdoin selvittää
mitä kartoitus on kirjainten ja numeroiden
tai kirjaimia ja kirjaimia.
Joten annan teille tämän lyhyen leikkeen Christmas Story motivoida PSET 2 ja
keskustelumme, hetken, ja matriiseja.
Joten tässä meillä on Ralphie.
>> [VIDEO PLAYBACK]
-On se tiedossa iikka että Ralph Parker nimitetään
jäsen Pikku Orphan Annie Secret Circle ja on oikeutettu kaikkiin
kunnianosoitukset ja hyödyt ilmenevät siihen.
-Signed, Pikku Orphan Annie.
Nimikirjoituksellaan, Pierre Andre!
Musteella!
Kunnianosoitukset ja etuuksien jo yhdeksän vuoden iässä.
Tule, mennään sen kanssa.
En tarvitse kaikkea jazz noin salakuljettajien ja merirosvoja.
-Kuuntele huomenna yö tekemistä seikkailu musta
Pirate Ship.
Nyt on aika Annien salaisen viestin teille jäsenille
Salaisen Circle.
Muistakaa, lapset, vain jäsenille Annien Secret Circle voi purkaa
Annien salaisen viestin.
Muista, Annie riippuu sinua.
Aseta nastat B2.
Tässä on viesti.
12, 11 -
-Olen ensimmäinen salainen kokous.
-14, 11, 18, 16 -
-Pierre oli hyvä ääni tänään.
Voisin sanoa, että illan viesti oli todella tärkeä.
-3, 25.
Tuo viesti Annie itse.
Muista, älä kerro kenellekään.
-90 Sekuntia myöhemmin, olen vain huoneeseen missä poika yhdeksän
voisi istua rauhassa ja purkaa.
Aha, B. menin seuraavaan.
E. Ensimmäinen sana on olla.
S. Se oli tulossa helpompaa nyt.
U.
-Älä viitsi, Ralphie.
Täytyy mennä.
-Minä heti alas, ma.
-Gee hurahtaa.
-T, O. Muista.
Muista mitä?
Mikä oli Little Orphan Annie yrittää sanoa?
Muista mitä?
-Ralphie!
Randy on mentävä.
Voisitko tulla ulos?
-Selvä, ma.
Tulen heti.
-Olin lähestyy nyt.
Jännitys oli kauhea.
Mikä se oli?
Planeetan kohtalo saattaa vaakalaudalla.
-Ralphie!
Randy sai mennä.
-Minä heti ulos, itkeä ääneen.
-Gee, melkein siellä.
Sormiani lensi.
Mieleni oli teräs ansa.
Jokainen huokosten värähtelemään.
Se oli melkein selvä.
Kyllä, kyllä, kyllä, kyllä.
-Muista juoda Ovaltine.
Ovaltine?
Crummy kaupallinen?
Son of a bitch.
[END VIDEO PLAYBACK]
>> DAVID J. MALAN: Joten olemme salauksen.
Joten miten tietokone voimme mennä toteuttamisessa tai
edustavat asioita, kuten tämä?
No, me tarvitsemme tapa ilmaista itseämme hieman joustavammin kuin
meidän muuttujia on toistaiseksi sallittu.
Meillä on ollut ints.
Meillä on ollut merkkiä.
Meillä oli kellukkeet ja tuplaa ja muutama muu.
Mutta ne ovat yksittäisiä muistia, jotka eivät todellakaan salli meidän
ilmaista asioita, kuten sanoja ja lauseita ja fraaseja.
Itse asiassa me olemme kutsuneet tällaisia ​​asioita jouset.
Mutta me lupasimme, että tämä on todellakin vain yksinkertaistamista CS50
Kirjaston että olemme aikovat kuori takaisin.
>> Ja niin aloitamme tehdä sitä täällä.
Anna minun mennä eteenpäin ja avata tiedosto -
kaikki nämä tiedostot ovat saatavilla normaalisti verkossa -
kutsuttu array.c ratkaista ongelman liity merkkijonoja vaan maalaa
kuva täällä miten voisimme käyttää jotain kutsutaan array.
Array on tietotyyppi.
Se on eräänlainen muuttuja, lajittelee, että on useita pienempiä tietotyypit
sisällä sen takaisin takaisin takaisin takaisin.
Niinpä esimerkiksi, jos haluamme kirjoittaa pieni ohjelma, joka antaa sinulle
tietokilpailu keskimäärin kurssi kuten 50, joka on kaksi tietokilpailuja, voisit helposti
Kirjoittaessani tätä - perustuu jopa joitakin viime viikolla materiaali -
käyttämällä GetInt ja pari muuttujia.
Int quiz1, int quiz2, ja se on melko yksinkertainen.
Se on ehkä 10, 20 riviä koodia, Max, toteuttaa ohjelma, joka kysyy
käyttäjän kahden tietovisan tulokset ja sitten laskee niiden keskiarvon lisäämällä niiden
yhdessä, jakamalla kaksi, ja sitten tulostaa tulokset.
Voisimme ehkä tehdä melko helposti nyt jälkeen
jotkut montako minuuttia.
>> Mutta ongelma on, että oletetaan, että 50 oli kolme tietokilpailuja tai neljä.
Oletetaan, että halusitte käyttää samaa ohjelmaa luokka, joka oli
viikoittain tietokilpailuja.
Ajattele luokka, joka on viikoittain tietokilpailuja.
Jos on esimerkiksi 16 tai niin viikkoa lukukauden, nyt sinulla on 16 muuttujaa -
int quiz1, int quiz2, int quiz3, int quiz4.
Heti kun alkaa nähdä tämän redundanssin tämä kopiointi ja liittäminen
koodin, se pitäisi alkaa tehdä haluat siellä oli parempi tapa.
Ja onneksi, sillä paneelit on.
Joten tehdään tämä.
Ensinnäkin haluan esitellä hyvin yksinkertainen asia, että olemme ei käytetty tähän mennessä,
mutta näet sen satunnaisesti koodia.
Tämä on se, mitä kutsutaan yleisesti vakio.
Joten se on vakiona siinä mielessä, että tämä arvo ei koskaan muutu.
Ihmisen yleissopimus luotaessa vakio on käyttää kaikkia pääomaa
kirjeitä, juuri niin että se todella erottuu koodissa.
Ja erikois että käytät C # define.
Joten jos sanot # define sitten tilaa, niin sana jota haluat käyttää
jatkuva nimi, ja sitten arvo vakiona.
Joten ilmoitus, tämä eroaa määrittämällä jotain muuttuja.
Ei ole sama merkki.
Ei ole puolipiste.
Tämä on mitä yleensä kutsutaan esikäsittelijään direktiiviä, mutta enemmän
että toinen aika.
>> Nyt tämä luo muuttumaton arvo nimeltään tietokilpailuja, joiden todellinen
numeerinen arvo on 2.
Joten missä näet tietokilpailuja, tietokilpailuja, Tietokilpailut koko tämän tiedoston, se
vain numero 2.
Nyt, jos katson pääasiassa nyt katsotaanpas miten tämä toimii.
Aluksi se näyttää hieman arvoituksellisesti.
Mutta se kaikki on kamaa viikolla yksi.
Kysy käyttäjä arvosanoja.
Miten teemme tämän?
No, rivi 22 -
Tämä on todella mehukas osa -
Julistan float, mutta ei vain yhden float.
Olen julistaa pikemminkin joukko liukuluvuiksi.
Muuttuja on menossa kutsutaan laatuja, kuten ehdotetun tässä.
Mutta vain osa uuden syntaksin sitten ovat nämä hakasulkeita, se
että olen sanonut float arvosanoja ja sitten alkusulkumerkki ja sitten numero.
Ilmoitus, jos tämä on vakio, tämä on aivan kuten me teimme tämän.
Tämä tarkoittaa hei tietokone, anna minulle kaksi kellukkeet ja mennään yhdessä soittaa
niitä laatuja.
Tämä on toisin kuin paljon työläs prosessi tällä tavoin.
Float Grade1, kellua Grade2, ja niin edelleen.
Joten array voimme toteuttaa tätä ajatusta, mutta paljon vähemmän messily vuonna
siten, että voimme kirjoittaa yksi rivi koodia sijasta, eli 16 16
viikolla lukukausi.
Joten en halua koodata 2 koska jos ajattelee tästä nyt
loogisesti - Oletetaan ensi vuonna CS50 muutoksia 3 tietokilpailuja sijaan.
Ja minulla oli numero 2 täällä.
Minulla oli numero 2 täällä.
Se tulee hyvin ikävä ja erittäin helppo tyriä ja vahingossa muuttaa
yksi arvo on 3 ja kaipaamaan joitakin muita arvoa 2.
Joten aion vaan abstrakteja tämän pois ja käyttää tätä jatkuvaa, että sen
Nimensä koskaan muutu.
Ja nyt, olipa meillä on erilaisia ​​tietokilpailuja tänä vuonna tai ensi-I
vain täytyy vaihtaa se yhteen paikkaan, täällä ylhäällä.
>> Niin, että kaikki vakio on.
Myös uusi käsitteellinen ominaisuus on se, että joukko.
Joten hakasuluissa anna minulle monia kellukkeet ja antaa minulle kollektiivisesti
soittaa heille arvosanoja tänne.
Joten nyt katsotaanpas mitä aion tehdä.
Täällä linjalla 24 on alku ja silmukka.
Tämä ei oikeastaan ​​mitään fancy.
Se vain käyttää tietokilpailut sijasta kovakoodatuilla numero.
Mutta ei ole mitään älyllisesti eri siellä viime viikolla.
Tämä on vain printf.
So printf ("Quiz lukumäärä% d% d"), koska haluan vain tulostaa antaa minulle tietokilpailu
numero yksi kaksi ja kaksi kahden.
Joten tämä on puhtaasti esteettinen juttu.
Mutta mielenkiintoinen osa on nyt linjassa 27.
Jotta täyttää toinen paikkamerkit liukulukuja
arvo, sinä taas käyttää hakasulkeissa.
Tässä tapauksessa, olen käyttäen i koska tämä silmukka on aloitettu i vastaten
mitä arvoa, ilmeisesti?
0.
>> Joten ensimmäistä iterointia tämän silmukan, se on ikään kuin minä
kirjoitin tämän koodin.
Mutta toisen iteroinnin tämän silmukan, se on ikään kuin minä
kirjoitin tämän minun koodi.
Mutta se, että olen käyttäen muuttuja on täydellinen, koska nimi
ehdottaa, se vaihtelee sen arvo jokaisen iteraation.
Joten olen täyttämällä tämän array yksi paikalla kerrallaan.
Mitä tämä array näyttää?
No, syy piirsin tämän super yksinkertainen suorakulmio ruudulla täällä
ennen oli tästä syystä.
Array on vain kimpale muistin seurasi toinen kimpale muistia,
seurasi toinen kimpale muistia, ja niin edelleen.
Joten jos minun joukko on kooltaan 2, tässä tapauksessa täällä, en tekisi mukaan
kirjoittamalla minun tietokilpailu tulokset, kuin täällä.
Sain 100 tässä yksi.
Ja sitten sain 99 tässä yksi.
Sitten tämä muisti ei välttämättä edes saa käyttää, koska olen vain pyytänyt
tietokone erilaisia ​​kooltaan 2.
Nämä neliöt ovat edelleen olemassa.
Oikea?
Sinulla on vielä kaksi gigatavua muistia, vaikka olet vain
pyytää kahden kelluu.
Joten ajatus paneelit on, että tietokone vie palan muistia
ja sitten jakautuu niiden paloitellun takaisin takaisin takaisin takaisin.
Ja jotta kaikki array on.
Se on yhtenäinen kimpale muistia, jonka sisällä voit laittaa asioita.
>> Nyt tämä tapahtuu silloin tehdä vain joitakin tylsää aritmeettinen.
Jos minä selaa täällä, tässä minä sitten iteroida yli array.
Olen keksiä summattu kaikki arvot array.
Ja sitten käytän kierroksen toimintoa täällä todella tehdä
Yhteenvetona jaettuna tietokilpailuja.
Mutta minäpä heilutella kättäni tuohon koska tavallaan tarpeeksi aritmeettinen nyt.
Mutta kaikki tämä tekee minulle lopulta on laskemisessa keskimäärin.
Joten ensimmäinen tietokilpailu plus toinen tietokilpailu, jaettuna 2, ja sitten tulostus
se niin int.
>> Mutta katsotaanpa nyt siirtymistä eri esimerkin nimeltään merkkijono1,
joka maalaa samanlaisen kuvan, mutta käyttäen merkkijonoja.
Anna minun mennä eteenpäin ja yksinkertaistaa tämä vain hetken.
Ja anteeksi sisennyksen nyt.
Ilmoitus vastaa 19 tämän esimerkin, saan merkkijono käyttäjältä.
Mutta huomaa, mitä olen seuraavaksi tekemässä linjat 22 eteenpäin.
Olen oikeastaan ​​iteroimalla i: jopa - ja tämä on uusi temppu -
strlen, merkkijonon pituus.
Tämä toiminto tulee C että jos ohitat sen merkkijono, se kertoo
kuinka monta merkkiä on merkkijonon.
Siinä kaikki.
Se, että se on strlen sijasta merkkijonon pituus on vain koska se on
ytimekkäämpi.
30 vuotta sitten, ihmiset pitivät kirjoittaa asioita niin ytimekkäästi kuin mahdollista.
Joten olemme pitäneet kyseisen yleissopimuksen täällä.
i + + tarkoittaa vain kasvattaa i jokaisen iteraation.
Ja nyt huomaa, mikä on todella mielenkiintoinen.
Joten linja 24, sanon tietokone, anna minulle merkki, kahdeksan
bittiä, ja kutsuvat sitä c.
Mutta mikä on tämä oikealla puolella sanovat?
Englanti, mitä se edustaa?
[Kuulumattomissa]
DAVID J. MALAN: Aivan.
Anna minulle ensimmäisen merkin jono.
Tai yleisemmin, anna minulle i. merkin jono.
Ja ymmärtää sitä tärkeää nyt, että tietotekniikan tutkijoita, olemme todella
laskettuna 0.
Sinulla ei ole harkintavaltaa nyt alkaa tehdä tätä.
Nyt sinun täytyy käyttäytyä mukaisesti tietokoneen odotukset ja
laskea nollasta, koska [0] tulee olemaan ensimmäinen
merkin merkkijono.
[1] tulee olemaan toinen.
[2] tulee olemaan kolmas, ja niin edelleen.
Joten tämä ohjelma, jos kääntää se - tämä on jälleen merkkijono1.
>> Joten tee merkkijono1.
Ja nyt minä ajaa merkkijono1 minun pääteikkunassa.
Se odottaa syötteitä, joten aion kirjoittaa vaikkapa David.
Enter.
Ja nyt se tulostaa David kaikki eri riveille, koska
huomaa, mitä olen tekemässä.
Olen tulostetaan yksi merkki kerrallaan.
Nyt emme aio mennä yksityiskohtiin tänään tätä.
Mutta poistin hetki sitten tämän tarkistuksen täällä.
On käynyt ilmi, että jos käyttäjä on huonosti, vastavuoroisuus, tai vain
sekava, voit itse pysty antamaan merkkijono melko pitkään.
Jos osut väärään näppäintä, saatat antaa
no string ollenkaan.
Tai jos olet ilkeä, saatat yrittää liittää vuonna gigatavu verran
essee täyttämään tämän merkkijono.
Ja jos tietokone muisti loppuu, käy ilmi, että olemme menossa
saada takaisin tätä erityistä arvoa kutsutaan null.
Joten nyt vain tietää, että tämä on erityinen arvo nimeltä null että
antaa meille mahdollisuuden tarkistaa, kun olemme muisti, muun muassa.
>> Mutta jos avaan nyt merkkijono2, havaitaan yksi ero täällä.
Havaitaan yksi ero täällä merkkijono2.
Kanssa merkkijono2, tämä silmukka on hieman erilainen.
Saanen poistaa nollat ​​jotta voimme puhua niistä toisen kerran.
Mutta mitä erilaista on silmukka tällä kertaa?
Ja voin palata edellisen esimerkin.
Joten se versio kaksi.
Tämä on versio yksi.
Yksi, kaksi, yksi kaksi.
Joten strlen puhelu on missä?
Se on ensimmäinen osa on silmukka.
Mitään ajatuksia siitä, miksi teen tätä?
Joo.
[Kuulumattomissa]
DAVID J. MALAN: Eli emme soita funktio joka ikinen kerta.
Aivan.
Muistamme Silmukoiden että he super yksinkertainen kun tavallaan
ymmärtävät, että tämä on Alustuksen
kunnossa, ja päivityksen.
Ongelmana on, että ehto tapahtuu jokaisella
iterointia silmukan.
Ja niin tässä esimerkki tästä, mikä on pahaa siitä
että tämä on minun ehto?
Soitat strlen uudestaan ​​ja uudestaan ​​ja uudestaan.
Mutta kun olen kirjoittanut DAVID, pituus merkkijonon on viisi.
Ja se ei aio muuttaa jokaisen iterointia silmukan, koska
merkkijono on edelleen D-A-V-I-D. Joten tämä on vihje mitä on tulossa
yhä tärkeämpi idea tunnetaan suunnittelu päätöksen, jossa - eivät vain
tehdä tietokoneen tehdä turhaa työtä.
>> Aivan kuten esimakua PSET 2, PSET 2 Standard Edition on
menossa haastaa sinut todella toteuttaa joitakin useita ciphers, joidenkin
määrä salausalgoritmeja, joten voit sekä salata ja purkaa
salaisia ​​viestejä, aivan kuten yksi Ralphie siellä puretaan.
Vuonna hakkeri painos PSET 2, aiomme mennä hieman pidemmälle.
Aiomme ojentaa sinulle tiedoston todellinen tietokonejärjestelmä, joka sisältää
läjän käyttäjätunnusten ja todellisten salattuja salasanoja, ja haaste
sillä hakkeri painos tulee olemaan murtaa nämä salasanat ja kuva
mitä salausta tai mitä salaisuus on käytetty todella
tuottaa nämä salasanat.
Ja me aiomme tehdä tämän käyttämällä uutta ominaisuutta täällä C että minä annan
juuri demon, joka tunnetaan komentorivin argumentteja.
>> Joten se kääntyy pois, kuten jotkut teistä ehkä nähnyt jaksossa tai oppikirjoissa,
tärkein ei aina tarvitse olla mitätön suluissa.
On käynyt ilmi, että pääasiassa voidaan kirjoittaa myös näin, kaksi argumentteja,
argc ja argv, missä argc on sanojen määrä, jotka kirjoitat jälkeen
Ohjelman nimi on komentorivi.
Ja argv on todellisia sanoja.
Ja kuten hakasulkeita siellä ehdottaa, argv on ilmeisesti joukko.
Se tulee olemaan merkkijono jälkeen merkkijono jälkeen merkkijono muistiin.
Joten mitä aiomme pystyä tekemään, alkaen PSET 2, on
jotain tällaista.
Jos teen argv1, joka on esimerkki tulemme takaisin maanantaina, ja suorita
se, huomaat että se ei näytä mitään vielä.
Se vain tulostaa omalla nimellään.
Mutta jos sanon hyvästit luokka, huomaa, että tämä ohjelma ilmeisesti toistetaan
enemmän kuin sanat, joita kirjoitettuna kehotteeseen.
Ja keinoja, joilla voimme päästä sanoista että käyttäjä on
kirjoitettuna kehote muuttamalla tärkein alkaen tänä viikonloppuna, alkaen int
main (void) int main (argc, argv).
Ja näin syntyy komentoriviargumentteja.
Ja kun saat todella hienostunut tässä, voit kirjoittaa
todella trippy ohjelmia, kuten tämä tässä, joka menee edellä ja sen jälkeen
joitakin toimintoja olemme tehneet tähän mennessä, mutta kaikki melko voimakas.
>> Joten me lähdemme tästä tällä näytöllä.
Ja näemme sinut maanantaina.