[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]