[MUSIIKKIA] DAVID J. MALAN: Selvä. Tämä on CS50 ja tämän on alku Viikko 2. Ja te muistaa, että yli parin viime viikon aikana, olemme esitelleet tietokoneella tiede ja puolestaan ​​ohjelmointi. Ja aloitimme tarinan Poiketen Scratch, että graafinen kieli MIT: N Media Lab. Ja sitten viimeksi viime viikolla, teki meidän käyttöön higher-- alemman tason kieli tiedossa kuten C, jotain, joka on puhtaasti tekstimuodossa. Ja todellakin, viimeinen kerta tutkia niihin liittyvistä useita käsitteitä. Tämä muistuttaa, oli hyvin Ensimmäinen ohjelma tarkastelimme. Ja tämä ohjelma, yksinkertaisesti, tulostaa, "hei, maailma." Mutta on niin paljon näennäisestä magic meneillään. Ei tämä include Näiden Kulmasulkeet. On int. On (void). On sulkuja, aaltosulkeita, puolipistettä, ja niin paljon enemmän. Ja niin, muistaa, että otimme käyttöön Scratch jotta voisimme ihannetapauksessa nähdä ohi että syntaksi, tavaraa, joka ei todellakaan ole kaikki että älyllisesti mielenkiintoinen, mutta jo varhain on, ehdottomasti, vähän hankala kääriä mielesi ympärille. Ja, todellakin, yksi yleisimmistä asiat varhaisessa ohjelmointi luokan, erityisesti niille vähemmän mukava, on saada turhautuvat katkaisemaan jopa tiettyjen syntaktinen virheet, puhumattakaan loogisia virheitä. Ja niin keskuudessa tavoitteemme tänään, todella, tulee olla varustaa sinulle joitakin ongelmanratkaisu tekniikoita, miten paremmin ratkaista ongelmia itse muodossa virheenkorjaus. Ja voit muistaa myös, että ympäristö että otimme käyttöön Edellisen kerran kutsuttiin CS50 IDE. Tämä on web-pohjainen ohjelmisto, joka voidaan ohjelmoida pilvessä, niin sanotusti, pitäen kaikki tiedostot yhteen, kuten olemme jälleen tulee tänään. Ja muistaa, että me revisited näistä aiheista täällä, joukossa toimintoja, ja silmukoita, ja muuttujia, ja Boolen operaattoreilla, ja olosuhteet. Ja itse asiassa vielä muutama että olemme käännetty maailmasta Scratch maailmaan C. Mutta perusongelma rakennus lohkot, niin sanotusti, olivat todella edelleen sama viime viikolla. Itse asiassa olemme todella vain oli eri palapelin pala, jos haluatte. Sen sijaan, että violetti tallentaa lohko, me sen sijaan oli printf, joka on Tätä toimintoa C että voit tulostaa jotain ja alustaa sen ruudulla. Otimme CS50 Kirjasto, jossa on nyt käytettävissänne get_char, ja get_int, ja get_string, ja muutamia muita toimintoja hyvin, jonka kautta voi saada syöttää käyttäjän omalla näppäimistöllä. Ja me myös katsoimme asioita kuten these- bool, ja nieriä, ja kaksinkertainen, kellua, int, long_long merkkijono. Ja siellä on jopa muita tietotyyppejä C. Toisin sanoen, kun julistaa muuttuja tallentaa jotain arvoa, tai kun toteuttaa funktion joka palauttaa jotain arvoa, voit määrittää, mitä tyyppinen arvo on. Onko se merkkijono, kuten merkkijono? Onko se numero, kuten kokonaisluku? Onko se liukuluku arvo, tai vastaavaa? Joten C, toisin kuin Scratch, me todellakin alkoi määrittää, millaisia ​​tietoja olimme palaamassa tai käyttämällä. Mutta tietysti myös törmäsi joitakin perustavanlaatuisia rajoja computing. Ja erityisesti, tällä kielellä C, recall että me katsoimme kokonaisluvun ylivuoto, todellisuus että jos sinulla on vain rajallinen määrä muistia tai, erityisesti, rajallinen määrä bittejä, voi vain laskea niin korkea. Ja niin me katsoimme tätä esimerkkiä tästä jolloin laskuri lentokoneella, todella, jos käynnissä tarpeeksi kauan olisi ylivuoto ja johtaa ohjelmistojen todelliseen fyysiseen mahdollinen virhe. Me tarkasteltiin myös kelluva piste epätäsmällisyys, todellisuus että vain rajallinen määrä bittien, onko se 32 tai 64, voit vain määrittää niin monta numeroa jälkeen desimaalierottimen jonka jälkeen alkaa saada epätarkka. Niinpä esimerkiksi kolmasosa on maailma täällä, meidän ihmisten maailmassa, tiedämme vain ääretön määrä 3s desimaalipisteen jälkeen. Mutta tietokone ei voi välttämättä edustavat ääretön määrä numeroita jos vain antaa sille joitakin rajallinen määrä tietoa. Joten ei ainoastaan ​​me varustaa voit enemmän valtaa suhteen miten voit ilmaista itseäsi näppäimistö ohjelmatyön, me myös rajoitettu mitä voit itse tehdä. Ja todellakin, bugeja ja virheitä voi syntyvät tuollaiset asiat. Ja todellakin, joukossa aiheista tänään tulevat olemaan aiheita kuten virheenkorjaus ja todella etsivät alla huppu kuinka asiat esiteltiin viime viikolla todella toteutetaan jotta voit paremmin ymmärtää sekä ominaisuuksia ja rajoitukset kielen kuten C. Ja itse asiassa, me kuori takaisin kerroksia yksinkertaisin tietorakenne, jotain kutsutaan joukko, joka Scratch sattuu soittaa "lista." Se on hieman Eri tässä yhteydessä. Ja sitten me myös esitellä yksi Ensimmäinen meidän domain-erityisongelmat in CS50, maailma salaus, taidetta muokkaamisella tai salausinformaatioon niin että voit lähettää salaisia ​​viestejä ja purkaa salaisia ​​viestejä kahden henkilön välillä, A ja B. Joten ennen kuin siirtyminen kyseiseen uuteen maailmaan, koetamme varustaa sinulle joitakin tekniikoita, jolla voit poistaa tai vähentää ainakin joitakin turhautumista että olet todennäköisesti kohdannut viime viikon yksin. Itse asiassa, ennen olet such-- joitakin ensimmäinen ongelmat C. Ja kertoimet ovat, jos olet kuten minä, ensimmäistä kertaa yrität kirjoittaa ulos ohjelma, vaikka luulet loogisesti ohjelma on melko yksinkertainen, saatat hyvinkin osui seinään, ja kääntäjä ei aio tehdä yhteistyötä. Tee tai Clang ei aio todella tehdä oman hinnoittelu. Ja miksi se voisi olla? No, katsomaan, ehkä yksinkertainen ohjelma. Aion mennä eteenpäin ja tallenna tämä Tiedoston tarkoituksella nimeltä buggy0.c, koska tiedän sen olla virheellinen etukäteen. Mutta en ehkä ymmärtää, että jos tämä on ensimmäinen tai toinen tai kolmas ohjelma että olen todella tehdä itse. Joten aion mennä eteenpäin ja kirjoittamiseen, int main (void). Ja sitten sisällä minun aaltosulkeita, hyvin tuttu ( "Hei, world-- backslash, n ") - ja puolipisteellä. Olen tallentanut tiedoston. Nyt aion mennä alas minun pääteikkuna ja tyyppi tehdä buggy0, koska, jälleen, nimi tiedoston nykyään buggy0.c. Joten kirjoitan tehdä buggy0, Enter. Ja oi, gosh, muistaa viime kerran että ei virheilmoitukset on hyvä asia. Joten ei ulostulo on hyvä asia. Mutta täällä minulla on selvästi jotkut määrä virheitä. Joten ensimmäinen rivi ulostulo kirjoittamisen jälkeen tehdä buggy0, recall, on Clang n melko laveasti. Alapuolella huppu, CS50 IDE on konfiguroitu käyttää koko joukko vaihtoehtoja tämän kääntäjä jotta sinun ei tarvitse ajatella niitä. Ja siinä kaikki, että ensimmäinen rivi keinot, joka alkaa Clang. Mutta sen jälkeen, ongelmia alkaa tehdä niiden ulkonäköä. Buggy0.c rivillä 3, character 5, on suuri, punainen virhe. Mikä tuo on? Epäsuorasti julistaa kirjaston funktion printf tyypin int (const char *, ...) [-Werror]. Siis, se hyvin nopeasti saa hyvin vaikeaselkoisia. Ja varmasti, ensin silmäyksellä, me emme tahdo odottavat sinua ymmärtämään kokonaisuudessaan kyseisen viestin. Ja niin yksi opetuksista tänään on menossa olla yrittää huomata kuvioita, tai samanlaisia ​​asioita, virheisiin saatat olla kohdannut aikaisemmin. Joten kiusaa toisistaan ​​vain ne sanat, jotka tutulta. Suuri punainen virhe on selvästi symbolinen jotain on vialla. epäsuorasti julistamisesta kirjaston funktion printf. Joten vaikka en oikein ymmärrä, mitä epäsuorasti julistaa kirjaston funktion keinoin, ongelma varmasti koskee printf jotenkin. Ja lähde tästä asiasta on tekemistä julistaa sen. Julistamisesta toiminto on mainita sitä ensimmäistä kertaa. Ja käytimme terminologiaa viime viikolla julistaa funktion prototyyppi, joko yhden rivin yläreunassa oma tiedosto tai ns header-tiedosto. Ja mitä tiedostoa teki sanomme viime viikolla, että printf on lainaus, lainaus, julisti? Missä tiedosto on sen prototyyppi? Joten jos muistatte, aivan ensimmäinen asia, I konekirjoitettu, lähes jokainen ohjelma viime time-- ja vahingossa hetki sitten alkanut kirjoittamalla myself-- oli tämä here-- hash-- #include