[CHWARAE CERDDORIAETH] DAVID J. Malan: pob hawl. Mae hyn yn CS50, ac mae hyn yn ddechrau Wythnos 2. A byddwch yn cofio bod dros y ychydig wythnosau diwethaf, rydym wedi bod yn cyflwyno cyfrifiadur gwyddoniaeth ac, yn ei dro, rhaglennu. Ac rydym yn dechrau ar y stori ar ffurf Scratch, yr iaith graffigol o Lab Cyfryngau MIT'S. Ac yna yn fwyaf diweddar, yr wythnos diwethaf, gwnaethom cyflwyno higher-- yn iaith lefel is-hysbys fel C, rhywbeth sy'n testunol yn unig. Ac, yn wir, tro diwethaf i ni harchwilio o fewn y cyd-destun nifer o gysyniadau. Mae hyn, galw i gof, yn yr union rhaglen gyntaf buom yn edrych ar. Ac mae'r rhaglen hon, yn syml iawn, brintiau allan, "helo, byd." Ond mae cymaint yn ôl pob golwg hud yn digwydd. Mae #include hwn gyda cromfachau ongl hyn. Mae int. Mae (ddi-rym). Mae cromfachau, braces cyrliog, hanner colon, a llawer iawn mwy. Ac felly, yn cofio bod gwnaethom gyflwyno Scratch fel y gallem, yn ddelfrydol, gweler y gorffennol hynny cystrawen, y pethau sydd wir nid bob un sy'n ddeallusol ddiddorol ond yn gynnar yw, yn gwbl, ychydig yn anodd i lapio eich meddwl o amgylch. Ac, yn wir, un o'r rhai mwyaf cyffredin pethau yn gynnar mewn dosbarth rhaglennu, yn enwedig ar gyfer y rhai sy'n llai cyfforddus, yw cael rhwystredig oherwydd a baglu gan cystrawennol penodol camgymeriadau, heb sôn am gwallau rhesymegol. Ac felly ymhlith ein nodau heddiw, mewn gwirionedd, bydd fydd eich paratoi gyda rhai technegau datrys problemau ar gyfer sut y i ddatrys problemau eu hunain yn well ar ffurf debugging. A byddwch yn cofio, hefyd, fod y amgylchedd a gyflwynwyd gennym tro diwethaf oedd enw CS50 IDE. Mae hyn yn feddalwedd ar y we sy'n yn eich galluogi i raglen yn y cwmwl, fel petai, tra'n cadw eich holl ffeiliau gyda'i gilydd, fel yr ydym eto bydd heddiw. A dwyn i gof bod yn ailystyried y pynciau hyn yma, yn eu plith swyddogaethau, a dolenni, a newidynnau, ac ymadroddion Boole, ac amodau. Ac mewn gwirionedd ychydig yn fwy ein bod yn cyfieithu o fyd Scratch i fyd C. Ond mae'r adeiladu sylfaenol blociau, fel petai, yn wirioneddol dal i fod yr un fath yr wythnos diwethaf. Yn wir, rydym yn wir yn newydd gael gwahanol ddarn pos, os mynnwch. Yn lle hynny porffor arbed bloc, rydym yn lle hynny wedi printf, sef swyddogaeth hon yn C sy'n yn eich galluogi i argraffu rhywbeth a fformat ar y sgrin. Cyflwynasom y CS50 Llyfrgell, lle rydych yn yn awr yn eich get_char gwaredu, a get_int, a get_string, ac ychydig o swyddogaethau eraill fel yn dda, trwy y gallwch gael mewnbwn oddi wrth y defnyddiwr bysellfwrdd hun. Ac rydym hefyd yn cymryd golwg ar bethau fel hyn- bool, a torgoch, a dwbl, arnofio, int, llinyn long_long. Ac mae hyd yn oed mathau data eraill yn C. Mewn geiriau eraill, pan fyddwch yn datgan newidyn i storio rhywfaint o werth, neu pan fyddwch yn gweithredu swyddogaeth sy'n dychwelyd rhywfaint o werth, gallwch nodi pa math o werth sy'n cael ei. A yw'n llinyn, fel dilyniant o gymeriadau? A yw'n rif, fel cyfanrif? Ai pwynt arnawf gwerth, neu debyg? Felly, yn C, yn wahanol Scratch, rydym mewn gwirionedd Dechreuodd i bennu pa fath o ddata rydym yn dychwelyd neu ddefnyddio. Ond, wrth gwrs, rydym hefyd yn rhedeg i mewn rhai cyfyngiadau sylfaenol cyfrifiadurol. Ac yn benodol, yr iaith hon C, galw i gof ein bod yn cymryd golwg ar gorlif cyfanrif, y gwir amdani os mai dim ond gennych swm cyfyngedig o gof neu, yn benodol, mae nifer cyfyngedig o ddarnau, gallwch gyfrif mor uchel. Ac felly rydym yn edrych ar yr enghraifft hon yma lle cownter mewn awyren,, mewn gwirionedd, os rhedeg yn ddigon hir y byddai orlifo ac yn arwain at meddalwedd gwirioneddol gwall potensial corfforol. Rydym hefyd yn edrych ar fel y bo'r angen pwynt imprecision, y realiti hynny gyda dim ond nifer cyfyngedig o ddarnau, boed yn 32 neu 64, gallwch nodi cymaint o rifau ar ôl pwynt degol, ac ar ôl hynny i chi yn dechrau cael anfanwl. Felly, er enghraifft, un rhan o dair yn y byd yma, yn ein byd dynol, rydym yn gwybod yn unig yw nifer anfeidrol o 3s ôl y pwynt degol. Ond nid yw cyfrifiadur yn gallu reidrwydd yn cynrychioli nifer anfeidrol o rifau os mai dim ond caniatáu iddo rai swm cyfyngedig o wybodaeth. Felly, nid yn unig y gwnaethom yn eich paratoi gyda mwy o bŵer yn nhermau o sut y gallech chi fynegi eich hun yn fysellfwrdd o ran rhaglennu, rydym hefyd yn gyfyngedig beth gallwch chi ei wneud mewn gwirionedd. Ac yn wir, chwilod a chamgymeriadau yn gallu codi o mathau hynny o faterion. Ac yn wir, ymhlith y pynciau heddiw yn mynd i fod pynciau fel debugging ac mewn gwirionedd yn edrych o dan y cwfl ar sut mae pethau'n cael eu cyflwyno wythnos ddiwethaf yn cael eu rhoi ar waith mewn gwirionedd er mwyn i chi yn well deall y galluoedd a cyfyngiadau iaith fel C. Ac yn wir, byddwn yn edrychwch drwy'r haenau o'r symlaf o strwythur data, rhywbeth o'r enw arae, a oedd yn Scratch digwydd i alw "rhestr." Mae'n ychydig bach wahanol yn y cyd-destun. Ac yna byddwn hefyd yn cyflwyno un o'r cyntaf o'n problemau parth-benodol yn CS50, byd cryptograffiaeth, y grefft o sgrialu neu wrth ciphering gwybodaeth fel eich bod yn gallu anfon negeseuon cudd a dadgodio negeseuon cudd rhwng dau berson, A a B. Felly, cyn trosglwyddo i ni at y byd newydd, gadewch i ni geisio eich paratoi gyda rhai technegau y gallwch chi gael gwared ag ef neu leihau o leiaf rai o'r rhwystredigaethau eich bod yn ôl pob tebyg wedi dod ar draws dros yr wythnos diwethaf yn unig. Yn wir, o flaen ydych yn such-- rhai o eich problemau cyntaf yn C. Ac groes yn, os ydych chi fel fi, y tro cyntaf eich bod yn ceisio deipio rhaglen, hyd yn oed os ydych yn meddwl yn rhesymegol mae'r rhaglen yn eithaf syml, efallai y byddwch yn dda iawn yn taro wal, a nid yw'r compiler yn mynd i gydweithredu. Gwneud neu beidio chlang yn mynd i mewn gwirionedd yn gwneud eich cais. A pham y gallai hynny fod? Wel, gadewch i ni edrych ar, efallai, yn rhaglen syml. Rydw i'n mynd i fynd yn ei flaen ac arbed hyn yn ffeil o'r enw fwriadol buggy0.c, gan fy mod yn gwybod ei fod i yn ddiffygiol o flaen llaw. Ond efallai nad wyf yn sylweddoli bod os yw hyn yw'r rhaglen gyntaf neu'r ail neu'r trydydd fy mod mewn gwirionedd yn gwneud fy hun. Felly, yr wyf i'n mynd i fynd yn ei flaen a deipio allan, int prif (ddi-rym). Ac yna y tu mewn fy braces cyrliog, yn gyfarwydd iawn ( "hello, world-- slaes, n ") - a hanner colon. Rwyf wedi arbed y ffeil. Nawr rydw i'n mynd i fynd i lawr i fy ffenestr terfynell a math gwneud buggy0, oherwydd, unwaith eto, enw'r ffeil heddiw yn buggy0.c. Felly, yr wyf teipio gwneud buggy0, Enter. Ac, oh, diar, dwyn i gof o dro diwethaf nad oes unrhyw negeseuon gwall yn beth da. Felly dim allbwn yn beth da. Ond yma mae gen i yn glir rhyw nifer o gamgymeriadau. Felly, y llinell gyntaf o allbwn ar ôl teipio gwneud buggy0, galw i gof, yw allbwn weddol amleiriog chlang yn. O dan y cwfl, IDE CS50 ei ffurfweddu i ddefnyddio criw cyfan o opsiynau gyda crynhoydd hwn fel nad oes gennych i feddwl amdanyn nhw. A dyna'r cyfan y llinell gyntaf dulliau sy'n dechrau gyda chlang. Ond ar ôl hynny, y problemau yn dechrau gwneud eu hymddangosiad. Buggy0.c ar llinell 3, cymeriad 5, mae yna fawr, gwall coch. Beth yw hynny? Ymhlyg datgan swyddogaeth llyfrgell printf â'r math int (Etholaeth torgoch *, ...) [-Werror]. Yr wyf yn golygu, yn gyflym iawn mynd arcane iawn. Ac yn sicr, ar y dechrau yr olwg, nid ydym fyddai yn disgwyl i chi ddeall y gyfanrwydd y neges honno. Ac felly un o'r gwersi ar gyfer heddiw yn mynd i fod i geisio i hysbysiad patrymau, neu bethau tebyg, i wallau a allai fod gennych dod ar eu traws yn y gorffennol. Felly gadewch i ni tynnu ar wahân yn unig geiriau hynny sy'n edrych yn gyfarwydd. Mae'r mawr, gwall coch yn amlwg symbolaidd o rywbeth yn anghywir. ymhlyg datgan printf swyddogaeth llyfrgell. Felly hyd yn oed os nad wyf yn deall yn hollol beth ymhlyg datgan swyddogaeth llyfrgell fodd, y broblem yn sicr yn ymwneud â printf rhywsut. A ffynhonnell y mater hwnnw wedi ei wneud â datgan ei. Datgan swyddogaeth yw sôn am y tro cyntaf. Ac rydym yn defnyddio'r derminoleg wythnos ddiwethaf o ddatgan prototeip swyddogaeth, yn naill ai gydag un llinell ar ben eich ffeil eu hunain neu mewn hyn a elwir yn ffeil flaen. Ac yn yr hyn a wnaeth ffeil a ddywedwn yr wythnos diwethaf fod printf yw dyfyniad, unquote, datganodd? Ym mha ffeil yw ei prototeip? Felly, os ydych yn cofio, y peth cyntaf i mi teipio, mae bron pob rhaglen adeg-- diwethaf ac yn ddamweiniol funud yn ôl dechreuodd teipio myself-- oedd hyn un Yma-- hash-- #include