[Powered by Google Translate] David J. MALAN: Selvä, tämä on CS50 ja tämä on loppuun Viikko 1, joten tutkimuksessa kortit ovat, ja kokonaismäärä luokkatoverit että sinulla on tänä vuonna 745. Ja olemme niin innoissamme on niin paljon teistä aikana Tämän lukukauden, mutta vaikka tämä kurssi on niin suuri, ymmärtää, että se on näitä asioita, kuten perjantai lounaita, kuten toimisto tuntia, 15-henkilö osastot, ja niin edelleen, että todella tarkoitus luoda tätä intiimimpi ympäristöön. Joten vaikka saatamme kerätä kerran tai kahdesti viikossa, täällä Sanders, tietävät, että paljon teidän kokemuksia tällä kurssilla tulee hyvin paljon on käytännön on rinnalla oman luokkatovereiden ja opetushenkilöstön. Joten tässä sitä mennään, Fall 2012. Niin muistaa, että viime kerta päättyi muistiin epätarkkuus, puhumme edustus numerot. Ja me katsoimme yhdessä epäonnistumisia tapahtui vuonna Todellisessa maailmassa, kun se tuli väärinkäsitys miten tietokoneet toimivat. No, tänään me uudelleen toinen niistä ideoita samoin kuin jatkamme keskustelua CS50 asiakkaan ja C ja mitä se merkitsee todella ohjelmaan. Mutta ensin vain pari pyörremyrsky ilmoituksia. Kohdat alkavat tänä sunnuntaina, ja ensimmäinen viikko on aina Hieman nopean alun, sillä saimme juuri sisään osiosi lomakkeita. Me teemme samoin, nyt, opetus kaverit, nyt että he tietävät niiden aikataulut, joten pyrimme, jonka Lauantaiaamuna, seurata mukana sinua § toimeksianto ja TF. Tiedä, että he alkavat seuraavana päivänä, sunnuntaina tai maanantaina tai tiistaina. Ja sitten me majoittaa osan muutokset, koska ne syntyvät vuonna lähipäivinä. Aukioloajat puolestaan ​​ovat jälleen tänään, kaksikymmentä 11, vuonna Annenberg sekä huomenna. Vaikka ongelma sarjat johtuvat yleensä torstaisin keskipäivällä, huomaat on enintään viisi myöhään päivää viettää, joten saatavuus virka torstaisin, jos te käteistä yhdessä näistä myöhään päivinä ja siten antaa jotain perjantaina. Saanen ehdottaa, että Scratch on yksi hauskempaa joukossa enemmän alasävy ongelma sarjaa. Ja haluaisin pitää kiinni niitä myöhään päivinä, strategisesti juuri varten myöhemmin lukukauden kun elämä alkaa tiellä kanssa midterms ja muihin luokkiin. Harjoitus 1, puolestaan ​​olisi lähetetty kurssin verkkosivuilla perjantaina, sillä tulee olemaan kurssin kävelymatka kautta video, joka kuvattiin 14:30 perjantaina ja sitten julkaistaan ​​verkossa seuraavana päivänä. Joten me päättyi maanantaina. Haluan - oikeastaan ​​yksi nuotti täältä. Koska luokat - koska Sanders ei tarkalleen lainata itse rento Q & edestakaisin hirveän hyvin, olemme aio yrittää jotain hieman uutta tänä vuonna, jolloin jos et ole mukava nostaa kättä tai juuri mieluummin ei nosta käsi huoneeseen näin, aiomme olla joitakin opetuksen stipendiaattien ja CA Miehistöä cs50.net/discuss aikana luento. Joten jos sinulla on kysymys, koska olin täysin epäselvä jotain tai olet utelias joitakin aihe, kokeile lähettämistä sinne. Merkitse se etiketissä Luento, ja me teemme parhaamme tänään ja ensi viikolla - we'll kokeilla tätä - ja alalta joko sähköisesti verkossa tai jos se tuntuu meidän pitäisi todella käsitellä se joukoittain, yksi opetus stipendiaattien tai CAS nostaa kätensä ja pyytää nimettömänä teidän puolesta. Joten annamme tämän kokeilla ja nähdä kuinka hyvin tämä toimii. Mutta kaikin mokomin, edelleen nostaa kädet kuin haluaisit. Joten viimeinen kerta paljasti, että 10% tai yksi kymmenesosa ei, on Itse asiassa, 0,1, kuten sinäkin opetettiin monta vuotta sitten. Se on itse asiassa arvo kuin tämä. Mutta se ei ole täysin totta, eikö? Meillä on vain tämä rajoitus tietokoneiden jolloin, jos on vain rajallinen määrä muistia, RAM-muistia, tai enemmän erityisesti bittiä, hyvin, on vain rajallinen määrä asioita voit edustaa. Esimerkiksi, jos meillä on numero nolla, ja haluamme edustavat binary, käyttäen kahdeksan bittiä, jossa vähän, jälleen, on nolla tai yksi, voisimme edustaa sitä 00000000. Ja se on vähän turhan monisanainen. Aivan kuten kymmenjärjestelmässä todellisessa maailmassa, Yleisesti, jos haluat kirjoittaa numero 123, me ihmiset luultavasti eivät kirjoita 00000123 vaikka toiminnallisesti, se täsmälleen sama numero. Me vain pudota etunollia, niin sanoakseni. Binary, voimme tehdä saman. Binary ja nolla, nolla ja binaarinen on vain nolla. Tarvitset vain yhden bitin. Mutta jälleen kerran, yleisin mittayksikkö maailmassa laskenta on tavun, kahdeksan bittiä. Vain koska yksi bitti, melko hyödytön. Kahdeksan bittiä, ei kovin hyödyllistä, mutta ainakin se on enemmän hyödyllisiä kuin yksi mittayksikkö. Joten kahdeksan bittiä, me tyypillisesti edustaa binary. Joten tässä meillä on numerot nolla, yksi, kaksi, ja sitten, kuten Nate teki meidän video viime keskiviikkona, voimme jatkaa counting jopa seitsemän, kahdeksan. Ja sitten jos käytämme enemmän bittejä, me voi laskea äärettömyyteen asti. Mutta jos on vain äärellinen määrä näitä bittejä, kuten on Jos missä tahansa tietokonejärjestelmässä, tai jopa ohjus järjestelmä, hyvin, olet todellakin vain rajallinen määrä tarkkuutta. Joten jos haluat edustaa numero kuin 0,1, hyvin, tietokone on valita. Ja jos se on vain äärellinen määrä numeroita se voi edustaa, se voi tulla lähelle 0,1 teille, mutta se ei voi välttämättä anna sinulle juuri haluamasi arvo. Ja tämä on vain yksi haasteista tietokoneiden, alla huppu, onneksi. Kun siirrymme kauemmas lukukauden nämä alemman tason yksityiskohdat tulee vähemmän kiinnostava, mutta varmasti soveltaa näitä ideoita voi olla hyvin reaalimaailman seurauksia. Yksi on vähän hauskaa. Kuinka moni teistä on nähnyt uskomattomia elokuvan Office Space? Jos et ole, se on sinun epävirallinen kotitehtäviä viikon. Mutta Toimistotilaa, kaverit siinä elokuvassa otetaan hyödyntää juuri tätä ajatusta, mutta ne todella minulle se toinen elokuva, saatat olla nähnyt, jopa vuosia ennen. Joten annan sinulle muutaman sekunnin traileri alkaen Tämä hämmästyttävä elokuva ja tämä on hyvin akateemisesti asiaan. [Toistaa MOVIE] Oikeastaan ​​olen edistetään. En voi ohjelmoida virus, joka repii, että laita pois big time. No, miten se toimii? Joka kerta siellä pankkisiirtona, jossa korko on laskettu, on olemassa tuhansia päivässä, tietokone päätyy nämä jakeet prosenttia. Mutta en aio tehdä mitään laitonta. Laiton? Samir, tämä on Amerikassa. Sinun vannon. Jos kukaan ei tiedä tästä, mutta meille, okei? Ei perheenjäseniä, ei tyttöystäviä, nobody. [Kuulumattomissa]. Älä huoli, ihminen, en kerro kenellekään myöskään. [Elokuva päättyy] Selvä, joten ehkä löysin tämän elokuvan paremmin kuin useimmat täällä, mutta joka tapauksessa, virus, että he olivat yrittää luoda - ja elokuvia, milloin he kutsuvat jotakin virus, se on yleensä ole oikeastaan ​​virus. Se on vain ohjelma, että joku kirjoitti jotain. Ja tässä tapauksessa, kaverit yrittivät kirjoittaa ohjelma että käytti heidän nimisen yhtiön Innotech n tietokonejärjestelmä, jossa tietokoneet myös, vaikka se on rahaa, ei välttämättä edustavat rahaa tarkasti. Joten vaikka saatat olla 0,10 dollaria tilillesi, 0,10, hyvin, tietokone saattaisi ajatella, että sinulla on näin monta senttiä pankkitilille. Ja niin, mitä nämä kaverit olivat aikeissa tehdä - ja he varasti idean, se kääntyy pois Superman III, jossa Richard Pryor teki saman - he olivat pääasiassa kirjoittaa ohjelmia, jotka pyrkivät ottamaan kaikki perään numerot, kaikki pieni, pieni, pieni jakeet penniä, ja siphoning ne pois, niin että ihmiset vain ajatus, oi, se on vain 0,10 dollaria siellä, mutta kaikki nämä perään numerot lopulta täsmää. Joten ihana idea ja se kostautui hulvattoman että Erityisesti elokuva. Mutta todellisessa maailmassa, myös olemassa paljon enemmän koskevat vaikutukset näitä puheita. Ja yksi syy sukeltaa alalla tietokoneen tiede on jälleen sen soveltuvuus ei insinööritieteiden yksin, vaan vain muilla aloilla. Joten tämä on yhtä hilpeä katsomaan mikä voi mennä pieleen, mutta Se on myös varsin silmien avautuminen, luulen, kun se tulee ymmärtämään kuinka läsnäoleva tekniikat, kuten tietokoneita ja ohjelmointia tai näinä päivinä, muodossa ohjelmiston. Joten tämä seuraava leike on vain noin kuusi minuuttia, jatkuu mihin jäimme viime kerralla, mutta voimme tarkastella hieman enemmän perusteellisesti yksi tällainen näistä asioista. Saanen siirtyä suoraan mihin jäimme, joka oli täällä. Ja meillä on toinen osa kaksi, noin kuusi minuuttia täältä. [PLAY MOVIE] Vaivannut modernin ohjusteknologia. Vuonna 1991, kun ensimmäinen Persianlahden sota, Patriot ohjus kokenut samantyyppinen numero conversion ongelma. Ja sen seurauksena 20 henkilöä, 20 amerikkalaista sotilasta sai surmansa ja noin 100 muuta haavoittui, kun Patriot, joka piti suojaamaan saapuvan Scuds, ei palo ohjus. Kun Irak hyökkäsi Kuwaitiin ja Amerikassa käynnisti Desert Storm vuoden 1991 alussa, Patriot ohjuspattereita olivat lähetettiin suojelemaan Saudi-Arabiassa ja Israelin Irakin Scud ohjus hyökkäyksiä. Patriot on Yhdysvaltain keskipitkän kantaman pinta-ilma järjestelmään, valmistanut Raytheon company. Koko Patriot torjuntahävittäjä itse, se on noin noin 20 metriä pitkä ja se painaa noin 2000 kiloa. Ja se harjoittaa taistelukärki noin - Mielestäni se on suunnilleen 150 kiloa. Ja taistelukärki itsessään on suuri räjähde, joka on fragmentit sen ympärille. Kotelo Warhead on suunniteltu toimimaan kuten Buckshot. Ohjukset kuljetetaan neljä prosenttia kontti ja ovat kuljettaa puoliperävaunu. Patriot ohjuspuolustusjärjestelmä ulottuu ainakin 20 vuotta. Se oli alun perin suunniteltu ilmatorjunnan ohjus ampua alas vihollisen lentokoneita, ensimmäisessä Persianlahden sodassa. Kun sodan tuli, armeija halusi käyttää sitä ampua alas Scuds, ei lentokoneita. Air Irakin Force ei ollut niin suuri ongelma, mutta armeija oli huolissaan Scuds. Ja niin he yrittivät päivittää Patriot. Kuuntelua vihollisen ohjuksia kulkee 5 Machin oli menossa on riittävän haastava. Mutta kun Patriot kiidätettiin käyttöön, armeija ei ollut tietoinen Irakin muutos, joka teki heidän Scuds lähes mahdotonta osua. Mitä tapahtui on Scuds jotka olivat tulossa oli epävakaa. He olivat huojuu. Syynä tähän oli irakilaisia, saadakseen 600 kilometriä ulos 300 km kantaman ohjusten otti paino pois edestä taistelukärjen ja tehty taistelukärki kevyempi. Joten nyt Patriot yrittää tulla milloin Scud, ja useimmat aika, valtaosa aikaa, se olisi kuin siivillä Scud. Kun Patriot verkonhaltijoiden toteutunut Patriot jäi tavoitteesta, ne räjäytettiin Patriot ydinpommi. Välttääksesi mahdollisen uhreja, sen annettiin pudota maahan. Se oli mitä useimmat ihmiset näkivät, yhtä iso tulipalloja taivaalla, ja ymmärtää väärin kuuntelevansa Scud ydinkärkien. Vaikka yötaivaalla, Patriots vaikutti tuhosivat Scuds kello Dhahran, ei voinut olla erehtykö sen suorituskykyä. Siellä Patriot tutkajärjestelmän kadottaa saapuvan Scud ja koskaan käynnistetty, koska että ohjelmisto virhe. Se oli israelilaisten joka ensimmäisenä huomasi, että enää Järjestelmän oli, sitä enemmän aikaa ero tuli, johtuen kellon upotettu järjestelmän tietokone. Noin kaksi viikkoa ennen tragedia Dhahran, Israelilaiset raportoitu puolustusministeriön että järjestelmä menettää aikaa. Noin kahdeksan tuntia käynnissä, he huomasivat, että järjestelmä oli tulossa huomattavasti epätarkempi. Puolustusministeriö vastasi kertomalla kaikki Patriot paristot jättää järjestelmät on pitkään. He eivät koskaan sanonut mitä pitkään oli - 8 tuntia, 10 tuntia, 1000 tuntia. Kukaan ei tiennyt. Patriot Akku asemapaikkanaan kasarmille Dhahran ja sen puutteellinen sisäisen kellon oli ollut yli 100 tuntia yönä helmikuun 25. päivä. On seurataan aika tarkkuudella noin sekunnin kymmenesosaan. Nyt kymmenesosa toinen mielenkiintoinen numero, koska sitä ei voida ilmaista binary, täsmälleen, mikä tarkoittaa, sitä ei voida ilmaista tarkasti missä tahansa moderni digitaalinen tietokone. On vaikea uskoa. Mutta käyttää tätä esimerkkinä. Otetaan numero kolmasosaa. Kolmasosa ei voida desimaaliasteina, tarkalleen. Kolmasosa on 0,333 jatkunut ääretön. Ei ole mitään keinoa tehdä sitä absoluuttinen tarkkuus desimaalin. Juuri samanlaista ongelmaa, joka tapahtui Patriot. Kauemmin järjestelmä juoksi, huonompi aika virhe tuli. Jälkeen 100 käyttötunnin virhe aika oli vain noin kolmasosa toisen. Mutta kannalta kohdistaminen ohjus kulkee MACH 5, se johti tracking error on yli 600 metriä. Olisi kohtalokas virhe sotilaat Dhahran. Mitä tapahtui on Scud käynnistää havaittiin varhaisvaroitus satelliitit ja he tiesivät, että Scud oli tulossa heidän yleinen suunta. He eivät tiedä, mistä se tuli. Se oli nyt jopa tutkan osa Patriot järjestelmä, puolustaa Dhahran, paikantaa ja seurata saapuvan vihollisen ohjuksia. Tutka oli hyvin älykäs. Sinun olisi todella seurata aseman Scud ja sitten ennustamaan, missä se todennäköisesti olisi seuraavan kerran tutka lähetti pulssi ulos. Se oli nimeltään alue portti. Sitten, kun Patriot päätä riittävästi aikaa on kulunut mennä takaisin tarkistamaan seuraavan sijainti Tämä havaittu esine, se menee takaisin. Joten kun se meni takaisin väärään paikkaan, sitten se ei näe mitään vastustaa, ja se päättää, että ei ole vastusta. Se oli väärä tunnistus ja putoaa radan. Tuleva Scud katosi tutkan. Ja sekuntia myöhemmin se törmäsi kasarmeja. Scud tappoi 28 ja oli viimeinen potkut aikana Ensimmäisen Persianlahden sodan. Traagisesti, päivitetty ohjelmisto saapui Dhahran seuraavana päivänä. Ja ohjelmiston vika oli korjattu, sulkemalla yhden luvun levoton historia Patriot ohjus. Patriot on oikeastaan ​​lyhenne sanoista "vaiheittain array seuranta Leikkaus Target. " Selvä, niin paljon surullinen tulos ei ole aivan ymmärtää tätä maailmaa. Ja nouto, todella, mistä elokuva on, että ratkaisu siellä oli käynnistä ohjuspuolustusjärjestelmä aina silloin tällöin. Ja niin taas yksi tavoitteista tämän kurssin, varmasti on nöyrempiä mittakaavassa kuin näissä sovelluksissa, on todella avoin kaikkien silmissä tarkalleen miten edetä valmistuskoneet tehdä mitä haluat heidän tekevän ja miten mennä noin tekee, että oikein, vaikka matkan varrella tehdä se hyvin, tyylikkäästi, ja niin edelleen. Ja niin tänään, katsotaanpa sukeltaa hieman enemmän, mutta joten emme mene liian nopeasti, etenkin niille vähemmän mukava, mutta myös jotta voimme säilyttää edun nämä mukavampaa, mennään vain nopeasti alkaa hieman ja kertaus näitä ajatuksia. Ja vielä, kysy pois, niin henkilökohtaisesti tai verkossa, jos sinulla on kysymyksiä, joten voimme pitää kaikki samalla sivulla. Joten CS50 Appliance, nopea askel taaksepäin, on mitä, omin sanoin? Se on OK, jos sinulla ei ole aavistustakaan, mitä nuo sanat saattavat olla vielä. [Kuulumattomissa] Okei, joten yleinen käyttöliittymä - että me kaikki voimme jakaa. Ehdottomasti. Joten voisimme esimerkiksi kertoa mennä joitakin verkkosivuilla ladata tämän ohjelmiston Mac OS. Lataa ohjelma Windows, määritä vuonna tällä tavalla ja että. Mutta todellisuus on sitten joutunut lukemattomia teknisiä tukikysymykset. Ja myös näinä päivinä, paljon siitä, mitä tehdään palvelimen puolella, maailman tietojenkäsittely, varsinkin kun se tulee Web-kehitys ja web-pohjaisia ​​sovelluksia, on oikeastaan varsin usein tehty Unix-tai Linux-tietokoneita, toisin kuin Mac-tai Windows-PC. Joten joukossa upsides, sitten, käyttämällä tätä asia, jota kutsutaan CS50 Appliance on meidän kaikkien täytyy samassa ympäristössä. Joten kaikki ovat samalla sivulla mitä laitteita sinulla tuli kampuksella, mutta myös se leikittelevät täsmälleen samassa ympäristössä, joka aiot käyttää kohti lukukauden lopussa sekä web-kehitys, sekä tulevaisuutta reaalimaailman sovelluksia sen. Joten konkreettisemmin, CS50 Appliance on ilmainen pala ohjelmisto, jonka avulla voit suorittaa toisen käyttöjärjestelmän, Linux, tässä tapauksessa omalle koneelle, ja ikkunan. Nyt et voi vain ladata laitetta. Tarvitset ohjelman, joka toistaa tai käytä laitetta. Ja että ohjelmisto on yleisesti tunnettu hypervisor. Hypervisor tulevat tuotteiden muodossa, kuten VMware, Virtual Box, Parallels. Kaikenlaisia ​​yritykset tekevät ohjelmistoja sekä vapaa ja kaupallinen, samankaltaisia. Mitä näet, Harjoitus 1 on ohjeet saada ilmainen ohjelmisto, jolla voidaan ajaa CS50 Appliance. Ja kun et, sinulla on, on ikkuna Macin tai PC, työpöytäympäristö, joka näyttää aivan kuten tämä, jossa se on Käynnistä-valikon kaltainen asia näytön vasemmassa alakulmassa. Se on Home kansioon tai kotihakemisto, vasemmassa yläkulmassa siellä, roskakori, ja niin edelleen. Joten me erottaa toisistaan ​​välttämättömiä täsmennyksiä mennään. Mutta nyt aloitamme sukeltaa C. Eli C on tällä ohjelmointikieli, hengeltään samanlaisia Scratch, mutta paljon vähemmän graafinen, mutta ironista kyllä, paljon voimakkaampi kun saat taju kanssa. Joten C, voimme kirjoittaa ohjelmia kirjoittamalla lähdekoodi, joka on Tämä Englanti kaltainen syntaksi, samanlainen sukat osoitus siitä, että teimme viime kerralla, jonka avulla voit ilmaista itseäsi melko tarkasti, jos arcanely, tietokoneeseen. Millainen tuoteohjelmiston sinä todella tarvitset kirjoittaa ohjelmia kielellä kuten C, perustuvat keskustelu maanantaina? [Kuulumattomissa] OK, sinun tarvitsee vain tekstieditorilla. Sinun ei tarvitse mitään erityisiä ohjelmistoja sinänsä kirjoittaa ohjelmia. Tarvitset vain tekstieditori kuten Notepad, Windows, TeXturi Mac, tai jotain nimeltään gedit, maailman Linux, jonka käytämme täällä. Ja se on siinä, kirjoittaa ohjelmia. Mutta kirjoitus on vain puolet yhtälöstä. Sitten on käyttää niitä. Mutta jotta ajaa ohjelmia - et voi suorittaa lähdekoodia. Sinulla sen sijaan on tehtävä mitä se ensin? Joo. DAVID J. MALAN: Sinun kääntää sen. Ja joku muu, kokoamiseen lähdekoodi tarkoittaa - [Kuulumattomissa] DAVID J. MALAN: Aivan. Kääntäminen se nollia ja ykkösiä. Koska me kaikki, näinä päivinä, joiden tietokoneet ovat suorittimet, lähes kaikki, jotka on valmistettu niminen yhtiö Intel, ja Intel Inside, tarkoittaa, että tämä aivojen sisäpuolelle tietokone, joka tunnetaan nimellä CPU. Ja yksi niistä asioista, että aivot tekee on, se tietää miten ymmärtää malleja nollia ja ykkösiä. Se tietää mitä mallia bittien edustaa lisäksi, mitä malli edustaa subtractions, mikä malli bittiä edustavat tulostus, ja luoda kuultavan äänen. Niin lyhyt, CPU, joka on kytketty käyttöjärjestelmän kanssa, joka on pala ohjelmisto, joka toimii päälle CPU, niin sanoakseni. Yhdessä nämä kaksi osaa ajaa ohjelmia me ihmiset kirjoittaa. Joten jos menen CS50 Appliance täällä, minun täytyy avata ylös tekstieditorissa ja voin käyttää tätä parin tavoin. Voin joko mennä Menu, ohjelmointi, ja sitten voin valita - Ehei, ei se valikko. Voin mennä Tarvikkeet / gedit tästä avataksesi pikku tekstieditorilla. Tai yksinkertaisemmin, voin napsauttaa tätä pientä kuvaketta alareunassa vasemmassa alakulmassa. Ja nyt saan tämän ympäristön tänne. Ihan mieleen yksinkertainen tekstieditori, vain yksi tai kaksi eroja. Vuonna alkuun, missä kursori vilkkuu nyt, tämä on silloin Voin aloittaa kirjallisesti minun koodi. Pohjaan on tämä asia sanottu pääteikkuna. Ja millaisia ​​asioita voin tehdä tässä ns pääteikkunassa? [Kuulumattomissa] Okei, joten minä ajaa komentoja. Ja jotkut komennot me juoksi maanantaina olivat hieman arvoituksellinen aluksi, mutta ls-luettelosta cd muutoksen hakemistoon, rm varten poista. Joten se on tavallaan vanhan koulukunnan tapa selaamisesta tietokone, käyttäen vain näppäimistön ja tekstuaalinen komentoja, ja ei, yleensä, hiiren avulla. Mutta näemme, ennen pitkää, tämä todella antaa meille hieman enemmän tehoa ja hieman enemmän tarkkuutta, jolla on ilmaista itseämme. Ja sitten tänne vasemmalle, olemme juuri menossa nähdä, kun alamme kirjallisesti ohjelmisto, pieni yhteenveto ohjelma, olemme kirjoittaneet ylhäällä vasemmalla. Mutta me näemme, että vielä ennen pitkää. Joten jotain melko yksinkertainen täällä. Sallikaa minun ensin mennä eteenpäin ja mene Tiedosto, Tallenna ja olen juuri menossa klikkaa jharvard täällä yli vasemmalla, ja jharvard on jälleen nimi kotini kansion, minun henkilökohtaisia ​​tiedostoja, minulle, nyt John Harvard, kuten te kaikki pian John Harvardin tässä ympäristössä. Hän sai tämän kotihakemisto, Omat tiedostot ja niin edelleen, että haluan pelastaa, nyt, tämän tiedoston sisään Joten aion kutsua sitä hello.c. Sitten menen eteenpäin ja valitse Tallenna, ja mitä nyt olen tässä välilehti kutsutaan hello.c, niin paljon kuin muunlaista editori. Joten nyt haluan mennä eteenpäin ja alkaa kirjoittaa ohjelman. int main (void). Ja sitten tein viimeisen kerran, printf, tulostus alustettu, ("Hei, maailma!" );. Lähes täydellinen. Mutta minulta puuttuu pari yksityiskohtia. Mitä puuttuu tästä ohjelmasta että olen todella tarvitsevat se todella koota? Joo. [Kuulumattomissa]? DAVID J. MALAN: Joo, niin minun täytyy sisällyttää standardin I / O-kirjasto. Joten tämä mentävä edellä main, joten olen juuri menossa tehdä joitakin tilaa siellä. Ja aion tehdä # include . Ja huomaa kulmikas suluissa siellä. Ja kuten syrjään, gedit on pieni käyttäjäystävällinen, jos joskus hieman sekava, koska se yrittää auttaa silmät huomaa mitä on linjassa sen kanssa, mitä. Niin että minun kohdistin on aivan tämän kulma kiinnike, huomaa kuinka se korostaa muiden kulmikas kiinnike plus tämä. Ja juuri kiinnittää huomioni siihen, että olen on symmetria. Ja symmetria ohjelmointi on yleensä hyvä asia. Samoin jos voin siirtää kohdistimen loppuun, huomaa, miten aaltosulkeita riviin osoittamaan, kyllä, olen avaa jokin ja suljettu, niin sanotusti. Selvä, ja voin tehdä yksi asia. Se ei ole välttämätöntä, mutta hyvä käytäntö, eli palauttaa 0. Ja return 0 mitäkin meille täällä? Tai merkitsee mitä? [Kuulumattomissa] DAVID J. MALAN: Mutta mitään vikaa. Ja suoraan sanottuna on vaikea paljon mennä pieleen ohjelmoida tämän lyhyen. Joten olen juuri parhaillaan Super nimenomaisesti, että kaikki on hyvin. Minä, ihminen, kun suoritat tämän ohjelman, luultavasti koskaan nähdä, että 0. Yleensä nämä numerot ovat palanneet tärkeimmistä vain kasvattaa päänsä ihmisille, kun jokin menee pieleen. Ja saat vähän pop up sanoa järjestelmä virhe, yksi, kaksi, kolme, tai mitä tahansa määrä oli se, että oli palannut. Joten jotain muuta vikaa? [Kuulumattomissa] DAVID J. MALAN: Eli tämä ei ole niinkään toiminnallinen virhe mutta esteettinen yksi. Minun pitäisi varmaan laittaa rivinvaihtomerkki siellä lopussa merkkijonon, jotta me todella siirtää osoitinta seuraavalle riville, ja ohjelma vain näyttää hieman kauniimpi. Joten nyt haluan mennä alas minun pääteikkunassa ja zoom takaisin sisään Ja tämä juttu täällä, sitä kutsutaan viipymättä. Se vain muistuttaa minulle, kuka olen, jharvard @ laite, jossa Laite on nimi tietokoneen olen. Suluissa on tämä tilde, koukero symboli, joka edustaa mitä? YLEISÖ: kotihakemisto. DAVID J. MALAN: kotihakemisto. Joten se on vain lyhennetty merkintätapa sanomalla olet henkilökohtainen kansio, johon kaikki tiedostot menevät oletuksena. Joten nyt, täällä, voin kirjoittaa ls-luettelosta. Ja ainoa asia näen täällä tällä hetkellä hello.c. Ja se on hyvä, koska olen juuri kirjoitin tämän. Joten anna minun mennä eteenpäin ja tehdä tee hei. Ja huomaa En kirjoittamalla tee hello.c. Sen sijaan olen vain kirjoittamalla pohjan tiedoston nimeä, hei. Ja tee, kuten näimme maanantaina, tulee vain päätellä, että haluan . C-tiedoston. Joten nyt olen kirjoittanut tehdä hei. Nyt näen tämän melko pitkä komento ja jatkuu nähdä tämä uudestaan ​​ja uudestaan. Mutta selvää, clang, sana joka vain ilmestyi, se todellinen kääntäjä. Tee vain rakentaa apuohjelma. Se on vain entistä käyttäjäystävällisempiä ohjelma säästää minua, pitkällä aikavälillä, saamasta kirjoittaa ulos uskomattoman tylsiä pitkä komennot kuten että yksi. Joten voisit ajaa clang manuaalisesti. Voisit kirjoittaa kaiken tuon manuaalisesti. Vain saa erittäin tylsiä. Ja niin tekevät on vain ohjelma, joka yksinkertaistaa elämäämme ja toimii monimutkaisempia komentoja meille. Selvä, joten nyt mitä tiedostoa minun tulisi minun hakemistossa? Ei vain hello.c, vaan myös hei. Joten jos haluan ajaa Hei, muistaa, että sanon piste slash, missä piste tarkoittaa mennä nykyisen kansion, missä ovat, ja suorita sitten ohjelma nimeltä Hei, ja todellakin, nyt, Minulla on Hello world. Selvä, kysyttävää työnkulun tai syntaksia mitä me juuri teimme? Selvä, joten otetaanpa asioita notch uudelleen. Joten tämä oli underwhelming vain kirjoittaa ohjelma, että vain koskaan sano hei, maailma. Niinpä muutimme sen, maanantaina sanoa, hei, David. Se on hieman enemmän henkilökohtaista, mutta aivan yhtä kovaa koodattu ensimmäinen versio. Joten ei kaikki pakottavia. Mutta on olemassa, C, toimii varmasti lisäksi Tulosta, toimintoja, joiden avulla saat käyttäjän syötettä. Ja miten me teimme tämän, toinen päivä, oli seuraava. Ennen kuin itse tulostaa jotain, Sain ensin jotain käyttäjältä. Joten anna minun tehdä tätä uudelleen. String s, missä s on vain mielivaltainen nimi, tähän, string, vastaa GetString. Joten mitä GetString? Se ilmeisesti saa merkkijonon, joka perustuu sen nimeä. Mutta mitä se on, enemmän teknisesti? Se on funktio. Joten on toiminto, joka ei tule C sinänsä. CS50 henkilökunta kirjoitti tämän. Ja niin käyttää tätä, et voi vain sisällyttää stdio.h, Tarvitset myös sisällyttää mitä? Joo. Joten cs50.h, joka on vain tiedosto kirjoitimme muutamia vuosia sitten. Asensimme sen laitteen sinulle rinnalla kaikki tavalliset tiedostot. Ja niin näiden muutaman ensimmäisen viikon luokkaa, käytämme tämä vain yksinkertaistaa tekemässä very basic asioita, kuten saada käyttäjä syöttää. Koska kuten tulemme näkemään muutaman viikon päästä käyttäjän panos kieli kuin C on oikeastaan ​​yllättävän monimutkainen, varsinkin koska et tiedä etukäteen, yleensä, miten paljon tavaraa käyttäjä aikoo kirjoittaa tuumaa Ja kun et tiedä, kuinka paljon dataa odottaa, et tietää kuinka paljon muistia jakaa. Ja jos todella on vastineensa käyttäjä, joka yrittää murtautua järjestelmään, kaataa tietokoneen, hyvin, yleensä ensimmäinen tapa hyökkäys on, aivan kuten tein Maanantai, kirjoita koko pitkä jono satunnaisia ​​merkkejä, Enter, ja mitä rikkoo. Koska yleensä, jos ohjelma taukoja, että vihjaa turvallisuuden puute, mahdollisesti. Se varmasti vihjaa sinua, ohjelmoija, joka on tehnyt virhe, mutta vaarallisesti, olet ehkä tehnyt turvallisuuteen liittyviä virhe, ja yleensä näemme, että näin koneet ovat vaarassa tänä päivänä, niin maailmassa web ja ohjelmat komentoriviltä, ​​kuten tämä. Selvä. Joten string s vastaa GetString. Joten konkreettisemmin nyt, mitä rivillä 6 tehdä täällä? Joten toiminnon oikealla saa merkkijonon, ottaa kuinka monta argumenttia? Okei. Niin mikään. Vähän järki tarkistaa. Argumentti, jälleen, on vain tulo funktion muuttamaan sen oletusasetus jollakin tavalla. Mutta tässä tapauksessa en halua muuttaa käyttäytymistä GetString. Halusin vain saada merkkijono. Joten laitoin mitään suluissa, ja sitten laitoin puolipiste demarking loppuun riviä koodia. Nyt, yhtäsuuruusmerkki ei tarkoita yhtä, sinänsä. Se tarkoittaa tehtävän, mikä tarkoittaa laittaa mitä saa ulos oikealla sisäpuolella mitä on vasemmalla. Joten vasemmalla, sanomme, että meillä on julistettu merkkijono kutsutaan s. Ja tarkemmin sanottuna, olemme jaettu muisti sisällä jonka laitamme bitit, joka edustaa sekvenssi merkkiä. Mutta tänään, olemme varanneet tai julistettu merkkijono. Selvä. Joten nyt kun olen tehnyt tämän, haluan kytkeä arvon s, ei ole arvoa David. Joten tämä on väärin, miksi? Joten tämä on vain kirjaimellisesti kovakoodatuilla s. On sanoa "Hei, s", joka ei ole sitä mitä haluan. Joten en voi tehdä tätä. Prosenttimerkki on paikkamerkki, mutta nyt minun täytyy erittyä tulostaa toisesta väitteestä. Muistutan, että argumentit toiminnot erotetaan pilkut, joten seuraava pilkku tässä esitin tämän jälkeen kirjeen s. Ja tässä yhteydessä nyt s on muuttuja, ja printf, saatuaan nämä kaksi tuloa - merkkijono vasemmalla ja muuttujan nimi s oikealla - se kytke jälkimmäinen entiseen meille, ja vain tulostaa kiva kaunis merkkijono sisältää mitä se on, että me kirjoitetaan sisään Joten kokeile tätä. Menossa eteenpäin ja loitontaa, selkä minun pääteikkuna. Lähennä alareunassa täällä. Kirjoittamalla tekevät Hei. Clang on ilmeisesti uusintana. Aion kirjoittaa. / Hei, Anna. Mikään ei tunnu tapahtuvan vielä, mutta se on tällä kehotteeseen että voin kirjoittaa jotain Nate, Anna, ja nyt meillä on Hei, Nate. Ja voin tehdä sen uudelleen Rob, ja niin edelleen. Joten toivottavasti nyt tämän ohjelman käyttäytyy aion. Nyt ei kaikki käyttäjäystävällinen. Minulla ei ole aavistustakaan, mitä on odotettavissa minua. Niinpä voimme varmasti puhdistaa tähän asti hieman. Saanen palata tänne, ja eikä vain sukellus ja pyytää käyttäjältä merkkijonon, haluan nimenomaan sanoa käyttäjä mitä olen odottanut. So printf ("Anna merkkijono:" ); Joten ei muuttujia täällä. Ei prosenttia merkkejä. Aivan yksinkertaista Englanti lause. Sallikaa minun nyt mennä pohjaan täällä ja uusintana minun ohjelma. Mutta mikään ei tunnu muuttuneen. Miksi? Minun täytyy kääntää se. Niin helppo virhe tehdä. Mutta sinun täytyy ei vain tallentaa tiedoston, mutta kääntää ohjelman. Ja niin jos uusinnassa tekevät Hei, nyt clang toimii. Nyt voin ajaa. / Hello. Ja nyt näen "Anna merkkijono:". Okei. Nyt se on hieman käyttäjäystävällisempi. Nate, Anna, hei, Nate. No, yritetään tätä uudelleen ja alkaa ajatella noin rajatapauksissa. Eli aivan kuten Scratch, olet rohkaissut tai ollaan kannustetaan spec sellaista miettiä mitä voisi mennä väärin, jos et ennakoida kaikkea käyttäjä voisi tehdä. Vikoja, siis voisi seurata. Joten anna merkkijono - mitä nurkassa tässä tapauksessa? Mikä skenaario, että minä, ohjelmoija, ei ehkä odotettavissa? Joo. Okei. Joten mitä jos en kirjoita numero näin? Selvä. Niin se toimii edelleen. Gramatically ei ole mitään järkeä. Mutta ainakin ohjelma toimii. Mikä on toinen kulma tapauksessa? Jotain en odottanut. Niin? Okei. Joten voisimme tehdä jotain todella, todella iso määrä. Tehdäänpä tämä täällä. Saanen loitontaa toinen, haluan korostaa. Ei voi kopioida ja liittää tänne. Selvä. Joten en voi kopioida ja liittää tämän pääteikkunaa niin me vain simuloida sitä. Saanen loitontaa, menossa kääri. En aio tehdä tätä liian pitkään, koska se ei todella rikkoa tässä ohjelmassa. Mutta se voisi. Enter. Mutta se ei ole. Selvä. Mutta se on aito nurkkaan tapaus. Ja ainoa syy, että käyttäytyi oikein, niin puhua, johtuu siitä, että CS50 toiminto GetString on oikeastaan suunnitellut alla huppu, kuten tulemme näkemään muutaman viikon, automaattisesti jakaa enemmän ja enemmän muistia, enemmän ja enemmän muisti käyttöjärjestelmästä, kun se tajuaa, wow, olet todella kirjoittanut jotain melko pitkä. Nyt tämä on vähän valkoinen valhe. Jos me todella pysähtyi jo jonkin aikaa, ja olen kirjoittanut jotain 5000000000 merkkiä näppäimistöllä täällä, tai oikeastaan ​​osuma copy-paste melko vähän, me hyvin mahdollisesti saattaa aiheuttaa ohjelman kaatumisen. Hieman vaikeampi simuloida että äärellinen aikaa. Mikä on toinen nurkka tapauksessa voisimme kokeilla? Niin? Joo. Joten miksi emme vastaa mitään? Joten meillä on todellakin ryhtyä joihinkin toimiin, koska muuten Ohjelman tulee istua siellä vilkkuu koko päivän. Mutta jos minä vain Enter - OK, nyt näyttää silti väärässä. Eikö kaatua, mutta ehkä siellä on nyt tilaisuus alkaa toteuttaa tiukempaa ohjelmaa että todella tarkastaa. Ja jos merkkijono, lause, sana, jonka minä kirjoitettu on pituus 0, hyvin, ehkä minun pitäisi huutaa käyttäjä, tai kertoa hänelle syöttää merkkijonon uudelleen, jotta me todella saada mitä näyttää oikeaa käyttäytymistä eikä juuri täydellinen valvonta omasta puolestani. Kysymys takana? Desimaaliluku. Joten voisimme kokeilla sekin. 1,10000005. Tuntuu että menee vain toimivat todella hyvin. Ja se todella odotetaan. Vaikka olisimme kirjoittanut, että numero on, tai isompi numero aiemmin, ymmärtää, että kun olemme kirjoitat käyttäjä tulo-ja käytämme GetString toimintoa, ei väliä, jos olen kirjoittamalla näyttää numero. Muistutan, että mukaan ASCII, kaiken sinun Näppäimistössä on numeerinen arvo, joka voidaan kuvata merkki, char. Joten tässä tapauksessa, vaikka voisin kirjoittaa numero, tietokone tulee ajatella sitä, niin sanotusti, koska string - jotain, joka näyttää useita, mutta on ei itse asiassa useita. Mutta se on oikeastaan ​​täydellinen SEGUE, koska nyt voimme todella siirtyminen kirjallisesti ohjelmia käyttää muita tietotyyppejä. Joten lisäksi käyttää merkkiä, tai pikemminkin, lisäksi käyttämällä jouset, ymmärrettävä, että meillä on muita tietotyyppejä C sekä muita kieliä. Char, kuten nimestä voi päätellä, on vain yksi merkki. Koho on Liukulukuarvo, ja se on vain hieno tapa sanoa reaaliluku - jotain, joka on desimaaliluku kohta sen joitakin numeroita vasemmalle ja / tai oikealle. Int on kokonaisluku, joka on vain numero kuin 123. Ja nyt mielenkiintoisesti ovat asioita, kuten kaksinkertainen. Mitä sanomme kaksinkertainen viime kerralla? Se on 64, oikea. Joten taas tyypillisesti float on 32-bittinen - niin se on tämä pitkä muisti, se käyttää 32 nollia ja ykkösiä ja edustavat arvoja - kaksinkertainen on kirjaimellisesti kaksinkertainen, mikä tarkoittaa, että voit joko edustaa isompia numeroita tai voit sen tarkempia numeroita. Joten voit olla enemmän numeroita desimaalipilkun jälkeen, mutta kuten kaveri sanoi videon, vaikka jotain yksinkertaista käsitteellisesti kuten kolmasosa ei voi edustaa nimenomaan tietokone, koska lopulta te loppuu bittiä ja Siksi voit vain tehdä .33333333 niin monta kertaa, jolloin sinun tarvitsee vain sanoa, että olen poissa edustuksen tila, minun täytyy vain kutsua sitä päivä ja edustaa sitä hieman epätarkasti tuosta. Ja pitkä pitkä - tyhmä nimi, mutta se on koska siellä tietotyyppi tunnetaan kauan C, joka sattumoisin on usein 32 bittiä, aivan kuten int on 32 bittiä, mutta pitkä pitkä yleensä 64 bittiä. Niin se vain tarkoittaa, että voit edustaa isompi numerot kuin tämä. Selvä. Joten jos todella haluat aloittaa edustavat asioita, me ehkä kehittyneempiä tyyppejä, ja Siksi meillä on merkkijono. Joten CS50 kirjastossa, että tiedosto nimeltä cs50.h, olemme itse julisti tietotyyppi, niin sanotusti, kutsutaan merkkijono, mutta merkkijono ei ole olemassakaan. Tämä on jälleen yksi näistä kerroksista aiomme kuoria takaisin viikon tai kaksi ja heitä se pois, ja oikeastaan katso alla huppu, mitä merkkijono oikeastaan ​​on, ja miten se oli. Olemme myös menossa katsomaan Boolean-arvot. Joten mikä oli bool yhteydessä Scratch? Se on tosi tai epätosi. Joten se on vain arvo, joka on tosi tai epätosi, päälle tai pois päältä, 1 tai 0, mutta haluat tarkastella maailmaa. Joten C, kiitos CS50 kirjasto, joka puolestaan sisältää toisen kirjaston alla huppu, olemme pääsy tietotyyppi kutsutaan bool, joka kirjaimellisesti avulla voimme määrittää arvot true tai false asioita ohjelmassa. Joten mene eteenpäin tänne ja kirjoittaa pieni ohjelma, joka tekee jotain johon numeroita sijaan. Joten anna minun mennä takaisin CS50 Appliance, anna minun mennä eteenpäin ja Luo uusi tiedosto tähän nimi - Sanotaan vain jotain yksinkertaista, kuten math.c. Selvä. Ja nyt mene ylös minun ohjelma, olen aikoo tehdä tavallista - # Include , jotta voin käyttää printf, int main (void) - tulemme takaisin, lopulta, mitä int tarkoittaa täällä, mitä void tarkoittaa tässä, mutta nyt vain tietää, että joudut ohjelmia kuten tämä. Nyt aion mennä eteenpäin ja sanoa jotain hieman Eri - printf ("Anna minulle numero:" );. Sitten aion tehdä int n = GetInt, koska se Osoittautuu GetInt on toinen funktio CS50 kirjastossa lisäksi GetString. Ja nyt aion tehdä jotain typerää, kuten "kiitos on% d ", desimaali kokonaisluku, ja sitten pilkku n ja palaa sitten 0. Joten jälleen, palauttaa 0 ei ole mitään tekemistä numero olen pyytää käyttäjää. Vain merkitsee lopussa kaikki, oletettavasti, on hyvin. Joten anna minun mennä alas minun pääteikkuna täällä. Saanen kirjoita tehdä matematiikkaa, kirjoita. Ja jotain on vialla. Tee matematiikka ei toimi. Tässä on ensimmäinen meidän virheilmoituksia. Miksi? Hieman arvoituksellinen, mutta - Joo. Niin cs50.h. Joten jälleen, varsinkin aikaisin, voit kirjoittaa ensimmäinen ohjelma PSET 1 kohdassa, on virka-ja rehellisesti, se tulee olemaan valtava joskus mitä nämä asiat todella sanovat. Mutta huomaat nopeasti ne alkavat laskea segmentteihin, jolloin tämä tarkoittaa, että olet jättänyt pois yhden ja # sisältyvät yläosassa tiedoston. Ja clang, kääntäjä, on ilmoittaa teille tämän sanoen melko fancifully, implisiittinen ilmoitus toiminto GetInt on virheellinen. Selvä. Joten mitä se tarkoittaa? Se vain tarkoittaa, olet epäsuorasti ilmoitettu GetInt vuonna mielessä, että et ole erikseen ilmoittanut sitä. Nimenomaisesti julistaa int, sinun täytyy opettaa Clang että se on olemassa. Ja hyvin yksinkertainen ratkaisu, joka on opettaa sitä lukien tämä muu tiedosto, cs50.h klo alkuun tiedoston. Koska kirjaimellisesti, mitä # include ei se kertoo clang melko paljon mennä etsimään tiedosto nimeltä cs50.h, kopioida, liitä se automaattisesti alkuun minun ohjelma minulle, ja sitten muuntaa lähdekoodin nollia ja ykkösiä. Mutta se olisi tietenkin erittäin ikävä, jos me ihmiset olisi mennä kopioiminen ja liittäminen näitä suuria tiedostoja koko ajan, joten # include juuri tämä kaikki automaattisesti ilman muddying minun koodi jonkun kanssa kirjastossa. Ja kirjasto on vain yksi tiedosto, joka sisältää toimintoja ja muun muassa, että joku muu on kirjoittanut, että olemme Hyödyntämällä meidän vuoksemme. Selvä. Yritetään uudestaan. Tee matematiikka. Enter. Hyvä. Niin, että näyttää toimineen. Sallikaa minun nyt ajaa matematiikka;. / Math. Anna antaa minulle numero, 123. Kiitos 123. Nyt yritetään toista kulma tapaus. Merkkijono on melko antelias, koska merkkijono voi olla mitä tahansa. Voi näyttää numerot, näyttävät merkkejä, näyttävät sanoja. Mutta int on int. Joten nyt jos olen vaikea käyttäjä, ja se sanoo "Anna minulle numero, "mitä jos yritän tehdä jotain 0,1? No, se on numero, ja se on sopusoinnussa kielioppi käytin täällä, mutta alla huppu, olen of kurssille toimintoa GetInt. Joten mitä tapahtuu. Anna, yritä uudelleen. Selvä. Saanen olla vaikeaa ja painaa Enter uudelleen. Anna, Anna. Joten nyt näyttää siltä, ​​että GetInt on hieman voimakas kuin GetString. Me, henkilöstö, toteutetaan siten, että jos huomaamme et ole antanut meille int - ja int on desimaaliluku sisältää nollia, niitä, kaksittain, kolmosta, nelosta, vitosta, kuutosta, seiskat, kasia tai ysiä. Ja siinä se. Ei desimaaleja, ei merkkiä, ei välimerkkejä. Näyttää siltä, ​​että meidän on tehtävä yhteistyötä. Sallikaa minun yrittää neljä, viisi, kuusi, ja joka saa minut läpi. Siis todella, olla anaali täällä, minun pitäisi varmaan sanoa "Antakaa minulle kokonaisluku "voidakseen välittää käyttäjälle mitä aion. Nyt ajatella alla huppu. Emme menossa katsomaan miten cs50.h toteutetaan tänään, että kirjasto. Mutta jos se pitää sanoa yrittää, yrittää, yrittää, mitä ohjelmointi rakentaa minä oletettavasti käyttämällä alla huppu toteuttaa se? Joten silmukan, eikö? Yksi yksinkertaisimmat ideat näimme Scratch. Ikuisesti rakentaa, Toista rakentaa. Oletettavasti tässä ohjelmassa, alla huppu, vaikka vaikka se on kirjoitettu C eikä tyhjästä, se tekee jotain nimeltään vastaa ikuisesti, jos käyttäjä ei ole kirjoittanut kokonaisluku, vaikkapa yrittää, yrittää, yrittää, yrittää, joten lopulta kun me ei saada kokonaisluku, niin murtautua ulos että silmukka. Joten mitä muita toimintoja voidaan käytämme täällä CS50 kirjastossa? No, tavallaan selvää niistä, ainakin perustuvat tietotyyppejä että tiedämme nyt olemassa. Otimme GetString, GetInt, vaan koko ensimmäisten viikkojen ajan, voit käyttää myös GetFloat ja GetDouble ja GetLongLong saadakseen tarkasti tietotyypit, jotka haluat. Koska avain yksityiskohta on, että toisin kuin joissakin kielissä, kuten Python ja Ruby, jossa sinun ei välttämättä tarvitse julistaa tietotyyppi muuttujan - sinun ei tarvitse kertoa tietokoneen millaista tavaraa aiot laittaa muuttuja - C, sinun täytyy olla aina niin tarkka. Joten jos haluat muuttuja nimeltä N kimpale varastointi että tässä tapauksessa sattuu olemaan 32 bittiä sopimuksen mukaan, voit on kertoa tietokoneen nämä bitit ovat menossa tallentaa numeron - ei merkki, eikä merkkijono, eikä float. Ja tämä ratkaisee ongelman me tehokkaasti juoksi viime viikolla. Jos käytämme nollia ja ykkösiä numeroita edustaa paitsi numeroita vaan ja B ja Cs, miten maailma on tietokone tulee tietää, että tämä malli bittien todella edustaa numero 65, toisin kuin edustavan kirjeen, joka sattumalta mukaan ASCII, muistuttaa, vastasi 65? Joten nämä tiedot tyypit tarjoavat yhteydessä tietokoneeseen, niin että se tietää, että jos nämä bitit pitäisi tulkita int tai merkkijono. Kaikki kysymykset, sitten tämän? Niin? DAVID J. MALAN: Hyvä kysymys. Jos otamme pois stdio.h, me tallenna tiedosto - anna minun mennä alas pääteikkuna ja suorita make matematiikka, zoom ja anna - Nyt saan eri virhettä, koska olen implisiittisesti julistaa mitä toimia nyt? Printf. Joten nyt olen luonut uuden ongelman, jonka ratkaisu on olennaisesti sama. Minun täytyy laittaa se takaisin. YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Oh. Joten jos otan pois - Okei, joo. Joten jos voin poistaa vakio I / O-kirjasto sisällyttäminen ylös täällä, ja sitten sanot jos pääsen eroon printf, saavat eroon printf? Kyllä. Tämän pitäisi toimia, koska en enää käytä mitään - Hupsista. Sanoinko juuri valehdella? Selvä. Tämä ei toimi, koska uuden virheen me vain käyttöön. Ja tämä on hieman itsestäänselvyyksiä. Mikä on ongelmana? Käyttämätön muuttujan n. Niin tämä virhe on tulos siitä, että se on konfiguroitu Laitteen erityisen pikkutarkka, todella huutaa jokaisesta mahdollinen virhe, vaikka se on eräänlainen ei-fataali virhe näin - on se todella niin suuri käsitellä, että olen varattu int, laita numero, ja sitten juuri tehnyt mitään sen kanssa? Niin toiminnallisesti, no. Se ei tule rikkoa ohjelmaan. Se on vain typerää, eikö? Ei arvoa hakeneista että numero, varastoitu se muuttuja, jos olet koskaan tehdä mitään sen kanssa, onko tulostaa tai tallentaa sen. Joten tässä tapauksessa, clang on tunnustaa niin paljon, ja se sanoo käyttämätön muuttuja n. Jotta voimme korjata tämän, jos todella haluamme. Mutta taas, tämä ei ole hyvä ohjelma nyt. Joten voisin tehdä tätä - mene tänne, haluan tyhjentää näytön, tee matematiikka. Se toimii. Nyt voin ajaa minun matematiikka ohjelma vie tulo - No, se oli huono. Tulee tulo, ja että on kaikki se, tässä tapauksessa. Joten oikeastaan, yritetään yhdessä muussa nurkassa tapaus, että me ei ajattele aikaisemmin. Tässä tapauksessa - tässä mennään takaisin yksi, joka on hieman käyttäjäystävällinen. Saanen palata tänne ja suorita make matematiikka uudelleen. Oho, mitä tein väärin? Täytyy perua entisestään. Okei. Nyt olemme takaisin alkuperäiseen tilaan, jossa kaikki on toivottavasti hyvin. Ja nyt jos juoksen matematiikkaa, 123 tuntuu toimivan. Mutta tämä ei ole todellakaan tehokkaita todisteita, vain sanoa Okei, se toimii. 789, joka toimii. Aikaa toimittaa. Koska siellä on muita rajatapauksissa täällä. Merkkijono ei todellakaan anna meille paljon vaivaa kirjoittamalla paljon merkkejä. Mutta entä jos en kirjoita tähän? Lyömällä numero 1 paljon, paljon täällä - Selvä, se alkaa hieman tylsä, joten aion lopettaa tähän, ja aion Enter. Mitä helvettiä juuri tapahtui? Joten tämä voi todella selittää. Joten ei se ota se binary? Hyvä ajatus, mutta ei, se ei ole sitä, että se otti kuten binary, koska todellakin, se oli vain sellainen sattuma. Voimme tehdä tämän uudestaan. Joten ei ole mitään 2-binary-järjestelmän, joka on luultavasti tarpeeksi muutenkin. Enter. Niin että ei ollut ongelma. Mitä muuta? Aivan. Joten muistelen mitä int todellisuudessa on. Se on 32 bittiä, jotka yhdessä tulkitaan lukuna. Jos on 32 bittiä, se tarkoittaa, että kukin bitit voivat olla 0 tai 1, 0 tai 1. Joten se tarkoittaa, että on kaksi vaihtoehtoa tämän bitin, kaksi mahdollisuutta, että kaksi mahdollisuuksia tämän bit - niin se on 2 kertaa 2 kertaa - niin se on 2 32 teho on kokonaismäärä permutaatioista nollia ja ykkösiä, jos sinulla on 32 paikkamerkkejä nollista tai ykkösistä, edessä. Joten jos olen 2 32, matemaattisesti, että mitä? Joten se on paljon. Se on 4000000000, antaa tai ottaa. Ja 4000000000 ei näytä olevan mitä tulostaa täältä. Itse asiassa tämä näyttää lähempänä 2000000000. Mutta tämä ei ole sattumaa. Siitä, että tietokone on tulkinnut minun valtava määrä, minun valtava jono ykkösiä ja sitten minun valtava jono kaksittain, kuin noin 2 miljardia selitetään miten? On korkki int. Siellä on varmasti suurin arvo, joka voi edustaa. Mutta se on yleensä 4000000000, eikö? Jos 2 ja 32 on noin 4 miljardia euroa, joka tuntuu se on suurin numero. Joten ei muilta, mutta hyvä ajatus. Negatiivisia lukuja. Joten jos sinulla on 4 miljardia mahdollisia asioita voit edustavat näitä eri permutaatiot 32 0 ja 1s, hyvin, on järkevää, että me ihmiset saattavat haluta edustavat ei vain positiivisia kokonaislukuja mutta negatiivisia kokonaislukuja. Ja todellakin, se olettaa, että C tekee. Joten 32 bittiä, voit edustaa karkeasti negatiivinen 2 miljardia kaikki tavalla jopa myönteisiä 2000000000. Ja niin tässä tapauksessa, mitä me oikeastaan ​​nähdä vain laitamilla kykyjä kokonaisluku, ja olemme, niin puhua, tulvimisesta kokonaisluku. Olemme yrittäneet ahtaa enemmän bittejä sinne kuin voi oikeastaan ​​sovi. Niin lopputulos on, että meillä on olennaisesti kaikki 1 bittiä. Olemme selattava kaikessa bittiä, olemme yrittäneet edustamaan suurin mahdollinen määrä, mutta se ei selvästikään ole läheskään tarpeeksi suuri edustaa kaksi asiaa olen juuri kirjoittanut tuumaa Niin? YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Hyvä kysymys. Miksi emme edusta vain että negatiiviset merkki vain hahmo? Joten me ehdottomasti voisi, ja voisimme sitten pelastaa lisäbitin. Mutta olet silti täytyy edustaa tätä viiva, ja että tulee maksamaan sinulle ainakin jotain, oletettavasti hieman. Joten kyllä, meillä voisi olla 32 bittiä käytetään meidän numero, mutta nyt Tarvitsemme toinen vähän käytetty meidän Dash symboli, miinusmerkki. Joten nyt meillä on 33 bitin arvot, joita voisimme tehdä, mutta se on juuri ole, miten se on tehty. Teimme arvostele vuotta sitten, 32 bittiä on eräänlainen mittayksikkö täältä. Joten aiomme käyttää yhtä näistä biteistä tehokkaasti edustavat negatiivisuutta, ja 31 bittiä edustaa numero. Muita kysymyksiä? Selvä. Se on paljon. Miksi emme mene eteenpäin ja otamme viiden minuutin taukoa täällä? Selvä. Joten jälleen, ei apunasi matemaattinen sovelluksia ohjelmoinnin, haluan vain nyppiä pois tästä yksi esimerkki ennen kuin siirrymme muihin konstruktioita, vain koska se havainnollistavat muutamia yhteisiä kompastuskivi pistettä joihinkin perusasiat, kun se tulee kirjoittaa ohjelmia. Tässä tapauksessa, laskutoimitusten ilmaisuja, jotka ovat jonkin mielenkiintoista merkitystä syntaksin. Joten tämä on vain kaava, jolla voimme muuntaa lämpötilat Fahrenheit ja Celsius. Jos et muista, tämä on vain kaava. Joten jos me kytkeä Fahrenheit arvo 32 astetta, mikä on jäädyttäminen, että tulee olemaan 32 miinus 32 on 0, ja todellakin, 0 Celsius on myös jäätymisen. Niin nopeasti järki tarkistaa siellä - se on tuttu kaava. Antakaa minun mennä yli laitteeseen, vaikka, ja aloita kirjoittaminen ohjelma nimeltä, kuten, f2c, "Fahrenheit Celsius piste c ". Ja ylös huipulla täällä, aion aloittaa pois # include stdio.h, ja aion tehdä int main (void), ja jälleen, tulemme takaisin tulevaisuudessa, mitä int tarkoittaa siellä ja mitä void tarkoittaa siellä. Ja nyt haluan mennä eteenpäin ja toteuttaa ohjelma, joka lähinnä tämä muuntaminen meille. Joten printf, sanokaamme, lämpötila Fahrenheit. Ja sitten haluan mennä eteenpäin ja saada arvoa käyttäjältä. Millainen arvo pitäisi saada käyttäjän jos haluan heitä antamaan minulle lämpötila Fahrenheit? Niin? Mitä ehdotatte? Joo. Joten float tuntuu melko kohtuullinen. Meillä on taas vain muutamia vaihtoehtoja, jotka olemme nähneet tähän mennessä. Meillä on asioita, kuten nieriä, kaksinkertainen, kellua, int, pitkä pitkä, bool, merkkijono. Joten näistä, float tuntuu melko kohtuullinen. Voisimme käyttää kaksinkertainen, oikea, sillä jos haluamme todella edustavat ihmisen lämpötila - 98.60000 - voisimme käyttää 64 bittiä tehdä niin, mutta se tuntuu ylilyönti lämpötilan. Joten vain mennä kellua. Nyt tarvitsen muuttuja. Vain pitää asiat yksinkertaisina, aion kutsua sitä f, mutta voisi yhtä perustellusti kutsua sitä lämpötilaa, mutta joko on hieno. Joten float f = GetFloat. Heti kun olen nyt päättänyt käyttää GetFloat, olen kuitenkin täytyy tehdä yksi korjaus. Joo. Joten meidän # include , muuten kääntäjä on menossa huutaa meille. Nyt minulla on float, anna minun mennä eteenpäin ja tehdä muuntaminen. Joten ensin haluan myös tottua täällä kommentoi minun koodi. Joten jälleen, kommentti on vain merkintä ihmisen, joka on ei ole osa ohjelmaa sinänsä, mutta se on yksi, auttaa ymmärtää, mitä teit seuraavana aamuna, tai seuraava kuukaudessa, se auttaa opetuksen stipendiaatti ymmärtää, mitä teit tai mitä aikoi tehdä, joten se on yleensä erittäin hyviä toimintatapoja. Aina muutaman rivin koodia, kirjoittaa kommentin itseäsi tai työtoverisi. Joten tässä, aion sanoa, "Kysy käyttäjältä lämpötilan." Ei tarvitse olla kokonainen lause, vain lyhyt lause. Mutta idea kommentoimalla C on, että jokainen kommentit olisi annettava sinä - tai vaikkapa TF tai kollega - silmäillä ohjelman ja tietää tarkalleen, mitä se tekee, se ei niin paljon lukemista koodia, mutta lukemalla kommentit, jotka tulisi olla ytimekäs ja selkeä. Selvä, joten nyt haluan mennä eteenpäin ja sanoa, "Convert Fahrenheit Celsius. "Joten aion mennä eteenpäin ja tehdä, sanotaanko, float c. Pidämme Celsius kuin Liukulukuarvo. Ja anna minun ottaa puukottaa tätä. Kaava on jälleen täällä. Koska 5/9 kertaa F miinus 32. Joten tehdään tämä. Joten 5 jaettuna 9, miinus - Oho, olen sekaisin sen jo. Times. Joten 5/9 kertaa F miinus 32. Joten F miinus 32, puolipiste. Ja nyt, täällä, aion mennä eteenpäin ja sanoa, tulostaa tuloksen. Ja tämä osa on helppo. Printf. Miten edetä tulostamista tästä? No, voisin sanoa "Tuo luku Celsius on% f \ n", vain muutamia estetiikkaa. Ja mitä sitten arvoa en halua kytkeä täällä printf n Toinen perustelu? Okei. Joten c. Niinpä aloitamme tämän ja sitten vain palata 0. Uudelleen, se ei ole mitään tekemistä matematiikkaa. Se vain tarkoittaa että kaikki on hyvin. Nyt on tämä oikea, tämä ohjelma? Selvä. Joten olen tehnyt joitakin virheitä. Vaikka sinulla ei ole aavistustakaan, mitä ohjelmointi on, voit lajitella ja päättelevät takaisin peruskoulun mitä virheitä täällä voisi olla. Mitä yksi ensimmäisistä? YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Joo. Eli meiltä puuttuu sulkeita. Se oli tahallinen, että tein suluissa perussävel liu'uta täällä, koska siellä oikeastaan ​​tämä käsite tilauksen toiminnan tai edelle, jolloin tietyt toiminnot - kertolasku - on korkeampi sitova, on korkeampi etusija kuin asiat kuten lisäys tai vähennys. Joten olemme tehneet tätä jo vuosia vain tehdä selväksi täsmälleen Mitä matemaattinen operaatio pitäisi tehdä ensin. Joten minun pitäisi varmaan jäljitellä juuri tätä. Muuten tietokone on oletettavasti yrittävät tehdä jotain jakautuminen 5 9, niin kerrotaan F, vähennä 32 alkaen koko juttu. Joka ei itse asiassa mitä haluamme tehdä. Joten parenthesize. Katsotaanpa lisätä minun sulkeisiin tässä, suluissa täällä. Laitetaan tämä tänne. Täällä olen vain huomannut toisen virheen tein matkan varrella. Niin? YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Ah. Hyvä. Joten meillä on todellakin sama kokonaisluku jako asiaa ennen. Olen paikkansa, että katsotaanpa mitä oire on. Mutta aiomme pitää korjata yhden muut erehdys. Niin? YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Kyllä. Joten tyhmä virhe tein, mutta uskomattoman tärkeä. Tietokone ei aio vain sulkea silmänsä ja antaa minun käyttää pääomaa F, kun olen itse julisti muuttujan kuten pieniä f täällä, vastaa 8. Joten minun täytyy korjata vastaamaan 11 minun arvo, joka hetki sitten oli pääkaupunki F vahingossa. Entä täällä? Pitäisikö tämän olla pieniä samoin? Olisi, mutta se sattumaa. Että% f ei ole mitään tekemistä muuttuja. Joten vain olla super selväksi täällä, anna minun mennä eteenpäin ja Nimeä lyhyesti "lämpötila". Saanen nimeä Tämä "lämpötila". Saanen ei nimeä tätä. Koska taas% F maailmanlaajuisesti tarkoittaa "Liukulukuarvo." Ei ole mitään tekemistä minun muuttuvan. Mutta "lämpötila" levällään on vain vähän monisanainen, joten aion mennä takaisin minun pieni "F" s. Nyt haluan mennä eteenpäin alas minun ikkunaan täällä. Make f2c - joka oli jälleen mielivaltainen nimi I antoi tähän tiedostoon. Näyttää koonneet. Saanen juosta f2c. Enter. Lämpötila Fahrenheit - Tehdään helppo. 32. OK, korjata. Mutta, jos en nyt tee 212 kiehuvaa - damn. Selvä. Joten selvästikään ole oikein, jos TF yrittää ainakin kaksi arvoa. Joten mikä on ongelma? No, olet jo laittaa sormi mitä asiasta on. Mutta miksi näin on? Täällä, kun olen tekemässä matematiikkaa 5 jaettuna 9. Niin käsitteellisesti, että on täysin oikein. Täysin sopusoinnussa kaavalla. Mutta tietokoneet vain tehdä juuri mitä kertoa heille tehdä. Ja mitä me tosiasiassa kertoo tietokoneen tässä jaa kokonaisluku 5 kokonaisluvun 9 ja anna minulle tulosta. Ongelmana on kuitenkin, kun et jakolaskuja tietoja tyyppejä, lähtö on samaa tietotyyppiä kuin tulot. Ja joten jos kaksi tuloa ovat molemmat ints, lähtö on menossa olla int. Ja niin 5 jaettuna 9 on pilkku jotain. Mutta mitä lähin kokonaisluku kohtaan jotain? Joten, se on oikeastaan ​​0. Niin kuin olemme keskustelleet maanantaina, kaikki desimaalipilkun jälkeen kohta saa katkaistu. Se vain saa heittää pois. Joten tämä on täydellinen virhe, koska voisin yhtä hyvin kerrotaan kaiken 0 tänne. Nyt voin korjata tämän pari tapaa. Voisin tehdä tätä. 5,0 jaettuna 9,0. Teknisesti, en edes tarvitse tehdä. Se riittää vain tehdä yhden numerot float - tai kaksinkertaisen - laittamalla desimaalipilkun täällä. Koska mitä tapahtuu nyt, kun jaat kokonaisluku by float tai kaksinkertainen, tietokone menee ymmärtää oh, yksi niistä on tarkempi. Saanen err puolella antaa sinulle enemmän tarkkuutta kuin sinulle tarkoitettu. Joten se muuntaa tulos - se palauttaa tuloksen Liukulukuarvo samoin. Joten se toimisi. Tämä toimisi. Ja vielä yksi muu mekanismi, joka nähdään vuonna tarkemmin ensi viikolla. Voit itse, kuten ohjelmoija, kerro tietokone todella kohtelevat tietotyypin vaikka se oli toinen. Joten voisin itse tehdä tämän. Suluissa, voin sanoa jotain (float), avoin Paren, sulje paren. Ja tämä on mitä kutsutaan "valu". Jälleen, lisää tästä ensi viikolla. Mutta tämä on vain ohjelmallinen tapa kertoa tietokone, joo tiedän 9 on kokonaisluku tai pitkä. Tiedän, että se ei ole Liukulukuarvo. Mutta kohdella sitä sellaisena tapauksessa. Joten heittää tietotyyppi tarkoittaa muuntaa yhdestä toiseen. Rehellisesti sanottuna tämä on vain pieni ruma, joten ehdotan mennään takaisin alkuperäiseen ehdotukseen vain muuntaa näitä asioita liukuluvuiksi manuaalisesti. Koska nyt on aivan super selväksi, mitä on tekeillä, ja se ei ole kaikki, että häiritsevä. Joten nyt mennä takaisin minun pääteikkuna. Tee f2c. Anna minun mennä eteenpäin ja ajaa tätä. Ja kuten syrjään, et kyllästy kirjoittaa näitä komentoja uudestaan ​​ja uudestaan, ymmärtää, että tietokoneet, kuten Linux täällä, melkoisen fiksu. Ja jos minä osuma, voimme käydä läpi koko historian komentoja, ylös ja alas. Eli tässä tapauksessa täällä, voin vain mennä jopa ajaa tekemään f2c. Minua huusin, koska tein että toinen sitten. Se on jo ajan tasalla. Joten nyt voin ajaa f2c uudelleen. Kokeillaan 32 Fahrenheit. Nyt yritetään 212 Fahrenheit. Huoh. Tuntuu toimivan. Nyt tämä on hyvä, mutta se tuntuu hieman mielivaltaista joka Näytän kuusi numeroa desimaalipilkun jälkeen kohdat. Oikea? Jos olet sää henkilö televisiossa, olet sellainen Doofus jos luet lämpötila Tämä tarkkuus. Joten yksinkertaistamiseksi. Joten itse mennä tänne, minun printf. Ja joo, haluan kellua. Mutta haluan nyt määritellä tarkasti. Ja aion olla hieman ytimekäs. Aion sanoa, anna minulle yksi piste kuluttua desimaalin tarkkuudella. Joten sen sijaan sanoa% f, aion sanoa% .1 f. Ja tämä tarkoittaa vain antaa minulle yhden paikan desimaalipilkun jälkeen. Selvä. Kokeillaan uudestaan. Saanen uusinnassa sen jälkeen kokoamisessa. Ja nyt minä kirjoita 32 ja minä saada takaisin ytimekkäämpi arvoa. Ja voin kirjoittaa, nyt 212, ja saada takaisin suppeampi arvo. Ja siellä on muita asioita voit tehdä printf. Voit itse määrittää, kuinka suuri määrä olisi. Jos haluat olla pehmusteet sitä, joten voit hiiren tasata tai vasen-align kaikki numerot tai yrittää center asioita. Joten ymmärtää olemassa vähän temppuja voit tehdä siellä. Mutta he vain keitetään alas muotoon koodeja, kuten olemme siellä. Joten mitä tässä numerossa edelle. Tämä on erittäin tylsä ​​pöydän läpi järjestelmällisesti. Mutta ymmärtää, että laatijat C on keksiä säännöt, joissa määritellään toimijat ovat korkeammat edelle, enemmän sitovaa valtaa, kuin toiset. Joten taas alakoulussa, me yleensä tiesi, että se oli kerto-ja jakolasku, sitten yhteen-ja vähennyslaskua, sitten joitakin muita juttuja. Maailmassa ohjelmointi, siellä paljon pidempi lista asioista. Ja tämä ei ole jotain syytä muistaa nyt. Saat totutettu ennen pitkää. Mutta aivan kuten alakoulussa, suluissa yleensä ratkaista kysymykset edelle, tekemällä erittäin selväksi tietokoneen ja ihmisen lailla, mitä on tarkoitettu. Joten pitää tätä hieman lunttilappua siellä. Mutta suurin niistä yksityiskohtia emme pääse vähään aikaan. Selvä. Nyt, rakentaa ja siirtymään pois näiltä typerä pikku matemaattisia esimerkkejä. Silti käyttää samoja perusteita, mutta aloita ilmaista itseämme hieman enemmän kuin Scratch. Joten Scratch, meillä oli nämä Boolen lausekkeita. Ja Englanti, Boolen lauseke on mitä? Totta vai tarua. Se on jotain, tosi tai epätosi. 1 tai 0. Päälle tai pois päältä. Mitä haluat kutsua sitä. Nyt Scratch, palapelin palat näytti tältä. Ja se on yhdistelmä, pohjassa siellä kolme palapelin palaset. Yksi yhdessä - jotain, joka on tyhjä ja tyhjä. Ja sitten kaksi Boolen sisälle. Joten voit pesä Boolen saada enemmän monimutkaista Boolean ilmaisuja. Esimerkiksi, jos se on lauantai, ja se on mukavaa sää, sitten mennä ulos. Tai jotain mielivaltaista tuollaista. Joten voit liittyä Boolen keksiä suurempi totuusarvo, jonka vastaus perustuu on pienempiä. Nyt, C, onneksi tämä kartoitus on oikeastaan ​​aika yksinkertainen. Sulut auttaa selvittää asioita täällä. && Mitä tarkoittaa "ja". Niin, että miten aiomme muuttaa nämä lohkot tyhjästä C. Ja edellytykset näimme Scratch, vasemmalla puolella, voin pinota niitä samankaltaisesti C. Jos x on pienempi kuin y, tee tätä. If x on suurempi kuin y, niin tähän. Else loogisesti niiden on oltava sama, joten sano että ne ovat yhtä suuret. Joten voimme nyt alkaa rakentaa näitä asioita. Tehdäänpä esimerkki. Saanen avata tiedoston, joka on kurssin verkkosivuilla, että Kirjoitin etukäteen. Tätä kutsutaan nonswitch.c. Ja näemme miksi vain hetken. Joten tämä tiedosto - nonswitch.c-- ensin ymmärtää, että on olemassa koko joukko kommentit yläreunassa. Se on vain selittää tiedoston nimi, mitä se ei, ja niin edelleen. Ja se ilmeisesti osoittaa käytön Boolen JA-ta - conjoining kaksi ilmaisua. Joten miten tämä ohjelma toimii. Voin lisätä kaksi tiedostoa, cs50.h ja stdio.h. Jos minä selaa, nyt on ohjelma, se on vähän pidempi kuin olemme kirjoitettu ennen, mutta melko luettavissa. Joten haluan ensin tulostaa käyttäjälle, linjalla 18, "Anna minulle kokonaisluku väliltä 1 ja 10". Niin että on tuolla. Nyt saan kokonaisluku. Mutta ymmärrä, että GetInt - melko yksinkertainen. Se vain mennä int. Se aikoo varmistaa, että se saa int eikä merkkijono tai float. Mutta se ei aio tehdä minkäänlaista rajan tarkkailun. Se ei aio suodattaa numeroita olla välillä tietyissä rajoissa. Joten meidän täytyy toteuttaa se itse. Eli aivan kuten Scratch, jossa voisin tehdä konjunktio kaksi lauseketta, voin tehdä sen C seuraavasti. Jos n on suurempi tai yhtä suuri kuin 1, ja n on pienempi kuin ja tai yhtä suuri kuin 3, aion hyvin mielivaltaisesti käskyn, että numero olla pieni määrä. Vain vuoksi julkilausuman. Else jos n on välillä 4 ja 6, print "Valitsit keskipitkällä numero. "if n on välillä 7 ja 10, print" Valitsit suuri määrä. "muuta tulosta" Valitset virheellinen numero. " Koska loogisesti, että seuraa jos olemme loppuun valikoimaamme. Joten ymmärtää tämä ei ole aivan miten kirjoittaa tai suurempi vastaa vuonna matematiikan luokassa. Oikea? Voit yleensä tehdä se näin, jossa viiva sen alle. Mutta ei ole sellainen keskeinen minun näppäimistö. Niin symboli C ilmaisemiseen tai suurempi kuin yhtä suuri kuin on kaksi merkkiä, ja symboli alle tai yhtä suuri kuin on kaksi merkkiä samoin. Selvä. Joten jos suoritat tämän ohjelman, voit varmaan arvata mitä se on teemme. Jos menen eteenpäin ja tehdä nonswitch, Enter. Ja sitten ajaa nonswitch. Anna minulle numero 1 ja 10. Aion antaa sen 11. Otin virheellinen numero. Yritän numero 3. Otin pienen määrän. Joten melko suoraviivaista siellä. Mitä jos haluan muuttaa käyttäytymistä tämän ohjelman ja tehdä jotain hieman erilaista sijaan? Anna minun mennä eteenpäin ja sanoa. Saanen päästä eroon kaikesta tästä. Ja haluan sanoa, jos (n == 42). Ja sitten aion mennä eteenpäin ja sanoa print "Valitsit oikea vastaus. "Else aiomme mennä eteenpäin ja sanoa, printf ("Valitsit väärä vastaus. "); Okei. Vain siksi. Nyt muutamia kohtia voimme tehdä täällä. Yksi, en kirjoita symboli luulisi on järkevin. Kun haluan tarkistaa tasa-kääntyy pois et käytä yhtäläisyysmerkki. Voit sen sijaan käyttää yhtä yhtäläisyysmerkki. Ja miksi se voisi olla vain intuitiivisesti? Joo. YLEISÖ: [kuulumattomissa] DAVID J. MALAN: Oikea. Yhtäläisyysmerkki käytetään jo tehtävän. Joku ei tosiaan tätä kautta. Ja nyt, kun se tulee tasa testaus, meidän on olla selkeä, ja sano vastaa yhtä. Hyvin yleinen virhe on tehdä tämä. Ja jos virka tai ensi viikolla tai Seuraavat kaksi viikkoa teet jotain tällaista, ja sitten kamppailemaan sen 10, 20 minuuttia yrittää selvittää Mikä hemmetin vika on, ymmärtää, että olet yksi niistä ihmisiä, jotka teki tämän virheen. Joten, super helppo tehdä. Mutta tavoitteena onkin nyt torjua tämän virheen. Tämä voi arvioida, sillä se, mitä tämä todella sanoo? Jos n saa 42. Joten verbi ihmiset käyttävät, sanallisesti ilmaista käsite luovutus on "saa". Joten jos n saa 42. Joten se tarkoittaa antaa 42-n. Nyt minulla on Boolen lauseke suluissa, sisällä tämän edellytyksen, jonka arvo on 42. Oikea? Koska jos arvioimaan sen sisältä ulos, yhteensä vastaus, nyt on 42. Joten jos Kysyin teiltä kysymyksen, "Jos (42)," mikä on todella sanoa? No, Boolen lausekkeita voi olla vain tosi tai epätosi. 1 tai 0. Päälle tai pois päältä. Joten meillä näyttää olevan nurkkaan tässä tapauksessa, jolloin kaikki äkillinen, en sano "jos (42)". Tämä ei ole totuusarvon. Joten mitä tietokoneet tekevät, vaikka on se lähinnä vastaa mitään, ei 0 tulkitaan olevan totta. 1. On. He kaikki toiminnallisesti vastaavat. Ainoastaan ​​arvo 0 tai avainsanan väärä, kuten tulemme lopulta nähdä, on oikeastaan ​​väärä. Joten ", jos (42)" olisi todella olla totta, koska se on ei-nolla. Joten tarkemmin sanottuna tässä Boolen arvo ei todellakaan ole niin paljon totta vai tarua, mutta tämä tapauksessa, jos on 0 tai ei-nolla. Joten vääriä tai ole vääriä. Ja jonka avulla voimme kattaa kaikki enemmän mahdollisuuksia sulkulausekkeesta. Joten meidän täytyy, aina niin huolellisesti, sanoa - jos (n == 42). Yksinkertaisesti siksi meidän on määrittää testin tasa- ei siirrosta arvo. Mitä muuta on syytä huomata täällä? Nämä aaltosulkeita eivät oikeastaan ​​ole tarpeen. Olen tehnyt niitä vain olla NIT-nirso täällä. Mutta kun sinulla on sairaus, joka on vain yksi rivi koodia, kuten mukavuus, ohjelmoijat ei tarvitse käyttää aaltosulkeita. Riittää vain luetelmakohdan esteettisistä syistä, ja Sitten kirjoita rivi koodia. Vasta kun haluat kirjoittaa kaksi riviä koodia - ja Esimerkiksi muuten printf ("Hei!"). Jos haluat tehdä , että tämä on rikki. Voit luetelmakohta kaiken haluamasi, mutta se, että olet kirjoitettu kaksi riviä koodia ilman aaltosulkeita tarkoittaa, että tämä ohjelma ei toimi oikein tai saattavat ei edes kääntää oikein. Joten nyt, ollakseni rehellinen, minusta paras tapa on vain Käytä aaltosulkeita, ja huomaat, että he tekevät erittäin selväksi, mitä on tekeillä. Myös, koska syrjään - varsinkin jos olet yksi niistä, jotka käyttävät Suositeltavia teoksia tai resursseja verkossa - tajuaa, että tämä käsite tyylin ohjelmointi. Ja jotkut ihmiset todella haluavat laittaa kihara ahdin tänne linjalla. Jotkut ihmiset haluavat tehdä naurettavia asioita, haluaisin laittaa ne tänne. Ei ole väärää vastausta, kun se tulee tyyli, mutta tämä on väärin. Mutta jotkut ihmiset tekevät sen. [Naurua] DAVID J. MALAN: Eli Mainitsen tämän nyt yksinkertaisesti siksi koska luet ylös asioita kirjoista tai verkossa, olet menossa erilaisia ​​viestejä eri opettajien ja Eri kirjoittajat. Ja juuri ymmärtää, että toiminnallisesti, he yleensä vastaa, mutta johdonmukaisesti. Joten tässä tapauksessa, me standardisoida kihara housunkannattimet riviin tänne vasemmalle. Selvä. Joten mene eteenpäin nyt ja ajaa tätä, ja katso mitä tapahtuu tällä ohjelmalla. Tee nonswitch. Sitten ajaa nonswitch. Anna kokonaisluku välillä 0 ja - niin, että ei ole merkitystä enää, mutta olen juuri menossa mielivaltaisesti sanoa 42. Ja otin oikean vastauksen. No nyt mennään todella ottaa tämän eri suuntaan. On käynyt ilmi, on olemassa joitakin muita syntaksin me voi käyttää ohjelmaa. Tässä on uusi pala syntaksia on toiminnallisesti sama, vaan tuo toinen tapa ilmaista itseämme. Joten tämä on mitä kutsutaan "kytkin lausunto." Ja vaihtolause toimii seuraavasti. Kestää, suluissa, arvo, jonka haluat "Kytkin". Haluat käyttäytyä eri perusteella sen arvosta. Joten tämä tarkoittaa kytkin n: n arvo. Ja mitä tämä tarkoittaa? No, jos n on 1 tai 2 tai 3, mennä eteenpäin ja tulostaa "You valitsi iso numero "ja sitten tauko. Syynä tauko on, että tapa C toimii on yhtä Heti kun se toteaa tapauksessa, joka vastaa, se alkaa täytäntöönpanovaltion kaikki koodi alla. Joten jos minulla on yksi rivi koodia, niin kuin minä täällä line 27, se saa suorittaa. Jos voin lisätä toisen rivin tässä, se saa teloitettiin. Toinen linja täällä, se saa teloitettiin. Ohjelma pysähtyy vain täytäntöönpanovaltion mitä alla soveltaa tapaus tuloslaskelmaan, kun I nimenomaan sanoa "break". Niin väärin. Aivan, tässä tapauksessa seurauksena. Asia 4 tai 5 tai 6, vastaavasti, on menossa tulostaa viestin. Tässä tapauksessa, keski-numero. Riko. Tapaus 7, 8, 9, 10, se tulee tulostaa "Valitsit iso numero. "Break. Ja sitten on kirjaimellisesti avainsanan nimeltään "default" se tehokkaasti kuin "muuten" rakentaa. Joten uusi syntaksi, mutta älyllisesti, mitään uutta täällä. Se on aivan kuten Scratch. Jos if, if, tavallaan lohkon. Niin, että virta versio ohjelmasta. Mutta huomaa, että me teimme sen numerot tähän. Saanen avata toinen versio vain näyttää jotain vähän konkreettisempaa. Joten tässä meillä on arvosanoja sijaan. Osoittautuu voit käyttää valitsimia ei vain kokonaislukuja, vaan merkkiä. Ei kaikki tiedot tyyppejä, mutta ainakin merkkiä. Joten tässä, voisimme tehdä jotain, jos arvo C, että käyttäjän kirjoitettu, linjassa 19, käyttämällä GetChar toimintoa, on pääoman tai pieniksi, mennään tulkita sen laatu, ja sanovat poimitaan kiitettävän arvosanan. Ja alas pitkin kytkimen lausuman, meillä on muita tapauksissa "B": n ja "C": n, ja niin edelleen. Mutta katsotaanpa nyt pyöristää yksi asia. Ja vielä, millaisia ​​lentää Joissakin näistä esimerkeistä. Mutta se on todella niin, että voimme soveltaa niitä, nyt - tai oikeastaan ​​vain kääntää ne nyt - ja C. Joten anna minun mennä eteenpäin ja tehdä tätä. Aion avata uuden tiedoston. Ja aion tehdä sisällyttää . Ja sitten aion tehdä int main (void). Saanen tallentaa tiedoston loop.c. Vain esimerkkinä. Ja aion mennä eteenpäin ja tehdä seuraavasti. Haluan kirjoittaa erittäin ikävä ohjelma. Joten 10. Tehdään tämä. 9. Selvä. Heti kun alkaa tehdä tämän ohjelmoinnin, olet luultavasti jotain väärin. Mutta aloitamme siellä joka tapauksessa. Oho. Se on todella väärin. 7. 6. 5. 4. Mitään ei tapahdu, kun pääsemme 0. 3. 2. 1. Okei. 0. Poista. Selvä. Niin palata 0. Joten tämä ohjelma on toki mitä se hyvin ikävän sanoo se aikoo tehdä. Se tulee tulostaa kaikki nämä arvot, ylhäältä alas. Joten anna minun tehdä tehdä silmukka. Ja sitten - Hupsista. Tee silmukka. Olin väärässä hakemistossa. Ja nyt haluan juosta silmukka. Enter. Woohoo. Very nice. Nice, pitkä ohjelma. Okei, mutta nyt tehdään tämä paremmin. Aivan kuten Scratch, kun alkoivat käyttää looping rakentaa, eikä vain kopioimalla kaikki palapelin palaset, haluan esitellä tämän asian. Joten C, on olemassa erilaisia ​​kiehkura rakenteita, joista yksi näyttää tältä. "For" loop on kolme asiaa, erottaa kaksi puolipisteillä. Ja sitten sisällä rungon silmukan, niin sanotusti - tavaraa sisällä aaltosulkeita - Voimme tehdä jotain uudestaan ​​ja uudestaan. Joten mitä olen täällä ruudulla, tämä on kirjaimellisesti vain kommentti. / / Tarkoittaa tässä tulee kommenttia. Tämä ei ole koodia. Tämä on vain Englanti kuvaus, minulle ihmisen. Joten alustukset, olosuhteet ja päivityksiä. No, katsotaanpa miten tämä toimii. Tämä antaa minulle mahdollisuuden kirjoittaa tähän ohjelmaan seuraavasti. For - joten tässä tulee minun loop - int i - tässä tulee muuttuja nimeltään "I" - saa alustetaan 10. Joten ei minun alustusta. Haluan tehdä tämän silmukan niin kauan kuin "i" on suurempi tai yhtä suuri kuin 0. Ja jokainen iteraatio tämän silmukan, haluan tehdä i -. Joten näimme + + maanantaina. - On päinvastainen. Se pienentää arvoa 1. Inside tämän silmukan, haluan todella tehdä jotain. Joten aion sanoa jotain printf. En halua sanoa 10 nyt, koska tämä on luonnollisesti vain painoon sama arvo. Mitä haluan tulostaa sijaan, luultavasti? Joo. Joten "i". Joten% d, i. Joten aion varastaa yksi niistä ideoita aiemmin - Tämä substituutio muotoa koodit - ja sitten täällä, alareunassa, palaan 0, vain hyvä toimenpide. Mutta nyt minulla on enemmän ytimekäs ohjelma. Se on vain muutaman rivin, eikä noin 10 tai 11 riviä. Anna minun mennä minun nopeasti tänne. Remake silmukka. Uusintana silmukka. Ja se näyttää olevan sama. Nyt ohjelma ole mielenkiintoisempaa. Mutta nyt voin kirjoittaa jotain tällaista. Voin vaihtaa tämän 100. Voin sitten kääntää minun ohjelma. Ja sitten voin ajaa uudelleen oman ohjelman. Ja nyt se menee supernopea tämänpäiväisestä tietokoneissa. Mutta minulla on - ja oikeastaan ​​minun scrollback puskuri ei menevät jopa niin pitkälle. Siellä mennään. Joten siellä olemme kaikki 100. Mutta se on helppo tehdä virheitä täällä. Mitä tulee olemaan odotettua käyttäytymistä, jos vahingossa tehdä? Joten se tuntuu äärettömän. Joten katsotaanpas jos tietokone käyttäytyy. Joten anna minun mennä eteenpäin ja tehdä silmukka. Ja anna minun ajaa silmukka. Joten palata että vain hetken. Annamme että aikavälillä. Koska mitä pitäisi laskea jopa minimaalisesti? Luultavasti vähintään 2 miljardia jos meillä on, että monet bittiä, ja käytämme positiivisia arvoja. Joten hyppää takaisin tänne. Näiden lisäksi erilaisia ​​silmukoita, meillä on mitä kutsutaan taas silmukoita. Eli aivan kuten Scratch, sinulla oli Ikuisesti lohkot, ja teillä oli Repeat lohkoja. Vastaavasti C, juuri muita keinoja ilmaista itseäsi. Joten sinulla on käsitys while-silmukka, jonka avulla voit ilmaista itseäsi hieman eri. Ja sitten sinulla on jotain kutsutaan do-while-silmukka, joka toimii hieman eri tavalla samoin. Ja me kiusata näitä toisistaan ​​ajan. Mutta katsotaanpa katsomaan tämä viimeinen täällä. Jos menemme - edelleen käynnissä. Se on melko loputon. Joten anna minun mennä positiivinen, ja miten voimme todella ohjaavat käyttäjän syöttää hieman tehokkaammin. Se on melko lyhyt ohjelma. Ja tässä meillä, main, int n ilmoitusta. Joten anna minulle muuttuja nimeltä N. Nyt olen kirjaimellisesti sanoa "Do." Ja sitten minulla auki kihara ahdin, sulje kihara ahdin. Ja sitten huomaat, heti sen jälkeen, se sanoo taas n on vähemmän kuin 1. Niin huomaa, että nämä linjat - 19-24 - säveltää yhdessä do-while-silmukka. Ja vielä, uutta syntaksia, eikä uusi idea. Se on vain yksi tapa kiehkura, syntaktisesti. Mitä tämä tekee? Toimi seuraavasti, kun n on alle 1. Joten mitä haluan tehdä? Vaadin, että annat minulle positiivinen kokonaisluku. Sitten itse yrittää saada kokonaisluku käyttäjältä. Mutta suhteen järjestyksessä toiminnan tässä, koska kun ehto on täällä, olen sitten menossa tarkistaa, on n vähemmän kuin 1? Joten Oletetaan, että käyttäjä - jälkeen vaati tällä tavalla - tyyppejä arvo 0. Tämä ehto tulee olemaan tosi vai epätosi? No, se on todella olemaan totta. Koska n on 0, ja 0 on pienempi kuin 1. Mitähän tämä merkitsee? Tee se uudestaan. Tee se uudestaan. Tee se uudestaan. Vain kerran, että ehto on epätosi. Jos minä kirjoita 42. No ei, 42 ei ole pienempi kuin 1. Siksi tämä silmukka tehdään täytäntöönpanovaltiossa. Ja niin siinä vaiheessa, ohjelma sanoo, kiitos 42, tässä tapauksessa. Nyt sinulla on tapa ilmaista itseäsi - Meidän ei pitäisi odottaa tätä loppuun. Se vie aikaa. Jatkuu seuraavalla kerralla, ehkä. Mutta nyt, sinulla on kyky toivottavasti ymmärtää vähän pelle huumoria. Pahoittelut. Tämä ei edusta huumoria tietojenkäsittelytieteen maailmassa, mutta se on söpö. [Nauraa] ​​Lopetetaan tältä huomautuksen. Ja näemme sinut maanantaina. [Taputuksia]