[Musiikkia] SPEAKER 1: Tämä on CS50 ja tämä on alku viikolla kaksi. Joten, nyt sukeltaa suoraan jotain että on buginen, niin sanoakseni. Joten, täällä on CS50 IDE ja olen revitä etukäteen tässä screen-- hemmetin se. Spoileri hälytys. Selvä. Olen revitä tässä näytössä täällä, joka on hyvin yksinkertainen ohjelma. Jos me selaa, useimmat Tämän on juuri kommentoi, mutta täällä linjat 13 kautta 17 meillä on ohjelma. Se on syntaktisesti voimassa, mikä tarkoittaa, että jos Olen kääntää sen, se kääntää ja ajaa, mutta se on buginen. Tämä ohjelma väittää kommentit ylös että se pitäisi tulostaa 10 tähteä, mutta se ei. Ja perustuu omaan kokemukseen, tai pian kokemusta C, voit loogisesti erottaa miksi tämä on, itse asiassa, buginen? Joo? Yleisö: Se menee nollasta 10. Se on 11 toistojen. SPEAKER 1: Joo. Niin, se menee nollasta läpi ja yhtä suuri kuin 10, joka tietenkin on 11 toistojen. Niin, se tulee Tulosta, todellakin, 11 tähteä. Joten, tietojenkäsittelytiede yleissopimuksen Useimmissa ohjelmointikielissä on todellakin vain alkaa laskea nollasta, mutta laskea jopa mutta ei läpi Arvo, joka todella kiinnostaa. Nyt, tämä on yksi asia, että vie hieman totuttelua ja jopa Scratch, suunniteltu se on ei ohjelmoijat tai ei tietokone tutkijoiden ja lapsille suurelta osin, on suunniteltu siten, että te alkaa laskea yleensä yksi. Ja se käy hyvin. Voit ehdottomasti alkaa laskea yhtä jos se mukavampaa. Ja laskea jopa ja kautta 10, mutta huomaat erityisesti tällä viikolla ja pidemmälle juuri niin monet asiat ohjelmointi olettaa, että 0 on ensimmäinen numeroinen jolla laskit, että olet menossa on helpompi vain päästä tämä tapa alkaa nollasta ja laskemalla arvoon saakka välität juuri nyt päässä saada mennä. Niin, että on kiinteänä. Muutimme alle tai vastaa vain alle. Katsotaanpa katsomaan Toinen esimerkki tästä. Joten, tämä ohjelma liian väittää sen kommentoi ylös, että se pitäisi tulostaa kymmenen tähteä, mutta se ei ole. Mikä vika täällä? Niin, what-- ja anteeksi, olkaamme selkeitä. 10 tähteä. Yksi per rivi, mutta se ei ole. Joten itse asiassa, anna minun mennä eteenpäin ja koota tämä koska se on hieman vähemmän tyhjentää perusteella, että kuvaus. Anna minun mennä meidän lähde hakemistoon. Tee buginen yksi piste slash, buginen yksi. OK, näen 11 tähteä, joka on edelleen ongelmallinen, mutta he ovat myös kaikki yhdellä rivillä. Mikä kysymys? Joo. Yleisö: [äänetön]. SPEAKER 1: Joo. Joten tämä on hienovaraisuus että saatat muistuttaa minua tekemään lyhyt maininta. Vaikka kaikki näyttää aika, ja se on kauniisti sisennetty, ja se tavallaan näyttää Scratch kaltaisten Tälle riville 16 ja 17 ovat, todellakin, sisennetty nojalla, että silmukka. Se on merkityksetöntä. Tietokone ei tietää tai nähdä valkoinen tila. Valkoinen tila on vain meille ihmisille, tyylillisesti. Tietokone ei tiedä milloin olet aaltosulkeita, joka olisi todellakin, Korjaa ongelma. Joten, jos me todella meni ja nimenomaisesti laittaa näissä aaltosulkeita että olisi korjata tämän ongelman tehden selväksi kääntäjä että olen todella haluavat suorittaa kaksi riviä koodia uudelleen, ja uudestaan, ja uudestaan. Mutta mitä perusoikeuksien selitys? Oikea? Emme ehdottomasti tarvitse kihara henkselit koko ajan, vaikka se on luultavasti parasta käytäntö päästä että tapa tapauksessa vaikka se lisää kaksi merkkiä koodi. miksi? Yleisö: [äänetön]? SPEAKER 1: Joo niin se toinen ratkaisu kokonaan. Oikea? Varsinkin jos ensi silmäyksellä et Arvostan mitä tapahtuu. No, varmasti voisimme vain tehdä kaksi asiaa kerralla ja vain välttää ongelman kokonaan. Ja se on hienoa, mutta nyt, nykypäivän tarkoituksia, mitä on selitys virheen? Miksi kaikki tähdet yhdellä rivillä? Joo? Yleisö: Näyttää siltä, ​​että jos sinulla on yksi rivi koodia, voit tehdä sen ilman näitä. SPEAKER 1: Aivan. Tämä on vain ihmisen sopimusta. Ihmiset ymmärtävät, että se on vähän ärsyttävää tai tylsiä täytyy laittaa aaltosulkeita kaikki ajasta, jos kaikki haluat tehdä on suorittaa yhtä riviä koodia. Joten, ihmiset päätti jotkut aika sitten, että se käy hyvin. Jos haluat laittaa kaikki silmukan juuri, että yksi rivi näin, se on hieno kanssa yhden puolipiste lopussa. Mutta voit vain tehdä yksi tällainen linja ilman aaltosulkeiden. Joten, kun CS50 ohjeet kuten kohta sinua, näet, että yleisesti se on hyvä tapa päästä tähän kunnes olet varsin mukava harhaan alkaen tällaisia ​​sopimuksia ja tekee omia juttuja. Niin kauan kuin olet itse johdonmukainen. Ja me puhua enemmän tyyli hieman myöhemmin tänään. Joten, anna minun avata yksi muu ohjelma. Tietenkin meidän pitäisi vahvistaa, että 10 samoin. Anna minun mennä eteenpäin ja kirjoittaa todellinen nopea ohjelma, soitan, sanokaamme, silmukka piste C. Joten, silmukka piste C. Ja silmukka piste C aion olla, ovat vakio-I / O- piste H int main mitätön. Ja nyt Haluan vain tehdä, todellakin, silmukka. Joten, 4 int i saa nolla. I on vähemmän kuin vaikkapa 50. Minä plus, plus. Ja sitten täällä katsotaanpa mennä eteenpäin ja tehdä tulosta F. Ja sitten haluan tulostaa I ja uusi linja, puolipiste. Ja tämän pitäisi tulostaa kaikki numerot nollasta jopa 50? Muutama pää nyökkää. Muutama nos. Mikä vika jo? Mikä helppo virhe tein? Joo. Yleisö: [äänetön]. SPEAKER 1: Joo. Joten vaikka se näyttää kuten tämä on mitä aion, muistuttaa, että minä on myös vain ASCII. Joten, jos sanon, print "I" Se kirjaimellisesti menossa tulostaa I. Joten, jos en haluavat plug-in paikkamerkki arvo Olen itse täytyy tehdä tämä ja sitten plug-in arvo, dynaamisesti. Muuten olen juuri menossa saat 50 I: n ruudulla. Joten, anna minun mennä eteenpäin ja tehdä tämän silmukan, ajaa se, ja todellakin, olemme kaikki Muuten läpi 49. Ja jos minä vierittää ajassa taaksepäin näen numero nolla alussa. No, mitä jos olen sellainen tyriä? Mitä jos teen näin? Vain koska en ole ajatellut. Mikä tämä ohjelma. Kun uudelleen koottu ja ajaa, aikoo tehdä loogisesti? Yleisö: Ei mitään. SPEAKER 1: Ei mitään. Miksi näin? Yleisö: I suunniteltu nolla. Niin, ehto on epätosi. SPEAKER 1: Joo, täsmälleen. Kaikki koodi on oikea, syntaktisesti. Tämä laatii, tämä koodi toimii, mutta se ei ole aikoo tehdä mitään hyödyllistä koska olen alustaa olen nolla. Me sitten tarkistaa, on minä suurempi kuin 50? On selvää, ei, se ei ole. Niin silmukka ei koskaan suorittaa lainkaan. Mitä jos teemme jotain hieman holtiton? Joten, mitä jos teemme kuten int i saa nolla. Ja nyt haluan käyttää taas silmukka, joka oli toinen ehto. Ja kun minä sanon, kun I on suurempi kuin tai olemattomat, ja sitten täällä I mennä eteenpäin ja tallenna tiedosto, tee silmukka. Ja olen aikeissa käyttää sitä. Mitä minä nähdä tämän aikaa, kun silmukka? Joo. Yleisö: loputon silmukka? SPEAKER 1: loputon silmukka? Kyllä, ja miksi? Yleisö: Koska se on aina nolla. SPEAKER 1: Joo. Niin, i alustetaan nollaksi. Tietysti on aina suurempi kuin tai yhtä suuri kuin 0 seurauksena. Joten, olen juuri menossa katso tämän äärettömän. Ja nyt, tämä on keksiä kerran tai kahdesti kurssin päätä. Mitä tapahtuu, kun on loputon silmukka? Yleisö: Ohjaus C. SPEAKER 1: Joo. Joten Ohjaus C lopulta vastata. Valitettavasti olemme tulostaa miljoonia ja miljoonia nollia jo ja niin tietokone on eräänlainen sai ennen minua. Niin, se tulee jättää minua vähän. Mutta jos vain lyödä Ohjaus C muutaman kertaa Mac- tai PC-näppäimistön, lopulta se olisi todellakin lopettaa. Ja jos ei, näytämme joitakin tekniikoita ennen pitkää missä voi todella väkisin tappaa ohjelmia, aivan kuten Windows ja Mac OS, jos tarvetta on. Mutta katsotaanpa kokeilla jotain muuta. Katsotaanpa todella kasvattaa I Is tämä silti olemaan ääretön? Minä juoksen tämän. Ja nyt voit eräänlainen katso mitä tapahtuu. Tämäkin on päättymättömään silmukkaan. Mutta tämä on hieman temppu kysymys. Tämä tulee tulostaa numerot ikuisesti? Yleisö: Ei. SPEAKER 1: Ei. Miksi? Kuulin nos tänne. Someone-- Joo. Yleisö: Sinulla ei ole tarpeeksi bitit todella jatkaa. SPEAKER 1: Selvä. Joten minulla ei ole tarpeeksi bitit pitää käynnissä. Joten, mitä tulee tapahtumaan? Se on vain aio lopettaa? Yleisö: Jossain vaiheessa se sammuu the-- SPEAKER 1: se sammuu silmukka alas, mutta miksi? Mitä tulee tapahtua aivan lopussa sen rajat? Joo? Yleisö: Se sykli takaisin negatiivisia lukuja. SPEAKER 1: negatiiviset luvut, tai jos me vain hoitoon positiivinen, nolla ainakin. Joten kyllä, ehdottomasti. Muista, että näimme viime kerralla, että jos lisäys bitit yksi liian monta kertaa, ja siellä Fore ylivuoto kapasiteetti teidän int tai mitä tahansa tietotyyppi on, olet menossa kietoa, luultavasti, kaksi negatiivisia lukuja. Tai jos olet määrittää, että alue pitäisi vain olla positiivinen, jossa voit tehdä, mutta olemme ole nähnyt sitä vielä, saatat päätyä ainakin takaisin nollaan. Vaikka itse asiassa kyllä. Tässä tapauksessa negatiivinen numeroita, jolloin silmukka tulee lopettaa koska en ole itse asiassa, suurempi tai yhtä suuri kuin nolla, jos se on negatiivinen. Joten valitettavasti, miten pitkä olisi meidän on odotettava? Juuri nyt olemme jopa mitä, 2000000-ish? Olemme kuin 2000000000, aiomme joutua odottamaan kunnes voimme todella nähdä tämän oire. Mutta voimme nähdä sen hieman nopeammin, maybe-- Katsotaan jos voimme keskeyttää. Tule. Jopa valikot näkyvät hitaasti. Selvä. Joten, me palaamme että ennen pitkää. Se on hyvä time-- jumalauta, pennut. Se on hyvä aika tehdä ilmoituksia. Joten, jos haluat ehkä harjoittaa YHack, joka on tapahtuman ollessa sponsoroida ystävämme Yalen. Ja, todellakin, jotkut kurssin TF Yalen ovat mukana tämän. YHack on kansainvälinen hack--thon isännöi ja pidetään Yalen, joka kokoaa yhteen 1500 samanhenkisten hakkerit ja mainokset kaikki maailman yli. Jos tämä kiinnostaa, katsomaan täällä. Jos tämä on liian lyhyesti näyttö, vilkaise nykypäivän dioja että URL yhack.org. Niin, myös muutaman nopean ilmoitukset. Joten, virallisesti kohdat alkaa ensi viikolla täällä ja New Haven. Muista voit saada sähköpostiviestin myöhemmin tänä viikonloppuna todennäköisesti. Se kestää kauan varten CS50 §, annettava kaikki ihmiset luokan ja kaikki liikkuvat. Ja kaikki Opetus Fellows " aikataulut ovat myös edelleen vakiinnuttamista, mutta pysy kuulolla sähköpostia ja jos tarve olla, voit uudelleen osassa on jälkeen. Study.cs50.net. Joten, vaikka olet jatkuvasti osallistuja klo kohdat, ymmärtää, että lähes kaikki resursseja käytämme kohdissa ovat julkisesti nähtävillä CS50 Opiskella tätä URL-osoite tähän. Joten, jos ikinä haluat uudelleen tarkastelu materiaalia osassa, tai lukea eteenpäin, tai et voi tehdä sitä noin viikon, ymmärtää, että näyte dioja, ja ongelmat, ja määritelmät, ja lisää on kaikki siellä. Virka jatkaa tänään, ja huomenna, ja keskiviikkona ja torstaina tarkista kurssin verkkosivuilla aikataulu. Ja myös, nyt käynnistämässä tänään on CS50 keskustella. Joten, jos ja kun sinulla on kysymyksiä toisiaan tai kurssin henkilökunta, ja yleensä työskentelevät joitakin ongelma asetettu, ymmärtää, että et välttämättä täytyy kääntyä ihmisen Seuraava Voit. Jos ei ole ketään siellä, voit tavoittaa meidät ja luokkatoverit verkosta CS50 keskustella. Joten, tämä on keskustelu aluksella kurssin, ja ymmärtää, että tämä on ehkä paras paikka aloittaa, kun olet kysymyksiä, kun työajan ulkopuolella erityisesti. Lounaat käynnistyy tällä viikolla myös. At Tulen ja jään [Kuulumaton] New Haven. Tutustu kurssin verkkosivusto jotta RSVP. Saapumisjärjestyksessä palvella siitä. Jos et saa tällä viikolla teemme nämä eniten perjantaisin voimassaoloaikana. OK, ja nyt sanaakaan luokittelu. Varsinkin kun astumme ongelma asettaa yhden, joka on tällä viikolla, ja ongelma asettaa kaksi ja sen jälkeen. Miten osaamme arvioida P sarjaa ja arvioidaan niiden laadun? Niin, se on neljä akselia käytämme CS50, ja he ovat nämä neljä täällä. Laajuus, joka kaappaa on numeerinen perusteella, kuinka paljon P joukko sinä puuttua. Se vastaa karkeasti työtä, ja se on meidän tapa pyydystää yritit puoli P asettaa kaikki P asetettu. Tämä on helppo saada täydellinen pistemäärän jos et, todellakin, kokeilla kaikessa P asetettu. Joten pitää se mielessä. Oikeellisuus on juuri sitä. Onko koodi työtä määrittely ja kuten esikunnat "näyteliuoksen viittaavat siihen, että koodi olisi itse asiassa toimi. Tarkista 50, jos et ole tavannut sitä vielä, on P asettaa yhden erittely ja on yleensä antaa sinulle kyllä ​​/ ei vastauksia siitä, onko koodi on oikea. Ainakin siltä osin kuin olemme menossa arvioida sitä perustuvat testit että otamme kyseisessä ohjelmassa. Design on paljon subjektiivinen. Näin hyvin kirjoitettu on koodi. Ja tämä on jotain, saat paremmin ajan myötä, ja se on jotain, että me will antaa lisää laadullista palautetta. Ja suunnittelun voisin tarkoittaa ennen pitkää sinua olla kiusaus joissakin P asettaa tehdä jotain loopingly, mutta on ehkä kolme tai neljä, tai viisi sisäkkäisiä ollen silmukoita tai sisäkkäisiä samalla silmukoita. Että yleensä tulisi olla alkaa tehdä sinut punastumaan ja olisi yleisesti harkita huono suunnittelu. Ja voit alkaa nähdä luokassa ja ulos luokasta hyviä tapoja tehdä asioita, huono tapoja tehdä asioita, ehkä kaikki olla oikea, mutta ei välttämättä hyvin suunniteltu. Kuten esseen. Voit ehkä laittaa sanoja sivu, jotka ovat kieliopillisesti oikein, mutta essee tai thesis he ovat vain täysin epäjohdonmukaisia ​​tai unpersuasive. Ja niin että voisi olla analoginen kirjallinen maailma huono tai hyvä suunnittelu. Ja tyyli, sekin on melko subjektiivinen. Mutta ainakin odotamme johdonmukaisuus. Näin aika on koodi. Ovatko asiat hienosti sisennetty? Ovatko muuttujat hyvin nimeltä / Ovatko kaikki teidän suluissa ja aaltosulkeita linjassa kuin pitäisi? Meillä on CS50 tyyli oppaan Harjoitus tulee kohta sinua. Ne mukavampaa ovat tervetuloa eksy että niin kauan kuin olet itse johdonmukaisia. Ja tämäkin on opetus me vahvistaa jaksossa. Joten, jos kaikki tämä oli hieman nopea, ymmärtää P asettaa ja osat menee enemmän syvyyttä ennen pitkää. Mutta yleensä olemme hyvin harvat kauhat CS50. Tulokset ovat yleensä asteikolla yhdestä kolmeen, tai yksi viiteen. Olemme literally-- enkä voi sanoa tämä tarpeeksi ensimmäisellä viikolla. Kolme on hyvä. Joten, vaikka kyllä, kolme Viiden normaalisti, matemaattisesti, saattaa olla 60 prosenttia tai kuten D-miinus. Kolme on, itse asiassa, hyvä. Ja itse asiassa, odotamme useimmat opiskelijat luokassa alkajaisiksi aikavälillä noin kaksittain, ja kolmosta, ja nelosta. Todennäköisesti ei niin paljon viitosta. Ei liian monet niistä. Mutta yleensä aloittaa että sweet spot käyrällä niin että ajan kuluessa, siellä on todella tilaa, ja mahdollisuuksia ylempi etenemistä. Joten, älä rinnastaa kolme 60%. Se on paljon enemmän abstrakteja kuin. Kaava, jolla laskemme laadut painotetaan seuraavasti. Oikeellisuus kannattaa eniten. Design on syytä hieman vähemmän. Tyyli on syytä hieman vähemmän. Ja tämä yleensä kaappaa aikaa että menee saada jokaisen Näiden akselien juuri oikea. Tyyli on erittäin helppoa, pitäisi olla erittäin nopea, mutta se on helppo tapa saada laiska noin. Oikeellisuuden voi kestää te suurimman osan ajasta. Jahtaa alas joitakin bug voimin ottaa että ylimääräinen tunti tai enemmän, ja niin, pisteytys lopulta kaappaa. Ja niin, nyt vakavampi sana. Koska CS50 on ero, parempaa tai pahempaa, olemisen ehkä paremmin tutustui liittyviä kysymyksiä akateemisen rehellisyys kuin useimmat muut kurssin. Ja todellakin, se on tietääkseni että lähetämme enemmän opiskelijoita, valitettavasti, kurinpitosyistä vuosittain seurauksena. Niin, edun mukaista koko paljastaminen, Puhutaanpa lyhyesti siitä mitä tapahtuu CS50, ja mitä voi tehdä, ja mitä voit olla tietoinen. Niin, tässä vuodesta 2007, jolloin Olen perinyt kurssi, on määrä Ad hallituksen tapauksia. Ad Hallituksen on Harvardin kurinpidollisten elin, tai nyt Honor Counsel, johon tapaukset saatetaan kun opiskelijat tehdä jotain, että kurssin oppimäärä katsoo kohtuuton. Ei ole tosiasiallista täällä, sanoisin. Se vaihtelee yli vuotta, mutta yleensä Tämän on määrä tapauksissa, joihin viitataan. Opiskelijoiden määrä jotka ovat mukana? Sekin vaihtelee. Tyypillisesti, viime vuonna Esimerkiksi 29 opiskelijaa Harvardin olivat Ad astuivat, niin sanoakseni. 29 heistä nykyiset opiskelijat, kaksi niistä ennen opiskelijoita, jotka olivat yhteistyössä jollakin harmillista tavalla. Ja sitten suhteen prosenttiosuus, se on yleensä noin 3% luokan että valitettavasti tekee tällaisia ​​päätöksiä. Joten, viime vuonna se oli 3,5% ja CS50 n ylioppilaskunnassa että oli Ad pysäytettyä, niin sanoakseni. Joten, mitä tämä kaikki tarkoittaa? Ja mitä me itse tehdä? Niin, täyden julkistamista, me aivan, kuten tietotekniikan tutkijoita, on ohjelmistotyökaluja käytössämme ja se on erittäin helppo meille, oikeudenmukaisuus, että muut luokkatoverit, jotka eivät ole ylittäessään nämä rivit ylittämään vertailla joka toimittamisesta tänä vuonna vastaan ​​joka esittämisen viimeiset kahdeksan vuotta. Ohjelmisto tekee tämän. Ja lopulta se on ihmisten silmissä, jotka päättävät vai ei viitata joitakin merkitystä asian ratkaisemiseksi, mutta ohjelmisto varmasti auttaa. Ja tämä, suoraan sanottuna, on siksi mielestäni meillä on niin paljon in CS50. Se ei johdu CS50 opiskelijat tai CS opiskelijoille enemmän ovat yleensä yhtään vähemmän rehellisiä kuin mikään muu opiskelijoita, se on vain meillä Työkalut ja tekniikat jonka kanssa tämä ensimmäinen omille. Mutta me pitää silmällä kaikki nämä asiat samoin, jälleen, etujen mukaista tunnustaa työ, joka on liikkeelle osallistumistaan ​​Super enemmistön luokan. Ja kurssin politiikka akateemisen rehellisyys, vaikka se on joukko kohtien pitkä joukko luoteja jotka ovat toivottavasti melko luettavissa, se todellakin pohjimmiltaan olla kohtuullinen. Ja paras nyrkkisääntö että tarjoamme sisällä oppimäärän on tämä, olemus kaikki työ, että te toimitettava tämä kurssi on oma. Ja todellakin, lähes kaikki nämä tarkoitetuissa tapauksissa kurinpitotoimista se oli, koska joidenkin opiskelija myöhään yö tyypillisesti käänsi hänen koodi yli suoranainen ja luokkatoveri, joka sitten hyväksyi sen kokonaisuudessaan tai merkittävästi viipymättä. Mutta oikeasti, tämä on OK. Ja todellakin, toimistossa tuntia, varttamisoksat paperia olet jätetty jos tuli toimisto tuntia viime viikolla kannustaa niin paljon. Olet aivan tyytyväinen ja kannusti keskustella ongelma sarjaa luokkatovereiden kanssa. Auttaa toisiaan kompastelu. Mutta yleensä nyrkkisääntö olisi olla tämä, "kun pyytävät apua, voit näyttää koodin muille, mutta et voi tarkastella heidän. " Joten, toisin sanoen, jos olen kamppailee joidenkin P sarja ja Istun siellä ruokasalissa, tai kirjastossa, tai luokkahuoneessa yrittää löytää vikaa, Voin varmasti näyttää minun koodi tietokoneen näytöllä henkilölle istuu vieressä minulle, varmasti henkilöstö, mutta myös luokkatoveri. Mutta jos liuos, joka Minun luokkatoveri tarjoaa on, oi, täällä vain katsomaan mitä Tein, että ylittää linjan. Ja uskaltaisin sanoa, että on yleensä kohtuullinen asia useimmille hyvin helposti paikalla linja. Ja niin, katso oppimäärä tarkemmin. Ja nyt yksi enemmän kiistanalaisia ​​näkökohtia ja CS50 oppimäärän että Kuvittelin puhuisi lopuksi täällä on ns pahoillani lauseke. Joten, tässä on kaikki pienellä painettu. Mutta yleensä olemme nähneet viime 8 plus vuotta että todellakin, lähes kaikki CS50: n tapauksissa akateemisen epärehellisyydestä ovat olleet seurausta vain huono päätöksenteko myöhään yöllä. Stressin tuloksena, tulos puutteesta syöminen, unen puute, liian monta P sarjaa, liikaa määräajat, liikaa sitoumuksia. Stressi muodostuuko 02:00, 03:00 AM, 04:00, jonka määräaika häämöttää. Useimmat opiskelijat näissä tapauksissa juuri tehnyt huonoja päätöksiä että ne saattaa hyvinkin pahoillani Seuraavana aamuna jos ei minuuttia myöhemmin, mutta vasta viime vuonna ei ollut varoventtiili, että nämä opiskelijat voisivat todella avata todella puuttua ongelma pää pelkäämättä käynnistää college kokonaan. Ja todellakin, otimme käyttöön tämä pahoillani lauseke viime vuonna, joka sanoo, että jos sisällä 72 tuntia, kolme päivää, rajan noin linjan määrätty oppimäärän tulet eteenpäin yhden kurssin päät ja me jutella siitä. On vielä joitakin tulos, toisin kuin on on ilmoitettu toisin. On vielä tulosta, joka on kannekelpoinen kurssin, yleensä nollaaminen P sarja tai ottaa joitakin muita toimia, mutta me todellakin käsitellä sitä itse eikä saattaa sen suurempi olivat tulos voisi olla paljon ankarampi. Ja todellakin, jakaa mitä tapahtui viime vuonna kahdeksan vuotta, ja nyt yhdeksän vuotta opetuksen tämän kurssin ja sen jälkeen puuhastelun kanssa eri nupit, kääntämällä eri valitsee viime useita vuosia akateemisen rehellisyys, ja nähdä kohden tiedot ilman selvää vaikutus, vaikka puheiden näin, tämä oli kädet alas paras asia olemme esitelleet pedagogisesti kahdeksassa vuodessa pitkin nämä rivit CS50. 19 opiskelijaa tuli eteen Tämän lausekkeen viime vuonna. Otimme ei kanne seitsemän niille opiskelijoille, määritetään, että ne olivat tarpeettomasti huolissaan. Heillä oli ei, itse asiassa, ylittäneet rajan, mutta se oli hyvä chat on kuitenkin. Me nollattu 11 tulokset että esitettiin. Ja yhdessä tapauksessa pyysimme opiskelija tehdä ongelman asettaa. Mutta enemmän pakottavia, rehellisesti, nämä 19 chatit, joka oli paljon enemmän kuin minä odotetaan, jokainen niistä 10 minuuttia ehkä tunnin mittainen, toi myös esiin useita kysymyksiä, jotka liittyivät familiaalinen asioita, ystävä kysymyksiä, mielenterveysongelmista että me sitten mukana, kanssa opiskelijan siunaus, asukas dekaani, tai ystäviä, tai jokin muu numero tuen resursseja. Niin että tämä oli ehdottomasti yksi parhaista käyttötarkoituksia aikamme ja yksi parhaista toimia. Tämän sanoi, se ei ollut tulo määrä havaitseminen akateemisen epärehellisyydestä yleisemmin. Ja uskallan sanoa, tämä osajoukko opiskelijoiden viime vuonna oli väestörakenteen että me aiemmin koskaan tunnistettu ennen ja ei ollut koskaan liittyvät ennen. Ja niin, nämä olivat ihana menestystarinoita vaikka ne ilmenivät vähemmän kuin optimaalinen olosuhteissa. Joten pitää tämä mielessä kun teet, ehkä, jotkut köyhät päätös itse myöhään yöllä, että on käyttää niin kauan kuten opiskelija tässä tilanteessa omistavat ylös ja esittämään jotta voimme on sellainen chat ja käsitellä sitä siten, että koulutus, ja sitten voimme laittaa sen taaksemme seuraavana päivänä. Joten pitemmittä puheitta, ota terän tämän keskustelun, syy pennut jopa IS vain murtaa jään hetkeksi. Ja valitettavasti, he kaikki nukkua, mutta mitä piti tapahtua täällä oli kaikki piti awe ja laji rentoutua jälkeen, että erittäin raskas keskustelu. Mutta ilmeisesti Laitoin pennut nukkumaan. Mutta jos menet CS50: n verkkosivusto slash pentuja, voit katsella niitä koko päivän. Erityisesti ehkä 02:00, tai 03:00 tai 04:00 yöllä nähdä hieman stressin helpotus siellä. Niin että on kauttaviiva pentuja. Selvä. Eikö se ollut hauskaa? OK. Niin, takaisin joitakin tietokoneen tiede, jos sallitte. Niin, muistaa, että viime kerralla aloimme katsot ei vain tärkein, joka oli oletustoiminto, kun Vihreä lippu napsautetaan vastaava, mutta me myös alkoi lyhyesti kirjallisesti joitakin omia toimintoja. Ja tähän mennessä yksikään näistä toiminnoista ovat olleet erityisen suuria tai lihaisa. Saat noihin suurempi toiminnot luultavasti, P asettaa 2, P asettaa 3, ehdottomasti P setti 4 ja eteenpäin. Juuri nyt useimmat ohjelmat, jos ei niitä kaikkia, varmasti P setti 1 voidaan tehdä kokonaan tärkein. Jos ohjelma on vain viisi riviä, 10 riviä, jopa 20 riviä pitkä, täydellisesti kohtuullinen kirjoittaa sitä kaikki tärkeimmät ja ei liikaa hankaloittaa koodia, mutta mitä teemme tänään ja edelleen yrittää myös käyttöön joitakin hyviä suunnittelutekniikat niin että koodi saa enemmän monimutkainen ja koska ongelmat haluat ratkaista kovemmaksi ja mielenkiintoisempaa sinulla on, tavallaan, työkaluja oman työkalupakin, jonka kanssa suunnitella hyviä ratkaisuja näihin. Niin, sallikaa vilkaista taaksepäin tämä ohjelma minun viime viikolla, joka oli toiminnot nolla piste C. Ja huomata, että yksinkertaisesti, se näyttää tältä kahdella toiminnot, tärkein ja nimen. Ja ajattelu takaisin tai ehkä reverse engineering tänään, mikä oli motivaatio käyttöön toiminto linjassa 28 nimeltään, Tulosta nimi? Tai mikä oli tämä esimerkki vuonna ehtojen periaate tai take away, Jos haluat. Jotkut sivuääniä. Mitä? Joo niin toiminnallisten hajoaminen on sellainen hieno tapa sanoa, hajota ohjelma osiinsa ja sitten käyttää ne osat koota koko. Niin, sekin on vain sellainen suupala jo, mutta tämä on ehkä vielä parempaa esimerkkiä jotain soitti juuri abstraktio. Oikea? Abstraktio tulee olemaan yksi ja toistuvia teemoja CS50 ja myös tietojenkäsittelytiede yleisemmin koska se on tekniikka, jolla voit ratkaista ongelmia tehokkaammin, koska olet voi kirjoittaa ratkaisuja enemmän intuitiivisesti ja tavalla, joka skaalaa ja on ymmärrettävää muita ihmisiä. Mitä tarkoitan tällä? Niin, luultavasti se on paljon luettavissa katsomaan ohjelmaa kuten tämä, Super lyhyt vaikka se on. Kun näet rivillä 22, että on olemassa toiminto nimeltään, nimenselvennys. Tuo nimi yksin kertoo, mitä se tekee. Tämä toiminto ilmeisesti vie tulo välillä sulkeissa, ja ilmeisesti tekee jotain, oletettavasti tulostaa nimi. Ja niin, vaikka me ehdottomasti voisi olla tehnyt sen, mitä teimme viikko sitten, joka oli ota tämä todellinen rivi koodia, päästä eroon tästä, ja saada eroon tästä kaikki yhdessä, me tavallaan otetun pois käsite tulostus nimi. En välitä, jos käytät tulostaa def. En välitä, jos sinulla on prosenttia S ja kenoviiva N. Nämä ovat uskomattoman vaikeaselkoisia yksityiskohtia. Mitä en välitä kuin ohjelmoija tulostaa nimi. Ja niin, mikäs sen parempi tapa tehdä se kuin kutsumalla toiminnon tulostaa nimi? Ja niin, että oli yksi motiivit tekemiseen jotain tällaista. Making koodi luettavampi, enemmän uudelleenkäytettäviä, ja myös itse kuvaileva. Nyt, katsomaan toista esimerkkiä, joka oli toimintoja yksi, joka meillä oli täällä. Joten, tämä on ehkä vielä pakottavia koska tässä tapauksessa, En halua vain saada int. Haluan saada positiivinen int. Ja se osoittautuu saada positiivinen int sinun täytyy tehdä nippu legwork. Oikea? Se ei ole yksinkertainen yhden rivin soittaa kuten tulostaa nimi oli, joka on tosin vähemmän vakuuttava. Saada positiivinen int, logically-- minulle selaa takaisin alas piilottaa tämän. Mitä sinun pitää tehdä? Kuten kaikki työkaluista on tällä hetkellä ovat asioita, kuten tulostaa def Standard Kirjasto ja myös CS50 kirjastosta olemme Get Int, ja Get Float, Hanki Pitkä, Get String, mutta vain yksi, Germane, juuri nyt on saada Int. Joten, jos vain työkalun olet teidän työkalulaatikko on Get Int, Miten voimme edetä täytäntöönpanosta se saada myönteisiä int? Yleisö: Luo loki ja tarkista onko tulo että he antoivat oli positiivinen tai ei. SPEAKER 1: Perfect. Aivan. Toinen väline meillä on Toolbox alkaen viikon tai kaksi sitten on vain silmukkarakenteen. Ja niin, joo, jos käytämme aikaa silmukka, tai tehdä, kun silmukka, tai etualalle silmukka voisimme ehkä saada pois kanssa mitään näistä jossain muodossa. Voimme toteuttaa käsite get positiivinen int vain käyttämällä Get Int, ja sitten vain pitää kutsuen sitä uudelleen ja pitää kiusanneet käyttäjä kunnes hän itse antaa meille mitä haluamme. Ja niin nyt, tämä abstraktio prosessin saada positiivinen int osaksi toiminto nimeltään Get Positiivinen Int on hieman pakottavia koska katsokaa tätä. Nämä ovat kuin 10 plus riviä koodia että ovat mukana saada positiivinen int, enkä välitä miten teet sen. Kaikki Välitän on, että te voi tehdä sen, ja niin olen piilottanut kaikki nämä tiedot takana toiminto nimeltään Get Positiivinen int että, todellakin, on tämä tehdä, kun silmukka. Ja katso viime viikolla syntaksi siellä, mutta se vain ilmoittaa N, ja se tulostaa ohje käyttäjälle. Se kehottaa Get Int ja sitten se tarkistaa tämä ehto uudestaan, ja uudestaan, ja uudestaan, kunnes käyttäjä tekee yhteistyötä. Joten nyt, muutama järki tarkastuksia. Niille ehkä tuttuja joitakin ohjelmointi, miksi on N ilmoitettu, miksi luon N ulkopuolella tehdä, kun silmukka? Miksi se on verkossa 29 eikä on kuten 33 mm. Yleisö: Koska kun julistaa, että se ulkopuolella, se sellainen enemmän, suurempi scope-- SPEAKER 1: Hyvä. Yleisö: --and jos julistaa se silmukan sisällä, [kuulumaton] koska se ei tiedä siitä. SPEAKER 1: Aivan. Jos voin simplify-- se kysymys soveltamisalaa. Ja laajuus viittaa asiayhteydestä, joka muuttuja on olemassa tai on käyttökelpoinen. Ja mukava nyrkkisääntö on, että yleensä kun julistaa tai luoda muuttuja voit vain käyttää sitä sisällä lähimmän käsittää aaltosulkeiden. Mitä tämä tarkoittaa? Jos minä sen sijaan, kumoa tätä ja mennä jotain, joka tuntuu hieman yksinkertaisempi. Oikea? Line 32 vain näyttää puhtaampaa minulle nyt. Teen molempia asioita kerran ja sitten määrittämällä oikea käsi vasempaan. Ongelma perustuu nyt että määritelmä soveltamisala on, että N voidaan käyttää linjat 31 ja 32 sisällä tämän silmukan, mutta jos tämän määritelmän voi sitä ei voi käyttää? Linjassa mitä? Joo. Yleisö: 35. SPEAKER 1: 35. Ehdottomasti ei 35. Ja myös missä muualla? Yleisö: 34. SPEAKER 1: Jopa 34 on ongelmallinen, koska se on ulkopuolella aaltosulkeiden. Ja niin itse asiassa, katsotaan mitä tapahtuu. Oikea? Tämä saattaa tuntua hieman intuitiivinen tai ehkä ei, mutta katsotaanpa mitä kääntäjä on sanoa, milloin menemme tänään lähde hakemistoon. Tee funktio yksi. Herranjumala. No, olen vihdoin valmis että muuten. Selvä. Ja mikä on kysymys? Erittäin mystistä katsomaan. Mutta tässä mitä minä typed-- tehdä toiminto yksi. Tässä mitä tehdä aiheuttama, joka on itse asiassa käyttäen kääntäjä kalahtaa joitakin näistä lippuja että näemme jälleen ennen pitkää. Ja vielä, aina etsiä ensimmäisessä virhe, koska se saattaa vain olla CSS merkityksetön vaikutus muilla radoilla. Joten mitä tämä tarkoittaa, että ongelma on funktio 1.c. Se on verkossa 32. Ja se on palstalla, tai merkki, 13. Joten kun tekstieditori, joka auttaa tunnistamaan missä asian käsittely on. Jos siis siirry ylös, mikä on linja 32? Se on todellakin tämä joka on jo korostanut oikea here-- käyttämätön muuttujan n. Mutta se ei ole käyttämättömiä. Käytän sitä. Mutta kääntäjän sekava, koska se on olemassa vain sisälle näin laaja. Ja niin en voi käyttää sitä tässä. En voi käyttää sitä tässä. Ja kääntäjä, siksi, ei edes välitä siitä, että yritän. Se näyttää olevan käyttämättömiä sen todellista laajuutta. Jotta voimme laajentaa tekemällä mitä aloitimme with-- int n. Ja vaikka se ei näytä yhtä tyylikäs, ehkä, ja otamme ylimääräinen linja täällä, nyt se on laajuudeltaan kaikkialla. Joten yritä uudelleen. Joten toiminto yksi. Kiva. Ja nyt jos minä jos käytän toiminto yksi, katsotaanpa antaa sille negatiivinen 10, negatiivinen 1, 0, 1, ja se itse asiassa toimii. Joten on olemassa toinen ratkaisu täällä. Arvaa mitä? Mitä jos minä todella olen paini tämän? En tiedä missä n on tarkoitus mennä. Arvaa mitä? Olen juuri menossa laittaa kaiken tapa yläreunassa minun tiedosto tästä. Mitä tämä tehdä, luulet? Joo? Yleisö: [äänetön]. SPEAKER 1: Joo. Joten olen tehnyt maailmanlaajuisia, niin sanoakseni. Jos sinulla on muuttuja, joka on ulkopuolella kaikki toiminnot on sallittua, ja koodi olisi koottava, ja n on nyt saatavilla paitsi get positiivinen int, mutta myös main-- joka on hieman huolestuttava, koska siellä jo n main, joten lisää siitä, että vain moment-- mutta tämä pidettäisiin huono suunnittelu. Selvä. Jos sinulla on turvauduttava jotain, OH, minä vain laittaa sen tänne, koska koodi näyttää koota ei yleensä ole paras käytäntö. Pikemminkin haluat valita kapein mahdollinen soveltamisala sinun muuttujat, mikä merkitsisi menossa meidän alkuperäisen suunnitelman, joka on täällä. Nyt kun sivuun, jos et ole samoin nimettyjä muuttuja täällä, Muuten C huolehtisi this-- vaikka tämä ei tapahdu liian often-- on se, että tämä on edelleen täydellisesti hienosti täällä. Mutta tämä määritelmä n mukaisesti 22 tulee varjo maailmanlaajuinen. Joten tämä toimii sisällä tärkeimmät, ja maailmanlaajuinen todella sovelletaan, kun olet saada positiivinen int Mutta siitä lisää toisenkin kerran, mutta vain niille utelias. Niin lyhyt, me korjata täällä. Nyt kiusaavat erilleen kaksi muuta kappaletta ennen kuin voimme tarkastella viimeisen rivin koodia tässä ohjelmassa. Saada positiivinen int. Vasemmalla puolella sen sana on sana int. Mitä tämä merkitsee luulet? Tähän mennessä olemme enimmäkseen nähneet mitätön. Joo? Yleisö: Se tyyppi muuttuja että olet kysyä. SPEAKER 1: Joo Se tyyppi, haluan sano muuttuja, mutta arvon tyyppi että pyydän takaisin. Ja todellakin, se on intuitiivinen täällä, toivottavasti. Oikea? Jos haluat saada positiivinen int, mitä se on sinun haluavat function-- kuten meidän vapaaehtoiset viime viikolla käsi takaisin pala paperia int sitä? Ja niin olemme täsmensi, että ns palautuva tämän toiminnon on saada positiivinen int. Jos emme halua sen palata mitään, sanot mitätön. Jos haluat palata merkkijono, sanot merkkijono. Jos haluat palata kellua, sanot kellua. Mutta ainoa, joka koskee täällä loogisesti, koska olen käyttäen GET int, vaikka olen sen rajaaminen positiivisia arvoja, on palata int. Joten päinvastoin, mitä se tarkoittaa että siellä on mitätön suluissa? Mitä suluissa yleensä määritellä? Joo? Yleisö: Se tarkoittaa funktion ei oikeastaan ​​saada se. SPEAKER 1: Se tarkoittaa funktion ei todella saada mitä? Yleisö: tulo. SPEAKER 1: tulo, mitään. Joten todellakin, jos suluissa täällä voit määrittää mitätön, että vain tarkoittaa, en halua mitään panosta. Minä käsitellä ongelmaa itse. Ja todellakin, sinun ei tarvitse kertoa saada positiivinen int mitään. Sanoit, saada positiivinen int, ja että toiminto sammuu ja tehdä sen asian. Mutta siellä on ollut pikku temppu olen pelanneet täällä koko tämän ajan varmistaa tämän koodin kokoaa. Huomaa, että int-- saada myönteisiä int void-- on linjalla 27. Mutta jostain näennäisesti outo syy se on myös täällä verkossa 16. Ja vain hyvä toimenpide minä toistan tämä niin se on täysin sama. Ja olen sanonut prototyyppi pikkuinen-line kommentti. Mitä tapahtuu, jos poistan että, ja nyt uusintana tehdä toiminto 1, kirjoita. Oho. Hetkinen. Missä välilehti? Häh? Valmiustila. Tee toiminto 1. Siellä mennään. OK. Ei tallentanut sitä kunnolla. Joten mielestäni siellä on vähän vika täällä missä en ole nähdä välilehti nimi tällä hetkellä. Mitä on tekeillä? Implisiittinen ilmoitus toiminto saada positiivinen int on pätemätön C99. Niin sekava uudelleen. Joten mitä on tämä osoitus? No, käy ilmi, että C on melko typerää. No, se on ohjelmointi kieli, tai pikemminkin kääntäjä on. Se vain tietää mitä sinulla on opetettu, ja se on vain menossa tietää jotain jos opetti sitä ennen. Toisin sanoen, Tärkeimmät tällä hetkellä, olen yrittää soittaa toiminto nimeltään saada positiivinen int. Mutta kääntäjä ei aio huomata, että saada positiivinen int olemassa kunnes linja 26. Ja niin mitä kääntäjä tekee on vain virheitä heti kun se saa linja 17, sanomalla implisiittinen ilmoitus get positiivinen int, joka on vain hieno tapa sanoa, en tietää, mitä saat positiivinen Int on vielä. Muut kielet, kuten Java ja Python ja Ruby voi katsoa eteenpäin. C-ei. Ja niin miten me korjata tämä on yksi kahdella tavalla. Joko yksi, jos ongelma on, että saat positiivinen int ei ole ennen nähty, hyvin, haluan vain siirtää sen alkuun. Se korjaa tämän ongelman. Mutta yleensä se on katsotaan parempi tekniikka laittaa päätehtävä aivan alkuun niin, että ihmisen lukea koodi tietää, mitä ohjelma tekee, koska tärkein ei haudattu kaikki miten alaosassa tai keskellä. Se on huipulla. Niin että ei tunnu ihanteellinen. Ja voit itse saada tilanteisiin, joissa jos yksi funktiokutsut toinen, joka kutsuu toista, voit päästä ongelman, jossa ei voi mennä edellä muita, loogisesti. Se ei vain ole mahdollista. Ja niin tapa työskennellä noin tämä on vain ottaa toiminto allekirjoitus, niin speak-- ensimmäinen rivi, jossa se on declared-- ja kopioi, liitä se top, mutta ei kihara braces-- vain puolipisteellä. Se on kuin pieni vihje mitä on tulossa. Ja itse asiassa kaikki tällä kertaa, kun ovat nähneet asioita, kuten tavallinen io.h ja cs50.h vastaavasti niissä piste h tiedostot ovat siellä muita prototyyppejä. Ja näemme, että ennen pitkää. Niin lyhyt, kun on ohjelma tiedostoon, jossa on useita toimintoja paitsi tärkein, melkein aina halua julistaa niitä vain Poiketen ensimmäisen rivi, jonka jälkeen puolipiste, huipulla tiedoston. Se oli paljon kerralla. Kysymyksiä? Kysymyksiä? Selvä. Joten siirtyä sitten että jotain yskä. Oi. Kuinka sopivaa. Selvä. Yskä. Joten tässä on C ohjelman täytäntöönpanosta teimme toinen päivä Scratch että hyvin yksinkertaisesti vain sanoo yskä, yskä, yskä. Selvä. Ja joku sanoi muutama päivää sitten, että on olemassa tapa puhdistaa tämän koodin ylös jo. Selvä? Heti olet kopiointi ja liittämällä luultavasti huono suunnittelu. Ainakin kerran saamme neljä tai viisi tai 20 yskää, se tuntuu huono käytäntö. Me vain pitää kopio, liittämällä. Mikä on ilmeinen ratkaisu puhdistamiseen ohjelman ylös? Yleisö: Loop. SPEAKER 1: Joo. Joten käytä silmukka. Ja voimme käyttää for-silmukka, kun taas silmukka, mikä tahansa määrä lähestymistapoja. Ja todellakin, sitähän teemme versiossa tästä. Olen sen sijaan uusiksi sen versiossa yksi cough.c olla vain yskä sisällä varten silmukan. Hyvä on, mutta siellä nyt tilaisuus sellainen alku suunnitella tätä hieman enemmän kuin oppitunti opetimme hetki sitten, joka on this-- olettaa, että halusin luoda toiminto nimeltään yskä, Tarkastellaan vain hetken mitä se tulee näyttämään. Joten jos haluan jotain yskä, minun pitää vain käyttää Tulosta f sisällä toiminto. Ja todellakin olen. Ja itse asiassa, kaikki tämä aika, milloin olet tulostus jotain näyttö, ohjelmoija kutsuisi että sivuvaikutus. Se ei minua luovuttamalla takaisin joku arvo. Se minua ottamalla joitakin toimia jotka voivat olla visuaalisesti ilmeinen. Mutta tämä toiminto yskä, se palaa mitään perustuu sen ensimmäisellä rivillä? Ei, koska sen tuotto tyyppi on mitätön, mikä tarkoittaa vain sitä, se ei ole luovuttamalla minulle mitään takaisin. Se voisi tehdä jotain visuaalisesti, mutta se ei ole luovuttamalla minua takaisin paperille kuin viime viikolla. Onko se tarvitse syöttää? Ei. Ja niin se on mitätön täälläkin. Joten sekin on eräänlainen yli-insinöörin tämän ongelman. Oikea? Olen tehnyt ohjelman enemmän monimutkainen, enemmän riviä koodia, En ole tehnyt mitään toimivampi, mutta tämä olisi ponnahduslauta, ehkä, laajemman yhteydessä monimutkaisempi koodi. Mutta mitä tästä? Mitä olen done-- juuri vilkaisi tämä katsomatta kommentti klo hyvin alkuun file-- mitä on Olen pohjimmiltaan tehnyt täällä minun yskä täytäntöönpanoa, joka on erilainen? Joo, takana? Yleisö: Tee se niin voit on luonteeltaan sammuttaa. SPEAKER 1: Joo. Joten tämä tuntuu tällainen mukava. Oikea? Se on kuin lisäämällä ominaisuus teidän ohjelma tai toiminto, tässä tapauksessa. Se ei palauta mitään. Se voi olla visuaalinen sivuvaikutus, koska se soittaa tulosta f. Mutta nyt olen parametrized -toiminto, joka tarkoittaa Olen määräämääsi ottanut panos tyyppiä int ja kutsua sitä n, mutta voisin kutsua sitä mitä haluan. Itse asiassa, se voi vain olla kertaa olla vieläkin selvempi. Ja sitten voisin vain muuttaa täällä. Mutta kohta on, että tämä on, miten luoda funktion, joka vie panos. Ja jos muistaa flipping kautta ehkä verkossa yhdessä ja walk-through, Neljäs ja viimeinen yskä esimerkiksi huomaat täällä olen yleistynyt minun koodi further-- sellainen abstracted sitä edelleen. Kuten yskä ja aivastaa, molemmat ovat noin kuin sanoisi jotain tai tehdä jonkinlaista ääntä. Tallenna olisi vastaava Scratch lohko. Ja niin mitä tein tässä versiossa, joka voimme vain vilkaista, on yskä on aivan kuin sanoisi, [yskä], yskä, ja sillä välin, aivastelu on kuin sanoisi, [Achoo]. Ja niin olen yleistynyt täytäntöönpanoa koskevasta nyt täytäntöön tämä yleinen toiminto, sanoa, mikä on mielenkiintoinen nykypäivän tarkoituksiin vain koska se edelleen ei ole palautuva. Mutta kuinka monta tuloa siinä on? Yleisö: Kaksi. SPEAKER 1: Kaksi. Joten jos haluat ottaa kaksi argumenttia, vain erottaa ne toisistaan ​​pilkulla. Ja jos haluat sitten soittaa että toiminto, huomaa, että juuri soittaa vaikkapa lainaus, lainaus, ensimmäistä väitettä, yhteinen n, toisen väitteen. Joten jälleen, meillä vain on nyt rakennuspalikoita jotta voimme todella toteuttaa joitakin omia toimintoja. Selvä. Kaikki kysymykset näistä? Joten Nyt kuori takaisin kerros jos niin. Ja tavoite, lopulta, on ensi viikon Harjoitus tulee olla cryptogrophy-- taidetta muokkaamisella tietoja. Ja erityisesti, tiedot on sinulle salata tai purkaa tulee olemaan tekstiä. Ja niin sellainen kutsuja kysymys tänään kuin hyvin, mitä alla huppu tekstiä yli ASCII viikosta nolla, ja miten voimme todella alkaa manipuloida sitä? Joten tässä on Zamyla nimi. Ja teksti, joka voitaisiin syötetään osaksi kuten get merkkijono. Ja alkaa nyt, kun näet string kuten this-- Z--M-Y-L-A-- alkaa miettiä sitä ikään kuin jokainen näistä merkeistä on laatikko sen oma. Ja todellakin, viikon tai niin on aika, kukin näistä laatikoista tulee edustaa hyvin erityisesti lohko memory-- purema muistia. Joten jokainen näistä kirjeistä, lopulta, edustaa 8 bittiä. Ja me itse nähdä mitä tapahtuu on alla huppu minun tietokone. Mutta ei se riittää vain katsomaan Zamyla tämän linssin kautta, jolloin kukin nämä kirjeet on omassa laatikossa. Ja kauniisti tarpeeksi C voimme käyttää jokaista näistä laatikoista suoraan. Joten jos haluat saada ensimmäinen kirjaimen nimensä, erittäin helppo C. Jos haluat saada viimeisen kirjain, Super helppo samoin pala uuden syntaksin. Joten aion mennä eteenpäin osaksi CS50 IDE ja avata merkkijonon nolla piste C. Ja tässä esimerkissä täällä, on pari uutta asioita tapahtuu. Joten ensimmäinen rivi 19, olemme nähnyt tätä before-- get merkkijono. Aivan kuten nopea järki tarkistaa, jos joku voisi tarjota jopa suullisesti Maallikon selitys mitä tapahtuu linjassa 19. Kuten juuri kääntää tämä otetaan Englanti että kämppäkaveri ei CS50 voisi ymmärtää. Joo. Yleisö: Onko käyttäjä syöttää merkkijono ja tallentaa sen muuttujaan s. SPEAKER 1: Hyvä. On käyttäjä syöttää merkkijonon ja tallentaa sen muuttujaan s. Sepä hienoa. Joten oikeassa puoli, kutsumme GET merkkijono. Joka palauttaa arvo että ei saanut osoitettu oikealta puolelta vasemmanpuoleiseen puoli osaksi muuttuja nimeltä s, joka on suunniteltu säilyttämään merkkijono. Aivan. Joten nyt linja 22, per kommentti linjassa 21, ilmeisesti tulostaa merkkijonon yksi merkki per rivi. Mutta miten? Joten ensinnäkin, me alustaa I 0. Ja sitten miten saamme loppuun Zamyla nimi? Hyvin, lopussa Zamyla nimi, voisin manuaalisesti kirjoita viimeinen merkki hänen nimensä jotenkin, tai määrää sitä. Oikea? Jos palaamme here-- Z--M-L-- Y-L-A-- jotta voisin kirjoittaa. Mikä indeksi Zamyla viimeinen kirjain? Jos tämä on 0-- puhuu kuin programmer-- 0, 1, 2, 3, 4, 5, Olen heard-- niin todellakin viimeinen kirjain vuonna Zamyla nimi on kuudes, mutta jos laskemme 0, se tulee olemaan numero 5. Niin pitää tämä mielessä täällä. On käynyt ilmi, siellä on toiminto C kutsutaan strlen, ja takaisin seuraavana päivänä ja tänä päivänä vielä, paljon ohjelmoijia valita synkronoida nimiä niiden toimintoja, jotka kuulostavat sanat he yrittävät sanoa. Joten strlen on merkkijonon pituus. Ja niin mitä olisi merkkijonon pituus S palata kun Zamyla on panos? Yleisö: Viisi. SPEAKER 1: Z--M-Y-L. Kuusi. Oikea? Mitä pituus Zamyla nimi? Oikea? Ja juuri todellisuudessa, kuusi kirjainta. Oikea? Ja niin mitä se tarkoittaa meidän silmukka? Aiomme mennä 0 jopa kuusi, joka aikoo antaa meille viisi toistojen. Mitä teemme jokaisen iteraation? No, prosenttia C, joku arvata toinen päivä, välineet paikkamerkki mitä? Yleisö: Char. SPEAKER 1: Vain merkkiä. Joten yksi character-- ei useita merkkejä kuten merkkijonon. Ja sitten tässä on uutta rataa että meillä tulostamalla. Ja sitten tässä on uutta syntaksia. Jos haluat tulostaa i: nnen merkki merkkijonon S, niin sanoakseni, voit sanoa nimi merkkijono S, ja avaa hakasulkeen, ja suljetaan hakasulje, jossa i Keski. Ja se on tavallaan mukavaa, että se tavallaan näyttää neliö aivan kuten neliöitä, jossa Zamyla n merkkiä löydy, että kuva siellä. Joten jos olen itse suorittaa tämän Nyt, katsotaanpa, mitä tapahtuu. Tee merkkijono 0 piste slash merkkijono 0, ja sitten olen menossa kirjoittamaan Zamyla nimi. Ei ole nopea, koska en Käytä tulosta f, mutta se käy hyvin. Tiedän vain, mitä tehdä. Ja todellakin, se tulostaa Zamyla nimi, yksi kullekin riville. Nyt on hieman holtiton. Oletetaan, että en tiennyt noin strlen ja olen tajunnut, Hyvä on, kukaan tulee olla nimi suurempi kuin kuin 50 merkkiä. Mennään eteenpäin ja kääntää tämä ja uusintana se, ja kirjoita Zamyla uudelleen. Loogisesti, mikä on ohjelma aikoo yrittää tulostaa? Z--M-Y-L-sitten kuin 45 tuntematon tavua muistia. Ja todellakin, me tulen takaisin tätä ajatusta muistia. Mutta vain loogisesti, jos Zamyla nimi on tämä pitkä, kohti kuva täällä, mitä sanomme on jatkaa tulostusta, pitää tulostus, pitää tulostus, jatkaa tulostusta, pitää tulostus, aina 50. merkki, joka kuka tietää mitä tulee tapahtumaan. Joten oikeastaan ​​katsomaan. Katsotaanpa kirjoita Zamyla. Mielenkiintoinen. Meillä kävi tuuri. Vain koko joukko valkoinen tila. Oi. On yksi funky merkki. Se näyttää ikään kuin outo kysymys merkitse siellä, mutta siellä on Zamyla nimi. Mennään todella holtiton. Entä me tulostaa 500 palikat tuntematon? Mennään eteenpäin ja tehdä tästä samoin ja sitten uusinnassa. Ja nyt koko ruudun, koska meidän on nähtävä enemmän tilaa. Zamyla. Onnekas jälleen. Dare saamme enemmän holtitonta? Mennään enemmän piittaamaton. 50000 merkkiä. Tämä ei totisesti ole hyvä idea. Selvä. Tee merkkijono 0. Tämä on meidän viimeinen demo. Zamyla. Yäk. Yäk. OK. Joten minun muisti on todella tyhjä juuri nyt, joka on itse asiassa eräänlainen kätevä. Yritän saada to-- kunnossa. Ja nyt olen juuri menossa saada holtiton. 500,000. Make-- let täyden ruudun. Anna. Zamyla. Siellä mennään. Minulla ei ole aavistustakaan, mitä se on, mutta se kuulostaa pahalta. Selvä. Ja itse asiassa pian, jos olet keskuudessa onnekas muutama virka ja ongelma asettaa yhden, sinä saattaa hyvinkin kohdata tämän. Segmentointi vika itse ei on hyvin määritelty merkitys. Se tarkoittaa jonkinlainen virhe liittyvä segmentti muistia. Ja maallikon termein, se tarkoittaa, että meidän koskettanut memory-- käytimme RAM minun tietokone että en olisi saanut tutustua. Ja sitähän on sekä voimakas ja myös vaarallinen noin C on, että olet itse on esteetön pääsy sitten kaikkiin ohjelman muistiin tai tavua tai RAM, tarkemmin. Joten vaikka Zamyla nimi on vain kuusi merkkiä pitkä, Voin silti mennä minnekään muistiin haluan. Ja sivuun, jos olet koskaan lukenut joitakin artikkeli vuosien varrella joitakin palvelin tai jokin ohjelma saada säröillä tai hakkeroitu se hyödyntäneet jotain kutsutaan puskurin ylivuoto hyödyntää kyseistä me will oikeastaan puhua muutaman viikon, se on yleensä viittaa jotenkin huijaa tietokone menee hyvin rajojen muistin että sen olisi pitänyt, ja löytää jotain mehukas että memory-- salasana, ehkä, tapa kiertää noin sarjanumero tarkista, tai vain yleisesti osaa huijata tietokone täytäntöönpanosta koodi, joka ei ollut tarkoitettu. Mutta katsotaanpa palata Todellisuudessa vain hetken jossa tämä ohjelma oli toteutettu strlen, ja esitellä yksi asia täällä. Mitä uutta näistä kolmesta riviä? Joten merkkijono piste h. On käynyt ilmi, on tämä kirjaston nimeltään String Dot H, tai String Library, joiden header-tiedosto, niin sanoakseni, on merkkijono piste h, joka antaa minulle käyttöoikeuden tähän strlen toiminnon. Jos minä jättää, että kääntäjä on menossa huutaa minulle jossain muodossa. Mutta tiedätkö mitä? Nyt saada todella vivahteikas. Linjassa 22, siinä on jotain sellaista on inefficient-- huonosti suunniteltu, arguably-- tästä koodiriviä. Muistelen miten for-silmukka toteutetaan ja mihin toimiin toistua ja uudelleen ja again-- alustuksen, ehto, koodi että saa suorittaa, sitten kasvu tai muutos, sitten ehto, sitten koodi, sitten muutos, sitten ehto, sitten koodi, sitten muutos, ja niin edelleen. Joten mikä voisi olla hieman huolestuttava tai huonosti tehty täällä? Joo, sininen. Yleisö: strlen on nimeltään monta, monta kertaa. SPEAKER 1: Joo. Niin strlen on nimeltään monta kertaa, mutta mitä on pituus Zamyla nimi ensimmäistä kertaa silmukan suorittaa? Yleisö: Kuusi. SPEAKER 1: Kuusi. No, mikä on pituus hänen nimensä toisen kerran koodi suorittaa? Yleisö: Kuusi. SPEAKER 1: Selvä. Se on edelleen kuusi. Oikea? Zarla nimi ei ole muuttunut, vaikka etsin vain osa kirjaimet hänen nimensä. Ja niin, että olen tehokkaasti tämän kysymyksen, mikä on pituus Zamyla, mitä pituus on Zamyla, mitä pituus Zamyla, kuusi erillistä kertaa, tai seitsemän jopa, on vain tyhmä, koska se on muuttumaton, että vastaus. Ja niin mitä voisin itse do on this-- string yhdessä Minulla on marginaalisesti parempi versio täältä. There-- whoops-- merkkijono kaksi Minulla marginaalisesti parempi versio jossa En this-- eikä vain alustetaan i 0, olen myös pilkulla julistaa toinen muuttuja nimeltä n- Minulla ei ole sanottavaa int uudelleen. Minun ei pitäisi, itse asiassa. Mutta minä sanon n. Ja sitten alustaa N strlen n, niin että nyt kuinka monta kertaa ei strlen saada teloitettiin yhteensä? Vain kerran. Ja niin tämä on mitä me tarkoitamme aikaisemmin noin parempi suunnittelu. Oikeastaan ​​kun koodi on oikea, menee takaisin ja ajattelun kautta, minulla on käytössä niin vähän muisti tai muutaman sekunnin tai millisekuntia tietokoneen aikaan mahdollista toteuttaa jokin ongelma? Ja aion selata ylös ja vain mainita että on tämä maininta null tässä versiossa, mutta me palaamme että ennen pitkää. Koska nyt, katsotaanpa katsomaan at jossa tämä tulee johtamaan meitä. Joten, käy ilmi, että nyt, että meillä on mahdollisuus tarkastella yksittäisiä merkkejä, voimme hyödyntää jotain viikosta 0, joka oli hyvin mystistä ja tavallaan mielenkiinnoton tuolloin. Mutta nyt, ja varsinkin kun me päästä salausta viikossa, se tulee olemaan melko voimakas. On käynyt ilmi, että joitakin tiedot types-- ints ja leijailee ja merkkiä ja jouset ja muut things-- jotkut voidaan helposti muuntaa toiseen. Esimerkiksi kun puhuimme noin ASCII aikaa ago-- tässä isoilla kirjaimilla M kautta, piste, piste, dot-- sanoimme, että on olemassa kartoitus näiden kirjaimia ja numeroita. Ja itse asiassa se pätee ja pieniä kirjaimia samoin. Pieniä on 97, pääoma on 65. Ja siellä on useita ASCII, joka on juuri tämä kartoitus järjestelmä kaikki nämä muut kirjaimet. Mitä tämä tarkoittaa? No, aion mennä eteenpäin ja avoin up todellinen nopeasti jotain kutsutaan ASCII-0, joista suurin osa on kommentteja. Ja taas verkossa voit aina vilkaista kommentteja. Ja katsomaan mitä tämä tulee tehdä. Joten se sai päätehtävä. Olen kovakoodannut numerot vain nyt, koska tiedän mitä teen. Tiedän mitä haluan nähdä täällä. Ja olen alustettu minun 65. Ja Luotan ylös kautta 26 kirjainta yhteensä. Ja mitä olen menossa tulostaa yhden rivin kerrallaan jos voit tulkita Tämän korostettu rivi? Mitä tulostetaan? Joo. Yleisö: Aiotko tulostaa kirjeen, että vastaa kartan kirjain arvo ja kokonaisluku arvo? SPEAKER 1: Aivan. Aion tulostaa kirjeen vastaava kokonaisluku, ja päinvastoin, seuraavasti. No tämä, joku sanoi aiemmin, on vain paikkamerkki char. Se on edelleen. Tämä tietenkin on paikkamerkki sillä int-- ole uusi linja. Ja nyt huomaa, ensimmäinen arvo Olen kytkemällä kyseisen paikkamerkin ei ole vain I. sanon, suluissa, nieriää I, joka sulkeissa char on kertoo kääntäjä, kohdella I ei ole niin mitä se on, joka on numero. Käsitellä sitä todellista luonnetta. Kun taas toinen arvo olen kytkemällä in-- I-- pitäisi vain olla useita. Jos siis koota tämä program-- joten tämä on tehdä ASCII 0, piste slash ASCII 0-- saan vain tämä kätevä kaavion näyttää minulle kaikki mahdolliset kuvaukset ilman ajatella sitä kautta tai selvittää sen omasta. Ja olen myös tulostamisen, huomaa pienet kirjaimet, koska muutaman rivin myöhemmin, minä myös tulostaa tämä kartoitus samoin, joka on vain sanoa, että kun ymmärrät mitä tapahtuu alla huppu, voitko automaattisesti muuntaa edestakaisin. Ja itse asiassa, jos joku teistä koskaan tehnyt tätä alakoulussa tai kuulleet jonkun mythically ottaen huomata ja kulkee sen hänen tai hänen ystävänsä luokassa, mutta te sekaisin kirjaimia kuten tulee B, ja B tulee C, tai jotain monimutkaisempi kuin että, no, miten lähtisit täytäntöön, että lapsena? No, juuri sellainen tietää Tulee B, B tulee C, mutta matemaattisesti, mitä se poika tekee? Mitä olit lisäämällä kutakin kirjainta? Tehokkaasti, 1. Joten kun vaihdat B, joka on ikään kuin muuttamalla 65-66, mikä matemaattisesti tarkoittaa vain lisätä 1. Ja niin jos olit toteuttaa että vähän petollinen tekniikka oman opettajan koodin, ehkä juuri siihen juuri lisäämällä yhden kirjaimen yhdessä. Niin ennen pitkää, olemme menossa katsomaan miten me voi hyödyntää tätä todella aidosti ryntäily ja purkaa tiedot. Sillä välin, että olemme alkaneet esitellä pari muille kirjastoille here-- merkkijono yksi tänään. Ja erittäin hyödyllinen sivusto toivottavasti löydät kutsutaan reference.cs50.net, joka opetushenkilöstön koonneet, niin että jos haluat etsiä miten strlen töitä, voit aloittaa kirjoittamisen funktion nimi, valitse strlen siellä, ja sitten vähemmän mukava selitys tulee näkyä. Tai jos haluat virallisen Linux-pohjainen selitys, voit klikata enemmän mukavia ylhäällä oikealla, ja se esittää samat tiedot, mutta monimutkaisempia kannalta. Se hyödyllinen resurssi oikeastaan ​​tiedä mitä kaikkea tekee. Seuraavan kerran aiomme katsomaan Ovaltine ja enemmän, ja esitellä itsemme maailmaan salausta. Sitä ennen, näemme myöhemmin tällä viikolla. Ja nyt, Colton Ogden. Nähdään keskiviikkona. [Musiikkia] [Musiikkia] SPEAKER 1: Mikä [BLEEP] sinä teet? SPEAKER 1: Minä syön minun jälkiruoka? Miten syödä sitä? Kädet? [Musiikkia]