[Musiikkia] DAVID MALAN: Selvä. Tämä on CS50, ja tämä on viikon lopussa 2. Olen niin pahoillani, etten voinut olla siellä te kaikki tänään, mutta olet hyvissä käsissä. Saanen esitellä CS50 oma Rob Bowden. ROB BOWDEN: Ja tietenkin sitten meidän on pilkata siitä että hän lähetti meille pystysuora video ja näytettävä tämä. [VIDEOTOISTOSTA] [Musiikkia] [ASKELMILLA] -Tämä Video ei on tarkasteltava tällä tavalla. Se olisi voitu estää. Sanoa ei pystysuora videoita. Pystytunnistin videoita tapahtuu, kun Pidä kamera väärällä tavalla. Videosi päättyy ylös näyttämään paska. - [MURISIJA] -On Enemmän ja enemmän ihmiset riippuvaisiksi tekemään pystysuora videoita päivittäin. Se ei halki tai ei mitään, mutta se on silti todella huono. On olemassa kaksi erilaista ihmiset jotka kärsivät kanssa VVS. Ensimmäinen ryhmä käsittelee videoita he ampuvat kuten kuvia. Ne eivät tarkoita mitään pahaa. He vain eivät ymmärrä, että kun voit kääntää kuvan, et voi todella kääntyä video. [CRASH] - [MONKEY SOUNDS] -The Muu ryhmä on ihmisiä jotka eivät anna [BLEEP]. Pystytunnistin Video oireyhtymä on vaarallista. Elokuvia on aina olleet horisontaalinen. Televisiot ovat vaakasuorassa. Tietokoneiden näytöt ovat vaakasuorassa. Ihmisten silmät ovat vaakasuorassa. Emme ole rakennettu katsella pystysuora videoita. -Rakastan Pystysuora videoita. -Nobody Välittää sinusta. -jos Tämä ongelma on puututa, sinäkin alkaa näkyä neljä videoita kerralla vain säästää kaistanleveyttä. -Letterboxed Pystysuora videoita olisi olla koko postimerkki. -Ja Se leviää kaikkialle. Valkokankaat ovat aina olleet horisontaalinen. Jos pystysuora videoita tullut Hyväksytyt, elokuvateatterit on oltava pitkä ja laiha. -Ja Kaikki elokuvateattereissa olisi täytyy päästä purettiin ja rakennettiin uudelleen. Ja kun he olivat uudelleen, Mila Kunis olisi vanha ja ruma. -Birds Kaatuu niihin ja kuolla. -We'll Kaikki saavat jäykkä kaulaa alkaen etsimisessä. -Ja Kukaan ei istu Eturivissä enää koskaan. -George Lucas uudelleen julkaisu Star Wars again-- laiha painos. -Olin Koskaan kertoa tarina, että halusin kertoa. Tämä oli loistava tilaisuus minulle kokeilla uutta teknologiaa. -Olet Ääliö. -Joka Ajan mobiililaite käytetään tallentaa videokuvaa, houkutus on siellä. Vain sanoa ei. Sanoa ei George Lucas. Sano ei vanha Mila Kunis. Sanoa ei pystysuora videoita. -Ja Jos näet jonkun tehdä se, sanovat, "Et ole ammunta tätä oikeutta nuken!" [Musiikkia] [Lopeta toisto] [APPLAUSE] [AUDIO OUT] ROB BOWDEN: --simple muodossa salausta, joka on periaatteessa salaus ja salauksen salaisten viestejä. Joten tässä meillä on erittäin yksinkertainen lelu. Ja ajatus on ulkokehällä kiertää sisärengas. Ja voit nähdä, ehkä jos voin zoomata vuonna, that-- on vaikea nähdä. Mutta, kuten, numero 1-- hyvin, että siirretty. Numero 1 Kartat kirjeeseen X, numero 2 karttoja kirjeen J. uskomattoman vaikeaa ei hypätä eteenpäin. Kirje 2 kartat J. Numero 3 karttoja D. Joten Tämän rengas voit antaa joku viesti 1, 2, 3. Jostain syystä halua kertoa heille XJD. Mutta voit antaa heille jotkut viesti numeroita, ja niin kauan kuin ne ovat tämän sormuksen, ne voi purkaa mitä yrität sanoa. Joten ehkä nähnyt tämän Erityinen esimerkki salakirjoituksen ennen jos noin joulun olet katsonut Joulutarina. Jos et ole koskaan nähnyt sitä ennen, sitten vain päälle TBS klo kirjaimellisesti tahansa jouluaattona, koska ne vain näyttää sen takaisin takaisin takaisin takaisin takaisin koko päivän. Ja asiaa videon on tämä. [VIDEOTOISTOSTA] -Ole Se tiedetään iikka että Ralph Parker on täten nimitetty jäsen Pikku Orphan Annie Secret Circle ja on oikeutettu kaikkiin kunnianosoitukset ja hyödyt ilmenevät siihen. Allekirjoitettu Little Orphan Annie. Varmentaa Pierre Andre musteella! Honors ja hyödyt jo yhdeksän vuoden iässä! [Huutaa Radio] -Come Päälle. Mennään sen kanssa. En tarvitse kaikki muu noin salakuljettajia ja merirosvoja. : Kuuntele huomenna yö päätös- seikkailu Black merirosvolaiva. Nyt on aika Annien salainen viesti sinulle jäsenet Noitapiiri. Muista lapset, vain jäsenille Annie Secret Circle voi purkaa Annien salainen viesti. Muista, Annie on kiinni sinusta. Aseta nastat B2. Tässä on viesti. 12. 11. 2. -Olen Minun ensimmäinen salaisen kokouksen. -25. 14. 11. 18. 16. -Voi, Pierre on suuren äänen tänään. Voisin kertoa, että illan Viesti oli todella tärkeä. -3. 25. Se on viesti Annie itse. Muista, älä kerro kenellekään. -Viisi Sekuntia myöhemmin, olen vain huoneeseen, jossa poika yhdeksän voisi istua rauhassa ja purkaa. Ahaa! B! Menin seuraavaksi. E. Ensimmäinen sana on "olla." S. Se oli tulossa helpompaa nyt. U. 25. Se R. -Come On, Ralphie! Olen mentävä! -Otan Olla alas, Ma! Jannu hurahtaa. T. O. "Muista" - varmasti mitä? Mikä oli pienen orvon Annie yrittää sanoa? Muista mitä? -Randy On mentävä! Voisitteko tulla ulos? -Kaikki Oikeassa, äiti! Tulen heti! Olin lähestyy nyt. Jännitys oli kauhea. Mitä se oli? Kohtalo planeetta voi vaakalaudalla! -Ralphie, Randy täytyy mennä! -Otan Olla oikealle ulos, itkeä ääneen! Melkein perillä! Sormiani lensi. Mieleni oli teräs ansa. Jokainen pore tärytetään. Se oli melkein puhdas! Kyllä. Kyllä. Kyllä. Kyllä. Muista juoda Ovaltine. Ovaltine? Kurja kaupallinen? Paskiainen. [Lopeta toisto] ROB BOWDEN: Niin, että miten Ovaltine liittyy salausvälineisiin. Periaatteessa CS50 vain mainostettu Ovaltine, jotta voisimme olla kurja mainoksessa Ovaltine. Selvä. Joten nyt todellinen tietojenkäsittelytiede. Muista maanantaina jäimme sukellus syvemmälle jousille. Joten olimme tekemisissä merkkijono "Zamyla." Ja olimme tunnustaa että voimme käsitellä "Zamyla" kuin merkkijono. Ja muistaa, että olemme oppineet kiinnike merkintä. Joten jos tämä säilytettiin merkkijono "s", sitten jos sanoimme s kiinnike 0, joka osoittavat kirjain pääoma Z. Ja jos me sanoi s kiinnike 1, että osoittaisi ensimmäisen pieniä, ja niin edelleen jopa s kiinnike 5, mikä osoittaisi viimeinen. Nyt muistaa, että pituus tämä merkkijono on 6, mutta indeksit osaksi merkkijonon 0 kautta 5, Z läpi kestää. Joten tämä nyt sopii isompi kuva tietokoneen muistiin, RAM. Joten jonnekin ohjelma käytät tietokoneen tarvitsee muistaa Zamyla jossain muistissa. Joten voin olla vapaaehtoinen? Kyllä kiitos. Ja mikä on nimesi? DEAN: Dean. ROB BOWDEN: Dean? Hauska tavata, Dean. Tule tänne, ja me aiomme olla piirtää meidän mukava näppärä ulkoasu muistia. Nyt Haluan ajatella muistia yhtenä pitkä kaistale tavua, mutta vain näyttötarkoituksiin me will eivät vain vasemmalta oikealle, ylhäältä alas. OK? Joten aion näyttää program-- Getstrings.c. Ja niin kaikki tämä ohjelma on teet pyytää neljä jousille käyttäjän kanssa GetString ja sitten tulostus mitä se ensimmäinen merkkijonon tuli oli. Olemme unohdetaan kaksi neljän. OK. Joten tänne now-- kun Olen ensimmäinen pyyntö S1. Joten olet tietokone. Ja olet täytäntöön GetString. Joten pyydät merkkijono minua, ja minä sanon, OK, Dean. Anna merkkijono "Dean." Joten jossain muistia täytyy muistaa "Dean." Joten kirjoita se muistiin jonnekin. Täydellinen. OK. Joten nyt olemme s2. Ja s2 tulee olemaan pyyntö GetString. Joten aion tulla merkkijono. Aion tulla "Hannah." Joten kirjoita "Hanna" jonnekin muistiin. Joo. -H. OK, joten nyt s3. Ja se tulee olemaan toinen pyytää GetString. Ja niin nyt syötä "Maria." Selvä. Ja sitten on vielä yksi pyyntö GetString, S4. Joten, en tiedä. Entä me mennä antidisestablishmentarianism. Niin kirjoita se muistiin. Joo. Niin vain tehdä "Rob." OK. Joten nyt explain-- miksi jätät nämä tilat? Miksi sinulla on tämä tyhjä tilaa täällä, täällä ja täällä? Kyllä. Joten huomaa kun menen tulostaa s1-- joten jos me oli "Hannah" käynnissä asti vieressä "Dean," mistä me tiedämme milloin merkkijono "Dean" päättyy? Joten tulostus merkkijono s1 voi olla vain painettu "DeanHannahMariaRob" jos sillä ei ole mitään hajuakaan milloin "Dean" tosiasiallisesti päättyy. Selvä. Joten muistiin miten me oikeastaan edustavat tätä lopussa merkkijonon on kanssa kenoviiva nolla. Joten tämä tila on juuri sitä, mitä halusimme. Sen pitäisi olla kenoviiva nolla. Tämä on kenoviiva nolla, ja tämä on kenoviiva nolla. Ja voit olla upea palkinto siitä, että täydellinen vapaaehtoinen. Ota stressipallo! OK. Joten tämä merkki kenoviiva nolla on miten loppu ilmoitetaan merkkijonon. Se miten kun kuhunkin ohjelmaan haluaa tulostaa merkkijonon, se how-- muista opimme strlen toiminto viime viikolla? Merkkijonon pituus? Se miten merkkijonon pituus pystyy määrittää, kuinka kauan merkkijono on. Se vain pitää iteroimalla yli merkkiä kunnes se löytää kenoviiva nolla merkki. Joten tärkeintä ymmärtää noin kenoviiva nolla merkki on se edustaa kaikki nollia bitteinä. Niin huomaa, että tämä on eri alkaen nolla merkki. Joten nolla merkki, jos muistat esimerkissä että hän antoi lopussa Luennon jossa merkkiä kartta to-- kuten pääoma karttoja 65. Pieniä karttoja 97. Pieniä b olisi 98. Joten numero 0 kartat to-- en tietää päältä pääni. 44 tai 45. Jossain kyseisellä alueella. Joten merkki 0 on todellinen määrä. Mutta kenoviiva nolla karttoja kaikki nollaan bittiä. Joten ei eroa välillä kenoviiva nolla, joka soitamme null terminaattori. On eroa kenoviiva nolla ja merkki nolla. Selvä. Joten puhua vähän enemmän jousille. Joten sitten näemme täällä näin se olisi säädettyihin muistiin. Joten tämä ajatus jousille sarjana on characters-- joten virallisesta tietokannasta sciency termi sekvenssi on jono. Joten kutsuisimme merkkijono joukko merkkiä. Ja on todella muita tietoja tyypit, jotka voimme tehdä paneelit pois. Joten motivoida tähän, katsokaa esimerkki. Me kutsumme sitä ages0.c I will kopioi ja liitä meidän malliin. OK. Joten tässä ohjelmassa, mitä me haluat tehdä, on napata ikä kolme opiskelijoiden kurssin. Joten me tiedämme int age-- ja nyt aion sanoa 0. Joten kannattaa sanoa age1, mutta tarkoituksiin näemme hyvin pian, Sanon int age0 vastaa GetInt. Joten sama puhelun GetInt että olemme käyttäneet I eivät sattuvat olemaan kehotukset sanomalla, "anna minulle ikä." Mutta vain pyytää sitä. Ja age1 vastaa GetInt. Ja int age2 yhtä suuri kuin GetInt. Joten, jälleen, kolme opiskelijaa, mutta lopulta muuttuja indeksit ovat age0 kautta age2. OK. Joten tämä ohjelma tekee mitä haluamme kanssa age0, age1, ja age2, mutta tämä ohjelma lopulta toimii kolme opiskelijaa. OK. Joten nyt, mitä jos haluan neljä opiskelijaa? No, aion mennä takaisin minun koodi, vaihtaa kommentti, ja nyt meillä on int iästä lähtien3 vastaa GetInt. OK. Niin kuka näkee ongelma? Mikä on ongelma tämäntyyppisiä setup? Joo. Joo. Joten Luomme muuttuja jokaiselle opiskelijalle. Nyt toimii, mutta lopulta mitä jos minä nyt sanoa, "Haluan napata ikä kahdeksan opiskelijaa tai 16 opiskelijaa tai kuitenkin monet opiskelijat sadat opiskelijat CS50 tai tuhannet opiskelijat kampuksella tai miljardit ihmiset maailmassa? Joten lopulta tämä ei ole kestävä. Aina kun näet itsesi kopioit ja liittämällä koodi näin, sinun pitäisi yleensä tuntevat että on olemassa parempi tapa. Joten tämä on, jos esittelemme array ilmoitus. Joten kun julistaa array, tämä on mitä yleinen muoto on menossa näyttämään. Aiomme sanoa tyyppi. ja sitten me aiomme antaa nimi että array, aivan kuten me määrittelemme tahansa muuttuja. Ja sitten lopuksi käytämme tämä kannatin merkintätapa uudelleen mutta poikkeavasti kuinka käytimme sitä aikaisemmin. Joten tässä tämä näyttää normaali muuttuja ilmoitus, että olemme nähneet. Joten olemme nähneet int x puolipisteellä ennen. No nyt voisimme nähdä jotain kuten int x suluissa 5. Ja laittoi idean GetInt ohjelma, me have-- jotta voimme toteuttaa Tämän samalla tavalla. Sanotaan CS meillä on tapana käyttää N koska määrä jotain. Joten tässä me aiomme tallentaa neljä opiskelijaa. Ja nyt voimme sanoa int ikä kiinnike n- ole aivan saada se yet-- julistaa joukko neljä opiskelijaa. Joten miten tämä näyttää vuonna muisti on samanlainen. Tyhjentää. Ja me aiomme olla jonnekin vuonna memory-- laitan tämän sinne. Joten jossain muistissa. Yksi kaksi kolme neljä. Meillä on neljä kokonaislukuja peräkkäin Tämän johdosta neljä kokonaislukuja. Joten, tällä hetkellä, mikä on koko yksi näistä laatikoista? Joo. Se on neljä tavua. Se on 32 bittiä. Joten nyt tämä on erilainen alkaen array että olemme näki aiemmin, joukko merkkejä. Merkkijono jokainen laatikko oli vain yksi tavu, koska merkki on vain yksi tavu. Mutta jossa joukko kokonaislukuja, kukin laatikko on oltava neljä tavua järjestyksessä sopimaan koko kokonaisluku. Joten tämä on mitä joukko neljä ints näyttäisi. Ja sitten takaisin koodia. Nyt haluamme todella tallentaa kokonaislukuja tuohon array. Joten nyt tämä on hyvin, hyvin, hyvin yhteinen malli, joka tulee jossain vaiheessa tullut lihasmuistia. Joten int i on yhtä kuin 0. i vähemmän kuin n. i plus plus. Ikäryhmässä i on yhtä GetInt. Joten tämä silmukka, tätä muotoa, sinun pitäisi saada kovin käytetty. Joten tämä on yleensä miten me kerrata yli lähes kaikki array. Huomaa nyt tällainen selittää alusta alkaen meillä ei ollut silmukoita menossa int i on 1, i on pienempi tai yhtä suuri kuin 10. Syynä on se, että alkaen nolla tekee tätä työtä hyvin paneelit. Joten paneelit ovat nolla indeksoitu. Jos tämä joukko on pituus 4, indeksit ovat 0 kautta 3. Joten läpi ensimmäisen iteraatio tämän silmukan aiomme olla asettaa ikä kiinnike 0 vastaa puhelun GetInt. Joten mitä satuin tultava näppäimistö. Toisessa pass, olemme jossa age1 yhtä GetInt. Kolmannen läpikulun, age2. Lopullinen pass iästä lähtien3. Joten jos ensikierron silmukan Astun numero 4 on näppäimistö, sitten me lisätä 4 täällä. Jos toisessa läpiviennissä syötän 50, me laitamme 50 täällä. Kolmantena pass voisin kirjoita negatiivinen 1, negatiivinen 1, ja sitten lopulta jos syötän 0-- ja nyt muistaa, että tämä oli indeksi kolme. Kun olemme silmukka takaisin, i on aiotaan kasvaa 4. i on ei enää ole pienempi kuin n, joka on 4. Ja murramme ulos silmukan. Joten mikä olisi vikaa? [Äänetön]? Yleisö: [äänetön] Kyllä. Joten array vain on neljä paikkaa, mikä tarkoittaa indekseinä 0 kautta 3. Joten jos näin on, olisin ottaa arvoon 4 jossain vaiheessa. ikäryhmässä 4 tulee asettaa mitä sattuu olemaan täällä mitä minun on sanottava, kirjoita 6. Joka tulee olemaan Asettamalla tämän 6. Mutta emme tiedä mitä täällä. Tämä ei ole muisti että meillä oli pääsy. Joten jos muistat edellinen luento, hän tulostamisen arvot Zamyla ja jossain vaiheessa hän osui tämä segmentointi vika. Joten luultavasti näkemään monet segmentointi vikoja kun toteuttaa joitakin ongelma sarjaa. Mutta tämä on yksi niistä tavoista, joilla voit kohdata segmentointi vika, kun aloitat päästä muisti tavoilla että sinun ei pitäisi olla. Joten meillä ei ole pääsyä tämä paikka ja tämä on virhe. Joten tämä on parempi. Nyt on vielä pieni ongelma tämä koodi. Ja se on pohjimmiltaan, että olemme edelleen jumissa neljä opiskelijaa. Nyt jos haluan käyttää kahdeksan opiskelijaa, OK. Se ei ole niin iso juttu. Voin mennä, muuta kommentoida, ja vaihtaa n. Nyt tämä toimii kahdeksan opiskelijaa. Jos minä kokoaa ja ajaa tämä, se näyttää me-- se pyytää kokonaislukuja kahdeksan opiskelijoille ja se vain toimii. Mutta se on vähemmän kuin ihanteellinen tarvitse kääntää ohjelma joka ikinen kerta Haluan muuttaa opiskelijoiden että haluan tulla ikuisuuden. Joten lopullinen parannus Tämän, kuten tulemme näkemään here-- olemme menossa pyytää joukko ihmisiä. Täällä meillä on useita ihmisiä huoneissa tai vuotiaita henkilöä huoneessa. Mutta aiomme pyytää numero ihmiset huoneessa käyttäjältä. Joten tämä on täsmälleen sama tee-aikaa silmukka että olemme nähneet aiemmin. Se on täsmälleen sama do-while-silmukka, että olet voidaan toteuttamasta Harjoitus. Niin kauan kuin ne ovat kirjoittamalla n alle 1, joten siellä täytyy olla osoitteessa ainakin yksi henkilö huoneessa. Niin kauan kuin he ovat kirjoittamalla n alle 1, sitten me aiomme pitää kysyä uudelleen. Anna numero ihmisiä huoneeseen. Nyt, kun meillä on numero ihmisiä room-- joten voisin tulla, että 200 ihmistä tässä huoneessa. Sitten täällä aiomme tulla ja julistaa taulukon koko 200. Olemme julistaa array, joka on mahduttava 200 ikäisille. Tulossa alas, se on silmukka että saat hyvin käytetään. Joten iteroimalla yli tämän taulukon, jossa kullekin sijainti että joukko kokonaisluku, ja sitten lopulta täällä olemme juuri esimerkki iteroimalla yli että array, ei määrittää arvot, mutta käyttää arvoja. Joten tänne näemme, että me sanovat, vuoden päästä, henkilö% i on% i vuotias, jossa ensimmäinen% i on i + 1. Joten i on tämä indeksi muuttuja. Ja toinen% i tulee olemaan tallennettu arvo aikojen array plus 1. Joten tämä plus 1 on vain koska olemme saying-- tämä plus 1, iät i plus 1. Tämä plus 1 on vain koska olemme sanomalla, vuoden päästä henkilö on tämä vanha. Miksi tämä i + 1? Miksi meillä on plus 1 siellä? Joo. Kyllä. Joten muistakaa taulukot ovat nolla indeksoitu. Jos siis tulostat tämän ulos joku vain lukea tuotos, niin luultavasti he haluavat nähdä jotain kuten henkilö yksi, henkilö numero yksi, on 20 vuotias. Henkilö numero kaksi on 15-vuotias. He halua nähdä henkilö numero nolla on 15 vuotta vanha. Joten laadinnassa ja vain nähdä, mitä se näyttää like-- Luo tilaa. Tee ikäisille kokoaa. Running ikäisille. Näemme ihmisten määrä huoneeseen. Niin minä sanon on kolme henkilöä huoneessa. Age of henkilö numero yksi, sanokaamme 15, 20, 25. Ja nyt minä sanon vuosi nyt ne ovat 16, 21, 26. Katsotaanpa että tämä toimii n, joka ei ole yhtä suuri kuin 3. Joten jos sanon määrä ihmisiä on 5, yksi, kaksi, kolme, kaksi, yksi, vuoden päästä he ovat kaksi, kolme, neljä, kolme, kaksi vuotta vanha. Niin voisin yhtä helposti voinut n olla 10000. Nyt aion istua täällä melko syöttäessäsi ikäisiä, mutta tämä toimii. Joten nyt muistiin jonnekin me on taulukon koko 10000, niin lopulta 40000 tavua, koska on neljä tavua kullekin näistä kokonaislukuja. Joten ei joukko koko 10000 missä voimme tallentaa iät näiden 10000 ihmistä. Selvä. Kysyttävää tästä? Joo. Mitä jos annoit negatiivisen luvun? Katsotaan mitä tapahtuu. Joten tässä nimenomaisessa case-- numero ihmiset huoneessa, negatiivinen. Se hylkäsi tämän, koska täällä meillä tapahtua voidaan käsittely sitä, että jos n on alle aiomme kysyä uudelleen. Jos yrität julistaa joukko negatiivinen koko, se yleensä ei toimi. Joten kokeilla. Katsotaanpa sivuuttaa riippumatta arvo he tulo n ja vain sanoa int ikäisille kielteinen. Katsotaanpa, jos se edes kokoaa. Minä en ole varma. Ei. Joten ikäisille on ilmoitettu array negatiivinen koko. Joten etukäteen se tunnistaa array voi olla negatiivinen koko ja hylkää sen. Nyt, jos emme käsittele tämä do-while-silmukka oikein, jos emme tarkkailun jos n on pienempi kuin 1-- Sanotaan vain ei ollut tätä ollenkaan ja sen sijaan me vain napata kokonaisluku. Ei ole väliä mitä se kokonaisluku on, me julistamme joukko, joka koko. Joten kääntäjä ei voi mahdollisesti valittavat nyt. Jos minä koota this-- joten se ei voi valittaa, koska se ei voi tietää, että olen menossa syöttää negatiivisen luvun, joka saattaa olla virheellinen. Kaikkien se tietää, voisin Syötä positiivinen luku, joka on täysin pätevä. Joten Kuvittelen jos syötän negatiivinen 1 henkilöä huoneessa, segmentointi vika. Niin ok. Joten lisätä tämän takaisin vain pitää sen mitä se alun perin oli. Joten ikäisille. Nyt jos haluan kokeilla negatiivinen age-- joten katsotaanpa sanoa on viisi henkilöä huoneessa. Age of henkilön ykkönen on negatiivinen 4, henkilö kolme on nolla, henkilö three-- OK. Joten tässä, vuoden päästä, henkilön numero yksi tulee olemaan negatiivinen 3 vuotta vanha. Joten luultavasti ei ole mitään järkeä. Mutta se on vain siksi näköinen klo koodi kaikki teemme pyytää GetInt. Nyt, jos meillä olisi ollut GetPositiveInt toiminto tai olimme vain yksinkertaisesti tehnyt tämän tavallaan sama kun silmukka siellä, sitten tämä toimisi täysin hieno. Mutta tässä nimenomaisessa tapauksessa, emme vain sattuvat olemaan käsittelyyn negatiivisia arvoja. Muita kysymyksiä paneelit? OK. Joten olemme nyt nähneet taulukot. Ja aiomme tarvitse käyttää tämä komentorivin argumentteja. Joten ongelma asettaa two-- Tiedän, että monet teistä saattavat vielä työstää Harjoitus yksi, mutta ongelma asettaa kaksi on tulossa. Vuonna ongelma asettaa kaksi, olet menossa täytyy olla tekemisissä jouset, taulukot, ja komentorivin argumentteja. Mitkä ovat komentoriviargumentteja? Nyt voit nähdä täällä pieni teaser mitä on aiotaan tapahtumassa. Näemme int main, inc argc, merkkijono argv suluissa. Joten ensimmäinen yritetään tulkita mitä se yrittää sanoa. Nyt, OK. Joten komentoriviltä sinun pitäisi olla tottua joitakin näistä komennoista nyt, ja olet luultavasti ajaa cd terminaali ennen. Joten jos sanomme CD pset1, tiedät, että se olisi olla muuttumassa pset1 hakemistoon. Nyt huomaan, että olet koskaan kirjallinen ohjelma tällaista. Jokainen ohjelma, joka olet kirjoittanut, voisitte ajaa vaikkapa piste slash Mario, piste slash ahne, ja sitten se voi kehottaa panos. Nyt, se ei ole mitä vaihda hakemistoa ei. Kun suoritat cd, se ei sitten sanoa, mihin hakemistoon haluat CD? Sen sijaan, sanoit, CD pset1, ja se vain menee pset1 hakemistoon. Joten samalla meillä on muita esimerkkejä. tehdä hei. Kun käytät tehdä, se ei sitten sanoa, mikä ohjelma haluaisit tehdä? Sanoit, kello komentoriviltä tehdä hei. Move on toinen esimerkki. Tämä yksi siirrymme mario.c tiedosto yhden hakemistoon. Joten nyt me tiedämme tämän esimerkin Olemme todella kulkee kaksi argumenttia. On mario.c ensimmäisenä argumenttina, ja piste piste on toinen argumentti. Ja sitten kun juokset tehdä, voit nähdä, että todella pitkä komento line-- että todella pitkä komento painettu komentoriviltä. Jotta pitkän command-- tämä on vain lyhyt osa sitä, mutta nyt meillä on kolme komentorivin argumentteja. Piste viiva nolla, hei, ja hello.c. Nämä ovat siis komentorivin perustelut, väitteet että olet kulkevat komentoriviltä niin että se ei tarvitse pyydetään kun käynnistät ohjelman. Olisi turhauttavaa, jos kun olet juoksi kalahtaa se sanoi, "OK, joka program-- joka tiedosto sinä kokoamiseen? Hello.c. Mitä liput voisitko haluavat tulla? viiva o. Mitä haluaisit tiedosto kutsua? Hei. Ei, te vain ajaa kalahtaa dash o hei hello.c. Joten taaksensa tätä. Nyt argc-- argc on argumentti laskee. Se on määrä komentorivin perustelut kirjataan komentoriviltä. No, argv-- teknisesti v tarkoittaa vektori, mikä tarkoittaa periaatteessa sitä array. Mutta voit jättää sen. Argv-- meillä merkkijono argv, joten merkkijono argv suluissa. Joten tämä on toinen muoto kiinnikkeet et ole ennen nähnyt. Joten olemme nähneet kiinnike merkintätapa kun olemme sanoneet, kuten, string s vastaa Zamyla. s kiinnike 0 sisäänkäyntien merkki Z. Olemme myös nähneet suluissa kun sanoimme int ikäisille kannatin 5. Että ilmoitettu taulukon koko 5. Joten tässä versio Suluissa emme ole ennen nähneet. Joten tällainen merkkijono argv että olisi täysin tunnettava että se olisi vain merkkijono. Nyt Suluissa että tämä on jono. Joten merkkijono argv suluissa välineet että argv on joukko jouset. Nyt teknisesti merkkijono on joukko merkkejä. Joten tämä on nyt joukko array merkkejä. Mutta se on paljon helpompaa ajatella tämä vain joukko jouset. Joten miksi voisi suluissa olla tyhjä? Kuten, miksi emme voi sanoa, kannatin 5, kannatin n? Joo. Joo. Emme tiedä, kuinka monta tulot siellä tulevat olemaan. Joten jos katsomme kalahtaa esimerkiksi sanomme kalahtaa viiva o hei hello.c. Tässä nimenomaisessa tapauksessa, siellä tapahtuu olla kolme komentorivin argumentteja. Ja niin brackets-- näemme toisessa se ei olisi kolme. Teknisesti olisi neljä. Mutta suluissa, olisimme sanoa, on kolme. Mutta nyt jos me katsoimme liikkua mario.c piste piste, suluissa haluaisimme laittaa kaksi niihin. Ja siellä on paljon komentoja, on vaihteleva määrä komentorivin perustelut. Joten mitä tämä versio kiinnike merkintätapa osoittaa että argv on joukko jouset. Mutta emme tiedä kuinka monta jouset ovat, että jono. Ja miten me sitten tiedämme, miten monet jouset ovat array? Se on koko pisteen argc. argc kertoo kuinka kauan argv on. Niin viimeinen asia pitää mieli on, että teknisesti, komento itse lasketaan yhdeksi ja komentorivin argumentteja. Niin cd pset1, on kaksi komentorivin argumentteja. Ohjelma itsessään, cd, ja sitten todellinen argumentti osa sitä, pset1. Jokainen ohjelma, joka olet kirjoittanut tähän mennessä on ollut yksi komentorivin argument-- piste slash Mario. Se on ainoa komentorivin argumentti. Joten nyt katsot kalahtaa dash o hei hello.c. Joten mikä on argc? 4. Joten argc on 4. Kalahtaa, joten argv kannatin 0 on kalahtaa. argv kannatin 1 on viiva 0. argv kannatin 2 on hei, ja argv kannatin 3 on hello.c. OK, joten kysymyksiä tästä, ja sitten me tarkastelemme joitakin ohjelmallinen esimerkkejä. OK. Niin me katsomaan hello3.c. Joten tämän pitäisi olla tuttu yksi ensimmäisistä C esimerkit meillä oli missä me vain sanoa, hei maailman, mutta nyt tämä on yleisempi. Joten tässä me sanomme hei % S kenoviiva n argv kiinnike 1. Notice-- niin asti tässä vaiheessa, tämä on mitä minun malli tiedosto on näytti. Minulla oli int main (void), ja sitten olisin tehdä jotain päätehtävä. Nyt sen sijaan, kun alamme käsitellä kanssa komentorivin argumentteja, meidän täytyy todeta eri muodossa tärkeimmät. Joten etsit hello3 uudelleen, tärkein on menossa ottaa kaksi argumenttia now-- int argc, määrä komentorivin argumentteja, ja string argv suluissa, todellinen jouset tuli komentoriviltä. Joten aion muuttaa että malli heijastaa tätä seikkaa. Nyt kun kirjoittaa ohjelma, jos et tarvitse tehdä mitään komentorivin perustelut, sitten vain käyttää int main (void). Mutta nyt kun olet kirjoittamassa komentoriviargumenttina ohjelmia, jotka aiot tehdä ongelmien asettaa two-- niin nyt, että käytät ohjelmia, jotka on otettava komentorivin argumentteja, sinun täytyy olla tärkein tämän lomakkeen. Joten here-- tämä on iso käyttö ja komentorivin argumentti. Joten tulostus argv 1. OK joten katsotaanpa kääntää ja suorittaa tämän ohjelman. Tee hello3. Kokoaa. Piste slash hello3. Ja sanotaanko, "Rob." Hei Rob. Jos sanon, "Hei Maria," Hei Maria. Hei Maria. Hannah vielä sanoo, "hei Maria, "koska en ole tehdä mitään meidän argv 2. Argv 2 nyt olisi "Hannah." Argc olisi 3. Mitä jos tein tämän? Joten hei null. Hän sivuttu siihen että teknisesti, GetString voi palata null, mutta saamme paljon enemmän, mitä null todellisuudessa on. Mutta ota se asia Se, että ei yleensä huono. Teimme jotain väärin, jos se on tulostus "hei null." Ja syy teimme jotain vikaa is-- hyvin, kun juoksin piste slash hello3, argc oli 1. Niin se tarkoittaa, pituus argv oli 1. Jos joukko on pituus 1, voimassa vain indeksi on nolla. Ja joten tässä argv 1 ulkopuolella välillä tämän array. Se oli samanlainen kuin ennen kun yritin tallentaa 6 ulkopuolella taulukon loppuun. Joten olen yrittänyt käyttää jotain ulkopuolella argv laskee, ja olemme pääsemässä null. Joten parempi versio tämä, parannus, nimenomaisesti tarkkailun argc. Joten jos argc on 2, se tarkoittaa, että me juoksimme jotain piste slash hello3 Rob. Ja se tulostaa "hei Rob." Jos argc ei vastaa 2, niin se on juuri menossa sivuuttaa mitä laitat klo komentoriviargumenttina kuten komentorivin argumentteja. Tai jos et laita mitään ollenkaan, se on juuri menossa sivuuttaa että ja vain sanoa, "Hei sinä." Joten laadinnassa. Tee hello4. Ja käynnissä hello4. Running sitä tällä tavalla, mitä pitäisi tulostaa? "Hei sinä." Hei sinä. Entä hello4 Rob? "Hei Rob." Ja lopuksi, hei Rob Maria on vain "Hello you" uudelleen, koska et todellakaan anna jotain, että se odotti. Annoit enemmän nimiä kuin se voisi käsitellä, niin se vain oletusarvo hello you käyttäytymistä. Joten kysymyksiä tästä? Tai komentorivin argumentteja? OK, joten vilkaisemalla pari esimerkkiä käyttämällä komentorivin arguments-- ensin olemme argv viiva 1 piste C. Joten kommentit lahjoittaa mitä Ohjelman pitäisi tehdä. Mutta huomaa now-- tätä silmukka, tämä vastaa tarkka malli Sanoin ennen. Olemme vain sattuvat olemaan käyttäen argc sijasta n. Nyt argc on todella n. Se on pituus argv jono. Joten on iteroimalla yli argv array printf-ing kukin argv arvo. Joten jos teen tämän. Tee argv 1. Se kokoaa. Dot slash argv 1. Juuri käynnissä tätä, se tulosteita piste slash argv 1 koska se oli ainoa komentorivin argument-- ohjelman nimi. Aina tulee olemaan least-- argc ei voi olla pienempi kuin yksi, koska siellä on aina vähintään olla ohjelman nimi juosta. Joten argv 1 Rob tulostaa argv 1 ja sitten uusi rivi "Rob." Joten ensimmäistä iterointia Tämän silmukan, i on 0. Argv 0 on ohjelman nimi. Dot slash argv 1. Ja sitten argv 1 on ensimmäinen komentoriviargumenttina, joka on Rob. Tässä vaiheessa olemme yhtä argc. Murramme ulos silmukan ja olemme tehneet. Joten tämä toimii mielivaltaisesti määrä komentorivin argumentteja. Huomaa, se tulostaa argv 0, argv 1, argv 2, argv 3, argv 4. Eikä ole argv 5. argc on yhtä kuin 5. Joten argc-- klo i on yhtä kuin 5, murramme ulos silmukan. OK. Niin kysymyksiä, että ennen kuin tarkastellaan monimutkaisempi esimerkki? Niin argv 2. Selvä. Joten olemme yhä tulostus komentorivin argumentteja. Mutta nyt huomaa meillä sisäkkäisiä silmukka. Joten mitä tämä tekee? Joten ensimmäinen silmukka tekee mitä se teki ennen. Olemme edelleen silmukoiden yli kukin komentoriviargumenttina, mutta nyt tämä toinen loop-- olemme myös nähnyt jotain tällaista ennen. Kun hän oli iteroimalla yli Zamyla tulostamalla Z--M-Y-L-. Joten tämä toinen lenkki int j vastaa 0, n on strlen on argv kiinnike i. Joten ensimmäinen ajatella the-- nyt kulkea. Ajatellaanpa mitä tietokone olisi tehdä, jos Juoksin tätä ohjelmaa vain piste slash argv Dash 2. Joten jos juoksin tämä koodi, sitten argc tulee olemaan yhtä suuri kuin 1. Ja string argv-- on vain tulee olemaan yksi indeksi argv, ja että tulee olemaan yhtä suuri piste slash argv 2-- ohjelman nimi. OK, joten nyt on 0, i alle 1, i ja plus int j on 0, n on strlen of argv kiinnike 0, joten ensimmäistä iterointia tämän silmukan. argv kiinnike 0 on piste slash argv 2. Joten mikä on pituus merkkijonon? No, piste slash-R-G-V Dash 2. Niin strlen ja joka on 8. Joten j on 0, n on 8. Niin kauan kuin j on pienempi kuin 8, j ++. Ja että me aiomme olla tulostus yhden merkin, joka on argv kiinnike i kannatin j. Joten ainoa i on nolla. Meillä on vielä vain yksi komentorivin argumentti. Että ensimmäinen iterointi ja silmukan, olemme olemaan tulostus argv kannatin 0 kannatin 0. Ja sitten j tulee kasvattaa. Ja aiomme tulostus argv kannatin 0 kannatin 1. Ja sitten argv kannatin 0 kannatin 2. Joten tämä on meidän ensimmäinen kohtaaminen moniulotteinen taulukot. Muista aiemmin, että sanoin että argv on teknisesti joukko paneelit merkkiä. Joten tässä, jos sanoisin jotain merkkijono s vastaa argv kiinnike i, ja sitten sanoin, s kiinnike j, tämä olisi toteutuksessa sama asia. Nyt, olet nähnyt s kiinnike j ennen. Se on vain pääsy j: nnen luonne tämän merkkijono. Niinpä tämän, saamme j: nnen luonne i: nnen argv. Joten mitä pitäisi tämä lopulta lähtö? Tee argv 2. Se kokoaa. Piste slash argv 2. "Rob Maria Hannah," ja antaa meille jonkin verran. Näemme siis, että tämä on ulos piste on omalla rivillään ja slash on omalla rivillään ja omalla rivillään. Se tulostamalla jokaisen yksilöllisyyttä Kunkin komentorivin argumentti. Ja sitten niiden väliin, koska tämän uuden linjan me tulostus täällä, vuonna välillä se tulee tulostaa uusi rivi. Joten tämä on samanlainen Ennen argv viiva 1, joka tulostetaan kukin komentoriviargumenttina, mutta nyt olemme tulostus komentorivin argumentteja ja sitten iteroimalla läpi jokaisen että kukin komentoriviargumenttina saat tämän tuotoksen. OK? Joten kysymyksiä tästä? Yksi asia huomata on, että komentorivin arguments-- joten ne erotetaan tiloihin voit tietysti odottaa niitä. Joten merkkijono voi olla välilyöntejä se. Se ei ole Super Tärkeää, mutta jos en halusi kolmannen komentoriviargumenttina on välilyönti, sitten voisi sanoa jotain tällaista. OK? Joten tämä nyt vielä vain kolme komentorivin arguments-- hyvin 4. Piste slash argv Dash 2, Rob, Maria, ja Hannah Bloomberg. OK. Kysymyksiä tähän? Ei ole mitään erityistä noin välilyönti. Se vain sattuu olemaan, että komentorivin kohtelee välilyönti miten erotat argumentit. Selvä. Niin sitten Harjoitus two-- aiot olla tarkastellaan salaisen avaimen salausta. Niin, samanlainen kuin esimerkin näimme Joulutarina, aiot toteuttavansa joitakin algoritmeja, annetaan viesti, olet menossa pystyä salata, että viesti että vain joku, että salainen avain, jossa että dekooderi rengas, olisi voitava purkaa. Niin että on perusversiossa. Olet menossa toteuttavansa kaksi eri versiota. Jos satut katsomaan klo hakkeri-versio nyt, me aiomme antaa voit merkkijono näin, joka edustaa salattu salasana. Joten sinun tehtäväsi on selvittää mitä salaus salasana on. Nyt tämä on todella miten salasanat tallennetaan paljon tietokoneita, ja se vain tallentaa tämän satunnainen merkkijono. Sinun täytyy selvittää, miten saada Tämän satunnainen merkkijono mitä alkuperäinen salasana on. Ja lopuksi, kun tämä Harjoitus, sinun pitäisi voitava ymmärtää, mitä tämä tarkoittaa. Joten opit purkaa tällainen satunnainen merkkijono. Vastaavasti, jos muistat viikosta 0, olet ehkä nähnyt tämän URL. Ja sinun pitäisi pystyä purkaa tämä lopulta. Saatat olla onnellinen, kun purkaa se ja klikkaa linkkiä. Selvä. Se on siinä tänään. Joten nähdään ensi viikolla! [ELECTRONIC musiikkia]