PROFESSORI: Niin esityslista tällä viikolla, ei niin paljon tavaraa. Mutta toivottavasti erittäin, erittäin avulias ja merkitystä te tällä viikolla. Mutta me aiomme viettää ehkä 15, 20 minuuttia vain nopeasti puhuminen noin linkkilista. Linkkilistoja aikovat on peitetty tietokilpailu. Joten ehkä se olisi erittäin hyödyllistä oppia hieman siitä, mitä se on. Aiomme viettää valtava Useimmat nykypäivän § menee yli tietokilpailu nolla käytännön ongelmia. Ja sitten me säästää ehkä 20, 30 minuuttia lopussa varten kaikki jäljellä kysymyksiä joku on. Ja sitten, viimeinen viisi minuuttia, aion antaa pumpun ylös puheen tietokilpailu. Te kaikki haluavat olla täällä siitä. Koska se tulee olemaan hyvä aika. Selvä, joten jotkut materiaalia linkkilista. Miten he tyypillisesti rakenteeltaan on sinulla mitä kutsutaan solmu, eikö? Olet nämä asiat nimeltään solmuja, jotka ovat tietueet. Menen yli miten luoda solmun seuraavan dian. Mutta pohjimmiltaan kaikki liittyvät luettelot on on tietopaketti, on peräkkäin kautta viitteitä. Ja niin etu meillä käyttää linkitetyn listan yli, ehkä, kuten array, on siitä, että jono tarvitset yhden yhtenäinen alue muisti kaikki samassa paikassa, yksi toisensa jälkeen, voi olla, että. Ottaa huomioon, linkitetty lista, voisit on satunnainen vähän bittiä muistia koko tietokone koukussa yhteen osoittimia. Ja tällä tavalla voivat käyttää tietoja joka tulee yksi toisensa jälkeen muut, kun muut ilman vain valtava kimpale muistia tietokoneen jonnekin. Ja niin tämä on yksi tärkeimmistä syitä, miksi käytämme linkkilista. Toiseksi, se on erittäin helppo dynaamisesti kokoa linkkilista koska array, kun julistaa array, sinulla on tietty asetettu arvo. Sanotaan Halusin luoda joukko 10 kokonaislukuja. Luon joukko 10 kokonaislukuja, ja se on siinä. Se on 10. En tiedä mitä tehdä sen jälkeen. Jos halusin tehdä 11, ei voi tehdä sitä. Jos haluan tehdä sen 9, ei voi tehdä sitä. Kun taas linkkilista, voit lisätä ja poistaa ja lisätä missä haluat. Voit dynaamisesti muuttaa teidän jäsentää täällä, tietosi rakenne. Ja joka antaa meille paljon lisää lisää joustavuutta että emme yleensä on kanssa paneelit. Jokainen sekava perus rakenne miten linkki luettelo on tai miksi meidän on käytettävä yksi yli array? Joo, me mennä yli yksityiskohtaisesti miten itse luoda. Mutta tämä on juuri sellainen yleisessä merkityksessä juuri nyt. Viileä. Ja niin paneelit ovat koukussa yhdessä ihanat pienet asiat kutsutaan solmuiksi. Kaikki solmu on eräänlainen struct. Muista, struct on jos halusi luoda tietynlainen muuttujan C, joka ei jo olemassa, te, ohjelmoijana, voi itse luoda sen itse. Ja niin tämäntyyppisiä tietoja rakenne kutsutaan solmu, on todella luotu meille, että ei ole olemassa sisällä C-omasta. Ja että te luoda yksi on sinulla otsikko typedef struct, joka kertoo kääntäjä olen luomassa struct. Menemme nimi se "solmu." Ja sisällä aiomme julistaa muuttuja, joka tulee tallentaa arvon. Ja sitten me myös menossa ovat osoitin nimeltään "seuraava" joka osoittaa seuraavan solmu linkkilista. Ja sitten lopuksi, että pois mukaan vain toistamalla solmu uudelleen niin kääntäjä tietää, OK se loppuun minun struct. Ja niin tällä tavalla, olemme laji luoda söpö pikku array sellainen juttu arvo ja osoittimen. Ja voit linkittää ne kaikki yhdessä näiden viitteitä. Jotta he voivat kaikenlaisia ​​olla kireä yhdessä ketjussa. Viileä. Kuuletko että vähän paremmin? Yleisö: Joo. PROFESSORI: Selvä. Niin että, kuten te voi nähdä, tyypillinen linkki luettelo rakentuu on sinulla pää. Sinulla on pää arvoa, joka ei ole korostava muulla osoitin. Mutta se tulee pisteeseen, tai viittaus, toinen solmu. Solmu jälkeen tulee viittaus solmu jälkeen, ja niin edelleen ja niin edelleen kunnes lopulta osuma lopussa oman linkkilista. Ja te vain ei ole osoitinta siellä. Ja niin, ajattele, on ketju, tai jopa jos joku teistä kaverit tehnyt, en tiedä, kuten kanssa Fruit Loops kun olit pieni. Olisitte merkkijono ne yhteen ja käyttää niitä kaulaasi. Mielestäni se on täsmälleen sama asia. Sinulla on näitä pieniä asioita, joita et voi koota että kohta yhdelle kun se, että yhden jälkeen se, ja niin edelleen, ja niin edelleen kunnes olet ketju tietorakenteen että voit käyttää kuitenkin haluat. Niin että tämä olisimme tyypillisesti lisätä tai poistaa tahansa solmu linkki lista on hyvin erilainen riippuen siitä, missä että solmu on. Niinpä esimerkiksi, koska osoittimet ovat aina osoittaen erityistä arvoa, kun poistat tai asetat solmu, haluat varmistaa, että osoitin on kaikki suunnattu oikeita asioita. Joten jos halusi mahdollisesti lisätä uusi solmu, jonka arvo on yhden sisällä lajitellut linkki lista, me kaikki tiedämme täällä Kuvasta joka tulee mennä välillä pään ja kaksi, eikö? Koska yksi sopii oikeassa. Mutta tapa, jolla me tekisimme, että on ensin dereferencing osoitin pään ja lähettää että yksi. Mutta tulemme ongelma täällä. Näkeekö kukaan mikä ongelma on jos me ensin dereference osoitinta suunnata johonkin? Mikä ongelma saattaa me törmätä jos yritämme lisätä tämän edessä meidän array? Yleisö: [äänetön] PROFESSORI: Aivan. Joten tässä meillä on osoitin, joka oli kerran osoittaa pään kahteen. Mutta jos päästä eroon, että osoitin, osoitat yhdelle, nyt ei ole aavistustakaan minne mennä löytää kaksi. Koska kuten sanoin, sinulla jättiläinen kimpale muistia tietokoneessa. Kaikki nämä solmut voisi satunnaisesti välissä missä tahansa tietokoneessa. Ja et tiedä miten edetä löytää että. Ja niin sinun täytyy olla viitteitä osoittaa kaikki solmut lopussa. Tai muuten jos vahingossa dereference yksi ensin määrääminen arvo ensimmäinen, olet juuri menossa menettää kaikki jälkeenpäin. Joten mitä aiomme do on, sinun pitäisi ensin haluavat luoda osoitin solmun haluat lisätä. Kohta se, minne haluat lisätä sen, ja sitten jälkeenpäin voisi viitata suunnata takaisin yhteen. Tarkoittaako tämä järkevää kaikki täällä? Suuri. Ajattele sitä aivan kuin ketju. Jos lisäät ketju, se on eräänlainen intuitiivinen miten haluat edetä lisäämällä että. OK, joten se on todella paljon lyhyempi kuin ajattelin, että olisi, viiden minuutin Spiel linkkiä luetteloihin. Just niin teillä perusajatus, mitä se on. Täällä meillä on esityslistalla tietokilpailu nolla. Älä anna tämän pelotella sinua. Tiedän, että se on paljon tietoa. Se näyttää hyvin pelottavaa. Se on myös paljon, I ajatella, CSC eräänlainen ehdot. Asiat kuten heksadesimaali jousille, osoittimia, dynaaminen muistin jakaminen ovat hyvin pelottavaa kuulostava termejä. Mutta me aiomme rikkoa niitä alas, tehdä joitakin käytännön ongelmia niin että te kaikki ovat valmiita tähän testiin. Kuinka moni teistä kaverit ovat jo alkanut opiskella? OK, te luultavasti halua aloittaa aloittanut tähän, koska tietokilpailu on huomenna. Tai torstaina joillekin teistä. Joo, joten aiomme mennä joistakin käytännön ongelmia. Jos te kaikki halua ottaa ulos paperille, kynä. Aiomme vain viettää Valtaosa nykypäivän § menee yli joitakin että niin teillä käsitys siitä, mitä on odotettavissa tietokilpailu. OK. Pari logistisia yksityiskohdat samoin, kenellekään joka ei ole ollut, että linkki sinne, jos menet cs50.yale.edu, edessä tämä sivu on linkki joka sanoo "Noin Quiz Zero." Linkki vie sinut sinne. Jos et ole lukenut sitä, lue se. Koska se kertoo todella tärkeää tietoja tietokilpailu. Aion vetää tämän pois että vain siksi, fyysisesti, jos te tiedä missä mennä, meillä on ongelmia. Joten jos viimeinen kannalta kanssa N, mennä oikeustieteelliseen auditorio. Ja jos viimeinen alkaa P Z, mene Davies Auditorium. Ja tämä koskee vain ihmiset keskiviikkona osassa. Jos otat tietovisa Torstai menet SSS 114 missä luento tyypillisesti on. Yleisö: [äänetön] PROFESSORI: O Z, olet menossa mennä Davies auditorio. Aion muuttaa sitä, eikö? Joo, juuri onnistu automaattisesti. Ai joo, se olet sinä Christa. Joo, minun huono. Jep, O Z, olet menossa mennä Davies Auditorim. Aion korjata tämän kerran lataan. Joo. Ja sitten myös jotain tärkeää mieli on kyseisenä keskiviikkona, jos olet virallisesti kirjoilla keskiviikkona osassa, sinun täytyy ottaa tietovisa keskiviikkona. Ja jos olet kirjoilla torstaina sinun täytyy ottaa tietokilpailu torstaina. Ja se on aikana luokan aikaa. Missä, mielestäni se on kuin 1:00 02:15 keskiviikkoisin ja 2:30-3:45 torstaisin. Jos sinulla on ristiriidassa ristiriitoja, Dean tekosyitä ovat ainoa asia, Valitettavasti emme voi ottaa. Koska meillä on ollut Valtaosa pyynnöistä siirtyä keskiviikosta torstaihin. Joita emme voi kunnioittaa ellei meillä Dean pyynnöstä. OK. Joten ennen kuin aloita pari käytännön ongelmia, Olen juuri menossa mennä yli Andyn hyödyllisiä vinkkejä menestykseen. Te, kun opiskelet, olet todella haluat harjoitella kirjoittaa koodia käsin. Ensimmäistä kertaa olen koskaan otti CS tietokilpailu, en ollut Käytännössä kirjoittaa koodia käsin ennen ja se oli erittäin järkyttävä, kuinka vaikeaa se oli. Kun te joudu tapana kirjoittaa pois kaiken, se tulee hyvin luonnostaan ​​ollessa osaa ovat autocompleted kannattimet ja puolipistein siellä. Kun kirjoittaa se ulos käsin, joskus se on erittäin, erittäin helppo unohtaa puolipiste, tai unohda sulkea teline, tai unohda sulkea paksusuolen, Tai jotain sellaista. Joten kun kirjoittaa koodia käsin, se on hyvin erilainen tunnelma. Joten te, kun työskentelet läpi joitakin käytännön ongelmia, se olisi hyvä todella harjoitella tänään. Tai huomenna, oletan, jos olet ottaen tietokilpailu torstaina. Toiseksi, meillä on viime, kuten, kahdeksan vuotta verran käytäntö tietokilpailuja verkossa. Tämän vuoden tietovisa luultavasti hyvin, hyvin samanlainen kuin ne kaikki. Ne ovat kaikki hyvin samankaltaisia. Olet tavallaan päästä tyyli tyyppi kysymyksiä että pyydämme, tyyppi toiminnot että me kirjoitan sen, jne, jne. Joten ottaa harjoitustestejä, etenkin alle aikarajoissa. 75 minuuttia tehdä tietovisa on ei paljon aikaa. Se on hyvin, hyvin pitkä. Ja niin te todella haluat varmista, että te olette tapana kirjoittaminen koodi käsin nopeasti. Koska et halua ensimmäinen aika nähdä tietovisa tuon pituus olla oma tietovisa. Te todella haluat varmistaa, että olet käytännössä etukäteen. Neljänneksi, haluat tarkastella luento ja jakso dioja. Sinun ei tarvitse muistaa asioita. Oikeastaan, kaikki on sallittua yksi arkki valkoista paperia muistiinpanoja, edessä ja takana. Te voi kirjoittaa tai kirjoittaa. Jos löydät itsesi tarvitse muistaa mitään, laita se alas, että arkki. Takaan, et halua jumissa keskellä että tietokilpailu on kuin, oh yeah, mitä runtime tämmöinen vastaan ​​tällaista. Vain laittaa se alas ja kopioi se suoraan muistiinpano arkki. Sitten voit itse vain käyttää aivot ajatella ongelmista sen sijaan, että muistaa tosiasiat. Ja niin todella hyödyntää tahansa niche tiedot että luulet tarvitse muistaa, plop se alas tarkastelun arkki. OK, kysyttävää logistisesti koskevat tietokilpailu ennen kuin aloitamme joitakin tietokilpailu ongelmia käytännössä? Joo? Yleisö: En ole ollut mahdollisuutta katsomaan tietokilpailu [äänetön] mutta se tulee olemaan sovellus enimmäkseen, Vai onko myös olemaan, kuten, tieto kysymyksiä? PROFESSORI: Se on paljon. Niin, että minä olisi kuvattu tietokilpailu is-- olen koonnut joitakin käytännön ongelmia että vedin kaikista tietokilpailuja. Mutta näet, että on olemassa kaksi pääasiallista tyyppisiä kysymyksiä pyydämme sinua. Yksi on hyvin alhainen yksityiskohtaisesti tavaraa. Annamme sinulle pienen koodinpätkän ja sanoa, onko virhe täällä? Mikä olisi tulostamalla täällä? Mitä tämä koodi tuottaa, jne. Niin hyvin alhaisella tasolla tietojen yksityiskohtia. Ja kääntöpuoli, meidän täytyy hyvin korkean tason tietoon perustuva kysymyksiä. Voitko selittää, mitä ero binäärihaku ja lineaarinen haku on? Miksi haluamme Käytä yksi yli muiden? Ehkä, mikä on GDB? Miksi haluamme käyttää GDB? Korkeammalle tasolle, perusteellisempi ymmärrystä kysymyksiä. Joten näet sekoitus kaksi heistä tietokilpailun. Mitään muuta ennen kuin suunnata suoraan siihen? OK. Yleisö: yksi. PROFESSORI: Voi, yksi enemmän. Anteeksi. Yleisö: Joo, se on kunnossa. Joten sanot 75 minuuttia on liian lyhyt, kuten on epätodennäköistä että me loppuun? Tai, kuten, 75 minuuttia on juuri niin paljon aikaa koska meidän olisi jos olisimme asianmukaisesti valmis? PROFESSORI: OK, joten Quiz on haastava. Se on varmasti haastavaa. Löydät itsesi vähän aikaa. Olet todennäköisesti aio lyödä, kuten 10, 15 minuuttia jäljellä, ja on kuin, paskaa. Olen niin paljon tehtävää. Ja se on täysin hieno. Jokainen tulee tuntea samalla tavalla. Vain olla hyvin tietoinen kuinka paljon aikaa sinulla on. Ja niin siksi kerron teille teette harjoitustestejä. Koska se todella antaa suurta tunnetta mitä tietovisa on menossa olla. Joten jos löydät itsesi on pystyy päättynyt käytäntö tietokilpailuja hyvä määrä aika, voit tahtiin itse hyvin, niin sinulla ei ole ongelma keskiviikkona tai torstaina. Viileä. Joten jos kaikki wants-- mielestäni useimmat ihmiset ovat paperiarkkia ulos jo. Aion olennaisesti vain antaa sinulle näyte kysymyksiä, antaa te, kuten, muutaman minuutin tehdä niitä. Ja menemme yli luokkana mitä vastauksia niihin ovat. Joten tämä on hyvin tyypillinen varhainen kysymys me will teiltä, ​​vain muuntaa numeroita välillä eri perustein. Binary, kuten te voi Recall, on perusta kaksi. Desimaali on pohja 10, tai mitä me kuten ihmisillä yleensä tulkita. Heksadesimaali on pohja 16, joka on nolla yhdeksään sekä A-F Joten siellä on neljä numeroa olen pyytää te muuntaa täällä. Annan haluat, kolme neljä minuuttia miettiä miten me menisi noin ratkaista tämä. Yleisö: Olemmeko sallittu laskimet? PROFESSORI: Et ole tarvitsevat laskimet, joo. Mielestäni emäsaddi-, mielestäni, on kaikki te pyydetään tekemään. Ja juuri niin olen sellainen on tunne ja kun kaikki on tehty, etsiä, aalto, en tiedä, hymy, katso iloinen, jos olet valmis. Joo. Ehkä pari minuuttia. OK, nyt tuo sen. Olen tarkoituksella menossa antaa te vähemmän aikaa kuin joudut luultavasti tehdä joitakin näistä ongelmista, yksinkertaisesti koska haluan varmistaa, että saamme läpi joukko ongelmia. Joten ei hätää jos et on mahdollisuus lopettaa. Täysin OK niin kauan kuin sinulla on käsitys siitä, miten edetä tästä. Joten mennä eteenpäin ja tehdä ensimmäinen. Joten ensimmäinen, ei kukaan halua kertoa minulle binary, mitä tehdä joka näistä numeroa edustavat kannalta niiden arvot? Joo? Yleisö: Kahdesta teho nolla, kaksi yksi. PROFESSORI: Aivan. Niin. Oikea, joten tyypillisesti kun olemme pohja 10 kaikki nämä edustavat ovat, kuten, 10 pohjaan nolla, eikö? Se on sinun yksi paikka. Kaikki 10: n paikka on on 10 potenssiin yhden. Sinulle 100: n paikka on 10 potenssiin kaksi. Riippumatta pohja olet on menossa tehdä täsmälleen sama asia, vain eri pohja. Joten binary, kaikki, mikä on on perusta kaksi. Olet menossa muuntaa kaikki numeroa kahteen mihin tahansa tehon kyseisen numeron. Ja niin tässä mielessä, me voi olla helpompi tapa että voimme lisätä jopa tai Yhteenvetona kaikki numerot järjestyksessä muuntaa pohja 10. Joten ei kukaan halua kertoa minulle, mitä Vastaus ensimmäiseen yksi on perusta kymmenen? Yleisö: Kaksi, [kuulumaton] PROFESSORI: Joo. Yleisö: 42. PROFESSORI: 42, siellä mennään. Joten miten saimme tämän vastaus oli by tekee kaksi ensimmäistä, joka on kaksi. Plus kaksi kolmannesta, joka on kahdeksan. Plus kaksi viidenteen, joka on mitä on jäljellä. Voit summa heidät ja se on 42. Onko kukaan hämmentynyt siitä, miten saimme sen? Niin perus Lisäksi kuten Sanoin, sinun pitäisi olla OK. Jos ei, hyvin, voimme harjoitella sekin. Mutta ei se mitään. Viileä. Haluaako joku antaa minulle Vastaus toiseen yhtä hyvin? 50? Hyvä. Jokainen sekava miten meillä että joko? Cool, Otan vastauksia seuraavan dian. Joten ei hätää, jos pitää kopioida se alas. OK, joten heksadesimaalinen on vähän hankalampaa. mutta aion näyttää sinulle kaverit pikakuvakkeen miten tehdä se. Niin heksadesimaali, kun muistaa, kaikki se on olla 16. Ja koska me ihmiset eivät varsinaisesti on 16 numerot edustaa että, menemme nollasta yhdeksään, jonka ensimmäinen 10 arvoa, ja sitten teemme kautta F, jotka ovat seuraavien kuuden arvot. Ja niin helpoin tapa mennä binary numero heksadesimaaliluvuksi on rikkoa niitä ylös kahtia. Ja niin binary numero annamme luultavasti on kahdeksan numeroa. Voit vain rikkoa niitä keskellä. Joten ensimmäinen one-- yksi yhteen, yksi yksi, yksi, yksi, yksi yhteen. Eräänlainen ajatella sitä, tiedät, piirtää slash tai pilkku välillä. Ja voit vain muuntaa suoraan riippumatta tämä on ensimmäinen heksadesimaalinen, ja mitä täällä on toinen heksadesimaalisten. Joten muistakaa yhteisistä merkintätapa, Mitä heksadesimaaliarvot aloittaa? Yleisö: Zero. PROFESSORI: 0X. Joten me tiedämme, että aina pyydämme muuntaa minkä tahansa määrän heksadesimaaliluvuksi, tai milloin tahansa näe mitään numero, joka alkaa 0X, tiedät että se on heksadesimaaliarvo. Ja sitten aiot pyydetään mitkä nämä kaksi numeroa ovat. Ja miten teette sen, ääntenlaskenta ylös että puolet ja ääntenlaskenta jopa puolet. Joten tässä esimerkissä, mitä olisi yksi, yksi, yksi, yksi olla? Mitä arvo olisi? Se olisi F, eikö? Se olisi 15. Joten tämä olisi F., yksi, yksi, yksi tässä myös F. Eli yksi, yksi, yksi, yksi, yksi, yksi, yksi, yksi heksadesimaali, kaikki se on on 0xff. Koska tämä puoli edustaa F-arvo on 15, ja tämä puoli edustaa F, arvo 15. Koska muistan, olemme laskenta nollasta yhdeksään. On kuin 10, B on kuin 11, F on 15. Onko että järkevää kaikille miten saimme binary Heksadesimaali? Yleisö: Ja niin miten saamme 15 alkaen yksi, yksi, yksi, yksi? PROFESSORI: Joo, tämä on binary, eikö? Kuvittele tämä on vain binaariluku. Joten sinulla on kaksi nollas, joka on yksi. Yleisö: Voi, OK. Joten sinun tarvitsee vain yhteensä sitä. PROFESSORI: Joo, ja sitten juuri yhteensä että ulos. Siinä kaikki se on. Yleisö: OK. PROFESSORI: OK. Yleisö: Joten te mennä binääri desimaaliluvuksi heksadesimaaliluvuksi? PROFESSORI: Se Helpoin tapa tehdä niin, joo. Et aio desimaalikertoimiksi koska desimaalin vain on nollasta yhdeksään. Olemme juuri sellainen jakamalla tämä kahteen. Yleisö: [äänetön] käyttämällä desimaalin löytää mitä se vastaa jopa heksadesimaalimuodossa. PROFESSORI: Tarkoitan, olet ääntenlaskenta jopa käyttäen perus matemaattisia. Yleisö: Joo. PROFESSORI: Joo, aika paljon. Se on vähän sekava. Mutta vain tiedä, että olet voi jakaa mitä tahansa tämä arvo on osaksi vain puolikkaat. Katso, mikä on tämä binary? Mikä numero on? Se tulee olemaan jotain nollasta F. Täällä on myös olemaan jotain nollasta F. Ja sitten voit vain laittaa Näiden kahden oikeassa. Yleisö: OK. PROFESSORI: Jep. OK. Joten te haluta kokeile seuraavaa yksi sitten? Nolla, yksi, nolla yksi, yksi, nolla, yksi nolla. Annan sinulle kaverit kuten 30 sekuntia, koska et luultavasti ei tiedä temppu miten tämä aiemmin. OK, kukaan halua saada tämä laukaus? 0X5A. PROFESSORI: 0X5A. 5a. Hyvä. Joten täällä olisi be-- haluat kertoa meille, miten sait sen? Ensinnäkin, miten sait viisi? Yleisö: Koska nolla, yksi, nolla, yksi on viisi. PROFESSORI: Onko jokainen ymmärtää miksi nolla, yksi, nolla, yksi on viisi? Sinulla on yksi täällä. Sinulla ei ole mitään kahdessa ensimmäisessä. Kahdessa toiseen, te on yksi, joka on neljä. Joten voit lisätä neljä plus yksi, sinulla on viisi. Jokainen hyvä? OK. Ja sitten, mitä tämä on ja miksi? Mitä numero ei vastaa? Yleisö: 10. PROFESSORI: Ja mitä tämä pohja kaksi? Yleisö: [äänetön] PROFESSORI: Aivan. Joten tämä toinen arvo tässä olisi 0X5A. Jokainen hyvä miten muuntaa? Se on paljon helpompaa kuin luulet se on. Haluan vain varmistaa tiedät hyödyllisiä vinkkejä ja temppuja, miten se tehdään. Yleisö: Miksi juuri jakaa se keskellä kuin että? Vain olla kuten, OK, olen vain menossa välitä näistä ensimmäinen [äänetön]? PROFESSORI: Koska se todella tapa heksadesimaaliarvot ovat edustettuina. 0X, joka todella tarkoittaa mitään muuta kuin kerron että se on heksadesimaaliluku. Ja tämä edustaa aina neljä ensimmäistä numeroa. Ja tämä edustaa aina neljä viimeistä numeroa. Ja niin nämä kaksi numeroa vain vastaavat eri bittiä. Yleisö: Joten me always-- PROFESSORI: Olet aina menossa kahdeksan arvo bittiä. Yleisö: Onko se aivan kuten asia täällä tai että asia koko? PROFESSORI: Se on vain asia tietokoneissa, jep. Yleisö: OK. Mahtava. PROFESSORI: Myös, joten tässä esimerkissä me muunnetaan binary desimaali, ja binary heksadesimaaliluvuksi. Te haluavat varmistaa, että sinulla myös käytännössä menee toisinpäin. Joten jos annoin sinulle 0xFF, voisit piirtää että ulos binary, eikö? Voit muuntaa F binary, joka on yksi, yksi, yksi, yksi, muuntaa F binary, joka on yksi, yksi, yksi, yksi. Joten saatamme pyytää sinua tekemään Toisin päin. Joten desimaali binary, tai heksadesimaalista binary. Joten haluat tehdä että tiedät molempiin suuntiin. Me luultavasti pyytää sinua näiden kahden yhdistelmä. Joo, sinulla on kysymys? Voin see-- olet hyvä? Yleisö: Joo. PROFESSORI: OK. Olenko hyvä tyhjentää? Suuri. Selvä, joten vastaukset ovat täällä, jos joku on utelias myöhemmin ja hämmentyä. OK. Yleisö: Onko sillä väliä jos laitamme meidän kirjaimet Capitol että pieniä? PROFESSORI: Se, koska heksadesimaali Sopimuksen mukaan kaikki merkit ovat isoja. Joten A-F ovat olemaan isoja. Jos laitat pieniä, en tiedä jos olisimme välttämättä merkitse sitä väärin. Mutta teoriassa, se ei ole teknisesti miten sinun pitäisi olla se. Joten ne pitäisi kaikki olla isoja. Joo, hyvä kysymys. OK. Toinen kysymys. Mieti tätä ihana ohjelmasta täältä. Kysyn kysymyksen, Tulen takaisin tähän. Joten ensinnäkin, mitä sisällä standardin io.h se kiinnostaa ohjelmaan? Toiseksi, mitä void merkitsevät linjassa kolme? Ja kolmanneksi, mitä palaavat nollaan tärkeimmät, kuten linja kuusi, yleensä merkitsevät? Jos kaverit haluavat kirjoittaa ne alas, koska minun täytyy vaihtaa takaisin dia niin voit nähdä koodin. Tämä on esimerkki, kuten, ehkä korkeamman tason kysymys, jossa pyydämme teitä mitä asiat merkitsevät ohjelmassa. Jokainen hyvä minulle palata dian? OK, viileä. Niin minä annan sinulle kaverit kuten ehkä kolme minuuttia katsoa tämä todella nopeasti. OK, joten tämä on kuin melko helppoa, käsitteellisesti. Onko kukaan halua kertoa minulle, mitä ensimmäinen sisäpuolelta hash lukien Meidän standardi io.h kirjasto tiedosto? Miksi me tarvitsemme, että kirjasto mukana tämän ohjelman? Mitä tässä me tarvitsemme sitä? Joo? Yleisö: on, että kun laitat että printf? PROFESSORI: Aivan. Joten printf, milloin vain ottaa panosta käyttäjä ja tulostaa jotain näyttöön, joka on vakiosyötteestä, tuotanto kirjasto. Ajattele sitä, että way-- panos, tuotos. Onko minulla tuotos? Kyllä, minä. Joten tiedän, että olen aina menossa tarvitsevat Standardoida i.o kirjasto. Joten Printf on funktio jolla meidän pääsyn ja hashtag sisältävät standardi i.o kirjasto. OK. Toiseksi, se mitä mitätön merkitsee? Olemme int main (void), mitä mitätöidä tässä tarkoitetaan tässä linjalla kolme? Joo, takana. Yleisö: [äänetön] PROFESSORI: Aivan. Joten muistakaa, olemme oppineet alkaen meidän PSET että voit todella määrittää komentoriviltä väitteet, että ohjelma, että olet päätehtävä, vie kuin sinä, käyttäjä, kutsuvat sitä. Jos meillä on mitätön, se tarkoittaa, että voit voisi vain ajaa ohjelman suoraan ilman komentoriviargumentteja. Jokainen selvää siitä? OK. Ja lopuksi miksi me viitsi ryhtyä paluun nolla juttu täällä? Miksi meillä on jopa int main? Miksi emme voi vain void main void? Joo? Yleisö: Juuri niin, että voimme olla varma, että ohjelma on poistuminen onnistui, kuten vastustavat jos se luettiin. Ja me tiedämme, että se on erilaisia ​​virheen. PROFESSORI: Joo, täsmälleen. Tämä on vain hyvin tavanomainen asia, että teemme, on, että vain lopussa ohjelma, vain varmistaa että pääasiallinen tehtävä toimii oikein, haluamme aina tehdä paluuta nollaan. Vaikka saatamme välttämättä ei nähdä, että painettu missään. Koska kuten ohjelmoijat, tiedätte, jos sinulla on monia eri riviä koodia ja et tiedä missä nämä ovat menossa pieleen, ja jos virhe tapahtuu, haluat varmista, että saat tämän virheen. Ja niin tyypillisesti jos jokin menee väärässä meillä on paluuta yksi juuri varmistaa tiedämme, että se on. Joten jos näet paluu nolla, että tyypillisesti tarkoittaa ohjelma on suoritettu onnistuneesti. Hyvä? Viileä. OK, toinen ohjelma täällä. Katsovat, että. Ja jos te nähdä kellua, te voi luultavasti on hyvä käsitys siitä, mitä Olen aikeissa kysyä. Joten kun tämä ohjelma suorittaa, kuten näette, Olen julistamisesta kellua sisällä minun päätehtävä. Olen nimeämällä se "vastaa" ja olen asettamalla että vastaa yhtä jaettuna 10. Olen tulostamisen, yhteen desimaalin tarkkuudella, että kellua. Ja sitten olen palaamassa nolla. Joten kun suorittamalla ohjelma, muistelen ahne nyt, tämä ohjelma tulostaa 0,0. Kuten me kaikki tiedämme, toivottavasti kaikki tietää, yksi jaettuna 10 ei 0.00, se on 0,1. Mutta miksi tämä ohjelma ajattelee että 1 jaettuna 10 tulosteita 0,1 muita kuin 0,1? Annan te ehkä kuin 30 sekuntia vain nopeasti ajatella, että ja menen takaisin ohjelmaan. OK. Kukaan halua antaa sen kuvan? Kolmessa lauseita tai vähemmän, koska tyypillisesti olemme menossa rajoittaa kaikki vastaukset kolme lausetta tai vähemmän joten et vain oksentaa satunnaisesta asioita päälle tietokilpailu. Joo, ota laukaus. Yleisö: Joten mielestäni on tämä kutsuttu asia, kuten, [kuulumaton] Joten saattaa olla, esimerkiksi, saattaa olla, kuten, 0.09, että jos tulostat ensin numeroinen, se olisi 0,0? PROFESSORI: Close, ei aivan. Christabell? Yleisö: Olet jakamalla yhden ja 10, ja he molemmat kokonaislukuja. Ja niin, että se on menossa tallentaa se on kuin kokonaisluku. Ja niin lähin kokonaisluku olisi 0,0. Ja niin se on 0,1. PROFESSORI: Joo, se on todella hyvä. Se on oikea vastaus. Joten tämä on erittäin sekava konsepti paljon lapsia. Ja olen todella haluat varmistaa, että tämä on vahvistettu kaikkien päähän. Joten mitä me kutsumme kelluva kohta epätäsmällisyys, jossa syy, miksi monet teidän ohjelmia ahne ei toimi alun perin oli, koska unohdit heittää muuttuja. Joten mitä Christabell sanoi oli täysin oikea. Float on luonnostaan ​​epätarkka. Koska tietokone, oikeus, meillä on rajallinen määrä bittejä muistin voimme käyttää edustamaan numeroita. Niinpä esimerkiksi, tämä CS50 tunnus is-- Minusta se on 64-bittinen tietokone. Float voi olla edustettuna jonka rajallinen määrä nämä bitit. Ja niin 0,1 ääretön nollia, Se oli 0,1 on, eikö? Mutta emme voi oikeastaan ​​varastoida että määrä meidän tietokone. Emme vain ole tarpeeksi muistia tehdä niin. Ja niin lähimpään lähentämisestä mitä tallennetaan muistiin on todella jotain 0.000 jotain, jotain, jotain, jotain. Joka, kun katkaista se, pyöristää 0,0. Ja niin tämä esimerkki on vain yksi joka osoittaa paljon kysymyksiä meillä on aina olemme yrittää väärin tehdä matematiikka ilman valu kuten eri kokonaisluku. Joten vain varoa, että näin tapahtuu. On tietokilpailuja, jos annamme sinulle koodiosion ja se on kuin, mitä tulostaa lopussa? Ja jos se on joitakin satunnaisia ​​arvo sinua kaverit pitäisi tietää, miksi näin tapahtuu. Joo? Yleisö: Lyhennä on päästä eroon kaikki tietyn pisteen jälkeen? [KUULUMATON] PROFESSORI: Joo, niin oikeastaan tämä on todella huono esimerkki, koska 0,100 mitä todella olisi katkaista alas 0.1. Mutta jos olit ajaa it-- en muistaa, koska viime vuonna ne juoksi sen eri ohjelmaa. He juoksivat sen niin sanotun CS50 Appliance, joka eroaa tunnus. Se oli 32-bittisessä järjestelmässä, mielestäni. Ja niin oli eri numeroille. Mutta pohjimmiltaan, juuri tietää, että koko käsite katkaisua ja miten se vain leikkaa asiat pois. Joten jos se rounds-- Yleisö: Ilman pyöristystä. PROFESSORI: Aivan. Joo. Viileä. Hei, takana. Me vain menee yli joitakin Quiz arvostelu kysymyksiä. Selvä. Joten harkita eri ohjelmasta täältä. Aion antaa te pari minuuttia lukea tänä. Tämä on jotain, joka oli hyvin äskettäin, että mielestäni puhalsi paljon sinua kaverit mielissä. Mutta me aiomme puhua kautta jälleen vain varmista, että olet ymmärtää sen täysin. OK. OK. Jokainen tarvitsee enemmän aikaa lue tämä koodi? OK. Joten minusta tuntuu että tässä ohjelmassa olen luodaan kaksi merkkijonoa käyttämällä GetString. Yksi nimeltään s ja yksi nimeltään t. Ja jos he yhdenvertaisen on yhtä suuri kuin toisiinsa, se pitäisi tulostaa "Olet Kirjoita sama asia. " Mutta elsewise, se tulostaa, "You kirjoitettu eri asioita, "oikea? Näyttää hyvin, hyvin yksinkertainen. Mutta kuitenkin, jos olen itse yrittää kirjoittaa tätä ohjelmaa, näyttää siltä, ​​että vaikka en panos täsmälleen sama jouset, se silti tulostaa, "You kirjoitettu eri asioita! " Onko kukaan halua ottaa ampui miksi tätä ohjelmaa aina vastaa, että tulot ovat erilaisia, vaikka kun sanat itse ovat samat? Joten jos olisin input-- David rakkautta käyttää esimerkkinä kuten äiti, eikö? Pieniä M-O-M S, T vastaa pieniä M-O-M. Jos Juoksin tätä kautta että koodi, miksi se tulostaa "kirjoitit eri asioita?" Onko kukaan tarvitsevat enemmän aika ajatella tätä? OK, mielestäni olemme hyviä. Joo? Yleisö: OK, joten se on jotain jos se on tallennettu muistiin, eikö? PROFESSORI: Jep. Yleisö: Missä se on kuin, jos tämä merkkijono s tallennetaan muistiin spot-- Olen keksiä this-- on nolla. PROFESSORI: Toki. Yleisö: Ja merkkijono t tallennetaan muistiin paikalla, kuten, 167, ja sitten nolla ei ole sama kuin 167. PROFESSORI: Aivan. OK, joten muista tämä uskomaton ilmoituksessa meille selitti te viime viikolla, että jouset eivät oikeasti olemassa? Kun luomme jotain kutsutaan string olemme, todellisuudessa, luoda jotain kutsutaan merkkiä tähden. Jossa kaikki se on on osoitin merkkijono tai joukko merkkiä. Ja niin tässä esimerkissä, jos en oli syötettävä M-O-M tie että minun tietokone olisi säilytä se on muistissa kenoviiva nolla, eikö? Nämä neljä merkkiä, merkkiä, olisi tallennettu jonnekin. Ja sitten nämä neljä merkkiä, kenoviiva nolla, tallennetaan jonnekin muualle, eikö? Minulla ei ole aavistustakaan, mistä osoitteet ovat, ne ovat jossain minun tietokone. Mutta en tarkalleen tiedä missä he ovat. Kun luon merkkijono s, kaikki todella on on osoitin aloittaa tämän merkkijono. Ja kun luon t arvoa, kaikki on osoitin tänne. Ja niin kun yrität rinnastaa ja tarkistaa onko s on tasavertaisten vastaa t, tietokone on oikeastaan ​​vain paluuta te osoitteen tämä m ja osoite, joka m. Ja koska ne ovat kaksi irrallisia tietoja jotka on tallennettu kaksi eri osoitteet tietokoneessa, tietokone ei ikinä tunnista niitä olevan samat. Onko kukaan halua antaa ampui mitä me olisi tehtävä, jos halusimme korjata tämä ja on oikea käynnissä olevan ohjelman sen sijaan? Ajattele, että muutaman sekunnin. Mitä meidän täytyy muuttaa saat tämän ohjelman toiminta miten haluamme sen toimivan? Joo, halua ottaa puukottaa sitä? Yleisö: Voimmeko yrittää epäviittausongelman osoitin ja tarkista läpi array? PROFESSORI: Se on yksi tapa tehdä se. Joten, mikä on nimesi uudelleen? Olen pahoillani, muistuttaa minua. Zee: Zee. PROFESSORI: Joo, niin mitä Zee ehdotti olisi ehdottomasti työtä. Oikea? Voisimme dereference osoitin ja itse mennä ja pääsy fysikaaliset tiedot sisällä täältä. Ja voimme vain vertailla koko näytön. Voimme sanoa, OK, osoitin, anna minulle mitä sisällä täällä. Se palaisi m. Ja sanoisin, osoitin, anna minulle mitä sisällä täällä. Palaa m. Tekemään niitä ottelu? Kyllä. Sitten siirrymme. Pidämme tarkistaa koko kaksi jouset aina loppuun asti ja katso, jos ne ovat yhtä suuret, jos kaikki arvot ovat yhtä suuret. Ja jos kaikki arvot ovat yhtä suuret, me tiedämme jouset ovat totta. Ehdottomasti, näin me tekisimme sen? Onko kukaan sekoittaa tästä mitään? Koko käsite, miten jouset ovat todella vain osoittimia, ja miten he eivät oikeasti olemassa? Ja miksi saamme virheitä kuten tapa saamme sen? Koska Takaan kaverit, osoittimet ja string jako ja muisti aiot keksiä. Joo? Yleisö: [äänetön] dereference se, vain laittaa tähti [äänetön] PROFESSORI: Oikea. Niin derererence osoittimen avulla mennä, että osoitteen osoitin ja saada tietoja, arvo siellä. Ja tapa tehdä se on tähti osoitin. Älä sekoita että. Yleisö: [äänetön]. PROFESSORI: Joo. Yleisö: Joten voit vain kirjoittaa jos tähti s yhdenvertaisen tasavertaisten star T. PROFESSORI: No, ei. Ei. Yleisö: Se ei ole tarpeeksi hyvä, eikö? PROFESSORI: Se ei ole, koska olet vain tarkkailun ensimmäinen kirjain. Olet luultavasti menossa on jonkinlainen silmukka, joka toistetaan joka ikisen merkki molemmissa jouset. Joo. Joten jos halusi vain tarkistaa, jos ne alkoi sama asia, voit tehdä, jos, tähti s on star T. Niin tiedät, että ainakin ne alkoi samaa merkkiä. Joo? Yleisö: Niin tapa et se olisi kuten upotettu silmukka tai osoitin? PROFESSORI: Joo. Melko paljon vain silmukka. Muista, David luokassa mainittujen vapaa syntaktinen sokeria? Ja hänellä oli hyvin hämmentävä asia star T plus yksi, jossa se yhdistää kautta ja se siirrä osoitin? Helpompi tapa tehdä tämä on vain t i. Joten se on vain joukko. Että sinulla olisi varten silmukka, joka juoksi nollasta I, jossa i on pituus string, voisit vain kirjoittaa, että sen sijaan tehdä Koko osoitin, viite asia. Joten nämä asiat ovat täsmälleen vastaava tietokoneessa. Ette luultavasti ei täytyy tietää, että mutta se on hyvä juuri sellainen on takana mieltäsi. Juuri tietää, että tietokone tunnistaa eri koodilohkoja koska sama asia. Koska tämä on vain paljon käyttäjä ystävällinen meille esittää niin kuin se on array. Se on vain helpompaa. Yleisö: Joten käytä strlen pitävän, get-- PROFESSORI: Joo. Yleisö: OK. PROFESSORI: Voisit käyttää strlen tai, jos ei ollut strlen voit vain tehdä ylös kunnes osut kenoviiva nolla molemmille. Kumpikin toimisi. Joo. Yleisö: Joten se on dereference joka yksi merkki jos olisimme todella Kirjoitan tämän koodin, me voisi vain tehdä t suluissa i Kuten tähti sen edessä? PROFESSORI: Joo, vastaa tasavertaisten s kiinnike i, ja sitten pitää liikkuvat i alas asti osut loppuun. Joo, mitä tekisit. Ja minä oikeastaan ​​seuraava esimerkki, kun me itse kirjoittaa strlen joten te tulee eräänlainen get leikkiä sen kanssa vähän. Niin on kaikki selvää vain muisti, jouset, osoittimet, laatu osoitteet? Jotkut korkeampi käsitteitä, jotka olet tahtoa varmasti täytyy tietää tietokilpailu huomenna. Selvä. Hyvä. Jep. OK, niin yksi asia, että me myös pyytää te, kuten teemme vuosittain tietokilpailu, on, Oletetaan, että olet unohtanut (joka näytämme unohtaa tehdä vuosittain) jossa otsikkotiedosto strlen julistetaan. Ja niin meidän täytyy kirjoittaa se itse. Tässä on luettelo suuntaviivoja että voimme esittää sinulle kaverit jossa saat olettaa, että s merkkijono olla tyhjä. Voit olettaa, että n on päättyy kenoviiva nolla. Niin tiedät, että mitä se tulee päättyä. Ja, esimerkiksi, että pituus hei olisi viisi. Voit siis olettaa, että hei on viisi, H-E-L-L-O. Sinun ei tarvitse olettaa, että backside nolla osuus pituus. Tämä viimeinen asia täällä, älä murehtia kokonaisluvun ylivuoto. Onko kukaan muistaa mikä kokonaisluvun ylivuoto on? Yleisö: ylittää pituus [äänetön]. PROFESSORI: Joo, voitko selittää vähän, mitä se tarkoittaa? Yleisö: Niin kai se menee takaisin jotta truncating esimerkki aikaisemmin. Mutta jos sinulla on vain niin monta numeroa jotka ylittävät bittien määrä että voit itse määrittää sen että se juuri sellainen katkaista. PROFESSORI: Joo, niin on tyypillinen tietokone, kuinka monta bittiä meillä on? Yleisö: 32? PROFESSORI: Joo, 32, oikea. Ja niin se on, mitä, neljä miljardia, kaksi miljardia? Neljä miljardia, jopa neljä miljardia positiiviset kokonaisluvut, eikö? Kaksi miljardia negatiivinen, kaksi miljardia positiivinen, riippuu siitä, miten haluat tehdä sen. Ja niin periaatteessa saamme tarpeeksi kokonaislukuja, että voi mennä ylös kaksi tai 31. miinus 1, eikö? Sillä kun me osui kahteen ja 32., emme on niin paljon muistia meidän tietokone. Ja niin, teoriassa, minä keksiä numero että on, kuten, kaksi 46.. Se on valtava-ass numero, mutta teoriassa voisit. Ja niin kokonaisluvun ylivuoto on jos yrität luoda kokonaisluku, joka menee pidemmälle kuin tietokone pystyy tallentamaan. Ja niin te varten Tässä esimerkissä ei ole pelätä meille antaa sinulle jättiläinen merkkijonon, joka on kaksi 32. merkkiä pitkä. Tämä olisi todella tarkoittaa. Selvä, joten olen juuri menossa antaa te pohjarakenteen tämän. Olet menossa luoda toiminto nimeltään int strlen jossa kulkea, char tähti, tai merkkijono, osoitin merkkijono nimeltä s. Selvä, kaikki kopioi alas. Viileä. Oops-- muulla tavalla. Joten tämä on ikään kuin kovemmin pala ongelma, niin minä annan te ehkä viidestä kuusi minuuttia eräänlainen aivoriihi ja kirjoittaa tämä toiminto pois. Yleisö: Emme osuus [kuulumaton], meillä ei ole käyttää kokonaisluku? PROFESSORI: Ei, et. Minä annan teille kaverit vihje. Vaikka silmukka voi olla erittäin hyödyllistä täällä. Joo. Tässä karkkia. Candy on myös saatavilla varten tietokilpailu, mielestäni. Joten te tulee kaikki sokeroituja huomenna. Voitko I-- sait sen. Yleisö: OK. PROFESSORI: Joo. Ehkä 30 sekuntia tai niin. Hyvä, jos olet ei tehdä, ei hätää. Me liikkua tätä yhdessä. OK. Joten aion vain layout perusrakenne tätä toimintoa täällä. Int strlen. Ensinnäkin, ei kukaan halua kertoa mitä se int tarkoittaa? Meidän on tässä toiminnossa. Yleisö: strlen [äänetön]. PROFESSORI: Aivan. Niin mitä tapahtuu täällä, Meidän täytyy palata kokonaisluku. Ja kuten spec, haluamme return-- Tsemppiä kaverit, vain pitää menossa. Kaikki on hyvin. Syö kaikki niin minulla ei ole ottaa se takaisin, todella. Int vain tarkoittaa, että olet aiotaan palaamassa kokonaisluku. Mikä on tämä char tähden s? Mitä se tarkoittaa? Yleisö: Kuten, mitä on panos. PROFESSORI: Aivan. Ja mikä on lähes sama asia kuin char tähti? Yleisö: String? PROFESSORI: Aivan. Joten kaikki teemme on antaa tämä osoitin merkkijono. OK. Viileä. Älä myöskään unohda, jos unohdamme antaa sinulle nämä suluissa, älä unohda kirjoittaa niitä itse. Koska teoriassa, koodi on virheellinen jos unohdat kirjoittaa ne. Vain aina kiinnittää huomiota. Kuten, pieniä asioita että et huomaa kun olet ohjelmointi kannettavan tietokoneen, koska kannettavan tietokoneen tekee sen puolestasi? Älä unohda, kun kirjoitat käsin. Joo? Yleisö: Mutta miten virheellinen? Kuten, saamme koko ongelma väärin? PROFESSORI: Ei, ei. Älä huoli. Se on itse asiassa teoriassa mahdollista voit saada täyden pisteitä kysymys vaikka Koodisi koskaan lopu tosielämässä. Ehdotan et yritä tehdä tämän tapahtua. Esimerkiksi, kuten jos kaikki se täällä on oikea, mutta unohdat paksusuolen tai kiinnike, koodi ei todella ajaa. Mutta saatamme olla armollinen. Joo? Yleisö: Onko sinulla kommentoida meidän käsiala? PROFESSORI: Ei, ei, ei huolet siitä. Ei kommentoi. Tyyli olisi hyvä. Kuten, älä smush kaikki yhdellä rivillä. Emme johtuen kanssasi jos teet sen. Onko kukaan halua antaa minulle ensimmäinen rivi? Vihje, se on hyvin helppoa. Joo? Yleisö: Int, n on nolla. Juuri perustanut laskuri. PROFESSORI: Eli haluamme joitakin eräänlainen laskuri, eikö? Olen juuri menossa name it "laskea" vuoksi luettavuutta. Mitä haluamme asettaa se sama? Yleisö: Zero. PROFESSORI: Jep. Puolipiste. Se on myös hyvin outoa piirustus puolipistein. Vain harjoitella että. Joten haluamme ensin laskuri tyyppiä int. Koska haluamme laskea kuinka monet merkit tai kirjaimet ovat Tässä merkkijono, eikö? Erittäin helppo ensimmäinen askel. OK, ehkä hieman monimutkaisempi nyt, miten aiomme tehdä niin? Onko kukaan halua anna minulle koodiriviä että ehkä auttaa silmukka kautta mitä tämä on? Joo, rohkea sielu takana? Yleisö: OK, joten vaikka kohta tähdellä, joo, tähti s, ei ole nolla, sitten tehdä jotain? PROFESSORI: Se on todella, todella lähellä. Todella lähellä. Joten aion puuttua kaksi asiaa kanssa. Ensinnäkin, se ei ole tasan nolla. Mikä se on? Se on null Terminator, joka on kenoviivan nolla. Joten he erilaisia kannalta, miten ne tallentuvat. Joten olet todella lähellä. Ja toiseksi, emme halua vain siirtää osoitinta. Haluamme todella pääsyn arvot, eikö? Ja niin miten me sen teemme? Erittäin helppoa. Älä ajattele viitteitä, älä ajattele muistoja. Palata viikon kaksi tämän kurssin. Yleisö: [äänetön]. PROFESSORI: Vuodesta, muistatko? Mitä ovat jouset? Miten ne tallennetaan muistiin? Yleisö: He esille. PROFESSORI: Niitä kasvatetaan. Miten siis pääsyn kunkin merkin sisällä? Yleisö: [äänetön]. PROFESSORI: Aivan. Joten while-- mitä tapahtuu sisällä täällä? S - Yleisö: I. PROFESSORI: Voi, en ei ole, eihän? Yleisö: Ai, luottaa? PROFESSORI: Voimme vain käyttää count, ei voi me? Yleisö: Anteeksi, kutsuin sitä i. PROFESSORI: Joo, se kaikki hyvä. Meillä muuttuja tänne se jo ilmoitettu vastatoimia. Joten miksi emme vain käyttää että liikkua samalla silmukan? Onko siinä järkeä? Joten vaikka s count-- ei kukaan halua antaa minulle mitä tapahtuu, kun täällä? Yleisö: Se ei ole sama. PROFESSORI: ei ole sama, eikö? Se bang vastaa, huutomerkki vastaa, mitä kaverit haluavat kutsuvat sitä ei equal-- Yleisö: [äänetön]. PROFESSORI: Joo. Muista yksittäinen tarjous on char, lainausmerkit ovat merkkijono. Ole varovainen, kun käytät niitä. Joten kun etsimme kautta array, viimeisen merkin, tiedämme emme halua se on kenoviiva nolla. Joten vaikka. Emme ole lopussa merkkijonon. Mitä haluamme tehdä sisällä? Yleisö: Haluamme lisätä laskuri joten se laskee plus plus? PROFESSORI: Aivan. Joten tässä me aiomme tehdä laskea, laskea plus plus. Puuttuu yksi rivi. Olemme melkein perillä. Mitä me unohtamatta tehdä? Yleisö: Palatakseni nolla? PROFESSORI: Haluat palata nollaan? Yleisö: Ei, paluu strlen. Odota. PROFESSORI: joka on tallennettu? Yleisö: Count. Laskea. PROFESSORI: Aivan. Joten tässä me aiomme palata count. Koska mitä olemme tekee täällä ultimately-- meillä on laskuri muuttuja, joka on menossa kasvattamaan kautta merkkijono. Aiomme pitää käynnissä, pitää menee noin ja noin tässä silmukan. Ja vaikka emme ole lopussa merkkijono, joka on nolla terminaattori. Ja joka kerta käymme läpi se, olemme lisäämällä vastatoimia. Ja aiomme edelleen pitkin tässä array. Ja lopussa, kun olemme osuma null Terminator, me tiedämme, OH, voimme tauko, palauttaa määrä. Meillä on strlen. Onko kaikki saavat miten tämä toteutettiin? Vaikka loops-- Tiedän, että meillä ei tehneet liian paljon heidän kanssaan, mutta ne ovat yleensä erittäin, erittäin hyödyllinen, jos en tiedä mitä olet pysäyttäminen ehto on välttämättä oltava. Kysymys? Yleisö: Voimmeko kirjoittaa null on taas kunnossa? PROFESSORI: Vaikka? Joo, joten tässä ongelma minulla oli sinua te olettaa, että n ei ole nolla. Koska muistaa, teoriassa, jos annoin sinulle osoitin, joka oli liian suuri muistia, se antaa sinulle nolla, eikö? Sitähän toiminta järjestelmä tekisi. Joten jos en kertoa olettaa n olisi null, sinun täytyy tarkistaa. Joten täällä, te tekisitte, jos s vastaa vastaa null, palauttaa yhden. Jotain sellaista. Yleisö: [kuultavissa] nolla. PROFESSORI: OK, minä kerron miksi emme voi tehdä sitä. Koska muistan muistiin, oikealla, täällä. Menemme täällä. Sinulla jättiläinen lohkot muistin kaikki verkot että myymälä erilaisia ​​arvoja, eikö? Ja niin kaikki merkkijono is-- varten Esimerkiksi jos aiomme syöttää Hei, se olisi H-E-L-l-O- kenoviiva nolla, eikö? Ja sitten kuka tietää, kuten satunnainen asioita, jotka ovat täällä sen jälkeen. Emme oikeastaan ​​tiedä mitä siellä. Ja niin jos olit tehdä sijasta kenoviiva nolla, null, se ei voi olla tyhjä. Koska se vain voi tarkoittaa joitakin satunnaisia ​​muita asioita jotka eivät kuulu teidän merkkijono. Ja niin että me aina tiedä, että merkkijono päättyy on kenoviivaan nolla. Ja niin se on aina miten me tarkista loppuun merkkijonon. Null, kaikki tämä tarkoittaa, jos sinulla on olematon osoitin, ensinnäkin, tai jos muisti on vain niin suuri, että et voi palauttaa sen, niin se olis null. Ole siis varovainen erottaa ero null ja kenoviiva nolla. Joo. Jokainen OK tämän? OK. Joten jouduin te kirjoittaa strlen. Järkevästi voisimme myös kysyä kirjoittaa ulos I, muista, että "Atwoa" tai mitä te halua kutsua sitä? Tämä toiminto Vigenere ja Caesar, että muuntaa ASCII arvon kokonaisluku? Tämä on myös keksiä ohi tietokilpailuja Toimintojen olemme pyytäneet sinua kirjoittamaan. Melko paljon mitään toiminto että olet käyttänyt ja on erittäin helppo kirjoittaa itse, anturit kuten on alempi, on ylempi, alentaa, ylempään. Toiminnot joka muuntaa merkkijonon pienet isoiksi. Me kaikki tiedämme, miten se tehdään, eikö? Se on melko helppoa. Haluan vain varmistaa, että olet can-- se on sama ajattelua. Sinä vain kerrata kautta ja te kääntää asiat. Voit joko laskea tai kun voit kääntää asiat eri tavalla. Haluan suggest-- I tiedä jos aiomme pyytää teitä muistaa mitä pääoman tai pääoman Z, tai pieniä tai pieniä z ovat Ascii, mutta ehdotan ehkä kirjallisesti, että alas jos me teemme. Just niin teillä viite. Kuten isoja on, mitä, 197? Ja sitten pieniä on kuin 50 jotain. 65, joo, siellä mennään. Niin vain aika paljon tietää ero niiden välillä on 32. Se on aika tärkeää. Joo. Olenko hyvä tässä? OK. Yleisö: Voisimme teoreettisesti kirjoittamaan Näiden alas sekä meidän little-- PROFESSORI: Sinä teoreettisesti voisi vain kopioida toiminnon alas. Se on totta. Yleisö: Ei [äänetön]. PROFESSORI: teillä arkki. Teillä huomata arkki. Voit kirjoittaa sen. Voit kirjoittaa sen. Voit tehdä mitä haluat sen kanssa. Joo. Joten teoriassa, jos haluat, mennä. Yleisö: [äänetön] mutta emme todellakaan välttämättä tarvitse muistaa arvo, voimme vain Käytä ylemmän tai alempi toiminto, eikö? PROFESSORI: Joo. Mutta jos me annoimme teille kysymys joka sanoo kirjoittaa ylä-, niin sinun pitäisi kirjoittaa se. Joten te voi olettaa, että sinulla kaverit on pääsy kaikkiin toimintoihin, mutta jos haluat käyttää ylempään tai alempi, mitä sinun on myös tehdä? Yleisö: [äänetön] käyttää CS50 [äänetön] PROFESSORI: Onko se CS50.h? Ole varovainen siellä. Niin ylä-, alentaa, on ylempi, on alempi, toiminnot, joissa merkkijonojen käsittely ovat kaikki sisällä joko Ascii tai sisällä matematiikka kirjasto tai sisällä merkkijono kirjaston. Joten jos te käyttää näitä toiminnot, olla varovainen muistaa sisällyttää että otsikko. Joten ehkä myös jotain haluavat sisällyttää levyt, mitä otsikko? Mitkä ovat kirjastot olet käyttänyt? Mitkä toiminnot ovat sisällä nuo kirjastot? Se on tärkeää. Joo? Yleisö: Voisimmeko poliisi ulos ja tehdä hashtag kautta ehdottomasti jokainen kirjain olemme koskaan nähnyt vastaavaa kaikkiin kysymyksiin? PROFESSORI: Voisit. En tiedä kuinka onnellinen aiomme olla palkkaluokkaan että tietokilpailu kun jokainen koodinpätkä on kaksi kertaa niin pitkä kuin sen pitäisi olla. En tiedä, voisimme ottaa pois piste tyyliin. Mutta teoriassa sinun koodi olisi oikein. Te voisi väistellä ja vain sisältää kaiken. Se on hyvä liian, joo. Yleisö: [äänetön]. PROFESSORI: Joo. Ehdotan ei tee sitä kuitenkaan. Joo. Yleisö: Cool. PROFESSORI: Hyvä kysymys. Yleisö: Niin, pahimmassa tapauksessa. PROFESSORI: pahimmassa tapauksessa. Jos täysin unohtaa, voisit tehdä sen. Joo. Jep, koodi on oikeassa. Käytin n sijasta määrä, mutta olet tietää, mitä leijuu veneesi. Yleisö: Odota, niin me ei tarvitse hashtag kuuluvat koska olemme alkaen int? PROFESSORI: Joo, olen vain olettaa, että meitä pyydettiin kirjoittamaan toiminto. Jos halusi olla turvallinen, sinua voisi ehkä laittaa sen sinne. Mutta en vain ei vaivaudu, joo. En edes tiedä, jos tarvitse kirjasto tähän. Koska et ole oikeasti tulostus pois mitään tai mitään, eikö? Joo, en tiedä jos tarvitset kirjasto. OK. Tämä on myös hieman pitkin linjat muistin manipulointia. Tällainen vähän hankala. Ajattele tätä. Sinulla on toiminto nimeltään func. Olisin voinut nimeltään se mitä tahansa, mutta olen päättänyt name it func. Minulla on se edellä minun tärkein. Muista, haluat olla toiminto jälkeen tärkein, haluat varmistaa, että sinulla ovat prototyyppi alkuun. Mutta tässä tapauksessa se oli niin lyhyt että tunsin, että voisin vain sisällyttää sen huipulla tärkein. En tarvitse olla prototyyppi, koska se on jo kirjoitettu edellä. Joten kaikki olen tekemässä minun päätehtävä luo kokonaisluku x on 10. Soitan minun func toiminto, ja sitten tulostus jotain. Ja sitten se on todella mitä func tekee. Te haluta ajatella kautta. Koska se on vähän hankala. Se on hyvin, hyvin hankala, oikeastaan. Ajattele kautta mitä tämä ohjelma olisi syöttöä. Minä annan teille kaverit kaksi minuuttia. Hyviä keskusteluja? Yleisö: Joo. PROFESSORI: Joo. Selvä, joten tämä on hankala syystä. Ja siksi halusin tuoda tämä kaikkien huomion. Haluaako joku antaa minulle ehdotus, yritys? Mitä tämä tulostaa? Täysin hienoa, jos olet väärässä. Joo? Yleisö: Minusta se on 100 ja sitten 10 kahdella eri riveille. PROFESSORI: Ja 10? Onko kellään mitään muuta arvauksia? Joo? Yleisö: Ehkä vain 10, koska func ei palauta mitään? PROFESSORI: ok, joten me on arvaus numero yksi että arvaus numero kaksi on juuri menossa tulostaa 10. Onko kellään mitään muuta arvauksia? OK. Joten kulkea tätä, eikö? Kun saat koodinpätkä, älä vain katsoa sitä ja olla, ah, että on niin paljon tavaraa! Olen niin hämmentynyt! Kuten, rauhoitu alas. Juuri tietää, että voisit vain katsoa läpi koodin rivi riviltä. Siinä kaikki se on. Se on kuin kirjan lukeminen. Joten mitään toimintoa, me aina alkavat tärkein. Joten aiomme alkavat int main mitätön, jopa ohjelman jo ajaa alas, eikö? Aloita Main mitätön. Int x on 10. Joten aion tyhjentää. Aion tehdä muistiin juuri niin kaverit voivat sellaista nähdä mitä tapahtuu. Muista täällä meillä on pino? Täällä meillä on kasaan jossain täällä. Pino kasvaa, eikö? Ja sisällä pino, olet sähköverkkoon toimi niin hyvin kuin kaikki sähköverkkoon paikallisia muuttujia. Joten tässä, int x oltava 10. Sisäpuolella päätehtävä olemme luodaan muuttuja nimeltä X. Olemme asetus että vastaa 10. Täällä sinulla joitakin X, ja olet asettamalla että vastaa 10, oikealla, sisällä tärkein. Jokainen hyvä? Toiminto. Joten nyt, meidän tärkeimmät toiminto, olemme soittamalla toiminto olemme kirjoitettu edellä. Joten olemme nyt syöttää toinen toiminto. Aiomme luoda toisen muuttuja int x on 100. Mitä tapahtuu täällä pino? Mitä tapahtuu, kun soitat toiminto, joka luo uusia muuttujia? Mitä tapahtuu täällä pino? Yleisö: [äänetön] paalut päälle? PROFESSORI: Joo. Joten se todella luo kopion. Ja se eräänlainen paaluilla päälle. Ajattele stack-- pino kirjoja, pino mitään. Paalut päälle, ensin viimeksi out, last in, first out. Joten se tulee luoda X täällä. Joka on menossa on kaikki funcs muuttujat. Suuri. Joten nyt meillä on kaksi eri X: n että edustavat kahta aivan eri asiaa. Sitten aiomme tulostaa pois kokonaisluku x. Joten tulostaa 100, eikö? Koska täällä se on 100. Niin, että ensimmäinen asia että se tulee tulostaa. Koska tämä toiminto palauttaa mitään, Nyt toiminto, että linja Main on tehty. Jokainen hyvä minulle tähän mennessä? Joten olemme nyt kahden ulos kolme riviä meidän päätehtävä. Nyt aiomme kolmas rivi. Aiomme printf. Mikä on tämä x sisällä tärkein? Mitä se edustaa? Mikä arvo on x nyt? Yleisö: 100. PROFESSORI: Se on 100? Yleisö: Vielä 10. PROFESSORI: edelleenkin 10. Joo. Koska muistaa, sisällä meidän func, x on 100. Mutta jos palaamme takaisin meidän päätehtävä, että muuttuja on tallennettu eri paikka meidän pinoon. Joten nyt meidän täytyy mennä takaisin Tärkeimmät pino, verkkovirta paikallisia muuttujia. Ja tässä x on 10. Ja niin me aiomme tulostaa 10. Joten hän oli aivan oikeassa. Aiomme olla ulostulo 100 ja 10. Joo? Yleisö: Kun malloc, on se pino tai pinon [äänetön]? PROFESSORI: Kun malloc, olet ottaen muisti kasaan ja sen jakamisesta. Niin että sinulla ei ole sotkea mitään tästä. Joten kai isompi takeaway tässä jotain kutsutaan soveltamisala. Niille teistä, jotka olivat arvostelu istunnon viime yönä, puhuimme lyhyesti tästä. Laajuus määritellään miten ja kun muuttujat ovat olemassa. Tai millä kehyksiä tee muuttujat ovat olemassa. Aika paljon nyrkkisääntö yleisesti on, sinun variables-- jos luot niitä sisällä kihara braces-- ne ovat olemassa vain sisällä ne aaltosulkeita. Niinpä esimerkiksi meidän funktiona func, näet ne kaksi olkaimet. Jos luot mitään sen sisällä, mahdollisuudet ovat kaikki teet on luodaan pino ja varastointia että. Sama asia tärkein. Se on vain varastoitu sisällä tärkein. Myös haluat olla hyvin, hyvin varovainen täällä. Koska soveltamisala myös lainaa itse erilaisia ​​esimerkkejä. Niinpä esimerkiksi varten silmukka, sillä int i on yhtä kuin 0. I on vähemmän kuin, en tiedä, 10. Olen plus plus. Ja olet saanut koodin sisällä siitä, eikö? Mistä tämä muuttuja, i, oikeastaan ​​vain olemassa? Vain sisällä oman silmukan. Niin varmaan monet teistä kaverit ovat luultavasti havainnut tämän virheen teet ohjelmia oman psets. Kuinka moni teistä kaverit ovat yrittäneet käyttää i ulkopuolella varten silmukan ja oli virhe? Kuten unreferenced kokonaislukuja Tai jotain sellaista? Syy miksi näin tapahtuu on koska täällä olet luoda jotain, että vain olemassa omassa silmukka. Ja jos yrität käyttää sitä, i ei oikeasti olemassa sen ulkopuolella. Joten periaatteessa tietokone sanomalla, I en tiedä mitä puhut. Tiedän vain, että olin täällä, mutta nyt ei enää. Joten jos olisin luoda silmukka sisällä, eikö? Ja aion luoda toisen, kuten int j, ja on se tehdä mitä. Ja sinulla koodin sisällä että silmukka, j vain olemassa täällä. Vaan että myös vallitsee i. Ja niin j vain olemassa tässä silmukka, kun taas i olemassa koko juttu. Jokainen selvä? Sama juttu ehtolauseet jos haluat luoda mitään. Sama juttu kun silmukoita jos haluat luoda mitään. Se on jotain olla hyvin, hyvin varovainen. Joten tämä oli todella hyvä ongelma mielessä, että se osoitti kaksi asiaa. Se osoitti ensin, soveltamisala. Ja se osoitti myös muistin jakamista. Koska te pitäisi tietää, että toiminnot kasvavat ylöspäin pinossa. Ja että kun soitat toiminnot, luot olennaisesti uusi pino muistia. Tämä on hyvin erilainen kuin mitä sähköverkkoon muisti on. Joo. Vau! Jokainen OK että? Se oli hämmentävää. Erittäin hyvä aiheita mennä yli, koska olet luultavasti menossa hakemaan hankala asioita, kuten että tietokilpailu. Joo. Viileä. Laitan saat 100 yhdelle linja ja sitten 10 toisaalta. Joo, erittäin hyvä. OK, nyt te saat mahdollisuus olla avustajat. Saat vastata kaikkiin ihana sähköposteja, että olen joskus. Niin, rakas Andi, näen mielestäni jotain on pielessä minun kääntäjä. Olen varma, että minun koodi on oikea, mutta Saan segmentointi vika joka kerta kun ajaa. Mitä on meneillään? Auttakaa, paljon rakkautta. Jos te saanut jotain että miten vastata? Nämä ovat itse asiassa hyvin yleisiä kysymykset pyydämme sinua. On jos, annamme sinulle skenaario, me antaa meille paras arvaus, mitä on tekeillä. Kellään puukottaa mitä tapahtuu? Joo? Yleisö: Ehkä dereferenced null, jotain osoitin on osoittaa jotain null. PROFESSORI: Joo, että olisin esimerkiksi kun se tapahtuisi. Mutta mitä suurempi kuva mitä täällä on tekeillä? Yleisö: Onko yrität käyttää muistia, että et ole pitäisi saada? PROFESSORI: Aivan. Niin ajattele seg vika, pois rajoja, rajoitusalueella muistiin että sinun ei pitäisi olla koskematta. Joten aika paljon kun yrität että index-- kuten esimerkiksi, olet julistanut array nollasta yhdeksään. Mutta yrität koskettaa että 10. arvo, sinulla ei ole pääsyä, että. Koska et ole julisti sen. Ja niin tietokone on menossa tarkastella että olla, uh oh, yrität mennä rajojen ulkopuolella indeksi. Aion antaa teille segmentointi vika. Ajattele segmenttinä, eikö? Ylimääräinen segmentti, vika on kun yrität rikkoa jotain ja sinun ei pitäisi olla siellä. Segmentointi vika on milloin yrität koskettaa asioita että sinun ei pitäisi olla koskematta. Niin yleisiä esimerkkejä ovat indeksi. Tietenkin, jos yrität koskettaa se oli tyhjä, jotka toimivat myös hyvin. Jos osoitin yritti kosketa asioita, joita ei pitäisi koskea, että voi myös toimia hyvin. Tyypillisimmin te ll nähdä tämän array. Jokainen hyvä? Yleisö: Joten jos haluat käyttää 10 pisteen ja siellä on vain raja yhdeksän tai jotain. PROFESSORI: Joo, täsmälleen. Aika paljon. Viileä. Hyvä Andi. Joten meillä nämä ihanat asioita kutsutaan lajittelee. Jos Yhdistä sort-- kuin me saha esimerkiksi kun Daavid teki koko asia class-- miksi, jos se on niin paljon nopeampi kuin jollekin muulle lajittelee, miksi me edes vaivaudu tietää muulle lajittelee? Mikä on tämä kysymys todella kysyi sinua? Mikä kolme word-- Yleisö: Mikä vaihtokauppa? PROFESSORI: Aivan. Se mitä kysymys kysyy. Mikä kompromissi Merge sort säkeet muunlaisiin? Yleisö: panee muistiin, eikö? PROFESSORI: Pidätkö selittää, että hieman enemmän? Katsotaanpa ensin selittää Yhdistä myymälä. Miten Yhdistä lajitella toimii? Yleisö: Joten se toimii jakamalla kaikkemme puoli ja sitten laittoi pallon yhteen ja jakaa uudelleen sitä, jotta, kuten aina yhdistää sarjaa. PROFESSORI: Aika paljon. Joten en voi tehdä tätä, mutta se olisi ota minut viisi minuuttia vetää sitä ulos. Muistella osioon dioja jossa kävimme Yhdistä lajitella. Täsmälleen. Joten miten Merge sort teoksia on se jakaa asioita kahtia, ja sitten se vain tarkastellaan ensimmäinen arvot ne kaikki ja lajittelee vain että. Jatkuvasti luo uusia taulukot ja asettaa asiat enemmän ja enemmän, jotta. Ja niin vaikka se on todella, todella nopeasti, koska it's-- tiedätte, binäärihaku on n log n. Luot niin monta eri paneelit että olet käyttämällä valtavasti muistia. Ja niin vaikka se on nopeampi, vaihtokaupasta tässä on se, että käytät enemmän muistia. Ja niin, vihje, lajittelee ja haut kattoi paljon enemmän tänä vuonna kuin ne ovat olleet vuosia aiemmin. Te pitäisi nähdä, että heijastuvan on tietokilpailu. Haluan ehdottomasti viettää aikaa menossa yli, mitä kaikki eri lajittelee ovat, miten binäärihaku, kuinka lineaarinen haku työtä. Miten ehkä pseudokoodina koodata ne ulos. Mitkä ovat käynnissä kertaa? Jotain käynnissä kertaa on hyvin helppo kopioida alas huomata arkki, oikea? Se on todella vaikeaa, kun olet keskellä testi ja sinun täytyy tajuta, että ulos. Kopioi se alas. Takaan olet menossa tarvitse tietää, että. Mitkä ovat kompromisseja? Pahimmassa tapauksessa paras skenaariot heille kaikille, hyvin tutustua. Joo? Yleisö: Tarvitsemmeko tietää, miten koodi Merge lajitella? Kuten, meidän täytyy Muistan rekursiivinen? PROFESSORI: Olen erittäin epäilen sitä, vain koska se on kuin melko monimutkainen. Mutta se ei voi olla mahdotonta, jos me pyytää sinua käyttämään pseudokoodit sitä. Joo. Jep, OK, yksi enemmän. Tämä on saattanut keksiä olet viimeksi pala vähän. Joo? Oliko kaikki kuulla, että? OK, joten aika paljon ensimmäinen kaikki, millaista ohjelmaa olisi antaa sinulle tuotos näin? Muista pyysimme sinua oppia tämä uudentyyppinen testausvälineen? Mikä oli sen nimen? Valgrind, oikea Se oli ohjelma, jossa voisi kutsua että voisi seurata kaikkia muistia olet käyttämällä oman ohjelman ja oli tekeillä. Joten jos sinulla jotain, kuten, varmasti menetetty, 40 tavua korttelin. Todennäköisesti et ole muistaa sen vapauttamiseksi. Koska jos käytät tavua muistia, se tarkoittaa, että olet käyttää, että muisti, mutta et ole voinut vapauttaa. Joten haluat tehdä Varmista, että olet myös käyttämällä free-- se function-- vapauttamaan kaikki muistin uudelleen minkä malloc. Viileä. Joten tämän dian, Otan sen. Se on kaikkialla paljon luentoja, on paljon jakso dioja. Todella haluat varmistaa, vain tietää kaiken tämän. Joko muistiinpanon arkin tai jos haluavat muistaa se, vapaasti. Se on todella, todella, todella tärkeää. Myös erittäin hyvä kysymys, että voimme kysyä. Miksi Valinta sort-- katsoa Valinta sort-- kaikki runtimes on n potenssiin. Riippumatta siitä, miten luettelon tulee sinua, joten miksi valinta sort-- Annan te 30 Toinen ajatella tätä. Koska se on jotenkin hämmentävää. Se liittyy joitakin käsitteellinen ajattelu. Miksi ajaa kertaa olla sama Sekä pahin ja paras skenaariot? Joo? Yleisö: Koska valinta sort kukin asema tai tilaa tässä pieni joukko asia tai mitä tahansa. Joten jopa parhaassa tapauksessa, vaikka se on täysin järjestetty, se olisi vielä olla, OK, yksi. Minun ensimmäinen paikka minulla on yksi. Ja käydä läpi niitä kaikkia. OK, yksi on pienin. Ja sitten se menee taas ja on kuin, OK, kaksi on pienin kaikista niistä asioista. Mutta se on vielä tarkistaa jokaisen. PROFESSORI: Joo. Niinpä esimerkiksi, haluan vain sanoa meillä on lista, jo lajiteltu, array viisikymmentäyhdeksän yli neljä. Että valinta lajittelee on, että se menee läpi, se tarkistaa nämä kaksi. Sitten se tarkistaa nämä kaksi. Ja sitten se tarkistaa, ja se tarkistaa. Se pitää tarkistaa niitä kaikkia, riippumatta siitä, onko vai ei Se on itse asiassa järjestetty. Koska se on yksinkertaisesti miten lajitella toimii. Ja niin tämä kysymys on ikään kuin käsitteellinen kysymys pyydämme. Jos ensimmäinen, voit tietää mitä valinta lajitella on, oikea, voi vastata kysymykseen. Sinun täytyy pystyä ymmärtämään käsitteellisesti mitä tapahtuu. Ja sitten voit käyttää sitä ja ajatella, OK Haluan vain kuvitella pahimmassa tapauksessa. He kaikki alenevassa järjestyksessä. Miten se vaikuttaa siihen? Mitä jos se on nouseva järjestys? Jos se on jo järjestetty? Miten jotka vaikuttavat runtimes? Ja sitten valinta lajitella, huomaat että se ei varsinaisesti väliä. Koska olet tarkkailun kaikki arvot riippumatta siitä, mitä tapahtuu. Ja niin hyviä asioita muistaa. Miksi jotkut lajittelee eroavat muista ja miten parhaiten ja pahimpaan vaikuttaisi ne kaikki. Aion todella osuma lajittelee koska se tulee olemaan tietokilpailu. Joo. OK. On kuusi minuuttia jäljellä. Voin ottaa kolme minuuttia kysymyksiä. Voin myös roikkua kuten 20 minuutin jakson jälkeen jos haluat esittää kysymyksiä samoin. Onko joku on vain todella lyhyt kysymyksiä tai käsitteellisiä kysymyksiä he epäselvää juuri nyt? Joo? Yleisö: Voitko puhua hieman vähän siitä bittioperaatioiden? PROFESSORI: Joo. Joten bittioperaatioiden ovat jotain, joka luultavasti ehkä vain haluavat laittaa arkki. Joten quickly-- En halua mennä liian paljon perusteellisesti koska Harvardin, niiden tarkastelu istunto, peitti melko hyvin. Bittioperaattori, siellä viisi niistä, eikö? On tämä, joka on X tai toiminto, siellä et-merkki, joka on ja. Putki, joka on tai. Ja sitten on kaksi eri vuorossa. Jos annan sinulle kaksi arvoa, jos Annan sinulle, kuten, yksi ja yksi. Mikä se arvioi sen? Jos annan sinulle totta ja totta, totta? Entä totta vai tarua? Edelleen paikkansa, eikö? Koska siellä on tai. Me todennäköisesti antaa sinulle numeroita. Joten muistakaa, yksi on totta, nolla vastaa väärä. Ja saatamme antaa teille näitä asioita ja pyytää sinua kertomaan meille, mitä tapahtuu. Harvardin peittää sen ensimmäisten 10 minuuttia opiskelutuokionsa todella, todella hyvin. Joten te haluat tehdä varmasti katsoa taaksepäin siitä. Yleisö: Onko pisa5 meneillään olevan tietovisa? PROFESSORI: Ei. Älä edes katso pisa5 juuri nyt. On vaikea. Vain eivät edes vaivaudu katsot pisa5. Koska vihjeitä ja ehdotuksia, minä Ehdottaisin aloitat pisa5 kun visa on ohi. Tämä on vaikein viikko, mutta sitten te välitetään se kukkuloilla liikkuvan vihreä ja pennut, ja se on hieno. Tämä luokka saa merkittäviä helpompaa viidennen PSET. Yleisö: Aukioloajat ovat sunnuntai, maanantai? PROFESSORI: Joo, joten virka tulee sunnuntaista maanantai PSET. Virka tänään olennaisesti tulee olemaan vain arviointisi tietokilpailu. Jos joku haluaa tulla ja kysyä TAS kysymys, me olla siellä. Otan ehkä yksi kysymys jos joku on kysymys? Joo? Yleisö: Kun olet määritellään solmut, [kuulumaton] jos sanot solmu tähti ja sitten seuraavaksi, tekee tietokone automaattisesti ymmärtää, että olet viitaten toiseen osoitin? PROFESSORI: Ei. Yleisö: Sinun linkittää se [äänetön]? PROFESSORI: Joten periaatteessa struct solmun on, muistan, se on kuin luot solmun ja niin sinulla on osoittimen sanottujen seuraavan. Kaikki teet on ottaa rakenne siellä. Sinun täytyy määrittää että osoitin jonnekin. Joten tietokoneet ei tietää mitä se tekee vielä. Sinun täytyy todella antaa sitä, kun luot linkitetty lista. Ja sitähän pääasiassa PSET 5 tulee olemaan. Joten ei huolestuta kaikki tämän oikeuden nyt. Yleisö: Joten meidän ei tarvitse keskittyvät liikaa linkkilista, vain yleinen käsitys? PROFESSORI: Vain aika paljon pinoja, jonot, Linkkilistat, puut, hash taulukoita. Vain voi tietää, mitä ne ovat. Emme aio kysyä pidät mitään erityistä koska emme ole todella tehnyt PSET että kattaa kaikki kyseisen vielä. Joten kaksi viimeistä minuuttia ennen Minä sinut vapaaksi tappamaan tämän tietovisan. Aika paljon, kuten, mieti, miten pitkälle te tullut tässä luokassa. Muistan, kun viikko kaksi tämän luokan, jotkut teistä viettää kolme tuntia kirjallisesti vettä. Kuinka kauan se vie kaverit kirjoittaa vettä nyt? 30 sekuntia, ehkä? Ajattele, kuinka paljon te oppinut. CS on todella, todella kovaa aihe. Ei ole epäilystäkään siitä. On vaikea, siksi kukaan tutkimuksissa. Se on vain vaikea. Ja se on täysin hieno. Ja olen todella ylpeä siitä, että jokainen on tehnyt tähän asti. Psets eivät ole helppoja. He ottavat paljon aikaa. Te, en koskaan pyydä sinua kirjoittamaan peli 15 tai Vigenere päälle PSET. Ei tarvitse juuri älyttömästi siitä. Kaikki testaamme tässä arvioida sinun käsitteellistä tietoa sekä kuten joku perustaidot koodausta. Testin tarkoituksena on olla todella haastavaa. Kuten se on suunniteltu voit ei saada 100. Se on myös suunniteltu voit luultavasti ei voi lopettaa 75 minuuttia. Ja se on täysin hieno. Olen opiskelija itse. Tiedän, vihaan sitä kun kävelen ulos tietokilpailu olla, paskaa. Se oli todella kova. Luultavasti mitä tulee happen-- ja se on täysin hieno, Kerron te juuri nyt. Keinot näitä asioita eivät ole korkeita lainkaan. Ja niille teistä, jotka on tulossa, kuten, kolmosta teidän ongelma sarjaa, se ei tarkoita olet menossa 60 prosenttia tässä luokassa. Jos saat 60% enemmän tietokilpailu, joka ei tarkoittaa aiot saada D tässä luokassa. Näemme, erityisesti I varten Niille teistä minun osassa, Näen kuinka kovaa te kaikki teemme työtä. Ja minä seurata sitä. Te on hieno. Ei ole institutionaalista muistia onnellisuus lopussa lukukauden. Koska kaikki Harvardin lapset kertovat niiden ystäviä, OH, sinun on hieno. Kukaan kertoo sinulle kaverit, jotka täällä. Joten minun on kerrottava teille kaverit, jotka täällä. Te on hieno. Olen niin ylpeä kaikkien teitä. Testi on vaikea. Opiskella sitä, ja jälkeenpäin vain heittää sen pois. Hanki valmis oppimaan uusia asioita. Ja syödä karkkia. Olemme on paljon karkkia. Saada hyvät yöunet. Älä nuku, koska Se olisi todella huono. CS on paljon logiikkaa. Jos et nuku, et voi toimia, ja aivot ei voi toimia. Ja olen täällä seuraavan 20 minuuttia, jos joku haluaa roikkua. Te olette menossa tappaa sen. Hyvää onnea.