[Powered by Google Translate] DAVID J. Malan: Allt í lagi, þetta er CS50, og þetta er
byrjun viku tvö.
Þakka þér.
Leyfðu okkur að byrja hér með að hringja.
Ég er að fara að hringja í 617-galla-CS50.
CS50: Þetta er CS50.
Fyrir Boy Shuttle, ýtir á 1.
Til að byrja á, Ýttu á 9.
DAVID J. Malan: Svo sagði hann að Boy Shuttle, ýta á 1.
Þannig að við erum að fara að ýta á 1.
CS50: Hver er uppruni þinn?
Fyrir quad, ýta á 1.
Mather, ýta á 2.
Boylston Ýttu á 3.
Lamont, stutt 4.
Mem Hall, Ýttu á 5.
Til að byrja á, á 0.
DAVID J. Malan: Við munum ýta á 1 fyrir quad.
CS50: Næsta skutla skilur þetta mjög á mínútu 1:10 og
þá á 1:20 PM, 01:30, 01:40.
Þetta er CS50.
>> DAVID J. Malan: Þannig að þetta er rödd CS50 er.
Og það er dæmi um tegund af lokaverkefni til
dæmis er hægt að bíta burt til
í lok annar.
Til dæmis, að shuttleboy.cs50.net til -
reyndar verkefni sem ég skrifaði fyrst eftir að CS51
til baka þegar ég var grunn.
Og innblástur hér var þá, allt sem þeir höfðu var
prentað skutla strætó báta, og það var ekki
hugmynd að leita það upp á netinu.
Og svo ég tegund af dúfu á einni helgi, hellt í gegnum
prentuð áætlun, og flutt það til tölvuforriti.
Á þeim tíma er tölvuforrit varð að skrifa
í C. Og þú hleypur í raun það með því að slá Shuttle Boy á a
blikkandi hvetja eins og við höfum verið að gera hingað til.
En í gegnum árin, er það þróast í augnablik
skilaboð láni.
Það þróast nýlega í þessum vef, inn í
SMS-undirstaða tól, sem og í þessari rödd sem byggir á tól.
Og þetta er að vísbending á konar hlutum sem þú getur
gert fyrir þig í lok hverrar annar.
>> Til dæmis þarna, SMS útgáfa af Boy Shuttle gerist
að starfa sem hér segir.
Ef, á farsímanum þínum, senda þér textaskilaboð til 41411 og
þá senda sérstaka tákn sboy fyrir Boy ferðir
eftir A og B, þar sem A er uppruna og B er
áfangastað -
til dæmis, Boylston Space Quad -
hvað þú ættir að fá til baka innan nokkurra sekúndna er texti
skilaboð frá Boy Shuttle segja þér nákvæmlega þegar
Næstu shuttles eru frá þeim punkti A fara að
lið B.
Og þetta er meira almenn dæmi um það sem er þekkt sem
nota API.
>> Svo til dæmis, þetta hér er bara shuttleboy.cs50.net að
raunverulegur vefur byggir holdgun af þessu.
En gögn sem undirstrikar þetta og önnur forrit sem CS50
hefur þróað eru allir verða fyrir alla hér í formi
API, umsókn forritun tengi.
Og það er bara fínt leið til að segja að fólk eins og við á
Netið og aðrir hafa eytt nokkrum tíma að búa
hugbúnaður sem þú getur notað til að grípa gögn frá okkur og
þá byggja eigin umsókn þína á toppur
þess gögnum.
Svo til dæmis, þessi drengur Shuttle API síðu hér, sem
verður að vera í CS50 handbók í raun skjöl
hvernig þú getur farið um að biðja CS50 netþjóna fyrir gögn.
Fyrir dæmi, ef þú ert kunnuglegur með CSV skrár, kommu
aðskilin gildi, þetta eru bara svona fljótur og óhreinum
Excel-eins skrá.
Svo er hægt að spyrja Shuttle Boy fyrir öll gögn á öllum
hús og GPS hnit þeirra, og þú munt fá
aftur, í raun, töflureiknir svona sem
þú getur þá lesa inn í kerfið á eigin spýtur og þá
skila árangri, eins og Boy Shuttle sig
gerist að vera að gera.
Fyrir þá fleiri kunnugleg, fleiri nútíma gögn framsetning
fela JSON, JavaScript Object Ritháttur.
Eitthvað mun koma aftur til þín til
í lok annar.
>> En aftur, þetta er bara einn af nokkrum eigin API CS50 er.
Og spennandi hlutur er nú, þessa dagana, Facebook og
Twitter og Google og nánast hvert vinsæll website út
Það er einhvers konar API, sem þýðir að ef þú lest
gögn á heimasíðu þeirra, skrá þig upp fyrir
reikning, getur þú þá byrja að skrifa hugbúnað ofan á
hvað tæki eða gögn sem fyrirtæki það veitir.
Og svo einn af eigin kennslu okkar félögum nokkur ár aftur
skrifaði Mac útgáfa af þessu.
Svo á tengilinn sem heitir Mac hér efst til vinstri, getur þú í raun
sækja Mac OS búnaður sem keyrir á eigin Mac til að gera slíkt hið
sams konar hlutum.
Svo það er allt um að byggja ofan á gagnagrunna eins og þessir.
En meira um það undir lok misseris.
>> Svo við skulum kafa í alvöru fljótur að galla, bara til að svona fá
það hlýja upp í dag, held og aftur á nokkrum af
Það sem við skoðuðum í síðustu viku.
Einkum láta mig fara á undan og draga upp, segja,
þetta dæmi hérna.
Buggy1.c, þetta er að finna á heimasíðu Auðvitað, ef þú vilt að
eins og til að sækja hann og pota í kringum þig.
En við skulum súmma inn hér á þessu tiltölulega stutt, og bara
a frábær-fljótur ágrip af sumir af the undirstöðu kubbar sem
við raunverulega erum að fara bara að byrja að taka sem sjálfsögðum hlut.
>> Svo bláa efni, í línum 1 til 9 eru bara
Mjúkbolti spurningar.
Svo eru þetta bara athugasemdir.
Þeir hafa enga hagnýtur merkingu.
En þeir eru athugasemdir í þeim skilningi að þeir eru bendir á að
Ég, mannlegur, gerði við sjálfa mig þannig að í fyrirlestri og eftir
fyrirlestur, get ég í raun man hvað þetta forrit
er án þess að þurfa að lesa í gegnum það línu fyrir línu og
endurskapa sögu í huga mínum.
Þar að auki, ef ég væri þetta forrit til að einhver annar eins og
þú, það er miklu skýrari til þín, vegna athugasemda eins og þetta,
hvað forrit er í raun að gera, eða að minnsta kosti hvað
program er ætlað að vera að gera.
Hvort það er rétt er annað mál að öllu leyti.
Nú, í C, með multi-lína athugasemdir, muna að á línu
einn hér er galdur tákn, / *.
Það þýðir að hér kemur upphaf athugasemd.
Og ekkert annað skiptir máli þar til þú komast á Ljúka,
sem er * /, hið gagnstæða.
Svo sú staðreynd að ég hef 80-sumir stakur stjörnur hér frá
vinstri til hægri er í raun bara fagurfræði smáatriði.
Það hefur enga virkni merkingu.
>> Nú hvernig óður í línu 11?
Hvað hefur þetta að gera í skilmálum leikmaður er?
Hvað er það?
Áhorfendur: Includes staðall.
DAVID J. Malan: OK, gott.
Svo nær það stdio.h bókasafn.
Svo hvað þýðir það?
Jæja, inn að skrá, stdio.h, eru allt fullt af
virka yfirlýsingar -
það er númer sem einhver annar skrifaði.
Og fullkomið dæmi um fall sem er lýst í
stdio.h er -
sem uppáhalds með núna?
Svo printf, einn af algengustu sjálfur að nota, örugglega
snemma á, frá því bókasafni er.
Ef ég útiloka þessi lína af kóða, Clang er að fara að æpa
á mig eitthvað um að nota undeclared tákn.
Eitthvað óskilgreinda er líklega leitarorð, vegna þess að
höfum ekki tilkynnt þýðanda hvað printf útlit
eins nema við eru þessi lína.
Og meira niður til jarðar, í raun, hvað þessi lína er að segja er
opna að skrá, stdio.h, hvar sem það er á miðlara
harður ökuferð eða harður ökuferð tækið, og afrita líma það
rétt þar í minn skrá, án þess að minn
að þurfa að gera það handvirkt.
>> Nú, þegar við komumst niður á helstu, áður en langt við munum byrja
vondir í sundur hvað int og það ógilt er.
En nú skulum við líta á þremur línum
innan 15 til 17.
Þetta hér er ég eignað kerrunni.
Line 7 í athugasemdum mínum segir "Ætti prenta 10
Stars en ekki. "Af hverju er þetta prenta ekki, í raun,
10 slíkar stjörnur?
Áhorfendur: [inaudible].
DAVID J. Malan: Einmitt.
Svo eftir að við erum farin að telja frá 0.
Og þetta er í raun samningur á forritun og
Tölvunarfræði meira almennt, að byrja að telja
frá 0 í stað 1.
Og þetta virkilega fær bara frá því að fyrir
td, þegar við höfðum átta manns upp á sviðinu, þegar
enginn var að hækka hönd þeirra, voru þeir
allar áhrifaríkan núll.
Og svo er það bara svona tölvu samninginn þannig,
því að byrja að telja frá 0.
Ef það er lægsta númerið sem þú getur táknað í tvöfaldur.
>> Svo hér við farin Frumstilli i í 0.
Við höfum sett i jöfn 0.
En svo gerði ég þetta mistök hér, að segja að ég er minna en eða
jafnt og 10.
En ef þú heldur að með, ef ég byrja á 0 og þá er ég að fara
allt að 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ég er reyndar að fara að
prenta út 11 stjörnur á skjáinn, því ég hef farið upp
að og jafnt og 10.
Svo er auðvelt að festa hér hvað þá?
Áhorfendur: [inaudible].
DAVID J. Malan: Bara breyta því í minna en.
Ef þú vilt í raun, þú gætir gert það.
En almennt, sem er hleypa brúnum við.
Og svo byrja að telja frá 0 er bara eitthvað sem þú ættir
venjulega venjast.
Nú, hvað um þetta allt byggingarinnar í sjálfu sér?
Þessi lína 15 demarks a for lykkju.
Svo er til ekki virka.
Það er bara yfirlýsing.
Það er lykkja fyrirbæri, eins og við sáum í grunni.
Og það er í þremur hlutum.
Takið eftir að það er fyrsti hluti að
vinstri á semíkommu.
Það er miðja hluti á milli semikommum.
Og þá er það hægri hluti til hægri
annars semíkommu.
Nú, fyrsta af þessum á sér hvað?
Áhorfendur: [inaudible].
DAVID J. Malan: þangað aftur?
Já?
Áhorfendur: Frumstilling.
>> DAVID J. Malan: Frumstilling.
Svo hvað þýðir þetta?
Við höfum lýst því yfir breytu sem heitir i.
Það er int, vegna þess að ég hef tilgreint int i.
Og ég er Frumstilli i að verðmæti 0.
Svo er það þetta að segja í raun?
Það er í raun að segja við tölvuna hey, gefa mér nóg
minni, nóg RAM, til að passa að tala, og þá setja
númer 0 í þeim klumpur af vinnsluminni.
Og sem innskot, hversu stór er int venjulega, amk inni
tækisins?
Áhorfendur: 32 bita.
DAVID J. Malan: 32 bits.
Svo þýðir að gefa mér 32 bita, annars þekkt sem 4 bæti,
og setja gildið 0 í honum sem er frekar auðvelt því
það þýðir bara að setja alla bita 0.
>> Svo nú, seinni hluti hér er ástand.
Og ástand, eins og nafnið gefur til kynna, er það sem er merkt
aftur og aftur og aftur hvort sem það er satt eða ósatt.
Þannig að þetta er bara að segja að gera eftirfarandi línur af kóða -
þ.e. línu 16, vegna þess að það er aðeins einn indented
undir -
svo lengi sem ég er minna en 10.
Og eftir hverja ítrun með þessari lykkju, gera
incrementation, sem í þessu tilfelli er ég + +.
Nú, er það ekki að vera i + +.
Það gæti verið i -.
En ef ég gerði þetta, það er hegðun fara
að vera þetta forrit?
Áhorfendur: Það er að fara að vera óendanlegur lykkja.
DAVID J. Malan: Það er að fara að vera einhvers konar óendanlega lykkju,
nema við heppinn eftir neikvæðum 2 milljarða eða svo.
Kannski það mun vefja í kring, bara með eðli tímabundið
fjöldi bita sem við höfum úthlutað fyrir INT.
En það er vissulega að fara að iterate mun meira en 10 og
örugglega meira en 11 sinnum hér.
>> Og nú, eins og innskot, grein fyrir því að ég + + og ég -
eru í raun bara syntactic sykur.
Það er bara skammstöfun fyrir það sem er lítið meira
sérstaklega skrifað þannig:
i = i + 1.
Það er eins og i + +.
Það bara lítur svona fallegri að segja i + +.
Það er meira gagnorðar, læsilegri.
Og svo að flestir gera það í staðinn.
En þetta er eins og virkni í
það sem við sáum rétt.
Svo í stuttu máli, fljótur festa hér er bara að segja iterate i
frá 0 og alla leið upp í minna en 10.
Og þá munum við örugglega fá 10 stjörnur.
>> Svo skulum reyna þetta.
Leyfðu mér að opna flugstöðina neðst.
Leyfðu mér að fara í möppu sem er inn
Og ég ætla að þýða það handvirkt með Clang fyrir nú.
Og ég ætla að taka saman það sem buggy1.c, Enter.
Og nú buggy1, hvers vegna er engin slík skrá eða möppu
kallast buggy1?
Áhorfendur: [inaudible].
DAVID J. Malan: Já.
Svo það er í raun heitir a.out.
Svo muna ef þú keyrir bara Clang þar Clang er
þýðandi, og þú tilgreinir ekki nafn sem þú vilt
gefa program, það er að fara að sjálfgefið að a.out.
Svo reyndar ef ég LS -
úbbs.
Og ég didn't - á svart-hvíta útgáfu sum
þú frammi hefur verið lagað.
En láta mig gera þetta.
Þar höfum við a.out á vinstra megin.
Þannig að við verðum að keyra a.out stað buggy1.
>> Svo láta mig fara á undan og gera það.
. / A.out, Enter.
Og ég virðist ekki gera það?
Áhorfendur: Vista.
DAVID J. Malan: Vista skrá mína.
Svo er auðvelt að leysa með því að hitting Control S, eða að fara að
File, Vista, eins og í flestum forritum.
Leyfðu mér að fara niður, hreinsa skjáinn keyra það aftur.
Og það er enn a padda.
Svo hvað er að gerast -
Áhorfendur: Þú varst ekki saman.
DAVID J. Malan: Ah, gott.
Ég vissi ekki að þýða það.
Eins og hálfviti, ég er að horfa á númer til að sjá hvað er rangt.
Svo clang buggy1.c, nú a.out.
Og Phew, spara.
>> Svo lítur það svolítið ljótur af því að það er engin ný lína
hvar sem er í kerfinu.
En aftur, það er bara fagurfræði smáatriði.
Og að minnsta kosti ef við teljum þá út, ættum við
nú sjá 10 slíkar stjörnur.
Jæja, hvað um seinni upphitun td?
Svo í buggy2, halda ég að þessi útgáfa líka, mun prenta
10 stjörnur, eitt í hverja línu.
Svo þessar mundir, ég er newline karakter, bara til að gera
það svolítið fallegri.
En í stað þess að það sem ég fæ er þetta.
Svo láta mig gera clang buggy2.c, Enter.
Nú það er aftur kallað a.out.
Enter.
Ég sé bara eina nýja línu, aðeins mjög síðasta nýja línu sem
færist hvetja minn í næstu línu.
Og enn greinilega ég hef verið að prentun *, þá nýja línu,
*, Þá nýja línu.
En hvað er villan hér?
Já?
Áhorfendur: [inaudible].
>> DAVID J. Malan: Einmitt.
Svo ólíkt sumum tungumálum, eins og Python, þar sem skerðing
reyndar hefur hagnýtur merkingu, í
tungumál eins og C -
eins og við munum sjá, PHP, JavaScript -
inndrátt er í raun bara fyrir hag mannsins.
Svo sú staðreynd að ég hef inndregin lína 16 og 17 lítur vel út,
en það hefur enga virkni merkingu hér.
Ef ég vil bæði línur til að framkvæma sem hluta af fyrir
lykkja, þá verð ég að láta þá í hrokkið axlabönd með því að gera þetta.
Þú getur aðeins skera þessi horn og sleppt hrokkið axlabönd ef
hvað er málið?
Áhorfendur: Bara ein lína.
DAVID J. Malan: Bara ein lína.
Svo það er bara svoleiðis fallegu konar smáatriðum setningafræði svo að
þú sóa ekki tíma í að skrifa þrjár línur, þar af tveir sem eru
hrokkið axlabönd, bara að skrifa eina línu af kóða.
En ef þú ert með tvær eða fleiri línur, við
örugglega þurfa að gera þetta.
>> Svo nú láta mig spara þetta.
Leyfðu mér að fara á undan og aftur hlaupa Clang.
Þá láta mig endursýning a.out, og nú fæ ég þá einn í hverja línu.
Nú, a.out er aftur svona heimsk heiti fyrir a program.
Hvernig get ég sagt Clang til raunverulega gefa mér skráarheiti
það er meira notandi-vingjarnlegur, eins buggy2 sig?
A lítill fleiri greinilega?
Áhorfendur: [inaudible].
DAVID J. Malan: OK, þannig að ég get í raun og veru að taka mjög
notandi-vingjarnlegur flýtileið og bara skrifa að buggy2.
Ég tilgreinir ekki. C í þessu tilfelli, og ýttu á Enter.
Og hvað gera gerir er að það safnar buggy2.c fyrir mig því
biðja Clang að gera það.
Sérstaklega, það kallar Clang, keyrir það Clang nota vegur meira
stjórn-lína rök eða skiptir en ég þarf í raun og veru.
Með tímanum munum við koma aftur á hverju allar þessar mismunandi
Cryptic hyphenated tjáning þýðir.
En nú, það er bara að safna mér vandræði af
þurfa að muna og þurfa að slá út alla þá
ýmsar hyphenated tjáning.
Og hækkun á því er að lokum
að nú hef ég buggy2.
Ef ég vil gera þetta með höndunum, þó ég
getur í stað að gera þetta -
clang-o buggy2 og buggy2.c.
Og það mun sömuleiðis gefa mér skrá sem kallast buggy2.
>> Svo í stuttu máli, Clang er þýðanda.
Gera er bara notandi-vingjarnlegur tól sem við munum vera með fleiri
og meira, vegna þess að það byrjar bara að
einfalda hlutina fyrir okkur.
Og við aftur 0, loksins.
Fyrir nú, bara vegna þess, en við munum byrja að stríða að hluti
í dag og á miðvikudag.
Einhverjar spurningar um eitthvað af þessu?
Já?
Áhorfendur: [inaudible]
Er í vitna þarna?
DAVID J. Malan: OK.
Þegar ég gafst LS í gæsalöppum, sem var mér að gera sumir galdra
bak við tjöldin til að laga galla.
Ég gleymdi, eins og við höfum verið að segja margir á
umræða leiksvið, til að gera -
við munum gera þetta núna - sudo Yum-Y uppfærslu appliance50.
Úpps, að það er stafsett rétt.
Svo er tækið eins og stýrikerfi.
Það er að keyra þetta stýrikerfi sem kallast Fedora.
Og nú vegna hægur tengsl minni, hef ég
virkilega hosed það.
Svo keyra sudo YUM endurnýja, eins og við sagt þér að gera í
vandamál setja, er í raun eins og að keyra sjálfvirkar uppfærslur
í Mac OS eða Windows.
Og ástæðan fyrir því að keyra þetta á mjög byrjun af the
vandamál setja er vegna þess að þegar við bjuggum á þvottavélinni, ég
boðberi upp, og ég gerði óvart öll forrit líta
svartur á svörtum skjá, sem er hvers vegna þú ert ekki að sjá þá
sjálfgefið.
En nýjasta útgáfa af tækinu fastur það.
Og ég mun festa það á brot þegar ég hef internetið
Tengingar.
>> Svo vitna felur bara mín mistök, mjög kyrrþey,
virðist.
Aðrar spurningar?
Já?
Áhorfendur: Hvar er að koma frá?
[Inaudible]
DAVID J. Malan: Góð spurning.
Hvar er að koma frá?
Það er Linux forrit sem hefur verið til í mörg ár, lengi
fyrir CS50.
Og það kemur með stýrikerfi eins og Fedora.
Það þýðir ekki að koma frá CS50 bókasafn.
Í raun aðeins það sem koma frá CS50 bókasafninu
svona langt, sem við höfum séð, eru GetString, GetInt, allt
þeir fá störf og orð band, og að sumir
leyti orðið bool.
En við munum stríða að í sundur þegar við kafa í CS50
tæki sig.
>> Svo já, einn spurning hérna.
Áhorfendur: Þegar þú segir að gera og síðan gallaðir, hvernig virkar það
tölva vita [inaudible]?
DAVID J. Malan: Góð spurning.
Svo þegar þú keyrir bara gera buggy1 eða gera buggy2, hvernig
er að vita?
Svo sjálfgefið, ef þú slærð gera buggy1, að útlit fyrir að
skrá sem kallast buggy1.c.
Og svo keyrir það viðeigandi skipanir Clang,
þar vega þyngra framleiðsla vanræksla skrá sem heitir a.out.
Í staðreynd, ef við horfum á það að gera, hvað -
við skulum hætta þessu.
Ef við lítum á það sem gert var í raun að gera, gera buggy2,
það er nú þegar upp til dagsetning.
Svo láta mig fjarlægja rm stjórn,
forrit sem ég skrifaði áður.
Vélritun Y-E-S til að staðfesta að ég vil að fjarlægja það.
Ef ég nú að gera, eftir að í þessu mjög langan línu,
það er þetta síðasta sem hér-o buggy2.
Allir gera er að gera er farið að rök, svo að segja, til að
Clang, þannig að ég þarf ekki að skrifa það sjálfur.
>> Allt í lagi, svo a fljótur par af stjórnsýslu
tilkynningar.
Svo fyrir hluta, sem hófst opinberlega þetta kemur
Sunnudagur, munt þú alltaf vilja til að koma, ef
þú hefur einn, a laptop.
Ef þú ert ekki með fartölvu, ekki ná til mín með því að
sleppa mér tölvupóst.
Og við munum reikna út workflow.
Hvað almennt þú munt finna í kafla er að þeir eru hluti
huglæg, hluti snertið ekki-á.
Við munum sérstaklega að nota hluta af spurningum, hluti af
vandamál vikunnar er sett, til að ganga í gegnum sumir af the
huglæg efni úr fyrirlestri.
Og það er allt í núverandi vandamál setja.
Og við munum einnig kafa í sumum snertið ekki-á starfsemi, stundum
sem verður að vera nauðsynlegt að leggja fram, stundum
sem vilja ekki.
Til dæmis, þetta fyrstu vikuna, þá eru þeir ætluðu bara sem
hita upp æfingar.
Og þú munt komast að því að þessi vandamál eru í raun bara það.
Þeir eru ætlað að vera tiltölulega lítill, en ekki endilega
léttvæg forrit til að skrifa, það eru ekki endilega
spennandi og sér en eru góð tækifæri til
æfa með setningafræði, með nýjum aðgerðum, í the þægindi af a
kafla þar sem þú hefur nokkur af bekkjarfélögum þínum fram sem
og TF þínu.
>> Og það munum við gera með tímanum er að nota tól sem heitir CS50 Spaces,
þar í stað þess að bara nota CS50 Tæki, þú munt
í staðinn að fara á vefsíðu í vafranum þar sem þú munt vera fær um
að skrifa kóða í glugga í kafla.
Og svo ef þú skráir þig í, kennslu náungi getur þá sýna
hvað sem það er sem þú ert að skrifa á skjánum í vafranum þínum
gluggi upp fyrir framan bekkinn, hvort nafnlaust eða
opinberlega, svo að hann eða hún getur þá gengið í gegnum með
bekkjarfélagar þínir hvað þú gerðir vel, hvað þú hefur ekki gert vel.
Og aftur, hvíla sjálfsöruggur allt af þessu má vel nafnlausir.
En það verður að vera gott tækifæri fyrir mikið meira
gagnvirkni en eitthvað eins og fyrirlestur leyfir.
>> Í millitíðinni munum við hafa þetta kallast Super
köflum, sem eru valfrjáls en eru opin öllum á
í bekknum, þannig að þú getur gert þetta meira sameiginlega fyrir
vandamál setja einn.
Hér er dagskráin.
Þetta er einnig birt á heimasíðu á cs50.net.
Takið eftir að það verður að vera tölvusnápur sérstakar
einn morgun síðdegis.
Og við munum kvikmynd einn dag og einn á morgun og senda þeim
á netinu innan 24 klst.
Svo ef þú getur ekki gert eitthvað af þessum tímum, ekki að hafa áhyggjur.
Og aftur, dagskráin er á netinu nú cs50.net.
>> Hvað varðar sectioning sig, ættir þú að hafa fengið
email leiðbeina þér að fara á heimasíðu sjálfsögðu að finna
út hlutanum.
Ef lífið hefur breyst og þú þarft að breyta hlutanum,
ekki vandamál.
Fara til baka í sama slóð cs50.net/section, eintölu,
og þú munt fylla út svipaða mynd þannig að þú getur
þá gefa okkur þínum óskum.
Og við munum fylgja í lok viku um hvað við getum
mæta.
Síðasta vika, muna að við lagt með CS50 ræða,
umfjöllun Námskeiðið er tól, í fyrirlestri.
Svo höfðum við 40 spurningum sem voru spurðir og
svarað í fyrirlestrinum.
Svo það virtist virka vel, þannig að við munum halda áfram
reyna að gera þetta.
Ef, á fyrirlestri, þú ekki bara vanir að hækka
hönd þín, ekki vandamál.
Fara cs50.net/discuss, senda þangað, og einn af kennslu okkar
félagar munu annaðhvort svarað henni rafrænt eða hækka þeirra
hönd fyrir þína hönd nafnlaust til að spyrja eftir
á eðli spurningunni.
Og hvað varðar viðbrögð, yfirleitt psets verður
skilað innan viku.
Vegna þess að það tekur smá tíma fyrir hlutum til að ná
jafnvægi, fyrsta pset, 0 og 1, verður svolítið
seinkað og það setjast niður.
En dvöl lag fyrir að á næstu vikum til að koma.
>> Allt í lagi, svo látið mig setja á alvarleg minn
rödd fyrir réttlátur a augnablik.
Svo er þetta í raun áhugavert loftslag að
með þessa umræðu, hvað með alla aðra hluti
fara á á háskólasvæðinu sem að því lúta.
En CS50 hefur vissulega haft sögu um þetta tiltekna
efni, í eins mikið og á hverju ári, þetta námskeið, því að margir
ár, Ad-Stjórnir u.þ.b. 3% af bekknum.
Þetta næstliðins árs, 2011, CS50 Ad-borð 35 nemendur.
Þetta er ekki, held ég, vegna skorts á skýrleika.
Gera sér grein fyrir að í námskrá Námskeiðið er, það er síða
greinargerð þar sem línur eru.
Sama staðhæfing er endurtekin á hverjum einn af
vandamál setur á síðu eitt.
>> Svo ég nefni þetta í dag í raun bara að gera
fólkinu minnugur þessu.
Og við höfum reynt mismunandi hluti.
Og það sem ég hélt að við myndum gera í dag er bara að taka augnablik til að
í raun að líta á sumir af fyrri málum sem komið hafa upp.
Frekar en að halda þessum sem óhreinum lítið leyndarmál, í raun
benda á hvað nemendur hafa gert og hvernig við höfum fundið
það og í raun hvað overarching hvatning er fyrir
jafnvel að hafa þetta samtal.
Svo með því að segja, línan er í raun þetta -
á kennsluáætlun, þú ert velkominn, þú ert hvött til að
tala við bekkjarfélaga.
Það er allt tilgangi að hafa þetta samstarf
skrifstofutímarnir í Annenberg og hvetja fólk til að
lokaverkefni til að vinna saman.
En lína er dregin þegar það kemur tími til raunverulega skrifa
endanlega lausnin.
Tal á ensku, alveg fínn, tala sauðakóda,
algerlega fínn.
Póst bekkjarfélaga pset þinn, láta þá líta yfir
skjárinn sem hendur halda áfram að skrifa,
á línu eins og heilbrigður.
Ekki líta á námsskrá fyrir tilteknum línum.
>> En bara til að mála mynd af því hvernig þetta er því miður a
veruleika, átta sig á að það eru vefsíður þarna úti sem
hafa lausn frá þessum flokki og mörgum öðrum flokkum.
Sú staðreynd að þú eða einhver 3% af ykkur vita að þetta er til
þýðir að við vitum að þetta er til.
Sú staðreynd að það eru vefsíður eins og þetta þar sem þú
getur borgað einhverjum til að raunverulega gera vandamál setur - þetta var
raunverulegt mál sem kom upp á síðasta ári.
Þetta er vefsíða sem heitir odesk.com.
Og Tim var nafn þess aðila hér sem var staða á
þetta vefsvæði og bað einhvern að gera pset hans 7 í
þetta tiltekna mál.
Jæja, odesk.com er mjög Google-fær, og við erum líka
mjög góður á Googling.
Hér líka, eru síður - og þetta er frekar
grimmilegur, hreinskilnislega.
[Hlátur]
DAVID J. Malan: Það fyndna um þessa síðu er ef
þú lesið um síðuna, tala þeir um fyrirtæki þeirra
menningu og hvernig þjónusta við viðskiptavini er þeirra tala-einn
forgang, til að tryggja að verkefni þitt fá
kveikt í á réttum tíma.
>> En í öllum alvarleika, aftur, sú staðreynd að þessi svæði
hendi, skiljum við líka, eru meðvitaðir um
þessar tegundir vefsvæða.
Og til að gefa þér hugmynd um hvað myndar þetta almennt
tekur yfirleitt við höfum ekki mikill hneyksli þar sem fólk
erum í samstarfi á hvers konar miklum mæli, heldur
það er þessi seint-nótt augnablik veikleika, þar sem þú hefur svo
mikið að gera, það er 04:00, þú ert búinn, og þú
hugsa til sjálfur, og, láta mig taka bara kíkja á mína
herbergisfélagi er eða kóða vinar míns eða þess háttar.
Og merki um það ræða miður Student
A senda eitthvað svona og nemandi B senda
eitthvað eins og þetta, sem vissulega í tölvu
vísindi bekknum, er ótrúlega auðvelt fyrir tölvunarfræðinga
til að uppgötva með hugbúnaði.
Þetta er annar sameiginlegur mynstur, þar sem þú hefur svona
verið að vinna við hlið á einhverjum, kannski að tala í
Ensku, bara fínt, sauðakóðanum.
En þá kemur það tíma til að raunverulega leggja og psets
bara að skipta með tölvupósti eða Dropbox eða þess háttar.
En til að reyna að gera það ljóst minna að þetta er
það sem hefur gerst, þá er þetta það sem er fram.
Þetta brýtur ekki ferð vel skrifuð stykki af
hugbúnaður eins og við höfum í raun og veru greina
þessar tegundir af hlutum.
Og reyndar er það sem við gerum hlaupa hugbúnaður sem ber saman öll
skráningar á þessu ári gagnvart öllum síðasta ári
skráningar, gegn öllu við fundum á
Internet, gegn öllum starf website þarna úti.
Það er allt mjög sjálfvirk.
Og svo við gerum þetta í raun mikla sanngirni við 97% sem
eru í raun að vinna asna sína burt í þetta og í öðrum
bekkjum og setja í öll þessi viðleitni til þess að vinna
Þeir leggja að lokum er eigin.
Og ég get farið á í aldri.
>> Þetta eru bara handfylli af tilvikum á síðasta ári.
Nokkrir nemendur fram þessar skrár samur fyrir pset 2,
pset 3, pset 4, pset 5, pset 6, pset 9.
Í þessu tilfelli var þetta quiz 0 og á síðasta ári, þar sem tveir
nemendur skila samur þessa setningu hjá mörgum
aðrir, "Beiðni tegund -" punktur, punktur, punktur.
Svo jafnvel í flokki 600 höfum vér greina þessu
á lögð Skyndipróf.
Svo í stuttu máli þessi - hreinskilnislega, ég hata að hafa þetta svona
samtal - en þetta er í raun meðvitað átak
á þessu ári til að reyna að keyra niður þetta númer.
Því jafnvel þó við segjum þessar tegundir af hlutum fresti
ár, ég held að raunveruleika hafa staldrað það fyrir nokkrum
fleiri sekúndur en venjulega og í raun bara að benda á
að það kann að virðast eins, ha, ekki svo stór samningur, að minnsta kosti
hugsa til baka til þessa tiltekna stund, bæði í sanngirni að
sjálfur og bekkjarfélögum þínum hér.
Svo ef þú hefur einhvern tíma einhverjar spurningar um hvar línan
er skaltu bara ná út fyrir mig persónulega.
En svarið er alltaf, alveg áherslu á að
síðustu stundu, reiðufé í lok dags.
Eða ef það er spurning um að hafa ekki allir seint daga,
heiðarlega, email mig persónulega.
Við munum reikna eitthvað út.
Vinsamlegast ekki setja þinn tími hér í Harvard í hættu.
>> Nú, ég hélt að við ættum að létta skap, þannig að ég
með þetta sem næsta mynd.
[Hlátur]
DAVID J. Malan: Þessi vefsíða var frábær.
Ég fékk reyndar smá annars hugar.
Það er þessi.
Og þá er þetta einn var ótrúlegt.
Jæja, svo hugsa um að kettlingur seint á kvöldin þegar
þessara ákvarðana.
Allt í lagi, svo aftur til meira gaman og minna alvarleg efni, eins og
skilyrði.
>> Allt í lagi, þannig að við ræddum stuttlega um þetta.
Þetta er eitthvað sem er líklega alveg vel úr
The veröld af grunni.
Og í heimi grunni höfum við þessa þörf stundum
fara gera gafflar á veginum.
Annaðhvort að gera þetta eða þessi eða þetta annar hlutur hér.
Og þegar við viljum gera það, sem við getum notað í C nú, þetta ef
annars byggja.
Og svo hér höfum við Boolean tjáning.
Til dæmis, Boolean tjáning hér, getum við OR
þá saman, í þeim skilningi sem við höfum í þessum aðstæðum eða
það ástand.
Við getum og þá saman, í þeim skilningi að við viljum
athuga þetta ástand og það ástand.
Og hér höfum við skipta yfirlýsingu núna, sem er ekki svo
svipuð setningafræðilega þeim konar aðstæður, en það
gerir okkur kleift að gera sem nemur ef annað ef annað ef annað
ef, og eins með því einfaldlega að enumerating þá málið með að ræða
eftir hverju tilfelli fyrir sig.
Svo við sáum slíkar síðasta sinn.
Og svo við byrjuðum að snerta á hlutum eins og lykkjur.
Við sáum einn af þessum bara í smá stund síðan.
En það eru þessar aðrar lykkja Býr.
>> Til dæmis, þetta hér.
Svo á meðan (skilyrði), gera þetta aftur og aftur.
Svo í grundvallaratriðum, það sem virðist vera mismunandi milli þessa
fyrir lykkju og þetta á meðan lykkja hér?
Þetta fyrir lykkju og þetta meðan lykkja.
Já?
Hvað er það?
Áhorfendur: [inaudible].
DAVID J. Malan: Gott.
Svo þar á eftir ástandi lykkja, það er greinilega
meira setningafræði.
Það er þetta frumstilling, það er þessa uppfærslu.
Í while lykkju, það er bara þetta ástand.
Svo virðist sem að það er lítið samanborið niður á móti til
lykkja, sem þýðir að ef við viljum hafa breytum og við viljum
að incrementation, höfum við í raun að
gera þetta sjálf.
>> Svo láta mig fara á undan og opna gedit.
Leyfðu mér að skipta yfir í tækið.
Og við skulum bara fljótur lítill dæmi um að
aðgreinir einn af þessum frá öðrum.
Og í bakinu á huga mínum hérna, ætti ég að segja eitt.
Ég nefndi sérstaklega nafnið Tim.
Tim var í raun einhver að nemandi reyndi að finna til að gera
heimavinnuna sína fyrir þeim.
Við höfðum enga Tim í viðkomandi kafla.
Svo átta, svo ég birt nemanda, það var ekki nemandi.
Það var af handahófi manneskja á netinu að gera hlutina
með umboð á síðasta ári.
Þannig að við að finna það, líka.
Þannig að í þessu tilfelli hér, láta mig fara á undan og
opna nýja skrá.
File, New.
Þetta gefur mér flipann hér.
Leyfðu mér að fara á undan og vista það sem loop.c.
Leyfðu mér að fara og smella á Vista.
Og svo hérna, við skulum fara á undan og byrja að skrifa
# Include .
Leyfðu mér að þysja inn
Nú munum við gera int main (tóm).
Nú láta mig fara á undan og gert fyrir (int i = 0; i <
ó, 10, i + +).
Og nú ætla ég að fara á undan og gera prenta stjörnu sem ég
gerði áðan.
Og svo í lok þessarar áætlunar, við erum bara að fara að
prenta nýja línu, bara svo að hvetja minn
ekki líta allt sóðalegur.
return 0.
Virðast setningafræðilega rétt?
Svo langt.
Svo við skulum sjá.
>> Svo láta mig minnka, fara í Telnet minn.
Og láta mig fara á undan og keyra lykkju, vegna þess að ég kallaði þetta
hlutur loop.c.
Svo gera lykkju.
Virðist að þýða OK.
Leyfðu mér að hlaupa lykkju, og nú færa.
Og það virðist hafa prenta 10 stjörnur.
Svo við skulum bara breyta þessu í while lykkju og sjá hvað
konar málefni við tærnar.
Svo í staðinn fyrir þetta, láta mig fara í hér og segja að á meðan ég er
minna en 10 -
láta mig losna við fyrir lykkju.
OK, svo við hafa a par af vandamál þegar.
Þannig er ástand það sama, en ég er greinilega vantar
frumstilling.
Ég er vantar incrementation.
Svo hvað ætti þýðandi segja líklegt mig þegar ég reyni að
þýða þetta forrit?
Já?
Áhorfendur: [inaudible].
>> DAVID J. Malan: Gott.
Svo það er að fara að segja eitthvað eins og undeclared - í þessu
tilfelli, breyta i.
Og reyndar, nota undeclared auðkenni i.
Og svo er þetta í mótsögn við tungumál eins og PHP og
Python og Ruby, sem sumir af þú might vera kunnuglegur,
þar sem þú getur bara svona byrjað að nota breytur
snögglega og ekki að hafa áhyggjur af því að lýsa þeim
sérstaklega alltaf.
Í C og í tungumálum eins og Java og C + +, þú þarft að vera
Super skýr.
Og ef þú vilt breyta hringdi ég, þú ert að segja mér
hvaða breytu er.
Þannig að við erum að fara að laga þetta eins og hér segir.
Ég ætla að fara hér upp og slá int i, því,
Ég hef lýst breytu sem heitir i.
Nú, hef ég sleppt einu skrefi.
Ég hef augljóslega ekki frumstilla hana, en við skulum sjá hvort að á
kosti gerir Clang hætta að kvarta.
Svo láta mig endurgerð þetta forrit.
>> Allt í lagi, nú er bara að kvarta
fyrir mismunandi ástæðum.
"Variable 'i' er forsniðinn er notað hér." Allt í lagi, þannig að
það er nokkuð skýr.
Frumstilla þýðir bara að setja það jafnt gildi.
Og við höfum ekki gert það, svo látið mig reyna jafngildir 0.
Nú skulum reyna þetta aftur og aftur hlaupa Clang.
Tekið í þetta sinn.
Og ég er að fara að keyra hana.
En stór gamla óendanlega lykkja, því ég hef gert það
frumstilling, hef ég gert það skilyrði, en ég hef aldrei gert
hvers konar incrementation.
Svo hvernig get ég gert incrementation?
Jæja, í while lykkju, mér líður eins og ég ætla að hafa
að gera það inni í lykkju, því líkt og í fyrsta
dæmi viku að gera lykkja býr, eins og með
sokkum og með sjálf-talningu, við þurftum að gera
eitthvað aftast, eins og að fara aftur í næstu línu.
Hvað ef ég fer á undan og gera þetta i + + hér?
Við skulum ekki einu sinni þýða þetta.
Afli mig nú þegar.
Hvað er rangt hérna?
Áhorfendur: [inaudible].
>> DAVID J. Malan: Svo er það örugglega ekki int.
Það er i.
Og hrokkið axlabönd, eins og áður,
inndrátt er ekki nóg.
Svo nú hef ég smíða þetta.
Svo á meðan ég er undir 10, prenta stjörnu,
þá hækka i.
Og á sama hátt og á meðan lykkja virkar er að um leið og þú högg
neðst á lykkju, sem í þessu tilfelli virðist línu 10,
það er að fara að fara aftur í línu 6, á hver benda á
ástand verður kannað aftur.
Og ef ég er enn minna en 10, munum við gera línur 8 og
þá 9, þá munum við ná 10, og fara aftur í 6, aftur og
aftur og aftur og aftur, svo lengi sem ég er minna en 10.
Svo við skulum aftur hlaupa gera hér.
>> Jæja, höfum við safnað saman í lagi.
Leyfðu mér aftur hlaupa lykkja.
Og nú virðist það í raun að vinna.
Svo plús og mínus hérna?
Jæja, svo langt að það er í raun ekki heil PLO -
svo sætur.
Allt í lagi, það var - Ah, það var slys.
Allt í lagi, þannig að við skulum fara aftur til for lykkju.
Svo fyrir lykkjur eru ágætur vegna þess að þeir eru frábær skýr.
Og jafnvel þó þeir ert a lítill clunky að skrifa, það er
mjög öflug og það gerir þér kleift að gera
margar hluti í einu.
Þó lykkjur virðast ekki hafa mikið gildi bara
enn, því það er eins og við verðum bara að gera meiri vinnu.
Við verðum að setja frumstilling upp hér,
uppfæra hérna, og við verðum að muna eftir að gera allt sem.
Þannig að við munum sjá í tíma að á meðan lykkjur raun lánað
sig bara mismunandi samhengi, mismunandi gögn
mannvirki eins og listum og kjötkássa borð, sem við munum fá til
miðjan önn.
En nú, ég veit að það er þetta þriðja tegund þekktur sem do-
meðan lykkja.
Og við höfum séð þetta í stutta stund.
Og þetta gæti verið frábær hjálpsamur með pset 1.
Hvert sinn sem þú vilt gera eitthvað og þá athuga hvort
notandinn unnið, og ef þeir gerðu það ekki, gera það aftur, gera-
meðan lykkja lánar sig til svona rökfræði.
Þar sem panta frá toppi til botn hér gefur til kynna,
gera bókstaflega þýðir að gera þetta.
Og að gera þetta aftur og aftur, hvað gæti það verið?
Kannski þýðir það starf GetInt eða GetString og síðan
haka við gildi GetInt eða GetString og þá æpa
á notendur ef þeir hafa ekki unnið með því að spyrja þá
aftur og aftur og aftur.
Þar sem þú vilt gera eitthvað einu sinni,
þá stöðva sumir ástand.
>> Svo skulum reyna þetta.
Leyfðu mér að breyta í raun þetta nú að gera-while lykkju.
Og ég ætla að fara á undan og gera eftirfarandi.
Svo gera eftirfarandi.
Gerum int i = GetInt (), en við skulum fyrst að segja að notandinn
hvað á að gera.
Svo smá öðruvísi í þetta sinn.
"Gefðu mér int".
Svo ég nota printf fyrir það.
Og nú ætla ég að fara niður, og ég ætla að gera þetta
á meðan ég er að, við skulum segja, meira en -
við skulum sjá, ég er, segjum, minna en 0, eða ég er
meiri en 10.
Með öðrum orðum, ég vil tölu frá 1 til 9, bara
geðþótta.
Þannig að ég er að nota samsettar Boolean segð hér til
ganga úr skugga um að ég er minna en 0 eða stærra en 10, þar sem
ef ég mun gera þetta lykkju hér aftur.
Svo aftur, gera þetta -
á meðan ég er minna en 0 eða ég er stærri en 10.
>> Svo nú skulum við fara á undan og gera þetta þegar við höfum gert það.
Við skulum bara gera a fljótur geðheilsu stöðva.
printf ("Takk, er i% d", i).
Svo spyr þetta einfalt forrit notanda á int
gerir viss um að það er í einhverju svið, 1 til 9 án aðgreiningar,
og takk notanda með því að minna þá hvað þeir bara
slegið inn, rétt eins og smá andleg heilbrigði stöðva.
En við skulum sjá hvort þetta virkar eins og ætlast.
Leyfðu mér að fara höfuð niður og aftur hlaupa gera lykkju.
Hmm.
"Notkun undeclared heiti 'i'". Það er undarlegt.
Ég hélt að við leyst það.
Sama einkenni en mismunandi kóða.
Já?
Áhorfendur: [inaudible] innan tveggja, við verðum að
[Inaudible].
>> DAVID J. Malan: Einmitt.
Svo leiðir þetta í raun okkur að efni sem kallast umfangi.
Það kemur í ljós að C, aftur, það tekur í raun þú bókstaflega.
Og ef þú gerir eitthvað eins og þetta þar sem þú lýsa á int
og úthluta honum gildi, en þú gera það inni í
par af hrokkið axlabönd, hvað C gerir það ráð fyrir að þú
bara vilja þá 32 bits þekktur sem ég að vera innan
samhengi þessara hrokkið axlabönd, í tengslum við línum
6 í 9. Svo ég er lýst, og er úthlutað
gildi í línu 8, en um leið og þú færð utan
lína 9 undir hrokkið borsveif, er ég ekki lengur í
umfang, svo að segja.
S-C-O-P-E. Það er ekki lengur í rétta samhengi.
Svo nú er ekkert i, þannig að það er eins og við höfðum ekki einu sinni
lýsti það yfirleitt.
>> Svo það er festa þá fyrir eitthvað eins og þetta, ef
Ástæðan er sú að ég er lýst innan hrokkið axlabönd, sem
er greinilega slæmt?
Hér?
Áhorfendur: [inaudible].
DAVID J. Malan: Já.
Þannig að við getum frumstillt það úti.
Svo láta mig fara á undan og eyða yfirlýsingunni hluta þar
Ég tilgreina tegund, og láta mig gera það upp hér.
Svo í línu 5, segir það nú "Gefðu mér int." Kalla það i.
Tilkynning í línu 9, ég vil ekki gera þetta, því ég
þegar hafa 32 bita.
Ég vil ekki að biðja tölvuna um að
mismunandi 32 bits.
Ég vil nota sömu 32 bita.
Og þar sem ég er lýst í línu 5, það er samt legit
að nota það í línu 11 og línu 12.
>> Svo láta mig reyna að laun þetta og sjá
ef Clang hættir æpa.
gera lykkju.
Svo nú er það "óbeina yfirlýsingu um virka
'GetInt' er ógilt í C99. "Hvað er það?
Já?
Áhorfendur: [inaudible].
DAVID J. Malan: Já.
Svo nú er að ég er í raun að nota GetInt, þetta er ekki eitthvað
það kemur bara með C. Þetta kemur frá CS50.
Þannig að við þurfum þetta hér.
Og láta mig fara aftur til hvetja niður
hér og aftur hlaupa gera.
Jæja, loksins.
Nú höfum við ákveðið að og hinn villa.
Leyfðu mér að hlaupa lykkju og sjá hvað gerist.
"Gefðu mér int." Ég ætla að gefa henni 11.
Ég skal gefa það -1.
Ég skal gefa það foo.
Ég skal gefa það 5.
Og nú virkar það örugglega.
En hvetja breytt fyrir ástæðu hér.
Hvers vegna var það að segja reyna einn af þessum tímum, en gefa mér
int hina þrisvar sinnum?
Hvers vegna er þessi hegðun öðruvísi?
Áhorfendur: Gaf það band.
DAVID J. Malan: Fyrirgefðu?
Áhorfendur: Þú gafst það band.
DAVID J. Malan: Já.
Þannig að við gaf það band í þessari þriðju tilraun,
þegar ég slóst foo.
Foo er strengur.
Það er augljóslega ekki int.
Og leiðin að CS50 hefur innleitt GetInt er að við
Ekki athuga hvort eitthvað er minna en 0 eða stærra en 10
fyrir þig, vegna þess að hvernig vitum við fyrirfram hvers konar
int sem þú vilt?
En við getum óverulega athuga fyrir þig, gerði notandi amk
slá heiltölu?
Og ef þeir gerðu ekki, öskra við hjá notanda með því að slá "reyna" á
á skjánum.
>> Svo nú höfum við forrit sem er lykkja. Allt í lagi.
Nú, hver þeirra er tegund af betri reisa?
Svo er þetta þar sem hlutirnir byrja að fá smá sóðalegur, sem
staðreynd að þú verður að muna að lýsa yfir breytu upp hér
Ef þú vilt nota það inni í sumar
hrokkið axlabönd og utan.
En jafnvel ef þetta lítur svolítið dulinn í fyrstu
hnotskurn, bara aftur, man einfalda rökfræði.
Til að nota neitt í C, hvort sem það er fall eða
það er mismunandi, þú þarft að fela það ef það er fall
í sumum bókasafni, eða þú þarft að lýsa það.
En nú þú þarft að vera sérstaklega vakandi fyrir þeirri staðreynd að
þú ert að lýsa henni í rétta umfangi.
Þú ert ekki að setja það of vel inni í sviga.
>> Svo láta mig rúlla í raun til baka.
Ef við förum aftur til okkar til dæmis frá áðan, og ég fer
aftur fyrir int, int i = 0, i <10, i + +, og ég
gera printf stjörnur, eins og þetta, og svo loka paren, og nú
printf er ég nú -
samkvæmt sömu rökfræði, hvað gerist þegar ég reyni að
þýða þetta forrit?
Áhorfendur: Ógilt auðkenni.
DAVID J. Malan: Svo er það annað ógilt auðkenni,
undeclared auðkenni.
Nú, ástæðan er svolítið öðruvísi.
Það er augljóslega ekki hrokkið axlabönd hér, en það sama
hugmynd, sama sagan á umfangi á við.
Ef þú hefur lýst breytu eins og ég inni í
fyrir lykkju, jafnvel ef þú hefur ekki beinlínis skrifað um Curly
axlabönd, hugsa um þau andlega og enn vera þar, sem
ef ég er einungis gilt fyrir innan í lykkju.
Það er ekki gild þegar þú færð í næstu línu, sem
þetta mál er nú 10.
Svo bara nokkrar málefni umfang og þess háttar.
Allt í lagi, einhverjar spurningar?
>> Allt í lagi, þannig að þetta er eins konar léttvæg lítið forrit,
prentun bara litlar stjörnur.
En við skulum sjá hvort þú manst þetta lag hér.
Þetta er ótrúlega pirrandi lag krakkarnir myndu syngja á
skólinn rútu og þess háttar.
En hvað er gott við það er að það hefur þetta cyclicity,
þar sem það er "99 flöskur af bjór á vegg,
99 flöskur af öli.
Taktu einn niður, gefa það í kring, 98 flöskur af bjór á að
veggur. "Og svo endurtekur lagið á 97, þá 96, þá
95, þá 94, alla leið niður í 0 ef þú fékkst í raun að
langt í strætó.
Svo er þetta gott forrit til að raða á að hrinda í framkvæmd, vegna þess að minn
Guð, ef þú gætir bara framkvæma þetta með nokkrum
línur af kóða, getur þú spýta út allt lyrics til þessa
lag alveg strax.
En á leiðinni, getum við byrjað að nú stríða sundur nokkur
þessara helstu lykkja býr og nú einnig
kynna aðgerðir sem við skrifum sjálf, skila gildi
að við fara í kring.
En fyrst, hvers vegna eigum við að fara á undan og taka okkar fimm mínútna
brjóta hér?
Og þegar við komum aftur, munum við syngja þetta lag.
>> Allt í lagi, þannig að við erum aftur.
Og þegar ég segi að við munum nú syngja þetta lag, ég meina
kerfisbundið, ekki munnlega.
Svo hér höfum við beer1.c, sem er ein framkvæmd þessa
sérstaklega lag.
Og bara til að vera skýr, fyrir þá sem ókunnur með það
þessi hlutur útlit eins, láta mig fara á undan
og gera beer1, Enter.
Nú láta mig hlaupa beer1, og það sem við munum sjá - hversu margar flöskur
af bjór verður það að vera?
Ég tegund í 99, eins og lagið segir.
Enter.
Og nú ef við að fletta í gegnum -
Úps - ef við að fletta í gegnum þetta allt, munum við sjá að
þetta var örugglega syngja allt lagið.
Bíddu.
Flettistika minn er svolítið messed up.
Við skulum nota stærri glugga.
Svo beer1, 99, þar sem við að fara.
Svo hér höfum við allt lag, sungið miklu hraðar af
tölva en það gæti hafa verið með okkur.
Svo taka, þó cyclical eðli hér.
Það segir 99, þá 99, þá "taka einn niður, gefa það
um, "þá 98.
Og nú endurtekur það aftur og aftur.
>> Svo er þetta í raun kjörið tækifæri fyrir einhvers konar
lykkja reisa.
Takið eftir að ég er góður að klippa í horn hér.
Takið eftir að ég er að segja "98 flöskur af bjór á vegg,
97 flöskur af bjór á vegg, "og það var bara svo
að þegar við komum til einn flöskur af bjór, ég er ekki
að hafa áhyggjur af enska málfræði.
En við getum líka laga þetta með smá af ef
ástand, kannski.
Ef þessi tala er eintala, fara á undan og segja "flaska",
annars ef það er fleirtölu, segir "flöskur".
En nú er ég alveg að klippa þessi horn.
Svo skulum sjá hvað við höfum hér.
Þannig að við höfum fengið nokkrar athugasemdir hér að ofan.
Ég er þar á meðal þessi tvö bókasöfn, sem
við höfum almennt verið.
Og nú langar mig að fletta niður til fyrsta
raunveruleg línur af kóða.
Line 17 ánægja burt helstu.
Line 21 og 20 er hversu margir flöskur af bjór mun það vera?
Og svo ég kalla GetInt.
Og nú hef ég smá andleg heilbrigði stöðva.
>> Þannig að þetta er samningur sem við munum nú byrja að taka til
meira nákvæmlega athuga inntak notandans.
Stundum þú bara vilt ekki að hvetja þá aftur
og aftur og aftur.
Ef notandi skrúfur upp og ekki vinna, allt í lagi.
Hætta og bara takast ekki með þeim.
Og svo er það það sem ég er að gera hér.
Ef n er minni en 1, ætla ég bara að fara að æpa á the notandi,
"Því miður, það gerir ekkert vit." Og þá ætla ég að
geðþótta skila 1.
Svo aftur, þetta er bara venju að venjast.
Fyrir nú, að taka það á trú.
En allt þar til nú, við höfum alltaf verið að skila 0, vegna þess
við höfum sagt aftur 0 táknar hvað?
Áhorfendur: Velgengni.
DAVID J. Malan: Velgengni, það er allt.
Svo nú er að við erum loksins farin að hugsa um
non-árangur -
í öðrum orðum, horn tilvikum, villa aðstæður -
nú ég er með óendanlega framboð, eða að minnsta kosti fjóra milljarða
hugsanlega atriði sem getur farið úrskeiðis í áætlunum mínum.
Og ég get byrjað að gefa þeim einstaka tölur.
Nú, yfirleitt nægir það bara aftur
eitthvað annað en 0.
Þannig að við erum að fara að einfaldlega skila 1 nú.
En ástæðan fyrir að skila 1 er að um leið og þú kemur aftur
1, giska á hvað gerist til the hvíla af the program?
Það hættir.
Það er það.
Svo er sú staðreynd að ég er aftur 1 raun
Skammhlaup framkvæmd þetta forrit þannig að
ekkert undir línu 27 mun halda áfram framkvæmd.
Um leið og helstu skilar, það er það.
>> Allt í lagi, þannig að ef að notandinn er vinna og við að ná línu 30
vegna þess að þeir slegið í lögmætum tala, hér er minn
framkvæmd þessu lagi.
Svo ég prenta fyrst út newline eðli, bara til
fagurfræði.
Ég hef nú til hliðar.
Og eftir að ég er að gera hlutina í smá
í aðra átt.
Ég þarf ekki að gera minna en, ég er ekki að gera + +.
Ég get í staðinn sagt frumstilla breytu i, setja það jafn
n, fjölda notandinn slegið inn, þá þarftu að gera eftirfarandi, svo
lengi sem ég er meira en 0, þá er ég -
Þegar þú hefur lokið við einn endurtekning þessa lykkju.
Þannig að við getum treyst niður með a for lykkju eins og heilbrigður.
Nú, þetta er nánast viku eitt efni nú, með printf.
Svo prenta "% d flöskur af bjór á vegg." Print "% d
flöskur af öli. "" Taktu einn niður, gefa það í kring. "Print
"% D flöskur af bjór á vegg." Svo er það enn% d, en
eftir því að rök til printf er að breytast.
Eftir kommu, hef ég, vegna þess að ég vil segja 99.
Eftir þessa kommu, hef ég, vegna þess að ég vil segja 99.
Eftir þessa kommu, ég hef i - 1, því ég vil að segja 98 í
þetta fyrsta endurtekning, og svo framvegis.
Og nú niður hérna, ég hef bara sumir heimskur litla athugasemd.
Og þá línu 42, aftur ég 0 eftir venju, merkir að
allt er í lagi.
>> Svo hvað ef ég goofed?
Hvað gæti algeng mistök hér að vera?
Jæja, hvað ef ég sagði óvart vel, ég vil að telja
niður í 0, ég vil 0 flöskur af bjór á vegg?
Svo ég segi, er ég meiri en eða jafnt og 0.
Hvað er að fara að vera einkenni sem ég sé nú ef ég laun
beer1 og keyra það?
Áhorfendur: Neikvæð.
DAVID J. Malan: Já, það er ađ fara neikvæð.
Þetta er off-by-eina villa, ótrúlega
algeng mistök að gera.
Við skulum fara í raun aftur í flugstöðinni glugga og gera það
hér, svo við getum séð fleiri í einu.
Sláðu inn, 99 flöskur af bjór.
Loka, en við fórum alltaf svo örlítið of langt.
Við söng lagið of langt niður, svo að við högg nú
neikvæð tala.
Svo það er ekki alveg að virka.
>> Allt í lagi, þannig að við getum auðveldlega festa það með því að fara aftur til
Þannig það var einu sinni.
En hvað eru nokkur tækifæri nú fyrir
framför?
Jæja, láttu mig opna beer2.c og fletta niður og taka
líta á þessa útgáfu.
Hvað er það fyrsta sem stökk út á þig sem mismunandi
í þessari útgáfu hér?
Áhorfendur: [inaudible].
DAVID J. Malan: Já, þannig að ekki meira ég, vegna þess að það kom upp að
mig þú veist hvað, ég er að spyrja notanda um n, og þá er ég
setja i jafnt n, og þá er ég að breyta i, en ég er aldrei
snerta N aftur.
Svo hvað Heck var að benda á þig úthlutun annað 32
bita kallaði ég bara þannig að ég get hafa mismunandi breytu?
Svo í þessu tilfelli, þekkt ég svoleiðis að óþarfa
hönnun lögun.
Og ég ætla nú að fara að segja en n er stærra en 0, fara
undan og prenta sama lagið, standast n að printf sem
Önnur rökin, og n - 1 sem seinni rök hérna.
Og þá á hverjum endurtekning þessa lykkju, fara á undan og bara
lækka N sjálft.
Nú, virkni, this program
er að fara að vera eins.
Ef ég slá í 99, n byrjar kl 99.
Ég lækka, lækka, lækka, lækka.
Ég ætla að fá alla leið niður að "eitt glas af bjór á
vegg, eina flösku af bjór.
Taktu einn niður, gefa það í kring.
0 flöskur af bjór á vegg. "Lok, vegna þess að ég gerði
fá ástand rétt.
Það er stærra en 0.
Ég vissi ekki að gera þetta mistök.
>> Svo hver er betri, útgáfa einn eða útgáfa tveimur?
Svo heyrði ég fullt af murmurings fyrir tvo.
Hvers vegna tvö?
Hvað er það?
Áhorfendur: [inaudible].
DAVID J. Malan: Ó, allt í lagi.
Þannig að það mun ekki fara undir 0, en muna, í útgáfu einn,
upprunalega Rétt útgáfa ekki fara undir 0 annaðhvort.
Svo muna að þetta er rétt útgáfa.
Þannig að við skulum að minnsta kosti bera saman tvær réttar útgáfur.
Hvað er rök útgáfu
tveir að, mmm, betri?
Já?
Áhorfendur: Það notar minna pláss.
DAVID J. Malan: Jæja, svo notar hann minna pláss, ekki satt?
Í útgáfu einn nota 32 bita fyrir N, og þá annað
32 bita fyrir i.
Útgáfa tvö aðeins notar 32 bita fyrir n, þannig að
virðist vera plús.
Aðrar hugsanir?
Er einhver sem vill halda því fram í þágu annars?
Já?
Áhorfendur: Þú þarft að nota auka línu af kóða fyrir n -.
>> DAVID J. Malan: Allt í lagi, viss.
Svo það er sanngjarnt.
Þannig að þetta bara, að minnsta kosti til mín -
Ég meina, þetta í raun finnst smá Messier, þá staðreynd að
Ég get ekki svona þjappa alla rökfræði mínum í einu
falleg lína, til hliðar, eins og til hliðar er hægt.
Hér hef ég svona að tittur á þessari n -
í lok lykkju, því
það er rökrétt nauðsynlegt.
En það rubs konar mig á rangan hátt, bara vegna þess að það
virðist aðskilin frá rökfræði hérna, jafnvel þó
Aftur, það er nauðsynlegt.
Aðrar hugsanir?
Já?
Áhorfendur: [inaudible].
>> DAVID J. Malan: Já.
Svo hvað ef þú í staðinn, í lok lagsins, vildi
prenta út aftur nafnið á laginu?
Eins og "Takk fyrir að spila 99 flöskur af bjór", eða eitthvað
kjánalegt svona?
En málið er, þú vildir aðgang að upprunalegu gildi.
Sú staðreynd að þú hefur stökkbreytt eða breytt n á hverjum
endurtekning og því hefur eyðilagt upprunalegu gildi þess
þýðir að þú bara getur ekki gert það á endanum.
Nú, að öllum líkindum, er augljóst að við viljum ekki að gera
að í þessari áætlun.
Svo sem ekki sama?
En það er mjög gild lið.
Og til að vera heiðarlegur, það er í raun enginn
rétta svarið hérna.
Þeir eru bæði jafn rétt.
Ég gæti verið sannfærður um annað hvort hátt.
Ég mun segja að, almennt, það er góð regla ef þú
spurði notendur um nokkurt gildi og þú geymt í breytu
eins og n, bara svona á grundvallaratriðum, það er líklega góð
til að halda því í kring.
Og öll gögn sem þú vilt að mutate aftur og aftur, bara
gefa þér afrit af þeim breytu, bara svo að þú
hafa aðgang að upprunalega.
Þú ert að eyða 32 fleiri bita, en raunin er þetta
tölva hefur, eins, tveggja gígabæta vinnsluminni þessa dagana,
og við erum quibbling yfir 32 bita?
Raun ekki svo stór samningur.
Og jafnvel á þessu tæki hér, með hálfa tónleikum eða
gígabæti af RAM, 32 bitar á móti 64 bita,
ekki svo stór samningur.
Vissulega dag, það er að fara að vera leið óvart með stærð
í áætluninni sjálfri, sem er að fara að vera nokkur hundruð
kílóbæti, ef ekki nokkur megabæti, þessa dagana.
>> Svo eðlileg áhyggjur, enginn rétta svarið.
En að minnsta kosti þá eru hugsanir sem ætti að fara að
fara í gegnum huga þinn?
Vegna þess að í pset 0, jafnvel þó að við í raun einungis gert ráð
nákvæmni, eða að minnsta kosti disclaiming ýmsar villur sem
þú gætir hafa komið upp, eins og við halda áfram, hönnun er
að fara að vera annar lykill þáttur, bæði skrifa kóðann
og einnig okkar mat kóða.
Og svo að minnsta kosti að gefa hugsun við hluti eins og þetta.
Og bara vegna þess að virkar eitthvað þýðir ekki að það er gott,
þýðir ekki að það er vel hönnuð.
Og það er eitt af því sem kennslu félögum og
vandamál setur mun hjálpa okkur að stríða hluta tímanum.
>> Jæja, hvað um, við skulum segja, þessa útgáfu hér?
Leyfðu mér að gera eitthvað smá hérna kynþokkafullur í smá stund.
Fyrst láta mig að losna við þetta.
Og nú skulum laga þetta málfræði mál.
Svo í þessari útgáfu, ég vil laga málfræði þannig að
frekar en bara segja parenthetical s, eins og "flösku"
eða "flöskur" -
Ég vil ekki skera þessi horn -
Ég vil líka að dynamically prenta út orðið "flöskur"
eða "flösku", þannig að nota staðgengla Þessi% s í dag.
Þannig að ég þarf að skilyrðum athuga hvað er virði i.
Og ef það er 1, ég vil segja "flaska", og ef eitthvað það er
annað, ég vil segja "flöskur". Svo skulum reyna að gera þetta.
Svo ef ég == 1, þá láta mig fara á undan og lýsa -
Ég þarf a band, svo látið mig gera band S1, því það er
fyrsta band sem ég hugsa um núna.
Ég ætla að segja "flaska". Og þá skulum við sjá, band
s2 - og ég ætla að útskýra þar sem ég er að fara í smá stund -
"Flöskur." Svo muna að í þessu lagi, við þurfum að vera fær um
að prenta það, tvö mismunandi orð hugsanlega.
Þannig að ef við lítum til baka hér, eftir því að þegar við komum til
þetta dæmi hér, "tvær flöskur af bjór á vegg,
tvær flöskur af bjór, taka einn niður, gefa það í kring ", ég vil
þetta fjórða lína til nú að segja "eitt glas af bjór á
vegg ". Þannig að ég þarf að ákveða, ég vil segja" flöskur "eða
"Flaska"? Þannig að ég ætla að geðþótta sagt, allt í lagi,
Ég ætla að nú lýsa breytu sem heitir S1, band
einn, sem er að fara að fá í sambandi hér og einnig hér
vegna þess að þessi orð eru alltaf eins, bara vegna þess að
eðli laginu.
Og ég ætla að hringja í s2 hvað orð ég vil
lokum birtast hérna.
Nú, bókstaflega, 99 sinnum út af 100, það er að fara að vera
sama í báðum þessum tilfellum, því 3 er fleirtölu, 2 er
fleirtölu, 4 er fleirtölu.
En í þessu horni tilfelli, þar sem við fáum til 2 og svo 1, eða
jafnvel 1 og þá 0, ég þarf þessa rökfræði.
Þannig að ég þarf að eyða einhverjum tíma í númerið mitt fá það rétt.
Svo ef ég að gera þetta, ef ég == 1, þá setja S1 jafnt "flösku"
og s2 jafnt "flöskur", vegna þess að þetta mun vera í 1
flaska, og þetta verður að 0 flöskur.
Og þetta hérna, hvað er þetta táknað?
Bara til að vera skýr.
Þetta er bara athugasemd.
Svo þýðir sú staðreynd að þú getur haft einn-lína athugasemdir þig
getur athugasemd kóðann svona, en annar sameiginlegur
hugmyndafræði, líka er að ef þú ert með ofur-stutta setningu sem
þú vilt setja þig og það er bara meira læsileg að setja
það rétt í lok línu af kóða, getur þú
algerlega að gera eitthvað eins og this.
>> Svo nú hvað ef ég að gera þetta? Annars ef ég er ekki jafnt og 1.
Svo jafnt Bang -
upphrópunarmerki er þekktur sem "Bang".
Svo Bang = 1.
Svo ef ég er ekki jafnt og 1, geri það sem ég vil í staðinn að gera?
Jæja, fyrsta orðið sem ég vil vera það?
Svo band 1 ætti að vera "flöskur" fyrir flöskur fleirtölu,
og þá mun þetta vera fleirtölu "flöskur" og að nú.
Og við munum sjá hvort þetta í raun fær okkur til
þar sem við viljum fara.
Svo nú ef ég skruna niður, eftir að ég er að tengja í
ekki bara ég, en S1.
Ég er að tengja í i og S1.
Og svo hérna, ég er mínus 1, sem er það sama og
áður, en S2.
Með öðrum orðum, ég vil enska orðið til að breyta byggt
á þessum reglum.
Nú, það er nú þegar einhver vandamál í þessum kóða.
Hvað er brotið þegar út af the hlið hér?
Já?
Áhorfendur: [inaudible].
>> DAVID J. Malan: Einmitt.
Þannig að ég hef nú þegar brotið kennslustund af umfangi.
Þannig að ég hef lýst S1 og S2, en ég hef gert það innan
hrokkið axlabönd, sem þýðir já, þetta númer mun vinna allt
til línu 42, en um leið og ég högg línu 43, ætli það ekki
lengur til?
Jæja, ætli það er ekki lengur að umfangi - hvorki s1 eða s2.
Þannig að við verðum að laga þetta.
Svo láta mig eyða yfirlýsingar.
Og ég mun láta breytilega nöfn og eyða þetta hérna
og eyða þetta hérna.
Og í hvaða línur þarf ég að lýsa mjög þetta?
Áhorfendur: [inaudible].
DAVID J. Malan: Já, svo sennilega
allt hér, 33-ish.
Svo S1 band og svo S2 band.
Og það kemur í ljós, ég get gert þetta.
Ef þú ert að lýsa tvær breytur af sömu gerð,
þú getur í raun bara notað kommu og gera það í C. All
Einmitt, svo nú hef ég tvær breytur -
S1 og S2.
Ég er að gefa þeim gildi í þessum
aðstæður hér, eða hér.
Og þá er ég að nota þær niður hér.
Hversu vel er þetta að fara núna til að vinna?
>> Jæja, það er samt smá þrjótur, en við skulum að minnsta kosti sjá
hversu langt við höfum fengið.
Svo láta mig fara á undan og gera beer3.
Er þetta beer3?
Já, þetta er beer3.
Og nú langar mig að fara á undan og keyra beer3.
399 99.
Við getum sennilega sleppa flestum af þeim.
Og hérna, líta á það.
"Ein flaska af bjór á vegg, ein flaska af bjór, taka
einn niður, gefa það í kring, 0 flöskur af bjór á vegg. "
En ég ætla að vekja athygli þína á aðeins hluta af lausninni.
Konar ruglaður upp hér.
Svo virðist sem horn tilvikum myndast þegar ég jafngildir það
tvö gildi?
Áhorfendur: 2, 1.
DAVID J. Malan: 2 og 1.
Það er ekki 1 og ekki 1.
Það er í raun bara þessir tveir síðustu vísur af þessu lagi.
Svo hvað ég vil í staðinn að gera?
Ég virðist hafa lent í tilfelli þar sem ef ég er == til 1,
þá er fyrsta orðið "flaska", en annað orð
er "glös". En hér vil ég að breyta þessu til að vera == 2.
Og ef þetta er raunin, hvað ég vil að
fyrsta orðið að vera?
Áhorfendur: "Flaska".
DAVID J. Malan: "Flöskur", svo fyrir tveimur flöskum.
Og þá er þetta orð hér ætti að vera -
Áhorfendur: "Bottle".
DAVID J. Malan: "Bottle", eintölu.
>> Allt í lagi, við skulum súmma út, fara aftur yfir hér, með tilvísun til-hlaupa gera,
Re-hlaupa beer3, tegund 99 aftur.
Allt í lagi, "Sundurliðun kenna (algerlega varpað)."
Hvað hef ég gert rangt?
Áhorfendur: Þú þarft ekki gildi [inaudible].
DAVID J. Malan: Ah, frábært lið.
Allt í lagi, svo hvað er rangt hérna?
Svo kenna skiptingu, og við erum í raun að fara að sjá
þetta alveg nokkrum sinnum í framtíðinni, af ásettu ráði.
En nú, hvað þýðir þetta í raun?
A skiptingu kenna næstum alltaf þýðir að þú hefur
einhvern veginn reynt að opna minni, RAM í tölvunni þinni,
sem þú átt ekki, að þú hafir ekki í raun spurt á
stýrikerfi fyrir.
Svo í þessu tilfelli, eftir því sem ég hef gert, sem er
gölluð í rökfræði minni.
Ég hef úthlutað S1 og S2 gildi ef ég er 1.
Ég hef líka gert það ef ég jafngildir 2.
En ég hef ekki gert það í óendanlega fjölda annarra
möguleika -
einkum, 3 eða 4 eða punktur, punktur, punktur, 99.
Svo einn festa fyrir þetta gæti bara verið við skulum
hafa annað ástand.
Og láta mig fara í hér og segja s1 jafn -
hvað ætti það að vera hér?
Áhorfendur: [inaudible].
>> DAVID J. Malan: "Flöskur", því að í sameiginlegu máli,
það er bara það sama.
Svo jafnt vitna, unquote, "flaska". Svo fyrir fleirtölu
flöskur, og þá hérna fyrir flöskur fleirtölu.
Jæja, þannig að nú langar mig að fara aftur til stöðvarinnar gluggann minn,
laun, með tilvísun til-hlaupa það.
99.
Whew.
Og við skulum gera a fljótur geðheilsu stöðva.
Tæknilega, viljum við að lesa allar þessar til að tryggja
þeir eru rétt, en við skulum líta á
síst þekktur sökudólgur.
3 flöskur, 2 flöskum, 2 flöskur, 1
flösku, 1 flaska, 0 flöskur.
Við virðumst hafa að minnsta kosti ákveðið það fyrir nú.
En grípa hér er að hvað guð hræðilegt sóðaskapur er þetta
bara til að leysa heimskulegt
einn staf málfræði smáatriði.
Svo er það eins konar ástæðu sem ég klippti þetta horn
áðan, vegna þess að það er bara alveg pirrandi að þurfa að
skrifa þetta mikið kóða.
En það kemur í ljós að það er aðeins meira glæsilegur leiðir
tjá nákvæmlega það sama.
Og við getum gert þetta þannig.
>> Leyfðu mér að fara þetta á skjánum í smá stund og
kynna eitthvað þekktur sem ternary rekstraraðila.
Þetta er góður af a einn-Ferja sem er bara ætlað að gera okkar
býr smá sexier, eins og lofað.
Og ég ætla að gera þetta þannig.
Gefðu mér band sem heitir s1 og láta mig
tengja það sem hér segir.
(I == 1)?
"Flaska", annars "flöskur". String s2 fær (i == 2)?
"Flaska", annars "flöskur".
Svo hvað þá er munurinn hérna?
Þessar tvær línur af kóða, þá held ég, get
skipta þetta allt óreiðu.
Svo ég kalla þetta sóðaskapur, bara vegna þess að það rubs konar mig
röng leið að það er svo margar línur af kóða.
Ekki rangt.
Það er ekki slæmt hönnun.
Eins og, þetta er fullkomlega rétt og fullkomlega fínn.
En erfðaskrá fær leiðinlegur ef þú ert að tjá þig svo
fjandinn sérstaklega aftur og aftur og aftur með einfalt
atburðarás eins og þetta.
Svo hefur C Sumir flýtivísar, svona.
Svo þetta í raun er að segja að lýsa yfir band sem heitir S1 og
framselja það annaðhvort þetta gildi eða þetta gildi ef ég er == -
Því miður, ætti ég að segja þetta betur.
Lýsa breytilegum S1, framselja það þetta gildi ef þetta er satt.
Annars, framselja það þetta gildi.
Svo í öðrum orðum, þetta er tegund af a einn-lína leið
segja ef annað en að gera verkefni á leiðinni.
Svo ef ég er 1, þá fara á undan og kalla þetta "flaska". Og
þá er þetta annað, kalla það "flöskur". Á sama tíma, S2, sem
Annað orð sem við þurfum að skilgreina, ef ég jafngildir 2, munum við
setja s2 á "flösku". Annars, setja það á "flöskum". Og hvað
þetta þýðir að nú er ég að fara í gegnum þetta og eyða öllum
þeim línum af kóða.
Og þegar ég segi nokkuð hlægilegur, að þetta er nú
sexier er það sexier í einhverskonar stylistic skilningi.
Sú staðreynd að virka, þetta númer er í raun að fara að
gera nákvæmlega það sama.
Og jafnvel þó það gæti litið svolítið dulinn í fyrstu
tillit, því að við höfum ekki séð þessa reisa áður, myndi ég
halda því fram að það er á endanum að fara að vera svo miklu meira
læsileg og svo miklu auðveldara fyrir við mennirnir að raða á
skilja, því að nú getur þú bara að lesa
kóða allt í einni línu.
Það er samt svipað í anda að ef, ef þetta er
ástand og þá er þetta það sem er inni í ef og þetta
er það sem er inni í annað.
En við getum gert þetta bara miklu meira glæsilegur.
>> Og ef ég fer nú aftur í flugstöðinni minn, hafa eytt öllum
af þessum línum og skipta þeim bara þá tvo,
laun, með tilvísun til-hlaupa flöskur af bjór með 99, tilkynning um að minn
málfræði er í raun, samt rétt.
Svo aftur, eitthvað til að byrja.
2 flöskur af bjór, 1 flaska af bjór.
Lítur til hægri.
Já.
Svo þar höfum við miklu meira gagnorða lausn.
Svo þetta líka, eins og þú fá öruggari með C, ekki
endilega við fyrstu pset eða jafnvel annað, en
átta sig á að þessi Býr geta leyfa okkur að gera það alltaf
meira glæsilegur.
Nú skulum gera eitt annað hlutur hér.
Leyfðu mér að fara á undan og opna return1.c.
Nú skulum byrja að leysa annað vandamál á þann hátt að
gerir okkur kleift að skrifa flóknari kóða.
>> Svo hér er einfalt lítið forrit sem tilgang í lífinu
er að hækka gildi.
Og í raun, við skulum taka skref til baka.
Leyfðu mér að gera þetta handvirkt.
Leyfðu mér að gera eru og int main (tóm).
Og láta mig kalla þetta increment.c.
Og hvað vil ég gera?
Ég ætla að fara á undan og segja eitthvað eins og -
munum við kalla tölurnar sama -
int x.
Svo fær int x 2, printf x er% d, nýja línu, x.
Þannig að ég er að skrifa hratt, en svona þekki efni núna.
Og ég ætla að gera x + +.
Og ég ætla að prenta þessi sömu setningu aftur.
Og svo ætla ég að fara aftur 0 bara að hætta í forritinu.
Allt í lagi, þannig að þetta er forrit sem
þrepum tala.
Það er fyrst að fara að frumstilla eitthvað til 2, og þá er það
fara að hækka það og prenta það aftur.
>> Svo við skulum hlaupa vöxtur, ótrúlega einfalt forrit.
En ætla nú að ég vil teningur gildi, svo ekki
eitthvað nokkuð handahófskennt.
Og ég vil í raun og veru að gera x fær teningur af því.
Þannig að ég gæti notað það sem heitir Pow virka, en ég er ekki
raunverulega vita hvar það er enn.
Þannig að ég ætla að gera þetta á gamaldags hátt.
x sinnum þetta jafngildir x sinnum x sinnum x.
Þannig að ég ætla cubing gildi, margfalda það með sér aftur
og aftur og aftur, svo að við fáum orku
3 í þessu tilfelli.
Svo nú tölurnar ég ætti að prenta ætti að vera, eins og við munum sjá
hér - að vöxtur, svo það er í raun ekki raunverulega hækka
lengur, en við munum láta nafn einn -
2 og svo 8.
Nú höfum við upphaf tækifæri fyrir fágun
hér, þar sem þetta cubing hlutur af margfalda fjölda
af sjálfu sér af sjálfu sér af sjálfu sér finnst eins og þetta gæti bara verið
gagnlegt að hafa sem fall, mikið eins og einhver ákvað
árum - þú veist, eins konar gagnlegt ef einn af okkur sest
og skrifar printf þannig að restin af heiminum getur notað það,
af hverju eigum við ekki að setjast niður og skrifa fall sem kallast teningur
sem gerir þetta cubing fyrir okkur svo við þurfum ekki að handvirkt
innleiða hugmyndina um cubing gildi hér?
>> Svo einfalt dæmi, en við skulum fara á undan og nota þetta eins og er
tækifæri til að skrifa eigin virkni okkar.
Svo svona langt, höfum við bara notað helstu, og við höfum notað annað
aðgerðir fólks, en við höfum ekki skrifað okkar eigin.
Svo hér við fara.
Ég ætla að fara á undan og skrifa fall sem kallast teningur.
Og ég ætla að hafa það taka inntak.
Svo inntak hennar er að fara að vera heil tala.
Og hvað er það að fara að gera?
Það er að fara að lýsa int framleiðsla = inntak sinnum inntak
sinnum inntak.
Og þá er að fara að fara aftur að framleiðsla.
Og þá þarf ég að vera nákvæm núna.
Þessi aðgerð er að fara að skila int.
Svo hér er þá hvernig þú vilt að skrifa eigin aðgerðir þínar.
Þú ákveður fyrst hvað er nafn af þinn
virka að fara að vera.
Og almennt, eitthvað skýringar er gott, þannig að ég
kalla það teningur.
Síðan sem þú þarft að tilgreina hvað það er að fara að koma aftur, það er
framleiðsla þess að fara til vera.
Og við höfum ekki marga möguleika enn.
Int, bleikju, fljóta, bool, band.
Fyrir nú, ég ætla að standa með int, því ég vil það
að skila heiltölu.
Þá verður þú að tilgreina það inntak þess, ef einhverjar eru, eru.
Og ef teningur tekur rifrildi, fer eitthvað á milli
sviga, þú þarft að gefa þessi rök nafn þannig að
þú getur hringt í það eitthvað sem þú ert að framkvæma eða skrifa
Þessi aðgerð, og þú verður að gefa það a tegund, sem í þessu
Málið er að fara að vera int.
Svo í stuttu máli, teningur er fall sem tekur heiltölu
sem inntak og skilar heiltölu sem framleiðsla.
>> Svo hvað þýðir það að gera með að inntak?
Jæja, í línu 14, lýsa ég breytu sem heitir framleiðsla og ég
framselja það gildi, inntak sinnum inntak sinnum inntak.
Og svo ég aftur framleiðsla.
Svo hvernig nota ég þetta þá?
Hvað get ég breytt þessum hápunktur stafir á línu
7 að, finnst þér?
Áhorfendur: [inaudible].
DAVID J. Malan: Já, svo teningur af x.
Svo er x er breyta, sem þýðir að það hefur sumir gildi.
Sem betur fer er það í heiltölu tegund.
Og af því að x er int, sem þýðir að ég get að gefa það í teningur.
Og jafnvel þó að ég er ríkari gildi x og gildi
á x teningur, eins og hefur verið raunin hingað til, hvenær sem þú
hafa jafnan tákn og línu af kóða, efni til hægri
gets keyrð og þá fær úthlutað til
gildi á vinstri.
Þannig er röð aðgerða sem við myndum vona.
Svo virkar þetta?
Jæja, láttu mig fara niður.
Leyfðu mér að opna Terminal gluggann minn.
Leyfðu mér að gera vöxtur, Enter.
"Óbeinir yfirlýsing 'teningur' aðgerð er ógild í
C99. "Sem innskot, C99 er átt við tungumál C eins og það var
skilgreind árið 1999, sem var að uppfæra yfir útgáfu frá
1989, sem er uppfærsla á upprunalega.
Svo er það allt sem þýðir.
>> Og hvað þýðir það að "óbeina yfirlýsingu um
'teningur' aðgerð er ógild? "Það er hérna.
Það er rétt þar í línu 12.
Áhorfendur: [inaudible].
DAVID J. Malan: Hvað er það?
Áhorfendur: Það er ekki áður.
DAVID J. Malan: Það er ekki áður.
Svo er þetta málið.
C er góður af heimskur, eða C þýðendur eru eins konar heimskur.
Þeir í raun bara að gera það sem þú segir þeim að gera.
Og þeir, einkum aðeins lesið kóða efst til botn,
vinstri til hægri.
Svo ef að þýðandinn, Clang, er að lesa kóðann, lína 1, það
tölur út hvernig á að gera þetta.
Ó, hér kemur aðal.
Jæja, láttu mig fara á undan og lýsa breytu x.
Leyfðu mér að prenta eitthvað.
Line 7, hvað Heck er teningur?
Það er ekki lýst í stdio.h.
Það þýðir ekki að koma með C. Ég hef ekki hugmynd um hvað á að gera.
Og svo bails Clang bara og hættir með þeim villa skilaboð.
Þannig að við getum lagað þetta í nokkra vegu.
Við getum kennt Clang hvaða teningur er bara að færa þar sem
yfirlýsing er.
Svo ég klippt og límt hann á topp helstu.
Nú ljóst að bara vegna þess að helstu er ekki lengur fyrst það er
enn keyrð sjálfkrafa.
Main er aðal.
Það er virka sjálfgefið nafn.
Það skiptir ekki máli þar sem það er í skránni.
En að minnsta kosti nú Clang hefur séð teningur áður en ég nota það.
Svo skulum sjá hvort Clang er ánægðari núna.
Gera vöxtur, gerði það saman að þessu sinni.
>> Leyfðu mér að hlaupa vöxtur.
Og reyndar virðist vera að vinna.
Nú getur þú komið upp með atburðarás endanum þar
það er ekki gerlegt að setja alla virka
yfir öll önnur starfsemi.
Þú munt fá fastur í óendanlega lykkju í raun og veru,
þar sem þessi strákur vill vera hér, en þetta
strákur þarf að vera þar.
Svo það þýðir ekki alltaf að vinna.
Svo sem betur fer, C hefur meira glæsilegur lausn.
Ég ætla að setja þetta aftur þar sem það var bara vegna þess að ég
kjósa, eins og spurning um lögmál, að helsta vera alltaf
efst, því það er bara gaman að sjá hvað þetta forrit
er sjálfgefið.
Og hvað ætla ég að gera upp hér er lýsa hvað heitir
frumgerð.
Ég ætla að koma aftur lýsa teningur virka minn því bókstaflega
afrita og líma.
Raunverulega, það er ekki bókstaflega.
Svo bókstaflega afrita og líma línu 15
fyrir ofan línu 6.
Það skiptir ekki máli hvaða lína þetta endar á.
Það gerist að vera á línu 4.
En það þarf að vera áður en aðal.
En taka mismuninn.
Line 4 endar á semíkommu, sem þýðir hey,
Clang, taka minn orð fyrir það að það er að virka
kallast teningur sem tekur við int og skilar int.
En ég er ekki ađ segja þér hvað það er ennþá.
Bara veit að ég lofa að segja þér að lokum.
Og reyndar, nú er það allt í lagi því að þetta er fyrir neðan.
>> Svo er þetta yfirleitt betra, því þá efst
skrá, getur þú bara skrölt burt, hraður-eldur, einni línu
hvor, hvaða nöfn aðgerðir eru, hvað þeirra
aðföng eru, hvað framleiðsla þeirra.
Og til að vera skýr, inntak þýðir yfirleitt rök eða
breytu, samheiti.
Output þýðir aftur gildi, hvað er það
vegar aftur til mín.
Þannig að í þessu tilfelli hér, hefur teningur verið lýst efst, en
skilgreint, annars þekkt sem framkvæmd, neðst.
Svo nú skulum við fara aftur hingað og aftur keyra þetta.
Svo nú langar mig að fara á undan og aftur hlaupa gera, með tilvísun til-hlaupa vöxtur.
Og það virðist nú vera að vinna bara fínt.
Svo nú getum við farið fram og þáttur út eitthvað eins og
bjór dæmi í þessari fjórðu útgáfu.
Svo láta mig að fletta niður.
Og eftir að ég tók svona þessa lexíu á hjarta núna.
Sú staðreynd að ég var að syngja á sama vísu aftur og
aftur og aftur, sama kór línu í laginu, fannst
eins af hverju ekki ég þáttur sem út í aðgerð?
Og reyndar, þetta ætti að vera einn af þeim motivations.
Auk þess að einhver annar í heiminum gæti langað
að nota teningur virka -
það er góð ástæða til að þáttur eitthvað út og skrifa skýrsluna í
eigin sérsniðnum virka -
ef það er klumpur af kóða í forritinu sem bara gerir
huglæg tilfinning, sem langar að gefa það a
nafn - eins og í þessu tilviki, kór -
þá getur þú álíka skrifa það sem sérstakt hlutverk.
Þú þarft ekki að skrifa allt í helstu ef það bara
finnst hreinni að skilja það út og gefa það a nafn.
>> Þannig að í þessu tilfelli hér, eftir að ég hef athugasemd topp
þessi aðgerð sem bara syngur um
tilgreind fjöldi flöskur.
Tilkynning hér að ég þarf ekki að hringja í þetta
það inntak og úttak.
Í staðreynd, í þetta sinn ég kallaði bara inntak b mitt fyrir flösku.
Og taka hér ógilt bendir hvað?
Það Viðlag -
Áhorfendur: Er ekki skila henni.
DAVID J. Malan: Er ekki skila gildi.
Og reyndar ekki aðgerðir ekki að skila gildi.
Þeir geta bara gert eitthvað.
Þeir geta haft það sem kallast aukaverkunum, sem í þessu
málið er bara allt fullt af prentun á skjánum.
Svo eftir að þetta númer hérna, ég bókstaflega bara stolið frá
fyrra dæmi.
Eini munurinn er að í stað þess að nota i sem mín
breyta, ég er nú að nota b sem breytu minn.
Þannig að ég hef b niður hérna, ég hef b niður hérna, ég hef b
mínus 1 hérna.
En númerið er nákvæmlega sú sama.
En bara til að sýna þér nú hvernig við getum notað það, láta mig fara
undan og í raun breyta þessu að vera fyrir lykkja.
fyrir (INT i = n, i> n; i -).
>> Þannig að ég hef stolið því frá fyrra dæmi okkar.
Fyrr er það í línu 37 að ég myndi hafa byrjað
syngja þetta pirrandi lag.
En í staðinn er ég bara að fara að nú kalla kór i.
Lokið.
Svo nú í hvert endurtekning þessa lykkju, ég kalla þetta annað
virka, kór, að ég varð að skrifa.
Það var ekki skrifað af einhverjum öðrum árum.
En kór, á meðan notar printf að prenta
út þessum fjórum línum.
En sú staðreynd að ég er að hringja kór aftur og aftur í
lykkja þýðir að ég ætla að fá, aftast, sem
nákvæmlega sama lagið og ég hef hingað til.
Svo í stuttu máli, nú ef ég lít til baka á númerið mitt, jafnvel þótt
virkni er þetta sambærilegt, eftir að það er
farin að fá enn læsilegri.
Ég veit ekki nákvæmlega vita hversu GetInt
er hrint í framkvæmd.
Frankly, ég veit ekki hvernig kór er hrint í framkvæmd.
En það skiptir ekki máli við mig.
Mér er alveg sama, því nú get ég svoleiðis, sem mönnum, að lesa
þetta frá toppi til botn.
Og vegna þess að aðgerðir eru nefnd í samræmi við það sem þeir
gera, númerið mitt er sífellt læsileg.
Og eins og áætlanir okkar fá miklu flóknari -
í lok hverrar annar, verður þú að vera að skrifa nokkur hundruð línur
af kóða í tungumálum eins og PHP og JavaScript og þess háttar -
þú munt komast að því að það er svo miklu auðveldara en að halda utan um
hvað þú hefur gert.
Og þegar þú byrjar að vinna með vinum eða
samstarfsaðila eða vinnufélaga, munt þú vera fær um að skrifa miklu meira
gegnheill forrit eftir að byrja að æfa þetta undirstöðu
byggja blokkir.
>> Svo með því að segja, hví ekki við kalla það einn dag?
Og við munum sjá þig á miðvikudag.
[Lófaklapp]