[Powered by Google Translate] DAVID MALAN: Tämä on CS50, ja tämä on alku viikko 1. Mitä ajattelimme tehdä tänään katsomaan taaksepäin jotain monet teistä ovat luultavasti käveli ohi joidenkin aikaa ja saattaa näyttää hieman tuttu. Tämä juttu täällä, tämä tietenkin on - YLEISÖ: Science. DAVID MALAN: Tiedekeskus. Joten tämä on itse asiassa yksi varhaisimmista tietokoneista takaisin 1940. Se oli yksi ensimmäisistä sähkömekaanisten tietokoneet että kykeni erityisen pitkä, omaehtoiselle laskelmat, ja mitä me oikeastaan ​​nähdä Science Center on vain pieni pala tätä asiaa. Mitä ajattelimme tehdä sitten on otettava muistella video että tehtiin jokin aika sitten, käyttöön tämä asia maailmassa. Ja näet mistä musiikista ja ääni todellakin nämä olivat erittäin tyytyväisiä kertaa. [VIDEO PLAYBACK] -Riemuvoitto matemaattisia ja mekaaninen taito on tämä hieno uusi automaattinen laskin Harvardin yliopistossa. Vaativien ongelmia matematiikassa, läpi kone koodattu muodossa nauhalle, on tarkasti ratkaistu minuutin murto-aika, joka tarvitaan ihmisen laskennassa. Suunniteltu nopeuttaa kaikenlaisen matemaattisia ja tieteellisiä tutkimusta, jättiläinen mekaaninen aivot toimii Yhdistyneiden States Navy kunnes sodan loppua. DAVID MALAN: Mitä et ehkä tiedä, että se oli tämä sama laite, joka termi me kaikki nyt toteuttaa melko itsestäänselvyytenä keksi, että vian. Joten yksi insinöörit työskentelevät tällä tietokoneella kirjaimellisesti löytyi pieni koi on kone, joka johti Joissakin virheellisiä laskelmia. Ja kuten tarina kertoo, että koi oli teipattu tämä loki lehti tänne, takaisin syyskuussa 9 1940-jotain, ja näin syntyi maailman termi "Bug". Joten tästä lähtien pidämme bugeja olevan minkäänlaista virheitä ohjelmat, onko ihmisen tai tässä tapauksessa, hyönteiset. Joten muutamia ilmoituksia, kuten me edetä. Joten CS50 on perinteitä tarjoamalla lounaat tapaisena eniten perjantaisin lukukauden aikana, jossa otamme 30 40 opiskelijaa Fire and Ice Square rento chitchat, puhua tietojenkäsittelytiede, puhua tulevaisuudesta. Kutsumme alumni ja ystäviä teollisuuden chat up opiskelijat samoin. Todella päätä kohti tehdä mitä on melko suuri luokka kaikki intiimimpi, ainakin kerran kun taas osajoukot opiskelijoita. Joten jos haluat liittyä joukkoomme tänä perjantaina, 13:15, siirry CS50.net/lunch on RSVP. Ja me teemme tämän recurringly, joten ei hätää, jos et ole ensimmäisten joukossa 30 tai niin tällä viikolla. Niin kirjanoppinut toteaa. Sana resurssit nyt alkaa olla saatavilla opiskelijoille luokassa. Niin, että päät tarvitse olla alhaalla Luennoilla kirjoittelu alas kaiken sanon ja niin edelleen, mitä teemme sijaan on toimitettava alkaen opetushenkilöstön kanoninen joukko toteaa. Joten meillä on yksi opetuksen miehet, Andrew Sellergren, joka istuu alas viikoittain, arvioi videoita, ja sitten kirjoittaa ylös mitä ajattelemme on melko arvovaltainen joukko toteaa. Ja Andreaksen mieltynyt myös, laskemisesta snarky alaviitteistä pohjasta. Joten voit toivottavasti nautitte näistä niin hakuteos hauska, ja myös tulevat tietokilpailu aikaa, sillä mahdollisuus tarkastella Mitä tapahtui yksittäisiä luentoja. Joten ne ovat yhteydessä toisiinsa luentojen sivulla. Harjoitus 0, puolestaan ​​on pois. Ja suhteen resursseja sinulle - läpikäynti. Milo johti ensimmäisen perjantaina. Se kuvattiin, laita netissä lauantaina. Ja niin ymmärtää, jos et ole aivan varma mistä aloittaa, tämän tai tulevien p-sarjaa, aina kääntyä ensin walkthrough tai videon viipymättä. Leikkaus on käynnissä, on cs50.net/section on, jos olisi toimitettava valintasi, jos et ole jo tämän päivän. Koska osa alkaa tulevana sunnuntaina, maanantai, ja tiistaina. Teemme kohdat nämä kolme päivää, joka viikko lukukauden suurimmaksi osaksi. Ja me myös esitellä jälleen eri kappaleita. Joten sinua pyydetään tällä leikkaus muodossa, jos ole nähnyt sitä jo, jos olet yksi niistä vähemmän mukava, mukava, tai jotakin siltä väliltä. Ja jos olet tavallaan aidalla, yleensä jossain välillä on mitä useimmat opiskelijat päätyvät tarkkailun. Aukioloajat alkaa tänään. Joten Scratch on melko pieni avain, vaikka se on aivan luonnollista törmätä erilaisiin vikoja tai olla epävarma siitä, miten toteuttaa jotain. Niin ymmärtää, että aloitamme virka tällä viikolla. He olla Annenberg maanantai, tiistai, keskiviikko, Torstai 20:00-23:00 aikana aivot tauko. Ylä classmen voi saada, ja jos joskus on vaikeuksia saada ovesta sisään, koska he ovat pyyhkäisemällä vain puhumalla ja selittää olet mukana CS50. Tyypillisesti 20-30 meille henkilöstö on siellä auttaa Oletko yksi yhteen. Saapuessaan idea on tämä: sinun mukaasi kannettava tietokone, sinulla on oma laturi, meillä on ylimääräisiä virtajohtoja, erityisesti pitkin etelään seinä Annenberg joissa siellä on paljon pistorasioihin. Ja tärkein yhteys siihen virka Q & A on mennä cs50.net/discuss ja lähettää kysymyksesi sinne. Ja merkitä se PSET 0 tai PSET 1 riippumatta viikolla voisi tapahtua olla. Ja mitä sitten teemme on oltava taulukko opetuksen stipendiaattien ja tietenkin avustajat, yleensä 8 tai 10 tai niin meille, läpi, pitäen silmällä aluksella, ja nyppiminen pois kysymyksiä todella niin nopeasti kuin voimme, viitaten voit liittyviä virkoja jos et ole löytänyt niitä itsenne, online viittauksia tarvittaessa. Ja sitten jos on ongelmia, koska väistämättä tulee, tai se vain järkevämpää istua one, työn kautta ongelmia jonkun kanssa. Tai sitten juuri tullut virka todella tarvitsevat että mielentila. Et halua mennä läpi sähköisessä muodossa, voit todella haluavat tavata jonkun kanssa. Kommunikoi että meille, ja mitä tapahtuu on, kun kysymys on nähnyt henkilökunnan jäsen, ja me määrittää, yup, tämä olisi lähetetään yksi 20 tai 30 tiimin jäsenet täällä paikallisesti, näet vasemmassa yläkulmassa tässä pikku Anna jonon painiketta alkaa vilkkua cs50.net / keskustella. Ja tämä kertoo, että olet nyt on kutsuttu, joten puhua, kirjoittaa jonoon. Ja klikkaamalla tätä nappia, nimesi sitten näkyy iPad että CS50 greeter, yksi kurssin päät, tulee järjestämme sisäänkäynnin läheisyydessä Annenberg, jotka sitten pitävät kuvattu täällä, opiskelijat ovat kysymyksiä vasemmalle, henkilökunnan jäsenet, jotka ovat läsnä oikealla. Ja napsautuksella vasemmalle ja oikealle, selain tulee vilkkuu niin pian kuin esimerkiksi professori McGonnagal on valmis näkemään sinut erityisen taulukon Annenberg. Joten teimme tämän viime vuonna. Olemme käynnistetään aukioloajat ja uudelleen toteutetaan paljon ohjelmisto. Niin ymmärtää, että tämä tulee lämmetä tällä viikolla. Mutta myös ymmärtää myös menneinä vuosina, kuten olet ehkä kuullut ystäviltä, ​​virka oli todellakin 50 150 opiskelijaa kerralla. Ja se ei yksinkertaisesti ole mahdollista, että voimme käsitellä että tehokkaasti, one, koko illan. Ja niin mitä me oikeastaan ​​yrittävät tehdä tänä vuonna on hyötymään siitä, että monet kysymykset ovat Usein kysyttyjä ja voi usein paremmin vastata asynkronisesti. Voit siis tavallaan ajatella läpi henkilökunnan vastaus, ja voimme ajatella läpi koodia ilman lämmitetty paine välttämättä kamppailee sen läpi vierekkäin. Joten arvioimme, että noin kolmasosa tai puolet kysymyksistä tullaan lähetetään henkilökohtaisesti, ja me yritämme nyppiä pois, koska Peräti puoli tai enemmän sähköisesti, virka-aikana. Ja me edelleen käyttää Keskustele koko viikon samoin. Ja lopuksi se, että tämä Kurssin voi suorittaa hyväksytty / hylätty. Joten jos olet aidan tai ajattele että olet oikeasti ole varma, onko tämä maailma sinulle, tai tämä on todella melko vieras sinulle, ymmärtää, että tämä on hieno tapa hankkia joitakin luottamusta jolla astua luokka, kuten tein suoraan sanottuna vuotta sitten. Ja sitten on viisi viikkoa aikaa lajitella kuvan ulos itse, jos haluat pysyä hyväksytty / hylätty, vaihda kirjain luokka, tai vastaavaa. Ja yleensä mitä hyväksytty / hylätty ei mielestäni opiskelijoille on että jos laitat että 10 tuntia, 20 tuntia, mitä se saattaa olla joitakin ongelmia, ja olet banging päätäsi seinää vasten, ja et todellakaan voi vain jahdata jotain alas, ja te on niin monia muita asioita sinun tarvitsee tehdä, rehellisesti, mitä ajatella hyväksytty / hylätty on, se vie reunan pois tilanteita niin. Jos olet ottanut asian 90% tavalla. Tiedäthän, se ei ole aivan täydellinen. Mutta sinulla paljon irti, kuitenkin. Joten harkita hyväksytty / hylätty antavan teille mentaalinen malli, ehkä. Selvä, joten viime viikolla sukelsi Scratch ja me puhui ohjelmoimaan melko korkea graafinen taso. Ja tänään teemme siirtyminen kieli kutsutaan C, alemman tason ohjelmointikieli päälle jota monet modernit kielet on nyt rakennettu, kuten jotkut ja niistä Käytämme kohti lukukauden loppua. Ja syntaktisesti, miltä ne näyttävät on kaikki melko samanlaisia. Joten alkaa tehdä tätä muutosta täällä. Joten tämä oli ohjelman viime viikolla se oli yksinkertaisin Hello world ohjelmia. Se yksinkertaisesti tulostetaan näytölle Hei maailma, jossa pieni puhekupla tulee ulos kissa. No, jos alamme nyt kääntää tämän toisen kieltä, ymmärtää, että ajatukset tänään ja keskiviikkona ovat identtisiä, mutta syntaksin alkaa muuttua. Joten taas viime viikolla meillä oli, kun vihreä lippu napsautetaan, sano Hello world. Tänään aiomme olla int, tärkein, mitätön, printf, paluu, joidenkin muiden syntaksin myös siellä. Aaltosulkeita sekä sulkeita, sekä lainauksia, ja vaikka mitä. Mutta ymmärtää, että ydin ajatus tässä on painatus, ja lopulta se, että pääasiallinen nyt olemaan synonyymi alkaa ohjelman. Tärkeimmät tulee olemaan, jos vihreä lippu käynnistymässä asioita pois. Joten nyt mennään erottaa toisistaan ​​joitakin rakennuspalikoita täällä ennen kuin sukeltaa joitakin konkreettisia esimerkkejä. Joten me kutsutaan tätä julkilausuman viime viikolla, jolloin se on vain ohje. Tee tämä - tässä tapauksessa sanoa hei maailma. No C, jos katsomme vain, että linja, näin olemme aikoo aloittaa ilmaisemalla kyseisen palapelin: printf ("Hello World");. Ja nyt me kiusata näitä toisistaan ​​yhä enemmän ajan myötä, mutta ymmärtää, että on olemassa malli täällä. Joten meillä on tämä asia sanottu printf, mikä on olennaisesti samanlainen sana Say. Niinhän se tulee tehdä. Printf, ja f tarkoittaa tässä "muotoiltu". Niin se vain tarkoittaa, että voit lisätä useita esteettisiä yksityiskohtia. Joten lainaus lainaus päättyy on alku, mitä aiomme aloittaa kutsuvan merkkijono. Sana, lause, lauseen. Merkkijono ohjelmointikieli on sarja nolla tai useampia merkkejä. Niin h-e-l-l-o, pilkku, ja niin edelleen on, lainaus lainaus päättyy, merkkijono. Ja nyt kenoviiva n, hieman syntaktisesti oudolta, mutta me jo määritelty, että viime viikolla siten mitä? Se on vain uusi rivi. Se on vain tapa välittää tietokoneeseen haluamasi vastaa lyömällä Enter siellä, mutta et haluavat todella Enter ja siksi sotkea kaikki muotoilu todellinen ohjelma. Nyt suluissa liittää tämän merkkijonon, avoin paren ja sulje Paren, ja sisällä se on meidän merkkijono. Koska se koska C, ja muiden ohjelmien kielet, asioita, kuten printf ottaa argumentteja, tai ota parametrit. Niin alkaa ajatella nyt tämän violetti Say lohko toiminto, kuten menetelmä, koska menettely. Voit todella kutsua sitä mitä haluat nyt, mutta Se on eräänlainen miniatyyri ohjelma, joka vain tekee yhden asia, on yhdellä rivillä, ei vähemmän. Joten printf on myös mitä aiomme aloittaa kutsuvan toiminta ja tehtävät tehdä jotain - tässä tapauksessa tulostaa muotoiltu merkkijono näytölle - mutta toimii myös väitteitä tai parametreja. Ja perustelut tai parametreja, kiitos, me tarkoitamme että niiden käyttäytyminen voidaan vaikuttaa mitä kulkea sisällä suluissa. Joten tässä tapauksessa, printf tarpeet kertoa mitä tulostaa, ja me vain kulkea, lainausmerkkeihin täällä, merkkijono että todella haluat tulostaa. Ja puolipiste on hyvin loppuun tämä rivi on vain historiallinen kiusa jolloin lopussa eniten riviä koodia, laittaa puolipisteellä tehdä super selväksi tietokoneeseen että tämä koodirivin päättyy tähän. Nyt tämä on hyvä, koska kuten näemme niin ohjelmat saavat enemmän monimutkainen, puolipiste tekee erittäin selväksi meille ihmisille, ja myös tietokone, jossa koodia alun ja lopun. Ymmärrämme, että jotkut kielet eivät ole jonkin Näiden samat tiedot. Ja itse asiassa, JavaScript, et aina tarvitse jotain kuten puolipiste. Mutta siitä lisää tulossa. Niin silmukoita. Meillä oli jotain tällaista, hyvin intuitiivisesti, ilmeinen, tee jotain uudestaan ​​ja uudestaan ​​ja uudestaan. Kuten laittaa sukat tai sanomalla hei, tässä tapauksessa. No, alkaa tänään C, voisimme ilmaista tätä Scratch lohkon while (true) printf ("Hello World"). Eli huomaa olemme alkaneet rakentaa kirjaimellisesti palapeli pala ennen. Meillä on sama violetti lohko, mutta se on sisällä tämän haarukoitua Ikuisesti lohko, ja paras tapa kääntää että C on seuraava. Ei ole Ikuisesti avainsana. Et voi vain kirjoittaa F-O-R-E-v-E-R C. Joten lähin analogi on aikaa. Nyt, kun (tosi) tuntuu hieman tyhmä, koska ei arvosta todellinen koskaan muutu? Oletettavasti ei. Se on kuin sanoisi taas yksi, kun taas, mutta totta. Se on sama asia, totta on aina tapaus. Joten tämä silmukka todella indusoimaan millaisia ​​silmukan? Vain loputon silmukka, oikea. Ikuisesti silmukka tai Kutsuimme sitä viime viikolla, vain loputon silmukka. Joten joskus se on paha. Joskus se vika, joskus siksi saat spinning rantapallo tai tiimalasin tms.. Mutta tässä tapauksessa me tietoisesti, jostakin syystä halusi tulostaa saman uudestaan ja uudestaan ​​ja uudestaan. Tai jos, kuten kellon, haluat tehdä jotain uudestaan ​​ja uudestaan ​​ja uudestaan. Joten ääretön silmukoita voisi olla järkevää. Ja näin C voisimme kääntää Ikuisesti koodin. Joten nyt tämä on hieman tarkempi. Olimme toista 10 kertaa seuraavan lausunnon. Joten while (true) ei aivan toimi siellä, koska totta on aina totta. Joten jos me sen sijaan tarkastelemme C-versio, nyt syntaksin saa hieman arvoituksellinen. Mutta ollakseni rehellinen kun alkaa nähdä tämän, se kaikki saa melko tuttuja nopeasti. Joten tämä on mitä kutsutaan varten silmukka. For silmukka aio kertoa tietokoneen tehdä jotain uudestaan ​​ja uudestaan ​​ja uudestaan ​​niin kauan kuin nämä asiat ovat totta. Nyt mitä me tarkoitamme, että? No, siellä on kolme osaa varten silmukka, ja aiomme palata tämän yhteydessä todellisten esimerkkejä hetki. Joten älä huolestu, jos se ei ole aivan uppoavat kaikki kerralla. Mutta int i = 0 on pitkä tarina lyhyt, sanoen antaa minulle muuttuja on tyyppiä Integer, joten anna minulle numero nimeltään I ja alustaa sen 0. Se on antaa minulle kuin algebrallinen muuttuja x ja alustaa sen 0. Mutta tässä tapauksessa vaadimme sitä i. Sitten keskeltä, se kertoo i on pienempi kuin 10. Että puhuu tietokone toimi seuraavasti kamaa niin kauan koska i on pienempi kuin 10. Ja tietenkin se alkaa alle 10, koska se alkaa 0. Sitten lopuksi, voit ehkä arvata mitä i + + avulla. Se on vähän syntaksia tarkoittaa vain kasvattaa i.. Joten lisätään 1 i, uudestaan ​​ja uudestaan ​​ja uudestaan. Ja niin me näemme tämän silmukan, tätä syntaksia, vaan toteuttaa täsmälleen sama asia, rehellisesti sanottuna, Scratch oli niin paljon helpompi ilmaista. Toista 10, ja olet valmis. C-, ja useimmissa ohjelmointikielet, meidän on oltava hieman opettavainen tietokoneen ja tosiasiallisesti Määritä jotain tällaista. Mutta me palaamme tähän ja muihin syntaksi. Entä muuttujia? Scratch meillä oli jotain näiden oranssi lohkot, jos voisin julistaa muuttuja. Katsotaanpa mielivaltaisesti kutsua laskuri. Mennään alustaa sen 0, ja sitten Katsotaanpa ikuisesti tehdä jotain. Tässä tapauksessa Scratch sanon laskuri, joten Kissan tulee olemaan hieman puhekuplan että puhuu numero, joka on tämän muuttujan. Ja sitten meillä on muutoksen laskuria 1. Joten kaikki tämä on kääritty sisällä Ikuisesti lukko. Joten meillä on jo nyt rakennuspalikoita C joka kääntää tätä. Yksi tapa voisimme tehdä, että on tämä. Anna kokonaisluku, kutsuvat sitä laskuri. Alusta se 0 ensimmäisellä rivillä siellä. While (true), joten olen varastamalla että ajatus vain hetken sitten mennä eteenpäin ja tehdä seuraavasti. Tulosta laskuri, ja sitten kasvattaa laskuri, uudestaan, ja uudestaan, ja uudestaan. Tai jälleen, + + tarkoittaa vain lisää 1 jotain. Mutta on uusi pala syntaksin täällä. Mitä hyppäämällä ulos kuulu meidän edellisen esimerkin? Kyllä, tämä% d. Joten voit ehkä päätellä, mitä tämä tekee, suoraan sanoen, joka perustuu mitä Scratch lohko tekee. Mutta jälleen C, meidän täytyy vain olla hieman erityistä kun se tulee ilmaista itseämme. So printf ("% d \ n"). No useimmat voimme heittää pois niin tuttuja. Lainaa vain tarkoittaa se merkkijono, kenoviiva n on vain uusi rivi. Joten ainoa uusi asia tässä on% d. Ja kaikki tämä on on paikkamerkki. % D on menossa tarkoittamaan desimaaliluku. Ja% d tarkoittaa tietokoneeseen, laittaa desimaaliluku täällä. No, mitä numero haluat laittaa sinne? No, kuten voitte ehkä päätellä, pilkun jälkeen sanomme laskuri, se nimi muuttujan että ilmoitettu tai loi pari riviä aikaisemmin. Joten tämä on vain C tapa liität muuttujan merkkijono dynaamisesti. Koska sitä vastoin, jos olisin sen sijaan tehnyt jotain Tämän printf ("laskuri"), mikä olisi tässä ohjelman sijaan tehdä, oletettavasti? Se tulee kirjaimellisesti tulostaa "laskuri". Mikä ei ole vaikutusta, että haluan. Minun täytyy korvata jollakin numeerinen arvo. Niin näemme, että toimii sitten, kuten printf, voi olla vasta yhden argumentteja, kuten "Hello World". Ne voivat ottaa lainaus lainaus päättyy pilkku, ja sitten jotkut muuttujat että saa kytkeä, kuten näemme edellinen merkkijono kautta nämä% sign paikkamerkkejä. No entä Boolen? Boolen olivat nämä arvot tosi tai epätosi. Kyllä tai ei. 1 tai 0. Päälle tai pois päältä. Joten Scratch he näyttävät tältä, ja huomaa, että pohja lohko tässä on oikeastaan ​​yhdessä Kahden pienempiä lohkoja. Joten minä tavallaan vetää ja pudotti kolme palapelin palaset yhdessä tehdä, että enää palapelin pala on niin, että minä voisi välittää ajatus, että haluan x vähemmän kuin y ja y on pienempi kuin z. Ja niin voin kääntää nämä kaksi erillistä riviä seuraavasti. Alkuun yksi voi hyvin triviaalisti kääntää C, vain x on vain meidän tapamme, vuonna C, anna minulle pääsyn toimintoihin, jotka joku muu kirjoitti. Ja tässä tapauksessa en välitä, koska haluan printf. Nyt saamme int main (void). Joten tämä on yksi näistä asioista, rehellisesti, että päivänä 0, aika paljon olen eräänlainen vyöhykkeen pois, koska se on vain ei kiinnostava älyllisesti, jotkut syntaksia. Mutta nyt tiedän, että toimii, muuten kutsutaan menettelyjä, tai menetelmiä, yleensä tuottavat jotain arvoa. He tekevät jotain. He keksivät vastauksen. Ne tuottavat tuotoksen. Joten int vieressä tärkein on vain meidän lyhenne tapa sanoa että tämä toiminto, tämä menettely on lopulta menossa antaa sinulle takaisin numero. Ja miksi se on, me tulemme takaisin. Tärkein on vain oletus maailmanlaajuinen standardi oletuksena toiminto, joka on menossa toteutettu C-ohjelma, kun käynnistät sen. Void tarkoittaa vain tätä asiaa, tärkein, ei tee mitään argumentteja, tässä tapauksessa. Joten olen ollessa erittäin selvä. Ei ole merkkijonoja siellä, ei ole pilkkuja. Void tarkoittaa mitään perusteluja to main. Nyt lopuksi onneksi kaksi viimeistä riviä ovat tuttuja. Sisällä aaltosulkeita meillä printf ja meillä on paluuta. Ja tuotto on sellainen valitettavaa, että meidän on laittaa sen sinne, koska tässä tapauksessa se ei tee kaikkea paljon kiinnostusta. Mutta tietokoneohjelma, kun toiminto palauttaa 0, tämä tarkoittaa kaikki on hyvin. Mikään meni pieleen. Sen sijaan, jos funktio palauttaa 1, tai negatiivinen 1, tai negatiivinen 1337, tai joitakin satunnaisia ​​numeroita, kuten siitä, että tarkoittaa yleensä sitä, että virhe todella on tapahtunut. Joten jos olet Macin tai PC, jos olet koskaan nähnyt joitakin ärsyttävää viesti, koska tietokone on kaatunut tai jäädytetty, ja siellä arvoituksellisesti virheilmoitus, ja sitten koodia, kuten järjestelmän koodi 1,2,3,4, jokin määrä, että yleisesti on tarpeetonta yksityiskohtaisesti kertoa Useimmille meistä ihmisille, mutta se on, mitä jotkut toiminto tai jotkut Ohjelma on palannut, ei-nolla-arvoa. Ja hyöty on se, että 0 tarkoittaa, kaikki hyvin, ja sitten pohjimmiltaan on ääretön määrä asioita, jotka voi mennä pieleen. Minkä vuoksi he valitsivat 0 hyvän ja nollasta arvo huono, kuten tulemme pian nähdä. Joten mene eteenpäin ja kirjoittamaan tämän. Niin muistaa, että toinen päivä käytin Macin avaamaan pääteikkuna, ja sitten avasin teksti-ohjelman, kuten TeXturi, ja aloin kirjoittaa koodia. No se on hienoa. Mutta kokemus tulee olemaan erilainen Macissa tai Solaris-tietokoneessa, Linux-tietokone riippumatta käyttöjärjestelmä järjestelmä satut käyttää. Ja niin tietenkin me vaan käyttää jotain kutsutaan CS50 Appliance. Joten CS50 Appliance on ladattava ohjelmisto jonka avulla voit suorittaa käyttöjärjestelmän nimeltä Linux, erityisesti Fedora Linux, omalla Macin tai PC. Ja voit tehdä tämän lataamalla jotain kutsutaan hypervisor. Joten kaikki tämä dokumentoidaan Harjoitus 1. Ja voit ohjata kohti mitä sinun tarvitsee ladata. Mutta lopputulos, onko sinulla Mac tai PC, on sinun ladata joitakin vapaita ohjelmistoja. Voit sitten ladata CS50 Appliance, ja kerrot, että ilmainen ohjelmisto - hypervisor - ajaa CS50 Appliance ikkunassa tietokoneen. Ja mitä tapahtuu, on tämä. Olen nyt huomannut täällä, mikä näyttää olevan työpöydälle ympäristöön. Ja haluan todella kutistua tämän yhden ikkunan. Joten tämä on nyt minun Mac, jossa pieni ikkuna täällä, ja sisältä Tämän ikkunan sattuu olemaan täysin eri käyttöjärjestelmä. Itse on tämä alku menu tänne, muistuttaa Windows, että on koko joukko alivalikoita, mukaan lukien linkin CS50 tuotteeseen, Dropbox, ja vastaavat. Ja mitä tämä ympäristö on nyt vakiona ympäristö että me kaikki voimme nyt käyttää, joten ei väliä mitä tietokone on, mitä olet asentanut sen, mikä versio Mac OS tai Windows näytät, meillä kaikilla on nyt samassa ympäristössä. Ja nyt tässä ympäristössä voimme aloittaa kirjoittaminen koodia. Joten aion mennä eteenpäin ja avata ohjelma nimeltä gedit. Tämä on verrattavissa notepad.exe, tai TextEdit Macissa. Ja tämä on vain erittäin yksinkertaisen tekstin editointi ohjelma joka näyttää tältä ensi silmäyksellä. Nyt huipulla, minulla on valkoinen paletti, alareunassa I on tämä musta ikkuna jossa lukee jharvard @ laitetta. Ja se johtuu käyttäjätilin että valmiiksi luotuja kaikille on nimeltään John Harvard. Hänellä on kansio, johon kaikki hänen tiedostot eivät mene, ja tässä missä voimme aloittaa kirjoittaminen koodia. Joten anna minun mennä eteenpäin tässä ja zoomata vain hieman, ja olen teemme # include , int main (void), ja Sitten aion tehdä printf ("Hello World") , Palauttaa 0. Nyt tämä kaikki on aivan mustaa ja valkoista. Anna minun mennä eteenpäin ja tehdä yksi asia opettaa gedit mitä olen todella tekee. Anna minun mennä Tallenna nimellä. Aion valita vasemmalla puolella täällä jharvard. Joten jälleen, vaikka et ole koskaan käyttänyt Linux ennen, rehellisesti näinä päivinä, ne kaikki ovat hajauttaa osaksi olennaisesti samantyyppinen käyttöliittymä - Mac OS, Windows ja Linux. Joten päätin jharvard kotikansiossa täällä. Ja aion tallentaa tämän tiedoston hello.c. Joten hyvin alkuun, olen kirjoittanut hello.c, nimeäminen C ohjelman kanssa. C laajennus on mitä yleinen käytäntö. Ja osuin Tallenna. Ja nyt, mitä hienoa on, että olen tehokkaasti opettanut gedit, , että tämä on C-ohjelma. Huomaa, että minun mustaa ja valkoista tekstiä nyt värikoodattu tai syntaksin korostettu, mikä vain kiinnittää huomioni eri semanttinen ohjelman osia. Huipulla jäi sinne, koska minun ohjelmia saada monimutkaisempi, olen menossa on yhteenveto kaikista niistä asioista, olen kirjoittanut. Niin, että se siellä. Sallikaa minun nyt loitontaa ja mene alas tämän pääteikkuna. Joten tämä on ehkä uusi monille ihmisille. Jos et ole koskaan käyttänyt komentoriviltä ympäristön, olet koskaan käytetään DOS tai olet koskaan käyttänyt Linux tai olet koskaan avannut Mac OS pääteikkunaa siellä paljon asioita voisi tehdä GUI, kuten osoittaa, ja napsauttamalla, ja vetämällä, ja pudottamalla, ja vastaavat, mutta yleensä - varmasti maailman tietojenkäsittelytieteen - komentorivillä, jos sinulla ei ole hiirtä yleensä, sinulla on vain näppäimistön, on todella paljon tehokkaampia kuin käyttöliittymä, kun saat sopeutetaan eri komentoja. Ja sinä tavallaan vapaa itsesi tarvitse kohta ja napsauta kaikessa. Joten gedit me tavallaan on molempien maailmojen parhaat puolet. Voimme vetää ja pudottaa tekstiä, voimme nähdä sen mukava ja värikoodattu. Mutta kun on aika ajaa meidän ohjelmaan, käymme joskus vain käyttää tätä pientä ikkunaa täällä. Joten aion mennä eteenpäin ja tehdä tämän. Vuonna pohja musta ja valkoinen ikkuna, aion mennä eteenpäin ja kirjoittaa kalahtaa. Ja sointi on nimi kääntäjä. Se on ohjelma, joka muuntaa minun lähdekoodia tulee, niin, kohdekoodilla. 0s ja 1s, jotka näimme lyhyesti viime viikolla. Recall viime viikolla, lupasimme, että olimme menossa menevät jotenkin näin - meidän piti olla jotain tällaista - ja tämä ei todellakaan ole jotain, että ihmisen tulee tehdä manuaalisesti. Joten sen sijaan aiomme käyttää ohjelmaa, ja että ohjelma Tällöin kutsutaan clang. Ja nimi minun ohjelma on hello.c. Joten jotta laatia hello.c alkaen lähdekoodia kohdekoodina tai 0s ja 1s, sen pitäisi riittää vain tehdä tämä ja paina Enter. Okei, mitään ei näytä tapahtuneen. Mutta tiedän nyt, tai viime viikolla, että oletusnimi ohjelma, kun kirjoitettu C, on typerästi kutsutaan a.out. Useimmat mielenkiinnoton nimi voisitte keksiä. On ensimmäinen kirjain, pois mitä oli ulos, mutta olkoon niin. Tämä on minun ohjelma, ja nyt piste slash, kuten tulemme näkemään, on oikeastaan ​​vain eräänlainen suojausominaisuus, koska a.out on ohjelma kirjoitin. Se ei tullut minun tietokone, se on ei Program Files. Se ei ole Mac OS: n Ohjelmat-kansioon. Minun täytyy olla erittäin selkeä tietokoneen kanssa, ja sano Ohjelman a.out, on nykyisessä kansiossa, hakemistossa. Ja miten te edustatte tätä ympäristössä näin on piste edustaa mitä kansioon olet parhaillaan sisään Ja niin. / Tarkoittaa vain juosta a.out nykyisessä kansiossa. Ja minä suorittaa tämän Enter, ja voila, minun ensimmäinen ohjelma. Nyt haluaisin ottaa askel taaksepäin. Tämä ikkuna on vähän pieni, ja ymmärtää, että pohja jäljellä Laitteen tässä on toinen kuvake. Yksi on Chrome, jonka pitäisi olla melko tuttu, vain web selaimen sisällä laitteen. Ja tämä mustavalkoinen kuvake on vain isompi pääteikkuna. Joten jos se saa hieman harmittaa tavallaan juuri Tässä pikku siivu ikkunan, jossa on vuorovaikutuksessa ohjelmia, voimme sen sijaan tehdä tätä. Ja nyt haluan aloittaa kirjoittamalla muutaman pian tunnettava komentoja. ls. Joten ls on komento listalle. Joten Mac OS tai Windows, olisit yleensä kaksoisnapsautat kansio ja sitten voila, näet kaikki eri tiedostojen ja kansiot. Vuonna komentoriviltä ympäristön, jossa voit vain kirjoittaa komentoja tai teksti, ls on vastaava. Joten näytä minulle mitä on tähän hakemistoon. Nyt siellä on nippu tavaraa täällä on niin vähän tuttuja ja vähän tuntemattomia. Mutta huomaa, että aivan kuten Windows ja Mac OS, jharvard on työpöydän kansioon. Joten kaikki kuvakkeet ovat minun työpöydälle tapahtua olla kyseisen kansion. Ei Downloads kansioon, tavaraa, että Chrome voi laittaa sinne. Dropbox. Joten Laitteen mukana tulee sisäänrakennettu tuki Dropbox niin että yli lukukauden, voit synkronoida kanssa Dropbox huomioon siten, että kaikki ohjelmat varmuuskopioidaan. He saatavilla toisessa tietokoneessa. Jos jotain joskus menee vikaan laitteen, voit helposti toipua Dropbox. Niin, että kansio on olemassa siitä. On kaksi tiedostoa, jotka tein - hello.c ja a.out. Ja sitten oikealle olemassa joitakin muita kansioita, että me päästä loppupuolella lukukauden, web ohjelmointi. Joten kun teen. /, A.out, Anna, että sanoo menevät hakemistosta olen, nykyisen hakemiston, ja suorita ohjelma nimeltä a.out oikeassa. Selvä, joten on kiva ja hyvä, mutta se ei ole kaikki, että pakottaa kirjoittamaan ohjelma nimeltä auttaa a.out. Joten voimme todella tehdä tämän hieman eri. Joten sen sijaan juuri käynnissä kalahtaa, hello.c, lisätään mitä kutsutaan komentorivillä. Joten komentorivillä tai kytkin tässä tapauksessa, on vain toinen sana tai lause kirjoittamalla klo kehotteeseen jälkeen ohjelma, jonka haluat suorittaa. Joten tässä tapauksessa, clang on ohjelma haluan ajaa,-O tarkoittaa tuotoksen tiedosto on enää kutsuta a.out. Output tiedosto nimeltä Hei, ja niin kokoamalla viimeinen sana line, hello.c. Eli lyhyesti sanottuna, tämä on hyvin marginaalinen parannus, jolloin sijasta ottaa tämän typerästi nimetty tiedosto a.out, Voin nyt tehdä clang-o Hei, sitten hello.c ja sitten paina Enter. Mikään ei tunnu tapahtuvan, mutta jälleen mielelläni, 0 - kun mikään ei tunnu tapahtuvan, että tarkoittaa mitään väärää tapahtunut - Tehdäänpä ls nyt Anna, ja olen todellakin nyt on hei ohjelman. Joten jos kirjoitat hei nyt komentoa ei löytynyt. OK,. /. Niin juuri oikea. Joten koska tämä ohjelma kirjoitin, ja se ei tullut tietokone,. / Hei, Enter, tarkoittaa Olen nyt käynnissä hei. Siinä se siellä. Nyt mitä me lopulta saada enemmän ja enemmän komentoriviltä perusteluja, jotta voisimme tehdä enemmän, mutta vain niille, joille tämä voisi olla vanha hattu, haluan todella mennä hakemistoon täällä ja vain antaa sinulle teaser miten muuten me voisi mennä noin täytäntöönpanoa Hello World. Sallikaa minun mennä tänne, ja aion avata sen. Joten oikeastaan, aion selittää, mitä olen tekemässä, joten Tämä on hyödyllistä. Saanen takaisin ylös. Joten olen tehnyt tätä jo pitkään. Joten huomaa yli oikealla olemassa pari luetteloissa omituisesti nimetty source1m ja source1w. Tämä on vain typerä yleissopimuksen käytämme. Lähde vain tarkoittaa lähdekoodia, 1 tarkoittaa tämä on viikolla yksi, ja m tarkoittaa se maanantaina ja w tarkoittaa, että on keskiviikko. Joten mitään arvoituksellinen siellä. Se on vain lyhennetty merkintätapa. Nämä siniset asiat ovat kansioita, muuten kutsutaan hakemistoja. Haluan mennä tuohon kansioon nyt, ja normaalin tietokoneen Voisin vain kaksoisnapsauttamalla kansion kuvaketta ja siellä kaikki minun tiedostot. Mutta komentoriviltä ympäristön, en voi aivan tehdä että, niin sen sijaan, minun vaihtaa hakemistoja käsin. Joten jos kirjoitat cd ja sitten source1m, Enter, huomaat, että Minun kehotteeseen juttu valkoinen vasemmalla, juuri muuttunut. Ja niin todellakin, kun se vain sanoi suluissa ja sitten pikku koukero, tilde merkki, että juuri tarkoitti olin John Harvardin kotihakemistossa, hänen My Documents- hänen henkilökohtaiset tiedostot. Mutta nyt suluissa lukee ~ / source1m. Tämä tarkoittaa vain sitä olen kansioon source1m se John Harvardin kotihakemistossa. Joten jos haluan nyt luetella tämän kansion, helppo kysymys, kirjoitan vain ls. Ja nyt näen kaikki tiedostot, että olen valmiiksi luotu nykypäivän luento, jotka kaikki, tai suurin osa, joka tapahtuu päättyy. c. Joten anna minun mennä eteenpäin nyt ja ajaa gedit ohjelman nimeltä holloway.c, joka on kirjoittanut joitakin satunnaisia ​​hakkeri Internetissä, joka näyttää vähän kuin tämä. Ja emme mene läpi tämä millään yksityiskohta, mutta niille mukavampaa, varsinkin, jos Haluatko arvata, mitä tämä ohjelma tekee täällä. Voit olla varma, olitpa enemmän tai vähemmän mukavaa, emme edes saada tällaista asiaa loppuun mennessä tällä lukukaudella. Tämä on mitä esimerkki sotkettu C kilpailu, joka keinoin kirjoittaa kaikkein arvoituksellinen etsivät ohjelman mahdollisesti voi päihittää muut fiksuja ihmisiä, jotka ovat samalla yrittää kirjoittaa asioita ja keuliminen, että he voivat kirjoittaa enemmän arvoituksellinen asioita kuin sinä. Joten tämä ei ole esimerkki hyvin kirjoitettu ohjelma näkökulmasta tyyli, tämä on esimerkki ohjelmasta, joka voittaa kilpailu, ihmiset yrittävät olla epämääräisiä ja abstrakteja. Joten jos otamme tämän asian, anna minun mennä minun pääteikkunaa niin sanoakseni. Joten tämä musta ja valkoinen ympäristön kutsutaan pääteikkuna yleisesti. Anna minun mennä eteenpäin ja kääntää sen. En aio käyttää kalahtaa, koska tämä ohjelma on vähän arvoituksellinen ja se tarvitsee eri kääntäjä, yksi nimeltään GCC. Mutta se ei sama asia. Se vie lähdekoodi kohdekoodin. Ja nyt jos juoksen a.out, että ohjelma Näin juuri tämä. Niin, että mies, joka vuonna voittivat kilpailun. Oli miten oli, emme ole menossa siihen suuntaan, sinänsä. Joten itse yrittää nyt erottaa toisistaan, mitä voimme tehdä Näiden perusrakenneosia tehdä enemmän ja enemmän mielenkiintoisia ohjelmia. Joten olemme kirjoittanut ohjelman, olemme suorita ohjelma. Nyt voimme todella yksinkertaistaa ja ei enää tarvitse kirjoittaa sana kalahtaa kehoitteeseen. On käynyt ilmi, meidän ohjelmat saavat enemmän arvoituksellinen, voimme tai monimutkaisempia vaan voimme ajaa tämän komennon. Joten anna minun mennä takaisin kotiini hakemistoon, niin sanotusti, haluan Poista - rm on poistamiskomento - Menen poistamaan tiedosto nimeltä a.out ja hei. Ja nyt huomaan komentoriviltä ympäristön, aivan kuten vuonna GUI, saat kehotuksen. En voi napsauttaa painiketta vaikka, I tarvitse kirjoittaa y = kyllä, y kyllä. Ja nyt jos en kirjoita ls jälleen, huomaa, että nämä vihreät ohjelmat - a.out ja hei - ovat poissa. Varokaa rm. Se voi tehdä pahoja asioita, kuten voit vetämällä asioita roskat. Joten nyt mennään eteenpäin - ja voisin tehdä tätä - clang-o Hei, hei - Olen jo kyllästynyt kirjoittamalla komennon. Vaikka olen kirjoittanut sen hiukan nopeasti. Jotta voimme sen sijaan tehdä tehdä hei. Joten tee ei kääntäjä. Se on vain ystävällinen ohjelma, joka tulee Linux, tässä tapauksessa - käyttöjärjestelmä - joka automatisoi laadintaprosessin ohjelmia. Joten sen sijaan muistaa clang-o tiedostonimi ja Sitten niin edelleen, varsinkin kun nuo rivit pitenevät ja pidempi, voin vain kirjoittaa tehdä. Ja tämä tulee sylkemään läjän tavaraa, että me lopulta nähdä tällä lukukaudella. Mutta huomaa nyt jos en kirjoita ls, hei on takaisin minun hakemistoon. Ja todellakin voin ajaa sitä. / Hello. Joten tee vain automatisoi käynnissä mitä oli, Tässä tapauksessa, joka on paljon pidempi, monimutkaisempi komento. Joten aiomme alkaa käyttää valmistajaa, vain koska se on paljon käyttäjäystävällisempi. Mutta nyt Tehdäänpä mielenkiintoisempi ohjelma kuin vain sanoa hei. Joten ohjelmiin olemme kirjoittaneet tähän mennessä siellä on tärkein. Se on vain oletus asia käynnistymässä kaiken pois. Mutta on muitakin tehtäviä siellä samoin, ja stdio.h on asia, näimme yläosassa meidän tiedosto ennen, ja se mitä kutsutaan standardin kirjastoon. Sisällä standardin kirjasto on koko joukko toimintoja että joku muu kirjoitti, ja voimme alkaa käyttää näitä toimintoja kirjoittaa enemmän mielenkiintoisia ohjelmia itse. Joten anna minun mennä takaisin laitteeseen. Aion sulkea tämän pääteikkuna. Aion sulkea asioita kirjoitti aikaisemmin, ja vain mennä osaksi hello.c, ja huomaa nyt voin tehdä seuraavasti. Moikka maailma ei ole kovin kiinnostavaa, haluaisin mukauttaa tämän ohjelman itselleni. Joten sen sijaan sanoa maailman, aion mennä eteenpäin ja sanoa - Voisin kirjoittaa David - mutta tämä todella on eräänlainen pohjimmiltaan sama. Mutta katsotaanpa kokeilla tätä paikkamerkki ajatus. Muistutan, että C, pikemminkin printf, meillä oli nämä paikkamerkkejä, ja on enemmän kuin vain% d. Joten% d oli nopea järki tarkistaa. Okei, desimaaliluku, se on siinä. Desimaaliluvut, siinä kaikki. Joten% C, koska me kohtaavat, tulee olemaan luonteeltaan. Laita merkki täällä, kirjain Z, tai välimerkkejä symboli. Yksikirjaimisia,% f, kukaan tiedä muista kielistä? Joten Liukulukuarvo. Reaaliluku. Joten ei desimaaliluku - tämä on oikeastaan ​​todellinen numeroon desimaalipilkun, ja jotkut numeroiden vasemmalla ja oikealla puolella. % S, merkkijono. Tuo aiomme nähdä melko usein. String taas on vain sana, lause, sarja yksittäisiä merkkejä. Ja lopuksi, LLD? Joten tämä on enemmän kulman tapauksessa. Pitkä, pitkä desimaalin. Joten jos haluat olla vain numero, tämä iso, haluavat isompi numero, olet menossa on täsmennettävä, tietokone, että se on tietyn kokoinen. Joten nipistää tätä hieman. Sen sijaan vain vaikea koodia David, saanen hieman dynaamisesti sanovat% s. Joten laita% s täällä, mikä on paikkamerkki merkkijono. Sitten haluan tehdä pilkku, ja sitten "David" tänne. Nyt tämä ei ole kovin älyllisesti kiinnostava, koska kaikki olen tehnyt nyt todella luoda enemmän työtä tietokone. Sen sijaan kertoa tietokone ei tällä kerralla, olen nyt sanomalla tehdä tämän ja aseta merkkijono täällä lopulta, pilkku, tässä on se merkkijono. Joten tämä ei ole paranemisen, mutta se on ainakin askel kohti entistä mielenkiintoinen ohjelma. Koska nyt haluan mennä eteenpäin ja tehdä tästä ikkunaa hieman isompi, anna minun mennä eteenpäin ja suorita make hei. Ja nyt,. / A.out ei toimi, miksi? Okei, nyt sitä kutsutaan hei. Joten jälleen tehdä, ja myös clang kanssa-o, nimeksi ohjelma olla jotain mielenkiintoista. Ja voilà: nyt se sanoo hei David. Selvä, vielä tyhmä ohjelma. Joten nyt mennään todella palata tänne ja esitellä käsite muuttujan. Eikö olisi mukavaa, jos voisin julistaa muuttuja joiden tyyppi on merkkijono? Ja muuttujan arvon tulee itse käyttäjä itseään. Joten mielivaltaisesti, aion soittaa muuttuja s, mikä on vain yhteinen yleissopimus kun yksi muuttuja nimeltä merkkijono. Aion tehdä yhtäläisyysmerkki, ja sitten aion soittaa toiminto nimeltään GetString. Joten GetString ei ole jotain, joka tulee rakennettu C. Se toiminto, joka CS50 henkilökunta kirjoitti, oikeastaan ​​vain Nämä pari ensimmäistä viikkoa, yksinkertaistaa prosessia saada käyttäjä syöttää ja saada käyttäjä syöttää muodossa merkkijonojen tai numeroita, ja tällaisia. Joten GetString on kuin printf, mutta ilmeisesti pikemminkin kuin tulosta se tekee mitä sen nimi sanoo, saada merkkijono. Mutta käyttää GetString, me aiomme pitää tehdä muutoksia täällä, tätä pidemmälle. Joten intuitiivisesti, tämä ohjelma, toivottavasti tulee jotenkin saada merkkijonon käyttäjä, ja sitten mitä se aikoo tehdä kanssa merkkijono, kutsutaan s? Se vain menee tulostaa sen, eikö? Vielä ole stimuloiva ohjelma, koska kaikki se menee tehdä on plug in, että arvo osaksi jossa% s sanoo sen pitäisi mennä. Joten ainakin nähdä tässä toiminnassa. Saanen tallentaa ja loitontaa. Nyt minun pääteikkunaan tänne, pieni siivu yksi, saanen eivät tee hei. Okei, ja ah, pirun, sain koko joukko virheitä. Saanen vierittää ylös, ja näemme ensin - joten katsotaanpa todella tehdä tämän vielä suurempi ikkuna, jotta voit näkee kuinka huonosti Mokasin - joten varmista Hei. Okei, se on katastrofi, eikö? Olen kirjoittanut kolme riviä koodia, ja Se on antanut minulle 12 virheitä. Miksi tämä? Joten onneksi Usein kun näet monia virheitä sylkee kerralla, se on oikeastaan ​​vain, koska olet sekoittaa tietokone täällä. Ja se on edelleen hämmentynyt kun se pääsee tänne. Ja niin se vain käynnistyy kaatumisen ja kompastelu ja sylkee enemmän pelottavaa tavaraa kuin todellisuudessa koskee. Joten yleensä aloita aina alkuun yksi. Joten hyvin alkuun kaikkein esiintymä punainen, virheilmoitus on tämä. Käytä pimeän tunnisteen merkkijonon, minä tarkoittaa vakiona? En. Tarkoitin merkkijono, mutta tämä johtuu myös sanajonon että minun pitää käyttää suullisesti todellisuudessa ei ole olemassa C joko. Se on jotain käytämme vain ensimmäisen viikon tai kahden täällä, mutta se on olemassa tiedosto nimeltä cs50.h. Joten nyt, tiedän, että on tämä muu kirjasto, joka Henkilökunta kirjoitti, joten se on kirjoitettu myöhemmin kuin stdio.h. Mutta sisällä cs50.h on määritelmä, synonyymi lajittelee, joka luo tämä sana merkkijono. Joten nyt haluan mennä takaisin minun pääteikkuna. Aion selvittää tämän koko sotkun by Ctrl-L. Me vain pyyhi kaiken puhtaaksi ja aion mennä eteenpäin ja tehdä Hei taas, Anna. Joten mitä on tapahtunut nyt? Nyt kaikki nämä virheet menivät pois. Joten mitä olen oikeasti tehnyt? Olen juuri opettanut tietokoneen merkkijono olemassa, ja se on että tiedosto nimeltä cs50.h. Joten lopeta valittaminen, sillä nyt tiedät mistä löytää että toiminto vakuutus niin sanotusti. Jos se on olemassa maailmassa. Joten nyt aion mennä eteenpäin ja ajaa hei. Tuntuu olevan loputon silmukka, mitään ei tapahdu. Joten minun täytyy kirjoittaa jotain, oikealla. Ensimmäinen rivi koodia minun ohjelma GetString. Joten se on kirjaimellisesti odottaa minua saada merkkijono. Joten siinä mielessä kyllä, se on ikuinen silmukka. Ilmeisesti GetString on oletusarvoisesti että kirjoitti - henkilöstö - että sanoo vain odottaa ja odottaa ja odottaa ja odottaa ja odottaa, kunnes käyttäjä antaa merkkijonon kirjoittamalla jotain tuumaa Joten anna minun mennä eteenpäin ja kirjoita D--v - i-d, Enter. Ja siinä se on, hei David. Nyt tämä kuulostaa se vain teko? Anna minun mennä eteenpäin ja kirjoita Tommy. Anna, okei, tuntuu toimivan. Toimii Rob, toimii Zamyla, toimii - okei. Niin se menee töihin, todennäköisesti. Joten se pitäisi tulostaa mitä me oikeastaan ​​antaa sille, ja voimme olla hieman vaikeaa täällä. Katsotaan jos teemme jotain hei. Voi mennä tänne, katsotaanpa, kopioida, liittää. En aio pystyä liitä että monta kertaa täällä. Liitä, okei, Shift + Ctrl + V. Joten mikä voisi käydä niin, että on paha täällä? Okei, segfaults. Joten jotkut teistä etukäteen taustat tietää, että yleensä, jolloin tietokoneet paljon panoksia, kun he luultavasti ei ole tarkoitus saada pitkiä nimiä kuten tämä - huono asioita tapahtuu. Itse asiassa maailmassa web, myös tämä tapahtuu melko vähän, jolloin kun olet suunnittelemalla verkkosivuilla, kun olet suunnittelu Facebook, sinun täytyy tehdä mielivaltaisia ​​päätöksiä up edessä, kuten kuinka kauan joku Facebook käyttäjätunnus olla? Tai kuinka kauan jonkun etunimen? Kuinka kauan jonkun puhelinnumeron olla ja vastaavat. Ja jos ohjelmoijat tekevät huonoja oletuksia ohjelmat rikkoa koska yrität antaa heille enemmän lähtö, enemmän panosta pikemminkin kuin ne ovat muistissa. Tai RAM varattu sitä, joten jos nyt osuin Enter, että ohjelma todella toimi, koska olimme kirjastossa ja oikeastaan ​​odotettavissa tässä tapauksessa. Mutta epäilemättä tämä lukukausi, voit kirjoittaa vähintään yhden ohjelma, sanovat nämä sanat. Muista tämä viikon päästä, ehkä kaksi päivää nyt. Segmentointi vika on huono asia. Se viittaa sinun tehdä jotain, että tietokone ei ennakoida. Ja siinä tapauksessa, te, ohjelmoija, ei ennakoida. Paljon kuin mitä tämä kasa sukkia, oli eri rajatapauksissa olisimme kohdanneet. Samoin ohjelmissa jos et ennakoida kuinka kauan joku nimi tulee olemaan. Tai mitä jos minulla on pahantahtoinen käyttäjä, ja hänen nimensä on oikeastaan ​​aika lyhyt, mutta he vain yrittävät sotkea minua? Mitä tulee olemaan käyttäytymistä minun ohjelma? No, siinä tapauksessa, jotain voisi todella kaatua. Joten tehdään tämä. 90 minuutissa, tämä on hirvittävän kauan tehdä tietojenkäsittelytiede. Miksi emme päästä tapana ottaa viiden minuutin murtaa täällä, ja kun palaamme, me sukeltaa joitakin monimutkaisempia ja pakottavia ohjelmia? Viisi minuuttia. Selvä. Joten kommentoida lyhyesti. Olen kuullut, että vaikka tämä oli näytössä ennen, mitä tuli suustani oli cs50.net/rsvp. Tämä on oikea. cs50.net/lunch. Joten nyt voit kokeilla RSVPing tämän osoitteessa / lounaalla. Mutta tehdään tämä nyt. Joten tämä on ollut erittäin nopeaa, super uutta paljon ihmiset. Vanha hattu joitakin ihmisiä. Joten kelata vain hetken, ja miten saimme Tämän hello world lähdön hetki sitten. Joten ensimmäinen, on tämä CS50 Appliance. Jälleen ohjelmisto, ongelma asettaa 1 aikoo kertoa miten ladata sitä, missä ladata sen, mitä sitten ja niin edelleen. Ja sitten kun noudatat näitä ohjeita, voit maksimoida ikkunan, ja Mac tai PC näyttää vähän jotain tällaista. Musta tausta, kotikansio yläosassa, jossa kaikki tiedostot menevät, roskakori vasemmassa yläkulmassa, Valikon alaosassa. Joten jälleen, melko samanlainen henki Mac OS tai Windows- vaikka se sattuu olemaan Linux. Joten mitä me seuraavaksi tehdä? No, aloimme kirjoittaa ohjelmia. Ja muistamme viime viikolla, että kaikki se kestää kirjoittaa Ohjelma on yksinkertainen tekstieditori, kuten Muistiossa tai TextEdit. Suoraan sanottuna, voit jopa käyttää Microsoft Word. Mutta pahoja asioita lopulta tapahtuu, koska se on hyvin kovaotteinen ratkaisu ohjelman kirjoittaminen plus se will tallentaa sen väärässä tiedostomuodossa. Mutta se on vain tekstieditori, tekstinkäsittelyohjelma, on kaikki se Tarvitaan kirjoittaa ohjelman. Joten CS50 Appliance, voimme tehdä tämän yhdellä yksinkertaisella tavalla. Voimme klikkaa kuvaketta alhaalla vasemmalla. Ja vielä, ongelma asettaa 1 neuvoo tätä, ja voilà - saat tämän mustavalkoinen käyttöliittymä, jossa voimme aloittaa kirjoittaa koodia. Joten ala kirjoittaa erittäin yksinkertainen ohjelma uudelleen. Aion mennä jopa Tiedosto, Tallenna ja aion soittaa Tämän sanotaan, hello2.c. Ja olen vain kertoa sitä klikkaamalla jharvard, laita se sen kotihakemistoon, en todellakaan välitä jos tämä menee. Ja sitten Tallenna. Ja nyt voin aloittaa kirjallisesti oman ohjelman. Ja muistan aiemmin, että minun täytyy kirjoittaa int main (void). Suurenna päälle vasemmalla. Ja sitten haluan sanoa printf, ottaa kaksi. Ja nyt rivinvaihto, tiivistä lainaus, sulje sulkeisiin, puolipiste. Ja sitten minä menen tänne minun pääteikkunassa se upotettu gedit, vain mukavuussyistä. Ja aion mennä eteenpäin ja kirjoittamaan tehdä hei, mutta ei Hei yksin, hello2. Joten minun tiedoston nimi hello2.c. My tiedosto siis pitäisi kutsua hello2, tässä tapauksessa. Hemmetti, mitä tein väärin? Selvä, joten olen selkeästi pois linja, jos muistatte, mitä aikaisemmista ohjelmista näyttää. Mutta katsotaanpa jos emme kiusaa tätä toisistaan. Valitettavasti useimmat ihmiset, jotka kirjoittavat ohjelmia, jotka kirjoitamme ohjelmat eivät yksinkertaistaa asioita kovinkaan hyvin. Joten meillä on sellainen silmäillä mitä ei aivan tee aistia tänne ja katso jos voimme selvittää, mikä on vialla. Aivan ensimmäinen rivi siellä sanoo epäsuorasti julistamisesta C kirjaston funktion printf tyypin int. OK, ymmärsin osa sitä. Mutta näyttää viittaavan siihen, että käytin printf väärin, jotenkin. Ja mitä järkeä on väärin? En vain opettaa tietokoneen se on tiedoston kutsutaan stdio.h. Nyt minun on vain juuri muistaa nyt, että printf on vuonna stdio.h, ja todellakin siellä tulee olla muita toimii saman tiedoston me tottua. Joten nyt haluan mennä eteenpäin ja paina Ctrl-L vain selvää, että pois, uusinta tee hello2, ja voila. Ja tämä komento uudelleen, monimutkaisempi kuin me kerromme varten nykypäivän tarkoituksiin. Mutta se ei suorita kalahtaa, ja sointi vie lähdekoodia ja sylkee 0s ja 1s. Ja ne 0s ja 1s tässä tapauksessa kutsutaan mitä? Okei, kohdekoodilla. Ja tiedosto he ovat kutsutaan, niin, hello2, tässä tapauksessa. Koska minun tekstitiedosto oli hello2.c, Enter. Ja nyt olen ottaa kaksi huutomerkki, huutomerkki piste, huutomerkki. Selvä, joten meillä on nyt mahdollisuus saada jouset, ilmeisesti. No, mitä muuta voimme saada käyttäjiltä? Hyvin CS50 kirjastossa, siellä on muita toimintoja, jotka menossa yksinkertaistaa elämäämme näinä ensimmäisinä päivinä. GetChar, GetDouble, GetFloat, GetInt, GetLongLong, GetString. No, katsotaanpa nyppiä pois helpoin näistä ensimmäinen. GetString kirjaimellisesti tekee sen. Se vain istuu siellä odottamassa käyttäjä kirjoittaa jotain, ja heti kun kirjoitat jotain ja Enter, se tekee jotain tämän arvon. Mennään takaisin että esimerkiksi nähdä, mitä GetString teki. Anna minun mennä eteenpäin ja avata vuonna gedit, hello.c ja muistuttaa että juuri ennen taukoa, tämä on mihin jäimme. Joten nyt kiusaa tällä toisistaan ​​hieman tarkemmin. Joten rivillä 6, siellä on kaksi asiaa tällä hetkellä tapahtuu. Yhtäläisyysmerkki on erottaa alkupuoliskolla ja toinen puoli. Joten vasemmalla puolella yhtäläisyysmerkki, olemme sanomalla merkkijono s. Ja sitten, aivan Maallikon termein, mikä on merkkijono s teet, luulet? Se luo mitä? Joten se luo merkkijono nimeltä s. Nyt mitä se oikeastaan ​​tarkoittaa? No, se on varata tilaa merkkijonon nimeltä s. Se ei ole aivan oikeassa. Mitä tämä tekee? No tietokoneita, kuten tiedätte, on kiintolevyt, siitähän tiedostot tallennetaan. Tietokoneet ovat RAM, ja se jos ohjelmat on ladattu kun ne ovat käytössä. Joten kun kaksoisnapsauttamalla kuvaketta ja Microsoft Word avaa ylös, Microsoft Word on käynnissä, niin sanotusti, RAM, joka on elektronisen tietokoneen osa. Ei fyysinen, mekaaninen osa, joka on spinning, jossa data tallennetaan yleensä pitkällä aikavälillä. Joten merkkijono s on melko paljon kertoo tietokoneen antaa minulle tarpeeksi keskusmuistia mahtuu merkkijono. Nyt se on vähän liian yksinkertaistava, koska kuinka suuri on merkkijono aiotaan? No emme oikeastaan ​​tiedä vielä, joten lähiviikkoina me oikeastaan ​​vetää kerros, joka on merkkijono ja me kerromme mitä se todella on. String, nyt on vain mukava yksinkertaistamista maailmamme. Mutta merkkijono s julistaa merkkijono nimeltä s, nyt. Julistaa merkkijono. Se pidättää joitakin tilaa RAM merkkijono käyttäjä on noin kirjoittaa. Nyt katsokaamme oikeaan yhtäläisyysmerkin. Niin se sanoo GetString (). Ja pieni järki tarkistaa. Se, että ei ole mitään sisällä suluissa merkitsee entä GetString? Siinä ei argumentteja. Eli et voi vaikuttaa sen käyttäytymiseen millään tavalla. Joka kerta kun käyttää sitä, se saa merkkijono ja se on siinä. Sen sijaan, printf, toivottavasti sen käyttäytyminen ei muuttaa joka kerta. Muuten, se on melko hyödytön tulostusta, jos se ei sama asia. Jos se tulostuu aina David tai jotain mielivaltainen koko ajan. Joten printf järkevää olla argumentti. GetString ei todellakaan tarvitse argumentti, koska halusin saada merkkijonon käyttäjä ja se on käyttäjä, joka menee toimittaa dynaamisuutta kirjoittamalla eri kirjaimia joka kerta näppäimistöllä. Joten mitä GetString eivät lopulta? Ajattele sitä tällä pieni musta laatikko. Ja tämä musta laatikko ei ota syöttää, mutta kun lyö , se sylkee merkkijono, jonka käyttäjä on kirjoittanut tuumaa Ja että siellä on yhtäläisyysmerkki siellä tarkoittaa toteuttaa mitä sylkemään oikealla ja säilytä se sisällä mitä vasemmalla. Joten yhtäläisyysmerkki täällä, se tosiasiassa ei tarkoita tasa-arvo, se pikemminkin teknisesti tarkoittaa tehtävän. Ole arvo oikealla, ja laita se muuttuja vasemmalla. Niin, että kaikki mitä siellä tapahtuu. Nyt linja 7, me soittaa printf. Joten printf toivottavasti on tulossa hieman tylsää nyt. Joten tulostaa muotoillun merkkijono. Mitä merkkijono? Tulosta ", h-e-l-l-o-% s ! \ N ". Selvä, joten mitä haluan plug-in% s? Kirjaimellisesti, mitä tallennetaan s. Eli tässä tapauksessa pieni järki tarkistaa, kuinka monta argumenttia ei printf kestää? Okei, olen kuullut erään. Kuulin taas yhdeksi. Kaksi, kuulin kaksi. Ja miten noin kolme? Okei, kolme? Erinomainen. Kolme mahdollista vastausta, vain yksi niistä on oikea. Joten väitteet jälleen vaikuttaa käyttäytymiseen funktion. Aikaisemmin printf ei vain ottaa yksi argumentti. "Hello World" oli yhden argumentin. Kuitenkin nyt, huomaa jos pilkku on. Tämä pilkku on ulkopuolella lainaus / lainaus päättyy, mikä tarkoittaa hei printf, tässä tulee toinen argumentti. Joten pilkkuja useimmissa ohjelmointikielissä Erota argumentteja. Joten vastaus tähän ei todellakaan ole yksi, koska on tämä pilkku. Niin vähän, printf on ilmeisesti ottamalla kaksi väitteet tällä kertaa. Mutta mahdollisuus temppu kysymys tässä on, mitä tästä pilkku? Tarkoittaako tämä sitä, että on olemassa oikeastaan ​​kolme argumentteja? Tämä, tämä, ja tämä. Joten ei, koska se pilkku on sisällä lainauksia, jotka tarkoittaa se on oikeastaan ​​vain esteettinen Englanti. Sillä ei ole mitään tekemistä määrän argumentteja tässä ohjelmassa. Joten tämä pilkku on ulkopuolella lainausmerkkeihin. Ja palaa sitten 0. Nyt mennään vain eräänlainen ottaa tämä yksi uskossa tänään, ja juuri tietää, että kun toiminnot tehdään täytäntöönpanovaltion koodiriviä, ne tulee yleensä palauttaa jotain arvoa. Tässä tapauksessa vain koska tärkein on palautettava int- se on vain tapa kieli C toimii. Joten koska mitään meni pieleen, tuntuu tämä ohjelman hienoa, olen vain kova koodattu vastineeksi 0. Mutta toisin, ja aion kirjoittaa tähän välikoodissa nyt, aivan kuten Joosef teki, kun teimme sukka Esimerkiksi viime viikolla. Jos jotain meni pieleen - tämä ei ole varsinainen koodi - meni väärin, palaa, sanotaanko, 1. Else return 0. Joten tämä on, jos menemme tähän. Tämä ei ole varsinainen C-koodia, vain pseudokoodilla. Mutta näin voit palata erilaisia ​​mahdollisia arvoja. Mutta nyt olen vain mennä eteenpäin ja palata 0. Selvä, kysyttävää tähän mennessä on syntaksi, toiminnallisuus, tai vastaavaa? Niin, takaisin. YLEISÖ: [kuulumattomissa] DAVID MALAN: Voitko puhua hieman kovempaa? Miksi tämä ohjelma return 0, ja? YLEISÖ: [kuulumattomissa] DAVID MALAN: Sepä koska sain laiska, anteeksi. Ei hyvä akateeminen vastausta, palaa 0. Voin tavallaan pelastaa tämän sanomalla teknisesti C, jos tärkeimmät ei nimenomaisesti palauta arvo, 0 palautetaan automaattisesti. Mikä on totta, en vain peittelyyn. Mutta minun olisi pitänyt tehdä sitä tällä tavalla. Ei mielenkiintoista takeaway kuin muu kuin minun virhe. Niin? YLEISÖ: Yleensä kun kirjoitat mitätön, se tarkoittaa, että olet eivät palaa jotain. DAVID MALAN: Oikea. Jos sen sijaan voit määrittää ennen nimen toiminto, Esimerkiksi täällä, mitätön, niin funktio ei palauta mitään. Ja siksi haluaisin vain sanoa, paluu tai ei mitään, ja se olisi johdonmukainen. Ja Palaamme tähän. Ja vain FYI, yksi saaliiden oppimisvaikeuksista ohjelmointi maailmassa, joka on satoja kirjoja ja satoja sivustoja siellä on tulet aina Katso eri syntaksin eri kirjoista eri ihmiset. Toteuta me teemme parhaamme kohdissa ja luentoja olla johdonmukainen. Mutta joskus näet ristiriitaisia ​​syntaksi. Joten jos olet epävarma, kysy. Ja yleisesti, me hoidamme luentoihin ja osioita melkein aina esittää sen oikealla tavalla. Ja minä sanon melkein aina, koska esillä olevassa asiassa. Muita kysymyksiä? YLEISÖ: Onko% s ulkopuolella olevia laitetta? DAVID MALAN: Onko% s olemassa ulkopuolella laitteen? Kyllä. Joten% s on tekemistä sen kanssa C. Se, että käytämme sitä Laitteen pohjimmiltaan ole mitään tekemistä piirteet kielen käytämme. Todellakin, viime viikolla, kun käytimme minun Mac, kirjoitin C-koodin Macin. Olisin voinut käyttää% s Macin, ja voit käyttää sitä Windows-tietokoneen, jos asennat kääntäjä, kuten Visual Studio Microsoft. Joten% s. Kaikki me teemme sisällä ikkunan tänään on tehdä C. Ja pohjimmiltaan mitään tekemistä käyttöjärjestelmän osalta. Sen sijaan, musta ja valkoinen pääteikkuna - kun Olen kirjoittamalla asioita, kuten ls, ja RM, sekä cd - että on tekemistä käyttöjärjestelmän ja navigointia. Joo. YLEISÖ: Tarkoitin kirjasto, CS50 kirjastoon. DAVID MALAN: Okei, joten jos tarkoitat avainsanan merkkijono, joka olemassa vain CS50 kirjastossa, oikea. Tämä ei ole C itsessään, ja todellakin pari viikon me heittää pois CS50 kirjasto ja käynnistä tekee asioita tyhjästä itseämme, niin sanotusti. Muita kysymyksiä? Joo. YLEISÖ: [kuulumattomissa] DAVID MALAN: Hyvä kysymys. Ovatko komennot kirjainkoko? Ja haluaisin tehdä ero tässä. Joten komennot ovat yleensä asioita me kirjoittamaan alaosassa ikkunan pääteikkuna. Mitään täällä olisi lausuntoja tai C-koodia. Mutta molemmissa tapauksissa vastaus on sama, kyllä. Molemmat ympäristöt, C-koodi yläreunassa ja käyttöjärjestelmän komentorivin at pohja, kirjainkoko. Joten sinun on hyödynnettävä GetString isolla G, Pääoman S. Sinun täytyy kirjoittaa printf kaikilla pienillä. Sinun on kirjoitettava ls kaikilla pienillä. Joten lähes kaikissa tilanteissa tämä lukukausi, tapaus, vuonna Itse asiassa, asia. Kyllä. YLEISÖ: [kuulumattomissa] DAVID MALAN: Ah, niin okei, mitä jos olisimme tiedosto kutsutaan hello.d. Joten se kääntyy pois D on ohjelmointikieli. Ja niin joissakin tapauksissa, voisimme todella kirjoittaa ohjelman tiedoston ja on se koottu, että muoti. Voimme, ja itse asiassa, Lyhyt vastaus on, en tiedä. Joten aiomme tehdä tämän. Anna minun mennä eteenpäin ja luoda uuden tiedoston. Ja spin täällä, rehellisesti yleensä on aina epäilystä Tämän lukukauden, ja sinulla on laitteen tai tietokoneen avata, mennä eteenpäin ja kokeilla jotain. Joten aion tallentaa tiedoston nimeltä hello.d. Tallentaa tämän. Ja aion ajaa tekemään hei Enter. Tuntui päätellä että C oli todennäköisempää kuin d, tässä tapauksessa. Muut kysymykset. Joo. YLEISÖ: [kuulumattomissa] DAVID MALAN: Okei, sano että kerran. YLEISÖ: [kuulumattomissa] DAVID MALAN: Miten edetä diagnosointiin että tai vianetsintä, että? Joten todennäköisesti, koska ne ovat eri kielellä, todennäköisesti saisit täysin eri ohjelmaa ulos. Saisit täysin eri virheilmoituksia. Ja myös aivan kannalta suunnittelu, se olisi luultavasti olisi huono suunnittelu päätös voidaan kirjoittaa kaksi erilaista kielellä lähes samannimistä tiedostoa, vuonna täsmälleen samassa hakemistossa käyttäen automaattinen työkalu, kuten tekevät. Voin siis myös työntää takaisin ja sanoa 15 vuotta näin, koskaan tehnyt samaa virhettä. Voisi tapahtua. Mutta on aivan eri, luulen, logistiset puolustuksemme paikallaan. Plus virheilmoituksia aiheutuisi, että olisi lopulta paljastaa mikä ongelma on. Mutta mahdollinen kulma tapaus. Selvä, joten katsotaanpa käyttöön vain pari muuta ominaisuuksia täällä nyt, joten voimme alkaa rakentaa entistä ja monimutkaisempi ohjelma. Joten ensinnäkin, matematiikka. Joten matematiikka esimerkit ovat vain eräänlainen helppo ensimmäisellä viikolla. Tämä ei tarkoita sitä, että kaikki ohjelmointi on noin matematiikka. Varmasti ymmärtäminen eri ominaisuuksia matematiikka, algebra erityisesti, on aivan asiaa täällä. Korkeamman tason CS luokkiin, lineaarinen algebra, hammaskiveä, ja vastaavat. Mutta tosiasia useimmat mitä me teemme tämän lukukauden vähentää ei matematiikasta, eikä varsinkaan aritmeettinen, sinänsä, mutta todella vain logiikan ja huolellisen ajattelun. Ja niin tämä yhteys, että tietojenkäsittelytiede on pitkään ollut, erityisesti lukion, matematiikan, on hieman harhaanjohtava. Koska useimmat ohjelmat me kirjoittaa, todella ovat tavallaan korkeamman tason ja keskittyä ongelmien ratkaisemiseen, varma, ehkä käyttää joitakin yhteen-ja vähennyslaskua, ja eri matemaattisia kaavoja tai vastaava, mutta loppujen lopuksi se on ajattelemisesta eikä juuri toteuttamisessa mitä olet ehkä tehnyt kuin TI laskin lukiossa. Niin, että sanoi, katsotaanpa nyt tehdä jotain näiden matemaattisia operaattoreita, jotka eivät ole niin että voimme matka yli joitakin taustalla näkökohtien ohjelmointi, tai Tällöin C. Joten olemassa, koska CS50 kirjasto ehdotti, ja tänään olemme vain käyttämällä GetString - ja hetken ehkä yksi muu toiminto - mutta on olemassa erilaisia ​​datatyyppejä tietokoneessa. Lopussa päivän, tietokoneet vain tietää 0s ja 1s. Mutta muistuttaa, että viime viikolla puhuimme binary-järjestelmän in edustavat numeroita, kuten numero 0, ja 1, ja 2, aina on jopa 8, kuten Naten video. Ja sitten voimme luottaa paljon enemmän kuin me teki lavalla täällä. Mutta jos haluat edustaa paitsi numeroita vaan kirjaimia, me, ihmiset, on keksiä jokin mielivaltainen yleissopimusten, jolloin jos päivän päätteeksi kaikki minun tietokone on on kyky ilmaista 0s ja 1s, hyvin meidän on parasta aloittaa standardoinnista malleja 0s ja 1s jotka edustavat eri asioita. Kuvio 0s ja 1s joka edustaa kirjain. Malleja 0s ja 1s jotka edustavat kirjain z. Malleja 0s ja 1s jotka edustavat väri sininen tai punainen, tai vastaavaa. Meidän täytyy käyttää kaikkia näitä 0s ja 1s ilmaista itseämme eri yhteyksissä, eri tavoilla, jotka eivät ole välttämättä numeerinen. Joten kannalta edustuksen, C on eri tietotyypit, ja olemme nähneet näistä toistaiseksi. Näimme int, ja huomaa, mitä ei näytössä nyt on merkkijono. Merkkijono ei itse asiassa olemassa C. Jälleen, se yksinkertaistaminen olemme esittelee ensimmäistä pari viikkoa. Nieriä on yksilöllinen. Float on reaaliluku, jossa desimaalipilkku ja numerot vasemmalle ja oikealle puolelle. Kaksinkertainen mitä niille selän ennen taustalla? Joten kaksinkertainen kaksinkertainen jotain. Lisää kaksi kertaa niin paljon tarkkuutta. Mitä tämä tarkoittaa? Niinpä kaikissa näissä tapauksissa maailma on sellainen standardoitu kuinka monta bittiä käytetään esittämään kukin näistä asioista. Joten jos olet katsonut Naten ASCII video jo osa of PSET 0 tai myöhemmin tällä viikolla tulet, luultavasti tiedätte että ASCII - merkki edustustot - käyttää kuinka monta bittiä? Ja saatat jopa muistaa meidän demon viime viikolla, kuinka monet ihmiset olivat lavalla. Joten 7 tai 8, tyypillisesti. Joten yleensä 8, ja siellä on jotain kutsutaan laajennettu ASCII, joka käyttää kaikki 8 bittiä, sen sijaan, että 7. Mutta yleensä, puhumme toimivalta 2, joten tässä tapauksessa 8. Joten nieriää ohjelmointikieli on yleensä 8 bittiä. Joten int on yleensä 32 bittiä. Float on yleensä 32 bittiä. Kaksinkertainen on yleensä 64 bittiä. Ja mitä se tarkoittaa? Se tarkoittaa, että voit edustaa suurempia numeroita, tai jos kyseessä reaalilukujen, voit olla paljon enemmän jälkeiset numerot desimaalin tarkkuudella. Paljon enemmän tarkkuutta, tässä tapauksessa. Nyt pitkä pitkä on valitettavasti nimetty. Joten on int, joka on 32 bittiä. On pitkä, joka on, nope, 32 bittiä. Ja pitkä pitkä, joka on 64 bittiä. Kuitenkin jotkut näistä ovat tilannekohtaisia, se riippuu millainen tietokone sinulla on. Eli yleisesti, me täsmentää kotitehtäviä tai tietokilpailu kun se todella on väliä. Mutta kohta on olemassa kaikki nämä erilaiset esityksiä täällä. Joten todella sukeltaa ohjelmaan. Sen sijaan kirjoittaa tämä tyhjästä, anna minun mennä eteenpäin ja avata nykypäivän lähdekoodista - jotka kaikki on Online - jos haluat korjailla noin verkossa, tai tuotto Keskiviikkona laitteen tietokoneeseen, ohjeet joiden yhdistää kurssin kotisivulla. Tässä erittäin yksinkertainen ohjelma. Mutta se sai hieman jotain uutta huipulla että meillä ei ollut ennen. Paljon sinistä riviä tekstiä. Joten nämä siniset viivat edustavat kommentteja. Joten se on melko käyttökelpoinen ohjelman pystyä kirjoittamaan joitakin huomautuksia itsellesi tai työtovereiden tai ystävien tai opetus miehet, jotka tavallaan kuvailla mikä on meneillään Tämän tiedoston, mutta ei ole mitään tekemistä C-koodia itse. Mitään tekemistä ohjelman toiminnallisesti, se on vain estetiikka. Joten miten teet tämän C on sinulle yleensä aloitat huomautuksia / *, ja lopetat huomautuksia * /. Ja jos olet todella peräaukon ja kiinnitän lajitella kuvia, sitten haluat laittaa paljon tähtiä, sinä tekisit pieni laatikko, kuten tämä. Mutta mikään, että asiat. Ainoa asia, että asiat on ensimmäinen ja viimeinen. Tämä on mitä kutsutaan monirivinen kommentti. Ja se on vain ihmisen yleissopimusta usein tähdet ja laatikko asioita, kuten tämä, jos sinulla on paljon vapaa-aikaa. Joten kun olet kirjoitettu joitakin huomautuksia, yleensä tule todellinen guts ohjelman. Tässä on meidän tuttu # include . Ja vain nopea, tämä on tarpeen tai ei tarpeen? YLEISÖ: tarpeen. DAVID MALAN: Joten se oikeastaan ​​ole tarpeen. Miksi, vaikka se ei ole välttämätöntä? Joten ei printf. Todellakin. Kaikki me teemme tässä ohjelmassa on matematiikka. Voin siis todellakin poistaa se. Joten sinun ei aina tarvitse sisältää mitään alkuun ohjelman. Joten yksinkertaistaa tätä hieman. Ja nyt huomaa, mitä tämä ohjelma tekee. Ei paljon kiinnostusta. int x = 1. No, mitä tämä tekee? No, muistelen henkinen malli ennen. Vasemmalla puolella tätä ilmaisua tekee mitä? Luo tilaa kokonaisluku. Joten kuinka paljon tilaa? No, meillä sattuu tiedämme nyt, että se on 32 bittiä. Aiemmin merkkijono oli teknisesti 32 bittiä, mutta siitä, että tulevaisuudessa. Mutta int on 32 bittiä. Joten tämä ilme vasemmalla täällä, int x vain sanoo hei käyttöjärjestelmä, anna minulle 32 bittiä RAM - muuten kutsutaan 4 tavua RAM - niin että voin laittaa kokonaisluku tuossa tilassa. Mitä kokonaisluku sinä haluat laittaa? No, vain numero 1. int y saa 2, ei täsmälleen sama asia, vaikka numero on suurempi, mitä sen suuruus. Määrä itsessään on edelleen vain 32 bittiä. Se on vain malli bittien on erilainen edustaa 1 vs. 2. int z sanoo nyt anna minulle toinen 32 bittiä, kutsuvat sitä z ja aseta summattu 1 ja 2 siellä. Niin, että nyt z on oletettavasti tallentamiseksi arvon 3, ja palata sitten 0. Nyt tämä ohjelma, se tee mitään kiinnostavaa? Joten se todellisuudessa ei tee mitään mielenkiintoista, joka merkityksessä, sillä miksi? Se tekee joitakin matematiikka. Mutta se ei palaa vastausta, oikea. Se palaa 0. Se ei tulosta vastausta. Joten tämä ohjelma on pohjimmiltaan arvoton, koska se seisoo nyt. Se tekee töitä. Se vie jonkin määrän sekuntia tai mikrosekuntia, jotta ajaa, mutta se ei oikeastaan ​​tee mitään käyttökelpoisia ihmisen. Joten oikeastaan ​​nyt avata math2, missä nyt olen todella tulostaa tuloksen. Joten tämäkin voidaan päätellä meidän aiempien esimerkkien. Jos haluan tehdä muutamia yksinkertaisia ​​matematiikka, int x = 1, y = 2. z on 1 plus 2 nyt. Mitä tämä tulee tulostaa ilmeisesti? Vain 3. Niin nopeasti järki tarkistaa. Saanen siirtyä tähän hakemistoon. Joten cd source1m. Anna minun mennä eteenpäin ja kirjoita tehdä math2. Ei virheilmoituksia tuli ulos, niin haluan juosta - ei a.out--haluan juosta math2. Enter. Ja todellakin, se tulostetaan 3. No katsotaanpa katsomaan muunnelmaa. Vuonna math3.c, meillä on nyt tämä esimerkki tästä. Joten tämä on tavallaan mielenkiintoista. Eli tässä yksi täällä, vastaus tulee saada 1 jaettuna 10, ja huomaat olen ilmoittanut sen float. Miksi haluan sen olevan float? No, se on murto. Se tulee olemaan todellinen määrä. Joten se tulee olemaan 0,1, toivottavasti - 10%, tässä tapauksessa. Ja mitä minä sitten haluat tulostaa? No, tämä vastaus. No, kammata nämä toisistaan ​​ensin. Joten vasemmalla puolella, julistaa kellua, kutsuvat sitä vastaa. Oikealla puolella, ei 1 jaettuna 10 ja esittää, että answer sisällä muuttuja. Nyt, tämä rivi näyttää hieman arvoituksellisesti. Mutta huomaa joitakin tuttuja piirteitä. % Tarkoittaa tässä tulee paikkamerkki. F tarkoittaa tässä Liukulukuarvo, vain todellinen numero, jotain desimaalipilkun. 0,2 tarkoittaa mitä? Jokainen tietää aiempaa kokemusta? Kahden desimaalin tarkkuudella. Joten emme ole nähnyt tämän ennenkin, mutta se on vain tapa käyttäessään hieman valvoa printf ja sanonta älä anna minulle 30 pistettä desimaalipilkun jälkeen, vaan anna minulle vain 2. Ja sitten mennään eteenpäin ja ajaa tätä. Joten tee matematiikka 3, ja nyt haluan juosta matematiikka 3, Enter. Ja se ei ole oikein. Olemme ilmeisesti kohdanneet ensimmäinen aito bugi. No, ehkä olen vain ole etsimässä tarpeeksi lähelle. Joten anna minun mennä tänne, ja haluan laittaa 20 desimaalin kohta paikoin. Ja haluan koota tämän, varmista math3, ajaa. Melko varmasti 1 jaettuna 10 ei 0. Joten mitä on tekeillä? No okei, joten oikeastaan ​​se ei ole tekemistä tämän kanssa. Se on hyvä ajatus. Tämä on oikeastaan ​​vain sattuma että teemme tätä. Mutta vain todistaa, että tämä ei ole sitä, minä palata jotain random. Älä tee tätä kotona, koska se on vain väärin. Mutta tee math3, anna minun ajaa se. Joten ei ole mitään tekemistä sen kanssa, mitä olen palaamassa, on vain tehtävä mitä olen tulostus. Mutta kuulin sen tänne. Mitä? YLEISÖ: Joten meidän täytyy kirjoittaa numerot divisioonan - DAVID MALAN: Okei hyvä. Joten meidän täytyy kirjoittaa numeroita osallistuvien jako täällä liukuluvuiksi itse. Joten ongelma tässä kuin ennen: C, jossa on paljon kieliä, on eri tietotyyppejä. Ja ne tietotyyppejä, esimerkiksi nämä täällä. Ja tietotyyppejä kysymys tässä, kun tyypin 1 ja sitten Tyyppi 10, ovat luultavasti mitä tietotyyppejä? Joten se on luultavasti int, eikö? Se ei todellakaan ole float koska ei ole mitään desimaalin piste tai mitään sellaista. Siis todella, olen int jaettu int. Niin mielenkiintoinen asia matematiikka ja tietokone on, että Jos teet jakolaskuja kokonaisluvuilla - 1 jaettuna 10, kyllä ​​on 0,1. Kuitenkin, kun olet jakamalla kokonaisluku, jonka kokonaisluku, vastaus on myös oltava kokonaisluku vain siksi, nyt. Ja mitä vaikutuksia silloin? No, jos vastaus on 1 jaettuna 10 vastaa 0,1, mikä tietokone tulee tehdä, on minulla ei ole aavistustakaan, miten edustavat 0,1, koska se on Liukulukuarvo, ei kokonaisluku, se tulee katkaista kaiken jälkeen desimaalipilkun ja juuri näyttää 0 alussa. Ja siitä, että se tulostetaan kuin liukuluku arvoa, se on vain esteettinen juttu. Tämä johtuu siitä olen pakottaa tietokone tulostaa tätä Liukulukuarvo. Ja todellakin olen ilmoittanut sen float, mutta matematiikka on tapahtuu täällä. Haluan siis todella korjata tämän yhdessä melko helposti. Miksi en vain tee 10,0 ja 1,0, vaikka Teknisesti voisin saada pois vain tekemässä yksi niistä. Nyt haluan mennä eteenpäin ja tehdä math3. Anna minun mennä eteenpäin ja nyt ajaa math3, Enter. Ja nyt, voi pojat. Nyt meillä on uusi ongelma kokonaan. Joten parempi, oikea, olemme lähempänä 0,1, mutta mikä on selvästi pielessä? Ellemme valehdellut teille vuosia, eikö? 1 jaettuna 10 ei oikeastaan ​​ole aivan 0,1, niin mitä todella tekeillä? No voit sellainen syy tällä loogisesti. Jos tietokoneessa on vain rajallinen määrä muistia alkaa kanssa, ja jopa tietokone vain käyttää 32 bittiä Liukulukuarvo, on aivan selvää, että äärellinen määrä bittejä, 32 tässä tapauksessa, kyllä, voit edustavat paljon tavaraa. Se oikeastaan ​​on neljä miljardia erilaista arvot voidaan edustettuina 32 bittiä, 2 32, mutta se on silti rajallinen. Eli ongelma on olemassa ääretön määrä todellisia numeroita, oikea. Jos annat minulle reaaliluku, voin aina löytää sinulle yhden hieman isompi, hieman vähemmän, vain hieman säätämistä numerot ovat desimaalipilkun jälkeen. Joten jos sinulla ei ole ääretön määrä bittejä, te voi mitenkään edustaa ääretön määrä reaalilukuja. Joten on tämä luontainen epätarkkuus tietokoneissa, ja Tämän saa kompastua koko ajan jopa yksinkertaisin ohjelmia kuten tämä. Mutta myös joitakin hyvin reaalimaailman ongelmia. Itse otetaanpa hetki vain vilkaista jotain, joka todella tapahtui todellisuudessa. Me katsella vain pari ensimmäistä minuuttia, ja sitten Lähetämme linkin verkossa. Mutta tämä on osoitus juuri voi mennä pieleen, melko rehellisesti, erittäin traagisella tavalla, kun nämä asiat eivät ole arvostaa tai vain me ihmiset tekevät virheitä, kun se tulee tällaisia ​​täytäntöönpanon yksityiskohdista nykyaikaisissa tietokoneissa. [VIDEO PLAYING] -Palaamme nyt engineering katastrofien moderneja ihmeitä. Tietokoneet. Olemme kaikki tulevat hyväksymään usein turhauttavaa ongelmia jotka menevät heidän kanssaan. Bugs, viruksia ja ohjelmistot glitches ovat pieniä hintoja maksaa mukavuutta. Mutta korkean teknologian ja nopean sotilaallisen ja avaruus ohjelmasovelluksia, pienin ongelma voi olla suurennettu osaksi katastrofi. Kesäkuun 4. päivänä 1996 tutkijat valmis käynnistämään miehittämätön Ariane 5 raketti. Se kantoi tieteellisiä satelliitteja suunniteltu määrittämään täsmällisesti, miten maan magneettikenttä vuorovaikutuksessa aurinkotuulien. Raketti rakennettiin Euroopan avaruusjärjestön ja nostetaan pois sen laitoksen rannikolla Ranskan Guyanassa. -Noin noin 37 sekunnin kuluttua lennon, he ensin huomasi jotain oli vialla, että suuttimet ovat kääntyvä tavalla ne todella pitäisi. Noin 40 sekunnin kuluttua lennon selvästi ajoneuvon oli pulassa, ja silloin he tekivät päätöksen tuhota sen. Valikoima turvallisuusvastuuhenkilölle valtava sisua painetaan painike, räjäytti raketti ennen kuin se voi tulla vaarantaa yleisen turvallisuuden. -Tämä oli neitsytmatkalla Ariane 5, ja sen tuho tapahtui, koska virhe upotettu raketti ohjelmisto. -Ongelma Ariane oli, että oli numero, joka vaatii 64 bittiä ilmaista, ja he halusivat muuttaa sitä on 16-bittinen numero. Ne olettaa, että määrä ei koskaan olemaan erittäin suuri, että useimmat näistä numeroa 64 bittinen numero oli 0s. He olivat väärässä. -Kyvyttömyys yhden ohjelmiston hyväksymään Tällainen numero, joka generoidaan toinen oli juureen epäonnistumisen. Ohjelmistokehitys oli tullut erittäin kalliiksi osa uutta teknologiaa. Ariane 4 raketti ollut hyvin onnistunut. Niin paljon ohjelmiston luotu sitä käytettiin myös Ariane-5. -Perusongelma oli, että Ariane 5 oli nopeampi, kiihtyi nopeammin. Ja ohjelmistoa ei ollut osuus siitä. -Tuhoaminen raketti oli valtava taloudellinen katastrofi, kaikki johtuu minuutin ohjelmiston virhe. Mutta tämä ei ollut ensimmäinen kerta tietojen muuntaminen ongelmat olivat vaivannut modernin ohjusteknologia. DAVID MALAN: Jätämme asian tähän. Mutta tämä on osoitus miten soveltaa myös joitakin Näiden alin taso yksityiskohtia että olemme alkaneet tutkia tänään. Joten vaikka saat hieman häiritsee ehkä joidenkin syntaksi ja arcaneness täällä, ymmärtää, että yli aikavälillä me keskitytään vain siihen, miten sovelletaan tällä on maailmoista kaukana CS. Tulemme näkemään sinut keskiviikkona.