>> Ræðumaður 1: Allt í lagi.
Velkominn aftur.
Þetta er viku tvö af CS50, og við höfum hingað til verið að nota virka en
mestu tekið sem sjálfsögðum hlut.
Við höfum notað printf sem hefur aukaverkun af prentun
hluti á skjánum.
Við höfum notað fá-int, fá fljóta.
>> En hvað ef þú vilt í raun og veru að búa eigin starfsemi, eins og sumir af
þú gætir hafa þegar byrjað að gert fyrir Set Vandamál einn, þó
ekki nauðsynlegt?
Jæja, við skulum fara á undan og endurskoðun sem vandamál bara að biðja notandann um
nafn þeirra og prentun eitthvað á skjár, en reyna að þáttur út sumir
af commonality sem við höfum séð í númerið okkar svona langt.
Svo eftir að ég meina eftirfarandi.
>> Ég ætla að fara á undan og búa a nýr program, bara hringja
það hello.c eins og venjulega.
Ég ætla að fara á undan og gefa mér eru staðlaðar io.h efst.
Ég ætla einnig að gefa mér preemptively að CS50 bókasafn svo að
Ég fæ ekki öskraði á við þýðanda.
Og nú ætla ég að fara á undan og lýsa int, MAIN, ógilt.
>> Og svo hér, þetta er þar sem ég vil að byrja að útvista virkni til
einhver önnur virkni sem ég sjálfur er að fara að skrifa en það þýðir ekki
nú til.
Til dæmis, gera ráð fyrir að ég vildi skrifa fall sem leyfir mér að
prenta út halló, kommu, og þá nefna nokkrar notanda.
Frekar en að halda áfram að gera printf halló,% s, myndi það ekki vera gott ef
það voru bara fall sem kallast ekki printf en prenta nafn?
>> Svo í öðrum orðum, ég vil vera fær um að skrifa forrit sem gerir lítið
eitthvað eins og this.
Fyrst ætla ég að segja printf þinn nafn, þannig vekur notandi til
gefa mér nafn hans eða hennar, og þá er ég fara að nota kunnuglega s band við
lýsa streng.
Gefðu mér breytu af tegundinni String, kalla það s, og geyma í því að
leiða af starf fá band.
En nú í vikum áður, hefði ég nokkuð tediously gert halló,% s / n.
>> Og í öðrum orðum, við höfum séð þetta dæmi fullt af sinnum, og það er
léttvæg dæmi vegna þess að það er bara ein lína af kóða svo það er í raun ekki
svona að halda að skrifa aftur.
En geri ráð fyrir að þessi lína af kóða reyndar voru að verða byrði, og
það er ekki ein lína af kóða en það er 10 línur af kóða nokkrum vikum liðnum,
og þú ert bara að fá þreyttur að afrita og líma eða
retyping að sama kóða.
Væri ekki gott í stað þess að gera printf halló,% s og svo framvegis,
myndi það ekki vera gott ef það voru bara fall kallast prenta nafn sem
tekur rifrildi -
í öðrum orðum, það tekur inntak -
og þá semíkommu.
Svo að virka, myndi það ekki gott ef það hafi verið?
Þá myndi ég ekki hafa áhyggjur hvað printf er, hvað% s og öllum
þessar margbreytileika sem eru ekki allt sem áhugavert.
Þau eru nytsamleg.
>> Svo prenta nafn, því miður, var ekki fundið um 40 plús ár síðan.
Enginn hélt að skrifa það.
En það er fegurð að hafa forritunarmál, rétt eins og í
Scratch þú getur skilgreint sérsniðna blokkir, svo í C og flest allir tungumál, getur þú
skilgreina eigin virkni þína, getur að skilgreina eigin starfsemi.
Svo jafnvel þótt við fáum helstu með sjálfkrafa fyrir frjáls, getum við lýsa
eigin starfsemi okkar.
>> Þannig að ég ætla að gera nokkurt svigrúm upp hér upp efst, og ég ætla að lýsa mínum
eigin fall sem er að fara að líta svolítið skrítið í fyrstu en við munum koma
aftur þetta fyrir löngu.
Ég ætla að segja tóm, þannig sem gefur til kynna þessa aðgerð er
eitthvað, hefur aukaverkun, en það ekki aftur eitthvað til mín í
sama hátt og fá int eða fá band sjálft gerir.
Og ég ætla að gefa þessa aðgerð er Nafn nafni prenta, og ég ætla að
tilgreina að þessi strákur er að fara að taka a band, og ég ætla að kalla það
String nafn.
Ég gæti kalla það eitthvað sem ég vil, en ég vil kóða mína til að vera sjálf-heimildir.
Með öðrum orðum, ef einn af þú varst að opna þessa skrá og lesa það, gastu
konar álykta frá nafninu sem inntak hvaða hlutverki það er ætlast til að spila.
>> Og nú fyrir neðan að, ég ætla að opna hrokkið Brace og lokuð hrokkið borsveif,
og svo eftir ég hef fylgt sömu mynstur á línum fjórum í sjö og
Ég hef verið eftir fyrir góðan viku auk nú á milli, segja, línur níu og
14 sem skrifa aðal.
Með öðrum orðum, prenta nafn er annar virka.
Nú að þýðandinn er ekki að fara að vita að kalla þetta í sjálfkrafa
vegna þess að ég bókstaflega bara fundið það, en það vilja vita samt að hringja helstu
sjálfkrafa og þá að sjálfsögðu í lína 13, er ég kalla eigin virka minn.
Og vegna þess að ég hef lýst því yfir að virka upp á línu fjögur áður Main,
þetta er að fara að kenna þýðanda hvað vitna, Unquote, "prenta nafn"
þýðir og hvað það ætti að gera.
Þannig að ég er svona að gefa það nýja sérsniðna blokk í samhengi við, segja, grunni.
>> Svo hér, get ég sett það mjög algengt eða endurteknar mynstur kóða ég halda
skrifa í bekknum, printf % S halló,% s / n ", -
hvað ég vil setja hér?
S?
Þannig að ég vil að setja nafn í þessu samhengi.
Svo taka a hluti af a togstreita hér.
Því ég er að lýsa yfir eigin virka minn og ég hef nokkuð geðþótta kallað
það prentað nafn og vegna þess að ég hef tilgreint í sviga að þetta
virka tekur eitt viðfang, gerð sem er band - svo er það orð
eða setningu eða eitthvað svoleiðis - og Ég hringi að rök nafn, sem
merkir aðeins breytu sem er í umfang, svo að segja, er nafn.
>> S er aðeins á milli hvaða tveggja hrokkið axlabönd, auðvitað?
Jæja í raun, rétt eins og línu 10 með 14, svo bara eins og á mánudaginn get ekki notað
S, en það sem ég get gert er að fara S í nafni prenta.
Prenta nafn bara gerist svo að gefa henni samnefni, samheiti, gælunafni
kalla það nafn, og nú nota það í þessari línu.
Svo nú láta mig spara þetta, súmma út.
>> Leyfðu mér að fara á undan og gera halló.
Lítur vel út.
Fékk ekki spýta út einhverjar villur. . / Halló Enter.
Hvað er nafn mitt?
David.
Og halló Davíð.
Svo ekki allt sem spennandi, en hugsa bara núna.
Þú hefur nú að sama efnið eins og við gerðum í grunni til
gera eigin störf okkar.
>> En það er a hluti af a Gotcha.
Segjum sem svo að ég hafði ekki raunverulega hugsun þetta í gegnum og ég reyndar án
virkilega að hugsa um það skrifaði að virka hérna.
Finnst fullkomlega sanngjarnt.
In grunni það er ekkert hugmynd af stað í skriftum þínum.
Þú gætir sett einn upp hér, upp einn hér, einn upp hér, og það gæti byrjað
að líta smá sóðalegur ef þú ert ekki leggja það út snyrtilegur, en það er ekki
máli hvar líkamlega forskriftir voru á skjánum.
Því miður í C ​​- og þetta er ólíkt tungumál eins og Java og Python
og aðrir sem þú might vera kunnuglegur með - miður í C, til þess er
máli vegna þess að horfa á það sem er að fara að gerast núna.
>> Sjálfgefið fall sem er að gerast til að framkvæma er, að sjálfsögðu, helstu.
Main er að fara að hringja prenta nafn á lína átta, en því miður, the
þýðandinn mun ekki einu sinni vita að prenta nafn til þangað til það fær á línu 11,
sem er því miður að fara að vera of seint.
Svo skulum gera það halló.
Og nú fjandinn, tvær villur mynda.
Svo nú langar mig að fletta upp í mjög fyrst, eins og við ættum alltaf að gera, og
eftir því að það er æpa á mig, "Óbeina yfirlýsingu um virka
prenta nafn. "
>> Þannig að við höfum séð þessi skilaboð áður, óbeina yfirlýsingu um virka.
Þegar höfum við séð svona villu?
Þegar ég vissi ekki annars bókasafn.
Ef ég gleymdi cs50.h og ég vildi fá öskraði á til að fá strenginn eða fá int.
En í þessu tilfelli, þessi aðgerð prenta nafn er ekki á bókasafni, ekki satt?
Það er bókstaflega í þessari skrá, svo hvað er raunverulega vandamálið?
>> Jæja því miður í C, það tekur þig svo ótrúlega bókstaflega að ef þú
vilja fall kallast prenta nafn til til, hefur þú annaðhvort að innleiða
sem virka á the mjög toppur af þinn númer þannig að það er aðgengilegt að lækka
aðgerðir, en hreinskilnislega, sem verður sloppy mjög fljótt.
Persónulega, eins og ég að setja helstu fyrst því þá er það mjög skýrt hvað þetta
program hjartarskinn við fyrstu sýn.
Og plús, er hægt að fá í undarlegt horn tilvikum þar sem ef x vill hringja
Y en Y kalla mætti ​​x, bara þú líkamlega getur ekki í raun að setja einn
yfir öðrum.
>> En það kemur í ljós í C, getum við leysa þetta mjög einfaldlega.
Ég ætla að setja smá pláss upp hér, og ég ætla bara að fara að
preemptively, að vísu nokkuð redundantly, fara að kenna
þýðanda sem til er fall kallað prenta nafn tekur það band,
og ég ætla að hringja það nafn semíkommu.
>> Þannig að þetta nú í samræmi fjórum, sem við hef ekki séð áður, er yfirlýsing
af prenta virka nafn, en það er bara loforð um að þessi aðgerð mun
loksins verið skilgreind, loksins koma til framkvæmda.
Þetta nú get ég fara ein því nú er þetta skilgreining er
framkvæmd, eiginlega síðustu míla um framkvæmd þessa
einkum virka.
Svo satt það er heimskulegt, það er pirrandi, en þetta er leiðin C er, og það er
því það tekur þig mjög bókstaflega og, eins og tölva satt ætti,
eini hjartarskinn nákvæmlega hvað þú segir það að gera, og svo að panta er mikilvægt.
>> Svo halda að í huga og aftur, byrja að taka fyrir endurkomu mynstrum.
Stuðlar ert þú vilja, ef þú hefur ekki nú þegar, byrja að lenda í skilaboðum
eins og þetta sem við fyrstu sýn virðast alveg dulinn, en ef þú byrjar
að leita að þessum helstu orð eins og "Óbeina yfirlýsingu," nefna að
virka í þessu tilviki - og hreinskilnislega, þú stundum jafnvel fá smá grænt
Gulrót tákn sem segir þér hvar málið er líklega -
þú getur byrjað að vinna þig í gegnum enn óséður villa skilaboð.
Einhverjar spurningar um skrifa þína eigin virka á þennan hátt?
>> Við skulum gera eitthvað sem er á aðeins meira sannfærandi.
Frekar en bara að gera eitthvað sem hefur aukaverkun af prentun, láta mig fara
undan og vista nýja skrá, og við munum kalla þetta positive.c, jafnvel þó að það er
að fara að vera svolítið öðruvísi móti síðasta sinn.
Og í þetta sinn, ég vil aftur koma positive.C dæmi síðasta skipti, en í henni
er þvinga notendur til að gefa mig jákvæða heiltölu.
En ég þurfti að nota fá int síðasta skipti.
Myndi það ekki hafa verið gott ef það var fall kallast fá jákvæð int
að ég gæti bara útvista þessu stykki af virkni til?
Svo munurinn hér er að við munum innleiða fá jákvæða int, en ólíkt
prenta nafn sem hafði aukaverkun - það ekki aftur eitthvað svona við mig
tala eða strengur -
fá jákvæð int er, að sjálfsögðu, að fara til aftur, vonandi, jákvæð int.
>> Svo skulum gera þetta.
Hafa cs50.h, Hafa staðall io.h.
Int helstu tóm.
Og nú hér, ég ætla að fara á undan og við skulum segja int, kalla það n, jafngildir
fá jákvæða int.
Og rétt eins og fá int þegar til vegna þess að starfsfólk skrifaði það, ég er að fara
að gera ráð fyrir því augnabliki sem fá jákvæð int er til, og nú er ég að fara
að fara á undan og segja printf, takk fyrir% i / n ", n.
>> Svo nú ef ég safna saman þetta forrit, hvað er að fara að gerast í flugstöðinni minn
gluggi neðst á skjánum?
Ég ætla að öllum líkindum fá að sama villa eins og áður.
Svo skulum reyna þetta.
Gera jákvætt.
Og aftur, óbeina yfirlýsingu virkni, fá jákvæða int.
Svo við getum leyst þetta í a par af leiðir.
Ég ætla að halda þetta einfalt og bara setja yfirlýsingu mína hér og fá
jákvæð int.
Ég þarf svokallaða undirskrift.
Undirskrift bara átt að fagurfræði í
Fyrsta lína af the program.
Svo hvað ætti að fá jákvætt int aftur?
>> Svo int.
Ég meina helst, myndi það skila eitthvað eins jákvæð int, en það
er ekki til.
Við höfum ekki séð að meðal okkar gögn tegundir, þannig að við verðum að takast á við
staðreynd að við höfum mjög fáir gögn gerðir til að vinna með.
En við getum skila int og bara treysti því að það verði jákvæð.
Það er að fara að vera kölluð fá jákvæða int.
>> Og nú hvernig um rök hennar?
Tekur það allir inntak?
Er það vantar einhverjar inntak?
Svo það þarf ekki að vita í neinu fyrirfram.
Fá strengur ekki, fá int ekki.
Printf gerir - það þarf að hafa nokkur inntak fór inn í það - og prenta nafn
þörf sumir inntak, en fá jákvæð int ekki.
Þannig að ég ætla að skýrt segja þýðanda ógilt.
Ógilt er skortur á neinu öðru.
Svo ógilt þýðir ekkert að fara inn þessara sviga, semíkommu.
>> Og nú neðst á minn skrá - og aftur, ég er bara að vera svona anal
hér að setja helstu efst, sem er gott vegna þess að þennan hátt,
hvenær þú eða einhver annar opnar skrá, á
virkni er rétt þar.
Þú getur kafa í frá ferningur einn.
Svo nú er ég að fara að afrita þetta, fá jákvæð int tóm, en ég er ekki
fara að lemja semíkommu núna.
Ég ætla að opna hrokkið axlabönd, og nú þarf ég að taka lán
nokkrar hugmyndir frá mánudag.
>> Svo eins og þú manst, við fengum eitthvað eins gera eftirfarandi meðan
eitthvað var satt.
Og hvað gerði ég?
Ég gerði eitthvað eins gefa mér jákvæð heiltala,
lítill hluti af a hvetja.
Ég gæti notað hvaða orð sem ég vil.
Og þá er ég nota hvað?
Int n jafngildir fá int, engin rök til þess.
>> Og taka mismuninn.
Þegar þú hringja í aðgerð, þegar þú notar fall, ekki þú setja í tómi.
Þú bara að þegar lýsa á virka, kenna þýðanda hvað
það ætti að búast.
Svo þú þarft ekki að setja ógilt þar sjálfur.
>> Og nú hvað var ástand mitt?
Jæja, n er ekki jafn jákvæð, en það er bara gervi-kóða.
Svo hvernig gera tjá ég þetta meira hreinlegur?
Sem minna en eða jafn og núll.
Svo aftur, eftir að þú getur gert minna en eða jafnt og.
Jafnvel þó að það er tvær aðskildar tákn, getur þú gert það á
lyklaborðið sem slíkt.
>> En það er samt padda sem Ég ruglaður upp síðasta skipti líka.
Ég verð að lýsa því yfir -
nákvæmlega.
Ég verð að lýsa N utan í lykkju.
Þannig að ég þarf að setja n upp hér, og ég er ekki vilja aftur lýsa því hér
svo að ég fá nýja breytu.
Ég vil bara að úthluta gildi hér.
>> Og nú er ég ekki alveg búin hér.
Leyfðu mér að fá á undan mér og láta sem ég er búin.
Gerðu jákvæð, og nú there 'a nýr villa.
Control nær enda ekki ógilt virka.
Svo nýja villuboð, en ef þú góður af Stríða sundur hvert orð, það
sennilega vísbending á hvað er rangt.
>> Stjórna.
Control þýðir bara að röð af starfsemi í áætluninni.
The tölva er í stjórn og eitthvað fór úrskeiðis.
Svo nær það enda a non-tóm virka.
Hvaða fall er það víst að vísa til?
Hvaða aðgerð er ekki ógilt?
Svo fá jákvæða int, og smá ruglingslegt í þeim brunni,
það er góður af tómi.
Það hefur forskrift tóm fyrir þess rök, en framleiðsla hennar er að fara til
vera n tegund.
Svo er orðið á vinstri svokallaða aftur tegund.
Orðið á inni hér er núll eða fleiri rök
að fall tekur.
>> Svo hvað þarf ég að gera?
Á þessum tímapunkti í númerið mitt, lína 21 þar Blikkandi hvetja er nú, ég
hafa jákvæð int inni að breytu sem kallast n.
Hvernig gef ég það til baka á aðalsíðu?
Bókstaflega.
Return n semíkommu.
>> Svo bara eins og Colton aftur a stykki af pappír með svar við mig með því að sleppa
þessi stykki af pappír í litlu svörtu kassi á borðinu, til að gera það í
kóða, bókstaflega þú bara skrifa, aftur n, og það er eins og Colton voru
fötlun mér eitthvað líkamlega aftur.
Í þessu tilviki, hvað er að gerast er að fá jákvæð int er að fara að skila aftur
hvað er væntanlega jákvæð heiltala hverjum?
Hvar sem verðmæti endanum?
Sem endar í þessari breytu, n, og þá getum haldið áfram með línu níu.
>> Svo í öðrum orðum, til þess starfsemi, this program byrjar
framkvæmd, og að þýðandinn gerir sér grein, ó, þú vilt bókasafn?
Leyfðu mér að fara grípa hvað sem er inni það.
Ó, þú vilt staðlaða IO bókasafn?
Leyfðu mér að fara grípa hvað sem er inni það.
Hvað þýðir að þýðandinn segja við sig þegar það hits línu fjórir?
Ó, lofaði að framkvæma fall sem kallast að fá jákvætt, en
við munum fá til baka til það síðar, eitthvað meðfram þeim línum.
>> Int helstu ógilt þýðir bara hér er hugaður af áætlun mína.
Lína sjö er bara krullað Brace.
Lína átta er að segja á vinstri, gefa mér 32 bita fyrir heiltala, kalla það n.
Hægra megin, það er segja fá jákvæða int.
Nú hlé skulum að saga því nú Ég halda ekki færa bendilinn minn niður.
Bendillinn minn fer nú niður hér því nú fá jákvæð int keyrir.
Int n er lýst.
Gera eftirfarandi.
Printf gefur mér jákvæð heiltala.
>> Fáðu int frá notanda, geyma það í n, og kannski gera þetta aftur og aftur.
Þessi lykkja þýðir að þetta númer gæti framkvæma upp og niður eins og þetta aftur
og aftur, en þegar notandinn að lokum samstarf og gefur mér jákvæð
int, högg ég línu 21, á hver benda á tala er afhent aftur, og hver einn
ætti ég að undirstrika núna?
Níu.
Control, svo að segja, skilar að línu níu.
Það er lína sem er nú í forsvari.
>> Svo það er það sem er verið að gerast allt í þetta sinn undir hetta, en
þegar við höfum notað virka eins printf eða jafnvel fá band sem einhver annar
skrifaði fyrir þig, var stjórn sem afhent kóða burt til einhver annar er lína
með línu fyrir línu.
Það er við bara gat ekki séð það og við gat ekki raunverulega sýna hana í þessu
program því það er í sumum öðrum skrá á harða diskinum
unbeknownst okkur.
Þannig að við skulum í raun saman og keyra þetta núna.
>> Gera jákvætt.
Safna saman, það er framfarir.
. / Jákvætt.
Gefðu mér jákvæð heiltala.
Við skulum vera erfitt.
Neikvætt 1.
Núll.
Skulum gefa það 50.
Takk fyrir 50, og svo stjórna hefur nú skilað.
Einhverjar spurningar, þá á það?
Já?
>> [Inaudible].
>> Segja aftur.
Ó, góð spurning.
Svo þú might taka hliðstæðu hér að Ég er svona að klippa horn á.
Í línu 12, ég er að segja, að fá jákvæð int skilar int, en að sama
rökfræði, það stendur nú til vegna þess að í lína sex, ég er að segja að helstu ávöxtun
int, en það höfum við aldrei hafði í einhverju áætlunum okkar?
Við höfum aldrei haft nefna þetta lykilorð aftur.
>> Svo kemur í ljós að í C, amk The útgáfa af því sem við erum að nota
gerði árið 1999, tæknilega, þetta er gerast fyrir þig sjálfkrafa.
Hvenær sem þú framkvæma forrit og þú framkvæma aðgerð kallast helstu,
sem virka mun skila núll af sjálfgefið ef þú segir ekki annað,
og núll er bara samningur.
Heimurinn skilar núll þar með gefur til kynna að allt er vel,
raun að yfirgefa okkur með fjóra milljarða mögulegar hlutir sem gætu farið
rangt þannig að ef við aftur einn, til þess að gæti signify kóða sem þýðir þetta
hlutur fór úrskeiðis.
Við gætum aftur tvö, sem þýðir þetta annar hlutur fór úrskeiðis.
Við gætum aftur fjóra milljarða, sem þýðir þetta annar hlutur fór úrskeiðis.
>> Og ef þú heldur nú um eigin PC eða Mac, þú might muna að
stundum þú fá dulinn skilaboð villa frá hugbúnaður sem þú ert
með því að nota, og stundum hefur það manna vingjarnlegur lýsingu, en það er
oft númer eða númer á skjánum?
Ef þetta kemur ekki í hugann, bara að hafa auga út fyrir það.
Það er yfirleitt það þessir kóðar eru að vísa til.
Þeir eru með í Microsoft Word og önnur forrit þannig að ef þú leggja inn
padda skýrsla við félagið, getur þú segja þeim, ó, ég fékk villa númer 45.
Og sumir forritari aftur á félaginu getur að líta sem upp á hans eða hennar
númer og segja, ó, það er vegna þess að ég gerði þessi villa og það er ástæða þess að notendur
fékk þessi skilaboð.
>> En satt er það bara smá truflandi og smá leiðinlegur að
álykta að, að minnsta kosti á okkar Fyrstu áætlanir, þannig að við höfum
verið að sleppa því.
En allan þennan tíma hver og einn af þínum aðgerðir helstu hefur leynilega hafði þetta
lína sjálfkrafa bætt fyrir þig af þýðanda, bara með því að venju að
spara þér tíma.
>> [Inaudible].
>> Þú þarft ekki að fela það í haf.
Það er allt í lagi.
Þú þarft að fela það ef þú værir framkvæmd aðgerð eins og þetta.
Annars virka íbúð út vildi ekki vinna.
En í aðal, það er ekki nauðsynlegt.
Í viku eða tvær, munum við byrja inn í þessi vana þegar við viljum byrja
kynna villur.
Mjög góð spurning.
>> Svo fljótur munnleg brot að nefna að á föstudaginn, munum við ekki vera með hádegismat
í sjálfu sér, en við munum vera að hafa kvöldmat með sumir af þeim nemendum og starfsfólki.
Ef þú vilt tengja okkur, finnst frjálst að fara cs50.net/rsvp.
06:00 á föstudaginn.
Rúm er, eins og alltaf, takmörkuð, en við munum halda áfram að gera þetta á a næstum
vikulega ef pláss rennur út í þessari viku.
>> Svo cliffhanger sem við var horfið á Mánudagur var að strengir geta í raun
vera verðtryggð í, sem þýðir að þú hægt að fá í fyrsta eðli,
annað eðli, þriðja persóna og svo framvegis, vegna þess að þú getur
raun hugsa um streng, eins og halló, eins og að vera í þessu tilfelli fimm
bréf inni í kassa.
Og þú getur fengið á hvert þeirra kassa með hvaða setningafræði gerði við
kynna á mánudag?
Þeir hornklofum á lyklaborðinu.
Sem bara ætlað að fara að staðsetningu núll.
>> Við byrjum að telja á núlli, svo krappi núll táknar H, krappi einn
táknar e, og svo framvegis.
Og svo allan tímann þegar við höfum verið nota strengi og slá inn í "halló"
og "heimurinn" og annað á á skjánum, það er verið geymdar
í kassa eins og this.
Og taka giska.
Hvað er hver kassi tákna líkamlega inni á tölvunni þinni?
>> [Inaudible].
>> Því miður?
>> Stafir.
>> Svo eðli, vissulega er að ræða af strengjum, og eðli er bara
átta bitar eða eitt bæti.
Svo þú ert sennilega að minnsta kosti óljóst kunnugt um þá staðreynd að þinn
tölva hefur minni.
Það hefur tvær tegundir af minni amk.
Eitt er harður diskur þar sem þú spara efni varanlega, og það er
yfirleitt stór svo þú getur haft bíó og tónlist og svo framvegis.
>> Síðan sem þú ert með annars konar minni kallað RAM, R-A-M, Random Access
Minni, og þetta er gerð af minni sem er notað þegar tölvan þín er
gangi en ef þú missir völd eða þinn rafhlaðan deyr, nokkuð sem er geymt
í RAM hverfur ef þú missir völd öllu leyti vegna þess að það er ekki
viðvarandi.
Þú hefur venjulega, þessa dagana, sem tónleikar um það, tveir tónleikarnir, kannski fleiri.
Og kosti af RAM er að það er miklu miklu, miklu hraðar en harður diskur
eða jafnvel storkuhamur diska þessa dagana, en það er yfirleitt dýrari svo
þú þarft minna af því.
>> Svo samtal í dag vísar í raun RAM, sem tegund af minni sem
er aðeins á meðan það er máttur verið fóðraðir í tölvunni þinni.
Svo þegar þú slærð inn í H-E-L-L-O, inn á lyklaborðið, H er að fara í einu
bæti af RAM, the E er að fara í annar bæti af RAM, er eins
The hvíla af the orð.
Svo muna það sem við gátum að gera síðasta skipti var þetta.
Leyfðu mér að fara á undan og opna skrána sem við kölluðum string.c, muna og
að það horfði smá eitthvað eins og this.
Leyfðu mér að rúlla reyndar aftur og breyta það að einmitt það sem hún leit út eins og,
band lengd s.
>> Svo líta á the program hér.
Við fela CS50 bókasafn svo sem við getum notað að fá band.
Við eru stöðluð io.h svo við getum notað printf.
Hvers vegna höfum vér ma string.h?
Þetta var ný á mánudaginn.
Þannig að við vildum band lengd.
STR leng.
Fólk ákvað árum, skulum bara vera gagnorðar.
Í stað þess að kalla það "band lengd," skulum kalla það "STR leng" og láta
heimurinn tala það út, og svo er hvað við fáum aðgang að með string.h.
>> Þetta er kunnuglegt.
Þetta er kunnuglegt.
Þetta er lítið nýtt.
Í samræmi 22 - og við munum koma aftur að þessu, en nú vita -
og þú vildi bara vita þetta af því að hafa lesa skjöl eða ef
þú vissir C þegar -
fá band stundum getur skrúfa upp.
Ef notandinn er í raun andstæðinga eða ósamvinnuþýður og hann eða hún bara
ekki slá neitt á lyklaborðinu eða gerðir svo mikið á lyklaborðið sem
það hylmir minni í tölvunni, í orði, fá band gæti aftur
eitthvað annað en band af stöfum.
Það gæti aftur sérstakt gildi kallast NULL á öllum húfur, N-U-L-l, og þetta er
bara svokölluð Sentinel gildi.
Það er sérstakt gildi sem táknar eitthvað slæmt gerðist í þessu tilfelli.
Það er skortur á streng.
>> Svo null Ég er að leita að einfaldlega þannig að, langa sögu stutta, STR leng og
aðrar aðgerðir sem koma með C, ef þeir búast við streng en þú framhjá þeim
skortur á streng, ef þú framhjá þá NÚLL, tölvuna eða forrit
verður bara hrun beina.
Það mun hanga.
Það mun kasta upp smá villu.
Slæmur hlutir gerast.
Svo jafnvel þótt það sé enn ekki vel skilgreind -
þetta mun gera meira vit í viku eða tveir - í línu 22, þetta er bara
dæmi um sjálf varnar villuprófun bara ef einn tími út af
milljón eitthvað fer úrskeiðis, við kosti program minn mun ekki hrun.
>> Svo jafnt ef s er ekki eitthvað slæmt, Ég hef þetta fyrir lykkju, og þetta var
þar sem við átti að öðrum ný stykki af setningafræði.
Ég á fyrir lykkja iterating frá núll á allt að lengd s.
Og þá er hér, ég var að prenta út s krappi i, en hvers vegna gerði ég nota% c alla
einu stað s% jafnvel þó s er strengur?
Það er eðli, ekki satt?
S er band, en s krappi eitthvað, s krappi ég hvar ég er núll
eða einn eða tveir, það er að einstaklingur staf í strengnum, og svo fyrir
að printf þarf að vera upplýst að það er örugglega eðli að búast.
>> Og þá muna, hvað gerði þetta program raunverulega gera?
>> Prenta það út í dálkum.
>> Já, einmitt.
Það prentað bara orð sem ég gerð í dálk, einn staf í hverri línu.
Svo skulum sjá þetta aftur.
Svo gera band.
Safna saman OK. . / Band.
Leyfðu mér að slá í H-E-L-L-O, Enter, og örugglega ég fá það, einn í hverja línu.
>> Svo láta mig gera eitt hagræðingu hér.
Ef þér finnst um það, sérstaklega ef þú hefur forritað áður, það er
öllum líkindum að óhagkvæmni í línu 24.
Með öðrum orðum, það er ekki endilega besta hönnun.
Einfalt, að minnsta kosti einu sinni þig muna hvað STR leng er, en það er
gera eitthvað heimsk hugsanlega.
Hvað gæti það verið?
>> [Inaudible].
>> Einmitt.
Það er að stöðva fyrir lengd s hvert einasta sinn, jafnvel þótt
H-E-L-L-O er alltaf að fara að vera fimm stafir.
Hvert skipti í gegnum þessa lykkju, fimm er ekki að breytast.
Ég gæti verið hækka i, en það sem er lengd s á hverjum
endurtekning þessarar lykkju?
Það er fimm, það er fimm, það er fimm, og enn ég er samt að spyrja þessa
spurning aftur og aftur og aftur.
Nú satt, the tölva er svo fjandinn hratt, enginn er að fara að taka eftir a
Munurinn á þessu tilfelli, en þessar tegundir lélegrar ákvarðanir hönnun getur
byrja að bæta upp ef þýðandinn sig ekki reyna að laga þetta fyrir þig sem
það væri yfirleitt ekki, að minnsta amk í tækið.
>> Þannig að ég ætla að gera þetta.
Ég ætla að bæta við kommu eftir Fyrsta breytu minn, i.
Ég ætla að gefa mér annan breytu, kalla það n, bara með
venju fyrir tölur, og þá er ég að fara að úthluta n gildi band
lengd af s.
Og þá er ég að fara að breyta ástand mitt að vera það?
Ég ætla að breyta ástand mitt til á meðan i er minna en n.
>> Svo nú, er hversu oft ég stöðva lengd s?
Einu sinni, en það er allt í lagi að athuga i gegn n aftur og aftur vegna þess að nú þeim
gildi eru í raun ekki að breytast.
Nú nú, bara vita að hvenær sem þú hringja í aðgerð, það er hluti af
kostnaður, ekki nóg til að aftra þér raun frá alltaf að nota virka, en
vissulega þegar það er lína af kóða svona - og línur munu fá
meira áhugavert fyrir lengi - þar það er tækifæri til að hugsa, ef ég
slá þennan kóða, hversu margir sinnum mun það framkvæma?
Þú munt byrja að sjá með tímanum að árangur af áætlunum þínum getur
örugglega breytast.
>> Í raun einn af vandamálinu sets við höfum gert í mörg ár áður felur
framkvæmd, eins og þú getur muna frá viku núll, a stafa afgreiðslumaður, en
Villuleit sem er hönnuð til að styðja orðabók um 150.000 plús
orð sem við gefum ykkur.
Þú þyrftir að skrifa kóða sem sækir þessi orð í RAM, svo í
kassa eins og við sáum á skjánum í smá stund síðan, og þá eins hratt og þú
getur, þú þarft að vera fær um að svara spurning formi, er þetta orð
rangt stafsett?
Er þetta orð rangt stafsett?
>> Og í eitthvað eins og það sem við höfum gert í ár fortíð er reyndist það í,
vísu á að kjósa í frjálsum grundvelli, sem samkeppni nokkurs konar, þar sem
nemendur sem nota minna vinnsluminni og minni tíma, færri CPU hringrás, enda
freyðandi upp að efst á lítið leiðtogi borð eða röðun sem við setjum á
Námskeiðið er heimasíða sem við höfum gert í mörg ár áður.
Svo aftur, algerlega valfrjálst, en þetta talar við hönnun tækifæri
sem eru framundan þegar við byrjum byggja á topp sumar af þessum
undirstöðu kubbar.
>> Svo láta mig fara aftur á þessa skýringarmynd fyrir bara smá stund og sýna smá
eitthvað meira.
Þetta er örugglega band, og við höfum tekið kostur á nokkrum bókasöfnum,
staðall io.h sem hefur -
>> Printf.
>> Printf, meðal annars.
cs50.h, sem hefur fengið int og fá band og svo framvegis, string.h, sem
hafði str Leng.
En það kemur í ljós að það er enn annar.
Frankly, það er hellingur og hellingur af haus skrár sem lýsa virka
fyrir bókasöfn, en þetta ctype.h er í raun að fara að vera nokkuð
hagstæður vegna þess að ég ætla að fara á undan og framkvæma einn
önnur forrit hér.
>> Leyfðu mér að fara á undan og opna eitthvað Ég skrifaði fyrirfram kallast
capitalize.c, og við skulum taka A líta á hvernig þetta virkar.
Takið eftir að ég nota, í þessari útgáfu af því, þrír þekki files.
Takið eftir að í línu 18, ég er fá lína af texta.
Tilkynning í samræmi 21, ég hélt því fram að Eftirfarandi númer er að fara að
nýta s, hvað sem notandinn slegið í, og hvernig er ég að gera það?
Jæja, ég er að taka -
kennslustund lærður frá síðasta sinn -
Ég er að lýsa yfir i og n og iterating yfir stafi í band.
Og þá hvað er þetta blokk á númer í netinu 24 gegnum 27
gera í skilmálum leikmaður er?
>> Lágstafir bréf til baka.
>> Einmitt.
Ef s krappi ég - þannig að ef ég-th eðli s, sem er sérstakur
bleikju í streng, er meiri en eða jafnt og lágstafir a og -
muna að tvöfalda merkið signify og -
og sama eðli, s krappi i, er minna en eða jafnt og lágstafir z,
sem þýðir að það er a eða B eða C eða punktur, punktur, punktur, eða z, sem þýðir að
það er lágstafir.
Hvað ég vil gera í því tilfelli?
Jæja, ég get gert þetta nokkuð cryptically, en
skulum stríða þetta sundur.
>> Ég ætla að hringja printf, prentar% C vegna þess að ég vil að prentaðu þetta
staf á skjánum.
Ég ætla þá að fara að taka s krappi ég, ég-th eðli í s, og þá hvers vegna
er ég að gera þetta litla bragð hér, lágstafir mínus Capital?
Hvað er að fara að gefa mig, almennt séð?
>> [Inaudible].
>> Einmitt.
Ég í raun ekki muna -
það var 65 fyrir höfuðborg A. ég í raun ekki muna hvað lágstafir a er,
en það er sama.
Tölvan veit.
Svo með því að segja, lágstafir mínus höfuðborg A, það er skrýtið að vera
draga eina bleikju frá öðru, en hvað eru stafir undir hetta?
Þeir eru bara tölur.
Svo hvað þær tölur eru, láta tölvuna muna það
fremur en mér mönnum.
>> Svo lágstafir mínus fjármagn A er að fara að gefa mér muninn.
Það gerist að vera 32, en það myndi vera málið fyrir lágstafir b og fjármagns B
og svo framvegis.
Það helst í samræmi, sem betur fer.
Þannig að ég er í raun að segja, taka lágstafir bréf, draga af því
staðall munur, og að krappi raun Breytingar s I frá
lágstafir til, að sjálfsögðu, hástafi, án mín að þurfa virkilega að hugsa
um eða muna, hvað voru þeir tölur við ræddum um þegar átta
sjálfboðaliðar kom upp á sviðinu?
Nú á meðan, í annað, ef það er ekki A lágstafir bréf sem ákvarðað
fyrir línu 24, bara prenta það út.
Ég vil aðeins að snerta stafir sem voru
reyndar upphaflega lágstafir.
>> Svo skulum sjá þetta.
Gera nýta.
Safna saman, OK.
. / Nýta.
Og láta mig slá í H-E-L-L-O í lágstöfum, Enter.
Og eftir því að það er breytt í hástafi.
Leyfðu mér að gera þetta aftur með annað orð.
Hvað um D-A-V-I-D við fyrsta D eignfærður sem nafn er yfirleitt?
Enter.
Eftir það er samt rétt.
Það outputted bara að fyrsta D óbreytt um að reisa annað.
>> Svo hafa í huga, þá, nokkrir hlutir hér.
Einn, ef þú vilt alltaf að athuga tvö skilyrði í einu, getur þú og þá
saman eins og við spáð.
Þú getur bera saman stafi á þennan hátt og raun meðhöndla stafi eins
tölur, en hreinskilnislega, þetta er svo fjandinn dulinn Ég ætla aldrei að fara að muna
hvernig á að koma upp með þetta frá grunni án rökhugsun gegnum það fyrir alveg
smá tíma.
>> Myndi það ekki hafa verið gott ef einhver þarna skrifaði aðgerð heitir er
lækka sem gæti svarað fyrir mig satt eða rangar, þessi persóna er lágstafir?
Jæja sem betur fer, hver skrifaði ctype.h gerði einmitt það.
Leyfðu mér að fara upp hér og bæta ctype fyrir c gerðir, og nú látið mig fara niður hér og
umrita þessa línu eins og hér segir.
>> Svo ef það er kallað lægra, ég kröfu, s krappi i, þá er ég að fara að eyða
þessar tvær línur með öllu.
Svo nú einhver annar, ég er að vonast, skrifaði fall kallað er lægri, og það
snýr út að þeir gerðu og þeir lýst það inni ctype.h.
Og nú ætla ég að yfirgefa línu 27 einn, ég ætla að yfirgefa línu 31
einn, en taka eftir því hversu mikið ég hef hert upp númerið mitt.
Það er nú hreinni.
Það er minna erfitt að horfa í gegnum því nú virka, auk þess er
svo frábærlega heitir það bara gerir hvað það segir.
>> Svo nú er ég að fara að spara það.
Ég ætla að minnka aðdrátt.
Og rétt eins og í grunni sem þú gætir hafa Booleans, Boolean gildi satt eða
falskur, það er einmitt það sem er lækka áhrifaríkan ávöxtun.
Leyfðu mér laun.
Leyfðu mér aftur hlaupa.
Og nú skulum reyna það aftur, H-E-L-L-O, inn í.
Það er nokkuð gott.
Og reyna það aftur, til þess að ég ekki skrúfa eitthvað upp.
Það er eignfærður eins og heilbrigður.
>> En þetta er ekki nógu gott vegna þess að annar hlutur sem ég er aldrei að fara að
muna nema ég vinn í gegnum það í raun vandlega á, segja, pappír er
þetta fjandinn línu.
Væri ekki gott ef það voru fall kölluð til efri?
Jæja það skrúfjárn út there er í ctype.h eins vel.
Ég ætla að fara á undan og slá -
láta mig koma að línu aftur.
Í stað þess að þetta hér, láta mig fara á undan og segja, í staðinn fyrir að% c
afleiðing af starf þessa aðgerð til að efri á I-th eðli s.
Og nú taka það er að fá smá jafnvægi.
Ég verð að halda utan um hversu margir sviga ég hef opnað og lokað.
>> Svo nú er það jafnvel hreinni.
Nú er þetta forrit er að verða betri og betur hannað öllum líkindum vegna þess að það er
miklu, miklu læsilegri en það er ekki við skulum leiðrétta.
Gera nýta.
. / Nýta.
H-E-L-L-O. Skulum keyra það aftur, D-A-V-I-D. OK, þannig að við erum enn í
nokkuð gott form.
>> En nú til efri.
Ég leggja til að það er einn fágun við gætum gert sem myndi vera
mjög gott, sem gæti raunverulega herða upp þennan kóða og virkilega gefa okkur fimm
af fimm fyrir hönnun, til dæmis.
Hvað væri gaman að losna við?
Jæja, líta hvernig fjandinn lengi þetta blokk af númerið er bara að gera eitthvað einfalt.
>> Nú eins og til hliðar, eins og þú might hafa séð í frábær lið á síðasta
helgi, þú ekki aðeins þurft að hrokkið axlabönd þegar þú ert bara einn
lína af kóða, jafnvel þó að við lagt halda þeim svo að það gerir mikið
skýrari, eins og í grunni er U-laga blokkir, hvað er inni í útibúinu.
En væri það ekki gott ef að efri, þegar gefið inntak þess, sneri það inn
hástafi ef það er ekki, og það myndi vera dásamlegt í gagnstæða tilfelli ef
það er nú þegar hástafi?
Bara gefa það í gegnum og láta það standa.
>> Svo kannski það gerir það.
Ég gæti reynt og bara vona að það er, en láta mig
kynna einn annar hlutur.
Í stað þess að nota þessa innbyggða í flugstöðinni glugga niður hér, muna að
þetta veldi svart táknið gefur þér stærri skjáglugga sem ég get full
skjár ef ég vil?
Svo kemur í ljós að þeir eru svona einkennilega heitir, en það er þetta sem heitir
man síðum, handbók síður, maður fyrir stuttu, og ég get nálgast þetta með því að
slá maður -
hvað ég vil að slá?
Man til efri.
>> Og nú eftir ef til er virka inni í tölvunni, í
þetta mál tækið, sem er bara stýrikerfi Linux, er það að fara
að gefa mér nokkuð dulinn hóp framleiðsla, en þú munt komast yfir tíma sem
það alltaf er sniðinn ansi mikið sama svo þú byrjar að venjast henni.
Tilkynning efst til efri og virðist er það sama gögn
fyrir að lækka.
Hver skrifaði það var skorið sumir horn og setja það allt á einni síðu.
Þessir hlutir 'tilgangur í lífið er til að breyta
bréf til efri eða lágstafir.
>> Takið eftir að undir Ágrip, maðurinn síðu er að kenna mér hvaða skrá sem ég hef
að fela að nota þetta.
Það er að gefa mér áritun fyrir þær aðgerðir, bæði af þeim, jafnvel
þó við aðeins núna hugsa um eitt.
Hér er nú lýsing.
Til efri breytir bréf c að hástafi ef mögulegt er.
>> Enn ekki að lærdómsríkt, en láta mig nú líta undir skilagildi, málið
sem er afhent til baka.
Svo er gildi aftur að af breytt stafa eða c ef
ummyndun var ekki hægt.
Hvað er c?
>> Upprunalega staf.
>> Upprunalega eðli og við vitum að með því að, aftur, fara upp að
ágrip, og hver skrifaði þetta virka ákvað bara að inntak
að efri og neðri er bara geðþótta fara að vera kölluð c.
Þeir gætu hafa kallað það eitthvað mest þeir vilja, en þeir héldu því
einfalt og c.
Svo ég hef haft samráð man síðunnar.
Þessi setning sefa mig að ef það er ekki lágstafir bréf, það er
fara bara að gefa mér aftur C, sem er fullkominn, sem þýðir að ég get að losna við
annars ástand mitt.
>> Svo láta mig fara aftur til gedit, og nú láta mig gera bara þetta.
Ég ætla að afrita printf yfirlýsingu mína.
Ég ætla að fara á undan og rétt innan The fyrir prentun lykkju sem út, og fá
losa af nú allri þessari ef reisa.
Var ekki slæm hugmynd, og það var mjög mikið rétt og í samræmi við
allt sem við höfum boðað, en bara ekki nauðsynlegt.
Um leið og þú átta sig sumir bókasafn virka til að einhver annar
skrifaði, eða kannski þú skrifaðir annars staðar í skráin er hægt að nota það og í raun
byrja að herða upp kóðann.
>> Og þegar ég segi hluti eins góðum stíl, sú staðreynd að þessi manneskja sem kallast
virka til efri, eða áður er lægra er frábærlega gagnleg vegna
þeir eru mjög lýsandi.
Þú myndir ekki vilja til að kalla virka þinn x og y og z, sem hafa
miklu, miklu minna merkingu.
Einhverjar spurningar um þessi röð um úrbætur?
>> Svo nægja að segja eitt af Takeaways er jafnvel eins og eigin vandamál þitt
setja - kannski Heimadæmi einn, en vissulega P setja tvo og áfram, jafnvel
þegar þeir eru rétt þýðir ekki endilega meina þeir eru fullkomin bara
enn eða sérstaklega vel hönnuð.
Það er hinn ás til byrja að hugsa um.
Þannig að þetta var band inni af þinn minni tölva ', en ef þú ert með
allt fullt af stöfum eins H-E-L-L-O inni af RAM, ráð og
að þú í forritinu kalla fá band mörgum sinnum þannig að þú
kalla fá band einu sinni, þá kalla fá band aftur.
Jæja, hvað er að fara að gerast með tímanum?
>> Með öðrum orðum, ef þú ert með línu kóða, að vísu úr samhengi, eins og
band s fær -
skulum gera þetta.
String nafn jafngildir fá band.
Svo ætla að lína af kóða er ætlað að spyrja notanda um hans eða nafn hennar.
Þessi næsta lína af kóða er ætlað að spyrja notandi fyrir hans eða skóla hennar, og
þetta næsta lína, og svo framvegis.
Segjum sem svo að við höldum að biðja notandi fyrir aðra og
annað og annað band.
Þeir eru að fara að vera í minni á sama tíma.
Einn er ekki að fara að clobber hinn.
School er ekki að skrifa yfir hinn.
En hvar gera þeir allt endað í minni?
>> Jæja, ef við byrjum að draga á skjánum, sem við getum notað þetta í
hér eins chalkboard, ef þetta svart rétthyrningur táknar tölva míns
minni, ég ætla að geðþótta byrja skipta henni upp í litla ferninga,
sem hver um sig táknar eitt bæti af minni.
Frankly, ef þú hafa a gígabæti af vinnsluminni þessa dagana, hefur þú milljarð bæti
af minni í tölvunni þinni, svo milljarða af þessum reitum.
Svo nægja að segja, þetta er í raun ekki að mælikvarða.
>> En við gátum haldið teikna allar þessar greinilega ekki að skala reitum, og þetta
sameiginlega táknar Computer míns minni.
Nú munum við bara gera punkt, punktur, punktur.
Svo í öðrum orðum, þegar ég hvetja nú notandi með fá band til að gefa mér
band, hvað gerist?
Ef notandinn slær í "halló", sem endar upp í H-E-L-L-O. En geri ráð fyrir að
notandinn slær þá í -
Reyndar ætti ég ekki að hafa gert halló vegna þess að við erum að biðja
þá fyrir nöfnum þeirra.
Svo við skulum fara aftur ef ég get gert þetta.
>> Þannig að ef ég tegund í D-A-V-I-D nafni mínu, en muna að annarri línu
númer var að fá band aftur að fá skóla sína.
Þar sem er að orð sem notandinn gerðir í að fara að fara næst?
Jæja, kannski er það að fara inn í H-A-R-V-A-R-D. Svo jafnvel þó að ég hef
teiknað það sem tvær línur, þetta er bara a heild búnt af bæti í þínum
tölva RAM.
Það er vandamál nú vegna þess að nú ef ég er nota RAM í þetta mjög sanngjarn
en svoleiðis barnaleg leið, hvað getur þú ekki virðist greina?
Þar sem maður byrjar og þar einn endar, ekki satt?
Þeir eru eins konar blurring saman.
>> Svo kemur í ljós að tölva ekki gera þetta.
Leyfðu mér að fletta í raun aftur í tímann á stafina og stað Harvard
fara strax eftir nafni notandans, notandi fær raunverulega, bak
við tjöldin, sérstakt eðli sett af
tölva fyrir hann eða hana.
/ 0, annars þekkt sem NUL eðli annoyingly kallast N-U-L, ekki
N-U-L-L, en þú skrifar það sem / 0.
Það er bara allar núll bits er merki í milli fyrsta orðið sem notandinn er
slegið og annað.
>> Svo Harvard reyndar endar nú upp sem þessari röð af stöfum
og eitt / 0.
Svo í öðrum orðum, með því að hafa þessar vörðr gildi, átta samliggjandi núll
bits, getur þú nú að byrja að greina einn staf frá öðrum.
Svo allan þennan tíma hvað var "halló" er raun "halló" við / 0, og
meðan, það gæti mjög vel vera töluvert meira RAM
inni í tölvunni.
>> Leyfðu mér að gera einn annar hlutur núna.
Það kemur í ljós að allar þessar reitum við höfum verið að teikna, þeir eru, já,
strengir, en almennt, þetta eru fylki.
An array er bara klumpur af minni það er aftur til baka til baka til baka,
og þú notar venjulega array af leið þessarar fermetra krappi tákn.
Þannig að við erum að fara að sjá þessar töluvert tímanum, en láta mig fara á undan og
opna, við skulum kalla það aldur.
Og taka eftir hvað við getum gert með þessir sömu bragðarefur, smá
aðeins meira setningafræði hér.
>> Svo í línu 17 þessarar áætlunar - reyndar, láta mig hlaupa the program fyrst
svo við getum séð hvað þetta gerir.
Leyfðu mér að kalla að aldri til þýða þetta forrit.
. / Aldur.
Hversu margir eru í herberginu?
Kalla það þrír.
Aldur fyrsta manneskja?
18, 19, og 20.
Og nú nokkuð hlægilegur, bara ég hafa gert forrit sem aldur þá
þrír menn.
>> Svo er það greinilega tækifæri fyrir sumir gaman tölur hér.
Sem betur fer, stærðfræði er rétt.
18 fóru í 19, 19 fór til 20 og svo framvegis.
En hvað er raunverulega ætlað að vera lýsandi hér er hvernig við erum að geyma
aldur þessara þriggja fólks.
Leyfðu mér að súmma inn á hvað er fara á hér.
>> Svo fyrst, þessar fyrstu línur ættu að fá nokkuð kunnuglegt.
Ég ætla bara vekur notandi til að fjöldi fólks í herberginu.
Þá er ég að nota fá int og gera á meðan við gera þetta aftur og aftur og aftur.
Við höfum séð að mynstur áður, en lína 27 er nýr og í raun alveg
gagnlegur, og mun verða sífellt að gagni.
Takið eftir að það er öðruvísi í takt 27. er að ég virðist vera að lýsa yfir
int kallast aldri, en bíddu.
Það er ekki bara int aldur.
Það er þessi hornklofum, inni sem er táknað með n.
>> Svo krappi n í þessu samhengi, ekki inni í printf yfirlýsingu hér en
í þetta eina línu 27, þessi lína er segja, að gefa mér n ints, hver
er int.
Þannig að þetta er fötu, svo að segja, af, í þessu tilfelli, þrír heilar tölur aftur til
aftur til baka þannig að ég í raun hafa þrjú breytur.
The val, til að vera ljóst, væri þetta.
>> Ef ég vildi í fyrsta nemanda aldur, gæti ég gert þetta.
Ef ég vildi annað nemanda Aldur ég gæti gert þetta.
Ef ég vildi þriðja nemanda aldur, gæti ég gert þetta.
Og Guð forði við þurfum allir er aldri í þessu herbergi -
Ég meina, þetta er Heck af a einhver fjöldi af afrit, líma aftur og aftur og aftur.
Og plús þegar ég þýða þetta forrit, ef annar nemandi gengur í gegnum út
þess dyr, nú númerið mitt af breytum er rangt.
>> Svo er það sem er gott um fjölda sem leið og þú byrjar að tilfinning sjálfur
afrita og líma, eru líkurnar það er ekki besta nálgun.
An array er síbreytilegt hugsanlega.
Ég veit ekki fyrirfram hversu margir eru að fara að vera í herberginu,
en ég veit að ég þarf n af þeim, og ég mun reikna út n þegar tíminn kemur.
Þessi lína af kóða núna þýðir, gefa mér klumpur af minni sem lítur svona út
þar sem fjöldi kassa á skjánum er algjörlega háð n að
sem notandinn slegið inn
>> Svo nú restin af þessu forriti er reyndar nokkuð svipað og við
bara gerði með stafi.
Tilkynning Ég hef á fyrir lykkja byrja í línu 30.
Svo rétt eftir að ég fá array, ég iterate frá Y jafn núlli á allt að n.
Ég hef bara þetta lærdómsríkt printf skilaboð bara að segja, gefa mér aldri
manneskja #% i, svo númer eitt, númer tvö, númer þrjú.
Og hvers vegna gerði ég þetta?
Frankly, vilja menn að telja frá einum á allt en þeim vísindamönnum tölva,
núll á allt.
tölva vísindamenn eru ekki að fara að nota þessa tegund af áætlun, þannig að við erum
fara bara að byrja að telja á einn eins venjulegt fólk.
>> Og nú í samræmi 33, taka örlítið mismunandi stykki af setningafræði.
I-ta aldri í þeirri breytu af tegund array er að fara að fá int.
Og nú loks, þetta er bara tölur hérna.
Ég ákvað í sérstakri lykkju til kröfu nokkur tími líður, og nú í þessu
aðskilin lykkja, framkvæma þessar línur.
>> Á ári héðan, maður ég mun vera ég ára, en taka þetta er ekki
Variable i.
Þetta er nú% i fyrir int.
Og tilkynningu sem fyrsta tákn, ég stinga í i plús 1, svo við teljum eins og
eðlileg manneskja.
Og þá fyrir verðmæti aldri þeirra, til i ára, tek ég aldur krappi
ég - og hvers vegna er ég að gera plús einn hér?
Þeir aldrinum bara.
Það er heimskulegt val mitt af forritum.
Þeir aldrinum bara eitt ár.
Ég gæti slegið í hvaða númer sem Ég vil í raun þar.
>> Svo er það í raun allt mikilvægi hér?
Jæja, láttu mig fletta reyndar aftur hérna og mála mynd
um það sem framundan er.
Það sem við munum vera að gera við næsta vor Heimadæmi tvö er fór að fikta í
veröld dulmál.
Þannig að þetta er band af stöfum, svo röð margra stafir, og hvað
þýðir þetta að segja?
Það er ekki í online útgáfa af skyggnum.
>> Svo ég halda því fram að þetta jafngildir þetta, heimskur auglýsing frá mörgum árum
síðan sem gæti raunverulega muna einn af uppruna sínum.
Svo er þetta dæmi um dulkóðun eða dulmál.
Það kemur í ljós að ef þú vilt að raunverulega senda upplýsingar eða deila
upplýsingar með einhverjum á öruggan hátt, eins og skilaboð eins og þetta, getur þú
Scramble stafina.
En yfirleitt eru orðin ekki spæna handahófi.
Þeir eru permuted á einhvern hátt eða breytt á einhvern hátt þannig að - Úps.
Það er gaman Spilla fyrir næsta tíma.
>> Svo þú getur kortinu hvað er greinilega O til B. Tilkynning sem línur upp
fjármögnun-vitur.
Virðist verða r e.
Apparently verður F-H-E-R S-U-R-E. Svo það kemur í ljós að það er kortlagning, og í
þetta mál það er ansi heimskur kortleggja ef einhver hefur mynstrağur það út?
Þetta er eitthvað sem kallast Rot 13. Snúa 13..
Það er stupidest af dulkóðun kerfi vegna þess að það bara bókstaflega
bætir 13 við hvert eitt af bréfum, heimskur í þeim skilningi að ef þú bara
hafa a hluti af frítíma á höndum þínum og blýantur, eða þú heldur bara það
í gegnum höfuðið, gætirðu reynt allar mögulegar viðbætur - einn, tveir,
þrír, punktur, punktur, punktur, 25 bara snúa öllu stafrófið, og
lokum, munt þú reikna út hvað þetta skilaboð.
Svo ef þú gerðir eitthvað svona í GRADE SCHOOL brottför skilaboð til þín
besti vinur, ef einkunn skólinn þinn kennari lesa einfaldlega í gegnum
skilaboð og skepna afl lausn, þú gætir hafa fengið
svar við því.
>> Nú auðvitað, í hinum raunverulega heimi, dulmál er flóknari.
Þetta er bút af texta frá tölvukerfi sem hefur notendanöfn og
lykilorð, eins og næstum allir af okkar gera, og þetta er það aðgangsorðið þitt gæti
líta út ef geymt á harða þinn aka en í dulkóðuðu formi.
Þetta er ekki bara snúningur á bréfum, A er B og B er C. Þetta er
miklu flóknari, en það notar hvað er almennt þekktur eins og leyndarmál lykill
dulmál.
Þessi mynd segir eftirfarandi saga með nokkrum táknum.
>> Á vinstri, höfum við það við munum kalla texta.
Í heimi dulmál, látlaus texti er bara upprunalega skeytið
skrifað á ensku eða frönsku eða hvaða tungumáli alls.
Ef þú vilt að dulkóða það, munum við fara það pictorially gegnum hengilás, svo
sumar konar reiknirit, sum virka eða forrit sem einhver skrifaði
að ruglar stafina vonandi meira complicatedly en bara að bæta 13
til hvers þeirra.
>> Það sem þú færð út úr því ferli í miðja það er kallað cyphertext.
Svo konar kynþokkafullur orð.
Það þýðir bara að það er dulkóðuð útgáfa af texta.
Og aðeins ef þú hafa þessi sömu leyndarmál, 13 eða mínus 13, þú ert fær um að
hallmæla skilaboð eins og þessi.
>> Svo í Heimadæmi Tveir, meðal hluti þú munt gera ef í Hacker
Edition, verður þú að skrifa kóða til að sprunga þessum lykilorðum, vangaveltur út
hvað þeir voru og hvernig þeir voru dulkóðuð, þó að við gerum gefa þér aðeins
af ráðgjöf á leiðinni.
Í Standard Edition, munum við kynna a par af dulmál, dulkóðun
kerfi, kallaði einn Caesar, einn kallað Vigenere, eru sem enn
hverfi dulmál þar A verður eitthvað, B verður eitthvað, en
þú þarft að gera það kerfisbundið vegna þess að það mun örugglega vera leyndarmál
lykill að ræða, sem er oftast a tala eða leitarorð sem aðeins
sendanda og viðtakanda þeirra skilaboð ættu að skilja.
>> Nú, þetta hefur í raun jarðvistir í hinum raunverulega heimi.
Þetta, til dæmis, er lítill munaðarlaus Leyndarmál Annie er tengd hringur og þú
geta í raun koma þessum hverfi dulmál -
A verður eitthvað, B verður eitthvað - með a par af hjólum,
einn að utan, einn á inni þannig að ef þú snúa hjólinu eða
hringur, þú geta raunverulega stilla upp bréf með mismunandi bókstöfum,
fá leyndarmál merkjamál.
Og svo sem cliffhanger fyrir í dag, það sem ég hélt ég myndi gera er hluti af
throwback að ef þú kveikir á sjónvarpinu desember 24, getur þú horfa á
bíómynd auglýsingu nauseum fyrir 24 tímar í röð.
En í dag, ég opna það upp hér og gefa okkur bara tvær mínútur að
pedagogically viðeigandi jól Story með smá náungi heitir Ralphie.
>> [Vídeó spilun]
>> -Að það er vitað til allra og ýmis að Ralph Parker er hér með skipað
fulltrúi í Little Orphan Annie leyndarmál hring og er rétt að öllu
heiður og ávinningur koma á framfæri.
>> -Undirritaður, Little Orphan Annie.
Countersigned, Pierre Andre í bleki.
Heiður og ávinning þegar á aldrinum níu.
>> [Hrópa í útvarpi]
>> Komdu, við skulum fá á við það.
Ég þarf ekki öll þessi djass um Smugglers og sjóræningjum.
>> -Hlusta á morgun fyrir gera ævintýri svarta
sjóræningi skip.
Nú er kominn tími fyrir Secret Annie er Skilaboð fyrir þig meðlimi
á leyndarmál hring.
Mundu, krakkar.
Aðeins meðlimir Secret Circle Annie er geta lesa leyndarmál skilaboð Annie er.
Mundu Annie er eftir þig.
Setja pinna til B2.
Hér eru skilaboðin.
12, 11, 2 -
>> -Ég er í fyrsta leyndarmál fundi mínum.
>> -25, 14, 11, 18, 16 -
>> -Pierre var í röddu í kvöld.
Ég gæti sagt skilaboðin sem kvöld var mjög mikilvægt.
>> -3, 25.
Það er skilaboð frá Annie sjálf.
Mundu, ekki segja neinum.
>> -90 Sekúndum síðar, er ég í eina herbergi í húsinu þar sem drengur níu
gæti setið í næði og lesa.
Aha, B. Ég fór til the næstur.
E. Fyrsta orðið er "að vera." S. Það var að koma auðveldara núna.
U. 25.
Það er R.
>> -Komdu, Ralphie.
Ég verð að fara.
>> -Ég kem strax niður, Ma.
Gee whiz.
>> -T. O. Vertu viss um að.
Vertu viss um að hvað?
Hvað var Little Orphan Annie að reyna að segja?
Vertu viss um að hvað?
>> -Ralphie, Randy hefur fengið að fara.
Ætlarðu vinsamlegast koma út?
>> -Allt í lagi, mamma.
Ég kem strax út.
>> -Ég var að fá nær nú.
Spennan var skelfilegt.
Hvað var það?
Örlög jörðinni getur hanga í jafnvægi.
>> -Ralphie, gotta fara Randy er.
>> -Ég rétt út fyrir gráta upphátt.
>> -Almost there.
Fingur minn flaug.
Hugur minn var stál gildru.
Sérhver svitahola titrað.
Það var næstum tær.
Já, já, já, já, já.
>> -Vertu viss um að drekka Ovaltine þína.
Ovaltine?
A crummy auglýsing?
Skepnan.
>> [END vídeó spilun]
>> Ræðumaður 1: Þetta er CS50, og að verður Heimadæmi Two.
Sjáumst í næstu viku.
>> Ræðumaður 2: Á næstu CS50, þetta gerist.
>> Ræðumaður 1: Svo eitt atriði sem við höfum ekki horfði á svona langt
að punkta virka.
Nú, fall bendillinn er bara veffang opinber
virka, en líkt -
sonur -