1 00:00:00,000 --> 00:00:10,920 >> [Musiikki soi] 2 00:00:10,920 --> 00:00:14,680 >> DAVID J MALAN: Okei, tervetuloa takaisin CS50. 3 00:00:14,680 --> 00:00:16,500 Tämä on alku viikon kaksi. 4 00:00:16,500 --> 00:00:18,940 Sana joltakin ystävät kampuksella - 5 00:00:18,940 --> 00:00:22,620 jos olet kiinnostunut, mahdollisesti joko nyt tai joskus tulevaisuudessa aikavälillä 6 00:00:22,620 --> 00:00:25,670 vielä kerran mukavampaa, opetus Lähi koulun oppilaat hieman 7 00:00:25,670 --> 00:00:27,680 jotain tietojenkäsittelytiede, tehdä pään että URL. 8 00:00:27,680 --> 00:00:32,360 Ne ovat erityisesti tarve juuri nyt on opettajat, varsinkin jos sinulla on 9 00:00:32,360 --> 00:00:34,700 oli joitakin altistuminen tietotekniikassa. 10 00:00:34,700 --> 00:00:38,060 >> Joten muistaa, että viime kerralla esittelimme muutamia tietotyyppejä C, ja 11 00:00:38,060 --> 00:00:40,590 saatat ovat alkaneet saada kädet likainen näillä toistaiseksi 12 00:00:40,590 --> 00:00:41,940 ongelmatilanteissa asetettu. 13 00:00:41,940 --> 00:00:43,230 Ja meillä oli merkkiä. 14 00:00:43,230 --> 00:00:49,100 Joten hieman teknisiä termejä, mitä on char kuten tiedätte sen tänään? 15 00:00:49,100 --> 00:00:51,050 >> Joten se on merkki, mutta katsotaanpa Tarkemmin sanottuna nyt. 16 00:00:51,050 --> 00:00:53,735 Mitä me tarkoitamme merkki tai yksittäisiä char? 17 00:00:53,735 --> 00:00:56,700 18 00:00:56,700 --> 00:00:59,500 Ei-numeerinen merkki - 19 00:00:59,500 --> 00:01:00,670 niin ei välttämättä ole. 20 00:01:00,670 --> 00:01:04,580 On käynyt ilmi, että parilliset numerot, vaikka välimerkit ja kirjaimet ovat 21 00:01:04,580 --> 00:01:06,980 edustettuina tämän tiedot kirjoita tunnetaan char. 22 00:01:06,980 --> 00:01:09,440 Joten se ei ole välttämättä aakkosjärjestyksessä. 23 00:01:09,440 --> 00:01:11,100 Niin? 24 00:01:11,100 --> 00:01:12,275 >> Joten se on ASCII-merkki. 25 00:01:12,275 --> 00:01:15,510 Joten jos muistelen viikolla nolla, kun meillä oli tavu vapaaehtoisia 26 00:01:15,510 --> 00:01:19,150 keksiä ja joko pitävät kädet ylös tai ei kaikki, he edustivat bittiä. 27 00:01:19,150 --> 00:01:22,450 Mutta yhdessä ryhmänä kahdeksan, he edustivat tavu. 28 00:01:22,450 --> 00:01:26,030 Ja me otettiin käyttöön käsite ASCII tuohon luento, joka yksinkertaisesti on 29 00:01:26,030 --> 00:01:28,170 kartoitus numeroita ja kirjaimia. 30 00:01:28,170 --> 00:01:32,010 Ja ASCII käyttötarkoituksiin kuin ihmisillä implisiittinen, kahdeksan bittiä 31 00:01:32,010 --> 00:01:33,660 edustaa merkin. 32 00:01:33,660 --> 00:01:36,890 >> Joten vastaavasti, jos kahdeksan bittiä jokainen ottaa yhden kahdesta arvosta - 33 00:01:36,890 --> 00:01:38,010 nolla tai yksi - 34 00:01:38,010 --> 00:01:40,280 Tämä tarkoittaa, että oli kaksi vaihtoehtoa että henkilö - 35 00:01:40,280 --> 00:01:41,230 nolla tai yksi - 36 00:01:41,230 --> 00:01:44,070 kaksi, että henkilö, kaksi tähän henkilö, kaksi tämä yksi. 37 00:01:44,070 --> 00:01:47,450 Joten yhteensä kaksi kertaa kaksi kertaa kaksi kertaa kaksi kertaa kaksi - 38 00:01:47,450 --> 00:01:49,700 joten kaksi kahdeksas yhteensä. 39 00:01:49,700 --> 00:01:54,320 Joten siellä olevien merkkien määrä 256 mahdollista, että voit 40 00:01:54,320 --> 00:01:55,750 edustaa kahdeksan bittiä. 41 00:01:55,750 --> 00:01:59,210 >> Nyt ne teistä, jotka puhuvat Aasian kieliä voi tietää, että siellä on enemmän 42 00:01:59,210 --> 00:02:02,620 merkkiä maailmassa kuin vain Koska ja Bs ja Cs ja DS. 43 00:02:02,620 --> 00:02:06,130 Ja todellakin, ASCII ei riitä paljon maailman kielillä. 44 00:02:06,130 --> 00:02:07,760 Mutta siitä lisää toisella kertaa. 45 00:02:07,760 --> 00:02:11,240 Nyt tiedämme, että C, jos haluat edustamaan kirjeen, pala 46 00:02:11,240 --> 00:02:15,780 välimerkkejä, tai vain jotain merkki luonnossa, käytämme merkkiä. 47 00:02:15,780 --> 00:02:18,240 Ja se on yksi tavu tai kahdeksan bittiä. 48 00:02:18,240 --> 00:02:19,690 >> Entä int? 49 00:02:19,690 --> 00:02:20,780 No, int on kokonaisluku. 50 00:02:20,780 --> 00:02:23,175 Kuinka monta bittiä, jos muistatte, oli kokonaisluku tyypillisesti? 51 00:02:23,175 --> 00:02:25,930 52 00:02:25,930 --> 00:02:27,512 Jokainen muistaa? 53 00:02:27,512 --> 00:02:29,600 Joten se on tyypillisesti 32. 54 00:02:29,600 --> 00:02:32,120 Se oikeastaan ​​riippuu tietokoneen että käytät. 55 00:02:32,120 --> 00:02:35,770 Mutta laite, ja paljon tietokoneita, se on 32 bittiä tai neljä 56 00:02:35,770 --> 00:02:37,140 tavua - kahdeksan kertaa neljä. 57 00:02:37,140 --> 00:02:39,790 Ja ints ovat vain käytetään varastointiin numerot, joko negatiivinen, 58 00:02:39,790 --> 00:02:41,610 positiivinen tai nolla. 59 00:02:41,610 --> 00:02:45,250 >> Ja jos sinulla 32 bittiä ja vain huolta positiivisia lukuja, voi 60 00:02:45,250 --> 00:02:48,960 kukaan ballpark kuinka monta mahdollista kokonaislukuja tietokone voi edustaa alkaen 61 00:02:48,960 --> 00:02:51,820 nollaan asti? 62 00:02:51,820 --> 00:02:56,130 Joten olisi kaksi 32, joka on noin neljä miljardia euroa. 63 00:02:56,130 --> 00:02:59,720 Joten nämä valtuudet kaksi tulevat olemaan toistuvia teemoja tietotekniikassa. 64 00:02:59,720 --> 00:03:03,930 Kuten näemme, ne ovat varsin kätevä työskennellä, vaikka se ei ole aivan 65 00:03:03,930 --> 00:03:05,790 helppo tehdä matematiikka yhden pään. 66 00:03:05,790 --> 00:03:07,000 >> Joten me sanoa noin neljä miljardia euroa. 67 00:03:07,000 --> 00:03:08,620 Nyt pitkään pitkään - 68 00:03:08,620 --> 00:03:09,770 voit sellaista arvaus. 69 00:03:09,770 --> 00:03:10,480 Se on pidempi kuin int. 70 00:03:10,480 --> 00:03:12,440 Kuinka monta bittiä? 71 00:03:12,440 --> 00:03:14,250 Niin 64 bittiä tai kahdeksan tavua. 72 00:03:14,250 --> 00:03:17,480 Tämä tarkoittaa vain sitä, voit edustavat jopa isompi numerot, isompi positiivinen tai 73 00:03:17,480 --> 00:03:19,160 isompi negatiivisia lukuja. 74 00:03:19,160 --> 00:03:20,060 >> Ja miten kellua? 75 00:03:20,060 --> 00:03:22,260 Se liukuluku arvo 32 bittiä. 76 00:03:22,260 --> 00:03:25,180 Tämä on vain todellinen numero, jotain kanssa desimaalin tarkkuudella. 77 00:03:25,180 --> 00:03:30,100 Mutta jos sen sijaan tarvitaan lisää paikkoja desimaalipilkun jälkeen tai haluat 78 00:03:30,100 --> 00:03:33,720 edustavat isompi määrä sisältää joitain murto jälkeen, voit käyttää 79 00:03:33,720 --> 00:03:36,260 kaksinkertainen, joka on 64 bittiä. 80 00:03:36,260 --> 00:03:38,240 >> Mutta on mielenkiintoista takeaway täällä. 81 00:03:38,240 --> 00:03:42,890 Joten jos ints rajoitetaan 32 bittiä ja jopa pitkän pitkät rajoitetaan 64 82 00:03:42,890 --> 00:03:46,180 bittiä, että sellainen herättää kysymyksen, mitä jos todella haluat laskea 83 00:03:46,180 --> 00:03:48,790 suurempi kuin 4 miljardia int? 84 00:03:48,790 --> 00:03:50,330 No, voit vain käyttää pitkään pitkään. 85 00:03:50,330 --> 00:03:54,200 Mutta entä jos haluat laskea korkeamman kuin kaksi 64th, antaa tai ottaa? 86 00:03:54,200 --> 00:03:55,810 >> Nyt se on valtava määrä. 87 00:03:55,810 --> 00:03:59,250 Mutta lopulta, saatat itse välitä tällaisia ​​arvoja, 88 00:03:59,250 --> 00:04:03,070 varsinkin jos käytät tietokantaa ja alkaa kerätä paljon ja paljon 89 00:04:03,070 --> 00:04:06,190 ja paljon tietoa ja jaetaan yksilölliset numerot jokaiseen tietoihin. 90 00:04:06,190 --> 00:04:07,430 Joten meillä sellainen on ongelma. 91 00:04:07,430 --> 00:04:10,700 Ja samoin kanssa liukuluku arvot - kohoilla tai tuplaa - 92 00:04:10,700 --> 00:04:14,290 jos olet vain sai rajallinen määrä bittiä, kuinka monta kokonaismäärät saatoit 93 00:04:14,290 --> 00:04:16,980 mahdollisesti edustaa? 94 00:04:16,980 --> 00:04:19,540 >> No, se on vähemmän selvää, kun liittyy desimaalin tarkkuudella. 95 00:04:19,540 --> 00:04:20,899 Mutta se on varmasti rajallinen. 96 00:04:20,899 --> 00:04:24,390 Jos sinulla on rajallinen määrä bittejä, äärellinen määrä ihmisille, äärellinen 97 00:04:24,390 --> 00:04:27,350 määrä lamput, varmasti voit edustavat vain rajallinen määrä 98 00:04:27,350 --> 00:04:28,510 liukuluvuiksi. 99 00:04:28,510 --> 00:04:33,170 Mutta kuinka monta todellista numerot ovat niiden maailmassa? 100 00:04:33,170 --> 00:04:33,680 On ääretön. 101 00:04:33,680 --> 00:04:37,280 Niin, että sellainen ongelma, koska meillä ei ole ääretön määrä 102 00:04:37,280 --> 00:04:39,970 tai RAM-muistin sisällä tietokoneita. 103 00:04:39,970 --> 00:04:41,780 Joten haastavia asioita voi tapahtua. 104 00:04:41,780 --> 00:04:43,900 >> Joten mene eteenpäin ja kokeilla ilmaista täällä. 105 00:04:43,900 --> 00:04:46,240 Anna minun mennä eteenpäin ja avata gedit. 106 00:04:46,240 --> 00:04:50,360 Aion mennä eteenpäin ja tallenna tiedosto nimeltään "floats0.c" vain olla 107 00:04:50,360 --> 00:04:54,630 sopusoinnussa esimerkki siitä, että on saatavilla verkossa, jos haluat. 108 00:04:54,630 --> 00:04:58,080 Ja aion mennä eteenpäin ja määrittelevät sen seuraavasti - 109 00:04:58,080 --> 00:05:01,540 Aion mennä eteenpäin ja sanoa, int Tärkeimmät mitätön, koska me usein teemme. 110 00:05:01,540 --> 00:05:07,190 >> Ja sitten tässä ohjelmassa, aion julistaa itseni kellua, joten 32-bittinen 111 00:05:07,190 --> 00:05:09,700 muuttuja nimeltä f mielivaltaisesti. 112 00:05:09,700 --> 00:05:13,910 Ja sitten aion tallentaa sen En tiedä, kymmenesosa, joten 0.1. 113 00:05:13,910 --> 00:05:16,590 Joten aion ilmaista, että yhtenä jaettuna 10: llä, joka on täysin 114 00:05:16,590 --> 00:05:17,790 oikeutettua C. 115 00:05:17,790 --> 00:05:20,460 >> Ja sitten toisella rivillä, en yksinkertaisesti haluat tulostaa tämän arvon. 116 00:05:20,460 --> 00:05:22,950 Joten muistaa, että voimme käyttää tuttu printf. 117 00:05:22,950 --> 00:05:25,420 Emme halua käyttää% I int. 118 00:05:25,420 --> 00:05:28,360 Haluamme käyttää% f ja kellua. 119 00:05:28,360 --> 00:05:33,080 Ja sitten aion tehdä kenoviiva n, lähellä lainaus, pilkku, f, puolipiste. 120 00:05:33,080 --> 00:05:34,400 >> Joten tässä on minun ohjelma. 121 00:05:34,400 --> 00:05:35,820 On jo yksi bugi. 122 00:05:35,820 --> 00:05:38,640 Onko joku, jolle tämä napsautetaan jo haluavat osoittaa ainakin 123 00:05:38,640 --> 00:05:40,220 yhden vian, olen tehnyt? 124 00:05:40,220 --> 00:05:42,470 Niin? 125 00:05:42,470 --> 00:05:42,800 Joo. 126 00:05:42,800 --> 00:05:47,860 Unohdin "# include" at alkuun, he oire, joka, jos yritän 127 00:05:47,860 --> 00:05:50,490 koota tämä tulee olemaan, että kääntäjä on menossa huutaa minulle, 128 00:05:50,490 --> 00:05:52,770 sanomalla määrittelemätön symboli tai jotain tästä. 129 00:05:52,770 --> 00:05:55,360 Se ei ymmärrä jotain kuten printf. 130 00:05:55,360 --> 00:05:59,380 >> Joten aion tehdä "# include ", Tallenna tiedosto. 131 00:05:59,380 --> 00:06:00,400 Ja nyt se on paremmassa kunnossa. 132 00:06:00,400 --> 00:06:02,690 Mutta olen myös menossa kohta pois yksi uusi yksityiskohta tänään. 133 00:06:02,690 --> 00:06:08,620 Lisäksi täsmennetään paikka haltijat kuten% f% i% s, voit 134 00:06:08,620 --> 00:06:12,320 joskus vaikuttaa käyttäytymiseen Tämän paikkamerkki. 135 00:06:12,320 --> 00:06:15,540 Esimerkiksi, kun kyseessä on kelluva pisteen arvo, jos haluan vain 136 00:06:15,540 --> 00:06:22,200 näyttää yhden desimaalin tarkkuudella jälkeen ajan, en voi itse tehdä 0.1f. 137 00:06:22,200 --> 00:06:26,830 Eli toisin sanoen, en erottaa f-ja prosenttimerkki 0,1, vain 138 00:06:26,830 --> 00:06:30,200 kertoo printf, saatat olla koko joukko numeroita desimaalipilkun jälkeen 139 00:06:30,200 --> 00:06:30,930 piste minulle. 140 00:06:30,930 --> 00:06:32,870 Mutta en vain halua nähdä yksi heistä. 141 00:06:32,870 --> 00:06:36,280 >> Joten aion mennä eteenpäin nyt ja säästä Tämän ohjelman mennä minun terminaalin 142 00:06:36,280 --> 00:06:41,870 ikkuna, ja aion mennä eteenpäin ja tyyppi tehdä kellua 0, anna. 143 00:06:41,870 --> 00:06:44,930 Näen, että hieman arvoituksellinen viiva, joka alkaa järkevämpää kuin me 144 00:06:44,930 --> 00:06:46,900 kiusaa sen lisäksi tällä ja ensi viikolla. 145 00:06:46,900 --> 00:06:50,480 Nyt aion mennä eteenpäin ja ajaa kellua nolla. 146 00:06:50,480 --> 00:06:52,020 Ja pirun. 147 00:06:52,020 --> 00:06:54,880 >> Joten on toinen bugi täällä jostain syystä. 148 00:06:54,880 --> 00:07:02,490 Olen melko varma, että kymmenesosa, tai yksi jaettuna 10, ei 0.0. 149 00:07:02,490 --> 00:07:04,590 Ehkä olen vain ole etsimässä klo tarpeeksi numeroita. 150 00:07:04,590 --> 00:07:08,580 Joten miksi en sano kaksi 0,2 nähdä kaksi desimaalin tarkkuudella yhden sijasta. 151 00:07:08,580 --> 00:07:11,810 Anna minun mennä takaisin minun pääteikkunaan täällä ja osuma pari kertaa 152 00:07:11,810 --> 00:07:12,840 katso minun historiaa. 153 00:07:12,840 --> 00:07:15,910 Älä tee kellua nollaan, ja sitten uudelleen. 154 00:07:15,910 --> 00:07:17,730 Ja nyt tulee. 155 00:07:17,730 --> 00:07:20,000 >> Ja nyt olen melko varma, että tämä on väärin. 156 00:07:20,000 --> 00:07:23,030 Ja voisin tehdä kolme ja neljä, ja olen todennäköisesti aio pitää nähdä nollia. 157 00:07:23,030 --> 00:07:24,880 Missä siis vika? 158 00:07:24,880 --> 00:07:27,910 Yksi jaettuna 10 on 0,1. 159 00:07:27,910 --> 00:07:30,310 Joku haluaa ottaa puukottaa mitä olennainen kysymys on? 160 00:07:30,310 --> 00:07:32,400 Niin? 161 00:07:32,400 --> 00:07:33,420 He ovat molemmat kokonaislukuja. 162 00:07:33,420 --> 00:07:33,920 Niin mitä? 163 00:07:33,920 --> 00:07:37,820 Joten yksi jaettuna 10, joka on mitä teen matematiikassa. 164 00:07:37,820 --> 00:07:41,185 Ja saan 0.1. 165 00:07:41,185 --> 00:07:41,660 >> Joo. 166 00:07:41,660 --> 00:07:43,240 Ja niin se on todellakin, että asia. 167 00:07:43,240 --> 00:07:46,700 Kun otat kokonaisluku tietokone ja jaat sen toisella kokonaisluku, 168 00:07:46,700 --> 00:07:50,430 tietokone oletuksena on menossa olettaa, että haluat kokonaisluku. 169 00:07:50,430 --> 00:07:54,620 Ongelmana kuitenkin on tietysti että 0.1 ei ole kokonaisluku. 170 00:07:54,620 --> 00:07:55,680 Se on todellinen määrä. 171 00:07:55,680 --> 00:07:59,610 Ja niin mitä kuin tietokone ei Oletuksena on se vain heittää pois 172 00:07:59,610 --> 00:08:01,070 kaikki desimaalipilkun jälkeen. 173 00:08:01,070 --> 00:08:03,380 Se ei pyöristää alaspäin tai ylöspäin sinänsä. 174 00:08:03,380 --> 00:08:06,480 Se vain heittää pois kaiken desimaalipilkun jälkeen. 175 00:08:06,480 --> 00:08:07,430 Ja nyt se on järkevää. 176 00:08:07,430 --> 00:08:09,740 Koska nyt olemme selvästi jäljellä nolla. 177 00:08:09,740 --> 00:08:10,250 >> Mutta hetkinen. 178 00:08:10,250 --> 00:08:11,840 En näe int nolla. 179 00:08:11,840 --> 00:08:14,910 Olen todella nähdä 0.00. 180 00:08:14,910 --> 00:08:16,340 Joten miten voin sovittaa tämän nyt? 181 00:08:16,340 --> 00:08:22,850 Jos yksi jaettuna 10 on nolla, mutta olen nähdä 0.00, missä se saa 182 00:08:22,850 --> 00:08:24,250 muunnetaan takaisin todellinen määrä? 183 00:08:24,250 --> 00:08:25,500 Joo. 184 00:08:25,500 --> 00:08:29,850 185 00:08:29,850 --> 00:08:30,630 Täsmälleen. 186 00:08:30,630 --> 00:08:35,600 >> Joten täällä linjassa viisi, kun olen itse tallentaa, että 0,1, joka on sitten 187 00:08:35,600 --> 00:08:39,549 typistetty nolla, sisällä kellua, se tehokkaasti vastaa 188 00:08:39,549 --> 00:08:42,100 varastointia eikä int, mutta todellakin, kuten float. 189 00:08:42,100 --> 00:08:46,540 Lisäksi olen sitten käyttämällä printf on nimenomaisesti tulostaa että numero kaksi 190 00:08:46,540 --> 00:08:49,740 desimaalin tarkkuudella vaikka ehkä todellisuudessa olla mikä tahansa. 191 00:08:49,740 --> 00:08:51,020 >> Joten tällainen perseestä, eikö? 192 00:08:51,020 --> 00:08:53,640 Ilmeisesti et voi tehdä matematiikkaa, ainakin tällä tasolla 193 00:08:53,640 --> 00:08:55,600 tarkkuus, ja tietokone. 194 00:08:55,600 --> 00:08:56,930 Mutta varmasti on olemassa ratkaisu. 195 00:08:56,930 --> 00:09:00,410 Mikä on yksinkertaisin fix voisimme ehkä tehdä, vaikka vain intuitiivisesti tästä 196 00:09:00,410 --> 00:09:01,130 ratkaista tämän? 197 00:09:01,130 --> 00:09:02,380 Niin? 198 00:09:02,380 --> 00:09:04,700 199 00:09:04,700 --> 00:09:06,574 Käännä kokonaisluvut kahteen - 200 00:09:06,574 --> 00:09:06,976 joo. 201 00:09:06,976 --> 00:09:10,420 Vaikka en ole aivan varma, mitä on todella tapahtuu täällä, jos se 202 00:09:10,420 --> 00:09:13,440 pohjimmiltaan on tekemistä näiden molempien on ints, hyvin, miksi en 203 00:09:13,440 --> 00:09:18,230 tehdä, että 10,0, joten tämä 1.0, tallenna tiedosto. 204 00:09:18,230 --> 00:09:20,990 Anna minun mennä takaisin alas pohjaan ja käännä uudelleen. 205 00:09:20,990 --> 00:09:23,030 Haluaisin nyt uusintana. 206 00:09:23,030 --> 00:09:23,420 Ja siellä - 207 00:09:23,420 --> 00:09:27,690 nyt, Minulla on kymmenesosa edustettuina 0.10. 208 00:09:27,690 --> 00:09:28,420 >> Selvä. 209 00:09:28,420 --> 00:09:29,220 Niin se ei ole paha. 210 00:09:29,220 --> 00:09:31,730 Ja haluaisin huomauttaa yhdellä muulla tavalla olisimme voineet ratkaista tämän. 211 00:09:31,730 --> 00:09:35,580 Saanen todella rullata ajassa taaksepäin milloin meillä oli yhtenä 212 00:09:35,580 --> 00:09:36,680 kymmenes hetki sitten. 213 00:09:36,680 --> 00:09:40,800 Ja anna minun mennä eteenpäin ja tallenna tämä tiedosto kuin eri nimellä, vain 214 00:09:40,800 --> 00:09:41,750 on vähän tarkistuspiste. 215 00:09:41,750 --> 00:09:43,450 Niin että oli versio yksi. 216 00:09:43,450 --> 00:09:45,520 Ja nyt haluan mennä eteenpäin ja vielä yhden version. 217 00:09:45,520 --> 00:09:48,540 Soitamme tämän version kaksi nolla indeksoitu. 218 00:09:48,540 --> 00:09:51,280 >> Ja aion sen sijaan tehdä tämä - Tiedätkö mitä? 219 00:09:51,280 --> 00:09:54,400 Lisäämällä piste nolla toimii tässä tapauksessa. 220 00:09:54,400 --> 00:09:56,060 Mutta kai yksi oli vaihteleva. 221 00:09:56,060 --> 00:09:57,680 Oletettu 10 oli vaihteleva. 222 00:09:57,680 --> 00:10:00,680 Toisin sanoen olettaa, että en voinut vain koodata 0,0 lopussa 223 00:10:00,680 --> 00:10:02,340 Tämän aritmeettinen lauseke. 224 00:10:02,340 --> 00:10:05,820 No, voin itse tehdä jotain Suluissa kutsutaan valu. 225 00:10:05,820 --> 00:10:11,920 Voin heittää, että kokonaisluku 10 kellua, ja voin heittää, että kokonaisluku yksi 226 00:10:11,920 --> 00:10:12,800 kellua, samoin. 227 00:10:12,800 --> 00:10:17,190 Sitten matematiikka, joka aiotaan toteuttaa tehokkaasti 1,0 jaettuna 10,0, 228 00:10:17,190 --> 00:10:19,250 jonka tulos menee F kuin ennen. 229 00:10:19,250 --> 00:10:26,130 Jos siis kääntää tätä tehdä kellukkeet 2, ja nyt kelluu 2, saan saman 230 00:10:26,130 --> 00:10:27,020 vastata, samoin. 231 00:10:27,020 --> 00:10:29,640 >> Joten tämä on melko keinotekoinen esimerkiksi Tämän ongelman ratkaisemiseksi 232 00:10:29,640 --> 00:10:31,400 ottamalla käyttöön valu. 233 00:10:31,400 --> 00:10:34,410 Mutta yleensä, valu tulee olemaan voimakas asia, erityisesti 234 00:10:34,410 --> 00:10:38,180 Harjoitus kaksi viikon kuluttua, kun haluat muuntaa yhden tietotyypin 235 00:10:38,180 --> 00:10:41,800 toinen, joka on loppujen lopuksi esitetään samalla tavalla. 236 00:10:41,800 --> 00:10:44,970 Lopussa päivä, joka ikinen asia olemme puhuneet tähän mennessä on 237 00:10:44,970 --> 00:10:46,710 vain ints alla huppu. 238 00:10:46,710 --> 00:10:48,950 Tai jos se on liian alhainen taso sinä, ne ovat vain numeroita 239 00:10:48,950 --> 00:10:49,750 alla huppu. 240 00:10:49,750 --> 00:10:52,850 Jopa merkkiä taas muistaa viikosta nolla, ovat numerot 241 00:10:52,850 --> 00:10:53,990 alla huppu. 242 00:10:53,990 --> 00:10:57,240 >> Toisin sanoen, voimme muuntaa erilaisia ​​numeroita, jos 243 00:10:57,240 --> 00:10:58,060 he vain bittejä. 244 00:10:58,060 --> 00:11:01,020 Voimme muuntaa numerot ja kirjeitä, jos he vain 245 00:11:01,020 --> 00:11:02,580 bittiä, ja päinvastoin. 246 00:11:02,580 --> 00:11:07,170 Ja valu tällä tavalla on mekanismi ohjelmointi, jonka avulla voit väkisin 247 00:11:07,170 --> 00:11:10,970 muuttaa yksi tieto tyypistä toiseen. 248 00:11:10,970 --> 00:11:14,570 Valitettavasti tämä ei ole niin suoraviivaista kuin olisin halunnut. 249 00:11:14,570 --> 00:11:19,220 >> Aion mennä takaisin kellukkeet 1, joka oli yksinkertaisempi, 250 00:11:19,220 --> 00:11:22,830 suoraviivainen yksi 0,0 lisätty kuhunkin. 251 00:11:22,830 --> 00:11:25,260 Ja aivan kuten nopea kertaus, anna minun mennä eteenpäin ja kääntää 252 00:11:25,260 --> 00:11:27,670 Tämän tekevät kelluu 2 - 253 00:11:27,670 --> 00:11:30,300 Anteeksi, tämä on tehdä kellukkeet 1. 254 00:11:30,300 --> 00:11:32,050 Ja nyt juostaan ​​kelluu 1. 255 00:11:32,050 --> 00:11:34,810 Ja pohja, huomaa että olen todellakin saada 0.1. 256 00:11:34,810 --> 00:11:36,165 Niin, ongelma ratkaistu. 257 00:11:36,165 --> 00:11:37,280 >> Mutta ei vielä. 258 00:11:37,280 --> 00:11:40,000 Olen nyt menossa hieman utelias, ja aion mennä takaisin minun 259 00:11:40,000 --> 00:11:41,620 printf selvitys ja sanoa, tiedätkö mitä? 260 00:11:41,620 --> 00:11:44,090 Haluaisin vahvistaa, että tämä on todella kymmenesosa. 261 00:11:44,090 --> 00:11:47,890 Ja aion halua nähdä tätä vaikkapa viisi desimaalia. 262 00:11:47,890 --> 00:11:48,570 Se ei ole ongelma. 263 00:11:48,570 --> 00:11:52,020 Muutan kahdesta viiteen, Olen kääntää kanssa tehdä. 264 00:11:52,020 --> 00:11:53,770 Olen uusintana se kelluu 1. 265 00:11:53,770 --> 00:11:54,990 Näyttänyt aika hyvältä. 266 00:11:54,990 --> 00:11:58,570 Oma järki tarkastuksia voi päättyä siihen, mutta Saan hieman Jännitystä. 267 00:11:58,570 --> 00:12:00,330 Aion muuttaa 0,5-0,10. 268 00:12:00,330 --> 00:12:03,440 Haluan nähdä 10 numeroa jälkeen desimaalin tarkkuudella. 269 00:12:03,440 --> 00:12:09,060 >> Ja aion mennä eteenpäin ja kääntää Tämän ja uusintana kelluu 1. 270 00:12:09,060 --> 00:12:13,060 Olen sellainen pahoillani, testannut tätä pidemmälle, koska minun matematiikka ei ole niin 271 00:12:13,060 --> 00:12:14,320 korjata enää, miltä se näyttää. 272 00:12:14,320 --> 00:12:15,630 Mutta hetkinen, ehkä se on vain onnenpotku. 273 00:12:15,630 --> 00:12:17,810 Ehkä tietokone toimii hieman oudolta. 274 00:12:17,810 --> 00:12:21,810 Anna minun mennä eteenpäin ja tehdä 20 desimaalin tarkkuudella ja vakuuttaa itselleni, että tiedän 275 00:12:21,810 --> 00:12:22,540 miten matematiikka. 276 00:12:22,540 --> 00:12:23,460 Tiedän, miten ohjelma. 277 00:12:23,460 --> 00:12:26,960 Tee kellukkeet 1, käännöksen, ja hitto vie. 278 00:12:26,960 --> 00:12:31,110 Se on todella, todella saada kaukana totuudesta. 279 00:12:31,110 --> 00:12:32,490 >> Joten mitä täällä tapahtuu? 280 00:12:32,490 --> 00:12:36,050 Intuitiivisesti perustuvat oletuksiin aiemmin noin kokoa tietotyyppejä, 281 00:12:36,050 --> 00:12:38,040 mitä on tapahtumassa täällä alla huppu? 282 00:12:38,040 --> 00:12:39,290 Niin? 283 00:12:39,290 --> 00:12:43,000 284 00:12:43,000 --> 00:12:43,590 Täsmälleen. 285 00:12:43,590 --> 00:12:46,480 Jos haluat näin paljon tarkkuutta ja se pahus paljon tarkkuutta - 286 00:12:46,480 --> 00:12:48,770 20 numeroa desimaalipilkun jälkeen. 287 00:12:48,770 --> 00:12:51,990 Et voi mitenkään edusta mielivaltaisen määrän ellei sinulla ole 288 00:12:51,990 --> 00:12:52,930 mielivaltainen määrä bittejä. 289 00:12:52,930 --> 00:12:54,190 Mutta meillä ei ole. 290 00:12:54,190 --> 00:12:57,200 Saat kellua, meillä on vain 32 bittiä. 291 00:12:57,200 --> 00:13:02,260 >> Joten jos 32 bittiä voidaan permutoitu tavalla - aivan kuten meidän ihmisiin, vaiheessa 292 00:13:02,260 --> 00:13:05,780 kädet ylös tai alas - ja rajallinen määrä tavalla, on vain rajallinen määrä 293 00:13:05,780 --> 00:13:08,640 todellinen määrä voi edustaa kanssa bittiä. 294 00:13:08,640 --> 00:13:10,500 Ja niin tietokone lopulta on menossa on 295 00:13:10,500 --> 00:13:11,730 Aloita pinnallisuutta. 296 00:13:11,730 --> 00:13:15,500 Tietokone voi piilottaa tiedot meiltä vähän aikaa. 297 00:13:15,500 --> 00:13:18,880 Mutta jos alamme tönäisi numerot ja etsivät kauemmas ja kauemmas at 298 00:13:18,880 --> 00:13:23,220 perään numerot kokonaisluku, Sitten alamme nähdä, että se on 299 00:13:23,220 --> 00:13:26,480 todella lähentämällä Ajatus kymmenesosa. 300 00:13:26,480 --> 00:13:29,860 >> Ja niin se kääntyy pois, traagisesti, siellä on ääretön määrä numeroita 301 00:13:29,860 --> 00:13:35,060 emme voi edustaa tarkasti tietokone, ainakin, joilla on rajallinen 302 00:13:35,060 --> 00:13:38,030 määrä bittejä, äärellinen RAM-muistin määrä. 303 00:13:38,030 --> 00:13:41,210 Nyt valitettavasti tämä joskus on reaalimaailman seuraukset. 304 00:13:41,210 --> 00:13:45,980 Jos ihmiset eivät oikein arvostaa tätä tai tavallaan itsestään selvänä sitä, 305 00:13:45,980 --> 00:13:48,310 että heidän tietokone vain tehdä mitä he kertovat sen tehdä ja ei 306 00:13:48,310 --> 00:13:51,430 ymmärtää näitä taustalla edustus yksityiskohdat - 307 00:13:51,430 --> 00:13:55,290 jotka suoraan sanottuna, joissakin kielissä ovat piilotettu käyttäjältä, toisin kuin C - 308 00:13:55,290 --> 00:13:56,500 pahoja asioita voi tapahtua. 309 00:13:56,500 --> 00:13:58,650 >> Ja mitä ajattelimme tehdä on ottaa askel taaksepäin. 310 00:13:58,650 --> 00:14:00,420 Ja tämä on noin kahdeksan minuutin video. 311 00:14:00,420 --> 00:14:04,200 Se esitettiin muutama vuosi sitten, ja se antaa oivalluksia oikeastaan ​​mitä voi mennä 312 00:14:04,200 --> 00:14:09,290 pieleen, kun alle-arvostavat näitä erilaisia ​​yksityiskohtia hyvin aivan liian 313 00:14:09,290 --> 00:14:10,080 reaalimaailmassa. 314 00:14:10,080 --> 00:14:12,965 Jos voisimme himmentää valoja muutaman minuutin ajan. 315 00:14:12,965 --> 00:14:14,360 >> SPEAKER 1: Palaamme nyt engineering 316 00:14:14,360 --> 00:14:17,160 katastrofien moderneja ihmeitä. 317 00:14:17,160 --> 00:14:18,680 >> Tietokoneet - 318 00:14:18,680 --> 00:14:21,340 olemme kaikki tulleet hyväksyä usein turhauttavaa ongelmia 319 00:14:21,340 --> 00:14:23,170 jotka menevät heidän kanssaan. 320 00:14:23,170 --> 00:14:27,570 Vikoja, viruksia, ja ohjelmisto virheitä ovat pieniä hintoja maksamaan 321 00:14:27,570 --> 00:14:28,960 mukavuutta. 322 00:14:28,960 --> 00:14:32,040 Mutta korkean teknologian ja nopea sotilas-ja avaruusohjelma 323 00:14:32,040 --> 00:14:38,650 sovelluksissa, pienin ongelma voidaan suurentaa osaksi katastrofi. 324 00:14:38,650 --> 00:14:44,480 >> Kesäkuun 4. päivänä 1996 tutkijat valmis käynnistää miehittämätön Ariane 5-raketti. 325 00:14:44,480 --> 00:14:48,700 Se kantoi tutkimussatelliitit tarkoituksena on luoda tarkasti, miten 326 00:14:48,700 --> 00:14:53,250 Maan magneettikentän vuorovaikutuksessa aurinko tuulet. 327 00:14:53,250 --> 00:14:57,540 Raketti rakennettiin Euroopan Avaruusjärjestön ja nostetaan pois sen 328 00:14:57,540 --> 00:14:59,906 laitos rannikolla Ranskan Guayana. 329 00:14:59,906 --> 00:15:03,660 >> JACK GANSSLE: Noin 37 sekunnin lennon, he ensin huomannut 330 00:15:03,660 --> 00:15:04,910 jotain oli vialla. 331 00:15:04,910 --> 00:15:08,130 Suuttimet pyörivät vuonna miten ne ei todellakaan pitäisi. 332 00:15:08,130 --> 00:15:12,380 Noin 40 sekunnin lennon, selvästi ajoneuvo oli pulassa. 333 00:15:12,380 --> 00:15:14,400 Ja silloin he tekivät Päätös tuhota sen. 334 00:15:14,400 --> 00:15:18,520 Alueen turvallisuudesta vastaavan johtajan kanssa valtava sisua, painetaan nappia, 335 00:15:18,520 --> 00:15:23,900 räjäytti raketin ennen kuin se voi tullut vaaraa yleiselle turvallisuudelle. 336 00:15:23,900 --> 00:15:27,810 >> SPEAKER 1: Tämä oli neitsytmatkallaan Ariane-5, ja sen hävittäminen 337 00:15:27,810 --> 00:15:32,020 tapahtui, koska virhe sulautettujen vuonna raketin ohjelmisto. 338 00:15:32,020 --> 00:15:33,980 >> JACK GANSSLE: ongelma Ariane oli se, että oli olemassa useita 339 00:15:33,980 --> 00:15:36,390 että tarvitaan 64 bittiä ilmaista. 340 00:15:36,390 --> 00:15:39,420 Ja he halusivat muuttaa 16-bittinen numero. 341 00:15:39,420 --> 00:15:43,130 He olettivat, että määrä ei koskaan olemaan kovin suuri, että suurin osa 342 00:15:43,130 --> 00:15:46,810 ne numeroa 64-bit määrä olivat nollia. 343 00:15:46,810 --> 00:15:48,270 He olivat väärässä. 344 00:15:48,270 --> 00:15:51,380 >> SPEAKER 1: kyvyttömyys yksi ohjelmisto Ohjelman hyväksyä sellaista 345 00:15:51,380 --> 00:15:55,350 generoima toinen oli juureen vika. 346 00:15:55,350 --> 00:15:59,970 Ohjelmistojen kehittäminen on tullut hyvin kallis osa uutta teknologiaa. 347 00:15:59,970 --> 00:16:03,980 Ariane 4 raketti oli hyvin onnistuu, niin paljon, että ohjelmisto 348 00:16:03,980 --> 00:16:07,480 luotu se oli myös käytetty Ariane 5. 349 00:16:07,480 --> 00:16:11,980 >> Philip COYLE: Perusongelma oli että Ariane 5 oli nopeampi, 350 00:16:11,980 --> 00:16:13,720 kiihtyi nopeammin. 351 00:16:13,720 --> 00:16:17,250 Ja ohjelmisto ei ollut osuus siitä. 352 00:16:17,250 --> 00:16:20,770 >> SPEAKER 1: tuhoaminen raketti oli valtava taloudellinen katastrofi, 353 00:16:20,770 --> 00:16:24,200 kaikki johtuu minuutin ohjelmiston virhe. 354 00:16:24,200 --> 00:16:27,820 Mutta tämä ei ollut ensimmäinen kerta tiedot muuntaminen ongelmia oli vaivannut modernin 355 00:16:27,820 --> 00:16:30,620 ohjusteknologia. 356 00:16:30,620 --> 00:16:34,480 >> JACK GANSSLE: Vuonna 1991, jossa alku Ensimmäisen Persianlahden sodan Patriot 357 00:16:34,480 --> 00:16:38,610 ohjus kokenut samantyyppinen useita muuntaminen ongelma. 358 00:16:38,610 --> 00:16:44,910 Tämän seurauksena 28 American sotilaat kuoli ja noin 100 haavoittui 359 00:16:44,910 --> 00:16:48,600 kun Patriot, jonka piti suojaamaan saapuvan Scuds, 360 00:16:48,600 --> 00:16:51,630 ei palo ohjus. 361 00:16:51,630 --> 00:16:55,110 >> SPEAKER 1: Kun Irak hyökkäsi Kuwaitiin ja Amerikassa käynnisti Desert Storm in 362 00:16:55,110 --> 00:17:00,570 1991 alussa, Patriot ohjuspattereita lähetettiin suojelemaan Saudi-Arabia 363 00:17:00,570 --> 00:17:04,760 ja Israelin Irakin Scud ohjukset. 364 00:17:04,760 --> 00:17:09,720 Patriot on Yhdysvaltain keskipitkän kantaman pinta-to-air järjestelmä valmistetaan 365 00:17:09,720 --> 00:17:11,569 Raytheon yhtiö. 366 00:17:11,569 --> 00:17:16,410 >> THEODORE Postol: koko Patriot torjuntahävittäjä itsessään on karkeasti 367 00:17:16,410 --> 00:17:17,710 20-metriä pitkä. 368 00:17:17,710 --> 00:17:20,800 Ja se painaa noin 2000 kiloa. 369 00:17:20,800 --> 00:17:22,940 Ja se harjoittaa warhead noin - 370 00:17:22,940 --> 00:17:24,905 Minusta se on noin 150 kiloa. 371 00:17:24,905 --> 00:17:31,030 Ja ydinpommi itse voimakas räjähdysaine, joka on 372 00:17:31,030 --> 00:17:33,270 fragmentteja sen ympärille. 373 00:17:33,270 --> 00:17:37,490 Kotelo ydinpommi on suunniteltu toimia kuin Buckshot. 374 00:17:37,490 --> 00:17:40,720 >> SPEAKER 1: ohjukset tehdään neljä per kontti ja kuljetetaan 375 00:17:40,720 --> 00:17:43,050 jonka puoliperävaunu. 376 00:17:43,050 --> 00:17:47,490 >> Philip COYLE: Patriot ohjustentorjuntajärjestelmät järjestelmä menee takaisin 377 00:17:47,490 --> 00:17:50,710 vähintään 20 vuoden ajan. 378 00:17:50,710 --> 00:17:54,350 Se oli alun perin suunniteltu ilmapuolustuksen ohjuksen 379 00:17:54,350 --> 00:17:56,190 ampua alas vihollisen lentokoneita. 380 00:17:56,190 --> 00:18:02,490 Ensimmäisessä Persianlahden sodan aikana, jolloin sodan tuli, armeija halusi käyttää sitä 381 00:18:02,490 --> 00:18:05,535 ampua alas Scuds, ei lentokoneita. 382 00:18:05,535 --> 00:18:09,310 Irakin ilmavoimat ei ollut niin suuri ongelma. 383 00:18:09,310 --> 00:18:12,450 Mutta armeija oli huolissaan Scuds. 384 00:18:12,450 --> 00:18:15,950 Ja niin he yrittivät päivittää Patriot. 385 00:18:15,950 --> 00:18:18,750 >> SPEAKER 1: Kuuntelua vihollisen ohjus matkustaminen ottelu viisi oli 386 00:18:18,750 --> 00:18:20,890 aiotaan riittävän haastava. 387 00:18:20,890 --> 00:18:25,590 Mutta kun Patriot kiidätettiin palvelu, armeija ei ollut tietoinen 388 00:18:25,590 --> 00:18:31,710 Irakin muutos, joka teki heidän Scuds lähes mahdotonta lyödä. 389 00:18:31,710 --> 00:18:35,240 >> THEODORE Postol: Mitä tapahtui on Scuds, jotka olivat 390 00:18:35,240 --> 00:18:36,570 tulossa oli epävakaa. 391 00:18:36,570 --> 00:18:37,532 He olivat huojuu. 392 00:18:37,532 --> 00:18:43,220 Syynä tähän oli irakilaisia, vuonna Saadaksesi 600km pois 393 00:18:43,220 --> 00:18:47,530 300 kilometrin kantaman ohjusten, otti paino pois edestä ydinpommi. 394 00:18:47,530 --> 00:18:49,290 He tekivät ydinpommi kevyempi. 395 00:18:49,290 --> 00:18:53,110 Joten nyt Patriot yrittää tulemaan Scud. 396 00:18:53,110 --> 00:18:56,470 Ja suurimman osan ajasta, ylivoimainen Suurimman osan ajasta, se vain 397 00:18:56,470 --> 00:18:58,730 lentää Scud. 398 00:18:58,730 --> 00:19:01,760 >> SPEAKER 1: Kun Patriot-järjestelmän operaattorit tajusi Patriot jäi 399 00:19:01,760 --> 00:19:06,690 tavoitteensa, ne räjäytti Patriots ydinpommi välttää mahdollisia 400 00:19:06,690 --> 00:19:10,300 Tappiot, jos se on sallittua pudota maahan. 401 00:19:10,300 --> 00:19:14,540 >> THEODORE Postol: Se oli mitä suurin ihmiset näkivät yhtä suuri tulipalloja taivaalla 402 00:19:14,540 --> 00:19:20,350 ja ymmärtää väärin kuuntelevansa Scud kärjillä. 403 00:19:20,350 --> 00:19:23,320 >> SPEAKER 1: Vaikka yötaivas Patriots näytti olevan onnistuneesti 404 00:19:23,320 --> 00:19:27,530 tuhoaa Scuds kello Dhahran siellä voi olla aivan varma sen 405 00:19:27,530 --> 00:19:29,140 suorituskykyä. 406 00:19:29,140 --> 00:19:34,180 Siellä Patriot tutkajärjestelmää menetetty Seuraa saapuvan Scud ja koskaan 407 00:19:34,180 --> 00:19:36,380 käynnistettiin, koska ohjelmisto virhe. 408 00:19:36,380 --> 00:19:39,890 409 00:19:39,890 --> 00:19:42,700 >> Se oli israelilaisten ensimmäinen löydetty että enää järjestelmän 410 00:19:42,700 --> 00:19:48,020 oli, sitä enemmän aikaa ristiriita tuli takia kellon 411 00:19:48,020 --> 00:19:50,470 upotettu järjestelmän tietokone. 412 00:19:50,470 --> 00:19:54,640 >> JACK GANSSLE: Noin kaksi viikkoa ennen tragedia Dhahran, israelilaiset 413 00:19:54,640 --> 00:19:58,440 raportoitu puolustusministeriön että järjestelmä oli menettää aikaa. 414 00:19:58,440 --> 00:20:01,280 Noin kahdeksan tuntia käynnissä, he huomasivat, että järjestelmä on 415 00:20:01,280 --> 00:20:03,530 tulossa huomattavasti epätarkempi. 416 00:20:03,530 --> 00:20:07,710 Puolustusministeriö vastasi kertoo kaikki Patriot paristot 417 00:20:07,710 --> 00:20:10,500 ja jätä järjestelmät on pitkään. 418 00:20:10,500 --> 00:20:12,430 He eivät koskaan sanoneet, mitä pitkään oli. 419 00:20:12,430 --> 00:20:13,330 Kahdeksan tuntia? 420 00:20:13,330 --> 00:20:13,810 10 tuntia? 421 00:20:13,810 --> 00:20:14,990 1000 tuntia? 422 00:20:14,990 --> 00:20:17,150 Kukaan ei tiennyt. 423 00:20:17,150 --> 00:20:20,220 >> SPEAKER 1: Patriot akku sijoitettuna klo kasarmille Dhahran 424 00:20:20,220 --> 00:20:24,660 ja sen virheellinen sisäinen kello oli on yli 100 tuntia yöllä 425 00:20:24,660 --> 00:20:27,470 25 helmikuu. 426 00:20:27,470 --> 00:20:31,770 >> JACK GANSSLE: Se jäljitetään aika tarkkuus noin kymmenesosa toinen. 427 00:20:31,770 --> 00:20:34,480 Nyt kymmenesosa toinen on mielenkiintoinen numeroa, koska se ei voi olla 428 00:20:34,480 --> 00:20:39,940 ilmaistuna binary tarkalleen, mikä tarkoittaa sitä ei voida ilmaista tarkasti 429 00:20:39,940 --> 00:20:42,500 tahansa moderni digitaalinen tietokone. 430 00:20:42,500 --> 00:20:46,920 On vaikea uskoa, mutta käyttää esimerkkinä. 431 00:20:46,920 --> 00:20:49,000 Otetaan numero kolmasosaa. 432 00:20:49,000 --> 00:20:53,150 Kolmasosa ei voida ilmaista desimaalilukuna täsmälleen. 433 00:20:53,150 --> 00:20:57,500 Kolmasosa on 0,333 menossa päälle ääretön. 434 00:20:57,500 --> 00:21:02,270 Ei ole mitään keinoa tehdä sitä absoluuttinen tarkkuus desimaalin tarkkuudella. 435 00:21:02,270 --> 00:21:05,370 Juuri samanlaista ongelmaa joka tapahtui Patriot. 436 00:21:05,370 --> 00:21:09,880 Kauemmin järjestelmä juoksi, pahinta aikaa virhe tuli. 437 00:21:09,880 --> 00:21:13,840 >> SPEAKER 1: Kun 100 käyttötunnin virheestä ajassa oli vain 438 00:21:13,840 --> 00:21:16,140 noin kolmasosa toisen. 439 00:21:16,140 --> 00:21:20,800 Mutta kohdentamisesta ohjus matkustaminen ottelu viisi, se johti 440 00:21:20,800 --> 00:21:24,410 tracking error yli 600 metriä. 441 00:21:24,410 --> 00:21:27,670 Olisi kohtalokas virhe sotilaat Dhahran. 442 00:21:27,670 --> 00:21:33,450 >> THEODORE Postol: Mitä tapahtui on Scud käynnistää havaittiin varhain 443 00:21:33,450 --> 00:21:34,280 varoitus satelliitteja. 444 00:21:34,280 --> 00:21:38,550 Ja he tiesivät, että Scud oli tulossa niiden yleistä suuntaa. 445 00:21:38,550 --> 00:21:41,000 He eivät tiedä, mistä se tuli. 446 00:21:41,000 --> 00:21:43,900 >> SPEAKER 1: Nyt oli jopa tutka osa Patriot-järjestelmän 447 00:21:43,900 --> 00:21:48,910 puolustaa Dhahran paikallistaa ja pitää Seuraa saapuvan vihollisen ohjuksia. 448 00:21:48,910 --> 00:21:50,580 >> JACK GANSSLE: tutka oli erittäin fiksu. 449 00:21:50,580 --> 00:21:53,770 Se olisi todella seurata asemaa Scud ja sitten ennustaa, missä se 450 00:21:53,770 --> 00:21:57,160 olisi todennäköisesti seuraavan kerran tutka lähetti pulssi ulos. 451 00:21:57,160 --> 00:21:58,870 Se oli nimeltään alue portti. 452 00:21:58,870 --> 00:22:04,020 >> THEODORE Postol: Sitten kun Patriot päätä tarpeeksi aikaa on kulunut mennä 453 00:22:04,020 --> 00:22:09,420 takaisin tarkistamaan seuraava paikka Tämä havaittu esine, se menee takaisin. 454 00:22:09,420 --> 00:22:14,450 Joten kun se meni takaisin väärin paikka, sitten se ei näe esine. 455 00:22:14,450 --> 00:22:18,200 Ja se päättää, että ei ollut esine, se oli väärä tunnistus ja 456 00:22:18,200 --> 00:22:19,680 putoaa radalla. 457 00:22:19,680 --> 00:22:22,970 >> SPEAKER 1: saapuvan Scud katosi tutkanäytöltä ja 458 00:22:22,970 --> 00:22:26,050 sekuntia myöhemmin se pamahti osaksi kasarmi. 459 00:22:26,050 --> 00:22:31,950 Scud kuoli 28 ja oli viimeinen ampui ensimmäisen Persianlahden sodan. 460 00:22:31,950 --> 00:22:37,700 Traagisesti, päivitetty ohjelmisto saapui at Dhahran seuraavana päivänä. 461 00:22:37,700 --> 00:22:41,800 Ohjelmisto virhe oli vahvistettu, sulkemalla yhden luvun vaikeuksissa 462 00:22:41,800 --> 00:22:43,690 historia Patriot ohjus. 463 00:22:43,690 --> 00:22:46,780 464 00:22:46,780 --> 00:22:50,710 >> Patriot on oikeastaan ​​lyhenne asteittaiseen Array Tracking 465 00:22:50,710 --> 00:22:51,960 Siepata tavoitteesta. 466 00:22:51,960 --> 00:22:54,650 467 00:22:54,650 --> 00:23:00,840 >> DAVID J MALAN: Okei, joten raitistaa esimerkiksi olla varma. 468 00:23:00,840 --> 00:23:03,430 Ja onneksi nämä alemman tason vikoja ei ole jotain, että me 469 00:23:03,430 --> 00:23:06,220 yleensä tarvitse arvostaa, varmasti ei joidenkin meidän 470 00:23:06,220 --> 00:23:07,360 aikaisintaan ohjelmia. 471 00:23:07,360 --> 00:23:10,450 Pikemminkin useimmat bugeja sinun ll kohtaaminen on looginen luonteeltaan, 472 00:23:10,450 --> 00:23:12,900 syntaktinen luonnossa jolloin koodi ei vain toimi oikein. 473 00:23:12,900 --> 00:23:14,140 Ja tiedät sen melko nopeasti. 474 00:23:14,140 --> 00:23:16,850 >> Mutta varsinkin kun pääsemme lukukauden loppuun, se tulee 475 00:23:16,850 --> 00:23:20,620 tullut yhä enemmän mahdollisuutta todella pohdittava suunnittelu 476 00:23:20,620 --> 00:23:22,960 ohjelmat ja taustalla edustus 477 00:23:22,960 --> 00:23:24,520 sielläkin, tietojen. 478 00:23:24,520 --> 00:23:28,010 Esimerkiksi me esitellä MySQL, joka on suosittu tietokanta moottori 479 00:23:28,010 --> 00:23:30,850 että voit käyttää sivustoja tallentaa tietoa loppupäätä. 480 00:23:30,850 --> 00:23:34,630 Ja sinun täytyy alkaa päättää lukukauden loppuun paitsi mitä 481 00:23:34,630 --> 00:23:38,790 tyyppisiä tietoja tämänsuuntaisia ​​käyttää mutta kuinka monta bittiä käyttää, 482 00:23:38,790 --> 00:23:42,740 vai et halua tallentaa päivämääriä kuten päivämääriä ja kellonaikoja kuin ajat, ja myös 483 00:23:42,740 --> 00:23:46,890 asioita, kuten kuinka suuri haluat ainutlaatuinen tunnukset olla vaikkapa käyttäjät 484 00:23:46,890 --> 00:23:47,680 tietokantaan. 485 00:23:47,680 --> 00:23:51,210 >> Itse asiassa, jos jotkut teistä on ollut Facebook osuus jo jonkin aikaa, 486 00:23:51,210 --> 00:23:53,680 ja tiedät, miten pääsee sinun Käyttäjätunnus - 487 00:23:53,680 --> 00:23:57,930 joka joskus näkyy omassa profiilin URL jos olet valinnut 488 00:23:57,930 --> 00:24:02,070 lempinimi URL, tai jos olet Käytetty Facebookin Graph API, 489 00:24:02,070 --> 00:24:05,510 julkisesti saatavilla API, jolla voit voi pyytää Facebook raaka data - 490 00:24:05,510 --> 00:24:07,580 voit nähdä, mitä numeerinen tunnus on. 491 00:24:07,580 --> 00:24:10,880 Ja joitakin vuosia sitten, Facebook olennaisesti piti vaihtaa käyttämästä 492 00:24:10,880 --> 00:24:15,980 vastaa ints käyttämään pitkiä kauan, koska ajan myötä käyttäjät tulevat 493 00:24:15,980 --> 00:24:19,780 ja mennä ja luoda paljon tilejä ja fake tilejä, vaikka ne helposti 494 00:24:19,780 --> 00:24:24,630 pystyivät imeä jotain 4 miljardia mahdollinen arvo kuin int. 495 00:24:24,630 --> 00:24:28,340 >> Joten enemmän tuollaisia ​​kysymyksiä tiellä, samoin. 496 00:24:28,340 --> 00:24:30,750 Okei, joten se oli valu. 497 00:24:30,750 --> 00:24:31,670 Se oli epätarkkuutta. 498 00:24:31,670 --> 00:24:32,730 Muutaman nopean ilmoituksia. 499 00:24:32,730 --> 00:24:35,710 Joten kohdat virallisesti alkaa tulevana Sunnuntai, maanantai, tiistai. 500 00:24:35,710 --> 00:24:39,080 Kuulet sähköpostitse myöhemmin tällä viikolla kuin teidän jaksossa toimeksiannon. 501 00:24:39,080 --> 00:24:42,570 Ja voit myös täällä tässä vaiheessa miten muuttaa osa, jos 502 00:24:42,570 --> 00:24:45,660 aikataulu on muuttunut tai mukavinta on nyt muuttunut. 503 00:24:45,660 --> 00:24:49,380 Samaan aikaan P-setin ja hakkeri yksi on koska tämä torstaina mahdollisuus 504 00:24:49,380 --> 00:24:52,450 pidentää määräaikaa kohti tekniset perjantaihin 505 00:24:52,450 --> 00:24:53,830 tyypillisessä tavalla. 506 00:24:53,830 --> 00:24:57,500 >> Ymmärtäkää, että mukana ongelma set tiedot ovat ohjeet 507 00:24:57,500 --> 00:25:02,770 miten käyttää CS50 laitteen käytöstä, tee, sekä joitakin CS50 erityisiä työkaluja 508 00:25:02,770 --> 00:25:06,540 tyyliin 50, joka voi tarjota sinulle palautetta dynaamisesti 509 00:25:06,540 --> 00:25:10,230 laatu koodi tyyli ja Tarkista 50, joka voi tarjota sinulle 510 00:25:10,230 --> 00:25:13,160 dynaaminen palautetta oman koodin oikeellisuus. 511 00:25:13,160 --> 00:25:16,850 Anteeksi, että olemme yhä silitys muutama kireyttä tarkistus 50. 512 00:25:16,850 --> 00:25:21,490 Muutama luokkatoverit, jotka eivät aloita noin neljä AM perjantai-iltana, kun 513 00:25:21,490 --> 00:25:25,130 spec nousi huomannut jälkeen muutamia virheitä, että teemme 514 00:25:25,130 --> 00:25:29,010 kautta, ja pahoittelut kaikille, jotka on kokenut aiheetonta pettymyksiä. 515 00:25:29,010 --> 00:25:30,340 Vika on minun. 516 00:25:30,340 --> 00:25:34,080 Mutta me seurata CS50 keskustella, kun se on ratkaistu. 517 00:25:34,080 --> 00:25:35,700 >> Joten sana tulokset itse. 518 00:25:35,700 --> 00:25:38,990 Joten se on viikon tai kaksi ennen kuin alkaa saada palautetta ongelma sarjaa 519 00:25:38,990 --> 00:25:40,640 koska sinulla ei vielä ole opetus kaveri. 520 00:25:40,640 --> 00:25:44,510 Ja silloinkin, alamme arvioida C ongelma asettaa ennen kuin 521 00:25:44,510 --> 00:25:46,970 palata ja arvioida tyhjästä, joten että saat osuvampia 522 00:25:46,970 --> 00:25:48,150 palautteen nopeammin. 523 00:25:48,150 --> 00:25:51,870 Mutta yleensä kohti oppimäärän, CS50 ongelma sarjaa arvioidaan pitkin 524 00:25:51,870 --> 00:25:53,580 Seuraavat neljä akselia - 525 00:25:53,580 --> 00:25:55,760 laajuus, oikeellisuudesta, muotoilu ja tyyli. 526 00:25:55,760 --> 00:25:59,210 >> Laajuus tulee olemaan useita tyypillisesti nollasta viiteen, että 527 00:25:59,210 --> 00:26:01,830 kaappaa kuinka paljon pala, että olet hieman pois. 528 00:26:01,830 --> 00:26:03,750 Yleensä haluat sen olevan viisi. 529 00:26:03,750 --> 00:26:05,300 Olet ainakin yrittänyt kaikkea. 530 00:26:05,300 --> 00:26:09,330 Ja huomaa sitä monikertaisesti niin, että tekee vain osa 531 00:26:09,330 --> 00:26:12,520 Harjoitus ei ole paras strategia. 532 00:26:12,520 --> 00:26:15,610 >> Samaan aikaan selvempi on merkityksen oikeellisuudesta - 533 00:26:15,610 --> 00:26:18,620 vain on ohjelman virheetön suhteen erittely? 534 00:26:18,620 --> 00:26:21,510 Tämä on painotettu tietoisesti lisää voimakkaasti kuin kaksi akselia, jonka 535 00:26:21,510 --> 00:26:24,450 kolminkertaisesti koska ymmärrämme että tyypillisesti aiot viettää 536 00:26:24,450 --> 00:26:28,600 paljon enemmän aikaa jahtaa alas joitakin bugeja, saada koodi toimisi, sinun 537 00:26:28,600 --> 00:26:31,540 sisennys sitä ja valitsemalla asianmukaiset muuttujan nimet ja 538 00:26:31,540 --> 00:26:33,800 kuten, joka on toisessa päässä kirjoa tyyliin. 539 00:26:33,800 --> 00:26:36,160 >> Se ei ole sanoa, tyyli ei ole tärkeä, ja me saarnata sen yli 540 00:26:36,160 --> 00:26:37,920 aikaa sekä luentoja ja kohdissa. 541 00:26:37,920 --> 00:26:40,520 Tyyli viittaa estetiikka oman koodin. 542 00:26:40,520 --> 00:26:43,980 Oletko valinnut hyvin nimetty muuttujat jotka ovat lyhyitä, mutta hieman 543 00:26:43,980 --> 00:26:44,680 Tarkempi? 544 00:26:44,680 --> 00:26:47,840 Onko koodi sisennetty kuin olet nähnyt luento ja yhdenmukaisesti 545 00:26:47,840 --> 00:26:49,070 tyylillä 50? 546 00:26:49,070 --> 00:26:51,220 >> Lopuksi on mallioikeus siellä keskellä. 547 00:26:51,220 --> 00:26:54,090 Design on vaikeampi yksi laittaa Sormi koska se on paljon 548 00:26:54,090 --> 00:26:55,000 subjektiivinen. 549 00:26:55,000 --> 00:26:58,610 Mutta se on ehkä tärkein kolmen akselin suhteen pedagoginen 550 00:26:58,610 --> 00:27:02,050 arvo ajan mittaan ja että tämä on Opetuksen kaverin mahdollisuus 551 00:27:02,050 --> 00:27:04,110 antaa sinulle laadullista palautetta. 552 00:27:04,110 --> 00:27:08,100 Itse asiassa CS50 vaikka meillä on nämä kaavat ja tulokset lopussa 553 00:27:08,100 --> 00:27:11,350 Päivän nämä ovat erittäin tarkoituksellisesti hyvin pieni kauhat - pistearvot 554 00:27:11,350 --> 00:27:13,460 nollan ja kolmen ja nolla ja viisi. 555 00:27:13,460 --> 00:27:17,800 Emme yritä tehdä hyvin karkea linjat välinen ongelma sarjaa tai välillä 556 00:27:17,800 --> 00:27:21,490 opiskelijoita vaan keskittyä niin paljon kuin voimme laadullisten, longhand 557 00:27:21,490 --> 00:27:25,490 palautetta, joko kirjoituskoneella tai sanallinen alkaen sinun opetus kaveri, 558 00:27:25,490 --> 00:27:27,050 saat tietää varsin hyvin. 559 00:27:27,050 --> 00:27:32,340 >> Mutta yleensä ne ovat painoja että eri kannoilta on. 560 00:27:32,340 --> 00:27:35,480 Samaan aikaan, liian, se on syytä pitää mielessä, että sinun ei pitäisi olettaa, että 561 00:27:35,480 --> 00:27:38,870 kolme viidestä on 60% ja siis noin ole. 562 00:27:38,870 --> 00:27:41,410 Kolme on tarkoituksella tarkoitus olla tavallaan keskellä tietä hyvä. 563 00:27:41,410 --> 00:27:43,480 Jos saat kolmosta at lukukauden alussa, se 564 00:27:43,480 --> 00:27:46,340 todellakin tarkoitus olla hyvä paikka aloittaa. 565 00:27:46,340 --> 00:27:50,510 Jos saat kaksittain, messut, siellä on varmasti töitä maksamaan hieman 566 00:27:50,510 --> 00:27:53,250 enemmän huomiota, hyödyntää jaksojen ja virka-aikana. 567 00:27:53,250 --> 00:27:54,590 >> Jos saat nelosta ja vitosta, hyvä. 568 00:27:54,590 --> 00:27:57,430 Mutta oikeasti, toivomme liikeradat opiskelijoiden keskuudessa - hyvin 569 00:27:57,430 --> 00:28:00,575 yksilöllisiä opiskelijaa kohden, mutta alkaa lukukauden täällä tavallaan 570 00:28:00,575 --> 00:28:04,100 kaksi kolmesta valikoima, mutta päättyy täällä on neljä viisi alue. 571 00:28:04,100 --> 00:28:05,440 Sitähän me todella etsivät. 572 00:28:05,440 --> 00:28:09,590 Ja meillä pitää mielessä, delta, että voit näytteille välillä viikolla nollan ja viikko 573 00:28:09,590 --> 00:28:12,170 12, kun olen tekemässä laadut. 574 00:28:12,170 --> 00:28:16,380 Sillä ei ole väliä meille aivan miten olet oikeudenmukainen alussa, jos 575 00:28:16,380 --> 00:28:19,330 kehityskaari on todellakin ylöspäin ja vahva. 576 00:28:19,330 --> 00:28:24,000 >> Akateeminen rehellisyys - niin haluan laittaa minun vakavampi ääni vain hetken. 577 00:28:24,000 --> 00:28:28,510 Joten tämä kurssi on eroa lähettää enemmän opiskelijoita kuin mikään muu 578 00:28:28,510 --> 00:28:30,950 historian mainoksen aluksella, uskon. 579 00:28:30,950 --> 00:28:34,220 Meillä on tavallaan menettänyt count tässä kohta, kuinka usein näin tapahtuu. 580 00:28:34,220 --> 00:28:37,090 Ja se ei ole, koska opiskelijat 50 ovat kaikki enemmän epärehellisiä kuin 581 00:28:37,090 --> 00:28:38,690 luokkatoverit muualla. 582 00:28:38,690 --> 00:28:42,800 Mutta ymmärtää myös, että olemme erittäin hyviä havaitsemaan tällainen asia. 583 00:28:42,800 --> 00:28:45,920 >> Ja että on se etu, että tietojenkäsittelytiede luokka on, että me 584 00:28:45,920 --> 00:28:49,110 voi emmekä vertailla opiskelijat ongelma asettaa pareittain vastaan ​​joka 585 00:28:49,110 --> 00:28:51,470 muut, ei vain tänä vuonna mutta kaikki ennen vuotta. 586 00:28:51,470 --> 00:28:55,080 Meillä on kyky, kuten opiskelijoille luokan, Google ja löytää koodin 587 00:28:55,080 --> 00:28:57,440 sivustot, kuten github ja keskustelufoorumit. 588 00:28:57,440 --> 00:29:00,840 On ehdottoman ratkaisuja CS50: n p-setit kelluva noin siellä. 589 00:29:00,840 --> 00:29:02,710 Mutta jos löydät ne, voimme löytää ne. 590 00:29:02,710 --> 00:29:07,130 Ja kaikki tämä on hyvin automatisoitu ja helppo ja surullinen meille löytää. 591 00:29:07,130 --> 00:29:10,990 >> Mutta haluan korostaa myös, että Kurssin akateeminen rehellisyys politiikka on 592 00:29:10,990 --> 00:29:13,960 hyvin tarkoitus olla hyvin paljon vastakohta hengessä. 593 00:29:13,960 --> 00:29:17,506 Itse asiassa tänä vuonna olemme muotoiltu uudelleen asioita oppimäärän olla näin, piste 594 00:29:17,506 --> 00:29:19,790 dot dot, jossa tarkemmin oppimäärän. 595 00:29:19,790 --> 00:29:22,860 Mutta kantava teema aikana todella on oltava kohtuullisia. 596 00:29:22,860 --> 00:29:26,160 Ymmärrämme, että on olemassa merkittävä määrä pedagogisia 597 00:29:26,160 --> 00:29:30,550 arvo tehdä yhteistyötä, jossain määrin, luokkatovereiden kanssa, jolloin voit 598 00:29:30,550 --> 00:29:33,700 kaksi tai et kolme tai enemmän on seisoo valkoinen lauta 599 00:29:33,700 --> 00:29:35,670 whiteboarding, niin puhua, ideasi - 600 00:29:35,670 --> 00:29:39,480 kirjoittamisen pseudokoodina kuvina, kaavio mitä pitäisi Mario olla, jos 601 00:29:39,480 --> 00:29:41,350 olit kirjoittaa se ensin pseudokoodilla. 602 00:29:41,350 --> 00:29:43,240 Mikä olisi ahne algoritmi - 603 00:29:43,240 --> 00:29:46,100 miten sitä käyttäytyä kohti ongelma saadaan yksi? 604 00:29:46,100 --> 00:29:50,440 >> Ja niin ymmärtää, että käyttäytyminen että me kannustamme on hyvin 605 00:29:50,440 --> 00:29:51,470 paljon samoilla linjoilla. 606 00:29:51,470 --> 00:29:53,890 Ja oppimäärän, näet koko joukko luoteja alle 607 00:29:53,890 --> 00:29:57,740 kohtuullinen luokka ja ei ole järkevää luokka, joka auttaa meitä auttaa 608 00:29:57,740 --> 00:30:00,740 voit kääri mieltäsi noin jossa Emme piirtää että linja. 609 00:30:00,740 --> 00:30:04,340 Ja yleensä, kunnon nyrkkisääntö on, että jos sinulla on vaikeuksia ratkaista 610 00:30:04,340 --> 00:30:07,990 joitakin bug ja ystäväsi tai luokkatoveri istuu vieressäsi, se on 611 00:30:07,990 --> 00:30:11,530 kohtuulliset voit näyttää hänelle koodi ja sanoa, hei, voit auttaa 612 00:30:11,530 --> 00:30:13,700 minua selvittää, mikä vialla tässä? 613 00:30:13,700 --> 00:30:17,110 >> Emme yleensä omaksua vastakkaisella puolella. 614 00:30:17,110 --> 00:30:20,730 Se ei ole oikea vastaus teidän ystävä tai luokkatoveri täällä sanoa, oh, 615 00:30:20,730 --> 00:30:22,510 katsokaa minun ja kuva se pois siitä. 616 00:30:22,510 --> 00:30:24,400 Se on tavallaan kohtuutonta. 617 00:30:24,400 --> 00:30:27,750 Mutta kun joku muu, toinen aivot, toisen silmin katsomaan 618 00:30:27,750 --> 00:30:31,620 näytön tai katsomassa koodi ja sanoa, oletko varma, että haluat 619 00:30:31,620 --> 00:30:32,760 on silmukan täällä? 620 00:30:32,760 --> 00:30:34,800 Vai oletko varma, että haluat että puolipiste täällä? 621 00:30:34,800 --> 00:30:37,090 Tai oh, että virheilmoitus tarkoittaa tätä. 622 00:30:37,090 --> 00:30:39,580 Ne ovat hyvin kohtuullisia ja kannustetaan käyttäytymistä. 623 00:30:39,580 --> 00:30:44,010 >> Tapauksissa, joihin olin viittaamatta aiemmin pohjimmiltaan kun opiskelijat ovat 624 00:30:44,010 --> 00:30:47,350 myöhään illalla tehdä huono tuomio päätökset ja sähköpostitse heidän koodi 625 00:30:47,350 --> 00:30:50,130 joku muu tai vain sanomalla, täällä, se on Dropbox tai 626 00:30:50,130 --> 00:30:51,610 Google-hakuja myöhään yöllä. 627 00:30:51,610 --> 00:30:54,880 Ja niin kehotan ja pyydän teitä, jos sinulla ei ole näitä väistämättömiä 628 00:30:54,880 --> 00:30:58,450 hetkiä stressiä, olet törmäämättä vastaan ​​määräajan, sinulla ei ole myöhässä 629 00:30:58,450 --> 00:31:01,490 päivä, koska se on jo perjantaina, että kohta, sähköpostitse kurssin päät tai 630 00:31:01,490 --> 00:31:02,330 itseäni suoraan. 631 00:31:02,330 --> 00:31:04,790 Sanoa, kuunnella, olen minun katkeamispisteen täällä. 632 00:31:04,790 --> 00:31:06,660 Katsotaanpa keskustelu ja tajuta se. 633 00:31:06,660 --> 00:31:10,400 Turvautuvat web tai muu ei kohtuullinen käyttäytyminen on koskaan 634 00:31:10,400 --> 00:31:13,070 ratkaisu, ja liian moni luokkatoverit eivät ole enää täällä 635 00:31:13,070 --> 00:31:15,150 kampuksella takia huono tuomio. 636 00:31:15,150 --> 00:31:17,840 Mutta se on erittäin helppo hame että linja. 637 00:31:17,840 --> 00:31:22,950 >> Ja tässä on pieni kuva piristää teidät pois Reddit niin, että nyt 638 00:31:22,950 --> 00:31:25,720 kaikki on OK. 639 00:31:25,720 --> 00:31:30,210 >> Niin nopea kertaus sitten ja mihin jäimme. 640 00:31:30,210 --> 00:31:33,690 Joten viime viikolla, muistaa, että esittelemme ehtoja, ei Scratch 641 00:31:33,690 --> 00:31:34,880 mutta C tällä kertaa. 642 00:31:34,880 --> 00:31:38,300 Ja osa oli uusia rakenteita, mutta oikeastaan ​​mitään uusia ideoita sinänsä. 643 00:31:38,300 --> 00:31:42,630 Meillä oli Boolen että voisimme tai yhdessä kaksi pystysuoraa 644 00:31:42,630 --> 00:31:46,490 baareissa tai ja yhdessä kaksi et-sanomalla, että sekä vasen 645 00:31:46,490 --> 00:31:49,990 ja oikea on totta tämän toteuttaa. 646 00:31:49,990 --> 00:31:53,150 Sitten meillä oli kytkin, jonka me katsoimme klo lyhyesti, mutta ehdotan, ovat todella 647 00:31:53,150 --> 00:31:56,830 vain eri syntaksin saavuttamiseksi samanlaista päämäärää, jos tiedät 648 00:31:56,830 --> 00:31:59,270 etukäteen mitä tapauksissa tulevat olemaan. 649 00:31:59,270 --> 00:32:00,160 >> Tarkastelimme silmukoita. 650 00:32:00,160 --> 00:32:03,340 Silmukan on ehkä yleisin, tai vähintään yhden, että ihmiset 651 00:32:03,340 --> 00:32:05,330 tyypillisesti tavoitella vaistomaisesti. 652 00:32:05,330 --> 00:32:08,240 Vaikka se näyttää hieman arvoituksellisesti, näet monia esimerkkejä 653 00:32:08,240 --> 00:32:11,590 ennen pitkää, koska sinulla on jo viime viikon lopulla. 654 00:32:11,590 --> 00:32:14,280 Vaikka silmukat voivat samalla saavuttaa sama asia. 655 00:32:14,280 --> 00:32:17,550 Mutta jos haluat tehdä mitään incrementation tai päivittäminen 656 00:32:17,550 --> 00:32:20,230 muuttujan arvot, joudut tee se enemmän käsin kuin 657 00:32:20,230 --> 00:32:22,440 silmukan ennen sallii. 658 00:32:22,440 --> 00:32:25,310 Ja sitten on do-while-silmukka, jonka avulla voimme tehdä jotain 659 00:32:25,310 --> 00:32:28,460 vähintään kerran kun jotain muu on totta. 660 00:32:28,460 --> 00:32:31,550 Ja tämä on erityisen hyvä ohjelmia tai pelejä, joissa haluat 661 00:32:31,550 --> 00:32:33,810 että se kysyy käyttäjältä jotain ainakin kerran. 662 00:32:33,810 --> 00:32:37,110 Ja sitten, jos hän ei suostu yhteistyöhön, saatat haluta tehdä sen 663 00:32:37,110 --> 00:32:38,420 uudelleen ja uudelleen. 664 00:32:38,420 --> 00:32:41,270 >> Muuttujat puolestaan ​​meillä oli linjat koodia, kuten tämä, joka voisi 665 00:32:41,270 --> 00:32:41,950 on kaksi riviä. 666 00:32:41,950 --> 00:32:44,830 Voisit julistaa int kutsutaan laskuri, puolipiste. 667 00:32:44,830 --> 00:32:47,660 Tai voit vain julistaa ja määrittelevät sen, niin sanoakseni. 668 00:32:47,660 --> 00:32:49,950 Antaa sille arvon samaan aikaan. 669 00:32:49,950 --> 00:32:51,890 >> Ja sitten lopuksi puhuimme noin toimintoja. 670 00:32:51,890 --> 00:32:54,270 Ja tämä oli mukava esimerkki mielessä, että se havainnollistaa 671 00:32:54,270 --> 00:32:55,840 kahdenlaisia ​​toimintoja. 672 00:32:55,840 --> 00:32:59,030 Yksi on getString (), joka taas saa merkkijonon käyttäjä. 673 00:32:59,030 --> 00:33:02,040 Mutta getString () on sellainen mielenkiintoinen, Siltä osin kuin olemme käyttäneet sitä, 674 00:33:02,040 --> 00:33:05,620 koska olemme aina käyttänyt sitä jotain vasemmalla puolella 675 00:33:05,620 --> 00:33:06,600 yhtäläisyysmerkki. 676 00:33:06,600 --> 00:33:09,830 Tämä tarkoittaa sitä, että getString () palauttaa arvon. 677 00:33:09,830 --> 00:33:11,970 Se palauttaa tietenkin merkkijono. 678 00:33:11,970 --> 00:33:15,130 Ja sitten vasemmalla puolella, olemme yksinkertaisesti säästää merkkijonon sisällä 679 00:33:15,130 --> 00:33:16,580 muuttuja nimeltä nimi. 680 00:33:16,580 --> 00:33:21,100 >> Tämä on erilainen, tavallaan, alkaen printf koska printf, ainakin meidän 681 00:33:21,100 --> 00:33:23,540 kielen käytöstä, ei palauta mitään. 682 00:33:23,540 --> 00:33:24,960 Sivuhuomautuksena, se paluu jotain. 683 00:33:24,960 --> 00:33:26,380 Me vain välitä, mitä se on. 684 00:33:26,380 --> 00:33:29,090 Mutta se ei ole mitä kutsutaan sivuvaikutus. 685 00:33:29,090 --> 00:33:31,840 Ja mikä on se sivuvaikutus jokaisessa tapauksessa olemme nähneet tähän mennessä? 686 00:33:31,840 --> 00:33:34,720 Mitä printf tehdä? 687 00:33:34,720 --> 00:33:37,780 Se tulostaa jotain näytön, näyttää tekstiä tai numeroita tai jotain 688 00:33:37,780 --> 00:33:38,380 ruudulla. 689 00:33:38,380 --> 00:33:41,170 Ja tämä on vain pitää sivuvaikutus koska se ei oikeastaan ​​luovuttamalla 690 00:33:41,170 --> 00:33:41,900 sen takaisin minulle. 691 00:33:41,900 --> 00:33:44,770 Se ei ole vastaus sisällä musta laatikko, että voin sitten 692 00:33:44,770 --> 00:33:46,130 tartu ja napata. 693 00:33:46,130 --> 00:33:49,160 Se vain tekee sen omasta, paljon kuten Colton on liitetty tähän 694 00:33:49,160 --> 00:33:52,560 musta laatikko viime viikolla, ja hän jotenkin maagisesti veti pöydällä 695 00:33:52,560 --> 00:33:54,500 ilman minua todella mukana. 696 00:33:54,500 --> 00:33:55,560 Se olisi sivuvaikutus. 697 00:33:55,560 --> 00:33:59,100 Mutta jos olen itse ollut päästä takaisin ja sanoa, oh, tässä on merkkijono 698 00:33:59,100 --> 00:34:02,040 käyttäjältä, joka olisi olla paluuarvo. 699 00:34:02,040 --> 00:34:05,650 >> Ja tähän mennessä olemme vain käytetyt toiminnot että muut ihmiset ovat kirjoittaneet. 700 00:34:05,650 --> 00:34:09,219 Voimme kuitenkin tehdä näitä juttuja itse. 701 00:34:09,219 --> 00:34:12,730 Joten aion mennä CS50 laite uudelleen. 702 00:34:12,730 --> 00:34:16,020 Lopuksi haluan välilehti että me oli avata hetki sitten. 703 00:34:16,020 --> 00:34:18,530 Ja anna minun mennä eteenpäin ja luoda uuden tiedoston. 704 00:34:18,530 --> 00:34:22,400 Ja aion mennä eteenpäin ja kutsuvat tätä yhden positive.c. 705 00:34:22,400 --> 00:34:24,770 Joten haluan tehdä jotain positiivinen numerot tähän. 706 00:34:24,770 --> 00:34:27,219 Joten aion mennä eteenpäin ja tehdä int - 707 00:34:27,219 --> 00:34:28,000 Anteeksi - 708 00:34:28,000 --> 00:34:31,840 # Include. 709 00:34:31,840 --> 00:34:34,280 Ei tehdä samaa virhettä kuin ennen. 710 00:34:34,280 --> 00:34:40,020 Int main (void), avoin kihara ahdin, suljettu kihara ahdin. 711 00:34:40,020 --> 00:34:41,639 >> Ja nyt haluan tehdä seuraavasti. 712 00:34:41,639 --> 00:34:44,600 Haluan kirjoittaa ohjelma, joka vaatii, että käyttäjä antaa 713 00:34:44,600 --> 00:34:46,770 minulle positiivinen kokonaisluku. 714 00:34:46,770 --> 00:34:50,969 Joten ei ole GetPositiveInt toiminto vuonna CS50 kirjastossa. 715 00:34:50,969 --> 00:34:52,610 On vain GetInt (). 716 00:34:52,610 --> 00:34:55,790 Mutta se on OK, koska olen rakenteita, joiden kanssa voin asettaa 717 00:34:55,790 --> 00:34:59,360 hieman rajoittaa tämän arvon. 718 00:34:59,360 --> 00:35:00,990 Voisin tehdä jotain tällaista. 719 00:35:00,990 --> 00:35:02,780 >> Joten int n - 720 00:35:02,780 --> 00:35:04,920 ja jos kirjoitat pitkin, vain ymmärtää Aion mennä takaisin ja 721 00:35:04,920 --> 00:35:06,430 muuttaa joitakin asioita hetken - 722 00:35:06,430 --> 00:35:09,960 joten int n = GetInt (). 723 00:35:09,960 --> 00:35:11,780 Ja se tulee laittaa int sisällä n. 724 00:35:11,780 --> 00:35:13,830 Ja anna minun olla kuvaavampi. 725 00:35:13,830 --> 00:35:23,270 Saanen sanoa jotain Vaadin annat minulle positiivinen kokonaisluku. 726 00:35:23,270 --> 00:35:23,550 >> Selvä. 727 00:35:23,550 --> 00:35:25,250 Joten hieman ohjeita. 728 00:35:25,250 --> 00:35:26,270 Ja nyt, mitä voin tehdä? 729 00:35:26,270 --> 00:35:29,840 No, minä jo tiedän yksinkertainen ehtoja tai oksat, aivan kuten minä 730 00:35:29,840 --> 00:35:36,100 oli Scratch, voisin sanoa jotain kuten jos n on pienempi tai yhtä suuri kuin 731 00:35:36,100 --> 00:35:44,460 nolla, niin haluan tehdä jotain kuten, että ei ole positiivinen. 732 00:35:44,460 --> 00:35:45,560 Ja sitten voisin tehdä - 733 00:35:45,560 --> 00:35:47,310 OK, mutta en todellakaan halua saada että int. 734 00:35:47,310 --> 00:35:52,020 Niin voisin mennä tänne ja voisin sellaista kopio tämä ja luetelmakohdan tätä. 735 00:35:52,020 --> 00:35:52,570 Ja sitten, OK. 736 00:35:52,570 --> 00:35:56,990 Joten jos n on pienempi kuin tai nolla tehdä tämän. 737 00:35:56,990 --> 00:35:58,900 >> Nyt, mitä jos käyttäjä ei yhteistyötä? 738 00:35:58,900 --> 00:36:01,560 No, sitten aion lainata täällä. 739 00:36:01,560 --> 00:36:03,130 Ja sitten menen tänne ja täällä ja täällä. 740 00:36:03,130 --> 00:36:06,420 Joten tämä ei selvästikään ole ratkaisu, eikö? 741 00:36:06,420 --> 00:36:07,810 Koska ei ole loppua näkyvissä. 742 00:36:07,810 --> 00:36:13,100 Jos haluan vaatia, että käyttäjä antaa minulle positiivinen kokonaisluku, voin 743 00:36:13,100 --> 00:36:14,150 itse saada int. 744 00:36:14,150 --> 00:36:15,620 Voin tarkistaa sitten, että int. 745 00:36:15,620 --> 00:36:18,570 Mutta sitten haluan tarkistaa uudelleen ja tarkista uudelleen ja tarkista uudelleen. 746 00:36:18,570 --> 00:36:21,680 Joten tietenkin, mitä parempi rakentaa käyttävän täällä? 747 00:36:21,680 --> 00:36:22,840 Okei, joten jonkinlainen silmukka. 748 00:36:22,840 --> 00:36:25,430 >> Joten aion päästä eroon lähes kaikki tämä. 749 00:36:25,430 --> 00:36:27,320 Ja haluan saada tämän int ainakin kerran. 750 00:36:27,320 --> 00:36:28,890 Joten aion sanoa tehdä - 751 00:36:28,890 --> 00:36:32,110 ja tulen takaisin kun taas vain hetken - 752 00:36:32,110 --> 00:36:33,050 nyt, mitä? 753 00:36:33,050 --> 00:36:35,860 Aion tehdä int n saa GetInt (). 754 00:36:35,860 --> 00:36:36,080 OK. 755 00:36:36,080 --> 00:36:37,250 Niin se on aika hyvä. 756 00:36:37,250 --> 00:36:39,750 Ja nyt, kuinka usein Haluan tehdä tämän? 757 00:36:39,750 --> 00:36:45,770 >> Sanon printf lenkin sisältä joten en voi vaatia uudestaan ​​ja uudestaan, 758 00:36:45,770 --> 00:36:46,740 jos tarvetta on. 759 00:36:46,740 --> 00:36:49,720 Ja mitä haluan tämän while ehto tehdä? 760 00:36:49,720 --> 00:36:53,870 Haluan jatkaa tätä kun mitä on kyse? 761 00:36:53,870 --> 00:36:54,125 Joo. 762 00:36:54,125 --> 00:36:55,390 N on pienempi tai yhtä suuri kuin nolla. 763 00:36:55,390 --> 00:36:58,180 Joten jo, olemme merkittävästi puhdistaa tämän koodin ylös. 764 00:36:58,180 --> 00:37:00,700 Olemme lainanneet hyvin yksinkertainen rakentaa - do-while-silmukka. 765 00:37:00,700 --> 00:37:04,690 Olen varastanut vain tärkeää linjat koodia, joka aloin kopiointi ja 766 00:37:04,690 --> 00:37:05,960 liittäminen, mikä ei ollut viisasta. 767 00:37:05,960 --> 00:37:09,790 Ja nyt aion todella liitä se tänne ja tee se kerran. 768 00:37:09,790 --> 00:37:12,990 >> Ja nyt, mitä haluan tehdä osoitteessa aivan lopussa tämän ohjelman? 769 00:37:12,990 --> 00:37:16,810 Otan vain sanoa jotain yksinkertaista kuten, kiitos - ja 770 00:37:16,810 --> 00:37:18,980 Teen% I int - 771 00:37:18,980 --> 00:37:23,270 kenoviiva n, pilkku ja sitten plug in n, puolipiste. 772 00:37:23,270 --> 00:37:23,910 >> Selvä. 773 00:37:23,910 --> 00:37:27,290 Katsotaan mitä tapahtuu nyt kun ajaa tätä ohjelmaa. 774 00:37:27,290 --> 00:37:30,600 Aion mennä eteenpäin ja eivät tee myönteistä. 775 00:37:30,600 --> 00:37:30,880 Hitto. 776 00:37:30,880 --> 00:37:31,600 Vähän virheitä. 777 00:37:31,600 --> 00:37:32,960 Haluan siis siirry takaisin ensimmäiseen. 778 00:37:32,960 --> 00:37:34,020 Eivät toimi niiden kautta taaksepäin. 779 00:37:34,020 --> 00:37:37,000 Työ läpi ylhäältä alas etteivät he Cascade ja vain 780 00:37:37,000 --> 00:37:38,630 yksi asia olla väärässä. 781 00:37:38,630 --> 00:37:42,532 Implisiittinen ilmoitus toiminto GetInt (). 782 00:37:42,532 --> 00:37:43,020 Joo. 783 00:37:43,020 --> 00:37:44,420 Joten se ei ollut tarpeeksi. 784 00:37:44,420 --> 00:37:46,760 Olen sellainen teki saman virheen, mutta hieman erilainen tällä kertaa. 785 00:37:46,760 --> 00:37:51,940 Minun täytyy kuulu ainoastaan ​​stdio.h mutta Myös cs50.h, joka sisältää 786 00:37:51,940 --> 00:37:56,770 ns ilmoitusten saada int, joka opettaa laitteen tai opettaa 787 00:37:56,770 --> 00:37:58,760 C mitä GetInt () on. 788 00:37:58,760 --> 00:37:59,550 >> Joten anna minun tallentaa viestit. 789 00:37:59,550 --> 00:38:02,040 Aion jättää muut virheet koska aion toivoa, että he 790 00:38:02,040 --> 00:38:05,210 jotenkin liittyvät virhe Olen jo vahvistettu. 791 00:38:05,210 --> 00:38:08,710 Joten anna minun mennä eteenpäin ja kääntää kanssa tehdä positiivisia, Anna. 792 00:38:08,710 --> 00:38:09,020 Hitto. 793 00:38:09,020 --> 00:38:09,985 Kolme virhettä edelleen. 794 00:38:09,985 --> 00:38:12,650 Saanen siirry ensimmäiseen. 795 00:38:12,650 --> 00:38:14,320 Käyttämätön muuttujan n. 796 00:38:14,320 --> 00:38:15,850 Olemme ole nähnyt tätä ennen. 797 00:38:15,850 --> 00:38:17,200 Ja tämäkin on hieman arvoituksellinen. 798 00:38:17,200 --> 00:38:18,850 Tämä on lähtö kääntäjä. 799 00:38:18,850 --> 00:38:23,610 Ja mitä se korostettuna siellä - positive.c :9:13 - 800 00:38:23,610 --> 00:38:28,960 sanoo, se sanoo rivillä yhdeksän positive.c kello 13. luonnetta, 801 00:38:28,960 --> 00:38:31,510 13. sarake, olet tehnyt tämän virheen. 802 00:38:31,510 --> 00:38:34,230 >> Ja erityisesti se kertoo minulle käyttämätön muuttujan n. 803 00:38:34,230 --> 00:38:35,790 Katsotaanpa - 804 00:38:35,790 --> 00:38:37,150 line yhdeksän. 805 00:38:37,150 --> 00:38:40,430 Käytän n siinä mielessä, että Annan sen arvoa. 806 00:38:40,430 --> 00:38:44,200 Mutta mitä kääntäjä ei pidä on että en ole ilmeisesti käyttää sitä. 807 00:38:44,200 --> 00:38:45,560 Mutta hetkinen, olen käyttänyt sitä. 808 00:38:45,560 --> 00:38:48,170 Linjassa 11, Käytän sitä tässä. 809 00:38:48,170 --> 00:38:52,430 Mutta jos selaa edelleen klo positive.c :11 - 810 00:38:52,430 --> 00:38:56,230 joten rivillä 11, luonne 12, kääntäjä kertoo minulle, käyttö 811 00:38:56,230 --> 00:38:58,670 Pimeän tunniste n. 812 00:38:58,670 --> 00:39:02,760 >> Joten pimeän tarkoittaa, että olen ei määritelty sitä 813 00:39:02,760 --> 00:39:04,970 muuttujan tietotyyppi. 814 00:39:04,970 --> 00:39:05,500 Mutta hetkinen. 815 00:39:05,500 --> 00:39:09,150 Tein juuri niin linjassa yhdeksän. 816 00:39:09,150 --> 00:39:11,100 Niin joku on todella hämmentynyt tästä. 817 00:39:11,100 --> 00:39:14,900 Se on joko minä tai kääntäjä, koska linjassa yhdeksän, jälleen, olen julistamalla 818 00:39:14,900 --> 00:39:18,650 int n, ja olen osoittaa se palauttaa arvon GetInt (). 819 00:39:18,650 --> 00:39:22,930 Sitten olen käyttäen, että muuttujan n mukaisesti 11 ja tarkistaa, jos sen arvo on pienempi 820 00:39:22,930 --> 00:39:24,050 tai yhtä suuri kuin nolla. 821 00:39:24,050 --> 00:39:27,430 Mutta tämä ilmeisesti on huono ja rikki miksi? 822 00:39:27,430 --> 00:39:30,630 823 00:39:30,630 --> 00:39:32,490 Sano se uudestaan? 824 00:39:32,490 --> 00:39:35,690 >> Ah, minun täytyy julistaa n ennen silmukkaan tulevan. 825 00:39:35,690 --> 00:39:36,370 Mutta miksi? 826 00:39:36,370 --> 00:39:39,830 Tarkoitan, me vain ehdotti vähän sitten, että se on hieno julistaa muuttujia 827 00:39:39,830 --> 00:39:43,600 kaikki yhdellä rivillä ja sitten antaa heille jotain arvoa. 828 00:39:43,600 --> 00:39:46,790 Globaali muuttuja - Palataan kuin ajatus vain hetken. 829 00:39:46,790 --> 00:39:48,690 Miksi haluat minun laittaa se ulkopuolella silmukan? 830 00:39:48,690 --> 00:40:03,170 831 00:40:03,170 --> 00:40:03,830 On. 832 00:40:03,830 --> 00:40:06,780 Täsmälleen. 833 00:40:06,780 --> 00:40:09,610 >> Joten, joskin hieman counterintuitive, haluan tiivistää. 834 00:40:09,610 --> 00:40:13,510 Kun julistaa n sisällä DO-lohkon siellä - 835 00:40:13,510 --> 00:40:16,320 Erityisesti sisällä ne aaltosulkeita - 836 00:40:16,320 --> 00:40:19,210 että muuttuja n on mitä kutsutaan soveltamisala - 837 00:40:19,210 --> 00:40:23,210 liity meidän pisteytysjärjestelmä vuonna Tietenkin - mutta on soveltamisala, joka on 838 00:40:23,210 --> 00:40:25,190 rajoitettava aaltosulkeita. 839 00:40:25,190 --> 00:40:28,460 Toisin sanoen, yleensä jos julistaa muuttuja sisällä joukko 840 00:40:28,460 --> 00:40:33,370 aaltosulkeita, että muuttuja on olemassa vain sisällä näitä aaltosulkeita. 841 00:40:33,370 --> 00:40:37,320 Joten että logiikka yksin, vaikka Olen ilmoittanut n linjassa yhdeksän, se 842 00:40:37,320 --> 00:40:41,910 olennaisesti katoaa soveltamisalan, häviää muistista, niin sanotusti, 843 00:40:41,910 --> 00:40:43,370 mennessä osuin linja 11. 844 00:40:43,370 --> 00:40:47,370 Koska linja 11, valitettavasti, on niiden ulkopuolella aaltosulkeita. 845 00:40:47,370 --> 00:40:51,540 >> Joten en valitettavasti voi korjata tämän Viittaan siihen, mitä tein sitä ennen. 846 00:40:51,540 --> 00:40:53,370 Saatat ensin tehdä tämän. 847 00:40:53,370 --> 00:40:56,370 Mutta mitä sinä nyt ole tekee syklisesti? 848 00:40:56,370 --> 00:40:58,260 Et ilmeisesti ole tulossa int syklisesti. 849 00:40:58,260 --> 00:41:01,320 Joten voimme jättää GetInt (), ja me pitäisi jättää GetInt () sisällä 850 00:41:01,320 --> 00:41:04,420 silmukka, koska se mitä haluamme kiusata käyttäjän uudelleen ja uudelleen. 851 00:41:04,420 --> 00:41:08,660 Mutta se ei riitä mennä jopa linja, eli kuusi. 852 00:41:08,660 --> 00:41:10,150 Int n, puolipiste. 853 00:41:10,150 --> 00:41:12,990 Älä anna sitä arvoa vielä, koska sinun ei tarvitse ihan vielä. 854 00:41:12,990 --> 00:41:16,220 >> Mutta nyt täällä, ilmoitus - tämä olisi erittäin helppo virhe. 855 00:41:16,220 --> 00:41:19,440 En halua varjo minun edellinen ilmoitus n. 856 00:41:19,440 --> 00:41:22,830 Haluan käyttää n että todella on olemassa. 857 00:41:22,830 --> 00:41:25,780 Ja nyt linjassa 10, Voin liittää n arvo. 858 00:41:25,780 --> 00:41:28,580 Mutta linjassa kuusi, julistan n. 859 00:41:28,580 --> 00:41:32,940 Ja niin voin tai en voi käyttää sitä linja 12 nyt? 860 00:41:32,940 --> 00:41:37,120 Voin koska joiden välillä kiharat henkselit on n julistettu nyt? 861 00:41:37,120 --> 00:41:38,770 Yksi täällä linjalla viisi. 862 00:41:38,770 --> 00:41:40,330 Yhteen täällä line 14. 863 00:41:40,330 --> 00:41:49,770 Joten kun nyt loitontaa, tallentaa tämän tiedoston, siirry takaisin ja suorita make positiivinen, se 864 00:41:49,770 --> 00:41:50,820 koonnut tällä kertaa. 865 00:41:50,820 --> 00:41:51,940 Niin, että jo käynnissä. 866 00:41:51,940 --> 00:41:53,640 Slash. . / Positiivinen, Anna. 867 00:41:53,640 --> 00:41:56,060 >> Vaadin, että annat minulle positiivinen kokonaisluku. 868 00:41:56,060 --> 00:41:57,750 Negatiivinen 1. 869 00:41:57,750 --> 00:41:59,020 Negatiivinen 2. 870 00:41:59,020 --> 00:42:00,680 Negatiivinen 3. 871 00:42:00,680 --> 00:42:01,760 Zero. 872 00:42:01,760 --> 00:42:03,000 Yksi. 873 00:42:03,000 --> 00:42:05,130 Ja kiitos yksi on mitä nyt painettu. 874 00:42:05,130 --> 00:42:07,400 >> Yritän jotain muuta, uteliaisuudesta. 875 00:42:07,400 --> 00:42:09,600 Minua käskettiin syöttää kokonaisluvun. 876 00:42:09,600 --> 00:42:12,870 Mutta mitä jos olen sen sijaan kirjoittaa lammasta? 877 00:42:12,870 --> 00:42:14,460 Joten nyt näet eri nopeasti - 878 00:42:14,460 --> 00:42:15,350 yritä uudelleen. 879 00:42:15,350 --> 00:42:17,670 Mutta missään minun koodi minä kirjoittaa uudelleen. 880 00:42:17,670 --> 00:42:22,320 Joten missä, oletettavasti, on tämä yritä uudelleen kysyy tulevat, sanoisit? 881 00:42:22,320 --> 00:42:23,540 Joo, alkaen GetInt () itse. 882 00:42:23,540 --> 00:42:26,650 Joten yksi niistä asioista CS50 henkilöstö tekee sinulle, ainakin näillä ensimmäisillä 883 00:42:26,650 --> 00:42:30,400 viikkoa, on olemme kirjoittaneet jonkin verran virheiden tarkastaminen sen varmistamiseksi, että jos 884 00:42:30,400 --> 00:42:34,260 soitat GetInt (), voit ainakin saada takaisin int käyttäjältä. 885 00:42:34,260 --> 00:42:35,460 Et saa merkkijono. 886 00:42:35,460 --> 00:42:36,440 Et saa merkkiä. 887 00:42:36,440 --> 00:42:39,660 Et saa jotain aivan muuta. 888 00:42:39,660 --> 00:42:40,510 Saat int. 889 00:42:40,510 --> 00:42:41,890 >> Nyt se ei ehkä ole positiivinen. 890 00:42:41,890 --> 00:42:42,770 Voisi olla negatiivinen. 891 00:42:42,770 --> 00:42:44,550 Me emme anna mitään takuita sen ympärillä. 892 00:42:44,550 --> 00:42:48,960 Mutta me kiusata käyttäjä yrittää uudelleen, Yritä uudelleen, yritä uudelleen, kunnes hän itse 893 00:42:48,960 --> 00:42:49,810 yhteistyötä. 894 00:42:49,810 --> 00:42:53,085 Vastaavasti, jos en tee 1,23, joka ei ole int. 895 00:42:53,085 --> 00:42:58,400 Mutta jos en kirjoita vaikkapa 50, että antaa minulle arvo, että halusin. 896 00:42:58,400 --> 00:42:59,050 >> Selvä. 897 00:42:59,050 --> 00:43:01,380 Joten ei paha. 898 00:43:01,380 --> 00:43:04,780 Kaikki kysymykset, mitä olemme juuri tehneet? 899 00:43:04,780 --> 00:43:07,930 Avain takeaway on, on selvää, ei niin paljon silmukka, joka olemme nähneet 900 00:43:07,930 --> 00:43:10,880 ennen vaikka meillä ei oikeastaan käyttänyt sitä, mutta kysymys soveltamisalaa, jos 901 00:43:10,880 --> 00:43:17,045 muuttujia voidaan voidaan käyttää vain joissakin tietyn soveltamisalaan. 902 00:43:17,045 --> 00:43:19,830 >> Okei, haluan käsitellä ehdotusta olet tehnyt aikaisemmin, että 903 00:43:19,830 --> 00:43:20,860 globaali muuttuja. 904 00:43:20,860 --> 00:43:24,880 Sivuhuomautuksena, käy ilmi, että toinen ratkaisu tähän ongelmaan, mutta 905 00:43:24,880 --> 00:43:28,880 tyypillisesti virheellinen liuos tai huonosti suunniteltu ratkaisu, on 906 00:43:28,880 --> 00:43:31,670 julistaa muuttuja kuin mitä nimeltään globaali muuttuja. 907 00:43:31,670 --> 00:43:34,610 Nyt olen sellainen rikkoo minun määritelmä Soveltamisalan koska on olemassa 908 00:43:34,610 --> 00:43:37,680 Ei aaltosulkeita huipulla ja hyvin pohjaan tiedoston. 909 00:43:37,680 --> 00:43:40,190 Mutta seuraus, että on, että nyt linjassa neljä, 910 00:43:40,190 --> 00:43:41,710 n on globaali muuttuja. 911 00:43:41,710 --> 00:43:44,460 Ja kuten nimikin kertoo, se on vain saataville kaikkialla. 912 00:43:44,460 --> 00:43:45,790 >> Scratch todella on näitä. 913 00:43:45,790 --> 00:43:48,650 Jos käytetään muuttujan, saatatte muistaa pitäisi valita, jos se on 914 00:43:48,650 --> 00:43:50,780 tämä sprite tai kaikki sprite. 915 00:43:50,780 --> 00:43:54,270 No, kaikki sprite on vain selkeämpi tapa sanoa maailmanlaajuinen. 916 00:43:54,270 --> 00:43:55,520 Niin? 917 00:43:55,520 --> 00:44:09,690 918 00:44:09,690 --> 00:44:10,990 Ah, todella hyvä kysymys. 919 00:44:10,990 --> 00:44:14,310 >> Niin muistaa, että ensimmäinen versio minun koodi, kun väärin 920 00:44:14,310 --> 00:44:17,700 ilmoitettu ja määritelty n linjassa yhdeksän - 921 00:44:17,700 --> 00:44:19,980 Olen ilmoittanut sen muuttujan ja annoin sen arvo 922 00:44:19,980 --> 00:44:21,160 sijoitusoperaattori - 923 00:44:21,160 --> 00:44:22,520 Tämä antoi minulle kaksi virhettä. 924 00:44:22,520 --> 00:44:26,560 Yksi, että n ei ole käytetty, ja kaksi, että linja 11 925 00:44:26,560 --> 00:44:27,770 se vain ei ole ilmoitettu. 926 00:44:27,770 --> 00:44:31,120 Joten ensimmäinen en osoite tuolloin. 927 00:44:31,120 --> 00:44:35,130 Se ei ole täysin virheen julistaa vaihtelee, mutta ei käytä sitä. 928 00:44:35,130 --> 00:44:38,540 Mutta yksi niistä asioista, olemme tehneet CS50 laitteen, tarkoituksella, 929 00:44:38,540 --> 00:44:43,340 pedagogisesti, on olemme kampi ylös odotukset kääntäjä tehdä 930 00:44:43,340 --> 00:44:46,970 Varmista, että teet asioita ei vain oikein, mutta todella oikein. 931 00:44:46,970 --> 00:44:51,520 >> Koska jos olet julistaa muuttuja kuten n ja koskaan käyttää sitä, tai käyttää sitä 932 00:44:51,520 --> 00:44:53,700 oikein, niin mitä se tekee siellä? 933 00:44:53,700 --> 00:44:55,650 Se todella palvele mitään tarkoitusta. 934 00:44:55,650 --> 00:44:58,980 Ja se on erittäin helppo ajan, jos eivät määritä omaa tietokonetta 935 00:44:58,980 --> 00:45:01,960 Näin vain on koodi, joka on vähän jäänteitä täällä jäänteitä siellä. 936 00:45:01,960 --> 00:45:04,390 Ja sitten kuukautta myöhemmin katsomme taaksepäin ja et pidä, miksi tätä linjaa 937 00:45:04,390 --> 00:45:05,060 koodi on? 938 00:45:05,060 --> 00:45:07,940 Ja jos ei ole mitään hyvää syytä, se ei ole hyötyä sinulle tai työtovereiden 939 00:45:07,940 --> 00:45:10,650 tiellä on kompastua sen jälkeen. 940 00:45:10,650 --> 00:45:12,540 >> Sivuhuomautuksena, jossa on että tulee? 941 00:45:12,540 --> 00:45:16,410 No, muistaa, että joka kerta meidän kääntää ohjelmaa kaikki tätä kamaa on 942 00:45:16,410 --> 00:45:17,380 tulostetaan. 943 00:45:17,380 --> 00:45:18,350 Niin me palaamme tähän. 944 00:45:18,350 --> 00:45:22,230 Mutta jälleen kerran, tee on apuohjelma, joka automatisoi laadintaprosessin by 945 00:45:22,230 --> 00:45:24,830 käynnissä todellinen kääntäjä nimeltään kalahtaa. 946 00:45:24,830 --> 00:45:27,650 Tämä asia, me lopulta nähdä, on tehdä testaajat erityistä 947 00:45:27,650 --> 00:45:29,060 ohjelma nimeltä debuggeri. 948 00:45:29,060 --> 00:45:32,150 Tämä on tekemistä optimoimalla koodi - siitä lisää tulevaisuudessa. 949 00:45:32,150 --> 00:45:33,620 Std = C99 - 950 00:45:33,620 --> 00:45:37,870 Tämä tarkoittaa vain sitä käyttää 1999 versio C. C on ollut noin pidempään kuin 951 00:45:37,870 --> 00:45:40,830 että, mutta he tekivät muutamia kivoja muutokset 10 plus vuotta sitten. 952 00:45:40,830 --> 00:45:42,690 >> Ja tässä merkityksellisimmät. 953 00:45:42,690 --> 00:45:45,880 Sanomme tehdä mitään, aiemmin olisi ollut varoitus 954 00:45:45,880 --> 00:45:48,560 virhe estää opiskelijan alkaen kokoamisessa. 955 00:45:48,560 --> 00:45:51,400 Ja seinän keinot tehdä sen koko joukko asioita, ei 956 00:45:51,400 --> 00:45:53,060 vain liittyvät muuttujat. 957 00:45:53,060 --> 00:45:54,700 Ja sitten haluaisin siirtyä loppuun tämän linjan. 958 00:45:54,700 --> 00:45:56,430 Ja tämäkin lopulta pyrimme palata. 959 00:45:56,430 --> 00:45:59,040 Tämä on tietysti nimi tiedosto olen koota. 960 00:45:59,040 --> 00:46:02,160 Tämä muistuttaa tiedoston nimi Olen lähte nimi 961 00:46:02,160 --> 00:46:04,070 minun runnable ohjelman. 962 00:46:04,070 --> 00:46:08,970 Tämä-lcs50 vain sitä käyttää CS50 kirjasto, ja kaikki nollia ja ykkösiä, jotka 963 00:46:08,970 --> 00:46:12,390 Henkilökunta kirjoitti ja koottu aiemmin tänä vuonna, integroida 964 00:46:12,390 --> 00:46:13,490 ne minun ohjelma. 965 00:46:13,490 --> 00:46:16,130 >> Ja kukaan tiedä, mitä-lm on? 966 00:46:16,130 --> 00:46:18,150 Se matematiikka kirjasto, joka on vain siellä, vaikka olet 967 00:46:18,150 --> 00:46:19,320 ei tee mitään matemaattisia. 968 00:46:19,320 --> 00:46:22,620 Se on vain automaattisesti edellyttäen meille tehdä. 969 00:46:22,620 --> 00:46:26,540 >> No, anna minun tehdä yksi toinen esimerkki tässä avaamalla uuden tiedoston. 970 00:46:26,540 --> 00:46:30,560 Ja haluan pelastaa tämän yhden string.c. 971 00:46:30,560 --> 00:46:37,980 On käynyt ilmi, että puhutaan tiedot tyypit tänään, on vielä enemmän 972 00:46:37,980 --> 00:46:40,630 meneillään alla huppu kuin olemme nähneet tähän mennessä. 973 00:46:40,630 --> 00:46:42,290 Joten haluan nopeasti tehdä nopeasti ohjelman. 974 00:46:42,290 --> 00:46:44,510 Sisällytä stdio.h. 975 00:46:44,510 --> 00:46:45,730 Ja minä pelastan sen. 976 00:46:45,730 --> 00:46:48,110 Ja te tiedätte, haluan tehdä samaa virhettä uudelleen ja uudelleen. 977 00:46:48,110 --> 00:46:50,540 Sisällytä cs50.h. 978 00:46:50,540 --> 00:46:54,870 Ja anna minun mennä eteenpäin nyt ja tehdä int main (void). 979 00:46:54,870 --> 00:46:58,790 >> Ja nyt haluan vain tehdä ohjelman että tämä - julistaa merkkijono 980 00:46:58,790 --> 00:47:03,610 nimeltään s ja saada merkkijono käyttäjältä. 981 00:47:03,610 --> 00:47:05,820 Ja haluaisin tehdä vähän ohjeet täältä - 982 00:47:05,820 --> 00:47:09,960 antakaa minulle string - niin käyttäjä tietää, mitä tehdä. 983 00:47:09,960 --> 00:47:13,190 Ja sitten tänne alle tämän, Haluan tehdä seuraavat - 984 00:47:13,190 --> 00:47:16,060 for int i saa nolla. 985 00:47:16,060 --> 00:47:18,580 Jälleen tietotekniikan tutkijoita tyypillisesti alkaa laskea nollaan, mutta voisimme 986 00:47:18,580 --> 00:47:20,340 tehdä, että yksi jos halusimme. 987 00:47:20,340 --> 00:47:27,240 Nyt aion tehdä i on pienempi kuin merkkijonon pituus s. 988 00:47:27,240 --> 00:47:28,430 Joten strlen - 989 00:47:28,430 --> 00:47:29,510 S-T-R-L-E-N - 990 00:47:29,510 --> 00:47:31,650 uudelleen, se on ytimekäs, koska se on helpompaa kirjoittaa, vaikka se on 991 00:47:31,650 --> 00:47:32,590 hieman arvoituksellinen. 992 00:47:32,590 --> 00:47:35,290 >> Se on funktio olemme ei käytetä ennen, mutta kirjaimellisesti tekee sen - 993 00:47:35,290 --> 00:47:37,810 palata minulle, joka edustaa merkkijonon pituus 994 00:47:37,810 --> 00:47:38,690 että käyttäjä kirjoittaa. 995 00:47:38,690 --> 00:47:41,740 Jos ne kirjoitetaan hei, se palaisi viisi koska siellä on viisi 996 00:47:41,740 --> 00:47:42,890 kirjaimet hei. 997 00:47:42,890 --> 00:47:45,390 Sitten jokaisen iteraation Tämän silmukan, i plus plus. 998 00:47:45,390 --> 00:47:49,170 Joten jälleen, vakio rakentaa vaikka et ole aivan liian mukava tai 999 00:47:49,170 --> 00:47:50,420 perehtynyt siihen vielä. 1000 00:47:50,420 --> 00:47:53,220 >> Mutta nyt jokaisen iteraation tämän silmukan, huomaa, mitä aion tehdä. 1001 00:47:53,220 --> 00:47:56,690 Haluan mennä eteenpäin ja tulostaa ulos yhden merkin - 1002 00:47:56,690 --> 00:47:59,940 joten% c kenoviiva n uudelle riville. 1003 00:47:59,940 --> 00:48:00,990 Ja sitten, tiedät mitä haluan tehdä? 1004 00:48:00,990 --> 00:48:05,090 Riippumatta sana on, että käyttäjä tyypit in, kuten hei, haluan tulostaa 1005 00:48:05,090 --> 00:48:09,530 H-E-L-L-O, yksi merkki per rivi. 1006 00:48:09,530 --> 00:48:13,080 Toisin sanoen, haluan saada aikaa yksittäisten merkkijonon merkkejä, 1007 00:48:13,080 --> 00:48:16,770 jolloin asti merkkijono on vain ollut merkkijono. 1008 00:48:16,770 --> 00:48:21,690 >> Ja käy ilmi, mitä voin tehdä s, kiinnike, i, loppusulkumerkki, sulje 1009 00:48:21,690 --> 00:48:23,580 suluissa, puolipiste. 1010 00:48:23,580 --> 00:48:25,640 Ja minulla on tehdä yksi asia. 1011 00:48:25,640 --> 00:48:30,570 Se on tiedosto nimeltä string.h että strlen on julistettu. 1012 00:48:30,570 --> 00:48:33,190 Joten jos haluan käyttää tätä toimintoa, Minun täytyy kertoa kääntäjä, 1013 00:48:33,190 --> 00:48:34,450 aio käyttää sitä. 1014 00:48:34,450 --> 00:48:37,040 Nyt haluan mennä eteenpäin ja tehdä ohjelma nimeltä merkkijono. 1015 00:48:37,040 --> 00:48:39,150 Dot, slash, merkkijono. 1016 00:48:39,150 --> 00:48:40,130 >> Antakaa minulle merkkijono. 1017 00:48:40,130 --> 00:48:40,900 Menen eteenpäin ja kirjoita se. 1018 00:48:40,900 --> 00:48:43,040 Hei, kokonaan isoilla kirjaimilla, Anna. 1019 00:48:43,040 --> 00:48:47,390 Ja nyt huomaa olen painettu tämän yhden merkin jälkeen. 1020 00:48:47,390 --> 00:48:51,450 Joten uusi yksityiskohta on, että merkkijono, lopussa päivä, voi olla 1021 00:48:51,450 --> 00:48:54,810 käsiksi tapa sen yksittäisten merkkiä ottamalla käyttöön neliö 1022 00:48:54,810 --> 00:48:55,840 kiinnike merkintätapaa. 1023 00:48:55,840 --> 00:48:59,090 Ja se johtuu merkkijono alla huppu on todellakin sekvenssi 1024 00:48:59,090 --> 00:48:59,810 merkkiä. 1025 00:48:59,810 --> 00:49:02,010 Mutta mikä on siisti niistä on tietokoneesi RAM - 1026 00:49:02,010 --> 00:49:05,300 Mac, PC, mitä se on - he kirjaimellisesti takaisin takaisin takaisin - 1027 00:49:05,300 --> 00:49:06,225 H-E-L-L-O - 1028 00:49:06,225 --> 00:49:09,920 yksittäisten vieressä tavua muistiin. 1029 00:49:09,920 --> 00:49:13,210 >> Joten jos haluat saada kahdeksas kuten tavu, joka tässä silmukka olisi 1030 00:49:13,210 --> 00:49:16,900 kiinnike nolla, kannatin yksi, kiinnike kaksi, kiinnike kolme, kiinnike neljä - 1031 00:49:16,900 --> 00:49:18,890 joka on nolla indeksoitu asti viisi - 1032 00:49:18,890 --> 00:49:23,330 joka tulostaa H-E-L-L-O omalla rivillään. 1033 00:49:23,330 --> 00:49:26,320 >> Nyt, teaser, haluan näyttää sinulle millaisia ​​asioita voit lopulta olla 1034 00:49:26,320 --> 00:49:31,950 ymmärtää, ainakin joidenkin lähellä näköinen. 1035 00:49:31,950 --> 00:49:35,610 Yhden, mitä olemme mukana nykypäivän esimerkkejä, jos haluat, on oikeastaan 1036 00:49:35,610 --> 00:49:38,300 yksi ensimmäisistä jailbreaks iPhone. 1037 00:49:38,300 --> 00:49:40,800 Jailbreaking tarkoittaa halkeilua puhelin joten voit itse käyttää sitä 1038 00:49:40,800 --> 00:49:43,380 eri operaattorin tai install oman ohjelmiston. 1039 00:49:43,380 --> 00:49:45,660 Ja huomaat tämän näyttää täysin arvoituksellinen, todennäköisesti. 1040 00:49:45,660 --> 00:49:46,520 Mutta katsokaa tätä. 1041 00:49:46,520 --> 00:49:50,420 IPhone oli ilmeisesti säröillä silmukka, jos ehto, muuta 1042 00:49:50,420 --> 00:49:52,580 kunnossa, joukko toimintoja emme ole nähnyt. 1043 00:49:52,580 --> 00:49:54,230 >> Ja vielä, et ole Ensi silmäyksellä luultavasti 1044 00:49:54,230 --> 00:49:55,620 ymmärtää, miten tämä toimii. 1045 00:49:55,620 --> 00:49:58,940 Mutta kaikessa tavallaan ottaa selvänä elämäämme 1046 00:49:58,940 --> 00:50:02,040 todella pyrkii vähentämään jopa joitakin Näiden perustekijöiden olemme olleet 1047 00:50:02,040 --> 00:50:02,820 katsomalla. 1048 00:50:02,820 --> 00:50:06,680 Anna minun mennä eteenpäin ja avata yhden muu ohjelma, holloway.c. 1049 00:50:06,680 --> 00:50:08,970 Joten tämäkin on jotain ei todellakaan tiedä. 1050 00:50:08,970 --> 00:50:12,440 Vaikka yksikään henkilökunnan tai voisin todennäköisesti selvittää tämän tarkastelemalla 1051 00:50:12,440 --> 00:50:15,450 koska tämä oli jonkun koodi joka toimitettiin mitä 1052 00:50:15,450 --> 00:50:19,630 historiallisesti tunnettu sotkettu C kilpailuun, jossa voit kirjoittaa ohjelman 1053 00:50:19,630 --> 00:50:24,670 joka kokoaa ja käy, mutta on niin pirun arvoituksellinen ei ihminen voi ymmärtää, mitä 1054 00:50:24,670 --> 00:50:27,530 se tulee tehdä ennen he todella ajaa sitä. 1055 00:50:27,530 --> 00:50:29,940 >> Joten todellakin, jos tarkastellaan tämän koodi, näen kytkin. 1056 00:50:29,940 --> 00:50:30,870 Näen tärkein. 1057 00:50:30,870 --> 00:50:33,800 Näen nämä hakasulkeissa mikä jonkinlainen array. 1058 00:50:33,800 --> 00:50:35,970 Haluaako joku arvaa tämä ohjelma todella 1059 00:50:35,970 --> 00:50:37,220 ei, jos juoksen Holloway? 1060 00:50:37,220 --> 00:50:39,940 1061 00:50:39,940 --> 00:50:40,750 Kyllä. 1062 00:50:40,750 --> 00:50:43,050 OK. 1063 00:50:43,050 --> 00:50:44,690 Hyvin tehty. 1064 00:50:44,690 --> 00:50:48,090 Joten vain henkilökunnan ja en voi selvittää mitä nämä asiat tekevät. 1065 00:50:48,090 --> 00:50:51,670 >> Ja nyt lopuksi, anna minun mennä eteenpäin ja avata yksi muu ohjelma. 1066 00:50:51,670 --> 00:50:53,440 Tämä yksi - 1067 00:50:53,440 --> 00:50:55,550 uudelleen, teemme lähdekoodi saatavilla verkossa - tämä on vain 1068 00:50:55,550 --> 00:50:57,480 Tällainen kaunis katsella. 1069 00:50:57,480 --> 00:50:59,750 Kaikki he tekivät osuu välilyöntiä melko vähän. 1070 00:50:59,750 --> 00:51:01,320 Mutta tämä on todellinen koodi. 1071 00:51:01,320 --> 00:51:04,790 Joten jos luulet, että ihan, jos me todella ajaa tämä on nopea, 1072 00:51:04,790 --> 00:51:08,970 lopulta näet, kuinka me voisi tehdä asioita, kuten tämä. 1073 00:51:08,970 --> 00:51:14,008 >> Joten me jättää sinut, että huomautus ja nähdään keskiviikkona. 1074 00:51:14,008 --> 00:51:18,440 >> [Musiikki soi] 1075 00:51:18,440 --> 00:51:23,380 >> SPEAKER 2: Seuraavalla CS50, TF vaiheessa kapina. 1076 00:51:23,380 --> 00:51:24,112 >> SPEAKER 3: Siinä hän on. 1077 00:51:24,112 --> 00:51:25,362 Ottakaa kiinni! 1078 00:51:25,362 --> 00:51:29,912 1079 00:51:29,912 --> 00:51:32,074 >> [Musiikki soi]