DAVID J Malan: Allt rétt, þannig að þetta er CS50. Og þetta er greinilega föstudagur. Og þetta er í lok vikunnar einum. Svo þú getur muna að við horfið, síðasta sinn, með cliffhanger konar. Þar sem við óvarða lygi, að ekki Sama hvað þú hefur verið kennt að vaxa upp, 1 deilt með 10 er ekki, í staðreynd, 0,1 eða 0.100 eða 0,10000. Í staðreynd, ef við saman þessi program, eins og við gerðum í gær, með, gera ónákvæmni, og þá gera punkt, rista, ónákvæmni, við lærðum að þetta er það sem er 1 deilt með 10 í raun er. Svo er það í raun ekki alveg málið. En þetta er vísbending á sumir grundvallaratriði takmörkun á tölvum. Og reyndar, meðal það sem við erum að fara að gera í dag er að taka a líta á hvers vegna þetta er gerðist, hvaða áhrif þetta hefur, hvernig mannkynið hefur mistekist að skilja þetta í sumum mjög alvarleg situations-- niðurstaðan af sem hefur verið nokkuð sorglegt og expensive-- og einnig taka a líta á hvernig við geta í raun verja gegn þessum konar takmarkanir. Svo innsæi, ef til vill, hvers vegna er 1 deilt með 10, samkvæmt tölvunni minni hér, ekki bara 10/01, 0,10? Já. Hvað finnst þér? Áheyrandi: The Radix er öðruvísi? DAVID J MALAN: The hvað er? Ó, Radix er öðruvísi? Svo ekki alveg. Það er í raun meira grundvallaratriði í vélbúnaði. Aðrar hugsanir? Já. Áheyrandi: Þeir tákna tölur öðruvísi? DAVID J Malan: Svo they-- Hægri. Þeir tákna tölur öðruvísi. Rangt, greinilega. Svo að is-- Jæja, öðruvísi hvað? Eða frá hverjum? Frá okkur? Áheyrandi: Já. Þeir nota ekki aukastaf kerfi til [inaudible]. DAVID J MALAN: OK. Svo í vissum skilningi, þeir gera ekki nota tugakerfið. Undir hetta, allt er reyndar tvöfaldur, og það er tengt í raun. En það er jafnvel einfaldara skýring en það. Já. Áheyrandi: Þeir bara svo margir bitar. Þeir geta aðeins geymt upp að vissu miklu leyti, eins og við brotum. DAVID J MALAN: Já. Þetta er það sem er í raun að fá á það. Það kemur í ljós að tölvur yfirleitt, mun alltaf aðeins nota endanlegt magn af upplýsingum til að tákna eitthvað. Ekki satt? Eftir allt saman, höfum við aðeins fast magn af harður diskur rúm. Við höfum aðeins fasta upphæð RAM eða tölvuminni. Og ef þú hefur aðeins föst upphæð af einhverju, hlýtur að geta ekki í raun að telja upp óendanlegt eða einhver tala sem þú vilt. Þú, eins konar, að velja og velja hvaða svið fjárhæðir sem þú ert að fara til að styðja. Og svo til dæmis, í viku eða tvær síðan, þegar við ræddum um ASCII, og við ræddum um 8 bita, eða bæti, svo að segja, stærsta númer við gátum tákna með 8 bitum var hvað? 255. Og við getum tákna 256 Samtals gildi en ekki ef við eyða einn af þeim á 0-- Jæja, en ef við eyða einn af þeim á 0, þá stærsta númerið er, að sjálfsögðu, 255. Svo kemur í ljós, að þetta er málið líka, í þessu samhengi. Við byrjuðum að tala, síðasta sinn, um fljótandi punkta tölur, sem eru mismunandi frá heiltölur, í að þeir hafa Komma Og vonandi nokkrar tölur eftir það, en þeir eru of. A tölva er aðeins yfirleitt fara að nota 32 bita, kannski 64 bita að tákna fleytitölu gildi. Svo jafnvel þótt við höfum alist upp læra stærðfræði og vita að þú getur alveg hafa óendanlegur fjöldi af tölum eftir kommu, ekki ef þú ert með endanlegt minni. Þú, eins konar, að umferð, eða velja hvaða tölur sem þú ert að fara til að tákna. Og svo þú getur hugsa um, í vissum skilningi, þetta að vera tölva er næst nálgun að verðmæti 1/10 sem það er hægt að fá, með aðeins 32 eða svo bita. Og það er ekki bara 10/01. Til dæmis, ef ég breytt þessu í 1/3, sem við teljum er jafnvel einfaldara. Svo 1 deilt með 3. Leyfðu mér að vista skrána. Leyfðu mér að fara á undan og laun það. Og láta mig aftur að keyra hana. Hér líka, greinilega, 1/3 er ekki 0.3 og þá óendanlega fjölda af 3 áratugnum eftir það. Þú hefur þetta ónákvæmni í lokin. Svo við mennirnir séu réttar, og hvað þú lært er, í raun, rétt, en við erum að bumping upp gegn sumum takmörkunum. Og það sem ég hugsaði við myndum gera í dag, er að byrja með því að horfa á, hreinskilnislega, að sorglegu afleiðingar þetta stundum, þegar mannkynið er ekki alveg að innleiða fyrir þessum veruleika og þessar takmarkanir. Og við munum sjá röð af vignettes frá History Channel sem tekur a líta á hvernig hlutirnir hafa farið úrskeiðis. Það er um 8 mínútur að lengd, og við munum koma aftur eftir þetta og taka a líta á nákvæmlega hvað getur farið úrskeiðis. Ef við gætum dekkja lights-- [Vídeó spilun] -Computers, Höfum við komið öll að taka sem oft pirrandi vandamál sem fara með þeim. Bugs, veirur, og hugbúnaður galli eru lítil verð til að greiða fyrir þægindi. En í hátækni og hár-hraði Her og rúm program forrit, minnstu vandamál getur eflast í hörmung. Þann 4. júní 1996, vísindamenn unnin að ráðast unmanned Ariane 5 eldflaug. Það var vopnaður vísindalegar gervihnöttum hannað að koma nákvæmlega hvernig Segulsviði jarðar Hefur samskipti með sól vindur. Eldflaugar var byggt fyrir Evrópu Space Agency og lyfti burt frá verksmiðju sinni á strönd Franska Gvæjana. -Og Um 30 sekúndur í Flugferðin þeir fyrst tók eitthvað var að fara úrskeiðis. Að stúta voru segulnagli á þann hátt sem þeir ættu í raun ekki. Around 40 sekúndur inn í flugið, greinilega ökutækið var í vandræðum, og það er þegar þeir gerðu ákvörðun um að eyðileggja það. A Range Safety Officer með gríðarlega hugaður ýtt á hnappinn, blés upp eldflaugar áður en það gæti verða hættulegir öryggi almennings. -Þetta Var mær ferð á Ariane 5, og eyðingu þess tók setja vegna galla innbyggð í hugbúnaði eldflaugar er. -The Vandamál á Ariane var að það var að tala sem þarf 64 bita til að tjá, og hann langaði til að umbreyta það að 16 bita númer. Þeir gera ráð fyrir að fjöldi var aldrei að fara að vera mjög stór, að flestir þeirra tölustöfum í 64 bita tala sem 0 er. Þeir voru rangar. -The Vanhæfni einn hugbúnaður program til að samþykkja konar fjölda mynda af annar var á rót bilun. Hugbúnaðarþróun hafði orðið mjög dýrt hluti af nýrri tækni. The Ariane 4 eldflaugar hafi verið mjög vel, svo mikið af hugbúnaði búið til fyrir það var líka notað á Ariane 5. -The Grunn vandamálið var að Ariane 5 var hraðari, flýta hraðar. Og the hugbúnaður hafði ekki grein fyrir því. -The Eyðileggingu eldflaugar var gríðarlegur fjárhagslegur hörmung, allt vegna mínútna hugbúnaður villa. En þetta var ekki í fyrsta tími vefhegðunargögn vandamál hafði stríða nútíma eldflaugar tækni. -Í 1991, við upphaf af fyrsta Persaflóastríðinu, Patriot eldflaugum upplifað svipaða konar af fjölda viðskipti vandamál. Þar af leiðandi, 28 einstaklingar, 28 bandarískir hermenn voru drepnir og um 100 aðrir særðir, Þegar Patriot, sem átti til að vernda gegn komandi scuds, mistókst að skjóta eldflaugum. -Þegar Írak ráðist Kúveit og Ameríku hóf Desert Storm í byrjun 1991, Patriot eldflaugum rafhlöður voru á vettvangi að vernda Saudi Arabíu og Ísrael frá Írak Scud eldflaugum árás. The Patriot er US, miðlungs-svið yfirborð-til-loft kerfi framleitt af Raytheon félaginu. -The Stærð Patriot interceptor, sjálft, er um, um það bil 20 fet að lengd. Og það vegur um 2000 pund. Og það ber warhead af about-- Ég held að það er um það bil 150 £. Og Warhead, sjálft, er a hár sprengiefni, sem hefur brot kringum það. The hlíf á warhead er sem ætlað er að bregðast við eins og buckshot. -The Eldflaugar eru fara, 4 á ílát, og eru flutt með festivagn. -The Patriot andstæðingur eldflaugum kerfi fer aftur að minnsta kosti 20 ár núna. Það var upphaflega hannað sem air vörn eldflaugum að skjóta niður flugvélar óvinur. Í fyrsta Persaflóastríðinu, þegar að stríð kom með, herinn vildi nota það til að skjóta niður scuds, ekki flugvélar. Írak Force var ekki svo mikið vandamál, en her hafði áhyggjur scuds. Og svo þeir reyndu að uppfæra Patriot. -Intercepting Óvin eldflaugum ferðast á mach fimm var að fara að vera erfitt nóg. En þegar Patriot var hljóp í þjónustu, her var ekki kunnugt um að Írak breytingar sem gerðar scuds þeirra nær ómögulegt að ná. -Hvað Gerðist, er scuds að voru að koma í, voru óstöðug, þeir voru vagg. Ástæðan fyrir þessu, var Íraka, í því skyni að fá 600 kílómetra út af 300 km svið eldflaugum, tók þyngd af fremstu warhead og gerði Warhead léttari. Svo nú, Patriot er að reyna að koma á Scud, og mest af þeim tíma, yfirgnæfandi meirihluti af tími, það myndi bara fljúga með Scud. -Þegar Patriot kerfisstjóra áttaði Patriot missti markmiði sínu, þeir detonated warhead Patriot er, til að forðast hugsanlegar mannfall ef það var leyft að falla til jarðar. -Það Var það sem flestir sáu, þá stóra fireballs á himni, og misskilið sem rekur í Scud warheads. Þótt í nótt himinn, Patriots virtist til að vera með góðum árangri eyðileggja scuds á Dhahran, það gæti verið engin mistök um frammistöðu sína. Þar Patriot er ratsjá kerfi misst utan um komandi Scud, og aldrei hleypt af stokkunum, vegna hugbúnaðar galli. Það var á Ísraelsmenn sem fyrst uppgötvaði að því lengur sem kerfið var á, því meiri tími misræmi varð, vegna þess að klukku embed í tölvunni kerfisins. About 2 vikum fyrir harmleikur í Dhahran, Ísraelar tilkynnt Defense Department, Fjármálakerfið var að tapa tíma, að eftir um 8 klst gangi, þeir tekið eftir því að kerfið var verða greinilega ónákvæmari. The Defense Department brugðist við með því segja öllum Patriot rafhlöður að ekki láta kerfi á í langan tíma. Þeir sögðu aldrei hvað löngu var. 8 klst? 10 klst? 1000 klst? Enginn vissi. -The Patriot rafhlaða aðstöðu við kastalann á Dhahran, og gölluð innri hennar klukka, hafði verið á yfir 100 klst á nótt 25. febrúar. -Það Fylgst tíma nákvæmni um 1/10 úr sekúndu. Nú er 1/10 úr sekúndu áhugavert númer vegna þess að það er ekki hægt gefið upp í tvöfaldur, nákvæmlega. Sem þýðir, það getur ekki gefin, nákvæmlega, í hvaða nútíma stafræna tölvu. Það er erfitt að trúa því, en nota þetta sem dæmi. Við skulum taka númer, 1/3. 1/3 er ekki hægt að gefið upp í aukastaf, nákvæmlega. 1/3 er 0,333 gangi fyrir óendanleika. Það er engin leið til að gera það, með alger nákvæmni, í aukastaf. Það er einmitt sams konar vandamál sem gerðist í Patriot. Því lengur sem keyrði er verra tími villa varð. -Eftir 100 opnunartíma, the villa í tíma var aðeins um 1/3 úr sekúndu. En hvað varðar miða a eldflaugum ferðast á Mach 5, það leiddi til mælingar villa yfir 600 metra. Það væri banvæn villa fyrir hermenn á Dhahran. -Hvað Gerðist, er Scud ráðast var greind með viðvörunarkerfi gervihnöttum, og þeir nýtt að Scud var koma í almenna átt þeirra. Þeir vissu ekki hvar hún var að koma. -Það Var nú allt að ratsjá hluti af Patriot kerfi, verja Dhahran, til að finna og halda utan um komandi óvini eldflaugum. -The Ratsjá var mjög klár. Það væri í raun að fylgjast stöðu Scud og þá spá þar það myndi líklega vera, næsta tíma, ratsjá sendi púls út. Það var kallað svið hliðið. -Þá, Þegar Patriot ákveður nægur tími hefur samþykkt að fara aftur og athuga næsta staðsetningu fyrir þetta greind hlut, það fer aftur. Svo þegar það fór aftur til röng staður, sér það þá ekki mótmæla og það ákveður að það var engin hlut, það var falskur uppgötvun, og lækkar lagið. The komandi Scud hvarf frá skjánum ratsjá, og sekúndum síðar, það skellur inn í kastalann. The Scud drap 28 og var síðast einn rekinn á fyrsta Persaflóastríðinu. Tragically er uppfærð hugbúnaður kom á Dhahran daginn eftir. Hugbúnaðurinn galli hafði verið fastur, lokun einn kaflinn í órótt Saga Patriot eldflaugum. [END spilun] DAVID J Malan: Þannig að við munum taka a líta á sumir svipaðar takmarkanir í bara smá. En fyrst skulum við Umskiptin nokkrar FYI er. Svo one-- helgina, það verður frábær köflum, sem er ætlað að undirferli reglulega tímaáætlun köflum, sem mun byrja upp í viku þess vegna. Taka a líta á heimasíðu CS50 er fyrir frekari upplýsingar um þá. Þeir munu einnig vera teknar og streyma lifa fyrir þá ófær um að mæta. Heimadæmi 1 er á website Námskeiðið er nú þegar, og við munum taka a líta á að í réttlátur a lítill hluti. Og viðtalstímar of, mun taka setja þessa mánudegi til fimmtudags. Þannig að þetta var mest Canonical program skoðuðum við síðasta tíma. Það er eins og einfaldasta forrit sem þú getur skrifað í C, og jafnvel er það hluti af djörf kröfu. Ekki satt? Vegna þess að það er mikið af virðist flókið við þetta. Svo skulum taka a fljótur líta á hvað sumir af þessum þáttum voru og þá reyna að veita andlegt fyrirmynd hvernig þetta einfaldasta forrit vinna, og þá munum við byrja horfa á hlutina alltaf flóknari. Þannig að fyrirsögnin hér, er lögð áhersla nú, í gult, hvað gerði við segja, síðasta sinn, að þetta gerir fyrir okkur? Hver er tilgangurinn með það þjónar? Einhver frá lengra aftur? Já. Áheyrandi: [inaudible] DAVID J MALAN: Good. Svo það gefur þér aðgang skipunum, eða við skulum kalla þá virka, að einhver annar skrifaði, sem eru gefin svo að segja, á einhvern annan skrá. Þannig að við munum sjá nákvæmlega hvað .h skrá er á móti a .c skrá, loksins. En nú, bara vita sem printf, til dæmis, er meðal aðgerða sem hafa verið lýst í einhverja aðra skrá, einhvers staðar annað á disknum skýinu er að gerir okkur kleift að komast printf og nota það án þess að þurfa að fjárfesta á ný sem hjól sjálf. Á sama tíma, helstu. Hvað var byggður á hliðstæðum helstu, síðustu viku? Já. Áheyrandi: Green fáninn er smellt. DAVID J MALAN: Já. Scratch er, þegar grænn fáni smellt. Það er eins og ráðgáta stykki sem ánægja það burt. Og svo álíka, gerði heiminn ákvað fyrir nokkrum árum að í C, og fullt af öðrum tungumálum, ef þú vilt að skrifa forrit, Fyrsta virka hefur til að kalla, helstu. Og það þarf að líta svona út. En við munum koma aftur, annar tími, á það, int, og, ógilt, meina í því samhengi. Fyrir nú, eru hrokkið axlabönd konar af eins ráðgáta stykki lögun grunni er að ævisaga einhvers fjölda af línum. Og meðal á línum hér, er þetta einn hér. printf er fall sem tilgang í lífið er að prenta streng. Og með því að sniðinn, ég meina þér getur stinga í placeholder gildi, og þú getur valið hversu aukastaf stig, hve mörg númer til að prenta eftir kommu og þess háttar. Og printf, að sjálfsögðu, tekur einn eða meira rifrildi eða breytur, annars þekkt, meira einfaldlega, eins og inntak. Svo printf, eins mikið af virka, tekur inntak. Og þessir aðföng eru faðmaði af tveimur svigum hér. Og inni þá er eitt inntak. Það er band, eins og við höfum kallað það, sem er bara röð af stöfum, eins og orð eða setningu, eða í heild ritgerð jafnvel, á milli gæsalappa. Og það er það sem er að fara að hafa áhrif á hegðun printf vegna, að sjálfsögðu, það er bara almenn prenta virka. Það er ekki að fara að vita hvað að prenta, nema þú segir það. Og þá, sumir minutiae. Hvað gerði við segja þetta undarlegt röð af táknum er? Já. Áheyrandi: Ný lína. DAVID J MALAN: Ný lína. Svo kemur í ljós, getur þú ekki bara högg, inn, þegar þú ert að skrifa forrit. Almennt, þýðandinn er að fara að fá smá ráðvilltur um hvað þú átt við. Frekar, þú þarft að bókstaflega segja, að gefa mér nýja línu hér. Og svo er / n hvað við almennt kalla flýja staf. Svo n, fyrir nýja línu. Og þýðandinn veit að þegar það sér / n, það ætti að örva tölvuna, að lokum, eða printf, í þessu tilfelli, að prenta út í raun nýtt lína, eins og hitting, slá, takkann á lyklaborðinu þínu. Og loks, hvað gerði við segja þetta stykki af setningafræði er fyrir? Hvað þýðir það tákna? Já. Áheyrandi: [inaudible] DAVID J MALAN: Það er bara the endir af the lína. Það er enda yfirlýsingarinnar. Og átta sig á að við gerum ekki setja þær alls staðar. Við vissulega ekki setja þá á endunum hverja línu. Til dæmis, það er ekkert á Fyrsta lína, það er ekkert á línu með, helstu, það er enginn eftir hrokkið axlabönd, en þú munt byrja að sjá og fá kunnugur þar sem það er kallað. Og það er nánast alltaf eftir fall hringja eða yfirlýsing, sumir aðgerð að þú ert í raun að taka. Og vita núna, sérstaklega ef meðal þeirra minna þægilegt, þetta eru tegundir af heimskur hlutur að þú munt á endanum óvart lemja höfuðið að veggnum yfir. Þar sem þú munt vera rökrétt öruggur í sumum vandamál þú hefur leyst fyrir vandamál sett, og fjandinn hlutur bara mun ekki saman eða jafnvel keyra. Og svo oft, snemma, það er að fara að verið vegna þess að þú misstir sviga, eða þú misstir semíkommu. Og svo bara að hafa í huga af þessum tegundum af hlutum, og reyna ekki að fá svekktur með þá vegna þess að mjög fljótt er þetta verða gamall hattur. En það er mjög auðvelt að fá svekktur snemma, í kjölfarið. Svo nú skulum við taka a líta á hvernig þessi lína er í raun að vinna og þá líta á örlítið flóknari einn. Þannig að við höfum hérna, sem getu til að draga á þessum skjá. Og við skulum gera ráð fyrir að þetta er minn skjár tölva, en ég er að skrifa, hello forritið, og ég hef ekki til framkvæmda, printf. Einhver annar hefur innleitt, printf. Sem langar að segjast hafa innleitt, printf? Ef við getum? Allt í lagi, hvað er nafnið þitt? STUDENT 1: [? Copal. ?] DAVID J MALAN: copal, koma á upp. Komdu upp. Allt í lagi. Þannig að við höfum, hér, sumir nafn tags, þar sem við munum gera smá leik af þessu. Og við munum hringja í þig, printf. Og ef þú vilt koma hingað, það sem ég hef bara dregið á skjánum, það er einfaldlega, það er ég, þetta. Allt í lagi, svo, halló ég heiti, printf, ef þú vilt setja það á. Allt í lagi. Og ef þú getur farið standa af tölvuskjá eins og þú ert að virka sem kom með þessa tölvukerfi. Og tilgangur þinn í lífinu er að í raun prenta eitthvað. En mikið eins og program við bara haft á skjánum, hér, við erum að fara að þurfa að í raun að gefa þér nokkur inntak. Og svo, ef inntak mína, hér er virðist, hvað er liðin að printf, skulum konar spotta upp svona. Ég ætla að bókstaflega skrifa á a stykki af pappír, "halló, heimur," sviga N. Og til að vera skýr, það Ég hef bara dregið á þessu stykki af pappír, lítur út eins og þetta. Svo þegar ég keyra þetta forrit, og þetta gula lína af kóða fær keyrð, það er eins og ég, hello program, er fötlun sumir inntak burt til falls að einhver skrifaði annað. Og ef þér, með fingrinum, gæti reyndar, með fingrinum, draga á skjánum hvað það er sem þú hefur verið afhent, áhrif, að lokum, er að sjá nákvæmlega það, á skjánum. Og a Little horn raunin hér. Og gott, ættum við ekki að sjá sem, nýja línu, á þessum tímapunkti. Það væri rangt fyrir þig að sérstaklega draga ný lína. En ef við héldum að skrifa orð á skjár, myndu þeir á endanum að neðan það. Svo þakka þér kærlega fyrir, en halda fast hérna fyrir bara eitt augnablik. Við þurfum nú eitt annað Sjálfboðaliðinn, ef við gætum, það er að fara að þurfa að leika hlutverk of-- Það er aðeins fólk í hljómsveitinni núna. Hvernig about-- OK. Hérna. Komdu upp. Hvað er nafn þitt? STUDENT 2: [? Ivay. ?] DAVID J MALAN miður? STUDENT 2: [? Ivay. ?] DAVID J MALAN: Ethan, koma á upp. Nei? Var ég að rangt, jafnvel eftir að þú sagðir það tvisvar? Komdu upp. Það er erfitt að heyra hér. OK. Og ég er hryggur, hvað er nafnið þitt? STUDENT 2: [? Ivay. ?] [? DAVID J MALAN: Ivay. ?] OK. Fyrir nú, ef þú ert ekki huga, þú ert getstring. STUDENT 2: OK. Cool. DAVID J Malan: Svo ef þú vilt að standa hér fyrir réttlátur a augnablik, við skulum taka a líta á a örlítið flóknari forrit, sem nú hefur þrjár línur af kóða. Þannig að við höfum einn, nafn þitt með printf; tveir, kalla til GetString, fylgt eftir með verkefni til a breytu sem heitir, string s, eða kallast s; og þá annað símtal til, printf, en í þetta skiptið með tveimur inntak. Þannig að við höfum þegar gert ríkisins nafn þitt, eða öllu heldur, höfum við þegar gert printf hringja. Þannig að ég ætla að skrifa, nafn þitt. Og svo, hvað ég ætla að fara, printf, í bara smá stund, er einfaldlega þetta. Svo ef þú vilt fara á undan og draga þetta á skjánum, það er inntak þitt núna. Allt í lagi. Og gleyma band, við höfum nú eigin línu okkar af kóða hér. Svo í, GetString, þurfum við að í raun kalla, GetString. Svo er tilgangur þinn í lífinu að bara ganga út í hljómsveit, ef þú gætir, og fá nafn einhvers. En við skulum gefa þér eitthvað til að setja það á. Ef þú vilt, fara undan og fá band, fá nafn einhvers á að stykki af pappír, ef þú gætir. Allt í lagi. Og við munum sjá, í bara smá stund, en nafn við erum að fá. Á sama tíma, hvað ég ætla að hafa tilbúin, er auður stykki af pappír, þar sem, ég ætla að geyma hvað sem gildi það er að GetString er aftur til mín, Ég, að vera a band breytu sem heitir, s. Allt í lagi. Svo hvað ertu með hérna? Nik. Allt í lagi. Þannig að við höfum nafn Nik hér. Svo er þetta það bókstaflega hefur verið skilað til mín, svo að segja, með því að GetString. Ég, nú, er að fara til framkvæma vinstri hönd hlið þess tjáningu, þar sem ég einfaldlega skrifaðu niður, vegna í dag, Nik. Svo nú hef ég breytu heitir, s, geyma nafn Nik er. Ég hef þegar afhent til printf, fyrri rök. En í þriðja og síðasta línu okkar númer, ég hef í raun að hönd printf eitthvað smá different-- "halló,% s," sviga n. Og svo síðasta línan sem ég ætla að send-- síðasta sem ég er að fara að skrifa niður núna, er þetta. Þannig að tvær línur af kóða, eða frekar síðustu línu af kóða, kallar tvo inputs-- , á þessari, og tveir, þetta. Svo ef printf virka okkar getur nú tekið þetta sem inntak, láta mig hreinsa skjáinn fyrir þig. Reyndar ekki, getur þú farið á undan. Við munum láta hann upp, þar sem það er á sama program. Við ættum að sjá, halló, Nik. Allt í lagi. Þannig að þetta var alveg nokkrar hindranir til að hoppa í gegnum, bara að skrifa, ástand þitt nafn, og halló, Nik. En þetta einfalda hugmynd um skilaboð brottför, inntak brottför og framleiðsla móttöku, er einmitt fyrirmynd við erum að fara að hafa fyrir jafnvel flóknustu aðgerðir. Svo þakka þér svo mikið að þér bæði. Við höfum yndislega streitu bolti hér fyrir þig. Og þakka þér að GetString okkar og printf sjálfboðaliðar eins. Þakka þér. Allt í lagi. Þakka ykkur bæði. Þannig að við höfum verið að tala um svona langt, að mestu leyti um strengi. Og það kemur í ljós að C getur raunverulega skilja nokkur mismunandi gerðir gagna. Í raun, við skulum taka a líta á þetta hér. Svo C, og mikið af tungumálum, skilja hlutina kallast stafir. A bleikju er yfirleitt eitt bæti, eða átta bita. Og það táknar einn staf, eins og stafinn A, eða höfuðborg bréf A, eða lágstafir bréf A, eða upphrópunarmerki, eða hvaða staf sem þú getur slegið á lyklaborðið, og stundum jafnvel meira. Við gerast líka að sjá fljóta. A fljóta er yfirleitt að 32-bita gildi, eða fjögur bæti því aftur, eitt bæti er átta bita. Svo er fljóta fljótandi lið gildi, eitthvað með kommu. Og reyndar, það er það myndin var að tala um þegar þeir töluðu um fljótandi benda gildi, sumir fastur fjölda bita notuð til að tákna alvöru númer. En það er líka það sem kallast tvíliðaleikur. Þetta eru í Java, ef þú hefur tekið APC, og tvöfaldur, eins og nafnið sem betur fer gefur til kynna, er tvisvar sinnum eins stór eins og fljóta. Það er samt rauntala, það hefur bara fleiri bita sem að vera sífellt nákvæmari, eða til að geyma jafnvel stærri tölur. int er auðvelt. Við ræddum um það í síðasta sinn. Það er bara heiltala. Og það er yfirleitt 32 bita, eða fjögur bæti. Og svo, ef þú ert með, við skulum sjá nú, 32 bits-- og við gerðum þetta í viku 0, alltaf svo briefly-- ef þú ert 32 bita, hvað er stærsta Fjöldi þú getur táknað sem heiltala? Gefa eða taka? Það er eins og 4 milljarða, og það er aðeins ef við erum alþingismaður jákvæðar símanúmer. Ef þú ert 32 bita, og þú vilt tákna neikvæðar tölur eins og heilbrigður, range-ið þitt er í raun, neikvæð 2 milljarðar í jákvæðar 2 milljarða. En almennt, munum við byrja á 0 upp í 4 milljarða króna. Þú þarft ekki að vita nákvæmlega, en við getum séð þetta, í raun, ef ég bara opna smá reiknivél, hér. Ég get gert 2 í ​​32, og það er einmitt hversu stór, hversu mörg gildi þú getur tákna, með 32 bita. Og það er um það bil 4 milljarða. Þannig að við munum halda að sjá að tala í nokkrum mismunandi stöðum. En ef þú þarft lengur tölur en það, það kemur í ljós að það er eitthvað sem kallast lengi lengi. Og lengi lengi er almennt 64 bitar, sem þýðir að það er stærðargráðu jafnvel stærri en int. Þannig að ég get ekki einu sinni bera stærsta tala sem þú getur táknað, en það er greinilega stærri. Nú sem innskot, sögulega, ef int er 32 bita, og lengi lengi er 64 bita, hvernig stór er langur, ekki lengi lengi? Þú vilt held að það er lengur en int en kannski minna lengi en lengi lengi, en það fer í raun. Og svo kemur í ljós hver af óánægju líka, með að skrifa kóðann á ákveðnum kerfum, er að ekki allar þessar tegundir gagna hafa fyrirframákveðnar gildi. Stundum er það svona marga bita. Stundum er það að margir bita. Svo þú ert í raun að vita, stundum, hvað vélbúnaður þú ert að keyra hugbúnað á. Sem betur fer, önnur tungumál og aðrar tegundir gagna sem nú eru fyrir hendi, leyfa þér að vera nákvæmari. Jæja, við sáum band, og við sáum bool líka, en það kemur í ljós þá koma aðeins með CS50 bókasafn. Svo þeir eru ekki byggð í C Þeir staðinn, koma í þeirri skrá sem heitir CS50.h, að við munum að lokum afhýða aftur lag af. En nú, þeir eru bara fleiri tegundir gagna. A bool er satt eða ósatt, og band er röð af stöfum, eins og orð. Nú printf, við höfum séð, hefur staðgengla,% s er einn. Og þú might vera fær til að nú, álykta frá þessum öðrum dæmum, hvernig þú gætir hafa tákn fyrir ýmsar tegundir gagna. Til dæmis, taka giska, ef þú langaði til að prenta út eitt bleikju með printf, sem tákn er sennilega% c. Og ef þú vilt prenta út heiltala með tákn,% i. % LLD er lengi lengi aukastaf gildi, en lengi lengi, þannig að kort til að. Og þá% f fyrir fljótandi lið gildi eða tvöfalt, svo stundum þeir eru endurnýta í mismunandi samhengi. Þannig að við munum sjá og nota sumir þeirra með tímanum. Og printf og aðrar aðgerðir líka styðja aðra 'flýja röð, og stundum eru þetta nauðsynlegt. Svo er sviga n nýja línu. Sviga t, er einhver langar að taka a stunga? Áheyrandi: Tab. DAVID J MALAN: Tab. Svo ef þú vilt í raun að prenta út flipa, ekki föst rýmis en í raun dálkamerki, þú högg ekki þinn, flipi, lykill á lyklaborðinu, almennt, þú gerir í raun sviga t. Sviga tvöfaldur vitna, hvers vegna vildi ég vil alltaf að? Ekki satt? Hvers vegna get ég ekki slegið bara tvöfaldur vitna á lyklaborðinu mínu? Áheyrandi: Vegna þess, annars, það er fara að hugsa það er enda af eins prenta þína [? texti. ?] DAVID J MALAN: Einmitt. Mundu, með okkar printf dæmi, þegar við stóðum að printf í inntak, á vinstri þeirrar inntak band og um rétt þess inntak vor, að sjálfsögðu, var tvöfaldur vitna. Ef eigin inntak þitt er tvöfalt vitna í miðju að gæti tölvan hugsanlega fá rugla, eins og til, er þetta tvöfalda tilvitnun tilheyra í miðjunni? Er það tilheyri með vinstri einn? Er það tilheyri með the réttur einn? Og svo, ef þú vilt gera það frábær ljóst, þú sviga tvöfalda quote, þannig að það er sloppið, svo að segja, og það er ekki conflated fyrir eitthvað annað. Og það er nokkrum öðrum hér, sviga r, einn vitna, 0, að vér megum sjá með tímanum, eins og heilbrigður. Og nú, hvað um aðgerðir? Svo aðgerðum sem við getum tekið svona langt í þessu tungumáli, C, vel, við höfum séð, printf, auðvitað, og allir af öðrum á skjánum, hér, sem við munum nota til að Fyrstu vikurnar er auðvitað aðeins, koma þegar CS50 bókasafn. Og þeir gera það mun auðveldara, í C, til raunverulega fá notandi inntak. Það kemur í ljós að í C, og hreinskilnislega í nokkrum tungumálum, það er raunverulegur sársauki í hálsi að gera eitthvað einfalt, eins hvetja notandann fyrir lyklaborð, fyrir inntak hans. Og svo þessar aðgerðir að gera það auðveldara. Og það hefur líka villa stöðva gegn, þannig að þegar þú muna á miðvikudag, við sá, að reyna aftur, viðvörun, þegar ég er ekki að vinna, og ég gafst orð, í stað fjölda? Við höfum gert mikið að lyfta snemma á til að tryggja að notandinn vinnur. En þetta eru bara þjálfun hjól að við munum að lokum, og fljótt, taka burt. Svo að ágrip, þá við skulum taka a fljótur líta, mikið eins og við gerðum með grunni, á sumir Canonical býr í C Þetta er ætlað að, flokka af, vera vindbylur ferð, bara svo að þú sért með tilvísun og þegar þú hefur séð það í fyrstu. En þá munum við líta á raunverulegum erfðaskrá nota sumar af þessum kubbar. Svo mikið eins í grunni, þegar við höfðum yfirlýsingar eins, segja eða, bíddu, í C, þá höfum við virka eins og heilbrigður, eins printf. Ef við viljum að tjá ástand í C, það er svipað, í anda, að því ráðgáta stykki sem leit út eins og þetta í grunni. En í staðinn, við bókstaflega bara að skrifa, ef. Og þá, í ​​sviga, við að setja skilyrði, þar sem ástand er það sem við munum kalla, aftur, Boolean tjáningu. Og aftur, þetta er tegund af sauðakóðanum. Og í raun, // eru ummæli. Það er bara enskum orðum í mig. En þetta er almennt uppbyggður, ef ástand. En við munum sjá steypu dæmi í aðeins augnablik. Ef þú vilt hafa tveir-vegur punga í veginum, mikið eins og við gerðum með sjálfboðaliða okkar á Miðvikudagur, getur þú hafa óákveðinn greinir í ensku, annað hvort. Og ef þú vilt hafa þriðja og síðasta skilyrðinu, eða vanræksla ástand, þú getur hafa bara annað blokk, þar. Og sömuleiðis, með Boolean tjáning, þú getur, og þá saman. Og við sáum á miðvikudaginn, sem það er ekki einn merkið, það er tveir, af ástæðum lægra stigi sem við munum að lokum sjá og spila með. Eða-ing hlutina saman er 2 lóðrétt bars. Á bandaríska hljómborð, þetta er yfirleitt lykillinn með Shift lyklinum ofan Enter takkann eða Return takkanum. Þá er þetta það sem við munum nota kannski einu sinni eða tvisvar. Þeir eru virkni jafngildir hvað þú getur gert með að, ef annað hvort, annars ef annar, smíða, en þeir eru kallaðir skipta. Þeir líta mjög mismunandi, en við munum sjá í sumum dreifingu númerið okkar, fyrir framtíð vandamál setja, líklega, að það er stundum bara fallegri leið til að tjá heild fullt af aðstæðum, án þess að hafa a einhver fjöldi af hrokkið axlabönd og a einhver fjöldi af svigum og inndrátt. En þeir gefa okkur ekki meira afl en við höfum nú þegar. Og nú lykkjur. Og þetta munum við líta á smá hægar. En þá munum við byrja að nota þetta, sérstaklega fyrir þá sem þegar þekkja. Þetta er Canonical leið, ef ótrúlega Bogagöng leið, að skrifa lykkju C Nú lykkja í grunni var frekar einfalt. Þú ert með, að eilífu, blokk. Þú ert með, endurtaka, blokk með bara tala sem þú þarft að slá inn. Og með, fyrir lykkju, þú getur innleiða báðum þessum hugmyndum, en það er aðeins meira tæknilega. En hreinskilnislega, það er einnig tiltölulega einfalt. Þegar þú veist röð Rekstur, þú bókstaflega eru bara að fara að stinga í gildi og segja tölva hvað ég á að gera. Svo hér er dæmi. Þetta er lykkja sem, alveg einfaldlega, telur frá einum fjölda upp gegnum annað. Og bara eftir glancing á það, jafnvel ef þú ert ekki fyrri reynslu með þetta tungumál, hvað fjölda er það að byrja líklega telja á? OK, 0. Og ég giska á að sé vegna þess að þú sjá að það er int og i, sem er breytilegt. Það er frumstilla 0. Og þá seinna, það lítur út eins og við erum liggur printf, gildi. Og í raun, gerði ég smá prentvilla hér. En það er auðveldlega fastur. Leyfðu mér að bæta í, ég á heima hér. Við höfum nú printf vellíðan fór að staðgenglinum gildi. Og hvað er að fara að telja upp í gegnum? Áhorfendur: 50. 50. 49. DAVID J MALAN: 49. Svo 50, við fyrstu sýn, virðist rétt. En það, það kemur í ljós, er að fara að vera ástand okkar sem við höldum að haka. Og við erum að fara að hætta þegar Ég er ekki lengur minni en 50 |. Þannig að þetta lykkja öfugt, ætti framkvæma, svo lengi sem I er minni en 50. En um leið og það verður 50 eða 51, eða verri, það ætti að hætta sjálfkrafa. Allt í lagi. Svo hvað raunverulega gerist hér? Svo er þetta röð Rekstur lykkju. Einn, hefur þú svokallaða frumstilling. Þetta gula hápunktur klumpur af kóða er keyrð fyrst, og það hefur þau áhrif að, á Miðvikudagur, ímynda þú sennilega. Það skapar breytu sem heitir i og það verslanir í breytunni gildi 0. Svo ég er 0 á þessum tímapunkti í sögunni. The næstur hlutur sem gerist í þessu reisa, er að ástand fær köflóttur. Svo ég athuga strax, er i minni en 50 |? Og auðvitað, svarið nú er, örugglega, já. Já, vegna þess að ég er 0, og sem er örugglega minna en 50. Þá hvað gerist er að þetta, lína af kóða fær framkvæma. Og í raun, ef það er margfeldi línur af kóða í þessum hrokkið axlabönd, þeir fá fram hvert á eftir öðru. Og í raun hér, er virðist, að prenta út fjöldi i, sem er að fara að að vera 0, og síðan 1, og síðan 2. En hvers vegna? Hvers vegna er það að hækkaður? Jæja, fjórði hlutur sem gerist er að þetta setningafræði fær framkvæma, eftir semíkommu. Ég ++ er styttingin leið til að segja; taka gildi i og bæta 1 við það; og svo næsta skipti í kring, bæta 1 við það; og næst þegar kring, bæta 1 við það. Þannig að ef við höldum áfram, hvað er að fara að gerast næsta er ég ekki að fara að frumstilla ég alltaf aftur. Ef ég hélt að virkja ég til 0, þetta dæmi myndi aldrei enda því ég væri fastur á 0. En hvað er að fara að gerast er að ástand verður með lína af kóða mun fá fram, i verður hækkaður, ástand mun vera merkt, kóði mun fá fram. Og það hélt hjólreiðar aftur, og aftur, og aftur, Þangað til ég ++ veldur gildi 50. Skilyrði segir þá, er 50 minni en 50 |? Svarið er auðvitað, er ekkert, og svo hættir allt póstnúmer framkvæmd. Og ef þú ert með fleiri kóðann á skjánum niðri, það er það sem gerist næst. Það birtist út úr þessum hrokkið axlabönd og áfram að prenta meira eftir það. Svo brandari nú, frá Foxtrot, sem þú munt ef til vill nú skilja. Það er alltaf fyndið. Það er eins og chuckles konar percolate, og þá ljóst að þú ættir ekki að vera að hlæja að húmor eins og þetta. En það er einhver takeaway hér pedagogically líka. Svo kemur í ljós að ég er vantar stykki af setningafræði, eða Foxtrot er vantar a stykki af setningafræði hér. Hvað vantar, að við höfum haft í öllum öðrum td svona langt? Return, er það, svo það er eitthvað annað, að við munum koma aftur til áður en langur. Hvað vantar, þó? Já. Áheyrandi: The Frumstilling [inaudible]. DAVID J MALAN: OK. Svo já. Svo í raun, þetta is-- Jæja, og telja er frumstilla upp hér að ofan, eða öllu heldur, lýsti upp hér að ofan. Svo er þetta annar leið til að gera það. En ekki í línu og það er gild þó. Hvernig væri hér? Áheyrandi: Er það hrokkið axlabönd? DAVID J MALAN: Já. Svo hrokkið axlabönd vantar. En þetta númer, ég meina, að lánsfé þeirra, er í raun, setningafræðilega gild. Það kemur í ljós, þú ert ekki þurfa hrokkið axlabönd ef þú hefur aðeins eina línu af kóða sem þú vilt keyra inni í lykkju. Nú erum við alltaf í bekknum og í öll dreifingu númerið okkar, innihalda hrokkið axlabönd engu að síður, bara fyrir sakir skýrleika er. En ljóst að í kennslubókum og á netinu dæmi, þú getur mjög vel séð hrokkið axlabönd vantar einhvern. Og það er allt í lagi, ef það sem þú hafa inndregin og ætlað er bara ein lína af kóða, og ekki margar línur af kóða, hugsanlega. Allt í lagi. Svo tengist útgáfu ónákvæmni, er mál flæða, í þeim skilningi að, á sama hátt, ekki heiltölur hafa takmörk þeirra bara eins fleytitölum? Í heimi fleytitölu gildi, getum við aðeins verið svo nákvæmur, eftir það, stundum slæmur hlutur getur gerst, og forrit okkar getur verið gallaðir og villa. Nú jafnvel með heiltölur, þú getur keyrt inn í vandamál. Nú heil tala er ekki með a kommu eða númer eftir það. Það er bara náttúrleg tala, yfirleitt. Svo hvað gæti farið úrskeiðis með int? Ef ég er að nota int til telja, hvað gæti farið úrskeiðis? Virðist mikið einfaldara. Já. Áheyrandi: Ef Fjöldi fær [inaudible] DAVID J MALAN: Já. Hvað ef þú telur svo hátt, að þér getur ekki tjáð að mjög stór númer. Ekki satt? Á einhverjum tímapunkti, þú ert að fara að fara yfir mörk af 32-bita gildi eða 64-bita gildi. Nú aftur, ég er ekki viss um hvernig að kveða upp 64-bita gildi, en ég veit með 32-bita heiltölu stærsta eftirfarandi gildi það getur verið, ef það er bara jákvætt gildi er um 4 milljarðar króna. Svo ef ég reyni að telja til 5 milljarðar króna, eitthvað er að fara að gerast. En við skulum sjá hvað í raun getur gerst. Í heimi heiltölu flæða, þar sem þú, í vissum skilningi, flæða Geta heiltala, hvað gæti gerst? Svo hér er tvöfaldur fjöldi, það er throwback 0. Það er allt 1 er, og tákn það eru heimildir 2, þannig að þetta er tvöfaldur. Svo þetta eru 8, 1 bita á skjánum. Og ef þú manst eða þú gerir fljótt stærðfræði, Hvers virði er að vera fulltrúi hér með þessum átta 1 bita? 255. Og jafnvel ef þú varst ekki alveg viss af stærðfræði, getur þú gert það út. Eða þú gætir bara svona af ástæðum í gegnum það, Bíddu, ef ég er fulltrúi í 8 bita gildi, og ég hef fengið 256 möguleg gildi, en fyrsta sem er 0, Ég veit bara að Stærsta er að fara að vera 255, og það er það sem þetta gæti verið. Svo ætla ég að reyna að bæta 1 að þetta gildi. Hvað myndir þú gera í bekk skóla þegar að bæta við 1, og það er í raun ekki passa vegna þess að þú þarft að bera 1? Hvað er þessi tala að fara að verða þegar þú bæta 1? Það er að fara að verða 0. Ekki satt? Vegna þess að ef þú hefðir fleiri bits-- og ég ætla reyna að, eins konar, slá það út here-- ef við hefðum fleiri bita, hvað við gæti gert hér er að bæta 1, og þá að við myndum fá þetta. Úpps. Við myndum hafa 1 bita alla leið hingað. En ef þetta er endanlegt gildi er það aðeins 8 bitar, og það er fyrirfram ákveðinn af tölvunni, sem 1 er í raun ekki þar. Það fellur bara svona af kletti. Og svo ef þú bætir 1 til 255, hvað gildi færðu virðist? 0. Og svo tölum tilviljun, og ef til vill, óviljandi, endað umbúðir kringum svona. Svo hvað er hægt að vera vísbendingu um þetta? Jæja, það er nokkrar mismunandi hluti. Svo einn, það er á endanum að leita eins 0, óviljandi, en þú getur konar séð, jafnvel í hinum raunverulega heimi, fyrir betri eða verri, einkenni þessari hugmynd um takmörk. Til dæmis, einhver ykkar sem hef spilað Lego Star Wars, hefur einhver gerst að vita hámarksfjöldi mynt þú getur safna í Lego Star Wars? Taka giska byggt á leiðandi spurningar í dag. Það er stærri en 256 eða 255. Það er 4 milljarðar króna. Svo kemur í ljós, og það er einhver people-- sumir googling staðfesti í síðustu night-- hafa fengið 4 milljarða gull mynt, eða whatnot, í Lego Star Wars. Þó virðist, það er leið til að plata leikinn, það er padda eða lögun, sem gerir þér kleift að bara renna fullt og fullt af punktum. En stærsta mögulegt gildi, í samræmi þessari skjámynd af einhverjum sem ég finna á netinu, er reyndar 4 milljarða. Nú er ástæðan fyrir því? Það er einmitt 4 milljarða, sennilega vegna þess að einhver ákvað, sem var að skrifa þennan leik, að þeir gætu gert 4 milljarða, eitthvað, eitthvað, eitthvað, eins verðmæti ég setti upp með reiknivél fyrr en það er bara smá hreinni fyrir menn að segja hámarksfjölda af coins-- eða pinnar, eins og þeir kalla them-- að þú Hægt er að safna er 4 milljarðar króna. Og svo, af hverju er þetta? Hvernig er LEGO leikur framkvæmd borðið sem er að halda utan um fjölda mynt þú ert? Þeir eru að nota það? Áheyrandi: Það stoppar telja eftir 4 milljörðum króna. DAVID J MALAN: Það hættir telja eftir 4 milljarða, sem þýðir að þú getur álykta, sem forritari, að þeir eru líklega með 32 bita heiltölu. Eins forritari bókstaflega bara slegið, int, í númerið hans eða hennar, og það er tegund af breytu sem þeir eru að nota til að geyma kóða einhvers. Svo er önnur einkenni þar af þessum tegundum af mörkum. Þannig að ég hef ekki spilað þennan game-- og ég var að lesa upp á sögu til að staðfesta eins much-- en í Upprunalega útgáfa af Civilization, þar þú samskipti virðist við hvert annað og geta heyja stríð eða hafa frið, Gandhi átti að vera einn af mest friðsælt stafir, eins og ég skilja það, í fyrsta útgáfa af Civilization. Og í raun, á kvarðanum 1 til 10, árásargirni hans var bara 1. Svo alltaf svo mildilega árásargjarn, virðist. En á einhverjum tímapunkti, þú getur greinilega setja lýðræði í landafræði þinni. Og ef þú setur lýðræði í þína útgáfu af leiknum, þá árásargirni færnistig þitt fer niður. Það er gott. Fólk er meira friðsælum greinilega, í þeirri stöðu. En virðist, einhver gerði ekki hafa, ef ástand í upprunalegu útgáfuna af kóða. Svo árásargirni stigi Gandhi fór frá jákvæð 1, mínus 2, í neikvæðar 1, en leikurinn er ekki skilja neikvæðum tölum. Svo það sem gerðist var árásargirni Gandhi stigi fór úr 1, 0, í neikvæðar 1, sem hafði áhrif umbúðir í kring til að vera árásargjarn eðli í leiknum, hefur gildið 255, á kvarðanum 1 til 10. Og síðan þá, það er verið fleiri incarnations af þessum leik, og þeir hafa haldið það eins eins konar páska egg, að Gandhi er greinilega svo hræðilega árásargjarn. En það var afleiðing af a mjög einfalt forritunarmál villa í því mjög snemma útgáfa af the leikur. Nú meira disturbingly, meira nýlega, Boeing 787 var skjalfest og að hafa galla, ekki góður af tækinu þú vilt sérstaklega að hafa galla. Og einkennin, sem ég las hér, úr grein á netinu, var þetta líkan 787 flugvél sem hefur verið fær stöðugt afl fyrir 248 dögum er hægt að missa allt riðstraum, AC, rafmagn, vegna rafall stjórna einingar, GCUs, samtímis að fara í ekki-öruggur háttur. Þannig að þetta var viðvörun gefin út þegar þetta vandamál var uppgötvað. Þetta ástand orsakast með hugbúnaði borðið, innri til GCUs, svo heiltala eða breyta, að vilji flæða eftir 248 daga samfellt. Boeing er í því ferli að þróa GCU hugbúnaður uppfærsla sem mun ráða bót á ótrygga ástands. Svo mikið eins og eldflaugum atburðarás, þar þeir höfðu einhvers konar breytu sem var að telja, og telja, og telja, en smám saman barmafullur mörk getu sína, álíka gerði fjandinn flugvél hafa breytilega flæða eftir nægan tíma í gangi. Og svo tungu-í-kinn hátt að vinna í kringum þetta mál er að sannarlega, endurfæddur, flugvél hvert 247 dagar, þannig að minni fær þurrka og breyta fer aftur á 0. En átta sig, þetta er mjög stór holdgun hugbúnaður, en sérstaklega þar sem við heyrum um Apple stýrikerfi fara í bíla, og sjálf-akstur bíla frá Google og allir tala um lífum á hugbúnaði í daglegu lífi okkar, sjónvörp og klukkur, og fleiri, átta sig voru umkringd hugbúnaður, allt sem er skrifað af okkur mönnum. Og eins og við munum öll fljótlega uppgötva, það er mjög auðvelt og mjög dæmigerð að gera mistök þegar að skrifa hugbúnað. Og ef þú grípa ekki þá, sumir slæmur hlutur getur gerst. Nú stundum, sumir fyndið það getur gerst, eða að minnsta kosti stundum við veit að átt von á einhverjum illsku. Svo 0 deilt með 0, frá bekk skóla, er yfirleitt slæmt. Það er óskilgreindur. Og það kemur out-- og við skulum sjá hvort MIC minn getur tekið þetta up-- að Apple haft gaman með þetta nýlega. Þannig að ég hef iPhone hér. Ég ætla að tala við Siri og spyrja hana að gefa mér svar við 0 deilt með 0. Hvað er 0 deilt með 0? SIRI: Ímyndaðu þér að þú ert 0 kex, og þú skipt þeim jafnt meðal 0 vinir. Hversu margir kex er hver einstaklingur fá? Sjá? Það skiptir ekki skynsamleg. Og Cookie Monster er sorglegt að það eru engin fótspor. Og þú ert sorglegt að þú hefur enga vini. DAVID J MALAN: Það er góður af andstyggilegur. Svo er þetta það var bara sagt það. Það er unnt að ákvarða, það er ekki skilgreint, Og reyndar, margir forritunarmál eða, í raun, vistþýðendur mun uppgötva þegar þú, í forriti, reyna að skipta 0 af 0. Meira gaman en þetta þó er sem virðist, Cookie Monster er á Twitter þessa dagana. Og hann sagði við þetta, með þessu, sem er algerlega dásamlegur. En við skulum taka a fljótur líta á a par af öðrum býr, og þá setja eitthvað af þessu kóða til að nota, í góðum hætti. Svo kemur í ljós, að auki fyrir lykkjur, það er eitthvað sem kallast while lykkju, sem lítur öðruvísi og er útfærð smá differently-- og við munum að lokum sjá examples-- en í einhverjum skilningi, það er einfaldara vegna þess að það ekki leyfa þér að frumstilla og uppfæra innan mörk lykkju. Þú getur samt framkvæma það. Svo þú getur gert nákvæmlega sömu hlutina með while lykkju, eins og með for lykkju, en setningafræði þinn, ultimately-- eins og við munum að lokum see-- er að fara að vera öðruvísi. There er jafnvel a do while lykkju, sem er í raun svolítið öðruvísi, í því en fyrir lykkju og á meðan lykkja alltaf athuga ástand þeirra fyrst, ef þú lest þessa hlutur toppur til botn, það lítur svona út eins og það er að fara að Athugaðu það er ástand síðasta því það er sannarlega síðasta lína af kóða. Og reyndar, það er að fara til að vera gagnlegt í ákveðnum verkefnum sem við skrifum, ef þú vilt bara í blindni að gera eitthvað og að lokum athuga ástand. Það er ekki endilega slæmur hlutur. Ef við viljum breytum, getum við gert það í nokkra mismunandi vegu. Og við sáum í Foxtrot teiknimynd, ein leið til að gera það, þar sem þú lýsa breytu þitt, eins int gegn semíkommu, og þá later-- kannski næsta lína, kannski 10 línur later-- þú frumstilla í raun það. Svo þessar 2 línur af kóða lýsa breytu af taginu int og kalla það gegn, svo það gefur mér nóg bita til að halda int. Og þá loksins, setur það gildi 0 í breytunni. Það raðar 0 og 1 í a mynstur, sem við vitum af í síðustu viku, táknar fjölda við þekkjum sem 0. Eða hreinskilnislega, getur þú gert þetta mikið meira succinctly, bara eins og þetta. Nú höfum við einnig getu til að kalla aðgerðir. Og í raun, hér er a 2 línu program, eða útdráttur þess, sem gerir okkur kleift að í raun skrifa nokkur númer sem fær band frá user-- mikið eins sjálfboðaliði okkar augnablikinu ago-- geyma niðurstöðu í breytu nefndi, og then-- líkt með sjálfboðaliða okkar með printf-- prenta út þau gildi með því að láta í tveimur rök, sem band, fylgt eftir með breytunni heitir, nafn, sig. Svo skulum taka a líta, áður við komum aftur til Mario þar, á nokkra núna, dæmi um þetta. Ég ætla að fara á undan og opna upp, við skulum segja, virka-0.c. Og eins og alltaf, þetta númer er nálgast á heimasíðu námskeiðsins er, svo þú getur spilað eftir á heim og líta á það síðar. En hér er forritið í það kjarni, frá línu 17 til 22. The aðalæð program er þar sem program er alltaf að fara að byrja. Þetta forrit virðist, er að fara að prenta út nafn, ristill. Það er þá að fara að hringja GetString, bara eins og við gerðum með sjálfboðaliðum okkar. Og þá, þetta er áhugavert, það er að fara að hringja PrintName. Það kemur í ljós, allan þennan tíma, það virðist vera fall sem heitir PrintName. Sem prentar nafn einhvers. Við vildum ekki að nota printf frá Í fyrra, það er PrintName. En það er villandi vegna PrintName ekki koma með C. Fólk gerði ekki finna það um 40 eða 50 árum síðan, Ég gerði það, í staðinn. Og í raun, ef ég skruna niður frekari, fyrirvara hvernig ég get skrifað mína eigin aðgerðir í C. Við munum að lokum útskýra hvers vegna við höldum að segja, ógilt, á nokkrum stöðum, en í dag, við skulum bara líta á nafn. Á línu 24, ef þú vilt búa til eigin virka, þú skrifar bókstaflega Heiti virka. Ég valdi PrintName. Í sviga, þú þá tilgreina hvers konar af aðföngum og hversu margar þú vilja þessi aðgerð að taka. Í þessu tilfelli, ég vil taka 1 breytu sem heitir, nafn, og það er að fara að vera gerð, band, svo það er að fara að vera einhver röð af stöfum. Og þá, þetta program-- mikið eins og í grunni, þú getur hafa sérsniðin þraut pieces-- er að fara að hafa þetta siðvenja hegðun. Það er að fara að hringja printf liggur í, halló, tákn, og þá er að fara að stinga í hvað notandinn kallað. Svo er þetta dæmi um hvað tölvunarfræðingur myndi kalla abstrakt eða hagnýtur niðurbrot, sem eru bara ímynda leiðir af saying-- er ef þú eins og this háu hugmynd, eins og ég vil virkni sem prentar nafn einhvers, alveg þú getur bókstaflega skrifað printf og þá fara í rökin sem þú vilt, og the program vilja vinna, eins og það hefur síðan miðvikudag. En þú getur byrjað að ágrip burtu hugmyndin um prentun nafn. Þú getur gefið það nafn, eins PrintName og þetta er þessi hugmynd um layering frá viku 0. Héðan, ég og þú þarft ekki að vita eða sama hvernig PrintName er hrint í framkvæmd. Já það notar printf, kannski það ekki, hver veit hvað notar? Hverjum er ekki sama? Nú er ég að tala hér, í stað þess að hérna. Og reyndar, eins og áætlanir okkar fá þróaðri og flóknari, við erum að fara að halda áfram að nota sjálfsagðan hlut að lægri stykki stigi púsluspil fyrir hendi. Vegna þess að við skrifaði þá eða einhver annar gerði, svo að við getum þá byggja ofan á þá. Við skulum taka a líta á þetta afbrigði, virka einn. Svo þetta er svolítið meira háþróaður, en það kemur í ljós að í bókasafni CS50 er, það er bara GetInt virka. Við vildum ekki hugsa, árum, að innleiða GetPositiveInt virka. Og það er svolítið pirrandi því ef þið eru að skrifa forrit: þar þú vilt fá jákvætt heiltala frá notanda, þú getur alveg notað GetInt. Og þú getur alveg athugað með ástand og kannski lykkja ef það int er meiri en 0 og æpa á notanda ef hann eða hún er ekki að gefa þú jákvæð tala. En við skulum byggja þetta bygging loka okkur, a, sérsniðin Scratch stykki, ef þú vilt. Ég ætla að hafa forrit hér að lokum að ég langar að vera fær um að hringja GetPositiveInt, og ég vil vera fær um að prenta út hvað það int er. En þetta eru nýttir í burtu núna. Það er bara verið gefið á háu stigi nafn sem segir hvað það gerir, sem er dásamlegt vegna þess að það er mjög leiðandi núna til að lesa. Og ef ég geri sama hvað er undir hetta, láta mig fletta niður. Og það er lítið erfið í fyrstu, sérstaklega ef þetta er fyrsta program, en við skulum taka a líta. Ég er ekki lengur að segja, ógilt, vegna þess að það kemur í ljós aðgerðir, líkt GetString, getur skila gildi til mín. Þeir gera ekki bara að prenta á skjáinn, þeir geta í raun hönd mér eitthvað til baka. Og þar áður PrintName, Ég þarf ekki neitt til baka. Ég þurfti aukaverkun eitthvað sýning upp á skjánum, en ég þarf ekki mönnum að rétta mér eitthvað til baka. Hér með GetPositiveInt, eins og með GetInt, Ég vil afhent eitthvað til baka. Þannig að ég ætla að segja ekki, ógilt, á línu 23, en int, sem segir, þessi aðgerð sem ég er að skrifa, kallað GetPositiveInt er að fara að hendi mér aftur heiltala, ekki neitt, ekki ógild. Á sama tíma, það er að fara að taka ekki inntak, þannig að ég hef, eins konar, snúið henni. Ég ætla ekki að gefa GetPositiveInt allir inntak, ég vil það að gefa mér framleiðsla þess. Og hvað þá gerist núna? Svo hér er hvernig ég að lýsa yfir breytu. Ég hef gert það utan lykkju, af ástæðum sem við munum að lokum sjá, en þetta gefur bara mér 32 bita heitir, n, og ég hef áður ákvarða þá að geyma heiltölu. Og hér er það, að gera á meðan reisa, og þetta er hvers vegna það er gagnlegt. Bókstaflega gera þetta, á meðan n er minna en 1. Svo skulum sjá hvað gerist. Ég prenta út, vinsamlegast gefa mér jákvæða int. Ég fæ þá int með CS50 er virka og geymd í n. Og þá, hvaða línu af kóða líklega fær framkvæma næst, rökrétt? Hvaða línu númer? Já, svo 31. Þú myndir ekki vita þetta fyrr en þú hefur verið sagt eða svoleiðis álykta það, en það er satt. Það fer toppur til botn og þá heldur endurtaka. Svo ef ég hef slegið í segja, fjölda neikvæð 1, er n minna en neikvæðar 1? Já. Vegna þess að neikvæð 1 er minna en 1. Svo hvað ætti að gerast? Ég ætla að gera þetta á meðan n er minna en 1, þannig að ég ætla að fara aftur til línu 28. Og hver time-- og við skulum hlaupa this-- gera virka 1 að þýða það, og nú punktur rista valkostinum 1. Ef ég tegund neikvæð 1, það er fara að halda öskra á mig þangað til ég vinna vegna þess að hver af aðföngum mínum er minna en 1 og ef það er en minna en 1, Ég ætla að halda þessu. Ef ég gef loks það númer eins og 50, sem betur fer, segir það, takk fyrir 50. Hvers vegna? Vegna þess að um leið og n er ekki minna en 1, ég hætt að fá fastur í þessari lykkju, og þetta nýja leitarorð dag, aftur, bókstaflega gerir það. Þannig að ég hef bara hrint í framkvæmd, í skilningi, jafnvirði GetString, þar sem ég er fötlun aftur hver er að nota mig, sumir gildi. Það þarf ekki að vera band, það int. Svo einfalt, fljótleg dæmi, en við munum fljótlega sjá sumir flóknari útgáfur enn. Í raun, við skulum taka a líta á a tölustafir einn, sem heitir return.c. Og þetta er í raun svolítið einfaldara. Svo Tilgangur þessarar áætlunar í life-- skulum taka saman og keyra það, svo gera aftur, punktur rista, return-- tilkynningu forritið teningur einfaldlega verðmæti 2. Það er ansi heimskur, það er erfitt kóða, er það ekki taka neina inntak, en það er sýnt annað fall sem ég hef skrifað sjálfur. Svo hér, að ég hef lýst yfir breyta, heitir x, int, jafn fjölda 2, alveg handahófskennt. Þetta er bara Fluffy prentun. Það segir x er nú, eins og svo, cubing punktur punktur punktur. Og galdur er greinilega í línu 21. Ég ætla að hringja í aðgerð sem heitir, teningur, Ég er fötlun það blað með númer 2 skrifað á það, og hvaða gildi, stærðfræðilega, ég vil að fá út úr því? Rétt eins og andleg heilbrigði stöðva? 8. Ekki satt? Ég vil 2 cubed aftur, 2 til kraftur 3, svo 8 aftur. Svo hvar er teningur framkvæmda? Jæja, eftir það er hrint í framkvæmd hérna. Og rétt eins og áður, þá er rökrétt, jafnvel þótt setningafræði er líklega mjög nýr til margir af þú, Ég vil þessa aðgerð að skila mér aftur lak af pappír með int á það. Þannig að ég hef int, á Nafnið er geðþótta, en þægilega heitir teningur. The inntak á það, er n af slá heiltala, svo það er hvernig ég kemst í fjölda 2 á blaði. Og þá kemur í ljós C styður stærðfræði, svo þú þarft ekki x fyrir tímum, þú notar bara Stjarnan fyrir margföldun. Og þetta skilar n sinnum n sinnum n, sem er einfaldlega cubed gildi. Svo hvar við erum að fara með þetta allt? Þetta er örugglega vindbylur ferð, hvíla sjálfsöruggur, að í frábær köflum og í Heimadæmi 1, þú munt vera gekk í gegnum allt þetta allt meira. Og í vandamál setja 1, munum við umskipti frá grafísku heimi grunni að eitthvað meira skipanalínu í C. En við munum draga innblástur frá þessu hér leik frá fyrra, þar með C og staðlaða útgáfu af bls setja þú munt framkvæma pýramída Mario er. Og á spjallþráð útgáfu af bls sett, ef þú velur það að kjósa, þú munt framkvæma aðeins meira krefjandi pýramída með tvo toppa. Þú munt einnig koma á reiknirit, gráðugur reiknirit. Það kemur í ljós að það er nokkrar áhugaverðar rökfræði á bak við ferli gangi stöð gjaldkeri er og í raun fötlun einhver aftur breyting. Það er reiknirit sem er nokkuð einfalt, að þú gætir jafnvel grípa innsæi þegar þú lest fyrst it-- átta sig á að er það sem ég hef alltaf gert hvenær ég hef gefið einhvern smá peningar back-- sem gerir þér kleift að alltaf draga úr fjölda pappír athugasemdum eða málm mynt að þú ert fötlun til baka til notandans. Og þetta, að sjálfsögðu, er sannfærandi vegna þess að ef þú ferð til CVS eða whatnot, þú vilt ekki að vera hönd a heild búnt af sjálfur eða allt fullt af smáaurarnir. Þú vilt fæst mynt, líklega hægt. Að lokum verður þú einnig að vera áskorun til notaði í heimi vatni og í raun fá skilning fyrir kortlagningu á milli tíðni flæði, af eins, vatn í sturtu, hversu mikið vatn er notað. Og allusion þar, verður þetta myndband hér, sem við munum enda á fyrir bara 60 sekúndur, sem málar mynd af Lágstreymiskerfi sturtu höfuð. [Vídeó spilun] -Allt Í lagi. Ég fékk allt hér. Ég fékk Cyclone F Series, Hydra, Jetflow, Stockholm Supersteam, þú nafn það. -Og Hvað mælir þú? -Hvað Ert þú að leita að? -Power Maður. Power. -eins Silkwood. -Það Er fyrir geislun. -Það Er rétt. -Nú Hvað er þetta? -Það Er Commando 450. Ég sel ekki þessi einn. -En Það er það sem við viljum. Það er sérsveitarmaður 450. -Nei Trúðu mér. Það er einungis notað í sirkus. Það er fyrir fíla. -Ég Borga neitt. -Hvað Um Jerry? -Hann Gat ekki séð það. Hann er viðkvæmur. Oh já. [END spilun] DAVID J Malan: Allt í lagi. Það er ef til CS50. Við munum sjá þig í næstu viku. Ræðumaður 1: [? Scully?], [? Ian,?] eins langt og þetta Outro verkefni, hvað hefur þú krakkar koma upp með? Ræðumaður 2: Jæja, við höfum gefið það ýmsum hugsun, og við teljum að besta leiðin to-- Ræðumaður 3: Má ég? Ræðumaður 2: Já. Eftir því sem leið, í raun. Ræðumaður 3: Þannig að ég held við getum summa upp hugmynd okkar fyrir Outros með einum word-- ekkert. DAVID J MALAN: Ekkert? Ræðumaður 3: Ekkert. DAVID J MALAN: Hvað þýðir það? Ræðumaður 3: Outros eru um ekki neitt. Ræðumaður 2: Jæja, ég meina, í heimspeki, Ég meina, það er ekkert alltaf eitthvað. Ræðumaður 1: Svo what's-- hvað er forsenda? Ræðumaður 3: Svo er það eins og lífið. OK. Hvað gerðir þú í dag? DAVID J MALAN: Ég stóð upp, hafði morgunmatur, og kom til starfa. Ræðumaður 3: Það er Outro. Ræðumaður 2: En, ég meina, ætti ekki eitthvað um hann á the-- Ræðumaður 3: Nei, nei, nei, nei. Ekkert gerist. Ræðumaður 1: Af hverju erum við að horfa á? Ræðumaður 3: Vegna það er Outro fyrir CS50. DAVID J MALAN: Ekki enn.