1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [Viikko 2, jatkuu] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Harvardin yliopisto] 3 00:00:04,220 --> 00:00:06,880 [Tämä on CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Selvä. Tämä on CS50, ja tämä on viikon 2 lopussa. 5 00:00:10,990 --> 00:00:14,410 Jos odottaa nälkäinen näihin aikoihin huomenna, 6 00:00:14,410 --> 00:00:18,620 tietää, että aiomme koolle niin pieni ryhmä huomenna, torstaina 13:15. 7 00:00:18,620 --> 00:00:21,360 On tämä URL täällä jos haluat vastata kutsuun. 8 00:00:21,360 --> 00:00:26,740 Avaruus on rajoitettu, joten anteeksi jos lomake on täytetty mennessä täytät tätä ulos. 9 00:00:26,740 --> 00:00:29,300 Toinen URL kuitenkin, että saattaisi olla kiinnostunut tämä. 10 00:00:29,300 --> 00:00:32,369 Vain noin kuukauden ajan, kurssi tulee olemaan saatavilla 11 00:00:32,369 --> 00:00:36,890 kaikki laajemmin kautta EDX, jonka kautta ihmiset Internetissä voi seurata pitkin, 12 00:00:36,890 --> 00:00:39,380 harjoittaa tietenkin melko aktiivisesti, itse asiassa. 13 00:00:39,380 --> 00:00:42,270 He käyttää CS50 Appliance ja CS50 Keskustele 14 00:00:42,270 --> 00:00:45,490 ja suurin osa eri ohjelmistoja, joita meillä jo on käytössä tällä lukukaudella. 15 00:00:45,490 --> 00:00:48,710 Ja yksi aloitteista haluaisimme ottaa koska kokeilu tänä vuonna 16 00:00:48,710 --> 00:00:51,930 on nähdä, kuinka paljon sisältöä voimme kääntää 17 00:00:51,930 --> 00:00:53,960 muihin puhutut ja kirjoitetut kielet. 18 00:00:53,960 --> 00:00:57,500 Joten jos saatat olla kiinnostunut osallistumaan hankkeeseen 19 00:00:57,500 --> 00:01:02,270 jonka annamme Englanti selostukset ja tekstitykset kurssin luennot 20 00:01:02,270 --> 00:01:05,450 ja shortsit sekä seminaareja ja osat ja vastaavat, 21 00:01:05,450 --> 00:01:08,200 jos puhut sujuvaa tai kirjoittaa sujuvasti muulla kielellä, 22 00:01:08,200 --> 00:01:12,290 me haluamme harjoittaa sinua tässä hankkeessa, jossa otat yhteen tai useampaan videoita, 23 00:01:12,290 --> 00:01:15,200 kääntämällä ne kieli tiedätte varsin hyvin. 24 00:01:15,200 --> 00:01:18,700 >> Annan teille tunteen käyttöliittymä on tämä web-pohjainen käyttöliittymä 25 00:01:18,700 --> 00:01:22,090 että me voidaan käyttää joka luo lähinnä UI näin. 26 00:01:22,090 --> 00:01:24,290 Tämä minua opettamaan joitakin Halloween sitten 27 00:01:24,290 --> 00:01:27,390 ja oikealla puolella on musta vieressä näiden aikaleimat, 28 00:01:27,390 --> 00:01:31,210 näet eri asioita, jotka tulivat suustani, että päivä, 29 00:01:31,210 --> 00:01:34,850 ja sitten sen alla voit kääntää jotain muuta kieltä 30 00:01:34,850 --> 00:01:38,690 mitä kartoitus välillä, tässä tapauksessa, Englanti ja vaikkapa espanja. 31 00:01:38,690 --> 00:01:40,440 Joten se on todella hyvin käyttäjäystävällinen työkalu. 32 00:01:40,440 --> 00:01:43,370 Voit kelata ja nopeasti eteenpäin erittäin helposti näppäimistöltä. 33 00:01:43,370 --> 00:01:47,490 Joten jos haluat osallistua tähän kokeiluun ja pyydä sanoja nähdä ja lukea 34 00:01:47,490 --> 00:01:51,850 mukaan mahdollisesti tuhannet ihmiset siellä, ota rohkeasti osallistua. 35 00:01:51,850 --> 00:01:54,350 Yksi sana pennun maanantaista. 36 00:01:54,350 --> 00:02:00,350 Ettei olemme lähettäneet liian pelottava sanoma, tee ymmärtää, että virka ehdottaa 37 00:02:00,350 --> 00:02:03,300 ja osat viittaavat siihen, suunnittelu tietenkin on hyvin paljon 38 00:02:03,300 --> 00:02:07,360 pitänyt opiskelijoiden yhteistyötä ja puhuvat työn kautta ongelma sarjaa 39 00:02:07,360 --> 00:02:11,260 ja ongelmia yhdessä, ja oikeastaan ​​linja vain tulee alas, 40 00:02:11,260 --> 00:02:16,010 uudelleen, työtä olet lopulta lähettää pitäisi olla oma. 41 00:02:16,010 --> 00:02:18,860 Ja niin aivan rehellisesti, että virka on täysin normaalia, 42 00:02:18,860 --> 00:02:22,240 se on täysin odotettavissa jopa olla chattailuun joitakin ystäväsi vieressäsi. 43 00:02:22,240 --> 00:02:24,370 >> Jos hän kamppailee joitakin aihe ja et pidä, 44 00:02:24,370 --> 00:02:27,940 "No, minä annan sinulle Hanko joidenkin koodirivin että kirjoitin, että" on hienoa, 45 00:02:27,940 --> 00:02:31,250 näin tapahtuu, ja se on hyvin paljon suotuisa, luulen, jossa oppimisprosessi. 46 00:02:31,250 --> 00:02:36,750 Jos linja saa ylitti on, kun pää on tavallaan kallellaan täällä aivan liian monta sekuntia 47 00:02:36,750 --> 00:02:41,160 tai minuuttia, jotka todella ovat vain olleet Unblocking mahdollisuus ystäväsi, 48 00:02:41,160 --> 00:02:44,160 ja varmasti sitten kun vaihdetaan sähköpostitse ja Dropbox ja muut vastaavat, 49 00:02:44,160 --> 00:02:45,640 sielläkin on viiva. 50 00:02:45,640 --> 00:02:48,620 Joten kaikin keinoin viihtyvät ja rohkaistava jutella ystävien kanssa 51 00:02:48,620 --> 00:02:52,810 ja luokkatoverit noin psets ja yhä vain ymmärrä, että mitä lopulta jättää 52 00:02:52,810 --> 00:02:57,340 pitäisi oikeastaan ​​olla tuotteen oman luomisen eikä joku muu. 53 00:02:57,340 --> 00:03:00,490 Ja niin yksi domain-erityisiä ongelmia pset2, 54 00:03:00,490 --> 00:03:04,740 joka tulee myöhään huomisiltana, on sukeltaa maailmaan salauksen, 55 00:03:04,740 --> 00:03:08,970 mikä on taidetta salaamisesta tai muokkaamisella tietoa, 56 00:03:08,970 --> 00:03:12,600 ja tämä koskee kuitenkin viime kädessä maailman turvallisuutta. 57 00:03:12,600 --> 00:03:16,560 Nyt turvallisuus useimmille meistä tulee muodossa melko arkipäiväinen mekanismeja. 58 00:03:16,560 --> 00:03:19,050 Kaikilla meillä on käyttäjätunnuksia ja salasanoja, 59 00:03:19,050 --> 00:03:23,450 ja meillä kaikilla on erittäin huono käyttäjätunnuksia ja salasanoja, todennäköisesti. 60 00:03:23,450 --> 00:03:28,240 >> Jos salasana on sama useita sivustoja, se on luultavasti ole paras idea, 61 00:03:28,240 --> 00:03:30,070 kuten tulemme keskustelemaan kohti lukukauden lopussa. 62 00:03:30,070 --> 00:03:34,720 Jos salasana on kirjoitettu tarralapulle - no vitsi - Näytöstä 63 00:03:34,720 --> 00:03:38,350 sekin ole välttämättä paras malli mutta varsin yleinen ilmiö. 64 00:03:38,350 --> 00:03:42,470 Ja jos et käytä salausta salata salasanojen, 65 00:03:42,470 --> 00:03:44,210 ne ovat erityisen haavoittuvia. 66 00:03:44,210 --> 00:03:47,270 Joten jos luulet on erittäin nokkela pyytämällä piilotettu Word 67 00:03:47,270 --> 00:03:49,910 jonnekin kiintolevyllesi, että on kaikki salasanat 68 00:03:49,910 --> 00:03:53,670 mutta se on kansiossa että kukaan menee katsomaan, sekin ole kovin turvallinen mekanismi. 69 00:03:53,670 --> 00:03:56,990 Ja niin mitä pset2 esittelee tämä taidetta salauksen 70 00:03:56,990 --> 00:04:02,010 ja salaus tietoa, jotta asiat kuten salasanat ovat turvallisempia. 71 00:04:02,010 --> 00:04:05,790 Konteksti tässä on, että epävarma tieto 72 00:04:05,790 --> 00:04:07,930 tulee mahdollisuus salata sitä ja muokkaamaan sitä. 73 00:04:07,930 --> 00:04:11,470 Ja niin tämä, esimerkiksi, on esimerkki salatun viestin. 74 00:04:11,470 --> 00:04:14,700 Tämä sanoo jotakin Englanti, mutta se ei selvästikään ole täysin selvä. 75 00:04:14,700 --> 00:04:18,279 Ja me tulemme täysi ympyrä tänään erottaa toisistaan, mitä tämä salainen viesti tässä on. 76 00:04:18,279 --> 00:04:23,490 Mutta todellisessa maailmassa tietokoneiden, asiat eivät edes näyttävät ne saattavat olla Englanti lauseita. 77 00:04:23,490 --> 00:04:28,430 Esimerkiksi tämä on mitä saatat löytää standardi Linux tai Mac tai UNIX-tietokoneesta 78 00:04:28,430 --> 00:04:32,070 on tiedosto oli aikoinaan nimeltään salasana tiedosto. 79 00:04:32,070 --> 00:04:34,200 >> Nykyään se on siirretty muualle. 80 00:04:34,200 --> 00:04:39,210 Mutta jos tarkastellaan oikeassa paikassa järjestelmään, näet paitsi käyttäjätunnuksesi 81 00:04:39,210 --> 00:04:43,400 tai muiden ihmisten järjestelmään, mutta näet salatun version salasanansa. 82 00:04:43,400 --> 00:04:47,980 Itse asiassa sana krypta siellä ehdottaa, että seuraavat jutut on salattu, 83 00:04:47,980 --> 00:04:52,680 ja tämä sarja sattumanvaraiselta kirjaimia ja merkkejä ja numeroita, ja niin edelleen 84 00:04:52,680 --> 00:04:56,480 voidaan purkaa vain yleisesti tietää joitakin salaisia ​​- 85 00:04:56,480 --> 00:04:58,840 salainen sana, salainen numero - 86 00:04:58,840 --> 00:05:03,160 ja näin todellakin taidetta salauksen lopulta kuihtuu luottaa jonkinlainen 87 00:05:03,160 --> 00:05:05,650 ja tietäen jotain, että joku muu ei. 88 00:05:05,650 --> 00:05:10,090 Joten me tutkia tätä hieman tarkemmin tänään ja PSET tulla. 89 00:05:10,090 --> 00:05:12,200 Ja nyt sana pass / fail. 90 00:05:12,200 --> 00:05:15,360 Varsinkin kun jotkut teistä sukelsi pset1, Appliance, 91 00:05:15,360 --> 00:05:19,080 ja aivan uusi maailma itse, ymmärtää, että pettymyksiä ja sekaannusta 92 00:05:19,080 --> 00:05:21,700 ja vain tekniset vaikeudet ovat melko odotettavissa, 93 00:05:21,700 --> 00:05:24,180 erityisesti ensimmäisen PSET, missä on vain niin paljon uutta, 94 00:05:24,180 --> 00:05:27,730 vain tottuminen ls ja cd ja kaikki nämä mystistä komennot 95 00:05:27,730 --> 00:05:33,050 ja uuteen ympäristöön, ja se on erillään varsinaisesta materiaalista ja ohjelmoinnin itse. 96 00:05:33,050 --> 00:05:36,940 Niin ymmärtää myös, että on varmasti virka että olemassa tukirakenne. 97 00:05:36,940 --> 00:05:38,880 >> Osiot alkaa tulevana sunnuntaina. 98 00:05:38,880 --> 00:05:42,960 Mutta mikä tärkeintä, jos et tunne vain, että tämä ei ole sinulle maailman, 99 00:05:42,960 --> 00:05:44,710 ymmärtävät, että se todella vain ottaa aikaa. 100 00:05:44,710 --> 00:05:48,600 Ja jos se ei tätä tilaisuutta vuotta sitten minulle ottaa luokan hyväksytty / hylätty, 101 00:05:48,600 --> 00:05:50,990 rehellisesti, en olisi ikinä edes asettaa jalka luokkahuoneessa. 102 00:05:50,990 --> 00:05:53,690 Ja voit muuttaa saakka, sanovat, viides maanantaina tietenkin 103 00:05:53,690 --> 00:05:58,280 joten jos olet reunalla nyt ymmärtää, että mieluummin kuin pää johonkin toiseen vesille kokonaan, 104 00:05:58,280 --> 00:06:01,260 ei varmasti harkita vain vaihtamalla hyväksytty / hylätty. 105 00:06:01,260 --> 00:06:04,570 Jälleen, ei ole oikeastaan ​​tätä kulttuuria täällä Harvardissa ottaa asioista hyväksytty / hylätty 106 00:06:04,570 --> 00:06:08,670 koska jokainen todella haluaa saavuttaa tai ylittääkseen, 107 00:06:08,670 --> 00:06:11,130 mutta suoraan sanottuna tämä on loistava tapa yrittää jotain 108 00:06:11,130 --> 00:06:16,720 jotka eivät ehkä ole tuttuja sinulle, ja voit päätyä tekemään useimmissa tapauksissa varsin hieno, 109 00:06:16,720 --> 00:06:18,210 ehkä paljon teidän yllätys. 110 00:06:18,210 --> 00:06:20,980 Ja konkreettisemmin, mitä luulen hyväksytty / hylätty yleensä tekee, 111 00:06:20,980 --> 00:06:22,940 varsinkin kun olet ehkä kokenut pset0, 112 00:06:22,940 --> 00:06:26,560 Jos laitat 10 tuntia, 15 tuntia, 25 tuntia johonkin PSET 113 00:06:26,560 --> 00:06:29,920 ja olet vain hakkaa päätäsi seinään ja se alkaa erittäin myöhään yöllä 114 00:06:29,920 --> 00:06:33,950 mutta olet ottanut PSET 90% ja te vain voi selvittää yksi asia, 115 00:06:33,950 --> 00:06:36,520 hyväksytty / hylätty todella vie reunan pois luokan näin, 116 00:06:36,520 --> 00:06:39,100 jossa voit tavallaan onneksi sanoa, "Okei, tiedän, että se ei ole täydellinen, 117 00:06:39,100 --> 00:06:42,350 mutta olen työskennellyt my ass off tästä, olen melko tyytyväinen, jos se päätyi " 118 00:06:42,350 --> 00:06:44,850 ja jotka täyttävät odotukset hyväksytty / hylätty. 119 00:06:44,850 --> 00:06:47,540 Joten älä pidä mielessä. Selvä. 120 00:06:47,540 --> 00:06:50,520 >> Joten ne teistä, jotka ovat taistelleet käyttää Harvardin yliopiston Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 tietää, että siellä on CS50 SSID, Wi-Fi-yhteys, kelluva noin 122 00:06:54,780 --> 00:06:56,490 että saatat olla parempi onni. 123 00:06:56,490 --> 00:07:00,130 Se on vähän ironista, että salasanaa, jos haluat yrittää yhdistää tähän 124 00:07:00,130 --> 00:07:08,350 paremmin nopeudet - ja meille se ole parempi - on 12345, kaikki tavalla jopa 8 125 00:07:08,350 --> 00:07:10,910 koska 8 on turvallisempi kuin 5. 126 00:07:10,910 --> 00:07:16,910 Joten jos tarvitset Wi-Fi-salasanan, yhteyden CS50 langattomasti täällä, 12345678, 127 00:07:16,910 --> 00:07:20,380 ja viesti CS50 Keskustele jos sinulla on vielä ajoittaisia ​​yhteysongelmia, 128 00:07:20,380 --> 00:07:25,420 ja me ilmoitamme, että vallanpitäjät tietävät tämän tilan. Selvä. 129 00:07:25,420 --> 00:07:32,230 Joten nopea teaser, erityisesti niille teistä, jotka ovat fani poikia tai tyttöjä kaiken Apple. 130 00:07:32,230 --> 00:07:37,460 Mitä minä kaivetaan muutama vuosi sitten oli tämä tiedosto täällä, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 vain eräänlainen antaa konkreettisempi ja monimutkaisempia 132 00:07:39,930 --> 00:07:42,560 jotkut enemmän perus C-ohjelmia olemme kirjallisesti. 133 00:07:42,560 --> 00:07:46,910 Joten olen avannut tämän tiedoston, iUnlock.c. Se on saatavissa Luennot sivulla tänään. 134 00:07:46,910 --> 00:07:49,810 Vasemmalla puolella näet pitkän listan toimintoja. 135 00:07:49,810 --> 00:07:53,230 Joten kaveri joka kirjoitti tämän kirjoitti jopa paljon toimintoja, enemmän kuin vain tärkeimmät. 136 00:07:53,230 --> 00:07:57,340 Hän käytti koko joukko kirjastoja täällä, ja jos alamme selata, 137 00:07:57,340 --> 00:08:04,890 Mitä tämä oikeastaan ​​on on ensimmäinen, uskon, crack alkuperäisen iPhonen. 138 00:08:04,890 --> 00:08:09,830 >> Kun halusi karkaaminen alkuperäinen iPhone, joka tarkoittaa untether se AT & T 139 00:08:09,830 --> 00:08:13,710 ja itse asentaa erityisiä ohjelmistoja sitä ja tehdä asioita, joita Apple ei halua ihmisten tehdä, 140 00:08:13,710 --> 00:08:18,480 joku vei aikaa selvittää, miten ne voisivat hyödyntää ohjelmiston puutteita, 141 00:08:18,480 --> 00:08:22,690 virheitä, bugeja, Apple ohjelmisto, ja näin syntyi iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 että jos käännetty se tietokoneellesi ja asentaa sen päälle iPhone 143 00:08:26,760 --> 00:08:29,430 joka oli kytketty tietokoneeseen kautta, vaikkapa USB-kaapeli, 144 00:08:29,430 --> 00:08:32,450 Tämä antaisi sinulle hallinnollisia tai pääkäyttäjän oikeudet iPhonessa 145 00:08:32,450 --> 00:08:34,620 ja voit tehdä aika paljon mitä haluat. 146 00:08:34,620 --> 00:08:36,400 Ja niin siellä on ollut tämä kiehtova kissa ja hiiri-leikkiä 147 00:08:36,400 --> 00:08:39,340 välillä Apple ja muualla maailmassa erityisesti ne, kuten monet yritykset, 148 00:08:39,340 --> 00:08:43,350 yrittävät lukita niiden juttuja alas niin, että voit vain tehdä sen kanssa mitä he aikovat. 149 00:08:43,350 --> 00:08:47,360 Mutta kiitos ihmisiä kuin tämä ja ymmärrystä matalan tason yksityiskohdat - 150 00:08:47,360 --> 00:08:50,830 ja tässä tapauksessa C ohjelmointi - ja paljon tuttuja rakenteita 151 00:08:50,830 --> 00:08:55,280 että olemme alkaneet leikkiä, voit todella hyödyntää laitteiston 152 00:08:55,280 --> 00:08:59,250 tavalla näette eikä välttämättä jotkut yritystoimija. 153 00:08:59,250 --> 00:09:01,600 Niinpä esimerkiksi, minulla ei ole aavistustakaan, mitä tämä kaikki tekee, 154 00:09:01,600 --> 00:09:03,580 mutta GetVersion kuulostaa melko yksinkertainen, 155 00:09:03,580 --> 00:09:05,710 ja se näyttää tältä on toiminto, että tämä henkilö kirjoitti. 156 00:09:05,710 --> 00:09:09,250 Se vie jonkinlainen kokonaisluvun argumenttina, ei palauta mitään, 157 00:09:09,250 --> 00:09:13,710 mutta näyttää silmukan varten silmukka täällä ja jos tila, jos ehto tauko, 158 00:09:13,710 --> 00:09:16,770 ja jotenkin liittyy versionumerot jos selaa alaspäin 159 00:09:16,770 --> 00:09:19,650 vaikka monet näistä avainsanoista aiotaan uusia. 160 00:09:19,650 --> 00:09:22,590 Ja siellä paljon toimintoja täällä olemme koskaan nähneet ja ehkä koskaan näe 161 00:09:22,590 --> 00:09:24,350 aikana lukukauden. 162 00:09:24,350 --> 00:09:29,160 >> Lopussa päivän, se noudattaa samoja sääntöjä ja logiikkaa, että olemme pelannut toistaiseksi. 163 00:09:29,160 --> 00:09:34,340 Joten tämä on aivan liian vanha halki iPhoneen 3s tai 4s tai pian 5s näinä päivinä, 164 00:09:34,340 --> 00:09:38,830 mutta tiedän, että se on kaikki hyvin johdettu tässä maailmassa olemme sukelsi. 165 00:09:38,830 --> 00:09:42,280 Katsotaanpa katsomaan hieman yksinkertainen esimerkki: 166 00:09:42,280 --> 00:09:46,260 tämä vain saada lämmennyt joitakin syntaksia ja myös joitakin muita tietotyyppi 167 00:09:46,260 --> 00:09:48,910 että me olemme puhuneet, mutta eivät todellakaan nähnyt C. 168 00:09:48,910 --> 00:09:53,670 Tämä on tiedosto nimeltä positive1.c, ja kohti kommentit huipulla, 169 00:09:53,670 --> 00:09:56,070 tämä vain vaatii, että käyttäjä antaa positiivinen numero. 170 00:09:56,070 --> 00:09:59,910 Joten se on esimerkki do-while-silmukka, joka on mukava käyttäjälle interaktiivisten ohjelmien 171 00:09:59,910 --> 00:10:02,070 jossa sinun täytyy kertoa käyttäjälle tekemään jotain, 172 00:10:02,070 --> 00:10:05,530 ja jos ne eivät toimi yhteistyössä huudat niitä tai hylätä heidän panostaan. 173 00:10:05,530 --> 00:10:10,480 Asia kohtaan: aion tehdä linjat 19 kautta 24 174 00:10:10,480 --> 00:10:14,620 niin kauan kuin käyttäjä ei ole antanut minulle positiivinen numero. 175 00:10:14,620 --> 00:10:21,340 Tämä yksityiskohta täällä line 18, miksi Vakuutan n yläpuolella koko tämän silmukkaa rakentaa 176 00:10:21,340 --> 00:10:26,870 toisin kuin vieressä rivi 22, jossa olen todella kiinnostaa saada n? Joo. 177 00:10:26,870 --> 00:10:29,330 [Opiskelija] Scope. >> Joo, joten tämä asia soveltamisalan. 178 00:10:29,330 --> 00:10:31,770 Ja maallikon termein, mitä soveltamisala viittaa? 179 00:10:34,880 --> 00:10:41,560 Joo. >> [Äänetön opiskelijan vastausta] >> Voitteko puhua hieman kovempaa? 180 00:10:41,560 --> 00:10:45,440 [Opiskelija] Mistä voit käyttää tähän muuttujaan. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 Mistä voit käyttää tietty muuttuja. 182 00:10:47,610 --> 00:10:50,990 Ja yleensä nyrkkisääntö on tähän mennessä ollut, että soveltamisala joidenkin muuttujan 183 00:10:50,990 --> 00:10:56,140 määritellään viimeisimmän aaltosulkeita että olet nähnyt. 184 00:10:56,140 --> 00:11:03,070 >> Ja niin tässä tapauksessa, jos tein virheen julistamalla n verkossa 22, että linja toimisi. 185 00:11:03,070 --> 00:11:10,840 Haluaisin saada int, ja haluaisin laittaa sitä, että muuttujan n linjassa 22, 186 00:11:10,840 --> 00:11:17,060 mutta joka koodiriviä olisi nyt ei ole aavistustakaan, mitä puhun? >> [Opiskelija] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, ja se osoittautuu 24 sekä sillä tässä tapauksessa se jää ulkopuolelle aaltosulkeita. 188 00:11:23,840 --> 00:11:28,550 Joten vähän haittaa, mutta hyvin helposti ratkaistavissa yksinkertaisesti julistamalla muuttujan 189 00:11:28,550 --> 00:11:30,700 ulkopuolella toimintaa itse. 190 00:11:30,700 --> 00:11:32,760 Näemme myöhemmin tänään voit mennä pidemmälle 191 00:11:32,760 --> 00:11:34,940 ja voit jopa saada hieman laiska. 192 00:11:34,940 --> 00:11:39,660 Ja tämä ei ole suositeltavaa yleisesti, mutta voit jopa saada laiska 193 00:11:39,660 --> 00:11:44,150 ja laittaa vaihteleva maailmanlaajuisesti, niin sanotusti, ei sisällä on funktio, ei ole silmukan sisällä, 194 00:11:44,150 --> 00:11:49,800 mutta itse tiedosto, ulkopuolella kaikki toiminnot olet kirjoittanut, niin kuin tein täällä line 15. 195 00:11:49,800 --> 00:11:55,220 Tämä on yleisesti paheksutaan, mutta ymmärtää tämä on ratkaisu joskus muita ongelmia, 196 00:11:55,220 --> 00:11:56,910 kuten me lopulta nähdä. 197 00:11:56,910 --> 00:11:59,500 Joten nyt jätämme sen näin, mutta katsotaanpa jos voimme kirjoittaa tämän 198 00:11:59,500 --> 00:12:02,360 vain käynnistää ilmaista itseämme hieman eri. 199 00:12:02,360 --> 00:12:05,550 Tämä ohjelma vain olla selkeä, on positive1. 200 00:12:05,550 --> 00:12:11,980 Anna minun mennä eteenpäin tänne ja minun pääteikkunaan tehdä positive1, Enter. 201 00:12:11,980 --> 00:12:15,080 Kokoaa kunnossa. Aion ajaa positive1, Enter. 202 00:12:15,080 --> 00:12:19,250 Vaadin, että annat minulle positiivinen kokonaisluku. Sanon -1. Se ei toimi. 203 00:12:19,250 --> 00:12:22,340 0, 99. Se tuntuu toimivan. 204 00:12:22,340 --> 00:12:25,310 Ehkä ei kaikkein ankarimmat testi, mutta ainakin se on kiva järki tarkistaa 205 00:12:25,310 --> 00:12:27,100 että olemme oikealla tiellä. 206 00:12:27,100 --> 00:12:29,570 >> Joten nyt haluan mennä eteenpäin ja avata versio 2 tästä, 207 00:12:29,570 --> 00:12:32,800 ja mikä on eri jo? 208 00:12:32,800 --> 00:12:39,030 Se toteuttaa sama asia, mutta mitä hyppäämällä ulos selvästi erilaista tällä kertaa? 209 00:12:40,790 --> 00:12:47,090 Tämä bool vihreänä. Se on korostettuna vihreänä, tällä avainsanalla tunnetaan bool, joka on tietotyyppi. 210 00:12:47,090 --> 00:12:50,510 Se ei tule rakennettu kaikki versiot C. 211 00:12:50,510 --> 00:12:52,650 Sinun täytyy sisällyttää erityinen kirjasto. 212 00:12:52,650 --> 00:12:56,460 Meidän tapauksessa olen mukana CS50 kirjastoon jotta meillä on pääsy bool. 213 00:12:56,460 --> 00:12:59,860 Mutta linja 18, meillä näyttää olevan totuusarvon täällä kutsutaan kiitollinen. 214 00:12:59,860 --> 00:13:02,190 Olen voinut soittaa tätä kaikkea, mutta kutsuin sitä kiitollinen 215 00:13:02,190 --> 00:13:04,750 vain eräänlainen välittää joidenkin semanttinen. 216 00:13:04,750 --> 00:13:07,700 Joten aluksi linja 18, en ilmeisesti ole kiitollinen 217 00:13:07,700 --> 00:13:12,230 koska Boolen arvo kiitollinen alustetaan false linjassa 18. 218 00:13:12,230 --> 00:13:16,500 Ja sitten näyttää mitä olen tehnyt täällä linjat 21 kautta 23 219 00:13:16,500 --> 00:13:19,200 on Olen juuri sellainen uusiksi minun logiikkaa. 220 00:13:19,200 --> 00:13:26,100 Joten ei toiminnallisesti erilaisia, mutta linja 22 nyt voin tarkistaa jos int käyttäjä on antanut 221 00:13:26,100 --> 00:13:31,360 on suurempi kuin 0, niin en yksinkertaisesti muuttaa arvoa kiitolliset totta. 222 00:13:31,360 --> 00:13:35,590 Ja miksi niin? Koska linja 25, ilmeisesti aion tarkistaa kunnossa. 223 00:13:35,590 --> 00:13:39,760 Tee tämä silmukka taas kiitollinen on väärä. 224 00:13:39,760 --> 00:13:42,960 Joten ehdotin tätä vaihtoehtona versio 1 225 00:13:42,960 --> 00:13:47,050 koska se on ainakin hieman enemmän intuitiivinen ehkä se on hieman enemmän maadoitettu Englanti. 226 00:13:47,050 --> 00:13:51,980 Joten tee seuraavat kun et ole kiitollinen tai kun kiitollinen on väärä. 227 00:13:51,980 --> 00:13:56,220 Ja tälläkin kertaa en ilmeisesti välitä muistaa mitä käyttäjä kirjoitettu 228 00:13:56,220 --> 00:14:00,050 koska ilmoitus ei ole muuttujan n, niin todellisuudessa, pieni valkoinen valhe sinne. 229 00:14:00,050 --> 00:14:03,290 >> Toiminnallisesti ohjelma on hieman erilainen, kun saamme pohjaan se 230 00:14:03,290 --> 00:14:04,960 koska en muistaa mitä n on. 231 00:14:04,960 --> 00:14:09,120 Mutta halusin osoittaa myös tässä, että vaikka olemme nähneet GetInt 232 00:14:09,120 --> 00:14:13,780 ja GetString käytetään oikealla puolella yhtäläisyysmerkkiä toistaiseksi 233 00:14:13,780 --> 00:14:17,310 niin että muistamme arvon, teknisesti, se ei ole välttämätöntä. 234 00:14:17,310 --> 00:14:20,290 Jos jostain syystä et vain välitä tallentaa arvon, 235 00:14:20,290 --> 00:14:25,540 haluat vain tarkistaa arvoa, huomaat, että voimme yksinkertaisesti kirjoittaa tätä GetInt, 236 00:14:25,540 --> 00:14:27,320 auki Paren, sulje paren. 237 00:14:27,320 --> 00:14:30,570 Tämä toiminto tulee palauttaa arvo, kuten olemme sanoneet. 238 00:14:30,570 --> 00:14:32,220 Se tulee antamaan sinulle takaisin int. 239 00:14:32,220 --> 00:14:34,460 Ja niin jos henkisesti ajatella näin tapahtuu, 240 00:14:34,460 --> 00:14:38,190 kun kirjoitat 99, GetInt palauttaa numero 99, 241 00:14:38,190 --> 00:14:41,840 ja niin käsitteellisesti, se on ikään kuin minun koodi olisi todella tätä. 242 00:14:41,840 --> 00:14:45,950 Joten jos 99 on todellakin suurempi kuin 0, niin kiitollisia tulee tosi, 243 00:14:45,950 --> 00:14:50,810 Sitten line 25 tajuaa ooh, olemme tehneet koska olen nyt kiitollinen, 244 00:14:50,810 --> 00:14:53,970 ja linja 26, me yksinkertaisesti sanoa, "Kiitos positiivinen kokonaisluku!" 245 00:14:53,970 --> 00:14:55,960 mitä se sattui olemaan. 246 00:14:55,960 --> 00:14:59,140 Nyt tehdä hieman syntaktinen sokeri täällä, niin sanoakseni. 247 00:14:59,140 --> 00:15:04,670 Katsotaan jos voimme siivota tämä rivi 25 ja tämä kolmas ja viimeinen muunnos positive3. 248 00:15:04,670 --> 00:15:13,600 >> Huomaa ainoa ero on nyt mitä rivi koodia? >> [Opiskelija] 25. >> [Malan] Joo, 25. 249 00:15:13,600 --> 00:15:17,680 Ja olemme oikeastaan ​​nähnyt tämän tempun ihan vielä, mutta emme näe huutomerkki maanantaina 250 00:15:17,680 --> 00:15:21,070 joka tarkoittaa mitä? >> [Opiskelija] Ei. >> Ei tai negaatio. 251 00:15:21,070 --> 00:15:23,510 Joten ota totuusarvon ja kääntää sen arvoa. 252 00:15:23,510 --> 00:15:25,810 True tulee epätosi, väärä tulee totta. 253 00:15:25,810 --> 00:15:30,420 Joten tämä, ehdotan, on vielä hieman enemmän intuitiivinen tapa kirjoittaa koodia 254 00:15:30,420 --> 00:15:33,430 koska olen edelleen alustaa kiitollinen väärä, en vieläkään seuraavasti, 255 00:15:33,430 --> 00:15:36,010 Asetin kiitollinen totta, kun se aika tulee, 256 00:15:36,010 --> 00:15:40,880 mutta nyt voit todella vain kääntää tämän koodin suullisesti vasemmalta oikealle, 257 00:15:40,880 --> 00:15:45,630 while (! kiitollinen), koska bang tai huutomerkki tarkoittaa käsite ei 258 00:15:45,630 --> 00:15:47,580 joten vaikka ei kiitollinen. 259 00:15:47,580 --> 00:15:49,900 Joten jälleen, emme ole ottaneet käyttöön mitään uusia käsitteitä sinänsä. 260 00:15:49,900 --> 00:15:53,730 Puhuimme booleans takaisin, kun soitimme Scratch, 261 00:15:53,730 --> 00:15:56,720 mutta ymmärtää nyt voimme vain alkaa kirjoittaa meidän koodia monin eri tavoin. 262 00:15:56,720 --> 00:16:01,060 Joten varsinkin pset1 jos olet tavallaan kamppailee selvittää tapa kirjoittaa jotain ohjelmaa, 263 00:16:01,060 --> 00:16:04,340 kertoimet ovat olet onnea, koska siellä voi olla useita ratkaisuja 264 00:16:04,340 --> 00:16:06,110 että voit tapahtua heti. 265 00:16:06,110 --> 00:16:10,500 Esimerkiksi, tämä on vain 3 edes yksinkertaisimpia ohjelmia. Selvä. 266 00:16:10,500 --> 00:16:14,200 Ja nyt muistaa maanantaina lähdimme tähän merkille paluuarvot. 267 00:16:14,200 --> 00:16:18,450 Joten ensimmäistä kertaa kirjoitimme ohjelma, joka ei vain ole tärkein; 268 00:16:18,450 --> 00:16:22,550 se on myös oma custom-toiminto, jonka kirjoitin tänne. 269 00:16:22,550 --> 00:16:26,810 Joten linjan 31 kautta 34 Olen toteuttanut datakuutiofunktioiden. 270 00:16:26,810 --> 00:16:30,240 Se ei ole monimutkaista. Se on vain * * tässä tapauksessa. 271 00:16:30,240 --> 00:16:34,750 Mutta mikä on tärkeää on se, että otan syöttää muodossa 272 00:16:34,750 --> 00:16:39,180 ja olen palaamassa tuotoksen muodossa * *. 273 00:16:39,180 --> 00:16:43,560 Joten nyt minulla on kyky, aivan kuten käytin kanssa prinf yksin, 274 00:16:43,560 --> 00:16:47,240 kutsua tätä toimintoa kutsumalla datakuutiofunktioiden. 275 00:16:47,240 --> 00:16:51,970 >> Ja datakuutiofunktioiden vie jonkin tulon, ja kuution funktio palauttaa jonkin lähdön. 276 00:16:51,970 --> 00:16:56,960 Sen sijaan printf vain teki jotain. 277 00:16:56,960 --> 00:17:00,840 Se ei palauta mitään, että me välittänyt, vaikka sillä sivuun se ei palauta arvoa; 278 00:17:00,840 --> 00:17:03,110 juuri yleensä sivuuttaa sitä. 279 00:17:03,110 --> 00:17:06,510 Printf vain teki jotain. Se oli sivuvaikutus tulostamisen näytölle. 280 00:17:06,510 --> 00:17:11,770 Sitä vastoin tässä, meillä on kuutio-toiminto, joka itse asiassa palauttaa jotain. 281 00:17:11,770 --> 00:17:15,520 Joten ne tuntevat tämän, se on melko yksinkertainen idea. 282 00:17:15,520 --> 00:17:19,640 Mutta niille vähemmän tuttu ajatus kulkee Panosten ja saada takaisin lähdöt, 283 00:17:19,640 --> 00:17:21,950 Kokeillaan vain jotain erittäin yksinkertaista. 284 00:17:21,950 --> 00:17:25,490 Onko joku mukava tulossa lavalle hetkeksi? 285 00:17:25,490 --> 00:17:28,040 Sinun täytyy olla mukava kamera sinulle samoin. Niin? Okei. 286 00:17:28,040 --> 00:17:31,240 Mikä sinun nimesi on? >> [Opiskelija] Ken. >> Ken. Selvä. Ken, tule ylös. 287 00:17:31,240 --> 00:17:35,050 Ken tulee olemaan funktio lajittelee tässä. 288 00:17:35,050 --> 00:17:38,720 Mennään eteenpäin ja tehdä tämän. Mennään hieman fancy. 289 00:17:38,720 --> 00:17:42,260 Hauska tavata. Tervetuloa keskiöön. Selvä. 290 00:17:42,260 --> 00:17:46,640 Katsotaanpa osuma tätä painiketta täällä. Selvä. 291 00:17:46,640 --> 00:17:49,820 Joten tässä on moderni liitutaulu, 292 00:17:49,820 --> 00:17:53,470 ja mitä olen on tärkein ominaisuus, esimerkiksi 293 00:17:53,470 --> 00:17:56,460 ja minulla ei ole iPad kädessäni. 294 00:17:56,460 --> 00:17:59,710 >> En todellakaan muista, miten - No, en voi sanoa että. 295 00:17:59,710 --> 00:18:02,480 En todellakaan ole hyvä käsiala, 296 00:18:02,480 --> 00:18:05,520 Ja siksi haluan tulostaa jotain ruudulla minulle. 297 00:18:05,520 --> 00:18:12,040 Olen joka pääohjelma, ja aion saada sanot tästä 298 00:18:12,040 --> 00:18:16,720 kirjoittamalla se minun kanaa naarmu ja sitten kulkee sinun syöttää. 299 00:18:16,720 --> 00:18:20,400 Niin typerä vaikka tämä harjoitus on käsite toimintoja ja kutsuvan funktion 300 00:18:20,400 --> 00:18:22,400 ja palauttaa funktio todella kuihtuu tätä. 301 00:18:22,400 --> 00:18:26,260 Olen pääasiassa, olen juuri kirjoittanut printf, lainaus-lainaus päättyy jotain ruudulla, 302 00:18:26,260 --> 00:18:29,110 Olen käynnissä tätä ohjelmaa, ja niin pian kuin printf saa kutsutaan, 303 00:18:29,110 --> 00:18:32,880 se kestää yhden argumentin tai yhden parametrin joskus välillä lainausmerkkeihin. 304 00:18:32,880 --> 00:18:35,880 Tässä on tämän väitteen. Olen ohimennen sen Ken. 305 00:18:35,880 --> 00:18:39,020 Hän on musta laatikko kirjoittanut joitakin vuosia sitten 306 00:18:39,020 --> 00:18:41,510 että ilmeisesti vain osaa tulostaa asiat näytöltä. 307 00:18:41,510 --> 00:18:43,150 Niin suorittaa. 308 00:18:49,280 --> 00:18:51,280 Se ei ole paha. Erittäin hyvä. 309 00:18:51,280 --> 00:18:55,510 Joten nyt Ken on tehty täytäntöönpanovaltion. Tarvitseeko hän luovuttaa minulle mitään takaisin? 310 00:18:55,510 --> 00:18:57,470 Ei siksi, että olemme nähneet tähän mennessä. 311 00:18:57,470 --> 00:19:00,460 Jälleen printf ei oikeastaan ​​palata useita, mutta aiomme sivuuttaa, että nyt 312 00:19:00,460 --> 00:19:03,470 koska emme ole koskaan käyttäneet sitä. Niin, että se Ken. 313 00:19:03,470 --> 00:19:08,580 Ja nyt tärkein ottaa haltuunsa ohjelman uudelleen 314 00:19:08,580 --> 00:19:11,060 koska koodirivin, printf, tehdään täytäntöönpanovaltion. 315 00:19:11,060 --> 00:19:14,050 Ja me menemme noin tiemme, täytäntöönpanovaltion mitä muut linjat ovat siellä. 316 00:19:14,050 --> 00:19:17,320 Joten nyt yritetään hieman erilainen esimerkki. 317 00:19:17,320 --> 00:19:24,940 Tällä kertaa tässä mennään ensin tyhjentää näytön, ja tällä kertaa teemme cubing toiminto, 318 00:19:24,940 --> 00:19:27,080 mutta tällä kertaa odotan lähtöarvo. 319 00:19:27,080 --> 00:19:29,180 >> Joten mene eteenpäin ja tehdä tämän. 320 00:19:29,180 --> 00:19:35,790 Nyt minulla on rivi koodia, joka sanoo x saa kuution x. 321 00:19:41,370 --> 00:19:46,370 Koodirivin, Recall, näyttää tältä: x = cube (x); 322 00:19:46,370 --> 00:19:50,930 Joten miten tämä tulee toimimaan? Mennään eteenpäin ja antaa sinulle valkokangas uudelleen. 323 00:19:50,930 --> 00:19:54,070 Aion kirjoittaa nyt arvo x, 324 00:19:54,070 --> 00:20:01,400 joka tällä hetkellä sattuu olemaan, sanokaamme, 2 pitää se yksinkertainen. 325 00:20:01,400 --> 00:20:06,150 Olen kirjoittanut alas paperille arvon 2, joka on minun arvo x. 326 00:20:06,150 --> 00:20:10,920 Minä ojennan sen Ken. >> Ja minä vain kirjoittaa vastauksen? >> Joo, mennään vain kirjoittaa vastauksen. 327 00:20:12,760 --> 00:20:18,940 Okei. Ja nyt hän on takaisin minulle jotain. Perfect. Nice SEGUE. 328 00:20:18,940 --> 00:20:23,120 Joten nyt hän ojentaa minulle takaisin arvoon 8 tässä tapauksessa, ja mitä teen sen kanssa? 329 00:20:23,120 --> 00:20:28,250 Oikeastaan ​​- Katsotaan, saat tämän oikeuden. Mitä aion tehdä? 330 00:20:28,250 --> 00:20:33,440 Nyt aion ottaa tämän arvon ja todella säilytä samat bitit muistiin. 331 00:20:33,440 --> 00:20:35,170 Mutta huomaa olen sellainen kamppailee täällä. 332 00:20:35,170 --> 00:20:38,210 Olen hieman hämmentynyt, sillä mistä minä itse kirjoittaa arvo x, 333 00:20:38,210 --> 00:20:43,150 sillä mitä olen juuri tehnyt on fyysisesti käsin Ken paperinpala joka oli arvo 2, 334 00:20:43,150 --> 00:20:46,590 joka oli x, ja todellakin, se on juuri sitä, mitä tapahtui. 335 00:20:46,590 --> 00:20:50,210 Joten näyttää siltä, ​​että kun soitat toiminto ja kulkea argumentti 336 00:20:50,210 --> 00:20:53,290 kuten Hei, maailma tai ohitat argumentti, kuten 2, 337 00:20:53,290 --> 00:20:57,110 Yleisesti, olet ohimennen kopion tämän väitteen. 338 00:20:57,110 --> 00:21:00,730 Ja niin aivan kuten kirjoitin numero 2 täällä ja ojensi sen Ken, 339 00:21:00,730 --> 00:21:04,720 että täytyy tarkoittaa, että minulla on vielä kopio arvon 2 jonnekin 340 00:21:04,720 --> 00:21:08,890 koska todellakin, nyt kun olen saanut takaisin arvoon 8, minun täytyy mennä takaisin RAM 341 00:21:08,890 --> 00:21:12,130 ja oikeastaan ​​kirjoittaa 8 jossa minulla oli kerran numero 2. 342 00:21:12,130 --> 00:21:16,950 Niin visuaalisesti, muistakaa tämä käsite ohimennen, kirjaimellisesti, kopio arvosta. 343 00:21:16,950 --> 00:21:20,780 >> Ken tekee hänen asia, ojentaa minulle jotain - tässä tapauksessa arvo kuin 8 - 344 00:21:20,780 --> 00:21:24,980 ja sitten minun täytyy tehdä jotain, että arvo jos haluan pitää sen ympärillä. 345 00:21:24,980 --> 00:21:29,650 Joten tämä kaikki tulee takaisin on liiankin tuttu ennen pitkää. 346 00:21:29,650 --> 00:21:34,920 Kiitos paljon tästä demo täällä, Ken. [Aplodit] 347 00:21:34,920 --> 00:21:36,920 Hyvin tehty. 348 00:21:36,920 --> 00:21:42,690 Katsotaanpa, miten se lopulta liittyy joitakin funktion kutsuvan että olemme täällä. 349 00:21:42,690 --> 00:21:47,910 Anna minun mennä eteenpäin ja tuoda meidät takaisin cubing esimerkki tästä. 350 00:21:47,910 --> 00:21:53,300 Huomaa, että jos haluamme todella aloitat edelleen 351 00:21:53,300 --> 00:21:57,570 aiomme olla tietoinen siitä, että määrä x, joka on siirrellään täällä 352 00:21:57,570 --> 00:22:01,530 eroaa mitä todella hyväksyttiin toimintoon. 353 00:22:01,530 --> 00:22:05,880 Joten jälleen, tällä ohi kopio on tulossa varsin germane vain hetken. 354 00:22:05,880 --> 00:22:09,580 Katsotaanpa katsomaan jotain, joka ei ole aivan toimi oikein vielä. 355 00:22:09,580 --> 00:22:13,250 Aion mennä eteenpäin ja avata kolmas buginen esimerkki, jota on virheellinen luonteeltaan, 356 00:22:13,250 --> 00:22:18,550 ja sitä kutsutaan buggy3 ja se toteuttaa vaihtamalla toimintoa. 357 00:22:18,550 --> 00:22:25,110 Meillä on tässä tärkein ominaisuus, joka on x-ja y mielivaltaisesti alustetaan 1 ja 2, vastaavasti. 358 00:22:25,110 --> 00:22:27,700 Voisimme käyttää GetInt, mutta meidän täytyy vain yksinkertainen käyttää, 359 00:22:27,700 --> 00:22:30,170 joten on vaikea koodattu kuin 1 ja 2. 360 00:22:30,170 --> 00:22:35,340 Riveillä 21 ja 22, me ilmeisesti tulostaa x ja y, 1 per rivi. 361 00:22:35,340 --> 00:22:39,720 Sitten linja 23, väitän minä vaihtava näitä arvoja, piste, piste, piste. 362 00:22:39,720 --> 00:22:44,170 Olen ilmeisesti soittaa funktio linjalla 24 sanottujen swap, joka vie 2 perustelut. 363 00:22:44,170 --> 00:22:48,300 Se on täysin legit toiminnoissa ottaa 2 argumentteja. Olemme nähneet printf tehdä se jo. 364 00:22:48,300 --> 00:22:51,830 >> Joten swap ilmeisesti vie x ja y, ja nimensä, 365 00:22:51,830 --> 00:22:54,670 Toivon, että se tulee vaihtaa nämä 2 arvoja. 366 00:22:54,670 --> 00:23:00,090 Joten Väitän linjalla 25 "vaihtaa!" ja minä uusintapainoksia x ja y 367 00:23:00,090 --> 00:23:03,070 olettaen, että he ovat todellakin vaihdettu. 368 00:23:03,070 --> 00:23:06,080 Mutta jos olen itse suorittaa tämän ohjelman - haluan avata terminaali-ikkunan, 369 00:23:06,080 --> 00:23:09,860 haluan tehdä buggy3 - kuten nimestä voi päätellä, tämä ei lopu hyvin 370 00:23:09,860 --> 00:23:15,770 koska kun lyön Enter, huomaat, että x on 1, y = 2, 371 00:23:15,770 --> 00:23:19,420 ja vielä lopussa ohjelman, ne ovat edelleen, itse asiassa sama. 372 00:23:19,420 --> 00:23:22,960 Joten perustuvat mielenosoitus juuri nyt Ken, mitä todella tapahtuu? 373 00:23:22,960 --> 00:23:28,710 Katsotaanpa sukeltaa tähän swap toiminto. Se on super lyhyt. Se on vain muutaman rivin koodia pitkä. 374 00:23:28,710 --> 00:23:34,520 Mutta mitä perusongelma perustuu yksinkertainen tarina kerrotaan täällä Ken? 375 00:23:34,520 --> 00:23:36,670 Miksi swap rikki? 376 00:23:36,670 --> 00:23:39,660 [Opiskelija] Olet tallennetaan kopioon, ei muuttuja. 377 00:23:39,660 --> 00:23:43,980 Aivan. Olemme tallennetaan kopioon, ei muuttuja itse. 378 00:23:43,980 --> 00:23:47,170 Toisin sanoen, swap ilmeisesti kestää 2 argumentteja, int, 379 00:23:47,170 --> 00:23:49,370 ja se on mielivaltaisesti kutsutaan a ja b, 380 00:23:49,370 --> 00:23:54,420 ja täällä olen läpäissyt vuonna x ja y, jotka ovat vastaavasti 1 ja 2, 381 00:23:54,420 --> 00:23:58,770 mutta en kirjaimellisesti ohimennen x, en kirjaimellisesti ohimennen y, 382 00:23:58,770 --> 00:24:01,450 Olen ohimennen kopio x ja kopion y. 383 00:24:01,450 --> 00:24:04,510 Se on melkein kuin olisit kopioida ja liittää swap 384 00:24:04,510 --> 00:24:07,810 arvot että haluat todella manipuloida. 385 00:24:07,810 --> 00:24:14,480 Eli jos näin on, kun ohjelma alusta täytäntöönpanovaltion line 35 jälkeen 36, 386 00:24:14,480 --> 00:24:18,650 kun saan linja 37, tässä vaiheessa tarinan, mikä on arvo? 387 00:24:21,040 --> 00:24:25,050 Tässä vaiheessa tarinan, rivi 37, mikä on arvo tässä vaiheessa? >> [Opiskelija] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] On vain oltava 1, oikea, koska x hyväksyttiin ensimmäisenä argumenttina, 389 00:24:29,280 --> 00:24:33,080 ja tämä toiminto vain mielivaltaisesti vaatii ensimmäisen väitteen. 390 00:24:33,080 --> 00:24:38,200 Samoin on y Toisen väitteen ja se on vain mielivaltaisesti soittaa toinen argumentti b. 391 00:24:38,200 --> 00:24:40,990 >> Tämä kahtiajako on oikeastaan ​​melko yksinkertaisesti selitetty. Mieti sitä. 392 00:24:40,990 --> 00:24:43,320 Kukaan meistä ovat tavanneet henkilö kirjoitti printf, 393 00:24:43,320 --> 00:24:50,770 niin varmasti, hänellä ei ole aavistustakaan, mitä muuttujia 30 vuotta myöhemmin aiotaan kutsua. 394 00:24:50,770 --> 00:24:56,650 Joten siellä on tehtävä ero, mitä te kutsutte funktioissa olet kirjoittamassa 395 00:24:56,650 --> 00:25:02,080 ja mitä te kutsutte funktioissa soitat tai käyttämällä. 396 00:25:02,080 --> 00:25:05,340 Eli toisin sanoen, olen kirjoittanut omat muuttujat x ja y, 397 00:25:05,340 --> 00:25:08,890 mutta jos joku muu olisi kirjoittanut swap-toiminto, hän ei olisi varmastikaan tiedä 398 00:25:08,890 --> 00:25:10,690 mitä minun muuttujia aiotaan kutsutaan, 399 00:25:10,690 --> 00:25:13,830 niin ymmärtää, että tämä on siksi sinulla on kaksinaisuuden nimiä. 400 00:25:13,830 --> 00:25:16,750 Teknisesti voisin tehdä tämän sattumalta, 401 00:25:16,750 --> 00:25:20,080 mutta ne olisivat kuitenkin kului kuin kopioita. 402 00:25:20,080 --> 00:25:23,650 Se olisi vain sattumaa esteettisesti jos henkilö, joka kirjoitti swap 403 00:25:23,650 --> 00:25:26,150 oli käytetty samoja nimiä. 404 00:25:26,150 --> 00:25:32,370 Joten tässä vaiheessa tarinan, rivi 37, on 1, b on 2, ja nyt jatkan vaihtaa niitä. 405 00:25:32,370 --> 00:25:34,900 Ensinnäkin haluan todella tehdä tämän paljon yksinkertaisemmin. 406 00:25:34,900 --> 00:25:36,690 En tiedä mitä nuo 3 riviä koodia tekivät. 407 00:25:36,690 --> 00:25:41,210 Haluan vain tehdä tämän: b =; = b; tehty. 408 00:25:41,210 --> 00:25:44,690 Miksi tämä rikki, loogisesti? 409 00:25:46,490 --> 00:25:48,900 Se on tavallaan intuitiivinen asia, eikö? 410 00:25:48,900 --> 00:25:52,560 Joten tulee b ja b muuttuu, 411 00:25:52,560 --> 00:25:57,730 mutta ongelmana on, että heti kun linja 37 teloitetaan, mikä arvo ja b? 412 00:25:57,730 --> 00:26:03,410 Sama, 1, koska olette clobbered, niin sanotusti, olet muuttanut b yhtä. 413 00:26:03,410 --> 00:26:08,890 Joten kun linja 37 on suoritettu, että on hienoa, sinulla on nyt 2 kappaletta numero 1 414 00:26:08,890 --> 00:26:13,350 sisällä tätä toimintoa, niin sitten kun sanot linjassa 38 = b, 415 00:26:13,350 --> 00:26:17,640 olet sellainen ruuvattu, koska olet vain määrittämällä 1-1. 416 00:26:17,640 --> 00:26:20,580 Olet tavallaan menetetty arvo, jota välittänyt. 417 00:26:20,580 --> 00:26:23,220 Joten alkuperäinen versio, huomaa mitä tein. 418 00:26:23,220 --> 00:26:26,850 Minä sen sijaan oli kolmannella rivillä koodia, joka näytti tältä. 419 00:26:26,850 --> 00:26:28,580 Julistan väliaikainen muuttuja. 420 00:26:28,580 --> 00:26:32,170 >> Tmp on hyvin yleinen nimi väliaikainen muuttuja, ja se on int 421 00:26:32,170 --> 00:26:34,580 koska se on sovittaa mitä haluan tehdä kopion. 422 00:26:34,580 --> 00:26:39,770 I tallentaa kopion sisällä TMP, joten kun linja 37 on suoritettu, 423 00:26:39,770 --> 00:26:45,860 arvo on - nopea järki tarkistaa - 1, arvo b on 2, 424 00:26:45,860 --> 00:26:48,970 ja arvo tmp on myös 1. 425 00:26:48,970 --> 00:26:52,060 Joten nyt toteuttaa linjan 38. 426 00:26:52,060 --> 00:27:00,540 Kun linja 38 suorittaa, vie arvo b. Ja B 2, niin on nyt 2. 427 00:27:00,540 --> 00:27:05,210 Joten tässä vaiheessa tarina, a on 2, b on 2, ja tmp on 1, 428 00:27:05,210 --> 00:27:11,060 joten nyt loogisesti, voimme vain plop tmp arvon huomioon b ja olemme tehneet. 429 00:27:11,060 --> 00:27:12,800 Joten olemme ratkaisseet tämän ongelman. 430 00:27:12,800 --> 00:27:17,720 Valitettavasti, kun ohjelma suoritetaan tässä muodossa, se ei oikeastaan ​​vaihtaa mitään arvoja. 431 00:27:17,720 --> 00:27:20,100 Mutta on selvää, miksi? 432 00:27:23,660 --> 00:27:26,450 Korjasin looginen ongelma juuri hetki sitten, 433 00:27:26,450 --> 00:27:31,020 mutta jälleen kerran, jos en suorita tämä ohjelma, x ja y ennallaan 434 00:27:31,020 --> 00:27:33,310 loppuun mennessä ohjelman toteuttamista. 435 00:27:33,310 --> 00:27:37,220 [Äänetön opiskelija kommentti] >> Emme ole palautettu mitään, niin se on totta. 436 00:27:37,220 --> 00:27:39,670 Mutta se muuttuu siellä on hieman ongelma, sillä tähän mennessä 437 00:27:39,670 --> 00:27:44,170 Ainoa asia olemme voineet palata on yksi asia, ja tämä on rajoitus C. 438 00:27:44,170 --> 00:27:49,070 Voit vain palauttaa oikeastaan ​​yksi arvo, jolloin olen sellainen jumissa täällä 439 00:27:49,070 --> 00:27:53,310 koska en voi palauttaa uuden arvon x-tai I voisi palauttaa uuden y: n arvo, 440 00:27:53,310 --> 00:27:55,190 mutta haluan molemmat takaisin. 441 00:27:55,190 --> 00:27:58,650 Joten takaisin ei yksinkertaista ratkaisua. 442 00:27:58,650 --> 00:28:01,710 Mutta ongelma pohjimmiltaan on miksi? Mitä me oikeastaan ​​vaihdettu? 443 00:28:01,710 --> 00:28:04,190 [Opiskelija] a ja b. >> A ja b. 444 00:28:04,190 --> 00:28:08,230 Mutta a ja b ovat kopioita x ja y, mikä tarkoittaa, teimme kaikki tämä työ, 445 00:28:08,230 --> 00:28:11,650 me juuri viettänyt 3 minuutin puhuu swap-toiminto ja kaikki 3 näistä muuttujista, 446 00:28:11,650 --> 00:28:15,420 ja se on hienoa, aivan oikein erikseen, 447 00:28:15,420 --> 00:28:20,740 vaan ja b soveltamisala vain on näitä rivejä tänne. 448 00:28:20,740 --> 00:28:24,790 >> Eli aivan kuten varten silmukka, jos julistaa kokonaisluvun I Inside for silmukan, 449 00:28:24,790 --> 00:28:28,760 Samoin jos olet julistamista ja b sisällä funktion, että olet kirjoittanut, 450 00:28:28,760 --> 00:28:33,320 he kelvollinen vain kyseisen toiminnon, mikä tarkoittaa heti kun vaihto on tehty suorittamalla 451 00:28:33,320 --> 00:28:38,470 ja menemme linjan 24 linja 25, x ja y eivät ole muuttuneet lainkaan. 452 00:28:38,470 --> 00:28:42,790 Olet juuri tuhlannut paljon aikaa vaihtava kopioita muuttujia. 453 00:28:42,790 --> 00:28:47,010 Joten näyttää siltä, ​​että ratkaisu tähän on todella ei-ilmeinen. 454 00:28:47,010 --> 00:28:50,670 Se ei ole aivan riittävää palauttaa arvoja, koska voimme vain palata 1 arvo, 455 00:28:50,670 --> 00:28:53,470 ja en todellakaan halua vaihtaa sekä x ja y samaan aikaan, 456 00:28:53,470 --> 00:28:55,210 joten aiomme täytyy palata tähän. 457 00:28:55,210 --> 00:29:01,020 Mutta nyt ymmärtää, että kysymys pohjimmiltaan peräisin siitä, että a ja b ovat kopioita 458 00:29:01,020 --> 00:29:03,630 ja he ovat omassa soveltamisalaan. 459 00:29:03,630 --> 00:29:05,050 Yritetään ratkaista jollakin tavalla. 460 00:29:05,050 --> 00:29:11,250 Saanen todella siirry takaisin tänne ja avata, sanokaamme, neljättä tästä, buggy4. 461 00:29:11,250 --> 00:29:13,370 Mitä tästä? 462 00:29:13,370 --> 00:29:17,810 Tämä on samanlainen, mutta yksinkertaisempi ongelma katsoa ennen kuin ryhdymme puukottaa ratkaisemiseksi. 463 00:29:17,810 --> 00:29:24,190 Tämä ohjelma on nimeltään lisäys, ja se ilmeisesti alustaa x kokonaisluvun 1 mukainen 18. 464 00:29:24,190 --> 00:29:28,150 Sitten väittävät x on 1, minä sitten väittävät "mukaa ..." 465 00:29:28,150 --> 00:29:33,730 Sitten soittaa lisäys, mutta sitten linjat 22 ja 23, väitän se on kasvatettu, 466 00:29:33,730 --> 00:29:40,220 Väitän x on nyt mitä se on - 2, oletettavasti - mutta tämä ohjelma on buginen. 467 00:29:40,220 --> 00:29:42,610 Mikä on ongelmana? 468 00:29:43,440 --> 00:29:50,160 Joo. >> [Äänetön opiskelijan vastausta] >> Aivan. 469 00:29:50,160 --> 00:29:52,490 Joten x on julistettu tietenkin linjalla 18. 470 00:29:52,490 --> 00:29:54,700 Se on sisällä tärkein on aaltosulkeita. 471 00:29:54,700 --> 00:29:58,440 Niin yksinkertainen vastaus tähän on, että vaikka x olemassa täällä, 472 00:29:58,440 --> 00:30:03,930 se ei ole linjassa 32, joten tämä ohjelma itse asiassa ei edes kääntää. 473 00:30:03,930 --> 00:30:07,940 Kääntäjä kun yritän koota tämä koodi tulee huutaa minulle 474 00:30:07,940 --> 00:30:14,100 joitakin pimeän tunnus tai jotakin tämänsuuntaista. Itse asiassa yritetään. 475 00:30:14,100 --> 00:30:18,470 Tämä on merkki buggy4. Siellä se on. 476 00:30:18,470 --> 00:30:22,110 Käytä pimeän tunniste "x" linjassa 32. 477 00:30:22,110 --> 00:30:25,580 Ja itse asiassa, olkaamme selkeämpi täällä tänään, jotta tämä on hyödyllistä 478 00:30:25,580 --> 00:30:27,580 toimistossa tuntia ja kotona. 479 00:30:27,580 --> 00:30:29,300 >> Huomaa, että se on hieman arvoituksellisesti kirjoitettu. 480 00:30:29,300 --> 00:30:37,270 Mutta se, että clang on huusi meille, sanoen buggy4.c: 32:5, on todella hyödyllinen. 481 00:30:37,270 --> 00:30:42,050 Se tarkoittaa sitä, että virhe on linjalla 32 merkkipaikkaan 5. 482 00:30:42,050 --> 00:30:46,700 Joten 1, 2, 3, 4, 5. Se on, itse asiassa, missä ongelma on. 483 00:30:46,700 --> 00:30:49,790 Ja myös, myös pitää mielessä toimistossa tuntia ja kotona, olen onnekas täällä. 484 00:30:49,790 --> 00:30:52,990 Minulla on yksi virhe. Se tulee olemaan suhteellisen helppo korjata. 485 00:30:52,990 --> 00:30:55,990 Mutta jos saat koko ruudun täynnä ylivoimainen virheilmoituksia, 486 00:30:55,990 --> 00:31:00,330 jälleen ymmärtää, että alimmainen voisi vain olla oire ylimmän One. 487 00:31:00,330 --> 00:31:03,450 Joten aina jahdata alas bugeja ylhäältä alaspäin 488 00:31:03,450 --> 00:31:05,820 koska voi vain olla ketjuttaa vaikutus 489 00:31:05,820 --> 00:31:09,240 joka ehdottaa sinulla on paljon enemmän ongelmia kuin sinä itse tehdä. 490 00:31:09,240 --> 00:31:15,150 Joten miten voisimme korjata tämän, jos tavoite on kasvattaa x? >> [Opiskelija] Make x maailmanlaajuisesti. 491 00:31:15,150 --> 00:31:17,060 Okei, joten voimme tehdä x maailmanlaajuisia. 492 00:31:17,060 --> 00:31:20,480 Otetaan pikakuvakkeen että olen varoittanut aiemmin, mutta pahus, meidän täytyy vain hätäratkaisu, 493 00:31:20,480 --> 00:31:25,730 joten sanotaanko int x tänne. Se tekee x maailmanlaajuisesti. 494 00:31:25,730 --> 00:31:31,800 Joten nyt tärkein on pääsy siihen ja lisäys on pääsy siihen, 495 00:31:31,800 --> 00:31:34,110 ja niin haluan mennä eteenpäin ja kokoaa nyt. 496 00:31:34,110 --> 00:31:37,630 Tee buggy4, Enter. Näyttää koota nyt. 497 00:31:37,630 --> 00:31:41,230 Mennään juosta buggy4. Ja se tuntuu todella toimivat. 498 00:31:41,230 --> 00:31:45,150 Tämä on yksi näistä asioista, on niin kuin minä sanon, ei niin kuin minä teen, 499 00:31:45,150 --> 00:31:47,010 koska olen juuri tehnyt tänne, koska yleensä 500 00:31:47,010 --> 00:31:50,440 Meidän ohjelmat menevät paljon mielenkiintoista ja paljon pidempi, 501 00:31:50,440 --> 00:31:56,390 ja jos ratkaisu elämän ongelmiin on vain laittaa kaikki muuttujat yläreunassa tiedoston, 502 00:31:56,390 --> 00:31:59,690 nopeasti tehdä ohjelmia saa järkyttävän vaikea hallita. 503 00:31:59,690 --> 00:32:02,190 Se saa vaikeampi keksiä uuden muuttujan nimeä, 504 00:32:02,190 --> 00:32:05,240 se saa vaikeampi ymmärtää, mitä muuttuja tekee mitä, 505 00:32:05,240 --> 00:32:08,460 ja niin yleensä, tämä ei ole hyvä ratkaisu. 506 00:32:08,460 --> 00:32:10,030 Joten tehdä tämän paremmin. 507 00:32:10,030 --> 00:32:12,160 Emme halua käyttää globaali muuttuja täällä. 508 00:32:12,160 --> 00:32:16,240 >> En halua kasvattaa x, joten voisin tietysti - 509 00:32:16,240 --> 00:32:18,670 lopussa päivä, tämä on tavallaan typerä tarina, koska me vain teemme tätä - 510 00:32:18,670 --> 00:32:24,450 mutta jos en tiedä, että toimija tai en saanut muuttaa sitä pääasiassa itse, 511 00:32:24,450 --> 00:32:30,730 Miten muuten voisin toteuttaa Ken täällä tällä kertaa ole kuutio vaan kasvattaa? 512 00:32:31,380 --> 00:32:33,190 Miten voin muuttaa tämän asian täällä? Joo. 513 00:32:33,190 --> 00:32:38,480 [Opiskelija] Pass x ja palata sitten [kuulumattomissa] >> Okei, hyvä. 514 00:32:38,480 --> 00:32:41,900 Miksi en kulkea x ja sitten kuin palauttaa se, 515 00:32:41,900 --> 00:32:44,870 miksi en vain ei palauta x + 1. 516 00:32:44,870 --> 00:32:47,710 Pari enemmän asioiden on muututtava täällä. Olen oikealla tiellä. 517 00:32:47,710 --> 00:32:49,770 Mitä muuta pitää nipistää? Joku muu. Joo. 518 00:32:49,770 --> 00:32:51,740 [Äänetön opiskelija vastausta] 519 00:32:51,740 --> 00:32:54,730 Minun täytyy vaihtaa paluuta tyyppiä kasvu, koska se ei mitätöidä. 520 00:32:54,730 --> 00:32:57,780 Void tarkoittaa mitään palautetaan, mutta selvästi nyt on, 521 00:32:57,780 --> 00:32:59,830 joten tämä tarvitsee vaihtaa - >> [opiskelija] int. 522 00:32:59,830 --> 00:33:02,740 int oltava johdonmukaisia ​​mitä olen itse takaisin. 523 00:33:02,740 --> 00:33:05,180 Nyt jotain muuta on vielä buginen täällä. Joo. 524 00:33:05,180 --> 00:33:08,400 [Äänetön opiskelija vastausta] >> [Malan] Joten minun täytyy kasvattaa x? 525 00:33:08,400 --> 00:33:12,080 [Äänetön opiskelija vastausta] >> [Malan] Ah, niin minun täytyy kulkea x. 526 00:33:12,080 --> 00:33:16,660 Joten minun täytyy tehdä tämä täällä. >> [Äänetön opiskelija kommentti] 527 00:33:16,660 --> 00:33:20,050 [Malan] Joten prototyyppi, minun täytyy muuttaa tänne. 528 00:33:20,050 --> 00:33:22,930 Joten tämä on tullut int, tämä on tullut - 529 00:33:22,930 --> 00:33:25,620 hmm, Minulla on oikeastaan ​​vika täällä. Katsotaanpa korjata ensin. 530 00:33:25,620 --> 00:33:29,590 Mitä pitäisi tämä oikeastaan ​​on? Sen täytyy olla int jotain. 531 00:33:29,590 --> 00:33:32,700 Se voisi olla x, mutta suoraan sanottuna, jos alkaa soittaa kaikki muuttujat x, 532 00:33:32,700 --> 00:33:35,390 se tulee saamaan vähemmän selvää, mikä on mikäkin. 533 00:33:35,390 --> 00:33:39,560 >> Joten vain mielivaltaisesti valita eri nimeämiskäytäntöä minun auttaja toimintoihin, 534 00:33:39,560 --> 00:33:41,940 toiminnot Kirjoitan. Me kutsumme sitä, tai voimme kutsua sitä - 535 00:33:41,940 --> 00:33:45,010 Kutsun sitä määrää olisi vieläkin selvempi. 536 00:33:45,010 --> 00:33:47,560 Joten sitten on palattava lukumäärästä riippumatta on plus 1, 537 00:33:47,560 --> 00:33:50,740 ja nyt minun täytyy vaihtaa 1 muu juttu täällä ja yksi muu asia täällä. 538 00:33:50,740 --> 00:33:54,350 Mitä minun täytyy vaihtaa linjan 21 ensin? >> [Äänetön opiskelijan vastausta] 539 00:33:54,350 --> 00:33:57,610 [Malan] Minun täytyy antaa se x. En voi vain soittaa lisäys (x). 540 00:33:57,610 --> 00:34:01,960 Minun täytyy muistaa vastauksen muuttamalla arvoa x vasemmalla puolella. 541 00:34:01,960 --> 00:34:04,680 Ja vaikka x on nyt vasemmalle ja oikealle, se on täysin hieno 542 00:34:04,680 --> 00:34:08,860 koska oikea puoli saa suorittaa ensimmäinen sitten saa plopped osaksi vasen juttu - 543 00:34:08,860 --> 00:34:10,600 x tässä tapauksessa. 544 00:34:10,600 --> 00:34:12,159 Ja sitten lopuksi, tämä on helppo korjata nyt. 545 00:34:12,159 --> 00:34:17,230 Tämä pitäisi vain vastata mitä alhaalla, int numero. 546 00:34:17,230 --> 00:34:20,570 Joten koko joukko muutoksia todella tyhmä toiminto 547 00:34:20,570 --> 00:34:24,420 mutta edustaja asioita me yhä haluamme tehdä. 548 00:34:24,420 --> 00:34:27,090 Joten tee buggy4. Olen mokasin jonnekin. 549 00:34:27,090 --> 00:34:30,139 Voi luoja. Viisi virheitä 6-line-ohjelma. 550 00:34:30,139 --> 00:34:35,690 Joten mikä hätänä linjalla 18, merkki 5? 551 00:34:35,690 --> 00:34:39,610 Joten minun täytyy todeta tämän, int. 552 00:34:39,610 --> 00:34:41,920 Katsotaanpa. On koko joukko muita virheitä. 553 00:34:41,920 --> 00:34:47,010 Voi luoja - 19, 18, 21 - mutta jälleen kerran, haluan vain tyhjentää näytön, ohjaus L täällä, 554 00:34:47,010 --> 00:34:49,380 ja uusintana clang. 555 00:34:49,380 --> 00:34:51,340 Joten 5 ongelmista on oikeastaan ​​vain se 1. 556 00:34:51,340 --> 00:34:57,520 Joten nyt mennään juosta buggy4, Enter. Vau, x on kasvatetaan oikein. 557 00:34:57,520 --> 00:35:02,720 Selvä. Kaikki kysymykset siitä, miten kasvattaa numeroita? Joo. 558 00:35:02,720 --> 00:35:09,870 [Äänetön opiskelija kysymys] >> Hyvä kysymys. 559 00:35:09,870 --> 00:35:14,220 Miten on mahdollista, että voin vain vaihtaa x numeroon ja ohjelma tietää heti? 560 00:35:14,220 --> 00:35:16,200 >> Jälleen ajattele sitä tällä abstraktio. 561 00:35:16,200 --> 00:35:21,600 Joten jos olen tärkein ja Ken on lisäys, suoraan sanottuna, en välitä mitä Ken kutsuu iPad. 562 00:35:21,600 --> 00:35:26,570 En välitä, mitä hän kutsuu mitään, että on tekemistä hänen täytäntöönpanon tätä toimintoa. 563 00:35:26,570 --> 00:35:33,340 Tämä on täytäntöönpanon yksityiskohta, että minä, tärkein, ei tarvitse välittää. 564 00:35:33,340 --> 00:35:38,250 Ja niin yksinkertaisesti muuttamalla sitä johdonmukaisesti sisällä toiminto - numero täällä ja numero täällä - 565 00:35:38,250 --> 00:35:40,960 on kaikki se kestää niin kauan kuin minä kääntää. 566 00:35:40,960 --> 00:35:44,180 Se on tavallaan kuin jos ajattelee monet meistä, ne teistä, joilla ajokorttien 567 00:35:44,180 --> 00:35:46,770 jotka ovat ajaneet tai jos olet edes ajanut autoa, 568 00:35:46,770 --> 00:35:50,950 useimmat meistä ei ole aavistustakaan siitä, miten auto toimii alla huppu. 569 00:35:50,950 --> 00:35:54,970 Ja kirjaimellisesti, jos avaa huppu, useimmat meistä - minä mukaan lukien - 570 00:35:54,970 --> 00:35:56,940 aio todellakaan tiedä mitä me tarkastelemme, 571 00:35:56,940 --> 00:35:59,220 ikään kuin saatat tuntea juttuja kuten tämä nyt. 572 00:35:59,220 --> 00:36:01,480 Mutta meidän ei todellakaan tarvitse huolehtia miten auto toimii, 573 00:36:01,480 --> 00:36:05,970 meillä ei tarvitse välittää mitä kaikki tangot ja männät ja kaapelit auton sisä- 574 00:36:05,970 --> 00:36:08,160 todella tekevät. 575 00:36:08,160 --> 00:36:12,770 Eli jotain mitä te kutsutte mäntä ei ole väliä tässä tapauksessa. Sama idea. 576 00:36:12,770 --> 00:36:25,300 Joo. >> [Äänetön opiskelija kysymys] 577 00:36:25,300 --> 00:36:29,180 Jos on muita käyttötarkoituksia muuttujaa xa hetki sitten, 578 00:36:29,180 --> 00:36:32,150 te, ohjelmoija, olisi muutettava niitä kaikkialla. 579 00:36:32,150 --> 00:36:36,600 Tai voit kirjaimellisesti tehdä Tiedosto-valikko, ja valitse sitten Etsi, Korvaa - jotain - 580 00:36:36,600 --> 00:36:39,170 mutta olet menossa on tehdä muutokset itse. 581 00:36:39,170 --> 00:36:47,450 Sinun täytyy olla johdonmukainen. >> [Opiskelija] Jos on useita muuttujia [kuulumattomissa] 582 00:36:47,450 --> 00:36:53,100 Tietyssä järjestyksessä, kuten täällä, jos tämä oli KANS toiseen numeroon? >> [Opiskelija] Oikea. 583 00:36:53,100 --> 00:36:56,590 [Malan] Joo. Tilaa väliä kun soitat toimintoa. 584 00:36:56,590 --> 00:37:00,050 >> Joten jos olisin vaativat lisäys tänne jotain pilkulla jotain, 585 00:37:00,050 --> 00:37:01,680 siellä suoraan kartoitus. 586 00:37:01,680 --> 00:37:05,690 Ensimmäinen muuttuja, mikä sen nimi, on valmistettu kopio ensimmäistä väitettä tänne. 587 00:37:05,690 --> 00:37:07,760 Anteeksi. Tämän ei pitäisi olla suluissa. 588 00:37:07,760 --> 00:37:11,490 Toinen perustelu on linjassa toinen. Joten tilaa, kyllä ​​asiat. Selvä. 589 00:37:11,490 --> 00:37:17,020 Anteeksi. Otin pitkän matkan päästä sinne. Muita kysymyksiä? Selvä. 590 00:37:17,020 --> 00:37:20,610 Joten jos voimme olla maalata kuvan siitä, mitä todella tapahtuu täällä 591 00:37:20,610 --> 00:37:23,090 alla huppu, niin sanoakseni. 592 00:37:23,090 --> 00:37:26,640 Tämä on suorakulmio, joka voisi edustaa tietokoneen muistiin. 593 00:37:26,640 --> 00:37:30,970 Vaikka sinulla ei ole aavistustakaan siitä, miten muisti toimii ja miten RAM toimii, 594 00:37:30,970 --> 00:37:33,940 ainakin olettaa, että sinulla on rypäleterttuja se näinä päivinä. 595 00:37:33,940 --> 00:37:36,280 Sinulla megatavua se, sinulla gigatavua siitä, 596 00:37:36,280 --> 00:37:40,870 ja me tiedämme viikolla 0 että tavu on juuri mitä? >> [Opiskelija] 8 bittiä. 597 00:37:40,870 --> 00:37:42,950 8 bittiä, eikö? Joten 8 nollia ja 1. 598 00:37:42,950 --> 00:37:45,880 Joten jos tietokoneessa on keikka RAM, 2 gigan RAM näinä päivinä, 599 00:37:45,880 --> 00:37:55,030 sinulla on miljardi tai 2000000000 tavua muistia tai noin 8 miljardia euroa eli 16 miljardia bittiä 600 00:37:55,030 --> 00:37:56,890 tietokoneesi sisälle. 601 00:37:56,890 --> 00:38:00,590 Toisin pikku Wooly Willy esimerkiksi se ei ole magneettisia hiukkasia yleensä enää. 602 00:38:00,590 --> 00:38:04,450 Yhä - läppäreissä ainakin - se on solid state drives, SSD, 603 00:38:04,450 --> 00:38:08,580 että vain ei ole liikkuvia osia. Se on sähköinen. Se kaikki sähkö-pohjainen. 604 00:38:08,580 --> 00:38:14,060 Joten ajatella tämän suorakulmion kuin vain edustavat 1 tai 2 gigatavua muistia, että sinulla on. 605 00:38:14,060 --> 00:38:16,020 >> Joten se kimpale muistia. 606 00:38:16,020 --> 00:38:19,830 Maailma tietojenkäsittelytiede on eräänlainen osioitu pois 607 00:38:19,830 --> 00:38:22,950 paloina muisti tehdä eri asioita. 608 00:38:22,950 --> 00:38:27,190 Esimerkiksi, jos tämä on tietokoneen RAM, ehdottivat suorakulmio siellä, 609 00:38:27,190 --> 00:38:31,130 käy ilmi, että sopimuksen mukaan, yläreunassa teidän RAM, niin sanotusti, 610 00:38:31,130 --> 00:38:33,660 on yleensä mitä kutsutaan tekstin segmentti. 611 00:38:33,660 --> 00:38:36,740 Nämä ovat 0 ja 1s jotka olet kääntänyt. 612 00:38:36,740 --> 00:38:39,020 Joten kun teimme alla huppu, mitä a.out on, 613 00:38:39,020 --> 00:38:41,980 kaikki nämä 0s ja 1s, kun suoritat ohjelman, 614 00:38:41,980 --> 00:38:46,290 nämä 0s ja 1s ladataan kiintolevyltä jotain kutsutaan RAM, 615 00:38:46,290 --> 00:38:49,320 ja RAM he laittaa yläosassa. 616 00:38:49,320 --> 00:38:52,770 Samalla sinulla on muita asioita: alustaa data, uninitialize tietoja. 617 00:38:52,770 --> 00:38:57,510 Nämä 2 karhoa muistia viittaavat globaaleja muuttujia, joita et käytä usein 618 00:38:57,510 --> 00:39:00,760 mutta joskus jos et, he päätyvät sinne myös. 619 00:39:00,760 --> 00:39:04,260 Sitten on joitakin muita juttuja: ympäristömuuttujat, joita emme viettää paljon aikaa, 620 00:39:04,260 --> 00:39:06,860 mutta sitten 2 tärkeää asiaa, jotka tulevat takaisin koko lukukauden, 621 00:39:06,860 --> 00:39:08,550 pino ja keko. 622 00:39:08,550 --> 00:39:12,210 Joten useimmat tietokoneen muistista on varattu ajettaessa ohjelmaa 623 00:39:12,210 --> 00:39:15,370 jotain kutsutaan pino ja jotain kutsutaan kasaan. 624 00:39:15,370 --> 00:39:18,840 Emme aio puhua kasan tänään, mutta puhumme pino. 625 00:39:18,840 --> 00:39:24,600 Pino on tarkoitus loihtia visuaalinen ruokasalin ateria lokerot Mather House 626 00:39:24,600 --> 00:39:28,110 tai missä satut olemaan missä ruokasali henkilökunta puhdistaa niitä joka päivä, 627 00:39:28,110 --> 00:39:30,180 he pinota ne ylös lattiasta ylös, 628 00:39:30,180 --> 00:39:34,550 ja vastaavasti muistissa, on tämä ajatus, että laittaisit jotain pino, 629 00:39:34,550 --> 00:39:36,860 laittaa jotain pino, laittaa jotain pinoon. 630 00:39:36,860 --> 00:39:38,240 Ja mitä me tarkoitamme tällä? 631 00:39:38,240 --> 00:39:41,860 >> Katsotaanpa zoomata vain alaosassa Kuvan, tietokoneen RAM, 632 00:39:41,860 --> 00:39:44,330 ehdottaa seuraavaa. 633 00:39:44,330 --> 00:39:48,170 On käynyt ilmi, että kun ajaa ohjelmaa, kuten a.out tai hei - 634 00:39:48,170 --> 00:39:50,100 mikä ohjelma on, että olet kirjoittanut - 635 00:39:50,100 --> 00:39:54,020 uudelleen, ne 0s ja 1s ladataan kiintolevyltä, joka on pitkäaikainen varastointi, 636 00:39:54,020 --> 00:39:57,230 pysyy siellä vaikka vedät pistokkeen, ladataan keskusmuistiin. 637 00:39:57,230 --> 00:40:00,610 RAM on nopeampaa kuin kiintolevyt - se on pienempi kuin kiintolevyt - 638 00:40:00,610 --> 00:40:03,300 mutta se on jos ohjelmia elää kun käytät niitä. 639 00:40:03,300 --> 00:40:08,230 Joten kaksoisnapsautat ohjelman Mac tai PC, se ladataan kiintolevyltä keskusmuistiin. 640 00:40:08,230 --> 00:40:11,520 Heti kun se on ladattu RAM, 0s ja 1s mentävä way top, 641 00:40:11,520 --> 00:40:16,610 ns tekstin segmentti, mutta sitten heti, kun ohjelma itse asiassa käynnistyy, 642 00:40:16,610 --> 00:40:21,360 päätehtävä on nimeltään, ja tärkein, kuten olemme nähneet, on usein paikallisia muuttujia, 643 00:40:21,360 --> 00:40:24,870 ja se on ints ja jousille sekä merkkiä ja vastaavat. 644 00:40:24,870 --> 00:40:29,180 Joten jos ohjelma että olet kirjoittanut tai ohjelma, jonka olet kaksinkertainen napsautetaan 645 00:40:29,180 --> 00:40:32,970 käyttää joitakin muuttujia sisällä tärkein, 646 00:40:32,970 --> 00:40:37,240 he päätyvät alareunassa stäkistäsi muistia, niin sanoakseni. 647 00:40:37,240 --> 00:40:39,410 Konkreettisemmin, mitä tämä oikeastaan ​​tarkoittaa? 648 00:40:39,410 --> 00:40:48,450 Tämä tarkoittaa vain sitä, että jos aioimme määrän tavua RAM tietokoneeseen, 649 00:40:48,450 --> 00:40:55,750 huomata, että tämä voisi olla tavu numero 0, tämä voi olla tavu numero 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 kaikki tavalla jopa 2 miljardia olisi aina siellä huipulla. 651 00:41:01,480 --> 00:41:05,880 Eli toisin sanoen, kun puhumme RAM tai muistin kannalta tavua, 652 00:41:05,880 --> 00:41:11,500 se tarkoittaa vain sitä, että joku on päättänyt mitä numeroida kunkin palasina muistia. 653 00:41:11,500 --> 00:41:16,650 Joten kun tarvitset 32 ​​bittiä int tai tarvitset 8 bittiä char, 654 00:41:16,650 --> 00:41:18,840 jos ne päätyvät muistissa? 655 00:41:18,840 --> 00:41:22,350 >> Käsitteellisesti ne vain päätyvät alareunassa tämä asia sanottu pino. 656 00:41:22,350 --> 00:41:25,870 Mutta mitä mielenkiintoista nyt kun tärkein kutsuu toiminto - 657 00:41:25,870 --> 00:41:28,750 Oletetaan toiminto nimeltään foo vain mielivaltainen nimi - 658 00:41:28,750 --> 00:41:32,330 mitä tapahtuu, on tärkein on alaosassa tämän pinon muistia; 659 00:41:32,330 --> 00:41:35,680 foo nyt laittaa päälle tärkeimmistä muistiin. 660 00:41:35,680 --> 00:41:40,990 Joten kaikki paikalliset muuttujat foo on lopulta eräänlainen käsitteellisesti edellä kuin pääasiassa. 661 00:41:40,990 --> 00:41:47,070 Jos foo kutsuu toista toiminto nimeltään baari, nuo muuttujat päätyvät tänne. 662 00:41:47,070 --> 00:41:50,120 Jos palkki soittaa jotain muuta, täällä, täällä, täällä. 663 00:41:50,120 --> 00:41:53,830 Joten mitä kiinnostavaa käynnissä ohjelma on, että soitat toiminnot 664 00:41:53,830 --> 00:41:57,750 ja kuin toiminnot edellyttävät tehtävät ja kuin toiminnot edellyttävät toiminnot, 665 00:41:57,750 --> 00:42:01,470 voit rakentaa tämän pinon toimintoja muistiin. 666 00:42:01,470 --> 00:42:06,890 Ja vain kerran funktio palaa sinä alkaa saada että muisti takaisin. 667 00:42:06,890 --> 00:42:10,860 Joten yksi helpoimmista tavoista loppuu muisti tietokoneohjelma 668 00:42:10,860 --> 00:42:14,360 on kirjoittaa toiminnot eivät koskaan palaa. 669 00:42:14,360 --> 00:42:18,900 Niinpä esimerkiksi mennään osoittaa niin paljon kanssa tarkoituksellisesti buginen ohjelma. 670 00:42:18,900 --> 00:42:22,230 Anna minun mennä eteenpäin ja tehdä # include , 671 00:42:22,230 --> 00:42:25,000 int main (void) 672 00:42:25,000 --> 00:42:32,940 ja aion tehdä, kun (2> 1), joka luultavasti ei koskaan muutu meitä, 673 00:42:32,940 --> 00:42:37,560 ja anna minun mennä eteenpäin nyt ja tehdä printf. 674 00:42:37,560 --> 00:42:40,700 Oikeastaan, se tulee olemaan vähemmän visuaalisesti kiinnostavia. Tehdään tämä. 675 00:42:40,700 --> 00:42:50,240 Saat int i = 0; i> 0 - Tehdään tämä virhe - i + +. 676 00:42:50,240 --> 00:42:52,720 Ja älkäämme printf täällä. Katsotaanpa käytännössä mitä olin saarnaamassa. 677 00:42:52,720 --> 00:43:00,190 Mennään menetelmänä, mitätön chorus, ja me sanomme int i, 678 00:43:00,190 --> 00:43:06,830 ja sitten aion sanoa printf - no, tehkäämme tähän mielenkiintoisempia. 679 00:43:06,830 --> 00:43:15,790 Katsotaanpa oikeastaan ​​ei tulosta mitään. Toivotaan vain tehdä tämän: Chorus (i). 680 00:43:15,790 --> 00:43:20,390 Selvä. Joten tämä on buginen koska miksi? 681 00:43:20,390 --> 00:43:23,380 Teen tämän ylös kuin menen, koska ohjelma ei oikeastaan ​​tee mitään kiinnostavaa. 682 00:43:23,380 --> 00:43:25,320 >> Mutta se ei ole tavoite. 683 00:43:25,320 --> 00:43:29,630 Tavoitteena on kirjoittaa ohjelma, jonka päätehtävä tekee mitä, ilmeisesti? 684 00:43:30,720 --> 00:43:32,860 Soita itse. Ja itse asiassa, emme tarvitse silmukka. 685 00:43:32,860 --> 00:43:37,200 Katsotaanpa vaikka yksinkertaistaa tätä juuri niin kuin ei unohtaa todella perustavanlaatuinen vika. 686 00:43:37,200 --> 00:43:39,640 Tärkeimmät puhelut kertosäe laulamaan kuoro, 687 00:43:39,640 --> 00:43:41,440 Sitten tein jotain typerää ja jouduin kuorossa puhelu kertosäe 688 00:43:41,440 --> 00:43:43,760 koska oletin joku muu aikoi toteuttaa sen ehkä, 689 00:43:43,760 --> 00:43:47,210 ja nyt tämä ei tule kerätä vielä. Minun täytyy tehdä mitä? 690 00:43:47,210 --> 00:43:49,970 Tarvitsen prototyyppi, muistan. 691 00:43:49,970 --> 00:43:56,110 Joten minun täytyy olla täällä void kuoro (int i); 692 00:43:56,110 --> 00:43:59,210 Joten nyt jos menen tänne - todella, mennään käytä isompi ikkuna. 693 00:43:59,210 --> 00:44:01,980 Mennään eteenpäin ja tehdä kertosäkeen. 694 00:44:01,980 --> 00:44:06,490 Mennään eteenpäin ja tehdä kertosäkeen. 695 00:44:06,490 --> 00:44:08,370 Käytä pimeän tunnisteen i. 696 00:44:08,370 --> 00:44:12,500 Voi, se oli typerää. Emme tarvitse väitettä. Toivotaan vain tehdä tämän. 697 00:44:12,500 --> 00:44:16,370 Toivoisin alkanut tällä tavalla. Olisi ollut paljon helpompi ohjelma kirjoittaa. 698 00:44:16,370 --> 00:44:25,590 Siellä. Nyt mennään yli minun pääteikkunaa uusinta clang, ja tässä mennään. 699 00:44:25,590 --> 00:44:28,460 Se oli todella nopea. 700 00:44:28,460 --> 00:44:31,150 Mitä oikeastaan ​​vain tapahtui, vaikka? 701 00:44:31,150 --> 00:44:33,730 No, nyt minä lisätä tulostuksen rivi jotta voimme nähdä. 702 00:44:33,730 --> 00:44:43,490 Sanon printf ("Olen täällä") - no muuttujia. Jätämme sen näin. 703 00:44:43,490 --> 00:44:47,480 Saanen uusintana tehdä. Saanen uusintana kuoro. 704 00:44:47,480 --> 00:44:57,380 Ja ... Tule. Jatka. 705 00:44:57,380 --> 00:44:59,930 Sivuhuomautuksena, miksi se ei ole kaatunut vielä? 706 00:44:59,930 --> 00:45:02,080 Segmentointi vika tapahtui erittäin nopeasti ennen. 707 00:45:02,080 --> 00:45:06,570 [Äänetön opiskelija vastausta] >> Aivan. Joten se vie aikaa tulostaa, eikö? 708 00:45:06,570 --> 00:45:08,610 Se vain vie enemmän työtä tietokoneen osa. 709 00:45:08,610 --> 00:45:10,620 Ja siellä se on: segmentointi vika. 710 00:45:10,620 --> 00:45:12,340 >> Joten huomaa miten nopeasti ohjelmista. 711 00:45:12,340 --> 00:45:14,130 Jos et pysty tulostamaan mitään, huippunopea. 712 00:45:14,130 --> 00:45:18,770 Mutta saimme kuitenkin tämän segmentoitumisen vika koska mitä oli tapahtumassa? 713 00:45:18,770 --> 00:45:21,210 Jos ajattelee, miten tietokoneen muisti on vahvistetut, 714 00:45:21,210 --> 00:45:28,740 tämä sattuu olemaan tärkein, mutta tässä mennään vain kutsuvat tätä chorus, ja kutsukaamme tätä Chorus. 715 00:45:28,740 --> 00:45:34,550 Ja nyt jos minä teen estetiikka oikeassa, tämä on juuri menossa sanoa chorus, kuoro, kuoro, 716 00:45:34,550 --> 00:45:40,550 chorus, kuoro, kuoro, kuoro, loputtomiin, ja lopulta, mitä tulee tapahtumaan? 717 00:45:40,550 --> 00:45:45,630 Jos iso kuva, kirjaimellisesti, tämä on, mitä sattuu käsitteellisesti? 718 00:45:46,520 --> 00:45:48,630 Pino ylitykset kasaan. 719 00:45:48,630 --> 00:45:51,940 Tai pahempaa, juuri ylittynyt kaiken, myös tekstin segmentti, 720 00:45:51,940 --> 00:45:54,590 joka on 0 ja 1s jotka edustavat ohjelman. 721 00:45:54,590 --> 00:45:57,080 Lyhyesti sanottuna tämä on aivan super, super huono. 722 00:45:57,080 --> 00:45:58,830 Ohjelmasi on kasvaneet käsistä. 723 00:45:58,830 --> 00:46:01,220 Käytät paljon enemmän muistia kuin tarkoitit 724 00:46:01,220 --> 00:46:03,960 kaikki johtuu typerän virheen tässä asiassa, 725 00:46:03,960 --> 00:46:08,040 tai tässä tapauksessa hyvin tarkoituksellisesti tehnyt toiminnon kutsuvan itseään. 726 00:46:08,040 --> 00:46:09,500 Nyt tämä ei ole lainkaan huono. 727 00:46:09,500 --> 00:46:13,800 Toiminnot, jotka kutsuvat itseään todella on suuri voima, kun käytät sitä oikein. 728 00:46:13,800 --> 00:46:15,800 En ole käyttänyt sitä oikein täällä. 729 00:46:15,800 --> 00:46:19,780 Joten tämä ei ole lainkaan huono, mutta se, että en koskaan lopeta kutsuvan itseäni 730 00:46:19,780 --> 00:46:23,520 on olennainen heikkous täällä tämän ohjelman. 731 00:46:23,520 --> 00:46:26,400 Joten missä olemme menossa tämän kaiken kanssa? Mitä todella tapahtuu? 732 00:46:26,400 --> 00:46:30,340 Kun Kutsun lisäys toimivat kuten teimme näissä esimerkeissä, 733 00:46:30,340 --> 00:46:33,420 Minulla arvo kuin 1 että välitän sisään 734 00:46:33,420 --> 00:46:37,570 Minä kulkea kopion numero 1, joten tapahtuu seuraavaa. 735 00:46:37,570 --> 00:46:44,240 Mennään kasvu Esimerkiksi tämä kaveri on täällä. 736 00:46:44,240 --> 00:46:46,870 Tässä mitä todella tapahtuu. 737 00:46:46,870 --> 00:46:53,400 Kun pyydän kasvu ja välitän vuonna x, kuvallisesti, mitä täällä tapahtuu on tämä. 738 00:46:53,400 --> 00:46:59,520 >> Jos minulla on arvo 1 varastoitu täällä ja olen oikeastaan ​​soittaa lisäys, 739 00:46:59,520 --> 00:47:04,330 joka on nyt nimeltään kuoro - iPad on heittää minut pois täältä. 740 00:47:04,330 --> 00:47:09,760 Soitetaan tätä lisäystä, ja emme tiedä, mitä tämä seuraavaksi toiminto tulee olemaan. 741 00:47:09,760 --> 00:47:14,840 Joten mitä todella tapahtuu on täällä jossain pääasiassa olen kimpale muistin 742 00:47:14,840 --> 00:47:17,000 , joka on tallennetaan numero 1. 743 00:47:17,000 --> 00:47:19,380 Kun pyydän lisäys, olen käyttäen toista kimpale muistia, 744 00:47:19,380 --> 00:47:21,230 mutta nyt minulla on kopio 1. 745 00:47:21,230 --> 00:47:26,660 Kun minä kasvattaa tätä arvoa, tämä tulee 2, 746 00:47:26,660 --> 00:47:30,560 mutta mitä sitten tapahtuu kun kasvu palaa? 747 00:47:30,560 --> 00:47:33,630 Tämä muisti vain saa luovuttaa takaisin käyttöjärjestelmä, 748 00:47:33,630 --> 00:47:37,450 mikä tarkoittaa kaikkia olet tehnyt mitään hyödyllistä. 749 00:47:37,450 --> 00:47:43,120 1 että alun perin sisältyvä tärkein on yhä todella siellä. 750 00:47:43,120 --> 00:47:44,890 Joten missä olemme menossa tähän? 751 00:47:44,890 --> 00:47:49,770 On käynyt ilmi, että muisti on tämä back-to-back järjestyksessä tavuja 752 00:47:49,770 --> 00:47:53,050 että voit laittaa kamaa, ja käy ilmi, että olemme jo nähneet jotain 753 00:47:53,050 --> 00:47:55,390 että kuuluu laittaa asiat takaisin takaisin takaisin takaisin. 754 00:47:55,390 --> 00:47:59,860 Mikä on merkkijono perustuva viikolla 1 ja nyt viikko 2? 755 00:48:00,020 --> 00:48:01,980 Se on vain kokoelma merkkiä. 756 00:48:01,980 --> 00:48:04,310 Joten se osoittautuu aivan kuten voit laittaa numerot muistiin, 757 00:48:04,310 --> 00:48:06,990 Vastaavasti voit laittaa merkkejä muistiin. 758 00:48:06,990 --> 00:48:10,530 Ja kun aloitamme laittamalla merkkejä muistin takaisin takaisin takaisin takaisin, 759 00:48:10,530 --> 00:48:13,620 käy ilmi, että käyttämällä yksinkertaisimpia asioita, kuten for-silmukka tai while-silmukka, 760 00:48:13,620 --> 00:48:17,170 voimme toistaa vasemmalta oikealle yli merkkijonon merkkejä 761 00:48:17,170 --> 00:48:20,600 ja alkaa hierovat niitä eri merkkejä kokonaan - 762 00:48:20,600 --> 00:48:23,370 voisi tulla b, b voisi tulla c - 763 00:48:23,370 --> 00:48:27,780 niin että lopulta voimme ottaa Englanti lause, joka todella on järkeä 764 00:48:27,780 --> 00:48:30,310 ja muuntaa kunkin näiden kirjeiden yksi kerrallaan 765 00:48:30,310 --> 00:48:34,400 kävelemällä kautta tietokoneen muistiin vasemmalta oikealle todella salata. 766 00:48:34,400 --> 00:48:35,810 Joten otamme viiden minuutin tauon, 767 00:48:35,810 --> 00:48:40,730 ja kun palaamme, me aloitamme tämän prosessin sekoitus tietoa. 768 00:48:42,020 --> 00:48:43,520 >> Selvä. 769 00:48:43,520 --> 00:48:48,070 Ennen kuin voimme sukeltaa joitakin crypto ja näitä asioita kutsutaan matriiseja, 770 00:48:48,070 --> 00:48:51,470 haluan pysähtyä kysyttävää, koska minusta tuntuu todella sellainen sekava 771 00:48:51,470 --> 00:48:54,080 joitakin niistä aiheista. Joten korjata nyt, jos voimme. 772 00:48:54,080 --> 00:48:58,700 Me vain puhuimme paluuarvot, puhuimme argumentteja, 773 00:48:58,700 --> 00:49:03,250 ja puhuimme tästä käsitteestä, jonka tulemme takaisin vuonna tulevina viikkoina, 774 00:49:03,250 --> 00:49:08,720 katsella muistiin koko joukko näistä lokerot pinosta, niin sanotusti, 775 00:49:08,720 --> 00:49:12,660 alhaalta ylös, niin että jokainen lokero että saa laittaa pinoon 776 00:49:12,660 --> 00:49:16,530 edustaa funktio, joka on parhaillaan kutsutaan. 777 00:49:17,900 --> 00:49:20,260 Kysyttävää? 778 00:49:20,260 --> 00:49:22,640 Saanen kysyä kysymyksen tänne. 779 00:49:22,640 --> 00:49:27,890 Saanen yksinkertaistaa tämän takaisin siihen, mitä se oli ennen joitakin aikaisempien Q & A. 780 00:49:27,890 --> 00:49:35,570 Se, että kasvu on avoin sulkumerkki, int numero, suljettu suluissa - 781 00:49:35,570 --> 00:49:39,110 Mitä int numero edustaa? 782 00:49:39,110 --> 00:49:42,790 [Opiskelija] argumentti. >> Argumentti. Okei. Mutta mitä argumentti? 783 00:49:42,790 --> 00:49:46,370 [Äänetön opiskelija vastausta] >> Mikä tuo on? >> [Opiskelija] Jotain että välität sisään 784 00:49:46,370 --> 00:49:49,940 Okei, joten jotain että välität tuumaa ja yleensä se on vain tulo. 785 00:49:49,940 --> 00:49:52,450 Jos olit kirjallisesti funktio ja funktion tarkoitusta elämään 786 00:49:52,450 --> 00:49:55,770 on tehdä jotain hieman erilaista joka kerta kun käytät sitä, 787 00:49:55,770 --> 00:50:00,110 silloin ainoa tapa, että tapahtuu todella näyttäisi olevan toimittamaan panos 788 00:50:00,110 --> 00:50:03,510 jotta se voi tehdä jotain erilaista, joka syöttää joka kerta. 789 00:50:03,510 --> 00:50:06,650 >> Joten sinun täytyy määrittää kaksi asiaa, kun toiminto vie tulo. 790 00:50:06,650 --> 00:50:09,590 Sinun täytyy määrittää nimi, jonka haluat antaa, että tulo 791 00:50:09,590 --> 00:50:12,700 puhtaasti oman mukavuuden, jotta voit viitata siihen 792 00:50:12,700 --> 00:50:16,540 on toiminto, joka itse kirjoitat, kuten tein täällä line 32. 793 00:50:16,540 --> 00:50:20,800 Mutta sinun on myös määrittää huoneen tyyppi, koska C on ohjelmointikieli 794 00:50:20,800 --> 00:50:25,940 että vain vaatii, että jos haluat muuttuja, sinun täytyy kertoa tietokoneen mitä tietotyyppi on, 795 00:50:25,940 --> 00:50:30,200 suurimmaksi osaksi siten, että se tietää, kuinka monta bittiä jakaa kyseisen muuttujan 796 00:50:30,200 --> 00:50:33,020 koska se voi olla 6 - pahoillani, se ei tule olemaan 6. 797 00:50:33,020 --> 00:50:37,080 Se voi olla 16, se voi olla 8, se voi olla 32, jopa 64, 798 00:50:37,080 --> 00:50:39,130 mutta tietokone tarvitsee tietää. 799 00:50:39,130 --> 00:50:43,180 Nyt, int vasemmalla puolella edustaa mitä vastoin? 800 00:50:46,350 --> 00:50:48,850 [Äänetön opiskelija vastausta] >> Mikä tuo on? >> [Opiskelija] tyyppi toiminto. 801 00:50:48,850 --> 00:50:53,610 Tyypin funktiona, ja tarkemmin sanottuna, tyyppi sen ulostuloon. Oikea. 802 00:50:53,610 --> 00:50:57,380 Joten taas asia suluissa edustaa sen tulon, jos jokin, 803 00:50:57,380 --> 00:50:59,660 asia vasemmalle edustaa sen lähdön. 804 00:50:59,660 --> 00:51:03,530 Ja tässä tapauksessa, lisäys ilmeisesti palauttaa int- 805 00:51:03,530 --> 00:51:07,690 ja niin int on palautuva tämän toiminnon. 806 00:51:07,690 --> 00:51:09,340 Mitä se tarkoittaa palaamaan? 807 00:51:09,340 --> 00:51:15,090 Kirjaimellisesti, voit käyttää avainsanan paluuta ja sitten jos mitä olet palaamassa 808 00:51:15,090 --> 00:51:18,600 oikealle avainsanan on kokonaisluku, 809 00:51:18,600 --> 00:51:21,660 niin se on todella sopusoinnussa sen kanssa, mitä olemme luvanneet. 810 00:51:21,660 --> 00:51:26,410 Voisit tehdä jotain tällaista - Hei, maailma - koska se on merkkijono. 811 00:51:26,410 --> 00:51:28,860 >> On selvää, että ei ole kokonaisluku. 812 00:51:28,860 --> 00:51:33,140 Eli lyhyesti sanottuna, taakka on todella meille, ohjelmoija, erityiseksi 813 00:51:33,140 --> 00:51:37,770 mitä olemme palaamassa ja sitten itse mennä noin palauttamalla sen. 814 00:51:37,770 --> 00:51:43,440 Konteksti tässä nyt on, että tietokoneen muisti on gigatavu, 2 gigatavua - 815 00:51:43,440 --> 00:51:45,920 mitä - ehkä se on enemmän, ehkä se on vähemmän, 816 00:51:45,920 --> 00:51:49,050 mutta tietokone näkee sen olevan eri osissa. 817 00:51:49,050 --> 00:51:51,200 Jotain menee sinne, jotain muuta menee sinne, 818 00:51:51,200 --> 00:51:54,290 erilaisia ​​juttuja menee keskellä, ja tänään me vain alkaa kertoa tarinaa, 819 00:51:54,290 --> 00:51:56,340 mutta me palaamme tähän ajan. 820 00:51:56,340 --> 00:51:59,980 Toistaiseksi ainoa pala muistia emme välitä on teksti segmentti 821 00:51:59,980 --> 00:52:03,360 sillä, että juuri edustaa 0 ja 1s, että clang on lähtönä. 822 00:52:03,360 --> 00:52:06,050 Joten kun suoritat komennon näppäimistön kuten a.out 823 00:52:06,050 --> 00:52:09,110 tai kaksoisnapsautat kuvaketta Mac OS tai Windows- 824 00:52:09,110 --> 00:52:11,880 ohjelma ladataan kiintolevyltä RAM 825 00:52:11,880 --> 00:52:16,330 ja se plopped yläreunassa tietokoneen RAM, niin sanoakseni. 826 00:52:16,330 --> 00:52:20,450 Samaan aikaan, kun ohjelma käynnistyy ja pääasialliset saa kutsutaan 827 00:52:20,450 --> 00:52:23,640 ohjelmassa kirjoittamasi tai ohjelman Microsoft tai Apple kirjoitti 828 00:52:23,640 --> 00:52:27,860 sen paikallisten muuttujien päätyvät sinne alareunassa tietokoneen muistiin. 829 00:52:27,860 --> 00:52:33,230 Mutta jos tärkeimmät puhelut toiseen toimintoon että itse on muuttujia tai väitteitä, ne päätyvät sen yläpuolella. 830 00:52:33,230 --> 00:52:36,680 Ja jos tämä funktio kutsuu jotain, ne päätyvät sen yläpuolella, sen yläpuolella, sen yläpuolella. 831 00:52:36,680 --> 00:52:41,460 >> Ja vain kerran toiminto tapahtuu täytäntöönpanovaltion ei pinon tarjottimia, niin sanoakseni, 832 00:52:41,460 --> 00:52:43,240 alkavat saada vähemmän ja vähemmän. 833 00:52:43,240 --> 00:52:48,250 Ja tämä on mitä sitten, pähkinänkuoressa, selittää soitat kuutio 834 00:52:48,250 --> 00:52:51,550 tai soitat lisäys, olet ohimennen kopion arvosta. 835 00:52:51,550 --> 00:52:55,520 Ja mitä se tarkoittaa kuvallisesti että olet kirjaimellisesti kirjallisesti numero 1 836 00:52:55,520 --> 00:53:00,460 toisessa osassa muistia, muuttuvat, että 1-2 tapauksessa kasvu 837 00:53:00,460 --> 00:53:04,820 tai 8 tapauksessa kuution ja sitten heittää että muisti pois 838 00:53:04,820 --> 00:53:09,140 kun lisäys tai datakuutiofunktioiden palaa. Kysymys. 839 00:53:09,140 --> 00:53:12,900 [Opiskelija] Missä globaaleja muuttujia säilytetään? 840 00:53:12,900 --> 00:53:18,100 Global muuttujat tallennetaan mitä tällä hetkellä kutsutaan alustetaan tiedot tai alustamattoman tiedot, 841 00:53:18,100 --> 00:53:21,920 erona jos sinulla on globaali muuttuja ja liität sen heti arvo 842 00:53:21,920 --> 00:53:24,640 kanssa yhtäläisyysmerkkiä, se päätyy huipulla siellä, 843 00:53:24,640 --> 00:53:29,200 ja jos vain sanoa int x; ilman arvoa, se päätyy hieman pienempi RAM 844 00:53:29,200 --> 00:53:31,710 yksinkertaisesti yleissopimuksessa. 845 00:53:31,710 --> 00:53:34,940 Muita kysymyksiä? Selvä. 846 00:53:34,940 --> 00:53:37,340 Joten tämä kuva tulee takaisin kun saamme tehokkaampi 847 00:53:37,340 --> 00:53:39,170 mitä voimme tehdä tietokoneella, 848 00:53:39,170 --> 00:53:42,720 mutta nyt, otetaanpa lyhyt esittely salausta, 849 00:53:42,720 --> 00:53:46,080 tietyntyyppisen salausta, joka ei ratkaise kaikkia maailman ongelmia 850 00:53:46,080 --> 00:53:47,720 mutta ei ratkaista joitakin niistä. 851 00:53:47,720 --> 00:53:51,700 Tässä tapauksessa täällä, meillä on jotain kutsutaan salaisen avaimen salausta. 852 00:53:51,700 --> 00:53:56,410 Secret-avaimen salausta, kuten nimestä voi päätellä, johtuu se turvaa salaisuus. 853 00:53:56,410 --> 00:54:00,690 >> Esimerkiksi, jos olit takaisin alakoulussa ja olit kulkee pieni salaisuus rakkauskirje 854 00:54:00,690 --> 00:54:04,850 sen poika tai tyttö olit murskaus päälle, jos halusi siirtää tämän muistion läpi yleisölle, 855 00:54:04,850 --> 00:54:08,380 luultavasti ei kirjoita tällaista huomautuksen Englanti tai mikä tahansa äidinkieli on. 856 00:54:08,380 --> 00:54:13,340 Pikemminkin, saatat salata sitä tai ehkä vain lähettää heille tekstiviestin näinä päivinä. 857 00:54:13,340 --> 00:54:15,460 Mutta ehkä todella välittää heille huomautuksen koko luokkahuoneessa. 858 00:54:15,460 --> 00:54:18,700 Ja tehdä tämän turvallisesti siten, että ystävien ja opettaja 859 00:54:18,700 --> 00:54:22,650 eivät tiedä, mitä olet kirjallisesti, saatat keksiä melko yksinkertainen algoritmi, 860 00:54:22,650 --> 00:54:25,920 Nuoret vaikka saatat olla vain ryntäily sanat. 861 00:54:25,920 --> 00:54:28,130 Joten kirjoittamisen sijaan voit kirjoittaa b, 862 00:54:28,130 --> 00:54:30,220 sijaan b saatat kirjoittaa C, 863 00:54:30,220 --> 00:54:32,140 sen sijaan, että c saatat kirjoittaa d, ja niin edelleen. 864 00:54:32,140 --> 00:54:34,360 Tai voit keksiä entistä kehittyneempiä käännös 865 00:54:34,360 --> 00:54:36,720 kirjeitä eri kirjaimia. 866 00:54:36,720 --> 00:54:39,740 Mutta saalis on poika tai tyttö, jolle olet lähetät tämän huomautuksen 867 00:54:39,740 --> 00:54:45,020 tarvitsee tietää jotakin, mikä on mitä, ilmeisesti? >> [Opiskelija] Mitä aiot lähettää. 868 00:54:45,020 --> 00:54:49,720 Mikä salaisuutesi on, kuin mitä se kartoitus n ja b: n ja c: n ja D: n. 869 00:54:49,720 --> 00:54:54,650 Onko se vain lisäämällä 1 kullekin kirjeitä mennä ja b, b ja c? 870 00:54:54,650 --> 00:54:56,670 Onko se monimutkaisempaa kuin? 871 00:54:56,670 --> 00:55:01,540 >> Joten sinun ja murskata tarvitsevat tätä salaista tietoa, 872 00:55:01,540 --> 00:55:03,190 mutta siellä on eräänlainen catch-22 täällä. 873 00:55:03,190 --> 00:55:06,830 Jos tämä on ensimmäinen kerta, kun lähetät tämän rakkauskirje kautta luokka, 874 00:55:06,830 --> 00:55:10,720 miten on, että poika tai tyttö tulee tietää, mitä salaisuus edes on? 875 00:55:10,720 --> 00:55:13,930 Niin salainen avain crypto ei ratkaise kaikkia maailman ongelmia, 876 00:55:13,930 --> 00:55:16,320 ja siellä todella suhde tässä, että me palaamme kohti lukukauden lopussa. 877 00:55:16,320 --> 00:55:25,110 Samoin useimmat meistä eivät tiedä joku, joka toimii esimerkiksi osoitteessa Amazon.com, 878 00:55:25,110 --> 00:55:28,190 ja vielä monet meistä ovat luultavasti ostanut tavaraa Amazon.com, 879 00:55:28,190 --> 00:55:31,990 ja olemme opetettu olettaa, että nämä verkkokauppatapahtumia ovat turvallisia. 880 00:55:31,990 --> 00:55:36,470 URL luultavasti sanoo https, siellä ehkä typerä pikku munalukkokuvake jonnekin, 881 00:55:36,470 --> 00:55:39,930 olemassa jonkinlainen salausta turvata luottokorttisi tiedot 882 00:55:39,930 --> 00:55:42,160 sinun ja Amazon.com. 883 00:55:42,160 --> 00:55:45,430 Ja vielä jos salaus liittyy tietää joitakin salaisia 884 00:55:45,430 --> 00:55:48,620 ja vielä en tiedä ketään Amazon ja olen varmasti ole järjestetty minkäänlaista salaisuus 885 00:55:48,620 --> 00:55:52,710 jonkun Amazon, miten tietokone tai selain tekee tämän? 886 00:55:52,710 --> 00:55:55,720 On käynyt ilmi, on olemassa muita salausta kokonaan, että ongelma ratkaistaan. 887 00:55:55,720 --> 00:55:57,670 Mutta nyt, me keskitymme yksinkertainen 888 00:55:57,670 --> 00:56:00,290 jossa voit järjestää etukäteen tietää joitakin salaisia 889 00:56:00,290 --> 00:56:03,760 kuten +1 tai jotkut kartoitus n ja B: n. 890 00:56:03,760 --> 00:56:05,840 Ja prosessi salauksen liittyy yleensä tätä. 891 00:56:05,840 --> 00:56:08,620 Sinulla on joitakin pelkkää tekstiä, kuvattu täällä vasemmalla 892 00:56:08,620 --> 00:56:12,930 te ajaa se läpi jonkinlaisen algoritmin tai menettelyn salaamiseen sitä - 893 00:56:12,930 --> 00:56:15,100 Ehkä se on vain muuttuu b, b muuttuu c - 894 00:56:15,100 --> 00:56:17,490 ja sitten voit päätyä salakieli. 895 00:56:17,490 --> 00:56:20,380 Samalla kun ihastus saa tämän salaisuuden huomautuksen, 896 00:56:20,380 --> 00:56:24,200 hän on sitten purkaa se yleisesti peruutettaessa että algoritmi 897 00:56:24,200 --> 00:56:27,190 jotta saat takaisin tekstimuodossa. 898 00:56:27,190 --> 00:56:28,960 On olemassa fyysinen inkarnaatioihin tämän. 899 00:56:28,960 --> 00:56:31,680 >> Esimerkiksi tämä on pieni salaisuus dekooderi rengas, 900 00:56:31,680 --> 00:56:35,110 ja tämä on rengas siinä mielessä, että siellä on kaksi soittaa täällä. 901 00:56:35,110 --> 00:56:38,490 Ulkopuolella kehän tämä asia, siellä on kirjaimet A-Z, 902 00:56:38,490 --> 00:56:40,340 vaikka he satunnaisessa järjestyksessä, 903 00:56:40,340 --> 00:56:42,880 ja sisäpuolella, siellä on todella joitakin numeroita 904 00:56:42,880 --> 00:56:46,620 niin että tämä rengas voi tavallaan kääntää ulkopuolelta, mutta ei sisällä 905 00:56:46,620 --> 00:56:49,140 jotta riviin numeroita kirjaimia. 906 00:56:49,140 --> 00:56:53,020 Alkaen elokuvan nimeltä Christmas Story, huomaat että pikku Ralphie 907 00:56:53,020 --> 00:56:58,000 oli niin innokas selvittää, mitä Pikku Orphan Annie salaisuus viesti oli hänelle 908 00:56:58,000 --> 00:57:02,570 joka oli ilmoitettu, luulen, muodossa numeerinen viestejä vilja laatikko 909 00:57:02,570 --> 00:57:07,220 ja sinun piti kerätä kaikki pikku kortit tuli vilja-ruutuun 910 00:57:07,220 --> 00:57:09,770 sinun piti postittaa ne, sinun piti saada takaisin salaisuus dekooderi rengas 911 00:57:09,770 --> 00:57:13,910 joten voit vihdoin selvittää, mitä kartoitus on kirjainten ja numeroiden 912 00:57:13,910 --> 00:57:15,550 tai kirjaimia ja kirjaimia. 913 00:57:15,550 --> 00:57:19,520 Miten tietokone voimme edetä toteuttamisessa tai edustavat asioita, kuten tämä? 914 00:57:19,520 --> 00:57:22,560 Tarvitsemme tapa ilmaista itseämme hieman joustavammin 915 00:57:22,560 --> 00:57:25,080 kuin meidän muuttujia on toistaiseksi sallittu. 916 00:57:25,080 --> 00:57:29,000 Meillä on ollut ints, meillä on ollut merkkiä, meillä oli kellukkeet ja tuplaa ja muutamat muut, 917 00:57:29,000 --> 00:57:34,200 mutta ne ovat yksittäisiä muistia, jotka eivät todellakaan anna meille ilmaista asioita 918 00:57:34,200 --> 00:57:36,440 kuten sanoja ja lauseita ja fraaseja. 919 00:57:36,440 --> 00:57:38,630 Itse asiassa me olemme kutsuneet tällaisia ​​asioita jouset, 920 00:57:38,630 --> 00:57:42,660 mutta lupaamme, että tämä on todellakin vain yksinkertaistaa CS50 kirjastossa 921 00:57:42,660 --> 00:57:45,540 että olemme aikovat kuori takaisin. 922 00:57:45,540 --> 00:57:47,500 Ja niin aloitamme tehdä sitä täällä. 923 00:57:47,500 --> 00:57:49,840 Anna minun mennä eteenpäin ja avata tiedosto - 924 00:57:49,840 --> 00:57:54,100 kaikki nämä tiedostot ovat, kuten tavallista, online - kutsuttu array.c 925 00:57:54,100 --> 00:57:58,960 ratkaista ongelma liity merkkijonoja vaan maalaa kuvaa täällä 926 00:57:58,960 --> 00:58:01,520 miten voisimme käyttää jotain kutsutaan array. 927 00:58:01,520 --> 00:58:04,050 >> Array on tietotyyppi. 928 00:58:04,050 --> 00:58:10,730 Se on tyyppiä muuttujan tapaisena, jossa on useita pienempiä tietotyypit sen sisällä 929 00:58:10,730 --> 00:58:12,680 takaisin takaisin takaisin takaisin. 930 00:58:12,680 --> 00:58:16,980 Niinpä esimerkiksi, jos haluamme kirjoittaa pieni ohjelma, joka antaa sinulle tietokilpailu keskimäärin 931 00:58:16,980 --> 00:58:19,780 kurssille kuten 50, joka on 2 tietokilpailuja, 932 00:58:19,780 --> 00:58:23,450 voit helposti kirjoittaa tämä ohjelma perustuu edes joitakin viime viikolla materiaali 933 00:58:23,450 --> 00:58:28,830 käyttämällä GetInt ja pari muuttujat: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Ja se on melko yksinkertainen. 935 00:58:30,550 --> 00:58:33,500 Se on ehkä 10, 20 riviä koodia max toteuttaa ohjelman 936 00:58:33,500 --> 00:58:38,940 joka kysyy käyttäjältä 2 tietovisan tulokset ja sitten laskee niiden keskiarvon 937 00:58:38,940 --> 00:58:42,020 lisäämällä ne yhteen, jakamalla 2, ja sitten tulostaa tuloksia. 938 00:58:42,020 --> 00:58:46,400 Voisimme ehkä tehdä melko helposti nyt jonkin ajan minuutteina. 939 00:58:46,400 --> 00:58:49,450 Mutta ongelma on, että oletetaan, että 50 oli 3 tietokilpailuja tai 4. 940 00:58:49,450 --> 00:58:52,830 Oletetaan, että halusitte käyttää samaa ohjelmaa luokka, joka oli viikoittain tietokilpailuja. 941 00:58:52,830 --> 00:58:55,100 Ajattele luokka, joka on viikoittain tietokilpailuja. 942 00:58:55,100 --> 00:58:58,840 Jos on 16 tai niin viikkoa lukukauden, nyt sinulla on 16 muuttujaa: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 Heti kun alkaa nähdä tämän redundanssin tämä kopioimalla koodin, 945 00:59:06,870 --> 00:59:09,810 sen pitäisi alkaa tehdä haluat siellä oli parempi tapa. 946 00:59:09,810 --> 00:59:13,610 Ja onneksi, sillä paneelit on. Joten tehdään tämä. 947 00:59:13,610 --> 00:59:16,700 Ensinnäkin haluan esitellä hyvin yksinkertainen asia, että olemme ei käytetty tähän mennessä, 948 00:59:16,700 --> 00:59:18,820 mutta näet sen satunnaisesti koodia. 949 00:59:18,820 --> 00:59:21,270 >> Tämä on se, mitä kutsutaan yleisesti vakio. 950 00:59:21,270 --> 00:59:24,410 Joten se on vakiona siinä mielessä, että tämä arvo ei koskaan muutu. 951 00:59:24,410 --> 00:59:26,450 Ihmisen yleissopimus luotaessa vakio 952 00:59:26,450 --> 00:59:30,420 on käyttää kaikkia isoja kirjaimia vain niin, että se todella erottuu koodissa, 953 00:59:30,420 --> 00:59:34,270 ja erikois että käytät C # define. 954 00:59:34,270 --> 00:59:39,970 Joten sanomme # define sitten tilaa, niin sana jota haluat käyttää vakiona nimi 955 00:59:39,970 --> 00:59:41,730 ja sitten arvo vakiona. 956 00:59:41,730 --> 00:59:44,710 Huomaa tämä eroaa määrittämällä jotain muuttuja. 957 00:59:44,710 --> 00:59:46,430 Ei ole yhtäläisyysmerkkiä, ei ole puolipiste. 958 00:59:46,430 --> 00:59:49,140 Tämä on se, mitä on yleisesti tunnettu Esiprosessorin direktiivi, 959 00:59:49,140 --> 00:59:50,840 mutta siitä lisää toisella kertaa. 960 00:59:50,840 --> 00:59:56,350 Nyt tämä luo muuttumaton arvo nimeltään tietovisat 961 00:59:56,350 --> 00:59:58,290 joiden todellinen numeerinen arvo on 2. 962 00:59:58,290 --> 01:00:02,180 Joten missä näet tietokilpailuja, tietokilpailuja, Tietokilpailut koko tämän tiedoston, 963 01:00:02,180 --> 01:00:04,230 se on vain numero 2. 964 01:00:04,230 --> 01:00:06,550 Jos katson pääasiassa nyt katsotaanpas miten tämä toimii. 965 01:00:06,550 --> 01:00:09,770 Ensin se näyttää hieman arvoituksellisesti, mutta se on kaikki jutut viikosta 1. 966 01:00:09,770 --> 01:00:12,210 Kysy käyttäjä arvosanoja. Miten teemme tämän? 967 01:00:12,210 --> 01:00:17,350 Yhdenmukaisesti 22 - tämä on todella mehukas osa - Julistan float 968 01:00:17,350 --> 01:00:23,240 mutta ei vain yhden float. Olen julistaa pikemminkin joukko liukulukuja arvot. 969 01:00:23,240 --> 01:00:27,700 Muuttuja on menossa kutsutaan laatuja, kuten ehdotetun tässä, 970 01:00:27,700 --> 01:00:31,420 mutta vain osa uuden syntaksin sitten ovat nämä hakasulkeita. 971 01:00:31,420 --> 01:00:37,280 Se, että olen sanonut float arvosanoja ja sitten alkusulkumerkki ja sitten numero - 972 01:00:37,280 --> 01:00:40,980 huomaa, jos tämä on vakio tämä on aivan kuten teimme tämän - 973 01:00:40,980 --> 01:00:46,840 Tämä tarkoittaa, "Hei tietokone, anna minulle 2 kellukkeet ja mennään yhdessä kutsuvat niitä laatuja." 974 01:00:46,840 --> 01:00:51,780 >> Tämä on toisin kuin paljon työläs prosessi, kuten tämä: float Grade1; 975 01:00:51,780 --> 01:00:54,580 float Grade2, ja niin edelleen. 976 01:00:54,580 --> 01:00:58,310 Joten array voimme toteuttaa tätä ajatusta, mutta paljon vähemmän messily, 977 01:00:58,310 --> 01:01:04,560 niin että voimme kirjoittaa 1 koodirivin sijaan, sanovat, 16 16 viikon lukukauden. 978 01:01:04,560 --> 01:01:09,060 En halua koodata 2 koska jos ajattelet tästä nyt loogisesti, 979 01:01:09,060 --> 01:01:12,560 Oletetaan ensi vuonna CS50 muutoksia 3 tietokilpailuja sijaan 980 01:01:12,560 --> 01:01:15,010 ja minulla oli numero 2 täällä, minulla oli numero 2 täällä, 981 01:01:15,010 --> 01:01:17,210 Minulla oli numero 2 täällä, numero 2 täällä. 982 01:01:17,210 --> 01:01:19,890 Se tulee hyvin ikävä ja erittäin helppo tyriä 983 01:01:19,890 --> 01:01:26,550 ja vahingossa muuttaa 1 arvoksi 3 ja kaipaamaan joitakin muita arvoa 2. 984 01:01:26,550 --> 01:01:30,660 Joten aion vaan abstrakteja tämän pois ja käyttää tätä jatkuvaa että 985 01:01:30,660 --> 01:01:32,520 Kuten nimestäkin voi päätellä, ei koskaan muutu. 986 01:01:32,520 --> 01:01:35,870 Ja nyt ei ole väliä, onko meillä erilaiset tietovisat tänä vuonna tai ensi- 987 01:01:35,870 --> 01:01:39,380 Minun täytyy vain vaihtaa se yhteen paikkaan täällä ylhäällä. 988 01:01:39,380 --> 01:01:41,230 Niin, että kaikki vakio on. 989 01:01:41,230 --> 01:01:47,100 Myös uusi käsitteellinen ominaisuus on se, että joukko. 990 01:01:47,100 --> 01:01:55,030 Joten hakasuluissa anna minulle monia kellukkeet ja antaa minulle kollektiivisesti soittaa heille arvosanoja tänne. 991 01:01:55,030 --> 01:01:56,720 Joten nyt katsotaanpas mitä aion tehdä. 992 01:01:56,720 --> 01:01:59,220 Täällä linjalla 24 on alku ja silmukka. 993 01:01:59,220 --> 01:02:03,380 >> Tämä ei oikeastaan ​​mitään fancy. Se vain käyttää tietokilpailut sijasta kovakoodatuilla numero. 994 01:02:03,380 --> 01:02:06,740 Mutta ei ole mitään älyllisesti eri siellä viime viikolla. 995 01:02:06,740 --> 01:02:11,650 Tämä on vain printf, joten printf ("Quiz #% d% d:") 996 01:02:11,650 --> 01:02:16,670 koska haluan vain tulostaa antaa minulle tentata numero 1 2 ja sitten 2 of 2. 997 01:02:16,670 --> 01:02:18,480 Joten tämä on puhtaasti esteettinen juttu. 998 01:02:18,480 --> 01:02:21,000 Mutta mielenkiintoinen osa on nyt linjassa 27. 999 01:02:21,000 --> 01:02:27,840 Jotta täyttää toinen paikkamerkit liukulukuarvo, 1000 01:02:27,840 --> 01:02:29,640 taas käyttää hakasulkeissa. 1001 01:02:29,640 --> 01:02:35,170 Tässä tapauksessa, olen käyttäen i koska tämä silmukka on aloitettu i vastaten mitä arvoa, ilmeisesti? 1002 01:02:35,170 --> 01:02:36,670 [Opiskelija] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Joten ensimmäistä iterointia tämän silmukan, se on ikään kuin kirjoitin tämän koodin, 1004 01:02:40,990 --> 01:02:46,310 mutta toisen iteroinnin tämän silmukan, se on ikään kuin kirjoitin tämän minun koodi. 1005 01:02:46,310 --> 01:02:49,970 Mutta se, että olen käyttäen muuttuja on täydellinen, koska nimensä 1006 01:02:49,970 --> 01:02:52,600 se vaihtelee sen arvo jokaisessa iteroinnissa 1007 01:02:52,600 --> 01:02:55,900 joten olen täyttämällä tämän array yksi paikalla kerrallaan. 1008 01:02:55,900 --> 01:02:57,380 Mitä tämä array näyttää? 1009 01:02:57,380 --> 01:03:01,570 Syy Piirsin super yksinkertainen suorakulmio ruudulla täällä ennen oli tästä syystä. 1010 01:03:01,570 --> 01:03:05,590 Array on vain kimpale muistin seurasi toinen kimpale muistia 1011 01:03:05,590 --> 01:03:08,570 seurasi toinen möhkäle muistia ja niin edelleen. 1012 01:03:08,570 --> 01:03:13,120 Joten jos minun joukko on kooltaan 2 tässä tapauksessa täällä, en tekisi 1013 01:03:13,120 --> 01:03:20,200 kirjoittamalla minun tietokilpailuun tulokset kuin täällä - Sain 100 tässä yksi ja sitten sain 99 tämän yhden - 1014 01:03:20,200 --> 01:03:24,970 Sitten tämä muisti ei välttämättä edes saa käyttää, koska olen vain pyytänyt tietokone 1015 01:03:24,970 --> 01:03:26,840 varten erilaisia ​​kooltaan 2. 1016 01:03:26,840 --> 01:03:28,600 Nämä neliöt ovat edelleen olemassa, eikö? 1017 01:03:28,600 --> 01:03:32,670 Sinulla on vielä 2 gigatavua RAM, vaikka olet vain pyytänyt 2 kelluu. 1018 01:03:32,670 --> 01:03:36,840 Joten ajatus paneelit on, että tietokone vie palan muistia 1019 01:03:36,840 --> 01:03:41,340 ja sitten jakautuu niiden paloitellun takaisin takaisin takaisin takaisin. 1020 01:03:41,340 --> 01:03:43,310 Ja jotta kaikki array on. 1021 01:03:43,310 --> 01:03:47,350 >> Se on yhtenäinen kimpale muistia jonka sisällä voit laittaa asioita. 1022 01:03:47,350 --> 01:03:50,700 Tämä tapahtuu niin tee vain joitakin tylsää aritmeettinen. 1023 01:03:50,700 --> 01:03:54,640 Jos minä selaa täällä, tässä minä sitten iteroida yli array. 1024 01:03:54,640 --> 01:03:58,020 Olen keksiä summattu kaikki arvot array, 1025 01:03:58,020 --> 01:04:02,470 ja sitten käytän kierroksen toimintoa täällä todella tehdä summa jaettuna tietokilpailuja. 1026 01:04:02,470 --> 01:04:06,320 Mutta minäpä heilutella kättäni tuohon koska tavallaan tarpeeksi aritmeettinen nyt. 1027 01:04:06,320 --> 01:04:08,370 Mutta kaikki tämä tekee minulle lopulta on laskemisessa keskimäärin. 1028 01:04:08,370 --> 01:04:13,580 Joten ensimmäinen tietokilpailu plus toinen tietokilpailu jaettuna 2 ja sitten tulostaa sen ulos int. 1029 01:04:13,580 --> 01:04:17,280 Mutta katsotaanpa nyt siirtymistä eri esimerkin nimeltään merkkijono1, 1030 01:04:17,280 --> 01:04:20,700 joka maalaa samanlaisen kuvan, mutta käyttäen merkkijonoja. 1031 01:04:20,700 --> 01:04:23,940 Anna minun mennä eteenpäin ja yksinkertaistaa tämä vain hetken. 1032 01:04:23,940 --> 01:04:27,090 Anteeksi sisennystä nyt. 1033 01:04:27,090 --> 01:04:30,870 Ilmoitus vastaa 19 tämän esimerkin, saan merkkijono käyttäjältä. 1034 01:04:30,870 --> 01:04:34,640 Mutta huomaa, mitä olen seuraavaksi tekemässä linjat 22 eteenpäin. 1035 01:04:34,640 --> 01:04:41,250 Olen oikeastaan ​​iteroimalla i: jopa - ja tämä on uusi temppu - strlen, merkkijonon pituus. 1036 01:04:41,250 --> 01:04:44,880 Tämä toiminto tulee C että jos ohitat sen merkkijono, 1037 01:04:44,880 --> 01:04:47,730 Se kertoo, kuinka monta merkkiä on merkkijonon. Siinä kaikki. 1038 01:04:47,730 --> 01:04:51,550 Ja että se on strlen sijasta merkkijonon pituus on vain koska se on enemmän ytimekäs. 1039 01:04:51,550 --> 01:04:55,100 Kolmekymmentä vuotta sitten, ihmiset pitivät kirjoittaa asioita niin ytimekkäästi kuin mahdollista, 1040 01:04:55,100 --> 01:04:57,630 joten olemme pitäneet kyseisen yleissopimuksen täällä. 1041 01:04:57,630 --> 01:05:00,660 i + + tarkoittaa vain kasvattaa i jokaisen iteraation. 1042 01:05:00,660 --> 01:05:02,990 Ja nyt huomaa, mikä on todella mielenkiintoinen. 1043 01:05:02,990 --> 01:05:09,180 Linjalla 24, sanon, "Computer, anna minulle merkki, 8 bittiä, ja kutsuvat sitä c." 1044 01:05:09,180 --> 01:05:12,630 Mutta mikä on tämä oikealla puolella sanovat? 1045 01:05:13,490 --> 01:05:16,530 Englanti, mitä se edustaa? 1046 01:05:16,530 --> 01:05:18,730 [Opiskelija] ensimmäinen merkki array. 1047 01:05:18,730 --> 01:05:20,790 Aivan. Anna minulle ensimmäisen merkin jono. 1048 01:05:20,790 --> 01:05:24,090 Tai yleisemmin, anna minulle nnen merkin jono. 1049 01:05:24,090 --> 01:05:26,100 Ja ymmärtää sitä tärkeää nyt, että tietotekniikan tutkijoita, 1050 01:05:26,100 --> 01:05:27,890 olemme todella laskien 0. 1051 01:05:27,890 --> 01:05:29,720 >> Sinulla ei ole harkintavaltaa nyt alkaa tehdä tätä. 1052 01:05:29,720 --> 01:05:34,160 Nyt sinun täytyy käyttäytyä mukaisesti tietokoneen odotukset ja laskea 0 1053 01:05:34,160 --> 01:05:38,180 koska [0] tulee olemaan ensimmäisen merkin merkkijono, 1054 01:05:38,180 --> 01:05:42,150 [1] tulee olemaan toinen, [2] tulee olemaan kolmas, ja niin edelleen. 1055 01:05:42,150 --> 01:05:49,720 Joten tämä ohjelma, jos kääntää se, tämä on taas string1, joten varmista merkkijono1, 1056 01:05:49,720 --> 01:05:54,670 ja nyt olen ajaa merkkijono1 minun pääteikkunassa. 1057 01:05:54,670 --> 01:05:58,330 Se odottaa syötteitä, joten aion kirjoittaa David, Anna, 1058 01:05:58,330 --> 01:06:02,540 ja nyt se tulostaa David kaikki eri riveille, koska ilmoitus mitä olen tekemässä. 1059 01:06:02,540 --> 01:06:05,820 Olen tulostetaan yksi merkki kerrallaan. 1060 01:06:05,820 --> 01:06:10,100 Emme aio mennä yksityiskohtiin tänään, mutta poistin hetki sitten tämän tarkistuksen täällä. 1061 01:06:10,100 --> 01:06:15,480 On käynyt ilmi, että jos käyttäjä on huonosti, vastavuoroisuus, tai vain hämmentynyt, 1062 01:06:15,480 --> 01:06:20,210 voit itse pysty antamaan merkkijono melko pitkään. 1063 01:06:20,210 --> 01:06:22,860 Jos osut väärään näppäintä, saatat antaa mitään string ollenkaan, 1064 01:06:22,860 --> 01:06:26,950 tai jos olet ilkeä, saatat yrittää liittää vuonna gigatavu verran essee 1065 01:06:26,950 --> 01:06:29,290 täyttämään tämän merkkijono, ja jos tietokone loppuu muisti, 1066 01:06:29,290 --> 01:06:32,710 käy ilmi, että aiomme palata tähän erityistä arvoa nimeltään NULL. 1067 01:06:32,710 --> 01:06:35,580 Joten nyt vain tietää, että tämä on erityinen arvo nimeltään NULL 1068 01:06:35,580 --> 01:06:39,580 jonka avulla voimme tarkistaa, kun olemme muisti, muun muassa. 1069 01:06:39,580 --> 01:06:45,630 Mutta jos avaan nyt merkkijono2, havaitaan yksi ero täällä. 1070 01:06:45,630 --> 01:06:48,210 Havaitaan yksi ero täällä merkkijono2. 1071 01:06:48,210 --> 01:06:51,340 Kanssa merkkijono2, tämä silmukka on hieman erilainen. 1072 01:06:51,340 --> 01:06:55,010 >> Saanen poistaa nollat ​​jotta voimme puhua niistä toisen kerran. 1073 01:06:55,010 --> 01:06:57,800 Mitä erilaista on silmukka tällä kertaa? 1074 01:06:59,620 --> 01:07:01,670 Voin palata edellisen esimerkin. 1075 01:07:01,670 --> 01:07:08,580 Niin, että versio 2, tämä on versio 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Strlen puhelu minne? 1078 01:07:16,660 --> 01:07:18,860 Se on ensimmäinen osa on silmukka. 1079 01:07:18,860 --> 01:07:21,830 Mitään ajatuksia siitä, miksi teen tätä? Joo. 1080 01:07:21,830 --> 01:07:24,560 [Opiskelija] Joten et soita funktio joka ikinen kerta. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Joten emme soita funktio joka ikinen kerta. Aivan. 1082 01:07:26,440 --> 01:07:28,300 Muistamme Silmukoiden että he super yksinkertainen 1083 01:07:28,300 --> 01:07:31,770 Kun tavallaan ymmärtää, että tämä on alustus, ehto, ja päivityksen. 1084 01:07:31,770 --> 01:07:34,750 Ongelmana on, että ehto tapahtuu jokaisen iteroinnin silmukan. 1085 01:07:34,750 --> 01:07:40,010 Ja niin tässä esimerkki tästä, mikä on huonoa, että tämä on minun ehto? 1086 01:07:40,010 --> 01:07:41,830 [Opiskelija] soitat strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] soitat strlen uudestaan ​​ja uudestaan ​​ja uudestaan. 1088 01:07:44,340 --> 01:07:47,410 Mutta kun olen kirjoittanut David, pituus merkkijonon on 5, 1089 01:07:47,410 --> 01:07:49,650 ja se ei aio muuttaa jokaisen iterointia silmukan 1090 01:07:49,650 --> 01:07:51,670 koska merkkijono on edelleen D-a-v-i-d. 1091 01:07:51,670 --> 01:07:55,320 Joten tämä on vihje mitä on tulossa yhä tärkeämpi idea 1092 01:07:55,320 --> 01:08:00,410 tunnetaan suunnittelu päätös, jossa eivät vain tee tietokoneen tehdä turhaa työtä. 1093 01:08:00,410 --> 01:08:03,920 >> Aivan kuten esimakua pset2, pset2 standardin painos 1094 01:08:03,920 --> 01:08:07,030 aikoo haastaa sinut todella toteuttaa joitakin määrä ciphers, 1095 01:08:07,030 --> 01:08:10,410 jotkut määrä salausalgoritmeja, jotta voit molemmat salata 1096 01:08:10,410 --> 01:08:13,840 ja purkaa salaisten viestien paljon kuin yksi Ralphie on dekoodattu. 1097 01:08:13,840 --> 01:08:16,810 Vuonna hakkeri painos pset2, aiomme mennä hieman pidemmälle. 1098 01:08:16,810 --> 01:08:19,649 Aiomme ojentaa sinulle tiedoston todellinen tietokonejärjestelmä 1099 01:08:19,649 --> 01:08:23,479 joka sisältää läjän käyttäjätunnusten ja todellisten salattuja salasanoja, 1100 01:08:23,479 --> 01:08:26,939 ja haaste hakkeri painos tulee olemaan murtaa nämä salasanat 1101 01:08:26,939 --> 01:08:33,200 ja selvittää, mitä salauksen tai mitä salaisuus käytettiin itse tuottaa nämä salasanat. 1102 01:08:33,200 --> 01:08:36,109 Ja me aiomme tehdä tämän käyttämällä uutta ominaisuutta täällä C 1103 01:08:36,109 --> 01:08:40,630 että minä annan sinulle vain demo tunnetaan komentorivin argumentteja. 1104 01:08:40,630 --> 01:08:44,229 On käynyt ilmi, kuten jotkut teistä ehkä nähnyt jaksossa tai oppikirjoissa, 1105 01:08:44,229 --> 01:08:48,260 tärkein ei aina tarvitse olla mitätön suluissa. 1106 01:08:48,260 --> 01:08:52,430 On käynyt ilmi, että pääasiassa voidaan kirjoittaa myös näin, kaksi argumentteja, 1107 01:08:52,430 --> 01:08:56,870 argc ja argv, jossa argc on sanojen määrä 1108 01:08:56,870 --> 01:09:00,020 että kirjoitat jälkeen ohjelman nimi komentorivi 1109 01:09:00,020 --> 01:09:03,420 ja argv on todellisia sanoja. 1110 01:09:03,420 --> 01:09:07,540 Ja kuten hakasulkeita siellä ehdottaa, argv on ilmeisesti joukko. 1111 01:09:07,540 --> 01:09:12,210 Se tulee olemaan merkkijono jälkeen merkkijono jälkeen merkkijono muistiin. 1112 01:09:12,210 --> 01:09:16,010 >> Joten mitä aiomme pystyä tekemään alkaen PSET 2 on jotain tällaista. 1113 01:09:16,010 --> 01:09:21,350 Jos teen argv1, joka on esimerkki tulemme takaisin maanantaina, ja suorita se, 1114 01:09:21,350 --> 01:09:23,370 huomaa, että se ei näytä mitään vielä. 1115 01:09:23,370 --> 01:09:25,490 Se vain tulostaa omalla nimellään. 1116 01:09:25,490 --> 01:09:31,479 Mutta jos sanon hyvästit luokka, huomaa, että tämä ohjelma ilmeisesti toistetaan 1117 01:09:31,479 --> 01:09:35,479 enemmän kuin sanat, joita kirjoitettuna kehotteeseen. 1118 01:09:35,479 --> 01:09:41,630 Ja keinoja, joilla voimme päästä sanoista että käyttäjä on kirjoittanut kehoitteeseen 1119 01:09:41,630 --> 01:09:49,160 On muuttamalla tärkein alkavat tänä viikonloppuna int main (void) int main (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 ja näin syntyy komentorivin argumentteja. 1121 01:09:52,050 --> 01:09:57,100 Ja kun saat todella hienostunut tässä, voit kirjoittaa todella trippy ohjelmat 1122 01:09:57,100 --> 01:09:59,610 kuten tämä tässä, joka menee edellä ja sen jälkeen 1123 01:09:59,610 --> 01:10:03,940 joitakin toimintoja olemme tehneet tähän mennessä, mutta kaikki melko voimakas. 1124 01:10:03,940 --> 01:10:08,950 >> Joten me lähdemme tästä tällä ruudulla, ja näemme sinut maanantaina. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]