DAVID J MALAN: Kaikki oikea, joten tämä on CS50. Ja tämä on selvästi perjantaina. Ja tämä on viikon lopussa yhden. Joten ehkä muistatte, että jäimme, viime kerralla, jossa jännitysnäytelmä tapaisena. Jolloin me paljastaa tätä valhetta, että ei mitä olet opettanut kasvussa up, 1 jaettuna 10 ei, vuonna Itse asiassa, 0,1 tai 0,100 tai 0,10000. Itse asiassa, jos me kokoaa ohjelma, kuten teimme eilen, kanssa, tehdä epätarkkuus, ja sitten tehdä piste, slash, epätarkkuuden, saimme tietää, että tämä on mitä 1 jaettuna 10 todellisuudessa on. Joten se ei ole oikeastaan ​​aika tapaus. Mutta tämä ei vihje jossain perusoikeuksien rajoittaminen tietokoneita. Ja todellakin, joukossa asioita aiomme tehdä tänään on katsomaan miksi tämä on tapahtunut, mitä seurauksia tällä on, miten ihmiskunta on epäonnistunut ymmärtää tämä erittäin vakava situations-- tulos, joka on ollut varsin traaginen ja expensive-- ja myös katsomaan miten me voi todella puolustaa vastaan ​​tällaisia ​​rajoituksia. Niin intuitiivisesti, ehkä, miksi on 1 jaettuna 10, mukaan minun tietokone täällä, ei vain 1/10, 0,10? Joo. Mitä mieltä olet? Yleisöstä: kantaluku on erilainen? DAVID J MALAN: mikä on? Voi, kantaluku on erilainen? Joten ei aivan. Se on itse asiassa enemmän olennainen laitteisto. Muut ajatuksia? Joo. Yleisöstä: He edustavat numerot toisin? DAVID J MALAN: Niin they-- Oikea. Ne edustavat numerot toisin. Epätarkasti, ilmeisesti. Jotta is-- No, eri tavoin kuin mihin? Tai keneltä? Meiltä? Yleisössä: Joo. He eivät käytä desimaalin järjestelmä [kuulumattomiin]. DAVID J MALAN: OK. Joten siinä mielessä, ne eivät Käytä desimaalin järjestelmää. Alla huppu, kaikki on todellakin binary, ja, joka liittyy itse asiassa. Mutta se on vieläkin yksinkertaisempi selitystä kuin että. Joo. Yleisöstä: He on vain niin monta bittiä. Ne voi tallentaa vain tiettyyn määrin, kuten kanssa desimaaleja. DAVID J MALAN: Joo. Tämä on mitä todella saada sitä. On käynyt ilmi, että tietokoneet tyypillisesti, tulee aina vain käyttää rajallinen määrä tietoa edustaa jotain. Oikea? Loppujen lopuksi meillä on vain kiinteä määrän kiintolevytilaa. Meillä vain on kiinteä summa RAM tai tietokoneen muistiin. Ja jos sinulla on vain kiinteä määrä jotain, varmasti et voi itse laskea äärettömään tai useita haluat. Te, tavallaan, on valita, mitä alue arvojen aiot tukea. Ja niin esimerkiksi viikon tai kaksi sitten, kun puhuimme ASCII, ja puhuimme 8 bittiä, tai tavun, niin sanoakseni, suurin numero voisimme edustavat 8 bittiä oli mitä? 255. Ja me voi edustaa 256 kokonaisarvot mutta ei jos käytämme yhden niistä on 0-- No, mutta jos me viettää yksi heistä 0, sitten suurin numero on, tietenkin, 255. Joten se kääntyy pois, että tämä on Tässäkin tapauksessa, tässä yhteydessä. Aloimme puhua, viime kerralla, noin liukulukuina, joka eroavat kokonaislukuja, vuonna että heillä desimaalipilkkua ja toivottavasti joitakin numeroita sen jälkeen, mutta ne ovat liian. Tietokone on vain tyypillisesti menossa käyttää 32 bittiä, ehkä 64 bittiä edustamaan liukulukuarvoksi. Joten vaikka olemme kasvaneet matematiikan ja tietäen että voit ehdottomasti olla ääretön määrä numeroita desimaalipilkun jälkeen, ei jos sinulla on rajallinen muisti. Te, tavallaan, on pyöreä, tai valitaan tarkkaan numerot aiot edustaa. Ja niin voit ajatella, tavallaan, mikä on tietokoneen lähin lähentämisestä arvoon 1/10 että se voi saada, vain 32 tai niin bittiä. Ja se ei ole vain kymmenesosa. Esimerkiksi, jos muutan tämän 1/3, mikä mielestämme on jopa helpompaa. Joten 1 jaettuna 3. Saanen tallentaa tiedoston. Anna minun mennä eteenpäin ja kääntää se. Ja haluan uudelleen käyttää sitä. Tässäkin, ilmeisesti, kolmasosa ei ole 0,3 ja sitten ääretön määrä 3: n jälkeen. Sinulla on tämä epätarkkuus lopussa. Joten me ihmiset ovat oikein, ja mitä olet oppinut on, itse asiassa, oikea, mutta olemme törmäämättä ylös vastaan ​​joitakin rajoituksia. Ja mitä ajattelin olimme tehdä tänään, on alkaa tarkastelemalla, rehellisesti, traagisia seurauksia joskus, kun ihmiskunta ei aivan toteuttaa Tämän todellisuuden ja nämä rajoitukset. Ja näemme sarjan vinjettien alkaen History Channel, joka vie Katso, miten asiat ovat menneet pieleen. Se on noin 8 minuuttia pitkä, ja me palaamme jälkeen ja katsomaan tarkalleen mitä muuta voi mennä pieleen. Jos voisimme himmentää lights-- [VIDEOTOISTOSTA] -Tietotekniikka, Olemme kaikki tulevat hyväksymään usein turhauttavaa ongelmia, mennä heidän kanssaan. Bugs, viruksia, ja ohjelmistot glitches ovat pieniä hintoja maksaa mukavuutta. Mutta korkean teknologian ja nopea sotilas- ja avaruusohjelma sovelluksia, pienin ongelma voi suurennetaan osaksi katastrofi. 4. kesäkuuta 1996 tutkijat valmistettu käynnistää miehittämättömän Ariane 5 raketti. Se kantoi tieteellinen satelliittien suunniteltu luoda tarkasti, miten Maan magneettikenttä toimii vuorovaikutuksessa aurinko tuulet. Raketti rakennettiin Euroopan avaruusjärjestö ja nostetaan pois sen laitos rannikolla Ranskan Guayana. -Ja Noin 30 sekunnin lento, he ensin huomasi jotain oli vialla. Että suuttimet kääntyvä tavalla he todella pitäisi. Noin 40 sekunnin lennon, selvästi ajoneuvon oli vaikeuksissa, ja silloin he tekivät päätös tuhota sen. Range Safety Officer kanssa valtava sisua painetaan nappia, räjäytti raketti ennen kuin se tullut vaaraa yleiselle turvallisuudelle. -Tämä Oli neito Voyage of Ariane 5, ja sen hävittäminen otti aseta koska virhe upotettu raketti ohjelmisto. -The Ongelma Ariane oli, että oli määrä, joka tarvitaan 64 bittiä ilmaista, ja hän halusi muuntaa se 16 bittinen numero. Ne olettaa, että numero ei koskaan tule olemaan kovin suuri, että useimmat niistä numeroiden 64 bittinen numero oli 0 n. He olivat väärässä. -edellä Kyvyttömyys yhden ohjelma hyväksyä sellainen määrä tuottaman toinen oli juureen vika. Ohjelmistojen kehittäminen oli tullut erittäin kallista osa uutta teknologiaa. Ariane 4 raketti oli ollut hyvin onnistuu, niin paljon ohjelmiston luotu se oli myös käytetty Ariane 5. -The Perusongelma oli se, että Ariane 5 oli nopeampi, kiihtyi nopeammin. Ja ohjelmisto ei ollut osuus siitä. -The Tuhoaminen raketti oli valtava taloudellinen katastrofi, kaikki johtuu minuutin ohjelmistovirhe. Mutta tämä ei ollut ensimmäinen aika tietojen muuntaminen ongelmat oli vaivannut moderni raketti teknologiaa. In 1991, jossa alku Ensimmäisen Persianlahden sodan, Patriot ohjus kokenut samantyyppinen numero muuntaminen ongelma. Tämän seurauksena 28 ihmistä, 28 amerikkalaista sotilasta kuoli ja noin 100 muuta haavoittui, kun Patriot, joka piti suojaamaan saapuvan scuds, epäonnistui ampua ohjus. -Kun Irak hyökkäsi Kuwaitiin ja Amerikassa käynnisti Desert Storm vuoden 1991 alussa, Patriot ohjus akkuja lähetettiin suojella Saudi-Arabia ja Israelin Irakin Scud ohjus hyökkäyksiä. Patriot on yhdysvaltalainen, keskipitkän kantaman pinta-ilmaan järjestelmä valmistanut Raytheon yhtiön. -The Koko Patriot torjuntahävittäjä, itse, on noin, noin 20 jalkaa pitkä. Ja se painaa noin 2000 kiloa. Ja se harjoittaa taistelukärjen on about-- Minusta se on noin 150 kiloa. Ja taistelukärjen, itse, on korkea räjähtävä, joka on fragmentteja sen ympärille. Kotelo taistelukärjen on suunniteltu toimimaan kuten Buckshot. -The Ohjuksia kuljettaa, 4 per kontti, ja kuljetetaan puoliperävaunu. -The Patriot anti ohjus järjestelmä ulottuu vähintään 20 vuotta. Se oli alun perin suunniteltu kuten ilmapuolustuksen ohjus ampua alas vihollisen lentokoneita. Ensimmäisessä Persianlahden sodan, kun että sota tuli mukaan, armeija halusi käyttää sitä ampua alas scuds, ei lentokoneet. Irakin Force ei ollut niin suuri ongelma, mutta armeija oli huolissaan scuds. Ja niin he yrittivät päivittää Patriot. -Intercepting Vihollinen ohjus kulkee Mach viisi tultaisiin riittävän haastava. Mutta kun Patriot kiidätettiin käyttöön, armeija ei ollut tietoinen Irakin muutos, joka teki niiden scuds lähes mahdotonta lyödä. Mitä tapahtui, on scuds että oli tulossa, oli epävakaa, he olivat huojuu. Syy tähän, oli irakilaisia, jotta päästä 600km ulos 300 km kantaman ohjusten, otti paino ulos edessä taistelukärjen ja teki ydinpommi kevyempi. Joten nyt, Patriot yrittää tulla on scud, ja suurimman osan ajasta, ylivoimainen enemmistö aika, se vain lentää viilettää. -Kun Patriot verkonhaltijoiden tajusi Patriot jäi sen tavoite, ne räjähti Patriot taistelukärjen, vältetään mahdolliset uhreja, jos se annettiin pudota maahan. -Se Oli mitä useimmat ihmiset näkivät, näitä suuria tulipalloja taivaalla, ja ymmärtää väärin kuuntelevansa Scud ydinkärkien. Vaikka yöllä taivas, Patriots ilmestyi olla onnistuneesti tuhota scuds kello Dhahran, ei voisi olla virhe sen toiminnasta. Siellä Patriot tutkajärjestelmän kadottaa saapuvasta Scud, ja ei koskaan käynnistetty, koska ohjelmisto virhe. Se oli israelilaisten joka ensimmäisenä löysi että mitä kauemmin järjestelmä oli, enemmän aikaa ristiriita tuli, koska kello sulautettujen järjestelmän tietokoneelle. -Noin 2 viikkoa ennen tragedia Dhahran, israelilaiset ilmoitetaan puolustusministeriön, että järjestelmä oli menettää aikaa, että noin 8 tuntia käynnissä, he huomasivat, että järjestelmä oli tulossa huomattavasti epätarkempi. Puolustusministeriö vastasi kertoo kaikki Patriot paristot että ei jätä järjestelmät on pitkään. He koskaan sanonut mitä pitkään oli. 8 tuntia? 10 tuntia? 1000 tuntia? Kukaan ei tiennyt. -The Patriot akku sijoitettiin kasarmin klo Dhahran, ja sen puutteellinen sisäinen kello, oli ollut yli 100 tuntia yönä 25. helmikuuta. -Se Seurataan aika tarkkuus noin 1/10 toisen. Nyt 1/10 toinen on mielenkiintoinen numero koska se ei voi olla ilmaistuna binary, tarkalleen. Mikä tarkoittaa, se ei voi ilmaistaan, tarkalleen, missä tahansa moderni digitaalisen tietokoneen. On vaikea uskoa, mutta käyttää tätä esimerkkinä. Otetaan numero, 1/3. 1/3 ei voida ilmaista desimaali, tarkalleen. 1/3 on 0,333 jatkunut ääretön. Ei ole tapa tehdä se, jossa absoluuttinen tarkkuus, vuonna desimaalin. Juuri samanlaista ongelma tapahtui Patriot. Kauemmin järjestelmä juoksi, huonompi aika virhe tuli. -Kun 100 käyttötunnin, virhe ajoissa oli vain noin 1/3 toisen. Mutta suhteen kohdistaminen ohjus kulkee Mach 5, se johti seuranta virhe yli 600 metriä. Olisi kohtalokas virhe että sotilaat Dhahran. Mitä tapahtui, on Scud lanseeraus oli havaita varhaisen varoituksen satelliitteja, ja ne uutta, että Scud oli tulossa niiden yleistä suuntaa. He eivät tiedä, missä se oli tulossa. -Se Oli nyt jopa tutka komponentti Patriot järjestelmä, puolustaa Dhahran, paikantaa ja pitää kirjaa saapuvan vihollisen ohjus. -The Tutka oli erittäin fiksu. Se todella seurata asema Scud ja sitten ennustaa missä se todennäköisesti olisi, seuraavan kerran, tutka lähetti pulssi ulos. Jota kutsuttiin alue portti. -Sitten, Kun Patriot reagoi tarpeeksi aikaa on välitetään mennä takaisin ja tarkista seuraava paikka tämä havaitaan esine, se menee takaisin. Joten kun se meni takaisin väärään paikka, se sitten ei näe mitään esinettä ja se päättää, että ei ollut esine, se oli väärä tunnistus, ja laskee radan. Saapuvan Scud katosi tutkanäytöltä, ja sekuntia myöhemmin, se lyönyt osaksi kasarmi. Scud tappoi 28 ja oli viimeinen yksi potkut aikana ensimmäisen Persianlahden sodan. Traagisesti, päivitetty ohjelmisto saapui Dhahran seuraavana päivänä. Ohjelmisto virhe oli vahvistettu, sulkeminen yksi luku vaikeuksissa historia Patriot ohjus. [Lopeta toisto] DAVID J MALAN: niin me katsomaan joitakin samankaltaisia ​​rajoituksia vain vähän. Mutta ensimmäinen, katsotaanpa siirtyminen muutaman FYI on. Joten one-- tänä viikonloppuna, siellä on Super kohdat, joiden on tarkoitus syrjäyttää säännöllistä osiin, jotka käynnistyy viikon kuluttua. Tutustu CS50 verkkosivuilla lisätietoja näistä. Ne myös kuvattiin ja suoratoistona elää niille estynyt. Harjoitus 1 on Tietenkin verkkosivuilla jo, ja me katsomaan että vain vähän. Ja virka liian ryhtyy aseta maanantaista torstaihin. Joten tämä oli kaikkein kanoninen ohjelma tarkastelimme viime kerralla. Se on kuin yksinkertaisin ohjelmalla voit kirjoittaa C, ja sekin on hieman rohkea väite. Oikea? Koska siellä on paljon näennäisestä monimutkaisuus tämän. Joten ottaa vilkaista mitä jotkut näistä tekijöistä olivat ja sitten yrittää tarjota henkinen malli miten nämä yksinkertaisin ohjelmien työtä, ja sitten aloitamme tarkastella asioita yhä monimutkaisemmaksi. Joten tämä linja tässä korosti nyt, keltainen, mitä sanomme, viime kerralla, että tämä tekee meille? Mikä tarkoitus se palvelee? Kuka tahansa kauemmaksi? Joo. Yleisöstä: [äänetön] DAVID J MALAN: Hyvä. Joten se antaa sinulle pääsyn komentoihin, tai katsotaanpa soittaa heille toimintoja, että joku muu kirjoitti, että ilmoitetaan, niin sanotusti jonkin muun tiedoston. Joten näemme mitä .h tiedosto on vs. .c tiedoston, lopulta. Mutta nyt, vain tietää että printf, esimerkiksi, on yksi toimintoja, jotka ovat olleet ilmoitettu jonkin muun tiedoston, jonnekin muualla pilvi kiintolevylle että pystymme käyttämään printf ja käyttää sitä ilman keksiä pyörän itse. Samaan aikaan, tärkein. Mikä oli analoginen tärkeimpien, viime viikolla? Joo. Yleisöstä: Vihreä lippu napsautetaan. DAVID J MALAN: Joo. Scratch: n, kun vihreä lippu napsautetaan. Se on kuin palapelin pala että potkuja asiat pois. Ja niin samoin tekivät maailma päätti joitakin vuosia sitten, että C, ja joukko muita kieliä, jos haluat kirjoittaa ohjelma, ensimmäinen toiminto on kutsua, tärkein. Ja se on näyttää tältä. Mutta tulemme takaisin, toisen kerran, mitä, int, ja, mitätön, tarkoittaa tässä yhteydessä. Nyt aaltosulkeita ovat ystävällisiä samankaltaisten Scratch n palapelin pala muoto joka kiteyttää jotkut rivien. Ja joukossa viivoille täällä, on tämä yksi täällä. printf on elin, jonka tehtävänä on elämä on tulostaa muotoillun merkkijonon. Ja alustettu, tarkoitan sinua voi kytkeä paikkamerkki arvojen, ja voit määrittää, kuinka monta desimaalin pistettä, kuinka monta numeroa tulostaa jälkeen desimaalipilkun ja vastaavat. Ja printf, tietenkin, kestää yhden tai enemmän väitteitä tai parametreja, muuten tunnetaan, yksinkertaisemmin, tuloina. Joten printf, kuten paljon toiminnot, vie tulot. Ja ne tulot ovat omaksuneet kahden suluissa täällä. Ja sisältä ne on yksi panos. Se on merkkijono, kuten olemme sitä kutsui, joka on vain merkkijono, kuten sana tai lause, tai koko essee jopa, välillä lainausmerkkeihin. Ja se mitä tulee vaikuttamaan käyttäytyminen Printf, koska tietenkin, se on vain yleinen tulostustoimintoa. Se ei tule tietää, mitä tulostaa, ellet kerro sitä. Ja sitten, jotkut pikkuseikat. Mitä sanomme tämä outo symbolijonon on? Joo. Yleisöstä: Uusi linja. DAVID J MALAN: Uusi linja. Joten se kääntyy pois, et voi vain lyödä, kirjoita, kun kirjoitat ohjelman. Yleensä kääntäjä on menossa hieman hämmentynyt siitä, mitä tarkoitat. Pikemminkin sinun täytyy kirjaimellisesti sanoa, anna minulle uusi rivi täällä. Ja niin / n on mitä me yleensä soittaa paeta merkki. Niin n, sillä uusi rivi. Ja kääntäjä tietää että kun se näkee / n, se on itse asiassa aiheuttaa tietokoneen, lopulta, tai printf, tässä tapauksessa, tulostaa todellinen uusi linja, kuten lyömällä, kirjoita, näppäintä. Ja lopuksi, mitä teki sanomme tämä pala syntaksi on? Mitä se edustaa? Joo. Yleisöstä: [äänetön] DAVID J MALAN: Se on vain päähän. Se on loppuun julkilausuman. Ja ymmärtää, että emme laita ne kaikkialla. Emme missään nimessä laittaa päissä jokaiselle riville. Esimerkiksi, siellä ei mitään ensimmäinen rivi, siellä mikään linjalla kanssa, tärkein, siellä ei mitään jälkeen aaltosulkeita, mutta voit alkaa nähdä ja saada perehtynyt missä sitä vaatinut. Ja se on melkein aina, kun toiminto soita tai lausunto, joitakin toimia että olet todella ottaen. Ja tiedämme nyt, varsinkin jos joukossa vähemmän mukava, nämä ovat erilaisia ​​tyhmyyksiä että päädyt vahingossa paukutti päätäsi seinää vasten yli. Koska voit olla loogisesti luottaa joitakin ongelmia olet ratkaistaan ​​ongelma asettaa, ja hemmetin asia vain ei käänny tai jopa käyttää. Ja niin usein, varhain, se tulee johtua siitä, olet jäänyt suluissa, tai olet jäänyt puolipisteellä. Ja niin vain olla tietoinen tällaisia ​​asioita, ja yritä saada turhautunut niitä, koska hyvin nopeasti tekee tämän tullut vanha hattu. Mutta se on erittäin helppo saada turhautunut varhain, seurauksena. Joten nyt, nyt katsomaan miten tämä linja on todella työtä ja sitten katsoa hieman monimutkaisempi yksi. Meillä on täällä, kyky laatia tällä näytöllä. Ja oletetaan, että tämä on minun tietokoneen näytöllä, mutta minä kirjoitan, Hei ohjelma, ja en ole toteutettu, printf. Joku muu on toteuttanut, printf. Kuka haluaisi väittää on toteutettu, printf? Jos me voi? Okei, mikä on nimesi? Opiskelija 1: [? Copal. ?] DAVID J MALAN: Copal, tule ylös. Tule ylös. Selvä. Joten meillä on, täällä, jotkut nimilaput, koska teemme pieni peli tämän. Ja soitamme sinulle, printf. Ja jos haluat tulla tänne, mitä olen juuri piirretty ruudulla, se on yksinkertaisesti, siellä minua, tämä. Selvä, joten, Hei, nimeni on, printf, jos haluat laittaa että. Selvä. Ja jos voit mennä stand tietokoneen näytön ikään kuin olet toiminnon mukana tämän tietokonejärjestelmään. Ja tarkoitus elämässä on todella tulostaa jotain. Mutta aivan kuten ohjelman me juuri ollut ruudulla, täällä, aiomme pitää todella antaa sinulle syöttää. Ja niin, jos minun panos, täällä, on ilmeisesti, mitä johdetaan printf, katsotaanpa sellainen pilkata sitä näin. Aion kirjaimellisesti kirjoittaa paperille, "Hei, maailma" kenoviivat N. Ja tehdä selväksi, mitä Olen juuri piirretty tämä pala paperia, näyttää tältä. Joten kun käytän tätä ohjelmaa, ja tämä keltainen koodiriviä saa suorittaa, se on ikään kuin minä, hei ohjelma, am luovuttamalla panoksensa pois toiminto että joku muu kirjoitti. Ja jos, sormella, voisi todella, sormella, piirtää ruudulle tahansa se on sinun on luovutettu, vaikutus, lopulta, on nähdä juuri sitä, ruudulla. Ja vähän nurkassa olevassa asiassa. Ja hyvä, meidän ei pitäisi nähdä , uusi linja, tässä vaiheessa. Se olisi väärin sinulle nimenomaisesti piirtää rivi. Mutta jos me pidetään kirjallisesti sanoja näyttö, he päätyisi alle. Joten kiitos paljon, mutta kiinni täällä vain hetken. Nyt tarvitaan yksi muu vapaaehtoinen, jos voisimme, joka on menossa on näytellä of-- Se on vain ihmistä orkesteri juuri nyt. Miten about-- OK. Juuri täällä. Tule ylös. Mikä on nimesi? Opiskelija 2: [? Ivay. ?] DAVID J MALAN: Anteeksi? Opiskelija 2: [? Ivay. ?] DAVID J MALAN: Ethan, tule ylös. Ei? Sain, että väärin, jopa kun sanoit sen kahdesti? Tule ylös. On vaikea kuulla täällä. OK. Ja olen pahoillani, mikä on nimesi? Opiskelija 2: [? Ivay. ?] [? DAVID J MALAN: Ivay. ?] OK. Nyt, jos et mielessä, olet GetString. Opiskelija 2: OK. Viileä. DAVID J MALAN: Joten jos haluat seistä täällä vain hetken, Katsotaanpa katsomaan hieman monimutkaisempi ohjelma, joka on nyt kolme riviä koodia. Joten meillä on, yksi, ilmoita nimesi käyttämällä printf; kaksi, puhelun GetString, seuraa toimeksiannon muuttuja nimeltä, nuora s, tai kutsutaan s; ja sitten toinen puhelu, printf, mutta tällä kertaa kaksi tuloa. Joten olemme jo tehneet valtio nimesi, tai pikemminkin olemme jo tehnyt printf puhelun. Joten aion kirjoittaa, valtion nimesi. Ja niin, mitä aion pass, printf, vain hetken, on yksinkertaisesti tämä. Joten jos haluat mennä eteenpäin ja tehdä tämä ruudulla, se on teidän panos nyt. Selvä. Ja unohtaa string, meillä on nyt oman koodiriviä täällä. Joten, GetString, tarvitsemme todella soittaa, GetString. Joten tarkoitus elämässä on vain kävellä ulos orkesteri, jos voisit, ja saada jonkun nimi. Mutta katsotaanpa antaa sinulle jotain laittaa sen. Jos haluat, mennä eteenpäin ja saada merkkijono, saada jonkun nimi että paperille, jos voisit. Selvä. Ja näemme, vain hetken, jonka nimi saamme. Samaan aikaan, mitä aion on valmis, on tyhjä pala paperin, jossa aion tallentaa arvosta riippumatta se on että GetString palaa minua, Minä, joka merkkijono muuttuja nimeltä, s. Selvä. Joten mitä sinulla on täällä? Nik. Selvä. Joten meillä on Nik nimi tähän. Joten tämä on mitä kirjaimellisesti on palautettu minulle, niin sanotusti, jota GetString. Minä, nyt aijon toteuttaa vasen puoli kyseisen ilmaisun, jos en yksinkertaisesti kopioi alas, päivän tarkoituksiin, Nik. Joten nyt, minulla on muuttuja nimeltään, s, tallentamiseen Nik nimi. Olen jo luovutetaan printf, edellinen perustelu. Mutta meidän kolmas ja viimeinen rivi koodi, olen oikeastaan ​​on käsi printf jotain hieman different-- "Hei,% s" kenoviiva n. Ja niin viimeinen aion jotta send-- viimeinen asia olen menossa kirjoittaa nyt, on tämä. Joten kaksi riviä koodia, tai pikemminkin viimeinen rivi koodia, vaatii kaksi inputs-- yksi, tämä, ja kaksi, tämä. Joten jos meidän printf toiminto voi nyt ottaa nämä tulona, haluan tyhjentää näytön sinulle. Oikeastaan ​​ei, voit mennä eteenpäin. Jätämme sen, koska se on sama ohjelma. Meidän pitäisi nähdä, Hei, Nik. Selvä. Joten tämä oli melkoisesti vanteet hypätä läpi, vain kirjoittaa, ilmoittamaan omat nimi, ja, hei, Nik. Mutta tämä yksinkertainen ajatus viesti kulkee, panos kulkee ja lähtö vastaanottavan, on täsmälleen mallin aiomme olla jopa kaikkein monimutkaisia ​​toimintoja. Joten kiitos paljon teille molemmille. Meillä on ihana stressiä pallo täällä sinua varten. Ja kiitos meidän GetString ja printf vapaaehtoisten keskuudessa. Kiitos. Selvä. Kiitos teille molemmille. Joten olemme puhuneet tähän mennessä, enimmäkseen noin jouset. Ja käy ilmi, että C voi todella ymmärtää muutamia erilaiset tiedot. Itse asiassa, sallikaa katsokaa näitä täällä. Niin C, ja paljon kieliä, ymmärtämään asioita kutsutaan merkkiä. Nieriä on yleensä yksittäinen tavu, tai kahdeksan bittiä. Ja se edustaa yhden merkin, kuten kirjain, tai pääoman kirjain, tai pieni kirjain Tai huutomerkki, tai mikä tahansa merkki, että voit kirjoittaa päälle näppäimistön, ja joskus jopa enemmän. Olemme myös tapahtua nähdä kelluu. Float on, yleensä, 32-bittinen arvo, tai neljä tavua koska uudelleen, yksi tavu on kahdeksan bittiä. Joten kellua on liukulukuarvoksi, jotain desimaalipilkun. Ja todellakin, sitähän elokuva puhui siitä, milloin ne puhui kelluva pistearvot, jotkut Kiinteä määrä bittejä käytetään edustamaan reaaliluku. Mutta on myös asioita kutsutaan nelinpelin. Olemassa Java, jos olet ottanut APCS, ja kaksinkertainen, koska nimi onneksi ehdottaa, on kaksi kertaa niin suuri kuin käteisvaroja. Se on edelleen todellinen määrä, se vain on enemmän bittejä jolla on yhä tarkempia, tai tallentaa jopa suurempia määriä. Int on helppoa. Puhuimme siitä viime kerralla. Se on vain kokonaisluku. Ja se on yleensä 32 bittiä, tai neljä tavua. Ja niin, jos sinulla on, katsotaanpa nyt, 32 bits-- ja teimme tällä viikolla 0, koskaan niin briefly-- jos sinulla on 32 bittiä, mikä on suurin numero voi edustaa kuin kokonaisluku? Antaa tai ottaa? Se on kuin 4000000000, ja se on vain, jos olemme edustavat positiivisia lukuja vain. Jos sinulla on 32 bittiä, ja haluat edustavat negatiiviset luvut samoin, teidän alue on pääosin negatiivinen 2000000000 positiiviseen 2000000000. Mutta yleisesti, aloitamme 0 mennä jopa 4000000000. Sinun ei tarvitse tietää tarkasti, mutta voimme nähdä tämän, itse asiassa, jos vain avata hieman laskin, täällä. Voin tehdä 2 32, ja juuri niin iso, Kuinka monet arvot voit edustavat, 32 bittiä. Ja se on noin 4 miljardia euroa. Niin me pitää nähdä, että määrä muutaman eri paikoissa. Mutta jos tarvitset enää numerot kuin se, se kääntyy siellä n jotain kutsutaan pitkään pitkään. Ja pitkä pitkä on yleensä 64 bittiä, joka tarkoittaa että se on suuruusluokkaa jopa suurempi kuin int. Joten en voi edes lausua suurin numero, joka voi edustaa, mutta se on huomattavasti suurempi. Nyt kun syrjään, historiallisesti, jos int on 32 bittiä, ja pitkä pitkä on 64 bittiä, kuinka iso on pitkä, ei pitkä pitkä? Luulisi se on pidempi kuin int mutta ehkä vähemmän kauan kuin pitkään pitkään, mutta se todella riippuu. Ja niin se kääntyy pois yksi turhautumista liian, kanssa kirjallisesti koodi tietyille järjestelmille, on se, että kaikki nämä tietotyyppejä on ennalta määrätty arvo. Joskus se on näin monta bittiä. Joskus se on niin monta bittiä. Joten te todella täytyy tietää, joskus, mitä laitteita käytät oman ohjelmiston. Onneksi, muita kieliä ja muut tietotyyppejä että nyt olemassa, voit olla täsmällisempi. No, näimme merkkijono, ja näimme bool, liian, mutta se osoittautuu ne tulevat vain CS50 kirjasto. Joten ne eivät ole rakennettu osaksi C. Nämä sijaan, tulevat tiedoston nimeltä CS50.h, että käymme lopulta kuori takaisin kerroksia. Mutta nyt, he vain datatyyppejä. Bool on tosi tai epätosi, ja merkkijono on merkkijono, kuin sana. Nyt printf, olemme nähneet, on paikkamerkkejä,% s on yksi. Ja saatat pystyä, nyt, Päättelen näistä muista esimerkeistä, kuinka sinulla voisi olla paikkamerkki Eri tietotyyppejä. Esimerkiksi yrittää arvata, jos halusi tulostaa yhden char avulla printf, paikkamerkki on luultavasti% C. Ja jos haluat tulostaa kokonaisluku paikkamerkki,% i. % LLD on pitkä pitkä desimaalin arvo, mutta pitkä pitkä, niin että karttoja, jotka. Ja sitten% f kelluva pistearvo tai kaksinkertainen, joten joskus he käyttää uudelleen eri yhteyksissä. Joten näemme ja käyttää joitakin niistä ajan mittaan. Ja printf ja muita toimintoja myös tukea muiden tilanvaihdot, ja joskus, nämä ovat tarpeen. Joten kenoviiva n on uusi rivi. Kenoviiva t, ei kukaan halua ottaa puukottaa? Yleisössä:-välilehti. DAVID J MALAN: välilehti. Joten jos todella haluat tulostaa välilehden, ei kiinteä määrä välilyöntejä mutta todellinen sarkainmerkin, et osuivat, välilehti, näppäintä, yleensä, voit itse tehdä kenoviiva t. Kenoviiva lainausmerkki, miksi olisin koskaan halua, että? Oikea? Miksi en voi vain kirjoittaa lainausmerkki minun näppäimistö? Yleisöstä: Koska muuten se on menossa mielestäni se on lopussa Like teidän tulostaa [? tekstiä. ?] DAVID J MALAN: Aivan. Muista, meidän printf esimerkkejä, kun oli ohimennen printf tuotantopanosten, vasemmalla että syötemerkkijonon ja oikealle puolelle panos kevät, tietenkin, oli lainausmerkki. Jos oma panos on kaksinkertainen lainaus keskellä että, tietokone saattaa mahdollisesti hämmentyä, siitä, tekee tämän lainausmerkki kuuluvat keskellä? Kuuluuko se vasemmalla yksi? Onko se kuuluu kanssa oikea? Ja niin, jos haluat tehdä sen erittäin kirkas, et Kenoviiva lainausmerkki, niin että se on karannut, niin sanoakseni, ja se ei ole sekoittanut jotain muuta. Ja siellä on muutamia muita täällä, kenoviiva R, heittomerkkejä, 0, että me näkisimme ajan, samoin. Ja nyt, entä toimintoja? Niin toimia, voimme ryhtyä tähän asti tällä kielellä, C, no, olemme nähneet, printf, tietenkin, ja kaikki ja muut ruudulla, täällä, että käytämme varten Kurssin ensimmäisten viikkojen vain, tulevat kun CS50 kirjasto. Ja he paljon helpompaa, vuonna C, todella saada käyttäjä syöttää. On käynyt ilmi, että C, ja rehellisesti muutaman kielillä, se on todellinen kipua niskassa tehdä jotain yksinkertaista, kuten nopea käyttäjä Näppäimistön, hänen tulo. Ja niin nämä toiminnot tekevät siitä helpompaa. Ja se on myös virhe tarkkailun kaikkialla, niin, että kun muistuttaa keskiviikkona, me näki, yritä, varoitus, kun en yhteistyötä, ja olen kirjoittanut sanan, numeron sijasta? Olemme tehneet raskaan työn alussa on varmistaa käyttäjän yhteistyötä. Mutta nämä ovat vain koulutus pyörät että me lopulta, ja nopeasti, ota pois. Niin kertaus, sitten, sallikaa vilkaista, aivan kuten teimme Scratch, on jotkut kanoninen konstruktioita C. Tämä on tarkoitus, lajitella of, olla tuulispää kiertue, juuri niin, että sinulla on viite ja että olet nähnyt asioita ensin. Mutta sitten me tarkastelemme koodauksen käyttää joitakin näistä rakennuspalikoita. Niin paljon kuin Scratch, kun olimme lausuntoja, kuten, sanoa tai, odota, C, meillä on toimii hyvin, kuten printf. Jos haluamme ilmaista ehto C, se on samanlainen, hengessä, kyseiseen palapelin pala, joka näytti tältä Scratch. Mutta sen sijaan, me kirjaimellisesti vain kirjoittaa, jos. Ja sitten, suluissa, panemme kunnossa, jos tämä edellytys on mitä me will soittaa, taas, Boolen lauseke. Ja vielä, tämä on tavallaan pseudokoodin. Ja itse asiassa, // on kommentti. Se on vain Englanti sanat itselleni. Mutta tämä on yleinen rakenne, jos ehto. Mutta näemme konkreettisia esimerkkejä vain hetken. Jos haluat olla kaksisuuntainen tienhaarasta, aivan kuten teimme meidän vapaaehtoiseksi Keskiviikkona voit olla, muuta jos. Ja jos haluat olla kolmas ja viimeinen edellytys, tai oletus tilanne, voit olla vain muu lohko, siellä. Ja samoin, jossa Boolen operaattoreilla, voit, ja, ne yhteen. Ja näimme keskiviikkona, että se ei ole yhden et-merkki, se on kaksi, alemman tason syitä, jotka me lopulta nähdä ja pelata. Tai-ing asioita yhdessä on 2 pystypalkit. Käytössä Yhdysvaltain näppäimistö, tämä on yleensä keskeinen ja Shift-näppäintä edellä sinun Enter tai Return-näppäintä. Sitten on näitä asioita, käytämme ehkä kerran tai kahdesti. Ne ovat toiminnallisesti ekvivalentteja mitä voit tehdä, jos muu, jos, if muuta, rakentaa, mutta niitä kutsutaan kytkin. He näyttävät hyvin erilaisia, mutta me nähdä joitakin jakelun koodin, Tulevaa Harjoitus, todennäköisesti, että se on joskus vain kauniimpi tapa ilmaista koko nippu olosuhteet, ilman paljon aaltosulkeita ja paljon suluissa ja sisennys. Mutta ne antavat meille enää teho kuin olemme jo. Ja nyt silmukoita. Ja tämä yksi, niin selvitämme klo hieman hitaammin. Mutta sitten, alamme käyttää näitä, varsinkin niille jo tuttuja. Tämä on kanoninen tapa, jos uskomattoman arcane tapa, kirjoittaa silmukka C. Nyt silmukka Scratch oli melko yksinkertainen. Sinulla on, ikuisesti, lohko. Sinulla on, toista, lohko vain numero täytyy kirjoittaa. Ja, silmukka, voit toteuttaa sekä näistä ajatuksista, mutta se on hieman tekninen. Mutta suoraan sanottuna, se on myös suhteellisen yksinkertainen. Kun tiedät järjestyksessä toiminnot, kirjaimellisesti juuri menossa kytkeä arvojen ja kertoa tietokoneen mitä tehdä. Joten tässä on esimerkki. Tämä on silmukka, joka, aivan yksinkertaisesti, laskee yhden numeron ylös kautta toiseen. Ja vain vilkaisi sitä, vaikka sinulla on ole aiempaa kokemusta tällä kielellä, mitä numero se luultavasti alkaa laskemisen? OK, 0. Ja olen arvaamaan, että sen ansiosta, nähdä, että siellä int ja i, joka on muuttuja. Se alustetaan 0. Ja sitten myöhemmin, se näyttää olemme ohimennen printf, arvo. Ja itse asiassa, tein pienen kirjoitusvirheen täällä. Mutta se on helposti korjattu. Saanen lisätä, olen täällä. Meillä on nyt printf olento läpäissyt että paikkamerkki arvo. Ja mitä tulee laskea läpi? Yleisö: 50. 50. 49. DAVID J MALAN: 49. Joten 50, ensi silmäyksellä, tuntuu oikealta. Mutta että se kääntyy pois, tulee olemaan tilamme että pidämme tarkkailun. Ja aiomme lopettaa kerran En ole enää alle 50. Joten tämä silmukka, päinvastoin, pitäisi toteuttaa, kunhan i on pienempi kuin 50. Mutta heti kun se on 50 tai 51, tai vielä pahempaa, se pitäisi lopettaa automaattisesti. Selvä. Joten mitä todella tapahtuu täällä? Joten tämä on järjestys operaatioita silmukka. Yksi, sinulla on ns alustus. Tämä keltainen korostettu murikka koodia suoritetaan ensin, ja se on se vaikutus, että kohden Keskiviikko luultavasti kuvitella. Se luo muuttuja nimeltä I ja sen myymälää että muuttuja arvo 0. Joten i on 0 tässä vaiheessa tarina. Seuraava asia, että tapahtuu tässä rakenteessa, on, että ehto saa tarkistaa. Joten voin tarkistaa heti, on i alle 50? Ja tietenkin, vastaus nyt on, varmasti, kyllä. Kyllä, koska i on 0, ja se on varmasti vähemmän kuin 50. Mitä sitten tapahtuu, on että tämä koodiriviä saa teloitettiin. Ja itse asiassa, jos on useita riviä koodia näissä aaltosulkeita, he kaikki saavat toteutetaan yksi toisensa jälkeen. Ja vaikutus täällä, on ilmeisesti, tulostaa numero i, joka on menossa olla 0, ja sitten 1, ja sitten 2. Mutta miksi? Miksi se saa kasvatetaan? No, neljäs asia, joka käy niin, että tämä syntaksi saa suorittaa, kun puolipiste. i ++ on lyhenne tapa sanoa; ottaa arvo I, ja lisätään 1 siihen; ja sitten seuraavalla kerralla, lisätä 1 se; ja seuraavalla kerralla, lisätään 1 siihen. Jos siis pitää käynnissä, mitä tulee tapahtumaan seuraavaksi En aio alustaa olen koskaan uudelleen. Jos Pidin alustetaan i 0, tässä esimerkissä loppuisi koskaan, sillä Olisin jumissa 0. Mutta mitä tulee tapahtumaan on että ehto tarkistetaan, koodiriviä saa suoritetaan, aion kasvatetaan, ehto tarkistetaan, koodi toteutettu. Ja se pidetään pyöräily uudelleen, ja uudestaan, ja uudestaan, kunnes i ++ indusoi arvo 50. Ehto sanoo sitten, on 50 vähemmän kuin 50? Vastaus on tietenkin, ei ole, ja joten koko koodi pysähtyy täytäntöönpanosta. Ja jos sinulla on enemmän koodi ruudulla alhaalla, se mitä tapahtuu seuraavaksi. Se ponnahtaa ulos näistä aaltosulkeita ja edelleen tulostaa enemmän jälkeen. Joten vitsi nyt, mistä foxtrot, että sinun ehkä nyt ymmärtää. Se on aina hauskaa. Se on kuin naurahtaa sellainen suodattua, ja sitten huomaat ei pitäisi olla nauraa huumoria näin. Mutta on joitakin takeaway täällä, pedagogisesti, too. Joten käy ilmi, että olen puuttuva pala syntaksin, tai Foxtrot on kadonnut pala syntaksin täällä. Mitä puuttuu, että meillä on ollut joka toisessa esimerkissä, tähän mennessä? Paluu, on siellä, niin se on jotain muuta, että me palata ennen pitkää. Mitä puuttuu, vaikka? Joo. Yleisöstä: alustus [kuultavissa]. DAVID J MALAN: OK. Niin joo. Joten oikeastaan, tämä is-- No, ja määrä on alustettu yläpuolella, tai pikemminkin, julisti yläpuolella. Joten tämä on toinen tapa tehdä se. Mutta ei samalla linjalla se on voimassa kuitenkin. Entä täällä? Yleisöstä: Onko se aaltosulkeita? DAVID J MALAN: Joo. Joten aaltosulkumerkkien puuttuvat. Mutta tämä koodi, tarkoitan, heidän luotto, on todella, syntaktisesti voimassa. On käynyt ilmi, et tarvitsevat aaltosulkeita jos sinulla on vain yksi rivi koodia, joka haluat suorittaa sisällä silmukan. Nyt aina, luokassa ja kaikki meidän jakelu koodin, ovat aaltosulkeita Joka tapauksessa, vain selvyyden vuoksi. Mutta ymmärtää, että oppikirjoissa ja online-esimerkkejä, saatat hyvinkin nähdä kihara braces puuttuu joskus. Ja se on OK, jos mitä ovat sisennetty ja tarkoitettu on vain riviäkään koodia, eikä useita riviä koodia, mahdollisesti. Selvä. Joten liittyvät kysymys epätäsmällisyys, on kysymys ylivuoto, siinä mielessä, että samalla, ei luvulla on rajoituksia niihin aivan kuten liukulukuarvoja? Maailmassa liukuluku arvot, voimme vain olla niin tarkka, minkä jälkeen, joskus huonoja asioita voi tapahtua, ja meidän ohjelmat voivat olla buginen ja virhe. Nyt jopa kokonaislukuja, voit törmätä ongelmiin. Nyt kokonaisluku ei ole desimaalipilkun tai numeroiden jälkeen. Se on vain luonnollinen luku, tyypillisesti. Joten mikä voisi mennä vikaan int? Jos käytän int count, mikä voisi mennä pieleen? Näyttää paljon yksinkertaisempi. Joo. Yleisöstä: Jos numero saa [äänetön] DAVID J MALAN: Joo. Mitä jos lasketaan niin korkea, että te voi ilmaista, että todella iso määrä. Oikea? Jossain vaiheessa, olet menossa ylittää rajoja 32-bittinen arvo tai 64-bittinen arvo. Nyt taas, en ole varma, miten äännetään sana 64-bittinen arvo, mutta tiedän on 32-bittinen kokonaisluku, suurin arvo voi olla, jos se on vain positiivinen arvot, on noin 4 miljardia euroa. Joten jos yritän laskea 5000000000, jotain tulee tapahtumaan. Mutta katsotaanpa mitä itse asiassa, voi tapahtua. Kun maailma kokonaisluku ylivuoto, missä, tavallaan, ylivuoto kapasiteetti kokonaisluku, mitä voi tapahtua? Joten tässä on binaariluku se on takaisku 0. Se on kaikki 1: n, ja paikkamerkit siellä on toimivalta 2, joten tämä on binary. Nämä ovat siis 8, 1 bittiä ruudulla. Ja jos muistaa tai voit nopeasti tehdä matematiikasta, mitä arvo on edustettuna täällä nämä kahdeksan 1 bittiä? 255. Ja vaikka et olisi aivan varma matematiikka, voit tehdä sen ulos. Tai voit vain sellainen järjen kautta, Hetkinen, jos olen edustavat 8-bittinen arvo, ja minulla 256 mahdollista arvoa, mutta joista ensimmäinen on 0, Tiedän vain, että Suurin tulee olemaan 255, ja sitähän tämä voisi olla. Joten kai yritän lisätä 1 tähän arvoon. Mitä tekisit palkkaluokkaan koulu lisättäessä 1, ja se ei todellakaan sovi, koska sinun on suoritettava 1? Mikä on tämä numero menossa tulla kun lisäät 1? Se tulee tulla 0. Oikea? Koska jos sinulla on ollut enemmän bits-- Ja minä yrittää, sellainen, kirjoita se pois here-- jos meillä olisi enemmän bittejä, mitä me voisi tehdä täällä on lisätä 1, ja sitten saisimme tämän. Oho. Meillä olisi 1 bitin aina tänne. Mutta jos tämä on rajallinen arvo, se on vain 8 bittiä, ja se on ennalta määrätty tietokone, että 1 on käytännössä ole olemassa. Se juuri sellainen putoaa kalliolta. Joten jos lisäät 1-255, mitä arvo sinä ilmeisesti saada? 0. Ja niin numerot vahingossa, ja ehkä tahattomasti, päätyä kiertyy näin. Joten mitä voi olla vaikutuksia tämän? No, siellä on muutama eri asioita. Joten, se ei lopulta etsivät kuten 0, tahattomasti, mutta voit sellaista nähdä, jopa todellisessa maailmassa, parempi tai huonompi, ilmenemismuotoja tämä ajatus raja. Esimerkiksi joku teistä jotka koskaan pelannut Lego Star Wars, ei kukaan sattuvat tietää Enimmäismäärä kolikoita voit kerätä Lego Star Wars? Ota arvaus perustuu päivän johdattelevia kysymyksiä. Se on suurempi kuin 256 tai 255. Se on 4000000000. Joten se kääntyy pois, ja siellä on people-- jotkut googling vahvisti viime täksi yöksi ovat saaneet 4000000000 kultakolikoita, tai vaikka mitä, Lego Star Wars. Vaikka ilmeisesti, siellä huijata peli, siellä on vika tai ominaisuus, jonka avulla voit vain kertyy paljon ja paljon pisteitä. Mutta suurin mahdollinen arvo, mukaan Tämän kuvakaappaus joku I löytäneet verkosta, on todellakin, 4000000000. Nyt Miksi? Se on juuri 4000000000, luultavasti koska joku päätti, joka kirjoitti tässä pelissä, että he voisivat tehdä 4000000000, jotain, jotain, jotain, kuten arvo laitoin ylös kanssa laskin aikaisemmin, mutta se on vain hieman puhtaampi ihmisille sanoa enimmäismäärä on coins-- tai nastoja, kuten he kutsuvat them-- että olet voi kerätä on 4000000000. Ja niin, miksi tämä on? Miten LEGO peli täytäntöönpanosta laskuri joka on pitää kirjaa kolikoiden määrä sinulla on? He käyttävät mitä? Yleisöstä: Se pysähtyy laskenta jälkeen 4000000000. DAVID J MALAN: Se pysähtyy laskenta jälkeen 4000000000, eli voit päätellä, ohjelmoijana, että he luultavasti käyttäen 32-bittinen kokonaisluku. Kuten ohjelmoija kirjaimellisesti vain kirjoitit, int, hänen tai hänen koodi, ja se tyyppi muuttujan he käyttävät tallentaa jonkun koodi. Joten ei muuta ilmentymiä tällaisia ​​rajoituksia. Joten en ole pelannut tätä game-- ja luin ylös historia voidaan vahvistaa much-- mutta alkuperäinen versio Civilization, missä olet ilmeisesti vuorovaikutuksessa keskenään muut ja voivat sotia tai rauha, Gandhi piti olla yksi rauhallisin merkkiä, kuin minä ymmärtää sen, että ensimmäinen versio Civilization. Ja itse asiassa, asteikolla 1-10, hänen aggressiivisuus oli vain 1. Joten koskaan niin lievästi aggressiivinen, ilmeisesti. Mutta jossain vaiheessa, voit ilmeisesti asentaa demokratian teidän maantiede. Ja jos asennat demokratia omaan versio pelistä, sitten aggression taso laskee. Se on hyvä asia. Ihmiset ovat enemmän rauhallinen ilmeisesti siinä tilanteessa. Mutta ilmeisesti, joku teki ei ole, jos kunto alkuperäisessä versiossa koodin. Joten Gandhin aggression taso meni positiivinen 1, miinus 2, negatiiviseen 1, mutta peli ei ymmärtää negatiivisia lukuja. Mitä tapahtui oli Gandhin aggression taso meni 1, 0, ja negatiivinen 1, jolla oli vaikutus kiertyy olemaan aggressiivinen luonne peli, arvossa 255, asteikolla 1-10. Ja sen jälkeen, että on ollut lisää inkarnaatioihin tätä peliä, ja he pitäneet sitä eräänlainen Pääsiäismuna, että Gandhi on ilmeisesti niin hirveän aggressiivinen. Mutta se oli seurausta hyvin yksinkertainen ohjelmointivirhe että hyvin varhainen versio pelistä. Nyt enemmän huolestuttavan, enemmän Äskettäin Boeing 787 dokumentoitiin olevan vika, ei sellaista laitteen voit erityisemmin halua olla bugi. Ja oireita, että Luen täältä, artikkeli verkossa, oli tämä, malli 787 lentokoneen joka on kytketty jatkuvasti sillä 248 päivää voi menettää kaikki vaihtovirta, AC, sähkötehoa, koska generaattorin ohjausyksiköt, GCUs, samanaikaisesti menemättä Vikasietotila. Joten tämä oli varoitus Kun tämä ongelma havaittiin. Tämä ehto on aiheuttanut jonka ohjelmisto laskuri, sisäinen GCUs, niin kokonaisluku tai muuttuva, että tahto ylivuoto jälkeen 248 päivän jatkuvan tehon. Boeing on parhaillaan kehittää GCU ohjelmistopäivitys että korjaa turvalliselle käytölle. Niin paljon kuin ohjus skenaario, jossa heillä oli jonkinlainen muuttuja että oli laskenta, ja laskenta, ja laskenta, mutta vähitellen täynnä rajat pätevyytensä Samoin teki pirun lentokone on muuttuva ylivuoto jälkeen riittävästi aikaa käynnissä. Ja niin kieli poskessa tavalla työskennellä kiertää tämän ongelman on todella, käynnistät koneesi joka 247 päivää, niin että muisti saa pyyhkiä ja muuttuva palaa 0. Mutta huomaan, että tämä on hyvin suuri inkarnaatio ohjelmisto, mutta varsinkin kun kuulemme Applen käyttöjärjestelmien menee autoihin, ja itse ajaa autoa Google, ja tahansa määrä inkarnaatioihin ohjelmistojen jokapäiväisessä elämässämme, televisiot ja kellot, ja enemmän, ymmärtää ympäröi ohjelmisto, jotka kaikki on kirjoittanut meille ihmisille. Ja kuten me kaikki pian huomaamaan, se on erittäin helppo ja erittäin tyypillinen tehdä virheitä, kun kirjoitat ohjelmisto. Ja jos et kiinni niitä, pahoja asioita voi tapahtua. Nyt joskus, jotkut hauskoja asioita voi tapahtua, tai ainakin joskus me osaavat odottaa joitakin pahuus. Joten 0 jaettuna 0, palkkaluokasta koulu, on yleensä huono asia. Se on määrittelemätön. Ja se kääntyy out-- ja katsotaanpa minun mic voi poimia tämän up-- että Apple oli hauskaa tämän äskettäin. Joten minulla on iPhone täällä. Aion puhua Siri ja pyytää häntä antaa minulle vastaus 0 jaettuna 0. Mikä on 0 jaetaan 0? Siri: Kuvittele, että sinulla on 0 evästeet, ja jaat ne tasaisesti keskuudessa 0 ystävää. Kuinka monta evästeet ei kunkin henkilön päästä? Katso? Se ei ole mitään järkeä. Ja Cookie Monster on surullinen ettei evästeitä. Ja olet surullinen, että sinulla ei ole ystäviä. DAVID J MALAN: Se on tavallaan vastenmielinen. Joten tämä on mitä juuri sanoi siellä. Se on epämääräinen, se ei ole määritelty, ja todellakin, monet ohjelmointikielet tai, todella, kääntäjät havaita kun, ohjelmassa, yrittää jakaa 0 0. Hauskempaa kuin tämä kuitenkin on että ilmeisesti, Cookie Monster on Twitter näinä päivinä. Ja hän vastasi tähän, tähän, joka on aivan ihana. Mutta sallikaa vilkaista pari muuta konstrukteja, ja sitten laittaa tämän koodia käyttää, hyvässä tavoin. Joten se kääntyy pois, paitsi silmukoita, siellä jotain kutsutaan while-silmukka, joka näyttää erilaiselta ja toteutetaan hieman differently-- ja me lopulta nähdä examples-- mutta jossain mielessä, on yksinkertaisempaa, koska se ei salli voit alustaa ja päivittää rajan sisäpuolella silmukan. Voit silti toteuttaa sitä. Joten voit tehdä täsmälleen samoja asioita jossa taas silmukka, kuten silmukka, mutta syntaksi, ultimately-- koska liitämme lopulta see-- tulee olemaan erilainen. On jopa tehdä, kun silmukka, joka on todella hieman erilainen, että taas silmukka ja samalla silmukka aina tarkistaa niiden kunto ensin, jos luet tämä asia ylhäältä alas, se tavallaan näyttää se menee tarkista se tila viime koska se on todella viimeinen rivi koodia. Ja todellakin, että tulee olemaan hyödyllinen tiettyihin ohjelmiin, että me kirjoittaa, jos haluat vain sokeasti tehdä jotain ja lopulta tarkista kunto. Se ei ole välttämättä huono asia. Jos haluamme muuttujia, voimme tehdä sen usealla eri tavalla. Ja näimme Foxtrot sarjakuva, yksi tapa tehdä se, jossa voit ilmoittaa oman muuttuja, kuten int laskuri puolipiste, ja sitten later-- ehkä seuraava linja, ehkä 10 riviä later-- todella alustaa sen. Joten nämä 2 riviä koodia julistaa muuttuja tyyppiä int ja kutsuvat sitä laskuri, joten se antaa minulle tarpeeksi bittejä pitämään int. Ja sitten lopulta, se asettaa arvo 0 tuohon muuttujaan. Se järjestää 0: n ja 1: n kuvio, että tiedämme viime viikolla, edustaa numero tunnemme 0. Tai suoraan sanottuna, voit tehdä näin paljon enemmän ytimekkäästi, aivan kuten tämä. Nyt meillä on myös kyky soittaa toimintoja. Ja itse asiassa tässä on 2 linja ohjelma, tai ote sen, jonka avulla voimme todella kirjoittaa koodia että saa merkkijonon user-- paljon kuten meidän vapaaehtoinen hetki ago-- tallentamalla tulos muuttuja nimeltä nimi, ja then-- aivan kuten meidän vapaaehtoisten kanssa printf-- tulostaa nämä arvot johtamalla kahdessa väitteitä, merkkijono, jota seuraa vaihteleva kutsutaan, nimi, itse. Joten katsomaan, ennen palaamme Mario siellä, klo pari nyt, esimerkkejä tästä. Aion mennä eteenpäin ja avoin ylös, sanokaamme, toiminto-0.c. Ja kuten aina, tämä koodi on saatavilla kurssin verkkosivuilla, joten voit pelata yhdessä osoitteessa kotiin ja katsoa sen myöhemmin. Mutta tässä ohjelmassa se on olemus, riviltä 17-22. Pääohjelma on, jos Ohjelma on aina menossa aloittaa. Tämä ohjelma, ilmeisesti, on menossa tulostaa nimesi, paksusuoli. Se sitten menee soittaa GetString, aivan kuten teimme meidän vapaaehtoisille. Ja sitten, tämä on mielenkiintoista, se tulee soittaa PrintName. On käynyt ilmi, kaikki tällä kertaa, siellä näyttää olevan toiminto nimeltään PrintName. Joka tulostaa jonkun nimi. Emme tarvitse käyttää printf alkaen menneen, siellä PrintName. Mutta se harhaanjohtavia koska PrintName ei tulevat C. Ihmiset eivät keksiä se noin 40 tai 50 vuotta sitten, Tein sen sijaan. Ja itse asiassa, jos selaa alas edelleen, ilmoitusta miten voin kirjoittaa oman toiminnot C. me lopulta miksi me pitää sanoa, mitätön, muutamassa paikassa, mutta tänään, katsotaanpa katsokaa nimi. On line 24, jos haluat Luo oma toiminta, voit kirjaimellisesti kirjoittaa toiminnon nimi. Valitsin PrintName. Suluissa, sinua määritä sitten millaisia panosten, ja kuinka monta haluavat tämä toiminto ottaa. Tässä tapauksessa, haluan ottaa 1 muuttuja nimeltä, nimi, ja se tulee olemaan tyyppi, string, joten se menee olla joitakin merkkijono. Ja sitten, tämä program-- aivan kuten Scratch, voit olla mukautettuja palapeli pieces-- tulee olemaan tämän mukautetun käyttäytymistä. Se tulee soittaa printf ohimennen, Hei, paikkamerkki, ja sitten se tulee kytkeä missä tahansa käyttäjä nimeltä. Joten tämä on esimerkki siitä, mitä tietojenkäsittelytieteessä olisi puhelu abstraktio tai toiminnallisia hajoaminen, jotka ovat vain fancy tapoja saying-- on, jos pidät tätä korkea ajatus, kuin haluan toiminnallisuutta tulostaa jonkun nimi, ehdottomasti sinua voi kirjaimellisesti kirjoittaa printf ja sitten kulkea argumentit haluat, ja ohjelma toimii, koska se on alkaen keskiviikkona. Mutta voit alkaa abstrakti pois käsite tulostus nimi. Voit antaa sille nimen, kuten PrintName, ja tämä on tämä ajatus tasoilla viikosta 0. Vastedes minä ja sinun ei tarvitse tietää tai välitä kuinka PrintName toteutetaan. Kyllä se käyttää printf, ehkä se ei, kuka tietää mitä käyttää? Ketä kiinnostaa? Nyt puhun täällä, sijasta täällä. Ja todellakin, meidän ohjelmat saavat kehittyneempiä ja hienostunut, aiomme pitää ottaa itsestäänselvyytenä että alemman tason palapelin palaset ovat olemassa. Koska me kirjoitti ne tai joku muu teki, niin että voimme rakentaa niiden päälle. Katsotaanpa katsomaan tätä variantti, toimivat yksi. Joten tämä on hieman kehittynyt, mutta se osoittautuu että CS50 kirjastossa, on vain GetInt toiminto. Emme usko, vuotta sitten, että toteuttaa GetPositiveInt toiminto. Ja se on vähän ärsyttävää, koska jos te kirjoitat ohjelmaa, jossa haluat saada positiivinen kokonaisluku käyttäjä, voit ehdottomasti käyttää GetInt. Ja voit ehdottomasti tarkistaa kunto ja ehkä silmukka jos tämä int on suurempi kuin 0 ja huutaa käyttäjä jos hän ei anna olet positiivinen luku. Mutta katsotaanpa rakentaa tätä rakennuspalikka itseämme,, custom Scratch pala, jos haluatte. Aion olla ohjelma täällä, että lopulta, minä haluavat pystyä soittamaan GetPositiveInt, ja haluan olla voitava tulostaa mitä se int on. Mutta tämä on hajamielinen pois nyt. Se on vain saanut korkean tason nimi, joka sanoo, mitä se tekee, joka on hienoa, koska se on hyvin intuitiivinen nyt lukea. Ja jos en välitä mitä alla huppu, haluan selaa alaspäin. Ja se on hieman uhkaava aluksi, varsinkin jos tämä on ensimmäinen ohjelma, mutta katsotaanpa katsomaan. En enää sano, mitätön, koska se kääntyy pois toimintoja, aivan kuten GetString, voi palauttaa arvon minulle. He eivät vain tulostaa näytön, he voivat itse käsi minulle jotain takaisin. Ja taas ennen PrintName, En tarvitse mitään takaisin. Tarvitsin sivuvaikutuksena jotain näy ruudulla, mutta en tarvitse ihmisen luovuttamaan minulle jotain takaisin. Täällä, GetPositiveInt, kuten kanssa GetInt, Haluan luovutetaan jotain takaisin. Joten sanon ei, mitätön, linjalla 23, mutta int, jossa sanotaan, tämä toiminto että minä kirjoitan, kutsutaan GetPositiveInt on menossa käsi minulle takaisin kokonaisluku, ei mitään, ei mitätön. Samalla se aikoo ottaa mitään panoksia, joten olen, sellainen, päinvastainen se. En anna GetPositiveInt mitään panos, haluan sen antaa minulle sen tuotos. Ja mitä sitten tapahtuu nyt? Joten tässä miten voin julistaa muuttuja. Olen tehnyt sen ulkopuolella silmukan, syistä me lopulta nähdä, mutta tämä vain antaa minulle 32 bittiä kutsutaan, n, ja olen ennalta määrittämiseksi ne tallentaa kokonaisluku. Ja tässä on että, tehdä, kun konstrukti, ja siksi se on hyödyllinen. Kirjaimellisesti tehdä tämän, kun n on pienempi kuin 1. Joten mitä tapahtuu. Minä tulostaa, ota anna minulle positiivinen int. Sitten saada int käyttäen CS50: n toimivat ja tallennettu n. Ja sitten, mitä koodiriviä luultavasti saa suorittaa seuraavaksi, loogisesti? Joka rivinumero? Joo, niin 31. Et tiedä tätä, kunnes olet kerrottu tai sellainen päätellä sitä, mutta se on totta. Se menee ylhäältä alas ja sitten pitää toistaa. Joten jos olen kirjoittanut vaikkapa numero negatiivinen 1, on n alle negatiivinen 1? Joo. Koska negatiivinen 1 on pienempi kuin 1. Joten mitä pitäisi tapahtua? Aion tehdä tämän kun n on pienempi kuin 1, joten aion mennä takaisin linja 28. Ja kukin time-- ja lähdetään ajaa this-- tehdä toiminto 1 kääntää se, ja nyt piste slash toiminta 1. Jos kirjoitan negatiivinen 1, se on menossa pitämään huutaa minua kunnes yhteistyötä, koska kukin minun tulot on alle 1 ja jos se on vain alle 1, Aion jatkaa tätä. Jos olen vihdoin antoivat useita kuten 50, Onneksi, se sanoo, kiitos 50. Miksi? Koska heti kun n on vähintään 1, lopetan juutu tämän silmukan, ja tämä uusi avainsana tänään, paluu, kirjaimellisesti tekee sen. Joten olen juuri toteutettu, vuonna mielessä, vastaa GetString, missä olen luovuttamalla takaisin kuka käyttää minua, jotain arvoa. Sen ei tarvitse olla merkkijono, se int. Niin yksinkertainen, nopea Esimerkiksi mutta me pian nähdä kehittyneempiä versiot edelleen. Itse asiassa, nyt katsomaan numeerinen yksi, joka on nimeltään return.c. Ja tämä on itse asiassa hieman yksinkertaisempi. Joten tämä ohjelman tarkoitusta life-- katsotaanpa kääntää ja ajaa sitä, joten paluu, piste slash, return-- huomautus ohjelma yksinkertaisesti kuutiot arvo 2. Se on melko typerää, on vaikea koodi, se ei ota mitään panoksia, mutta se osoittaa toiseen toiminto, joka olen kirjoittanut itse. Joten tässä, olen julistanut muuttuja, nimeltään X, tyyppiä int, sama numero 2, täysin mielivaltainen. Tämä on vain joitakin pörröinen tulostusta. Siinä sanotaan x on nyt, niin ja Sinänsä cubing piste piste piste. Ja taika on ilmeisesti linjassa 21. Soitan toiminto nimeltään, kuutio, Olen siirtää ne paperille numerolla 2 kirjoitettu, ja mitä arvoa, matemaattisesti, minä haluan päästä pois siitä? Aivan kuten järki tarkistaa? 8. Oikea? I want 2 cubed takaisin, 2 teho 3, joten 8 takaisin. Joten jos on kuutio toteutetaan? No, huomaa sitä täytäntöön täällä. Ja aivan kuten ennenkin, loogisesti, vaikka syntaksi on luultavasti hyvin uusi monille teistä, Haluan tämän toiminnon käsi minut takaisin arkki paperi int sitä. Olen siis int, nimi on mielivaltaisesti, mutta sopivasti nimeltään kuutio. Tulo se, on N tyyppi kokonaisluku, niin se on miten voin kulkea numero 2 paperiarkille. Ja sitten käy ilmi, C tuet matematiikka, joten sinulla ei ole X: n aikoja, käytät vain tähdellä kerrottavaksi. Ja tämä palaa n kertaa n kertaa n, joka on yksinkertaisesti kuutioitu arvo. Missä siis olemme menossa kaiken tämän? Tämä on ehdottomasti pyörremyrsky kiertue, varma, että Super kohdissa ja ongelma asettaa 1, voit kulkenut kaikki tämä sitäkin. Ja ongelma asettaa 1, me siirtyminen graafisesta maailman Scratch jotain enemmän komentoriviltä C. Mutta me innoitusta tästä täällä peli menneiden, jossa käyttäen C ja tavallinen painos p joukko voit toteuttaa Mario pyramidi. Ja hakkeri painos p joukko, jos niin haluavat valita, voit toteuttaa hieman enemmän haastava pyramidi kaksi piikkiä. Voit myös toteuttaa algoritmi, ahne algoritmi. On käynyt siellä n mielenkiintoisia logiikka takana prosessi käynnissä kassan asema ja todella luovuttamalla joku takaisin muutos. On algoritmi, joka on melko yksinkertaista, että saatat jopa ymmärtää intuitiivisesti kun ensin lukea it-- ymmärtämättä, että mitä olen aina tehnyt mitään aika olen antanut joku joitakin rahaa back-- jonka avulla voit aina määrän minimoimiseksi paperi muistiinpanoja tai metallikolikoita että olet luovuttamalla takaisin käyttäjälle. Ja tämä tietenkin, on vakuuttava koska jos menet CVS tai vaikka mitä, et halua olla kädellä koko joukko ykkösiä tai koko joukko penniä. Haluat vähiten kolikot, luultavasti mahdollista. Lopuksi, voit myös tehtäväkseen harrastella maailmassa vettä ja itse saada arvostusta ja kartoitus virtausnopeudet samankaltaisten, vettä suihkussa, kuinka paljon vettä käytetään. Ja vihjaus siihen, on tämä leike täällä, joka me päättyy varten vain 60 sekuntia, että maalaa kuvan alhaisen virtaaman suihkupäissä. [VIDEOTOISTOSTA] -Selvä. Sain kaiken täällä. Sain Cyclone F sarja, Hydra JetFlow, Tukholma Supersteam, you name it. -Ja Mitä suosittelette? -Mitä etsit? -Power Mies. Virta. -Kuten Silkwood. -Se On säteilyn. -Oikein. -Nyt Mikä tämä on? -Se On Commando 450. En myy, että yksi. -Mutta Se mitä me haluamme. Se on kommando 450. -Ei Usko minua. Sitä käytetään vain sirkus. Se norsujen. -Otan Maksaa mitään. Entä Jerry? -Hän Ei voinut käsitellä sitä. Hän on herkkä. Todellakin. [Lopeta toisto] DAVID J MALAN: Selvä. Se jos CS50. Nähdään ensi viikolla. SPEAKER 1: [? Scully?], [? Ian,?] sikäli kuin tämä Outro hanke, mitä ovat te keksiä? SPEAKER 2: No, olemme antaneet se erilaisia ​​ajattelun, ja uskomme, että paras tapa to-- SPEAKER 3: Saanko? SPEAKER 2: Joo. Kaikin keinoin, todella. SPEAKER 3: Minusta Voimme tiivistää meidän ajatus varten outros yhdellä word-- mitään. DAVID J MALAN: Ei mitään? SPEAKER 3: Ei mitään. DAVID J MALAN: Mitä se tarkoittaa? SPEAKER 3: outros ovat tyhjästä. SPEAKER 2: No, tarkoitan, filosofian, Tarkoitan, mikään ei ole aina jotain. SPEAKER 1: Niin what's-- mikä on lähtökohta? SPEAKER 3: Joten se on kuin elämä. OK. Mitä teit tänään? DAVID J MALAN: Nousin, oli aamiainen, ja tuli töihin. SPEAKER 3: Se outro. SPEAKER 2: Mutta en tarkoita, ei pitäisi jotain tapahtuu hänelle the-- SPEAKER 3: Ei, ei, ei, ei. Mitään ei tapahdu. SPEAKER 1: Miksi me katsomassa? SPEAKER 3: Koska se outro varten CS50. DAVID J MALAN: Ei vielä.