[TÓNLIST] DAVID J. Malan: Allt í lagi. Þetta er CS50 og þetta er að byrja á viku 2. Og þú munt minnast þess að yfir the fortíð par af vika, við höfum verið að kynna tölvuna vísindi og á móti, forritun. Og við byrjuðum söguna með því að Scratch, það myndræna tungumál frá MIT Media Lab. Og þá síðast, í síðustu viku, gerði við kynna higher-- A lægra stigi tungumál þekkt sem C, eitthvað sem er eingöngu texta. Og reyndar síðasta sinn sem við kanna í því samhengi fjölda hugtaka. Þetta muna, var mjög Fyrsta forritið sem við leit á. Og þetta program, einfaldlega, prentar út, "Halló, heimur." En það er svo mikið virðist galdur í gangi. Það er þetta #include með þessum Oddklofa. Það er Int. Það er (tóm). Það er svigum, hrokkið axlabönd, hálf-tvípunkta, og svo margt fleira. Og svo, muna að við kynntum Scratch svo að við gætum helst sjá fortíðina að setningafræði, efni sem er í raun ekki allt sem vitsmunalega áhugavert en snemma á er algerlega, svolítið erfiður að vefja huganum kring. Og reyndar einn af algengustu hlutir snemma á í forritun bekknum, sérstaklega fyrir þeim sem minna þægilegt, er að fá svekktur með og skemmtiferðamaður upp af ákveðinni setningafræðilegar villur, svo ekki sé minnst rökrétt villur. Og svo meðal markmiðum okkar í dag, í raun, mun vera að búa þig með nokkrum leysa vandamál aðferðir til hvernig til betri leysa vandamál sjálfir í formi kembiforrit. Og þú munt muna líka, að umhverfi sem við kynntum síðast þegar var kallað CS50 IDE. Þetta er vefur-undirstaða hugbúnaður sem gerir þér kleift að forrita í skýinu, svo að segja, á meðan gæsla öll þín skrár saman, eins og við munum aftur í dag. Og muna að við Revisited þessi mál hér, meðal þeirra virka, og lykkjur, og breytur, og Boolean tjáning, og aðstæður. Og reyndar nokkrar fleiri sem við þýtt úr heimi grunni í heim C. En grundvallaratriði byggja blokkir, svo að segja, voru í raun enn sama í síðustu viku. Í raun, í raun við bara haft mismunandi ráðgáta stykki, ef þú vilt. Í stað þess að fjólublátt vista blokk, við staðinn hafði printf, sem er þessi aðgerð í C sem gerir þér kleift að prenta eitthvað og forsníða hana á skjánum. Við kynnti CS50 Bókasafn, þar sem þér hafa nú yfir að ráða get_char þitt, og get_int og get_string, og nokkrar aðrar aðgerðir sem vel, í gegnum sem þú getur fengið inntak frá eigin lyklaborði notandans. Og við tók einnig að líta á hlutina eins these- bool, og bleikju, og tvöfaldur, fljóta, int, long_long band. Og það er jafnvel aðrar tegundir gagna í C Með öðrum orðum, þegar þú lýsa breytu til að geyma nokkur gildi, eða þegar þú innleiða fall sem skilar nokkur gildi, er hægt að tilgreina hvað tegund af gildi sem er. Er það band, eins og röð af stöfum? Er það að tala, eins heiltala? Er það fleytitölu gildi, eða þess háttar? Svo í C, ólíkt grunni, við í raun byrjaði að tilgreina hvers konar gögn við vorum aftur eða nota. En, auðvitað, hljóp við einnig inn nokkrar grundvallar mörk computing. Og einkum, þetta tungumál C, muna að við kíktum á heiltala flæða, raunveruleiki að ef þú hefur aðeins endanlegt magn af minni eða, sérstaklega, með endanlegri fjölda bita, getur þú aðeins treyst svo hátt. Og svo skoðuðum við þetta dæmi hér þar teljari í flugvél, reyndar, ef keyra nógu lengi myndi flæða og leitt til hugbúnaði raunveruleg líkamleg möguleiki villa. Við leit einnig á fljótandi lið ónákvæmni, að veruleikinn að með aðeins endanlegri fjölda bita, hvort sem það er 32 eða 64, þú getur aðeins tilgreina svo margar tölur eftir kommu, eftir sem þú byrja að fá ónákvæm. Svo til dæmis, einn-þriðji í Heimurinn hér, í okkar manna heimi, við vitum er bara óendanlegur fjöldi á 3s eftir kommu. En tölvan getur ekki endilega tákna óendanlega fjölda af tölum ef þú leyfir aðeins það sumir endanlegt magn af upplýsingum. Svo ekki bara við búa þig með meiri krafti í skilmálum um hvernig þú gætir tjá þig á lyklaborð hvað varðar forritun, við einnig takmarkað hvað þú getur raunverulega gert. Og reyndar, galla og mistök geta skapast af þeim tegundum málum. Og reyndar, meðal efni í dag eru að fara að vera efni eins kembiforrit og í raun að leita undir hetta á hvernig hlutirnir voru kynnt í síðustu viku eru í raun til framkvæmda þannig að þú betur skil bæði getu og takmarkanir á tungumáli eins C. Og í raun, við munum afhýða aftur lag af einföldustu gögn uppbygging, eitthvað sem kallast fylki, þar sem Scratch gerist að hringja í "lista". Það er svolítið öðruvísi í því samhengi. Og þá munum við einnig kynna einn af fyrst vettvangssértæka vandamálum okkar í CS50, heimi dulmál, the list af spæna eða í ciphering upplýsingar svo sem hægt er að senda leyndarmál skilaboð og lesa leyndarmál skilaboð milli tveggja einstaklinga, A og B. Svo áður en við umskipti að þessi nýja veröld, við skulum reyna að búa þér með sumir tækni sem þú getur útrýma eða draga úr að minnsta kosti sumir af óánægju sem þú hefur sennilega komið upp á síðustu viku eingöngu. Í raun, á undan þér eru such-- sum Fyrstu vandamál þín í C og líkur eru, ef þú ert eins og mig, í fyrsta skipti þú reynir að slá út áætlun, jafnvel ef þú hugsa rökrétt The program er mjög einfalt, þú gætir mjög vel högg a veggur, og þýðandinn er ekki að fara að vinna. Gera eða Clang er ekki að fara að raunverulega gera boð þitt. Og hvers vegna gæti það verið? Jæja, við skulum taka a líta á, kannski, einföld forrit. Ég ætla að fara á undan og vista þetta í skrá vísvitandi heitir buggy0.c, vegna þess að ég veit það að gölluð fyrirfram. En ég gæti ekki átta sig á að ef þetta er fyrsta eða annað eða þriðja program að ég í raun að gera sjálfur. Þannig að ég ætla að fara á undan og slá út, int helstu (tóm). Og þá inni hrokkið axlabönd mínum, mjög kunnugur ( "halló, world-- sviga, n ") - og hálf-hreinsun. Ég hef vistað skrána. Nú ætla ég að fara niður til stöðvarinnar gluggann minn og gerð gera buggy0, vegna þess, aftur, nafn skrárinnar dag er buggy0.c. Svo ég slá gert buggy0, Enter. Og ó, nei, man frá síðasta sinn að engin villuskilaboð er gott. Svo engin framleiðsla er gott. En hér hef ég greinilega sumir tala um mistök. Svo fyrstu línu af framleiðslu eftir að slá gera buggy0, muna, er nokkuð fjölorður framleiðsla Clang er. Undir hetta, CS50 IDE er stillt að nota a heild búnt af möguleikar með þennan þýðanda þannig að þú þarft ekki að hugsa um þá. Og það er allt sem fyrsta línan þýðir að byrjar með Clang. En eftir það, vandamálin byrja að gera útlit þeirra. Buggy0.c á línu 3, eðli 5, það er stór, rauður villa. Hvað er þetta? Óbeint lýsa bókasafn virka printf með Tegund int (const char *, ...) [-Werror]. Ég meina, það mjög fljótt fær mjög yfirnáttúrulegt. Og vissulega, fyrst sýn, við gerðum ekki ætlast til að þú að skilja heild á þessi skilaboð. Og svo einn af þeim lærdóm dag er að fara að vera að reyna að taka mynstur, eða svipaða hluti, að villur sem þú gætir hafa fundur í fortíðinni. Svo skulum stríða sundur aðeins þau orð sem líta kunnuglega. The stór, rauður villa er greinilega táknrænt eitthvað sé rangt. óbeint lýsa bókasafn virka printf. Svo jafnvel ef ég er ekki alveg að skilja hvað óbeint lýsa bókasafn virka þýðir, vandamálið hlýtur snýr að printf einhvern veginn. Og uppspretta þeirrar útgáfu hefur að gera með að lýsa því. Lýsa fall er að minnast á það í fyrsta skipti. Og við notuðum hugtök í síðustu viku á að lýsa frumgerð fall er, annaðhvort með einni línu efst á þinn eigin skrá eða í svokölluðu haus skrá. Og í hvaða skrá gerði við segjum í síðustu viku að printf er vitna, unquote, lýsti? Í hvaða skrá er frumgerð hennar? Svo ef þú manst, mjög fyrstur hlutur ÉG slegið, nánast hvert forrit á síðasta time-- og tilviljun áðan byrjaði slá myself-- var þessi here-- hash-- #include