>> [Tónlist spila]
DAVID J. MALAN: Allt í lagi.
Þetta er CS50, og þetta er að byrja á viku tvö.
Svo skulum byrja í dag með galla.
A galla, að sjálfsögðu, er mistök í áætlun,
og þú munt fá mjög þekki þetta hugtak
ef þú hefur aldrei forritað áður. pset0 og nú pset1.
En við skulum íhuga eitthvað smá einfalt að byrja.
Þetta forrit hér að ég kastaði saman í fyrirfram,
og ég halda því fram að þetta ætti að prenta 10 stjörnur á skjáinn með printf,
en það er víst þrjótur á einhvern hátt.
>> Í ljósi þess að skilgreining sem það ætti að prenta 10 stjörnur,
en það er ekki víst, hvað myndir þú halda því er villan?
Já?
Svo er það að burt með einum villa, og hvað áttu við með því?
OK.
Excellent.
Þannig að við höfum tilgreint a byrja á núll fyrir i,
og við höfum tilgreint í n gildi 10, en við höfum notað minna en eða jafnt og.
Og ástæðan að þetta er tveir stafir og ekki bara einn tákn,
eins og í stærðfræði bók, er að þú þarft ekki
leið til að tjá það einn staf jafngildi.
>> Svo það þýðir færri, en ef þú byrjar að telja á núlli,
en þú telja alla leið upp í gegnum og jöfn 10,
þú ert auðvitað að fara að telja 11 hluti í aðaleinkunn.
Og svo þú ert að fara að prenta 11 stjörnur.
Svo það gæti verið festa fyrir þetta?
Já?
>> Svo bara stilla minna en eða jafnt og bara að vera minna en,
og það er, ég kröfu, kannski Önnur lausn líka.
Hvað gæti annað sem þú gerir?
Já?
>> Svo byrja að jafngildi það að 1, og yfirgefa minna en eða jafnt og.
Og vildi ég myndi halda að fyrir dæmigerðri manneskju sem,
þetta er sennilega meira einfalt.
Byrja að telja á 1 og telja upp í gegnum 10.
Í meginatriðum gera það sem þú átt við.
>> En raunin er í forritun, eins og við höfum séð,
tölvunarfræðingar og forritarar almennt ekki byrja að telja á núlli.
Og svo er það allt í lagi einu sinni þú venst því.
Ástand þitt mun almennt vera eitthvað eins og minna en.
Svo einfaldlega rökrétt villa sem við gátum nú
festa og að lokum laun þetta og fá bara 10.
>> Jæja hvernig væri þennan galla hér?
Hér aftur, kröfu ég að ég hef markmið prentun 10 stars--
eitt í hverja línu í þetta sinn, en það gerir það ekki.
Áður en við leggjum það sem festa er, hvað gerir þetta
prenta sjónrænt ef ég væri að safna saman og keyra þetta forrit finnst þér?
Já?
>> Star.
Svo allir stjörnum á Sama lína er það sem ég heyrði,
og síðan nýja línu staf.
Svo skulum reyna það.
Svo gera þrjótur-1, slá, og ég sé clang stjórn
að við ræddum um í síðasta sinn.
./buggy-1, og reyndar ég sjá allar 10 stjörnurnar á sömu línu, jafnvel þó að ég krafa
í lýsingu minni bara athugasemd á topp kóðinn sem ég ætlaði að gera einn á hvern
lína.
En þetta lítur rétt.
>> Nú lína 15 það lítur út eins og ég er prentun á stjörnuna, og þá línu 16
það lítur út eins og ég er prentun ný lína eðli,
og þeir eru báðir inndregin þannig Ég er inni í lykkju greinilega.
Svo ætti ég ekki að vera að gera stjörnuna, ný lína, stjarna, ný lína, stjarna, nýja línu?
Já?
>> Já, ólíkt tungumál eins Python, ef þú ert kunnuglegur,
inndráttur ekki máli við tölvuna.
Það skiptir máli aðeins við mönnum.
Svo á meðan hér ég hef fundið línur 15 og 16-- sem lítur falleg,
en tölvan er ekki sama.
Tölvan er ekki sama um í raun hafa hrokkið axlabönd
kringum þessar línur af kóða.
>> Þannig að það er clear-- rétt eins og í Scratch-- að þessum tveimur línum af kóða
ætti að framkvæma.
Eins og einn af þeim gula grunni ráðgáta stykki aftur og aftur og aftur.
>> Svo nú ef ég aftur hlaupa þetta program-- ./buggy-2-- Hm.
Ég hef villu núna.
Hvað gerði ég gleyma að gera?
Já, svo ég vissi ekki þýða það.
Svo gera þrjótur-2.
Engin slík skrá vegna þess að ég gerði ekki reyndar saman seinni útgáfa.
Svo nú áhugavert óskilgreinda variable-- ekki 2.
Við erum að gera 1.
Gera þrjótur-1-- ./buggy-1-- og nú hver af þeim er á sömu línu.
>> Nú er það undantekning þetta átti tilkall minn
að þú þarft þessar hrokkið axlabönd.
Þegar það er í raun OK-- ef þú hefur tekið í kafla eða textbooks--
að sleppa hrokkið axlabönd?
Já?
>> Nákvæmlega.
Þegar það er bara einn lína af kóða sem þú
langar að vera í tengslum við lykkja eins og í fyrsta dæminu okkar.
Það er fullkomlega lögmætur að sleppa hrokkið axlabönd
eins konar hægðarauka frá þýðanda til þín.
Já?
Góð spurning.
Myndi það teljast stíl villa?
Við myndi promote-- eins og í CS50 stíl fylgja, slóðin sem
er í pset1-- sem alltaf nota hrokkið axlabönd.
Örugglega ef þú ert nýr til forritun.
Staðreyndin er að við erum ekki að fara að banna þig
frá því að gera þessar verslanir.
En ef þú ert bara að fá í sveiflu af hlutur,
algerlega bara alltaf að nota hrokkið axlabönd þar til þú fá the hanga af það.
Góð spurning.
>> Allt í lagi.
Þannig að þá var padda.
Að minnsta kosti í einhverju nokkuð einfalt.
Og enn þú might hugsa þessi er nokkuð rudimentary, ekki satt?
Þetta er tegund af fyrstu viku að horfa á tungumáli
eins, sjá galla þínum þar.
En raunin að þetta eru reyndar fulltrúi
af sumir laglegur ógnvekjandi vandamál sem geta komið upp í hinum raunverulega heimi.
>> Svo sumir af þú might muna ef þú fylgir tækni fréttir,
eða kannski jafnvel lent vindur um þetta í febrúar
þessa síðasta ári að Apple hafði gerði smá mistök í báðum IOS,
stýrikerfi á þeirra sími, og einnig
Mac OS, the stýrikerfi á skjáborð og fartölvur.
Og þú sást svo fyrirsagnir og þessa.
Og eftir það, Apple lofaði að laga þessa villu,
og mjög fljótt gerði festa það í IOS, en þá á endanum fast það í Mac OS
og vel.
>> Nú ekkert af þessum fyrirsögnum eingöngu raunverulega sýna hvað undirliggjandi vandamál var,
en villa var að lokum lækkaður padda í SSL, örugg fals lag.
Og langa sögu stutta, þetta er hugbúnaður
sem vafrar okkar og öðrum hugbúnaður nota til að gera hvað?
>> Ef ég sagði að SSL er þátt, þegar þú
heimsækja vefslóð sem byrjar með HTTPS, hvað þá gæti SSL vera tengdar?
Dulkóðun.
Þannig að við munum tala um þetta á næstu dögum.
Dulkóðun, the list af spæna upplýsingar.
>> En langa sögu stutta, Apple einhvern síðan hafði gert mistök
um framkvæmd þeirra á SSL, sem hugbúnaður sem á endanum framkvæmd
Slóðir eins HTTPS eða max tengingar þar líka.
Afleiðing sem er að þín tengingar gætu hugsanlega
að stöðva.
Og sambönd þín voru ekki endilega dulkóðuð
ef þú hefðir slæmar strákur á milli þú og ákvörðunarstaður heimasíðu sem
vissi hvernig á að nýta sér þetta.
>> Nú Apple lokum staða a laga um þetta að lokum,
og lýsing af fix þeirra var þetta.
Öruggur samgöngur tókst að sannreyna áreiðanleika tengingu.
Útgáfan var beint af endurheimta vantar löggilding skref.
>> Þannig að þetta er mjög hönd bylgjaður skýring fyrir einfaldlega að segja að við ruglaður upp.
Það er bókstaflega eitt lína af kóða sem var þrjótur
um framkvæmd þeirra á SSL, og ef þú ferð á netinu og leita að þessu
þú getur í raun að finna upprunalega kóðann.
Til dæmis, þetta er skjámynd af bara hluti af nokkuð stór skrá,
en þetta er fall virðist kallað SSL staðfesta skilti miðlara lykill skipti.
Og það tekur fullt af Rök og inntak.
Og við erum ekki að fara að einblína of mikið á minutia þar,
en ef þú leggir áherslu á kóða inni þess Efsta function-- skulum
zoom í á það.
Þú gætir nú þegar grunar hvað gæti villa
jafnvel ef þú hefur enga hugmynd á endanum það sem þú ert að leita að.
Það er góður af frávik hér, sem er hvað?
>> Já, ég í raun ekki eins og Útliti tveimur Goto mistekst.
Frankly, ég í raun ekki vita hvað goto mistakast hætti, en hafa tvö af þeim
í bak og fyrir.
Það bara svona nuddar mig vitsmunalega röng leið,
og örugglega ef við zoom í á bara þær línur, þetta er C.
>> Svo mikið af kóða Apple er sjálft skrifað í C,
og þetta virðist er í raun equivalent--
ekki þeirri stuttu skerðing útgáfa, en ef þú viðurkenna staðreynd
að það er engin hrokkið axlabönd, hvað Apple skrifaði í raun var númer sem lítur
eins og þetta.
Svo ég hef aðdregna út og ég bara fastur inndreginn í skilningi
að ef það er engin hrokkið axlabönd, að annað goto mistakast það er í gulu
er að fara að framkvæma sama hvað.
Það er ekki í tengslum við að ef ástand yfir það.
>> Svo jafnvel aftur, ef þú ert ekki alveg skilja hvað þetta gæti hugsanlega
vera að gera, veit að hvert af þessum conditions-- í þessum línum
er mjög mikilvægt skref í því ferli að stöðva
ef gögn þín er í raun dulkóðuð.
Svo skipstjóri einn af þessum skref, ekki besta hugmynd.
>> En vegna þess að við höfum þetta Annað goto mistakast í gulum,
og vegna þess að þegar vér konar fagurfræðilega
færa það til vinstri þar sem það rökrétt er í augnablikinu, hvað
þýðir þetta fyrir línuna af kóða fyrir neðan annað Goto
mistakast myndir þú hugsa?
Það er alltaf að fara til að vera skipstjóri.
Svo gotos eru yfirleitt hleypa brúnum ástæðum munum við ekki raunverulega fara í,
og reyndar í CS50 við hafa tilhneigingu að kenna þessa yfirlýsingu Fara á,
en þú getur hugsa um Goto mistakast eins merking go jump
að einhverjum öðrum hluta af kóða.
>> Með öðrum orðum að stökkva yfir þetta síðasta lína að öllu leyti,
og svo niðurstaðan af þessu heimskulegt einföld mistök sem var bara
vegna líklega einhver afritar og límir einn of
oft var það allt öryggi IOS og Mac OS
var viðkvæmt hlerun með slæmur krakkar fyrir alveg sumir tími.
Þangað til Apple loksins fastur þetta.
>> Nú ef sum ykkar eru í raun gangi gamla útgáfur af IOS eða Mac OS,
þú getur farið til gotofail.com sem er vefsíða sem einhver sett upp
að í raun að ákvarða kerfisbundið
ef tölvan þín er enn viðkvæmt.
Og hreinskilnislega, ef það er, það er líklega góð hugmynd
að uppfæra símann eða þinn Mac á þessum tímapunkti.
En það, bara vitnisburður um það hversu gengishækkun þessara lægra stigi
upplýsingar og nokkuð einföld hugmyndir geta raunverulega
þýða ákvarðanir og vandamál sem
affected-- í þessu case-- milljónir manna.
>> Nú orð á munn.
Kafla verður byrjað þetta kemur sunnudagur.
Þú munt fá tölvupóst með því helgi um kafla, á hver benda
að resectioning ferli mun byrja ef þú hefur
áttaði þú ert nú nokkrar nýjar átök.
Svo gerist þetta á hverju ári, og við mun rúma á næstu dögum koma.
>> Skrifstofa hours-- gera halda að auga á þessa áætlun hér.
Breytingar svolítið í þessari viku, einkum í upphafi tíma
og staðsetningu, svo samráð að áður yfirskrift til skrifstofutíma
einhverju næstu fjórar nætur.
Og nú orð á mati, sérstaklega þar sem þú kafa inn í vandamál
setur eitt og víðar.
>> Svo á forskrift, þetta eru yfirleitt
ásarnir eftir sem við að meta starf þitt.
Svigrúm er átt við það mæli kóða útfærir þín
aðgerðir þarf með forskrift okkar.
Í öðrum orðum, hversu mikið af stykki sett gerðir þú bítur burt.
Vissir þú að gera þriðjung af því, helmingur af því, 100% af því.
Jafnvel ef það er ekki rétt, hversu mikið fannst þér að reyna?
Svo að fangar borði af átaki og fjárhæð
sem þú beit burt vandamál Heimadæmi er.
>> Correctness-- þessu einn, til hve miklu leyti, er númerið þitt
í samræmi við okkar forskriftir og frjáls af bugs.
Svo virkar það rétt?
Ef við gefum honum inntak, er það gefa okkur framleiðsla sem við gerum ráð fyrir?
Design-- nú er þetta fyrsta the sérstaklega eigindlegum sjálfur,
eða þau sem þurfa mannlega dómgreind.
Og reyndar, þetta er ástæðan að við höfum starfsfólk af svo mörgum félögum kennslu og námskeið
aðstoðarmenn.
Að hve miklu leyti er þinn númerið skrifað vel?
>> Og aftur er þetta mjög eigindlegum mat
sem mun vinna með þér á bi-stefnuboraÃ í vikur til að koma.
Þannig að þegar þú færð ekki Aðeins tölugildi skora, en einnig
skriflegri skorar eða slegið viðbrögð, eða skrifað athugasemdir á ensku orðum.
Það er það sem við munum nota til að aka þér átt í raun að skrifa betri kóða.
Og í fyrirlestri og kafla munum við reyna að benda out-- eins oft og við can--
hvað gerir forritið ekki aðeins rétt og virkni góð,
en einnig vel hannað.
Skilvirkt og það gæti verið, eða jafnvel fallegasta það getur verið.
>> Sem leiðir okkur að stíl.
Style á endanum er fagurfræði dómur.
Vissir þú velur gott nöfn fyrir breytur þínar?
Hefur þú inndregin númerið þitt almennilega?
Er það líta vel út, og því, það er auðvelt fyrir aðra manneskju
að lesa viðkomandi þitt af misskilning hennar.
>> Nú almennt á kennsluáætlun, skora við þetta á fimm punkta kvarða.
Og láta mig negla heim benda að í þremur er örugglega gott.
Mjög fljótt að gera fólkinu byrja að gera stærðfræði.
Þegar þeir fá þrír af fimm á réttmæti fyrir sumir pset
og þeir hugsa fjandinn, ég að fara að 60% sem er í raun D eða E.
>> Það er ekki eins og við hugsa um þessar tölur.
Þriggja er örugglega gott og hvað við almennt búist í upphafi
á hugtakinu er að ef þú ert að fá fullt af three's-- kannski par
af kaupstefnum, a par af fours-- eða par twos, a par af fours--
það er góður staður til að byrja.
Og svo lengi sem við sjáum að upp feril tímanum,
þú ert í sérstaklega góðum stað.
>> Formúlan sem við notum til að þyngd hlutir er í raun
þetta á kennsluáætlun, sem þýðir bara að vér
gefa fleiri þyngd til misskilning.
Vegna þess að það er mjög oft misskilning sem tekur mest tíma.
Treystu mér núna.
Þú verður að find-- amk í einni pset-- að þér
eyða 90% af tíma þínum vinna á 10% af vandamálinu.
>> Og allt svona virkar nema fyrir einn eða tvo galla,
og þeir eru villur sem halda þér upp seint á kvöldin.
Þeir eru þær sem konar flýja yður.
En eftir að sofa á það, eða sækja skrifstofutíma
eða spyrja spurninga á netinu, er þegar þú færð að því 100% markinu,
og það er hvers vegna við þyngd misskilning sem mest.
Hönnun aðeins minna, og stíll aðeins minna en það.
En hafðu í mind-- stíl er kannski auðveldasta
af þessum að bíta á eins og á stíl fylgja.
>> Og nú, alvarlegri skýringu um fræðilegum heiðarleika.
CS50 hefur óheppileg greinarmun á vera stærsti framleiðandi stjórnar Ad
tilvikum nánast á hverju ári sögulega.
Þetta er ekki vegna þess að nemendur svindla í CS50 eitthvað meira svo en önnur tegund,
heldur vegna þess að eftir eðli starfsins, sú staðreynd að það er rafræn,
sú staðreynd að við lítum á það, og sú staðreynd að við erum tölvunarfræðingar,
Ég get sagt að við erum því miður mjög góðir í að finna hana.
>> Svo hvað þýðir þetta að raunvirði?
Svo það, og á kennsluáætlun, heimspeki Námskeiðið er
raunverulega hjartarskinn sjóða niður til að vera sanngjarn.
Það er þessi lína á milli gera vinnu manns á eigin spýtur
og fá smá sanngjarnt hjálp frá vini,
og beina að gera að vinna fyrir þínum vinur, eða senda honum eða henni númerið þitt
svo að hann eða hún getur einfaldlega taka eða láni það út rétt.
Og það fer yfir strikið að við dregin í bekknum.
>> Sjá, námsefni lokum fyrir línurnar
að við sjáum eins og að vera sanngjarn og óraunhæft hegðun,
en það þýðir í raun að sjóða niður á kjarna
af vinnu þinni að þurfa að vera þinn eigin í lokin.
Nú með því að segja, það er leitandi.
Því eins og þú might imagine-- frá skrifstofutíma og myndefni
og myndbönd við höfum sýnt þannig far-- CS50
er örugglega ætlað að vera eins samstarf og eins samstarfsverkefni og félagsleg
og hægt er.
Sem samstarfsverkefni eins og það er erfitt.
>> En með þessu sagt, leitandi, eins og þú munt sjá í kennsluáætlun,
er að þegar þú ert having sumir vandamál.
Þú hafa sumir galla í kóðanum þínum, sem þér getur ekki leyst, er það sanngjarnt fyrir þig
til að sýna númerið þitt til að einhver annar.
Vinur jafnvel í bekknum, vinur situr við hliðina á þér á skrifstofutíma,
eða starfsmaður.
En þeir mega ekki sýna kóðann þeirra til þín.
>> Með öðrum orðum, svara til question-- þinn
Ég þarf help-- ekki ó, hér er númerið mitt.
Taka a líta á þetta og ráða af því hvað þú vilt.
Nú, að sjálfsögðu, að það er leið greinilega að leik
þetta kerfi þar sem ég ætla að sýna þér númerið mitt áður en spurningu.
Þú sýna mér mína númerið þitt áður en spurningu.
En sjá kennsluáætlun aftur fyrir fínni smáatriði þar þessi lína er.
>> Bara að nú mála mynd og deila eins gagnsær og mögulegt
þar sem við erum á á undanförnum árum, þetta er fjöldi stjórnarmanna Ad tilfellum
að CS50 hefur haft yfir Á síðustu sjö árum.
Með 14 tilvikum nýjustu haust.
Hvað varðar nemendur sem taka þátt, það var 20 sumir stakur nemendur
síðasta haust.
Það var hámarki 33 nemendur nokkur ár síðan.
Sem margir hverjir eru því miður ekki lengur hér á háskólasvæðinu.
>> Nemendur sem taka þátt sem hlutfall af flokkur hefur sögulega bilinu 0%
til 5,3%, sem er aðeins að segja þetta er árlega áskorun.
Og í átt að lokum, hvað við viljum gera er að flytja eitt
að við dd-- bara FYI-- bera á a sanngirni við þá nemendur sem
eru eftirfarandi línu til samræmis.
Við gerum bera alla núverandi skráningar gegn öllum fyrri verkefnum
frá síðustu árum.
>> Við vitum líka hvernig á að Prófaðu kring og finna kóða útibúum
online, Umræðuhópar online, starf staður á netinu.
Ef nemandi getur fundið það, getum við örugglega finna það eins mikið og við gerum miður.
Svo það sem þú munt sjá í kennsluáætlun þó er þetta eftirsjá ákvæði.
Ég get vissulega þakka, og við öll hefur
starfsfólk hafa gert námskeið eins þetta eða þetta sig með tímanum,
vissulega veit hvað það er eins og þegar lífið fær í leiðinni þegar þú hefur
sumir seint nóttina deadline-- ekki aðeins í þessum flokki,
en another-- þegar þú ert alveg búinn, stressuð,
haft umtalsverð númer af öðrum hlutum til að gera.
Þú verður að gera á einhverjum tímapunkti í lífið vissulega slæmt, kannski seint
nótt ákvörðun.
>> Svo á kennsluáætlun, það er þetta ákvæði,
þannig að ef innan 72 klst til að gera sumir fátækur ákvörðun, eiga þér upp á það
og ná til mín og Eitt af höfðum Námskeiðið er
og við munum hafa samtal.
Við munum höndla það innra í von
af því að verða meira af kennslu stund eða líf kennslustund,
og ekki eitthvað með sérstaklega róttækar afleiðingar
eins og þú gætir séð á þessum kortum hér.
>> Svo er það mjög alvarlegt tón.
Skulum staldra fyrir aðeins nokkrum sekúndur til að brjóta úr spennu.
>> [Tónlist spila]
>> DAVID J. MALAN: Allt í lagi, svo hvernig var að fyrir segue?
Til aðal málefni dagsins í dag.
Fyrsta sem er abstrakt.
Annar sem er að fara að vera framsetning gagna, sem hreinskilnislega
er mjög þurr leið til að segja hvernig getum við fara um að leysa vandamál og hugsa
um að leysa vandamál?
Svo þú hefur séð í grunni, og þú hefur séð kannski í pset1 með C
sem þú ekki aðeins hægt að nota aðgerðir, eins og printf,
að annað fólk í ár fortíð skrifaði fyrir þig.
Þú getur líka skrifað eigin starfsemi þína.
>> Og jafnvel þó að þú gætir ekki hafa gert þetta í C, og hreinskilnislega í pset1
þú í raun ekki þörf á að skrifa þína eigin virkni vegna þess að problem--
en kannski erfitt að fyrst glance-- þú munt sjá
getur að lokum verið leyst með ekki allt sem margar línur af kóða.
En með því að segja, í skilmálar að skrifa eigin færni,
gera sér grein fyrir að C er að gefa þú þetta hæfileiki.
>> Ég ætla að fara í dag kóða, sem er í boði nú þegar á netinu,
og ég ætla að fara á undan og opna upp forrit sem heitir virka 0.C,
og í aðgerð núll munum við sjá nokkra hluti.
Í fyrstu línum 18 í gegnum 23 er helsta virka minn.
Og núna þegar við erum farin að lesa númer sem við erum ekki að skrifa á flugu,
en í staðinn ég hef skrifað fyrirfram eða að þú í vanda sett
fengjum að hafa verið skrifað fyrirfram.
Góð leið til að byrja lesa kóða einhvers annars
er að leita að the aðalæð virka.
Reikna út hvar þessi færslu lið er að keyra forritið,
og þá fylgja því rökrétt þaðan.
>> Svo þetta forrit víst prentar nafn þitt eftir tvípunkti.
Við notum þá GetString frá CS50 bókasafn
að fá band eða orð eða setningu frá notanda í lyklaborðinu.
Og þá er það þetta hlutur here-- PrintName.
>> Nú er PrintName ekki fall sem kemur með C
Það er ekki í venjulegu io.h.
Það er ekki í CS50.h.
Það er frekar í sömu skrá.
Taka ef ég skruna niður a bit-- línur 25 að 27--
það er bara nokkuð hátt á athugasemdir númerið þitt með því að nota stjörnurnar og skástrik.
Þetta er multi-lína comment, og þetta er bara
lýsing mín í bláa hvað þessi aðgerð gerir.
>> Vegna þess að í línum 28 til 31., Ég hef skrifað frábær einfalt fall
er nafn hans PrintName.
Það tekur hversu margir rök myndir þú segja?
Svo einn argument-- vegna þess að það er eitt rök skráð inni í sviga.
The tegund sem er String.
Sem er að segja PrintName er svona svartur kassi
eða aðgerð sem tekur sem inntak streng.
>> Og nafn þess String þægilegan verður Nafn.
Ekki S, ekki N, en nafn.
Svo hvað þýðir PrintName gera?
Það er gott einfalt.
Rétt eins og einni línu af kóða fyrir sem printf, en svo virðist það
prentar út "Halló," svo og svo.
Ef svo og svo kemur frá rifrildi.
>> Nú er þetta ekki mikið nýjung hér.
Raunverulega, Ég hef tekið upp forrit sem gat hafa verið skrifuð með einni línu af kóða
með því að setja þetta upp hér, og breytt því að eitthvað
sem felur í sér sumir sex eða sjö eða svo línur af kóða alla leið niður hér.
>> En það er æfa á a meginreglan þekktur sem abstrakt.
Konar encapsulating inni ný fall sem hefur nafn, og betri
enn það nafn bókstaflega segir hvað það gerir.
Ég meina printf-- það er ekki sérstaklega lýsandi.
Ef ég vil að búa til púsluspil stykki, eða ef ég
langar til að búa til fall sem prentar nafn einhvers,
fegurð að gera þetta er að ég get í raun
gefa því fall nafn sem lýsir því sem það gerir.
>> Nú tekur það í inntak sem Ég hef geðþótta nefndi,
en það er líka frábærlega lýsandi stað þess að vera a lítill fleiri
almenn eins S. og ógild, fyrir nú, bara þýðir
að þessi aðgerð virkar ekki afhenda mér aftur neitt.
Það er ekki eins GetString sem bókstaflega hendur mér aftur a band
eins og við gerðum með stykki af pappír við bekkjarfélaga síðustu viku þína,
heldur hefur það bara aukaverkun.
Það prentar eitthvað á skjáinn.
>> Svo í lok dagsins, ef ég gera aðgerð-0, ./function-0,
Við munum sjá að það biður um nafn mitt.
Ég slá Davíð, og það gerðir út nafn mitt.
Ef ég gera það aftur með Rob, það er að fara að segja "Hello, Rob."
Svo einföld hugmynd, en kannski framreikna frá þessu andlega
að sem áætlanir þínar fá svolítið flóknara,
og þú vilt að skrifa klumpur af númer og kalla það code-- ákalla
að code-- af sumum lýsandi nafn eins PrintName,
C er efni okkur þessa getu.
>> Hér er annað einfalt dæmi.
Til dæmis, ef ég opna upp skrá frá í dag heitir return.c,
taka eftir hvað ég hef gert hér.
Flest af þessu aðalæð virka er printf.
Ég fyrst geðþótta frumstilla a breytu sem heitir x til númer 2.
Ég prenta þá út "x er nú % I "liggur í verðmæti x.
Þannig að ég ætla bara að segja hvað það er.
>> Nú er ég bara með djörfung krafa með printf.
Ég er cubing að gildi x, og ég er gera það með því að hringja í aðgerð
kallast teningur liggur í X sem rök,
og þá að vista framleiðsla í breytunni sjálfri, x.
Þannig að ég ætla clobbering gildi x.
Ég hunsa það gildi x við hvað
afleiðing af starf þetta teningur virka er.
Og þá er ég að prenta bara út sumir Fluffy efni hér að segja það sem ég gerði.
>> Svo hvað þá er teningur?
Taka eftir hvað er í grundvallaratriðum öðruvísi hér.
Ég hef gefið aðgerðina nafn eins og áður.
Ég hef tilgreint nafn rifrildi.
This tími það er kallað n stað nafns, en ég gæti kalla það eitthvað sem ég vil.
En þetta er öðruvísi.
Þessi hlutur vinstri.
Áður var það leitarorð?
Strákar.
Nú er það augljóslega int.
>> Svo hvað er kannski taka í burtu?
En ógilt dregur konar tómi, og það var raunin.
PrintName aftur ekkert.
Það gerði eitthvað, en það var ekki hönd mig aftur
eitthvað sem ég gæti sett á vinstri hönd hlið af jafnaðarmerki
eins og ég hef gert hér á línu 22.
>> Svo ef ég segi í á línu 30, hvað er það líklega að gefa í skyn
um hvað teningur er fyrir mig?
Já?
Það skilar heiltölu.
Svo það hendur mér til baka, fyrir dæmi, a stykki af pappír
sem hún hefur skrifað svar.
2 cubed, eða 3 cubed, eða 4 cubed-- hvað ég fór í,
og hvernig var ég framkvæma þetta?
Jæja, bara n sinnum n sinnum n er hvernig ég gæti teningur gildi.
Svo aftur, frábær einfalt hugmynd, en sýnileg
nú hvernig við getum skrifað aðgerðir sem í raun hafði okkur aftur
gildi sem gætu vakið áhuga.
>> Við skulum líta á eitt síðasta dæmi hér kallað virka einn.
Í þessu dæmi, það byrjar til að fá meira sannfærandi.
Svo í aðgerð einn, þetta program-- tilkynning lokum
kallar fall kallast GetPositiveInt.
GetPositiveInt er ekki virka í CS50 bókasafn,
en við ákváðum að við langar það að vera til.
>> Þannig að ef við skruna niður síðar í skránni, eftir hvernig ég gekk um framkvæmd
fá jákvæða int, og ég segja að það er meira sannfærandi
vegna þess að þetta er ágætis Fjöldi lína af kóða.
Það er ekki bara kjánalegt lítið leikfang program.
Það er í raun fengið nokkrar villuprófun og gera eitthvað fleiri gagnlegur.
>> Þannig að ef þú hefur ekki séð walkthrough myndbönd sem við höfum embed í pset1,
veit að þetta er tegund af lykkja í C, svipað í anda
til hvers konar hlutum grunni getur gert.
Og gera segir að gera þetta.
Prenta þetta út.
Þá fara á undan og fá n- fá int og geyma það í n,
og halda að gera þetta aftur og aftur og aftur svo lengi sem n er minna en eitt.
>> Svo n er að fara að vera minna en eitt aðeins ef mönnum er ekki samstarf.
Ef hann eða hún er að skrifa í 0 eða -1 eða -50,
Þessi lykkja er að fara að halda framkvæmd aftur og aftur.
Og að lokum eftir, ég einfaldlega skila gildi.
Svo nú höfum við fall sem hefði verið gott
ef CS50 myndi framkvæma í CS50.h og CS50.c fyrir þig,
en hér getum við nú framkvæma þetta sjálf.
>> En tveir um ýmsar helstu upplýsingar.
One-- hverju gerði ég lýsa int n, heldur þú, á línu 29
í stað þess að bara að gera þetta hér, sem er
meira í samræmi við það sem við gerðum í síðustu viku?
Já?
Góð hugsun.
Þannig að ef við vorum að setja það hér er það eins og vér
halda lýsa það aftur og aftur.
Það er í sjálfu sér er ekki erfið, í sjálfu sér,
vegna þess að við þurfum aðeins að gildi einu sinni og þá
við erum að fara að fá nýjan samt.
En góð hugsun.
Já?
>> Loka.
Svo vegna þess að ég hef lýst n á lína 29. utan lykkju,
það er aðgengilegt í gegnum þetta allt virka.
Ekki aðrar aðgerðir vegna n er enn inni af þessum hrokkið
axlabönd hér.
So-- viss.
>> Nákvæmlega.
Svo er þetta jafnvel meira til að benda.
Ef við lýst í staðinn n hérna á línu 32,
það er erfitt vegna þess að giska hvar annars þarf ég að nálgast það?
Á línu 34, og að Einföld þumalputtaregla er
að þú getur aðeins notað breytilegt inni af nýjustu hrokkið axlabönd
þar sem þú lýst því.
>> Því miður, lína 34 er ein lína of seint,
vegna þess að ég hef nú þegar lokað sem hrokkið Brace á línu 33
sem svarar til hrokkið Brace á línu 30.
Og svo er þetta leið til að segja að þessi breyta int er scoped,
svo að segja, að aðeins innan þessara hrokkið axlabönd.
Það bara er ekki til utan af þeim.
>> Svo reyndar, ef ég geri þetta rangt, láttu mig vistað kóða
eins og það is-- rangt skrifað.
Leyfðu mér að fara á undan og gera það virka-1, og notice-- villa.
Notkun á svart, kennimerki n á línu 35, sem er hérna.
Og ef við skruna upp frekar, annað.
Notkun á óskilgreinda kennimerki n á línu 34.
>> Svo þýðanda, Clang, er að taka eftir að það bara
er ekki til, jafnvel þótt greinilega er það þar sjónrænt.
Svo einfalt festa er að lýsa yfir því þar.
>> Nú láta mig fletta að efst á skránni.
Hvað stekkur út á þig sem vera svolítið öðruvísi
frá efni við skoðuðum í síðustu viku?
Ekki aðeins hef ég heiti, ekki bara Ég hef nokkrar skarpur nær upp efst,
Ég hef eitthvað sem ég er hringja frumgerð.
Nú lítur það afskaplega svipað því sem Við sáum bara smá stund síðan á línu 27.
>> Svo skulum álykta frá mismunandi villuboð vegna hef ég gert þetta.
Leyfðu mér að fara á undan og eyða þessum línum þar.
Og svo vitum við ekkert um frumgerð.
Endurgerð þessa skrá.
Gera virka einn.
Og nú, fjandinn, fjórir villur.
Við skulum fletta upp á fyrsta.
>> Óbeinir yfirlýsing um virka fá jákvæða int er ógilt í C99.
C99 þýðir bara 1999 útgáfa af tungumálinu
C, sem er það sem við erum örugglega að nota.
Svo hvað þýðir þetta?
Jæja C-- og sérstaklega C compilers-- eru nokkuð heimsk forrit.
Þeir vita bara hvað þú hefur sagði þeim, og það er
reyndar þema síðustu viku.
>> Vandamálið er að ef ég fer um framkvæmd heiti hér,
og ég kalla fall sem kallast GetPositiveInt hér á línu 20,
að virka tæknilega ekki til fyrr þýðandinn sér línu 27.
Því miður, the compiler er gera hlutina efst, niður, til vinstri, hægri,
svo vegna þess að það hefur ekki séð framkvæmd GetPositiveInt,
en það sér að reyna að nota það upp hér,
það er bara að fara að bail-- æpa þú með villu message-- kannski
dulinn, og í raun ekki þýða skrána.
>> Svo svokölluð frumgerð upp hér er vissulega óþarfi.
Bókstaflega, fór ég hingað og ég afrita og límt þetta og ég setti það upp hér.
Ógilt væri meira viðeigandi, þannig að við munum bókstaflega afrita og líma það í þetta sinn.
Ég afrita bókstaflega og líma það.
Í raun bara eins og eins og brauð Crumb.
>> Smá vísbending að þýðanda.
Ég veit ekki hvað þetta þýðir enn, en ég ætla að lofa að þér
að það muni vera til á endanum.
Og það er hvers vegna þetta line-- í lína 16-- endar með semíkommu.
Það er óþarfi af hönnun.
Já?
>> Ef þú myndað af did ekki vísa bókasafn að the-- ó, góð spurning.
Sharp inniheldur haus skrá innifalið.
Þarftu að be-- ætti nánast alltaf að vera á the mjög toppur
skrárinnar fyrir similar-- fyrir nákvæmlega sama ástæða, já.
Vegna þess að í venjulegu io.h er bókstaflega lína
eins og þetta, en með orðinu printf, og með rökum sínum og tegund aftur hennar.
Og svo með því að gera mikil meðal annars upp hér, hvað þú ert bókstaflega að gera
er að afrita og líma efni einhver annar skrifaði upp efst.
Þannig cluing kóðann þinn í til staðreynd að þau virka ekki til.
Já?
>> Algerlega.
Svo mjög snjall og rétt lausn væri, þú veist hvað?
Ég veit ekki hvað Frumgerðin er, en ég veit
ef ég skil að C er bara heimsk og Friedman með nýjan vinkil efst til botn.
Jæja við skulum gefa það hvað það vill.
Skulum skera þessi kóðann, líma það upp efst, og nú ýta helstu niður hér að neðan.
Þetta of myndi leysa vandann.
>> En þú getur mjög auðveldlega komið upp með atburðarás þar sem A þarf að hringja B,
og kannski B kallar aftur til A. Þetta er eitthvað sem kallast endurkvæmni,
og við munum koma aftur til það.
Og það mega eða mega ekki vera góður hlutur, en þú getur örugglega
brjóta þessa lausn.
>> Og þar að auki, vildi ég kröfu stylistically,
sérstaklega þegar forrit verða þetta lengi og þetta lengi,
það er bara frábær þægilegt að setja helstu efst
vegna þess að það er hlutur mest forritari eru að fara að hugsa um.
Og svo er það svolítið hreinni, að öllum líkindum, að gera það á þann hátt
Ég upphaflega gerði það með frumgerð jafnvel
þó það lítur svolítið óþarfi við fyrstu sýn.
Já?
Því miður, þú getur sagt það hávær?
>> Ef þú kveikir staðsetningar sem framkvæmd og frumgerð?
Svo er það góð spurning.
Ef þú aftur lýsa þessu niður hér, við skulum sjá hvað gerist.
Þannig að ef ég setti þetta niður hér, þú ert að segja.
Ó, fyrirgefðu.
Hávær?
Jafnvel hávær.
Ó, góð spurning.
Myndi hann rift virka?
Þú veist, eftir öll þessi ár, ég hafa aldrei farið frumgerð eftirá.
Svo skulum gera gera virka-1 eftir að gera það.
>> [Muldur]
DAVID J. MALAN: Ó, bíddu.
Við höfum enn að setja allt upp á brún.
Svo skulum gera þetta upp hér, ef ég er skilja spurninguna þína rétt.
Ég er að setja allt, þar á meðal frumgerð yfir helstu,
en ég ætla að setja frumgerð neðan framkvæmd.
>> Þannig að ef ég geri einn, ég er að fá aftur að error-- ónotað breytilegum n.
Ó, það.
Þakka þér.
Við skulum sjá, fáum við losna við þetta.
Það er öðruvísi galla, þannig að við skulum hunsa það.
Skulum virkilega hratt endurgerð þetta.
>> Allt í lagi, þannig að gögn rök ekki nota prentstrengjum
n- ó, það er vegna þess að Ég breytt í þessum hér.
Allt í lagi, við vitum hvað svarið er að fara to-- allt í lagi, hér við fara.
Æ, takk fyrir jákvæð.
Allt í lagi, mun ég laga þetta kóða after-- hunsa þetta tiltekna galla
þar sem þetta was-- það virkar er svarið.
>> Svo það er ekki skrifa hvað þú varst að gera.
Mig grunar þýðanda er skrifað á þann hátt
að það er hunsa frumgerð þína vegna þess að líkamanum, svo að segja,
af aðgerðin er þegar verið hrint í framkvæmd ofar.
Ég þyrfti að raunverulega samráð handbók um þýðanda
að skilja ef það er einhver annar vísbendingu, en við fyrstu sýn
bara með því að reyna og gera tilraunir, það virðist vera engin áhrif.
Góð spurning.
>> Svo skulum sækja fram núna, að færa frá aukaverkunum sem
eru aðgerðir sem gera eitthvað eins og sjónrænt á skjánum með printf,
en ekki aftur gildi.
Og aðgerðir sem hafa aftur gildi eins og við bara sáum nokkrar af.
Við sáum nú þegar þetta hugmynd af umfangi, og við munum sjá þetta aftur og aftur.
En nú, aftur, nota þumalputtaregla
að breytilegum aðeins hægt að nota inni af the nýlega opnað
og lokuð hrokkið axlabönd sem við sá í viðkomandi dæmi.
>> Og eins og þú bent á, það er ability--
þú gætir leyst sum þessara vandamála með því að setja inn breytu heimsvísu
á the mjög toppur af a skrá.
En í næstum öllum tilfellum myndum við leiður á því,
og örugglega ekki einu sinni að fara inn í þessi lausn núna.
Svo nú er takeaway er að breytur hafa þessa hugmynd um gildissvið.
>> En nú skulum við skoða aðra þurr vegur í raun að leita
á sumir laglegur áhugaverður framkvæmd upplýsingar.
Hvernig við gætum tákna upplýsingar.
Og við skoðuðum þegar á þessu í fyrstu viku í bekknum.
Horfa á forritum og minnir okkur á aukastaf.
>> En muna frá síðustu viku að C hefur mismunandi gerðir gagna og bunches meira,
en mestu gagni sjálfur nú gæti verið þetta.
A bleikju, eða eðli, sem gerist að vera eitt bæti, eða átta bita alls.
Og það er að segja að stærð af bleikju er bara eitt bæti.
A bæti er átta bitar, þannig að þetta þýðir að við getum tákna hversu marga stafi.
Hversu margir stafir eða tákn á lyklaborðinu
ef við höfum eitt bæti eða átta bita.
Hugsaðu til baka viku núll.
Ef þú ert átta bita, hversu margir samtals gildi
getur þú tákna með mynstur núllum og sjálfur?
One-- meira en það.
Svo 256 alls ef þú byrja að telja frá núlli.
Svo ef þú ert átta bits-- þannig að ef við hafði tvöfaldur ljósaperur okkar upp hér aftur,
við gætum snúið þeim ljósaperur á og burt í einhverju 256 einstaka mynstrum.
>> Nú er þetta dálítið erfið.
Ekki svo mikið fyrir ensku og rómantík tungumál, en vissulega
þegar þú kynna, að dæmis Asíu tungumálum, sem
hafa mun fleiri tákn en eins 26 bókstafir.
Við reyndar gæti þurft fleiri en eitt bæti.
Og sem betur fer á undanförnum árum hefur samfélagið
samþykkt önnur staðlar sem nota meira en eitt bæti á ákæra.
>> En nú í C, sjálfgefið er bara eitt bæti eða átta bitar.
Heiltala, á meðan, er fjórir bæti, annars þekkt sem 32 bita.
Sem þýðir hvað er stærsti kostur tala við getur táknað með int
virðist?
Með milljarð.
Svo er það fjögurra milljarða gefa eða taka.
2 til 32th vald, ef við ráð neinar neikvæðar tölur
og bara nota allt jákvætt tölur, er það fjóra milljarða
gefa eða taka möguleika.
Flotholt, á meðan er mismunandi gerð gögn tegund í C. Það er enn a tala,
en það er rauntala.
Eitthvað með kommu.
Og það kemur í ljós að C notar einnig fjórum bytes
að tákna fleytitölum.
>> Því miður hversu margir fljótandi benda gildi eru í heiminum?
Hversu margir alvöru tölur eru þarna?
Það er óendanlega númer og fyrir þessi efni
það er óendanlegur fjöldi heiltalna.
Þannig að við erum nú þegar konar grafa oss holu hér.
Þar virðist í computers-- á Síst forrit skrifuð í C á them--
getur aðeins treyst eins hátt og fjóra milljarða gefa eða taka,
og fleytitölum getur aðeins virðist
hafa sumir endanlegt magn af nákvæmni.
Bara svo margir tölustafir eftir aukastaf lið þeirra.
>> Vegna þess, að sjálfsögðu, ef þú hefur aðeins 32 bita,
Ég veit ekki hvernig við ætlum að fara um fulltrúi alvöru Numbers líklega
með mismunandi gerðir af mynstrum.
En það er örugglega endanlegt Fjöldi slíkra mynstur,
svo hér líka, þetta er erfið.
>> Nú getum við forðast vandamál lítillega.
Ef þú notar ekki fljóta, þú getur notað tvöfalt
í C, sem gefur þér átta bæti, sem er leið fleiri mögulegar mynstur núllum
og sjálfur.
En það er samt tímabundið, sem er að fara að vera erfið ef þú skrifar hugbúnað
fyrir grafík eða ímynda stærðfræði formúlur.
Svo þú gætir í raun vilja að telja upp stærri en það.
A langur long-- heimskulega named-- er einnig átta bæti eða 64 bita,
og þetta er tvisvar sinnum eins lengi og int, og það er í langan heiltölu gildi.
>> Gaman fact-- ef int er fjögur bæti, hversu lengi er lengi í C oftast?
Einnig fjórum bæti, en lengi lengi er átta bæti,
og þetta er fyrir sögulegum ástæðum.
>> En takeaway nú er bara hefur þessi gögn
að eiga fulltrúa í computer-- sem er líkamleg tæki með rafmagni,
það er yfirleitt akstur þessir núll og ones--
með endanlegt magn af nákvæmni.
Svo er það vandamálið þá?
>> Jæja það er vandamál af heiltölu flæða.
Ekki bara í C, en í tölvur almennt.
Til dæmis, ef þetta er bæti virði bit--
þannig að ef þetta er átta bit-- allt þar af eru númer eitt.
Hvað tala er þetta fulltrúi ef við gerum ráð fyrir
það er allt jákvætt gildi í tvöfaldur?
>> 255, og það er ekki 256, því núll er lægsta tala.
Svo er 255 hæsta einn, en vandamálið
er ráð fyrir að ég vildi að vöxtur þessa breytu sem
er að nota átta bita samtals ef ég vil að hækka það.
>> Jæja eins fljótt og ég bæta við einn til allar þessar sjálfur,
þú getur kannski ímyndað visually-- bara eins og vopnaður einn með decimals--
eitthvað er að fara að renna til vinstri.
Og reyndar, ef ég bæti við fjölda einn að þessu, hvað gerist í tvöfaldur
er að það yfirfullt aftur í núll.
>> Svo ef þú use-- bara ekki við int, en eitt bæti til að telja heiltölur
í forriti, því default-- eins fljótt og þú færð að 250, 251, 252, 253, 254,
255-- 0 kemur á eftir 255, sem er líklega ekki hvað
notandi er að fara að búast við.
>> Nú meðan í fleytitölu heiminum, þú ert líka svipuð vandamál.
Ekki svo mikið með stærsta number-- þó að það er enn málið.
En með the magn af nákvæmni að þú getur táknað.
Svo skulum taka a líta á þetta dæmi hér einnig frá upptökum code-- dag
fljóta-0.c.
>> Og eftir það er frábær einfalt forrit sem
ætti greinilega að prenta út hvaða gildi?
Hvað gera veðja að þú þetta er að fara að prenta jafnvel þó að það er hluti af nýjum setningafræði
hér?
Svo vonandi 0.1.
Svo sem nemur einum tíunda vegna þess að ég ætla að gera 1 deilt með 10.
Ég geyma svarið í breytu sem heitir f.
Það breytu er af taginu fljóta, sem er lykilorð sem ég lagði bara hendi.
>> Við höfum ekki séð þetta áður, en þetta er góður af a snyrtilegur vegur í printf
að tilgreina hversu margir stafir sem þú langar að sjá á eftir kommu.
Þannig að þetta ritháttur þýðir bara sem hér er tákn.
Það er um fleytitölu gildi, og ó, við the vegur,
sýna það með kommu með eitt númer eftir kommu.
Svo er að fjöldi af tölustöfum,
svo að segja, að þú vilt kannski.
>> Svo láta mig fara á undan og gera gera fljóta-0, ./float-0,
og virðist 1 deilt með 10 er 0,0.
Nú hvers vegna er þetta?
>> Jæja aftur, tölvan er að taka mér bókstaflega, og ég hef skrifað 1
og ég skrifað 10, og taka giska hvað er gert ráð fyrir gögn gerð fyrir þá tvo
gildi?
Int er það tæknilega eitthvað svolítið öðruvísi.
Það er yfirleitt langur, en það er lokum óaðskiljanlegur gildi.
Ekki fleytitölu gildi.
>> Sem er að segja að ef þetta er int og þetta er int
vandamálið er að í tölvunni er ekki hafa getu
að jafnvel geyma það kommu.
Svo þegar þú gerir 1 skipt af 10 með heilar tölur
fyrir bæði teljara og þess nefnara, svarið ætti að vera 0.1.
En computer-- því þeir eru integers--
veit ekki hvað ég á að gera við 0.1.
>> Svo hvað er það að gera skýrt?
Það er bara að henda henni í burtu, og hvað ég ætla að sjá á endanum
er 0,0 bara vegna þess að ég hélt því fram að printf sýna mér eina kommu.
En vandamálið er að ef þú skipta heila tölu frá heiltala,
þú munt get-- samkvæmt skilgreiningu af C-- heiltala.
Og það er ekki að fara að gera eitthvað gott og þægilegan
eins umferð það upp til næsta einn upp eða niður.
Það er að fara að HÃ allt eftir aukastaf.
>> Svo bara innsæi, hvað er líklega festa?
Hvað er einfaldasta festa hér?
Já?
Nákvæmlega.
Hvers vegna fáum við ekki að meðhöndla bara þessar sem fleytitölum raun
breyta þeim í flotum eða tvöfaldar.
Og nú ef ég gera fljóta-0, eða ef ég saman fljóta-1,
sem er nákvæmlega eins hvað var bara lagt.
Og nú er ég að gera fljóta-0, nú er ég að fá 0.1 mitt.
>> Nú er þetta magnað.
En nú ætla ég að gera eitthvað svolítið öðruvísi.
Ég er forvitinn að sjá hvað er í raun fara á undir hetta,
og ég ætla að prenta þetta út að 28 aukastöfum.
Ég vil virkilega sjá 0.1000-- að infinite--
[Inaudible] 27 núll eftir því 0,1.
>> Jæja við skulum sjá hvort það er það sem ég fæ örugglega.
Gera flýtur-0 sömu skrá.
./floats-0.
Skulum súmma inn á dramatískan svar.
Allan þennan tíma hefur þú verið að hugsa 1 deilt með 10 er 10%, eða 0.1.
Það er ekki.
Að minnsta kosti svo langt sem tölva er málið varðar.
>> Nú hvers vegna-- í lagi, sem er lokið lygi 1 deilt með 10 er 0,1.
En hvers vegna-- sem er ekki að takeaway dag.
Svo hvers vegna er tölvan held, ólíkt okkur öllum í herberginu,
að 1 deilt með 10 er reyndar að brjálaður gildi?
Hvað er tölva gera greinilega?
Hvað er það?
>> Það er ekki flæða yfir, í sjálfu sér.
Yfirfall er oftast þegar þú sett um gildi.
Það er þetta mál af imprecision í fleytitölu gildi
þar sem þú ert bara 32 eða kannski jafnvel 64 bita.
En ef það er óendanlega Fjöldi alvöru Numbers
tölur með aukastafa og tölur thereafter-- vafalaust
þú getur ekki tákna þeim öllum.
Svo tölvan hefur gefið okkur næst passa
við gildið sem það getur táknað með því að nota að margir bitar til verðmæti sem ég vil í raun og veru,
sem er 0,1.
>> Því miður, ef þú byrja að gera stærðfræði, eða þú
byrja þar þessar tegundir fljótandi benda gildi í mikilvægum programs--
fjárhagslega hugbúnaður, her software-- neitt
þar skynjun er sennilega nokkuð mikilvægt.
Og þú byrjar að bæta tölur eins og þetta, og byrja
gangi að hugbúnaður með mjög stórum aðföng
eða fyrir fullt af tíma eða fullt daga eða fullt af árum,
þessir pínulítill lítill mistök vafalaust hægt að bæta upp með tímanum.
>> Nú sem innskot, ef þú hefur einhvern tíma séð Superman 3 eða Office Space
og þú gætir muna hvernig þessir gaurar stálu
a einhver fjöldi af peningum frá tölvunni sinni með því að nota fljótandi punkta gildi
og bæta upp litla remainders, vonandi að bíómynd
gerir nú meira vit.
Þetta er það sem þeir voru vísa til í þeirri mynd.
Sú staðreynd að flest fyrirtæki myndi ekki líta
eftir ákveðinn fjölda aukastafa,
en þeir eru þættir sent.
Svo þú byrjar að bæta þeim upp, þú byrjar að gera a einhver fjöldi af peningum
inn á bankareikning þinn.
Svo er að Office Space útskýra.
>> Nú miður út Skrifstofa Space, þar
eru sumir löglega áhyggjur og veruleg áhrif
af þessum tegundum undirliggjandi hönnun ákvarðanir,
og örugglega einn af þeim ástæðum við notum C í námskeiðinu
er þannig að þú þarft virkilega þetta jörð upp skilning á því hvernig tölvur vinna,
hvernig hugbúnaður virkar og gera ekki taka neitt sem sjálfsögðum hlut.
>> Og reyndar því miður, jafnvel með sem grundvallaratriði skilningur,
við menn gera mistök.
Og það sem ég hélt að ég myndi deila er þetta átta mínútna vídeó hér tekin
frá Modern undur þætti, sem er fræðandi sýning um hvernig hlutirnir virka
sem málar tvær myndir af þegar óviðeigandi notkun
og skilning á fleytitölum
leiddi til nokkur mikilvæg óæskilegar niðurstöður.
Við skulum taka a líta.
[Vídeó spilun]
-Við Nú aftur að "Engineering Neyðarástand "á Modern undur.
Tölvur.
Við höfum komið öll að samþykkja oft pirrandi vandamál sem
fékk með them-- galla, veirur, og hugbúnaður glitches-- fyrir lítil verð
að borga fyrir þægindi.
En í Hátækni og hár hraði hersins og rúm program forrit,
minnsti vandamálið getur eflast í hörmung.
>> Hinn 4. júní 1996, vísindamenn reiðubúin að ráðast í unmanned Ariane 5 eldflaug.
Það var vopnaður vísindalegar gervihnettir hannað
að koma nákvæmlega hvernig Segulsviði jarðar Hefur samskipti
með sól vindur.
Eldflaugar var byggt fyrir Geimvísindastofnun Evrópu,
og lyfti burt frá leikni á strönd Franska Gvæjana.
>> Seinasta um 37 sekúndur inn Flugferðin þeir fyrst
tekið eitthvað var að fara úrskeiðis.
Það stútar voru segulnagli á þann hátt sem þeir ættu í raun ekki.
Um 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ð.
Bilið öryggi liðsforingi, með gríðarlega hugaður, ýtti á takkann
og blés upp eldflaugar áður en það gæti verða hættulegir öryggi almennings.
>> -Þetta var mær sjóferðin á Ariane 5,
og eyðingu hennar tók setja vegna galla
innbyggð í hugbúnaði eldflaugar er.
-The vandamál á Ariane var að það
var að tala sem þarf 64 bitar að tjá,
og þeir vildu til að breyta þ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 af þeim tölustöfum 64-bita tala voru núll.
Þeir voru rangar.
>> -The vanhæfni af einum hugbúnað til að samþykkja
eins 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 höfðu gengið mjög vel.
Svo mikið af hugbúnaði til fyrir það var einnig notað í Ariane 5.
>> -The Grunn vandamálið var að Ariane 5.
Var faster-- flýta hraðar og að hugbúnaður hafði ekki grein fyrir því.
>> -The eyðilegging af the eldflaugar var gríðarlegur fjárhagslegur hörmung.
Allt vegna þess að eina mínútu 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 með upphafi af fyrsta Persaflóastríðinu,
Patriot eldflaugum upplifað svipað konar
af fjölda viðskipta vandamál.
Og eins og a afleiðing 28 people-- 28 American soldiers-- voru drepnir,
og um hundrað öðrum sár.
Þegar Patriot, sem átti til að vernda gegn komandi Scuds,
tókst að skjóta eldflaugum.
>> Hvenær Írak ráðist Kúveit og Ameríku hóf Desert Storm í byrjun 1991,
Patriot eldflaugum rafhlöður voru á vettvangi að vernda Sádi-Arabía og Ísrael
frá Írak Scud eldflaugum árás.
The Patriot er bandarískt miðlungs-svið yfirborð-til-loft kerfi
framleitt af Raytheon fyrirtækisins.
>> -The stærð af the Patriot interceptor itself--
það er um það bil 20 fet á lengd, og það vega um 2.000 pund.
Og það ber warhead á um, Ég held að það er um 150 £.
Og Warhead sjálft er a hár sprengiefni, sem
hefur brot kringum sig.
Svo hlíf á Warhead er sem ætlað er að bregðast við eins og buckshot.
>> -The Eldflaugar eru gerðar fjögur á ílát,
og eru flutt af parhús kerru.
>> -the Patriot gegn eldflaugum kerfi fer aftur að minnsta kosti 20 ár núna.
Það var upphaflega hannað sem loft í varnarmálum eldflaugum
að skjóta niður flugvélar óvinur.
Í fyrsta Persaflóastríðinu þegar að stríð kom á,
her vildi nota það til að skjóta niður Scuds, ekki flugvélum.
Írak Air Force var ekki svo mikið vandamál,
en her var áhyggjur Scuds.
Og svo reyndu þeir að uppfæra Patriot.
>> -Intercepting Óvin eldflaugum ferðast á Mach 5
var að fara að vera erfitt nóg.
En þegar Patriot var hljóp í notkun,
her var ekki kunnugt um An Írak breytingar sem
gerði scuds þeirra næstum ómögulegt við það.
>> Hvað gerðist er á Scuds að voru að koma í voru óstöðug.
Þeir voru óstöðugir.
Ástæðan fyrir þessu var á Iraqis-- í því skyni að fá 600 km út
af 300 km á bilinu missile-- tók þyngd úr fremstu warhead,
og gerði Warhead léttari.
Svo nú Patriot er að reyna að koma á Scud, og mest af time--
yfirgnæfandi meirihluti af time-- það myndi bara fljúga í Scud.
>> -Þegar Patriot kerfi rekstraraðila áttaði Patriot ungfrú markmiði sínu,
þeir sprengt warhead Patriot er til að forðast hugsanlegar mannfall ef það
var leyft að falla til jarðar.
>> -Þetta Var það sem flestir sáu eins stór fireballs á himninum,
og misskilið eins rekur í Scud warheads.
>> -Although Í himininn, Patriots virtist vera tekist að eyðileggja
Scuds á Dhahran það gæti verið engin mistök um frammistöðu sína.
Það Patriot er ratsjá kerfi missti utan um komandi Scud
og aldrei sett vegna að hugbúnaður galli.
>> Það var þá Ísraelsmenn sem fyrst uppgötvaði að því lengur sem kerfið var á,
því meiri tíma misræmi varð.
Vegna klukku embed í tölvunni kerfisins.
>> About tveimur vikum áður en harmleikur í Dhahran,
Ísraelar tilkynnt Defense Department
Fjármálakerfið var að tapa tíma.
Eftir um það bil átta klukkustundir af hlaupum, þeir taka
að kerfið er að verða orðinn ónákvæmari.
The Defense Department brást við með segja öllum Patriot rafhlöður
að ekki yfirgefa kerfi á í langan tíma.
Þeir sögðu aldrei hvað fyrir löngu var.
8 klukkustundir, 10 klukkustundir, þúsund klukkustundir.
Enginn vissi.
>> -The Patriot rafhlaða aðstöðu við kastalann
á Dhahran og gölluð innri þess klukka hafði verið á fyrir yfir 100 klst
á nótt 25 febrúar.
>> -Það Fylgst tími til nákvæmni um tíunda hluta úr sekúndu.
Nú tíundi úr sekúndu er áhugavert tala
vegna þess að það er ekki hægt að gefa upp í tvöfaldur nákvæmlega sem
þýðir að það er ekki hægt að gefa upp nákvæmlega í hvaða nútíma stafrænum tölva.
Það er erfitt að trúa því, en nota þetta sem dæmi.
>> Við skulum taka númer þriðjung.
Einn þriðji er ekki hægt að gefið upp í aukastaf nákvæmlega.
Þriðjungur er 0,333 fara á fyrir óendanleika.
Það er engin leið að gera það með alger nákvæmni í tugabrot.
Það er nákvæmlega eins konar vandamál sem gerðist í Patriot.
Því lengur sem kerfið hljóp að verri tíma villa varð.
>> -Eftir 100 klukkustunda starfrækslu, sem villa í tíma var aðeins um þriðjungur
úr sekúndu.
En hvað varðar að miða að eldflaugum ferðast á Mach 5,
það í för með sér að fylgjast með villa yfir 600 metra.
Það væri banvæn villa hermannana í Dhahran.
>> Hvað gerðist er Scud ræst var greind með viðvörunarkerfi gervitungl,
og þeir vissu að Scud kæmi almennt átt þeirra.
Þeir vissu ekki hvar hún var að koma.
Það var nú allt að ratsjá hluti af Patriot kerfi
verja Dhahran að finna og halda lag af komandi óvini eldflaugum.
>> -The ratsjá var mjög klár.
Það væri í raun að fylgjast með sem staða Scud
og þá spá fyrir um hvar það myndi líklega vera
næst þegar ratsjá sendi púls út.
Það var kallað á bilinu hliðið.
>> -Þá Þegar Patriot ákveður nægur tími hefur
samþykkt að fara til baka og athuga næsta staðsetning fyrir þetta greinist hlut
það fer aftur.
Svo þegar það fór aftur til the rangur staður, sér það þá ekki mótmæla.
Og það ákveður að það væri enginn hlutur.
Að það var falskur uppgötvun og það dropar lag.
>> -The Komandi Scud hvarf frá skjánum ratsjá,
og sekúndum síðar, það skellur inn í kastalann.
The Scud drap 28.
Það var það síðasta sem rekinn á fyrsta Persaflóastríðinu.
Hörmulegan, sem uppfærð hugbúnaður kom í dögun daginn eftir.
Hugbúnaðurinn galli hafði verið fastur, lokun
einn kaflinn í vandræði Saga Patriot eldflaugum.
>> [END vídeó spilun]
>> DAVID J. MALAN: Það er það fyrir CS50.
Við munum sjá þig á miðvikudag.
>> [Tónlist spila]