>> [Tónlist spila]
>> DAVID J Malan: Allt í lagi, velkomin aftur til CS50.
Þetta er upphaf viku tvö.
Orð frá einum af okkar vinir á háskólasvæðinu -
ef þú hefur áhuga, hugsanlega, annaðhvort nú eða í sumum framtíð tíma
jafnvel, þegar öruggari, kennslu miðja nemendur skólans svolítið
eitthvað um tölvunarfræði, gera höfuð til að vefslóð.
Þeir eru einkum þörf núna af kennara, sérstaklega ef þú hefur
fengum útsetningu tölvunarfræði.
>> Svo muna að síðasta sinn, kynnti við nokkrar gerðir gagna í C, og
þú gætir hafa byrjað að fá þinn hendur óhreinum með þessum svona langt
í vanda sett einn.
Og við átti bleikju.
Svo í nokkuð tæknilegur skilmálar, hvað er bleikju eins og þú veist það í dag?
>> Svo er það eðli, en við skulum vera nákvæmari nú.
Hvað er átt við með eðli eða einstaklingur bleikju?
A non-tölulega eðli -
svo ekki endilega.
Það kemur í ljós að jafnvel tölur, jafnvel greinarmerki og bréf eru
fulltrúa með þessum gögnum nefnast sem bleikju.
Svo það er ekki endilega stafrófsröð.
Já?
>> Svo er það ASCII staf.
Svo ef þú heldur aftur til viku núll, þegar við höfðum bæti okkar sjálfboðaliða
koma upp og annað hvort halda höndum þeirra upp eða ekki allir, fulltrúa þeir bita.
En sameiginlega sem hópur af átta, þeir fulltrúa bæti.
Og við kynntum hugmyndina um ASCII á þeim fyrirlestur, sem er einfaldlega
kortleggja milli tölur og bókstafi.
Og ASCII notar, eins og þessir menn gefið í skyn, átta bitar
að tákna staf.
>> Svo Samkvæmt því, ef átta bitar geta hver taka á einn af tveimur gildum -
núll eða einn -
Það þýðir að það voru tveir möguleikar fyrir þennan mann -
núll eða einn -
Tveir fyrir þennan mann, tveir fyrir þetta maður, tveir fyrir þessu.
Svo samtals tveimur tímum tvisvar sinnum tvisvar sinnum tveir sinnum tveir -
svo tveir áttunda í aðaleinkunn.
Þannig að það er Stafafjöldi 256 mögulegt að þú getur
tákna með átta bita.
>> Nú, þeir sem tala Asian tungumál gætir vita að það er meira
stafir í heiminum en bara Eins og Bs og Cs og Ds.
Og reyndar, ASCII ekki nægja fyrir mikið af tungumálum í heiminum.
En meira um það seinna.
Fyrir nú, ég veit að í C ef þú vilt að tákna staf, a stykki af
greinarmerki, eða bara eitthvað eðli í náttúrunni, notum við bleikju.
Og það er eitt bæti eða átta bita.
>> Hvað um int?
Ja, int er heiltala.
Hversu margir bitar, ef þú manst, var heiltala yfirleitt?
Einhver muna?
Svo það er yfirleitt 32.
Það veltur raunverulega á tölvunni sem þú ert að nota.
En í tækinu, og í fullt af tölvur, það er 32 bita eða fjögur
bæti - átta sinnum fjórir.
Og ints eru bara notuð til að geyma tölur, annaðhvort neikvæð,
jákvæð eða núll.
>> Og ef þú hefur fengið 32 bita og þú aðeins sama um jákvæðar tölur, getur
einhver Ballpark hvernig margir mögulegur heiltölur a tölva getur táknað frá
núll á allt?
Svo það væri tveir til 32, sem er u.þ.b. fjóra milljarða.
Svo þessi völd tveir eru að fara að vera algengt þema í tölvunarfræði.
Eins og við munum sjá, þá eru þeir alveg þægilegt að vinna með jafnvel ef það er ekki alveg
auðvelt að gera stærðfræði í höfuðið manns.
>> Þannig að við munum segja u.þ.b. fjóra milljarða.
Nú, fyrir löngu -
þú getur konar giska.
Það er lengri en int.
Hversu margir bitar?
Svo 64 bita eða átta bytes.
Þetta þýðir bara að þú getur táknað jafnvel stærri tölur, stærri jákvæð eða
stærri neikvæðar tölur.
>> Og hvernig óður fljóta?
Það er fljótandi lið verðmæti 32 bita.
Þetta er bara alvöru tala, eitthvað með kommu.
En ef þú þarft í staðinn fleiri stöðum eftir kommu eða þú vilt
tákna stærri fjölda með nokkrum brot eftir það er hægt að nota í
tvöfaldur, sem er 64 bita.
>> En það er áhugavert takeaway hér.
Svo ef ints takmarkast við 32 bita og jafnvel löngu LONGS eru takmörkuð af 64
bitar, þessi tegund af bidur spurningin, hvað ef þú vilt í raun að telja
hærri en 4 milljarða á int?
Jæja, þú notar bara lengi lengi.
En hvað ef þú vilt að telja hærra en tveir á 64., gefa eða taka?
>> Nú, það er a gríðarstór tala.
En að lokum, þú might raunverulega sama um þessar tegundir af gildum,
sérstaklega ef þú ert að nota gagnagrunn og byrja að safna fullt og fullt
og hellingur af gögnum og framselja einstök Tölurnar hverju stykki af þessi gögn.
Þannig að við eins konar átt í vandræðum.
Og sömuleiðis, með fljótandi lið gildi - flýtur eða tveggja manna -
ef þú hefur aðeins fengið endanlega fjölda bits, hversu margir heildarfjölda gastu
hugsanlega tákna?
>> Jæja, það er óljósara þegar þú falið kommu.
En það er örugglega tímabundið.
Ef þú ert með endanlega fjölda bita, endanlega fjölda af mönnum, endanlegt
fjöldi ljósaperur, vafalaust þú getur aðeins tákna endanlega fjölda
Fljótandi Point gildi.
En hversu margir rauntölur eru þeirra í heiminum?
Það er óendanlega.
Svo er það eins konar vandamál vegna þess að við hafa ekki óendanlega mikið
minni eða RAM inni á tölvum okkar.
Svo sumir krefjandi það getur gerst.
>> Svo skulum við fara á undan og reyna að tjá þetta hér.
Leyfðu mér að fara á undan og opna gedit.
Ég ætla að fara á undan og vista skrá kallast "floats0.c" bara til að vera
samræmi við dæmi sem er í boði á netinu, ef þú vilt.
Og ég ætla að fara á undan og skilgreina það sem hér segir -
Ég ætla að fara á undan og segja, int Helstu ógilt, eins og við gerum oft.
>> Og síðan í þessari áætlun, ég ætla að lýsa mér fljóta, svo 32-bita
breytu sem heitir f geðþótta.
Og þá ætla ég að geyma í henni Ég veit ekki, einum tíunda, svo 0.1.
Þannig að ég ætla að tjá það sem einn deilt með 10, sem er fullkomlega
lögmæt í C.
>> Og síðan á annarri línu, einfaldlega að ég vilt prenta út þessi gildi.
Svo muna að við getum notað The printf þekki.
Við viljum ekki að nota% i fyrir int.
Við viljum nota% f fyrir fljóta.
Og þá ætla ég að gera sviga N, loka tilvitnun, kommu, f, semíkommu.
>> Svo er hér forritið mitt.
Það er nú þegar einn galla.
Er einhver fyrir hvern þetta smellt þegar á að benda á kosti
ein villa sem ég hef gert?
Já?
Já.
Ég gleymdi "# include" á efst, einkenni þau sem ef ég reyni að
saman er þetta að fara að vera að þýðandinn er að fara að æpa á mig,
segja Óskilgreint tákn eða eitthvað þar að lútandi.
Það skilur ekki eitthvað eins printf.
>> Þannig að ég ætla að gera "# include ", Vista skrána.
Og nú er það í betra form.
En ég ætla líka að benda út eitt nýtt smáatriði í dag.
Auk þess að tilgreina stað eigendur eins% f% i% s, getur þú
stundum hafa áhrif á hegðun þeirrar tákn.
Til dæmis, um er að ræða fljótandi lið gildi, ef ég vil bara
að sýna einum aukastaf eftir tímabil, ég get í raun gert 0.1f.
Svo í öðrum orðum, skilja ég f og The prósent skilti með 0,1, bara
segja printf, þú might hafa a heild fullt af tölum eftir tuga
benda fyrir mig.
En ég vil bara að sjá einn af þeim.
>> Þannig að ég ætla að fara á undan núna og vista þetta forrit, fara inn flugstöðinni minn
glugga, og ég ætla að fara á undan og tegund gera fljóta 0, slá.
Ég sé að nokkuð dulinn línu sem mun byrja að gera meira vit eins og við
stríða það í sundur í þessari viku og næstu.
Nú ætla ég að fara á undan og hlaupa fljóta núll.
Og fjandinn.
>> Svo er það annar padda hér fyrir sumir ástæða.
Ég er nokkuð viss um að einn tíundi eða einn deilt með 10, er ekki 0,0.
Kannski er ég bara ekki að leita á nóg tölustöfum.
Svo hvers vegna get ég ekki sagt tvær 0,2 til að sjá tvo aukastafi í staðinn af réttlátur einn.
Leyfðu mér að fara aftur til stöðvarinnar gluggann minn hér og högg upp nokkrum sinnum til
sjá sögu mína.
Gera fljóta núll aftur, og síðan upp aftur.
Og nú færa.
>> Og nú er ég nokkuð viss um að þetta er rangt.
Og ég gæti gert þriggja og fjögurra, og ég er líklega að fara að halda að sjá núllum.
Svo hvar er villan?
Einn deilt með 10 ætti að vera 0.1.
Einhver vilja til taka a stunga á hvað grundvallaratriði mál er?
Já?
Þeir eru báðir heiltölur.
Svo hvað?
Svo með einn deilt með 10, sem er hvað ég geri í stærðfræði.
Og ég fæ 0,1.
>> Já.
Og svo er það örugglega þessi mál.
Þegar þú tekur heiltölu á tölvu og þú deila því með öðrum heiltala,
tölva sjálfgefið er að fara að gera ráð fyrir að þú viljir heiltala.
Vandamálið þó, að sjálfsögðu, er að 0,1 er ekki heil tala.
Það er alvöru tala.
Og svo hvað tölva er með Sjálfgefið er það kastar bara burt
allt eftir kommu.
Það skiptir ekki umferð upp eða niður í sjálfu sér.
Það kastar bara burt allt eftir kommu.
Og nú gerir það vit.
Því nú erum við greinilega vinstri með núll.
>> En bíddu í eina mínútu.
Ég er ekki að sjá að int núll.
Ég er reyndar að sjá 0,00.
Svo hvernig gera sætta ég þetta núna?
Ef einn deilt með 10 er núll, en ég er sjá 0,00, þar er það að fá
breytt aftur í alvöru tala?
Já.
Einmitt.
>> Svo hérna í línu fimm, þegar ég í raun geyma að 0,1, sem er þá
styttu í núll, inni í flot, það er í raun jafngildir
geyma það ekki sem int en örugglega, sem fljóta.
Ennfremur er ég þá að nota printf til sérstaklega prenta að tala við tvo
aukastafi jafnvel þó að það gæti í raun ekki vera nein.
>> Svo af þessu tagi sjúga, ekki satt?
Svo virðist sem þú getur ekki gert stærðfræði, að minnsta kosti á þessu stigi
nákvæmni, í tölvu.
En örugglega er það lausn.
Hvað er einfaldasta festa við gætum kannski gera, jafnvel bara innsæi hér til
leysa þetta?
Já?
Snúðu heiltölur í -
já.
Jafnvel ef ég er ekki alveg viss um hvað er raunverulega að gerast hér, ef það
grundvallaratriðum hefur að gera með þetta bæði vera ints, ja, af hverju ekki ég
gera það 10,0, sem gerir þetta 1.0, vistað póstinn skrána.
Leyfðu mér að fara aftur niður til botn og laun.
Leyfðu mér að endursýning núna.
Og þar -
nú, hef ég fékk einum tíunda minn fulltrúa sem 0.10.
>> Allt í lagi.
Svo er það ekki slæmt.
Og láta mig benda á einn annan hátt við hefðum getað leyst þetta.
Leyfðu mér að rúlla í raun aftur í tímann að þegar við höfðum þetta sem einn
tíunda fyrir augnabliki.
Og láta mig fara á undan og vistað póstinn þessa skrá sem annar skrá nafn, bara til að
hafa smá eftirlitsstöð.
Svo sem var útgáfa einn.
Og nú láta mig fara á undan og gera eitt útgáfu.
Við munum kalla þetta útgáfu tvö núll verðtryggð.
>> Og ég ætla að í stað gera þetta - þú veist hvað?
Bæti punktur núll virkar í þessu tilfelli.
En geri ráð fyrir einn var breytu.
Ætlast 10 voru breytu.
Með öðrum orðum, gera ráð fyrir að ég gat ekki bara erfitt-númer 0,0 í lok
þessarar tölur tjáningu.
Jæja, ég get í raun gert eitthvað í sviga kallast steypu.
Ég get kastað heiltölu 10 til flot, og ég get kastað heiltölu einn til að
fljóta, eins vel.
Þá stærðfræði sem er að fara að gera er í raun 1,0 deilt með 10,0,
afleiðing af sem fer í fyrsta skrefið er eins og áður.
Svo ef ég laun þetta eins og gera fljóta 2, og nú flýtur 2, fá I sömu
answer, eins og vel.
>> Þannig að þetta er nokkuð háttuð dæmi, til að leysa þetta vandamál
með því að kynna steypu.
En almennt, steypu er að fara að vera öflugur hlutur, sérstaklega fyrir
Heimadæmi tvö í einu viku, þegar þú vilt að umbreyta einni gögn gerð til
annar að í lok dags eiga fulltrúa á sama hátt.
Í lok dags, á hverjum einasta sem við höfum talað um svona langt er
bara ints undir hetta.
Eða ef það er of lágu stigi fyrir þú, þá eru þeir bara tölur
undir hetta.
Jafnvel stafir, aftur, muna frá núlli viku, eru tölur
undir hetta.
>> Hver er að segja, við getum umbreyta á milli mismunandi tegundir af tölum ef
þeir eru bara bits.
Við getum umbreyta á milli tölum og bréf ef þeir eru bara
bits, og öfugt.
Og greiða á þennan hátt er verkfæri í forritun sem leyfir þér valdi
breyta einum gögn gerð til annars.
Því miður, þetta er ekki eins einfalt eins og ég hefði viljað.
>> Ég ætla að fara aftur í flotum 1, sem var einfaldari,
einfalt einn með 0,0 bætt við til hvers.
Og bara eins og a fljótur upprifjunar, láta mig fara á undan og laun
þetta þarftu að fljóta 2 -
Því miður, þetta er að fljóta 1.
Og nú skulum hlaupa fljóta 1.
Og í botn, taka að ég fæ örugglega 0,1.
Svo, vandamálið leyst.
>> En ekki enn.
Ég ætla nú að fara að fá smá forvitinn, og ég ætla að fara aftur í mínum
printf yfirlýsingu og segja, þú veist hvað?
Mig langar til að staðfesta að þetta er í raun einn tíundi.
Og ég er að fara að vilja að sjá þetta að segja, fimm aukastafi.
Það er ekki vandamál.
Ég breyta tvö til fimm, Ég laun með gera.
Ég endursýning það flýtur eins 1.
Leita ansi gott.
Heilindarathugunum mín gæti enda þar, en Ég fæ smá fleiri ævintýrum.
Ég ætla að breyta 0,5-0,10.
Ég vil sjá 10 tölustafir á eftir The aukastaf.
>> Og ég ætla að fara á undan og laun þetta og endursýning flýtur 1.
Ég svona eftirsjá að hafa prófað þetta frekar vegna stærðfræði mín er ekki svo
leiðrétta lengur, það virðist.
En bíddu í eina mínútu, kannski það er bara fluke.
Kannski tölvan er leikur svolítið skrítið.
Leyfðu mér að fara á undan og gera 20 aukastöfum og fullvissa mig um að ég veit
hvernig á að gera stærðfræði.
Ég veit hvernig á að forrita.
Gerðu fljóta 1, laun, og fjandinn.
Það er virkilega, virkilega fá langt frá markinu.
>> Svo hvað er að gerast hér?
Innsæi, byggt á forsendum okkar Fyrr um stærð gerðir gagna,
hvað þarf að gerast hér undir hetta?
Já?
Einmitt.
Ef þú vilt þetta mikið nákvæmni, og sem er Heck af a einhver fjöldi af nákvæmni -
20 tölur eftir kommu.
Þú getur ekki hugsanlega fulltrúi handahófskennt tala nema þú sért með
handahófskennt fjölda bita.
En við gerum ekki.
Fyrir fljóta, höfum við aðeins 32 bita.
>> Þannig að ef 32 bita er aðeins hægt permuted í leið - rétt eins og menn okkar á, stigi
hendur upp eða niður - í endanlegri fjölda leiðir, það er aðeins tímabundið fjölda
rauntalna þú getur táknað með þeim bita.
Og svo í tölvunni á endanum er að fara til verða að
byrja að skera horn.
Tölvan getur falið þessar upplýsingar frá okkur í smá tíma.
En ef við byrjum poking á tölurnar og leita lengra og lengra í að
slóð tölur í heilu tölu, þá erum við að byrja að sjá að það er
reyndar er nálgun á Hugmyndin um einn tíunda.
>> Og svo kemur í ljós, tragically, það er óendanlegur fjöldi af tölum
við getum ekki tákna nákvæmlega í tölva, amk með endanlegri
fjölda bita, endanlegt magn af vinnsluminni.
Nú því miður, þetta stundum hefur raunverulegur-veröld afleiðingar.
Ef fólk er ekki alveg að meta þetta eða svoleiðis taka sem sjálfsögðum hlut þá staðreynd
að tölvan þeirra mun bara gera það þeir segja það að gera og gera ekki
skilja þetta undirliggjandi framsetning upplýsingar -
sem satt, eru í sumum tungumálum falinn frá notandanum ólíkt í C -
sumir slæmur hlutur getur gerst.
>> Og hvað ég hélt að við myndum gera er að taka skref til baka.
Og þetta er um að átta mínútna vídeó.
Það frumsýnd fyrir nokkrum árum síðan, og það gefur innsýn í raun hvað getur farið
rangt þegar þú undir-þakka þetta konar upplýsingar í mjög allur-of
raunverulega heimi.
Ef við gætum lítil ljósin í nokkrar mínútur.
>> Ræðumaður 1: Við aftur nú í verkfræði
hamfarir á nútíma undur.
>> Tölvur -
við höfum komið öll að samþykkja oft pirrandi vandamál
að 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
umsóknir, minnstu vandamál má mikil í hörmung.
>> Hinn 4. júní 1996, vísindamenn reiðubúin til hefja unmanned Ariane 5 eldflaugar.
Það var vopnaður vísindalegar gervihnöttum hannað til að koma nákvæmlega hvernig
segulsvið jarðar áhrif með sól vindur.
The Rocket var byggt fyrir Evrópu Space Agency og lyfti burt frá sinni
leikni á ströndinni af Franska Gvæjana.
>> JACK GANSSLE: Á um 37 sekúndur inn Flugferðin tók þau fyrst
eitthvað var að fara úrskeiðis.
Nozzles voru segulnagli í leið þ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ð.
Öryggi svið liðsforingi, með gríðarlega hugaður, þrýsta á hnappinn,
blés upp eldflaugar áður en það gæti verða hættulegir almannaöryggis.
>> Ræðumaður 1: Þetta var jómfrúarferð að Ariane 5 og eyðingu hennar
fór fram vegna galla embed í hugbúnaði eldflaugar er.
>> JACK GANSSLE: Vandinn á Ariane var að það var a tala
sem krafist er 64 bita til að tjá.
Og þeir vildu að umbreyta til 16-bita tala.
Þeir gera ráð fyrir að fjöldi var aldrei að fara að vera mjög stór, sem flest
þessir tölustafir í 64-bita númer voru núll.
Þeir voru rangar.
>> Ræðumaður 1: The vanhæfni af einn hugbúnaður forrit til að samþykkja hvers konar
Fjöldi mynda af annar var á rót bilun.
Hugbúnaðarþróun orðinn mjög dýr hluti af nýrri tækni.
The Ariane 4 flugeldur hefði verið mjög vel, svo mikið af hugbúnaði
búið til fyrir það var einnig sem notuð eru í Ariane 5.
>> PHILIP Coyle: Grunn vandamálið var að Ariane 5 var hraðari,
hraða hraðar.
Og the hugbúnaður var ekki grein fyrir því.
>> Ræðumaður 1: The eyðileggingu eldflaugar var gríðarlegur fjárhagslega hörmung,
allt vegna þess að eina mínútu hugbúnaðar villa.
En þetta var ekki fyrsta gögn skipti viðskipti vandamál höfðu stríða nútíma
eldflaugar tækni.
>> JACK GANSSLE: Árið 1991, við upphaf í fyrsta Persaflóastríðinu, The Patriot
eldflaugum upplifað svipað konar á viðskiptum fjölda vandamál.
Þess vegna, 28 bandarískir hermenn voru drepnir og um 100 aðrir særðir
þegar Patriot, sem átti að vernda gegn komandi Scuds,
tókst að skjóta eldflaugum.
>> Ræðumaður 1: Þegar Írak innrás Kúveit og America stokkunum Desert Storm í
snemma 1991, Patriot eldflaugum rafhlöður voru sendar til að vernda Sádi-Arabíu
og Ísrael frá Írak Scud eldflaugum árás.
The Patriot er US miðlungs-svið yfirborð-til-loft kerfi framleidd með því að
The Raytheon fyrirtækið.
>> THEODORE POSTOL: The stærð af the Patriot interceptor sjálft er u.þ.b.
20-feta langur.
Og það vega um 2000 kíló.
Og það ber warhead af um -
Ég held að það er u.þ.b. 150 £.
Og Warhead sjálft er hár sprengiefni sem hefur
brot í kringum það.
The hlíf á warhead er hannað að bregðast við eins buckshot.
>> Ræðumaður 1: eldflaugar eru gerðar fjórum á umbúðum og eru flutt
með hálf kerru.
>> PHILIP Coyle: The Patriot gegn eldflaugum Kerfið fer aftur á
amk 20 ár núna.
Það var upphaflega hannað sem loft varnir eldflaugum til
skjóta niður óvini flugvélar.
Í fyrsta Persaflóastríðinu, þegar að stríð kom eftir, her vildi nota það
að skjóta niður Scuds, ekki flugvélum.
Í Írak Air Force var ekki svo mikið vandamál.
En herinn var áhyggjur Scuds.
Og svo þeir reyndu að uppfæra The Patriot.
>> Ræðumaður 1: stöðvun á óvini eldflaugum ferðast á Mach fimm var
fara að vera krefjandi nóg.
En þegar Patriot var hljóp í þjónustu, her var ekki kunnugt um að
Írak breytingar sem gerðar þeirra Scuds næstum ómögulegt að ná.
>> THEODORE POSTOL: Hvað gerðist er Scuds sem voru
koma í voru óstöðug.
Þeir voru wobbling.
Ástæðan fyrir þessu var Írakar, í Til þess að fá 600 km út af
300-kílómetri-svið eldflaugum, tók þyngd af þessum fremstu warhead.
Þeir gerði Warhead léttari.
Svo nú Patriot er að reyna að koma á Scud.
Og mest af þeim tíma, að yfirgnæfandi Meirihluti af the tími, myndi það bara
fljúga með Scud.
>> Ræðumaður 1: Þegar Patriot kerfi rekstraraðilar ljóst að Patriot misst
miða þess, detonated þeir Patriots Warhead til að forðast mögulegt
mannfall ef það var leyft að falla til jarðar.
>> THEODORE POSTOL: Það var það sem mest fólk sá sem stór fireballs á himni
og misskilið sem rekur af Scud warheads.
>> Ræðumaður 1: Þótt í nótt himinn Patriots virtist vera giftusamlega
eyðileggja Scuds á Dhahran þar gæti verið engin mistök Óður í
árangur.
Þar ratsjá kerfi Patriot er glataður utan um komandi Scud og aldrei
hóf vegna hugbúnaðar galli.
>> Það var Ísraelar sem fyrst uppgötvað að því lengur sem kerfið
var á, þeim mun meiri tíma misræmi varð vegna klukku
innbyggð í tölvunni kerfisins.
>> JACK GANSSLE: Um tveimur vikum áður en Harmleikur í Dhahran, Ísraelar
tilkynnt til Defense Department Fjármálakerfið var að tapa tíma.
Eftir um átta klukkustundir að keyra, þeir tekið eftir því að kerfið er
verða orðinn ónákvæmari.
The Defense Department brugðist við með segja öllum Patriot rafhlöður
að ekki láta kerfi á í langan tíma.
Þeir sögðu aldrei hvað fyrir löngu var.
Átta klukkustundir?
10 klukkustundir?
1000 klst?
Enginn vissi.
>> Ræðumaður 1: The Patriot rafhlöðu setti á kastalann í Dhahran
og gölluð innri klukka þess hefði verið á yfir 100 klukkustundir á nótt
25 feb.
>> JACK GANSSLE: Það elt tíma til að 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ð
gefið upp í tvöfaldur nákvæmlega, sem þýðir það er ekki hægt að gefa upp nákvæmlega í
allir nútíma stafræna tölvu.
Það er erfitt að trúa því, en nota þetta sem dæmi.
Skulum taka númer þriðjung.
Einn þriðji geta ekki 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 í aukastaf.
Það er einmitt sams konar vandamál sem gerðist í Patriot.
Því lengur sem kerfið hljóp, sem versta tíma villa varð.
>> Ræðumaður 1: Eftir 100 klst af rekstri, villa í tíma var aðeins
um þriðjungur úr sekúndu.
En hvað varðar að miða eldflaugum ferðast á Mach fimm, leiddi það í
A hermiskekkja yfir 600 metra.
Það væri banvæn villa fyrir hermenn á Dhahran.
>> THEODORE POSTOL: Hvað gerðist er Scud ráðast var greind með snemma
viðvörun gervihnöttum.
Og þeir vissu að Scud kæmi almennt átt þeirra.
Að þeir vissu ekki hvar það var að koma.
>> Ræðumaður 1: Það var nú allt að ratsjá hluti af Patriot kerfi
verja Dhahran að finna og halda utan um komandi óvini eldflaugum.
>> JACK GANSSLE: The ratsjá var mjög klár.
Það væri í raun að fylgjast með stöðu sem Scud og þá að spá þar sem það
myndi sennilega vera the næstur tími ratsjá sendi púls út.
Það var kallað svið hliðið.
>> THEODORE POSTOL: Þá þegar Patriot ákveður nægur tími er liðinn til að fara
aftur og athuga næsta stað fyrir þetta greind hlut, fer það 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 enginn hlutur, það var falskur uppgötvun, og
lækkar laginu.
>> Ræðumaður 1: The komandi Scud hvarf frá ratsjá skjánum, og
sekúndum síðar skellti inn í kastalann.
The Scud drap 28 og var það síðasta rekinn á fyrsta Persaflóastríðinu.
Tragically, the endurnýja hugbúnaður kom á Dhahran daginn eftir.
The hugbúnaður galli hafði verið fastur, loka einum kafla í vandræði
Saga Patriot eldflaugum.
>> Patriot er í raun skammstöfun fyrir áföngum Array Rekja
Stöðva yfir verðbólgumarkmiði bankans.
>> DAVID J Malan: Allt í lagi, þannig að ódrukkinn dæmi, til að vera viss.
Og sem betur fer, þessir lægra stigi bugs eru ekki eitthvað sem við munum
yfirleitt að þakka, vissulega ekki með nokkrum af okkar
Elstu af forritum.
Frekar, flest galla sem þú munt kynni að vera rökrétt í náttúrunni,
nokkur dæmi um setningarleg í náttúrunni þar sem númer bara virkar ekki rétt.
Og þú veist það nokkuð hratt.
>> En sérstaklega þegar við komum til lok misseris, það er að fara að
verða fleiri og fleiri möguleika til raunverulega hugsa hart um hönnun
af áætlunum þínum og undirliggjandi framsetning
það líka, af gögnunum.
Til dæmis, munum við kynna MySQL, sem er vinsæll gagnasafn vél
sem þú getur notað með vefsíður til geyma gögn á bak endir.
Og þú þarft að byrja að ákveða á í lok annarinnar ekki aðeins hvað
tegundir af gögnum með þessum línum til að nota en nákvæmlega hversu margir bitar til að nota,
hvort sem þú vilt geyma dagsetningar sem dagsetningar og tíma sem oft, og einnig
hlutir eins hversu stór þú vilt að einstakt auðkenni að vera fyrir, segjum við notendur
í gagnagrunninn.
>> Í staðreynd, ef einhver ykkar hafa fengið Facebook reikninga fyrir alveg sumir tími,
og þú veist hvernig á að fá aðgang Notandi kenni -
sem sýnir stundum upp í þínum Profile er URL nema þú hafir valið
gælunafn fyrir slóðina, eða ef þú hefur NOTAÐ Facebook Línurit API, sem
aðgengilegar API sem þú getur beðið Facebook til hrár gögn -
þú getur séð hvað tölustafir ID er.
Og fyrir nokkrum árum, Facebook meginatriðum þurfti að breyta frá því að nota
jafnvirði ints að nota lengi lengi því tímanum sem notendur koma
og fara og búa til fullt af reikningum og falsa reikninga, jafnvel þeir auðveldlega mjög
gátu að útblástur eitthvað eins 4 milljarða mögulegt gildi eins int.
>> Svo meira á þessum tegundum af málum niður veginn, eins og vel.
Allt í lagi, þannig að var að reka.
Það var imprecision.
A par af fljótur tilkynninga.
Svo köflum hefjast formlega þetta kemur Sunnudagur, mánudagur, þriðjudagur.
Þú munt heyra með tölvupósti síðar í þessari viku að kafla verkefni þitt.
Og þú munt einnig hér á þeim tímapunkti hversu að breyta kafla ef þinn
Áætlunin hefur nú breyst eða þinn þægindi stigi hefur nú breyst.
Á meðan P-setja einn og tölvusnápur einn eru vegna þessa Fimmtudagur með möguleika til
lengja þann tíma á að upplýsingar til föstudags
á dæmigerðan hátt.
>> Grein fyrir því að með í vanda setja upplýsingar eru leiðbeiningar um
hvernig á að nota CS50 tæki, gera, eins og sumir CS50 sérstök tól
eins stíl 50, sem hægt er að veita þér með athugasemdir dynamically hins
gæði stíl og einnig athuga 50, sem geta veitt þér með
dynamic viðbrögð sem til þín CODE í nákvæmni.
Fyrirgefðu að við erum enn að strauja út nokkrum Kinks með ávísun 50.
Nokkrar af bekkjarfélögum þínum sem gerði byrja um 04:00 á föstudagskvöldið þegar
The sérstakur fór upp hafa tekið eftir síðan nokkrar villur sem við erum að vinna
gegnum, og Apologies fyrir þá sem hefur upplifað óþarfa óánægju.
The kenna er minn.
En við munum fylgja eftir CS50 ræða þegar það er leyst.
>> Svo orð á skorar sjálfum.
Svo það verður í viku eða tvær áður en þú byrja að fá endurgjöf á setur vandamál
vegna þess að þú ert ekki enn kominn kennsla náungi.
Og jafnvel þá, munum við byrja að meta C vandamál setur áður en við
fara til baka og meta klóra svo að þú fáir meira viðeigandi
viðbrögð hraðar.
En almennt á kennsluáætlun, CS50 vandamál setur eru metin meðfram
Eftirfarandi fjögur ása -
umfang, nákvæmni, hönnun, og stíl.
>> Svigrúm er að fara til vera a tala venjulega á milli núll og fimm sem
fangar hversu mikið af stykki sem þú bitu burt.
Venjulega, þú vilja this til vera fimm.
Þú reyndir að minnsta kosti allt.
Og eftir það er margfeldisstuðull þáttur svo að gera aðeins hluti af
Heimadæmi er ekki bestu leiðina.
>> Á sama tíma, meira augljóst er mikilvægi misskilning -
bara er program rétt með virða við forskrift?
Þetta er vegið vísvitandi meira þungt en hinum tveimur ásum af
þáttur af þremur þar sem við viðurkennum sem venjulega þú ert að fara að eyða
mikið meiri tíma að elta niður sumir bugs, fá númerið þitt til að vinna, þá
eru indenting það og velja viðeigandi breytu nöfn og
eins og, sem er á hinum enda litrófs stíl.
>> Það er ekki að segja stíll er ekki mikilvægt, og við munum prédika það yfir
tími bæði í fyrirlestrum og í köflum.
Style vísar til fagurfræði af kóðann þinn.
Hefur þú valið vel-heitir breytur sem er stutt en nokkuð
lýsandi?
Er númerið þitt grafin sem þú hefur séð í Fyrirlestur og í samræmi
með stæl 50?
>> Loks er hönnun rétt þar í miðju.
Hönnun er erfiðara einn til að setja á fingur á vegna þess að það er miklu meira
huglæg.
En það er ef til vill mikilvægasta þrír ása hvað varðar uppeldisfræði
gildi með tímanum og að þetta mun vera Kennslan Fellow er tækifæri til
veita þér með eigindlegum endurgjöf.
Reyndar í CS50 þótt við höfum þessi uppskrift og skora, í lok
dagsins eru þetta mjög vísvitandi mjög lítil fötunum - Point gildi
milli núll og þremur og núll og fimm.
Við reynum ekki að draga mjög gróft línur milli setur vandamál eða milli
nemendur heldur einblína eins mikið og við getum á eigindlegum, longhand
viðbrögð, annaðhvort tegund eða munnleg frá einkum kennslu náungi þinn,
þú munt fá að vita nokkuð vel.
>> En almennt, þá eru það þyngd að ýmsir ásar mun hafa.
Á sama tíma, of er það þess virði að halda í huga að þú ættir ekki að gera ráð fyrir að
þrjú af fimm er 60% og því u.þ.b. galli.
Þrír er vísvitandi ætlað að vera konar miðjum veginum góða.
Ef þú ert að fá threes á að upphafi misseris, sem er
örugglega ætlað að vera góður staður til að byrja.
Ef þú ætlar að fá twos, Kaup, það er örugglega sumir vinna til að borga smá
meiri athygli, að nýta á köflum og Viðtalstímar.
>> Ef þú ætlar að fá fjórum fótum og fives, frábært.
En í raun, vonumst við til að sjá þróunarferil meðal nemenda - mjög
einstaklingsbundið hvern nemanda, en byrja önn hér í einhverskonar
tveir til þriggja svið en lýkur upp hér í 4-5 svið.
Það er það sem við erum í raun að leita að.
Og við hafa í huga að Delta sem þú sýna milli núll viku og viku
12 þegar ég er að gera einkunnum.
Það skiptir ekki máli fyrir okkur algerlega hvernig þú sanngjarn í upphafi ef þú
braut er örugglega upp og sterk.
>> Fræðilegum heiðarleika - svo látið mig setja á minn alvarlegri rödd fyrir réttlátur a augnablik.
Svo hefur þetta auðvitað greinarmun á senda fleiri nemendur en nokkur annar
í sögu við auglýsingu borð, tel ég.
Við höfum konar glataður telja á þetta benda á hversu oft þetta gerist.
Og það er ekki vegna þess að nemendur í 50 eru einhverjar fleiri óheiðarlegur en þeirra
bekkjarfélagar víðar.
En átta sig líka, að við erum mjög gott á uppgötvun þetta svoleiðis.
>> Og er það kostur að tölvunarfræði bekknum hefur í að við
getum og við bera alla nemendur Vandamálið setur par-vitur gegn hverjum
öðrum, ekki aðeins í ár en öll fyrri ár.
Við höfum getu, eins og nemendur í bekknum, Google og finna kóðann
á síðum eins github og Umræðuhópar.
Það eru algerlega lausnir er CS50 p-setur fljótandi í kringum það.
En ef þú getur fundið þá, við getum fundið þá.
Og allt þetta er mjög mikið sjálfvirk og auðvelt og sorglegt fyrir okkur að finna.
>> En ég vil leggja áherslu á, líka, að bóknámsbrautir er heiðarleika stefna er
mjög mikið ætlað að vera mjög mikið andstæða þess anda.
Reyndar, á þessu ári sem við höfum uppá nýtt hlutina í kennsluáætlun að vera svona, punktur
punktur punktur, með nánar í kennsluáætlun.
En overarching þema í námskeiðinu raunverulega er að vera sanngjarn.
Við viðurkennum að það er veruleg upphæð uppeldis
gildi í samstarfi, að einhverju leyti, með bekkjarfélögum, þar sem þú
tveir eða þú þrjú eða þú ert meira standa á hvítt borð
whiteboarding, svo að tala, hugmyndir þínar -
skrifa út sauðakóðanum í myndum, diagramming hvað ætti Mario að vera ef
þú varst að skrifa það fyrst í sauðakóðanum.
Hvað ætti gráðugur reiknirit -
hvernig ætti það að hegða sér á vandamál setur einn?
>> Og svo grein fyrir því að hegðun að við hvetjum er mjög
mikið meðfram þeim línum.
Og í kennsluáætlun, munt þú sjá a allt fullt af byssukúlum undir a
sanngjarnt flokkur og ekki sanngjarnt flokkur sem hjálpar okkur að hjálpa
þú sett huga þinn um hvar við draga þá línu.
Og almennt, ágætis þumalputtaregla er að ef þú ert í erfiðleikum með að leysa
sumir padda og vinur þinn eða bekkjarfélaga situr við hliðina á þér, er það
sanngjarnt fyrir þig að sýna honum eða henni númerið þitt og segja, hey, þú getur hjálpað
mig reikna út hvað er að gerast vitlaust hér?
>> Við gerum ekki venjulega faðma hliðar.
Það er ekki rétt svar fyrir þinn vinur eða bekkjarfélaga hér að segja, ó,
bara líta á minn og reikna það út frá því.
Það er tegund af óraunhæft.
En að hafa einhvern annan, annar heila, annað par af augum líta á
skjánum eða líta á kóðann þinn og segja, þú ert viss um að þú viljir
til að hafa lykkju hér?
Eða ertu viss um að þú viljir að semíkommu hér?
Eða ó, að villuboð þýðir þetta.
Þeir eru mjög eðlilegar og hvattir hegðun.
>> Málin sem ég var alluding fyrr sjóða niður þegar nemendur eru
seint á kvöldin að gera lélega dómgreind ákvarðanir og póst númer þeirra til
einhver annar eða bara að segja, hér er það í Dropbox eða
Googling seint á kvöldin.
Og svo ég myndi hvetja og biðja þig um, ef þú ert þá óhjákvæmilegt
stundir streitu, ert þú bumping upp gegn fresturinn, þarftu ekki seint
dag þar sem það er nú þegar Föstudagur á að lið, email höfuð námskeiðið 'eða
mig beint.
Segja, hlusta, ég er á mínum brjóta lið hér.
Skulum hafa samtal og reikna það út.
Gripið er til á vefnum eða einhver annar ekki sanngjarnt hegðun er aldrei
lausn, og of margir af þínum bekkjarfélagar eru ekki lengur hér á
háskólasvæðinu af því lélega dómgreind.
En það er mjög auðvelt að skirt þessi lína.
>> Og hér er smá mynd til að hressa þú upp frá Reddit þannig að nú
allt verður í lagi.
>> Svo a fljótur ágrip, þá, þar sem við var horfið.
Svo í síðustu viku, muna að við kynna aðstæður, ekki í grunni
en í C þetta sinn.
Og það var einhver nýr setningafræði en raun engar nýjar hugmyndir í sjálfu sér.
Við höfðum Boolean tjáningu sem við gátum eða ásamt með tveimur lóðrétt
barir eða og ásamt tveimur &-merkið og sagði að bæði vinstri
og rétt verður að vera satt fyrir þetta að framkvæma.
Þá höfðum við rofa, sem við skoðuðum á stutta stund, en ég leggja er mjög
bara öðruvísi setningafræði til að ná því sams konar markmið ef þú veist í
fram hvaða tilvik þín eru að fara að vera.
>> Við leit á lykkjur.
A for lykkja er kannski algengasta, eða að minnsta kosti eitt sem fólk
yfirleitt ná til dragast.
Jafnvel þó að það lítur svolítið dulinn, þú munt sjá marga, mörg dæmi um þetta
áður en langur, sem þú hefur þegar seint í síðustu viku.
Þó lykkjur getur sömuleiðis ná sama.
En ef þú vilt gera allir incrementation eða uppfæra
Gildi breytu, þú þarft að gera það meira handvirkt en
fyrir lykkja gerir áður.
Og þá er það ekki-en lykkja, sem gerir okkur kleift að gera eitthvað í
amk einu sinni á meðan eitthvað annað er satt.
Og þetta er sérstaklega gott fyrir forrit eða fyrir leiki þar sem þú vilt
að hvetja notandann til eitthvað að minnsta kosti einu sinni.
Og þá ef hann eða hún er ekki að vinna, þú might vilja til að gera það
aftur og aftur.
>> Með breytum, á meðan, við höfðum línur af kóða eins og þetta, sem gæti
vera tvær línur.
Þú gætir lýsa int heitir gegn, semíkommu.
Eða þú getur bara lýsa og skilgreina hana, svo að segja.
Gefa það a gildi á sama tíma.
>> Og svo loks, talaði við um aðgerðir.
Og þetta var ágætur dæmi í að því leyti að það sýnir
tvær tegundir af störfum.
Einn er GetString (), sem, aftur, fær a band frá notandanum.
En GetString () er eins konar áhugavert, svo miklu leyti sem við höfum notað það,
vegna þess að við höfum alltaf notað það með eitthvað á the vinstri-hönd hlið af óákveðinn greinir í ensku
jafn skilti.
Það er að segja að GetString () skilar gildi.
Það skilar auðvitað streng.
Og þá á the vinstri-hönd hlið, við erum einfaldlega sparnaður að streng inni í
breytu nefndi.
>> Þetta er öðruvísi, í vissum skilningi, frá printf vegna printf, amk í okkar
notkun hér, ekki aftur neitt.
Sem innskot, er það aftur eitthvað.
Við bara alveg sama hvað það er.
En það er það sem er kallað aukaverkun.
Og hvað er að aukaverkun í hverjum Ef við höfum séð hingað til?
Hvað þýðir printf gera?
Það prentar eitthvað á skjáinn, birtir texta eða tölur eða eitthvað
á skjánum.
Og það er bara talin aukaverkun því það er í raun ekki fötlun
það aftur til mín.
Það er ekki svar innan þess svartur kassi sem ég get þá
ná í og ​​grípa.
Það er bara að gera það á eigin, þess mikið eins Colton var tengt inn þetta
svartur kassi í síðustu viku, og hann einhvern veginn dularfullur var að teikna á töfluna
án mín í raun þátt.
Það væri aukaverkun.
En ef ég hefði reyndar að ná aftur í hér og segja, ó, hér er strengurinn
frá notanda, sem myndi vera skilagildi.
>> Og svona langt að við höfum aðeins notað virka sem aðrir hafa skrifað.
En við getum í raun gert þetta konar hlutum sjálf.
Þannig að ég ætla að fara inn í CS50 tæki aftur.
Leyfðu mér að loka the flipi sem við hafði opna fyrir augnabliki.
Og láta mig fara á undan og búa til nýja skrá.
Og ég ætla að fara á undan og kalla þetta einn positive.c.
Svo ég vil gera eitthvað með jákvæðar tölur hér.
Þannig að ég ætla að fara á undan og gera int -
Því miður -
# Include.
Við skulum ekki gera það sama mistök eins og áður.
Int helstu (tóm), opin hrokkið borsveif, lokað hrokkið Brace.
>> Og nú vil ég að gera eftirfarandi.
Ég vil skrifa forrit sem krefst þess að notandinn gefur
mig jákvæða heiltölu.
Svo það er engin GetPositiveInt virka í CS50 bókasafn.
Það er bara GetInt ().
En það er allt í lagi vegna þess að ég hef býr sem ég get leggja
lítið meira þvingun á þessi gildi.
Ég gæti gert eitthvað eins og this.
>> Svo int n -
og ef þú ert að skrifa eftir, bara átta Ég ætla að fara til baka og
breyta einhverjum hlutum í augnablikinu -
svo jafnt int n GetInt ().
Og það er að fara að setja int inni n.
Og láta mig vera meira lýsandi.
Leyfðu mér að segja eitthvað eins og ég krefjast þess að þú gefur mér jákvæð heiltala.
>> Allt í lagi.
Svo bara smá leiðbeiningar.
Og nú hvað get ég gert?
Jæja, ég veit nú þegar frá einföldum minn skilyrði eða útibú, bara eins og ég
hafði í grunni, gæti ég sagt eitthvað eins og ef n er minna en eða jafnt og
núll, þá vil ég gera eitthvað eins og, sem er ekki jákvæð.
Og þá gæti ég gert -
OK, en ég vil endilega fá að int.
Svo ég gæti farið upp hér og ég gat góður af afrita þetta og undirlið þetta.
Og þá, OK.
Þannig að ef n er minna en eða jöfn núlli að gera þetta.
>> Nú, hvað ef notandinn ekki vinna?
Jæja, þá ætla ég að láni þetta hér.
Og þá fer ég hér og hér og hér.
Svo er þetta greinilega ekki lausnin, ekki satt?
Vegna þess að það er enginn endir í sjónmáli.
Ef ég vil krefjast þess að notandi gefur mér jákvæð heiltala, get ég
reyndar fá int.
Ég get þá stöðva fyrir þessi int.
En þá vil ég athuga það aftur og athuga það aftur og athuga það aftur.
Svo augljóslega, hvað er betra reisa að vera með hér?
Allt í lagi, svo einhvers konar lykkju.
>> Þannig að ég ætla að losna tæplega þetta allt.
Og ég vil fá þetta int minnsta kosti einu sinni.
Þannig að ég ætla að segja að gera -
og ég ætla að koma aftur til en á aðeins augnablik -
nú, að gera hvað?
Ég ætla að gera int n fær GetInt ().
OK.
Svo er það mjög gott.
Og nú hvernig oft gera Ég vil gera þetta?
>> Leyfðu mér að setja printf inni í lykkju svo ég geti krafist aftur og aftur,
ef þörf krefur.
Og hvað ég vil þetta en skilyrði til að gera?
Ég vil halda þessu en hvað er málið?
Já.
N er minna en eða jafn og núll.
Svo þegar, höfum við verulega hreinsa þennan kóða upp.
Við höfum fengið að láni mjög einfalt reisa - gera-en lykkja.
Ég hef stolið bara mikilvægt línur af kóða sem ég byrjaði að afrita og
líma, sem var ekki skynsamlegt.
Og svo núna er ég að fara til raunverulega líma það hér og bara gera það einu sinni.
>> Og nú hvað ég vil gera í mjög lok þessa áætlun?
Ég verð bara að segja eitthvað einfalt eins, takk fyrir - og
Ég geri% i fyrir int -
sviga n, komma, og þá stinga í n, semíkommu.
>> Allt í lagi.
Svo skulum sjá hvað gerist núna þegar ég keyra þetta forrit.
Ég ætla að fara á undan og gera jákvætt.
Fjandinn.
Nokkrar villur.
Svo láta mig fletta aftur upp til fyrsta.
Ekki vinna með þeim aftur.
Vinna með þeim úr efstu niður svo þeir Cascade og aðeins
eitt rangt.
Óbeina yfirlýsingu um virka GetInt ().
Já.
Svo það var ekki nóg.
Ég gerði eins konar sömu mistök en svolítið öðruvísi að þessu sinni.
Ég þarf að ekki aðeins innihalda stdio.h en einnig cs50.h, sem felur í sér
svokölluð yfirlýsingar um að fá int, sem kenna á þvottavélinni, eða kennir
C hvað GetInt () er.
>> Svo láta mig vistað póstinn.
Ég ætla að hunsa aðrar villur vegna þess að ég ætla að vona að þær séu
einhvern veginn tengjast villa Ég fastur þegar.
Svo láta mig fara á undan og laun með gera jákvætt, Enter.
Fjandinn.
Þrjár villur, enn.
Leyfðu mér að fletta upp til fyrsta.
Ónotaðar breyta n.
Við höfum ekki séð þetta áður.
Og þetta líka, er svolítið dulinn.
Þetta er the framleiðsla af the þýðanda.
Og hvað sem hápunktur lína þar - positive.c :9:13 -
er að segja, það er að segja á línu níu positive.c, á 13. staf,
13. dálki, gerði þér þetta mistök.
>> Og einkum, er það að segja mig ónotaður breyta n.
Svo skulum sjá -
lína níu.
Ég er að nota N í þeim skilningi að Ég ætla að gefa það a gildi.
En hvað þýðandinn er ekki eins og er að ég er ekki að því er virðist að nota það.
En bíddu í eina mínútu, ég er með það.
Í samræmi 11, ég er að nota það hér.
En ef ég skruna niður frekar á positive.c :11 -
svo á línu 11, eðli 12, þýðanda er að segja mér, notkun
undeclared Auðkenni n.
>> Svo undeclared þýðir að ég hef ekki tilgreint það sem
breytu með gögn tegund.
En bíddu í eina mínútu.
Ég gerði einmitt það í línu níu.
Svo einhver er virkilega ruglaður hér.
Það er annað hvort ég eða þýðanda vegna í samræmi níu, aftur, ég lýsa yfir
int n, og ég er að framselja það skilagildi GetInt ().
Þá er ég að nota þá breytu n í takt 11 og athuga hvort gildi þess er minni
en eða jafnt og núll.
En þetta er greinilega slæmt og brotinn hvers vegna?
Segja það aftur?
>> Æ, ég verð að lýsa N áður inn í lykkju.
En hvers vegna?
Ég meina, lagt við bara svolítið síðan að það er allt í lagi að lýsa breytum
allt á einni línu og þá úthluta þeim sum gildi.
A Global breyta - við skulum koma aftur til að hugmynd í aðeins augnablik.
Hvers vegna viltu að ég að setja það utan lykkju?
Það er.
Einmitt.
>> Svo, að vísu, nokkuð counterintuitive, Leyfðu mér að draga.
Þegar þú lýsa n inni af blokk þarna -
sérstaklega innan þá hrokkið axlabönd -
að breyta n hefur hvað er kallað Umfang -
óskyld sindur kerfi okkar í námskeið - en hefur svigrúm sem er
takmörkuð við þá hrokkið axlabönd.
Með öðrum orðum, yfirleitt ef þú lýsa breytu inni a setja af
hrokkið axlabönd, að breyta til aðeins inni af þeim hrokkið axlabönd.
Svo eftir að rökfræði einn, jafnvel þótt Ég hef lýst N í línu níu, það
raun hverfur úr umfangi, hverfur úr minni, svo að segja,
Þegar ég högg línu 11.
Vegna lína 11, því miður er utan þessara hrokkið axlabönd.
>> Svo ég því miður ekki hægt að laga þetta með því að fara aftur að því sem ég gerði það áður.
Þú gætir á fyrst að gera þetta.
En hvað ert þú nú ekki gera hagsveiflu?
Þú ert augljóslega ekki að fá The int hagsveiflu.
Svo við getum yfirgefa GetInt (), og við ætti yfirgefa GetInt () inni
lykkja því það er það sem við viljum pester notanda fyrir aftur og aftur.
En það er nægja til að fara allt að línu, segja, sex.
Int n, semíkommu.
Ekki gefa það a gildi enn vegna þess þú þarft ekki að strax.
>> En nú niður hér, tilkynning - þetta væri mjög auðvelt mistök.
Ég vil ekki að skuggi fyrri minn yfirlýsing um n.
Ég vil nota n að raun er til staðar.
Og svo nú í línu 10, Ég tengt n gildi.
En í takt sex, lýsa ég n.
Og svo get ég eða get ég ekki nota það í línu 12 núna?
Ég get því milli sem hrokkið axlabönd er n lýst núna?
Sá upp hér á línu fimm.
Við einn hér á 14. línu.
Þannig að ef ég súmma nú út, vista þessa skrá, fara aftur inn og hlaupa gera jákvætt, það
saman að þessu sinni.
Svo er það nú þegar framfarir.
Rista. . / Jákvætt, Enter.
>> Ég krefst að þú gefa mér jákvæð heiltala.
Neikvætt 1.
Neikvætt 2.
Neikvætt 3.
Núll.
Einn.
Og takk fyrir einn er hvað er nú prentuð.
>> Leyfðu mér að reyna eitthvað annað, út af forvitni.
Ég hef verið sagt að inntak heiltala.
En hvað ef ég tegund í staðinn í lamb?
Svo þú sérð nú öðruvísi hvetja -
reyna aftur.
En hvergi í númerið mitt gerði ég skrifa retry.
Svo þar, væntanlega er þetta reyna aftur hvetja að koma frá, myndir þú segja?
Já, frá GetInt () sjálft.
Svo eitt af því sem starfsfólk CS50 nær fyrir þig, að minnsta kosti í þessir fyrstu
vikur, er að við höfum skrifað talsverða af villa stöðva til að tryggja að ef
þú kallar GetInt (), verður þú að minnsta kosti komast aftur við int frá notandanum.
Þú munt ekki fá a band.
Þú munt ekki fá bleikju.
Þú munt ekki fá eitthvað annars að öllu leyti.
Þú munt fá int.
>> Nú, gæti það ekki verið jákvætt.
Það gæti ekki verið neikvæð.
Við gerum engar ábyrgðir í kringum það.
En við munum pester notandi til að reyna aftur, reyna, reyna fyrr en hann eða hún raunverulega
samstarf.
Sama hátt, ef ég 1,23, það er ekki int.
En ef ég tegund í, segjum, 50, sem gefur mér gildi sem ég vildi.
>> Allt í lagi.
Svo ekki slæmt.
Einhverjar spurningar um hvað við höfum bara gert?
Lykillinn takeaway vera, að vera skýr, ekki svo mikið að lykkja, sem við höfum séð
áður jafnvel þó að við höfum í raun ekki notað það, en málið umfangi, þar
breytur er einungis hægt að aðeins hægt að nota á næstunni tiltekins gildissvið.
>> Allt í lagi, láttu mig taka tillögu þú gerðir áðan, að um
Global breyta.
Sem innskot, snýr það út að annar lausn á þessu vandamáli, en
yfirleitt rangt lausn eða illa hannað lausn, er að
lýsa breytu eins hvað er kallað Global breyta.
Nú er ég eins konar brot skilgreiningu mína af umfangi því það eru
engin hrokkið axlabönd efst og mjög neðst á skránni.
En vísbendingu um að er að nú í takt fjórum,
n er alþjóðlegt breytu.
Og eins og nafnið gefur til kynna, það er bara alls staðar aðgengilegt.
>> Scratch hefur í raun þessir.
Ef þú notaðir breytu, þú might muna þú þurftir að velja ef það er fyrir
þennan Sprite eða alla sprites.
Jæja, allir sprites er bara skýrari leið til að segja alþjóðlegt.
Já?
Ah, mjög góð spurning.
>> Svo muna að í fyrstu útgáfu á númerið mitt, þegar ég rangt
lýst og skilgreint n í línu níu -
Ég lýsti því sem breytu og ég gaf það gildi með
framsal rekstraraðila -
þetta gaf mér tvo villur.
One, þá staðreynd að n var ekki notað, og tveir, sem í línu 11
það var bara ekki lýst.
Svo fyrsta sem ég gerði ekki heimilisfang á þeim tíma.
Það er ekki stranglega villa að lýsa breytu en ekki nota það.
En eitt af því sem við höfum gert í The CS50 tæki, vísvitandi,
pedagogically er við höfum sveif upp væntingar þýðanda að gera
viss um að þú ert að gera hlutina ekki bara rétt en í raun rétt.
>> Vegna þess að ef þú ert að lýsa yfir breytu eins n og aldrei nota það, eða nota það
rétt, hvað þá er það að gera þarna?
Það þjónar sannarlega ekki tilgangi.
Og það er mjög auðvelt með tímanum, ef þú stilla ekki eiga tölvuna í
Þannig, að bara hafa númer sem hefur litlu leifar hér, leifar þar.
Og þá mánuðum seinna þú lítur til baka og þú ert eins og, af hverju er þessi lína af
númer þar?
Og ef það er engin góð ástæða, það ekki gagnast þér eða samstarfsfólk þitt
niður veginn til að hrasa yfir það þá.
>> Sem innskot, þar er að koma frá?
Jæja, muna að í hvert skipti sem við safna saman program, allt þetta efni er
verið að prenta.
Þannig að við munum koma aftur til þetta.
En aftur, gera er a gagnsemi þessi sjálfvirkan the aðferð af gerð af
keyra raunverulegan þýðanda kallað clang.
Þessi hlutur, munum við loksins sjá, hefur að gera með kembiforrit með sérstöku
forrit sem heitir aflúsara.
Þetta hefur að gera með hagræðingu í númer - meira um það í framtíðinni.
Std = c99 -
þetta þýðir bara að nota 1999 útgáfuna af C. C hefur verið í kringum jafnvel lengur en
að, en þeir gerðu sumir ágætur breytingar 10 plús ár síðan.
>> Og hér er viðeigandi sjálfur.
Við erum að segja að eitthvað sem áður hefði verið viðvörun
villu veg nemandanum frá söfnun.
Og veggur þýðir að gera það fyrir allt fullt af hlutum, ekki
bara tengjast breytum.
Og þá láta mig fletta að í lok þessa línu.
Og þetta líka, munum við að lokum koma aftur til.
Þetta er augljóslega nafn skráin ég saman.
Þetta minnir á nafnið á skránni Ég outputting eins og nafnið
af runnable áætlun mína.
Þetta-lcs50 þýðir bara að nota CS50 bókasafn, og allir núll og sjálfur að
starfsfólk skrifaði og saman fyrr á þessu ári, samþætta
þá inn í áætlun mína.
>> Og einhver veit hvað-LM er?
Það er stærðfræði bókasafn, sem er bara þarna jafnvel ef þú ert
ekki gera neina stærðfræði.
Það er bara sjálfkrafa veitt okkur með að gera.
>> Jæja, láttu mig gera eitt annað dæmi hér með að opna nýja skrá.
Og láta mig spara þetta einn eins string.c.
Það kemur í ljós að þegar við tölum um gögn gerðir í dag, það er jafnvel meira
fara á undir hetta en við höfum séð hingað til.
Svo láta mig gera fljótlega fljótur program.
Hafa stdio.h.
Og ég spara það.
Og þú veist, láttu mig ekki gera sömu mistök aftur og aftur.
Hafa cs50.h.
Og láta mig fara á undan nú og gera int helstu (tóm).
>> Og nú vil ég bara að gera áætlun sem gerir þetta - lýsa streng
kallað s og fá band frá notandanum.
Og láta mig gera a lítill leiðbeiningar hér -
vinsamlegast gefa mér band - svo notandinn veit hvað á að gera.
Og svo hérna fyrir neðan þetta, Ég vil gera eftirfarandi -
fyrir int i fær núll.
Aftur, tölvunarfræðingar yfirleitt byrja að telja á núlli, en við gátum
gera það einn ef við vildum virkilega.
Nú ætla ég að gera ég er minna en band lengd s.
Svo strlen -
S-T-R-L-E-N -
aftur er það nákvæm vegna þess að það er auðveldara að slá, jafnvel þó að það er
lítið dulinn.
>> Það er hlutverk sem við höfum ekki notað áður en bókstaflega þýðir að -
aftur til mín númer sem sýnir lengd strengsins
að notandinn slegið inn.
Ef þeir slegið í halló, það myndi skila fimm vegna þess að það er fimm
bréf í halló.
Þá, á hverjum endurtekning á Þessi lykkja, ég plús plús.
Svo aftur, a staðall smíða jafnvel þótt þú ert ekki alveg of þægilegt eða
þekkja það enn.
>> En nú á hverri ítrun þessarar lykkju, taka eftir hvað ég ætla að gera.
Ég vil fara á undan og prenta út einn staf -
svo% C sviga n á nýja línu.
Og þá, þú veist hvað ég vil gera?
Hvað er orðið að notandinn slær í, eins og halló, ég vil að prenta
H-E-L-L-O, einn staf í hverja línu.
Með öðrum orðum, ég vil fá á einstakir bókstafir í streng,
þar allt þar til nú strengur hefur bara verið röð af stöfum.
>> Og það kemur í ljós ég get gert s, krappi, i, loka krappi, loka
sviga, semíkommu.
Og ég hef að gera eitt í viðbót.
Það er í skrá sem kallast string.h að strlen er lýst.
Svo ef ég vil nota þessi virka, Ég þarf að segja þýðanda,
búist við að nota það.
Nú láta mig fara á undan og gera the program sem heitir band.
Punktur, rista, band.
>> Vinsamlegast gefið mér streng.
Ég fer á undan og slá það.
Halló, í öllum húfur, Enter.
Og nú eftir ég hef prentað þetta einn staf á eftir öðru.
Svo er nýja smáatriðum hér að a band, í lok dagsins, er hægt að
nálgast með því að einstaklingur sinni stafir með því að kynna veldi
krappi tákn.
Og það er vegna þess að a band undir hetta er örugglega röð
stafir.
En hvað er sniðugt um þá er í RAM tölvunnar -
Mac, PC, hvað sem það er - þeir eru bókstaflega aftur til baka til baka -
H-E-L-L-O -
á einstaklingur, aðliggjandi bæti í minni.
>> Svo ef þú vilt fá á áttunda svo bæti, sem í þessu lykkju væri
krappi núll, krappi einn, krappi tveir, krappi þrír, krappi fjögurra -
sem er núll verðtryggð fram fimm -
sem mun prenta út H-E-L-L-O á eigin línu.
>> Nú, sem beitu, láttu mig sýna þér tegund af hlutur þú munt að lokum verða
fær um að skilja, að minnsta kosti með nokkrum loka útlit.
Fyrir einn, það sem við með í dag ' dæmi, ef þú vilt, er í raun
einn af fyrstu Jailbreaks fyrir iPhone.
Jailbreaking þýðir sprunga símann svo þú getur raunverulega notað hana á
mismunandi flutningafyrirtæki eða setja eigin hugbúnaður.
Og þú munt taka þetta lítur alveg dulinn, líklega.
En líta á þetta.
The iPhone var greinilega klikkaður með á fyrir lykkja, sem ef ástand, sem annars
ástand, fullt af störfum við höfum ekki séð.
>> Og aftur, þú vilja ekki fyrstu sýn líklega
skilja hvernig þetta virkar.
En allt sem við tökum svoleiðis sjálfsögðum hlut í nútíma lífi okkar
reyndar tilhneigingu til að draga jafnvel að sumir þessara grundvallaratriði sem við höfum verið
horfa á.
Leyfðu mér að fara á undan og opna einn önnur forrit, holloway.c.
Svo þetta, of, er eitthvað sem þú ætti í raun ekki að vita.
Jafnvel ekkert of the staff eða ég gat sennilega reikna þetta út með því að horfa á
það vegna þess að þetta var númer einhvers sem var lögð til hvað er
sögulega þekktur sem obfuscated C keppni, þar sem þú skrifa forrit
sem safnar og keyrir en er svo fjandinn dulinn enginn maður getur skilið hvað
það er að fara að gera þar þeir hlaupa í raun það.
>> Svo örugglega, ef þú lítur á þetta kóða, sjá ég skipta.
Ég sé helsta.
Ég sé þessar hornklofum felur einhvers konar fylki.
Er einhver sem vill giska á hvaða þetta forrit í raun
er ef ég keyrt Holloway?
Já.
OK.
Vel gert.
Svo að aðeins starfsfólk og ég get ekki fundið hvað þessir hlutir gera.
>> Og nú loks, láttu mig fara á undan og opna eitt annað forrit.
This einn -
aftur, munum við gera kóðann á netinu - þetta er bara
konar nokkuð til að líta á.
Allt sem þeir gerðu er ýtt á rúm bar töluvert.
En þetta er alvöru kóða.
Svo ef þú heldur það er nokkuð, ef við í raun að keyra þetta á að hvetja,
loksins að þú munt sjá hvernig við gæti gert hlutina svona.
>> Þannig að við munum láta þig á að huga og sjá þig á miðvikudag.
>> [Tónlist spila]
>> Ræðumaður 2: Í næsta CS50, að TFS leiksvið a uppreisn.
>> Ræðumaður 3: Það er hann.
Náðu honum!
>> [Tónlist spila]